// configuration js
let m2DriveMaxQty = 4;
let m2DriveSelectedQty = 0;
let nvmeDrivemaxqty = 4;
let nvmeDriveselectedqty = 0;
let hardDriveMaxQty = 10;
let hardDriveSelectedQty = 0;
// configuration items
if (localStorage.getItem("defaultCurrency") === null) {
localStorage.setItem("defaultCurrency", undefined);
localStorage.setItem("currentCurrency", undefined);
}
// api for getting current location along with currencies
const configCatgories = [
{
id: 1,
title: "barebone",
maxQty: 1,
},
{
id: 2,
title: "processor",
maxQty: 3,
},
{
id: 3,
title: "memory",
maxQty: 1,
},
{
id: 4,
title: "m.2 drive",
maxQty: 4,
},
{
id: 5,
title: "U.2/U.3 NVME DRIVE",
maxQty: 4,
},
{
id: 6,
title: "HARD DRIVE",
maxQty: 10,
},
];
const bareboneProducts = [
{
id: 1,
title: `Anwi C252 Chipset - 1U - 2x SATA - 1x M.2 - Dual Anwi 1-Gigabit Ethernet (RJ45) - 350W Power Supply`,
qty: 3,
price: 99,
},
];
const processorProducts = [
{
productcatid: 1,
productcattitle: `Intel® Xeon® E-2300 Processor Series`,
products: [
{
id: 1,
title: `Quad-Core Intel® Xeon® E-2314 Processor 2.8GHz 8MB
Cache (65W)`,
qty: 3,
price: 99,
},
{
id: 2,
title: `Quad-Core Intel® Xeon® E-2334 Processor 3.4GHz 8MB Cache (65W)`,
qty: 3,
price: 99,
},
{
id: 3,
title: `Eight-Core Intel® Xeon® E-2378 Processor 2.6GHz 16MB Cache (65W)`,
qty: 3,
price: 99,
},
],
},
{
productcatid: 2,
productcattitle: `Intel® Xeon® E-2300 Processor Series with Anwi UHD P750 Graphics`,
products: [
{
id: 1,
title: `Quad-Core Intel® Xeon® E-2324G Processor 3.1GHz
8MB Cache (65W)`,
qty: 3,
price: 99,
},
{
id: 2,
title: `Quad-Core Intel® Xeon® E-2374G Processor 3.7GHz 8MB Cache (80W)`,
qty: 2,
price: 99,
},
{
id: 3,
title: `Six-Core Intel® Xeon® E-2356G Processor 3.2GHz 12MB Cache (80W)`,
qty: 1,
price: 99,
},
{
id: 4,
title: `Six-Core Intel® Xeon® E-2386G Processor 3.5GHz 12MB Cache (95W)`,
qty: 1,
price: 99,
},
],
},
];
const memoryProducts = [
{
id: 1,
title: `16GB PC4-25600 3200MHz DDR4 ECC UDIMM`,
qty: 2,
price: 99,
},
{
id: 2,
title: `32GB PC4-25600 3200MHz DDR4 ECC UDIMM`,
qty: 2,
price: 220,
},
];
const m2driveProducts = [
{
productcatid: 1,
productcattitle: `Kioxia XG6 M.2 PCIe 3.1 x4 NVMe Solid State Drives`,
products: [
{
id: 1,
title: `256GB Kioxia XG6 M.2 PCIe 3.1 x4 NVMe Solid State
Drive`,
qty: 4,
price: 99,
},
{
id: 2,
title: `512GB Kioxia XG6 M.2 PCIe 3.1 x4 NVMe Solid State Drive`,
qty: 4,
price: 149,
},
{
id: 3,
title: `1.0TB Kioxia XG6 M.2 PCIe 3.1 x4 NVMe Solid State Drive`,
qty: 4,
price: 269,
},
],
},
{
productcatid: 2,
productcattitle: `Anwi DC P4801X M.2 PCIe 3.0 x4 NVMe Solid State Drives`,
products: [
{
id: 1,
title: `100GB Intel® Optane™ SSD DC P4801X Series M.2 PCIe 3.0 x4 NVMe
Solid State Drive`,
qty: 4,
price: 99,
},
{
id: 2,
title: `200GB Intel® Optane™ SSD DC P4801X Series M.2 PCIe
3.0 x4 NVMe Solid State Drive`,
qty: 4,
price: 149,
},
{
id: 3,
title: `1.0TB Kioxia XG6 M.2 PCIe 3.1 x4 NVMe Solid State Drive`,
qty: 4,
price: 269,
},
],
},
{
productcatid: 3,
productcattitle: `Micron 7400 PRO M.2 PCIe 4.0 x4 NVMe Solid State Drives`,
products: [
{
id: 1,
title: `480GB Micron 7400 PRO Series M.2 22x80 PCIe 4.0 x4 NVMe Solid
State Drive`,
qty: 4,
price: 99,
},
{
id: 2,
title: `960GB Micron 7400 PRO Series M.2 22x80 PCIe 4.0 x4
NVMe Solid State Drive`,
qty: 4,
price: 149,
},
{
id: 3,
title: `1.92TB Micron 7400 PRO Series M.2 22x110 PCIe 4.0 x4 NVMe Solid
State Drive`,
qty: 4,
price: 269,
},
],
},
];
const NvmeDriveProducts = [
{
productcatid: 1,
productcattitle: `Anwi P4510 Series PCIe 3.1 x4 NVMe Solid State Drives (1x DWPD)`,
products: [
{
id: 1,
title: `8.0TB Anwi SSD DC P4510 Series U.2 PCIe 3.1 x4 NVMe Solid State Drive`,
qty: 4,
price: 99,
},
],
},
{
productcatid: 2,
productcattitle: `Anwi P5510 Series PCIe 4.0 x4 NVMe Solid State Drives`,
products: [
{
id: 1,
title: `3.84TB Anwi SSD D7 P5510 Series U.2 PCIe 4.0 x4 NVMe Solid State Drive`,
qty: 4,
price: 99,
},
{
id: 2,
title: `7.68TB Anwi SSD D7 P5510 Series U.2 PCIe 4.0 x4 NVMe Solid State Drive`,
qty: 4,
price: 149,
},
{
id: 3,
title: `1.5TB Intel® Optane™ SSD DC P4800X Series U.2 PCIe 3.0 x4 NVMe Solid State Drive`,
qty: 4,
price: 269,
},
],
},
{
productcatid: 3,
productcattitle: `Intel® Optane™ DC P4801X Series PCIe 3.0 x4 NVMe Solid State Drives`,
products: [
{
id: 1,
title: `100GB Intel® Optane™ SSD DC P4801X Series U.2 PCIe 3.0 x4 NVMe Solid State Drive`,
qty: 4,
price: 99,
},
],
},
{
productcatid: 4,
productcattitle: `Micron 7400 PRO Series PCIe 4.0 x4 NVMe Solid State Drives (1x DWPD)`,
products: [
{
id: 1,
title: `960GB Micron 7400 PRO Series U.3 7mm PCIe 4.0 x4 NVMe Solid State Drive`,
qty: 4,
price: 99,
},
{
id: 2,
title: `1.92TB Micron 7400 PRO Series U.3 7mm PCIe 4.0 x4 NVMe Solid State Drive`,
qty: 4,
price: 149,
},
{
id: 3,
title: `3.84TB Micron 7400 PRO Series U.3 7mm PCIe 4.0 x4 NVMe Solid State Drive`,
qty: 4,
price: 269,
},
{
id: 4,
title: `7.68TB Micron 7400 PRO Series U.3 7mm PCIe 4.0 x4 NVMe Solid State Drive`,
qty: 4,
price: 269,
},
],
},
];
const HardDriveProducts = [
{
productcatid: 1,
productcattitle: `Seagate Enterprise-Class 6Gb/s SATA 7.2k Hard Drives`,
products: [
{
id: 1,
title: `1.0TB SATA 6.0Gb/s 7200RPM - 2.5" - Seagate Exos 7E2000 Series (512e)`,
qty: 4,
price: 99,
},
{
id: 2,
title: `2.0TB SATA 6.0Gb/s 7200RPM - 2.5" - Seagate Exos 7E2000 Series (512e)`,
qty: 4,
price: 149,
},
],
},
{
productcatid: 2,
productcattitle: `Seagate Enterprise-Class 12Gb/s SAS 7.2k Hard Drives`,
products: [
{
id: 1,
title: `1.0TB SAS 3.0 12.0Gb/s 7200RPM - 2.5" - Seagate Exos 7E2000 Series (512e)`,
qty: 4,
price: 99,
},
{
id: 2,
title: `2.0TB SAS 3.0 12.0Gb/s 7200RPM - 2.5" - Seagate Exos 7E2000 Series (512e)`,
qty: 4,
price: 149,
},
],
},
{
productcatid: 3,
productcattitle: `Intel® Optane™ DC P4801X Series PCIe 3.0 x4 NVMe Solid State Drives`,
products: [
{
id: 1,
title: `100GB Intel® Optane™ SSD DC P4801X Series U.2 PCIe 3.0 x4 NVMe Solid State Drive`,
qty: 4,
price: 99,
},
],
},
{
productcatid: 4,
productcattitle: `Seagate Enterprise-Class 12Gb/s SAS 10k Hard Drives`,
products: [
{
id: 1,
title: `600GB SAS3 12.0Gb/s 10000RPM - 2.5" - Seagate Exos 10E2400 Series (512e/4Kn)`,
qty: 4,
price: 99,
},
{
id: 2,
title: `1.2TB SAS3 12.0Gb/s 10000RPM - 2.5" - Seagate Exos 10E2400 Series (512e/4Kn)`,
qty: 4,
price: 149,
},
{
id: 3,
title: `1.8TB SAS3 12.0Gb/s 10000RPM - 2.5" - Seagate Exos 10E2400 Series (512e/4Kn)`,
qty: 4,
price: 269,
},
{
id: 4,
title: `2.4TB SAS3 12.0Gb/s 10000RPM - 2.5" - Seagate Exos 10E2400 Series (512e/4Kn)`,
qty: 4,
price: 269,
},
],
},
{
productcatid: 5,
productcattitle: `Micron 5300 MAX Enterprise-Class SATA Solid State Drives`,
products: [
{
id: 1,
title: `240GB Micron 5300 MAX Series 2.5" SATA 6.0Gb/s Solid State Drive`,
qty: 4,
price: 99,
},
{
id: 2,
title: `480GB Micron 5300 MAX Series 2.5" SATA 6.0Gb/s Solid State Drive`,
qty: 4,
price: 149,
},
{
id: 3,
title: `960GB Micron 5300 MAX Series 2.5" SATA 6.0Gb/s Solid State Drive`,
qty: 4,
price: 269,
},
{
id: 4,
title: `1.92TB Micron 5300 MAX Series 2.5" SATA 6.0Gb/s Solid State Drive`,
qty: 4,
price: 269,
},
{
id: 5,
title: `1.92TB Micron 5300 MAX Series 2.5" SATA 6.0Gb/s Solid State Drive`,
qty: 4,
price: 269,
},
],
},
];
//Bind Config Categories
bindConfigurations();
updateItemsCount();
// max quantity-progress-bar
function bindConfigurations() {
let configCatHtml = "";
$.each(configCatgories, function (i, cat) {
const id = cat.id;
let title = cat.title;
let qty = cat.maxQty;
let maxQtyHtml = "";
if (title == "m.2 drive") {
title = "m2-drive";
} else if (title == "U.2/U.3 NVME DRIVE") {
title = "nvme-drive";
} else if (title == "HARD DRIVE") {
title = "hard-drive";
}
if (title == "m2-drive" || title == "processor") {
let quantityHtml = "";
if (title == "m2-drive") {
let qtyProgressBarHtml = "";
for (let i = 0; i < qty; i++) {
qtyProgressBarHtml += ``;
}
quantityHtml = `Quantity:
${qtyProgressBarHtml}
Max Quantity: ${qty}0/${qty}
`;
}
maxQtyHtml = `${quantityHtml}
`;
}
if (title == "nvme-drive") {
let quantityHtml = "";
if (title == "nvme-drive") {
let qtyProgressBarHtml = "";
for (let i = 0; i < qty; i++) {
qtyProgressBarHtml += ``;
}
quantityHtml = `Quantity:${qtyProgressBarHtml}
Max Quantity: ${qty}0/${qty}
`;
}
maxQtyHtml = `${quantityHtml}
`;
}
if (title == "hard-drive") {
let quantityHtml = "";
if (title == "hard-drive") {
let qtyProgressBarHtml = "";
for (let i = 0; i < qty; i++) {
qtyProgressBarHtml += ``;
}
quantityHtml = `Quantity:${qtyProgressBarHtml}
Max Quantity: ${qty}0/${qty}
`;
}
maxQtyHtml = `${quantityHtml}
`;
}
configCatHtml += ``;
});
$("#block-content-main").html(configCatHtml);
bindAllConfigProducts();
}
//bindNvmeConfigurations();
updateItemsCount();
// appending&binding -html
function bindAllConfigProducts() {
bindBareboneAndMemoryProducts("barebone");
bindBareboneAndMemoryProducts("memory");
bindProcessorAndM2DriveProducts("processor");
bindProcessorAndM2DriveProducts("m2-drive");
bindNVMEHARDDRIVEAndProducts("nvme-drive");
bindNVMEHARDDRIVEAndProducts("hard-drive");
bindEventListeners();
}
function bindBareboneAndMemoryProducts(cat) {
let productHtml = "";
let productsArr = bareboneProducts;
let name = "radio-btns-barebone";
if (cat == "memory") {
productsArr = memoryProducts;
name = "radio-btn-memory";
}
$.each(productsArr, function (i, product) {
productHtml += `
₹${product.price}
`;
});
$(`#config-${cat} .config-content`).html(productHtml);
}
function bindProcessorAndM2DriveProducts(cat) {
let productCatHtml = "";
let productsArr = processorProducts;
let accordion = "processorProductAccordion";
let collapse = "processorProductcollapse";
let lastSelectDataAttr = "";
if (cat == "m2-drive") {
productsArr = m2driveProducts;
accordion = "m2DriveProductAccordion";
collapse = "m2DriveProductcollapse";
lastSelectDataAttr = 'data-lastval="1"';
}
$.each(productsArr, function (i, productcat) {
const productcatid = productcat.productcatid;
const productcattitle = productcat.productcattitle;
productCatHtml += `
`;
let productHtml = "";
$.each(productcat.products, function (i, product) {
productHtml += `
${appendProcessorAndM2DriveInput(
cat,
product.id,
product.title,
productcatid
)}
₹${product.price}
`;
});
productCatHtml += productHtml;
productCatHtml += `
`;
});
$(`#config-${cat} .config-content`).html(productCatHtml);
}
function bindNVMEHARDDRIVEAndProducts(cat) {
let productCatHtml = "";
// let productsArr = HardDriveProducts;
// let accordion = 'hardwareProductAccordion';
// let collapse = 'hardwareProductcollapse';
let lastSelectDataAttr = "";
if (cat == "nvme-drive") {
productsArr = NvmeDriveProducts;
accordion = "NVMEDRIVEProductAccordion";
collapse = "NVMEDRIVEProductcollapse";
lastSelectDataAttr = 'data-lastval="1"';
}
if (cat == "hard-drive") {
productsArr = HardDriveProducts;
accordion = "hardwareProductAccordion";
collapse = "hardwareProductcollapse";
lastSelectDataAttr = 'data-lastval="1"';
}
$.each(productsArr, function (i, productcat) {
const productcatid = productcat.productcatid;
const productcattitle = productcat.productcattitle;
productCatHtml += `
`;
let productHtml = "";
$.each(productcat.products, function (i, product) {
productHtml += `
${appendNVMEHARDDRIVEAndProducts(
cat,
product.id,
product.title,
productcatid
)}
₹${product.price}
`;
});
productCatHtml += productHtml;
productCatHtml += `
`;
});
$(`#config-${cat} .config-content`).html(productCatHtml);
}
function appendProcessorAndM2DriveInput(cat, id, title, productcatid = 0) {
if (cat == "m2-drive") {
return `
`;
} else {
return `
`;
}
}
function appendNVMEHARDDRIVEAndProducts(cat, id, title, productcatid = 0) {
if (cat == "nvme-drive") {
return `
`;
} else {
return `
`;
}
}
// function removeActiveClassForPrice(DOM) {
// return DOM.removeClass("active");
// }
// select and radio-check-btn-section
// function bindEventListeners() {}
// select and radio-check-btn-section
function bindEventListeners() {
var alertBox = `
Holy guacamole! You should check in on some of those fields below.
`;
$(".product-radio-btn").click(function (e) {
const radioEl = $(this);
const accordionID = $(this).parents(".accordion").attr("id");
const parentEl = radioEl.parents(".config-product-item");
const val = radioEl.val();
const productCatId = parentEl.attr("data-id");
const cat = parentEl.attr("data-cat");
const qty = parseInt(parentEl.find(".qty-selector").val("1"));
const price = qty * parseInt(parentEl.attr("data-price"));
const id = parentEl.attr("data-id");
$(`#config-${cat}`).find(".config-price-span").removeClass("active");
parentEl.find(".config-price-span").addClass("active");
bindSelectedProduct(cat, val, qty, price, id, productCatId, accordionID);
updateItemsCount();
updateTotalCartPrice();
// $(this).toggleClass("checked");
});
$(".qty-selector").change(function () {
const selectEl = $(this);
const accordionId = $(this).parents(".accordion").attr("id");
const parentEl = selectEl.parents(".config-product-item");
const val = parseInt(selectEl.val());
const lastSelectedVal = parseInt(selectEl.attr("data-lastval"));
const price = (val * parseFloat(parentEl.attr("data-price"))).toFixed(2);
const cat = parentEl.attr("data-cat");
const id = parentEl.attr("data-id");
if (!parentEl.find("input").is(":checked")) {
// parentEl.find("input").trigger("click");
parentEl.find(selectEl).val(val);
parentEl.find(".config-price-span").addClass("active");
}
const selectedQty = val - lastSelectedVal;
if (cat == "m2-drive") {
if (m2DriveMaxQty >= m2DriveSelectedQty + selectedQty) {
m2DriveSelectedQty += selectedQty;
selectEl.attr("data-lastval", val);
m2DriveProgress();
parentEl.find(".product-price").text(price);
const selecedSummaryProduct = $(
`.${cat}-cart-product-${id}[data-accordionid="${accordionId}"]`
);
selecedSummaryProduct.find(".summary-total-qty .qty-span").text(val);
selecedSummaryProduct.find(".product-price").text(price);
updateTotalCartPrice();
} else {
alert("Quantity Max limit reached");
selectEl.val(lastSelectedVal);
// parentEl.find('input').trigger('click');
return false;
}
} else {
parentEl.find(".product-price").text(price);
const selecedSummaryProduct = $(
`.${cat}-cart-product-${id}[data-accordionid="${accordionId}"]`
);
selecedSummaryProduct.find(".summary-total-qty .qty-span").text(val);
selecedSummaryProduct.find(".product-price").text(price);
updateTotalCartPrice();
}
});
$(".product-check-btn").click(function () {
const checkEl = $(this);
const ElementId = $(this).parents(".accordion").attr("id");
const parentEl = checkEl.parents(".config-product-item");
const val = checkEl.val();
const productCatId = parentEl.attr("data-productcatid");
const cat = parentEl.attr("data-cat");
const qtySelectEl = parentEl.find(".qty-selector");
const qty = parseInt(qtySelectEl.val("1"));
const price = parentEl.attr("data-price");
const totalPrice = qty * parseFloat(price).toFixed(2);
const id = parentEl.attr("data-id");
if (checkEl.is(":checked")) {
m2DriveSelectedQty++;
parentEl.addClass("selected");
} else {
m2DriveSelectedQty -= qty;
qtySelectEl.val("1").attr("data-lastval", "1").trigger("change");
parentEl.removeClass("selected").find(".product-price").text(price);
}
if (m2DriveSelectedQty > m2DriveMaxQty) {
alert("Quantity Max limit reached");
return false;
} else {
parentEl.find(".config-price-span").toggleClass("active");
bindSelectedProduct(
cat,
val,
qty,
totalPrice,
id,
productCatId,
ElementId
);
updateItemsCount();
updateTotalCartPrice();
m2DriveProgress();
}
});
// $('.product-check-btn ,.product-radio-btn').click(function() {
// qtySelectEl.val('1').attr('data-lastval', '1').trigger('change');;
// });
}
//progress-bars active and remove
function m2DriveProgress() {
if (m2DriveSelectedQty <= m2DriveMaxQty) {
$("#config-m2-drive .qty-progress-bars .progress-bar").removeClass(
"active"
);
for (let i = 0; i < m2DriveSelectedQty; i++) {
$("#config-m2-drive .qty-progress-bars .progress-bar")
.eq(i)
.addClass("active");
}
$("#config-m2-drive .max-qty-wrap")
.find(".selected-qty")
.text(m2DriveSelectedQty);
}
if (m2DriveSelectedQty == m2DriveMaxQty) {
disableM2DriveOptions();
} else {
enableM2DriveOptions();
}
}
function enableM2DriveOptions() {
$(".product-check-btn").prop("disabled", false);
$("#config-m2-drive .qty-selector").prop("disabled", false);
}
function disableM2DriveOptions() {
$(".product-check-btn").not(":checked").prop("disabled", true);
$("#config-m2-drive .config-product-item")
.not(".selected")
.find(".qty-selector")
.prop("disabled", true);
}
//nvme progress-bars active and remove
function nvmeDriveProgress() {
if (nvmeDriveselectedqty <= nvmeDrivemaxqty) {
$("#config-nvme-drive .qty-progress-bars .progress-bar").removeClass(
"active"
);
for (let i = 0; i < nvmeDriveselectedqty; i++) {
$("#config-nvme-drive .qty-progress-bars .progress-bar")
.eq(i)
.addClass("active");
}
$("#config-nvme-drive .max-qty-wrap")
.find(".selected-qty")
.text(nvmeDriveselectedqty);
}
if (nvmeDriveselectedqty == nvmeDrivemaxqty) {
disablenvmeDriveOptions();
} else {
enablenvmeDriveOptions();
}
}
function enablenvmeDriveOptions() {
$(".product-check").prop("disabled", false);
$("#config-nvme-drive .qty-selector").prop("disabled", false);
}
function disablenvmeDriveOptions() {
$(".product-check").not(":checked").prop("disabled", true);
$("#config-nvme-drive .config-product-item")
.not(".selected")
.find(".qty-selector")
.prop("disabled", true);
}
//hard-drive progress-bars active and remove
function hardDriveProgress() {
if (hardDriveSelectedQty <= hardDriveMaxQty) {
$("#config-hard-drive .qty-progress-bars .progress-bar").removeClass(
"active"
);
for (let i = 0; i < hardDriveSelectedQty; i++) {
$("#config-hard-drive .qty-progress-bars .progress-bar")
.eq(i)
.addClass("active");
}
$("#config-hard-drive .max-qty-wrap")
.find(".selected-qty")
.text(hardDriveSelectedQty);
}
if (hardDriveSelectedQty == hardDriveMaxQty) {
disablehardDriveOptions();
} else {
enablehardDriveOptions();
}
}
function enablehardDriveOptions() {
$(".product-hard-btn").prop("disabled", false);
$("#config-hard-drive .qty-selector").prop("disabled", false);
}
function disablehardDriveOptions() {
$(".product-hard-btn").not(":checked").prop("disabled", true);
$("#config-hard-drive .config-product-item")
.not(".selected")
.find(".qty-selector")
.prop("disabled", true);
}
// summary section
function bindSelectedProduct(
cat,
val,
qty,
price,
id,
productCatId = "",
ElementId,
currency = localStorage.getItem("currentCurrency"),
currencysymbol = rates[currency].symbol
) {
console.log(cat, val, "qty", qty, price, id, productCatId, ElementId);
const summaryProductHtml = `${qty}
${val}
${currencysymbol}${price}
`;
console.log(
$(`#${cat}-summary .summary-list`).find(`[data-accordionid=${ElementId}]`)
.length
);
if (
$(`#${cat}-summary .summary-list`).find(`[data-accordionid=${ElementId}]`)
.length
) {
$(`#${cat}-summary .summary-list`)
.find(`[data-accordionid=${ElementId}]`)
.remove();
}
if (cat == "barebone") {
if (qty) {
$(
`.barebone-cart-product-${id}[data-productcatid = "${productCatId}"]`
).remove();
$(`#${cat}-summary .summary-list`).append(summaryProductHtml);
} else {
$(
`.barebone-cart-product-${id}[data-productcatid = "${productCatId}"]`
).remove();
}
}
if (cat == "m2-drive") {
if (qty) {
$(
`.m2-drive-cart-product-${id}[data-productcatid = "${productCatId}`
).remove();
$(`#${cat}-summary .summary-list`).append(summaryProductHtml);
} else {
$(
`.m2-drive-cart-product-${id}[data-productcatid = "${productCatId}`
).remove();
}
}
if (cat == "processor") {
if (qty) {
$(`.cart-product-item[data-accordionid = "${ElementId}"]`).remove();
$(`#${cat}-summary .summary-list`).append(summaryProductHtml);
} else {
$(`.cart-product-item[data-accordionid = "${ElementId}"]`).remove();
}
}
if (cat == "nvme-drive") {
if (qty) {
$(`.cart-product-item[data-accordionid = "${ElementId}"]`).remove();
$(`#${cat}-summary .summary-list`).append(summaryProductHtml);
} else {
$(`.cart-product-item[data-accordionid = "${ElementId}"]`).remove();
}
}
if (cat == "hard-drive") {
if (qty) {
$(
`.hard-drive-cart-product-${id}[data-productcatid = "${productCatId}"] `
).remove();
$(`#${cat}-summary .summary-list`).append(summaryProductHtml);
} else {
$(
`.hard-drive-cart-product-${id}[data-productcatid = "${productCatId}"] `
).remove();
}
}
if (cat == "memory") {
if (qty) {
$(`.cart-product-item[data-accordionid = "${ElementId}"]`).remove();
$(`#${cat}-summary .summary-list`).append(summaryProductHtml);
} else {
$(`.cart-product-item[data-accordionid = "${ElementId}"]`).remove();
}
}
if ($(`#${cat}-summary .summary-list li`).length) {
console.log("display if");
$(`#${cat}-summary`).removeClass("d-none");
} else {
console.log("display else");
$(`#${cat}-summary`).addClass("d-none");
}
return;
}
// items-count
function updateItemsCount() {
const cartProductCount = $("#productOrderSummary .cart-product-item").length;
$(".summary-head #items-count").text(cartProductCount);
if (cartProductCount >= 1) {
$(".your-order-wrap").show();
$(".your-order-wrap-empty").hide();
} else {
$(".your-order-wrap").hide();
$(".your-order-wrap-empty").show();
}
}
// total-cart-price
function updateTotalCartPrice() {
let totalPrice = 0;
$("#productOrderSummary .cart-product-item")
.find(".price-span")
.each(function (i, e) {
totalPrice += Number($(e).text().trim());
cartTotal = parseFloat(totalPrice).toFixed(2);
});
$("#productOrderSummary #total-amount").text(cartTotal);
}
//currency-converter for pricings:
var rates = {
INR: {
value: 1,
symbol: "₹",
USD: 0.01289,
INR: 1,
GBP: 0.01041,
EUR: 0.01226,
},
USD: {
value: 75,
symbol: "$",
USD: 1,
INR: 77.5624,
GBP: 0.8074,
EUR: 0.951,
},
GBP: {
value: 100,
symbol: "£",
USD: 1.2384,
INR: 96.0576,
GBP: 1,
EUR: 1.1778,
},
EUR: {
value: 81,
symbol: "€",
USD: 1.051428,
INR: 81.551,
GBP: 0.8489,
EUR: 1,
},
};
//currency-converter rates for configurator:
// var rates = {
// INR: {
// value: 1,
// symbol: "₹",
// USD: 0.01311,
// INR: 1,
// GBP: 0.01,
// },
// USD: {
// value: 75,
// symbol: "$",
// USD: 1,
// INR: 76.32,
// GBP: 0.76,
// },
// GBP: {
// value: 100,
// symbol: "£",
// USD: 1.31,
// INR: 100,
// GBP: 1,
// },
// };
// let usercurency;
// if (localStorage.getItem("currentCurrency")) {
// usercurency = localStorage.getItem("currentCurrency");
// }
//else {
// usercurency = "INR";
// }
// $("#custom-selects").val(usercurency.toLowerCase());
function updatePrices(previousCurrency, currentCurrency) {
$(".product-price").each(function (i, el) {
// console.log(currentCurrency);
let val = parseFloat($(el).text());
let con = val * rates[previousCurrency][currentCurrency],
_con;
if (currentCurrency == "INR") {
_con = Math.round(con);
// _con = con;
} else {
_con = con;
}
let curentSymbol = rates[currentCurrency];
$(el).text(_con.toFixed(2));
$(el).siblings(".currency-symbol").text(curentSymbol.symbol);
});
$("[data-price]").each(function (i, e) {
let val = parseFloat($(this).attr("data-price"));
let con = val * rates[previousCurrency][currentCurrency],
_con;
if (currentCurrency == "INR") {
_con = Math.round(con);
// _con = con;
} else {
_con = con;
}
$(this).attr("data-price", _con);
});
let amount = parseFloat($("#total-amount").text()).toFixed(2);
let curentSymbol = rates[currentCurrency];
let conVal = amount * rates[previousCurrency][currentCurrency],
_con;
if (currentCurrency == "INR") {
_con = Math.round(conVal);
// _con = conVal;
} else {
_con = conVal;
}
$("#total-amount").text(parseFloat(_con).toFixed(2));
$(".currency-symbol").text(curentSymbol.symbol);
}
$("#custom-selects").on("change", function (e) {
let previousCurrency = localStorage.getItem("currency");
localStorage.setItem("currency", e.target.value.toUpperCase());
updatePrices(previousCurrency, e.target.value.toUpperCase());
});
$("#searchTheKey").on("keyup", function () {
// search functionality
var value = $(this).val().toString(),
value = value.toUpperCase();
$(".product-config-selector")
.find(".config-content strong")
.each(function () {
let reportName = $(this).text();
if (reportName.toUpperCase().indexOf(value) > -1) {
$(this).parents(".name-of-config ").css("display", "flex");
$(this)
.closest(".name-of-config")
.each(function () {
let reportName = $(this).text();
if (reportName.toUpperCase().indexOf(value) > -1) {
$(this).parents(".name-of-config").css("display", "flex");
$("#config-processor").css("display", "block");
$("#config-barebone").css("display", "block");
$("#config-memory").css("display", "block");
$("#config-m2-drive").css("display", "block");
$("#config-nvme-drive").css("display", "block");
$("#config-hard-drive").css("display", "block");
} else {
$(this).parents(".name-of-config").css("display", "none");
}
});
} else {
$(this).parents(".name-of-config").css("display", "none");
}
});
if ($("#config-processor").find(".name-of-config:visible").length == 0) {
$("#config-processor").css("display", "none");
} else {
$("#config-processor").css("display", "block");
$("#config-processor")
.find(".sub-section")
.each(function () {
console.log($(this));
if ($(this).find(".name-of-config:visible").length == 0) {
$(this).closest(".accordion").css("display", "none");
}
});
}
if ($("#config-barebone").find(".name-of-config:visible").length == 0) {
$("#config-barebone").css("display", "none");
} else {
$("#config-barebone").css("display", "block");
}
if ($("#config-memory").find(".name-of-config:visible").length == 0) {
$("#config-memory").css("display", "none");
} else {
$("#config-memory").css("display", "block");
}
if ($("#config-m2-drive").find(".name-of-config:visible").length == 0) {
$("#config-m2-drive").css("display", "none");
} else {
$("#config-m2-drive").css("display", "block");
$("#config-m2-drive")
.find(".sub-section")
.each(function () {
console.log($(this));
if ($(this).find(".name-of-config:visible").length == 0) {
$(this).closest(".accordion").css("display", "none");
}
});
}
if ($("#config-nvme-drive").find(".name-of-config:visible").length == 0) {
$("#config-nvme-drive").css("display", "none");
} else {
$("#config-nvme-drive").css("display", "block");
$("#config-nvme-drive")
.find(".sub-section")
.each(function () {
console.log($(this));
if ($(this).find(".name-of-config:visible").length == 0) {
$(this).closest(".accordion").css("display", "none");
}
});
}
if ($("#config-hard-drive").find(".name-of-config:visible").length == 0) {
$("#config-hard-drive").css("display", "none");
} else {
$("#config-hard-drive").css("display", "block");
$("#config-hard-drive")
.find(".sub-section")
.each(function () {
console.log($(this));
if ($(this).find(".name-of-config:visible").length == 0) {
$(this).closest(".accordion").css("display", "none");
}
});
}
});
setTimeout(function () {
//handling check for barebone processor and memory
const productRadioBtns = document.querySelectorAll(".product-radio-btn");
// console.log(productRadioBtns);
for (let i = 0; i < productRadioBtns.length; i++) {
productRadioBtns[i].addEventListener("click", function () {
const checkEl = $(this);
const ElementId = $(this).parents(".accordion").attr("id");
const parentEl = checkEl.parents(".config-product-item");
const productCatId = parentEl.attr("data-productcatid");
const cat = parentEl.attr("data-cat");
const qtySelectEl = parentEl.find(".qty-selector");
const id = parentEl.attr("data-id");
if ($(this).parents(".accordion").length) {
$(this)
.closest(".accordion")
.find(".config-price-span")
.removeClass("active");
$(this).closest(".accordion").find(".qty-selector").val(0);
}
if (this.checked) {
console.log("checked");
$(this).parents(".name-of-config").find(".qty-selector").val("1");
$(this)
.parents(".name-of-config")
.find(".config-price-span")
.addClass("active");
$(this)
.closest(".accordion")
.find(".product-radio-btn")
.prop("checked", false);
$(this).prop("checked", true);
}
const qty = parseInt(qtySelectEl.val());
const actualPrice = parentEl.attr("data-price");
const price = parseFloat(actualPrice).toFixed(2);
const totalPrice = qty * parseFloat(price).toFixed(2);
const val = checkEl.val();
bindSelectedProduct(cat, val, qty, price, id, productCatId, ElementId);
updateItemsCount();
updateTotalCartPrice();
});
}
//handling check for m2-drive
const productCheckBtns = document.querySelectorAll(".product-check-btn");
for (let i = 0; i < productCheckBtns.length; i++) {
productCheckBtns[i].addEventListener("click", function () {
const checkEl = $(this);
const ElementId = $(this).parents(".accordion").attr("id");
const parentEl = checkEl.parents(".config-product-item");
const val = checkEl.val();
const productCatId = parentEl.attr("data-productcatid");
const cat = parentEl.attr("data-cat");
const qtySelectEl = parentEl.find(".qty-selector");
const price = parentEl.attr("data-price");
const id = parentEl.attr("data-id");
if ($(this).parents(".accordion").length) {
$(this)
.closest(".accordion")
.find(".config-price-span")
.removeClass("active");
$(this).closest(".accordion").find(".qty-selector").val(0);
$(this)
.closest(".accordion")
.find(".config-product-item")
.removeClass("selected");
}
if (this.checked) {
// console.log('checked')
$(this).parents(".name-of-config").find(".qty-selector").val("1");
$(this)
.parents(".name-of-config")
.find(".config-price-span")
.addClass("active");
$(this)
.closest(".accordion")
.find(".product-check-btn")
.prop("checked", false);
$(this).prop("checked", true);
parentEl.addClass("selected");
} else {
parentEl.removeClass("selected");
}
const qty = parseInt(qtySelectEl.val());
const totalPrice = qty * parseFloat(price).toFixed(2);
let selectedQty = 0;
parentEl
.closest(".config-content")
.find(".qty-selector")
.each(function () {
selectedQty = selectedQty + +$(this).val();
});
m2DriveSelectedQty = selectedQty;
if (m2DriveSelectedQty > m2DriveMaxQty) {
return false;
} else {
bindSelectedProduct(
cat,
val,
qty,
parseFloat(totalPrice).toFixed(2),
id,
productCatId,
ElementId
);
updateItemsCount();
updateTotalCartPrice();
m2DriveProgress();
}
});
}
//handling check for nvme-drive
const productCheckBtns1 = document.querySelectorAll(".product-check");
for (let i = 0; i < productCheckBtns1.length; i++) {
productCheckBtns1[i].addEventListener("click", function () {
const checkEl = $(this);
const ElementId = $(this).parents(".accordion").attr("id");
const parentEl = checkEl.parents(".config-product-item");
const val = checkEl.val();
const productCatId = parentEl.attr("data-productcatid");
const cat = parentEl.attr("data-cat");
const qtySelectEl = parentEl.find(".qty-selector");
const price = parentEl.attr("data-price");
const id = parentEl.attr("data-id");
if ($(this).parents(".accordion").length) {
$(this)
.closest(".accordion")
.find(".config-price-span")
.removeClass("active");
$(this).closest(".accordion").find(".qty-selector").val(0);
$(this)
.closest(".accordion")
.find(".config-product-item")
.removeClass("selected");
}
if (this.checked) {
$(this).parents(".name-of-config").find(".qty-selector").val("1");
$(this)
.parents(".name-of-config")
.find(".config-price-span")
.addClass("active");
$(this)
.closest(".accordion")
.find(".product-check")
.prop("checked", false);
$(this).prop("checked", true);
parentEl.addClass("selected");
} else {
parentEl.removeClass("selected");
}
const qty = parseInt(qtySelectEl.val());
const totalPrice = qty * parseFloat(price).toFixed(2);
let selectedQty = 0;
parentEl
.closest(".config-content")
.find(".qty-selector")
.each(function () {
selectedQty = selectedQty + +$(this).val();
});
nvmeDriveselectedqty = selectedQty;
if (nvmeDriveselectedqty > nvmeDrivemaxqty) {
return false;
} else {
bindSelectedProduct(
cat,
val,
qty,
parseFloat(totalPrice).toFixed(2),
id,
productCatId,
ElementId
);
updateItemsCount();
updateTotalCartPrice();
nvmeDriveProgress()();
}
});
}
//handling check for hard-drive
const productHardBtns = document.querySelectorAll(".product-hard-btn");
for (let i = 0; i < productHardBtns.length; i++) {
productHardBtns[i].addEventListener("click", function () {
const checkEl = $(this);
const ElementId = $(this).parents(".accordion").attr("id");
const parentEl = checkEl.parents(".config-product-item");
const val = checkEl.val();
const productCatId = parentEl.attr("data-productcatid");
const cat = parentEl.attr("data-cat");
const qtySelectEl = parentEl.find(".qty-selector");
const price = parentEl.attr("data-price");
const id = parentEl.attr("data-id");
if ($(this).parents(".accordion").length) {
$(this)
.closest(".accordion")
.find(".config-price-span")
.removeClass("active");
$(this).closest(".accordion").find(".qty-selector").val(0);
$(this)
.closest(".accordion")
.find(".config-product-item")
.removeClass("selected");
}
if (this.checked) {
$(this).parents(".name-of-config").find(".qty-selector").val("1");
$(this)
.parents(".name-of-config")
.find(".config-price-span")
.addClass("active");
$(this)
.closest(".accordion")
.find(".product-hard-btn")
.prop("checked", false);
$(this).prop("checked", true);
parentEl.addClass("selected");
} else {
parentEl.removeClass("selected");
}
const qty = parseInt(qtySelectEl.val());
const totalPrice = qty * parseFloat(price).toFixed(2);
let selectedQty = 0;
parentEl
.closest(".config-content")
.find(".qty-selector")
.each(function () {
selectedQty = selectedQty + +$(this).val();
});
hardDriveSelectedQty = selectedQty;
if (hardDriveSelectedQty > hardDriveMaxQty) {
return false;
} else {
bindSelectedProduct(
cat,
val,
qty,
parseFloat(totalPrice).toFixed(2),
id,
productCatId,
ElementId
);
updateItemsCount();
updateTotalCartPrice();
hardDriveProgress();
}
});
}
//qunatity selector handlers
const qtySelectors = document.querySelectorAll(".qty-selector");
for (let i = 0; i < qtySelectors.length; i++) {
qtySelectors[i].addEventListener("change", function () {
const selectEl = $(this);
const accordionId = $(this).parents(".accordion").attr("id");
const parentEl = selectEl.parents(".config-product-item");
let val = parseInt(selectEl.val());
const lastSelectedVal = parseInt(selectEl.attr("data-lastval"));
// const price = val * parseFloat(parentEl.attr('data-price')).toFixed(2);
const cat = parentEl.attr("data-cat");
const id = parentEl.attr("data-id");
const productCatId = parentEl.attr("data-productcatid");
const qtySelectEl = parentEl.find(".qty-selector");
// const qty = parseInt(qtySelectEl.val());
$(this)
.closest(".accordion")
.find(".config-price-span")
.removeClass("active");
$(this).closest(".accordion").find(".qty-selector").val(0);
if (val) {
parentEl.find(".qty-selector").val(val);
parentEl.find(".config-price-span").addClass("active");
$(this)
.closest(".accordion")
.find(".form-check-input")
.prop("checked", false);
parentEl.find(".form-check-input").prop("checked", true);
} else {
$(this).val(0);
parentEl.find(".config-price-span").removeClass("active");
parentEl.find(".form-check-input").prop("checked", false);
parentEl.removeClass("selected");
}
let selectedQty = 0;
parentEl
.closest(".config-content")
.find(".qty-selector")
.each(function () {
selectedQty = selectedQty + +$(this).val();
});
$(this)
.closest(".accordion")
.find(".config-product-item")
.removeClass("selected");
const qty = parseInt(qtySelectEl.val());
const price = parentEl.attr("data-price");
const totalPrice = qty * parseFloat(price).toFixed(2);
// const val = checkEl.val();
parentEl.addClass("selected");
bindSelectedProduct(
cat,
parentEl.find(".form-check-input").val(),
qty,
parseFloat(totalPrice).toFixed(2),
id,
productCatId,
accordionId
);
updateItemsCount();
updateTotalCartPrice();
//handling m2-drive
if (cat == "m2-drive") {
if (m2DriveMaxQty >= selectedQty) {
m2DriveSelectedQty = selectedQty;
selectEl.attr("data-lastval", val);
m2DriveProgress();
// parentEl.find('.product-price').text(parseFloat(price).toFixed(2));
const selecedSummaryProduct = $(
`.${cat}-cart-product-${id}[data-accordionid="${accordionId}"]`
);
selecedSummaryProduct.find(".summary-total-qty .qty-span").text(val);
selecedSummaryProduct
.find(".product-price")
.text(parseFloat(price).toFixed(2));
updateTotalCartPrice();
} else {
//alert('Limit Reached Please Select 4 Only ');
// m2DriveSelectedQty = m2DriveSelectedQty - lastSelectedVal;
$('[data-bs-target="#alert-modal"]').click();
// selectEl.val(lastSelectedVal);
parentEl.find("input").prop("checked", false);
parentEl.find(".qty-selector").val(0);
parentEl.find(".config-price-span").removeClass("active");
let selectedQty = 0;
parentEl
.closest(".config-content")
.find(".qty-selector")
.each(function () {
selectedQty = selectedQty + +$(this).val();
m2DriveSelectedQty = selectedQty;
});
m2DriveProgress();
return false;
}
} else {
// parentEl.find('.product-price').text(parseFloat(price).toFixed(2));
const selecedSummaryProduct = $(
`.${cat}-cart-product-${id}[data-accordionid="${accordionId}"]`
);
selecedSummaryProduct.find(".summary-total-qty .qty-span").text(val);
selecedSummaryProduct
.find(".product-price")
.text(parseFloat(totalPrice).toFixed(2));
updateTotalCartPrice();
}
//mvme-drive
if (cat == "nvme-drive") {
if (nvmeDrivemaxqty >= selectedQty) {
nvmeDriveselectedqty = selectedQty;
selectEl.attr("data-lastval", val);
nvmeDriveProgress();
// parentEl.find('.product-price').text(parseFloat(price).toFixed(2));
const selecedSummaryProduct = $(
`.${cat}-cart-product-${id}[data-accordionid="${accordionId}"]`
);
selecedSummaryProduct.find(".summary-total-qty .qty-span").text(val);
selecedSummaryProduct
.find(".product-price")
.text(parseFloat(price).toFixed(2));
updateTotalCartPrice();
} else {
//alert('Limit Reached Please Select 4 Only ');
nvmeDriveselectedqty = nvmeDriveselectedqty - lastSelectedVal;
$('[data-bs-target="#alert-modal"]').click();
selectEl.val(lastSelectedVal);
parentEl.find("input").trigger("click");
return false;
}
} else {
// parentEl.find('.product-price').text(parseFloat(price).toFixed(2));
const selecedSummaryProduct = $(
`.${cat}-cart-product-${id}[data-accordionid="${accordionId}"]`
);
selecedSummaryProduct.find(".summary-total-qty .qty-span").text(val);
selecedSummaryProduct
.find(".product-price")
.text(parseFloat(totalPrice).toFixed(2));
updateTotalCartPrice();
}
//hard-drive
if (cat == "hard-drive") {
if (hardDriveMaxQty >= selectedQty) {
hardDriveSelectedQty = selectedQty;
selectEl.attr("data-lastval", val);
hardDriveProgress();
// parentEl.find(".product-price").text(parseFloat(price).toFixed(2));
const selecedSummaryProduct = $(
`.${cat}-cart-product-${id}[data-accordionid="${accordionId}"]`
);
selecedSummaryProduct.find(".summary-total-qty .qty-span").text(val);
// selecedSummaryProduct
// .find(".product-price")
// .text(parseFloat(price).toFixed(2));
updateTotalCartPrice();
} else {
//alert('Limit Reached Please Select 4 Only ');
$('[data-bs-target="#alert-modal-hard"]').click();
selectEl.val(lastSelectedVal);
parentEl.find("input").trigger("click");
return false;
}
} else {
// parentEl.find('.product-price').text(parseFloat(price).toFixed(2));
const selecedSummaryProduct = $(
`.${cat}-cart-product-${id}[data-accordionid="${accordionId}"]`
);
selecedSummaryProduct.find(".summary-total-qty .qty-span").text(val);
selecedSummaryProduct
.find(".product-price")
.text(parseFloat(totalPrice).toFixed(2));
updateTotalCartPrice();
}
});
}
}, 250);
// updatePrices(rates[usercurency]);