{"version":3,"file":"value.js","sources":["../../../../../../../../PRODUCTION/BASE_TEMPLATES/store-global/v4/scripts/utils/fetch.js","../../../charts/calculator/value.js"],"sourcesContent":["function fetch_status(response) {\r\n\tif (response.ok) {\r\n\t\treturn Promise.resolve(response);\r\n\t} else {\r\n\t\treturn Promise.reject(response);\r\n\t}\r\n}\r\n\r\nfunction fetch_json(response) {\r\n\treturn response.json();\r\n}\r\n\r\nfunction fetch_text(response) {\r\n\treturn response.text();\r\n}\r\n\r\nfunction fetch_error_message(error) {\r\n\tlet message = 'Something went wrong...';\r\n\r\n\tif (error.includes('Message')) {\r\n\t\terror = JSON.parse(error);\r\n\t}\r\n\r\n\tif (error.Type && error.Type === 'SessionVerificationRequiredException') {\r\n\t\twindow.location = '/my/session-verification?next=' + window.location.pathname;\r\n\t} else {\r\n\t\tif (error && typeof error === 'object') {\r\n\t\t\tif (error.exception && error.exception.Message) {\r\n\t\t\t\tmessage = error.exception.Message;\r\n\t\t\t} else if (error.responseJSON && error.responseJSON.Message) {\r\n\t\t\t\tmessage = error.responseJSON.Message;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthrow new Error(message);\r\n\t}\r\n}\r\n\r\nfunction fetch_error(error, custom_error) {\r\n\tif (custom_error) {\r\n\t\treturn error.json();\r\n\t} else {\r\n\t\tif (error.name !== 'AbortError') {\r\n\t\t\tfetch_error_message(error);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction fetcher(url = '', options = {}) {\r\n\tconst data = options.is_text ? fetch_text : fetch_json;\r\n\r\n\treturn options.custom_error ?\r\n\t\tfetch(url, options).then(fetch_status).then(data) :\r\n\t\tfetch(url, options).then(fetch_status).then(data).catch(error => {\r\n\t\t\tif (typeof error === 'string') {\r\n\t\t\t\tthrow new Error(message);\r\n\t\t\t} else {\r\n\t\t\t\tif (error.text && typeof error.text === 'function') {\r\n\t\t\t\t\terror.text()\r\n\t\t\t\t\t\t.then(error_text => {\r\n\t\t\t\t\t\t\tfetch_error_message(error_text);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else if (options.signal) {\r\n\t\t\t\t\tif (!options.signal.aborted) {\r\n\t\t\t\t\t\tthrow new Error(error);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(error);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n}\r\n\r\nexport {fetch_status, fetch_json, fetch_text, fetch_error_message, fetch_error, fetcher};","import { fetcher } from '../../../../global/v4/scripts/utils/fetch.js';\r\n\r\nclass ValueCalculator {\r\n\tconstructor () {\r\n\t\tthis.ratesUrl = '/my/api/2/currency/rates/latest?source_currency_code=USD';\r\n\t\tthis.currencies = this.getCurrencies();\r\n\t\tthis.weightUnits = this.getWeightUnits();\r\n\t\tthis.metalPurity = this.getMetalPurity();\r\n\r\n\t\tthis.defaultCurrency = 'USD';\r\n\t\tthis.defaultWeightUnit = 'Troy Ounces';\r\n\r\n\t\tthis.calculatorElement = document.querySelector('.value-calculator');\r\n\r\n\t\tif(!this.calculatorElement) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.fieldsElements = this.calculatorElement.querySelectorAll('input, select');\r\n\t\tthis.weightElement = this.calculatorElement.querySelector('.weight');\r\n\t\tthis.weightUnitElement = this.calculatorElement.querySelector('.weight-unit');\r\n\t\tthis.purityElement = this.calculatorElement.querySelector('.purity');\r\n\t\tthis.purityValueElement = this.calculatorElement.querySelector('.purity-value');\r\n\t\tthis.spotPriceElement = this.calculatorElement.querySelector('.spot-price');\r\n\t\tthis.currencyElement = this.calculatorElement.querySelector('.currency');\r\n\t\tthis.resultElement = this.calculatorElement.querySelector('.result');\r\n\t\tthis.messageElement = this.calculatorElement.querySelector('.message');\r\n\t\tthis.worthElement = this.calculatorElement.querySelector('.worth');\r\n\r\n\t\tthis.currencies.forEach(item => {\r\n\t\t\tconst option = document.createElement('option');\r\n\r\n\t\t\toption.textContent = item.code;\r\n\r\n\t\t\tthis.currencyElement.appendChild(option);\r\n\t\t});\r\n\r\n\t\tthis.weightUnits.forEach(item => {\r\n\t\t\tconst option = document.createElement('option');\r\n\r\n\t\t\toption.setAttribute('value', item.value);\r\n\t\t\toption.textContent = item.name;\r\n\r\n\t\t\tthis.weightUnitElement.appendChild(option);\r\n\t\t});\r\n\r\n\t\tthis.metalPurity.forEach(item => {\r\n\t\t\tconst option = document.createElement('option');\r\n\r\n\t\t\toption.setAttribute('value', item.value);\r\n\t\t\toption.textContent = item.name;\r\n\r\n\t\t\tthis.purityElement.appendChild(option);\r\n\t\t});\r\n\r\n\t\t// Set default currency value\r\n\t\tthis.currencyElement.value = this.defaultCurrency;\r\n\t\tthis.weightUnitElement.value = this.defaultWeightUnit;\r\n\r\n\t\t// Old values\r\n\t\tthis.oldCurrency = this.findBy(this.currencies, 'code', this.defaultCurrency);\r\n\t\tthis.oldWeightUnit = this.findBy(this.weightUnits, 'value', this.defaultWeightUnit);\r\n\r\n\t\tfetcher(this.ratesUrl, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: { 'Accept': 'application/json', 'Content-Type': 'application/json'},\r\n\t\t}).then(this.initCalculator.bind(this));\r\n\t}\r\n\r\n\tgetCurrencies() {\r\n\t\treturn [\r\n\t\t\t{\"code\": \"AED\", \"symbol\": \"د.إ\"},\r\n\t\t\t{\"code\": \"ARS\", \"symbol\": \"$\"},\r\n\t\t\t{\"code\": \"AUD\", \"symbol\": \"$\"},\r\n\t\t\t{\"code\": \"BRL\", \"symbol\": \"R$\"},\r\n\t\t\t{\"code\": \"CAD\", \"symbol\": \"$\"},\r\n\t\t\t{\"code\": \"CHF\", \"symbol\": \"Fr\"},\r\n\t\t\t{\"code\": \"CNY\", \"symbol\": \"¥\"},\r\n\t\t\t{\"code\": \"DKK\", \"symbol\": \"kr\"},\r\n\t\t\t{\"code\": \"EUR\", \"symbol\": \"€\"},\r\n\t\t\t{\"code\": \"GBP\", \"symbol\": \"£\"},\r\n\t\t\t{\"code\": \"HKD\", \"symbol\": \"$\"},\r\n\t\t\t{\"code\": \"IDR\", \"symbol\": \"Rp\"},\r\n\t\t\t{\"code\": \"ILS\", \"symbol\": \"₪\"},\r\n\t\t\t{\"code\": \"INR\", \"symbol\": \"₹\"},\r\n\t\t\t{\"code\": \"JPY\", \"symbol\": \"¥\"},\r\n\t\t\t{\"code\": \"KRW\", \"symbol\": \"₩\"},\r\n\t\t\t{\"code\": \"MXN\", \"symbol\": \"$\"},\r\n\t\t\t{\"code\": \"MYR\", \"symbol\": \"RM\"},\r\n\t\t\t{\"code\": \"NOK\", \"symbol\": \"kr\"},\r\n\t\t\t{\"code\": \"NZD\", \"symbol\": \"$\"},\r\n\t\t\t{\"code\": \"PHP\", \"symbol\": \"₱\"},\r\n\t\t\t{\"code\": \"PKR\", \"symbol\": \"₨\"},\r\n\t\t\t{\"code\": \"QAR\", \"symbol\": \"﷼\"},\r\n\t\t\t{\"code\": \"RUB\", \"symbol\": \"₽\"},\r\n\t\t\t{\"code\": \"SAR\", \"symbol\": \"﷼\"},\r\n\t\t\t{\"code\": \"SEK\", \"symbol\": \"kr\"},\r\n\t\t\t{\"code\": \"SGD\", \"symbol\": \"$\"},\r\n\t\t\t{\"code\": \"TRY\", \"symbol\": \"₻\"},\r\n\t\t\t{\"code\": \"USD\", \"symbol\": \"$\"},\r\n\t\t\t{\"code\": \"ZAR\", \"symbol\": \"R\"}\r\n\t\t];\r\n\t}\r\n\r\n\tgetWeightUnits() {\r\n\t\treturn window.SiteSettings && window.SiteSettings.LOCALE === 'ru' ? [\r\n\t\t\t{\"name\":\"Граммы\",\"value\":\"Grams\",\"troyOunces\":0.0321507},\r\n\t\t\t{\"name\":\"Килограммы\",\"value\":\"Kilograms\",\"troyOunces\":32.1507},\r\n\t\t\t{\"name\":\"Зерна\",\"value\":\"Grains\",\"troyOunces\":0.00208333},\r\n\t\t\t{\"name\":\"Пеннивейт\",\"value\":\"Pennyweight\",\"troyOunces\":0.05},\r\n\t\t\t{\"name\":\"Унции\",\"value\":\"Ounces\",\"troyOunces\":0.911458},\r\n\t\t\t{\"name\":\"Тройские Унции\",\"value\":\"Troy Ounces\",\"troyOunces\":1},\r\n\t\t\t{\"name\":\"Фунты\",\"value\":\"Pounds\",\"troyOunces\":14.5833},\r\n\t\t\t{\"name\":\"Тройские Фунты\",\"value\":\"Troy Pounds\",\"troyOunces\":12}\r\n\t\t] : [\r\n\t\t\t{\"name\":\"Grams\",\"value\":\"Grams\",\"troyOunces\":0.0321507},\r\n\t\t\t{\"name\":\"Kilograms\",\"value\":\"Kilograms\",\"troyOunces\":32.1507},\r\n\t\t\t{\"name\":\"Grains\",\"value\":\"Grains\",\"troyOunces\":0.00208333},\r\n\t\t\t{\"name\":\"Pennyweight\",\"value\":\"Pennyweight\",\"troyOunces\":0.05},\r\n\t\t\t{\"name\":\"Ounces\",\"value\":\"Ounces\",\"troyOunces\":0.911458},\r\n\t\t\t{\"name\":\"Troy Ounces\",\"value\":\"Troy Ounces\",\"troyOunces\":1},\r\n\t\t\t{\"name\":\"Pounds\",\"value\":\"Pounds\",\"troyOunces\":14.5833},\r\n\t\t\t{\"name\":\"Troy Pounds\",\"value\":\"Troy Pounds\",\"troyOunces\":12}\r\n\t\t];\r\n\t}\r\n\r\n\tgetMetalPurity() {\r\n\t\treturn [\r\n\t\t\t{\"name\":\".9999\",\"value\":0.9999},\r\n\t\t\t{\"name\":\".999\",\"value\":0.999},\r\n\t\t\t{\"name\":\".9167 (22 Karat)\",\"value\":0.9167},\r\n\t\t\t{\"name\":\".900\",\"value\":0.9}\r\n\t\t];\r\n\t}\r\n\r\n\tfindBy(source, name, val) {\r\n\t\treturn source.find(item => item[name] === val);\r\n\t}\r\n\r\n\tvalueClass(number) {\r\n\t\treturn number < 0 ? 'red' : number > 0 ? 'green' : '';\r\n\t}\r\n\r\n\tformatMoney(number, positive_sign, symbol, code) {\r\n\t\tconst currency_symbol = symbol ? `${symbol}` : '';\r\n\t\tconst currency_code = code ? `(${code})` : '';\r\n\t\tconst parts = Math.abs(number).toFixed(2).split('.');\r\n\r\n\t\tparts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n\r\n\t\tconst sign = `${number < 0 ? '-' : positive_sign ? '+' : ''}`;\r\n\r\n\t\treturn `${sign}${currency_symbol}${parts[1] === '00' ? parts[0] : parts.join('.')}${currency_code}`;\r\n\t}\r\n\r\n\tformatPercent(number, positive_sign) {\r\n\t\tconst sign = `${number > 0 ? positive_sign ? '+' : '' : '-'}`;\r\n\r\n\t\treturn `${sign}${Math.abs(number).toFixed(2).replace(/\\.00/, '')}%`;\r\n\t}\r\n\r\n\t// Refresh method\r\n\trefresh(){\r\n\t\tconst spot = this.findBy(window.SPOT_PRICES, 'Name', window.SiteSettings.CHART_METAL);\r\n\r\n\t\tif( !this.spotPriceElement.value || this.spotPriceElement.value.length === 0 ) {\r\n\t\t\tthis.spotPriceElement.value = spot.Ask;\r\n\t\t}\r\n\r\n\t\tconst weight = parseFloat(this.weightElement.value);\r\n\t\tconst spotPrice = parseFloat(this.spotPriceElement.value);\r\n\t\tconst weightUnit = this.findBy(this.weightUnits, 'value', this.weightUnitElement.value);\r\n\t\tconst purity = parseFloat(this.purityElement.value);\r\n\t\tconst currency = this.findBy(this.currencies, 'code', this.currencyElement.value);\r\n\r\n\t\tthis.purityValueElement.innerHTML = this.formatPercent(purity * 100);\r\n\r\n\t\tif (isNaN(weight) || isNaN(spotPrice)) {\r\n\t\t\tthis.resultElement.classList.add('d-none');\r\n\t\t\tthis.messageElement.classList.remove('d-none');\r\n\t\t} else {\r\n\t\t\tconst worth = weight * spotPrice * weightUnit.troyOunces * purity;\r\n\t\t\tconst valueClass = this.valueClass(worth);\r\n\r\n\t\t\tthis.worthElement.innerHTML = this.formatMoney(worth, false, currency.symbol, currency.code);\r\n\r\n\t\t\tthis.worthElement.classList.remove('red', 'green');\r\n\r\n\t\t\tif (valueClass) {\r\n\t\t\t\tthis.worthElement.classList.add(valueClass);\r\n\t\t\t}\r\n\r\n\t\t\tthis.resultElement.classList.remove('d-none');\r\n\t\t\tthis.messageElement.classList.add('d-none');\r\n\t\t}\r\n\t}\r\n\r\n\tcurrencyChange() {\r\n\t\tconst newCurrency = this.findBy(this.currencies, 'code', this.currencyElement.value);\r\n\t\tconst spotPrice = parseFloat(this.spotPriceElement.value);\r\n\r\n\t\tif (!isNaN(spotPrice)) {\r\n\t\t\tconst newSpotPrice = spotPrice * newCurrency.quote / this.oldCurrency.quote;\r\n\r\n\t\t\tthis.spotPriceElement.value = parseFloat(newSpotPrice.toFixed(2));\r\n\t\t}\r\n\t\tthis.oldCurrency = newCurrency;\r\n\t};\r\n\r\n\tweightUnitChange() {\r\n\t\tconst newWeightUnit = this.findBy(this.weightUnits, 'value', this.weightUnitElement.value);\r\n\t\tconst weight = parseFloat(this.weightElement.value);\r\n\r\n\t\tif (!isNaN(weight)) {\r\n\t\t\tconst newWeight = weight * this.oldWeightUnit.troyOunces / newWeightUnit.troyOunces;\r\n\r\n\t\t\tthis.weightElement.value = parseFloat(newWeight.toFixed(5));\r\n\t\t}\r\n\t\tthis.oldWeightUnit = newWeightUnit;\r\n\t};\r\n\r\n\tbindEvents() {\r\n\t\tthis.currencyElement.addEventListener('change', this.currencyChange.bind(this));\r\n\t\tthis.weightUnitElement.addEventListener('change', this.weightUnitChange.bind(this));\r\n\r\n\t\tthis.fieldsElements.forEach(field => {\r\n\t\t\tfield.addEventListener('change', this.refresh.bind(this));\r\n\t\t\tfield.addEventListener('keyup', this.refresh.bind(this));\r\n\t\t});\r\n\r\n\t\twindow.addEventListener('spot-price-update', this.refresh.bind(this));\r\n\t}\r\n\r\n\tunbindEvents() {\r\n\t\tthis.currencyElement.removeEventListener('change', this.currencyChange.bind(this));\r\n\t\tthis.weightUnitElement.removeEventListener('change', this.weightUnitChange.bind(this));\r\n\r\n\t\tthis.fieldsElements.forEach(field => {\r\n\t\t\tfield.removeEventListener('change', this.refresh.bind(this));\r\n\t\t\tfield.removeEventListener('keyup', this.refresh.bind(this));\r\n\t\t});\r\n\r\n\t\twindow.removeEventListener('spot-price-update', this.refresh.bind(this));\r\n\t}\r\n\r\n\tinitCalculator(currency_rates){\r\n\t\tthis.currencies = this.currencies.map(currency => {\r\n\t\t\tconst rate = currency_rates.find(item => currency.code === item.TargetCurrencyCode);\r\n\r\n\t\t\tcurrency.quote = rate ? rate.Rate : 0;\r\n\r\n\t\t\treturn currency;\r\n\t\t});\r\n\r\n\t\tthis.bindEvents();\r\n\t};\r\n}\r\n\r\nconst valueCalculator = new ValueCalculator();\r\n\r\nexport default valueCalculator;\r\n"],"names":["fetch_status","response","ok","Promise","resolve","reject","fetch_json","json","fetch_text","text","fetcher","_this","this","url","arguments","length","undefined","options","data","is_text","custom_error","fetch","then","error","_this2","_newArrowCheck","Error","message","error_text","includes","JSON","parse","Type","_typeof","exception","Message","responseJSON","window","location","pathname","fetch_error_message","bind","signal","aborted","valueCalculator","ValueCalculator","_classCallCheck","ratesUrl","currencies","getCurrencies","weightUnits","getWeightUnits","metalPurity","getMetalPurity","defaultCurrency","defaultWeightUnit","calculatorElement","document","querySelector","fieldsElements","querySelectorAll","weightElement","weightUnitElement","purityElement","purityValueElement","spotPriceElement","currencyElement","resultElement","messageElement","worthElement","forEach","item","option","createElement","textContent","code","appendChild","setAttribute","value","name","oldCurrency","findBy","oldWeightUnit","method","headers","Accept","initCalculator","key","symbol","SiteSettings","LOCALE","troyOunces","source","val","find","number","positive_sign","currency_symbol","concat","currency_code","parts","Math","abs","toFixed","split","replace","sign","join","spot","SPOT_PRICES","CHART_METAL","Ask","weight","parseFloat","spotPrice","weightUnit","purity","currency","innerHTML","formatPercent","isNaN","classList","add","remove","worth","valueClass","formatMoney","newCurrency","newSpotPrice","quote","newWeightUnit","newWeight","_this3","addEventListener","currencyChange","weightUnitChange","field","refresh","_this4","removeEventListener","currency_rates","_this5","map","_this6","rate","TargetCurrencyCode","Rate","bindEvents"],"mappings":"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"}