Spaces:
Sleeping
Sleeping
Update nutri_call.html
Browse files- nutri_call.html +29 -29
nutri_call.html
CHANGED
@@ -1100,49 +1100,49 @@ function updateNitrogenFields(data) {
|
|
1100 |
function calculateNPKRatio(data) {
|
1101 |
console.log("=== РАСЧЕТ СООТНОШЕНИЯ NPK ===");
|
1102 |
|
1103 |
-
|
1104 |
-
const nValue = (data.actual_profile["N (NH4+)"] || 0) + (data.actual_profile["N (NO3-)"] || 0);
|
1105 |
-
const pValue = data.actual_profile["P"] || 0;
|
1106 |
-
const kValue = data.actual_profile["K"] || 0;
|
1107 |
|
1108 |
-
//
|
1109 |
-
|
1110 |
-
|
1111 |
|
1112 |
-
|
1113 |
-
|
1114 |
-
const pOxide = pValue * 2.29; // P → P2O5
|
1115 |
-
const kOxide = kValue * 1.2; // K → K2O
|
1116 |
|
1117 |
-
|
|
|
|
|
|
|
1118 |
|
1119 |
-
|
1120 |
-
|
|
|
|
|
1121 |
|
1122 |
-
|
1123 |
-
const nNormalized = (nOxide / minValue).toFixed(2);
|
1124 |
-
const pNormalized = (pOxide / minValue).toFixed(2);
|
1125 |
-
const kNormalized = (kOxide / minValue).toFixed(2);
|
1126 |
|
1127 |
-
|
|
|
|
|
|
|
|
|
1128 |
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
|
|
1133 |
|
1134 |
-
|
1135 |
|
1136 |
-
|
1137 |
-
|
1138 |
-
} else {
|
1139 |
-
console.error("Ошибка: Значения NPK не найдены в ответе сервера или равны нулю.");
|
1140 |
-
}
|
1141 |
}
|
1142 |
|
1143 |
|
1144 |
|
1145 |
|
|
|
1146 |
|
1147 |
|
1148 |
|
|
|
1100 |
function calculateNPKRatio(data) {
|
1101 |
console.log("=== РАСЧЕТ СООТНОШЕНИЯ NPK ===");
|
1102 |
|
1103 |
+
const profile = data.actual_profile || {};
|
|
|
|
|
|
|
1104 |
|
1105 |
+
// Получаем значения элементов
|
1106 |
+
const totalN = data.nitrogen_ratios?.TOTAL_NITROGEN ||
|
1107 |
+
(profile["N (NH4+)"] || 0) + (profile["N (NO3-)"] || 0);
|
1108 |
|
1109 |
+
const p = profile["P"] || 0;
|
1110 |
+
const k = profile["K"] || 0;
|
|
|
|
|
1111 |
|
1112 |
+
if (totalN <= 0 || p <= 0 || k <= 0) {
|
1113 |
+
console.error("Ошибка: Одно из значений N, P или K равно нулю или не найдено.");
|
1114 |
+
return;
|
1115 |
+
}
|
1116 |
|
1117 |
+
// Преобразуем в оксидную форму
|
1118 |
+
const nOxide = totalN; // N остается в виде N
|
1119 |
+
const pOxide = p * 2.29; // P → P2O5
|
1120 |
+
const kOxide = k * 1.2; // K → K2O
|
1121 |
|
1122 |
+
console.log(`Оксидная форма: N=${nOxide.toFixed(2)}, P2O5=${pOxide.toFixed(2)}, K2O=${kOxide.toFixed(2)}`);
|
|
|
|
|
|
|
1123 |
|
1124 |
+
// Нормализуем по минимальному значению
|
1125 |
+
const min = Math.min(nOxide, pOxide, kOxide);
|
1126 |
+
const nNorm = nOxide / min;
|
1127 |
+
const pNorm = pOxide / min;
|
1128 |
+
const kNorm = kOxide / min;
|
1129 |
|
1130 |
+
// Масштабируем и округляем (например, чтобы одно значение стало 10)
|
1131 |
+
const scale = 10 / Math.min(nNorm, pNorm, kNorm);
|
1132 |
+
const nFinal = Math.round(nNorm * scale);
|
1133 |
+
const pFinal = Math.round(pNorm * scale);
|
1134 |
+
const kFinal = Math.round(kNorm * scale);
|
1135 |
|
1136 |
+
console.log(`Итоговое соотношение NPK: ${nFinal}-${pFinal}-${kFinal}`);
|
1137 |
|
1138 |
+
// Вывод в интерфейс
|
1139 |
+
document.getElementById("npk-ratio").textContent = `${nFinal}-${pFinal}-${kFinal}`;
|
|
|
|
|
|
|
1140 |
}
|
1141 |
|
1142 |
|
1143 |
|
1144 |
|
1145 |
+
|
1146 |
|
1147 |
|
1148 |
|