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) {
|