DmitrMakeev commited on
Commit
7179859
·
verified ·
1 Parent(s): 904b3f0

Update nutri_call.html

Browse files
Files changed (1) hide show
  1. 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': (profile['Ca'] || 0) * ION_DATA['Ca'].charge / ION_DATA['Ca'].mass,
1139
- 'Mg': (profile['Mg'] || 0) * ION_DATA['Mg'].charge / ION_DATA['Mg'].mass,
1140
- 'K': (profile['K'] || 0) * ION_DATA['K'].charge / ION_DATA['K'].mass,
1141
- 'NH4': (profile['N (NH4+)'] || 0) * ION_DATA['NH4'].charge / ION_DATA['NH4'].mass,
1142
  // Анионы
1143
- 'NO3': (profile['N (NO3-)'] || 0) * ION_DATA['NO3'].charge / ION_DATA['NO3'].mass,
1144
- 'SO4': (profile['S'] || 0) * ION_DATA['SO4'].charge / ION_DATA['SO4'].mass,
1145
- 'H2PO4': (profile['P'] || 0) * ION_DATA['H2PO4'].charge / ION_DATA['H2PO4'].mass,
1146
- 'Cl': (profile['Cl'] || 0) * ION_DATA['Cl'].charge / ION_DATA['Cl'].mass // Добавлен расчет для хлора
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
- document.getElementById("n1-value").textContent =
1164
- `Катионы: ${totalCations.toFixed(2)} mEq/L | Анионы: ${totalAnions.toFixed(2)} mEq/L`;
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