DmitrMakeev commited on
Commit
bbcd19b
·
verified ·
1 Parent(s): 2dcc520

Update nutri_call.html

Browse files
Files changed (1) hide show
  1. nutri_call.html +47 -35
nutri_call.html CHANGED
@@ -330,15 +330,14 @@
330
 
331
 
332
  <script>
333
- document.getElementById('calculate-btn').addEventListener('click', function() {
334
- // 1. Функция для безопасного получения числового значения
335
  const getValue = (id) => {
336
- const element = document.getElementById(id);
337
- const value = parseFloat(element.value);
338
- return isNaN(value) ? 0 : value;
339
  };
340
 
341
- // 2. Формируем данные для отправки
342
  const requestData = {
343
  fertilizerConstants: {
344
  "Кальциевая селитра": {
@@ -374,21 +373,29 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
374
  'S': getValue('profile_s'),
375
  'N-NO3': getValue('profile_no3'),
376
  'N-NH4': getValue('profile_nh4'),
377
- 'volume': parseInt(document.getElementById('liters-input').value) || 1
378
  }
379
  };
380
 
381
- // 3. Отправка данных на сервер
382
- fetch('/calculation', {
383
- method: 'POST',
384
- headers: {
385
- 'Content-Type': 'application/json'
386
- },
387
- body: JSON.stringify(requestData)
388
- })
389
- .then(response => response.json())
390
- .then(data => {
391
- // 4. Обработка ответа от сервера
 
 
 
 
 
 
 
 
392
  const fertilizerMap = {
393
  "Сульфат магния": "magnesium_sulfate",
394
  "Кальциевая селитра": "calcium_nitrate",
@@ -398,34 +405,39 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
398
  "Калий азотнокислый": "potassium_nitrate"
399
  };
400
 
401
- // Очищаем все поля перед заполнением
402
  Object.values(fertilizerMap).forEach(id => {
403
  const field = document.getElementById(id);
404
  if (field) field.value = "0";
405
  });
406
 
407
- // Заполняем данные из ответа
408
- data.fertilizers.forEach(fert => {
409
- const fieldId = fertilizerMap[fert.name];
410
- if (fieldId) {
411
- const field = document.getElementById(fieldId);
412
- if (field) {
413
- field.value = fert.grams.toFixed(3);
 
 
414
  }
415
- }
416
- });
417
 
418
  // Выводим EC
419
- const ecField = document.getElementById('ec-value');
420
- if (ecField) {
421
- ecField.textContent = data.ec.toFixed(2);
 
 
422
  }
423
 
424
  console.log("Данные успешно обработаны!");
425
- })
426
- .catch(error => {
427
- console.error("Ошибка при отправке/получении данных:", error);
428
- });
 
429
  });
430
  </script>
431
 
 
330
 
331
 
332
  <script>
333
+ document.getElementById('calculate-btn').addEventListener('click', async function() {
334
+ // 1. Безопасное получение значений
335
  const getValue = (id) => {
336
+ const val = parseFloat(document.getElementById(id)?.value);
337
+ return isNaN(val) ? 0 : val;
 
338
  };
339
 
340
+ // 2. Подготовка данных
341
  const requestData = {
342
  fertilizerConstants: {
343
  "Кальциевая селитра": {
 
373
  'S': getValue('profile_s'),
374
  'N-NO3': getValue('profile_no3'),
375
  'N-NH4': getValue('profile_nh4'),
376
+ 'volume': parseInt(document.getElementById('liters-input')?.value) || 1
377
  }
378
  };
379
 
380
+ try {
381
+ // 3. Отправка запроса
382
+ const response = await fetch('/calculation', {
383
+ method: 'POST',
384
+ headers: {
385
+ 'Content-Type': 'application/json'
386
+ },
387
+ body: JSON.stringify(requestData)
388
+ });
389
+
390
+ // 4. Проверка статуса ответа
391
+ if (!response.ok) {
392
+ throw new Error(`HTTP error! status: ${response.status}`);
393
+ }
394
+
395
+ // 5. Обработка успешного ответа
396
+ const data = await response.json();
397
+
398
+ // Карта соответствия удобрений и полей
399
  const fertilizerMap = {
400
  "Сульфат магния": "magnesium_sulfate",
401
  "Кальциевая селитра": "calcium_nitrate",
 
405
  "Калий азотнокислый": "potassium_nitrate"
406
  };
407
 
408
+ // Сначала обнуляем все поля
409
  Object.values(fertilizerMap).forEach(id => {
410
  const field = document.getElementById(id);
411
  if (field) field.value = "0";
412
  });
413
 
414
+ // Заполняем полученными данными
415
+ if (data.fertilizers && Array.isArray(data.fertilizers)) {
416
+ data.fertilizers.forEach(fert => {
417
+ const fieldId = fertilizerMap[fert.name];
418
+ if (fieldId) {
419
+ const field = document.getElementById(fieldId);
420
+ if (field) {
421
+ field.value = fert.grams?.toFixed(3) || "0";
422
+ }
423
  }
424
+ });
425
+ }
426
 
427
  // Выводим EC
428
+ if (data.ec !== undefined) {
429
+ const ecField = document.getElementById('ec-value');
430
+ if (ecField) {
431
+ ecField.textContent = data.ec.toFixed(2);
432
+ }
433
  }
434
 
435
  console.log("Данные успешно обработаны!");
436
+
437
+ } catch (error) {
438
+ console.error("Произошла ошибка:", error);
439
+ alert("Ошибка при расчете! Проверьте консоль для подробностей.");
440
+ }
441
  });
442
  </script>
443