DmitrMakeev commited on
Commit
f230e6a
·
verified ·
1 Parent(s): c4c68a2

Update nutri_call.html

Browse files
Files changed (1) hide show
  1. nutri_call.html +46 -118
nutri_call.html CHANGED
@@ -331,123 +331,43 @@
331
 
332
 
333
  <script>
334
- let call_data ={};
335
-
336
- document.getElementById('calculate-btn').addEventListener('click', function() {
337
- console.log("=== НАЧАЛО ОБРАБОТКИ ===");
338
-
339
- // 1. Получаем значение точности округления с подробным логированием
340
- const roundingInput = document.getElementById('rounding-precision');
341
- console.log("Значение поля rounding-precision (raw):", roundingInput.value);
342
-
343
- const initialRounding = parseInt(roundingInput.value);
344
- console.log("Парсинг значения rounding (после parseInt):", initialRounding);
345
-
346
- const roundingPrecision = Math.min(Math.max(initialRounding || 3, 0), 6);
347
- console.log("Финальное значение точности (0-6):", roundingPrecision);
348
-
349
- // 2. Улучшенная функция для безопасного получения числового значения с логированием
350
- const getValue = (id) => {
351
- const element = document.getElementById(id);
352
- if (!element) {
353
- console.error(`Элемент с ID ${id} не найден!`);
354
- return 0;
355
- }
356
- console.log(`Значение поля ${id}:`, element.value);
357
-
358
- const value = parseFloat(element.value);
359
- const result = isNaN(value) ? 0 : value;
360
-
361
- console.log(`Парсинг значения ${id}:`, result);
362
- return result;
363
- };
364
 
365
- // 3. Формируем данные для сервера с пошаговым логированием
366
- console.log("=== ФОРМИРОВАНИЕ ДАННЫХ ДЛЯ СЕРВЕРА ===");
367
-
368
- const fertilizerConstants = {
369
- "Кальциевая селитра": {
370
- "N (NO3-)": getValue('fert_ca_no3') / 100,
371
- "Ca": getValue('fert_ca_ca') / 100
372
- },
373
- "Калий азотнокислый": {
374
- "N (NO3-)": getValue('fert_kno3_no3') / 100,
375
- "K": getValue('fert_kno3_k') / 100
376
- },
377
- "Аммоний азотнокислый": {
378
- "N (NO3-)": getValue('fert_nh4no3_no3') / 100,
379
- "N (NH4+)": getValue('fert_nh4no3_nh4') / 100
380
- },
381
- "Сульфат магния": {
382
- "Mg": getValue('fert_mgso4_mg') / 100,
383
- "S": getValue('fert_mgso4_s') / 100
384
- },
385
- "Монофосфат калия": {
386
- "P": getValue('fert_kh2po4_p') / 100,
387
- "K": getValue('fert_kh2po4_k') / 100
388
- },
389
- "Калий сернокислый": {
390
- "K": getValue('fert_k2so4_k') / 100,
391
- "S": getValue('fert_k2so4_s') / 100
392
- }
393
- };
394
-
395
- const profileSettings = {
396
- 'P': getValue('profile_p'),
397
- 'K': getValue('profile_k'),
398
- 'Mg': getValue('profile_mg'),
399
- 'Ca': getValue('profile_ca'),
400
- 'S': getValue('profile_s'),
401
- 'NO3_RAT': getValue('profile_no3'),
402
- 'TOTAL_NITROG': getValue('profile_n'),
403
- 'liters': parseInt(document.getElementById('liters-input').value) || 1,
404
- 'rounding_precision': roundingPrecision
405
- };
406
-
407
- const requestData = {
408
- fertilizerConstants: fertilizerConstants,
409
- profileSettings: profileSettings
410
- };
411
-
412
- console.log("=== ПОЛНЫЙ ОБЪЕКТ ДЛЯ ОТПРАВКИ ===", JSON.stringify(requestData, null, 2));
413
-
414
- // 4. Проверка данных с подробным выводом
415
- console.log("=== ПРОВЕРКА ДАННЫХ ===");
416
-
417
- const requiredFertilizers = ["Кальциевая селитра", "Калий азотнокислый", "Аммоний азотнокислый",
418
- "Сульфат магния", "Монофосфат калия", "Калий сернокислый"];
419
-
420
- let hasErrors = false;
421
- for (const fert of requiredFertilizers) {
422
- if (!requestData.fertilizerConstants[fert]) {
423
- console.error(`ОШИБКА: Отсутствует удобрение: ${fert}`);
424
- hasErrors = true;
425
- } else {
426
- console.log(`Удобрение ${fert} присутствует`);
427
- }
428
  }
429
 
430
- const requiredProfileFields = ['P', 'K', 'Mg', 'Ca', 'S', 'NO3_RAT', 'TOTAL_NITROG'];
431
- for (const field of requiredProfileFields) {
432
- if (isNaN(requestData.profileSettings[field])) {
433
- console.error(`ОШИБКА: Некорректное значение для параметра ${field}`);
434
- hasErrors = true;
435
- } else {
436
- console.log(`Параметр ${field} в поряд��е:`, requestData.profileSettings[field]);
437
- }
 
 
 
 
438
  }
439
 
440
- console.log("Параметр rounding_precision:", requestData.profileSettings.rounding_precision);
 
 
441
 
442
- if (hasErrors) {
443
- const errorMsg = "Пожалуйста, проверьте введенные данные. Обнаружены ошибки в форме. Смотрите консоль для деталей.";
444
- console.error(errorMsg);
445
- alert(errorMsg);
446
- return;
447
  }
 
448
 
449
- // 5. Отправка данных на сервер с полным логированием
450
- console.log("=== ОТПРАВКА ДАННЫХ НА СЕРВЕР ===");
 
 
451
 
452
  fetch('/calculation', {
453
  method: 'POST',
@@ -466,18 +386,16 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
466
  return response.json();
467
  })
468
  .then(data => {
469
- call_data = data:
 
 
470
  console.log("=== УСПЕШНЫЙ ОТВЕТ ОТ СЕРВЕРА ===", call_data);
471
 
472
- // Проверяем, применилась ли точность округления
473
- console.log("Проверка округления в ответе:");
474
- if (data.fertilizers) {
475
- Object.entries(data.fertilizers).forEach(([name, values]) => {
476
- console.log(`Удобрение ${name}:`, values);
477
- });
478
- }
479
 
480
- // Здесь можно добавить обработку ответа
481
  })
482
  .catch(error => {
483
  console.error("=== ОШИБКА ПРИ ОБРАБОТКЕ ===", error);
@@ -487,6 +405,16 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
487
  console.log("=== ЗАВЕРШЕНИЕ ОБРАБОТКИ ===");
488
  });
489
  });
 
 
 
 
 
 
 
 
 
 
