let favoriteArray = localStorage.getItem('favorite') ? JSON.parse(localStorage.getItem('favorite')) : []; let sJson = []; let sJson21 = []; let counter = 3; superuser = document.querySelector("#super-user-set").value||""; console.log("superuser:", superuser); function getAlreadyRegisteredCount(sessionId) { for (let e in sJson21) { if (sJson21[e].sessionid == sessionId) { return sJson21[e].totalredistered; } } return 0; } function getSuperuser() { if (superuser == 1) return 1; return 0; } function addPreloader() { if (!document.querySelector('#preloader')) { const preloader = document.createElement("div"); preloader.id = "cover-spin"; document.querySelector('#inscrit').append(preloader); } } function removePreloader() { let preloader = document.querySelector('#cover-spin'); if (preloader) { preloader.remove(); } } function addToWL(id) { let xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { window.location.href = "/site/portal/lms/waiting_list" } }; xhttp.open("GET", "/entity/instance/add_to_waiting_list/view.html?entityInstanceId=" + id + "&add_to_waiting_list=true", true); xhttp.send(); } function isPurchased(sessionId) { for (let e in sJson) { if (sJson[e].session == sessionId) { return true; // return sJson[e].purchased == 'Yes'; } } return false; } function showBtnPurchased(btn) { btn.innerText = "Session purchased"; btn.style.background = "rgb(204 202 204)"; btn.addEventListener('click', e => {e.preventDefault()}); } function showBtnCompleted(btn) { btn.innerText = "Full session"; btn.style.background = "rgb(204 202 204)"; btn.addEventListener('click', e => {e.preventDefault()}); return btn } function showBtnApprove(btn, sid) { btn.innerText = "Add to waiting list"; btn.style.background = "#ccc"; btn.addEventListener('click', e => { e.preventDefault(); addToWL(sid); }); } function showBtnBuy(btn, approve, pid) { btn.innerHTML = " Add to Cart "; btn.removeAttribute("style"); addToShoppingCartEvent = function(event) { event.preventDefault(); if (approve === "No") { /*let programid = btn.dataset.programid; if(programid.length > 0){ location.href = '/site/portal/lms/catalogue?entityRosterId=4&entityInstanceForm.term=Module&entityInstanceForm.instanceFilter.v[592856]=' +programid; }else{*/ addToShoppingCart2(pid, 1, 'false'); /* }*/ } else { addToWL(pid); } } btn.addEventListener('click', addToShoppingCartEvent); } function placeData() { document.querySelectorAll('[role="item-session"]').forEach((item) => { let btnBuy = item.querySelector(".btn2"); let btnBuyRel = btnBuy.getAttribute('rel') if (btnBuyRel != 'program:' && false){ console.log('rel2:' + btnBuy.getAttribute('rel')) // btnBuy.style.display = 'none'; }else{ btnBuy.style.display = 'block'; let sessionId = item.dataset.sessionid; let startDateField = item.dataset.startdate; let approve = item.dataset.approve; let pid = item.dataset.pid; let countOfReg = getAlreadyRegisteredCount(sessionId); let maxReg = item.dataset.maxreg; let waitlist = 'No'; //item.dataset.waitlist; document.querySelector("#maximum_registrants_container_" + sessionId).innerHTML = countOfReg + "/"; if (maxReg == "" || maxReg == 0) { document.querySelector("#maximum_registrants_container_" + sessionId).innerHTML = "S/O"; } if (startDateField == "") { document.querySelector("#start_date_field_" + sessionId).textContent = "S/O"; } var countReg = {}; countReg.countOfReg = new Object(countOfReg); countReg.maxReg = new Object(maxReg); countReg.expression = new Object(countOfReg < maxReg || maxReg.length == 0); countReg.maxRegLength = new Object(maxReg.length); countReg.expression2 = new Object(countOfReg < maxReg); if(btnBuy){ console.log('sessionId:' + sessionId + 'superuser', superuser + ' maxReg: ' + maxReg + ' countOfReg: ' + countOfReg + ' isPurchased(sessionId): ' + isPurchased(sessionId)); console.log('superuser', superuser); if (superuser == "1") { console.log('parseInt(maxReg)', parseInt(maxReg)); if (!isNaN(parseInt(maxReg))) { // есть ограничение console.log('parseInt(maxReg) really != Nan'); console.log('parseInt(countOfReg) < parseInt(maxReg)', parseInt(countOfReg) < parseInt(maxReg)); if (parseInt(countOfReg) < parseInt(maxReg)){ // нет овербукинга console.log('approve', approve); if (approve !== "No" && waitlist !== "Yes") { // принудительный аппрув console.log("approve Yes and waitlist No"); console.log('isPurchased(sessionId)', isPurchased(sessionId)); showBtnApprove(btnBuy, sessionId) } else if (approve !== "No" && waitlist == "Yes") { console.log("approve Yes and waitlist Yes"); console.log('isPurchased(sessionId)', isPurchased(sessionId)); showBtnBuy(btnBuy, approve, pid); } else { console.log("approve No, waitlist ANY"); showBtnBuy(btnBuy, approve, pid); } } else { // овербукинг if (approve !== "No" && waitlist !== "Yes") { // принудительный аппрув console.log("approve Yes and waitlist No"); console.log('isPurchased(sessionId)', isPurchased(sessionId)); showBtnApprove(btnBuy, sessionId) } else if (approve !== "No" && waitlist == "Yes") { console.log("approve Yes and waitlist Yes"); showBtnApprove(btnBuy, sessionId) } else { console.log("approve No, waitlist ANY"); showBtnCompleted(btnBuy); } } } else { console.log('parseInt(maxReg) really is Nan'); if (approve !== "No") { console.log("approve Yes and waitlist No"); showBtnApprove(btnBuy, sessionId) } else { console.log('isPurchased(sessionId)', isPurchased(sessionId)); showBtnBuy(btnBuy, approve, pid); } } } else { if((parseInt(maxReg) != "NaN" && parseInt(countOfReg) < parseInt(maxReg)) || maxReg.length == 0){ // console.log('sJson:', sJson) // console.log('sessionId:', sessionId) if (isPurchased(sessionId)) { console.log("purchased"); showBtnPurchased(btnBuy); } else { // console.log("not purchased, needs approve?"); if (approve !== "No") { // console.log("approve Yes"); showBtnApprove(btnBuy, sessionId) } else { //console.log("approve No"); showBtnBuy(btnBuy, approve, pid); } } countReg.res = new Object("not BtnCompleted"); }else{ showBtnCompleted(btnBuy); countReg.res = new Object("showBtnCompleted"); } } } console.table(countReg) let moduleIds = item.dataset.moduleids; item.querySelector("a[role=\"button\"]").addEventListener("click",e=>{ let addedModules = ""; /*added Webinars*/ let xmlhttpSessionsRoster11 = new XMLHttpRequest(); xmlhttpSessionsRoster11.overrideMimeType('text/xml'); xmlhttpSessionsRoster11.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let webinarsHtmlList = new DOMParser().parseFromString(this.responseText, 'text/html'); webinarsHtmlList.querySelectorAll("[data-roster-column]").forEach((el) => { addedModules += el.innerHTML; }) /*added Live Events*/ let xmlhttpSessionsRoster12 = new XMLHttpRequest(); xmlhttpSessionsRoster12.overrideMimeType('text/xml'); xmlhttpSessionsRoster12.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let liveEventsHtmlList = new DOMParser().parseFromString(this.responseText, 'text/html'); liveEventsHtmlList.querySelectorAll("[data-roster-column]").forEach((el) => { addedModules += el.innerHTML; }) console.log(addedModules) if(addedModules.length > 0){ $(e.target).popover({ content: addedModules, trigger: 'click' }).popover('toggle'); } } } xmlhttpSessionsRoster12.open("GET", "/entity/roster/entityRosterView.html?course=view&entityRosterId=15&no_header=true&entityInstanceForm.entityInstanceIds=" + moduleIds, true); xmlhttpSessionsRoster12.send(); } } xmlhttpSessionsRoster11.open("GET", "/entity/roster/entityRosterView.html?course=view&entityRosterId=24&no_header=true&entityInstanceForm.entityInstanceIds=" + moduleIds, true); xmlhttpSessionsRoster11.send(); e.stopImmediatePropagation(); }) } }); } function arrayRemove(arr, value) { return arr.filter(function (ele) { return ele != value; }); } window.addEventListener('DOMContentLoaded', (event) => { addPreloader(); let scriptBox = document.querySelector("#course-detail"); let ENTITY_INSTANCE_ID = scriptBox.dataset.entity; console.log("ENTITY_INSTANCE_ID = "+ENTITY_INSTANCE_ID) let xmlhttpSessionsClientData = new XMLHttpRequest(); xmlhttpSessionsClientData.overrideMimeType('text/xml'); xmlhttpSessionsClientData.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let sessionsHtmlList = new DOMParser().parseFromString(this.responseText, 'text/html'); sessionsHtmlList.querySelectorAll("body div[role='sdata']").forEach(el => { sJson.push(JSON.parse(el.textContent)); }) counter--; console.log('counter', counter) if (counter == 0) { placeData(); } } } xmlhttpSessionsClientData.open("GET", "/client/relation_roster/clientRelationRosterView.html?no_header=true&clientRelationRosterId=226", true); xmlhttpSessionsClientData.send(); let xmlhttpSessionsHardSessionData = new XMLHttpRequest(); xmlhttpSessionsHardSessionData.overrideMimeType('text/xml'); xmlhttpSessionsHardSessionData.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let sessionsHtmlList = new DOMParser().parseFromString(this.responseText, 'text/html'); console.log('sessionsHtmlList', sessionsHtmlList); sessionsHtmlList.querySelectorAll("body div[role='sdata']").forEach(el => { sJson21.push({"sessionid": el.dataset.sessionid, "totalredistered": el.dataset.totalredistered}); }) counter--; console.log('counter', counter) if (counter == 0) { placeData(); } } } xmlhttpSessionsHardSessionData.open("GET", "/entity/roster/entityRosterView.html?entityRosterId=13&entityInstanceForm.parentEntityInstanceId=" + ENTITY_INSTANCE_ID + "&no_header=true", true); xmlhttpSessionsHardSessionData.send(); /*Sessions Roster List*/ let xmlhttpSessionsRoster = new XMLHttpRequest(); xmlhttpSessionsRoster.overrideMimeType('text/xml'); xmlhttpSessionsRoster.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { removePreloader(); let sessionsHtmlList = new DOMParser().parseFromString(this.responseText, 'text/html'); let sessionsRoster = document.querySelector('[role="sessionsRoster"]'); console.log(sessionsRoster) sessionsHtmlList.querySelectorAll('body div[role="item-session"]').forEach(function (el, index) { sessionsRoster.append(el); }) counter--; console.log('counter', counter) if (counter == 0) { placeData(); } } } xmlhttpSessionsRoster.open("GET", "/entity/roster/entityRosterView.html?entityRosterId=14&entityInstanceForm.parentEntityInstanceId=" + ENTITY_INSTANCE_ID + "&no_header=true", true); xmlhttpSessionsRoster.send(); /*program*/ let xmlhttp2 = new XMLHttpRequest(); xmlhttp2.overrideMimeType('text/xml'); xmlhttp2.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let tabsTitleHtmlList = new DOMParser().parseFromString(this.responseText, 'text/html'); let tabsTitleWrap = document.querySelector('#accordion'); let cnt = 0; tabsTitleHtmlList.querySelectorAll('body div.panel.panel-default').forEach(function (el, index) { tabsTitleWrap.append(el); cnt++ }) $('a[data-toggle="tab"]').on('shown.bs.tab', function () { if (cnt === 1) { $('#accordion > div > div.panel-collapse.collapse').addClass('in'); } }).first().trigger('shown.bs.tab'); } } xmlhttp2.open("GET", "/entity/course_program/program-content/body.html?entityInstanceId=" + ENTITY_INSTANCE_ID + "&orderByComp=Display%20Order:asc", true); xmlhttp2.send(); /*traner*/ let xmlhttp = new XMLHttpRequest(); xmlhttp.overrideMimeType('text/xml'); xmlhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let status = false; let smallThumbsHtmlList = new DOMParser().parseFromString(this.responseText, 'text/html'); let smallThumbsWrap = document.querySelector('[role="small-thumbs"]'); if (smallThumbsHtmlList.querySelectorAll('body ul li').length > 1) { smallThumbsHtmlList.querySelectorAll('body ul li').forEach(function (el, index) { if (el.hasChildNodes()) { status = true; smallThumbsWrap.append(el); } }) }else{ let sp = document.createElement("span"); smallThumbsWrap.append(sp); } let xmlhttp1 = new XMLHttpRequest(); xmlhttp1.overrideMimeType('text/xml'); xmlhttp1.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let expertsContentHtmlList = new DOMParser().parseFromString(this.responseText, 'text/html'); let expertsContentWrap = document.querySelector('[role="experts-content"]'); expertsContentHtmlList.querySelectorAll('body ul li[role="experts-content"]').forEach(function (el, index) { if (el.hasChildNodes()) { expertsContentWrap.append(el); } }) $('a[data-toggle="tab"]').on('shown.bs.tab', function () { let slick = $($(this).attr('href')).find('.slickslide'); slick.slick({ dots: status, arrows: false, slide: 'li', slidesToShow: 1, responsive: [{ breakpoint: 800, settings: { arrows: false, centerMode: false, centerPadding: '40px', variableWidth: false, slidesToShow: 1, dots: status }, breakpoint: 1200, settings: { arrows: false, centerMode: false, centerPadding: '40px', variableWidth: false, slidesToShow: 1, dots: status } }], customPaging: function (slider, i) { if (!!status) { return ''; } else { return false; } } }) }).first().trigger('shown.bs.tab'); } } xmlhttp1.open("GET", "/entity/trainer/experts-content/body.html?entityInstanceId=" + ENTITY_INSTANCE_ID + "&orderByComp=Display%20Order:asc", true); xmlhttp1.send(); } } xmlhttp.open("GET", "/entity/trainer/small-thumbs/body.html?entityInstanceId=" + ENTITY_INSTANCE_ID + "&orderByComp=Display%20Order:asc", true); xmlhttp.send(); /*add favorite course */ const favoriteLink = document.querySelector(".product-details-heart a.h"); if (favoriteLink) { let id = favoriteLink.dataset.value; if (id > 0) { if (favoriteArray.includes(id)) { favoriteLink.classList.add("active"); } favoriteLink.addEventListener('click', event => { event.preventDefault() let favorite = localStorage.getItem('favorite') ? JSON.parse(localStorage.getItem('favorite')) : []; if (!favorite.includes(id)) { favoriteArray.push(id); localStorage.setItem('favorite', JSON.stringify(favoriteArray)); favoriteLink.classList.add("active"); } else { let result = arrayRemove(favoriteArray, id); localStorage.setItem('favorite', JSON.stringify(result)); favoriteLink.classList.remove("active"); } }) } } console.log(sJson) })