diff --git a/fuel-calc.js b/fuel-calc.js index bb8c610..58eb885 100644 --- a/fuel-calc.js +++ b/fuel-calc.js @@ -5,6 +5,7 @@ function updateLanguage() { const language = langData[currentLang]; document.getElementById("header").textContent = language.header; + document.getElementById("description").textContent = language.description; document.getElementById("dTaxLabel").textContent = language.dTaxLabel; document.getElementById("dPriceLabel").textContent = language.dPriceLabel; document.getElementById("dConsLabel").textContent = language.dConsLabel; @@ -43,34 +44,35 @@ function calculate() { 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; - } + + // 1. Calculate Break-Even Petrol Consumption + // Formula: P_Cons = (100 * (dTax - pTax) / (annualKm * pPrice)) + (dCons * dPrice / pPrice) + const taxDiff = dTax - pTax; + const breakEven = (100 * taxDiff / (annualKm * pPrice)) + (dCons * dPrice / pPrice); + + // 2. Generate Table + // 2. Calculate Minimum Diesel Price where user's pCons equals break-even consumption + // We want to solve for dPrice such that: pCons = (100 * taxDiff / (annualKm * pPrice)) + (dCons * dPrice / pPrice) + // Rearranging for dPrice: + // pCons - (100 * taxDiff / (annualKm * pPrice)) = (dCons * dPrice / pPrice) + // dPrice = (pCons - (100 * taxDiff / (annualKm * pPrice))) * pPrice / dCons + let minDieselPrice = 0; - if (dPrice < pPrice || dTax > pTax) { - minDieselPrice = (pPrice - ((dTax - pTax) / (annualKm * (pCons - dCons)))); - if (minDieselPrice <= 0) minDieselPrice = 0; + if (dCons > 0 && annualKm > 0 && pPrice > 0) { + const firstTerm = 100 * taxDiff / (annualKm * pPrice); + const secondTerm = pCons - firstTerm; + minDieselPrice = secondTerm * pPrice / dCons; } - + document.getElementById("displayKm").textContent = annualKm.toLocaleString(); - document.getElementById("breakEvenCons").textContent = breakEvenCons.toFixed(2); + document.getElementById("breakEvenCons").textContent = breakEven.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) { + for (let i = 5000; i <= 50000; i += 5000) { const row = tbody.insertRow(); const cell1 = row.insertCell(0); const cell2 = row.insertCell(1); diff --git a/index.html b/index.html index 272c20c..2546ae1 100644 --- a/index.html +++ b/index.html @@ -23,6 +23,9 @@ +
+ +
diff --git a/languages.js b/languages.js index 48d2814..447b493 100644 --- a/languages.js +++ b/languages.js @@ -1,6 +1,7 @@ const langData = { en: { header: "Car Cost Comparison", + description: "This calculator was created to provide a simple way to estimate and compare vehicle running costs. It uses a straightforward formula to combine well-known values and present the results at a high level, helping illustrate how current fuel prices, taxes, and consumption affect the overall cost of owning a diesel car.", dTaxLabel: "Diesel Annual Tax (€)", dPriceLabel: "Diesel Price per Liter (€)", dConsLabel: "Diesel Consumption (L/100km)", @@ -20,16 +21,17 @@ const langData = { ru: { header: "Сравнение затрат на автомобили", - dTaxLabel: "Годовая плата за дизель (€)", + description: "Этот калькулятор создан для простого расчёта и сравнения эксплуатационных расходов автомобиля. Он использует несложную формулу, объединяющую известные показатели, чтобы представить результаты в общих чертах и показать, как текущие цены на топливо, налоги и расход влияют на общую стоимость владения дизельным автомобилем.", + dTaxLabel: "Годовой налог на дизель (€)", dPriceLabel: "Цена дизеля за литр (€)", dConsLabel: "Расход дизеля (л/100 км)", - pTaxLabel: "Годовая плата за бензин (€)", + pTaxLabel: "Годовой налог на бензин (€)", pPriceLabel: "Цена бензина за литр (€)", pConsLabel: "Расход бензина (л/100 км)", annualKmLabel: "Ваш ежегодный пробег (км)", resultText1: "Чтобы компенсировать разницу в налогах при ", resultText2: " км в год, расход бензинового автомобиля должен быть не менее ", - resultText3: " л/100 км, либо цена дизеля должна быть не менее ", + resultText3: " л/100 км, либо цена дизеля должна быть не более ", resultText4: " €/л.", tableDistance: "Ежегодная дистанция", tableDieselTotal: "Общие затраты на дизель", diff --git a/style.css b/style.css index ae071d6..42239ae 100644 --- a/style.css +++ b/style.css @@ -119,6 +119,10 @@ th { flex-direction: column-reverse; } +.description { + margin-bottom: 20px +} + .button-toggle { top: 20px; cursor: pointer;