'use strict' import $ from 'jquery' import Events from '../_events' const OpeningHoursUI = (($) => { // Constants const NAME = 'OpeningHoursUI' class OpeningHoursUI { // Static methods static each (callback) { $('.js-opening-hours').each((i, e) => { callback(i, $(e)) }) } static init () { this.dispose() console.log(`${NAME}: init ...`) const hours = $.parseJSON($('.oppening-hours-json').html()) const date = new Date() const dateYMD = this.Date_toYMD(date) const weekday = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', ] const today = weekday[date.getDay()] let html = 'Closed today' if ( typeof hours.days !== 'undefined' && typeof hours.days[today] !== 'undefined' && hours.days[today].length ) { html = 'Open today ' $.each(hours.days[today], (i, v) => { if (v.DisplayStart || v.DisplayEnd) { if ( (v.DisplayStart && v.DisplayStart <= dateYMD && v.DisplayEnd && v.DisplayEnd >= dateYMD) || (v.DisplayStart && v.DisplayStart <= dateYMD && !v.DisplayEnd) || (v.DisplayEnd && v.DisplayEnd >= dateYMD && !v.DisplayStart) ) { html = `Open today from ${v.From} to ${v.Till}` return false } } else { if (i > 0) { html += ',
' } html += `from ${v.From} to ${v.Till}` } }) html += ' ' } if ( typeof hours.holidays !== 'undefined' && typeof hours.holidays[dateYMD] !== 'undefined' ) { html = `Closed today${ hours.holidays[dateYMD] ? ` for ${hours.holidays[dateYMD]}` : '' }` } this.each((i, e) => { const $e = $(e) $e.html(html) }) } static Date_toYMD (date) { let year, month, day year = String(date.getFullYear()) month = String(date.getMonth() + 1) if (month.length == 1) { month = `0${month}` } day = String(date.getDate()) if (day.length == 1) { day = `0${day}` } return `${year}-${month}-${day}` } static dispose () { console.log(`${NAME}: dispose`) this.each((i, e) => { $(e).html('') }) } } $(window).on(`${NAME}.init ${Events.AJAX} ${Events.LOADED}`, () => { OpeningHoursUI.init() }) return OpeningHoursUI })($) export default OpeningHoursUI