{"version":3,"sources":["canvasinstore.js"],"names":["_createForOfIteratorHelper","o","allowArrayLike","normalCompletion","didErr","err","i","it","Symbol","iterator","s","call","n","step","next","done","e","_e2","f","return","Array","isArray","_unsupportedIterableToArray","length","F","value","_e","TypeError","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","imageAspectRatio","imageWidth","imageHeight","imageId","imageDpi","_step","imageEl","document","querySelector","regularMediaEl","thumbsMediaEl","attributeEls","querySelectorAll","_iterator","attEl","addEventListener","selectedProductByAttribute","recalculate","cartDescription","featuredMedia","media","imageOrientation","canvasWidth","canvasHeight","perimeter","sId","sObject","maxWidth","maxHeight","cartNotes","getElementById","productIDEl","tEntityIDEl","mediaUrlEl","mediaIDEl","productTitleEl","orderQuantityEl","cartPriceEl","xCanvasEl","yCanvasEl","setCanvasWidth","dimRangeEl","setCanvasHeight","sellingPriceEl","regularPriceEl","cardButtonEl","cartDescriptionEl","quantityEl","JObjectEl","JObject","JSON","parse","jsEntityEl","jsEntity","regPrice","price","productAvailable","selectedProduct","Products","filter","item","IsFeatured","quantity","woodFramCost","minWidth","minHeight","minPrintArea","printArea","undefined","dimChange","toFixed","setQuantity","updateSelectedProductAttr","product","jO","ProductAttributes","ID","EntityAttributeID","RenderAs","concat","EntityAttributeValueID","checked","updateView","getImage","getParameterByName","calcPerimeter","SellingPrice","getFramePrice","Math","round","Number","EPSILON","RegularPrice","IsInSale","innerHTML","dataset","regularprice","sellingprice","attributesToString","cartdescription","isNaN","disabled","setAllValues","calculatedSellingPrice","updateJsonLD","x1","y1","x","parseFloat","y","jo","map","attrTemplate","join","ProductAttributeValues","Description","callback","url","window","location","origin","$","ajax","cache","type","content","dataType","data","success","d","mediaLibraryMedia","attr","Url","AltText","Title","title","AspectRatio","OriginalWidth","OriginalHeight","OriginalDpi","toastr","error","message","callBack","props","q","renderas","push","aId","attributeid","vId","attributevalueid","IsActive","condition","j","k","alert","getRes","ProductID","tEntityID","protocol","host","attrEl","attrElValue","IsClientCalculated","c","RetailPriceAdjustment"],"mappings":"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","file":"canvasinstore.es5.min.js","sourcesContent":["\"use strict\";\r\n\r\nconst imageEl = document.querySelector(\".sImage\")\r\nconst regularMediaEl = document.querySelector(\".regularMedia\") // wrapper(s) for display images\r\nconst thumbsMediaEl = document.querySelector(\".thumbsMedia\") // wrapper(s) for display images\r\n\r\nlet imageAspectRatio, imageWidth, imageHeight, imageId, imageDpi\r\nconst attributeEls = document.querySelectorAll(\"[data-type='attribute']\"); // get all product attributes\r\nfor (const attEl of attributeEls) {\r\n attEl.addEventListener(\"change\", () => selectedProductByAttribute(recalculate))\r\n}\r\nconst cartNotes = document.getElementById(\"cartNotes\")\r\n\r\nconst productIDEl = document.querySelector(\"#productID\")\r\nconst tEntityIDEl = document.querySelector(\"#tEntityID\")\r\nconst mediaUrlEl = document.querySelector(\"#mediaUrl\")\r\nconst mediaIDEl = document.querySelector(\"#mediaID\")\r\nconst productTitleEl = document.querySelector(\"#productTitle\")\r\nconst orderQuantityEl = document.querySelector(\"#orderQuantity\")\r\nconst cartPriceEl = document.querySelector(\"#cartPrice\")\r\n\r\nconst xCanvasEl = document.querySelector(\"#xCanvas\")\r\nxCanvasEl.addEventListener(\"change\", setCanvasWidth)\r\n\r\nconst yCanvasEl = document.querySelector(\"#yCanvas\")\r\nyCanvasEl.addEventListener(\"change\", setCanvasHeight)\r\n\r\nconst dimRangeEl = document.querySelector(\"#dimRange\")\r\n\r\nconst sellingPriceEl = document.querySelector(\".sellingPrice\")\r\nconst regularPriceEl = document.querySelector(\".regularPrice\")\r\n\r\nconst cardButtonEl = document.querySelector(\".cardButton\")\r\nconst cartDescriptionEl = document.querySelector(\".cartDescription\")\r\nconst quantityEl = document.querySelector(\".qty-text\")\r\n\r\nconst JObjectEl = document.querySelector(\"#product_JObject\")\r\nconst JObject = JSON.parse(JObjectEl.value)\r\n\r\nconst jsEntityEl = document.querySelector(\"#jsEntity\")\r\nconst jsEntity = JSON.parse(jsEntityEl.value)\r\n\r\n\r\nlet regPrice = 0\r\nlet price = 0\r\nlet selectedProduct\r\nlet cartDescription\r\nlet featuredMedia\r\nlet media\r\nlet productAvailable = true\r\nlet imageOrientation\r\n\r\n// find and set as default selected product the IsFeatured\r\nselectedProduct = jsEntity.Products.filter(item => item.IsFeatured)[0]\r\n//updateJsonLD(selectedProduct, jsEntity)\r\n//console.log(selectedProduct)\r\n//console.log(JObject)\r\n\r\nlet canvasWidth, canvasHeight\r\nlet quantity = quantityEl.value\r\nlet perimeter\r\nlet woodFramCost = 0\r\nlet sId\r\nlet sObject\r\nlet minWidth = 40\r\nlet minHeight = 40\r\nlet maxWidth, maxHeight\r\nlet minPrintArea = 0.75\r\n\r\n// minimum values in cm\r\nif (canvasWidth == undefined)\r\n canvasWidth = minWidth\r\nif (canvasHeight == undefined)\r\n canvasHeight = minHeight\r\nlet printArea = 1 // minimum value\r\n\r\nupdateView()\r\nupdateSelectedProductAttr(selectedProduct)\r\n//console.log(jsEntity)\r\n\r\nfunction dimChange() {\r\n if (imageOrientation <= 2) {\r\n xCanvasEl.value = dimRangeEl.value\r\n setCanvasWidth()\r\n }\r\n if (imageOrientation == 3) {\r\n yCanvasEl.value = dimRangeEl.value\r\n setCanvasHeight()\r\n }\r\n}\r\n\r\nfunction setCanvasWidth() {\r\n yCanvasEl.value = (xCanvasEl.value / imageAspectRatio).toFixed(0)\r\n canvasWidth = xCanvasEl.value\r\n canvasHeight = yCanvasEl.value\r\n recalculate()\r\n}\r\n\r\nfunction setCanvasHeight() {\r\n xCanvasEl.value = (yCanvasEl.value * imageAspectRatio).toFixed(0)\r\n canvasWidth = xCanvasEl.value\r\n canvasHeight = yCanvasEl.value\r\n recalculate()\r\n}\r\n\r\n//quantity.addEventListener(\"change\", setQuantity) does not work. Instead onchange added to the element\r\nfunction setQuantity() {\r\n quantity = quantityEl.value\r\n recalculate()\r\n}\r\n\r\nfunction updateSelectedProductAttr(product) {\r\n var jO = JSON.parse(product.JObject)\r\n\r\n for (var i = 0; i < jO.length; i++) {\r\n var r = product.ProductAttributes.filter(item => item.ID == jO[i].EntityAttributeID)[0]\r\n switch (r.RenderAs) {\r\n case 0: //Text = 0\r\n // code block\r\n break;\r\n case 1: //RadioButtonsList = 1\r\n document.querySelector(`[id=\"attr-${jO[i].EntityAttributeID}-${jO[i].EntityAttributeValueID}\"]`).checked = true\r\n break;\r\n case 2: //CheckboxList = 2\r\n // code block\r\n break;\r\n case 3: //DropDownList = 3\r\n document.querySelector(`[id=\"attr-${jO[i].EntityAttributeID}\"]`).value = jO[i].EntityAttributeValueID\r\n\r\n // code block\r\n break;\r\n case 4: //SelectList = 4\r\n // code block\r\n break;\r\n case 5: //ColorList = 5\r\n // code block\r\n break;\r\n case 6: //ColorWheel = 6\r\n // code block\r\n break;\r\n default:\r\n // code block\r\n }\r\n }\r\n //updateJsonLD(product, jsEntity)\r\n\r\n}\r\n\r\n\r\nfunction updateView() {\r\n // get image bank id from query string and get the image via ajax\r\n sId = getParameterByName(\"sId\")\r\n getImage(sId, recalculate)\r\n}\r\n\r\n// Recalculate price on user inputs\r\nfunction recalculate() {\r\n \r\n printArea = (canvasWidth / 100) * (canvasHeight / 100)\r\n if (printArea < minPrintArea)\r\n printArea = minPrintArea // minimum\r\n\r\n perimeter = calcPerimeter(canvasWidth, canvasHeight)\r\n price = selectedProduct.SellingPrice * printArea * quantity\r\n // Calculate wooded frame if any\r\n price += getFramePrice(selectedProduct) * perimeter * quantity\r\n price = (Math.round((price + Number.EPSILON) * 100) / 100).toFixed(2)\r\n // Regular price calculation to display aside the selling price\r\n regPrice = selectedProduct.RegularPrice * printArea * quantity\r\n regPrice += getFramePrice(selectedProduct) * perimeter * quantity\r\n regPrice = (Math.round((regPrice + Number.EPSILON) * 100) / 100).toFixed(2)\r\n\r\n if (selectedProduct.IsInSale) {\r\n regularPriceEl.innerHTML = `${regPrice} \\u20AC`\r\n sellingPriceEl.dataset.regularprice = (regPrice / quantity).toFixed(2)\r\n }\r\n else {\r\n regularPriceEl.innerHTML = ``\r\n sellingPriceEl.dataset.regularprice = 0\r\n }\r\n //console.log(price)\r\n\r\n\r\n sellingPriceEl.innerHTML = price + '\\u20AC'\r\n sellingPriceEl.dataset.price = price\r\n sellingPriceEl.dataset.sellingprice = (price / quantity).toFixed(2)\r\n\r\n /*attributesToString(selectedProduct)*/\r\n cartDescription = attributesToString(selectedProduct) + \" (\" + xCanvasEl.value + \" x \" + yCanvasEl.value +\") \" /*+ printArea.toFixed(2) + \"m2 X \" + selectedProduct.SellingPrice + \"\\u20AC/m2 \"*/ \r\n\r\n\r\n cartDescriptionEl.innerHTML = cartDescription\r\n cartDescriptionEl.dataset.cartdescription = cartDescription\r\n if (price == 0 || price == undefined || isNaN(price)) \r\n cardButtonEl.disabled = true\r\n else\r\n cardButtonEl.disabled = false\r\n setAllValues()\r\n let calculatedSellingPrice = (price / quantity).toFixed(2)\r\n updateJsonLD(selectedProduct, jsEntity, calculatedSellingPrice)\r\n}\r\n\r\nfunction calcPerimeter(x1, y1) {\r\n let x = parseFloat(x1)\r\n let y = parseFloat(y1)\r\n perimeter = (x + y) * 2\r\n if (x > 120) {\r\n perimeter += y\r\n }\r\n if (y > 120) {\r\n perimeter += x\r\n }\r\n return (perimeter/100)\r\n}\r\n\r\n// *** Two functions to return the full description from attributes\r\nfunction attributesToString(product) {\r\n let s = \"\"\r\n let jo = JSON.parse(product.JObject)\r\n //console.log(jo)\r\n let s1 = `${jo.map(attrTemplate).join(\"\")}`\r\n //console.log(s1)\r\n return s + s1\r\n}\r\n\r\nfunction attrTemplate(jo) {\r\n var x = selectedProduct.ProductAttributes.filter(item => item.ID == jo.EntityAttributeID)[0]\r\n var y = x.ProductAttributeValues.filter(f => f.EntityAttributeValueID == jo.EntityAttributeValueID)[0]\r\n return ` ${y.Description} `\r\n}\r\n// *** END Two functions to return the full description from attributes\r\n\r\n// get ImageBank image and assign it to img element\r\nfunction getImage(sId, callback) {\r\n var url = window.location.origin + \"/ImageBank/GetImageBankItem\"\r\n $.ajax({\r\n cache: false,\r\n type: \"GET\",\r\n url: url,\r\n content: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n data: {\r\n sId: sId\r\n },\r\n success: function (d) {\r\n if (d.success) {\r\n sObject = JSON.parse(d.data);\r\n window.mediaLibraryMedia = sObject; // for updateJsonLD helper function\r\n $(\".sImage\").attr(\"src\", sObject.Url);\r\n $(\".sImage\").attr(\"alt\", sObject.AltText);\r\n thumbsMediaEl.innerHTML = `
\r\n \"${sObject.AltText}\"\r\n
`\r\n productTitleEl.innerHTML = jsEntity.Title + \"-\" + sObject.ID + \" \" + (sObject.Title == null ? \"\" : sObject.Title)\r\n document.title = jsEntity.Title + \"-\" + sObject.ID + \" \" + (sObject.Title == null ? \"\" : sObject.Title)\r\n imageAspectRatio = sObject.AspectRatio;\r\n dimRangeEl.addEventListener(\"change\", dimChange);\r\n if (imageAspectRatio == 1) {\r\n imageOrientation = 1; // Rectangle\r\n }\r\n if (imageAspectRatio < 1) {\r\n imageOrientation = 2; // Portrait\r\n yCanvasEl.value = (canvasWidth / imageAspectRatio).toFixed(0)\r\n canvasHeight = canvasWidth / imageAspectRatio\r\n }\r\n if (imageAspectRatio > 1) {\r\n imageOrientation = 3; // Landscape\r\n xCanvasEl.value = (canvasHeight * imageAspectRatio).toFixed(0)\r\n canvasWidth = canvasHeight * imageAspectRatio\r\n }\r\n imageWidth = sObject.OriginalWidth;\r\n imageHeight = sObject.OriginalHeight;\r\n imageId = sObject.ID;\r\n imageDpi = sObject.OriginalDpi;\r\n setAllValues()\r\n callback()\r\n }\r\n else {\r\n toastr.error(d.message)\r\n }\r\n },\r\n error: function (d) {\r\n toastr.error(\"error saving/updating\")\r\n }\r\n })\r\n}\r\n\r\nfunction selectedProductByAttribute(callBack) {\r\n var props = []\r\n for (var q = 0; q < attributeEls.length; q++) {\r\n if (attributeEls[q].dataset.renderas == \"radio\" && attributeEls[q].checked) {\r\n props.push(\r\n {\r\n aId: attributeEls[q].dataset.attributeid,\r\n vId: attributeEls[q].dataset.attributevalueid\r\n })\r\n }\r\n\r\n if (attributeEls[q].dataset.renderas == \"dropdown\") {\r\n props.push(\r\n {\r\n aId: attributeEls[q].dataset.attributeid,\r\n vId: attributeEls[q].value\r\n })\r\n }\r\n }\r\n\r\n for (var i = 0; i < jsEntity.Products.length; i++) {\r\n if (jsEntity.Products[i].IsActive) {\r\n let jo = JSON.parse(jsEntity.Products[i].JObject)\r\n let condition = 0\r\n for (var j = 0; j < props.length; j++) {\r\n for (var k = 0; k < jo.length; k++) {\r\n if (jo[k].EntityAttributeID == props[j].aId && jo[k].EntityAttributeValueID == props[j].vId)\r\n condition += 1\r\n }\r\n }\r\n if (condition == props.length) { // found\r\n selectedProduct = jsEntity.Products[i]\r\n productAvailable = true\r\n //console.log(selectedProduct)\r\n updateSelectedProductAttr(selectedProduct)\r\n setAllValues()\r\n updateView()\r\n callBack()\r\n return\r\n }\r\n }\r\n }\r\n alert(`${getRes(\"Product\", \"ProductNotAvailable\")}`)\r\n\r\n productAvailable = false\r\n cardButtonEl.disabled = true\r\n return false\r\n}\r\n\r\nfunction setAllValues() {\r\n \r\n productIDEl.value = selectedProduct.ProductID\r\n tEntityIDEl.value = jsEntity.tEntityID\r\n if (sObject != null) {\r\n mediaUrlEl.value = `${window.location.protocol}//${window.location.host}${sObject.Url}`\r\n mediaIDEl.value = sObject.ID\r\n }\r\n orderQuantityEl.value = quantity\r\n cartPriceEl.value = price\r\n}\r\n\r\nfunction getFramePrice(product) {\r\n let id = product.ProductID\r\n\r\n let attr = product.ProductAttributes.filter(item => item.IsClientCalculated)[0]\r\n if (attr != null) {\r\n let attrEl\r\n let attrElValue\r\n switch (attr.RenderAs) {\r\n case 0: //Text = 0\r\n // code block\r\n break;\r\n case 1: //RadioButtonsList = 1\r\n attrEl = document.querySelectorAll(`[name=\"attr-${attr.ID}\"]`)\r\n attrElValue = Array.from(attrEl).filter(item => item.checked)[0].dataset.attributevalueid // AttributeValueID\r\n break;\r\n case 2: //CheckboxList = 2\r\n // code block\r\n break;\r\n case 3: //DropDownList = 3\r\n attrEl = document.querySelector(`[name=\"attr-${attr.ID}\"]`)\r\n attrElValue = attrEl.value // AttributeValueID\r\n // code block\r\n break;\r\n case 4: //SelectList = 4\r\n // code block\r\n break;\r\n case 5: //ColorList = 5\r\n // code block\r\n break;\r\n case 6: //ColorWheel = 6\r\n // code block\r\n break;\r\n default:\r\n // code block\r\n }\r\n let av = product.ProductAttributes.filter(item => item.ID == attr.ID)[0].ProductAttributeValues.filter(c => c.EntityAttributeValueID == attrElValue)[0].RetailPriceAdjustment\r\n return av // retail price\r\n }\r\n else {\r\n return 0\r\n }\r\n \r\n}\r\n"]}