DmitrMakeev commited on
Commit
fabae42
·
verified ·
1 Parent(s): 3660d7e

Update nutri_call.html

Browse files
Files changed (1) hide show
  1. nutri_call.html +118 -40
nutri_call.html CHANGED
@@ -331,43 +331,121 @@
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,16 +464,18 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
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,8 +485,6 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
405
  console.log("=== ЗАВЕРШЕНИЕ ОБРАБОТКИ ===");
406
  });
407
  });
408
-
409
-
410
  </script>
411
 
412
 
 
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
+ // 3. Формируем данные для сервера с пошаговым логированием
365
+ console.log("=== ФОРМИРОВАНИЕ ДАННЫХ ДЛЯ СЕРВЕРА ===");
366
+
367
+ const fertilizerConstants = {
368
+ "Кальциевая селитра": {
369
+ "N (NO3-)": getValue('fert_ca_no3') / 100,
370
+ "Ca": getValue('fert_ca_ca') / 100
371
+ },
372
+ "Калий азотнокислый": {
373
+ "N (NO3-)": getValue('fert_kno3_no3') / 100,
374
+ "K": getValue('fert_kno3_k') / 100
375
+ },
376
+ "Аммоний азотнокислый": {
377
+ "N (NO3-)": getValue('fert_nh4no3_no3') / 100,
378
+ "N (NH4+)": getValue('fert_nh4no3_nh4') / 100
379
+ },
380
+ "Сульфат магния": {
381
+ "Mg": getValue('fert_mgso4_mg') / 100,
382
+ "S": getValue('fert_mgso4_s') / 100
383
+ },
384
+ "Монофосфат калия": {
385
+ "P": getValue('fert_kh2po4_p') / 100,
386
+ "K": getValue('fert_kh2po4_k') / 100
387
+ },
388
+ "Калий сернокислый": {
389
+ "K": getValue('fert_k2so4_k') / 100,
390
+ "S": getValue('fert_k2so4_s') / 100
391
+ }
392
+ };
393
+
394
+ const profileSettings = {
395
+ 'P': getValue('profile_p'),
396
+ 'K': getValue('profile_k'),
397
+ 'Mg': getValue('profile_mg'),
398
+ 'Ca': getValue('profile_ca'),
399
+ 'S': getValue('profile_s'),
400
+ 'NO3_RAT': getValue('profile_no3'),
401
+ 'TOTAL_NITROG': getValue('profile_n'),
402
+ 'liters': parseInt(document.getElementById('liters-input').value) || 1,
403
+ 'rounding_precision': roundingPrecision
404
+ };
405
+
406
+ const requestData = {
407
+ fertilizerConstants: fertilizerConstants,
408
+ profileSettings: profileSettings
409
+ };
410
+
411
+ console.log("=== ПОЛНЫЙ ОБЪЕКТ ДЛЯ ОТПРАВКИ ===", JSON.stringify(requestData, null, 2));
412
+
413
+ // 4. Проверка данных с подробным выводом
414
+ console.log("=== ПРОВЕРКА ДАННЫХ ===");
415
+
416
+ const requiredFertilizers = ["Кальциевая селитра", "Калий азотнокислый", "Аммоний азотнокислый",
417
+ "Сульфат магния", "Монофосфат калия", "Калий сернокислый"];
418
+
419
+ let hasErrors = false;
420
+ for (const fert of requiredFertilizers) {
421
+ if (!requestData.fertilizerConstants[fert]) {
422
+ console.error(`ОШИБКА: Отсутствует удобрение: ${fert}`);
423
+ hasErrors = true;
424
+ } else {
425
+ console.log(`Удобрение ${fert} присутствует`);
426
+ }
427
  }
428
 
429
+ const requiredProfileFields = ['P', 'K', 'Mg', 'Ca', 'S', 'NO3_RAT', 'TOTAL_NITROG'];
430
+ for (const field of requiredProfileFields) {
431
+ if (isNaN(requestData.profileSettings[field])) {
432
+ console.error(`ОШИБКА: Некорректное значение для параметра ${field}`);
433
+ hasErrors = true;
434
+ } else {
435
+ console.log(`Параметр ${field} в порядке:`, requestData.profileSettings[field]);
436
+ }
 
 
 
 
437
  }
438
 
439
+ console.log("Параметр rounding_precision:", requestData.profileSettings.rounding_precision);
 
 
440
 
441
+ if (hasErrors) {
442
+ const errorMsg = "Пожалуйста, проверьте введенные данные. Обнаружены ошибки в форме. Смотрите консоль для деталей.";
443
+ console.error(errorMsg);
444
+ alert(errorMsg);
445
+ return;
446
  }
447
+ // 5. Отправка данных на сервер с полным логированием
448
+ console.log("=== ОТПРАВКА ДАННЫХ НА СЕРВЕР ===");
 
 
 
 
449
 
450
  fetch('/calculation', {
451
  method: 'POST',
 
464
  return response.json();
465
  })
466
  .then(data => {
467
+ call_data = data:
 
 
468
  console.log("=== УСПЕШНЫЙ ОТВЕТ ОТ СЕРВЕРА ===", call_data);
469
 
470
+ // Проверяем, применилась ли точность округления
471
+ console.log("Проверка округления в ответе:");
472
+ if (data.fertilizers) {
473
+ Object.entries(data.fertilizers).forEach(([name, values]) => {
474
+ console.log(`Удобрение ${name}:`, values);
475
+ });
476
+ }
477
 
478
+ // Здесь можно добавить обработку ответа
479
  })
480
  .catch(error => {
481
  console.error("=== ОШИБКА ПРИ ОБРАБОТКЕ ===", error);
 
485
  console.log("=== ЗАВЕРШЕНИЕ ОБРАБОТКИ ===");
486
  });
487
  });
 
 
488
  </script>
489
 
490