docbrown/app/assets/javascripts/initializers/initializeTimeFixer.js

68 lines
1.5 KiB
JavaScript

'use strict';
function formatDateTime(options, value) {
return new Intl.DateTimeFormat('en-US', options).format(value);
}
function convertUtcTime(utcTime) {
var time = new Date(utcTime);
var options = {
hour: 'numeric',
minute: 'numeric',
timeZoneName: 'short',
};
return formatDateTime(options, time);
}
function convertUtcDate(utcDate) {
var date = new Date(utcDate);
var options = {
month: 'short',
day: 'numeric',
};
return formatDateTime(options, date);
}
function convertCalEvent(utc) {
var date = new Date(utc);
var options = {
weekday: 'long',
month: 'long',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
};
return formatDateTime(options, date);
}
function updateLocalDateTime(elements, convertCallback, getUtcDateTime) {
var local;
for (var i = 0; i < elements.length; i += 1) {
local = convertCallback(getUtcDateTime(elements[i]));
// eslint-disable-next-line no-param-reassign
elements[i].innerHTML = local;
}
}
function initializeTimeFixer() {
var utcTime = document.getElementsByClassName('utc-time');
var utcDate = document.getElementsByClassName('utc-date');
var utc = document.getElementsByClassName('utc');
if (!utc) {
return;
}
updateLocalDateTime(
utcTime,
convertUtcTime,
(element) => element.dataset.datetime,
);
updateLocalDateTime(
utcDate,
convertUtcDate,
(element) => element.dataset.datetime,
);
updateLocalDateTime(utc, convertCalEvent, (element) => element.innerHTML);
}