Spaces:
Running
Running
Update nutri_call.html
Browse files- nutri_call.html +19 -16
nutri_call.html
CHANGED
|
@@ -1115,7 +1115,7 @@ function calculateAndUpdate(data) {
|
|
| 1115 |
function calculateCationsAndAnions(data) {
|
| 1116 |
console.log("=== ТОЧНЫЙ РАСЧЕТ КАТИОНОВ И АНИОНОВ ===");
|
| 1117 |
|
| 1118 |
-
// Молярные массы и валентности элементов
|
| 1119 |
const ION_DATA = {
|
| 1120 |
// Катионы
|
| 1121 |
'Ca': { mass: 40.08, charge: 2 },
|
|
@@ -1126,42 +1126,46 @@ function calculateCationsAndAnions(data) {
|
|
| 1126 |
'NO3': { mass: 62.004, charge: 1 },
|
| 1127 |
'SO4': { mass: 96.06, charge: 2 },
|
| 1128 |
'H2PO4': { mass: 96.99, charge: 1 },
|
| 1129 |
-
'Cl': { mass: 35.453, charge: 1 }
|
| 1130 |
};
|
| 1131 |
|
| 1132 |
// Получаем данные профиля
|
| 1133 |
const profile = data.actual_profile;
|
| 1134 |
|
|
|
|
|
|
|
|
|
|
| 1135 |
// Рассчитываем миллиэквиваленты (meq/L) для каждого иона
|
| 1136 |
const ions = {
|
| 1137 |
// Катионы
|
| 1138 |
-
'Ca': (
|
| 1139 |
-
'Mg': (
|
| 1140 |
-
'K': (
|
| 1141 |
-
'NH4': (
|
| 1142 |
// Анионы
|
| 1143 |
-
'NO3': (
|
| 1144 |
-
'SO4': (
|
| 1145 |
-
'H2PO4': (
|
| 1146 |
-
'Cl': (
|
| 1147 |
};
|
| 1148 |
|
| 1149 |
// Суммируем катионы и анионы
|
| 1150 |
const totalCations = ions['Ca'] + ions['Mg'] + ions['K'] + ions['NH4'];
|
| 1151 |
-
const totalAnions = ions['NO3'] + ions['SO4'] + ions['H2PO4'] + ions['Cl'];
|
| 1152 |
|
| 1153 |
// Рассчитываем процентное соотношение
|
| 1154 |
const total = totalCations + totalAnions;
|
| 1155 |
-
const cationPercent = (totalCations / total * 100).toFixed(1);
|
| 1156 |
-
const anionPercent = (totalAnions / total * 100).toFixed(1);
|
| 1157 |
|
|
|
|
| 1158 |
console.log(`Катионы: ${totalCations.toFixed(2)} mEq/L (${cationPercent}%)`);
|
| 1159 |
console.log(`Анионы: ${totalAnions.toFixed(2)} mEq/L (${anionPercent}%)`);
|
| 1160 |
console.log(`Дисбаланс: ${(totalCations - totalAnions).toFixed(2)} mEq/L`);
|
| 1161 |
|
| 1162 |
// Обновляем UI
|
| 1163 |
-
|
| 1164 |
-
|
| 1165 |
|
| 1166 |
// Обновляем индикаторы
|
| 1167 |
document.getElementById("cation-indicator").style.width = `${cationPercent}%`;
|
|
@@ -1169,7 +1173,6 @@ function calculateCationsAndAnions(data) {
|
|
| 1169 |
}
|
| 1170 |
|
| 1171 |
|
| 1172 |
-
|
| 1173 |
|
| 1174 |
|
| 1175 |
|
|
|
|
| 1115 |
function calculateCationsAndAnions(data) {
|
| 1116 |
console.log("=== ТОЧНЫЙ РАСЧЕТ КАТИОНОВ И АНИОНОВ ===");
|
| 1117 |
|
| 1118 |
+
// Молярные массы и валентности элементов (г/моль)
|
| 1119 |
const ION_DATA = {
|
| 1120 |
// Катионы
|
| 1121 |
'Ca': { mass: 40.08, charge: 2 },
|
|
|
|
| 1126 |
'NO3': { mass: 62.004, charge: 1 },
|
| 1127 |
'SO4': { mass: 96.06, charge: 2 },
|
| 1128 |
'H2PO4': { mass: 96.99, charge: 1 },
|
| 1129 |
+
'Cl': { mass: 35.453, charge: 1 }
|
| 1130 |
};
|
| 1131 |
|
| 1132 |
// Получаем данные профиля
|
| 1133 |
const profile = data.actual_profile;
|
| 1134 |
|
| 1135 |
+
// Проверяем наличие всех ключей в profile
|
| 1136 |
+
const ensureValue = (key) => profile[key] || 0;
|
| 1137 |
+
|
| 1138 |
// Рассчитываем миллиэквиваленты (meq/L) для каждого иона
|
| 1139 |
const ions = {
|
| 1140 |
// Катионы
|
| 1141 |
+
'Ca': ensureValue('Ca') * ION_DATA['Ca'].charge / ION_DATA['Ca'].mass,
|
| 1142 |
+
'Mg': ensureValue('Mg') * ION_DATA['Mg'].charge / ION_DATA['Mg'].mass,
|
| 1143 |
+
'K': ensureValue('K') * ION_DATA['K'].charge / ION_DATA['K'].mass,
|
| 1144 |
+
'NH4': ensureValue('N (NH4+)') * ION_DATA['NH4'].charge / ION_DATA['NH4'].mass,
|
| 1145 |
// Анионы
|
| 1146 |
+
'NO3': ensureValue('N (NO3-)') * ION_DATA['NO3'].charge / ION_DATA['NO3'].mass,
|
| 1147 |
+
'SO4': ensureValue('S') * ION_DATA['SO4'].charge / ION_DATA['SO4'].mass,
|
| 1148 |
+
'H2PO4': ensureValue('P') * ION_DATA['H2PO4'].charge / ION_DATA['H2PO4'].mass,
|
| 1149 |
+
'Cl': ensureValue('Cl') * ION_DATA['Cl'].charge / ION_DATA['Cl'].mass
|
| 1150 |
};
|
| 1151 |
|
| 1152 |
// Суммируем катионы и анионы
|
| 1153 |
const totalCations = ions['Ca'] + ions['Mg'] + ions['K'] + ions['NH4'];
|
| 1154 |
+
const totalAnions = ions['NO3'] + ions['SO4'] + ions['H2PO4'] + ions['Cl'];
|
| 1155 |
|
| 1156 |
// Рассчитываем процентное соотношение
|
| 1157 |
const total = totalCations + totalAnions;
|
| 1158 |
+
const cationPercent = total > 0 ? (totalCations / total * 100).toFixed(1) : 0;
|
| 1159 |
+
const anionPercent = total > 0 ? (totalAnions / total * 100).toFixed(1) : 0;
|
| 1160 |
|
| 1161 |
+
// Вывод в консоль
|
| 1162 |
console.log(`Катионы: ${totalCations.toFixed(2)} mEq/L (${cationPercent}%)`);
|
| 1163 |
console.log(`Анионы: ${totalAnions.toFixed(2)} mEq/L (${anionPercent}%)`);
|
| 1164 |
console.log(`Дисбаланс: ${(totalCations - totalAnions).toFixed(2)} mEq/L`);
|
| 1165 |
|
| 1166 |
// Обновляем UI
|
| 1167 |
+
const resultText = `Катионы: ${totalCations.toFixed(2)} mEq/L | Анионы: ${totalAnions.toFixed(2)} mEq/L`;
|
| 1168 |
+
document.getElementById("n1-value").textContent = resultText;
|
| 1169 |
|
| 1170 |
// Обновляем индикаторы
|
| 1171 |
document.getElementById("cation-indicator").style.width = `${cationPercent}%`;
|
|
|
|
| 1173 |
}
|
| 1174 |
|
| 1175 |
|
|
|
|
| 1176 |
|
| 1177 |
|
| 1178 |
|