checkpoint

This commit is contained in:
Vasily Davydov
2026-09-21 14:39:14 +03:00
parent 514e443fc2
commit 17c01cd79a
6 changed files with 226 additions and 268 deletions

98
fuel-calc.js Normal file
View File

@@ -0,0 +1,98 @@
let currentLang = 'ru';
function updateLanguage() {
const language = langData[currentLang];
document.getElementById("header").textContent = language.header;
document.getElementById("dTaxLabel").textContent = language.dTaxLabel;
document.getElementById("dPriceLabel").textContent = language.dPriceLabel;
document.getElementById("dConsLabel").textContent = language.dConsLabel;
document.getElementById("pTaxLabel").textContent = language.pTaxLabel;
document.getElementById("pPriceLabel").textContent = language.pPriceLabel;
document.getElementById("pConsLabel").textContent = language.pConsLabel;
document.getElementById("annualKmLabel").textContent = language.annualKmLabel;
document.getElementById("resultText1").textContent = language.resultText1;
document.getElementById("resultText2").textContent = language.resultText2;
document.getElementById("resultText3").textContent = language.resultText3;
document.getElementById("resultText4").textContent = language.resultText4;
document.getElementById("tableDistance").textContent = language.tableDistance;
document.getElementById("tableDieselTotal").textContent = language.tableDieselTotal;
document.getElementById("tablePetrolTotal").textContent = language.tablePetrolTotal;
document.getElementById("tableDifference").textContent = language.tableDifference;
calculate();
}
document.querySelector('#language-toggle').addEventListener('click', () => {
currentLang = (currentLang === 'en') ? 'ru' : 'en';
updateLanguage();
});
document.querySelector('#dark-mode-toggle').addEventListener('click', () => {
document.body.classList.toggle('dark-mode');
});
function calculate() {
const dTax = parseFloat(document.getElementById("dTax").value);
const dPrice = parseFloat(document.getElementById("dPrice").value);
const dCons = parseFloat(document.getElementById("dCons").value);
const pTax = parseFloat(document.getElementById("pTax").value);
const pPrice = parseFloat(document.getElementById("pPrice").value);
const pCons = parseFloat(document.getElementById("pCons").value);
const annualKm = parseFloat(document.getElementById("annualKm").value);
const dieselCostPerKm = (dPrice * dCons) / 100;
const petrolCostPerKm = (pPrice * pCons) / 100;
const dieselAnnualCost = (dTax + (dieselCostPerKm * annualKm));
const petrolAnnualCost = (pTax + (petrolCostPerKm * annualKm));
const diff = Math.abs(dieselAnnualCost - petrolAnnualCost);
let breakEvenCons = 0;
if (dCons < pCons || dTax > pTax) {
breakEvenCons = (pCons - ((dTax - pTax) / (annualKm * (pPrice - dPrice))));
if (breakEvenCons <= 0) breakEvenCons = 0;
}
let minDieselPrice = 0;
if (dPrice < pPrice || dTax > pTax) {
minDieselPrice = (pPrice - ((dTax - pTax) / (annualKm * (pCons - dCons))));
if (minDieselPrice <= 0) minDieselPrice = 0;
}
document.getElementById("displayKm").textContent = annualKm.toLocaleString();
document.getElementById("breakEvenCons").textContent = breakEvenCons.toFixed(2);
document.getElementById("minDieselPrice").textContent = minDieselPrice.toFixed(2);
const tbody = document.getElementById("comparisonTable").getElementsByTagName('tbody')[0];
tbody.innerHTML = '';
for (let i = 10000; i <= 50000; i += 5000) {
const row = tbody.insertRow();
const cell1 = row.insertCell(0);
const cell2 = row.insertCell(1);
const cell3 = row.insertCell(2);
const cell4 = row.insertCell(3);
const dCost = (dTax + ((dPrice * dCons) / 100 * i)).toFixed(2);
const pCost = (pTax + ((pPrice * pCons) / 100 * i)).toFixed(2);
const diffCost = (parseFloat(pCost) - parseFloat(dCost)).toFixed(2);
cell1.innerHTML = "<strong>" + i.toLocaleString() + "</strong>";
cell2.innerHTML = dCost + " €";
cell3.innerHTML = pCost + " €";
cell4.innerHTML = diffCost + " €";
if (diffCost > 0) {
cell4.className = "saving";
} else {
cell4.className = "loss";
}
}
}
calculate();
updateLanguage();