Spaces:
Sleeping
Sleeping
Update nutri_call.html
Browse files- nutri_call.html +0 -175
nutri_call.html
CHANGED
|
@@ -885,181 +885,6 @@ const ecConstants = {
|
|
| 885 |
'N (NO3-)': 0.0017, 'N (NH4+)': 0.0019
|
| 886 |
};
|
| 887 |
|
| 888 |
-
document.getElementById('calculate-btn').addEventListener('click', function () {
|
| 889 |
-
console.log("=== НАЧАЛО ОБРАБОТКИ ===");
|
| 890 |
-
|
| 891 |
-
// 1. Получаем значение точности округления с подробным логированием
|
| 892 |
-
const roundingInput = document.getElementById('rounding-precision');
|
| 893 |
-
console.log("Значение поля rounding-precision (raw):", roundingInput.value);
|
| 894 |
-
|
| 895 |
-
const initialRounding = parseInt(roundingInput.value);
|
| 896 |
-
console.log("Парсинг значения rounding (после parseInt):", initialRounding);
|
| 897 |
-
|
| 898 |
-
const roundingPrecision = Math.min(Math.max(initialRounding || 3, 0), 6);
|
| 899 |
-
console.log("Финальное значение точности (0-6):", roundingPrecision);
|
| 900 |
-
|
| 901 |
-
// 2. Улучшенная функция для безопасного получения числового значения с логированием
|
| 902 |
-
const getValue = (id) => {
|
| 903 |
-
const element = document.getElementById(id);
|
| 904 |
-
if (!element) {
|
| 905 |
-
console.error(`Элемент с ID ${id} не найден!`);
|
| 906 |
-
return 0;
|
| 907 |
-
}
|
| 908 |
-
console.log(`Значение поля ${id}:`, element.value);
|
| 909 |
-
|
| 910 |
-
const value = parseFloat(element.value); // Парсим число напрямую
|
| 911 |
-
const result = isNaN(value) ? 0 : value;
|
| 912 |
-
|
| 913 |
-
console.log(`Парсинг значения ${id}:`, result);
|
| 914 |
-
return result;
|
| 915 |
-
};
|
| 916 |
-
|
| 917 |
-
// 3. Формируем данные для сервера с пошаговым логированием
|
| 918 |
-
console.log("=== ФОРМИРОВАНИЕ ДАННЫХ ДЛЯ СЕРВЕРА ===");
|
| 919 |
-
|
| 920 |
-
const fertilizerConstants = {
|
| 921 |
-
"Кальциевая селитра": {
|
| 922 |
-
"N (NO3-)": getValue('fert_ca_no3') / 100,
|
| 923 |
-
"Ca": getValue('fert_ca_ca') / 100
|
| 924 |
-
},
|
| 925 |
-
"Калий азотнокислый": {
|
| 926 |
-
"N (NO3-)": getValue('fert_kno3_no3') / 100,
|
| 927 |
-
"K": getValue('fert_kno3_k') / 100
|
| 928 |
-
},
|
| 929 |
-
"Аммоний азотнокислый": {
|
| 930 |
-
"N (NO3-)": getValue('fert_nh4no3_no3') / 100,
|
| 931 |
-
"N (NH4+)": getValue('fert_nh4no3_nh4') / 100
|
| 932 |
-
},
|
| 933 |
-
"Сульфат магния": {
|
| 934 |
-
"Mg": getValue('fert_mgso4_mg') / 100,
|
| 935 |
-
"S": getValue('fert_mgso4_s') / 100
|
| 936 |
-
},
|
| 937 |
-
"Монофосфат калия": {
|
| 938 |
-
"P": getValue('fert_kh2po4_p') / 100,
|
| 939 |
-
"K": getValue('fert_kh2po4_k') / 100
|
| 940 |
-
},
|
| 941 |
-
"Калий сернокислый": {
|
| 942 |
-
"K": getValue('fert_k2so4_k') / 100,
|
| 943 |
-
"S": getValue('fert_k2so4_s') / 100
|
| 944 |
-
},
|
| 945 |
-
"Кальций хлорид": { // Обновленные идентификаторы для CaCl
|
| 946 |
-
"Ca": getValue('fert_caca') / 100, // Новый идентификатор
|
| 947 |
-
"Cl": getValue('fert_clcl') / 100 // Новый идентификатор
|
| 948 |
-
}
|
| 949 |
-
};
|
| 950 |
-
|
| 951 |
-
const profileSettings = {
|
| 952 |
-
'P': getValue('profile_p'),
|
| 953 |
-
'K': getValue('profile_k'),
|
| 954 |
-
'Mg': getValue('profile_mg'),
|
| 955 |
-
'Ca': getValue('profile_ca'),
|
| 956 |
-
'S': getValue('profile_s'),
|
| 957 |
-
'NO3_RAT': getValue('profile_no3'),
|
| 958 |
-
'TOTAL_NITROG': getValue('profile_n'),
|
| 959 |
-
'liters': parseInt(document.getElementById('liters-input').value) || 1,
|
| 960 |
-
'rounding_precision': roundingPrecision
|
| 961 |
-
};
|
| 962 |
-
|
| 963 |
-
const requestData = {
|
| 964 |
-
fertilizerConstants: fertilizerConstants,
|
| 965 |
-
profileSettings: profileSettings
|
| 966 |
-
};
|
| 967 |
-
|
| 968 |
-
console.log("=== ПОЛНЫЙ ОБЪЕКТ ДЛЯ ОТПРАВКИ ===", JSON.stringify(requestData, null, 2));
|
| 969 |
-
|
| 970 |
-
// 4. Проверка данных с подробным выводом
|
| 971 |
-
console.log("=== ПРОВЕРКА ДАННЫХ ===");
|
| 972 |
-
|
| 973 |
-
const requiredFertilizers = [
|
| 974 |
-
"Кальциевая селитра", "Калий азотнокислый", "Аммоний азотнокислый",
|
| 975 |
-
"Сульфат магния", "Монофосфат калия", "Калий сернокислый", "Кальций хлорид"
|
| 976 |
-
];
|
| 977 |
-
|
| 978 |
-
let hasErrors = false;
|
| 979 |
-
for (const fert of requiredFertilizers) {
|
| 980 |
-
if (!requestData.fertilizerConstants[fert]) {
|
| 981 |
-
console.error(`ОШИБКА: Отсутствует удобрение: ${fert}`);
|
| 982 |
-
hasErrors = true;
|
| 983 |
-
} else {
|
| 984 |
-
console.log(`Удобрение ${fert} присутствует`);
|
| 985 |
-
}
|
| 986 |
-
}
|
| 987 |
-
|
| 988 |
-
const requiredProfileFields = ['P', 'K', 'Mg', 'Ca', 'S', 'NO3_RAT', 'TOTAL_NITROG'];
|
| 989 |
-
for (const field of requiredProfileFields) {
|
| 990 |
-
if (isNaN(requestData.profileSettings[field])) {
|
| 991 |
-
console.error(`ОШИБКА: Некорректное значение для параметра ${field}`);
|
| 992 |
-
hasErrors = true;
|
| 993 |
-
} else {
|
| 994 |
-
console.log(`Параметр ${field} в порядке:`, requestData.profileSettings[field]);
|
| 995 |
-
}
|
| 996 |
-
}
|
| 997 |
-
|
| 998 |
-
console.log("Параметр rounding_precision:", requestData.profileSettings.rounding_precision);
|
| 999 |
-
|
| 1000 |
-
if (hasErrors) {
|
| 1001 |
-
const errorMsg = "Пожалуйста, проверьте введенные данные. Обнаружены ошибки в форме. Смотрите консоль для деталей.";
|
| 1002 |
-
console.error(errorMsg);
|
| 1003 |
-
alert(errorMsg);
|
| 1004 |
-
return;
|
| 1005 |
-
}
|
| 1006 |
-
|
| 1007 |
-
// 5. Отправка данных на сервер с полным логированием
|
| 1008 |
-
console.log("=== ОТПРАВКА ДАННЫХ НА СЕРВЕР ===");
|
| 1009 |
-
|
| 1010 |
-
fetch('/calculation', {
|
| 1011 |
-
method: 'POST',
|
| 1012 |
-
headers: {
|
| 1013 |
-
'Content-Type': 'application/json',
|
| 1014 |
-
},
|
| 1015 |
-
body: JSON.stringify(requestData),
|
| 1016 |
-
})
|
| 1017 |
-
.then(response => {
|
| 1018 |
-
console.log("Получен ответ от сервера. Статус:", response.status);
|
| 1019 |
-
if (!response.ok) {
|
| 1020 |
-
console.error("ОШИБКА СЕРВЕРА. Полный ответ:", response);
|
| 1021 |
-
throw new Error(`HTTP error! status: ${response.status}`);
|
| 1022 |
-
}
|
| 1023 |
-
return response.json();
|
| 1024 |
-
})
|
| 1025 |
-
.then(data => {
|
| 1026 |
-
call_data = data;
|
| 1027 |
-
console.log("=== УСПЕШНЫЙ ОТВЕТ ОТ СЕРВЕРА ===", call_data);
|
| 1028 |
-
|
| 1029 |
-
// Выводим данные в форму
|
| 1030 |
-
data_out(call_data);
|
| 1031 |
-
|
| 1032 |
-
// Показываем статус расчёта
|
| 1033 |
-
showCalculationStatus(call_data);
|
| 1034 |
-
|
| 1035 |
-
// Вызываем функцию для расчета катионов и анионов
|
| 1036 |
-
calculateCationsAndAnions(data);
|
| 1037 |
-
|
| 1038 |
-
// Обновляем поля NH4 и NO3
|
| 1039 |
-
updateNitrogenFields(call_data);
|
| 1040 |
-
|
| 1041 |
-
// Рассчитываем EC
|
| 1042 |
-
const temperature = parseFloat(document.getElementById('profile_temp').value) || 25;
|
| 1043 |
-
const ecValue = calculateEC(call_data, temperature);
|
| 1044 |
-
|
| 1045 |
-
// Обновляем поле EC
|
| 1046 |
-
const ecInput = document.getElementById('profile_ec');
|
| 1047 |
-
if (ecInput) {
|
| 1048 |
-
ecInput.value = ecValue.toFixed(2);
|
| 1049 |
-
console.log(`Установлено значение EC: ${ecValue.toFixed(2)}`);
|
| 1050 |
-
}
|
| 1051 |
-
})
|
| 1052 |
-
.catch(error => {
|
| 1053 |
-
console.error("=== ОШИБКА ПРИ ОБРАБОТКЕ ===", error);
|
| 1054 |
-
alert("Ошибка при расчете: " + error.message);
|
| 1055 |
-
})
|
| 1056 |
-
.finally(() => {
|
| 1057 |
-
console.log("=== ЗАВЕРШЕНИЕ ОБРАБОТКИ ===");
|
| 1058 |
-
});
|
| 1059 |
-
});
|
| 1060 |
-
|
| 1061 |
-
|
| 1062 |
-
|
| 1063 |
|
| 1064 |
|
| 1065 |
|
|
|
|
| 885 |
'N (NO3-)': 0.0017, 'N (NH4+)': 0.0019
|
| 886 |
};
|
| 887 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 888 |
|
| 889 |
|
| 890 |
|