Spaces:
Sleeping
Sleeping
Update nutri_call.html
Browse files- nutri_call.html +45 -32
nutri_call.html
CHANGED
@@ -337,25 +337,8 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
|
|
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,
|
@@ -382,8 +365,6 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
|
|
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'),
|
@@ -396,31 +377,63 @@ document.getElementById('calculate-btn').addEventListener('click', function() {
|
|
396 |
}
|
397 |
};
|
398 |
|
399 |
-
// Выводим данные для проверки
|
400 |
console.log("Сформированные данные для сервера:");
|
401 |
console.log(JSON.stringify(serverData, null, 2));
|
402 |
-
|
403 |
-
// Проверка
|
404 |
-
|
405 |
|
406 |
// Проверка удобрений
|
407 |
-
const
|
408 |
-
|
409 |
-
|
|
|
|
|
|
|
410 |
if (!serverData.fertilizerConstants[fert]) {
|
411 |
console.error(`Отсутствует удобрение: ${fert}`);
|
|
|
412 |
}
|
413 |
}
|
414 |
|
415 |
-
// Проверка элементов
|
416 |
-
const
|
417 |
-
for (const
|
418 |
-
if (serverData.profileSettings[
|
419 |
-
console.error(
|
|
|
420 |
}
|
421 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
422 |
|
423 |
-
|
424 |
});
|
425 |
</script>
|
426 |
|
|
|
337 |
return value;
|
338 |
};
|
339 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
340 |
// Формируем данные в ТОЧНОМ формате, как на сервере
|
341 |
const serverData = {
|
|
|
342 |
fertilizerConstants: {
|
343 |
"Кальциевая селитра": {
|
344 |
"N (NO3-)": getValue('fert_ca_no3') / 100,
|
|
|
365 |
"S": getValue('fert_k2so4_s') / 100
|
366 |
}
|
367 |
},
|
|
|
|
|
368 |
profileSettings: {
|
369 |
'P': getValue('profile_k'),
|
370 |
'K': getValue('profile_ca'),
|
|
|
377 |
}
|
378 |
};
|
379 |
|
380 |
+
// Выводим данные для проверки
|
381 |
console.log("Сформированные данные для сервера:");
|
382 |
console.log(JSON.stringify(serverData, null, 2));
|
383 |
+
|
384 |
+
// Проверка на ошибки
|
385 |
+
let hasErrors = false;
|
386 |
|
387 |
// Проверка удобрений
|
388 |
+
const requiredFertilizers = [
|
389 |
+
"Кальциевая селитра", "Калий азотнокислый", "Аммоний азотнокислый",
|
390 |
+
"Сульфат магния", "Монофосфат калия", "Калий сернокислый"
|
391 |
+
];
|
392 |
+
|
393 |
+
for (const fert of requiredFertilizers) {
|
394 |
if (!serverData.fertilizerConstants[fert]) {
|
395 |
console.error(`Отсутствует удобрение: ${fert}`);
|
396 |
+
hasErrors = true;
|
397 |
}
|
398 |
}
|
399 |
|
400 |
+
// Проверка элементов
|
401 |
+
const requiredElements = ['P', 'K', 'Mg', 'Ca', 'S', 'N (NO3-)', 'N (NH4+)'];
|
402 |
+
for (const elem of requiredElements) {
|
403 |
+
if (isNaN(serverData.profileSettings[elem])) {
|
404 |
+
console.error(`Некорректное значение для элемента ${elem}`);
|
405 |
+
hasErrors = true;
|
406 |
}
|
407 |
}
|
408 |
+
|
409 |
+
if (hasErrors) {
|
410 |
+
console.error("Обнаружены ошибки в данных! Отправка отменена.");
|
411 |
+
return;
|
412 |
+
}
|
413 |
+
|
414 |
+
// Отправка данных на сервер
|
415 |
+
console.log("Отправка данных на сервер...");
|
416 |
+
const xhr = new XMLHttpRequest();
|
417 |
+
xhr.open("POST", "/calculation", true);
|
418 |
+
xhr.setRequestHeader("Content-Type", "application/json");
|
419 |
+
|
420 |
+
xhr.onreadystatechange = function() {
|
421 |
+
if (xhr.readyState === 4) {
|
422 |
+
console.log("Статус ответа:", xhr.status);
|
423 |
+
if (xhr.status === 200) {
|
424 |
+
console.log("Успешный ответ от сервера:", JSON.parse(xhr.responseText));
|
425 |
+
} else {
|
426 |
+
console.error("Ошибка сервера:", xhr.status, xhr.statusText);
|
427 |
+
console.error("Текст ошибки:", xhr.responseText);
|
428 |
+
}
|
429 |
+
}
|
430 |
+
};
|
431 |
+
|
432 |
+
xhr.onerror = function() {
|
433 |
+
console.error("Ошибка сети при отправке запроса");
|
434 |
+
};
|
435 |
|
436 |
+
xhr.send(JSON.stringify(serverData));
|
437 |
});
|
438 |
</script>
|
439 |
|