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)
})