my-homelab-configs/apps/demos-static/public/traveler-tools/traveler-tools.js

22 lines
1.4 KiB
JavaScript

function updateTraveler() {
const dateValue = document.getElementById('traveler-time').value;
const selectedZone = document.getElementById('traveler-zone').value;
const date = dateValue ? new Date(dateValue) : new Date();
const amount = Number(document.getElementById('traveler-amount').value) || 0;
const gb = Number(document.getElementById('traveler-gb').value) || 0;
const usdToMxn = 17.2;
const usdToEur = 0.92;
const gib = gb * (1000 ** 3) / (1024 ** 3);
document.getElementById('traveler-output').textContent = [
`Selected zone: ${new Intl.DateTimeFormat([], { dateStyle: 'medium', timeStyle: 'short', timeZone: selectedZone }).format(date)}`,
`UTC: ${new Intl.DateTimeFormat([], { dateStyle: 'medium', timeStyle: 'short', timeZone: 'UTC' }).format(date)}`,
`$${amount.toFixed(2)} USD ~= $${(amount * usdToMxn).toFixed(2)} MXN ~= EUR ${ (amount * usdToEur).toFixed(2)}`,
`${gb.toFixed(0)} GB ~= ${gib.toFixed(2)} GiB`,
].join('\n');
}
document.getElementById('traveler-time').value = new Date(Date.now() - new Date().getTimezoneOffset() * 60000).toISOString().slice(0, 16);
['traveler-time', 'traveler-zone', 'traveler-amount', 'traveler-gb'].forEach((id) => document.getElementById(id).addEventListener('input', updateTraveler));
if ('serviceWorker' in navigator) navigator.serviceWorker.register('sw.js').catch(() => {});
updateTraveler();