diff --git a/app/assets/javascripts/initializers/initializeTimeFixer.js b/app/assets/javascripts/initializers/initializeTimeFixer.js index b008364a1..487f44218 100644 --- a/app/assets/javascripts/initializers/initializeTimeFixer.js +++ b/app/assets/javascripts/initializers/initializeTimeFixer.js @@ -1,3 +1,50 @@ +'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'); @@ -7,65 +54,15 @@ function initializeTimeFixer() { return; } - function convertUtcTime(utcTime) { - var time = new Date(utcTime); - var options = { - hour: 'numeric', - minute: 'numeric', - timeZoneName: 'short' - }; - time = new Intl.DateTimeFormat('en-US', options).format(time); - return time; - } - - function updateLocalTime(times) { - var localTime; - for (var i = 0; i < times.length; i++) { - localTime = convertUtcTime(times[i].dataset.datetime); - times[i].innerHTML = localTime; - } - } - - function convertUtcDate(utcDate) { - var date = new Date(utcDate); - var options = { - month: 'short', - day: 'numeric', - }; - date = new Intl.DateTimeFormat('en-US', options).format(date); - return date; - } - - function updateLocalDate(dates) { - var localDate; - for (var i = 0; i < dates.length; i++) { - localDate = convertUtcDate(dates[i].dataset.datetime); - dates[i].innerHTML = localDate; - } - } - - function convertCalEvent(utc) { - var date = new Date(utc); - var options = { - weekday: 'long', - month: 'long', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - }; - date = new Intl.DateTimeFormat('en-US', options).format(date); - return date; - } - - function updateCalendarTime(utcTimes) { - var calTime; - for (var i = 0; i < utcTimes.length; i++) { - calTime = convertCalEvent(utcTimes[i].innerHTML); - utcTimes[i].innerHTML = calTime; - } - } - - updateLocalTime(utcTime); - updateLocalDate(utcDate); - updateCalendarTime(utc); + updateLocalDateTime( + utcTime, + convertUtcTime, + element => element.dataset.datetime, + ); + updateLocalDateTime( + utcDate, + convertUtcDate, + element => element.dataset.datetime, + ); + updateLocalDateTime(utc, convertCalEvent, element => element.innerHTML); } diff --git a/app/views/events/_event.html.erb b/app/views/events/_event.html.erb index 05ecac9af..a121f2321 100644 --- a/app/views/events/_event.html.erb +++ b/app/views/events/_event.html.erb @@ -56,7 +56,7 @@