{"version":3,"file":"roi.js","sources":["../../../charts/calculator/roi.js"],"sourcesContent":["class ROICalculator {\r\n\tconstructor () {\r\n\t\tthis.calculatorElement = document.querySelector('.roi-calculator');\r\n\r\n\t\tif(!this.calculatorElement) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messageElement = this.calculatorElement.querySelector('.message');\r\n\t\tthis.resultElement = this.calculatorElement.querySelector('.result');\r\n\t\tthis.pricePerOunceElement = this.calculatorElement.querySelector('.price-per-ounce');\r\n\t\tthis.fieldsElements = this.calculatorElement.querySelectorAll('input, select');\r\n\t\tthis.metalTypesElement = this.calculatorElement.querySelector('.metal-types');\r\n\t\tthis.ouncesElement = this.calculatorElement.querySelector('.ounces');\r\n\t\tthis.buyPriceElement = this.calculatorElement.querySelector('.buy-price');\r\n\r\n\t\tthis.metals = this.getMetals();\r\n\r\n\t\tthis.metals.forEach((item, idx) => {\r\n\t\t\tconst boxElement = document.createElement('label');\r\n\r\n\t\t\tboxElement.insertAdjacentHTML('beforeend', `
${item.name}
`);\r\n\t\t\tboxElement.classList.add('select-box');\r\n\r\n\t\t\tthis.metalTypesElement.appendChild(boxElement);\r\n\r\n\t\t\tif (idx === 0) {\r\n\t\t\t\tconst typeElement = boxElement.querySelector('[name=\"roi_metal_type\"]');\r\n\r\n\t\t\t\ttypeElement.checked = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.bindEvents();\r\n\t}\r\n\r\n\tbindEvents() {\r\n\t\tconst typeElements = this.calculatorElement.querySelectorAll('[name=\"roi_metal_type\"]');\r\n\r\n\t\ttypeElements.forEach(element => {\r\n\t\t\telement.addEventListener('change', this.refresh.bind(this));\r\n\t\t\telement.addEventListener('keyup', this.refresh.bind(this));\r\n\t\t});\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\tgetMetals() {\r\n\t\treturn window.SiteSettings && window.SiteSettings.LOCALE === 'ru' ? [\r\n\t\t\t{ name: 'Золото', value: 'Gold' },\r\n\t\t\t{ name: 'Платина', value: 'Platinum' },\r\n\t\t\t{ name: 'Палладий', value: 'Palladium' },\r\n\t\t\t{ name: 'Серебро', value: 'Silver' }\r\n\t\t] : [\r\n\t\t\t{ name: 'Gold', value: 'Gold' },\r\n\t\t\t{ name: 'Platinum', value: 'Platinum' },\r\n\t\t\t{ name: 'Palladium', value: 'Palladium' },\r\n\t\t\t{ name: 'Silver', value: 'Silver' }\r\n\t\t];\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\tgetSpot(name) {\r\n\t\treturn window.SPOT_PRICES.find(price => price.Name === name);\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tconst selected_type = this.calculatorElement.querySelector('[name=\"roi_metal_type\"]:checked').value;\r\n\t\tconst spot = this.getSpot(selected_type);\r\n\t\tconst price = spot.Ask;\r\n\t\tconst ounces = parseFloat(this.ouncesElement.value);\r\n\t\tconst buy_price = parseFloat(this.buyPriceElement.value);\r\n\r\n\t\tthis.pricePerOunceElement.innerHTML = this.formatMoney(price, false, '$');\r\n\r\n\t\tif (isNaN(ounces) || isNaN(buy_price) || buy_price <= 0) {\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 result_price = ounces * (price - buy_price);\r\n\t\t\tconst result_price_html = `

${this.formatMoney(result_price, true, '$')}

`;\r\n\r\n\t\t\tconst result_buy_price = 100 * (price - buy_price) / buy_price;\r\n\t\t\tconst result_buy_price_html = `

${this.formatPercent(result_buy_price)}

`;\r\n\r\n\t\t\tthis.resultElement.innerHTML = `
${result_price_html}${result_buy_price_html}
`;\r\n\r\n\t\t\tthis.resultElement.classList.remove('d-none');\r\n\t\t\tthis.messageElement.classList.remove('d-none');\r\n\t\t}\r\n\t}\r\n}\r\n\r\nconst roi = new ROICalculator();\r\n\r\nexport default roi;\r\n"],"names":["roi","ROICalculator","_this","this","_classCallCheck","calculatorElement","document","querySelector","messageElement","resultElement","pricePerOunceElement","fieldsElements","querySelectorAll","metalTypesElement","ouncesElement","buyPriceElement","metals","getMetals","forEach","item","idx","_newArrowCheck","boxElement","createElement","insertAdjacentHTML","concat","value","name","classList","add","appendChild","checked","bind","bindEvents","key","_this2","element","addEventListener","refresh","field","window","SiteSettings","LOCALE","number","positive_sign","symbol","code","currency_symbol","currency_code","parts","Math","abs","toFixed","split","replace","sign","join","_this3","SPOT_PRICES","find","price","Name","selected_type","getSpot","Ask","ounces","parseFloat","buy_price","innerHTML","formatMoney","isNaN","remove","result_price","result_price_html","valueClass","result_buy_price","result_buy_price_html","formatPercent"],"mappings":"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"}