Spaces:
Sleeping
Sleeping
Update nutri_call.html
Browse files- nutri_call.html +15 -16
nutri_call.html
CHANGED
@@ -332,8 +332,9 @@
|
|
332 |
|
333 |
<script>
|
334 |
document.getElementById('calculate-btn').addEventListener('click', function() {
|
335 |
-
// 1. Получаем значение точности округления
|
336 |
-
const
|
|
|
337 |
|
338 |
// 2. Улучшенная функция для безопасного получения числового значения
|
339 |
const getValue = (id) => {
|
@@ -346,7 +347,7 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
|
|
346 |
return isNaN(value) ? 0 : value;
|
347 |
};
|
348 |
|
349 |
-
// 3. Формируем данные для сервера
|
350 |
const requestData = {
|
351 |
fertilizerConstants: {
|
352 |
"Кальциевая селитра": {
|
@@ -382,17 +383,16 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
|
|
382 |
'S': getValue('profile_s'),
|
383 |
'NO3_RAT': getValue('profile_no3'),
|
384 |
'TOTAL_NITROG': getValue('profile_n'),
|
385 |
-
'liters': parseInt(document.getElementById('liters-input').value) || 1
|
|
|
386 |
}
|
387 |
};
|
388 |
|
389 |
-
//
|
390 |
const requiredFertilizers = ["Кальциевая селитра", "Калий азотнокислый", "Аммоний азотнокислый",
|
391 |
"Сульфат магния", "Монофосфат калия", "Калий сернокислый"];
|
392 |
|
393 |
let hasErrors = false;
|
394 |
-
|
395 |
-
// Проверяем наличие всех удобрений
|
396 |
for (const fert of requiredFertilizers) {
|
397 |
if (!requestData.fertilizerConstants[fert]) {
|
398 |
console.error(`Отсутствует удобрение: ${fert}`);
|
@@ -400,7 +400,6 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
|
|
400 |
}
|
401 |
}
|
402 |
|
403 |
-
// Проверяем основные параметры профиля
|
404 |
const requiredProfileFields = ['P', 'K', 'Mg', 'Ca', 'S', 'NO3_RAT', 'TOTAL_NITROG'];
|
405 |
for (const field of requiredProfileFields) {
|
406 |
if (isNaN(requestData.profileSettings[field])) {
|
@@ -414,7 +413,9 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
|
|
414 |
return;
|
415 |
}
|
416 |
|
417 |
-
//
|
|
|
|
|
418 |
fetch('/calculation', {
|
419 |
method: 'POST',
|
420 |
headers: {
|
@@ -423,18 +424,16 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
|
|
423 |
body: JSON.stringify(requestData)
|
424 |
})
|
425 |
.then(response => {
|
426 |
-
if (!response.ok) {
|
427 |
-
throw new Error(`HTTP error! status: ${response.status}`);
|
428 |
-
}
|
429 |
return response.json();
|
430 |
})
|
431 |
.then(data => {
|
432 |
-
console.log("
|
433 |
-
// Здесь можно добавить обработку
|
434 |
})
|
435 |
.catch(error => {
|
436 |
-
console.error("
|
437 |
-
alert("
|
438 |
});
|
439 |
});
|
440 |
</script>
|
|
|
332 |
|
333 |
<script>
|
334 |
document.getElementById('calculate-btn').addEventListener('click', function() {
|
335 |
+
// 1. Получаем значение точности округления (гарантированно число от 0 до 6)
|
336 |
+
const roundingInput = document.getElementById('rounding-precision');
|
337 |
+
const roundingPrecision = Math.min(Math.max(parseInt(roundingInput.value) || 3, 6), 0);
|
338 |
|
339 |
// 2. Улучшенная функция для безопасного получения числового значения
|
340 |
const getValue = (id) => {
|
|
|
347 |
return isNaN(value) ? 0 : value;
|
348 |
};
|
349 |
|
350 |
+
// 3. Формируем данные для сервера (гарантированно включаем rounding_precision)
|
351 |
const requestData = {
|
352 |
fertilizerConstants: {
|
353 |
"Кальциевая селитра": {
|
|
|
383 |
'S': getValue('profile_s'),
|
384 |
'NO3_RAT': getValue('profile_no3'),
|
385 |
'TOTAL_NITROG': getValue('profile_n'),
|
386 |
+
'liters': parseInt(document.getElementById('liters-input').value) || 1,
|
387 |
+
'rounding_precision': roundingPrecision // Гарантированно добавляем параметр
|
388 |
}
|
389 |
};
|
390 |
|
391 |
+
// 4. Проверка данных (остается без изменений)
|
392 |
const requiredFertilizers = ["Кальциевая селитра", "Калий азотнокислый", "Аммоний азотнокислый",
|
393 |
"Сульфат магния", "Монофосфат калия", "Калий сернокислый"];
|
394 |
|
395 |
let hasErrors = false;
|
|
|
|
|
396 |
for (const fert of requiredFertilizers) {
|
397 |
if (!requestData.fertilizerConstants[fert]) {
|
398 |
console.error(`Отсутствует удобрение: ${fert}`);
|
|
|
400 |
}
|
401 |
}
|
402 |
|
|
|
403 |
const requiredProfileFields = ['P', 'K', 'Mg', 'Ca', 'S', 'NO3_RAT', 'TOTAL_NITROG'];
|
404 |
for (const field of requiredProfileFields) {
|
405 |
if (isNaN(requestData.profileSettings[field])) {
|
|
|
413 |
return;
|
414 |
}
|
415 |
|
416 |
+
// 5. Отправка данных на сервер с логированием
|
417 |
+
console.log("Отправляемые данные (включая точность округления):", requestData);
|
418 |
+
|
419 |
fetch('/calculation', {
|
420 |
method: 'POST',
|
421 |
headers: {
|
|
|
424 |
body: JSON.stringify(requestData)
|
425 |
})
|
426 |
.then(response => {
|
427 |
+
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
|
|
|
|
|
428 |
return response.json();
|
429 |
})
|
430 |
.then(data => {
|
431 |
+
console.log("Ответ сервера:", data);
|
432 |
+
// Здесь можно добавить обработку ответа
|
433 |
})
|
434 |
.catch(error => {
|
435 |
+
console.error("Ошибка:", error);
|
436 |
+
alert("Ошибка при расчете: " + error.message);
|
437 |
});
|
438 |
});
|
439 |
</script>
|