Spaces:
Sleeping
Sleeping
Update nutri_call.html
Browse files- nutri_call.html +80 -41
nutri_call.html
CHANGED
@@ -610,7 +610,18 @@ legend {
|
|
610 |
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
|
611 |
<script>
|
612 |
let call_data;
|
613 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
614 |
document.getElementById('calculate-btn').addEventListener('click', function() {
|
615 |
console.log("=== НАЧАЛО ОБРАБОТКИ ===");
|
616 |
|
@@ -730,50 +741,53 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
|
|
730 |
headers: {
|
731 |
'Content-Type': 'application/json',
|
732 |
},
|
733 |
-
body: JSON.stringify(requestData)
|
734 |
-
})
|
735 |
-
.then(response => {
|
736 |
-
console.log("Получен ответ от сервера. Статус:", response.status);
|
737 |
-
|
738 |
-
if (!response.ok) {
|
739 |
-
console.error("ОШИБКА СЕРВЕРА. Полный ответ:", response);
|
740 |
-
throw new Error(`HTTP error! status: ${response.status}`);
|
741 |
-
}
|
742 |
-
return response.json();
|
743 |
})
|
744 |
-
|
745 |
-
|
746 |
-
console.log("=== УСПЕШНЫЙ ОТВЕТ ОТ СЕРВЕРА ===", call_data);
|
747 |
-
|
748 |
-
// Выводим данные в форму
|
749 |
-
data_out(call_data);
|
750 |
-
|
751 |
-
// Показываем статус расчёта
|
752 |
-
showCalculationStatus(call_data); // <-- Вот эта строка запуска
|
753 |
|
754 |
-
|
755 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
756 |
|
757 |
-
|
758 |
-
|
759 |
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
777 |
});
|
778 |
|
779 |
|
@@ -822,7 +836,32 @@ function data_out(response) {
|
|
822 |
|
823 |
|
824 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
825 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
826 |
|
827 |
// Функция для расчета соотношения NPK
|
828 |
function updateNPK(data) {
|
|
|
610 |
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
|
611 |
<script>
|
612 |
let call_data;
|
613 |
+
const ecConstants = {
|
614 |
+
"Ca": 0.05, // Коэффициент для кальция
|
615 |
+
"K": 0.07, // Коэффициент для калия
|
616 |
+
"Mg": 0.06, // Коэффициент для магния
|
617 |
+
"P": 0.1, // Коэффициент для фосфора
|
618 |
+
"S": 0.08, // Коэффициент для серы
|
619 |
+
"N (NO3-)": 0.09, // Коэффициент для нитратов
|
620 |
+
"N (NH4+)": 0.08, // Коэффициент для аммония
|
621 |
+
"Fe": 0.04, // Коэффициент для железа (если добавляется позже)
|
622 |
+
"Zn": 0.03, // Коэффициент для цинка (если добавляется позже)
|
623 |
+
// Добавьте другие элементы по необходимости
|
624 |
+
};
|
625 |
document.getElementById('calculate-btn').addEventListener('click', function() {
|
626 |
console.log("=== НАЧАЛО ОБРАБОТКИ ===");
|
627 |
|
|
|
741 |
headers: {
|
742 |
'Content-Type': 'application/json',
|
743 |
},
|
744 |
+
body: JSON.stringify(requestData),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
745 |
})
|
746 |
+
.then(response => {
|
747 |
+
console.log("Получен ответ от сервера. Статус:", response.status);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
748 |
|
749 |
+
if (!response.ok) {
|
750 |
+
console.error("ОШИБКА СЕРВЕРА. Полный ответ:", response);
|
751 |
+
throw new Error(`HTTP error! status: ${response.status}`);
|
752 |
+
}
|
753 |
+
return response.json();
|
754 |
+
})
|
755 |
+
.then(data => {
|
756 |
+
call_data = data;
|
757 |
+
console.log("=== УСПЕШНЫЙ ОТВЕТ ОТ СЕРВЕРА ===", call_data);
|
758 |
|
759 |
+
// Выводим данные в форму
|
760 |
+
data_out(call_data);
|
761 |
|
762 |
+
// Показываем статус расчёта
|
763 |
+
showCalculationStatus(call_data);
|
764 |
+
|
765 |
+
// Обновляем поля NH4 и NO3
|
766 |
+
updateNitrogenFields(call_data);
|
767 |
+
|
768 |
+
// Обновляем значения NPK
|
769 |
+
updateNPK(call_data);
|
770 |
+
|
771 |
+
// Получаем температуру из формы
|
772 |
+
const temperature = parseFloat(document.getElementById('profile_temp').value) || 25;
|
773 |
+
|
774 |
+
// Рассчитываем EC
|
775 |
+
const ecValue = calculateEC(call_data, temperature);
|
776 |
+
|
777 |
+
// Обновляем поле EC
|
778 |
+
const ecInput = document.getElementById('profile_ec');
|
779 |
+
if (ecInput) {
|
780 |
+
ecInput.value = ecValue.toFixed(2);
|
781 |
+
console.log(`Установлено значение EC: ${ecValue.toFixed(2)}`);
|
782 |
+
}
|
783 |
+
})
|
784 |
+
.catch(error => {
|
785 |
+
console.error("=== ОШИБКА ПРИ ОБРАБОТКЕ ===", error);
|
786 |
+
alert("Ошибка при расчете: " + error.message);
|
787 |
+
})
|
788 |
+
.finally(() => {
|
789 |
+
console.log("=== ЗАВЕРШЕНИЕ ОБРАБОТКИ ===");
|
790 |
+
});
|
791 |
});
|
792 |
|
793 |
|
|
|
836 |
|
837 |
|
838 |
|
839 |
+
function calculateEC(data, temperature) {
|
840 |
+
console.log("=== РАСЧЕТ ЭЛЕКТРОПРОВОДНОСТИ (EC) ===");
|
841 |
+
|
842 |
+
// Извлекаем значения элементов из actual_profile
|
843 |
+
const profile = data.actual_profile;
|
844 |
+
let totalEC = 0;
|
845 |
+
|
846 |
+
// Суммируем EC для каждого элемента
|
847 |
+
for (const [element, ppm] of Object.entries(profile)) {
|
848 |
+
if (ecConstants[element]) {
|
849 |
+
const elementEC = ppm * ecConstants[element];
|
850 |
+
totalEC += elementEC;
|
851 |
+
console.log(`EC для ${element}: ${elementEC.toFixed(3)} (ppm=${ppm}, const=${ecConstants[element]})`);
|
852 |
+
} else {
|
853 |
+
console.warn(`Константа для элемента ${element} не найдена.`);
|
854 |
+
}
|
855 |
+
}
|
856 |
|
857 |
+
console.log(`Общая EC без компенсации: ${totalEC.toFixed(3)}`);
|
858 |
+
|
859 |
+
// Применяем температурную компенсацию
|
860 |
+
const compensatedEC = totalEC * (1 + 0.02 * (temperature - 25));
|
861 |
+
console.log(`Компенсированная EC: ${compensatedEC.toFixed(3)} (при температуре ${temperature}°C)`);
|
862 |
+
|
863 |
+
return compensatedEC;
|
864 |
+
}
|
865 |
|
866 |
// Функция для расчета соотношения NPK
|
867 |
function updateNPK(data) {
|