webpack-bootstrap-ui-kit/src/js_old/_components/_ui.opening-hours.js

120 lines
3.0 KiB
JavaScript

"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 =
'<b class="opening-hours-status opening-hours-status-closed">Closed today</b>';
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 += ", <br/>";
}
html += `from ${v["From"]} to ${v["Till"]}`;
}
});
html += ' <b class="opening-hours-status"></b>';
}
if (
typeof hours["holidays"] !== "undefined" &&
typeof hours["holidays"][dateYMD] !== "undefined"
) {
html = `<b class="opening-hours-status opening-hours-status-closed">Closed today${
hours["holidays"][dateYMD] ? ` for ${hours["holidays"][dateYMD]}` : ""
}</b>`;
}
this.each((i, e) => {
const $e = $(e);
$e.html(html);
});
}
static Date_toYMD(date) {
var 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;