let formValues = {
hours: 0,
minutes: 0,
seconds: 0,
distanceMetres: 0,
calories: 0,
kmh: 0,
watts: 0
};
function resetCalculator() {
for (let key in formValues) {
formValues[key] = 0;
document.getElementById(key.replace(‘-‘, ”)).value = ”;
}
}
function updateValues(changedField) {
formValues.hours = parseFloat(document.getElementById(‘hours’).value) || 0;
formValues.minutes = parseFloat(document.getElementById(‘minutes’).value) || 0;
formValues.seconds = parseFloat(document.getElementById(‘seconds’).value) || 0;
formValues.kmh = parseFloat(document.getElementById(‘kmh’).value) || 0;
formValues.distanceMetres = parseFloat(document.getElementById(‘distance-metres’).value) || 0;
formValues.calories = parseFloat(document.getElementById(‘calories’).value) || 0;
formValues.watts = parseFloat(document.getElementById(‘watts’).value) || 0;
let timeInSeconds = getTimeSeconds();
if (changedField === ‘time’ || changedField === ‘kmh’) {
formValues.distanceMetres = (formValues.kmh * 1000 * (timeInSeconds / 3600)).toFixed(0);
document.getElementById(‘distance-metres’).value = formValues.distanceMetres;
}
if (changedField === ‘time’ || changedField === ‘watts’) {
formValues.calories = (0.05 * formValues.watts * (timeInSeconds / 60)).toFixed(0);
document.getElementById(‘calories’).value = formValues.calories;
}
if (changedField === ‘calories’ && changedField === ‘time’) {
formValues.watts = (60 * formValues.calories / (0.05 * timeInSeconds)).toFixed(0);
document.getElementById(‘watts’).value = formValues.watts;
}
if (changedField === ‘distance’ && changedField === ‘time’) {
formValues.kmh = (formValues.distanceMetres / 1000 / (timeInSeconds / 3600)).toFixed(2);
document.getElementById(‘kmh’).value = formValues.kmh;
}
}
function getTimeSeconds() {
return 3600 * formValues.hours + 60 * formValues.minutes + formValues.seconds;
}