(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) => `
${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)); })();