123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734 |
- // 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<sup>®</sup> Xeon<sup>®</sup> E-2300 Processor Series`,
- products: [
- {
- id: 1,
- title: `Quad-Core Intel<sup>®</sup> Xeon<sup>®</sup> E-2314 Processor 2.8GHz 8MB
- Cache (65W)`,
- qty: 3,
- price: 99,
- },
- {
- id: 2,
- title: `Quad-Core Intel<sup>®</sup> Xeon<sup>®</sup> E-2334 Processor 3.4GHz 8MB Cache (65W)`,
- qty: 3,
- price: 99,
- },
- {
- id: 3,
- title: `Eight-Core Intel<sup>®</sup> Xeon<sup>®</sup> E-2378 Processor 2.6GHz 16MB Cache (65W)`,
- qty: 3,
- price: 99,
- },
- ],
- },
- {
- productcatid: 2,
- productcattitle: `Intel<sup>®</sup> Xeon<sup>®</sup> E-2300 Processor Series with Anwi UHD P750 Graphics`,
- products: [
- {
- id: 1,
- title: `Quad-Core Intel<sup>®</sup> Xeon<sup>®</sup> E-2324G Processor 3.1GHz
- 8MB Cache (65W)`,
- qty: 3,
- price: 99,
- },
- {
- id: 2,
- title: `Quad-Core Intel<sup>®</sup> Xeon<sup>®</sup> E-2374G Processor 3.7GHz 8MB Cache (80W)`,
- qty: 2,
- price: 99,
- },
- {
- id: 3,
- title: `Six-Core Intel<sup>®</sup> Xeon<sup>®</sup> E-2356G Processor 3.2GHz 12MB Cache (80W)`,
- qty: 1,
- price: 99,
- },
- {
- id: 4,
- title: `Six-Core Intel<sup>®</sup> Xeon<sup>®</sup> 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<sup>®</sup> Optane™ SSD DC P4801X Series M.2 PCIe 3.0 x4 NVMe
- Solid State Drive`,
- qty: 4,
- price: 99,
- },
- {
- id: 2,
- title: `200GB Intel<sup>®</sup> 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<sup>®</sup> Optane™ SSD DC P4800X Series U.2 PCIe 3.0 x4 NVMe Solid State Drive`,
- qty: 4,
- price: 269,
- },
- ],
- },
- {
- productcatid: 3,
- productcattitle: `Intel<sup>®</sup> Optane™ DC P4801X Series PCIe 3.0 x4 NVMe Solid State Drives`,
- products: [
- {
- id: 1,
- title: `100GB Intel<sup>®</sup> 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<sup>®</sup> Optane™ DC P4801X Series PCIe 3.0 x4 NVMe Solid State Drives`,
- products: [
- {
- id: 1,
- title: `100GB Intel<sup>®</sup> 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 += `<span class="sms progress-bar progress-bar-${i}"></span>`;
- }
- quantityHtml = `<span>Quantity:</span><div class="max-qty-wrap ml-15"><div class="d-flex justify-content-between align-items-center"><div class="d-flex flex-column"><div class="qty-progress-bars d-flex align-items-center">${qtyProgressBarHtml}</div><div class="d-flex justify-content-between flex-wrap align-items-center mt-1"><span class="small">Max Quantity: ${qty}</span><div class="small"><span class="selected-qty">0</span>/<span class="max-qty-span">${qty}</span></div></div></div></div></div>`;
- }
- maxQtyHtml = `<div class="text-white p-3 border-radius-custom flex-wrap float-lg-end d-flex align-items-center config-max-quantity">${quantityHtml}</div>`;
- }
-
- if (title == "nvme-drive") {
- let quantityHtml = "";
- if (title == "nvme-drive") {
- let qtyProgressBarHtml = "";
- for (let i = 0; i < qty; i++) {
- qtyProgressBarHtml += `<span class="nvdrive progress-bar progress-bar-${i}"></span>`;
- }
- quantityHtml = `<span>Quantity:</span><div class="max-qty-wrap ml-15"><div class="d-flex justify-content-between align-items-center"><div class="d-flex flex-column"><div class="qty-progress-bars nvme d-flex align-items-center">${qtyProgressBarHtml}</div><div class="d-flex justify-content-between flex-wrap align-items-center mt-1"><span class="small">Max Quantity: ${qty}</span><div class="small"><span class="selected-qty">0</span>/<span class="max-qty-span">${qty}</span></div></div></div></div></div>`;
- }
- maxQtyHtml = `<div class="text-white p-3 border-radius-custom flex-wrap float-lg-end d-flex align-items-center config-max-quantity">${quantityHtml}</div>`;
- }
-
- if (title == "hard-drive") {
- let quantityHtml = "";
- if (title == "hard-drive") {
- let qtyProgressBarHtml = "";
- for (let i = 0; i < qty; i++) {
- qtyProgressBarHtml += `<span class="sms progress-bar progress-bar-${i}"></span>`;
- }
- quantityHtml = `<span>Quantity:</span><div class="max-qty-wrap ml-15"><div class="d-flex justify-content-between align-items-center"><div class="d-flex flex-column"><div class="qty-progress-bars d-flex align-items-center">${qtyProgressBarHtml}</div><div class="d-flex justify-content-between flex-wrap align-items-center mt-1"><span class="small">Max Quantity: ${qty}</span><div class="small"><span class="selected-qty">0</span>/<span class="max-qty-span">${qty}</span></div></div></div></div></div>`;
- }
- maxQtyHtml = `<div class="text-white p-3 border-radius-custom flex-wrap float-lg-end d-flex align-items-center config-max-quantity">${quantityHtml}</div>`;
- }
- configCatHtml += `<div class="product-config-selector accordion mb-20" id="config-${title}" data-maxqty='${qty}'>
- <div class="config-heading d-flex justify-content-between flex-wrap align-items-center">
- <h5 class="text-white p-3 border-radius-custom text-uppercase">${title}
- </h5>
- ${maxQtyHtml}
- </div>
- <div class="config-content p-0"></div>
- </div>`;
- });
- $("#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 += `<p class="provide-content product-item">
- <div
- class="name-of-config card-body row justify-content-between py-1 align-items-center config-product-item" data-id='${product.id}' data-cat='${cat}' data-price='${product.price}'>
- <div class="form-check mt-2 col-lg-7" id="form-check">
- <input class="form-check-input product-radio-btn" id="${cat}-radio-btn-${product.id}" type="checkbox" data-checked="false" name= "${name}"
- value="${product.title}" >
- <label class="form-check-label" for="${cat}-radio-btn-${product.id}">
- <strong>${product.title}</strong>
- </label>
- </div>
- <div class="btn-group config-quantity-btn text-black col-lg-2">
- <select class="form-select fw-bold qty-selector product2" id="product1"> <option value="0">Select</option>`;
- for (let i = 1; i <= product.qty; i++) {
- productHtml += `<option value="${i}">Qty: ${i}</option>`;
- }
- if (".product2")
- productHtml += `</select>
- </div>
- <div class="config-pricing col-lg-2">
- <span class="config-price-span p-2 border-radius-custom"><span></span><span class="total-price-amount price-wrap d-flex align-items-center"><span class="currency-symbol">₹</span><span class="product-price">${product.price}</span></span></span>
- </div>
- </div>
- </p>`;
- });
- $(`#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 += `<div class="accordion sub-section mt-4 border-radius-custom" id="${accordion}-${productcatid}">
- <div class="accordion-item">
- <h2 class="accordion-header">
- <button class="accordion-button" style="color:#4e4c7d; background-color: #e7e9f4;"
- type="button" data-bs-toggle="collapse" data-bs-target="#${collapse}-${productcatid}"
- aria-expanded="true" aria-controls="${collapse}-${productcatid}">
- <strong>${productcattitle}</strong>
- </button>
- </h2>
- <div id="${collapse}-${productcatid}" class="accordion-collapse collapse show" data-bs-parent="#${accordion}-${productcatid}">
- <div class="accordion-body">`;
- let productHtml = "";
-
- $.each(productcat.products, function (i, product) {
- productHtml += `
- <div class="name-of-config row justify-content-between py-1 align-items-center config-product-item" data-id='${
- product.id
- }' data-cat='${cat}' data-price='${
- product.price
- }' data-productcatid='${productcatid}'>
- <div class="form-check mt-2 col-lg-7" id="form-check">
- ${appendProcessorAndM2DriveInput(
- cat,
- product.id,
- product.title,
- productcatid
- )}
- </div>
- <div class="btn-group config-quantity-btn text-black col-lg-2">
- <select class="form-select fw-bold qty-selector product2" ${lastSelectDataAttr}> <option value="0">Select</option>`;
- for (let i = 1; i <= product.qty; i++) {
- productHtml += `<option value="${i}">Qty: ${i}</option>`;
- }
- productHtml += `</select>
- </div>
- <div class="config-pricing col-lg-2">
- <span class="config-price-span p-2 border-radius-custom"><span></span><span class="processor-total-price total-price-amount price-wrap d-flex align-items-center"><span class="currency-symbol">₹</span><span class="product-price">${product.price}</span></span> </span>
- </div>
- </div>`;
- });
- productCatHtml += productHtml;
- productCatHtml += `</div>
- </div>
- </div>
- </div>`;
- });
- $(`#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 += `<div class="accordion sub-section mt-4 border-radius-custom" id="${accordion}-${productcatid}">
- <div class="accordion-item">
- <h2 class="accordion-header">
- <button class="accordion-button" style="color:#4e4c7d; background-color: #e7e9f4;"
- type="button" data-bs-toggle="collapse" data-bs-target="#${collapse}-${productcatid}"
- aria-expanded="true" aria-controls="${collapse}-${productcatid}">
- <strong>${productcattitle}</strong>
- </button>
- </h2>
- <div id="${collapse}-${productcatid}" class="accordion-collapse collapse show" data-bs-parent="#${accordion}-${productcatid}">
- <div class="accordion-body">`;
- let productHtml = "";
-
- $.each(productcat.products, function (i, product) {
- productHtml += `
- <div class="name-of-config row justify-content-between py-1 align-items-center config-product-item" data-id='${
- product.id
- }' data-cat='${cat}' data-price='${
- product.price
- }' data-productcatid='${productcatid}'>
- <div class="form-check mt-2 col-lg-7" id="form-check">
- ${appendNVMEHARDDRIVEAndProducts(
- cat,
- product.id,
- product.title,
- productcatid
- )}
- </div>
- <div class="btn-group config-quantity-btn text-black col-lg-2">
- <select class="form-select fw-bold qty-selector product2" ${lastSelectDataAttr}> <option value="0">Select</option>`;
- for (let i = 1; i <= product.qty; i++) {
- productHtml += `<option value="${i}">Qty: ${i}</option>`;
- }
- productHtml += `</select>
- </div>
- <div class="config-pricing col-lg-2">
- <span class="config-price-span p-2 border-radius-custom"><span></span><span class="processor-total-price total-price-amount price-wrap d-flex align-items-center"><span class="currency-symbol">₹</span><span class="product-price">${product.price}</span></span> </span>
- </div>
- </div>`;
- });
- productCatHtml += productHtml;
- productCatHtml += `</div>
- </div>
- </div>
- </div>`;
- });
- $(`#config-${cat} .config-content`).html(productCatHtml);
- }
-
- function appendProcessorAndM2DriveInput(cat, id, title, productcatid = 0) {
- if (cat == "m2-drive") {
- return `<input class="form-check-input product-check-btn" type="checkbox" name="m2Drive-check-btns"
- id="${cat}-check-btn-${productcatid}-${id}" value="${title}" >
- <label class="form-check-label" for="${cat}-check-btn-${productcatid}-${id}">
- <strong>${title}</strong>
- </label>`;
- } else {
- return `<input class="form-check-input product-radio-btn" type="checkbox" name="processor-radio-btns" data-checked="false"
- id="${cat}-radio-btn-${productcatid}-${id}" value="${title}" >
- <label class="form-check-label" for="${cat}-radio-btn-${productcatid}-${id}">
- <strong>${title}</strong>
- </label>`;
- }
- }
-
- function appendNVMEHARDDRIVEAndProducts(cat, id, title, productcatid = 0) {
- if (cat == "nvme-drive") {
- return `<input class="form-check-input product-check" type="checkbox" name="nvme-check-btns"
- id="${cat}-check-btn-${productcatid}-${id}" value="${title}" >
- <label class="form-check-label" for="${cat}-check-btn-${productcatid}-${id}">
- <strong>${title}</strong>
- </label>`;
- } else {
- return `<input class="form-check-input product-hard-btn" type="checkbox" name="hardware-radio-btns"
- id="${cat}-check-btn-${productcatid}-${id}" value="${title}" >
- <label class="form-check-label" for="${cat}-check-btn-${productcatid}-${id}">
- <strong>${title}</strong>
- </label>`;
- }
- }
-
- // 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 = `<div class="alert alert-warning alert-dismissible fade show" role="alert">
- <strong>Holy guacamole!</strong> You should check in on some of those fields below.
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
- </div>`;
- $(".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 = `<li class="w-100 my-1 d-flex align-items-center cart-product-item ${cat}-cart-product-${id}" data-accordionid="${ElementId}" data-productcatid='${productCatId}'><span class="summary-total-qty"><span class="qty-span">${qty}</span><i class="fa fa-times"></i></span>
- <div class="flex-grow-1 d-flex align-items-center justify-content-between"><span class="summary-product-val mr-2">${val}</span>
- <span class="price-wrap d-flex align-items-center"><span class="summary-plus-sign"></span><span class="currency-symbol" id="summary-currency-symbol">${currencysymbol}</span><span class="order-price price-span product-price ml-auto">${price}</span></span>
- </div>
- </li>`;
-
- 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]);
|