app/assets/javascripts/global-modules/event_countdown.js
WebsiteOne.define('EventCountdown', function () { Function `EventCountdown` has 47 lines of code (exceeds 25 allowed). Consider refactoring. function EventCountdown() { var countdownClock, eventName, eventTime, eventDuration, eventUrl, textToAppend; var self = this; this.format = function(num) { return (0 <= num && num < 10) ? '0' + num : num.toString(); }; this.update = function() { var timeToEvent = eventTime - new Date(), timeInSeconds = Math.floor(timeToEvent / 1000), timeInMins = Math.floor(timeInSeconds / 60), timeInHours = Math.floor(timeInMins / 60); if (timeInSeconds <= 0) { if (timeInMins + eventDuration <= 0) { countdownClock.html('<a href="' + eventUrl + '">' + eventName + '</a> has ended.'); } else { countdownClock.html('<a href="' + eventUrl + '">' + eventName + '</a> is live!'); setTimeout(self.update, 1000); } } else { var tmp = '<p>'; if (timeInHours > 0) { tmp += self.format(timeInHours) + ':'; } countdownClock.html(tmp + self.format(timeInMins % 60) + ':' + self.format(timeInSeconds % 60) + textToAppend); setTimeout(self.update, 1000); } }; this.init = function() { clearTimeout(self.update); countdownClock = $('#next-event'); if (countdownClock.length > 0) { eventTime = Date.parse(countdownClock.data('event-time')); eventDuration = countdownClock.data('event-duration'); eventUrl = countdownClock.data('event-url'); eventName = countdownClock.data('event-name'); textToAppend = ' to <a href="' + eventUrl + '">' + eventName + '</a></p>'; self.update(); } else { eventName = null; eventTime = null; eventUrl = null; textToAppend = null; } } } return new EventCountdown();});