* init * remove from asset pipeline and add tests * add utc date conversion test * try removing last tests * add some more tests * add tests for more coverage * add yet more tests * separate descibe statments * add dt test back * more test cleanup * include pack js files * add jest back * Include /packs/ in code coverage metric * derp * revert jest * reformat some of the test accordingly * try e2e * fix cypress test --------- Co-authored-by: Mac Siri <mac@forem.com> Co-authored-by: Mac Siri <krairit.siri@gmail.com>
75 lines
1.7 KiB
JavaScript
75 lines
1.7 KiB
JavaScript
function formatDateTime(options, value) {
|
|
return new Intl.DateTimeFormat('en-US', options).format(value);
|
|
}
|
|
|
|
function convertUtcTime(utcTime) {
|
|
const time = new Date(Number(utcTime));
|
|
const options = {
|
|
hour: 'numeric',
|
|
minute: 'numeric',
|
|
timeZoneName: 'short',
|
|
};
|
|
return formatDateTime(options, time);
|
|
}
|
|
|
|
function convertUtcDate(utcDate) {
|
|
const date = new Date(Number(utcDate));
|
|
const options = {
|
|
month: 'short',
|
|
day: 'numeric',
|
|
};
|
|
return formatDateTime(options, date);
|
|
}
|
|
|
|
function convertCalEvent(utc) {
|
|
const date = new Date(Number(utc));
|
|
const options = {
|
|
weekday: 'long',
|
|
month: 'long',
|
|
day: 'numeric',
|
|
hour: 'numeric',
|
|
minute: 'numeric',
|
|
};
|
|
|
|
return formatDateTime(options, date);
|
|
}
|
|
|
|
function updateLocalDateTime(elements, convertCallback, getUtcDateTime) {
|
|
let local;
|
|
for (let 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() {
|
|
const utcTime = document.getElementsByClassName('utc-time');
|
|
const utcDate = document.getElementsByClassName('utc-date');
|
|
const 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);
|
|
}
|
|
|
|
export {
|
|
initializeTimeFixer,
|
|
updateLocalDateTime,
|
|
convertUtcDate,
|
|
convertUtcTime,
|
|
formatDateTime,
|
|
convertCalEvent,
|
|
};
|