(function () {
const RenderPosition = {
BEFOREBEGIN: 'beforebegin',
AFTERBEGIN: 'afterbegin',
BEFOREEND: 'beforeend',
AFTEREND: 'afterend',
};
const IP_BANNER_ELEMENT_HIDDEN = 'hidden'
const HIDDEN_OVERFLOW = 'body--overflow-hidden';
const HOURS_MS = 3600000;
const renderHTML = (component, container, place = RenderPosition.BEFOREEND) => {
container.insertAdjacentHTML(place, component);
};
const ipBannerStyleTemplate = () => `
`;
const ipBannerTemplate = (data) => `
`;
const addTwoNumberToTime = (num) => {
return String(num).length === 1 ? `0${num}` : num;
}
class IpBanner {
#data = null;
#element = null;
#finishDateTime = null;
#ipBannerElement = null;
#bannerCloseButtonElement = null;
#ipBannerContentElement = null;
#ipBannerContentLitePageElement = null;
#ipBannerItemElement = null;
#finishDateElement = null;
#gcMainContentElement = null;
#idIpBannerItem = null;
#ipBannerItemImgElement = null;
#localStorage = localStorage;
constructor(litePageBlockSet) {
this.#data = litePageBlockSet.outerHTML;
this.#gcMainContentElement = document.querySelector('.gc-main-content');
}
get templateStyle() {
return ipBannerStyleTemplate();
}
get template() {
return ipBannerTemplate(this.#data);
}
get element() {
if (!this.#element) {
this.#element = this.template;
}
return this.#element;
}
init() {
renderHTML(this.templateStyle, this.#gcMainContentElement);
renderHTML(this.element, this.#gcMainContentElement);
// document.body.classList.add(HIDDEN_OVERFLOW);
this.#showOneBanner();
this.#ipBannerElement = document.querySelector('.ip-banner-full-zapret');
this.#bannerCloseButtonElement = this.#ipBannerElement.querySelector('.ip-banner-full-zapret__close');
this.#ipBannerContentElement = this.#ipBannerElement.querySelector('.ip-banner-full-zapret__content');
this.#ipBannerContentLitePageElement = this.#ipBannerContentElement.querySelector('.lite-page.block-set');
this.#ipBannerContentLitePageElement.classList.add('ip-banner-full-zapret__content-frame');
this.#ipBannerContentLitePageElement.classList.remove('lite-page');
this.#ipBannerContentLitePageElement.classList.remove('block-set');
this.#ipBannerItemElement = this.#ipBannerElement.querySelector('.ip-banner-full-zapret-item');
this.#ipBannerItemImgElement = this.#ipBannerElement.querySelectorAll('.image-box img');
if (this.#ipBannerItemElement) {
// this.#finishDateElement = this.#ipBannerItemElement.querySelector('.countdown-el');
// this.#finishDateTime = this.#finishDateElement.dataset.time;
this.#idIpBannerItem = this.#ipBannerItemElement.className.split('ip-banner-full-zapret-item-')[1];
// if (this.#finishDateElement) {
// this.#initTimer(this.#finishDateTime);
// }
} else {
this.#ipBannerElement.classList.add(IP_BANNER_ELEMENT_HIDDEN);
}
// if (this.#ipBannerItemImgElement.length) {
// for (let img of this.#ipBannerItemImgElement) {
// img.src = img.dataset.src;
// }
// }
// const currentStateIpBanner = this.#localStorage.getItem(`ipBannerFullStateId-${this.#idIpBannerItem}`);
const currentStateIpBanner = false;
console.log(`ipBannerHardStateId-${this.#idIpBannerItem}`);
if (currentStateIpBanner) {
const parse = JSON.parse(currentStateIpBanner);
const id = JSON.parse(currentStateIpBanner).id;
const count = JSON.parse(currentStateIpBanner).count;
const currentDate = moment(new Date().valueOf());
const localStorageBannerTime = moment(parse.timeCloseClick).valueOf();
const timeEndMs = HOURS_MS * 6;
if ((currentDate - localStorageBannerTime) >= timeEndMs && count < 1) {
console.log('count < 1');
} else {
document.querySelector(`.ip-banner-full-zapret-item-${id}`).classList.add(IP_BANNER_ELEMENT_HIDDEN);
const bannersList = document.querySelectorAll('.ip-banner-full-zapret-item');
if (bannersList[0].classList.contains('hidden')) {
this.#ipBannerElement.classList.add(IP_BANNER_ELEMENT_HIDDEN);
}
console.log('count > 1');
}
}
}
#initTimerLibrary(url) {
let script = document.createElement('script');
script.setAttribute('src', url);
document.body.appendChild(script);
}
#showOneBanner() {
const banners = document.querySelectorAll('.ip-banner-full-zapret-item');
if (banners.length) {
for (const banner of banners) {
banner.style = 'display: none !important';
}
banners[0].style = 'display: block !important';
}
}
#initTimer(time) {
let dateToMoment = time.split(' ');
let yearMonthDay = dateToMoment[0];
let hourMinutes = dateToMoment[1];
let endDate = moment(`${yearMonthDay}T${hourMinutes}:00Z`);
let nowDate = moment(new Date());
let eventTime = endDate.valueOf();
let currentTime = nowDate.valueOf();
let diffTime = eventTime - currentTime;
let duration = diffTime;
let interval = 1000;
let el = document.querySelector(`.ip-banner-full-zapret-item-${this.#idIpBannerItem} .countdown-el`);
setInterval(function () {
duration = moment.duration(duration - interval, 'milliseconds');
if ((duration - interval) > 0) {
el.textContent = `
${addTwoNumberToTime(duration.days())}Д : ${addTwoNumberToTime(duration.hours())}Ч : ${addTwoNumberToTime(duration.minutes())}М : ${addTwoNumberToTime(duration.seconds())}С
`;
} else {
el.textContent = `00Д : 00Ч : 00М : 00С`;
}
}, interval);
}
#initSaveToBrowser = () => {
const id = this.#idIpBannerItem;
if (id >= 1) {
const currentDate = moment(new Date());
const currentStateIpBanner = this.#localStorage.getItem(`ipBannerFullStateId-${id}`);
let count;
if (currentStateIpBanner) {
count = JSON.parse(currentStateIpBanner).count;
}
this.#localStorage.setItem(`ipBannerFullStateId-${id}`, JSON.stringify({
id: id,
count: count ? ++count : 1,
timeCloseClick: currentDate
}));
}
};
#closeButtonClickHandler = () => {
this.#ipBannerElement.classList.add(IP_BANNER_ELEMENT_HIDDEN);
this.#initSaveToBrowser();
document.removeEventListener('keydown', this.#escClickHandler);
};
#ipBannerElementClickHandler = (evt) => {
if (evt.target.classList.contains('ip-banner-full-zapret')) {
this.#ipBannerElement.classList.add(IP_BANNER_ELEMENT_HIDDEN);
this.#initSaveToBrowser();
document.removeEventListener('keydown', this.#escClickHandler);
}
};
#escClickHandler = (evt) => {
if (evt.key === 'Escape') {
this.#ipBannerElement.classList.add(IP_BANNER_ELEMENT_HIDDEN);
this.#initSaveToBrowser();
document.removeEventListener('keydown', this.#escClickHandler);
}
};
}
const checkLKGC = () => {
const trueAccessPath = [
'/teach/control/stream',
'/teach/control/stream/view',
'/teach/control/stream/view',
'/teach/control/lesson/view',
'/pl/teach/control/lesson',
'/sales/control',
'/profile',
'/src-main',
'/src-library/cases',
'/cst-banner-manipulator',
];
const path = location.pathname;
return trueAccessPath.some((item) => {
return path.indexOf(item) !== -1;
});
}
const isCheckLKGC = checkLKGC();
const isDeleteBanner = localStorage.getItem('DeleteCSTBanner')
fetch(`/cst-banner-full-zapret`).then((response) => response.text()).then((html) => {
let parser = new DOMParser();
let bannersDocument = parser.parseFromString(html, "text/html");
let litePageBlockSet = bannersDocument.querySelector('.lite-page.block-set');
return litePageBlockSet;
}).then((litePageBlockSet) => {
if (isCheckLKGC && !isDeleteBanner) {
const ipBanner = new IpBanner(litePageBlockSet);
ipBanner.init();
}
}).catch((err) => console.log('Failed to fetch page: ', err));
})();