490
  </script>
491
 
492
 
 
331
 
332
 
333
  <script>
334
+ // Глобальная переменная для хранения данных
335
+ let call_data = null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
336
 
337
+ // Функция для обработки данных (пример)
338
+ function processFertilizersData() {
339
+ if (!call_data || !call_data.fertilizers) {
340
+ console.error("Нет данных для обработки");
341
+ return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
342
  }
343
 
344
+ console.log("Обработка данных удобрений:");
345
+ Object.entries(call_data.fertilizers).forEach(([name, values]) => {
346
+ console.log(`Обработка ${name}:`, values);
347
+ // Ваша логика обработки здесь
348
+ });
349
+ }
350
+
351
+ // Вторая функция для работы с данными (пример)
352
+ function displayResults() {
353
+ if (!call_data) {
354
+ console.error("Нет данных для отображения");
355
+ return;
356
  }
357
 
358
+ console.log("Отображение результатов:");
359
+ console.log("Общий EC:", call_data.total_ec);
360
+ console.log("Общий PPM:", call_data.total_ppm);
361
 
362
+ if (call_data.actual_profile) {
363
+ console.log("Профиль питательных веществ:", call_data.actual_profile);
 
 
 
364
  }
365
+ }
366
 
367
+ document.getElementById('calculate-btn').addEventListener('click', function() {
368
+ console.log("=== НАЧАЛО ОБРАБОТКИ ===");
369
+
370
+ // [Ваш существующий код получения и подготовки данных...]
371
 
372
  fetch('/calculation', {
373
  method: 'POST',
 
386
  return response.json();
387
  })
388
  .then(data => {
389
+ // Сохраняем данные в глобальную переменную
390
+ call_data = data; // Исправлено: было call_data = data:
391
+
392
  console.log("=== УСПЕШНЫЙ ОТВЕТ ОТ СЕРВЕРА ===", call_data);
393
 
394
+ // Вызываем функции обработки данных
395
+ processFertilizersData();
396
+ displayResults();
 
 
 
 
397
 
398
+ // Здесь можно добавить дополнительную обработку ответа
399
  })
400
  .catch(error => {
401
  console.error("=== ОШИБКА ПРИ ОБРАБОТКЕ ===", error);
 
405
  console.log("=== ЗАВЕРШЕНИЕ ОБРАБОТКИ ===");
406
  });
407
  });
408
+
409
+ // Пример использования данных в других частях приложения
410
+ document.getElementById('some-other-button').addEventListener('click', function() {
411
+ if (call_data) {
412
+ console.log("Использование сохраненных данных:", call_data);
413
+ // Дополнительная обработка данных
414
+ } else {
415
+ console.log("Данные еще не загружены");
416
+ }
417
+ });
418
  </script>
419
 
420