{"version":3,"sources":["../../../../../dev/j/v2/smb/apps/smb-network-sec-tco.js"],"names":["getIsQuantityError","quantity","minQuantity","maxQuantity","Number","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","Vue","use","VueNumeric","config","devtools","appHook","document","getElementById","component","extends","VueChartJs","Bar","mixins","reactiveProp","props","mounted","this","renderChart","chartData","options","delimiters","template","computed","isQuantityError","numberOfUsers","products_to_display","methods","update","targetValue","$emit","htmlDecode","input","DOMParser","parseFromString","documentElement","textContent","el","beforeCreate","PRODUCTS_TO_DISPLAY","JSON","parse","dataset","productsToDisplay","PRICING","pricing","PRICING_COMPETITOR_AV_SPA","pricingCompetitor","PRICING_COMPETITOR_SIG","pricingCompetitorSig","LOCAL_PRICE_FORMAT","localPriceFormat","REQUESTED_CURRENCY_CODE","currencyCode","UTM_MAPS","utmMap","UTM_MAP_SINGLE","SINGLE","UTM_MAP_MULTIPLE","MULTIPLE","CONECTIVITY_OPTIONS","data","numberOfEmployees","numberOfLocations","numberOfWorkstations","numberOfVpnUsers","speedConectivity","productSig","productIdSelected","productAv","productSpa","utmKeyForCompSig","getUtmKey","productsCompAv1y","getFilteredProdcutsById","productsCompAv3y","productsCompSpa1y","productsCompSpa3y","priceCompAv1y","unitPrice","getUnitPrice","price","priceCompAv3y","priceCompSpa1y","priceCompSpa3y","priceCompSig1y","getPriceCompSig","priceCompSig3y","productsAvastAv","productsAvastSpa","productsAvastSig","priceAvastAv","checkQuantityErrorForAvast","priceAvastSpa","priceAvastSig","resultUtmCost1y","resultUtmCost3y","resultAvastCost1y","watch","val","itemInRange","find","item","QTY_START","QTY_END","UTM","products","product","PRICE","productId","String","PRODUCT_ID","toLowerCase","CURRENCY_CODE","utmKey","periodKey","HW","HA","console","error","productKey"],"mappings":"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","file":"smb-network-sec-tco.js","sourcesContent":["/**\n * vue-smb-pmg-roi\n * @version 1.0.0\n * @author Erik Ondrus \n * @requires chartjs-2.7.1.min.js\t(j/v2/smb/vendor/chartjs-2.7.1.min.js)\n * @requires vue-chartjs-3.5.1.min.js\t(j/v2/smb/vendor/vue-chartjs-3.5.1.min.js)\n * @requires accounting.min.js\t(j/v2/smb/vendor/accounting.min.js)\n * @requires vue-numeric.min.js\t(j/v2/smb/vendor/vue-numeric.min.js)\n */\n\n(function() {\n\t'use strict';\n\n\tVue.use(VueNumeric.default);\n\tVue.config.devtools = true;\n\n\tvar appHook = document.getElementById('vue-tco-calculator');\n\n\tif (appHook.length === 0) {\n\t\treturn false;\n\t}\n\n\tVue.component('bar-chart', {\n\t\textends: VueChartJs.Bar,\n\t\tmixins: [VueChartJs.mixins.reactiveProp],\n\t\tprops: ['options'],\n\t\tmounted: function() {\n\t\t\tthis.renderChart(this.chartData, this.options);\n\t\t}\n\t});\n\n\tVue.component('avast-product-option', {\n\t\tdelimiters: ['{%', '%}'],\n\t\tprops: ['value', 'products_to_display', 'price', 'input_id', 'label_product', 'label_users', 'label_cost', 'price_format'],\n\t\ttemplate: '#avast-product-option',\n\t\tcomputed: {\n\t\t\tisQuantityError: function() {\n\t\t\t\treturn getIsQuantityError(this.value.numberOfUsers, this.products_to_display.minQuantity, this.products_to_display.maxQuantity);\n\t\t\t}\n\t\t},\n\t\tmethods: {\n\t\t\tupdate: function(key, targetValue) {\n\t\t\t\tthis.$emit('input', _objectSpread(_objectSpread({}, this.value), {}, _defineProperty({}, key, targetValue)));\n\t\t\t},\n\t\t\thtmlDecode: function(input) {\n\t\t\t\tvar doc = new DOMParser().parseFromString(input, 'text/html');\n\t\t\t\treturn doc.documentElement.textContent;\n\t\t\t}\n\t\t}\n\t});\n\n\tvar app = new Vue({\n\t\tel: appHook,\n\t\tdelimiters: ['{%', '%}'],\n\n\t\tbeforeCreate: function() {\n\t\t\tthis.PRODUCTS_TO_DISPLAY = JSON.parse(appHook.dataset.productsToDisplay || null);\n\t\t\tthis.PRICING = JSON.parse(appHook.dataset.pricing || null);\n\t\t\tthis.PRICING_COMPETITOR_AV_SPA = JSON.parse(appHook.dataset.pricingCompetitor || null);\n\t\t\tthis.PRICING_COMPETITOR_SIG = JSON.parse(appHook.dataset.pricingCompetitorSig || null);\n\t\t\tthis.LOCAL_PRICE_FORMAT = JSON.parse(appHook.dataset.localPriceFormat || null);\n\t\t\tthis.REQUESTED_CURRENCY_CODE = appHook.dataset.currencyCode || 'USD';\n\n\t\t\tthis.UTM_MAPS = JSON.parse(appHook.dataset.utmMap || null);\n\t\t\tthis.UTM_MAP_SINGLE = this.UTM_MAPS.SINGLE;\n\t\t\tthis.UTM_MAP_MULTIPLE = this.UTM_MAPS.MULTIPLE;\n\n\t\t\tthis.CONECTIVITY_OPTIONS = [50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500, 1550, 1600, 1650, 1700, 1750, 1800, 1850, 1900, 1950, 2000];\n\t\t},\n\n\t\tdata: {\n\t\t\tnumberOfEmployees: 25,\n\t\t\tnumberOfLocations: 1,\n\t\t\tnumberOfWorkstations: 25,\n\t\t\tnumberOfVpnUsers: 50,\n\t\t\tspeedConectivity: 50,\n\n\t\t\tproductSig: {\n\t\t\t\tproductIdSelected: 32,\n\t\t\t\tnumberOfUsers: 25\n\t\t\t},\n\t\t\tproductAv: {\n\t\t\t\tproductIdSelected: 3,\n\t\t\t\tnumberOfUsers: 25\n\t\t\t},\n\t\t\tproductSpa: {\n\t\t\t\tproductIdSelected: 63,\n\t\t\t\tnumberOfUsers: 50\n\t\t\t}\n\t\t},\n\n\t\tcomputed: {\n\n\t\t\t/*\n\t\t\t * @returns {string} \"UTM\" key (\"UTM1\") used to calculate SIG competitor's price\n\t\t\t */\n\t\t\tutmKeyForCompSig: function() {\n\t\t\t\treturn this.numberOfLocations < 2 ? this.getUtmKey(this.UTM_MAP_SINGLE, this.speedConectivity) : this.getUtmKey(this.UTM_MAP_MULTIPLE, this.speedConectivity);\n\t\t\t},\n\n\t\t\t/*\n\t\t\t # Filtered competitor products ↓↓↓\n\t\t\t * @returns {array} array of objects - filtered products\n\t\t\t */\n\n\t\t\tproductsCompAv1y: function() {\n\t\t\t\treturn this.getFilteredProdcutsById(this.PRICING_COMPETITOR_AV_SPA, 'av-1y');\n\t\t\t},\n\n\t\t\tproductsCompAv3y: function() {\n\t\t\t\treturn this.getFilteredProdcutsById(this.PRICING_COMPETITOR_AV_SPA, 'av-3y');\n\t\t\t},\n\n\t\t\tproductsCompSpa1y: function() {\n\t\t\t\treturn this.getFilteredProdcutsById(this.PRICING_COMPETITOR_AV_SPA, 'spa-1y');\n\t\t\t},\n\n\t\t\tproductsCompSpa3y: function() {\n\t\t\t\treturn this.getFilteredProdcutsById(this.PRICING_COMPETITOR_AV_SPA, 'spa-3y');\n\t\t\t},\n\n\t\t\t/*\n\t\t\t # Competitor pricing ↓↓↓\n\t\t\t * @returns {number} Competitor Price\n\t\t\t */\n\n\t\t\tpriceCompAv1y: function() {\n\t\t\t\tvar unitPrice = this.getUnitPrice(this.productsCompAv1y, this.numberOfWorkstations);\n\t\t\t\tvar price = unitPrice * this.numberOfWorkstations;\n\t\t\t\treturn price >= 0 ? price : 0;\n\t\t\t},\n\n\t\t\tpriceCompAv3y: function() {\n\t\t\t\tvar unitPrice = this.getUnitPrice(this.productsCompAv3y, this.numberOfWorkstations);\n\t\t\t\tvar price = unitPrice * this.numberOfWorkstations;\n\t\t\t\treturn price >= 0 ? price : 0;\n\t\t\t},\n\n\t\t\tpriceCompSpa1y: function() {\n\t\t\t\tvar unitPrice = this.getUnitPrice(this.productsCompSpa1y, this.numberOfVpnUsers);\n\t\t\t\tvar price = unitPrice + 1995;\n\t\t\t\treturn price >= 0 ? price : 0;\n\t\t\t},\n\n\t\t\tpriceCompSpa3y: function() {\n\t\t\t\tvar unitPrice = this.getUnitPrice(this.productsCompSpa3y, this.numberOfVpnUsers);\n\t\t\t\tvar price = unitPrice + 1995;\n\t\t\t\treturn price >= 0 ? price : 0;\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * @returns {number} Competitor Price based on UTM map - SIG - 1Y\n\t\t\t */\n\t\t\tpriceCompSig1y: function() {\n\t\t\t\treturn this.getPriceCompSig(this.utmKeyForCompSig, '1Y');\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * @returns {number} Competitor Price based on UTM map - SIG - 3Y\n\t\t\t */\n\t\t\tpriceCompSig3y: function() {\n\t\t\t\treturn this.getPriceCompSig(this.utmKeyForCompSig, '3Y');\n\t\t\t},\n\n\t\t\t/*\n\t\t\t # Filtered competitor products ↓↓↓\n\t\t\t * @returns {array} array of objects - filtered products\n\t\t\t */\n\n\t\t\tproductsAvastAv: function() {\n\t\t\t\treturn this.getFilteredProdcutsById(this.PRICING, this.productAv.productIdSelected);\n\t\t\t},\n\n\t\t\tproductsAvastSpa: function() {\n\t\t\t\treturn this.getFilteredProdcutsById(this.PRICING, this.productSpa.productIdSelected);\n\t\t\t},\n\n\t\t\tproductsAvastSig: function() {\n\t\t\t\treturn this.getFilteredProdcutsById(this.PRICING, this.productSig.productIdSelected);\n\t\t\t},\n\n\t\t\t/*\n\t\t\t # Avast pricing ↓↓↓\n\t\t\t * @returns {number} final price for avast product\n\t\t\t */\n\n\t\t\tpriceAvastAv: function() {\n\t\t\t\tif (this.checkQuantityErrorForAvast(this.productAv.numberOfUsers, 'av')) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tvar unitPrice = this.getUnitPrice(this.productsAvastAv, this.productAv.numberOfUsers);\n\t\t\t\treturn unitPrice * this.productAv.numberOfUsers;\n\t\t\t},\n\n\t\t\tpriceAvastSpa: function() {\n\t\t\t\tif (this.checkQuantityErrorForAvast(this.productSpa.numberOfUsers, 'spa')) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tvar unitPrice = this.getUnitPrice(this.productsAvastSpa, this.productSpa.numberOfUsers);\n\t\t\t\treturn unitPrice * this.productSpa.numberOfUsers;\n\t\t\t},\n\n\t\t\tpriceAvastSig: function() {\n\t\t\t\tif (this.checkQuantityErrorForAvast(this.productSig.numberOfUsers, 'sig')) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tvar unitPrice = this.getUnitPrice(this.productsAvastSig, this.productSig.numberOfUsers);\n\t\t\t\treturn unitPrice * this.productSig.numberOfUsers;\n\t\t\t},\n\n\t\t\t/*\n\t\t\t # Results ↓↓↓\n\t\t\t * @returns {number} costs\n\t\t\t */\n\n\t\t\tresultUtmCost1y: function() {\n\t\t\t\treturn this.priceCompAv1y + this.priceCompSpa1y + this.priceCompSig1y;\n\t\t\t},\n\n\t\t\tresultUtmCost3y: function() {\n\t\t\t\treturn this.priceCompAv3y + this.priceCompSpa3y + this.priceCompSig3y;\n\t\t\t},\n\n\t\t\tresultAvastCost1y: function() {\n\t\t\t\treturn this.priceAvastAv + this.priceAvastSpa + this.priceAvastSig;\n\t\t\t}\n\t\t},\n\n\t\twatch: {\n\t\t\tnumberOfEmployees: function(val) {\n\t\t\t\tthis.productSig.numberOfUsers = val;\n\t\t\t\tthis.productAv.numberOfUsers = val;\n\t\t\t},\n\t\t\tnumberOfVpnUsers: function(val) {\n\t\t\t\tthis.productSpa.numberOfUsers = val;\n\t\t\t}\n\t\t},\n\n\t\tmethods: {\n\n\t\t\t/*\n\t\t\t * @param {array} utm map (UTM_MAP_SINGLE/UTM_MAP_MULTIPLE)\n\t\t\t * @param {number} value - speedConectivity\n\t\t\t * @returns {string} UTM key\n\t\t\t */\n\t\t\tgetUtmKey: function(utmMap, value) {\n\t\t\t\tvar itemInRange = utmMap.find(function(item) {\n\t\t\t\t\treturn value >= item.QTY_START && value <= item.QTY_END;\n\t\t\t\t});\n\n\t\t\t\treturn itemInRange ? itemInRange.UTM : utmMap[utmMap.length - 1].UTM; // If not found, take last value - it is ordered\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * @param {array} Products\n\t\t\t * @param {number} quantity - number of devices\n\t\t\t * @returns {number} Price for one device\n\t\t\t */\n\t\t\tgetUnitPrice: function(products, quantity) {\n\t\t\t\tif (quantity < 1) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tvar product = products.find(function(product) {\n\t\t\t\t\treturn quantity >= product.QTY_START && quantity <= product.QTY_END;\n\t\t\t\t});\n\n\t\t\t\tif (!product) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn product.PRICE;\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * @param {array} Products\n\t\t\t * @param {string} productId\n\t\t\t * @returns {array} Filtered products by ID and currency code\n\t\t\t */\n\t\t\tgetFilteredProdcutsById: function(products, productId) {\n\t\t\t\tvar currencyCode = this.REQUESTED_CURRENCY_CODE;\n\t\t\t\treturn products.filter(function(product) {\n\t\t\t\t\treturn String(product.PRODUCT_ID).toLowerCase() === String(productId).toLowerCase() && String(product.CURRENCY_CODE).toLowerCase() === String(currencyCode).toLowerCase();\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * @param {string} utmKey (\"UTM1\")\n\t\t\t * @param {string} periodKey (\"1Y\")\n\t\t\t * @returns {number} Price for competitor SIG\n\t\t\t */\n\t\t\tgetPriceCompSig: function(utmKey, periodKey) {\n\t\t\t\tif (this.PRICING_COMPETITOR_SIG[utmKey]) {\n\t\t\t\t\treturn (this.PRICING_COMPETITOR_SIG[utmKey].HW + this.PRICING_COMPETITOR_SIG[utmKey][periodKey] + this.PRICING_COMPETITOR_SIG[utmKey].HA) * this.numberOfLocations;\n\t\t\t\t}\n\t\t\t\tconsole.error(utmKey + 'does not exist');\n\t\t\t\treturn null;\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * @param {number} quantity - number of devices\n\t\t\t * @param {string} productKey - ('sig', 'av', 'spa')\n\t\t\t * @returns {booelan} isQuantityError\n\t\t\t */\n\t\t\tcheckQuantityErrorForAvast: function(quantity, productKey) {\n\t\t\t\treturn getIsQuantityError(quantity, this.PRODUCTS_TO_DISPLAY[productKey].minQuantity, this.PRODUCTS_TO_DISPLAY[productKey].maxQuantity);\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * @param {string} input - Value to decode (£)\n\t\t\t * @returns {string} Decoded value (£)\n\t\t\t */\n\t\t\thtmlDecode: function(input) {\n\t\t\t\tvar doc = new DOMParser().parseFromString(input, 'text/html');\n\t\t\t\treturn doc.documentElement.textContent;\n\t\t\t}\n\t\t}\n\t});\n\n\t/*\n\t * @param {number} quantity - number of devices\n\t * @param {number} minQuantity - min number of devices\n\t * @param {number} maxQuantity - max number of devices\n\t * @returns {boolean} if the quantity is out of possible range\n\t */\n\tfunction getIsQuantityError(quantity, minQuantity, maxQuantity) {\n\t\tif (Number(quantity) === 0) {\n\t\t\treturn false;\n\t\t}\n\t\treturn Number(quantity) < Number(minQuantity) || Number(quantity) > Number(maxQuantity);\n\t}\n\n\t/*\n\t # ES6 transpiled ↓↓↓\n\t */\n\tfunction ownKeys(object, enumerableOnly) {\n\t\tvar keys = Object.keys(object);\n\t\tif (Object.getOwnPropertySymbols) {\n\t\t\tvar symbols = Object.getOwnPropertySymbols(object);\n\t\t\tif (enumerableOnly) {\n\t\t\t\tsymbols = symbols.filter(function(sym) {\n\t\t\t\t\treturn Object.getOwnPropertyDescriptor(object, sym).enumerable;\n\t\t\t\t});\n\t\t\t}\n\t\t\tkeys.push.apply(keys, symbols);\n\t\t}\n\t\treturn keys;\n\t}\n\n\tfunction _objectSpread(target) {\n\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\tvar source = arguments[i] != null ? arguments[i] : {};\n\t\t\tif (i % 2) {\n\t\t\t\townKeys(Object(source), true).forEach(function(key) {\n\t\t\t\t\t_defineProperty(target, key, source[key]);\n\t\t\t\t});\n\t\t\t} else if (Object.getOwnPropertyDescriptors) {\n\t\t\t\tObject.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n\t\t\t} else {\n\t\t\t\townKeys(Object(source)).forEach(function(key) {\n\t\t\t\t\tObject.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t}\n\n\tfunction _defineProperty(obj, key, value) {\n\t\tif (key in obj) {\n\t\t\tObject.defineProperty(obj, key, {\n\t\t\t\tvalue: value,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t} else {\n\t\t\tobj[key] = value;\n\t\t}\n\t\treturn obj;\n\t}\n})();\n"]}