Spaces:
Sleeping
Sleeping
Update nutri_call.html
Browse files- nutri_call.html +46 -118
nutri_call.html
CHANGED
@@ -331,123 +331,43 @@
|
|
331 |
|
332 |
|
333 |
<script>
|
334 |
-
|
335 |
-
|
336 |
-
document.getElementById('calculate-btn').addEventListener('click', function() {
|
337 |
-
console.log("=== НАЧАЛО ОБРАБОТКИ ===");
|
338 |
-
|
339 |
-
// 1. Получаем значение точности округления с подробным логированием
|
340 |
-
const roundingInput = document.getElementById('rounding-precision');
|
341 |
-
console.log("Значение поля rounding-precision (raw):", roundingInput.value);
|
342 |
-
|
343 |
-
const initialRounding = parseInt(roundingInput.value);
|
344 |
-
console.log("Парсинг значения rounding (после parseInt):", initialRounding);
|
345 |
-
|
346 |
-
const roundingPrecision = Math.min(Math.max(initialRounding || 3, 0), 6);
|
347 |
-
console.log("Финальное значение точности (0-6):", roundingPrecision);
|
348 |
-
|
349 |
-
// 2. Улучшенная функция для безопасного получения числового значения с логированием
|
350 |
-
const getValue = (id) => {
|
351 |
-
const element = document.getElementById(id);
|
352 |
-
if (!element) {
|
353 |
-
console.error(`Элемент с ID ${id} не найден!`);
|
354 |
-
return 0;
|
355 |
-
}
|
356 |
-
console.log(`Значение поля ${id}:`, element.value);
|
357 |
-
|
358 |
-
const value = parseFloat(element.value);
|
359 |
-
const result = isNaN(value) ? 0 : value;
|
360 |
-
|
361 |
-
console.log(`Парсинг значения ${id}:`, result);
|
362 |
-
return result;
|
363 |
-
};
|
364 |
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
"N (NO3-)": getValue('fert_ca_no3') / 100,
|
371 |
-
"Ca": getValue('fert_ca_ca') / 100
|
372 |
-
},
|
373 |
-
"Калий азотнокислый": {
|
374 |
-
"N (NO3-)": getValue('fert_kno3_no3') / 100,
|
375 |
-
"K": getValue('fert_kno3_k') / 100
|
376 |
-
},
|
377 |
-
"Аммоний азотнокислый": {
|
378 |
-
"N (NO3-)": getValue('fert_nh4no3_no3') / 100,
|
379 |
-
"N (NH4+)": getValue('fert_nh4no3_nh4') / 100
|
380 |
-
},
|
381 |
-
"Сульфат магния": {
|
382 |
-
"Mg": getValue('fert_mgso4_mg') / 100,
|
383 |
-
"S": getValue('fert_mgso4_s') / 100
|
384 |
-
},
|
385 |
-
"Монофосфат калия": {
|
386 |
-
"P": getValue('fert_kh2po4_p') / 100,
|
387 |
-
"K": getValue('fert_kh2po4_k') / 100
|
388 |
-
},
|
389 |
-
"Калий сернокислый": {
|
390 |
-
"K": getValue('fert_k2so4_k') / 100,
|
391 |
-
"S": getValue('fert_k2so4_s') / 100
|
392 |
-
}
|
393 |
-
};
|
394 |
-
|
395 |
-
const profileSettings = {
|
396 |
-
'P': getValue('profile_p'),
|
397 |
-
'K': getValue('profile_k'),
|
398 |
-
'Mg': getValue('profile_mg'),
|
399 |
-
'Ca': getValue('profile_ca'),
|
400 |
-
'S': getValue('profile_s'),
|
401 |
-
'NO3_RAT': getValue('profile_no3'),
|
402 |
-
'TOTAL_NITROG': getValue('profile_n'),
|
403 |
-
'liters': parseInt(document.getElementById('liters-input').value) || 1,
|
404 |
-
'rounding_precision': roundingPrecision
|
405 |
-
};
|
406 |
-
|
407 |
-
const requestData = {
|
408 |
-
fertilizerConstants: fertilizerConstants,
|
409 |
-
profileSettings: profileSettings
|
410 |
-
};
|
411 |
-
|
412 |
-
console.log("=== ПОЛНЫЙ ОБЪЕКТ ДЛЯ ОТПРАВКИ ===", JSON.stringify(requestData, null, 2));
|
413 |
-
|
414 |
-
// 4. Проверка данных с подробным выводом
|
415 |
-
console.log("=== ПРОВЕРКА ДАННЫХ ===");
|
416 |
-
|
417 |
-
const requiredFertilizers = ["Кальциевая селитра", "Калий азотнокислый", "Аммоний азотнокислый",
|
418 |
-
"Сульфат магния", "Монофосфат калия", "Калий сернокислый"];
|
419 |
-
|
420 |
-
let hasErrors = false;
|
421 |
-
for (const fert of requiredFertilizers) {
|
422 |
-
if (!requestData.fertilizerConstants[fert]) {
|
423 |
-
console.error(`ОШИБКА: Отсутствует удобрение: ${fert}`);
|
424 |
-
hasErrors = true;
|
425 |
-
} else {
|
426 |
-
console.log(`Удобрение ${fert} присутствует`);
|
427 |
-
}
|
428 |
}
|
429 |
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
|
|
|
|
|
|
|
|
438 |
}
|
439 |
|
440 |
-
console.log("
|
|
|
|
|
441 |
|
442 |
-
if (
|
443 |
-
|
444 |
-
console.error(errorMsg);
|
445 |
-
alert(errorMsg);
|
446 |
-
return;
|
447 |
}
|
|
|
448 |
|
449 |
-
|
450 |
-
console.log("===
|
|
|
|
|
451 |
|
452 |
fetch('/calculation', {
|
453 |
method: 'POST',
|
@@ -466,18 +386,16 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
|
|
466 |
return response.json();
|
467 |
})
|
468 |
.then(data => {
|
469 |
-
|
|
|
|
|
470 |
console.log("=== УСПЕШНЫЙ ОТВЕТ ОТ СЕРВЕРА ===", call_data);
|
471 |
|
472 |
-
//
|
473 |
-
|
474 |
-
|
475 |
-
Object.entries(data.fertilizers).forEach(([name, values]) => {
|
476 |
-
console.log(`Удобрение ${name}:`, values);
|
477 |
-
});
|
478 |
-
}
|
479 |
|
480 |
-
// Здесь можно добавить обработку ответа
|
481 |
})
|
482 |
.catch(error => {
|
483 |
console.error("=== ОШИБКА ПРИ ОБРАБОТКЕ ===", error);
|
@@ -487,6 +405,16 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
|
|
487 |
console.log("=== ЗАВЕРШЕНИЕ ОБРАБОТКИ ===");
|
488 |
});
|
489 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
490 |
</script>
|
491 |
|
492 |
|
|
|
331 |
|
332 |
|
333 |
<script>
|
334 |
+
// Глобальная переменная для хранения данных
|
335 |
+
let call_data = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
336 |
|
337 |
+
// Функция для обработки данных (пример)
|
338 |
+
function processFertilizersData() {
|
339 |
+
if (!call_data || !call_data.fertilizers) {
|
340 |
+
console.error("Нет данных для обработки");
|
341 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
342 |
}
|
343 |
|
344 |
+
console.log("Обработка данных удобрений:");
|
345 |
+
Object.entries(call_data.fertilizers).forEach(([name, values]) => {
|
346 |
+
console.log(`Обработка ${name}:`, values);
|
347 |
+
// Ваша логика обработки здесь
|
348 |
+
});
|
349 |
+
}
|
350 |
+
|
351 |
+
// Вторая функция для работы с данными (пример)
|
352 |
+
function displayResults() {
|
353 |
+
if (!call_data) {
|
354 |
+
console.error("Нет данных для отображения");
|
355 |
+
return;
|
356 |
}
|
357 |
|
358 |
+
console.log("Отображение результатов:");
|
359 |
+
console.log("Общий EC:", call_data.total_ec);
|
360 |
+
console.log("Общий PPM:", call_data.total_ppm);
|
361 |
|
362 |
+
if (call_data.actual_profile) {
|
363 |
+
console.log("Профиль питательных веществ:", call_data.actual_profile);
|
|
|
|
|
|
|
364 |
}
|
365 |
+
}
|
366 |
|
367 |
+
document.getElementById('calculate-btn').addEventListener('click', function() {
|
368 |
+
console.log("=== НАЧАЛО ОБРАБОТКИ ===");
|
369 |
+
|
370 |
+
// [Ваш существующий код получения и подготовки данных...]
|
371 |
|
372 |
fetch('/calculation', {
|
373 |
method: 'POST',
|
|
|
386 |
return response.json();
|
387 |
})
|
388 |
.then(data => {
|
389 |
+
// Сохраняем данные в глобальную переменную
|
390 |
+
call_data = data; // Исправлено: было call_data = data:
|
391 |
+
|
392 |
console.log("=== УСПЕШНЫЙ ОТВЕТ ОТ СЕРВЕРА ===", call_data);
|
393 |
|
394 |
+
// Вызываем функции обработки данных
|
395 |
+
processFertilizersData();
|
396 |
+
displayResults();
|
|
|
|
|
|
|
|
|
397 |
|
398 |
+
// Здесь можно добавить дополнительную обработку ответа
|
399 |
})
|
400 |
.catch(error => {
|
401 |
console.error("=== ОШИБКА ПРИ ОБРАБОТКЕ ===", error);
|
|
|
405 |
console.log("=== ЗАВЕРШЕНИЕ ОБРАБОТКИ ===");
|
406 |
});
|
407 |
});
|
408 |
+
|
409 |
+
// Пример использования данных в других частях приложения
|
410 |
+
document.getElementById('some-other-button').addEventListener('click', function() {
|
411 |
+
if (call_data) {
|
412 |
+
console.log("Использование сохраненных данных:", call_data);
|
413 |
+
// Дополнительная обработка данных
|
414 |
+
} else {
|
415 |
+
console.log("Данные еще не загружены");
|
416 |
+
}
|
417 |
+
});
|
418 |
</script>
|
419 |
|
420 |
|