Spaces:
Sleeping
Sleeping
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 |
|