function startDetails() { // http://127.0.0.1:5502/productdetails.html?productId=106633230000024 if (window.location.search.split("=")[0] == "") { window.location.href = "/notfound.html"; return; } let productId = window.location.hash.split("#")[1].split("=")[1]; let itemtagscombinationRes = null; let labels = {}; let isThereInLabel = {}; let currentComb = null; let colorId = null; let group = {}; let loadingActions = { addLoader() { $(".loadingCall").removeClass("d-none"); $(".mainContanierProduct").addClass("d-none"); }, removeLoader() { $(".loadingCall").addClass("d-none"); $(".mainContanierProduct").removeClass("d-none"); }, }; let currentClick = null; if (productId) { swapSectionsVideo(); loadingActions.addLoader(); updateProductId(productId); getProductDetails(productId); appendSpecs(productId); } else { window.location.href = "/notfound.html"; } function updateProductId(val) { $("#productidtag").val(val); } function updateItemId(val) { $("#itemidtag").val(val); } let specification_wrap_action = { remove() { $(".specification-wrap").addClass("d-none"); }, add() { $(".specification-wrap").removeClass("d-none"); }, }; let description_action = { addVal(value) { $(".description-wrap > p").html(value); }, removeVal(value) { $(".description-wrap > p").html(""); }, }; function getSpecsItemHTML({ name, des, itemid, id }) { return `
${name}
${des}
`; } // function getSpecsItemHTML({name,des,itemid,id}){ // return ` // ${name} // ${des} // `; // } async function appendSpecs(id) { let resData = await API_SERVICES_ACTIONS.getAPIService( `apis/v4/bizgaze/integrations/products/itemspecifications/itemid/${id}`, true ); if (resData.isError) { $(".productdetailstabs").addClass("d-none"); // $('.specContainerleft').html('') $(".specContainerRight").html(""); $(".specContainerleft").find("#faqAccordion").html(""); return; } $(".productdetailstabs ").removeClass("d-none"); const res = resData.response; const data = JSON.parse(res.result); let html = ""; let leftHtml = ""; let rightHtml = ""; if (data.length == 0) { $(".productdetailstabs ").addClass("d-none"); $(".specContainerleft").find("#faqAccordion").html(""); $(".specContainerRight").html(""); return; } // for (let i = 0; i < data.length; i++) { // const { specificationname, specificationitemid, itemid, description } = data[i]; // if ((i + 1) % 2 == 0) { // rightHtml += getSpecsItemHTML({ // name: specificationname, id: specificationitemid, itemid, des: description // }) // } else { // leftHtml += getSpecsItemHTML({ // name: specificationname, id: specificationitemid, itemid, des: description // }); // } // } // $('.specContainerleft').html(leftHtml) // $('.specContainerRight').html(rightHtml) let fullHtml = ""; for (let i = 0; i < data.length; i++) { // const { specificationname, specificationitemid, itemid, description } = data[i]; const { "Specification Name": specificationname, itemid: itemid, specificationitemid: specificationitemid, Description: description, } = data[i]; fullHtml += getSpecAccordionHTML( `acc_specs_${specificationitemid}`, specificationname, description, specificationitemid, itemid ); } $(".specContainerleft").find("#faqAccordion").html(fullHtml); } function getSpecAccordionHTML(id, name, body, itemid, mainid) { let lis = '"; } else { lis = body; } if ($(window).width() <= 768) { return `

${lis}
`; } else { return `

`; } return `

`; } function getParentHTML(name, productid, id, isMain) { return ``; } function onClickHandler(e) { $(e).parent().find(".borderselector").removeClass("borderselector"); $(e).addClass("borderselector"); } function getChildHTML(tagid, name, isTrue, parentid) { let blue = "#253746"; let greenLight = "#5e7975"; let brown = "#624839"; let bgColor = ""; if (name === "Deep Sea Blue") { bgColor = blue; } else if (name == "Desert Brown") { bgColor = brown; } else if (name == "Eucalyptus Green") { bgColor = greenLight; } if (colorId == parentid) { return `
`; } return `
${name}
`; } function addeventlisteners() { $(".optiontaganwi").each(function (i, el) { $(el).click(function (e) { $("#quantity").val(1); $(e.target) .parent() .find(".borderselector") .removeClass("borderselector"); $(e.target).addClass("borderselector"); currentClick = e.target; //searchComb(); // getAllCombination(); getandsetCombination(); }); }); } function getandsetCombination() { let keyOption = $(currentClick).data("tagiditem"); $(".disabled-option-item").removeClass("disabled-option-item"); let tagsNames = []; let currOptionAvaIds = {}; $(".borderselector").each(function (i, e) { let id = $(e).data("tagiditem"); tagsNames.push(id); }); for (let i = 0; i < itemtagscombinationRes.length; i++) { let tagItems = itemtagscombinationRes[i].tagids; if (tagItems.includes(keyOption)) { let splitArr = tagItems.split("|"); for (let j = 0; j < splitArr.length; j++) { if (keyOption) { currOptionAvaIds[splitArr[j]] = splitArr[j]; } } } } let parentsArr = []; $(".optiontaganwi").each(function (i, e) { let currParent = $(e).parents(".groupingitems_search"); if (currParent.find(`[data-tagiditem="${keyOption}"]`).length == 0) { let currId = $(e).data("tagiditem"); if (!currOptionAvaIds[currId]) { if ($(e).hasClass("borderselector")) { parentsArr.push(currParent); $(e).removeClass("borderselector"); } $(e).addClass("disabled-option-item"); } } }); for (let i = 0; i < parentsArr.length; i++) { let currParent = parentsArr[i]; currParent.find(".optiontaganwi").each(function (j, e) { let isTrue = $(e).hasClass("disabled-option-item"); if (!isTrue) { $(e).addClass("borderselector"); return false; } }); } // $('.optiontaganwi').addClass('disabled-option-item'); let parentId = $(currentClick).parents(".groupingitems_search"); let parentData = $(parentId).data("parentidgroup"); let parentArr = []; $(".groupingitems_search").each(function (i, e) { const curParentId = $(e).data("parentidgroup"); if (parentData != curParentId) { let obj = { name: $(e).find(".smallHeadingProductDetails").html(), arr: [], }; $(e) .find(".optiontaganwi") .each(function (j, evt) { let id = $(evt).data("tagiditem"); obj.arr.push(id); }); parentArr.push(obj); } }); let arrone = parentArr[0].arr; let arrtwo = []; if (parentArr.length > 1) { arrtwo = parentArr[1]?.arr; } let currId = keyOption; let ids = []; for (let i = 0; i < arrone.length; i++) { //let currEl = [currId,arrone[i]]; let currEl = ``; for (let j = 0; j < arrtwo.length; j++) { currEl = `${currId}|${arrone[i]}|${arrtwo[j]}`; ids.push(currEl); currEl = ""; } } let findObj = []; for (let i = 0; i < ids.length; i++) { let curId = ids[i]; for (let j = 0; j < itemtagscombinationRes.length; j++) { const currItem = itemtagscombinationRes[j].tagids.split("|"); let isTrue = true; for (let k = 0; k < currItem.length; k++) { if (!curId.includes(currItem[k])) { isTrue = false; break; } } if (isTrue) { findObj.push(itemtagscombinationRes[j]); } } } $(".optiontaganwi").addClass("disabled-option-item"); for (let i = 0; i < findObj.length; i++) { let item = findObj[i].tagids.split("|"); for (let j = 0; j < item.length; j++) { $(`[data-tagiditem=${item[j]}]`).removeClass("disabled-option-item"); } } $(parentId) .find(".optiontaganwi") .each(function (i, e) { $(e).removeClass("disabled-option-item"); }); for (let i = 0; i < itemtagscombinationRes.length; i++) { let currIds = itemtagscombinationRes[i].tagids; let isTrue = true; let isPro = false; for (let j = 0; j < tagsNames.length; j++) { if ( tagsNames.join().includes("106631360000128") && (tagsNames.join().includes("106631360000132") || tagsNames.join().includes("106631360000133")) ) { isPro = true; } if (!currIds.includes(tagsNames[j])) { isTrue = false; } } if (isTrue) { const { quantity } = itemtagscombinationRes[i]; if (true) { currentComb = itemtagscombinationRes[i]; updateDetailsByObj(itemtagscombinationRes[i]); if (isPro) { $(`[data-tagiditem="106631360000089"]`).addClass( " disabled-option-item" ); $(`[data-tagiditem="106631360000088"]`).addClass( " disabled-option-item" ); } } else { let name = itemtagscombinationRes[i].itemname.split("-")[0]; $("#addtocart").addClass("disabled"); let itemsName = name; $(".borderselector").each(function (i, e) { itemsName += ` ${$(e).html().trim()}`; }); updateItemId(null); let defaultImg = itemtagscombinationRes[i].itemimageurl ? imgServerNameBuild(itemtagscombinationRes[i].itemimageurl) : `./dist/assets/imgs/nophoto.png`; debugger; $(".productDetailsMain > img").attr("src", defaultImg); alert("updated1"); specification_wrap_action.remove(); $("#skudetailitem").val(-1); $(".productname").html(itemsName); $(".msgErrorDetailsItem").removeClass("d-none"); $(".des_productdes").html(""); $(".price").html(""); } initAddToCart(); return; } } // return; return; let commonTags = []; // $('.optiontaganwi').addClass('disabled-option-item') for (let i = 0; i < tagsNames.length; i++) { let currtagName = tagsNames[i]; let arr = currtagItemCom(currtagName); commonTags.push(arr); } // for(let i=0;i${currencySymbol}${amount}${ commingSoonText ? 'Pre Order Now!' : "" }` : "pre order now" ); appendSpecs(obj.itemid); $("#skudetailitem").val(obj.sku); $(".des_productdes").html(obj.itemdescription); $("#addtocart").attr("data-qty", obj.quantity); let defaultImg = obj.itemimageurl ? imgServerNameBuild(obj.itemimageurl) : `./dist/assets/imgs/nophoto.png`; let productId = window.location.hash.split("#")[1]?.split("=")[1]; let itemId = window.location.hash.split("#")[2]?.split("=")[1]; history.replaceState( undefined, undefined, `#productId=${productId}#itemid=${obj.itemid}` ); $(".productDetailsMain > img") .attr("src", defaultImg) .attr("loading", "lazy"); magnify("main_show_img", 1.2, defaultImg); updateItemId(obj.itemid); if (!obj.pricelist || !obj.quantity) { $(".buynow").attr("disabled", true); $("#addtocart").attr("disabled", true); } else { $(".buynow").attr("disabled", false); $("#addtocart").attr("disabled", false); } } function searchComb() { let valuesSelected = []; $(".optiontaganwi").removeClass("disabled-option-item"); $("#addtocart").removeClass("disabled"); $(".msgErrorDetailsItem").addClass("d-none"); $(".borderselector,border_selector").each(function (i, el) { let val = $(el).data("tagiditem"); valuesSelected.push(val); }); let labelRecord = {}; for (let label in labels) { labelRecord[label] = false; } specification_wrap_action.add(); let unFiler = null; for (let i = 0; i < itemtagscombinationRes.length; i++) { const currItem = itemtagscombinationRes[i]; const { tagids } = currItem; let isTrue = true; let labelFilter = labelRecord; for (let i = 0; i < valuesSelected.length; i++) { if (!tagids.includes(valuesSelected[i])) { isTrue = false; unFiler = labelFilter; break; } labelFilter[group[valuesSelected[i]]] = true; } if (isTrue) { const { quantity } = itemtagscombinationRes[i]; if (quantity >= $("#quantity").val() && quantity >= 1) { currentComb = itemtagscombinationRes[i]; // $('.productname').html(itemtagscombinationRes[i].itemname) // $('.price').html(itemtagscombinationRes[i].pricelist); // location.hash = itemtagscombinationRes[i].itemname.trim(); // appendSpecs(itemtagscombinationRes[i].itemid) // history.replaceState(null, null, `#itemid=${itemtagscombinationRes[i].itemid}#${itemtagscombinationRes[i].itemname.trim()}`); // $('#skudetailitem').val(itemtagscombinationRes[i].sku) // $('.des_productdes').html(itemtagscombinationRes[i].itemdescription); updateDetailsByObj(itemtagscombinationRes[i]); } else { let name = itemtagscombinationRes[i].itemname.split("-")[0]; $("#addtocart").addClass("disabled"); let itemsName = name; $(".borderselector").each(function (i, e) { itemsName += ` ${$(e).html().trim()}`; }); updateItemId(null); let defaultImg = itemtagscombinationRes[i].itemimageurl ? imgServerNameBuild(itemtagscombinationRes[i].itemimageurl) : `./dist/assets/imgs/nophoto.png`; $(".productDetailsMain > img").attr("src", defaultImg); specification_wrap_action.remove(); $("#skudetailitem").val(-1); $(".productname").html(itemsName); // history.replaceState(null, null, `#`); $(".msgErrorDetailsItem").removeClass("d-none"); $(".des_productdes").html(""); $(".price").html(""); } initAddToCart(); return; } } let name = itemtagscombinationRes[0].itemname.split("-")[0]; let itemsName = name; $(".borderselector").each(function (i, e) { itemsName += `- ${$(e).html().trim()}`; }); specification_wrap_action.remove(); $(".productname").html(itemsName); $("#skudetailitem").val(-1); $(".price").html(""); $("#addtocart").addClass("disabled"); $(".msgErrorDetailsItem").removeClass("d-none"); initAddToCart(); } function getAllCombination() { const currClickAttr = $(currentClick).html().trim(); const optionId = $(currentClick).data("tagiditem"); let curr = $(currentClick) .parents(".groupingitems_search") .data("parentidgroup"); $(".groupingitems_search").each(function (i, e) { const id = $(e).data("parentidgroup"); if (id != curr) { $(e).find(".optiontaganwi").addClass("disabled-option-item"); $(e).find(".borderselector").removeClass("borderselector"); } }); let ansArr = []; let index = 0; let comb = null; for (let i = 0; i < itemtagscombinationRes.length; i++) { let currIds = itemtagscombinationRes[i].tagids; if (currIds.includes(optionId)) { currIds = currIds.split("|"); for (let j = 0; j < currIds.length; j++) { if (index == 0 && optionId != currIds[j]) { $(`[data-tagiditem="${currIds[j]}"]`).addClass("borderselector"); comb = itemtagscombinationRes[i]; index++; } $(`[data-tagiditem="${currIds[j]}"]`).removeClass( "disabled-option-item" ); // $().parents('[data-tagid]').find() } } } updateDetailsByObj(comb); let currentItem = comb.tagids.split("|"); for (let i = 0; i < currentItem.length; i++) { $(`[data-tagiditem="${currentItem[i]}"]`) .removeClass("disabled-option-item") .addClass("borderselector"); } // history.replaceState(null, null, `#${comb.itemname}`); // window.location.href = `#${comb.itemname}` return; } async function getProductDetails(id) { let resData = await API_SERVICES_ACTIONS.getAPIService( `apis/v4/bizgaze/integrations/products/productattributelist/productid/${id}`, true ); if (resData.isError) { loadingActions.removeLoader(); alert(resData.errorMsg.message); return; } if (resData.response.result == "[]" || !resData.response.result) { $(".barbgnav").removeClass("d-none"); loadingActions.removeLoader(); toasterHelper("Something Went Wrong"); return; } let res = resData.response; res = JSON.parse(res.result); if (!res) { loadingActions.removeLoader(); return; } let html = ""; for (let i = 0; i < res.length; i++) { const currItem = res[i]; // parenttagid means under what label // tag id means it know unquie id const { parentattribute, parenttagid, tagid, attribute, productid, } = currItem; if (labels[parentattribute]) { labels[parentattribute].items.push({ attribute, tagid: tagid, }); } else { labels[parentattribute] = { id: parenttagid, items: [ { attribute, tagid: tagid, }, ], }; if (parentattribute.toLowerCase() === "colour") { colorId = parenttagid; } html += getParentHTML(parentattribute, productid, parenttagid, i == 0); } } $("#spec-container-details").html(html); let childIds = []; for (let item in labels) { let { id, items } = labels[item]; // $(`[data-tagid=${id}]`) let html = ""; for (let i = 0; i < items.length; i++) { const { attribute, tagid } = items[i]; childIds.push(tagid); group[attribute] = item; html += getChildHTML(tagid, attribute, i == 0, id); } $(`[data-tagid="${id}"]`).html(html); } itemtagscombinationRes = await API_SERVICES_ACTIONS.getAPIService( `apis/v4/bizgaze/integrations/products/getitemwithoutbranch/productid/${id}`, true ); itemtagscombinationRes = JSON.parse(itemtagscombinationRes.response.result); let itemidSearch = window.location.hash.split("#")[2]?.split("=")[1]; if (!itemidSearch) { itemidSearch = itemtagscombinationRes[0].itemid; } let valuesSelected = []; $(".borderselector").each(function (i, el) { let val = $(el).html(); valuesSelected.push(val.trim()); }); // let searchParams = window.location.search.split("&"); // let skuId = window.location.hash.split('#')[2].split('=')[1]; // skuId = skuId.split('=')[1] let isGo = true; for (let i = 0; i < itemtagscombinationRes.length; i++) { const currItem = itemtagscombinationRes[i]; const { tagnames, sku, itemid } = currItem; isThereInLabel[tagnames] = itemtagscombinationRes[i]; let isTrue = true; if (isGo) { // for(let i=0;i= 576) { var img, glass, w, h, bw; img = document.getElementById(imgID); /* Create magnifier glass: */ glass = document.createElement("DIV"); glass.setAttribute("class", "img-magnifier-glass d-none"); /* Insert magnifier glass: */ img.parentElement.insertBefore(glass, img); /* Set background properties for the magnifier glass: */ glass.style.backgroundImage = "url('" + defaultImg + "')"; glass.style.backgroundRepeat = "no-repeat"; if (img.width <= 400 && img.width <= 400) { glass.style.backgroundSize = 650 * zoom + "px " + 650 * zoom + "px"; } else { glass.style.backgroundSize = img.width * zoom + "px " + img.height * zoom + "px"; } bw = 3; w = glass.offsetWidth / 2; h = glass.offsetHeight / 2; /* Execute a function when someone moves the magnifier glass over the image: */ glass.addEventListener("mousemove", moveMagnifier); img.addEventListener("mousemove", moveMagnifier); /*and also for touch screens:*/ glass.addEventListener("touchmove", moveMagnifier); img.addEventListener("touchmove", moveMagnifier); function moveMagnifier(e) { var pos, x, y; /* Prevent any other actions that may occur when moving over the image */ e.preventDefault(); /* Get the cursor's x and y positions: */ pos = getCursorPos(e); x = pos.x; y = pos.y; /* Prevent the magnifier glass from being positioned outside the image: */ if (x > img.width - w / zoom) { x = img.width - w / zoom; } if (x < w / zoom) { x = w / zoom; } if (y > img.height - h / zoom) { y = img.height - h / zoom; } if (y < h / zoom) { y = h / zoom; } /* Set the position of the magnifier glass: */ glass.style.left = x - w + "px"; glass.style.top = y - h + "px"; /* Display what the magnifier glass "sees": */ glass.style.backgroundPosition = "-" + (x * zoom - w + bw) + "px -" + (y * zoom - h + bw) + "px"; } function getCursorPos(e) { var a, x = 0, y = 0; e = e || window.event; /* Get the x and y positions of the image: */ a = img.getBoundingClientRect(); /* Calculate the cursor's x and y coordinates, relative to the image: */ x = e.pageX - a.left; y = e.pageY - a.top; /* Consider any page scrolling: */ x = x - window.pageXOffset; y = y - window.pageYOffset; return { x: x, y: y }; } } } } startDetails();