/**
* Предварительный расчёт авиадоставки Алматы → Москва (только страница услуги, RU).
*/
import {
MAX_KG,
USD_PER_PLACE,
RESULT_KIND,
computeAirFreightEstimate,
} from './air-freight-estimate-core.mjs';
const MSG = {
over:
'Одно или несколько мест тяжелее 23 кг — автоматический расчёт по тарифу 300 USD/место недоступен. Свяжитесь с менеджером для согласования.',
incomplete: 'Укажите вес каждого места.',
ok: (places, total) =>
`Предварительно: ${places} мест × ${USD_PER_PLACE} USD = ${total} USD. Окончательную стоимость и условия подтверждает менеджер.`,
};
const root = document.getElementById('air-freight-estimate');
if (root) {
const placesInput = root.querySelector('#air-places');
const weightsWrap = root.querySelector('#air-weights');
const resultEl = root.querySelector('#air-estimate-result');
const warnEl = root.querySelector('#air-estimate-warn');
function renderWeightFields(count) {
const n = Math.max(1, Math.min(50, Number(count) || 1));
const rows = [];
for (let i = 0; i < n; i++) {
rows.push(
`
`
);
}
weightsWrap.innerHTML = rows.join('');
}
function calc() {
const inputs = weightsWrap.querySelectorAll('.air-weight-input');
const rawValues = [...inputs].map((input) => input.value);
const result = computeAirFreightEstimate(rawValues);
warnEl.hidden = result.kind !== RESULT_KIND.OVER;
if (result.kind === RESULT_KIND.OVER) {
resultEl.textContent = MSG.over;
resultEl.classList.add('v2-air-estimate__result--warn');
return;
}
if (result.kind === RESULT_KIND.INCOMPLETE) {
resultEl.textContent = MSG.incomplete;
resultEl.classList.remove('v2-air-estimate__result--warn');
return;
}
resultEl.classList.remove('v2-air-estimate__result--warn');
resultEl.textContent = MSG.ok(result.places, result.totalUsd);
}
placesInput.addEventListener('change', () => {
renderWeightFields(placesInput.value);
calc();
});
placesInput.addEventListener('input', () => {
renderWeightFields(placesInput.value);
calc();
});
root.addEventListener('input', (e) => {
if (e.target.classList.contains('air-weight-input')) calc();
});
renderWeightFields(placesInput.value || 1);
calc();
}