DmitrMakeev commited on
Commit
540791a
·
verified ·
1 Parent(s): 22b25fe

Update nutri_call.html

Browse files
Files changed (1) hide show
  1. nutri_call.html +58 -65
nutri_call.html CHANGED
@@ -326,7 +326,7 @@
326
 
327
  <script>
328
  document.getElementById('calculate-btn').addEventListener('click', function() {
329
- // 1. Собираем данные с проверкой каждого поля
330
  const getValue = (id) => {
331
  const element = document.getElementById(id);
332
  const value = parseFloat(element.value);
@@ -337,97 +337,90 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
337
  return value;
338
  };
339
 
340
- // 2. Формируем объект данных
341
- const data = {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
342
  fertilizerConstants: {
343
- "CaN2O6": {
344
- "NO3": getValue('fert_ca_no3') / 100,
345
  "Ca": getValue('fert_ca_ca') / 100
346
  },
347
- "KNO3": {
348
- "NO3": getValue('fert_kno3_no3') / 100,
349
  "K": getValue('fert_kno3_k') / 100
350
  },
351
- "NH4NO3": {
352
- "NH4": getValue('fert_nh4no3_nh4') / 100,
353
- "NO3": getValue('fert_nh4no3_no3') / 100
354
  },
355
- "MgSO4": {
356
  "Mg": getValue('fert_mgso4_mg') / 100,
357
  "S": getValue('fert_mgso4_s') / 100
358
  },
359
- "KH2PO4": {
360
  "P": getValue('fert_kh2po4_p') / 100,
361
  "K": getValue('fert_kh2po4_k') / 100
362
  },
363
- "K2SO4": {
364
  "K": getValue('fert_k2so4_k') / 100,
365
  "S": getValue('fert_k2so4_s') / 100
366
  }
367
  },
 
 
368
  profileSettings: {
369
- "N": getValue('profile_p'),
370
- "P": getValue('profile_k'),
371
- "K": getValue('profile_ca'),
372
- "Ca": getValue('profile_mg'),
373
- "Mg": getValue('profile_s'),
374
- "S": getValue('profile_cl'),
375
- "NH4": getValue('profile_nh4'),
376
- "NO3": getValue('profile_no3'),
377
- "liters": parseInt(document.getElementById('liters-input').value) || 1
378
  }
379
  };
380
 
381
- // 3. Выводим в консоль то, что собираемся отправить
382
- console.log("Проверка данных перед отправкой:");
383
- console.log(JSON.stringify(data, null, 2)); // Красивое форматирование
384
 
385
- // 4. Проверяем, есть ли ошибки в данных
386
- let hasErrors = false;
387
- for (const key in data.profileSettings) {
388
- if (isNaN(data.profileSettings[key])) {
389
- console.error(`Ошибка: profileSettings.${key} = NaN`);
390
- hasErrors = true;
391
- }
392
- }
393
 
394
- for (const fert in data.fertilizerConstants) {
395
- for (const elem in data.fertilizerConstants[fert]) {
396
- if (isNaN(data.fertilizerConstants[fert][elem])) {
397
- console.error(`Ошибка: fertilizerConstants.${fert}.${elem} = NaN`);
398
- hasErrors = true;
399
- }
400
  }
401
  }
402
-
403
- if (hasErrors) {
404
- console.error("Обнаружены ошибки в данных! Отправка отменена.");
405
- return;
406
- }
407
-
408
- // 5. Только после проверки отправляем запрос
409
- console.log("Отправка данных на сервер...");
410
- var xhr = new XMLHttpRequest();
411
- xhr.open("POST", "/calculation", true);
412
- xhr.setRequestHeader("Content-Type", "application/json");
413
 
414
- xhr.onreadystatechange = function() {
415
- if (xhr.readyState === 4) {
416
- console.log("Статус ответа:", xhr.status);
417
- if (xhr.status === 200) {
418
- console.log("Успешный ответ от сервера:", JSON.parse(xhr.responseText));
419
- } else {
420
- console.error("Ошибка сервера:", xhr.status, xhr.statusText);
421
- console.error("Текст ошибки:", xhr.responseText);
422
- }
423
  }
424
- };
425
-
426
- xhr.onerror = function() {
427
- console.error("Ошибка сети при отправке запроса");
428
- };
429
 
430
- xhr.send(JSON.stringify(data));
431
  });
432
  </script>
433
 
 
326
 
327
  <script>
328
  document.getElementById('calculate-btn').addEventListener('click', function() {
329
+ // Функция для безопасного получения числового значения
330
  const getValue = (id) => {
331
  const element = document.getElementById(id);
332
  const value = parseFloat(element.value);
 
337
  return value;
338
  };
339
 
340
+ // Преобразование формата удобрений (химические формулы -> русские названия)
341
+ const fertilizerMap = {
342
+ "CaN2O6": "Кальциевая селитра",
343
+ "KNO3": "Калий азотнокислый",
344
+ "K2SO4": "Калий сернокислый",
345
+ "NH4NO3": "Аммоний азотнокислый",
346
+ "MgSO4": "Сульфат магния",
347
+ "KH2PO4": "Монофосфат калия"
348
+ };
349
+
350
+ // Преобразование формата элементов (NO3 -> N (NO3-))
351
+ const nutrientMap = {
352
+ "NO3": "N (NO3-)",
353
+ "NH4": "N (NH4+)"
354
+ };
355
+
356
+ // Формируем данные в ТОЧНОМ формате, как на сервере
357
+ const serverData = {
358
+ // 1. Константы удобрений (как NUTRIENT_CONTENT_IN_FERTILIZERS)
359
  fertilizerConstants: {
360
+ "Кальциевая селитра": {
361
+ "N (NO3-)": getValue('fert_ca_no3') / 100,
362
  "Ca": getValue('fert_ca_ca') / 100
363
  },
364
+ "Калий азотнокислый": {
365
+ "N (NO3-)": getValue('fert_kno3_no3') / 100,
366
  "K": getValue('fert_kno3_k') / 100
367
  },
368
+ "Аммоний азотнокислый": {
369
+ "N (NO3-)": getValue('fert_nh4no3_no3') / 100,
370
+ "N (NH4+)": getValue('fert_nh4no3_nh4') / 100
371
  },
372
+ "Сульфат магния": {
373
  "Mg": getValue('fert_mgso4_mg') / 100,
374
  "S": getValue('fert_mgso4_s') / 100
375
  },
376
+ "Монофосфат калия": {
377
  "P": getValue('fert_kh2po4_p') / 100,
378
  "K": getValue('fert_kh2po4_k') / 100
379
  },
380
+ "Калий сернокислый": {
381
  "K": getValue('fert_k2so4_k') / 100,
382
  "S": getValue('fert_k2so4_s') / 100
383
  }
384
  },
385
+
386
+ // 2. Настройки профиля (как BASE_PROFILE)
387
  profileSettings: {
388
+ 'P': getValue('profile_k'),
389
+ 'K': getValue('profile_ca'),
390
+ 'Mg': getValue('profile_s'),
391
+ 'Ca': getValue('profile_mg'),
392
+ 'S': getValue('profile_cl'),
393
+ 'N (NO3-)': getValue('profile_no3'),
394
+ 'N (NH4+)': getValue('profile_nh4'),
395
+ 'liters': parseInt(document.getElementById('liters-input').value) || 1
 
396
  }
397
  };
398
 
399
+ // Выводим данные для проверки (НЕ отправляем!)
400
+ console.log("Сформированные данные для сервера:");
401
+ console.log(JSON.stringify(serverData, null, 2));
402
 
403
+ // Проверка соответствия формату
404
+ console.log("Проверка формата данных:");
 
 
 
 
 
 
405
 
406
+ // Проверка удобрений
407
+ const expectedFertilizers = ["Кальциевая селитра", "Калий азотнокислый", "Аммоний азотнокислый",
408
+ "Сульфат магния", "Монофосфат калия", "Калий сернокислый"];
409
+ for (const fert of expectedFertilizers) {
410
+ if (!serverData.fertilizerConstants[fert]) {
411
+ console.error(`Отсутствует удобрение: ${fert}`);
412
  }
413
  }
 
 
 
 
 
 
 
 
 
 
 
414
 
415
+ // Проверка элементов профиля
416
+ const expectedProfileKeys = ['P', 'K', 'Mg', 'Ca', 'S', 'N (NO3-)', 'N (NH4+)', 'liters'];
417
+ for (const key of expectedProfileKeys) {
418
+ if (serverData.profileSettings[key] === undefined) {
419
+ console.error(`Отсутствует поле профиля: ${key}`);
 
 
 
 
420
  }
421
+ }
 
 
 
 
422
 
423
+ console.log("Проверка завершена. Данные НЕ отправлены на сервер.");
424
  });
425
  </script>
426