{"version":3,"file":"js/app.fe16925d282b74b9.bundle.js","mappings":"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","sources":["webpack://dcrdata/webpack/runtime/chunk loaded","webpack://dcrdata/webpack/runtime/create fake namespace object","webpack://dcrdata/webpack/runtime/load script","webpack://dcrdata/./public/index.js","webpack://dcrdata/./public/js/controllers/address_controller.js","webpack://dcrdata/./public/js/controllers/agenda_controller.js","webpack://dcrdata/./public/js/controllers/agendas_controller.js","webpack://dcrdata/./public/js/controllers/atomicswaps_controller.js","webpack://dcrdata/./public/js/controllers/attackcost_controller.js","webpack://dcrdata/./public/js/controllers/blockdetail_controller.js","webpack://dcrdata/./public/js/controllers/blocklist_controller.js","webpack://dcrdata/./public/js/controllers/bwdash_controller.js","webpack://dcrdata/./public/js/controllers/chainaddress_controller.js","webpack://dcrdata/./public/js/controllers/chaincharts_controller.js","webpack://dcrdata/./public/js/controllers/chainhome_controller.js","webpack://dcrdata/./public/js/controllers/chainmarket_controller.js","webpack://dcrdata/./public/js/controllers/chainmempool_controller.js","webpack://dcrdata/./public/js/controllers/chainvisualBlocks_controller.js","webpack://dcrdata/./public/js/controllers/charts_controller.js","webpack://dcrdata/./public/js/controllers/clipboard_controller.js","webpack://dcrdata/./public/js/controllers/common_controller.js","webpack://dcrdata/./public/js/controllers/connection_controller.js","webpack://dcrdata/./public/js/controllers/financebase_controller.js","webpack://dcrdata/./public/js/controllers/financedetail_controller.js","webpack://dcrdata/./public/js/controllers/financereport_controller.js","webpack://dcrdata/./public/js/controllers/footer_controller.js","webpack://dcrdata/./public/js/controllers/homecharts_controller.js","webpack://dcrdata/./public/js/controllers/homepage_controller.js","webpack://dcrdata/./public/js/controllers/market_controller.js","webpack://dcrdata/./public/js/controllers/mempool_controller.js","webpack://dcrdata/./public/js/controllers/menu_controller.js","webpack://dcrdata/./public/js/controllers/newblock_controller.js","webpack://dcrdata/./public/js/controllers/pagenavigation_controller.js","webpack://dcrdata/./public/js/controllers/proposal_controller.js","webpack://dcrdata/./public/js/controllers/rawtx_controller.js","webpack://dcrdata/./public/js/controllers/scroll_controller.js","webpack://dcrdata/./public/js/controllers/search_controller.js","webpack://dcrdata/./public/js/controllers/stakingreward_controller.js","webpack://dcrdata/./public/js/controllers/status_controller.js","webpack://dcrdata/./public/js/controllers/supply_controller.js","webpack://dcrdata/./public/js/controllers/ticketpool_controller.js","webpack://dcrdata/./public/js/controllers/time_controller.js","webpack://dcrdata/./public/js/controllers/top_controller.js","webpack://dcrdata/./public/js/controllers/tx_controller.js","webpack://dcrdata/./public/js/controllers/visualBlocks_controller.js","webpack://dcrdata/./public/js/helpers/animation_helper.js","webpack://dcrdata/./public/js/helpers/block_helper.js","webpack://dcrdata/./public/js/helpers/chart_helper.js","webpack://dcrdata/./public/js/helpers/http.js","webpack://dcrdata/./public/js/helpers/humanize_helper.js","webpack://dcrdata/./public/js/helpers/mempool_helper.js","webpack://dcrdata/./public/js/helpers/meters.js","webpack://dcrdata/./public/js/helpers/module_helper.js","webpack://dcrdata/./public/js/helpers/turbolinks_helper.js","webpack://dcrdata/./public/js/helpers/zoom_helper.js","webpack://dcrdata/./public/js/services/cookie_service.js","webpack://dcrdata/./public/js/services/event_bus_service.js","webpack://dcrdata/./public/js/vendor/mousetrap-pause.js","webpack://dcrdata/./public/js/services/keyboard_navigation_service.js","webpack://dcrdata/./public/js/services/messagesocket_service.js","webpack://dcrdata/./public/js/services/theme_service.js","webpack://dcrdata/./public/js/vendor/mempool.js","webpack://dcrdata/./public/js/controllers/ sync \\.js$","webpack://dcrdata/webpack/bootstrap","webpack://dcrdata/webpack/runtime/compat get default export","webpack://dcrdata/webpack/runtime/define property getters","webpack://dcrdata/webpack/runtime/ensure chunk","webpack://dcrdata/webpack/runtime/get javascript chunk filename","webpack://dcrdata/webpack/runtime/get mini-css chunk filename","webpack://dcrdata/webpack/runtime/global","webpack://dcrdata/webpack/runtime/hasOwnProperty shorthand","webpack://dcrdata/webpack/runtime/make namespace object","webpack://dcrdata/webpack/runtime/publicPath","webpack://dcrdata/webpack/runtime/jsonp chunk loading","webpack://dcrdata/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"dcrdata:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// import 'core-js/stable';\nimport 'regenerator-runtime/runtime'\n/* global require */\nimport ws from './js/services/messagesocket_service'\nimport { Application } from '@hotwired/stimulus'\nimport { definitionsFromContext } from '@hotwired/stimulus-webpack-helpers'\nimport { darkEnabled } from './js/services/theme_service'\nimport globalEventBus from './js/services/event_bus_service'\n\nrequire('./scss/application.scss')\n\nwindow.darkEnabled = darkEnabled\n\nconst application = Application.start()\nconst context = require.context('./js/controllers', true, /\\.js$/)\napplication.load(definitionsFromContext(context))\n\ndocument.addEventListener('turbolinks:load', function (e) {\n document.querySelectorAll('.jsonly').forEach((el) => {\n el.classList.remove('jsonly')\n })\n})\n\nexport function notifyNewBlock (newBlock) {\n if (window.Notification.permission !== 'granted') return\n const block = newBlock.block\n const newBlockNtfn = new window.Notification('New Decred Block Mined', {\n body: `Block mined at height <b>${block.height}</b>`,\n icon: '/images/dcrdata144x128.png',\n notifyError: (e) => console.error('Error showing notification:', e)\n })\n setTimeout(() => newBlockNtfn.close(), 3000)\n}\n\nfunction getSocketURI (loc) {\n const protocol = (loc.protocol === 'https:') ? 'wss' : 'ws'\n return protocol + '://' + loc.host + '/ws'\n}\n\nfunction sleep (ms) {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n\nasync function createWebSocket (loc) {\n // wait a bit to prevent websocket churn from drive by page loads\n const uri = getSocketURI(loc)\n await sleep(300)\n ws.connect(uri)\n\n const updateBlockData = function (event) {\n const newBlock = JSON.parse(event)\n if (window.loggingDebug) {\n console.log('Block received:', newBlock)\n }\n newBlock.block.unixStamp = new Date(newBlock.block.time).getTime() / 1000\n globalEventBus.publish('BLOCK_RECEIVED', newBlock)\n }\n\n const updateLtcBlockData = function (event) {\n const newBlock = JSON.parse(event)\n if (window.loggingDebug) {\n console.log('LTC Block received:', newBlock)\n }\n newBlock.block.unixStamp = new Date(newBlock.block.time).getTime() / 1000\n globalEventBus.publish('LTC_BLOCK_RECEIVED', newBlock)\n }\n\n const updateBtcBlockData = function (event) {\n const newBlock = JSON.parse(event)\n if (window.loggingDebug) {\n console.log('BTC Block received:', newBlock)\n }\n newBlock.block.unixStamp = new Date(newBlock.block.time).getTime() / 1000\n globalEventBus.publish('BTC_BLOCK_RECEIVED', newBlock)\n }\n\n const updateLtcMempoolData = function (event) {\n const newMempool = JSON.parse(event)\n if (window.loggingDebug) {\n console.log('Mempool LTC received:', newMempool)\n }\n globalEventBus.publish('MEMPOOL_LTC_RECEIVED', newMempool)\n }\n\n const updateBtcMempoolData = function (event) {\n const newMempool = JSON.parse(event)\n if (window.loggingDebug) {\n console.log('Mempool BTC received:', newMempool)\n }\n globalEventBus.publish('MEMPOOL_BTC_RECEIVED', newMempool)\n }\n\n ws.registerEvtHandler('newblock', updateBlockData)\n ws.registerEvtHandler('newltcblock', updateLtcBlockData)\n ws.registerEvtHandler('newbtcblock', updateBtcBlockData)\n ws.registerEvtHandler('newltcmempool', updateLtcMempoolData)\n ws.registerEvtHandler('newbtcmempool', updateBtcMempoolData)\n ws.registerEvtHandler('exchange', e => {\n globalEventBus.publish('EXCHANGE_UPDATE', JSON.parse(e))\n })\n}\n\n// Debug logging can be enabled by entering logDebug(true) in the console.\n// Your setting will persist across sessions.\nwindow.loggingDebug = window.localStorage.getItem('loggingDebug') === '1'\nwindow.logDebug = yes => {\n window.loggingDebug = yes\n window.localStorage.setItem('loggingDebug', yes ? '1' : '0')\n return 'debug logging set to ' + (yes ? 'true' : 'false')\n}\n\ncreateWebSocket(window.location)\nglobalEventBus.on('BLOCK_RECEIVED', notifyNewBlock)\n","import { Controller } from '@hotwired/stimulus'\nimport { isEmpty } from 'lodash-es'\nimport dompurify from 'dompurify'\nimport { getDefault } from '../helpers/module_helper'\nimport { padPoints, sizedBarPlotter } from '../helpers/chart_helper'\nimport Zoom from '../helpers/zoom_helper'\nimport globalEventBus from '../services/event_bus_service'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport humanize from '../helpers/humanize_helper'\nimport txInBlock from '../helpers/block_helper'\nimport { fadeIn, animationFrame } from '../helpers/animation_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst blockDuration = 5 * 60000\nconst maxAddrRows = 160\nlet Dygraph // lazy loaded on connect\n\nfunction txTypesFunc (d, binSize) {\n const p = []\n\n d.time.map((n, i) => {\n p.push([new Date(n), d.sentRtx[i], d.receivedRtx[i], d.tickets[i], d.votes[i], d.revokeTx[i]])\n })\n\n padPoints(p, binSize)\n\n return p\n}\n\nfunction amountFlowProcessor (d, binSize) {\n const flowData = []\n const balanceData = []\n let balance = 0\n\n d.time.map((n, i) => {\n const v = d.net[i]\n let netReceived = 0\n let netSent = 0\n\n v > 0 ? (netReceived = v) : (netSent = (v * -1))\n flowData.push([new Date(n), d.received[i], d.sent[i], netReceived, netSent])\n balance += v\n balanceData.push([new Date(n), balance])\n })\n\n padPoints(flowData, binSize)\n padPoints(balanceData, binSize, true)\n\n return {\n flow: flowData,\n balance: balanceData\n }\n}\n\nfunction formatter (data) {\n let xHTML = ''\n if (data.xHTML !== undefined) {\n xHTML = humanize.date(data.x, false, true)\n }\n let html = this.getLabels()[0] + ': ' + xHTML\n data.series.map((series) => {\n if (series.color === undefined) return ''\n // Skip display of zeros\n if (series.y === 0) return ''\n const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n html += '<br>' + series.dashHTML + l + ': ' + (isNaN(series.y) ? '' : series.y) + '</span>'\n })\n return html\n}\n\nfunction customizedFormatter (data) {\n let xHTML = ''\n if (data.xHTML !== undefined) {\n xHTML = humanize.date(data.x, false, true)\n }\n let html = this.getLabels()[0] + ': ' + xHTML\n data.series.map((series) => {\n if (series.color === undefined) return ''\n // Skip display of zeros\n if (series.y === 0) return ''\n const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n html += '<br>' + series.dashHTML + l + ': ' + (isNaN(series.y) ? '' : series.y + ' DCR') + '</span> '\n })\n return html\n}\n\nfunction setTxnCountText (el, count) {\n if (el.dataset.formatted) {\n el.textContent = count + ' transaction' + (count > 1 ? 's' : '')\n } else {\n el.textContent = count\n }\n}\n\nlet commonOptions, typesGraphOptions, amountFlowGraphOptions, balanceGraphOptions\n// Cannot set these until DyGraph is fetched.\nfunction createOptions () {\n commonOptions = {\n digitsAfterDecimal: 8,\n showRangeSelector: true,\n rangeSelectorHeight: 20,\n rangeSelectorForegroundStrokeColor: '#999',\n rangeSelectorBackgroundStrokeColor: '#777',\n legend: 'follow',\n fillAlpha: 0.9,\n labelsKMB: true,\n labelsUTC: true,\n stepPlot: false,\n rangeSelectorPlotFillColor: 'rgba(128, 128, 128, 0.3)',\n rangeSelectorPlotFillGradientColor: 'transparent',\n rangeSelectorPlotStrokeColor: 'rgba(128, 128, 128, 0.7)',\n rangeSelectorPlotLineWidth: 2\n }\n\n typesGraphOptions = {\n labels: ['Date', 'Sending (regular)', 'Receiving (regular)', 'Tickets', 'Votes', 'Revocations'],\n colors: ['#69D3F5', '#2971FF', '#41BF53', 'darkorange', '#FF0090'],\n ylabel: 'Tx Count',\n visibility: [true, true, true, true, true],\n legendFormatter: formatter,\n stackedGraph: true,\n fillGraph: false\n }\n\n amountFlowGraphOptions = {\n labels: ['Date', 'Received', 'Spent', 'Net Received', 'Net Spent'],\n colors: ['#2971FF', '#2ED6A1', '#41BF53', '#FF0090'],\n ylabel: 'Total (DCR)',\n visibility: [true, false, false, false],\n legendFormatter: customizedFormatter,\n stackedGraph: true,\n fillGraph: false\n }\n\n balanceGraphOptions = {\n labels: ['Date', 'Balance'],\n colors: ['#41BF53'],\n ylabel: 'Balance (DCR)',\n plotter: [Dygraph.Plotters.linePlotter, Dygraph.Plotters.fillPlotter],\n legendFormatter: customizedFormatter,\n stackedGraph: false,\n visibility: [true],\n fillGraph: true,\n stepPlot: true\n }\n}\n\nlet ctrl = null\n\nexport default class extends Controller {\n static get targets () {\n return ['options', 'addr', 'balance',\n 'flow', 'zoom', 'interval', 'numUnconfirmed',\n 'pagesize', 'txntype', 'txnCount', 'qricon', 'qrimg', 'qrbox',\n 'paginator', 'pageplus', 'pageminus', 'listbox', 'table',\n 'range', 'chartbox', 'noconfirms', 'chart', 'pagebuttons',\n 'pending', 'hash', 'matchhash', 'view', 'mergedMsg',\n 'chartLoader', 'listLoader', 'expando', 'littlechart', 'bigchart',\n 'fullscreen', 'tablePagination', 'paginationheader']\n }\n\n async connect () {\n ctrl = this\n ctrl.retrievedData = {}\n ctrl.ajaxing = false\n ctrl.qrCode = false\n ctrl.requestedChart = false\n // Bind functions that are passed as callbacks\n ctrl.zoomCallback = ctrl._zoomCallback.bind(ctrl)\n ctrl.drawCallback = ctrl._drawCallback.bind(ctrl)\n ctrl.lastEnd = 0\n ctrl.confirmMempoolTxs = ctrl._confirmMempoolTxs.bind(ctrl)\n ctrl.bindElements()\n ctrl.bindEvents()\n ctrl.query = new TurboQuery()\n\n // These two are templates for query parameter sets.\n // When url query parameters are set, these will also be updated.\n const settings = ctrl.settings = TurboQuery.nullTemplate(['chart', 'zoom', 'bin', 'flow',\n 'n', 'start', 'txntype', 'time'])\n\n ctrl.state = Object.assign({}, settings)\n // Parse stimulus data\n const cdata = ctrl.data\n ctrl.dcrAddress = cdata.get('dcraddress')\n ctrl.paginationParams = {\n offset: parseInt(cdata.get('offset')),\n count: parseInt(cdata.get('txnCount'))\n }\n ctrl.balance = cdata.get('balance')\n\n // Get initial view settings from the url\n ctrl.query.update(settings)\n this.time = settings.time\n ctrl.setChartType()\n if (settings.flow) ctrl.setFlowChecks()\n if (settings.zoom !== null) {\n ctrl.zoomButtons.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n }\n if (settings.bin == null) {\n settings.bin = ctrl.getBin()\n }\n if (settings.chart == null || !ctrl.validChartType(settings.chart)) {\n settings.chart = ctrl.chartType\n }\n\n Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n\n ctrl.initializeChart()\n ctrl.drawGraph()\n }\n\n disconnect () {\n if (this.graph !== undefined) {\n this.graph.destroy()\n }\n globalEventBus.off('BLOCK_RECEIVED', this.confirmMempoolTxs)\n this.retrievedData = {}\n }\n\n // Request the initial chart data, grabbing the Dygraph script if necessary.\n initializeChart () {\n createOptions()\n // If no chart data has been requested, e.g. when initially on the\n // list tab, then fetch the initial chart data.\n if (!this.requestedChart) {\n this.fetchGraphData(this.chartType, this.getBin())\n }\n }\n\n bindElements () {\n this.flowBoxes = this.flowTarget.querySelectorAll('input')\n // pagesizeTarget is not available for dummy addresses\n this.pageSizeOptions = this.hasPagesizeTarget ? this.pagesizeTarget.querySelectorAll('option') : []\n this.zoomButtons = this.zoomTarget.querySelectorAll('button')\n this.binputs = this.intervalTarget.querySelectorAll('button')\n }\n\n bindEvents () {\n globalEventBus.on('BLOCK_RECEIVED', this.confirmMempoolTxs)\n ctrl.paginatorTargets.forEach((link) => {\n link.addEventListener('click', (e) => {\n e.preventDefault()\n })\n })\n }\n\n async showQRCode () {\n this.qrboxTarget.classList.remove('d-hide')\n if (this.qrCode) {\n await fadeIn(this.qrimgTarget)\n } else {\n const QRCode = await getDefault(\n import(/* webpackChunkName: \"qrcode\" */ 'qrcode')\n )\n const qrCodeImg = await QRCode.toDataURL(this.dcrAddress,\n {\n errorCorrectionLevel: 'H',\n scale: 6,\n margin: 0\n }\n )\n this.qrimgTarget.innerHTML = `<img src=\"${qrCodeImg}\"/>`\n await fadeIn(this.qrimgTarget)\n if (this.graph) this.graph.resize()\n }\n this.qriconTarget.classList.add('d-hide')\n }\n\n async hideQRCode () {\n this.qriconTarget.classList.remove('d-hide')\n this.qrboxTarget.classList.add('d-hide')\n this.qrimgTarget.style.opacity = 0\n await animationFrame()\n if (this.graph) this.graph.resize()\n }\n\n makeTableUrl (txType, count, offset, time) {\n const root = this.dcrAddress === 'treasury' ? 'treasurytable' : `addresstable/${this.dcrAddress}`\n return `/${root}?txntype=${txType}&n=${count}&start=${offset}${time && time !== '' ? '&time=' + time : ''}`\n }\n\n changePageSize () {\n this.fetchTableWithPeriod(this.txnType, this.pageSize, this.paginationParams.offset, this.time)\n }\n\n changeTxType () {\n this.fetchTableWithPeriod(this.txnType, this.pageSize, 0, this.time)\n }\n\n nextPage () {\n this.toPage(1)\n }\n\n prevPage () {\n this.toPage(-1)\n }\n\n pageNumberLink (e) {\n e.preventDefault()\n const url = e.target.href\n const parser = new URL(url)\n const start = parser.searchParams.get('start')\n const pagesize = parser.searchParams.get('n')\n const txntype = parser.searchParams.get('txntype')\n const time = parser.searchParams.get('time')\n this.time = time\n this.fetchTableWithPeriod(txntype, pagesize, start, time)\n }\n\n toPage (direction) {\n const params = ctrl.paginationParams\n const count = ctrl.pageSize\n const txType = ctrl.txnType\n const time = this.time\n let requestedOffset = params.offset + count * direction\n if (requestedOffset >= params.count) return\n if (requestedOffset < 0) requestedOffset = 0\n ctrl.fetchTableWithPeriod(txType, count, requestedOffset, time)\n }\n\n async fetchTableWithPeriod (txType, count, offset, time) {\n ctrl.listLoaderTarget.classList.add('loading')\n const requestCount = count > 20 ? count : 20\n const tableResponse = await requestJSON(ctrl.makeTableUrl(txType, requestCount, offset, time))\n ctrl.tableTarget.innerHTML = dompurify.sanitize(tableResponse.html)\n const settings = ctrl.settings\n settings.n = count\n settings.start = offset\n settings.txntype = txType\n ctrl.paginationParams.count = tableResponse.tx_count\n ctrl.query.replace(settings)\n ctrl.paginationParams.offset = offset\n ctrl.paginationParams.pagesize = count\n ctrl.paginationParams.txntype = txType\n ctrl.setPageability()\n if (ctrl.dcrAddress !== 'treasury') {\n if (txType.indexOf('merged') === -1) {\n this.mergedMsgTarget.classList.add('d-hide')\n } else {\n this.mergedMsgTarget.classList.remove('d-hide')\n }\n }\n ctrl.tablePaginationParams = tableResponse.pages\n ctrl.setTablePaginationLinks()\n ctrl.listLoaderTarget.classList.remove('loading')\n }\n\n async fetchTable (txType, count, offset) {\n this.fetchTableWithPeriod(txType, count, offset, '')\n }\n\n setPageability () {\n const params = ctrl.paginationParams\n const rowMax = params.count\n const count = ctrl.pageSize\n if (ctrl.paginationParams.count === 0) {\n ctrl.paginationheaderTarget.classList.add('d-hide')\n } else {\n ctrl.paginationheaderTarget.classList.remove('d-hide')\n }\n if (rowMax > count) {\n ctrl.pagebuttonsTarget.classList.remove('d-hide')\n } else {\n ctrl.pagebuttonsTarget.classList.add('d-hide')\n }\n const setAbility = (el, state) => {\n if (state) {\n el.classList.remove('disabled')\n } else {\n el.classList.add('disabled')\n }\n }\n setAbility(ctrl.pageplusTarget, params.offset + count < rowMax)\n setAbility(ctrl.pageminusTarget, params.offset - count >= 0)\n ctrl.pageSizeOptions.forEach((option) => {\n if (option.value > 100) {\n if (rowMax > 100) {\n option.disabled = false\n option.text = option.value = Math.min(rowMax, maxAddrRows)\n } else {\n option.disabled = true\n option.text = option.value = maxAddrRows\n }\n } else {\n option.disabled = rowMax <= option.value\n }\n })\n setAbility(ctrl.pagesizeTarget, rowMax > 20)\n const suffix = rowMax > 1 ? 's' : ''\n let rangeEnd = Number(params.offset) + Number(count)\n if (rangeEnd > rowMax) rangeEnd = rowMax\n ctrl.rangeTarget.innerHTML = 'showing ' + (Number(params.offset) + 1).toLocaleString() + ' – ' +\n rangeEnd.toLocaleString() + ' of ' + rowMax.toLocaleString() + ' transaction' + suffix\n }\n\n createGraph (processedData, otherOptions) {\n return new Dygraph(\n this.chartTarget,\n processedData,\n { ...commonOptions, ...otherOptions }\n )\n }\n\n setTablePaginationLinks () {\n const tablePagesLink = ctrl.tablePaginationParams\n if (tablePagesLink.length === 0) return ctrl.tablePaginationTarget.classList.add('d-hide')\n ctrl.tablePaginationTarget.classList.remove('d-hide')\n const txCount = parseInt(ctrl.paginationParams.count)\n const offset = parseInt(ctrl.paginationParams.offset)\n const pageSize = parseInt(ctrl.paginationParams.pagesize)\n const txnType = ctrl.paginationParams.txntype\n const time = this.time\n let links = ''\n\n const root = this.dcrAddress === 'treasury' ? 'treasury' : `address/${this.dcrAddress}`\n\n if (typeof offset !== 'undefined' && offset > 0) {\n links = `<a href=\"/${root}?start=${offset - pageSize}&n=${pageSize}&txntype=${txnType}${time && time !== '' ? '&time=' + time : ''}\" ` +\n 'class=\"d-inline-block dcricon-arrow-left pagination-number pagination-narrow m-1 fz20\" data-action=\"click->address#pageNumberLink\"></a>' + '\\n'\n }\n\n links += tablePagesLink.map(d => {\n if (!d.link) return `<span>${d.str}</span>`\n return `<a href=\"${d.link}\" class=\"fs18 pager pagination-number${d.active ? ' active' : ''}\" data-action=\"click->address#pageNumberLink\">${d.str}</a>`\n }).join('\\n')\n\n if ((txCount - offset) > pageSize) {\n links += '\\n' + `<a href=\"/${root}?start=${(offset + pageSize)}&n=${pageSize}&txntype=${txnType}${time && time !== '' ? '&time=' + time : ''}\" ` +\n 'class=\"d-inline-block dcricon-arrow-right pagination-number pagination-narrow m-1 fs20\" data-action=\"click->address#pageNumberLink\"></a>'\n }\n\n ctrl.tablePaginationTarget.innerHTML = dompurify.sanitize(links)\n }\n\n drawGraph () {\n const settings = ctrl.settings\n\n ctrl.noconfirmsTarget.classList.add('d-hide')\n ctrl.chartTarget.classList.remove('d-hide')\n\n // Check for invalid view parameters\n if (!ctrl.validChartType(settings.chart) || !ctrl.validGraphInterval()) return\n\n if (settings.chart === ctrl.state.chart && settings.bin === ctrl.state.bin) {\n // Only the zoom has changed.\n const zoom = Zoom.decode(settings.zoom)\n if (zoom) {\n ctrl.setZoom(zoom.start, zoom.end)\n }\n return\n }\n\n // Set the current view to prevent unnecessary reloads.\n Object.assign(ctrl.state, settings)\n ctrl.fetchGraphData(settings.chart, settings.bin)\n }\n\n async fetchGraphData (chart, bin) {\n const cacheKey = chart + '-' + bin\n if (ctrl.ajaxing === cacheKey) {\n return\n }\n ctrl.requestedChart = cacheKey\n ctrl.ajaxing = cacheKey\n\n ctrl.chartLoaderTarget.classList.add('loading')\n\n // Check for cached data\n if (ctrl.retrievedData[cacheKey]) {\n // Queue the function to allow the loader to display.\n setTimeout(() => {\n ctrl.popChartCache(chart, bin)\n ctrl.chartLoaderTarget.classList.remove('loading')\n ctrl.ajaxing = false\n }, 10) // 0 should work but doesn't always\n return\n }\n\n let url = `/api/treasury/io/${bin}`\n if (this.dcrAddress !== 'treasury') {\n const chartKey = chart === 'balance' ? 'amountflow' : chart\n url = '/api/address/' + ctrl.dcrAddress + '/' + chartKey + '/' + bin\n }\n\n const graphDataResponse = await requestJSON(url)\n ctrl.processData(chart, bin, graphDataResponse)\n ctrl.ajaxing = false\n ctrl.chartLoaderTarget.classList.remove('loading')\n }\n\n processData (chart, bin, data) {\n if (isEmpty(data)) {\n ctrl.noDataAvailable()\n return\n }\n\n const binSize = Zoom.mapValue(bin) || blockDuration\n if (chart === 'types') {\n ctrl.retrievedData['types-' + bin] = txTypesFunc(data, binSize)\n } else if (chart === 'amountflow' || chart === 'balance') {\n const processed = amountFlowProcessor(data, binSize)\n ctrl.retrievedData['amountflow-' + bin] = processed.flow\n ctrl.retrievedData['balance-' + bin] = processed.balance\n } else return\n setTimeout(() => {\n ctrl.popChartCache(chart, bin)\n }, 0)\n }\n\n popChartCache (chart, bin) {\n const cacheKey = chart + '-' + bin\n const binSize = Zoom.mapValue(bin) || blockDuration\n if (!ctrl.retrievedData[cacheKey] ||\n ctrl.requestedChart !== cacheKey\n ) {\n return\n }\n const data = ctrl.retrievedData[cacheKey]\n let options = null\n ctrl.flowTarget.classList.add('d-hide')\n switch (chart) {\n case 'types':\n options = typesGraphOptions\n options.plotter = sizedBarPlotter(binSize)\n break\n\n case 'amountflow':\n options = amountFlowGraphOptions\n options.plotter = sizedBarPlotter(binSize)\n ctrl.flowTarget.classList.remove('d-hide')\n break\n\n case 'balance':\n options = balanceGraphOptions\n break\n }\n options.zoomCallback = null\n options.drawCallback = null\n if (ctrl.graph === undefined) {\n ctrl.graph = ctrl.createGraph(data, options)\n } else {\n ctrl.graph.updateOptions({\n ...{ file: data },\n ...options\n })\n }\n if (chart === 'amountflow') {\n ctrl.updateFlow()\n }\n ctrl.chartLoaderTarget.classList.remove('loading')\n ctrl.xRange = ctrl.graph.xAxisExtremes()\n ctrl.validateZoom(binSize)\n }\n\n noDataAvailable () {\n this.noconfirmsTarget.classList.remove('d-hide')\n this.chartTarget.classList.add('d-hide')\n this.chartLoaderTarget.classList.remove('loading')\n }\n\n validChartType (chart) {\n return this.optionsTarget.namedItem(chart) || false\n }\n\n validGraphInterval (interval) {\n const bin = interval || this.settings.bin || this.activeBin\n let b = false\n this.binputs.forEach((button) => {\n if (button.name === bin) b = button\n })\n return b\n }\n\n validateZoom (binSize) {\n ctrl.setButtonVisibility()\n const zoom = Zoom.validate(ctrl.activeZoomKey || ctrl.settings.zoom, ctrl.xRange, binSize)\n ctrl.setZoom(zoom.start, zoom.end)\n ctrl.graph.updateOptions({\n zoomCallback: ctrl.zoomCallback,\n drawCallback: ctrl.drawCallback\n })\n }\n\n changeGraph (e) {\n this.settings.chart = this.chartType\n this.setGraphQuery()\n this.drawGraph()\n }\n\n changeBin (e) {\n const target = e.srcElement || e.target\n if (target.nodeName !== 'BUTTON') return\n ctrl.settings.bin = target.name\n ctrl.setIntervalButton(target.name)\n this.setGraphQuery()\n this.drawGraph()\n }\n\n setGraphQuery () {\n this.query.replace(this.settings)\n }\n\n updateFlow () {\n const bitmap = ctrl.flow\n if (bitmap === 0) {\n // If all boxes are unchecked, just leave the last view\n // in place to prevent chart errors with zero visible datasets\n return\n }\n ctrl.settings.flow = bitmap\n ctrl.setGraphQuery()\n // Set the graph dataset visibility based on the bitmap\n // Dygraph dataset indices: 0 received, 1 sent, 2 & 3 net\n const visibility = {}\n visibility[0] = bitmap & 1\n visibility[1] = bitmap & 2\n visibility[2] = visibility[3] = bitmap & 4\n Object.keys(visibility).forEach((idx) => {\n ctrl.graph.setVisibility(idx, visibility[idx])\n })\n }\n\n setFlowChecks () {\n const bitmap = this.settings.flow\n this.flowBoxes.forEach((box) => {\n box.checked = bitmap & parseInt(box.value)\n })\n }\n\n onZoom (e) {\n const target = e.srcElement || e.target\n if (target.nodeName !== 'BUTTON') return\n ctrl.zoomButtons.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n target.classList.add('btn-selected')\n if (ctrl.graph === undefined) {\n return\n }\n const duration = ctrl.activeZoomDuration\n\n const end = ctrl.xRange[1]\n const start = duration === 0 ? ctrl.xRange[0] : end - duration\n ctrl.setZoom(start, end)\n }\n\n setZoom (start, end) {\n ctrl.chartLoaderTarget.classList.add('loading')\n ctrl.graph.updateOptions({\n dateWindow: [start, end]\n })\n ctrl.settings.zoom = Zoom.encode(start, end)\n ctrl.lastEnd = end\n ctrl.query.replace(ctrl.settings)\n ctrl.chartLoaderTarget.classList.remove('loading')\n }\n\n getBin () {\n let bin = ctrl.query.get('bin')\n if (!ctrl.setIntervalButton(bin)) {\n bin = ctrl.activeBin\n }\n return bin\n }\n\n setIntervalButton (interval) {\n const button = ctrl.validGraphInterval(interval)\n if (!button) return false\n ctrl.binputs.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n button.classList.add('btn-selected')\n }\n\n setViewButton (view) {\n this.viewTargets.forEach((button) => {\n if (button.name === view) {\n button.classList.add('btn-active')\n } else {\n button.classList.remove('btn-active')\n }\n })\n }\n\n setChartType () {\n const chart = this.settings.chart\n if (this.validChartType(chart)) {\n this.optionsTarget.value = chart\n }\n }\n\n setSelectedZoom (zoomKey) {\n this.zoomButtons.forEach(function (button) {\n if (button.name === zoomKey) {\n button.classList.add('btn-selected')\n } else {\n button.classList.remove('btn-selected')\n }\n })\n }\n\n _drawCallback (graph, first) {\n if (first) return\n const [start, end] = ctrl.graph.xAxisRange()\n if (start === end) return\n if (end === this.lastEnd) return // Only handle slide event.\n this.lastEnd = end\n ctrl.settings.zoom = Zoom.encode(start, end)\n ctrl.query.replace(ctrl.settings)\n ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n }\n\n _zoomCallback (start, end) {\n ctrl.zoomButtons.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n ctrl.settings.zoom = Zoom.encode(start, end)\n ctrl.query.replace(ctrl.settings)\n ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n }\n\n setButtonVisibility () {\n const duration = ctrl.chartDuration\n const buttonSets = [ctrl.zoomButtons, ctrl.binputs]\n buttonSets.forEach((buttonSet) => {\n buttonSet.forEach((button) => {\n if (button.dataset.fixed) return\n if (duration > Zoom.mapValue(button.name)) {\n button.classList.remove('d-hide')\n } else {\n button.classList.remove('btn-selected')\n button.classList.add('d-hide')\n }\n })\n })\n }\n\n _confirmMempoolTxs (blockData) {\n const block = blockData.block\n if (this.hasPendingTarget) {\n this.pendingTargets.forEach((row) => {\n if (txInBlock(row.dataset.txid, block)) {\n const confirms = row.querySelector('td.addr-tx-confirms')\n confirms.textContent = '1'\n confirms.dataset.confirmationBlockHeight = block.height\n row.querySelector('td.addr-tx-time').textContent = humanize.date(block.time, true)\n const age = row.querySelector('td.addr-tx-age > span')\n age.dataset.age = block.time\n age.textContent = humanize.timeSince(block.unixStamp)\n delete row.dataset.addressTarget\n // Increment the displayed tx count\n const count = this.txnCountTarget\n count.dataset.txnCount++\n setTxnCountText(count, count.dataset.txnCount)\n this.numUnconfirmedTargets.forEach((tr, i) => {\n const td = tr.querySelector('td.addr-unconfirmed-count')\n let count = parseInt(tr.dataset.count)\n if (count) count--\n tr.dataset.count = count\n if (count === 0) {\n tr.classList.add('.d-hide')\n delete tr.dataset.addressTarget\n } else {\n td.textContent = count\n }\n })\n }\n })\n }\n }\n\n hashOver (e) {\n const target = e.srcElement || e.target\n const href = target.href\n this.hashTargets.forEach((link) => {\n if (link.href === href) {\n link.classList.add('blue-row')\n } else {\n link.classList.remove('blue-row')\n }\n })\n }\n\n hashOut (e) {\n const target = e.srcElement || e.target\n const href = target.href\n this.hashTargets.forEach((link) => {\n if (link.href === href) {\n link.classList.remove('blue-row')\n }\n })\n }\n\n toggleExpand (e) {\n const btn = this.expandoTarget\n if (btn.classList.contains('dcricon-expand')) {\n btn.classList.remove('dcricon-expand')\n btn.classList.add('dcricon-collapse')\n this.bigchartTarget.appendChild(this.chartboxTarget)\n this.fullscreenTarget.classList.remove('d-none')\n } else {\n this.putChartBack()\n }\n if (this.graph) this.graph.resize()\n }\n\n putChartBack () {\n const btn = this.expandoTarget\n btn.classList.add('dcricon-expand')\n btn.classList.remove('dcricon-collapse')\n this.littlechartTarget.appendChild(this.chartboxTarget)\n this.fullscreenTarget.classList.add('d-none')\n if (this.graph) this.graph.resize()\n }\n\n exitFullscreen (e) {\n if (e.target !== this.fullscreenTarget) return\n this.putChartBack()\n }\n\n get chartType () {\n return this.optionsTarget.value\n }\n\n get activeView () {\n let view = null\n this.viewTargets.forEach((button) => {\n if (button.classList.contains('btn-active')) view = button.name\n })\n return view\n }\n\n get activeZoomDuration () {\n return this.activeZoomKey ? Zoom.mapValue(this.activeZoomKey) : false\n }\n\n get activeZoomKey () {\n const activeButtons = this.zoomTarget.getElementsByClassName('btn-selected')\n if (activeButtons.length === 0) return null\n return activeButtons[0].name\n }\n\n get chartDuration () {\n return this.xRange[1] - this.xRange[0]\n }\n\n get activeBin () {\n return this.intervalTarget.getElementsByClassName('btn-selected')[0].name\n }\n\n get flow () {\n let base10 = 0\n this.flowBoxes.forEach((box) => {\n if (box.checked) base10 += parseInt(box.value)\n })\n return base10\n }\n\n get txnType () {\n return this.txntypeTarget.selectedOptions[0].value\n }\n\n get pageSize () {\n const selected = this.pagesizeTarget.selectedOptions\n return selected.length ? parseInt(selected[0].value) : 20\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { barChartPlotter } from '../helpers/chart_helper'\nimport { getDefault } from '../helpers/module_helper'\nimport humanize from '../helpers/humanize_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst chartLayout = {\n showRangeSelector: true,\n legend: 'follow',\n fillGraph: true,\n colors: ['#0c644e', '#e2b027', '#f36e6e'],\n stackedGraph: true,\n legendFormatter: agendasLegendFormatter,\n labelsSeparateLines: true,\n labelsKMB: true,\n labelsUTC: true\n}\n\nfunction agendasLegendFormatter (data) {\n if (data.x == null) return ''\n let html\n if (this.getLabels()[0] === 'Date') {\n html = this.getLabels()[0] + ': ' + humanize.date(data.x)\n } else {\n html = this.getLabels()[0] + ': ' + data.xHTML\n }\n const total = data.series.reduce((total, n) => {\n return total + n.y\n }, 0)\n data.series.forEach((series) => {\n const percentage = total !== 0 ? ((series.y * 100) / total).toFixed(2) : 0\n html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n html += `<br>${series.dashHTML}<span style=\"color: ${series.color};\">${series.labelHTML}: ${series.yHTML} (${percentage}%)</span>`\n })\n return html\n}\n\nfunction cumulativeVoteChoicesData (d) {\n if (d == null || !(d.yes instanceof Array)) return [[0, 0, 0, 0]]\n return d.yes.map((n, i) => {\n return [\n new Date(d.time[i]),\n n,\n d.abstain[i],\n d.no[i]\n ]\n })\n}\n\nfunction voteChoicesByBlockData (d) {\n if (d == null || !(d.yes instanceof Array)) return [[0, 0, 0, 0]]\n return d.yes.map((n, i) => {\n return [\n d.height[i],\n n,\n d.abstain[i],\n d.no[i]\n ]\n })\n}\n\nexport default class extends Controller {\n static get targets () {\n return [\n 'cumulativeVoteChoices',\n 'voteChoicesByBlock',\n 'agendaName',\n 'extendDescription'\n ]\n }\n\n initialize () {\n this.emptydata = [[0, 0, 0, 0]]\n this.cumulativeVoteChoicesChart = false\n this.voteChoicesByBlockChart = false\n }\n\n async connect () {\n this.agendaId = this.data.get('id')\n this.element.classList.add('loading')\n this.agendaName = this.data.get('name')\n this.description = this.data.get('description')\n this.agendaNameTarget.innerHTML = this.changeToHTMLTag(this.agendaName)\n this.extendDescriptionTarget.innerHTML = this.changeToHTMLTag(this.description)\n this.Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n this.drawCharts()\n const agendaResponse = await requestJSON('/api/agenda/' + this.agendaId)\n this.cumulativeVoteChoicesChart.updateOptions({\n file: cumulativeVoteChoicesData(agendaResponse.by_time)\n })\n this.voteChoicesByBlockChart.updateOptions({\n file: voteChoicesByBlockData(agendaResponse.by_height)\n })\n\n this.element.classList.remove('loading')\n }\n\n changeToHTMLTag (input) {\n while (input.indexOf('[[') >= 0 && input.indexOf(']]') >= 0) {\n const start = input.indexOf('[[') + 2\n const end = input.indexOf(']]')\n const inText = input.substring(start, end)\n if (inText.indexOf('((') >= 0 && inText.indexOf('))') >= 0) {\n const linkStart = inText.indexOf('((') + 2\n const linkEnd = inText.indexOf('))')\n const link = inText.substring(linkStart, linkEnd)\n const mainText = inText.replace('((' + link + '))', '')\n const htmlLink = '<a href=\"' + link + '\" target=\"_blank\">' + mainText + '</a>'\n input = input.replace('[[' + inText + ']]', htmlLink)\n } else break\n }\n return input\n }\n\n disconnect () {\n this.cumulativeVoteChoicesChart.destroy()\n this.voteChoicesByBlockChart.destroy()\n }\n\n drawCharts () {\n this.cumulativeVoteChoicesChart = this.drawChart(\n this.cumulativeVoteChoicesTarget,\n {\n labels: ['Date', 'Yes', 'Abstain', 'No'],\n ylabel: 'Cumulative Vote Choices Cast',\n title: 'Cumulative Vote Choices',\n labelsKMB: true\n }\n )\n this.voteChoicesByBlockChart = this.drawChart(\n this.voteChoicesByBlockTarget,\n {\n labels: ['Block Height', 'Yes', 'Abstain', 'No'],\n ylabel: 'Vote Choices Cast',\n title: 'Vote Choices By Block',\n plotter: barChartPlotter\n }\n )\n }\n\n drawChart (el, options, Dygraph) {\n return new this.Dygraph(\n el,\n this.emptydata,\n {\n ...chartLayout,\n ...options\n }\n )\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport globalEventBus from '../services/event_bus_service'\nimport { darkEnabled } from '../services/theme_service'\nimport { VoteMeter, ProgressMeter } from '../helpers/meters.js'\n\nexport default class extends Controller {\n static get targets () {\n return [\n 'minerMeter', 'voterMeter'\n ]\n }\n\n connect () {\n this.minerMeter = this.voterMeter = null\n this.meters = []\n const opts = {\n darkMode: darkEnabled()\n }\n if (this.hasMinerMeterTarget) {\n this.minerMeter = new ProgressMeter(this.minerMeterTarget, opts)\n this.meters.push(this.minerMeter)\n }\n if (this.hasVoterMeterTarget) {\n this.voterMeter = new ProgressMeter(this.voterMeterTarget, opts)\n this.meters.push(this.voterMeter)\n }\n const quorumMetersDivs = document.querySelectorAll('div.quorum')\n quorumMetersDivs.forEach((meterDiv) => {\n this.meters.push(new ProgressMeter(meterDiv, opts))\n })\n const approvalMetersDivs = document.querySelectorAll('div.approval')\n approvalMetersDivs.forEach((meterDiv) => {\n this.meters.push(new VoteMeter(meterDiv, opts))\n })\n this.setNightMode = this._setNightMode.bind(this)\n globalEventBus.on('NIGHT_MODE', this.setNightMode)\n }\n\n disconnect () {\n globalEventBus.off('NIGHT_MODE', this.setNightMode)\n }\n\n _setNightMode (state) {\n this.meters.forEach((meter) => {\n meter.setDarkMode(state.nightMode)\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport globalEventBus from '../services/event_bus_service'\nimport dompurify from 'dompurify'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport { requestJSON } from '../helpers/http'\nimport { getDefault } from '../helpers/module_helper'\nimport { padPoints, sizedBarPlotter } from '../helpers/chart_helper'\nimport Zoom from '../helpers/zoom_helper'\nimport { isEmpty } from 'lodash-es'\nimport humanize from '../helpers/humanize_helper'\n\nlet Dygraph // lazy loaded on connect\nconst maxAddrRows = 160\nlet ctrl = null\nlet isSearching = false\n\nfunction amountTxCountProcessor (chart, d, binSize) {\n const amountData = []\n const txCountData = []\n d.time.map((n, i) => {\n if (chart === 'amount') {\n amountData.push([new Date(n), d.redeemAmount[i], d.refundAmount[i]])\n } else if (chart === 'txcount') {\n txCountData.push([new Date(n), d.redeemCount[i], d.refundCount[i]])\n }\n })\n if (chart === 'amount') {\n padPoints(amountData, binSize)\n } else if (chart === 'txcount') {\n padPoints(txCountData, binSize)\n }\n return {\n amount: amountData,\n txcount: txCountData\n }\n}\n\nfunction formatter (data) {\n let xHTML = ''\n if (data.xHTML !== undefined) {\n xHTML = humanize.date(data.x, false, true)\n }\n let html = this.getLabels()[0] + ': ' + xHTML\n data.series.map((series) => {\n if (series.color === undefined) return ''\n // Skip display of zeros\n if (series.y === 0) return ''\n const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n html += '<br>' + series.dashHTML + l + ': ' + (isNaN(series.y) ? '' : series.y) + '</span>'\n })\n return html\n}\n\nfunction amountFormatter (data) {\n let xHTML = ''\n if (data.xHTML !== undefined) {\n xHTML = humanize.date(data.x, false, true)\n }\n let html = this.getLabels()[0] + ': ' + xHTML\n data.series.map((series) => {\n if (series.color === undefined) return ''\n // Skip display of zeros\n if (series.y === 0) return ''\n const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n html += '<br>' + series.dashHTML + l + ': ' + (isNaN(series.y) ? '' : series.y + ' DCR') + '</span>'\n })\n return html\n}\n\nlet commonOptions, amountOptions, txCountOptions\nfunction createOptions () {\n commonOptions = {\n digitsAfterDecimal: 8,\n showRangeSelector: true,\n rangeSelectorHeight: 20,\n rangeSelectorForegroundStrokeColor: '#999',\n rangeSelectorBackgroundStrokeColor: '#777',\n legend: 'follow',\n fillAlpha: 0.9,\n labelsKMB: true,\n labelsUTC: true,\n stepPlot: false,\n rangeSelectorPlotFillColor: 'rgba(128, 128, 128, 0.3)',\n rangeSelectorPlotFillGradientColor: 'transparent',\n rangeSelectorPlotStrokeColor: 'rgba(128, 128, 128, 0.7)',\n rangeSelectorPlotLineWidth: 2\n }\n\n amountOptions = {\n labels: ['Date', 'Redeemed Amount', 'Refund Amount'],\n colors: ['#2971ff', '#ff9a29'],\n ylabel: 'Amount (DCR)',\n visibility: [true, true],\n legendFormatter: amountFormatter,\n stackedGraph: true,\n fillGraph: false\n }\n\n txCountOptions = {\n labels: ['Date', 'Redeemed Count', 'Refund Count'],\n colors: ['#15b16a', '#9c3e76'],\n ylabel: '# of contracts',\n visibility: [true, true],\n legendFormatter: formatter,\n stackedGraph: true,\n fillGraph: false\n }\n}\n\nexport default class extends Controller {\n static get targets () {\n return ['pagesize', 'txnCount', 'paginator', 'pageplus', 'pageminus', 'listbox', 'table',\n 'range', 'pagebuttons', 'listLoader', 'tablePagination', 'paginationheader', 'pair',\n 'status', 'topTablePagination', 'fullscreen', 'bigchart', 'littlechart', 'chartbox', 'chartLoader',\n 'options', 'zoom', 'interval', 'flow', 'expando', 'noconfirms', 'chart', 'redeemRadio', 'refundRadio',\n 'searchBox', 'searchInput', 'searchBtn', 'clearSearchBtn', 'totalAmount', 'totalContracts', 'redeemCount', 'refundCount']\n }\n\n async connect () {\n ctrl = this\n ctrl.retrievedData = {}\n ctrl.swapsData = null\n ctrl.ajaxing = false\n ctrl.requestedChart = false\n ctrl.zoomCallback = ctrl._zoomCallback.bind(ctrl)\n ctrl.drawCallback = ctrl._drawCallback.bind(ctrl)\n ctrl.lastEnd = 0\n\n ctrl.bindElements()\n ctrl.bindEvents()\n ctrl.query = new TurboQuery()\n\n // These two are templates for query parameter sets.\n // When url query parameters are set, these will also be updated.\n ctrl.settings = TurboQuery.nullTemplate(['chart', 'zoom', 'bin', 'flow', 'n', 'start', 'pair', 'status', 'search', 'mode'])\n // Get initial view settings from the url\n ctrl.query.update(ctrl.settings)\n ctrl.state = Object.assign({}, ctrl.settings)\n ctrl.settings.pair = ctrl.settings.pair && ctrl.settings.pair !== '' ? ctrl.settings.pair : 'all'\n ctrl.settings.status = ctrl.settings.status && ctrl.settings.status !== '' ? ctrl.settings.status : 'all'\n ctrl.settings.mode = ctrl.settings.mode && ctrl.settings.mode !== '' ? ctrl.settings.mode : 'full'\n document.getElementById('viewListToggle').checked = ctrl.settings.mode !== 'simple'\n this.pairTarget.value = ctrl.settings.pair\n this.statusTarget.value = ctrl.settings.status\n if (!ctrl.settings.start || ctrl.settings.start === '') {\n ctrl.settings.start = 0\n }\n if (!ctrl.settings.n || ctrl.settings.n === '') {\n ctrl.settings.n = 20\n }\n ctrl.paginationParams = {\n offset: ctrl.settings.start,\n count: 0,\n pagesize: ctrl.settings.n\n }\n\n // init for chart\n ctrl.setChartType()\n if (ctrl.settings.flow) ctrl.setFlowChecks()\n if (ctrl.settings.zoom !== null) {\n ctrl.zoomButtons.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n }\n if (ctrl.settings.bin == null) {\n ctrl.settings.bin = ctrl.getBin()\n }\n if (ctrl.settings.chart == null || !ctrl.validChartType(ctrl.settings.chart)) {\n ctrl.settings.chart = ctrl.chartType\n }\n\n if (ctrl.settings.search && ctrl.settings.search !== '') {\n this.searchInputTarget.value = ctrl.settings.search\n isSearching = true\n this.searchBtnTarget.classList.add('d-none')\n this.clearSearchBtnTarget.classList.remove('d-none')\n } else {\n this.searchBtnTarget.classList.remove('d-none')\n this.clearSearchBtnTarget.classList.add('d-none')\n }\n\n Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n\n ctrl.initializeChart()\n ctrl.drawGraph()\n // fetch table data\n await this.fetchTable(ctrl.paginationParams.count, ctrl.paginationParams.offset)\n this.resetPageSizeOptions()\n this.processDecredBlock = this._processDecredBlock.bind(this)\n globalEventBus.on('BLOCK_RECEIVED', this.processDecredBlock)\n this.processBtcBlock = this._processBtcBlock.bind(this)\n globalEventBus.on('BTC_BLOCK_RECEIVED', this.processBtcBlock)\n this.processLtcBlock = this._processLtcBlock.bind(this)\n globalEventBus.on('LTC_BLOCK_RECEIVED', this.processLtcBlock)\n }\n\n disconnect () {\n if (this.graph !== undefined) {\n this.graph.destroy()\n }\n this.retrievedData = {}\n globalEventBus.off('BLOCK_RECEIVED', this.processDecredBlock)\n globalEventBus.off('BTC_BLOCK_RECEIVED', this.processBtcBlock)\n globalEventBus.off('LTC_BLOCK_RECEIVED', this.processLtcBlock)\n }\n\n _processDecredBlock (blockData) {\n this.updateAtomicSwapsFromSocket(blockData.block.GroupSwaps, blockData.extra.swapsTotalAmount,\n blockData.extra.swapsTotalContract, blockData.extra.refundCount)\n }\n\n _processBtcBlock (blockData) {\n this.updateAtomicSwapsFromSocket(blockData.block.GroupSwaps, blockData.extra.swapsTotalAmount,\n blockData.extra.swapsTotalContract, blockData.extra.refundCount)\n }\n\n _processLtcBlock (blockData) {\n this.updateAtomicSwapsFromSocket(blockData.block.GroupSwaps, blockData.extra.swapsTotalAmount,\n blockData.extra.swapsTotalContract, blockData.extra.refundCount)\n }\n\n updateAtomicSwapsFromSocket (swapList, totalAmount, totalContracts, refundCount) {\n if (!swapList || swapList.length === 0) {\n return\n }\n this.totalAmountTarget.textContent = humanize.decimalParts(humanize.toAmountFloat(totalAmount), true, 2)\n this.totalContractsTarget.textContent = humanize.decimalParts(parseFloat(totalContracts), true, 0)\n this.refundCountTarget.textContent = humanize.decimalParts(parseFloat(refundCount), true, 0)\n this.redeemCountTarget.textContent = humanize.decimalParts(parseFloat(totalContracts - refundCount), true, 0)\n const insertedGroupTx = []\n if (ctrl.swapsData === null) {\n ctrl.swapsData = swapList.length > ctrl.paginationParams.pagesize ? swapList.slice(0, ctrl.paginationParams.pagesize) : swapList\n } else {\n const newSwaps = []\n for (let i = 0; i < swapList.length; i++) {\n if (i === ctrl.paginationParams.pagesize) {\n break\n }\n if (insertedGroupTx.includes(swapList[i].groupTx)) {\n continue\n }\n newSwaps.push(swapList[i])\n insertedGroupTx.push(swapList[i].groupTx)\n }\n if (newSwaps.length < ctrl.paginationParams.pagesize) {\n for (let i = 0; i < swapList.length; i++) {\n const swap = swapList[i]\n if (newSwaps.length === ctrl.paginationParams.pagesize) {\n break\n }\n if (insertedGroupTx.includes(swap.groupTx)) {\n continue\n }\n newSwaps.push(swap)\n insertedGroupTx.push(swap.groupTx)\n }\n }\n ctrl.swapsData = newSwaps\n }\n this.handlerUpdateTable()\n }\n\n // Request the initial chart data, grabbing the Dygraph script if necessary.\n initializeChart () {\n createOptions()\n // If no chart data has been requested, e.g. when initially on the\n // list tab, then fetch the initial chart data.\n if (!this.requestedChart) {\n this.fetchGraphData(this.chartType, this.getBin())\n }\n }\n\n searchInputKeypress (e) {\n if (e.keyCode === 13) {\n this.searchAtomicSwapContract()\n }\n }\n\n createDataTableView () {\n if (this.swapsData === null) {\n return ''\n }\n let resHtml = `<div class=\"btable-table-wrap maxh-none mt-2\">\n <table class=\"btable-table w-100 table-responsive-sm\">\n\t\t <thead>\n\t\t <tr class=\"bg-none\">\n\t\t\t\t<th class=\"text-start fw-bold\">Pair/Currency</th>\n\t\t\t\t<th class=\"text-center fw-bold\">Txid</th>\n <th class=\"text-start fw-bold\">Value</th>\n\t\t\t\t<th class=\"text-start fw-bold\">Height</th>\n\t\t\t\t<th class=\"text-end fw-bold\">Time (UTC)</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody class=\"bgc-white\">`\n this.swapsData.forEach((swap) => {\n const hasTargetToken = swap.targetToken !== ''\n resHtml += `<tr class=\"swap-group-header\">\n\t\t\t\t<td class=\"text-start\" colspan=\"2\">\n\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t${hasTargetToken\n? `<div class=\"p-relative d-flex ai-center pair-icons\">\n\t\t\t\t\t\t\t<img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\"> \n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\" class=\"second-pair\">\n\t\t\t\t\t\t </div>`\n: '<img src=\"/images/synchronize.png\" width=\"20\" height=\"20\" class=\"me-1\">'}\n\t\t\t\t\t\t<p class=\"fw-bold\">${hasTargetToken ? 'DCR/' + swap.targetToken.toUpperCase() : 'Verifying'}</p>\n\t\t\t\t\t\t<span class=\"common-label py-1 px-2 ms-2 ${swap.isRefund ? 'refund-brighter-bg refund-border' : 'success-bg success-border'} fw-400 fs13\">${swap.isRefund ? 'Refund' : 'Redemption'}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-start fw-bold\" colspan=\"2\">\n ${humanize.toAmountFloatDisplay(swap.source.totalAmount, -1, 'DCR')}\n\t\t\t\t\t${hasTargetToken ? ` (${humanize.toAmountFloatDisplay(swap.target.totalAmount, -1, swap.targetToken.toUpperCase())})` : ''}\n ${hasTargetToken ? `<div class=\"mt-2 fst-italic\"><span class=\"fw-bold\">Rate:</span> <span class=\"fw-400\">${humanize.decimalParts(humanize.toAmountFloat(swap.target.totalAmount) / humanize.toAmountFloat(swap.source.totalAmount), true, 7)} ${swap.targetToken.toUpperCase()}/DCR</span></div>` : ''}\n\t\t\t\t</td>\n <td class=\"text-end\"><span data-type=\"age\" data-time-target=\"age\" data-age=\"${swap.time}\">${humanize.timeDuration(humanize.timeToDuration(swap.time))}</span> ago</td>\n\t\t\t</tr>`\n swap.source.contracts.forEach((contract) => {\n resHtml += `<tr>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<div class=\"d-flex ai-center ms-3 ms-lg-4\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">Contract</span></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t<div class=\"clipboard\">${humanize.hashElide(contract.txid, '/tx/' + contract.txid)}</div>\n\t\t\t\t</td>\n <td class=\"text-start\">\n ${humanize.toAmountFloatDisplay(contract.value, -1, 'DCR')}\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<a href=\"/decred/block/${contract.height}\">${contract.height}</a>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-end\">\n ${contract.timeDisp}\n\t\t\t\t</td>\n\t\t\t</tr>`\n })\n swap.source.results.forEach((result) => {\n resHtml += `<tr>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<div class=\"d-flex ai-center ms-3 ms-lg-4\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">${swap.isRefund ? 'Refund' : 'Redemption'}</span></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t<div class=\"clipboard\">${humanize.hashElide(result.txid, '/tx/' + result.txid)}</div>\n\t\t\t\t</td>\n <td class=\"text-start\">\n ${humanize.toAmountFloatDisplay(result.value, -1, 'DCR')}\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<a href=\"/decred/block/${result.height}\">${result.height}</a>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-end\">\n ${result.timeDisp}\n\t\t\t\t</td>\n\t\t\t</tr>`\n })\n if (hasTargetToken) {\n swap.target.contracts.forEach((contract) => {\n resHtml += `<tr>\n\t\t\t\t <td class=\"text-start\">\n\t\t\t\t\t<div class=\"d-flex ai-center ms-3 ms-lg-4\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">Contract</span></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t<div class=\"clipboard\">${humanize.hashElide(contract.txid, '/' + swap.targetToken + '/tx/' + contract.txid)}</div>\n\t\t\t\t</td>\n <td class=\"text-start\">\n\t\t\t\t\t ${humanize.toAmountFloatDisplay(contract.value, -1, swap.targetToken.toUpperCase())}\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<a href=\"/${swap.targetToken}/block/${contract.height}\">${contract.height}</a>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-end\">\n ${contract.timeDisp}\n\t\t\t\t</td>\n\t\t\t</tr>`\n })\n swap.target.results.forEach((result) => {\n resHtml += `<tr>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<div class=\"d-flex ai-center ms-3 ms-lg-4\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">${swap.isRefund ? 'Refund' : 'Redemption'}</span></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t<div class=\"clipboard\">${humanize.hashElide(result.txid, '/' + swap.targetToken + '/tx/' + result.txid)}</div>\n\t\t\t\t</td>\n <td class=\"text-start\">\n ${humanize.toAmountFloatDisplay(result.value, -1, swap.targetToken.toUpperCase())}\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<a href=\"/${swap.targetToken}/block/${result.height}\">${result.height}</a>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-end\">\n ${result.timeDisp}\n\t\t\t\t</td>\n\t\t\t</tr>`\n })\n }\n })\n resHtml += '</tbody></table></div>'\n return resHtml\n }\n\n createGridDataView () {\n if (this.swapsData === null) {\n return ''\n }\n let resHtml = `<div class=\"btable-table-wrap maxh-none mt-0\">\n <table class=\"btable-table atomic-table w-100 table-responsive-sm\">\n\t <tbody class=\"bgc-white\">`\n this.swapsData.forEach((swap) => {\n resHtml += `<tr><td>\n\t\t\t\t<div class=\"pb-1 border-2-bottom-grey\">\n\t\t\t\t<div class=\"d-md-flex ai-center fw-600 fs15\">\n\t\t\t\t\t<div class=\"d-flex ai-center\">`\n const hasTargetToken = swap.targetToken !== ''\n resHtml += `${!hasTargetToken\n? '<img src=\"/images/synchronize.png\" width=\"20\" height=\"20\" class=\"me-1\">'\n: `<div class=\"p-relative d-flex ai-center pair-icons\">\n\t\t\t\t\t\t\t<img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\"> \n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\" class=\"second-pair\">\n\t\t\t\t\t\t </div>`}<p>${hasTargetToken ? 'DCR/' + swap.targetToken.toUpperCase() : 'Verifying'}</p></div>`\n resHtml += `<div class=\"d-flex ai-center ms-0 ms-md-3\">Amount: ${humanize.toAmountFloatDisplay(swap.source.totalAmount, -1, 'DCR')}\n ${hasTargetToken ? ` (${humanize.toAmountFloatDisplay(swap.target.totalAmount, -1, swap.targetToken.toUpperCase())})` : ''}\n <span class=\"common-label py-1 px-2 ms-2 ${swap.isRefund ? 'refund-brighter-bg refund-border' : 'success-bg success-border'} fw-400 fs13\">${swap.isRefund ? 'Refund' : 'Redemption'}</span></div>\n </div>\n ${hasTargetToken ? `<div class=\"mt-2 fst-italic\"><span class=\"fw-bold\">Rate:</span> ${humanize.decimalParts(humanize.toAmountFloat(swap.target.totalAmount) / humanize.toAmountFloat(swap.source.totalAmount), true, 7)} ${swap.targetToken.toUpperCase()}/DCR, <span data-type=\"age\" data-time-target=\"age\" data-age=\"${swap.time}\">${humanize.timeDuration(humanize.timeToDuration(swap.time))}</span> ago</div>` : ''}\n </div><div class=\"row mt-3\">\n\t\t\t\t\t <div class=\"col-24 col-md-12 mb-3\">\n\t\t\t\t\t\t <div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t <img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t <div class=\"ms-2\"><span class=\"fw-600\">Contract</span></div>\n\t\t\t\t\t\t </div>`\n swap.source.contracts.forEach((contract) => {\n resHtml += `<div class=\"row mt-1\">\n\t\t\t\t\t\t\t<div class=\"col-24\">\n\t\t\t\t\t\t\t <div class=\"clipboard\">${humanize.hashElide(contract.txid, '/tx/' + contract.txid)}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p class=\"col-12 ps-2\">Block Height: <a href=\"/decred/block/${contract.height}\">${contract.height}</a></p>\n\t\t\t\t\t\t\t<p class=\"col-12 ps-2\">Value: ${humanize.toAmountFloatDisplay(contract.value, -1, 'DCR')}</p>\n\t\t\t\t\t\t\t<p class=\"col-12 ps-2\">Fees: ${humanize.toAmountFloatDisplay(contract.fees, -1, 'DCR')}</p>\n\t\t\t\t\t\t\t<p class=\"col-12 ps-2\"><span class=\"fw-bold\">Created: </span>${contract.timeDisp}</p>\n\t\t\t\t\t\t </div>`\n })\n resHtml += `</div>\n\t\t\t\t\t<div class=\"col-24 col-md-12 mb-3\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">${swap.isRefund ? 'Refund' : 'Redemption'}</span></div>\n\t\t\t\t\t\t</div>`\n swap.source.results.forEach((result) => {\n resHtml += `<div class=\"row mt-1\">\n <div class=\"col-24\">\n <div class=\"clipboard\">${humanize.hashElide(result.txid, '/tx/' + result.txid)}</div>\n </div>\n <p class=\"col-12 ps-2\">Block Height: <a href=\"/decred/block/${result.height}\">${result.height}</a></p>\n <p class=\"col-12 ps-2\">Value: ${humanize.toAmountFloatDisplay(result.value, -1, 'DCR')}</p>\n <p class=\"col-12 ps-2\"><span class=\"fw-bold\">Locked Time: </span>${result.lockTimeDisp}</p>\n <p class=\"col-12 ps-2\"><span class=\"fw-bold\">${swap.isRefund ? 'Refunded' : 'Redeemed'} At: </span>${result.timeDisp}</p>\n </div>`\n })\n resHtml += '</div></div>'\n if (hasTargetToken) {\n resHtml += `<div class=\"row\">\n\t\t\t\t\t <div class=\"col-24 col-md-12 mb-1\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">Contracts</span></div>\n\t\t\t\t\t\t</div>`\n\n swap.target.contracts.forEach((contract) => {\n resHtml += `<div class=\"row mt-1\">\n <div class=\"col-24\">\n <div class=\"clipboard\">${humanize.hashElide(contract.txid, '/' + swap.targetToken + '/tx/' + contract.txid)}</div>\n </div>\n <p class=\"col-12 ps-2\">Block Height: <a href=\"/${swap.targetToken}/block/${contract.height}\">${contract.height}</a></p>\n <p class=\"col-12 ps-2\">Value: ${humanize.toAmountFloatDisplay(contract.value, -1, swap.targetToken.toUpperCase())}</p>\n <p class=\"col-12 ps-2\">Fees: ${humanize.toAmountFloatDisplay(contract.fees, -1, swap.targetToken.toUpperCase())}</p>\n <p class=\"col-12 ps-2\"><span class=\"fw-bold\">Created: </span>${contract.timeDisp}</p>\n </div>`\n })\n resHtml += `</div>\n\t\t\t\t\t <div class=\"col-24 col-md-12 mb-1\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">${swap.isRefund ? 'Refund' : 'Redemption'}</span></div>\n\t\t\t\t\t\t</div>`\n swap.target.results.forEach((result) => {\n resHtml += `<div class=\"row mt-1\">\n <div class=\"col-24\">\n <div class=\"clipboard\">${humanize.hashElide(result.txid, '/' + swap.targetToken + '/tx/' + result.txid)}</div>\n </div>\n <p class=\"col-12 ps-2\">Block Height: <a href=\"/${swap.targetToken}/block/${result.height}\">${result.height}</a></p>\n <p class=\"col-12 ps-2\">Value: ${humanize.toAmountFloatDisplay(result.value, -1, swap.targetToken.toUpperCase())}</p>\n <p class=\"col-12 ps-2\"><span class=\"fw-bold\">Locked Time: </span>${result.lockTimeDisp}</p>\n <p class=\"col-12 ps-2\"><span class=\"fw-bold\">${swap.isRefund ? 'Refunded' : 'Redeemed'} At: </span>${result.timeDisp}</p>\n </div>`\n })\n resHtml += '</div></div>'\n }\n resHtml += '</td></tr>'\n })\n resHtml += '</tbody></table></div>'\n return resHtml\n }\n\n searchAtomicSwapContract () {\n // if search key is empty, ignore\n if (!this.searchInputTarget.value || this.searchInputTarget.value === '') {\n this.searchBtnTarget.classList.remove('d-none')\n this.clearSearchBtnTarget.classList.add('d-none')\n if (isSearching) {\n this.settings.search = ''\n isSearching = false\n this.paginationParams.offset = 0\n this.fetchTable(this.pageSize, this.paginationParams.offset)\n }\n return\n }\n this.searchBtnTarget.classList.add('d-none')\n this.clearSearchBtnTarget.classList.remove('d-none')\n this.settings.search = this.searchInputTarget.value\n this.paginationParams.offset = 0\n this.fetchTable(this.pageSize, this.paginationParams.offset)\n }\n\n async clearSearchState () {\n this.settings.search = ''\n this.searchInputTarget.value = ''\n this.searchBtnTarget.classList.remove('d-none')\n this.clearSearchBtnTarget.classList.add('d-none')\n isSearching = false\n this.paginationParams.offset = 0\n await this.fetchTable(this.pageSize, this.paginationParams.offset)\n }\n\n async clearSearch () {\n await this.clearSearchState()\n this.resetPageSizeOptions()\n }\n\n onTypeChange (e) {\n if (!e.target.value || e.target.value === '') {\n return\n }\n this.searchBtnTarget.classList.remove('d-none')\n this.clearSearchBtnTarget.classList.add('d-none')\n }\n\n drawGraph () {\n const settings = ctrl.settings\n ctrl.noconfirmsTarget.classList.add('d-hide')\n ctrl.chartTarget.classList.remove('d-hide')\n // Check for invalid view parameters\n if (!ctrl.validChartType(settings.chart) || !ctrl.validGraphInterval()) return\n // update flow radio button color\n this.redeemRadioTarget.classList.add(settings.chart === 'amount' ? 'redeem-amount' : 'redeem-txcount')\n this.redeemRadioTarget.classList.remove(settings.chart === 'amount' ? 'redeem-txcount' : 'redeem-amount')\n this.refundRadioTarget.classList.add(settings.chart === 'amount' ? 'refund-amount' : 'refund-txcount')\n this.refundRadioTarget.classList.remove(settings.chart === 'amount' ? 'refund-txcount' : 'refund-amount')\n\n if (settings.chart === ctrl.state.chart && settings.bin === ctrl.state.bin) {\n // Only the zoom has changed.\n const zoom = Zoom.decode(settings.zoom)\n if (zoom) {\n ctrl.setZoom(zoom.start, zoom.end)\n }\n return\n }\n\n // Set the current view to prevent unnecessary reloads.\n Object.assign(ctrl.state, settings)\n ctrl.fetchGraphData(settings.chart, settings.bin)\n }\n\n changeViewMode () {\n ctrl.settings.mode = ctrl.settings.mode === 'full' ? 'simple' : 'full'\n document.getElementById('viewListToggle').checked = ctrl.settings.mode === 'full'\n ctrl.query.replace(ctrl.settings)\n ctrl.tableTarget.innerHTML = ctrl.settings.mode === 'full' ? this.createGridDataView() : this.createDataTableView()\n }\n\n async fetchGraphData (chart, bin) {\n const cacheKey = chart + '-' + bin\n if (ctrl.ajaxing === cacheKey) {\n return\n }\n ctrl.requestedChart = cacheKey\n ctrl.ajaxing = cacheKey\n\n ctrl.chartLoaderTarget.classList.add('loading')\n\n // Check for cached data\n if (ctrl.retrievedData[cacheKey]) {\n // Queue the function to allow the loader to display.\n setTimeout(() => {\n ctrl.popChartCache(chart, bin)\n ctrl.chartLoaderTarget.classList.remove('loading')\n ctrl.ajaxing = false\n }, 10) // 0 should work but doesn't always\n return\n }\n const url = `/api/atomic-swaps/${chart}/${bin}`\n const graphDataResponse = await requestJSON(url)\n ctrl.processData(chart, bin, graphDataResponse)\n ctrl.ajaxing = false\n ctrl.chartLoaderTarget.classList.remove('loading')\n }\n\n popChartCache (chart, bin) {\n const cacheKey = chart + '-' + bin\n const binSize = Zoom.mapValue(bin)\n if (!ctrl.retrievedData[cacheKey] ||\n ctrl.requestedChart !== cacheKey\n ) {\n return\n }\n const data = ctrl.retrievedData[cacheKey]\n let options = null\n switch (chart) {\n case 'amount':\n options = amountOptions\n options.plotter = sizedBarPlotter(binSize)\n break\n case 'txcount':\n options = txCountOptions\n options.plotter = sizedBarPlotter(binSize)\n break\n }\n options.zoomCallback = null\n options.drawCallback = null\n if (ctrl.graph === undefined) {\n ctrl.graph = ctrl.createGraph(data, options)\n } else {\n ctrl.graph.updateOptions({\n ...{ file: data },\n ...options\n })\n }\n ctrl.updateFlow()\n ctrl.chartLoaderTarget.classList.remove('loading')\n ctrl.xRange = ctrl.graph.xAxisExtremes()\n ctrl.validateZoom(binSize)\n }\n\n processData (chart, bin, data) {\n if (isEmpty(data)) {\n ctrl.noDataAvailable()\n return\n }\n const binSize = Zoom.mapValue(bin)\n const processed = amountTxCountProcessor(chart, data, binSize)\n ctrl.retrievedData[chart + '-' + bin] = chart === 'amount' ? processed.amount : processed.txcount\n setTimeout(() => {\n ctrl.popChartCache(chart, bin)\n }, 0)\n }\n\n noDataAvailable () {\n this.noconfirmsTarget.classList.remove('d-hide')\n this.chartTarget.classList.add('d-hide')\n this.chartLoaderTarget.classList.remove('loading')\n }\n\n updateFlow () {\n const bitmap = ctrl.flow\n if (bitmap === 0) {\n // If all boxes are unchecked, just leave the last view\n // in place to prevent chart errors with zero visible datasets\n return\n }\n ctrl.settings.flow = bitmap\n ctrl.setGraphQuery()\n // Set the graph dataset visibility based on the bitmap\n // Dygraph dataset indices: 0 received, 1 sent, 2 & 3 net\n const visibility = {}\n visibility[0] = bitmap & 1\n visibility[1] = bitmap & 2\n Object.keys(visibility).forEach((idx) => {\n ctrl.graph.setVisibility(idx, visibility[idx])\n })\n }\n\n validateZoom (binSize) {\n ctrl.setButtonVisibility()\n const zoom = Zoom.validate(ctrl.activeZoomKey || ctrl.settings.zoom, ctrl.xRange, binSize)\n ctrl.setZoom(zoom.start, zoom.end)\n ctrl.graph.updateOptions({\n zoomCallback: ctrl.zoomCallback,\n drawCallback: ctrl.drawCallback\n })\n }\n\n changeGraph (e) {\n this.settings.chart = this.chartType\n this.setGraphQuery()\n this.drawGraph()\n }\n\n changeBin (e) {\n const target = e.srcElement || e.target\n if (target.nodeName !== 'BUTTON') return\n ctrl.settings.bin = target.name\n ctrl.setIntervalButton(target.name)\n this.setGraphQuery()\n this.drawGraph()\n }\n\n setZoom (start, end) {\n if (ctrl.graph === undefined) {\n return\n }\n ctrl.chartLoaderTarget.classList.add('loading')\n ctrl.graph.updateOptions({\n dateWindow: [start, end]\n })\n ctrl.settings.zoom = Zoom.encode(start, end)\n ctrl.lastEnd = end\n ctrl.query.replace(ctrl.settings)\n ctrl.chartLoaderTarget.classList.remove('loading')\n }\n\n setButtonVisibility () {\n const duration = ctrl.chartDuration\n const buttonSets = [ctrl.zoomButtons, ctrl.binputs]\n buttonSets.forEach((buttonSet) => {\n buttonSet.forEach((button) => {\n if (button.dataset.fixed) return\n if (duration > Zoom.mapValue(button.name)) {\n button.classList.remove('d-hide')\n } else {\n button.classList.remove('btn-selected')\n button.classList.add('d-hide')\n }\n })\n })\n }\n\n toggleExpand (e) {\n const btn = this.expandoTarget\n if (btn.classList.contains('dcricon-expand')) {\n btn.classList.remove('dcricon-expand')\n btn.classList.add('dcricon-collapse')\n this.bigchartTarget.appendChild(this.chartboxTarget)\n this.fullscreenTarget.classList.remove('d-none')\n } else {\n this.putChartBack()\n }\n if (this.graph) this.graph.resize()\n }\n\n putChartBack () {\n const btn = this.expandoTarget\n btn.classList.add('dcricon-expand')\n btn.classList.remove('dcricon-collapse')\n this.littlechartTarget.appendChild(this.chartboxTarget)\n this.fullscreenTarget.classList.add('d-none')\n if (this.graph) this.graph.resize()\n }\n\n exitFullscreen (e) {\n if (e.target !== this.fullscreenTarget) return\n this.putChartBack()\n }\n\n setGraphQuery () {\n this.query.replace(this.settings)\n }\n\n createGraph (processedData, otherOptions) {\n return new Dygraph(\n this.chartTarget,\n processedData,\n { ...commonOptions, ...otherOptions }\n )\n }\n\n getBin () {\n let bin = ctrl.query.get('bin')\n if (!ctrl.setIntervalButton(bin)) {\n bin = ctrl.activeBin\n }\n return bin\n }\n\n setIntervalButton (interval) {\n const button = ctrl.validGraphInterval(interval)\n if (!button) return false\n ctrl.binputs.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n button.classList.add('btn-selected')\n }\n\n setViewButton (view) {\n this.viewTargets.forEach((button) => {\n if (button.name === view) {\n button.classList.add('btn-active')\n } else {\n button.classList.remove('btn-active')\n }\n })\n }\n\n validGraphInterval (interval) {\n const bin = interval || this.settings.bin || this.activeBin\n let b = false\n this.binputs.forEach((button) => {\n if (button.name === bin) b = button\n })\n return b\n }\n\n setChartType () {\n const chart = ctrl.settings.chart\n if (this.validChartType(chart)) {\n this.optionsTarget.value = chart\n }\n }\n\n validChartType (chart) {\n return this.optionsTarget.namedItem(chart) || false\n }\n\n setFlowChecks () {\n const bitmap = this.settings.flow\n this.flowBoxes.forEach((box) => {\n box.checked = bitmap & parseInt(box.value)\n })\n }\n\n onZoom (e) {\n const target = e.srcElement || e.target\n if (target.nodeName !== 'BUTTON') return\n ctrl.zoomButtons.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n target.classList.add('btn-selected')\n if (ctrl.graph === undefined) {\n return\n }\n const duration = ctrl.activeZoomDuration\n\n const end = ctrl.xRange[1]\n const start = duration === 0 ? ctrl.xRange[0] : end - duration\n ctrl.setZoom(start, end)\n }\n\n _zoomCallback (start, end) {\n ctrl.zoomButtons.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n ctrl.settings.zoom = Zoom.encode(start, end)\n ctrl.query.replace(ctrl.settings)\n ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n }\n\n _drawCallback (graph, first) {\n if (first) return\n const [start, end] = ctrl.graph.xAxisRange()\n if (start === end) return\n if (end === this.lastEnd) return // Only handle slide event.\n this.lastEnd = end\n ctrl.settings.zoom = Zoom.encode(start, end)\n ctrl.query.replace(ctrl.settings)\n ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n }\n\n setSelectedZoom (zoomKey) {\n this.zoomButtons.forEach(function (button) {\n if (button.name === zoomKey) {\n button.classList.add('btn-selected')\n } else {\n button.classList.remove('btn-selected')\n }\n })\n }\n\n bindElements () {\n this.flowBoxes = this.flowTarget.querySelectorAll('input')\n this.pageSizeOptions = this.hasPagesizeTarget ? this.pagesizeTarget.querySelectorAll('option') : []\n this.zoomButtons = this.zoomTarget.querySelectorAll('button')\n this.binputs = this.intervalTarget.querySelectorAll('button')\n }\n\n bindEvents () {\n ctrl.paginatorTargets.forEach((link) => {\n link.addEventListener('click', (e) => {\n e.preventDefault()\n })\n })\n }\n\n changePair (e) {\n ctrl.settings.pair = (!e.target.value || e.target.value === '') ? 'all' : e.target.value\n this.clearSearchState()\n }\n\n changeStatus (e) {\n ctrl.settings.status = (!e.target.value || e.target.value === '') ? 'all' : e.target.value\n this.clearSearchState()\n }\n\n makeTableUrl (count, offset) {\n return `/atomicswaps-table?n=${count}&start=${offset}${ctrl.settings.pair && ctrl.settings.pair !== '' ? '&pair=' + ctrl.settings.pair : ''}${ctrl.settings.status && ctrl.settings.status !== '' ? '&status=' + ctrl.settings.status : ''}\n ${ctrl.settings.search && ctrl.settings.search !== '' ? '&search=' + ctrl.settings.search : ''}${ctrl.settings.mode && ctrl.settings.mode !== '' ? '&mode=' + ctrl.settings.mode : ''}`\n }\n\n changePageSize () {\n this.fetchTable(this.pageSize, this.paginationParams.offset)\n }\n\n nextPage () {\n this.toPage(1)\n }\n\n prevPage () {\n this.toPage(-1)\n }\n\n pageNumberLink (e) {\n e.preventDefault()\n const url = e.target.href\n const parser = new URL(url)\n const start = parser.searchParams.get('start')\n const pagesize = parser.searchParams.get('n')\n this.fetchTable(pagesize, start)\n }\n\n toPage (direction) {\n const params = ctrl.paginationParams\n const count = ctrl.pageSize\n let requestedOffset = params.offset + count * direction\n if (requestedOffset >= params.count) return\n if (requestedOffset < 0) requestedOffset = 0\n ctrl.fetchTable(count, requestedOffset)\n }\n\n async fetchTable (count, offset) {\n ctrl.listLoaderTarget.classList.add('loading')\n const requestCount = count > 20 ? count : 20\n const tableResponse = await requestJSON(ctrl.makeTableUrl(requestCount, offset))\n this.swapsData = tableResponse.swaps_list\n ctrl.tableTarget.innerHTML = dompurify.sanitize(tableResponse.html)\n const settings = ctrl.settings\n settings.n = requestCount\n settings.start = offset\n ctrl.paginationParams.count = tableResponse.tx_count\n ctrl.query.replace(settings)\n ctrl.paginationParams.offset = offset\n ctrl.paginationParams.pagesize = requestCount\n ctrl.paginationParams.currentcount = Number(tableResponse.current_count)\n ctrl.setPageability()\n ctrl.tablePaginationParams = tableResponse.pages\n ctrl.setTablePaginationLinks()\n ctrl.listLoaderTarget.classList.remove('loading')\n }\n\n handlerUpdateTable () {\n if (ctrl.swapsData === null) {\n return\n }\n ctrl.listLoaderTarget.classList.add('loading')\n // ctrl.paginationParams.count = txCount\n ctrl.paginationParams.currentcount = ctrl.swapsData.length\n ctrl.setPageability()\n ctrl.tableTarget.innerHTML = ctrl.settings.mode === 'full' ? this.createGridDataView() : this.createDataTableView()\n ctrl.listLoaderTarget.classList.remove('loading')\n }\n\n // reset page size selector\n resetPageSizeOptions () {\n const params = ctrl.paginationParams\n const rowMax = params.count\n const dispCount = params.currentcount\n let pageSizeOptions = ''\n if (rowMax >= 20) {\n this.pagesizeTarget.classList.remove('disabled')\n this.pagesizeTarget.disabled = false\n } else {\n this.pagesizeTarget.classList.add('disabled')\n this.pagesizeTarget.disabled = true\n }\n pageSizeOptions += `<option ${dispCount === 20 ? 'selected' : ''} value=\"20\" ${rowMax < 20 ? 'disabled' : ''}>20</option>`\n pageSizeOptions += `<option ${dispCount === 40 ? 'selected' : ''} value=\"40\" ${rowMax < 40 ? 'disabled' : ''}>40</option>`\n pageSizeOptions += `<option ${dispCount === 80 ? 'selected' : ''} value=\"80\" ${rowMax < 80 ? 'disabled' : ''}>80</option>`\n if (rowMax <= 160) {\n pageSizeOptions += `<option ${dispCount === rowMax ? 'selected' : ''} value=\"${rowMax}\" ${rowMax <= 160 ? 'disabled' : ''}>${rowMax}</option>`\n } else {\n pageSizeOptions += `<option ${dispCount >= 160 ? 'selected' : ''} value=\"160\">160</option>`\n }\n this.pagesizeTarget.innerHTML = pageSizeOptions\n this.pageSizeOptions = this.hasPagesizeTarget ? this.pagesizeTarget.querySelectorAll('option') : []\n const settings = ctrl.settings\n settings.n = this.pageSize\n ctrl.query.replace(settings)\n }\n\n setPageability () {\n const params = ctrl.paginationParams\n const rowMax = params.count\n const count = ctrl.pageSize\n if (ctrl.paginationParams.count === 0) {\n ctrl.paginationheaderTarget.classList.add('d-hide')\n } else {\n ctrl.paginationheaderTarget.classList.remove('d-hide')\n }\n if (rowMax > count) {\n ctrl.pagebuttonsTarget.classList.remove('d-hide')\n } else {\n ctrl.pagebuttonsTarget.classList.add('d-hide')\n }\n const setAbility = (el, state) => {\n if (state) {\n el.classList.remove('disabled')\n } else {\n el.classList.add('disabled')\n }\n }\n setAbility(ctrl.pageplusTarget, params.offset + count < rowMax)\n setAbility(ctrl.pageminusTarget, params.offset - count >= 0)\n ctrl.pageSizeOptions.forEach((option) => {\n if (option.value > 100) {\n if (rowMax > 100) {\n option.disabled = false\n option.text = option.value = Math.min(rowMax, maxAddrRows)\n } else {\n option.disabled = true\n option.text = option.value = maxAddrRows\n }\n } else {\n option.disabled = rowMax <= option.value\n }\n })\n setAbility(ctrl.pagesizeTarget, rowMax > 20)\n const suffix = rowMax > 1 ? 's' : ''\n let rangeEnd = Number(params.offset) + Number(count)\n if (rangeEnd > rowMax) rangeEnd = rowMax\n ctrl.rangeTarget.innerHTML = 'showing ' + (Number(params.offset) + 1).toLocaleString() + ' – ' +\n rangeEnd.toLocaleString() + ' of ' + rowMax.toLocaleString() + ' contract' + suffix\n }\n\n setTablePaginationLinks () {\n const tablePagesLink = ctrl.tablePaginationParams\n if (tablePagesLink.length === 0) {\n ctrl.tablePaginationTarget.classList.add('d-hide')\n ctrl.topTablePaginationTarget.classList.add('d-hide')\n return\n }\n ctrl.tablePaginationTarget.classList.remove('d-hide')\n ctrl.topTablePaginationTarget.classList.remove('d-hide')\n const txCount = parseInt(ctrl.paginationParams.count)\n const offset = parseInt(ctrl.paginationParams.offset)\n const pageSize = parseInt(ctrl.paginationParams.pagesize)\n let links = ''\n if (typeof offset !== 'undefined' && offset > 0) {\n links = `<a href=\"/atomic-swaps?start=${offset - pageSize}&n=${pageSize}&pair=${ctrl.settings.pair}&status=${ctrl.settings.status}${ctrl.settings.search && ctrl.settings.search !== '' ? '&search=' + ctrl.settings.search : ''}${ctrl.settings.mode && ctrl.settings.mode !== '' ? '&mode=' + ctrl.settings.mode : ''}\" ` +\n 'class=\"d-inline-block dcricon-arrow-left pagination-number pagination-narrow m-1 fz20\" data-action=\"click->atomicswaps#pageNumberLink\"></a>' + '\\n'\n }\n\n links += tablePagesLink.map(d => {\n if (!d.link) return `<span>${d.str}</span>`\n return `<a href=\"${d.link}\" class=\"fs18 pager pagination-number${d.active ? ' active' : ''}\" data-action=\"click->atomicswaps#pageNumberLink\">${d.str}</a>`\n }).join('\\n')\n\n if ((txCount - offset) > pageSize) {\n links += '\\n' + `<a href=\"/atomic-swaps?start=${(offset + pageSize)}&n=${pageSize}&pair=${ctrl.settings.pair}&status=${ctrl.settings.status}${ctrl.settings.search && ctrl.settings.search !== '' ? '&search=' + ctrl.settings.search : ''}${ctrl.settings.mode && ctrl.settings.mode !== '' ? '&mode=' + ctrl.settings.mode : ''}\" ` +\n 'class=\"d-inline-block dcricon-arrow-right pagination-number pagination-narrow m-1 fs20\" data-action=\"click->atomicswaps#pageNumberLink\"></a>'\n }\n const paginationHTML = dompurify.sanitize(links)\n ctrl.tablePaginationTarget.innerHTML = paginationHTML\n ctrl.topTablePaginationTarget.innerHTML = paginationHTML\n }\n\n get pageSize () {\n const selected = this.pagesizeTarget.selectedOptions\n return selected.length ? parseInt(selected[0].value) : 20\n }\n\n get chartType () {\n return this.optionsTarget.value\n }\n\n get activeZoomDuration () {\n return this.activeZoomKey ? Zoom.mapValue(this.activeZoomKey) : false\n }\n\n get activeZoomKey () {\n const activeButtons = this.zoomTarget.getElementsByClassName('btn-selected')\n if (activeButtons.length === 0) return null\n return activeButtons[0].name\n }\n\n get chartDuration () {\n return this.xRange[1] - this.xRange[0]\n }\n\n get activeBin () {\n return this.intervalTarget.getElementsByClassName('btn-selected')[0].name\n }\n\n get flow () {\n let base10 = 0\n this.flowBoxes.forEach((box) => {\n if (box.checked) base10 += parseInt(box.value)\n })\n return base10\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport { getDefault } from '../helpers/module_helper'\nimport globalEventBus from '../services/event_bus_service'\nimport humanize from '../helpers/humanize_helper'\nimport dompurify from 'dompurify'\n\nfunction digitformat (amount, decimalPlaces, noComma) {\n if (!amount) return 0\n\n if (noComma) return amount.toFixed(decimalPlaces)\n\n decimalPlaces = decimalPlaces || 0\n const result = parseFloat(amount).toLocaleString(undefined, { minimumFractionDigits: decimalPlaces, maximumFractionDigits: decimalPlaces }).replace(/\\.0*$/, '')\n if (result.indexOf('.') > -1 && result.endsWith('0')) {\n return removeTrailingZeros(result)\n }\n\n return result\n}\n\nfunction removeTrailingZeros (value) {\n value = value.toString()\n if (value.indexOf('.') === -1) {\n return value\n }\n\n let cutFrom = value.length - 1\n do {\n if (value[cutFrom] === '0') {\n cutFrom--\n }\n } while (value[cutFrom] === '0')\n\n if (value[cutFrom] === '.') {\n cutFrom--\n }\n\n return value.substr(0, cutFrom + 1)\n}\n\nlet Dygraph // lazy loaded on connect\nlet height, dcrPrice, hashrate, tpSize, tpValue, tpPrice, graphData, currentPoint, coinSupply\n\nfunction rateCalculation (y) {\n y = y || 0.99 // 0.99 TODO confirm why 0.99 is used as default instead of 1\n const x = 1 - y\n\n // equation to determine hashpower requirement based on percentage of live stake\n // https://medium.com/decred/decreds-hybrid-protocol-a-superior-deterrent-to-majority-attacks-9421bf486292\n // (6 (1-f_s)⁵ -15(1-f_s) + 10(1-f_s)³) / (6f_s⁵-15f_s⁴ + 10f_s³)\n // (6x⁵-15x⁴ +10x³) / (6y⁵-15y⁴ +10y³) where y = this.value and x = 1-y\n return ((6 * Math.pow(x, 5)) - (15 * Math.pow(x, 4)) + (10 * Math.pow(x, 3))) / ((6 * Math.pow(y, 5)) - (15 * Math.pow(y, 4)) + (10 * Math.pow(y, 3)))\n}\n\nconst deviceList = {\n 0: {\n hashrate: 15.6, // Th/s. Convert to GH when display\n units: 'Th/s',\n power: 3510, // W\n cost: 41800, // $\n name: 'ALPH Miner AL1',\n link: 'https://shop.bitmain.com/product/detail?pid=00020240720091017398FxBBmL000652'\n },\n 1: {\n hashrate: 0.72, // Th/s. Convert to GH when display\n units: 'Th/s',\n power: 360, // W\n cost: 2850, // $\n name: 'Goldshell AL BOX II',\n link: 'https://bitmars.io/product/goldshell-al-box-ii-720gh-s-360w-alephium-miner-without-psu/'\n },\n 2: {\n hashrate: 0.00516, // Th/s. Convert to GH when display\n units: 'Th/s',\n power: 450, // W\n cost: 1739, // $\n name: 'RTX 4090',\n link: 'https://poolbay.io/gpu-miner-profit/119/rtx-4090'\n },\n 3: {\n hashrate: 0.00272, // Th/s. Convert to GH when display\n units: 'Th/s',\n power: 320, // W\n cost: 899, // $\n name: 'RTX 4080',\n link: 'https://poolbay.io/gpu-miner-profit/122/rtx-4080'\n }\n}\n\nconst externalAttackType = 'external'\nconst internalAttackType = 'internal'\n\nfunction legendFormatter (data) {\n let html = ''\n if (data.x == null) {\n const dashLabels = data.series.reduce((nodes, series) => {\n return `${nodes} <span>${series.labelHTML}</span>`\n }, '')\n html = `<span>${this.getLabels()[0]}: N/A</span>${dashLabels}`\n } else {\n const yVals = data.series.reduce((nodes, series) => {\n if (!series.isVisible) return nodes\n const precession = series.y >= 1 ? 2 : 6\n return `${nodes} <span class=\"ms-3\">${series.labelHTML}: ${digitformat(series.y, precession)}x</span>`\n }, '<br>')\n\n html = `<span>${this.getLabels()[0]}: ${digitformat(data.x, 0)}</span>${yVals}`\n }\n dompurify.sanitize(html)\n return html\n}\n\nfunction nightModeOptions (nightModeOn) {\n if (nightModeOn) {\n return {\n rangeSelectorAlpha: 0.3,\n gridLineColor: '#596D81',\n colors: ['#2DD8A3', '#2970FF', '#FFC84E']\n }\n }\n return {\n rangeSelectorAlpha: 0.4,\n gridLineColor: '#C4CBD2',\n colors: ['#2970FF', '#006600', '#FF0090']\n }\n}\n\nexport default class extends Controller {\n static get targets () {\n return [\n 'actualHashRate', 'attackPercent', 'attackPeriod', 'blockHeight', 'countDevice', 'device',\n 'deviceCost', 'deviceDesc', 'deviceName', 'devicePronoun', 'deviceSuffix', 'external', 'internal', 'internalHash', 'kwhRate',\n 'kwhRateLabel', 'otherCosts', 'otherCostsValue', 'priceDCR', 'internalAttackText', 'targetHashRate',\n 'externalAttackText', 'externalAttackPosText', 'additionalDcr', 'newTicketPoolValue', 'internalAttackPosText',\n 'additionalHashRate', 'newHashRate', 'targetPos', 'targetPow', 'ticketAttackSize', 'ticketPoolAttack', 'ticketPoolSize',\n 'ticketPoolSizeLabel', 'ticketPoolValue', 'ticketPrice', 'tickets', 'ticketSizeAttack', 'durationUnit', 'durationLongDesc',\n 'total', 'totalDCRPos', 'totalDeviceCost', 'totalElectricity', 'totalExtraCostRate', 'totalKwh', 'totalPos', 'totalPow',\n 'graph', 'labels', 'projectedTicketPrice', 'projectedTicketPriceIncrease', 'projectedTicketPriceSign', 'attackType', 'attackPosPercentAmountLabel',\n 'dcrPriceLabel', 'totalDCRPosLabel', 'projectedPriceDiv', 'attackNotPossibleWrapperDiv', 'coinSupply', 'totalAttackCostContainer'\n ]\n }\n\n async connect () {\n this.query = new TurboQuery()\n this.settings = TurboQuery.nullTemplate([\n 'attack_time', 'target_pow', 'kwh_rate', 'other_costs', 'target_pos', 'price', 'device', 'attack_type'\n ])\n\n // Get initial view settings from the url\n this.query.update(this.settings)\n\n height = parseInt(this.data.get('height'))\n hashrate = parseFloat(this.data.get('hashrate'))\n dcrPrice = parseFloat(this.data.get('dcrprice'))\n tpPrice = parseFloat(this.data.get('ticketPrice'))\n tpValue = parseFloat(this.data.get('ticketPoolValue'))\n tpSize = parseInt(this.data.get('ticketPoolSize'))\n coinSupply = parseInt(this.data.get('coinSupply'))\n\n this.defaultSettings = {\n attack_time: 1,\n target_pow: 100,\n kwh_rate: 0.1,\n other_costs: 5,\n target_pos: 51,\n price: dcrPrice,\n device: 0,\n attack_type: externalAttackType\n }\n\n if (this.settings.attack_time) this.attackPeriodTarget.value = parseInt(this.settings.attack_time)\n if (this.settings.target_pow) this.targetPowTarget.value = parseFloat(this.settings.target_pow)\n if (this.settings.kwh_rate) this.kwhRateTarget.value = parseFloat(this.settings.kwh_rate)\n if (this.settings.other_costs) this.otherCostsTarget.value = parseFloat(this.settings.other_costs)\n if (this.settings.target_pos) this.setAllInputs(this.targetPosTargets, parseFloat(this.settings.target_pos))\n if (this.settings.price) this.priceDCRTarget.value = parseFloat(this.settings.price)\n if (this.settings.device) this.setDevice(this.settings.device)\n if (this.settings.attack_type) this.attackTypeTarget.value = this.settings.attack_type\n if (this.settings.target_pos) this.attackPercentTarget.value = parseFloat(this.targetPosTarget.value) / 100\n\n if (this.settings.attack_type !== internalAttackType) {\n this.settings.attack_type = externalAttackType\n }\n this.setDevicesDesc()\n this.updateSliderData()\n\n Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n\n // dygraph does not provide a way to disable zoom on y-axis https://code.google.com/archive/p/dygraphs/issues/384\n // this is a hack as doZoomY_ is marked as private\n Dygraph.prototype.doZoomY_ = function (lowY, highY) {}\n\n this.plotGraph()\n this.processNightMode = (params) => {\n this.chartsView.updateOptions(\n nightModeOptions(params.nightMode)\n )\n }\n globalEventBus.on('NIGHT_MODE', this.processNightMode)\n }\n\n disconnect () {\n globalEventBus.off('NIGHT_MODE', this.processNightMode)\n if (this.chartsView !== undefined) {\n this.chartsView.destroy()\n }\n }\n\n plotGraph () {\n const that = this\n graphData = []\n this.ratioTable = new Map()\n\n // populate graphData\n // to avoid javascript decimal math issue, the iteration is done over whole number and reduced to the expected decimal value within the loop\n for (let i = 10; i <= 1000; i += 5) {\n const y = i / 1000\n const x = rateCalculation(y)\n this.ratioTable.set(x, y)\n graphData.push([y * tpSize, x])\n }\n\n const options = {\n ...nightModeOptions(false),\n labels: ['Attacker Tickets', 'Hash Power Multiplier'],\n ylabel: 'Hash Power Multiplier',\n xlabel: 'Attacker Tickets',\n axes: {\n y: {\n axisLabelWidth: 70\n }\n },\n highlightSeriesOpts: { strokeWidth: 2 },\n legendFormatter: legendFormatter,\n hideOverlayOnMouseOut: false,\n labelsDiv: this.labelsTarget,\n labelsSeparateLines: true,\n showRangeSelector: false,\n labelsKMB: true,\n legend: 'always',\n logscale: true,\n interactionModel: {\n click: function (e) {\n that.attackPercentTarget.value = currentPoint.x\n that.updateSliderData()\n }\n },\n highlightCallback: function (event, x, p) {\n currentPoint = p[0]\n }\n }\n\n this.chartsView = new Dygraph(this.graphTarget, graphData, options)\n this.chartsView.setAnnotations([{\n series: 'Hashpower multiplier',\n x: 0.51,\n shortText: 'L',\n text: '51% Attack'\n }])\n this.setActivePoint()\n }\n\n updateQueryString () {\n const [query, settings, defaults] = [{}, this.settings, this.defaultSettings]\n for (const k in settings) {\n if (!settings[k] || settings[k].toString() === defaults[k].toString()) continue\n query[k] = settings[k]\n }\n this.query.replace(query)\n }\n\n updateAttackTime () {\n this.settings.attack_time = this.attackPeriodTarget.value\n this.updateSliderData()\n }\n\n updateTargetPow (e) {\n this.preserveTargetPow = true\n const targetPercentage = parseFloat(e.currentTarget.value) / 100\n let target = this.ratioTable.get(targetPercentage)\n if (target === undefined) {\n let previousKey = 0\n let previousValue = 0\n this.ratioTable.forEach((value, key) => {\n if ((previousKey <= targetPercentage && targetPercentage <= key) || (previousKey >= targetPercentage && targetPercentage >= key)) {\n const gap = Math.abs(key - targetPercentage)\n const preGap = Math.abs(previousKey - targetPercentage)\n if (gap < preGap) {\n target = value\n } else {\n target = previousValue\n }\n }\n previousKey = key\n previousValue = value\n })\n }\n this.attackPercentTarget.value = target\n this.updateSliderData()\n }\n\n chooseDevice () {\n this.settings.device = this.selectedDevice()\n this.updateSliderData()\n }\n\n chooseAttackType () {\n this.settings.attack_type = this.selectedAttackType()\n this.updateSliderData()\n }\n\n updateKwhRate () {\n this.settings.kwh_rate = this.kwhRateTarget.value\n this.updateSliderData()\n }\n\n updateOtherCosts () {\n this.settings.other_costs = this.otherCostsTarget.value\n this.updateSliderData()\n }\n\n updateTargetPos (e) {\n this.settings.target_pos = e.currentTarget.value\n this.preserveTargetPoS = true\n this.setAllInputs(this.targetPosTargets, e.currentTarget.value)\n this.updateQueryString()\n this.attackPercentTarget.value = parseFloat(this.targetPosTarget.value) / 100\n this.updateSliderData()\n }\n\n updatePrice () {\n this.settings.price = this.priceDCRTarget.value\n dcrPrice = this.priceDCRTarget.value\n this.updateSliderData()\n }\n\n selectedDevice () { return this.deviceTarget.value }\n\n selectedAttackType () {\n return this.attackTypeTarget.value\n }\n\n selectOption (options) {\n let val = '0'\n options.map((n) => { if (n.selected) val = n.value })\n return val\n }\n\n setDevicesDesc () {\n this.deviceDescTargets.map((n) => {\n const info = deviceList[n.value]\n if (!info) return\n n.innerHTML = `${info.name} (${info.hashrate} ${info.units}, ${info.power} W, $${digitformat(info.cost)} ea.)`\n })\n }\n\n setDevice (selectedVal) { return this.setOption(this.deviceTargets, selectedVal) }\n\n setOption (options, selectedVal) {\n options.map((n) => { n.selected = n.value === selectedVal })\n }\n\n setActivePoint () {\n // Shows point whose details appear on the legend.\n if (this.chartsView !== undefined) {\n const val = Math.min(parseFloat(this.attackPercentTarget.value) || 0, 0.99)\n const row = this.chartsView.getRowForX(val * tpSize)\n this.chartsView.setSelection(row)\n }\n }\n\n updateTargetHashRate () {\n const ticketPercentage = parseFloat(this.targetPosTarget.value)\n this.targetHashRate = hashrate * rateCalculation(ticketPercentage / 100)\n const powPercentage = 100 * this.targetHashRate / hashrate\n if (!this.preserveTargetPow) {\n this.targetPowTarget.value = digitformat(powPercentage, 2, true)\n } else {\n this.preserveTargetPow = false\n }\n this.setAllValues(this.internalHashTargets, digitformat((this.targetHashRate), 4) + ' Ph/s ')\n switch (this.settings.attack_type) {\n case externalAttackType:\n this.setAllValues(this.newHashRateTargets, digitformat(this.targetHashRate + hashrate, 4))\n this.setAllValues(this.additionalHashRateTargets, digitformat(this.targetHashRate, 4))\n this.projectedPriceDivTarget.style.display = 'block'\n this.internalAttackTextTarget.classList.add('d-none')\n this.internalAttackPosTextTarget.classList.add('d-none')\n this.showAll(this.externalAttackTextTargets)\n this.externalAttackPosTextTarget.classList.remove('d-node')\n break\n case internalAttackType:\n default:\n this.projectedPriceDivTarget.style.display = 'none'\n this.hideAll(this.externalAttackTextTargets)\n this.externalAttackPosTextTarget.classList.add('d-node')\n this.internalAttackTextTarget.classList.remove('d-none')\n this.internalAttackPosTextTarget.classList.remove('d-none')\n break\n }\n }\n\n updateSliderData () {\n const val = Math.min(parseFloat(this.attackPercentTarget.value) || 0, 0.99)\n // Makes PoS to be affected by the slider\n // Target PoS value increases when slider moves to the right\n if (!this.preserveTargetPoS) {\n this.setAllInputs(this.targetPosTargets, val * 100)\n } else {\n this.preserveTargetPoS = false\n }\n\n this.updateTargetHashRate()\n this.setActivePoint()\n\n this.ticketsTarget.innerHTML = digitformat(val * tpSize) + ' tickets '\n switch (this.settings.attack_type) {\n case externalAttackType:\n this.hideAll(this.internalAttackPosTextTargets)\n this.showAll(this.externalAttackPosTextTargets)\n break\n case internalAttackType:\n default:\n this.hideAll(this.externalAttackPosTextTargets)\n this.showAll(this.internalAttackPosTextTargets)\n }\n\n this.calculate(true)\n }\n\n calculate (disableHashRateUpdate) {\n if (!disableHashRateUpdate) this.updateTargetHashRate()\n\n this.updateQueryString()\n const deviceInfo = deviceList[this.selectedDevice()]\n const deviceCount = Math.ceil((this.targetHashRate * 1000) / deviceInfo.hashrate)\n const totalDeviceCost = deviceCount * deviceInfo.cost\n const totalKwh = deviceCount * deviceInfo.power * parseFloat(this.attackPeriodTarget.value) / 1000\n const totalElectricity = totalKwh * parseFloat(this.kwhRateTarget.value)\n const extraCost = parseFloat(this.otherCostsTarget.value) / 100 * (totalDeviceCost + totalElectricity)\n const totalPow = extraCost + totalDeviceCost + totalElectricity\n let ticketAttackSize, DCRNeed\n if (this.settings.attack_type === externalAttackType) {\n DCRNeed = tpValue / (1 - parseFloat(this.targetPosTarget.value) / 100)\n this.setAllValues(this.newTicketPoolValueTargets, digitformat(DCRNeed, 2))\n this.setAllValues(this.additionalDcrTargets, digitformat(DCRNeed - tpValue, 2))\n } else {\n ticketAttackSize = (tpSize * parseFloat(this.targetPosTarget.value)) / 100\n DCRNeed = tpValue * (parseFloat(this.targetPosTarget.value) / 100)\n this.setAllValues(this.ticketPoolAttackTargets, digitformat(DCRNeed))\n }\n const projectedTicketPrice = DCRNeed / tpSize\n this.projectedTicketPriceIncreaseTarget.innerHTML = digitformat(100 * Math.abs(projectedTicketPrice - tpPrice) / tpPrice, 2)\n this.projectedTicketPriceSignTarget.innerHTML = projectedTicketPrice > tpPrice ? 'increase' : 'decrease'\n this.ticketPoolValueTarget.innerHTML = digitformat(hashrate, 3)\n const totalDCRPos = this.settings.attack_type === externalAttackType ? DCRNeed - tpValue : ticketAttackSize * projectedTicketPrice\n const totalPos = totalDCRPos * dcrPrice\n const timeStr = this.attackPeriodTarget.value\n const hourStr = timeStr > 1 ? 'hours' : 'hour'\n const timeHourStr = timeStr + ' ' + hourStr\n const devicePronounStr = deviceCount > 1 ? 'them' : 'it'\n const deviceSuffixStr = deviceCount > 1 ? 's' : ''\n this.ticketPoolSizeLabelTarget.innerHTML = humanize.commaWithDecimal(tpSize, 0)\n this.setAllValues(this.actualHashRateTargets, digitformat(hashrate, 4))\n this.priceDCRTarget.value = dcrPrice.toFixed(2)\n this.setAllInputs(this.targetPosTargets, parseFloat(this.targetPosTarget.value).toFixed(2))\n this.ticketPriceTarget.innerHTML = digitformat(tpPrice, 4)\n this.setAllValues(this.targetHashRateTargets, digitformat(this.targetHashRate, 4))\n this.setAllValues(this.additionalHashRateTargets, digitformat(this.targetHashRate, 4))\n this.durationUnitTarget.innerHTML = hourStr\n this.setAllValues(this.durationLongDescTargets, timeHourStr)\n this.setAllValues(this.countDeviceTargets, digitformat(deviceCount))\n this.devicePronounTarget.innerHTML = devicePronounStr\n this.deviceSuffixTarget.innerHTML = deviceSuffixStr\n this.setAllValues(this.deviceNameTargets, `<a href=\"${deviceInfo.link}\">${deviceInfo.name}</a>${deviceSuffixStr}`)\n this.setAllValues(this.totalDeviceCostTargets, digitformat(totalDeviceCost))\n this.setAllValues(this.totalKwhTargets, digitformat(totalKwh, 2))\n this.setAllValues(this.totalElectricityTargets, digitformat(totalElectricity, 2))\n this.setAllValues(this.otherCostsValueTargets, digitformat(extraCost, 2))\n this.setAllValues(this.totalPowTargets, digitformat(totalPow, 2))\n this.setAllValues(this.ticketSizeAttackTargets, digitformat(ticketAttackSize))\n this.setAllValues(this.totalDCRPosTargets, digitformat(totalDCRPos, 2))\n this.setAllValues(this.totalPosTargets, digitformat(totalPos))\n this.setAllValues(this.ticketPoolValueTargets, digitformat(tpValue))\n this.setAllValues(this.ticketPoolSizeTargets, digitformat(tpSize))\n this.blockHeightTarget.innerHTML = height\n this.totalTarget.innerHTML = digitformat(totalPow + totalPos, 2)\n this.projectedTicketPriceTarget.innerHTML = digitformat(projectedTicketPrice, 2)\n // this.attackPosPercentNeededLabelTarget.innerHTML = digitformat(this.targetPosTarget.value, 2)\n this.attackPosPercentAmountLabelTarget.innerHTML = digitformat(this.targetPosTarget.value, 2)\n this.setAllValues(this.totalDCRPosLabelTargets, digitformat(totalDCRPos, 2))\n this.setAllValues(this.dcrPriceLabelTargets, digitformat(dcrPrice, 2))\n this.showPosCostWarning(DCRNeed)\n }\n\n setAllValues (targets, data) {\n targets.forEach((n) => { n.innerHTML = data })\n }\n\n setAllInputs (targets, data) {\n targets.forEach((n) => { n.value = data })\n }\n\n hideAll (targets) {\n targets.forEach(el => el.classList.add('d-none'))\n }\n\n showAll (targets) {\n targets.forEach(el => el.classList.remove('d-none'))\n }\n\n showPosCostWarning (DCRNeed) {\n const totalDCRInCirculation = coinSupply / 100000000\n if (DCRNeed > totalDCRInCirculation) {\n this.coinSupplyTarget.textContent = digitformat(totalDCRInCirculation, 2)\n this.totalAttackCostContainerTarget.style.cssText = 'color: #f12222 !important'\n this.showAll(this.attackNotPossibleWrapperDivTargets)\n } else {\n this.totalAttackCostContainerTarget.style.cssText = 'color: #6c757d !important'\n this.hideAll(this.attackNotPossibleWrapperDivTargets)\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\n\nexport default class extends Controller {\n static get targets () {\n return ['tooltip']\n }\n\n connect () {\n this.setupTooltips()\n }\n\n setupTooltips () {\n this.tooltipTargets.forEach((tooltipElement) => {\n try {\n // parse the content\n const data = JSON.parse(tooltipElement.title)\n let newContent\n if (data.object === 'Vote') {\n newContent = `<b>${data.object} (${data.voteValid ? 'Yes' : 'No'})</b>`\n } else {\n newContent = `<b>${data.object}</b><br>${humanize.decimalParts(data.total, false, 8, 2)} DCR`\n }\n\n if (data.vin && data.vout) {\n newContent += `<br>${data.vin} Inputs, ${data.vout} Outputs`\n }\n\n tooltipElement.title = newContent\n } catch (error) {}\n })\n\n import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n const tippy = module.default\n tippy('.block-rows [title]', {\n allowTitleHTML: true,\n animation: 'shift-away',\n arrow: true,\n createPopperInstanceOnInit: true,\n dynamicTitle: true,\n performance: true,\n placement: 'top',\n size: 'small',\n sticky: true,\n theme: 'light'\n })\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport globalEventBus from '../services/event_bus_service'\nimport humanize from '../helpers/humanize_helper'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport Url from 'url-parse'\n\nconst conversionRate = 100000000\n\nfunction newBlockHtmlElement (block) {\n let rewardTxId\n for (const tx of block.Transactions) {\n if (tx.Coinbase) {\n rewardTxId = tx.TxID\n break\n }\n }\n\n return `<div class=\"block visible\">\n <div class=\"block-rows\">\n ${makeRewardsElement(block.Subsidy, block.MiningFee, block.Votes.length, rewardTxId)}\n ${makeVoteElements(block.Votes)}\n ${makeTicketAndRevocationElements(block.Tickets, block.Revocations, `/block/${block.Height}`)}\n ${makeTransactionElements(block.Transactions, `/block/${block.Height}`)}\n </div>\n </div>`\n}\n\nfunction makeTransactionElements (transactions, blockHref) {\n let totalDCR = 0\n const transactionElements = []\n if (transactions) {\n for (let i = 0; i < transactions.length; i++) {\n const tx = transactions[i]\n totalDCR += tx.Total\n transactionElements.push(makeTxElement(tx, `block-tx ${i === 0 ? 'left-vs-block-data' : ''} ${i === transactions.length - 1 ? 'right-vs-block-data' : ''}`, 'Transaction', true))\n }\n }\n\n if (transactionElements.length > 50) {\n const total = transactionElements.length\n transactionElements.splice(30)\n transactionElements.push(`<span class=\"block-tx\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} transactions\">\n <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n </span>`)\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-transactions px-1 my-1\" style=\"flex-grow: ${totalDCR}\">\n ${transactionElements.join('\\n')}\n </div>`\n}\n\nfunction makeTicketAndRevocationElements (tickets, revocations, blockHref) {\n let totalDCR = 0\n const ticketElements = []\n const revCount = revocations ? revocations.length : 0\n const ticketCount = tickets ? tickets.length : 0\n if (tickets) {\n for (let i = 0; i < tickets.length; i++) {\n const ticket = tickets[i]\n totalDCR += ticket.Total\n ticketElements.push(makeTxElement(ticket, `block-ticket ${i === 0 ? 'left-vs-block-data' : ''} ${i === tickets.length - 1 && revCount === 0 ? 'right-vs-block-data' : ''}`, 'Ticket'))\n }\n }\n if (ticketElements.length > 50) {\n const total = ticketElements.length\n ticketElements.splice(30)\n ticketElements.push(`<span class=\"block-ticket\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} tickets\">\n <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n </span>`)\n }\n const revocationElements = []\n if (revCount > 0) {\n for (let i = 0; i < revCount; i++) {\n const revocation = revocations[i]\n totalDCR += revocation.Total\n revocationElements.push(makeTxElement(revocation, `block-rev ${ticketCount === 0 && i === 0 ? 'left-vs-block-data' : ''} ${i === revCount - 1 ? 'right-vs-block-data' : ''}`, 'Revocation'))\n }\n }\n\n const ticketsAndRevocationElements = ticketElements.concat(revocationElements)\n\n // append empty squares to tickets+revs\n for (let i = ticketsAndRevocationElements.length; i < 20; i++) {\n ticketsAndRevocationElements.push('<span title=\"Empty ticket slot\"></span>')\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-tickets px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n ${ticketsAndRevocationElements.join('\\n')}\n </div>`\n}\n\nfunction makeTxElement (tx, className, type, appendFlexGrow) {\n // const style = [ `opacity: ${(tx.VinCount + tx.VoutCount) / 10}` ];\n const style = []\n if (appendFlexGrow) {\n style.push(`flex-grow: ${Math.round(tx.Total)}`)\n }\n\n return `<span class=\"${className}\" style=\"${style.join('; ')}\" data-blocklist-target=\"tooltip\"\n title='{\"object\": \"${type}\", \"total\": \"${tx.Total}\", \"vout\": \"${tx.VoutCount}\", \"vin\": \"${tx.VinCount}\"}'>\n <a class=\"block-element-link\" href=\"/tx/${tx.TxID}\"></a>\n </span>`\n}\n\nfunction makeVoteElements (votes) {\n let totalDCR = 0\n const voteLen = votes ? votes.length : 0\n const voteElements = []\n if (voteLen > 0) {\n for (let i = 0; i < voteLen - 1; i++) {\n const vote = votes[i]\n totalDCR += vote.Total\n voteElements.push(`<span style=\"background: ${vote.VoteValid ? 'linear-gradient(to right, #2971ff 0%, #528cff 100%)' : 'linear-gradient(to right, #fd714a 0%, #f6896a 100%)'}\" data-blocklist-target=\"tooltip\"\n title='{\"object\": \"Vote\", \"voteValid\": \"${vote.VoteValid}\"}' class=\"${i === 0 ? 'left-vs-block-data' : ''} ${i === voteLen - 1 ? 'right-vs-block-data' : ''}\">\n <a class=\"block-element-link\" href=\"/tx/${vote.TxID}\"></a>\n </span>`)\n }\n }\n // append empty squares to votes\n for (let i = voteElements.length; i < 5; i++) {\n voteElements.push('<span title=\"Empty vote slot\"></span>')\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-votes px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n ${voteElements.join('\\n')}\n </div>`\n}\n\nfunction makeRewardsElement (subsidy, fee, voteCount, rewardTxId) {\n if (!subsidy) {\n return `<div class=\"block-rewards px-1 mt-1\">\n <span class=\"pow\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n <span class=\"pos\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n <span class=\"fund\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n <span class=\"fees right-vs-block-data\" title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'></span>\n </div>`\n }\n\n const pow = subsidy.pow / conversionRate\n const pos = subsidy.pos / conversionRate\n const fund = (subsidy.developer || subsidy.dev) / conversionRate\n\n const backgroundColorRelativeToVotes = `style=\"width: ${voteCount * 20}%\"` // 5 blocks = 100% painting\n\n // const totalDCR = Math.round(pow + fund + fee);\n const totalDCR = 1\n return `<div class=\"block-rewards px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n <span class=\"pow\" style=\"flex-grow: ${pow}\" data-blocklist-target=\"tooltip\"\n title='{\"object\": \"PoW Reward\", \"total\": \"${pow}\"}'>\n <span class=\"block-element-link\">\n <span class=\"paint left-vs-block-data\" ${backgroundColorRelativeToVotes}></span>\n </span>\n </span>\n <span class=\"pos\" style=\"flex-grow: ${pos}\" data-blocklist-target=\"tooltip\"\n title='{\"object\": \"PoS Reward\", \"total\": \"${pos}\"}'>\n <span class=\"block-element-link\">\n <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n </span>\n </span>\n <span class=\"fund\" style=\"flex-grow: ${fund}\" data-blocklist-target=\"tooltip\"\n title='{\"object\": \"Project Fund\", \"total\": \"${fund}\"}'>\n <span class=\"block-element-link\">\n <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n </span>\n </span>\n <span class=\"fees right-vs-block-data\" style=\"flex-grow: ${fee}\" data-blocklist-target=\"tooltip\"\n title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'>\n <span class=\"block-element-link\"></span>\n </span>\n</div>`\n}\n\nexport default class extends Controller {\n static get targets () {\n return ['table', 'txColHeader', 'voteColHeader', 'ticketColHeader', 'revColHeader',\n 'txColData', 'voteColData', 'ticketColData', 'revColData', 'vsBlocksHeader',\n 'vsSimulData', 'block', 'tooltip', 'txs', 'navLink', 'vsDescription']\n }\n\n async initialize () {\n this.query = new TurboQuery()\n this.settings = TurboQuery.nullTemplate(['vsdisp'])\n\n this.defaultSettings = {\n vsdisp: false\n }\n // if isn't decred blocks page, ignore\n if (!window.location.href.includes('/decred')) {\n return\n }\n this.query.update(this.settings)\n this.settings.vsdisp = this.settings.vsdisp === true || this.settings.vsdisp === 'true'\n document.getElementById('vsBlocksToggle').checked = this.settings.vsdisp\n }\n\n connect () {\n this.processBlock = this._processBlock.bind(this)\n globalEventBus.on('BLOCK_RECEIVED', this.processBlock)\n this.pageOffset = this.data.get('initialOffset')\n // if isn't decred blocks page, ignore\n if (!window.location.href.includes('/decred')) {\n return\n }\n this.initTableColumn()\n this.setupTooltips()\n }\n\n showVisualBlocks () {\n this.settings.vsdisp = !this.settings.vsdisp\n document.getElementById('vsBlocksToggle').checked = this.settings.vsdisp\n this.updateQueryString()\n this.updateVsHrefLink()\n this.initTableColumn()\n }\n\n updateVsHrefLink () {\n this.navLinkTargets.forEach((navLinkTarget) => {\n if (!navLinkTarget.href || navLinkTarget.href === '') {\n return\n }\n if (this.settings.vsdisp) {\n if (!navLinkTarget.href.includes('vsdisp')) {\n navLinkTarget.href = navLinkTarget.href + '&vsdisp=true'\n } else if (navLinkTarget.href.includes('vsdisp=false')) {\n navLinkTarget.href = navLinkTarget.href.replace('vsdisp=false', 'vsdisp=true')\n }\n } else {\n if (navLinkTarget.href && navLinkTarget.href.includes('vsdisp=true')) {\n if (navLinkTarget.href.includes('?vsdisp=true&')) {\n navLinkTarget.href = navLinkTarget.href.replace('vsdisp=true&', '')\n } else if (navLinkTarget.href.includes('&vsdisp=true')) {\n navLinkTarget.href = navLinkTarget.href.replace('&vsdisp=true', '')\n }\n }\n }\n })\n }\n\n initTableColumn () {\n if (this.settings.vsdisp) {\n this.txColHeaderTarget.classList.add('d-none-i')\n this.voteColHeaderTarget.classList.add('d-none-i')\n this.ticketColHeaderTarget.classList.add('d-none-i')\n this.revColHeaderTarget.classList.add('d-none-i')\n this.vsBlocksHeaderTarget.classList.remove('d-none-i')\n this.vsDescriptionTarget.classList.remove('d-none')\n\n this.txColDataTargets.forEach((txColDataTarget) => {\n txColDataTarget.classList.add('d-none-i')\n })\n this.voteColDataTargets.forEach((voteColDataTarget) => {\n voteColDataTarget.classList.add('d-none-i')\n })\n this.ticketColDataTargets.forEach((ticketColDataTarget) => {\n ticketColDataTarget.classList.add('d-none-i')\n })\n this.revColDataTargets.forEach((revColDataTarget) => {\n revColDataTarget.classList.add('d-none-i')\n })\n this.vsSimulDataTargets.forEach((vsSimulDataTarget) => {\n vsSimulDataTarget.classList.remove('d-none-i')\n })\n } else {\n this.txColHeaderTarget.classList.remove('d-none-i')\n this.voteColHeaderTarget.classList.remove('d-none-i')\n this.ticketColHeaderTarget.classList.remove('d-none-i')\n this.revColHeaderTarget.classList.remove('d-none-i')\n this.vsBlocksHeaderTarget.classList.add('d-none-i')\n this.vsDescriptionTarget.classList.add('d-none')\n\n this.txColDataTargets.forEach((txColDataTarget) => {\n txColDataTarget.classList.remove('d-none-i')\n })\n this.voteColDataTargets.forEach((voteColDataTarget) => {\n voteColDataTarget.classList.remove('d-none-i')\n })\n this.ticketColDataTargets.forEach((ticketColDataTarget) => {\n ticketColDataTarget.classList.remove('d-none-i')\n })\n this.revColDataTargets.forEach((revColDataTarget) => {\n revColDataTarget.classList.remove('d-none-i')\n })\n this.vsSimulDataTargets.forEach((vsSimulDataTarget) => {\n vsSimulDataTarget.classList.add('d-none-i')\n })\n }\n }\n\n setupTooltips () {\n // check for empty tx rows and set custom tooltip\n this.txsTargets.forEach((div) => {\n if (div.childeElementCount === 0) {\n div.title = 'No regular transaction in block'\n }\n })\n\n this.tooltipTargets.forEach((tooltipElement) => {\n try {\n // parse the content\n const data = JSON.parse(tooltipElement.title)\n let newContent\n if (data.object === 'Vote') {\n newContent = `<b>${data.object} (${data.voteValid ? 'Yes' : 'No'})</b>`\n } else {\n newContent = `<b>${data.object}</b><br>${humanize.decimalParts(data.total, false, 8, 2)} DCR`\n }\n\n if (data.vin && data.vout) {\n newContent += `<br>${data.vin} Inputs, ${data.vout} Outputs`\n }\n\n tooltipElement.title = newContent\n } catch (error) {}\n })\n\n import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n const tippy = module.default\n tippy('.block-rows [title]', {\n allowTitleHTML: true,\n animation: 'shift-away',\n arrow: true,\n createPopperInstanceOnInit: true,\n dynamicTitle: true,\n performance: true,\n placement: 'top',\n size: 'small',\n sticky: true,\n theme: 'light'\n })\n })\n }\n\n disconnect () {\n globalEventBus.off('BLOCK_RECEIVED', this.processBlock)\n }\n\n _processBlock (blockData) {\n if (!this.hasTableTarget) return\n const block = blockData.block\n // Grab a copy of the first row.\n const rows = this.tableTarget.querySelectorAll('tr')\n if (rows.length === 0) return\n const tr = rows[0]\n const lastHeight = parseInt(tr.dataset.height)\n // Make sure this block belongs on the top of this table.\n if (block.height === lastHeight) {\n this.tableTarget.removeChild(tr)\n } else if (block.height === lastHeight + 1) {\n this.tableTarget.removeChild(rows[rows.length - 1])\n } else return\n // Set the td contents based on the order of the existing row.\n const newRow = document.createElement('tr')\n newRow.dataset.height = block.height\n newRow.dataset.linkClass = tr.dataset.linkClass\n const tds = tr.querySelectorAll('td')\n const _this = this\n tds.forEach((td) => {\n const newTd = document.createElement('td')\n newTd.className = td.className\n const dataType = td.dataset.type\n newTd.dataset.type = dataType\n switch (dataType) {\n case 'age':\n newTd.dataset.age = block.unixStamp\n newTd.dataset.timeTarget = 'age'\n newTd.textContent = humanize.timeSince(block.unixStamp)\n break\n case 'height': {\n const link = document.createElement('a')\n link.href = `/block/${block.height}`\n link.textContent = block.height\n link.classList.add(tr.dataset.linkClass)\n newTd.appendChild(link)\n break\n }\n case 'size':\n newTd.textContent = humanize.bytes(block.size)\n break\n case 'value':\n newTd.textContent = humanize.threeSigFigs(block.TotalSent)\n break\n case 'time':\n newTd.textContent = humanize.date(block.time, false)\n break\n case 'vssimulation':\n newTd.innerHTML = _this.createNewVsBlock(block)\n break\n default:\n newTd.textContent = block[dataType]\n }\n newRow.appendChild(newTd)\n })\n this.tableTarget.insertBefore(newRow, this.tableTarget.firstChild)\n this.setupTooltips()\n }\n\n createNewVsBlock (block) {\n // show only regular tx in block.Transactions, exclude coinbase (reward) transactions\n const transactions = block.Tx.filter(tx => !tx.Coinbase)\n // trim unwanted data in this block\n const trimmedBlockInfo = {\n Time: block.time,\n Height: block.height,\n Total: block.TotalSent,\n MiningFee: block.MiningFee,\n Subsidy: block.Subsidy,\n Votes: block.Votes,\n Tickets: block.Tickets,\n Revocations: block.Revs,\n Transactions: transactions\n }\n return newBlockHtmlElement(trimmedBlockInfo)\n }\n\n updateQueryString () {\n const url = Url(window.location.href)\n const q = Url.qs.parse(url.query)\n for (const k in this.settings) {\n q[k] = this.settings[k]\n }\n const [query, settings, defaults] = [{}, q, this.defaultSettings]\n for (const k in settings) {\n if (!settings[k] || (defaults[k] && settings[k].toString() === defaults[k].toString())) continue\n query[k] = settings[k]\n }\n this.query.replace(query)\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport * as Plotly from 'plotly.js-dist-min'\nimport humanize from '../helpers/humanize_helper'\n\nconst pairList = ['btc_usdc.eth', 'btc_usdt.polygon', 'dcr_btc', 'dcr_ltc', 'dcr_polygon', 'dcr_usdc.eth',\n 'dcr_usdc.polygon', 'dcr_usdt.polygon', 'dgb_btc', 'dgb_usdt.polygon', 'doge_btc', 'eth_btc', 'ltc_btc',\n 'ltc_usdt.polygon', 'usdc.polygon_usdt.polygon', 'zec_btc', 'zec_usdc.eth', 'zec_usdt.polygon'\n]\n\nconst pairColor = ['#690e20', '#38b6ba', '#0f103f', '#2fc399', '#289f87', '#434c9a', '#1c5863', '#153451',\n '#3169e1', '#82ae14', '#92780b', '#92510b', '#3ca2ca', '#34cbaa', '#227b75', '#408ddb', '#75cda1', '#cd759e'\n]\nexport default class extends Controller {\n static get targets () {\n return ['todayStr', 'todayData', 'monthlyStr', 'currentMonthData', 'prevMonthStr', 'prevMonthData',\n 'last90DaysData', 'last6MonthsData', 'lastYearData', 'prevMonthBreakdown', 'curMonthBreakdown',\n 'pageLoader']\n }\n\n async connect () {\n this.pageLoaderTarget.classList.add('loading')\n const _this = this\n this.hasData = []\n this.chartData = []\n this.weekChartData = []\n this.dailyChartData = []\n const selectorOptions = {\n buttons: [{\n step: 'month',\n stepmode: 'backward',\n count: 6,\n label: '6m'\n }, {\n step: 'month',\n stepmode: 'backward',\n count: 12,\n label: '12m'\n }, {\n step: 'month',\n stepmode: 'backward',\n count: 24,\n label: '24m'\n }, {\n step: 'all',\n label: 'all'\n }]\n }\n const dailySelectorOptions = {\n buttons: [{\n step: 'day',\n stepmode: 'backward',\n count: 7,\n label: '7d'\n }, {\n step: 'day',\n stepmode: 'backward',\n count: 30,\n label: '30d'\n }, {\n step: 'day',\n stepmode: 'backward',\n count: 90,\n label: '90d'\n }, {\n step: 'all',\n label: 'all'\n }]\n }\n this.layout = {\n barmode: 'stack',\n showlegend: true,\n xaxis: {\n rangeselector: selectorOptions,\n rangeslider: { visible: false }\n },\n legend: { orientation: 'h', xanchor: 'center', x: 0.5, traceorder: 'normal' }\n }\n this.dailyLayout = {\n barmode: 'stack',\n showlegend: true,\n xaxis: {\n rangeselector: dailySelectorOptions,\n rangeslider: { visible: false }\n },\n legend: { orientation: 'h', xanchor: 'center', x: 0.5, traceorder: 'normal' }\n }\n // check currency pair with data\n this.dailyData = await this.fetchCsvDataFromUrl()\n const monthlyData = this.groupMonthlyData(this.dailyData)\n // weekly data\n const weeklyData = this.groupWeeklyData(this.dailyData)\n // calculate sum for all row of daily data\n for (let i = 0; i < this.dailyData.length; i++) {\n const sumOfRow = this.sumVolOfBwRow(this.dailyData[i])\n this.dailyData[i].push(sumOfRow)\n }\n // today data\n const lastDayData = this.dailyData[this.dailyData.length - 1]\n const lastDayArr = lastDayData[0].split('-')\n const lastMonthName = this.getMonthName(lastDayArr[1])\n this.todayStrTarget.textContent = lastMonthName + ' ' + lastDayArr[2] + ', ' + lastDayArr[0]\n this.todayDataTarget.innerHTML = '$' + humanize.decimalParts(lastDayData[lastDayData.length - 1], true, 0, 0)\n const lastMonthData = monthlyData[monthlyData.length - 1]\n const prevMonthData = monthlyData[monthlyData.length - 2]\n // current month data\n this.monthlyStrTarget.textContent = lastMonthName + ' ' + lastDayArr[0]\n this.curMonthBreakdownTarget.textContent = lastMonthName + ' ' + lastDayArr[0]\n this.currentMonthDataTarget.innerHTML = '$' + humanize.decimalParts(lastMonthData[lastMonthData.length - 1], true, 0, 0)\n // prev month data\n const prevMonthArr = prevMonthData[0].split('-')\n const prevMonthName = this.getMonthName(prevMonthArr[1])\n this.prevMonthStrTarget.textContent = prevMonthName + ' ' + prevMonthArr[0]\n this.prevMonthBreakdownTarget.textContent = prevMonthName + ' ' + prevMonthArr[0]\n this.prevMonthDataTarget.innerHTML = '$' + humanize.decimalParts(prevMonthData[prevMonthData.length - 1], true, 0, 0)\n // last 90 days data\n let last90daysSum = 0\n for (let i = this.dailyData.length - 1; i >= this.dailyData.length - 90; i--) {\n const itemData = this.dailyData[i]\n last90daysSum += Number(itemData[itemData.length - 1])\n }\n this.last90DaysDataTarget.innerHTML = '$' + humanize.decimalParts(last90daysSum, true, 0, 0)\n // last 6 months data\n let last6MonthsSum = 0\n for (let i = monthlyData.length - 1; i >= monthlyData.length - 6; i--) {\n const itemData = monthlyData[i]\n last6MonthsSum += Number(itemData[itemData.length - 1])\n }\n this.last6MonthsDataTarget.innerHTML = '$' + humanize.decimalParts(last6MonthsSum, true, 0, 0)\n // last year data (52 weeks)\n let lastYearSum = 0\n for (let i = weeklyData.length - 1; i >= weeklyData.length - 51; i--) {\n const itemData = weeklyData[i]\n lastYearSum += Number(itemData[itemData.length - 1])\n }\n this.lastYearDataTarget.innerHTML = '$' + humanize.decimalParts(lastYearSum, true, 0, 0)\n pairList.forEach((pair, index) => {\n let hasDataBool = false\n monthlyData.forEach((item) => {\n const volValue = Number(item[index + 1])\n if (volValue > 0 && hasDataBool === false) {\n hasDataBool = true\n }\n })\n _this.hasData.push(hasDataBool)\n })\n const curPercentArr = []\n const curLabels = []\n const curColors = []\n const prevPercentArr = []\n const prevLabels = []\n const prevColors = []\n // init chart data\n pairList.forEach((pair, index) => {\n if (this.hasData[index]) {\n // init for monthly vol bar chart\n const xLabel = []\n const yLabel = []\n let sum = 0\n monthlyData.forEach((item) => {\n xLabel.push(item[0])\n const itemValue = Number(item[index + 1])\n yLabel.push(itemValue)\n sum += itemValue\n })\n _this.chartData.push({\n x: xLabel,\n y: yLabel,\n name: pair,\n marker: {\n color: pairColor[index],\n width: 1\n },\n type: 'bar',\n total: sum\n })\n // init for weekly vol bar chart\n const xWeekLabel = []\n const yWeekLabel = []\n let weeklySum = 0\n weeklyData.forEach((item) => {\n xWeekLabel.push(item[0])\n const itemValue = Number(item[index + 1])\n yWeekLabel.push(itemValue)\n weeklySum += itemValue\n })\n _this.weekChartData.push({\n x: xWeekLabel,\n y: yWeekLabel,\n name: pair,\n marker: {\n color: pairColor[index],\n width: 1\n },\n type: 'bar',\n total: weeklySum\n })\n // init for daily vol bar chart\n const xDailyLabel = []\n const yDailyLabel = []\n let dailySum = 0\n _this.dailyData.forEach((item) => {\n xDailyLabel.push(item[0])\n const itemValue = Number(item[index + 1])\n yDailyLabel.push(itemValue)\n dailySum += itemValue\n })\n _this.dailyChartData.push({\n x: xDailyLabel,\n y: yDailyLabel,\n name: pair,\n marker: {\n color: pairColor[index],\n width: 1\n },\n type: 'bar',\n total: dailySum\n })\n // init for current month breakdown\n const curValueFloat = Number(lastMonthData[index + 1])\n if (curValueFloat > 0) {\n curLabels.push(pair)\n curPercentArr.push(curValueFloat)\n curColors.push(pairColor[index])\n }\n // init for current month breakdown\n const prevValueFloat = Number(prevMonthData[index + 1])\n if (prevValueFloat > 0) {\n prevLabels.push(pair)\n prevPercentArr.push(prevValueFloat)\n prevColors.push(pairColor[index])\n }\n }\n })\n const curBreakdownChartData = [{\n values: curPercentArr,\n labels: curLabels,\n marker: {\n colors: curColors\n },\n type: 'pie'\n }]\n const prevBreakdownChartData = [{\n values: prevPercentArr,\n labels: prevLabels,\n marker: {\n colors: prevColors\n },\n type: 'pie'\n }]\n // sort monthly trading volume chart data\n this.chartData.sort(function (a, b) {\n return a.total === b.total ? 0 : (a.total > b.total ? -1 : 1)\n })\n // sort weekly trading volume chart data\n this.weekChartData.sort(function (a, b) {\n return a.total === b.total ? 0 : (a.total > b.total ? -1 : 1)\n })\n // sort daily trading volume chart data\n this.dailyChartData.sort(function (a, b) {\n return a.total === b.total ? 0 : (a.total > b.total ? -1 : 1)\n })\n const pieLayout = {\n legend: { orientation: 'h', xanchor: 'center', x: 0.5 }\n }\n Plotly.newPlot('monthlyTradingVolume', this.chartData, this.layout)\n Plotly.newPlot('weeklyTradingVolume', this.weekChartData, this.layout)\n Plotly.newPlot('dailyTradingVolume', this.dailyChartData, this.dailyLayout)\n Plotly.newPlot('curMonthBreakdownChart', curBreakdownChartData, pieLayout)\n Plotly.newPlot('prevMonthBreakdownChart', prevBreakdownChartData, pieLayout)\n this.pageLoaderTarget.classList.remove('loading')\n }\n\n getMonthName (monthNumStr) {\n const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n const monthNum = this.getMonthNumber(monthNumStr)\n return monthNames[monthNum - 1]\n }\n\n getMonthNumber (monthStr) {\n if (monthStr.startsWith('0')) {\n return Number(monthStr.replaceAll('0', ''))\n }\n return Number(monthStr)\n }\n\n async fetchCsvDataFromUrl () {\n const data = await this.getCsvContent()\n const csvData = []\n const jsonObject = data.split(/\\r?\\n|\\r/)\n if (jsonObject.length < 2) {\n return csvData\n }\n // Skip first header line\n for (let i = 1; i < jsonObject.length; i++) {\n if (jsonObject[i] === '' || jsonObject[i].trim() === '') {\n continue\n }\n csvData.push(jsonObject[i].split(','))\n }\n return csvData\n }\n\n async getCsvContent () {\n return $.ajax({\n url: 'https://raw.githubusercontent.com/bochinchero/dcrsnapcsv/main/data/stream/dex_decred_org_VolUSD.csv',\n type: 'get',\n dataType: 'text'\n })\n .then(function (res) {\n return res\n })\n }\n\n groupWeeklyData (records) {\n const res = []\n let curWeekData = []\n let curWeekDataNum = []\n let lastTime\n records.forEach((record) => {\n if (record.length < 1 || record[0].trim() === '') {\n return\n }\n const dateRec = new Date(record[0])\n if (dateRec.getTime() <= 0) {\n return\n }\n const weekDayNum = dateRec.getDay()\n if (curWeekDataNum.length === 0) {\n for (let i = 1; i < record.length; i++) {\n const recordFloat = Number(record[i])\n curWeekDataNum.push(recordFloat)\n }\n } else {\n for (let i = 1; i < record.length; i++) {\n const recordFloat = Number(record[i])\n curWeekDataNum[i - 1] += recordFloat\n }\n }\n // if weekday is Monday\n if (weekDayNum === 1) {\n curWeekData.push(record[0])\n let sum = 0\n curWeekDataNum.forEach((dataNum) => {\n curWeekData.push(dataNum + '')\n sum += dataNum\n })\n curWeekData.push(sum + '')\n res.push(curWeekData)\n curWeekData = []\n curWeekDataNum = []\n }\n lastTime = dateRec\n })\n if (curWeekDataNum.length > 0) {\n // check nearest week\n for (let i = 0; i < 7; i++) {\n const nextDayInt = lastTime.setDate(lastTime.getDate() + i)\n const nextDay = new Date(nextDayInt)\n if (nextDay.getDay() === 1) {\n curWeekData.push(humanize.date(nextDay, false, true))\n let sum = 0\n curWeekDataNum.forEach((dataNum) => {\n curWeekData.push(dataNum + '')\n sum += dataNum\n })\n curWeekData.push(sum + '')\n res.push(curWeekData)\n break\n }\n }\n }\n return res\n }\n\n groupMonthlyData (records) {\n let currentMonth = ''\n let currentYear = ''\n const res = []\n let curMonthData = []\n records.forEach((record, index) => {\n const dateArray = record[0].split('-')\n if (currentMonth === '') {\n currentYear = dateArray[0]\n currentMonth = dateArray[1]\n curMonthData.push(dateArray[0] + '-' + dateArray[1])\n for (let i = 1; i < record.length; i++) {\n curMonthData.push(record[i])\n }\n } else if (dateArray[0] !== currentYear || dateArray[1] !== currentMonth) {\n currentYear = dateArray[0]\n currentMonth = dateArray[1]\n res.push(curMonthData)\n curMonthData = []\n curMonthData.push(dateArray[0] + '-' + dateArray[1])\n for (let i = 1; i < record.length; i++) {\n curMonthData.push(record[i])\n }\n } else {\n for (let i = 1; i < record.length; i++) {\n const curFloat = Number(curMonthData[i])\n const recordFloat = Number(record[i])\n curMonthData[i] = (curFloat + recordFloat) + ''\n }\n }\n if (index === records.length - 1) {\n res.push(curMonthData)\n }\n })\n const _this = this\n res.forEach((resItem, index) => {\n const sum = _this.sumVolOfBwRow(resItem)\n resItem.push(sum + '')\n res[index] = resItem\n })\n return res\n }\n\n sumVolOfBwRow (row) {\n let sum = 0\n row.forEach((value, index) => {\n if (index > 0) {\n const floatValue = Number(value)\n sum += floatValue\n }\n })\n return sum\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport { getDefault } from '../helpers/module_helper.js'\nimport globalEventBus from '../services/event_bus_service.js'\nimport TurboQuery from '../helpers/turbolinks_helper.js'\nimport humanize from '../helpers/humanize_helper.js'\nimport txInBlock from '../helpers/block_helper.js'\nimport { fadeIn, animationFrame } from '../helpers/animation_helper.js'\nimport { requestJSON } from '../helpers/http.js'\n\nconst maxAddrRows = 160\nfunction setTxnCountText (el, count) {\n if (el.dataset.formatted) {\n el.textContent = count + ' transaction' + (count > 1 ? 's' : '')\n } else {\n el.textContent = count\n }\n}\n\nlet ctrl = null\n\nexport default class extends Controller {\n static get targets () {\n return ['addr', 'balance',\n 'numUnconfirmed',\n 'pagesize', 'txntype', 'txnCount', 'qricon', 'qrimg', 'qrbox',\n 'paginator', 'pageplus', 'pageminus', 'listbox', 'table',\n 'range', 'noconfirms', 'pagebuttons',\n 'pending', 'hash', 'matchhash', 'view', 'listLoader',\n 'tablePagination', 'paginationheader']\n }\n\n async connect () {\n ctrl = this\n ctrl.retrievedData = {}\n ctrl.ajaxing = false\n ctrl.qrCode = false\n ctrl.requestedChart = false\n ctrl.lastEnd = 0\n ctrl.confirmMempoolTxs = ctrl._confirmMempoolTxs.bind(ctrl)\n ctrl.bindElements()\n ctrl.bindEvents()\n ctrl.query = new TurboQuery()\n\n // These two are templates for query parameter sets.\n // When url query parameters are set, these will also be updated.\n const settings = ctrl.settings = TurboQuery.nullTemplate(['n', 'start', 'txntype', 'time'])\n ctrl.state = Object.assign({}, settings)\n // Parse stimulus data\n const cdata = ctrl.data\n ctrl.dcrAddress = cdata.get('dcraddress')\n ctrl.chainType = cdata.get('chainType')\n ctrl.paginationParams = {\n offset: parseInt(cdata.get('offset')),\n count: parseInt(cdata.get('txnCount'))\n }\n ctrl.balance = cdata.get('balance')\n\n // Get initial view settings from the url\n ctrl.query.update(settings)\n this.time = settings.time\n }\n\n disconnect () {\n globalEventBus.off('BLOCK_RECEIVED', this.confirmMempoolTxs)\n this.retrievedData = {}\n }\n\n bindElements () {\n this.pageSizeOptions = this.hasPagesizeTarget ? this.pagesizeTarget.querySelectorAll('option') : []\n }\n\n bindEvents () {\n globalEventBus.on('BLOCK_RECEIVED', this.confirmMempoolTxs)\n ctrl.paginatorTargets.forEach((link) => {\n link.addEventListener('click', (e) => {\n e.preventDefault()\n })\n })\n }\n\n async showQRCode () {\n this.qrboxTarget.classList.remove('d-hide')\n if (this.qrCode) {\n await fadeIn(this.qrimgTarget)\n } else {\n const QRCode = await getDefault(\n import(/* webpackChunkName: \"qrcode\" */ 'qrcode')\n )\n const qrCodeImg = await QRCode.toDataURL(this.dcrAddress,\n {\n errorCorrectionLevel: 'H',\n scale: 6,\n margin: 0\n }\n )\n this.qrimgTarget.innerHTML = `<img src=\"${qrCodeImg}\"/>`\n await fadeIn(this.qrimgTarget)\n if (this.graph) this.graph.resize()\n }\n this.qriconTarget.classList.add('d-hide')\n }\n\n async hideQRCode () {\n this.qriconTarget.classList.remove('d-hide')\n this.qrboxTarget.classList.add('d-hide')\n this.qrimgTarget.style.opacity = 0\n await animationFrame()\n }\n\n makeTableUrl (txType, count, offset, time) {\n const root = `chain/${this.chainType}/addresstable/${this.dcrAddress}`\n return `/${root}?txntype=${txType}&n=${count}&start=${offset}${time && time !== '' ? '&time=' + time : ''}`\n }\n\n changePageSize () {\n this.fetchTableWithPeriod(this.txnType, this.pageSize, this.paginationParams.offset, this.time)\n }\n\n changeTxType () {\n this.fetchTableWithPeriod(this.txnType, this.pageSize, 0, this.time)\n }\n\n nextPage () {\n this.toPage(1)\n }\n\n prevPage () {\n this.toPage(-1)\n }\n\n pageNumberLink (e) {\n e.preventDefault()\n const url = e.target.href\n const parser = new URL(url)\n const start = parser.searchParams.get('start')\n const pagesize = parser.searchParams.get('n')\n const txntype = parser.searchParams.get('txntype')\n const time = parser.searchParams.get('time')\n this.time = time\n this.fetchTableWithPeriod(txntype, pagesize, start, time)\n }\n\n toPage (direction) {\n const params = ctrl.paginationParams\n const count = ctrl.pageSize\n const txType = ctrl.txnType\n const time = this.time\n let requestedOffset = params.offset + count * direction\n if (requestedOffset >= params.count) return\n if (requestedOffset < 0) requestedOffset = 0\n ctrl.fetchTableWithPeriod(txType, count, requestedOffset, time)\n }\n\n async fetchTableWithPeriod (txType, count, offset, time) {\n ctrl.listLoaderTarget.classList.add('loading')\n const requestCount = count > 20 ? count : 20\n const tableResponse = await requestJSON(ctrl.makeTableUrl(txType, requestCount, offset, time))\n ctrl.tableTarget.innerHTML = dompurify.sanitize(tableResponse.html)\n const settings = ctrl.settings\n settings.n = count\n settings.start = offset\n settings.txntype = txType\n ctrl.paginationParams.count = tableResponse.tx_count\n ctrl.query.replace(settings)\n ctrl.paginationParams.offset = offset\n ctrl.paginationParams.pagesize = count\n ctrl.paginationParams.txntype = txType\n ctrl.setPageability()\n ctrl.tablePaginationParams = tableResponse.pages\n ctrl.setTablePaginationLinks()\n ctrl.listLoaderTarget.classList.remove('loading')\n }\n\n async fetchTable (txType, count, offset) {\n this.fetchTableWithPeriod(txType, count, offset, '')\n }\n\n setPageability () {\n const params = ctrl.paginationParams\n const rowMax = params.count\n const count = ctrl.pageSize\n if (ctrl.paginationParams.count === 0) {\n ctrl.paginationheaderTarget.classList.add('d-hide')\n } else {\n ctrl.paginationheaderTarget.classList.remove('d-hide')\n }\n if (rowMax > count) {\n ctrl.pagebuttonsTarget.classList.remove('d-hide')\n } else {\n ctrl.pagebuttonsTarget.classList.add('d-hide')\n }\n const setAbility = (el, state) => {\n if (state) {\n el.classList.remove('disabled')\n } else {\n el.classList.add('disabled')\n }\n }\n setAbility(ctrl.pageplusTarget, params.offset + count < rowMax)\n setAbility(ctrl.pageminusTarget, params.offset - count >= 0)\n ctrl.pageSizeOptions.forEach((option) => {\n if (option.value > 100) {\n if (rowMax > 100) {\n option.disabled = false\n option.text = option.value = Math.min(rowMax, maxAddrRows)\n } else {\n option.disabled = true\n option.text = option.value = maxAddrRows\n }\n } else {\n option.disabled = rowMax <= option.value\n }\n })\n setAbility(ctrl.pagesizeTarget, rowMax > 20)\n const suffix = rowMax > 1 ? 's' : ''\n let rangeEnd = params.offset + count\n if (rangeEnd > rowMax) rangeEnd = rowMax\n ctrl.rangeTarget.innerHTML = 'showing ' + (params.offset + 1) + ' – ' +\n rangeEnd + ' of ' + rowMax.toLocaleString() + ' transaction' + suffix\n }\n\n setTablePaginationLinks () {\n const tablePagesLink = ctrl.tablePaginationParams\n if (tablePagesLink.length === 0) return ctrl.tablePaginationTarget.classList.add('d-hide')\n ctrl.tablePaginationTarget.classList.remove('d-hide')\n const txCount = parseInt(ctrl.paginationParams.count)\n const offset = parseInt(ctrl.paginationParams.offset)\n const pageSize = parseInt(ctrl.paginationParams.pagesize)\n const txnType = ctrl.paginationParams.txntype\n const time = this.time\n let links = ''\n\n const root = this.dcrAddress === `chain/${this.chainType}/address/${this.dcrAddress}`\n\n if (typeof offset !== 'undefined' && offset > 0) {\n links = `<a href=\"/${root}?start=${offset - pageSize}&n=${pageSize}&txntype=${txnType}${time && time !== '' ? '&time=' + time : ''}\" ` +\n 'class=\"d-inline-block dcricon-arrow-left pagination-number pagination-narrow m-1 fz20\" data-action=\"click->address#pageNumberLink\"></a>' + '\\n'\n }\n\n links += tablePagesLink.map(d => {\n if (!d.link) return `<span>${d.str}</span>`\n return `<a href=\"${d.link}\" class=\"fs18 pager pagination-number${d.active ? ' active' : ''}\" data-action=\"click->address#pageNumberLink\">${d.str}</a>`\n }).join('\\n')\n\n if ((txCount - offset) > pageSize) {\n links += '\\n' + `<a href=\"/${root}?start=${(offset + pageSize)}&n=${pageSize}&txntype=${txnType}${time && time !== '' ? '&time=' + time : ''}\" ` +\n 'class=\"d-inline-block dcricon-arrow-right pagination-number pagination-narrow m-1 fs20\" data-action=\"click->address#pageNumberLink\"></a>'\n }\n\n ctrl.tablePaginationTarget.innerHTML = dompurify.sanitize(links)\n }\n\n _confirmMempoolTxs (blockData) {\n const block = blockData.block\n if (this.hasPendingTarget) {\n this.pendingTargets.forEach((row) => {\n if (txInBlock(row.dataset.txid, block)) {\n const confirms = row.querySelector('td.addr-tx-confirms')\n confirms.textContent = '1'\n confirms.dataset.confirmationBlockHeight = block.height\n row.querySelector('td.addr-tx-time').textContent = humanize.date(block.time, true)\n const age = row.querySelector('td.addr-tx-age > span')\n age.dataset.age = block.time\n age.textContent = humanize.timeSince(block.unixStamp)\n delete row.dataset.addressTarget\n // Increment the displayed tx count\n const count = this.txnCountTarget\n count.dataset.txnCount++\n setTxnCountText(count, count.dataset.txnCount)\n this.numUnconfirmedTargets.forEach((tr, i) => {\n const td = tr.querySelector('td.addr-unconfirmed-count')\n let count = parseInt(tr.dataset.count)\n if (count) count--\n tr.dataset.count = count\n if (count === 0) {\n tr.classList.add('.d-hide')\n delete tr.dataset.addressTarget\n } else {\n td.textContent = count\n }\n })\n }\n })\n }\n }\n\n get txnType () {\n return this.txntypeTarget.selectedOptions[0].value\n }\n\n get pageSize () {\n const selected = this.pagesizeTarget.selectedOptions\n return selected.length ? parseInt(selected[0].value) : 20\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport { assign, map, merge } from 'lodash-es'\nimport { animationFrame } from '../helpers/animation_helper.js'\nimport { isEqual } from '../helpers/chart_helper.js'\nimport { requestJSON } from '../helpers/http.js'\nimport humanize from '../helpers/humanize_helper.js'\nimport { getDefault } from '../helpers/module_helper.js'\nimport TurboQuery from '../helpers/turbolinks_helper.js'\nimport Zoom from '../helpers/zoom_helper.js'\nimport globalEventBus from '../services/event_bus_service.js'\nimport { darkEnabled } from '../services/theme_service.js'\n\nlet selectedChart\nlet Dygraph // lazy loaded on connect\n\nconst aDay = 86400 * 1000 // in milliseconds\nconst aMonth = 30 // in days\nconst atomsToDCR = 1e-8\nconst windowScales = ['ticket-price', 'missed-votes']\nconst hybridScales = ['privacy-participation']\nconst lineScales = ['ticket-price', 'privacy-participation']\nconst modeScales = ['ticket-price']\nlet globalChainType = ''\n// index 0 represents y1 and 1 represents y2 axes.\nconst yValueRanges = { 'ticket-price': [1] }\nconst hashrateUnits = ['Th/s', 'Ph/s', 'Eh/s']\nlet premine, stakeValHeight, stakeShare\nlet baseSubsidy, subsidyInterval, subsidyExponent, avgBlockTime\nlet yFormatter, legendEntry, legendMarker, legendElement\n\nfunction usesWindowUnits (chart) {\n return windowScales.indexOf(chart) > -1\n}\n\nfunction usesHybridUnits (chart) {\n return hybridScales.indexOf(chart) > -1\n}\n\nfunction isScaleDisabled (chart) {\n return lineScales.indexOf(chart) > -1\n}\n\nfunction isModeEnabled (chart) {\n return modeScales.includes(chart)\n}\n\nfunction intComma (amount) {\n if (!amount) return ''\n return amount.toLocaleString(undefined, { maximumFractionDigits: 0 })\n}\n\nfunction axesToRestoreYRange (chartName, origYRange, newYRange) {\n const axesIndexes = yValueRanges[chartName]\n if (!Array.isArray(origYRange) || !Array.isArray(newYRange) ||\n origYRange.length !== newYRange.length || !axesIndexes) return\n\n let axes\n for (let i = 0; i < axesIndexes.length; i++) {\n const index = axesIndexes[i]\n if (newYRange.length <= index) continue\n if (!isEqual(origYRange[index], newYRange[index])) {\n if (!axes) axes = {}\n if (index === 0) {\n axes = Object.assign(axes, { y1: { valueRange: origYRange[index] } })\n } else if (index === 1) {\n axes = Object.assign(axes, { y2: { valueRange: origYRange[index] } })\n }\n }\n }\n return axes\n}\n\nfunction withBigUnits (v, units) {\n const i = v === 0 ? 0 : Math.floor(Math.log10(v) / 3)\n return (v / Math.pow(1000, i)).toFixed(3) + ' ' + units[i]\n}\n\nfunction blockReward (height) {\n if (height >= stakeValHeight) return baseSubsidy * Math.pow(subsidyExponent, Math.floor(height / subsidyInterval))\n if (height > 1) return baseSubsidy * (1 - stakeShare)\n if (height === 1) return premine\n return 0\n}\n\nfunction addLegendEntryFmt (div, series, fmt) {\n div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${fmt(series.y)}`))\n}\n\nfunction addLegendEntry (div, series) {\n div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${series.yHTML}`))\n}\n\nfunction defaultYFormatter (div, data) {\n addLegendEntry(div, data.series[0])\n}\n\nfunction customYFormatter (fmt) {\n return (div, data) => addLegendEntryFmt(div, data.series[0], fmt)\n}\n\nfunction legendFormatter (data) {\n if (data.x == null) return legendElement.classList.add('d-hide')\n legendElement.classList.remove('d-hide')\n const div = document.createElement('div')\n let xHTML = data.xHTML\n if (data.dygraph.getLabels()[0] === 'Date') {\n xHTML = humanize.date(data.x, false, selectedChart !== 'ticket-price')\n }\n div.appendChild(legendEntry(`${data.dygraph.getLabels()[0]}: ${xHTML}`))\n yFormatter(div, data, data.dygraph.getOption('legendIndex'))\n dompurify.sanitize(div, { IN_PLACE: true, FORBID_TAGS: ['svg', 'math'] })\n return div.innerHTML\n}\n\nfunction nightModeOptions (nightModeOn) {\n if (nightModeOn) {\n return {\n rangeSelectorAlpha: 0.3,\n gridLineColor: '#596D81',\n colors: ['#2DD8A3', '#255595', '#FFC84E']\n }\n }\n return {\n rangeSelectorAlpha: 0.4,\n gridLineColor: '#C4CBD2',\n colors: ['#255594', '#006600', '#FF0090']\n }\n}\n\nfunction zipWindowHvY (ys, winSize, yMult, offset) {\n yMult = yMult || 1\n offset = offset || 0\n return ys.map((y, i) => {\n return [i * winSize + offset, y * yMult]\n })\n}\n\nfunction zipWindowTvY (times, ys, yMult) {\n yMult = yMult || 1\n return times.map((t, i) => {\n return [new Date(t * 1000), ys[i] * yMult]\n })\n}\n\nfunction zipTvY (times, ys, yMult) {\n yMult = yMult || 1\n return times.map((t, i) => {\n return [new Date(t * 1000), ys[i] * yMult]\n })\n}\n\nfunction zipIvY (ys, yMult, offset) {\n yMult = yMult || 1\n offset = offset || 1 // TODO: check for why offset is set to a default value of 1 when genesis block has a height of 0\n return ys.map((y, i) => {\n return [offset + i, y * yMult]\n })\n}\n\nfunction zipHvY (heights, ys, yMult, offset) {\n yMult = yMult || 1\n offset = offset || 1\n return ys.map((y, i) => {\n return [offset + heights[i], y * yMult]\n })\n}\n\nfunction zip2D (data, ys, yMult, offset) {\n yMult = yMult || 1\n if (data.axis === 'height') {\n if (data.bin === 'block') return zipIvY(ys, yMult)\n return zipHvY(data.h, ys, yMult, offset)\n }\n return zipTvY(data.t, ys, yMult)\n}\n\nfunction powDiffFunc (data) {\n if (data.t) return zipWindowTvY(data.t, data.diff)\n return zipWindowHvY(data.diff, data.window)\n}\n\nfunction circulationFunc (chartData) {\n let yMax = 0\n let h = -1\n const addDough = (newHeight) => {\n while (h < newHeight) {\n h++\n yMax += blockReward(h) * atomsToDCR\n }\n }\n const heights = chartData.h\n const times = chartData.t\n const supplies = chartData.supply\n const isHeightAxis = chartData.axis === 'height'\n let xFunc, hFunc\n if (chartData.bin === 'day') {\n xFunc = isHeightAxis ? i => heights[i] : i => new Date(times[i] * 1000)\n hFunc = i => heights[i]\n } else {\n xFunc = isHeightAxis ? i => i : i => new Date(times[i] * 1000)\n hFunc = i => i\n }\n\n const inflation = []\n const data = map(supplies, (n, i) => {\n const height = hFunc(i)\n addDough(height)\n inflation.push(yMax)\n return [xFunc(i), supplies[i] * atomsToDCR, null, 0]\n })\n\n const dailyBlocks = aDay / avgBlockTime\n const lastPt = data[data.length - 1]\n let x = lastPt[0]\n // Set yMax to the start at last actual supply for the prediction line.\n yMax = lastPt[1]\n if (!isHeightAxis) x = x.getTime()\n xFunc = isHeightAxis ? xx => xx : xx => { return new Date(xx) }\n const xIncrement = isHeightAxis ? dailyBlocks : aDay\n const projection = 6 * aMonth\n data.push([xFunc(x), null, yMax, null])\n for (let i = 1; i <= projection; i++) {\n addDough(h + dailyBlocks)\n x += xIncrement\n data.push([xFunc(x), null, yMax, null])\n }\n return { data, inflation }\n}\n\nfunction mapDygraphOptions (data, labelsVal, isDrawPoint, yLabel, labelsMG, labelsMG2) {\n return merge({\n file: data,\n labels: labelsVal,\n drawPoints: isDrawPoint,\n ylabel: yLabel,\n labelsKMB: labelsMG2 && labelsMG ? false : labelsMG,\n labelsKMG2: labelsMG2 && labelsMG ? false : labelsMG2\n }, nightModeOptions(darkEnabled()))\n}\n\nexport default class extends Controller {\n static get targets () {\n return [\n 'chartWrapper',\n 'labels',\n 'chartsView',\n 'chartSelect',\n 'zoomSelector',\n 'zoomOption',\n 'scaleType',\n 'axisOption',\n 'binSelector',\n 'scaleSelector',\n 'binSize',\n 'legendEntry',\n 'legendMarker',\n 'modeSelector',\n 'modeOption',\n 'rawDataURL',\n 'chartName',\n 'chartTitleName'\n\n ]\n }\n\n async connect () {\n this.isHomepage = !window.location.href.includes('/charts')\n this.query = new TurboQuery()\n premine = parseInt(this.data.get('premine'))\n stakeValHeight = parseInt(this.data.get('svh'))\n stakeShare = parseInt(this.data.get('pos')) / 10.0\n baseSubsidy = parseInt(this.data.get('bs'))\n subsidyInterval = parseInt(this.data.get('sri'))\n subsidyExponent = parseFloat(this.data.get('mulSubsidy')) / parseFloat(this.data.get('divSubsidy'))\n avgBlockTime = parseInt(this.data.get('blockTime')) * 1000\n this.chainType = this.data.get('chainType')\n const supplyPage = this.data.get('supplyPage')\n globalChainType = this.chainType\n legendElement = this.labelsTarget\n\n // Prepare the legend element generators.\n const lm = this.legendMarkerTarget\n lm.remove()\n lm.removeAttribute('data-charts-target')\n legendMarker = () => {\n const node = document.createElement('div')\n node.appendChild(lm.cloneNode())\n return node.innerHTML\n }\n const le = this.legendEntryTarget\n le.remove()\n le.removeAttribute('data-charts-target')\n legendEntry = s => {\n const node = le.cloneNode()\n node.innerHTML = s\n return node\n }\n\n this.settings = TurboQuery.nullTemplate(['chart', 'zoom', 'scale', 'bin', 'axis', 'visibility', 'home'])\n if (!this.isHomepage) {\n this.query.update(this.settings)\n }\n this.settings.chart = this.settings.chart || 'block-size'\n if (supplyPage === 'true') {\n this.settings.chart = 'coin-supply'\n }\n this.zoomCallback = this._zoomCallback.bind(this)\n this.drawCallback = this._drawCallback.bind(this)\n this.limits = null\n this.lastZoom = null\n this.visibility = []\n if (this.settings.visibility) {\n this.settings.visibility.split('-', -1).forEach(s => {\n this.visibility.push(s === 'true')\n })\n }\n Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n this.drawInitialGraph()\n this.processNightMode = (params) => {\n this.chartsView.updateOptions(\n nightModeOptions(params.nightMode)\n )\n }\n globalEventBus.on('NIGHT_MODE', this.processNightMode)\n }\n\n disconnect () {\n globalEventBus.off('NIGHT_MODE', this.processNightMode)\n if (this.chartsView !== undefined) {\n this.chartsView.destroy()\n }\n selectedChart = null\n }\n\n drawInitialGraph () {\n const options = {\n axes: { y: { axisLabelWidth: 70 }, y2: { axisLabelWidth: 65 } },\n labels: ['Date', 'Ticket Price', 'Tickets Bought'],\n digitsAfterDecimal: 8,\n showRangeSelector: true,\n rangeSelectorPlotFillColor: '#C4CBD2',\n rangeSelectorAlpha: 0.4,\n rangeSelectorHeight: 40,\n drawPoints: true,\n pointSize: 0.25,\n legend: 'always',\n labelsSeparateLines: true,\n labelsDiv: legendElement,\n legendFormatter: legendFormatter,\n highlightCircleSize: 4,\n ylabel: 'Ticket Price',\n y2label: 'Tickets Bought',\n labelsUTC: true,\n axisLineColor: '#C4CBD2'\n }\n\n this.chartsView = new Dygraph(\n this.chartsViewTarget,\n [[1, 1, 5], [2, 5, 11]],\n options\n )\n this.chartSelectTarget.value = this.settings.chart\n\n if (this.settings.axis) this.setAxis(this.settings.axis) // set first\n if (this.settings.scale === 'log') this.setScale(this.settings.scale)\n if (this.settings.zoom) this.setZoom(this.settings.zoom)\n this.setBin(this.settings.bin ? this.settings.bin : 'day')\n this.setMode(this.settings.mode ? this.settings.mode : 'smooth')\n\n const ogLegendGenerator = Dygraph.Plugins.Legend.generateLegendHTML\n Dygraph.Plugins.Legend.generateLegendHTML = (g, x, pts, w, row) => {\n g.updateOptions({ legendIndex: row }, true)\n return ogLegendGenerator(g, x, pts, w, row)\n }\n this.selectChart()\n }\n\n plotGraph (chartName, data) {\n let d = []\n const gOptions = {\n zoomCallback: null,\n drawCallback: null,\n logscale: this.settings.scale === 'log',\n valueRange: [null, null],\n visibility: null,\n y2label: null,\n stepPlot: this.settings.mode === 'stepped',\n axes: {},\n series: null,\n inflation: null\n }\n\n yFormatter = defaultYFormatter\n const xlabel = data.t ? 'Date' : 'Block Height'\n\n switch (chartName) {\n case 'block-size': // block size graph\n d = zip2D(data, data.size)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Block Size'], false, 'Block Size', true, false))\n break\n case 'blockchain-size': // blockchain size graph\n d = zip2D(data, data.size)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Blockchain Size'], true,\n 'Blockchain Size', false, true))\n break\n case 'tx-count': // tx per block graph\n d = zip2D(data, data.count)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Total Transactions'], false,\n 'Total Transactions', false, false))\n break\n case 'tx-per-block': // tx per block graph\n d = zip2D(data, data.count)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Avg TXs Per Block'], false,\n 'Avg TXs Per Block', false, false))\n break\n case 'mined-blocks': // tx per block graph\n d = zip2D(data, data.count)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mined Blocks'], false,\n 'Mined Blocks', false, false))\n break\n case 'mempool-txs': // tx per block graph\n d = zip2D(data, data.count)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mempool Transactions'], false,\n 'Mempool Transactions', false, false))\n break\n case 'mempool-size': // blockchain size graph\n d = zip2D(data, data.size)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mempool Size'], true,\n 'Mempool Size', false, true))\n break\n case 'address-number': // tx per block graph\n d = zip2D(data, data.count)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Active Addresses'], false,\n 'Active Addresses', false, false))\n break\n case 'pow-difficulty': // difficulty graph\n d = powDiffFunc(data)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Difficulty'], true, 'Difficulty', true, false))\n break\n case 'coin-supply': // supply graph\n if (this.settings.bin === 'day') {\n d = zip2D(data, data.supply, 1e-6)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Coins Supply (' + globalChainType.toUpperCase() + ')'], false,\n 'Coins Supply (Millions ' + globalChainType.toUpperCase() + ')', false, false))\n yFormatter = (div, data, i) => {\n addLegendEntryFmt(div, data.series[0], y => intComma(y * 1e6) + ' ' + globalChainType.toUpperCase())\n }\n break\n }\n d = circulationFunc(data)\n assign(gOptions, mapDygraphOptions(d.data, [xlabel, 'Coin Supply', 'Inflation Limit', 'Mix Rate'],\n true, 'Coin Supply (' + this.chainType.toUpperCase() + ')', true, false))\n gOptions.y2label = 'Inflation Limit'\n gOptions.y3label = 'Mix Rate'\n gOptions.series = { 'Inflation Limit': { axis: 'y2' }, 'Mix Rate': { axis: 'y3' } }\n this.visibility = [true, true, false]\n gOptions.visibility = this.visibility\n gOptions.series = {\n 'Inflation Limit': {\n strokePattern: [5, 5],\n color: '#C4CBD2',\n strokeWidth: 1.5\n },\n 'Mix Rate': {\n color: '#2dd8a3'\n }\n }\n gOptions.inflation = d.inflation\n yFormatter = (div, data, i) => {\n addLegendEntryFmt(div, data.series[0], y => intComma(y) + ' ' + globalChainType.toUpperCase())\n let change = 0\n if (i < d.inflation.length) {\n const predicted = d.inflation[i]\n const unminted = predicted - data.series[0].y\n change = ((unminted / predicted) * 100).toFixed(2)\n div.appendChild(legendEntry(`${legendMarker()} Unminted: ${intComma(unminted)} ` + globalChainType.toUpperCase() + ` (${change}%)`))\n }\n }\n break\n\n case 'fees': // block fee graph\n d = zip2D(data, data.fees, atomsToDCR)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Total Fee'], false, 'Total Fee (' + globalChainType.toUpperCase() + ')', true, false))\n break\n\n case 'duration-btw-blocks': // Duration between blocks graph\n d = zip2D(data, data.duration, 1, 1)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Duration Between Blocks'], false,\n 'Duration Between Blocks (seconds)', false, false))\n break\n\n case 'hashrate': // Total chainwork over time\n d = zip2D(data, data.rate, 1e-3, data.offset)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Network Hashrate (petahash/s)'],\n false, 'Network Hashrate (petahash/s)', true, false))\n yFormatter = customYFormatter(y => withBigUnits(y * 1e3, hashrateUnits))\n break\n }\n\n const baseURL = `${this.query.url.protocol}//${this.query.url.host}`\n this.rawDataURLTarget.textContent = `${baseURL}/api/chainchart/${this.chainType}/${chartName}?axis=${this.settings.axis}&bin=${this.settings.bin}`\n\n this.chartsView.plotter_.clear()\n this.chartsView.updateOptions(gOptions, false)\n if (yValueRanges[chartName]) this.supportedYRange = this.chartsView.yAxisRanges()\n this.validateZoom()\n }\n\n async selectChart () {\n const selection = this.settings.chart = this.chartSelectTarget.value\n this.chartNameTarget.textContent = this.getChartName(this.chartSelectTarget.value)\n this.chartTitleNameTarget.textContent = this.chartNameTarget.textContent\n this.customLimits = null\n this.chartWrapperTarget.classList.add('loading')\n if (isScaleDisabled(selection)) {\n this.scaleSelectorTarget.classList.add('d-hide')\n } else {\n this.scaleSelectorTarget.classList.remove('d-hide')\n }\n if (isModeEnabled(selection)) {\n this.modeSelectorTarget.classList.remove('d-hide')\n } else {\n this.modeSelectorTarget.classList.add('d-hide')\n }\n\n if (selectedChart !== selection || this.settings.bin !== this.selectedBin() ||\n this.settings.axis !== this.selectedAxis()) {\n let url = `/api/chainchart/${this.chainType}/` + selection\n if (usesWindowUnits(selection) && !usesHybridUnits(selection)) {\n // this.binSelectorTarget.classList.add('d-hide')\n this.settings.bin = 'window'\n } else {\n // this.binSelectorTarget.classList.remove('d-hide')\n this.settings.bin = this.selectedBin()\n this.binSizeTargets.forEach(el => {\n if (el.dataset.option !== 'window') return\n if (usesHybridUnits(selection)) {\n el.classList.remove('d-hide')\n } else {\n el.classList.add('d-hide')\n if (this.settings.bin === 'window') {\n this.settings.bin = 'day'\n this.setActiveOptionBtn(this.settings.bin, this.binSizeTargets)\n }\n }\n })\n }\n url += `?bin=${this.settings.bin}`\n\n this.settings.axis = this.selectedAxis()\n if (!this.settings.axis) this.settings.axis = 'time' // Set the default.\n url += `&axis=${this.settings.axis}`\n this.setActiveOptionBtn(this.settings.axis, this.axisOptionTargets)\n const chartResponse = await requestJSON(url)\n selectedChart = selection\n this.plotGraph(selection, chartResponse)\n } else {\n this.chartWrapperTarget.classList.remove('loading')\n }\n }\n\n getChartName (chartValue) {\n switch (chartValue) {\n case 'block-size':\n return 'Block Size'\n case 'blockchain-size':\n return 'Blockchain Size'\n case 'tx-count':\n return 'Transaction Count'\n case 'duration-btw-blocks':\n return 'Duration Between Blocks'\n case 'pow-difficulty':\n return 'PoW Difficulty'\n case 'hashrate':\n return 'Hashrate'\n case 'coin-supply':\n return 'Coin Supply'\n case 'fees':\n return 'Fees'\n case 'tx-per-block':\n return 'TXs Per Blocks'\n case 'mined-blocks':\n return 'Mined Blocks'\n case 'mempool-txs':\n return 'Mempool TXs'\n case 'mempool-size':\n return 'Mempool Size'\n case 'address-number':\n return 'Active Addresses'\n default:\n return ''\n }\n }\n\n async validateZoom () {\n await animationFrame()\n this.chartWrapperTarget.classList.add('loading')\n await animationFrame()\n let oldLimits = this.limits || this.chartsView.xAxisExtremes()\n this.limits = this.chartsView.xAxisExtremes()\n const selected = this.selectedZoom()\n if (selected && !(selectedChart === 'privacy-participation' && selected === 'all')) {\n this.lastZoom = Zoom.validate(selected, this.limits,\n this.isTimeAxis() ? avgBlockTime : 1, this.isTimeAxis() ? 1 : avgBlockTime)\n } else {\n // if this is for the privacy-participation chart, then zoom to the beginning of the record\n if (selectedChart === 'privacy-participation') {\n this.limits = oldLimits = this.customLimits\n this.settings.zoom = Zoom.object(this.limits[0], this.limits[1])\n }\n this.lastZoom = Zoom.project(this.settings.zoom, oldLimits, this.limits)\n }\n if (this.lastZoom) {\n this.chartsView.updateOptions({\n dateWindow: [this.lastZoom.start, this.lastZoom.end]\n })\n }\n if (selected !== this.settings.zoom) {\n this._zoomCallback(this.lastZoom.start, this.lastZoom.end)\n }\n await animationFrame()\n this.chartWrapperTarget.classList.remove('loading')\n this.chartsView.updateOptions({\n zoomCallback: this.zoomCallback,\n drawCallback: this.drawCallback\n })\n }\n\n _zoomCallback (start, end) {\n this.lastZoom = Zoom.object(start, end)\n this.settings.zoom = Zoom.encode(this.lastZoom)\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n const ex = this.chartsView.xAxisExtremes()\n const option = Zoom.mapKey(this.settings.zoom, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n this.setActiveOptionBtn(option, this.zoomOptionTargets)\n const axesData = axesToRestoreYRange(this.settings.chart,\n this.supportedYRange, this.chartsView.yAxisRanges())\n if (axesData) this.chartsView.updateOptions({ axes: axesData })\n }\n\n isTimeAxis () {\n return this.selectedAxis() === 'time'\n }\n\n _drawCallback (graph, first) {\n if (first) return\n const [start, end] = this.chartsView.xAxisRange()\n if (start === end) return\n if (this.lastZoom.start === start) return // only handle slide event.\n this._zoomCallback(start, end)\n }\n\n setZoom (e) {\n const target = e.srcElement || e.target\n let option\n if (!target) {\n const ex = this.chartsView.xAxisExtremes()\n option = Zoom.mapKey(e, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n } else {\n option = target.dataset.option\n }\n this.setActiveOptionBtn(option, this.zoomOptionTargets)\n if (!target) return // Exit if running for the first time\n this.validateZoom()\n }\n\n setBin (e) {\n const target = e.srcElement || e.target\n const option = target ? target.dataset.option : e\n if (!option) return\n this.setActiveOptionBtn(option, this.binSizeTargets)\n if (!target) return // Exit if running for the first time.\n selectedChart = null // Force fetch\n this.selectChart()\n }\n\n setScale (e) {\n const target = e.srcElement || e.target\n const option = target ? target.dataset.option : e\n if (!option) return\n this.setActiveOptionBtn(option, this.scaleTypeTargets)\n if (!target) return // Exit if running for the first time.\n if (this.chartsView) {\n this.chartsView.updateOptions({ logscale: option === 'log' })\n }\n this.settings.scale = option\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n }\n\n setMode (e) {\n const target = e.srcElement || e.target\n const option = target ? target.dataset.option : e\n if (!option) return\n this.setActiveOptionBtn(option, this.modeOptionTargets)\n if (!target) return // Exit if running for the first time.\n if (this.chartsView) {\n this.chartsView.updateOptions({ stepPlot: option === 'stepped' })\n }\n this.settings.mode = option\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n }\n\n setAxis (e) {\n const target = e.srcElement || e.target\n const option = target ? target.dataset.option : e\n if (!option) return\n this.setActiveOptionBtn(option, this.axisOptionTargets)\n if (!target) return // Exit if running for the first time.\n this.settings.axis = null\n this.selectChart()\n }\n\n setVisibilityFromSettings () {\n switch (this.chartSelectTarget.value) {\n case 'coin-supply':\n if (this.visibility.length !== 3) {\n this.visibility = [true, true, false]\n }\n break\n default:\n return\n }\n this.settings.visibility = this.visibility.join('-')\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n }\n\n setActiveOptionBtn (opt, optTargets) {\n optTargets.forEach(li => {\n if (li.dataset.option === opt) {\n li.classList.add('active')\n } else {\n li.classList.remove('active')\n }\n })\n }\n\n selectedZoom () { return this.selectedOption(this.zoomOptionTargets) }\n selectedBin () { return this.selectedOption(this.binSizeTargets) }\n selectedScale () { return this.selectedOption(this.scaleTypeTargets) }\n selectedAxis () { return this.selectedOption(this.axisOptionTargets) }\n\n selectedOption (optTargets) {\n let key = false\n optTargets.forEach((el) => {\n if (el.classList.contains('active')) key = el.dataset.option\n })\n return key\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\nimport globalEventBus from '../services/event_bus_service'\nimport mempoolJS from '../vendor/mempool'\n\nexport default class extends Controller {\n static get targets () {\n return ['blockHeight', 'blockTotal', 'blockSize', 'blockTime',\n 'exchangeRate', 'totalTransactions', 'coinSupply', 'convertedSupply',\n 'powBar', 'rewardIdx', 'txCount', 'txOutCount', 'totalSent', 'totalFee',\n 'minFeeRate', 'maxFeeRate', 'totalSize', 'remainingBlocks', 'timeRemaning',\n 'diffChange', 'prevRetarget', 'blockTimeAvg']\n }\n\n async connect () {\n this.chainType = this.data.get('chainType')\n this.wsHostName = this.chainType === 'ltc' ? 'litecoinspace.org' : 'mempool.space'\n const rateStr = this.data.get('exchangeRate')\n this.exchangeRate = 0.0\n if (rateStr && rateStr !== '') {\n this.exchangeRate = parseFloat(rateStr)\n }\n this.processBlock = this._processBlock.bind(this)\n switch (this.chainType) {\n case 'ltc':\n globalEventBus.on('LTC_BLOCK_RECEIVED', this.processBlock)\n break\n case 'btc':\n globalEventBus.on('BTC_BLOCK_RECEIVED', this.processBlock)\n }\n this.processXcUpdate = this._processXcUpdate.bind(this)\n globalEventBus.on('EXCHANGE_UPDATE', this.processXcUpdate)\n const { bitcoin: { websocket } } = mempoolJS({\n hostname: this.wsHostName\n })\n this.ws = websocket.initClient({\n options: ['blocks', 'stats', 'mempool-blocks', 'live-2h-chart']\n })\n this.mempoolSocketInit()\n }\n\n _processXcUpdate (update) {\n const xc = update.updater\n const cType = xc.chain_type\n if (cType !== this.chainType) {\n return\n }\n this.exchangeRate = xc.price\n this.exchangeRateTarget.textContent = humanize.twoDecimals(xc.price)\n }\n\n disconnect () {\n switch (this.chainType) {\n case 'ltc':\n globalEventBus.off('LTC_BLOCK_RECEIVED', this.processBlock)\n break\n case 'btc':\n globalEventBus.off('BTC_BLOCK_RECEIVED', this.processBlock)\n }\n globalEventBus.off('EXCHANGE_UPDATE', this.processXcUpdate)\n this.ws.close()\n }\n\n _processBlock (blockData) {\n const block = blockData.block\n this.blockHeightTarget.textContent = block.height\n this.blockHeightTarget.href = `/block/${block.hash}`\n this.blockSizeTarget.textContent = humanize.bytes(block.size)\n this.blockTotalTarget.textContent = humanize.threeSigFigs(block.total)\n this.blockTimeTarget.dataset.age = block.blocktime_unix\n this.blockTimeTarget.textContent = humanize.timeSince(block.blocktime_unix)\n // handler extra data\n const extra = blockData.extra\n if (!extra) {\n return\n }\n this.totalTransactionsTarget.textContent = humanize.commaWithDecimal(extra.total_transactions, 0)\n this.coinSupplyTarget.textContent = humanize.commaWithDecimal(extra.coin_value_supply, 2)\n if (this.exchangeRate > 0) {\n const exchangeValue = extra.coin_value_supply * this.exchangeRate\n this.convertedSupplyTarget.textContent = humanize.threeSigFigs(exchangeValue) + 'USD'\n }\n }\n\n async mempoolSocketInit () {\n const _this = this\n this.ws.addEventListener('message', function incoming ({ data }) {\n const res = JSON.parse(data.toString())\n if (res.mempoolInfo) {\n _this.txCountTarget.innerHTML = humanize.decimalParts(res.mempoolInfo.size, true, 0)\n if (_this.chainType === 'btc') {\n _this.totalFeeTarget.innerHTML = humanize.decimalParts(res.mempoolInfo.total_fee, false, 8, 2)\n }\n }\n if (res['mempool-blocks']) {\n let totalSize = 0\n let ltcTotalFee = 0\n let minFeeRatevB = Number.MAX_VALUE\n let maxFeeRatevB = 0\n res['mempool-blocks'].forEach(memBlock => {\n totalSize += memBlock.blockSize\n if (_this.chainType === 'ltc') {\n ltcTotalFee += memBlock.totalFees\n }\n if (memBlock.feeRange) {\n memBlock.feeRange.forEach(feevB => {\n if (minFeeRatevB > feevB) {\n minFeeRatevB = feevB\n }\n if (maxFeeRatevB < feevB) {\n maxFeeRatevB = feevB\n }\n })\n }\n })\n if (_this.chainType === 'ltc') {\n _this.totalFeeTarget.innerHTML = humanize.decimalParts(ltcTotalFee / 1e8, false, 8, 2)\n }\n _this.minFeeRateTarget.innerHTML = humanize.decimalParts(minFeeRatevB, true, 0)\n _this.maxFeeRateTarget.innerHTML = humanize.decimalParts(maxFeeRatevB, true, 0)\n _this.totalSizeTarget.innerHTML = humanize.bytes(totalSize)\n }\n if (res.block) {\n const extras = res.block.extras\n _this.txOutCountTarget.innerHTML = humanize.decimalParts(extras.totalOutputs, true, 0)\n _this.totalSentTarget.innerHTML = humanize.decimalParts(extras.totalOutputAmt / 1e8, false, 8, 2)\n }\n if (res.blocks) {\n let txOutCount = 0\n let totalSent = 0\n res.blocks.forEach(block => {\n const extras = block.extras\n txOutCount += extras.totalOutputs\n totalSent += extras.totalOutputAmt\n })\n _this.txOutCountTarget.innerHTML = humanize.decimalParts(txOutCount, true, 0)\n _this.totalSentTarget.innerHTML = humanize.decimalParts(totalSent / 1e8, false, 3, 2)\n }\n if (res.da) {\n const diffChange = res.da.difficultyChange\n const prevRetarget = res.da.previousRetarget\n const remainingBlocks = res.da.remainingBlocks\n const timeRemaining = res.da.remainingTime\n const timeAvg = res.da.timeAvg\n _this.diffChangeTarget.innerHTML = humanize.decimalParts(diffChange, false, 2, 0)\n if (diffChange > 0) {\n _this.diffChangeTarget.classList.remove('c-red')\n _this.diffChangeTarget.classList.add('c-green-2')\n } else {\n _this.diffChangeTarget.classList.add('c-red')\n _this.diffChangeTarget.classList.remove('c-green-2')\n }\n _this.prevRetargetTarget.innerHTML = humanize.threeSigFigs(prevRetarget)\n _this.remainingBlocksTarget.innerHTML = humanize.decimalParts(remainingBlocks, true, 0)\n _this.timeRemaningTarget.setAttribute('data-duration', timeRemaining)\n _this.blockTimeAvgTarget.setAttribute('data-duration', timeAvg)\n }\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport TurboQuery from '../helpers/turbolinks_helper.js'\nimport { getDefault } from '../helpers/module_helper.js'\nimport { requestJSON } from '../helpers/http.js'\nimport humanize from '../helpers/humanize_helper.js'\nimport { darkEnabled } from '../services/theme_service.js'\nimport globalEventBus from '../services/event_bus_service.js'\n\nlet Dygraph\nconst SELL = 1\nconst BUY = 2\nconst candlestick = 'candlestick'\nconst orders = 'orders'\nconst depth = 'depth'\nconst history = 'history'\nconst volume = 'volume'\nconst aggregatedKey = 'aggregated'\nconst anHour = '1h'\nlet globalChainType = ''\nconst minuteMap = {\n '5m': 5,\n '30m': 30,\n '1h': 60,\n '1d': 1440,\n '1mo': 43200\n}\nconst PIPI = 2 * Math.PI\nconst prettyDurations = {\n '5m': '5 min',\n '30m': '30 min',\n '1h': 'hour',\n '1d': 'day',\n '1mo': 'month'\n}\n\nconst printNames = {\n dcrdex: 'Dcrdex',\n btc_coinex: 'Coinex'\n // default is capitalize\n}\n\nfunction printName (token) {\n const name = printNames[token]\n if (name) return name\n return humanize.capitalize(token)\n}\n\nconst defaultZoomPct = 20\nlet hidden, visibilityChange\nif (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support\n hidden = 'hidden'\n visibilityChange = 'visibilitychange'\n} else if (typeof document.msHidden !== 'undefined') {\n hidden = 'msHidden'\n visibilityChange = 'msvisibilitychange'\n} else if (typeof document.webkitHidden !== 'undefined') {\n hidden = 'webkitHidden'\n visibilityChange = 'webkitvisibilitychange'\n}\nlet focused = true\nlet aggStacking = true\nlet refreshAvailable = false\nlet availableCandlesticks, availableDepths\n\nfunction screenIsBig () {\n return window.innerWidth >= 992\n}\n\nfunction validDepthExchange (token) {\n return availableDepths.indexOf(token) > -1\n}\n\nfunction usesOrderbook (chart) {\n return chart === depth || chart === orders\n}\n\nfunction usesCandlesticks (chart) {\n return chart === candlestick || chart === volume || chart === history\n}\n\nlet requestCounter = 0\nlet responseCache = {}\n\nfunction hasCache (k) {\n if (!responseCache[k]) return false\n const expiration = new Date(responseCache[k].expiration)\n return expiration > new Date()\n}\n\nfunction clearCache (k) {\n if (!responseCache[k]) return\n delete responseCache[k]\n}\n\nconst lightStroke = '#333'\nconst darkStroke = '#ddd'\nlet chartStroke = lightStroke\nlet conversionFactor = 1\nlet btcPrice, fiatCode\nconst gridColor = '#7774'\nconst binList = ['5m', '30m', '1h', '4h', '1d', 'week', '1mo']\nlet settings = {}\nconst xcColors = [chartStroke, '#ed6d47', '#41be53', '#3087d8', '#dece12']\n\nlet colorNumerator = 0\nlet colorDenominator = 1\nconst hslS = '100%'\nconst hslL = '50%'\nconst hslOffset = 225 // 0 <= x < 360\nconst btcPairUses = ['btc_binance', 'btc_coinex', 'dcrdex', 'aggregated']\n\n// These are the first four hues generated by getHue(\nconst exchangeHues = {\n dcrdex: 'hsl(225,100%,50%)',\n binance: 'hsl(45,100%,50%)',\n bittrex: 'hsl(315,100%,50%)',\n poloniex: 'hsl(135,100%,50%)'\n}\n\nconst hsl = (h) => `hsl(${(h + hslOffset) % 360},${hslS},${hslL})`\n\nfunction useBTCPair (exchange) {\n return btcPairUses.indexOf(exchange) > -1\n}\n\nfunction useUSDPair (exchange) {\n return btcPairUses.indexOf(exchange) < 0 || exchange === 'aggregated'\n}\n// Generates colors on the hue sequence 0, 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16, ...\nfunction generateHue () {\n if (colorNumerator >= colorDenominator) {\n colorNumerator = 1 // reset the numerator\n colorDenominator *= 2 // double the denominator\n if (colorDenominator >= 512) { // Will generate 256 different hues\n colorNumerator = 0\n colorDenominator = 1\n }\n return generateHue()\n }\n const hue = colorNumerator / colorDenominator * 360\n colorNumerator += 2\n return hsl(hue)\n}\n\nfunction getHue (token) {\n if (exchangeHues[token]) return exchangeHues[token]\n exchangeHues[token] = generateHue()\n return exchangeHues[token]\n}\n\n// Generate the constant hues so dynamically assigned hues won't use them.\nObject.keys(exchangeHues).forEach(generateHue)\n\nconst commonChartOpts = {\n gridLineColor: gridColor,\n axisLineColor: 'transparent',\n underlayCallback: (ctx, area, dygraph) => {\n ctx.lineWidth = 1\n ctx.strokeStyle = gridColor\n ctx.strokeRect(area.x, area.y, area.w, area.h)\n },\n // these should be set to avoid Dygraph strangeness\n labels: [' ', ' '], // To avoid an annoying console message,\n xlabel: ' ',\n ylabel: ' ',\n pointSize: 6,\n showRangeSelector: true,\n rangeSelectorPlotFillColor: '#C4CBD2',\n rangeSelectorAlpha: 0.4,\n rangeSelectorHeight: 40\n}\n\nconst chartResetOpts = {\n fillGraph: false,\n strokeWidth: 2,\n drawPoints: false,\n logscale: false,\n xRangePad: 0,\n yRangePad: 0,\n stackedGraph: false,\n zoomCallback: null\n}\n\nfunction convertedThreeSigFigs (x) {\n return humanize.threeSigFigs(x * conversionFactor)\n}\n\nfunction convertedEightDecimals (x) {\n return (x * conversionFactor).toFixed(8)\n}\n\nfunction orderbookStats (bids, asks) {\n const bidEdge = bids[0].price\n const askEdge = asks[0].price\n const midGap = (bidEdge + askEdge) / 2\n return {\n bidEdge: bidEdge,\n askEdge: askEdge,\n gap: askEdge - bidEdge,\n midGap: midGap,\n lowCut: 0.1 * midGap, // Low cutoff of 10% market.\n highCut: midGap * 2 // High cutoff + 100%\n }\n}\n\nconst dummyOrderbook = {\n pts: [[0, 0, 0]],\n outliers: {\n asks: [],\n bids: []\n }\n}\n\nfunction sizedArray (len, v) {\n const a = []\n for (let i = 0; i < len; i++) {\n a.push(v)\n }\n return a\n}\n\nfunction rangedPts (pts, cutoff) {\n const l = []\n const outliers = []\n pts.forEach(pt => {\n if (cutoff(pt)) {\n outliers.push(pt)\n return\n }\n l.push(pt)\n })\n return { pts: l, outliers: outliers }\n}\n\nfunction translateDepthSide (pts, idx, cutoff) {\n const sorted = rangedPts(pts, cutoff)\n let accumulator = 0\n const translated = sorted.pts.map(pt => {\n accumulator += pt.quantity\n pt = [pt.price, null, null]\n pt[idx] = accumulator\n return pt\n })\n return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction translateDepthPoint (pt, offset, accumulator) {\n const l = sizedArray(pt.volumes.length + 1, null)\n l[0] = pt.price\n pt.volumes.forEach((vol, i) => {\n accumulator[i] += vol\n l[offset + i + 1] = accumulator[i]\n })\n return l\n}\n\nfunction needsDummyPoint (pt, offset, accumulator) {\n const xcCount = pt.volumes.length\n for (let i = 0; i < xcCount; i++) {\n if (pt.volumes[i] && accumulator[i] === 0) return { price: pt.price + offset, volumes: sizedArray(xcCount, 0) }\n }\n return false\n}\n\nfunction translateAggregatedDepthSide (pts, idx, cutoff) {\n const sorted = rangedPts(pts, cutoff)\n const xcCount = pts[0].volumes.length\n const offset = idx === SELL ? 0 : xcCount\n const zeroWidth = idx === SELL ? -1e-8 : 1e-8\n const xcAccumulator = sizedArray(xcCount, 0)\n const l = []\n sorted.pts.forEach(pt => {\n const zeros = needsDummyPoint(pt, zeroWidth, xcAccumulator)\n if (zeros) {\n l.push(translateDepthPoint(zeros, offset, xcAccumulator))\n }\n l.push(translateDepthPoint(pt, offset, xcAccumulator))\n })\n return { pts: l, outliers: sorted.outliers }\n}\n\nfunction translateOrderbookSide (pts, idx, cutoff) {\n const sorted = rangedPts(pts, cutoff)\n const translated = sorted.pts.map(pt => {\n const l = [pt.price, null, null]\n l[idx] = pt.quantity\n return l\n })\n return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction sumPt (pt) {\n return pt.volumes.reduce((a, v) => { return a + v }, 0)\n}\n\nfunction translateAggregatedOrderbookSide (pts, idx, cutoff) {\n const sorted = rangedPts(pts, cutoff)\n const translated = sorted.pts.map(pt => {\n const l = [pt.price, null, null]\n l[idx] = sumPt(pt)\n return l\n })\n return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction processOrderbook (response, translator) {\n const bids = response.data.bids\n const asks = response.data.asks\n\n if (!response.tokens) {\n // Add the dummy points to make the chart line connect to the baseline and\n // because otherwise Dygraph has a bug that adds an offset to the asks side.\n bids.splice(0, 0, { price: bids[0].price + 1e-8, quantity: 0 })\n asks.splice(0, 0, { price: asks[0].price - 1e-8, quantity: 0 })\n }\n if (!bids || !asks) {\n console.warn('no bid/ask data in API response')\n return dummyOrderbook\n }\n if (!bids.length || !asks.length) {\n console.warn('empty bid/ask data in API response')\n return dummyOrderbook\n }\n const stats = orderbookStats(bids, asks)\n const buys = translator(bids, BUY, pt => pt.price < stats.lowCut)\n buys.pts.reverse()\n const sells = translator(asks, SELL, pt => pt.price > stats.highCut)\n\n // Find points in overlapping region with duplicate rates, to deal with a\n // Dygraphs bug.\n let dupes\n if (response.tokens) dupes = findAggregateDupes(buys.pts, sells.pts)\n\n return {\n pts: buys.pts.concat(sells.pts),\n outliers: buys.outliers.concat(sells.outliers),\n stats: stats,\n dupes: dupes\n }\n}\n\nfunction candlestickPlotter (e) {\n if (e.seriesIndex !== 0) return\n\n const area = e.plotArea\n const ctx = e.drawingContext\n ctx.strokeStyle = chartStroke\n ctx.lineWidth = 1\n const sets = e.allSeriesPoints\n if (sets.length < 2) {\n // do nothing\n return\n }\n\n const barWidth = area.w * Math.abs(sets[0][1].x - sets[0][0].x) * 0.8\n const [opens, closes, highs, lows] = sets\n let open, close, high, low\n for (let i = 0; i < sets[0].length; i++) {\n ctx.strokeStyle = '#777'\n open = opens[i]\n close = closes[i]\n high = highs[i]\n low = lows[i]\n const centerX = area.x + open.x * area.w\n const topY = area.h * high.y + area.y\n const bottomY = area.h * low.y + area.y\n ctx.beginPath()\n ctx.moveTo(centerX, topY)\n ctx.lineTo(centerX, bottomY)\n ctx.stroke()\n ctx.strokeStyle = 'black'\n let top\n if (open.yval > close.yval) {\n ctx.fillStyle = '#f93f39cc'\n top = area.h * open.y + area.y\n } else {\n ctx.fillStyle = '#1acc84cc'\n top = area.h * close.y + area.y\n }\n const h = area.h * Math.abs(open.y - close.y)\n const left = centerX - barWidth / 2\n ctx.fillRect(left, top, barWidth, h)\n ctx.strokeRect(left, top, barWidth, h)\n }\n}\n\nfunction drawOrderPt (ctx, pt) {\n return drawPt(ctx, pt, orderPtSize, true)\n}\n\nfunction drawPt (ctx, pt, size, bordered) {\n ctx.beginPath()\n ctx.arc(pt.x, pt.y, size, 0, PIPI)\n ctx.fill()\n if (bordered) ctx.stroke()\n}\n\nfunction drawLine (ctx, start, end) {\n ctx.beginPath()\n ctx.moveTo(start.x, start.y)\n ctx.lineTo(end.x, end.y)\n ctx.stroke()\n}\n\nfunction makePt (x, y) { return { x, y } }\n\nfunction canvasXY (area, pt) {\n return {\n x: area.x + pt.x * area.w,\n y: area.y + pt.y * area.h\n }\n}\n\nlet orderPtSize = 7\nif (!screenIsBig()) orderPtSize = 4\n\nfunction orderPlotter (e) {\n if (e.seriesIndex !== 0) return\n\n const area = e.plotArea\n const ctx = e.drawingContext\n\n // let buyColor, sellColor\n const [buyColor, sellColor] = e.dygraph.getColors()\n\n const [buys, sells] = e.allSeriesPoints\n ctx.lineWidth = 1\n ctx.strokeStyle = darkEnabled() ? 'black' : 'white'\n for (let i = 0; i < buys.length; i++) {\n const buy = buys[i]\n const sell = sells[i]\n if (buy) {\n ctx.fillStyle = buyColor\n drawOrderPt(ctx, canvasXY(area, buy))\n }\n if (sell) {\n ctx.fillStyle = sellColor\n drawOrderPt(ctx, canvasXY(area, sell))\n }\n }\n}\n\nconst greekCapDelta = String.fromCharCode(916)\n\nfunction depthLegendPlotter (e) {\n const tokens = e.dygraph.getOption('tokens')\n const stats = e.dygraph.getOption('stats')\n\n const area = e.plotArea\n const ctx = e.drawingContext\n\n const dark = darkEnabled()\n const big = screenIsBig()\n const mg = e.dygraph.toDomCoords(stats.midGap, 0)\n const midGap = makePt(mg[0], mg[1])\n const fontSize = big ? 15 : 13\n ctx.textAlign = 'left'\n ctx.textBaseline = 'top'\n ctx.font = `${fontSize}px arial`\n ctx.lineWidth = 1\n ctx.strokeStyle = chartStroke\n const boxColor = dark ? '#2228' : '#fff8'\n\n const midGapPrice = humanize.threeSigFigs(stats.midGap)\n const deltaPctTxt = `${greekCapDelta} : ${humanize.threeSigFigs(stats.gap / stats.midGap * 100)}%`\n const fiatGapTxt = `${humanize.threeSigFigs(stats.gap * btcPrice)} ${fiatCode}`\n const btcGapTxt = `${humanize.threeSigFigs(stats.gap)} USD`\n let boxW = 0\n const txts = [fiatGapTxt, btcGapTxt, deltaPctTxt, midGapPrice]\n txts.forEach(txt => {\n const w = ctx.measureText(txt).width\n if (w > boxW) boxW = w\n })\n let rowHeight = fontSize * 1.5\n const rowPad = big ? (rowHeight - fontSize) / 2 : (rowHeight - fontSize) / 3\n const boxPad = big ? rowHeight / 3 : rowHeight / 5\n let x\n let y = big ? fontSize * 2 : fontSize\n\n // If it's an aggregated chart, start with a color legend\n if (tokens) {\n // If this is an aggregated chart, draw the color legend first\n const ptSize = fontSize / 3\n let legW = 0\n tokens.forEach(token => {\n const w = ctx.measureText(token).width + rowHeight// leave space for dot\n if (w > legW) legW = w\n })\n x = midGap.x - legW / 2\n const boxH = rowHeight * tokens.length\n ctx.fillStyle = boxColor\n const rect = makePt(x - boxPad, y - boxPad)\n const dims = makePt(legW + boxPad * 4, boxH + boxPad * 2)\n ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n tokens.forEach(token => {\n ctx.fillStyle = getHue(token)\n drawPt(ctx, makePt(x + rowHeight / 2, y + rowHeight / 2 - 1), ptSize)\n ctx.fillStyle = chartStroke\n ctx.fillText(token, x + rowPad + rowHeight, y + rowPad)\n y += rowHeight\n })\n y += boxPad * 3\n x = midGap.x - boxW / 2\n } else {\n y += area.h / 4\n x = midGap.x - boxW / 2 - 25\n }\n // Label the gap size.\n rowHeight -= 2 // just looks better\n ctx.fillStyle = boxColor\n const rect = makePt(x - boxPad, y - boxPad)\n const dims = makePt(boxW + boxPad * 3, rowHeight * 4 + boxPad * 2)\n ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n ctx.fillStyle = chartStroke\n const centerX = x + (boxW / 2)\n const write = s => {\n const cornerX = centerX - (ctx.measureText(s).width / 2)\n ctx.fillText(s, cornerX + rowPad, y + rowPad)\n y += rowHeight\n }\n\n ctx.save()\n ctx.font = `bold ${fontSize}px arial`\n write(midGapPrice)\n ctx.restore()\n write(deltaPctTxt)\n write(fiatGapTxt)\n write(btcGapTxt)\n\n // Draw a line from the box to the gap\n drawLine(ctx,\n makePt(x + boxW / 2, y + boxPad * 2 + boxPad),\n makePt(midGap.x, midGap.y - boxPad))\n}\n\nfunction depthPlotter (e) {\n Dygraph.Plotters.fillPlotter(e)\n const tokens = e.dygraph.getOption('tokens')\n if (tokens && e.dygraph.getOption('stackedGraph')) {\n if (e.seriesIndex === 0 || e.seriesIndex === tokens.length) {\n e.color = chartStroke\n } else {\n e.color = 'transparent'\n }\n fixAggregateStacking(e)\n }\n\n Dygraph.Plotters.linePlotter(e)\n\n // Callout box with color legend\n if (e.seriesIndex === e.allSeriesPoints.length - 1) depthLegendPlotter(e)\n}\n\nlet stickZoom, orderZoom\nlet samePair\nfunction calcStickWindow (start, end, bin) {\n const halfBin = minuteMap[bin] / 2\n start = new Date(start.getTime())\n end = new Date(end.getTime())\n return [\n start.setMinutes(start.getMinutes() - halfBin),\n end.setMinutes(end.getMinutes() + halfBin)\n ]\n}\n\nlet exchangeStateMap\n\nexport default class extends Controller {\n static get targets () {\n return ['chartSelect', 'exchanges', 'bin', 'chart', 'legend', 'conversion',\n 'xcName', 'xcLogo', 'actions', 'sticksOnly', 'depthOnly', 'chartLoader',\n 'xcRow', 'xcIndex', 'price', 'age', 'ageSpan', 'link', 'aggOption',\n 'aggStack', 'zoom', 'chainTypeSelected', 'exchangeBtnArea', 'pairSelect',\n 'pairSelectorArea', 'fiatLabel']\n }\n\n async connect () {\n this.isHomepage = !window.location.href.includes('/market')\n this.chainType = this.data.get('chainType')\n if (!this.chainType || this.chainType === '') {\n this.chainType = 'dcr'\n }\n globalChainType = this.chainType\n this.setExchaneLinks()\n this.query = new TurboQuery()\n settings = TurboQuery.nullTemplate(['chart', 'xc', 'bin', 'xcs', 'pair'])\n this.exchangesButtons = this.exchangesTarget.querySelectorAll('button')\n const _this = this\n if (!this.isHomepage) {\n this.query.update(settings)\n } else {\n settings.chart = 'history'\n let hasBinance = false\n this.exchangesButtons.forEach(button => {\n if (button.name === 'binance') {\n hasBinance = true\n settings.xc = button.name\n settings.xcs = button.name\n settings.bin = '1mo'\n }\n if (!hasBinance) {\n const defaultOption = _this.exchangesButtons[0]\n settings.xc = defaultOption.name\n settings.xcs = defaultOption.name\n settings.bin = '1d'\n }\n })\n }\n this.initMutilchainExchangeStates()\n this.processors = {\n orders: this.processOrders,\n candlestick: this.processCandlesticks,\n history: this.processHistory,\n xchistory: this.processXcsHistory,\n depth: this.processDepth.bind(this),\n volume: this.processVolume,\n xcvolume: this.processXcsVolume\n }\n commonChartOpts.labelsDiv = this.legendTarget\n this.converted = false\n btcPrice = parseFloat(this.conversionTarget.dataset.factor)\n fiatCode = this.conversionTarget.dataset.code\n this.binButtons = this.binTarget.querySelectorAll('button')\n this.lastUrl = null\n this.zoomButtons = this.zoomTarget.querySelectorAll('button')\n this.zoomCallback = this._zoomCallback.bind(this)\n availableCandlesticks = {}\n availableDepths = []\n this.exchangeOptions = []\n\n for (let i = 0; i < this.exchangesButtons.length; i++) {\n const option = this.exchangesButtons[i]\n this.exchangeOptions.push(option)\n if (option.dataset.sticks) {\n availableCandlesticks[option.name] = option.dataset.bins.split(';')\n }\n if (option.dataset.depth) availableDepths.push(option.name)\n }\n availableDepths.push('btc_aggregated')\n this.chartOptions = []\n const opts = this.chartSelectTarget.options\n for (let i = 0; i < opts.length; i++) {\n this.chartOptions.push(opts[i])\n }\n\n if (settings.chart == null) {\n settings.chart = depth\n }\n if (settings.pair == null) {\n settings.pair = 'usdt'\n }\n this.pairSelectTarget.value = settings.pair\n if (settings.xc == null) {\n settings.xc = usesOrderbook(settings.chart) ? aggregatedKey : 'binance'\n }\n if (settings.stack) {\n settings.stack = parseInt(settings.stack)\n if (settings.stack === 0) aggStacking = false\n }\n if (settings.bin == null) {\n settings.bin = anHour\n }\n // if chart is history, set to xcs\n if ((settings.chart === 'history' || settings.chart === 'volume') && (!settings.xcs || settings.xcs === null)) {\n settings.xcs = settings.xc\n }\n this.handlerExchangesDisplay()\n this.setButtons()\n this.setExchangeName()\n this.resize = this._resize.bind(this)\n window.addEventListener('resize', this.resize)\n this.tabVis = this._tabVis.bind(this)\n document.addEventListener(visibilityChange, this.tabVis)\n this.processNightMode = this._processNightMode.bind(this)\n globalEventBus.on('NIGHT_MODE', this.processNightMode)\n this.processXcUpdate = this._processXcUpdate.bind(this)\n globalEventBus.on('EXCHANGE_UPDATE', this.processXcUpdate)\n if (darkEnabled()) chartStroke = darkStroke\n this.setNameDisplay()\n this.fetchInitialData()\n }\n\n async initMutilchainExchangeStates () {\n const url = '/api/chainchart/exchanges'\n if (exchangeStateMap !== undefined) {\n return\n }\n const response = await requestJSON(url)\n exchangeStateMap = {}\n response.forEach((chainState) => {\n exchangeStateMap[chainState.chain_type] = chainState.exchanges\n })\n }\n\n setExchaneLinks () {\n this.exchangeLinks = {\n binance: 'https://www.binance.com/en/trade/' + this.chainType.toUpperCase() + '_USDT',\n btc_binance: 'https://www.binance.com/en/trade/' + this.chainType.toUpperCase() + '_BTC',\n bittrex: 'https://bittrex.com/Market/Index?MarketName=USD-' + this.chainType.toUpperCase(),\n poloniex: 'https://poloniex.com/exchange#usd_' + this.chainType,\n dragonex: 'https://dragonex.io/en-us/trade/index/' + this.chainType + '_usd',\n huobi: 'https://www.hbg.com/en-us/exchange/?s=' + this.chainType + '_usd',\n dcrdex: 'https://dex.decred.org',\n kucoin: 'https://www.kucoin.com/vi/trade/' + this.chainType.toUpperCase() + '-USDT',\n gemini: 'https://exchange.gemini.com/trade/' + this.chainType.toUpperCase() + 'USD',\n coinex: 'https://www.coinex.com/en/exchange/' + this.chainType.toUpperCase() + '-USDT',\n btc_coinex: 'https://www.coinex.com/en/exchange/dcr-btc'\n }\n }\n\n chainTypeChange (e) {\n if (e.target.name === this.chainType) {\n return\n }\n const target = e.srcElement || e.target\n this.chainTypeSelectedTargets.forEach((cTypeTarget) => {\n cTypeTarget.classList.remove('active')\n })\n target.classList.add('active')\n this.chainType = e.target.name\n // reload data\n globalChainType = this.chainType\n this.updateOptions()\n this.handlerExchangesDisplay()\n this.setButtons()\n this.setExchaneLinks()\n this.setExchangeName()\n orderZoom = undefined\n this.fetchChart()\n }\n\n updateOptions () {\n const _this = this\n if (!exchangeStateMap) {\n return\n }\n const volumnedExchanges = exchangeStateMap[this.chainType]\n // if is top page, update exchange options\n let selectOptions = ''\n const exchangeBefore = this.getSelectedExchanges()\n const selectedExchange = []\n if (volumnedExchanges && volumnedExchanges.length > 0) {\n for (let i = 0; i < volumnedExchanges.length; i++) {\n const exchange = volumnedExchanges[i]\n if (exchange.State) {\n selectOptions += `<button name=\"${exchange.Token}\" ${exchange.State.candlesticks ? `data-sticks=\"1\" data-bins=\"${exchange.State.sticks}\"` : ''} ${exchange.State.depth ? 'data-depth=\"1\"' : ''} ` +\n `class=\"tab-button home-chart-toggle-btn white c-txt-main\">${_this.getExchangeDispName(exchange.Token)}</button>`\n if (exchangeBefore.includes(exchange.Token)) {\n selectedExchange.push(exchange.Token)\n }\n }\n }\n selectOptions += '<button name=\"aggregated\" data-chainmarket-target=\"aggOption\" data-depth=\"1\" ' +\n 'class=\"tab-button home-chart-toggle-btn white c-txt-main\">Aggregated</button>'\n this.exchangeBtnAreaTarget.innerHTML = selectOptions\n this.exchangesButtons = this.exchangesTarget.querySelectorAll('button')\n availableCandlesticks = {}\n availableDepths = []\n this.exchangeOptions = []\n for (let i = 0; i < this.exchangesButtons.length; i++) {\n const option = this.exchangesButtons[i]\n this.exchangeOptions.push(option)\n if (option.dataset.sticks) {\n availableCandlesticks[option.name] = option.dataset.bins.split(';')\n }\n if (option.dataset.depth) availableDepths.push(option.name)\n }\n if (this.chainType === 'dcr') {\n availableDepths.push('btc_aggregated')\n }\n const validExchanges = this.isValidExchange(selectedExchange)\n const isValidExchanges = validExchanges.length > 0\n // set current exchange\n if (isValidExchanges) {\n this.setActiveExchanges(validExchanges)\n } else {\n this.setActiveExchanges(this.getFirstExchangeButton(settings.pair === 'btc' && this.chainType === 'dcr'))\n this.changeExchangeSetting()\n }\n }\n }\n\n isValidExchange (selectedExchanges) {\n const res = []\n for (let i = 0; i < this.exchangesButtons.length; i++) {\n const exBtn = this.exchangesButtons[i]\n if (selectedExchanges.indexOf(exBtn) >= 0 && !exBtn.classList.contains('d-hide') && !exBtn.classList.contains('d-none')) {\n res.push(exBtn)\n }\n }\n return res\n }\n\n handlerRadiusForBtnGroup (btnGroup) {\n let firstSetted = false; let lastSetted = false\n for (let i = 0; i < btnGroup.length; i++) {\n const btn = btnGroup[i]\n if (!firstSetted && !btn.classList.contains('d-hide') && !btn.classList.contains('d-none')) {\n btn.classList.add('first-toggle-btn')\n firstSetted = true\n } else {\n btn.classList.remove('first-toggle-btn')\n }\n const lastBtn = btnGroup[btnGroup.length - i - 1]\n if (!lastSetted && !lastBtn.classList.contains('d-hide') && !lastBtn.classList.contains('d-none')) {\n lastBtn.classList.add('last-toggle-btn')\n lastSetted = true\n } else {\n lastBtn.classList.remove('last-toggle-btn')\n }\n }\n }\n\n setActiveExchanges (activeExchanges) {\n this.exchangesButtons.forEach(exchangeBtn => {\n if (activeExchanges.includes(exchangeBtn.name)) {\n exchangeBtn.classList.add('active')\n } else if (exchangeBtn.classList.contains('active')) {\n exchangeBtn.classList.remove('active')\n }\n })\n }\n\n getSelectedExchanges () {\n const activeExchanges = []\n this.exchangesButtons.forEach(button => {\n if (button.classList.contains('active')) {\n activeExchanges.push(button.name)\n }\n })\n return activeExchanges\n }\n\n disconnect () {\n responseCache = {}\n window.removeEventListener('resize', this.resize)\n document.removeEventListener(visibilityChange, this.tabVis)\n globalEventBus.off('NIGHT_MODE', this.processNightMode)\n globalEventBus.off('EXCHANGE_UPDATE', this.processXcUpdate)\n }\n\n _resize () {\n if (this.graph) {\n orderPtSize = screenIsBig() ? 7 : 4\n this.graph.resize()\n }\n this.setNameDisplay()\n }\n\n setNameDisplay () {\n if (screenIsBig()) {\n this.xcNameTarget.classList.remove('d-hide')\n } else {\n this.xcNameTarget.classList.add('d-hide')\n }\n }\n\n _tabVis () {\n focused = !document[hidden]\n if (focused && refreshAvailable) this.refreshChart()\n }\n\n async fetchInitialData () {\n Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n const dummyGraph = new Dygraph(document.createElement('div'), [[0, 1]], { labels: ['', ''] })\n\n // A little hack to start with the default interaction model. Updating the\n // interactionModel with updateOptions later does not appear to work.\n const model = dummyGraph.getOption('interactionModel')\n model.mousedown = (event, g, context) => {\n // End panning even if the mouseup event is not on the chart.\n const mouseup = () => {\n context.isPanning = false\n document.removeEventListener('mouseup', mouseup)\n }\n document.addEventListener('mouseup', mouseup)\n context.initializeMouseDown(event, g, context)\n Dygraph.startPan(event, g, context)\n }\n model.mouseup = (event, g, context) => {\n if (!context.isPanning) return\n Dygraph.endPan(event, g, context)\n context.isPanning = false // I think Dygraph is supposed to set this, but they don't.\n const zoomCallback = g.getOption('zoomCallback')\n if (zoomCallback) {\n const range = g.xAxisRange()\n zoomCallback(range[0], range[1], g.yAxisRanges())\n }\n }\n model.mousemove = (event, g, context) => {\n if (!context.isPanning) return\n Dygraph.movePan(event, g, context)\n }\n commonChartOpts.interactionModel = model\n\n this.graph = new Dygraph(this.chartTarget, [[0, 0], [0, 1]], commonChartOpts)\n this.fetchChart()\n }\n\n async changePair (e) {\n const target = e.target || e.srcElement\n settings.pair = target.value\n this.handlerExchangesDisplay()\n this.setButtons()\n this.setExchangeName()\n await this.fetchChart()\n samePair = false\n if (usesOrderbook(settings.chart)) {\n this.setZoomPct(defaultZoomPct)\n samePair = true\n const stats = this.graph.getOption('stats')\n const spread = stats.midGap * defaultZoomPct / 100\n this.graph.updateOptions({ dateWindow: [stats.midGap - spread, stats.midGap + spread] })\n }\n }\n\n handlerExchangesDisplay () {\n const isBTCPair = settings.pair === 'btc' && this.chainType === 'dcr'\n this.exchangesButtons.forEach(button => {\n if (isBTCPair) {\n this.fiatLabelTarget.textContent = this.chainType.toUpperCase() + '/BTC'\n if (useBTCPair(button.name)) {\n button.classList.remove('d-hide')\n } else if (useUSDPair(button.name)) {\n button.classList.add('d-hide')\n }\n } else {\n this.fiatLabelTarget.textContent = this.chainType.toUpperCase() + '/USDT'\n if (useBTCPair(button.name)) {\n button.classList.add('d-hide')\n } else if (useUSDPair(button.name)) {\n button.classList.remove('d-hide')\n }\n }\n })\n this.reorderExchanges()\n for (let i = 0; i < this.xcRowTargets.length; i++) {\n const xcRow = this.xcRowTargets[i]\n const token = xcRow.dataset.token\n if (token === 'aggregated') {\n continue\n }\n if (isBTCPair) {\n if (useBTCPair(token)) {\n xcRow.classList.remove('d-hide')\n } else if (useUSDPair(token)) {\n xcRow.classList.add('d-hide')\n }\n } else {\n if (useBTCPair(token)) {\n xcRow.classList.add('d-hide')\n } else if (useUSDPair(token)) {\n xcRow.classList.remove('d-hide')\n }\n }\n }\n }\n\n containExchange (exchange) {\n for (let i = 0; i < this.exchangesButtons.length; i++) {\n const exBtn = this.exchangesButtons[i]\n if (exBtn.name === exchange && !exBtn.classList.contains('d-hide') && !exBtn.classList.contains('d-none')) {\n return true\n }\n }\n return false\n }\n\n reorderExchanges () {\n const isBTCPair = settings.pair === 'btc' && this.chainType === 'dcr'\n const activeExchange = this.getSelectedExchanges()\n const afterActiveExchange = []\n const _this = this\n if (settings.chart === 'history' || settings.chart === 'volume') {\n if (activeExchange.length > 0) {\n activeExchange.forEach((activeEx) => {\n if (activeEx !== aggregatedKey && ((isBTCPair && useBTCPair(activeEx)) || (!isBTCPair && useUSDPair(activeEx))) && _this.containExchange(activeEx)) {\n afterActiveExchange.push(activeEx)\n }\n })\n }\n if (afterActiveExchange.length <= 0) {\n afterActiveExchange.push(_this.getFirstExchangeButton(isBTCPair))\n }\n settings.xcs = afterActiveExchange.join(',')\n } else {\n if (activeExchange.length <= 0) {\n afterActiveExchange.push(usesOrderbook(settings.chart) ? aggregatedKey : _this.getFirstExchangeButton(isBTCPair))\n } else {\n const exc = activeExchange[0]\n if ((isBTCPair && useBTCPair(exc)) || (!isBTCPair && useUSDPair(exc))) {\n afterActiveExchange.push(exc)\n } else {\n afterActiveExchange.push(_this.getFirstExchangeButton(isBTCPair))\n }\n }\n if (afterActiveExchange.length > 0) {\n settings.xc = afterActiveExchange.join(',')\n }\n }\n }\n\n getXcLogo (xc) {\n if (xc.startsWith('btc_')) {\n return xc.replaceAll('btc_', '')\n }\n return xc\n }\n\n getFirstExchangeButton (isBTCPair) {\n let firstBtn = this.exchangesButtons[0].name\n for (let i = 0; i < this.exchangesButtons.length; i++) {\n const exBtn = this.exchangesButtons[i]\n if (!exBtn.classList.contains('d-hide') && !exBtn.classList.contains('d-none') && ((isBTCPair && useBTCPair(exBtn.name)) || (!isBTCPair && useUSDPair(exBtn.name)))) {\n firstBtn = exBtn.name\n break\n }\n }\n return firstBtn\n }\n\n async fetchChart (isRefresh) {\n let url\n requestCounter++\n const thisRequest = requestCounter\n let bin = settings.bin\n let xc = settings.xc\n if (this.chainType === 'dcr' && xc === 'aggregated' && settings.pair === 'btc') {\n xc = 'btc_' + xc\n }\n const chart = settings.chart\n const oldZoom = this.graph.xAxisRange()\n const _this = this\n if (usesCandlesticks(chart)) {\n if (settings.chart !== 'history' && settings.chart !== 'volume') {\n if (!(xc in availableCandlesticks)) {\n console.warn('invalid candlestick exchange:', xc)\n return\n }\n if (availableCandlesticks[xc].indexOf(bin) === -1) {\n console.warn('invalid bin:', bin)\n bin = _this.setLastBin(xc)\n }\n }\n url = `/api/chainchart/${this.chainType}/market/${xc}/candlestick/${bin}`\n } else if (usesOrderbook(chart)) {\n if (!validDepthExchange(xc)) {\n console.warn('invalid depth exchange:', xc)\n return\n }\n url = `/api/chainchart/${this.chainType}/market/${xc}/depth`\n }\n if (!url) {\n console.warn('invalid chart:', chart)\n return\n }\n\n this.chartLoaderTarget.classList.add('loading')\n let response\n const xcResponseMap = new Map()\n if (settings.chart === 'history' || settings.chart === 'volume') {\n const xcs = settings.xcs && settings.xcs !== null ? settings.xcs : settings.xc\n const xcList = xcs.split(',')\n if (xcList.length > 0) {\n for (let i = 0; i < xcList.length; i++) {\n if (xcList[i].trim() === '') {\n continue\n }\n const itemXc = xcList[i].trim()\n if (!(itemXc in availableCandlesticks)) {\n console.warn('invalid candlestick exchange: ', xc)\n continue\n }\n if (availableCandlesticks[itemXc].indexOf(bin) === -1) {\n console.warn('invalid bin:', bin)\n bin = _this.setLastBin(itemXc)\n }\n const xcUrl = `/api/chainchart/${this.chainType}/market/${xcList[i]}/candlestick/${bin}`\n let xcResponse\n if (hasCache(xcUrl)) {\n xcResponse = responseCache[xcUrl]\n } else {\n // response = await axios.get(url)\n xcResponse = await requestJSON(xcUrl)\n responseCache[xcUrl] = xcResponse\n }\n xcResponseMap.set(xcList[i], xcResponse)\n }\n if (thisRequest !== requestCounter) {\n // new request was issued while waiting.\n this.chartLoaderTarget.classList.remove('loading')\n return\n }\n }\n } else {\n if (hasCache(url)) {\n response = responseCache[url]\n } else {\n // response = await axios.get(url)\n response = await requestJSON(url)\n responseCache[url] = response\n if (thisRequest !== requestCounter) {\n // new request was issued while waiting.\n this.chartLoaderTarget.classList.remove('loading')\n return\n }\n }\n }\n // Fiat conversion only available for order books for now.\n if (usesOrderbook(chart)) {\n this.ageSpanTarget.dataset.age = response.data.time\n this.ageSpanTarget.textContent = humanize.timeSince(response.data.time)\n this.ageTarget.classList.remove('d-hide')\n } else {\n this.ageTarget.classList.add('d-hide')\n }\n this.graph.updateOptions(chartResetOpts, true)\n if (settings.chart === 'history') {\n this.graph.updateOptions(this.processors.xchistory(xcResponseMap))\n } else if (settings.chart === 'volume') {\n this.graph.updateOptions(this.processors.xcvolume(xcResponseMap))\n } else {\n this.graph.updateOptions(this.processors[chart](response))\n }\n if (!this.isHomepage) {\n this.query.replace(settings)\n }\n if (isRefresh) this.graph.updateOptions({ dateWindow: oldZoom })\n else this.resetZoom()\n this.chartLoaderTarget.classList.remove('loading')\n this.lastUrl = url\n refreshAvailable = false\n }\n\n setLastBin (xc) {\n const availBins = usesOrderbook(settings.chart) ? availableDepths[xc] : availableCandlesticks[xc]\n for (let i = this.binButtons.length - 1; i >= 0; i--) {\n const button = this.binButtons[i]\n if (!button.classList.contains('d-hide') && !button.classList.contains('d-none') && availBins.indexOf(button.name)) {\n settings.bin = button.name\n this.setBinSelection()\n return button.name\n }\n }\n return ''\n }\n\n getExchangeDispName (token) {\n switch (token) {\n case 'dcrdex':\n return 'dex.decred.org'\n default:\n return this.upperFirstCase(token)\n }\n }\n\n upperFirstCase (token) {\n return token.charAt(0).toUpperCase() + token.slice(1)\n }\n\n processCandlesticks (response) {\n const halfDuration = minuteMap[settings.bin] / 2\n const data = response.sticks.map(stick => {\n const t = new Date(stick.start)\n t.setMinutes(t.getMinutes() + halfDuration)\n return [t, stick.open, stick.close, stick.high, stick.low]\n })\n if (data.length === 0) return\n // limit to 50 points to start. Too many candlesticks = bad.\n let start = data[0][0]\n if (data.length > 50) {\n start = data[data.length - 50][0]\n }\n stickZoom = calcStickWindow(start, data[data.length - 1][0], settings.bin)\n return {\n file: data,\n labels: ['time', 'open', 'close', 'high', 'low'],\n xlabel: 'Time',\n ylabel: 'Price (USD)',\n plotter: candlestickPlotter,\n axes: {\n x: {\n axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n }\n }\n }\n\n processXcsHistory (responseMap) {\n const labels = ['time']\n const colors = []\n const timeArray = []\n const timeDataMap = new Map()\n xcColors[0] = chartStroke\n let index = 0\n for (const [key, value] of responseMap) {\n labels.push(key.charAt(0).toUpperCase() + key.slice(1))\n colors.push(xcColors[index])\n value.sticks.map(stick => {\n const time = new Date(stick.start)\n if (key === 'huobi' && settings.bin !== '1h') {\n time.setTime(time.getTime() + (8 * 60 * 60 * 1000))\n }\n if (settings.bin === '1mo') {\n time.setHours(0, 0, 0, 0)\n time.setDate(15)\n } else if (settings.bin === '1d') {\n time.setHours(0, 0, 0, 0)\n } else if (settings.bin === '1h') {\n time.setMinutes(30, 0, 0)\n }\n const avg = (stick.open + stick.close + stick.high + stick.low) / 4\n // check time exist\n if (!timeArray.some(tmpTime => tmpTime === time.getTime())) {\n timeArray.push(time.getTime())\n }\n // check exist on data map\n const timeInt = time.getTime()\n let dataArr\n if (timeDataMap.has(timeInt)) {\n dataArr = timeDataMap.get(timeInt)\n dataArr[index] = avg\n } else {\n dataArr = []\n for (let i = 0; i < responseMap.size; i++) {\n dataArr.push(0)\n }\n dataArr[index] = avg\n }\n timeDataMap.set(timeInt, dataArr)\n })\n index++\n }\n\n timeArray.sort(function (time1, time2) {\n if (time1 > time2) {\n return 1\n } else if (time1 < time2) {\n return -1\n }\n return 0\n })\n // remove all has zero value item\n const resArray = []\n timeArray.forEach((time) => {\n if (timeDataMap.has(time)) {\n const dataArray = timeDataMap.get(time)\n // check has zero data\n let hasZero = false\n dataArray.forEach((val) => {\n if (!val || val <= 0) {\n hasZero = true\n }\n })\n if (!hasZero) {\n resArray.push(time)\n }\n }\n })\n return {\n file: resArray.map(time => {\n if (timeDataMap.has(time)) {\n const dataArray = timeDataMap.get(time)\n const res = []\n res.push(new Date(time))\n res.push(...dataArray)\n return res\n }\n const res = []\n res.push(new Date(time))\n for (let i = 0; i < labels.length - 1; i++) {\n res.push(0)\n }\n return res\n }),\n labels: labels,\n xlabel: 'Time',\n ylabel: 'Price (USD)',\n colors: colors,\n plotter: Dygraph.Plotters.linePlotter,\n axes: {\n x: {\n axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n },\n strokeWidth: 2\n }\n }\n\n processHistory (response) {\n const halfDuration = minuteMap[settings.bin] / 2\n return {\n file: response.sticks.map(stick => {\n const t = new Date(stick.start)\n t.setMinutes(t.getMinutes() + halfDuration)\n // Not sure what the best way to reduce a candlestick to a single number\n // Trying this simple approach for now.\n const avg = (stick.open + stick.close + stick.high + stick.low) / 4\n return [t, avg]\n }),\n labels: ['time', 'price'],\n xlabel: 'Time',\n ylabel: 'Price (USD)',\n colors: [chartStroke],\n plotter: Dygraph.Plotters.linePlotter,\n axes: {\n x: {\n axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n },\n strokeWidth: 3\n }\n }\n\n processVolume (response) {\n const halfDuration = minuteMap[settings.bin] / 2\n return {\n file: response.sticks.map(stick => {\n const t = new Date(stick.start)\n t.setMinutes(t.getMinutes() + halfDuration)\n return [t, stick.volume]\n }),\n labels: ['time', 'volume'],\n xlabel: 'Time',\n ylabel: 'Volume (' + globalChainType.toUpperCase() + ` / ${prettyDurations[settings.bin]})`,\n colors: [chartStroke],\n plotter: Dygraph.Plotters.linePlotter,\n axes: {\n x: {\n axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n },\n strokeWidth: 3\n }\n }\n\n processXcsVolume (responseMap) {\n const labels = ['time']\n const colors = []\n const timeArray = []\n const timeDataMap = new Map()\n let index = 0\n xcColors[0] = chartStroke\n for (const [key, value] of responseMap) {\n labels.push(key.charAt(0).toUpperCase() + key.slice(1))\n colors.push(xcColors[index])\n value.sticks.map(stick => {\n const time = new Date(stick.start)\n if (key === 'huobi' && settings.bin !== '1h') {\n time.setTime(time.getTime() + (8 * 60 * 60 * 1000))\n }\n if (settings.bin === '1mo') {\n time.setHours(0, 0, 0, 0)\n time.setDate(15)\n } else if (settings.bin === '1d') {\n time.setHours(0, 0, 0, 0)\n } else if (settings.bin === '1h') {\n time.setMinutes(30, 0, 0)\n }\n const vol = stick.volume\n // check time exist\n if (!timeArray.some(tmpTime => tmpTime === time.getTime())) {\n timeArray.push(time.getTime())\n }\n // check exist on data map\n const timeInt = time.getTime()\n let dataArr\n if (timeDataMap.has(timeInt)) {\n dataArr = timeDataMap.get(timeInt)\n dataArr[index] = vol\n } else {\n dataArr = []\n for (let i = 0; i < responseMap.size; i++) {\n dataArr.push(0)\n }\n dataArr[index] = vol\n }\n timeDataMap.set(timeInt, dataArr)\n })\n index++\n }\n timeArray.sort(function (time1, time2) {\n if (time1 > time2) {\n return 1\n } else if (time1 < time2) {\n return -1\n }\n return 0\n })\n // remove all has zero value item\n const resArray = []\n timeArray.forEach((time) => {\n if (timeDataMap.has(time)) {\n const dataArray = timeDataMap.get(time)\n // check has zero data\n let hasZero = false\n dataArray.forEach((val) => {\n if (!val || val <= 0) {\n hasZero = true\n }\n })\n if (!hasZero) {\n resArray.push(time)\n }\n }\n })\n return {\n file: resArray.map(time => {\n if (timeDataMap.has(time)) {\n const dataArray = timeDataMap.get(time)\n const res = []\n res.push(new Date(time))\n res.push(...dataArray)\n return res\n }\n const res = []\n res.push(new Date(time))\n for (let i = 0; i < labels.length - 1; i++) {\n res.push(0)\n }\n return res\n }),\n labels: labels,\n xlabel: 'Time',\n ylabel: 'Volume (' + globalChainType.toUpperCase() + ` / ${prettyDurations[settings.bin]})`,\n colors: colors,\n plotter: Dygraph.Plotters.linePlotter,\n axes: {\n x: {\n axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n },\n strokeWidth: 2\n }\n }\n\n processDepth (response) {\n if (response.tokens) {\n return this.processAggregateDepth(response)\n }\n const data = processOrderbook(response, translateDepthSide)\n return {\n labels: ['price', 'cumulative sell', 'cumulative buy'],\n file: data.pts,\n fillGraph: true,\n colors: ['#ed6d47', '#41be53'],\n xlabel: `Price (${this.converted ? fiatCode : 'USD'})`,\n ylabel: 'Volume (' + globalChainType.toUpperCase() + ')',\n tokens: null,\n stats: data.stats,\n plotter: depthPlotter, // Don't use Dygraph.linePlotter here. fillGraph won't work.\n zoomCallback: this.zoomCallback,\n axes: {\n x: {\n axisLabelFormatter: convertedThreeSigFigs,\n valueFormatter: convertedEightDecimals\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n }\n }\n }\n\n processAggregateDepth (response) {\n // Re-order the data so that deepest books are first.\n reorderAggregateData(response)\n const tokens = response.tokens\n const data = processOrderbook(response, translateAggregatedDepthSide)\n const xcCount = tokens.length\n const keys = sizedArray(xcCount * 2 + 1, null)\n keys[0] = 'price'\n const colors = sizedArray(xcCount * 2, null)\n for (let i = 0; i < xcCount; i++) {\n const token = tokens[i]\n const color = getHue(token)\n keys[i + 1] = ` ${token} sell`\n keys[xcCount + i + 1] = ` ${token} buy`\n colors[i] = color\n colors[xcCount + i] = color\n }\n return {\n labels: keys,\n file: data.pts,\n colors: colors,\n xlabel: `Price (${this.converted ? fiatCode : 'USD'})`,\n ylabel: 'Volume (' + globalChainType.toUpperCase() + ')',\n plotter: depthPlotter,\n fillGraph: aggStacking,\n stackedGraph: aggStacking,\n tokens: tokens,\n stats: data.stats,\n dupes: data.dupes,\n zoomCallback: this.zoomCallback,\n axes: {\n x: {\n axisLabelFormatter: convertedThreeSigFigs,\n valueFormatter: convertedEightDecimals\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n }\n }\n }\n\n processOrders (response) {\n const data = processOrderbook(response, response.tokens ? translateAggregatedOrderbookSide : translateOrderbookSide)\n return {\n labels: ['price', 'sell', 'buy'],\n file: data.pts,\n colors: ['#f93f39cc', '#1acc84cc'],\n xlabel: `Price (${this.converted ? fiatCode : 'USD'})`,\n ylabel: 'Volume (' + globalChainType.toUpperCase() + ')',\n plotter: orderPlotter,\n axes: {\n x: {\n axisLabelFormatter: convertedThreeSigFigs\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n },\n stats: data.stats,\n strokeWidth: 0,\n drawPoints: true,\n logscale: true,\n xRangePad: 15,\n yRangePad: 15\n }\n }\n\n justifyBins () {\n let bins = []\n if (settings.chart === 'history' || settings.chart === 'volume') {\n if (!settings.xcs || settings.xcs === '') {\n settings.xcs = settings.xc === 'aggregated' ? this.exchangesButtons[0].name : settings.xc\n }\n bins = this.getHistoryChartAvailableBins()\n } else {\n if (settings.xc === 'aggregated' && settings.chart === 'candlestick') {\n settings.xc = this.exchangesButtons[0].name\n }\n bins = availableCandlesticks[settings.xc]\n }\n if (bins.indexOf(settings.bin) === -1) {\n settings.bin = bins[0]\n this.setBinSelection()\n }\n }\n\n getHistoryChartAvailableBins () {\n const bins = []\n let xcs = [settings.xc]\n if (settings.xcs && settings.xcs !== '') {\n xcs = settings.xcs.split(',')\n }\n bins.push(...binList)\n xcs.forEach((xc) => {\n const itemBins = availableCandlesticks[xc]\n for (let i = bins.length - 1; i >= 0; i--) {\n if (itemBins.indexOf(bins[i]) < 0) {\n bins.splice(i, 1)\n }\n }\n })\n return bins\n }\n\n setButtons () {\n this.chartSelectTarget.value = settings.chart\n let lastExchangeBtn = this.exchangesButtons[0]\n let lastExchangeIndex = 0\n if (this.chainType === 'dcr') {\n this.pairSelectorAreaTarget.classList.remove('d-hide')\n } else {\n this.pairSelectorAreaTarget.classList.add('d-hide')\n }\n this.exchangesButtons.forEach(exchangeBtn => {\n const idx = Number(exchangeBtn.dataset.exchangeindex)\n if (idx > lastExchangeIndex) {\n lastExchangeIndex = idx\n lastExchangeBtn = exchangeBtn\n }\n })\n const xsList = settings.chart === 'history' || settings.chart === 'volume' ? settings.xcs.split(',') : settings.xc.split(',')\n this.setActiveExchanges(xsList)\n if (usesOrderbook(settings.chart)) {\n this.binTarget.classList.add('d-hide')\n this.zoomTarget.classList.remove('d-hide')\n this.aggOptionTarget.classList.remove('d-hide')\n lastExchangeBtn.classList.remove('last-toggle-btn')\n } else {\n this.binTarget.classList.remove('d-hide')\n this.aggOptionTarget.classList.add('d-hide')\n lastExchangeBtn.classList.add('last-toggle-btn')\n this.zoomTarget.classList.add('d-hide')\n let bins\n if (settings.chart === 'history' || settings.chart === 'volume') {\n bins = this.getHistoryChartAvailableBins()\n } else {\n bins = availableCandlesticks[settings.xc]\n }\n let lastBinIndex = 0\n let firstBinIndex = binList.length\n bins.forEach((bin) => {\n const indexOfBin = binList.indexOf(bin)\n if (indexOfBin >= 0) {\n if (indexOfBin > lastBinIndex) {\n lastBinIndex = indexOfBin\n }\n if (indexOfBin < firstBinIndex) {\n firstBinIndex = indexOfBin\n }\n }\n })\n this.binButtons.forEach(button => {\n if (bins.indexOf(button.name) >= 0) {\n button.classList.remove('d-hide')\n if (button.name === binList[lastBinIndex]) {\n button.classList.add('last-toggle-btn')\n } else {\n button.classList.remove('last-toggle-btn')\n }\n if (button.name === binList[firstBinIndex]) {\n button.classList.add('first-toggle-btn')\n } else {\n button.classList.remove('first-toggle-btn')\n }\n } else {\n button.classList.add('d-hide')\n }\n })\n this.setBinSelection()\n }\n const depthDisabled = !validDepthExchange(settings.xc)\n this.depthOnlyTargets.forEach(option => {\n option.disabled = depthDisabled\n })\n if (settings.xc === aggregatedKey && settings.chart === depth) {\n this.aggStackTarget.classList.remove('d-hide')\n settings.stack = aggStacking ? 1 : 0\n } else {\n this.aggStackTarget.classList.add('d-hide')\n settings.stack = null\n }\n this.handlerRadiusForBtnGroup(this.exchangesButtons)\n this.handlerRadiusForBtnGroup(this.binButtons)\n }\n\n setBinSelection () {\n const bin = settings.bin\n this.binButtons.forEach(button => {\n if (button.name === bin) {\n button.classList.add('active')\n } else {\n button.classList.remove('active')\n }\n })\n }\n\n changeGraph (e) {\n const target = e.target || e.srcElement\n settings.chart = target.value\n if (usesCandlesticks(settings.chart)) {\n this.justifyBins()\n }\n this.reorderExchanges()\n this.setButtons()\n this.setExchangeName()\n this.fetchChart()\n }\n\n changeExchangeSetting () {\n const selectedExchanges = this.getSelectedExchanges().join(',')\n if (settings.chart === 'history' || settings.chart === 'volume') {\n settings.xcs = selectedExchanges\n } else {\n settings.xc = selectedExchanges\n }\n this.setExchangeName()\n if (usesCandlesticks(settings.chart)) {\n if (!availableCandlesticks[settings.xc]) {\n // exchange does not have candlestick data\n // show the depth chart.\n settings.chart = depth\n } else {\n this.justifyBins()\n }\n }\n this.setButtons()\n }\n\n setExchange (e) {\n let node = e.target || e.srcElement\n while (node && node.nodeName !== 'TR') node = node.parentNode\n if (!node || !node.dataset || !node.dataset.token) return\n if (usesCandlesticks(settings.chart) && node.dataset.token === aggregatedKey) {\n return\n }\n this.handlerExchange(node.dataset.token)\n }\n\n changeBin (e) {\n const btn = e.target || e.srcElement\n if (btn.nodeName !== 'BUTTON' || !this.graph) return\n settings.bin = btn.name\n this.justifyBins()\n this.setBinSelection()\n this.fetchChart()\n }\n\n changeExchange (e) {\n const btn = e.target || e.srcElement\n if (btn.nodeName !== 'BUTTON' || !this.graph) return\n this.handlerExchange(btn.name)\n }\n\n handlerExchange (token) {\n if (settings.chart === 'history' || settings.chart === 'volume') {\n const xcs = settings.xcs.split(',')\n if (xcs.indexOf(token) < 0) {\n xcs.push(token)\n } else {\n if (xcs.length > 1) {\n xcs.splice(xcs.indexOf(token), 1)\n } else {\n return\n }\n }\n settings.xcs = xcs.join(',')\n } else {\n if (settings.xc === token) {\n return\n }\n settings.xc = token\n }\n this.setExchangeName()\n if (usesCandlesticks(settings.chart)) {\n if (settings.xc !== 'aggregated') {\n if (!availableCandlesticks[settings.xc]) {\n settings.chart = depth\n }\n }\n this.justifyBins()\n }\n this.setButtons()\n orderZoom = undefined\n this.fetchChart()\n }\n\n resetZoom () {\n if (settings.chart === candlestick) {\n this.graph.updateOptions({ dateWindow: stickZoom })\n } else if (usesOrderbook(settings.chart)) {\n if (orderZoom && samePair) this.graph.updateOptions({ dateWindow: orderZoom })\n else {\n this.setZoomPct(defaultZoomPct)\n samePair = true\n }\n } else {\n this.graph.resetZoom()\n }\n }\n\n refreshChart () {\n refreshAvailable = true\n if (!focused) {\n return\n }\n this.fetchChart(true)\n }\n\n setConversion (e) {\n const btn = e.target || e.srcElement\n if (btn.nodeName !== 'BUTTON' || !this.graph) return\n this.conversionTarget.querySelectorAll('button').forEach(b => b.classList.remove('btn-selected'))\n btn.classList.add('btn-selected')\n let cLabel = 'USD'\n if (e.target.name === 'USD') {\n this.converted = false\n conversionFactor = 1\n } else {\n this.converted = true\n conversionFactor = btcPrice\n cLabel = fiatCode\n }\n this.graph.updateOptions({ xlabel: `Price (${cLabel})` })\n }\n\n setExchangeName () {\n if (settings.chart === 'history' || settings.chart === 'volume') {\n this.xcLogoTarget.classList.add('d-hide')\n this.actionsTarget.classList.add('d-hide')\n // exchange name\n const exchanges = []\n if (settings.xcs) {\n const exStrArr = settings.xcs.split(',')\n exStrArr.forEach((ex) => {\n exchanges.push(ex.charAt(0).toUpperCase() + ex.slice(1))\n })\n }\n this.xcNameTarget.textContent = exchanges.join(',')\n this.xcNameTarget.classList.add('fs-17')\n } else {\n this.xcLogoTarget.classList.remove('d-hide')\n this.xcNameTarget.classList.remove('fs-17')\n this.xcLogoTarget.className = `exchange-logo ${this.getXcLogo(settings.xc)}`\n const prettyName = printName(settings.xc)\n this.xcNameTarget.textContent = prettyName\n const href = this.exchangeLinks[settings.xc]\n if (href) {\n this.linkTarget.href = href\n this.linkTarget.textContent = `Visit ${prettyName}`\n this.actionsTarget.classList.remove('d-hide')\n } else {\n this.actionsTarget.classList.add('d-hide')\n }\n }\n }\n\n _processNightMode (data) {\n if (!this.graph) return\n chartStroke = data.nightMode ? darkStroke : lightStroke\n if (settings.chart === history || settings.chart === volume) {\n this.graph.updateOptions({ colors: [chartStroke] })\n }\n if (settings.chart === orders || settings.chart === depth) {\n this.graph.setAnnotations([])\n }\n }\n\n getExchangeRow (token) {\n const rows = this.xcRowTargets\n for (let i = 0; i < rows.length; i++) {\n const tr = rows[i]\n if (tr.dataset.token === token) {\n const row = {}\n tr.querySelectorAll('td').forEach(td => {\n switch (td.dataset.type) {\n case 'price':\n row.price = td\n break\n case 'volume':\n row.volume = td\n break\n case 'fiat':\n row.fiat = td\n break\n case 'arrow':\n row.arrow = td.querySelector('span')\n break\n }\n })\n return row\n }\n }\n return null\n }\n\n setStacking (e) {\n const btn = e.target || e.srcElement\n if (btn.nodeName !== 'BUTTON' || !this.graph) return\n this.aggStackTarget.querySelectorAll('button').forEach(b => b.classList.remove('btn-selected'))\n btn.classList.add('btn-selected')\n aggStacking = btn.name === 'on'\n this.graph.updateOptions({ stackedGraph: aggStacking, fillGraph: aggStacking })\n }\n\n setZoom (e) {\n const btn = e.target || e.srcElement\n if (btn.nodeName !== 'BUTTON' || !this.graph) return\n this.setZoomPct(parseInt(btn.name))\n const stats = this.graph.getOption('stats')\n const spread = stats.midGap * parseFloat(btn.name) / 100\n this.graph.updateOptions({ dateWindow: [stats.midGap - spread, stats.midGap + spread] })\n }\n\n setZoomPct (pct) {\n this.zoomButtons.forEach(b => {\n if (parseInt(b.name) === pct) b.classList.add('btn-selected')\n else b.classList.remove('btn-selected')\n })\n const stats = this.graph.getOption('stats')\n const spread = stats.midGap * pct / 100\n let low = stats.midGap - spread\n let high = stats.midGap + spread\n const [min, max] = this.graph.xAxisExtremes()\n if (low < min) low = min\n if (high > max) high = max\n orderZoom = [low, high]\n this.graph.updateOptions({ dateWindow: orderZoom })\n }\n\n _zoomCallback (start, end) {\n orderZoom = [start, end]\n this.zoomButtons.forEach(b => b.classList.remove('btn-selected'))\n }\n\n _processXcUpdate (update) {\n const xc = update.updater\n const cType = xc.chain_type\n if (cType !== this.chainType) {\n return\n }\n if (update.fiat) { // btc-fiat exchange update\n this.xcIndexTargets.forEach(span => {\n if (span.dataset.token === xc.token) {\n span.textContent = humanize.commaWithDecimal(xc.price, 2)\n }\n })\n } else { // dcr-btc exchange update\n const row = this.getExchangeRow(xc.token)\n if (!row) {\n return\n }\n if (row.volume) {\n row.volume.textContent = humanize.threeSigFigs(xc.volume)\n }\n if (row.price) {\n row.price.textContent = humanize.threeSigFigs(xc.price)\n }\n if (row.fiat) {\n row.fiat.textContent = (xc.price * update.btc_price).toFixed(2)\n }\n if (xc.change === 0) {\n row.arrow.className = ''\n } else if (xc.change > 0) {\n row.arrow.className = 'dcricon-arrow-up text-green'\n } else {\n row.arrow.className = 'dcricon-arrow-down text-danger'\n }\n }\n // Update the big displayed value and the aggregated row\n const fmtPrice = update.price.toFixed(2)\n this.priceTarget.textContent = fmtPrice\n const aggRow = this.getExchangeRow(aggregatedKey)\n btcPrice = update.btc_price\n if (!aggRow) {\n return\n }\n if (aggRow.price) {\n aggRow.price.textContent = humanize.threeSigFigs(update.price / btcPrice)\n }\n if (aggRow.volume) {\n aggRow.volume.textContent = humanize.threeSigFigs(update.volume)\n }\n if (aggRow.fiat) {\n aggRow.fiat.textContent = fmtPrice\n }\n // Auto-update the chart if it makes sense.\n if (settings.xc !== aggregatedKey && settings.xc !== xc.token) return\n if (settings.xc === aggregatedKey &&\n hasCache(this.lastUrl) &&\n responseCache[this.lastUrl].tokens.indexOf(update.updater) === -1) return\n if (usesOrderbook(settings.chart)) {\n clearCache(this.lastUrl)\n this.refreshChart()\n } else if (usesCandlesticks(settings.chart)) {\n // Only show refresh button if cache is expired\n if (!hasCache(this.lastUrl)) {\n this.refreshChart()\n }\n }\n }\n}\n\nfunction aggregateSums (side, sums, tokens, cutoff) {\n for (const pt of side) {\n if (cutoff(pt.price)) continue\n for (const i in tokens) sums[i][1] += pt.volumes[i]\n }\n}\n\n/*\n * reorderAggregateData reorders the aggregated order book data so that the\n * deepest books are first.\n */\nfunction reorderAggregateData (response) {\n let tokens = response.tokens\n const sums = []\n for (const token of tokens) sums.push([token, 0])\n\n const stats = orderbookStats(response.data.bids, response.data.asks)\n\n aggregateSums(response.data.bids, sums, tokens, v => v < stats.lowCut)\n aggregateSums(response.data.asks, sums, tokens, v => v > stats.highCut)\n\n sums.sort((a, b) => a[1] - b[1])\n\n const idxKey = {}\n for (const i in sums) idxKey[sums[i][0]] = i\n\n const reorder = side => {\n for (const pt of side) {\n const v = []\n for (const i in pt.volumes) v[idxKey[tokens[i]]] = pt.volumes[i]\n pt.volumes = v\n }\n }\n reorder(response.data.bids)\n reorder(response.data.asks)\n\n response.tokens = tokens = sums.map(v => v[0])\n}\n\n/*\n * findAggregateDupes finds price bins in the aggregated depth chart data that\n * have entries on both the buy and sell sides. Dygraphs doesn't handle the\n * duplicates well during drawing, so we will try to clean up the Dygraphs data\n * before passing it to the plotter.\n */\nfunction findAggregateDupes (buys, sells) {\n const dupes = []\n if (sells.length) {\n let sellIdx = 0\n let sellPrice = sells[sellIdx][0]\n\n for (const i in buys) {\n const buyPrice = buys[i][0]\n if (buyPrice < sellPrice) continue\n\n while (buyPrice > sellPrice) {\n sellIdx++\n if (sellIdx >= sells.length) return dupes\n sellPrice = sells[sellIdx][0]\n }\n if (Math.round(buyPrice * 1e8) === Math.round(sellPrice * 1e8)) {\n // Found a duplicate.\n dupes.push({\n price: buyPrice,\n i: buys.length + sellIdx,\n buy: buys[i],\n sell: sells[sellIdx]\n })\n }\n }\n }\n return dupes\n}\n\n/*\n * fixAggregateStacking attempts to correct a Dygraphs limitation where stacked\n * plots don't display right when 1) the data isn't monotionically increasing in\n * price, and 2) there is an exact match on price on the doubled back region.\n */\nfunction fixAggregateStacking (e) {\n if (e.setName.endsWith('buy')) return // only sell sides need fixing\n const dupes = e.dygraph.getOption('dupes')\n if (!dupes || dupes.length === 0) return\n let dupeIdx = 0\n let dupe = dupes[dupeIdx]\n // var dataIdx = e.seriesIndex + 1\n // var accume = 0\n // var accumeStacked = 0\n const pts = e.points\n for (let i = dupe.i; i < pts.length; i++) {\n const pt = pts[i]\n if (dupe && i === dupe.i) {\n // Need to adjust this one. Find a way to find a mapping from value to\n // ratio to canvas position.\n\n // Figure out how much buy order is mistakenly added.\n const misplacedVal = dupe.buy.reduce((acc, v) => { return i === 0 ? acc : acc + v }, 0)\n const subRatio = misplacedVal / e.axis.maxyval\n // Fixing these three values doesn't actually seem to affect the display,\n // but fixing them anyway.\n pt.y += subRatio\n pt.y_stacked += subRatio\n pt.yval_stacked -= misplacedVal\n // This line is the ticket to remove the dark black outline on the spike.\n pt.canvasy += subRatio * e.plotArea.h\n\n // TODO: Figure out how to add in missed accumulation, since the Dygraph\n // bug seems to ignore the actual sell value. Or just dump Dygraphs and\n // use canvas directly.\n // accumeStacked += dupe.sell.reduce((acc, v) => { return i === 0 ? acc : acc + v}, 0)\n // accume += dupe.sell[dataIdx]\n\n dupeIdx++\n if (dupeIdx >= dupes.length) dupe = null\n else dupe = dupes[dupeIdx]\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport mempoolJS from '../vendor/mempool'\nimport humanize from '../helpers/humanize_helper'\n\nexport default class extends Controller {\n static get targets () {\n return ['txCount', 'totalFees', 'txOutCount', 'minFeeRate', 'maxFeeRate', 'transList', 'totalSent', 'bestBlock', 'bestBlockTime', 'lastBlockSize']\n }\n\n initialize () {\n this.chainType = this.data.get('chainType')\n this.wsHostName = this.chainType === 'ltc' ? 'litecoinspace.org' : 'mempool.space'\n }\n\n connect () {\n const { bitcoin: { websocket } } = mempoolJS({\n hostname: this.wsHostName\n })\n this.ws = websocket.initClient({\n options: ['blocks', 'stats', 'mempool-blocks', 'live-2h-chart']\n })\n this.mempoolSocketInit()\n }\n\n disconnect () {\n this.ws.close()\n }\n\n async mempoolSocketInit () {\n const _this = this\n this.ws.addEventListener('message', function incoming ({ data }) {\n const res = JSON.parse(data.toString())\n if (res.mempoolInfo) {\n _this.txCountTarget.innerHTML = humanize.decimalParts(res.mempoolInfo.size, true, 0)\n if (_this.chainType === 'btc') {\n _this.totalFeesTarget.innerHTML = humanize.decimalParts(res.mempoolInfo.total_fee, false, 8, 2)\n }\n }\n if (res['mempool-blocks']) {\n let totalSize = 0\n let ltcTotalFee = 0\n let minFeeRatevB = Number.MAX_VALUE\n let maxFeeRatevB = 0\n res['mempool-blocks'].forEach(memBlock => {\n totalSize += memBlock.blockSize\n if (_this.chainType === 'ltc') {\n ltcTotalFee += memBlock.totalFees\n }\n if (memBlock.feeRange) {\n memBlock.feeRange.forEach(feevB => {\n if (minFeeRatevB > feevB) {\n minFeeRatevB = feevB\n }\n if (maxFeeRatevB < feevB) {\n maxFeeRatevB = feevB\n }\n })\n }\n })\n if (_this.chainType === 'ltc') {\n _this.totalFeesTarget.innerHTML = humanize.decimalParts(ltcTotalFee / 1e8, false, 8, 2)\n }\n _this.minFeeRateTarget.innerHTML = humanize.decimalParts(minFeeRatevB, true, 0)\n _this.maxFeeRateTarget.innerHTML = humanize.decimalParts(maxFeeRatevB, true, 0)\n _this.lastBlockSizeTarget.innerHTML = humanize.bytes(totalSize)\n }\n if (res.block) {\n const blockHeight = res.block.height\n _this.bestBlockTarget.textContent = blockHeight\n _this.bestBlockTimeTarget.setAttribute('data-age', res.block.timestamp)\n const extras = res.block.extras\n _this.txOutCountTarget.innerHTML = humanize.decimalParts(extras.totalOutputs, true, 0)\n _this.totalSentTarget.innerHTML = humanize.threeSigFigs(extras.totalOutputAmt / 1e8)\n }\n if (res.blocks) {\n let txOutCount = 0\n let totalSent = 0\n res.blocks.forEach(block => {\n const extras = block.extras\n txOutCount += extras.totalOutputs\n totalSent += extras.totalOutputAmt\n })\n _this.txOutCountTarget.innerHTML = humanize.decimalParts(txOutCount, true, 0)\n _this.totalSentTarget.innerHTML = humanize.threeSigFigs(totalSent / 1e8)\n }\n if (res.transactions) {\n let inner = ''\n res.transactions.forEach(tx => {\n const txHash = tx.txid\n const totalOut = tx.value\n const fees = tx.fee\n const rate = tx.rate\n inner += `<tr><td class=\"break-word clipboard\"><a class=\"hash lh1rem\" href=\"/${_this.chainType}/tx/${txHash}\">${txHash}</a><span class=\"dcricon-copy clickable\" data-controller=\"clipboard\"` +\n 'data-action=\"click->clipboard#copyTextToClipboard\"></span><span class=\"alert alert-secondary alert-copy\"></span></td>'\n inner += `<td class=\"mono fs15 text-end\">${humanize.decimalParts(totalOut / 1e8, false, 8, 2)}</td>`\n inner += `<td class=\"mono fs15 text-end\">${humanize.decimalParts(fees / 1e8, false, 8, 2)}</td>`\n inner += `<td class=\"mono fs15 text-end\">${humanize.decimalParts(rate, false, 8, 2)}</td></tr>`\n })\n _this.transListTarget.innerHTML = inner\n }\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport globalEventBus from '../services/event_bus_service'\nimport mempoolJS from '../vendor/mempool'\nimport humanize from '../helpers/humanize_helper'\n\nexport default class extends Controller {\n static get targets () {\n return ['box', 'title', 'showmore', 'root', 'txs', 'tooltip', 'block',\n 'memTotalSent', 'memTime']\n }\n\n connect () {\n this.chainType = this.data.get('chainType')\n this.wsHostName = this.chainType === 'ltc' ? 'litecoinspace.org' : 'mempool.space'\n this.processBlock = this._processBlock.bind(this)\n switch (this.chainType) {\n case 'ltc':\n globalEventBus.on('LTC_BLOCK_RECEIVED', this.processBlock)\n break\n case 'btc':\n globalEventBus.on('BTC_BLOCK_RECEIVED', this.processBlock)\n }\n const { bitcoin: { websocket } } = mempoolJS({\n hostname: this.wsHostName\n })\n this.ws = websocket.initClient({\n options: ['blocks', 'stats', 'mempool-blocks', 'live-2h-chart']\n })\n this.mempoolSocketInit()\n }\n\n disconnect () {\n switch (this.chainType) {\n case 'ltc':\n globalEventBus.off('LTC_BLOCK_RECEIVED', this.processBlock)\n break\n case 'btc':\n globalEventBus.off('BTC_BLOCK_RECEIVED', this.processBlock)\n }\n // close websocket for mempool\n this.ws.close()\n }\n\n _processBlock (blockData) {\n const blocks = blockData.blocks\n const newBlock = blockData.block\n if (!blocks || !newBlock) {\n return\n }\n // get last block (oldest block) target\n this.blockTargets.forEach(blockTarget => {\n if (blockTarget.id !== 'memblocks') {\n let exist = false\n // remove block exclude in blocks\n blocks.forEach(block => {\n if (Number(block.height) === Number(blockTarget.id)) {\n exist = true\n }\n })\n if (!exist) {\n // if not exist, remove\n blockTarget.remove()\n }\n }\n })\n\n // sort blocks\n blocks.sort((a, b) => {\n if (a.height > b.height) {\n return 1\n }\n if (a.height < b.height) {\n return -1\n }\n return 0\n })\n\n let firstBlockHeight = 0\n // get first block target height on DOM\n this.blockTargets.forEach(blockTarget => {\n if (blockTarget.id !== 'memblocks') {\n if (Number(blockTarget.id) > firstBlockHeight) {\n firstBlockHeight = Number(blockTarget.id)\n }\n }\n })\n const _this = this\n // mempool outerHTML\n const mempoolBlock = document.getElementById('memblocks')\n if (!mempoolBlock) {\n return\n }\n const meminnerHtml = mempoolBlock.innerHTML\n if (!meminnerHtml) {\n return\n }\n mempoolBlock.remove()\n blocks.forEach(block => {\n if (block.height > firstBlockHeight) {\n // Create best block target\n const bestBlockTarget = '<div class=\"block-info\">' +\n `<a class=\"color-code\" href=\"/${_this.chainType}/block/${block.height}\">${block.height}</a>` +\n '<div class=\"mono amount\" style=\"line-height: 1;\">' +\n `<span>${humanize.threeSigFigs(block.TotalSentSats / 1e8)}</span>` +\n `<span class=\"unit\">${_this.chainType.toUpperCase()}</span>` +\n `</div><span class=\"timespan\"><span data-time-target=\"age\" data-age=\"${block.blocktime_unix}\"></span> ago</span></div>` +\n '<div class=\"block-rows chain-block-rows\"><div class=\"block-rewards px-1 mt-1\" style=\"flex-grow: 1\">' +\n `<span class=\"pow chain-pow left-vs-block-data\" style=\"flex-grow: ${block.BlockReward / 1e8}\" ` +\n `title='{\"object\": \"Block Reward\", \"total\": \"${block.BlockReward / 1e8}\"}' ` +\n 'data-chainvisualBlocks-target=\"tooltip\"><span class=\"block-element-link\"></span>' +\n `</span><span class=\"fees right-vs-block-data\" style=\"flex-grow: ${block.FeesSats / 1e8}\" ` +\n `title='{\"object\": \"Tx Fees\", \"total\": \"${block.FeesSats / 1e8}\"}' data-chainvisualBlocks-target=\"tooltip\">` +\n '<span class=\"block-element-link\"></span></span></div><div class=\"block-transactions px-1 my-1\" style=\"flex-grow: 1\">' +\n `<span class=\"chain-block-tx left-vs-block-data\" style=\"flex-grow: ${block.tx_count}\" data-chainvisualBlocks-target=\"tooltip\" title='{\"object\": \"Tx Count\", \"count\": \"${block.tx_count}\"}'>` +\n '<span class=\"block-element-link\"></span></span>' +\n `<span class=\"chain-block-tx\" style=\"flex-grow: ${block.TotalInputs}\" data-chainvisualBlocks-target=\"tooltip\" title='{\"object\": \"Inputs Count\", \"count\": \"${block.TotalInputs}\"}'>` +\n '<span class=\"block-element-link\"></span></span>' +\n `<span class=\"chain-block-tx right-vs-block-data\" style=\"flex-grow: ${block.TotalOutputs}\" data-chainvisualBlocks-target=\"tooltip\" title='{\"object\": \"Outputs Count\", \"count\": \"${block.TotalOutputs}\"}'>` +\n '<span class=\"block-element-link\"></span></span></div></div>'\n // create first block\n const theFirst = document.createElement('div')\n theFirst.setAttribute('data-chainvisualBlocks-target', 'block')\n theFirst.id = block.height + ''\n theFirst.classList.add('block')\n theFirst.classList.add('visible')\n theFirst.innerHTML = bestBlockTarget\n _this.boxTarget.prepend(theFirst)\n }\n })\n // create mempool box\n const mempoolBox = document.createElement('div')\n mempoolBox.setAttribute('data-chainvisualBlocks-target', 'block')\n mempoolBox.id = 'memblocks'\n mempoolBox.classList.add('block')\n mempoolBox.classList.add('visible')\n mempoolBox.innerHTML = meminnerHtml\n this.boxTarget.prepend(mempoolBox)\n this.setupTooltips()\n }\n\n visibleBlocks () {\n return this.boxTarget.querySelectorAll('.visible')\n }\n\n mempoolSocketInit () {\n const _this = this\n const memBlockReward = document.getElementById('memBlockReward')\n const memFeeSpan = document.getElementById('memFeeSpan')\n const memTxCount = document.getElementById('memTxCount')\n const memInputCount = document.getElementById('memInputCount')\n const memOutputCount = document.getElementById('memOutputCount')\n // mempool local data\n this.txCount = Number(memTxCount.getAttribute('data-value'))\n this.fees = parseFloat(memFeeSpan.getAttribute('data-value'))\n this.totalSent = parseFloat(this.memTotalSentTarget.getAttribute('data-value'))\n this.inputsCount = Number(memInputCount.getAttribute('data-value'))\n this.outputsCount = Number(memOutputCount.getAttribute('data-value'))\n this.memRewardBlockOuter = memBlockReward.outerHTML\n this.ws.addEventListener('message', function incoming ({ data }) {\n let hasChange = false\n const res = JSON.parse(data.toString())\n if (res.mempoolInfo) {\n hasChange = true\n _this.txCount = res.mempoolInfo.size\n if (_this.chainType === 'btc') {\n _this.fees = res.mempoolInfo.total_fee\n }\n }\n if (res['mempool-blocks']) {\n hasChange = true\n let ltcTotalFee = 0\n res['mempool-blocks'].forEach(memBlock => {\n if (_this.chainType === 'ltc') {\n ltcTotalFee += memBlock.totalFees\n }\n })\n if (_this.chainType === 'ltc') {\n _this.fees = ltcTotalFee / 1e8\n }\n }\n if (res.block) {\n hasChange = true\n const extras = res.block.extras\n _this.inputsCount = extras.totalInputs\n _this.outputsCount = extras.totalOutputs\n _this.totalSent = extras.totalOutputAmt / 1e8\n }\n if (res.blocks) {\n hasChange = true\n let txOutCount = 0\n let txInCount = 0\n let tempTotalSent = 0\n res.blocks.forEach(block => {\n const extras = block.extras\n txOutCount += extras.totalOutputs\n txInCount += extras.totalInputs\n tempTotalSent += extras.totalOutputAmt\n })\n _this.totalSent = tempTotalSent / 1e8\n _this.inputsCount = txInCount\n _this.outputsCount = txOutCount\n }\n if (hasChange) {\n const mempoolBox = document.getElementById('memblocks')\n if (mempoolBox) {\n mempoolBox.remove()\n }\n // Create best block target\n const mempoolInnerTarget = '<div class=\"block-info\">' +\n `<a class=\"color-code\" href=\"/${_this.chainType}/mempool\">Mempool</a>` +\n '<div class=\"mono amount\" style=\"line-height: 1;\">' +\n `<span>${humanize.threeSigFigs(_this.totalSent)}</span>` +\n `<span class=\"unit\">${_this.chainType.toUpperCase()}</span>` +\n '</div><span class=\"timespan\">now</span></div>' +\n '<div class=\"block-rows chain-block-rows\"><div class=\"block-rewards px-1 mt-1\" style=\"flex-grow: 1\">' +\n _this.memRewardBlockOuter +\n `<span class=\"fees right-vs-block-data\" style=\"flex-grow: ${_this.fees / 1e8}\" ` +\n `title='{\"object\": \"Tx Fees\", \"total\": \"${_this.fees}\"}' data-chainvisualBlocks-target=\"tooltip\">` +\n '<span class=\"block-element-link\"></span></span></div><div class=\"block-transactions px-1 my-1\" style=\"flex-grow: 1\">' +\n `<span class=\"chain-block-tx left-vs-block-data\" data-chainvisualBlocks-target=\"tooltip\" style=\"flex-grow: ${_this.txCount}\" title='{\"object\": \"Tx Count\", \"count\": \"${_this.txCount}\"}'>` +\n '<span class=\"block-element-link\"></span></span>' +\n `<span class=\"chain-block-tx\" data-chainvisualBlocks-target=\"tooltip\" style=\"flex-grow: ${_this.inputsCount}\" title='{\"object\": \"Inputs Count\", \"count\": \"${_this.inputsCount}\"}'>` +\n '<span class=\"block-element-link\"></span></span>' +\n `<span class=\"chain-block-tx right-vs-block-data\" data-chainvisualBlocks-target=\"tooltip\" style=\"flex-grow: ${_this.outputsCount}\" title='{\"object\": \"Outputs Count\", \"count\": \"${_this.outputsCount}\"}'>` +\n '<span class=\"block-element-link\"></span></span></div></div>'\n // remove old mempool box\n const theKid = document.createElement('div')\n theKid.setAttribute('data-chainvisualBlocks-target', 'block')\n theKid.id = 'memblocks'\n theKid.classList.add('block')\n theKid.classList.add('visible')\n theKid.innerHTML = mempoolInnerTarget\n _this.boxTarget.prepend(theKid)\n _this.setupTooltips()\n }\n })\n }\n\n setupTooltips () {\n const _this = this\n this.tooltipTargets.forEach((tooltipElement) => {\n try {\n // parse the content\n const data = JSON.parse(tooltipElement.title)\n let newContent\n if (data.count) {\n newContent = `<b>${data.object}</b><br>${data.count}`\n } else {\n newContent = `<b>${data.object}</b><br>${data.total} ` + _this.chainType.toUpperCase()\n }\n tooltipElement.title = newContent\n } catch (error) {}\n })\n\n import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n const tippy = module.default\n tippy('.block-rows [title]', {\n allowTitleHTML: true,\n animation: 'shift-away',\n arrow: true,\n createPopperInstanceOnInit: true,\n dynamicTitle: true,\n performance: true,\n placement: 'top',\n size: 'small',\n sticky: true,\n theme: 'light'\n })\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport { assign, map, merge } from 'lodash-es'\nimport { animationFrame } from '../helpers/animation_helper'\nimport { isEqual } from '../helpers/chart_helper'\nimport { requestJSON } from '../helpers/http'\nimport humanize from '../helpers/humanize_helper'\nimport { getDefault } from '../helpers/module_helper'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport Zoom from '../helpers/zoom_helper'\nimport globalEventBus from '../services/event_bus_service'\nimport { darkEnabled } from '../services/theme_service'\n\nlet selectedChart\nlet Dygraph // lazy loaded on connect\n\nconst aDay = 86400 * 1000 // in milliseconds\nconst aMonth = 30 // in days\nconst atomsToDCR = 1e-8\nconst windowScales = ['ticket-price', 'pow-difficulty', 'missed-votes']\nconst rangeUse = ['hashrate', 'pow-difficulty']\nconst hybridScales = ['privacy-participation']\nconst lineScales = ['ticket-price', 'privacy-participation']\nconst modeScales = ['ticket-price']\nconst multiYAxisChart = ['ticket-price', 'coin-supply', 'privacy-participation']\n// index 0 represents y1 and 1 represents y2 axes.\nconst yValueRanges = { 'ticket-price': [1] }\nconst chainworkUnits = ['exahash', 'zettahash', 'yottahash']\nconst hashrateUnits = ['Th/s', 'Ph/s', 'Eh/s']\nlet ticketPoolSizeTarget, premine, stakeValHeight, stakeShare\nlet baseSubsidy, subsidyInterval, subsidyExponent, windowSize, avgBlockTime\nlet rawCoinSupply, rawPoolValue\nlet yFormatter, legendEntry, legendMarker, legendElement\nlet rangeOption = ''\n\nfunction usesWindowUnits (chart) {\n return windowScales.indexOf(chart) > -1\n}\n\nfunction usesHybridUnits (chart) {\n return hybridScales.indexOf(chart) > -1\n}\n\nfunction isScaleDisabled (chart) {\n return lineScales.indexOf(chart) > -1\n}\n\nfunction isModeEnabled (chart) {\n return modeScales.includes(chart)\n}\n\nfunction hasMultipleVisibility (chart) {\n return multiYAxisChart.indexOf(chart) > -1\n}\n\nfunction useRange (chart) {\n return rangeUse.indexOf(chart) > -1\n}\n\nfunction intComma (amount) {\n if (!amount) return ''\n return amount.toLocaleString(undefined, { maximumFractionDigits: 0 })\n}\n\nfunction axesToRestoreYRange (chartName, origYRange, newYRange) {\n const axesIndexes = yValueRanges[chartName]\n if (!Array.isArray(origYRange) || !Array.isArray(newYRange) ||\n origYRange.length !== newYRange.length || !axesIndexes) return\n\n let axes\n for (let i = 0; i < axesIndexes.length; i++) {\n const index = axesIndexes[i]\n if (newYRange.length <= index) continue\n if (!isEqual(origYRange[index], newYRange[index])) {\n if (!axes) axes = {}\n if (index === 0) {\n axes = Object.assign(axes, { y1: { valueRange: origYRange[index] } })\n } else if (index === 1) {\n axes = Object.assign(axes, { y2: { valueRange: origYRange[index] } })\n }\n }\n }\n return axes\n}\n\nfunction withBigUnits (v, units) {\n const i = v === 0 ? 0 : Math.floor(Math.log10(v) / 3)\n return (v / Math.pow(1000, i)).toFixed(3) + ' ' + units[i]\n}\n\nfunction blockReward (height) {\n if (height >= stakeValHeight) return baseSubsidy * Math.pow(subsidyExponent, Math.floor(height / subsidyInterval))\n if (height > 1) return baseSubsidy * (1 - stakeShare)\n if (height === 1) return premine\n return 0\n}\n\nfunction addLegendEntryFmt (div, series, fmt) {\n div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${fmt(series.y)}`))\n}\n\nfunction addLegendEntry (div, series) {\n div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${series.yHTML}`))\n}\n\nfunction defaultYFormatter (div, data) {\n addLegendEntry(div, data.series[0])\n}\n\nfunction customYFormatter (fmt) {\n return (div, data) => addLegendEntryFmt(div, data.series[0], fmt)\n}\n\nfunction legendFormatter (data) {\n if (data.x == null) return legendElement.classList.add('d-hide')\n legendElement.classList.remove('d-hide')\n const div = document.createElement('div')\n let xHTML = data.xHTML\n if (data.dygraph.getLabels()[0] === 'Date') {\n xHTML = humanize.date(data.x, false, selectedChart !== 'ticket-price')\n }\n div.appendChild(legendEntry(`${data.dygraph.getLabels()[0]}: ${xHTML}`))\n yFormatter(div, data, data.dygraph.getOption('legendIndex'))\n dompurify.sanitize(div, { IN_PLACE: true, FORBID_TAGS: ['svg', 'math'] })\n return div.innerHTML\n}\n\nfunction hashrateTimePlotter (e) {\n // ASIC miners get turned on\n const asicLines = ['● ASIC miners', 'get turned on']\n hashrateLegendPlotter(e, 1546339611000, 197, asicLines, 'left')\n // Miner reward change 60% to 10%\n const minerLines = ['● Miner reward', 'change 60% to 10%']\n hashrateLegendPlotter(e, 1652266011000, 150, minerLines, 'right')\n if (rangeOption !== 'before' || rangeOption !== 'after') {\n const lines = ['● Transition of the', 'algorithm to BLAKE3', '● Miner reward', 'change 10% to 1%']\n hashrateLegendPlotter(e, 1693612800000, 0, lines, 'right')\n }\n}\n\nfunction hashrateBlockPlotter (e) {\n // ASIC miners get turned on\n const asicLines = ['● ASIC miners', 'get turned on']\n hashrateLegendPlotter(e, 306247, 197, asicLines, 'left')\n // Miner reward change 60% to 10%\n const minerLines = ['● Miner reward', 'change 60% to 10%']\n hashrateLegendPlotter(e, 658518, 150, minerLines, 'right')\n if (rangeOption !== 'before' || rangeOption !== 'after') {\n const lines = ['● Transition of the', 'algorithm to BLAKE3', '● Miner reward', 'change 10% to 1%']\n hashrateLegendPlotter(e, 794429, 0, lines, 'right')\n }\n}\n\nfunction difficultyTimePlotter (e) {\n // ASIC miners get turned on\n const asicLines = ['● ASIC miners', 'get turned on']\n hashrateLegendPlotter(e, 1546339611000, 11500000000, asicLines, 'left')\n // Miner reward change 60% to 10%\n const minerLines = ['● Miner reward', 'change 60% to 10%']\n hashrateLegendPlotter(e, 1652266011000, 10000000000, minerLines, 'right')\n if (rangeOption !== 'before' || rangeOption !== 'after') {\n const lines = ['● Transition of the', 'algorithm to BLAKE3', '● Miner reward', 'change 10% to 1%']\n hashrateLegendPlotter(e, 1693612800000, 0, lines, 'right')\n }\n}\n\nfunction difficultyBlockPlotter (e) {\n // ASIC miners get turned on\n const asicLines = ['● ASIC miners', 'get turned on']\n hashrateLegendPlotter(e, 306247, 11500000000, asicLines, 'left')\n // Miner reward change 60% to 10%\n const minerLines = ['● Miner reward', 'change 60% to 10%']\n hashrateLegendPlotter(e, 658518, 10000000000, minerLines, 'right')\n if (rangeOption !== 'before' || rangeOption !== 'after') {\n const lines = ['● Transition of the', 'algorithm to BLAKE3', '● Miner reward', 'change 10% to 1%']\n hashrateLegendPlotter(e, 794429, 0, lines, 'right')\n }\n}\n\nfunction makePt (x, y) { return { x, y } }\n\n// Legend plotter processing for hashrate chart for blake3 algorithm transition\nfunction hashrateLegendPlotter (e, midGapValue, startY, lines, direct) {\n Dygraph.Plotters.fillPlotter(e)\n Dygraph.Plotters.linePlotter(e)\n const area = e.plotArea\n const ctx = e.drawingContext\n const mg = e.dygraph.toDomCoords(midGapValue, startY)\n const midGap = makePt(mg[0], mg[1])\n const fontSize = 13\n const dark = darkEnabled()\n ctx.textAlign = 'left'\n ctx.textBaseline = 'top'\n ctx.font = `${fontSize}px arial`\n ctx.lineWidth = 1\n ctx.strokeStyle = dark ? '#ffffff' : '#259331'\n const boxColor = dark ? '#1e2b39' : '#ffffff'\n let boxW = 0\n const txts = [...lines]\n txts.forEach(txt => {\n const w = ctx.measureText(txt).width\n if (w > boxW) boxW = w\n })\n let rowHeight = fontSize * 1.5\n const rowPad = (rowHeight - fontSize) / 3\n const boxPad = rowHeight / 5\n let y = fontSize\n y += midGap.y - 2 * area.h / 3\n // Label the gap size.\n rowHeight -= 2 // just looks better\n ctx.fillStyle = boxColor\n const reactX = direct === 'left' ? midGap.x - boxW - boxPad * 2 : midGap.x + boxPad\n const rect = makePt(reactX, y - boxPad)\n const dims = makePt(boxW + boxPad * 3, rowHeight * lines.length + boxPad * 2)\n ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n ctx.fillStyle = dark ? '#ffffff' : '#259331'\n const centerX = direct === 'left' ? midGap.x - boxW / 2 - 4 : midGap.x + boxW / 2 + 8\n const write = s => {\n const cornerX = centerX - (ctx.measureText(s).width / 2)\n ctx.fillText(s, cornerX + rowPad, y + rowPad)\n y += rowHeight\n }\n\n ctx.save()\n lines.forEach((line) => {\n write(line)\n })\n // Draw a line from the box to the gap\n const lineToX = direct === 'left' ? midGap.x - boxW / 2 : midGap.x + boxW / 2\n drawLine(ctx,\n makePt(lineToX, y),\n makePt(midGap.x, midGap.y - boxPad))\n}\n\nfunction drawLine (ctx, start, end) {\n ctx.beginPath()\n ctx.moveTo(start.x, start.y)\n ctx.lineTo(end.x, end.y)\n ctx.stroke()\n}\n\nfunction nightModeOptions (nightModeOn) {\n if (nightModeOn) {\n return {\n rangeSelectorAlpha: 0.3,\n gridLineColor: '#596D81',\n colors: ['#2DD8A3', '#255595', '#FFC84E']\n }\n }\n return {\n rangeSelectorAlpha: 0.4,\n gridLineColor: '#C4CBD2',\n colors: ['#255594', '#006600', '#FF0090']\n }\n}\n\nfunction zipWindowHvYZ (ys, zs, winSize, yMult, zMult, offset) {\n yMult = yMult || 1\n zMult = zMult || 1\n offset = offset || 0\n return ys.map((y, i) => {\n return [i * winSize + offset, y * yMult, zs[i] * zMult]\n })\n}\n\nfunction zipWindowHvY (ys, winSize, yMult, offset) {\n yMult = yMult || 1\n offset = offset || 0\n return ys.map((y, i) => {\n return [i * winSize + offset, y * yMult]\n })\n}\n\nfunction zipWindowTvYZ (times, ys, zs, yMult, zMult) {\n yMult = yMult || 1\n zMult = zMult || 1\n return times.map((t, i) => {\n return [new Date(t * 1000), ys[i] * yMult, zs[i] * zMult]\n })\n}\n\nfunction zipWindowTvY (times, ys, yMult) {\n yMult = yMult || 1\n return times.map((t, i) => {\n return [new Date(t * 1000), ys[i] * yMult]\n })\n}\n\nfunction zipTvY (times, ys, yMult) {\n yMult = yMult || 1\n return times.map((t, i) => {\n return [new Date(t * 1000), ys[i] * yMult]\n })\n}\n\nfunction zipIvY (ys, yMult, offset) {\n yMult = yMult || 1\n offset = offset || 1 // TODO: check for why offset is set to a default value of 1 when genesis block has a height of 0\n return ys.map((y, i) => {\n return [offset + i, y * yMult]\n })\n}\n\nfunction zipHvY (heights, ys, yMult, offset) {\n yMult = yMult || 1\n offset = offset || 1\n return ys.map((y, i) => {\n return [offset + heights[i], y * yMult]\n })\n}\n\nfunction zip2D (data, ys, yMult, offset) {\n yMult = yMult || 1\n if (data.axis === 'height') {\n if (data.bin === 'block') return zipIvY(ys, yMult)\n return zipHvY(data.h, ys, yMult, offset)\n }\n return zipTvY(data.t, ys, yMult)\n}\n\nfunction anonymitySetFunc (data) {\n let d\n let start = -1\n let end = 0\n if (data.axis === 'height') {\n if (data.bin === 'block') {\n d = data.anonymitySet.map((y, i) => {\n if (start === -1 && y > 0) {\n start = i\n }\n end = i\n return [i, y * atomsToDCR]\n })\n } else {\n d = data.anonymitySet.map((y, i) => {\n if (start === -1 && y > 0) {\n start = i\n }\n end = data.h[i]\n return [data.h[i], y * atomsToDCR]\n })\n }\n } else {\n d = data.t.map((t, i) => {\n if (start === -1 && data.anonymitySet[i] > 0) {\n start = t * 1000\n }\n end = t * 1000\n return [new Date(t * 1000), data.anonymitySet[i] * atomsToDCR]\n })\n }\n return { data: d, limits: [start, end] }\n}\n\nfunction ticketPriceFunc (data) {\n if (data.t) return zipWindowTvYZ(data.t, data.price, data.count, atomsToDCR)\n return zipWindowHvYZ(data.price, data.count, data.window, atomsToDCR)\n}\n\nfunction poolSizeFunc (data) {\n let out = []\n if (data.axis === 'height') {\n if (data.bin === 'block') out = zipIvY(data.count)\n else out = zipHvY(data.h, data.count)\n } else {\n out = zipTvY(data.t, data.count)\n }\n out.forEach(pt => pt.push(null))\n if (out.length) {\n out[0][2] = ticketPoolSizeTarget\n out[out.length - 1][2] = ticketPoolSizeTarget\n }\n return out\n}\n\nfunction percentStakedFunc (data) {\n rawCoinSupply = data.circulation.map(v => v * atomsToDCR)\n rawPoolValue = data.poolval.map(v => v * atomsToDCR)\n const ys = rawPoolValue.map((v, i) => [v / rawCoinSupply[i] * 100])\n if (data.axis === 'height') {\n if (data.bin === 'block') return zipIvY(ys)\n return zipHvY(data.h, ys)\n }\n return zipTvY(data.t, ys)\n}\n\nfunction powDiffFunc (data) {\n if (data.t) return zipWindowTvY(data.t, data.diff)\n return zipWindowHvY(data.diff, data.window, 1, data.offset)\n}\n\nfunction circulationFunc (chartData) {\n let yMax = 0\n let h = -1\n const addDough = (newHeight) => {\n while (h < newHeight) {\n h++\n yMax += blockReward(h) * atomsToDCR\n }\n }\n const heights = chartData.h\n const times = chartData.t\n const supplies = chartData.supply\n const anonymitySet = chartData.anonymitySet\n const isHeightAxis = chartData.axis === 'height'\n let xFunc, hFunc\n if (chartData.bin === 'day') {\n xFunc = isHeightAxis ? i => heights[i] : i => new Date(times[i] * 1000)\n hFunc = i => heights[i]\n } else {\n xFunc = isHeightAxis ? i => i : i => new Date(times[i] * 1000)\n hFunc = i => i\n }\n\n const inflation = []\n const data = map(supplies, (n, i) => {\n const height = hFunc(i)\n addDough(height)\n inflation.push(yMax)\n return [xFunc(i), supplies[i] * atomsToDCR, null, anonymitySet[i] * atomsToDCR]\n })\n\n const dailyBlocks = aDay / avgBlockTime\n const lastPt = data[data.length - 1]\n let x = lastPt[0]\n // Set yMax to the start at last actual supply for the prediction line.\n yMax = lastPt[1]\n if (!isHeightAxis) x = x.getTime()\n xFunc = isHeightAxis ? xx => xx : xx => { return new Date(xx) }\n const xIncrement = isHeightAxis ? dailyBlocks : aDay\n const projection = 6 * aMonth\n data.push([xFunc(x), null, yMax, null])\n for (let i = 1; i <= projection; i++) {\n addDough(h + dailyBlocks)\n x += xIncrement\n data.push([xFunc(x), null, yMax, null])\n }\n return { data, inflation }\n}\n\nfunction missedVotesFunc (data) {\n if (data.t) return zipWindowTvY(data.t, data.missed)\n return zipWindowHvY(data.missed, data.window, 1, data.offset * data.window)\n}\n\nfunction mapDygraphOptions (data, labelsVal, isDrawPoint, yLabel, labelsMG, labelsMG2) {\n return merge({\n file: data,\n labels: labelsVal,\n drawPoints: isDrawPoint,\n ylabel: yLabel,\n labelsKMB: labelsMG2 && labelsMG ? false : labelsMG,\n labelsKMG2: labelsMG2 && labelsMG ? false : labelsMG2\n }, nightModeOptions(darkEnabled()))\n}\n\nexport default class extends Controller {\n static get targets () {\n return [\n 'chartWrapper',\n 'labels',\n 'chartsView',\n 'chartSelect',\n 'zoomSelector',\n 'zoomOption',\n 'scaleType',\n 'axisOption',\n 'binSelector',\n 'scaleSelector',\n 'ticketsPurchase',\n 'ticketsPrice',\n 'anonymitySet',\n 'vSelectorItem',\n 'vSelector',\n 'binSize',\n 'legendEntry',\n 'legendMarker',\n 'modeSelector',\n 'modeOption',\n 'rawDataURL',\n 'chartName',\n 'chartTitleName',\n 'rangeSelector',\n 'rangeOption'\n ]\n }\n\n async connect () {\n this.isHomepage = !window.location.href.includes('/charts')\n this.query = new TurboQuery()\n ticketPoolSizeTarget = parseInt(this.data.get('tps'))\n premine = parseInt(this.data.get('premine'))\n stakeValHeight = parseInt(this.data.get('svh'))\n stakeShare = parseInt(this.data.get('pos')) / 10.0\n baseSubsidy = parseInt(this.data.get('bs'))\n subsidyInterval = parseInt(this.data.get('sri'))\n subsidyExponent = parseFloat(this.data.get('mulSubsidy')) / parseFloat(this.data.get('divSubsidy'))\n windowSize = parseInt(this.data.get('windowSize'))\n avgBlockTime = parseInt(this.data.get('blockTime')) * 1000\n const supplyPage = this.data.get('supplyPage')\n legendElement = this.labelsTarget\n\n // Prepare the legend element generators.\n const lm = this.legendMarkerTarget\n lm.remove()\n lm.removeAttribute('data-charts-target')\n legendMarker = () => {\n const node = document.createElement('div')\n node.appendChild(lm.cloneNode())\n return node.innerHTML\n }\n const le = this.legendEntryTarget\n le.remove()\n le.removeAttribute('data-charts-target')\n legendEntry = s => {\n const node = le.cloneNode()\n node.innerHTML = s\n return node\n }\n\n this.settings = TurboQuery.nullTemplate(['chart', 'zoom', 'scale', 'bin', 'range', 'axis', 'visibility', 'home'])\n if (!this.isHomepage) {\n this.query.update(this.settings)\n }\n this.settings.chart = this.settings.chart || 'ticket-price'\n if (supplyPage === 'true') {\n this.settings.chart = 'coin-supply'\n }\n this.zoomCallback = this._zoomCallback.bind(this)\n this.drawCallback = this._drawCallback.bind(this)\n this.limits = null\n this.lastZoom = null\n this.visibility = []\n if (this.settings.visibility) {\n this.settings.visibility.split('-', -1).forEach(s => {\n this.visibility.push(s === 'true')\n })\n }\n Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n this.drawInitialGraph()\n this.processNightMode = (params) => {\n this.chartsView.updateOptions(\n nightModeOptions(params.nightMode)\n )\n }\n globalEventBus.on('NIGHT_MODE', this.processNightMode)\n }\n\n disconnect () {\n globalEventBus.off('NIGHT_MODE', this.processNightMode)\n if (this.chartsView !== undefined) {\n this.chartsView.destroy()\n }\n selectedChart = null\n }\n\n drawInitialGraph () {\n const options = {\n axes: { y: { axisLabelWidth: 70 }, y2: { axisLabelWidth: 65 } },\n labels: ['Date', 'Ticket Price', 'Tickets Bought'],\n digitsAfterDecimal: 8,\n showRangeSelector: true,\n rangeSelectorPlotFillColor: '#C4CBD2',\n rangeSelectorAlpha: 0.4,\n rangeSelectorHeight: 40,\n drawPoints: true,\n pointSize: 0.25,\n legend: 'always',\n labelsSeparateLines: true,\n labelsDiv: legendElement,\n legendFormatter: legendFormatter,\n highlightCircleSize: 4,\n ylabel: 'Ticket Price',\n y2label: 'Tickets Bought',\n labelsUTC: true,\n axisLineColor: '#C4CBD2'\n }\n\n this.chartsView = new Dygraph(\n this.chartsViewTarget,\n [[1, 1, 5], [2, 5, 11]],\n options\n )\n this.chartSelectTarget.value = this.settings.chart\n if (this.settings.axis) this.setAxis(this.settings.axis) // set first\n if (this.settings.scale === 'log') this.setScale(this.settings.scale)\n if (this.settings.zoom) this.setZoom(this.settings.zoom)\n this.setBin(this.settings.bin ? this.settings.bin : 'day')\n this.setRange(this.settings.range ? this.settings.range : 'after')\n this.setMode(this.settings.mode ? this.settings.mode : 'smooth')\n\n const ogLegendGenerator = Dygraph.Plugins.Legend.generateLegendHTML\n Dygraph.Plugins.Legend.generateLegendHTML = (g, x, pts, w, row) => {\n g.updateOptions({ legendIndex: row }, true)\n return ogLegendGenerator(g, x, pts, w, row)\n }\n this.selectChart()\n }\n\n plotGraph (chartName, data) {\n let d = []\n const gOptions = {\n zoomCallback: null,\n drawCallback: null,\n logscale: this.settings.scale === 'log',\n valueRange: [null, null],\n visibility: null,\n y2label: null,\n y3label: null,\n stepPlot: this.settings.mode === 'stepped',\n axes: {},\n series: null,\n inflation: null,\n plotter: null\n }\n rawPoolValue = []\n rawCoinSupply = []\n yFormatter = defaultYFormatter\n const xlabel = data.t ? 'Date' : 'Block Height'\n const _this = this\n const isHeightBlock = data.axis === 'height' && data.bin === 'block'\n switch (chartName) {\n case 'ticket-price': // price graph\n d = ticketPriceFunc(data)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Price', 'Tickets Bought'], true,\n 'Price (DCR)', true, false))\n gOptions.y2label = 'Tickets Bought'\n gOptions.series = { 'Tickets Bought': { axis: 'y2' } }\n this.visibility = [this.ticketsPriceTarget.checked, this.ticketsPurchaseTarget.checked]\n gOptions.visibility = this.visibility\n gOptions.axes.y2 = {\n valueRange: [0, windowSize * 20 * 8],\n axisLabelFormatter: (y) => Math.round(y)\n }\n yFormatter = customYFormatter(y => y.toFixed(8) + ' DCR')\n break\n case 'ticket-pool-size': // pool size graph\n d = poolSizeFunc(data)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Ticket Pool Size', 'Network Target'],\n false, 'Ticket Pool Size', true, false))\n gOptions.series = {\n 'Network Target': {\n strokePattern: [5, 3],\n connectSeparatedPoints: true,\n strokeWidth: 2,\n color: '#C4CBD2'\n }\n }\n yFormatter = customYFormatter(y => `${intComma(y)} tickets (network target ${intComma(ticketPoolSizeTarget)})`)\n break\n\n case 'stake-participation':\n d = percentStakedFunc(data)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Stake Participation'], true,\n 'Stake Participation (%)', true, false))\n yFormatter = (div, data, i) => {\n addLegendEntryFmt(div, data.series[0], y => y.toFixed(4) + '%')\n div.appendChild(legendEntry(`${legendMarker()} Ticket Pool Value: ${intComma(rawPoolValue[i])} DCR`))\n div.appendChild(legendEntry(`${legendMarker()} Coin Supply: ${intComma(rawCoinSupply[i])} DCR`))\n }\n break\n\n case 'ticket-pool-value': // pool value graph\n d = zip2D(data, data.poolval, atomsToDCR)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Ticket Pool Value'], true,\n 'Ticket Pool Value (DCR)', true, false))\n yFormatter = customYFormatter(y => intComma(y) + ' DCR')\n break\n\n case 'block-size': // block size graph\n d = zip2D(data, data.size)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Block Size'], false, 'Block Size', true, false))\n break\n\n case 'blockchain-size': // blockchain size graph\n d = zip2D(data, data.size)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Blockchain Size'], true,\n 'Blockchain Size', false, true))\n break\n\n case 'tx-count': // tx per block graph\n d = zip2D(data, data.count)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Number of Transactions'], false,\n '# of Transactions', false, false))\n break\n\n case 'pow-difficulty': // difficulty graph\n d = powDiffFunc(data)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Difficulty'], true, 'Difficulty', true, false))\n if (_this.settings.range !== 'after') {\n gOptions.plotter = _this.settings.axis === 'height' ? difficultyBlockPlotter : difficultyTimePlotter\n }\n break\n\n case 'coin-supply': // supply graph\n d = circulationFunc(data)\n assign(gOptions, mapDygraphOptions(d.data, [xlabel, 'Coin Supply', 'Inflation Limit', 'Mix Rate'],\n true, 'Coin Supply (DCR)', true, false))\n gOptions.y2label = 'Inflation Limit'\n gOptions.y3label = 'Mix Rate'\n gOptions.series = { 'Inflation Limit': { axis: 'y2' }, 'Mix Rate': { axis: 'y3' } }\n this.visibility = [true, true, this.anonymitySetTarget.checked]\n gOptions.visibility = this.visibility\n gOptions.series = {\n 'Inflation Limit': {\n strokePattern: [5, 5],\n color: '#C4CBD2',\n strokeWidth: 1.5\n },\n 'Mix Rate': {\n color: '#2dd8a3'\n }\n }\n gOptions.inflation = d.inflation\n yFormatter = (div, data, i) => {\n addLegendEntryFmt(div, data.series[0], y => intComma(y) + ' DCR')\n let change = 0\n if (i < d.inflation.length) {\n const supply = data.series[0].y\n if (this.anonymitySetTarget.checked) {\n const mixed = data.series[2].y\n const mixedPercentage = ((mixed / supply) * 100).toFixed(2)\n div.appendChild(legendEntry(`${legendMarker()} Mixed: ${intComma(mixed)} DCR (${mixedPercentage}%)`))\n }\n const predicted = d.inflation[i]\n const unminted = predicted - data.series[0].y\n change = ((unminted / predicted) * 100).toFixed(2)\n div.appendChild(legendEntry(`${legendMarker()} Unminted: ${intComma(unminted)} DCR (${change}%)`))\n }\n }\n break\n\n case 'fees': // block fee graph\n d = zip2D(data, data.fees, atomsToDCR)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Total Fee'], false, 'Total Fee (DCR)', true, false))\n yFormatter = customYFormatter(y => y.toFixed(8) + ' DCR')\n break\n\n case 'privacy-participation': { // anonymity set graph\n d = anonymitySetFunc(data)\n this.customLimits = d.limits\n const label = 'Mix Rate'\n assign(gOptions, mapDygraphOptions(d.data, [xlabel, label], false, `${label} (DCR)`, true, false))\n\n yFormatter = (div, data, i) => {\n addLegendEntryFmt(div, data.series[0], y => (y > 0 ? intComma(y) : '0') + ' DCR')\n }\n break\n }\n case 'duration-btw-blocks': // Duration between blocks graph\n d = zip2D(data, data.duration, 1, 1)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Duration Between Blocks'], false,\n 'Duration Between Blocks (seconds)', false, false))\n break\n\n case 'chainwork': // Total chainwork over time\n d = zip2D(data, data.work)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Cumulative Chainwork'],\n false, 'Cumulative Chainwork (exahash)', true, false))\n yFormatter = customYFormatter(y => withBigUnits(y, chainworkUnits))\n break\n\n case 'hashrate': // Total chainwork over time\n d = isHeightBlock ? zipHvY(data.h, data.rate, 1e-3, data.offset) : zip2D(data, data.rate, 1e-3, data.offset)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Network Hashrate'],\n false, 'Network Hashrate (petahash/s)', true, false))\n yFormatter = customYFormatter(y => withBigUnits(y * 1e3, hashrateUnits))\n if (_this.settings.range !== 'after') {\n gOptions.plotter = _this.settings.axis === 'height' ? hashrateBlockPlotter : hashrateTimePlotter\n }\n break\n\n case 'missed-votes':\n d = missedVotesFunc(data)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Missed Votes'], false,\n 'Missed Votes per Window', true, false))\n break\n }\n\n const baseURL = `${this.query.url.protocol}//${this.query.url.host}`\n this.rawDataURLTarget.textContent = `${baseURL}/api/chart/${chartName}?axis=${this.settings.axis}&bin=${this.settings.bin}`\n\n this.chartsView.plotter_.clear()\n this.chartsView.updateOptions(gOptions, false)\n if (yValueRanges[chartName]) this.supportedYRange = this.chartsView.yAxisRanges()\n this.validateZoom()\n }\n\n async selectChart () {\n const selection = this.settings.chart = this.chartSelectTarget.value\n this.chartNameTarget.textContent = this.getChartName(this.chartSelectTarget.value)\n this.chartTitleNameTarget.textContent = this.chartNameTarget.textContent\n this.customLimits = null\n this.chartWrapperTarget.classList.add('loading')\n if (isScaleDisabled(selection)) {\n this.scaleSelectorTarget.classList.add('d-hide')\n this.vSelectorTarget.classList.remove('d-hide')\n } else {\n this.scaleSelectorTarget.classList.remove('d-hide')\n }\n if (isModeEnabled(selection)) {\n this.modeSelectorTarget.classList.remove('d-hide')\n } else {\n this.modeSelectorTarget.classList.add('d-hide')\n }\n if (hasMultipleVisibility(selection)) {\n this.vSelectorTarget.classList.remove('d-hide')\n this.updateVSelector(selection)\n } else {\n this.vSelectorTarget.classList.add('d-hide')\n }\n if (useRange(selection)) {\n this.settings.range = this.selectedRange()\n rangeOption = this.settings.range\n this.rangeSelectorTarget.classList.remove('d-hide')\n } else {\n this.settings.range = ''\n rangeOption = ''\n this.rangeSelectorTarget.classList.add('d-hide')\n }\n if (selectedChart !== selection || this.settings.bin !== this.selectedBin() ||\n this.settings.axis !== this.selectedAxis() || this.settings.range !== this.selectedRange()) {\n let url = '/api/chart/' + selection\n if (usesWindowUnits(selection) && !usesHybridUnits(selection)) {\n this.binSelectorTarget.classList.add('d-hide')\n this.settings.bin = 'window'\n } else {\n this.binSelectorTarget.classList.remove('d-hide')\n this.settings.bin = this.selectedBin()\n this.binSizeTargets.forEach(el => {\n if (el.dataset.option !== 'window') return\n if (usesHybridUnits(selection)) {\n el.classList.remove('d-hide')\n } else {\n el.classList.add('d-hide')\n if (this.settings.bin === 'window') {\n this.settings.bin = 'day'\n this.setActiveOptionBtn(this.settings.bin, this.binSizeTargets)\n }\n }\n })\n }\n url += `?bin=${this.settings.bin}`\n if (this.settings.range !== '') {\n url += `&range=${this.settings.range}`\n }\n this.settings.axis = this.selectedAxis()\n if (!this.settings.axis) this.settings.axis = 'time' // Set the default.\n url += `&axis=${this.settings.axis}`\n this.setActiveOptionBtn(this.settings.axis, this.axisOptionTargets)\n const chartResponse = await requestJSON(url)\n selectedChart = selection\n this.plotGraph(selection, chartResponse)\n } else {\n this.chartWrapperTarget.classList.remove('loading')\n }\n }\n\n getChartName (chartValue) {\n switch (chartValue) {\n case 'ticket-price':\n return 'Ticket Price'\n case 'ticket-pool-size':\n return 'Ticket Pool Size'\n case 'ticket-pool-value':\n return 'Ticket Pool Value'\n case 'stake-participation':\n return 'Stake Participation'\n case 'privacy-participation':\n return 'Privacy Participation'\n case 'missed-votes':\n return 'Missed Votes'\n case 'block-size':\n return 'Block Size'\n case 'blockchain-size':\n return 'Blockchain Size'\n case 'tx-count':\n return 'Transaction Count'\n case 'duration-btw-blocks':\n return 'Duration Between Blocks'\n case 'pow-difficulty':\n return 'PoW Difficulty'\n case 'chainwork':\n return 'Total Work'\n case 'hashrate':\n return 'Hashrate'\n case 'coin-supply':\n return 'Coin Supply'\n case 'fees':\n return 'Fees'\n default:\n return ''\n }\n }\n\n async validateZoom () {\n await animationFrame()\n this.chartWrapperTarget.classList.add('loading')\n await animationFrame()\n let oldLimits = this.limits || this.chartsView.xAxisExtremes()\n this.limits = this.chartsView.xAxisExtremes()\n const selected = this.selectedZoom()\n if (selected && !(selectedChart === 'privacy-participation' && selected === 'all')) {\n this.lastZoom = Zoom.validate(selected, this.limits,\n this.isTimeAxis() ? avgBlockTime : 1, this.isTimeAxis() ? 1 : avgBlockTime)\n } else {\n // if this is for the privacy-participation chart, then zoom to the beginning of the record\n if (selectedChart === 'privacy-participation') {\n this.limits = oldLimits = this.customLimits\n this.settings.zoom = Zoom.object(this.limits[0], this.limits[1])\n }\n this.lastZoom = Zoom.project(this.settings.zoom, oldLimits, this.limits)\n }\n if (this.lastZoom) {\n this.chartsView.updateOptions({\n dateWindow: [this.lastZoom.start, this.lastZoom.end]\n })\n }\n if (selected !== this.settings.zoom) {\n this._zoomCallback(this.lastZoom.start, this.lastZoom.end)\n }\n await animationFrame()\n this.chartWrapperTarget.classList.remove('loading')\n this.chartsView.updateOptions({\n zoomCallback: this.zoomCallback,\n drawCallback: this.drawCallback\n })\n }\n\n _zoomCallback (start, end) {\n this.lastZoom = Zoom.object(start, end)\n this.settings.zoom = Zoom.encode(this.lastZoom)\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n const ex = this.chartsView.xAxisExtremes()\n const option = Zoom.mapKey(this.settings.zoom, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n this.setActiveOptionBtn(option, this.zoomOptionTargets)\n const axesData = axesToRestoreYRange(this.settings.chart,\n this.supportedYRange, this.chartsView.yAxisRanges())\n if (axesData) this.chartsView.updateOptions({ axes: axesData })\n }\n\n isTimeAxis () {\n return this.selectedAxis() === 'time'\n }\n\n _drawCallback (graph, first) {\n if (first) return\n const [start, end] = this.chartsView.xAxisRange()\n if (start === end) return\n if (this.lastZoom.start === start) return // only handle slide event.\n this._zoomCallback(start, end)\n }\n\n setZoom (e) {\n const target = e.srcElement || e.target\n let option\n if (!target) {\n const ex = this.chartsView.xAxisExtremes()\n option = Zoom.mapKey(e, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n } else {\n option = target.dataset.option\n }\n this.setActiveOptionBtn(option, this.zoomOptionTargets)\n if (!target) return // Exit if running for the first time\n this.validateZoom()\n }\n\n setRange (e) {\n const target = e.srcElement || e.target\n const option = target ? target.dataset.option : e\n if (!option) return\n this.setActiveOptionBtn(option, this.rangeOptionTargets)\n if (!target) return // Exit if running for the first time.\n selectedChart = null // Force fetch\n this.selectChart()\n }\n\n setBin (e) {\n const target = e.srcElement || e.target\n const option = target ? target.dataset.option : e\n if (!option) return\n this.setActiveOptionBtn(option, this.binSizeTargets)\n // hide vSelector\n this.updateVSelector()\n if (!target) return // Exit if running for the first time.\n selectedChart = null // Force fetch\n this.selectChart()\n }\n\n setScale (e) {\n const target = e.srcElement || e.target\n const option = target ? target.dataset.option : e\n if (!option) return\n this.setActiveOptionBtn(option, this.scaleTypeTargets)\n if (!target) return // Exit if running for the first time.\n if (this.chartsView) {\n this.chartsView.updateOptions({ logscale: option === 'log' })\n }\n this.settings.scale = option\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n }\n\n setMode (e) {\n const target = e.srcElement || e.target\n const option = target ? target.dataset.option : e\n if (!option) return\n this.setActiveOptionBtn(option, this.modeOptionTargets)\n if (!target) return // Exit if running for the first time.\n if (this.chartsView) {\n this.chartsView.updateOptions({ stepPlot: option === 'stepped' })\n }\n this.settings.mode = option\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n }\n\n setAxis (e) {\n const target = e.srcElement || e.target\n const option = target ? target.dataset.option : e\n if (!option) return\n this.setActiveOptionBtn(option, this.axisOptionTargets)\n if (!target) return // Exit if running for the first time.\n this.settings.axis = null\n this.selectChart()\n }\n\n updateVSelector (chart) {\n if (!chart) {\n chart = this.chartSelectTarget.value\n }\n const that = this\n let showWrapper = false\n this.vSelectorItemTargets.forEach(el => {\n let show = el.dataset.charts.indexOf(chart) > -1\n if (el.dataset.bin && el.dataset.bin.indexOf(that.selectedBin()) === -1) {\n show = false\n }\n if (show) {\n el.classList.remove('d-hide')\n showWrapper = true\n } else {\n el.classList.add('d-hide')\n }\n })\n if (showWrapper) {\n this.vSelectorTarget.classList.remove('d-hide')\n } else {\n this.vSelectorTarget.classList.add('d-hide')\n }\n this.setVisibilityFromSettings()\n }\n\n setVisibilityFromSettings () {\n switch (this.chartSelectTarget.value) {\n case 'ticket-price':\n if (this.visibility.length !== 2) {\n this.visibility = [true, this.ticketsPurchaseTarget.checked]\n }\n this.ticketsPriceTarget.checked = this.visibility[0]\n this.ticketsPurchaseTarget.checked = this.visibility[1]\n break\n case 'coin-supply':\n if (this.visibility.length !== 3) {\n this.visibility = [true, true, this.anonymitySetTarget.checked]\n }\n this.anonymitySetTarget.checked = this.visibility[2]\n break\n case 'privacy-participation':\n if (this.visibility.length !== 2) {\n this.visibility = [true, this.anonymitySetTarget.checked]\n }\n this.anonymitySetTarget.checked = this.visibility[1]\n break\n default:\n return\n }\n this.settings.visibility = this.visibility.join('-')\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n }\n\n setVisibility (e) {\n switch (this.chartSelectTarget.value) {\n case 'ticket-price':\n if (!this.ticketsPriceTarget.checked && !this.ticketsPurchaseTarget.checked) {\n e.currentTarget.checked = true\n return\n }\n this.visibility = [this.ticketsPriceTarget.checked, this.ticketsPurchaseTarget.checked]\n break\n case 'coin-supply':\n this.visibility = [true, true, this.anonymitySetTarget.checked]\n break\n case 'privacy-participation':\n this.visibility = [true, this.anonymitySetTarget.checked]\n break\n default:\n return\n }\n this.chartsView.updateOptions({ visibility: this.visibility })\n this.settings.visibility = this.visibility.join('-')\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n }\n\n setActiveOptionBtn (opt, optTargets) {\n optTargets.forEach(li => {\n if (li.dataset.option === opt) {\n li.classList.add('active')\n } else {\n li.classList.remove('active')\n }\n })\n }\n\n selectedZoom () { return this.selectedOption(this.zoomOptionTargets) }\n selectedBin () { return this.selectedOption(this.binSizeTargets) }\n selectedScale () { return this.selectedOption(this.scaleTypeTargets) }\n selectedAxis () { return this.selectedOption(this.axisOptionTargets) }\n selectedRange () { return this.selectedOption(this.rangeOptionTargets) }\n\n selectedOption (optTargets) {\n let key = false\n optTargets.forEach((el) => {\n if (el.classList.contains('active')) key = el.dataset.option\n })\n return key\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport const copyIcon = () => {\n const copyIcon = document.createElement('span')\n copyIcon.classList.add('dcricon-copy')\n copyIcon.classList.add('clickable')\n copyIcon.dataset.controller = 'clipboard'\n copyIcon.dataset.action = 'click->clipboard#copyTextToClipboard this'\n return copyIcon.outerHTML\n}\n\nexport const alertArea = () => {\n const alertArea = document.createElement('span')\n alertArea.classList.add('alert')\n alertArea.classList.add('alert-success')\n alertArea.classList.add('alert-copy')\n return alertArea.outerHTML\n}\n\nexport default class extends Controller {\n copyTextToClipboard (clickEvent) {\n const parentNode = clickEvent.srcElement.parentNode\n const textContent = parentNode.textContent.trim().split(' ')[0]\n navigator.clipboard.writeText(textContent).then(() => {\n const alertCopy = parentNode.getElementsByClassName('alert-copy')[0]\n alertCopy.textContent = 'Copied'\n alertCopy.style.display = 'inline-table'\n setTimeout(function () {\n alertCopy.textContent = ''\n alertCopy.style.display = 'none'\n }, 1000)\n }, (reason) => {\n console.error('Unable to copy:', reason)\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { toggleSun } from '../services/theme_service'\n\nexport default class extends Controller {\n checkHomePage () {\n const originUrl = window.location.origin\n let href = window.location.href\n if (href.includes(originUrl)) {\n href = href.replace(originUrl, '')\n if (href === '/' || href === '') {\n return true\n }\n return false\n }\n return false\n }\n\n onSunClick () {\n toggleSun()\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport ws from '../services/messagesocket_service'\n\nexport default class extends Controller {\n static get targets () {\n return ['indicator', 'status']\n }\n\n connect () {\n this.indicatorTarget.classList.remove('hidden')\n\n ws.registerEvtHandler('open', () => {\n if (window.loggingDebug) console.log('Connected')\n this.updateConnectionStatus('Connected', true)\n })\n\n ws.registerEvtHandler('close', () => {\n console.log('Disconnected')\n this.updateConnectionStatus('Disconnected', false)\n })\n\n ws.registerEvtHandler('error', (evt) => {\n console.log('WebSocket error:', evt)\n this.updateConnectionStatus('Disconnected', false)\n })\n\n ws.registerEvtHandler('ping', (evt) => {\n if (window.loggingDebug) console.debug('ping. users online: ', evt)\n })\n }\n\n updateConnectionStatus (msg, connected) {\n if (connected) {\n this.indicatorTarget.classList.add('connected')\n this.indicatorTarget.classList.remove('disconnected')\n } else {\n this.indicatorTarget.classList.remove('connected')\n this.indicatorTarget.classList.add('disconnected')\n }\n this.statusTarget.textContent = `${msg} `\n }\n\n requestNotifyPermission () {\n if (window.Notification.permission === 'granted') return\n if (window.Notification.permission !== 'denied') window.Notification.requestPermission()\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { requestJSON } from '../helpers/http'\n\nexport default class FinanceReportController extends Controller {\n static values = {\n reportMinYear: Number,\n reportMaxYear: Number,\n reportMinMonth: Number,\n reportMaxMonth: Number\n }\n\n async initReportTimeRange () {\n // Get time range of reports\n const url = '/api/finance-report/time-range'\n const timeRangeRes = await requestJSON(url)\n if (!timeRangeRes) {\n return\n }\n this.reportMinYear = timeRangeRes.minYear\n this.reportMinMonth = timeRangeRes.minMonth\n this.reportMaxYear = timeRangeRes.maxYear\n this.reportMaxMonth = timeRangeRes.maxMonth\n }\n\n isMobile () {\n try { document.createEvent('TouchEvent'); return true } catch (e) { return false }\n }\n}\n","import TurboQuery from '../helpers/turbolinks_helper'\nimport { requestJSON } from '../helpers/http'\nimport humanize from '../helpers/humanize_helper'\nimport FinanceReportController from './financebase_controller'\n\nconst responseCache = {}\nlet requestCounter = 0\nlet domainList\nlet tokenList\nlet ownerList\nlet responseData\n\nfunction hasCache (k) {\n if (!responseCache[k]) return false\n const expiration = new Date(responseCache[k].expiration)\n return expiration > new Date()\n}\n\nexport default class extends FinanceReportController {\n static get targets () {\n return ['noData', 'reportArea',\n 'proposalReport', 'legacyReport', 'yearMonthInfoTable',\n 'nextButton', 'proposalArea', 'noReport',\n 'totalSpanRow', 'monthlyArea', 'yearlyArea',\n 'monthlyReport', 'yearlyReport', 'summaryArea', 'summaryReport',\n 'proposalSpanRow', 'prevBtn', 'nextBtn',\n 'toVote', 'toDiscussion',\n 'expendiduteValue', 'prevNextButtons', 'toUpReport',\n 'currentDetail', 'yearBreadcumb', 'proposalSumCard', 'proposalTopSummary',\n 'domainSummaryTable', 'domainSummaryArea', 'proposalSpent',\n 'treasurySpent', 'unaccountedValue', 'proposalSpentArea', 'treasurySpentArea',\n 'unaccountedValueArea', 'detailReportTitle', 'summaryTableTitle']\n }\n\n async initialize () {\n this.query = new TurboQuery()\n this.settings = TurboQuery.nullTemplate([\n 'type', 'time', 'token', 'name', 'stype', 'order'\n ])\n\n this.politeiaUrl = this.data.get('politeiaUrl')\n\n this.defaultSettings = {\n type: '',\n time: '',\n token: '',\n name: '',\n stype: 'pname',\n order: 'desc'\n }\n\n if (!this.settings.order) {\n this.settings.order = this.defaultSettings.order\n }\n\n this.query.update(this.settings)\n\n if (!this.settings.type) {\n this.showNoData()\n return\n }\n\n if (this.settings.type === 'month' || this.settings.type === 'year') {\n if (!this.settings.time) {\n this.showNoData()\n return\n }\n }\n if (this.settings.type === 'domain' || this.settings.type === 'owner') {\n if (!this.settings.name) {\n this.showNoData()\n return\n }\n }\n if (this.settings.type === 'proposal' && !this.settings.token) {\n this.showNoData()\n return\n }\n this.noDataTarget.classList.add('d-none')\n this.reportAreaTarget.classList.remove('d-none')\n\n if (this.settings.type === 'proposal' || this.settings.type === 'domain' || this.settings.type === 'owner') {\n this.prevNextButtonsTarget.classList.add('d-none')\n } else {\n this.prevNextButtonsTarget.classList.remove('d-none')\n }\n if (this.settings.type === 'month' || this.settings.type === 'year') {\n this.yearMonthCalculate()\n return\n }\n this.initScrollerForTable()\n this.proposalTopSummaryTarget.classList.add('d-none')\n this.totalSpanRowTarget.classList.add('d-none')\n this.proposalCalculate()\n }\n\n async initScrollerForTable () {\n const $scroller = document.getElementById('scroller')\n const $container = document.getElementById('containerBody')\n const $wrapper = document.getElementById('wrapperReportTable')\n let ignoreScrollEvent = false\n let animation = null\n const scrollbarPositioner = () => {\n const scrollTop = document.scrollingElement.scrollTop\n const wrapperTop = $wrapper.offsetTop\n const wrapperBottom = wrapperTop + $wrapper.offsetHeight\n\n const topMatch = (window.innerHeight + scrollTop) >= wrapperTop\n const bottomMatch = (scrollTop) <= wrapperBottom\n\n if (topMatch && bottomMatch) {\n const inside = wrapperBottom >= scrollTop && window.innerHeight + scrollTop <= wrapperBottom\n\n if (inside) {\n $scroller.style.bottom = '0px'\n } else {\n const offset = (scrollTop + window.innerHeight) - wrapperBottom\n\n $scroller.style.bottom = offset + 'px'\n }\n $scroller.classList.add('visible')\n } else {\n $scroller.classList.remove('visible')\n }\n\n window.requestAnimationFrame(scrollbarPositioner)\n }\n\n window.requestAnimationFrame(scrollbarPositioner)\n\n $scroller.addEventListener('scroll', (e) => {\n if (ignoreScrollEvent) return false\n\n if (animation) window.cancelAnimationFrame(animation)\n animation = window.requestAnimationFrame(() => {\n ignoreScrollEvent = true\n $container.scrollLeft = $scroller.scrollLeft\n ignoreScrollEvent = false\n })\n })\n\n $container.addEventListener('scroll', (e) => {\n if (ignoreScrollEvent) return false\n\n if (animation) window.cancelAnimationFrame(animation)\n animation = window.requestAnimationFrame(() => {\n ignoreScrollEvent = true\n $scroller.scrollLeft = $container.scrollLeft\n\n ignoreScrollEvent = false\n })\n })\n\n $(window).on('resize', function () {\n // get table thead size\n const tableWidthStr = $('#reportTable thead').css('width').replace('px', '')\n const tableWidth = parseFloat(tableWidthStr.trim())\n const parentContainerWidthStr = $('#summaryTableArea').css('width').replace('px', '')\n const parentContainerWidth = parseFloat(parentContainerWidthStr.trim())\n if (tableWidth < parentContainerWidth + 5) {\n $('#scroller').addClass('d-none')\n } else {\n $('#scroller').removeClass('d-none')\n }\n // set overflow class\n $('#scroller').css('width', $('#summaryTableArea').css('width'))\n })\n }\n\n showNoData () {\n this.noDataTarget.classList.remove('d-none')\n this.reportAreaTarget.classList.add('d-none')\n }\n\n updateQueryString () {\n const [query, settings, defaults] = [{}, this.settings, this.defaultSettings]\n for (const k in settings) {\n if (!settings[k] || settings[k].toString() === defaults[k].toString()) continue\n query[k] = settings[k]\n }\n this.query.replace(query)\n }\n\n prevReport (e) {\n let currentValue\n if (this.settings.type === 'domain' || this.settings.type === 'owner') {\n const itemIndex = this.settings.type === 'domain' ? domainList.indexOf(this.settings.name) : ownerList.indexOf(this.settings.name)\n if (itemIndex < 0) {\n return\n }\n this.settings.name = this.settings.type === 'domain' ? domainList[itemIndex - 1] : ownerList[itemIndex - 1]\n currentValue = this.settings.name\n }\n\n if (this.settings.type === 'proposal') {\n const itemIndex = tokenList.indexOf(this.settings.token)\n if (itemIndex < 0) {\n return\n }\n this.settings.token = tokenList[itemIndex - 1]\n currentValue = this.settings.token\n }\n\n if (this.settings.type === 'year') {\n this.settings.time = this.settings.time - 1\n } else if (this.settings.type === 'month') {\n const timeArr = this.settings.time.trim().split('_')\n let year = parseInt(timeArr[0])\n let month = parseInt(timeArr[1])\n if (month === 1) {\n year = year - 1\n month = 12\n } else {\n month = month - 1\n }\n this.settings.time = year + '_' + month\n }\n\n this.updateQueryString()\n if (this.settings.type === 'year' || this.settings.type === 'month') {\n this.yearMonthCalculate()\n }\n if (this.settings.type === 'domain' || this.settings.type === 'proposal' || this.settings.type === 'owner') {\n this.handlerNextPrevButton(this.settings.type, currentValue)\n this.proposalCalculate()\n }\n }\n\n nextReport (e) {\n let currentValue\n if (this.settings.type === 'domain' || this.settings.type === 'owner') {\n const itemIndex = this.settings.type === 'domain' ? domainList.indexOf(this.settings.name) : ownerList.indexOf(this.settings.name)\n if (itemIndex < 0) {\n return\n }\n this.settings.name = this.settings.type === 'domain' ? domainList[itemIndex + 1] : ownerList[itemIndex + 1]\n currentValue = this.settings.name\n }\n\n if (this.settings.type === 'proposal') {\n const itemIndex = tokenList.indexOf(this.settings.token)\n if (itemIndex < 0) {\n return\n }\n currentValue = this.settings.token\n this.settings.token = tokenList[itemIndex + 1]\n }\n if (this.settings.type === 'year') {\n this.settings.time = this.settings.time + 1\n } else if (this.settings.type === 'month') {\n const timeArr = this.settings.time.trim().split('_')\n let year = parseInt(timeArr[0])\n let month = parseInt(timeArr[1])\n if (month === 12) {\n year = year + 1\n month = 1\n } else {\n month = month + 1\n }\n this.settings.time = year + '_' + month\n }\n this.updateQueryString()\n\n if (this.settings.type === 'year' || this.settings.type === 'month') {\n this.yearMonthCalculate()\n }\n if (this.settings.type === 'domain' || this.settings.type === 'proposal' || this.settings.type === 'owner') {\n this.handlerNextPrevButton(this.settings.type, currentValue)\n this.proposalCalculate()\n }\n }\n\n proposalDetailsListUpdate () {\n if (this.settings.type === 'domain' || this.settings.type === 'owner') {\n this.summaryReportTarget.innerHTML = this.createSummaryTable(responseData.proposalInfos, this.settings.type === 'owner', this.settings.type === 'domain')\n this.handlerScrollerTable()\n } else if (this.settings.type === 'proposal') {\n this.summaryReportTarget.innerHTML = this.createSummaryTable(responseData.otherProposalInfos, true, false)\n this.handlerScrollerTable()\n }\n }\n\n yearMonthProposalListUpdate () {\n this.proposalReportTarget.innerHTML = this.createProposalDetailReport(responseData)\n }\n\n async proposalCalculate () {\n this.yearBreadcumbTarget.classList.add('d-none')\n if (this.settings.type === 'domain') {\n const domainDisp = this.settings.name.charAt(0).toUpperCase() + this.settings.name.slice(1)\n this.currentDetailTarget.textContent = domainDisp\n this.detailReportTitleTarget.textContent = 'Domain Detail Report - ' + domainDisp\n // set main report url\n this.toUpReportTarget.href = '/finance-report?pgroup=domains'\n } else if (this.settings.type === 'owner') {\n this.currentDetailTarget.textContent = this.settings.name\n this.detailReportTitleTarget.textContent = 'Author Detail Report - ' + this.settings.name\n this.toUpReportTarget.href = '/finance-report?pgroup=authors'\n } else {\n this.toUpReportTarget.href = '/finance-report'\n }\n if (this.settings.type === 'domain' || this.settings.type === 'proposal') {\n this.nextBtnTarget.classList.add('d-none')\n this.prevBtnTarget.classList.add('d-none')\n } else {\n this.prevBtnTarget.classList.remove('d-none')\n this.nextBtnTarget.classList.remove('d-none')\n }\n const url = `/api/finance-report/detail?type=${this.settings.type}&${this.settings.type === 'proposal' ? 'token=' + this.settings.token : 'name=' + this.settings.name}`\n let response\n requestCounter++\n const thisRequest = requestCounter\n if (hasCache(url)) {\n response = responseCache[url]\n } else {\n // response = await axios.get(url)\n response = await requestJSON(url)\n responseCache[url] = response\n if (thisRequest !== requestCounter) {\n // new request was issued while waiting.\n console.log('Response request different')\n }\n }\n if (!response) {\n this.monthlyAreaTarget.classList.add('d-none')\n this.yearlyAreaTarget.classList.add('d-none')\n if (this.settings.type === 'domain') {\n this.summaryAreaTarget.classList.add('d-none')\n }\n return\n }\n responseData = response\n this.monthlyAreaTarget.classList.remove('d-none')\n this.yearlyAreaTarget.classList.remove('d-none')\n if (this.settings.type === 'domain' || this.settings.type === 'owner') {\n this.summaryAreaTarget.classList.remove('d-none')\n this.summaryTableTitleTarget.textContent = 'Proposals'\n this.summaryReportTarget.innerHTML = this.createSummaryTable(response.proposalInfos, this.settings.type === 'owner', this.settings.type === 'domain')\n this.handlerScrollerTable()\n this.setDomainGeneralInfo(response, this.settings.type)\n if (this.settings.type === 'domain') {\n domainList = response.domainList\n } else {\n ownerList = response.ownerList\n }\n this.handlerNextPrevButton(this.settings.type === 'domain' ? 'domain' : 'owner', this.settings.name)\n }\n if (this.settings.type === 'proposal') {\n // show summary proposal list\n if (!response.otherProposalInfos || response.otherProposalInfos.length === 0) {\n this.summaryAreaTarget.classList.add('d-none')\n } else {\n this.summaryAreaTarget.classList.remove('d-none')\n this.summaryTableTitleTarget.textContent = 'Proposals with the same owner'\n this.summaryReportTarget.innerHTML = this.createSummaryTable(response.otherProposalInfos, true, false)\n this.handlerScrollerTable()\n }\n this.toVoteTarget.classList.remove('d-none')\n this.toDiscussionTarget.classList.remove('d-none')\n this.toVoteTarget.href = `/proposal/${this.settings.token}`\n this.toDiscussionTarget.href = `${this.politeiaUrl}/record/${this.settings.token.substring(0, 7)}`\n tokenList = response.tokenList\n this.handlerNextPrevButton('proposal', this.settings.token)\n const proposalName = response.proposalInfo ? response.proposalInfo.name : ''\n this.currentDetailTarget.textContent = proposalName\n this.detailReportTitleTarget.textContent = 'Proposal Detail Report - ' + proposalName\n this.proposalSumCardTarget.classList.remove('d-none')\n const remainingStr = response.proposalInfo.totalRemaining === 0.0 ? '<p>Status: <span class=\"fw-600\">Finished</span></p>' : `<p>Total Remaining (Est): <span class=\"fw-600\">$${humanize.formatToLocalString(response.proposalInfo.totalRemaining, 2, 2)}</span></p>`\n this.proposalSpanRowTarget.innerHTML = `<p>Owner: <a href=\"${'/finance-report/detail?type=owner&name=' + response.proposalInfo.author}\" class=\"fw-600 link-hover-underline\">${response.proposalInfo.author}</a></p>` +\n `<p>Domain: <a href=\"${'/finance-report/detail?type=domain&name=' + response.proposalInfo.domain}\" class=\"link-hover-underline fw-600\">${response.proposalInfo.domain.charAt(0).toUpperCase() + response.proposalInfo.domain.slice(1)}</a></p>` +\n `<p>Start Date: <span class=\"fw-600\">${response.proposalInfo.start}</span></p>` +\n `<p>End Date: <span class=\"fw-600\">${response.proposalInfo.end}</span></p>` +\n `<p>Budget: <span class=\"fw-600\">$${humanize.formatToLocalString(response.proposalInfo.budget, 2, 2)}</span></p>` +\n `<p>Total Spent (Est): <span class=\"fw-600\">$${humanize.formatToLocalString(response.proposalInfo.totalSpent, 2, 2)}</span></p>` + remainingStr\n } else {\n this.toVoteTarget.classList.add('d-none')\n this.toDiscussionTarget.classList.add('d-none')\n }\n // Create info of\n // create monthly table\n if (this.settings.type === 'owner') {\n this.monthlyAreaTarget.classList.add('d-none')\n this.yearlyAreaTarget.classList.add('d-none')\n } else {\n if (this.settings.type === 'proposal') {\n // if proposal, hide yearly summary\n this.yearlyAreaTarget.classList.add('d-none')\n } else {\n this.yearlyAreaTarget.classList.remove('d-none')\n this.yearlyReportTarget.innerHTML = this.createMonthYearTable(response, 'year')\n }\n this.monthlyAreaTarget.classList.remove('d-none')\n this.monthlyReportTarget.innerHTML = this.createMonthYearTable(response, 'month')\n }\n }\n\n handlerScrollerTable () {\n const tableWidthStr = $('#reportTable thead').css('width').replace('px', '')\n const tableWidth = parseFloat(tableWidthStr.trim())\n const parentContainerWidthStr = $('#summaryTableArea').css('width').replace('px', '')\n const parentContainerWidth = parseFloat(parentContainerWidthStr.trim())\n let hideScroller = false\n if (tableWidth < parentContainerWidth + 5) {\n $('#scroller').addClass('d-none')\n hideScroller = true\n } else {\n $('#scroller').removeClass('d-none')\n }\n this.summaryReportTarget.classList.add('proposal-table-padding')\n $('#reportTable').css('width', 'auto')\n $('html').css('overflow-x', 'hidden')\n // set overflow class\n $('#containerReportTable').addClass('of-x-hidden')\n $('#containerBody').addClass('of-x-hidden')\n $('#scrollerLong').css('width', (tableWidth + 25) + 'px')\n // set scroller width fit with container width\n $('#scroller').css('width', $('#summaryTableArea').css('width'))\n if (this.isMobile()) {\n $('#containerBody').css('overflow', 'scroll')\n this.summaryReportTarget.classList.remove('proposal-table-padding')\n $('#scroller').addClass('d-none')\n } else {\n this.summaryReportTarget.classList.add('proposal-table-padding')\n if (!hideScroller) {\n $('#scroller').removeClass('d-none')\n }\n }\n }\n\n setDomainGeneralInfo (data, type) {\n this.proposalSumCardTarget.classList.remove('d-none')\n let totalBudget = 0; let totalSpent = 0; let totalRemaining = 0\n if (data.proposalInfos && data.proposalInfos.length > 0) {\n data.proposalInfos.forEach((proposal) => {\n totalBudget += proposal.budget\n totalSpent += proposal.totalSpent\n totalRemaining += proposal.totalRemaining > 0 ? proposal.totalRemaining : 0\n })\n }\n this.proposalSpanRowTarget.innerHTML = `<p>Total Budget: <span class=\"fw-600\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</span></p>` +\n `<p>Total ${type === 'owner' ? 'Received' : 'Spent'} (Estimate):<span class=\"fw-600\">$${humanize.formatToLocalString(totalSpent, 2, 2)}</span></p>` +\n `<p>Total Remaining (Estimate): <span class=\"fw-600\">$${humanize.formatToLocalString(totalRemaining, 2, 2)}</span></p>`\n }\n\n handlerNextPrevButton (type, currentValue) {\n let handlerList\n if (type === 'domain') {\n handlerList = domainList\n } else if (type === 'proposal') {\n handlerList = tokenList\n } else if (type === 'owner') {\n handlerList = ownerList\n }\n\n if (!handlerList || handlerList.length < 1) {\n return\n }\n const indexOfNow = handlerList.indexOf(currentValue)\n if (indexOfNow < 0) {\n return\n }\n if (indexOfNow === 0) {\n // disable left array button\n this.prevBtnTarget.classList.add('disabled')\n this.prevBtnTarget.classList.remove('cursor-pointer')\n } else {\n this.prevBtnTarget.classList.remove('disabled')\n this.prevBtnTarget.classList.add('cursor-pointer')\n }\n if (indexOfNow === handlerList.length - 1) {\n this.nextBtnTarget.classList.add('disabled')\n this.nextBtnTarget.classList.remove('cursor-pointer')\n } else {\n this.nextBtnTarget.classList.remove('disabled')\n this.nextBtnTarget.classList.add('cursor-pointer')\n }\n }\n\n handlerYearMonthNextPrevButton () {\n const time = this.settings.time\n let prevBtnShow = true\n let nextBtnShow = true\n if (this.settings.type === 'year') {\n if (time === this.reportMinYear) {\n prevBtnShow = false\n }\n if (time === this.reportMaxYear) {\n nextBtnShow = false\n }\n } else if (this.settings.type === 'month') {\n const timeArr = this.settings.time.trim().split('_')\n const year = parseInt(timeArr[0])\n const month = parseInt(timeArr[1])\n if (year === this.reportMinYear && month === this.reportMinMonth) {\n prevBtnShow = false\n }\n if (year === this.reportMaxYear && month === this.reportMaxMonth) {\n nextBtnShow = false\n }\n }\n if (prevBtnShow) {\n this.prevBtnTarget.classList.remove('disabled')\n this.prevBtnTarget.classList.add('cursor-pointer')\n } else {\n this.prevBtnTarget.classList.add('disabled')\n this.prevBtnTarget.classList.remove('cursor-pointer')\n }\n if (nextBtnShow) {\n this.nextBtnTarget.classList.remove('disabled')\n this.nextBtnTarget.classList.add('cursor-pointer')\n } else {\n this.nextBtnTarget.classList.add('disabled')\n this.nextBtnTarget.classList.remove('cursor-pointer')\n }\n }\n\n createSummaryTable (data, hideAuthor, hideDomain) {\n $('#reportTable').css('width', '')\n if (!data) {\n return ''\n }\n let thead = '<thead>' +\n '<tr class=\"text-secondary finance-table-header\">' +\n '<th class=\"va-mid text-center month-col fs-13i fw-600 proposal-name-col\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByPName\">Name</label>' +\n `<span data-action=\"click->financedetail#sortByPName\" class=\"${(this.settings.stype === 'pname' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'pname' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n if (!hideDomain) {\n thead += '<th class=\"va-mid text-center fs-13i px-2 fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByDomain\">Domain</label>' +\n `<span data-action=\"click->financedetail#sortByDomain\" class=\"${(this.settings.stype === 'domain' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'domain' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n }\n if (!hideAuthor) {\n thead += '<th class=\"va-mid text-center fs-13i px-2 fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByAuthor\">Author</label>' +\n `<span data-action=\"click->financedetail#sortByAuthor\" class=\"${(this.settings.stype === 'author' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'author' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n }\n thead += '<th class=\"va-mid text-center fs-13i px-2 fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByStartDate\">Start Date</label>' +\n `<span data-action=\"click->financedetail#sortByStartDate\" class=\"${(this.settings.stype === 'startdt' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${(!this.settings.stype || this.settings.stype === '' || this.settings.stype === 'startdt') ? '' : 'c-grey-4'} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-center px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByEndDate\">End Date</label>' +\n `<span data-action=\"click->financedetail#sortByEndDate\" class=\"${(this.settings.stype === 'enddt' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'enddt' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByBudget\">Budget</label>' +\n `<span data-action=\"click->financedetail#sortByBudget\" class=\"${(this.settings.stype === 'budget' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'budget' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByDays\">Days</label>' +\n `<span data-action=\"click->financedetail#sortByDays\" class=\"${(this.settings.stype === 'days' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'days' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByAvg\">Monthly Avg (Est)</label>' +\n `<span data-action=\"click->financedetail#sortByAvg\" class=\"${(this.settings.stype === 'avg' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'avg' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortBySpent\">Total Spent (Est)</label>' +\n `<span data-action=\"click->financedetail#sortBySpent\" class=\"${(this.settings.stype === 'spent' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'spent' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600 pr-10i\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByRemaining\">Total Remaining (Est)</label>' +\n `<span data-action=\"click->financedetail#sortByRemaining\" class=\"${(this.settings.stype === 'remaining' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'remaining' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '</tr></thead>'\n\n let tbody = '<tbody>###</tbody>'\n let bodyList = ''\n let totalBudget = 0\n let totalAllSpent = 0\n let totalRemaining = 0\n // create tbody content\n const summaryList = this.sortSummary(data)\n for (let i = 0; i < summaryList.length; i++) {\n const summary = summaryList[i]\n const lengthInDays = this.getLengthInDay(summary)\n let monthlyAverage = summary.budget / lengthInDays\n if (lengthInDays < 30) {\n monthlyAverage = summary.budget\n } else {\n monthlyAverage = monthlyAverage * 30\n }\n totalBudget += summary.budget\n totalAllSpent += summary.totalSpent\n totalRemaining += summary.totalRemaining > 0 ? summary.totalRemaining : 0\n bodyList += `<tr class=\"${summary.totalRemaining > 0 ? 'summary-active-row' : 'proposal-summary-row'}\">` +\n `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=proposal&token=' + summary.token}\" class=\"link-hover-underline fs-13i\">${summary.name}</a></td>`\n if (!hideAuthor) {\n bodyList += `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=owner&name=' + summary.author}\" class=\"link-hover-underline fs-13i\">${summary.author}</a></td>`\n }\n if (!hideDomain) {\n bodyList += `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + summary.domain}\" class=\"link-hover-underline fs-13i\">${summary.domain.charAt(0).toUpperCase() + summary.domain.slice(1)}</a></td>`\n }\n bodyList += `<td class=\"va-mid text-center fs-13i\">${summary.start}</td>` +\n `<td class=\"va-mid text-center fs-13i\">${summary.end}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(summary.budget, 2, 2)}</td>` +\n `<td class=\"va-mid text-right fs-13i\">${lengthInDays}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(monthlyAverage, 2, 2)}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">${summary.totalSpent > 0 ? '$' + humanize.formatToLocalString(summary.totalSpent, 2, 2) : ''}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i pr-10i\">${summary.totalRemaining > 0 ? '$' + humanize.formatToLocalString(summary.totalRemaining, 2, 2) : '-'}</td>` +\n '</tr>'\n }\n const totalColSpan = hideAuthor && hideDomain ? '3' : ((!hideAuthor && hideDomain) || (hideAuthor && !hideDomain) ? '4' : '5')\n bodyList += '<tr class=\"text-secondary finance-table-header finance-table-footer last-row-header\">' +\n `<td class=\"va-mid text-center fw-600 fs-13i\" colspan=\"${totalColSpan}\">Total</td>` +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</td>` +\n '<td>-</td><td>-</td>' +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalAllSpent > 0 ? '$' + humanize.formatToLocalString(totalAllSpent, 2, 2) : '-'}</td>` +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalRemaining > 0 ? '$' + humanize.formatToLocalString(totalRemaining, 2, 2) : '-'}</td>` +\n '</tr>'\n tbody = tbody.replace('###', bodyList)\n return thead + tbody\n }\n\n getLengthInDay (summary) {\n const start = Date.parse(summary.start)\n const end = Date.parse(summary.end)\n const oneDay = 24 * 60 * 60 * 1000\n\n return Math.round(Math.abs((end - start) / oneDay))\n }\n\n getYearDataFromMonthData (data) {\n const result = []\n const yearDataMap = new Map()\n const yearDataDcrMap = new Map()\n const yearArr = []\n data.monthData.forEach((item) => {\n const monthArr = item.month.split('-')\n if (monthArr.length !== 2) {\n return\n }\n const year = monthArr[0]\n if (!yearArr.includes(year)) {\n yearArr.push(year)\n }\n if (yearDataMap.has(year)) {\n yearDataMap.set(year, yearDataMap.get(year) + item.expense)\n yearDataDcrMap.set(year, yearDataDcrMap.get(year) + item.expenseDcr)\n } else {\n yearDataMap.set(year, item.expense)\n yearDataDcrMap.set(year, item.expenseDcr)\n }\n })\n\n yearArr.forEach((year) => {\n const object = {\n month: year,\n expense: yearDataMap.get(year),\n expenseDcr: yearDataDcrMap.get(year)\n }\n result.push(object)\n })\n return result\n }\n\n getFullTimeParam (timeInput, splitChar) {\n const timeArr = timeInput.split(splitChar)\n let timeParam = ''\n if (timeArr.length === 2) {\n timeParam = timeArr[0] + '_'\n // if month < 10\n if (timeArr[1].charAt(0) === '0') {\n timeParam += timeArr[1].substring(1, timeArr[1].length)\n } else {\n timeParam += timeArr[1]\n }\n }\n return timeParam\n }\n\n createMonthYearTable (data, type) {\n let handlerData = data.monthData\n if (type === 'year') {\n handlerData = this.getYearDataFromMonthData(data)\n }\n let breakTable = 7\n if (type === 'year' || this.settings.type === 'proposal') {\n // No break\n breakTable = 50\n }\n return this.createTableDetailForMonthYear(handlerData, breakTable, type)\n }\n\n createTableDetailForMonthYear (handlerData, breakTable, type) {\n let allTable = ''\n let count = 0\n let stepNum = 0\n for (let i = 0; i < handlerData.length; i++) {\n if (count === 0) {\n allTable += `<table class=\"table monthly v3 border-grey-2 w-auto ${stepNum > 0 ? 'ms-2' : ''}\" style=\"height: 40px;\">` +\n '<col><colgroup span=\"2\"></colgroup><thead>' +\n `<tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">${type === 'year' ? 'Year' : 'Month'}</th>` +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Spent (Est)</th>'\n allTable += (this.settings.type === 'year' ? '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Actual Spent</th>' : '') + '</tr>'\n allTable += '<tr class=\"text-secondary finance-table-header\">' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>'\n allTable += this.settings.type === 'year' ? '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' : ''\n allTable += '</tr></thead><tbody>'\n }\n const dataMonth = handlerData[i]\n let isFuture = false\n const timeYearMonth = this.getYearMonthArray(dataMonth.month, '-')\n const nowDate = new Date()\n const year = nowDate.getUTCFullYear()\n const month = nowDate.getUTCMonth() + 1\n if (type === 'year') {\n isFuture = timeYearMonth[0] > year\n } else if (type === 'month') {\n const compareDataTime = timeYearMonth[0] * 12 + timeYearMonth[1]\n const compareNowTime = year * 12 + month\n isFuture = compareDataTime > compareNowTime\n }\n allTable += `<tr class=\"odd-even-row ${isFuture ? 'future-row-data' : ''}\">`\n const timeParam = this.getFullTimeParam(dataMonth.month, '-')\n allTable += `<td class=\"text-left px-2 fs-13i\"><a class=\"link-hover-underline fs-13i fw-600\" style=\"text-align: right; width: 80px;\" href=\"${'/finance-report/detail?type=' + type + '&time=' + (timeParam === '' ? dataMonth.month : timeParam)}\">${dataMonth.month}</a></td>`\n allTable += `<td class=\"text-right px-2 fs-13i\">${dataMonth.expense !== 0.0 ? '$' + humanize.formatToLocalString(dataMonth.expense, 2, 2) : '-'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">${dataMonth.expenseDcr !== 0.0 ? humanize.formatToLocalString(dataMonth.expenseDcr / 1e8, 2, 2) : '-'}</td>`\n if (this.settings.type === 'year') {\n allTable += `<td class=\"text-right px-2 fs-13i\">${dataMonth.actualExpense !== 0.0 ? '$' + humanize.formatToLocalString(dataMonth.actualExpense, 2, 2) : '-'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">${dataMonth.actualExpenseDcr !== 0.0 ? humanize.formatToLocalString(dataMonth.actualExpenseDcr / 1e8, 2, 2) : '-'}</td>`\n }\n allTable += '</tr>'\n if (count === breakTable) {\n allTable += '</tbody>'\n allTable += '</table>'\n count = 0\n } else {\n count++\n }\n stepNum++\n }\n if (count !== breakTable) {\n allTable += '</tbody>'\n allTable += '</table>'\n }\n return allTable\n }\n\n // Calculate and response\n async yearMonthCalculate () {\n // init report time range\n await this.initReportTimeRange()\n this.handlerYearMonthNextPrevButton()\n // set up navigative to main report and up level of time\n let monthYearDisplay = this.settings.time.toString().replace('_', '-')\n this.toUpReportTarget.href = '/finance-report'\n let reportType\n if (this.settings.type === 'year') {\n this.yearBreadcumbTarget.classList.add('d-none')\n reportType = 'Yearly Summary Report'\n } else {\n reportType = 'Monthly Summary Report'\n this.yearBreadcumbTarget.classList.remove('d-none')\n if (this.settings.time) {\n const timeArr = this.settings.time.trim().split('_')\n if (timeArr.length >= 2) {\n const year = parseInt(timeArr[0])\n this.yearBreadcumbTarget.href = '/finance-report/detail?type=year&time=' + year\n this.yearBreadcumbTarget.textContent = year\n }\n }\n const myArr = this.settings.time.toString().split('_')\n if (myArr.length >= 2) {\n const monthNumber = Number(myArr[1])\n const date = new Date()\n date.setMonth(monthNumber - 1)\n monthYearDisplay = date.toLocaleString('en-US', { month: 'long' }) + ' ' + myArr[0]\n }\n }\n this.currentDetailTarget.textContent = monthYearDisplay\n this.detailReportTitleTarget.textContent = reportType + ' - ' + monthYearDisplay\n const url = `/api/finance-report/detail?type=${this.settings.type}&time=${this.settings.time}`\n let response\n requestCounter++\n const thisRequest = requestCounter\n if (hasCache(url)) {\n response = responseCache[url]\n } else {\n // response = await axios.get(url)\n response = await requestJSON(url)\n responseCache[url] = response\n if (thisRequest !== requestCounter) {\n // new request was issued while waiting.\n console.log('Response request different')\n }\n }\n\n if (!response) {\n this.proposalAreaTarget.classList.add('d-none')\n return\n }\n responseData = response\n this.proposalReportTarget.innerHTML = this.createProposalDetailReport(response)\n if (response.proposalTotal > 0) {\n this.proposalTopSummaryTarget.classList.remove('d-none')\n this.handlerSummaryArea(response)\n this.createDomainsSummaryTable(response)\n } else {\n this.proposalTopSummaryTarget.classList.add('d-none')\n }\n this.createYearMonthTopSummary(response)\n // create month data list if type is year\n if (this.settings.type === 'year') {\n if (response.monthlyResultData && response.monthlyResultData.length > 0) {\n this.monthlyAreaTarget.classList.remove('d-none')\n this.monthlyReportTarget.innerHTML = this.createTableDetailForMonthYear(response.monthlyResultData, 12, 'month')\n } else {\n this.monthlyAreaTarget.classList.add('d-none')\n }\n }\n }\n\n handlerSummaryArea (data) {\n this.expendiduteValueTarget.textContent = '$' + humanize.formatToLocalString(data.proposalTotal, 2, 2)\n // display proposal spent value\n if (!data.reportDetail || data.reportDetail.length === 0) {\n return\n }\n let totalSpent = 0\n let totalSpentDCR = 0\n for (let i = 0; i < data.reportDetail.length; i++) {\n const report = data.reportDetail[i]\n totalSpent += report.spentEst > 0 ? report.spentEst : 0\n totalSpentDCR += report.totalSpentDcr > 0 ? report.totalSpentDcr : 0\n }\n if (totalSpent > 0) {\n this.proposalSpentAreaTarget.classList.remove('d-none')\n this.proposalSpentTarget.textContent = '$' + humanize.formatToLocalString(totalSpent, 2, 2) + ` (${humanize.formatToLocalString(totalSpentDCR, 2, 2)} DCR)`\n } else {\n this.proposalSpentAreaTarget.classList.add('d-none')\n }\n // display treasury spent value\n if (totalSpent > 0) {\n this.treasurySpentAreaTarget.classList.remove('d-none')\n this.unaccountedValueAreaTarget.classList.remove('d-none')\n const combinedUSD = data.treasurySummary.outvalueUSD + data.legacySummary.outvalueUSD\n const combinedDCR = data.treasurySummary.outvalue + data.legacySummary.outvalue\n this.treasurySpentTarget.textContent = '$' + humanize.formatToLocalString(combinedUSD, 2, 2) + ` (${humanize.formatToLocalString(combinedDCR / 100000000, 2, 2)} DCR)`\n const deltaUSD = combinedUSD - totalSpent\n const deltaDCR = combinedDCR / 100000000 - totalSpentDCR\n this.unaccountedValueTarget.textContent = (deltaUSD < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(deltaUSD), 2, 2) + ` (${humanize.formatToLocalString(deltaDCR, 2, 2)} DCR, ${deltaUSD < 0 ? 'Missing' : 'Unaccounted'})`\n } else {\n this.treasurySpentAreaTarget.classList.add('d-none')\n this.unaccountedValueAreaTarget.classList.add('d-none')\n }\n }\n\n createDomainDetailReport (data) {\n if (!data.reportDetail || data.reportDetail.length === 0) {\n return ''\n }\n const domainMap = new Map()\n data.reportDetail.forEach((detail) => {\n if (domainMap.has(detail.domain)) {\n domainMap.set(detail.domain, domainMap.get(detail.domain) + detail.expense)\n } else {\n domainMap.set(detail.domain, detail.expense)\n }\n })\n let tbody = '<tbody>###</tbody>'\n\n let bodyList = ''\n for (let i = 0; i < data.domainList.length; i++) {\n const domain = data.domainList[i]\n bodyList += '<tr>'\n // td domain name\n bodyList += `<td class=\"text-left fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + domain}\" class=\"link-hover-underline fs-13i\">${domain.charAt(0).toUpperCase() + domain.slice(1)}</a></td>`\n bodyList += `<td class=\"text-right fs-13i\">$${humanize.formatToLocalString(domainMap.get(domain), 2, 2)}</td>`\n bodyList += '</tr>'\n }\n tbody = tbody.replace('###', bodyList)\n return tbody\n }\n\n createYearMonthTopSummary (data) {\n if (data.treasurySummary.invalue <= 0 && data.treasurySummary.outvalue <= 0 && data.legacySummary.invalue <= 0 && data.legacySummary.outvalue <= 0) {\n this.totalSpanRowTarget.classList.add('d-none')\n return\n }\n this.totalSpanRowTarget.classList.remove('d-none')\n let innerHtml = '<col><colgroup span=\"2\"></colgroup>' +\n '<thead><tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">Treasury Type</th>' +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Value</th></tr>' +\n '<tr class=\"text-secondary finance-table-header\"><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th></tr></thead><tbody>'\n innerHtml += data.treasurySummary.invalue > 0\n ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Decentralized Income</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.treasurySummary.invalue / 100000000), 3, 3) + ' DCR'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.treasurySummary.invalueUSD), 2, 2)}</td></tr>`\n : ''\n innerHtml += data.treasurySummary.outvalue > 0\n ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Decentralized Outgoing</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.treasurySummary.outvalue / 100000000), 3, 3) + ' DCR'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.treasurySummary.outvalueUSD), 2, 2)}</td></tr>`\n : ''\n innerHtml += data.legacySummary.invalue > 0\n ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Admin Income</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.legacySummary.invalue / 100000000), 3, 3) + ' DCR'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.legacySummary.invalueUSD), 2, 2)}</td></tr>`\n : ''\n innerHtml += data.legacySummary.outvalue > 0\n ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Admin Outgoing</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.legacySummary.outvalue / 100000000), 3, 3) + ' DCR'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.legacySummary.outvalueUSD), 2, 2)}</td></tr>`\n : ''\n innerHtml += '</tbody>'\n this.yearMonthInfoTableTarget.innerHTML = innerHtml\n }\n\n createDomainsSummaryTable (data) {\n const domainDataMap = this.getDomainsSummaryData(data)\n let innerHtml = '<col><colgroup span=\"2\"></colgroup>' +\n '<thead><tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">Domain</th>' +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Spent (Est)</th></tr>' +\n '<tr class=\"text-secondary finance-table-header\"><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th></tr></thead><tbody>'\n let totalDCR = 0; let totalUSD = 0\n let hasData = false\n domainDataMap.forEach((val, key) => {\n if (val.valueDCR !== 0 || val.valueUSD !== 0) {\n const valueDCR = val.valueDCR\n totalDCR += val.valueDCR\n const valueUSD = val.valueUSD\n totalUSD += val.valueUSD\n hasData = true\n innerHtml += `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\"><a href=\"/finance-report/detail?type=domain&name=${key}\" class=\"link-hover-underline fs-13i\">${key.charAt(0).toUpperCase() + key.slice(1)}</a></td>` +\n `<td class=\"text-right px-2 fs-13i\">${valueDCR > 0 ? humanize.formatToLocalString(valueDCR, 2, 2) : '-'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">$${valueUSD > 0 ? humanize.formatToLocalString(valueUSD, 2, 2) : '-'}</td></tr>`\n }\n })\n if (!hasData) {\n this.domainSummaryAreaTarget.classList.add('d-none')\n return\n }\n this.domainSummaryAreaTarget.classList.remove('d-none')\n innerHtml += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n '<td class=\"va-mid text-center fw-600 fs-13i\">Total</td>' +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalDCR > 0 ? humanize.formatToLocalString(totalDCR, 2, 2) : '-'}</td>` +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalUSD > 0 ? '$' + humanize.formatToLocalString(totalUSD, 2, 2) : '-'}</td>` +\n '</tr>'\n innerHtml += '</tbody>'\n this.domainSummaryTableTarget.innerHTML = innerHtml\n }\n\n sortByPName () {\n this.proposalSort('pname')\n }\n\n sortByAuthor () {\n this.proposalSort('author')\n }\n\n sortByDomain () {\n this.proposalSort('domain')\n }\n\n sortByStartDate () {\n this.proposalSort('startdt')\n }\n\n sortByEndDate () {\n this.proposalSort('enddt')\n }\n\n sortBySpent () {\n this.proposalSort('spent')\n }\n\n sortByBudget () {\n this.proposalSort('budget')\n }\n\n sortByDays () {\n this.proposalSort('days')\n }\n\n sortByAvg () {\n this.proposalSort('avg')\n }\n\n sortByRemaining () {\n this.proposalSort('remaining')\n }\n\n proposalSort (type) {\n this.settings.stype = type\n this.settings.order = this.settings.order === 'esc' ? 'desc' : 'esc'\n if (this.settings.type === 'year' || this.settings.type === 'month') {\n this.yearMonthProposalListUpdate()\n } else {\n this.proposalDetailsListUpdate()\n }\n }\n\n createProposalDetailReport (data) {\n if (!data.reportDetail || data.reportDetail.length === 0) {\n this.proposalAreaTarget.classList.add('d-none')\n return ''\n }\n\n if (!this.settings.stype || this.settings.stype === '') {\n this.settings.stype = 'pname'\n }\n\n this.proposalAreaTarget.classList.remove('d-none')\n const thead = '<thead>' +\n '<tr class=\"text-secondary finance-table-header\">' +\n '<th class=\"va-mid text-center px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByPName\">Proposal Name</label>' +\n `<span data-action=\"click->financedetail#sortByPName\" class=\"${(this.settings.stype === 'pname' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'pname' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-center px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByDomain\">Domain</label>' +\n `<span data-action=\"click->financedetail#sortByDomain\" class=\"${(this.settings.stype === 'domain' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'domain' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n `<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortBySpent\">This ${this.settings.type === 'year' ? 'Year' : 'Month'} (Est)</label>` +\n `<span data-action=\"click->financedetail#sortBySpent\" class=\"${(this.settings.stype === 'spent' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'spent' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '</tr></thead>'\n\n let tbody = '<tbody>###</tbody>'\n let bodyList = ''\n let totalExpense = 0\n // sort by startdt\n const summaryList = this.sortSummary(data.reportDetail)\n for (let i = 0; i < summaryList.length; i++) {\n bodyList += '<tr class=\"odd-even-row\">'\n const report = summaryList[i]\n // add proposal name\n bodyList += '<td class=\"va-mid px-2 text-left fs-13i\">' +\n `<a href=\"${'/finance-report/detail?type=proposal&token=' + report.token}\" class=\"link-hover-underline fs-13i d-block\">${report.name}</a></td>` +\n `<td class=\"va-mid text-center px-2 fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + report.domain}\" class=\"link-hover-underline fs-13i\">${report.domain.charAt(0).toUpperCase() + report.domain.slice(1)}</a></td>` +\n '<td class=\"va-mid text-right px-2 fs-13i\">' +\n `${report.totalSpent > 0 ? '$' + humanize.formatToLocalString(report.totalSpent, 2, 2) : ''}</td></tr>`\n totalExpense += report.totalSpent\n }\n\n bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n '<td class=\"va-mid text-center fw-600 fs-13i\" colspan=\"2\">Total</td>' +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalExpense > 0 ? '$' + humanize.formatToLocalString(totalExpense, 2, 2) : ''}</td>` +\n '</tr>'\n tbody = tbody.replace('###', bodyList)\n return thead + tbody\n }\n\n getDomainsSummaryData (data) {\n const result = new Map()\n if (!data.reportDetail || data.reportDetail.length === 0) {\n return result\n }\n for (let i = 0; i < data.reportDetail.length; i++) {\n const report = data.reportDetail[i]\n const domain = report.domain\n if (result.has(domain)) {\n const detailData = {}\n const existData = result.get(domain)\n detailData.valueDCR = existData.valueDCR + (report.totalSpentDcr > 0 ? report.totalSpentDcr : 0)\n detailData.valueUSD = existData.valueUSD + (report.spentEst > 0 ? report.spentEst : 0)\n result.set(domain, detailData)\n } else {\n const detailData = {}\n detailData.valueDCR = report.totalSpentDcr > 0 ? report.totalSpentDcr : 0\n detailData.valueUSD = report.spentEst > 0 ? report.spentEst : 0\n result.set(domain, detailData)\n }\n }\n return result\n }\n\n sortSummary (summary) {\n if (!summary || summary.length === 0) {\n return\n }\n const _this = this\n if (this.settings.stype === 'domain') {\n return this.sortSummaryByDomain(summary)\n }\n summary.sort(function (a, b) {\n let aData = null\n let bData = null\n let alength\n let blength\n switch (_this.settings.stype) {\n case 'pname':\n aData = a.name\n bData = b.name\n break\n case 'author':\n aData = a.author\n bData = b.author\n break\n case 'budget':\n aData = a.budget\n bData = b.budget\n break\n case 'spent':\n aData = a.totalSpent\n bData = b.totalSpent\n break\n case 'remaining':\n aData = a.totalRemaining\n bData = b.totalRemaining\n break\n case 'days':\n aData = _this.getLengthInDay(a)\n bData = _this.getLengthInDay(b)\n break\n case 'avg':\n alength = _this.getLengthInDay(a)\n blength = _this.getLengthInDay(b)\n aData = (a.budget / alength) * 30\n bData = (b.budget / blength) * 30\n break\n case 'enddt':\n aData = Date.parse(a.end)\n bData = Date.parse(b.end)\n break\n default:\n aData = Date.parse(a.start)\n bData = Date.parse(b.start)\n break\n }\n\n if (aData > bData) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (aData < bData) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return summary\n }\n\n sortSummaryByDomain (summary) {\n if (!summary) {\n return\n }\n const _this = this\n summary.sort(function (a, b) {\n if (a.domain > b.domain) {\n return _this.settings.order === 'desc' ? -1 : 1\n } else if (a.domain < b.domain) {\n return _this.settings.order === 'desc' ? 1 : -1\n } else {\n if (a.name > b.name) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (a.name < b.name) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n }\n return 0\n })\n\n return summary\n }\n\n getYearMonthArray (timeInput, splitChar) {\n const timeArr = timeInput.split(splitChar)\n const result = []\n if (timeArr.length < 2) {\n result.push(parseInt(timeArr[0]))\n return result\n }\n result.push(parseInt(timeArr[0]))\n result.push(parseInt(timeArr[1]))\n return result\n }\n}\n","import TurboQuery from '../helpers/turbolinks_helper'\nimport { requestJSON } from '../helpers/http'\nimport humanize from '../helpers/humanize_helper'\nimport { isEmpty } from 'lodash-es'\nimport { getDefault } from '../helpers/module_helper'\nimport { padPoints, sizedBarPlotter } from '../helpers/chart_helper'\nimport Zoom from '../helpers/zoom_helper'\nimport FinanceReportController from './financebase_controller.js'\n\nconst responseCache = {}\nlet requestCounter = 0\nlet responseData\nlet proposalResponse = null\nlet treasuryResponse = null\nlet isSearching = false\nlet domainChartData = null\nlet domainChartYearData = null\nlet domainYearData = null\nlet combinedChartData = null\nlet combinedChartYearData = null\nlet combinedData = null\nlet combinedAvgData = null\nlet combinedYearData = null\nlet combineBalanceMap = null\nlet combinedYearlyBalanceMap = null\nlet treasuryBalanceMap = null\nlet treasuryYearlyBalanceMap = null\nlet adminBalanceMap = null\nlet adminYearlyBalanceMap = null\nlet treasurySummaryMap = null\nlet redrawChart = true\nlet domainChartZoom\nlet treasuryChartZoom\nlet domainChartBin\nlet treasuryChartBin\nlet domainChartFlow\nlet treasuryChartFlow\nlet combinedChartZoom\nlet combinedChartBin\nlet combinedChartFlow\nlet adminChartZoom\nlet adminChartBin\nlet adminChartFlow\nlet detailMonthlySummary\nlet yearList\n\n// report detail variable\nconst responseDetailCache = {}\nlet requestDetailCounter = 0\nlet responseDetailData\nlet mainReportSettingsState\nlet detailReportSettingsState\nlet mainReportInitialized = false\n\nfunction hasDetailCache (k) {\n if (!responseDetailCache[k]) return false\n const expiration = new Date(responseDetailCache[k].expiration)\n return expiration > new Date()\n}\n\nconst proposalNote = '*The data is the daily cost estimate based on the total budget divided by the total number of proposals days.'\nlet treasuryNote = ''\n\nfunction hasCache (k) {\n if (!responseCache[k]) return false\n const expiration = new Date(responseCache[k].expiration)\n return expiration > new Date()\n}\n\n// start function and variable for chart\nconst blockDuration = 5 * 60000\nlet Dygraph // lazy loaded on connect\n\nfunction txTypesFunc (d, binSize) {\n const p = []\n\n d.time.map((n, i) => {\n p.push([new Date(n), d.sentRtx[i], d.receivedRtx[i], d.tickets[i], d.votes[i], d.revokeTx[i]])\n })\n\n padPoints(p, binSize)\n\n return p\n}\n\nfunction amountFlowProcessor (d, binSize) {\n const flowData = []\n const balanceData = []\n let balance = 0\n\n d.time.map((n, i) => {\n const v = d.net[i]\n let netReceived = 0\n let netSent = 0\n\n v > 0 ? (netReceived = v) : (netSent = (v * -1))\n flowData.push([new Date(n), d.received[i], d.sent[i], netReceived, netSent])\n balance += v\n balanceData.push([new Date(n), balance])\n })\n\n padPoints(flowData, binSize)\n padPoints(balanceData, binSize, true)\n\n return {\n flow: flowData,\n balance: balanceData\n }\n}\n\nfunction domainChartProcessor (d, binSize) {\n const flowData = []\n\n d.time.map((n, i) => {\n flowData.push([new Date(n), d.marketing[i], d.development[i]])\n })\n\n padPoints(flowData, binSize)\n\n return {\n flow: flowData\n }\n}\n\nfunction customizedFormatter (data) {\n let xHTML = ''\n if (data.xHTML !== undefined) {\n xHTML = humanize.date(data.x, false, true)\n }\n let html = this.getLabels()[0] + ': ' + xHTML\n data.series.map((series) => {\n if (series.color === undefined) return ''\n // Skip display of zeros\n if (series.y === 0) return ''\n const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n html += '<br>' + series.dashHTML + l + ': ' + (isNaN(series.y) ? '' : series.y + ' DCR') + '</span> '\n })\n return html\n}\n\nfunction domainChartFormatter (data) {\n let xHTML = ''\n if (data.xHTML !== undefined) {\n xHTML = humanize.date(data.x, false, true)\n }\n let html = this.getLabels()[0] + ': ' + xHTML\n data.series.map((series) => {\n if (series.color === undefined) return ''\n // Skip display of zeros\n if (series.y === 0) return ''\n const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n html += '<br>' + series.dashHTML + l + ': $' + (isNaN(series.y) ? '' : humanize.formatToLocalString(Number(series.y), 2, 2)) + '</span> '\n })\n return html\n}\n\nlet commonOptions, amountFlowGraphOptions, balanceGraphOptions, domainGraphOptions\n// Cannot set these until DyGraph is fetched.\nfunction createOptions () {\n commonOptions = {\n digitsAfterDecimal: 8,\n showRangeSelector: true,\n rangeSelectorHeight: 20,\n rangeSelectorForegroundStrokeColor: '#999',\n rangeSelectorBackgroundStrokeColor: '#777',\n legend: 'follow',\n fillAlpha: 0.9,\n labelsKMB: true,\n labelsUTC: true,\n stepPlot: false,\n rangeSelectorPlotFillColor: 'rgba(128, 128, 128, 0.3)',\n rangeSelectorPlotFillGradientColor: 'transparent',\n rangeSelectorPlotStrokeColor: 'rgba(128, 128, 128, 0.7)',\n rangeSelectorPlotLineWidth: 2\n }\n\n amountFlowGraphOptions = {\n labels: ['Date', 'Income', 'Outgoing', 'Net Received', 'Net Spent'],\n colors: ['#2971FF', '#2ED6A1', '#41BF53', '#FF0090'],\n ylabel: 'Total (DCR)',\n visibility: [true, false, false, false],\n legendFormatter: customizedFormatter,\n stackedGraph: true,\n fillGraph: false\n }\n\n domainGraphOptions = {\n labels: ['Date', 'Marketing', 'Development'],\n colors: ['#2971FF', '#2ED6A1'],\n ylabel: 'Total Spend (USD)',\n visibility: [true, true],\n legendFormatter: domainChartFormatter,\n stackedGraph: true,\n fillGraph: false\n }\n\n balanceGraphOptions = {\n labels: ['Date', 'Balance'],\n colors: ['#41BF53'],\n ylabel: 'Balance (DCR)',\n plotter: [Dygraph.Plotters.linePlotter, Dygraph.Plotters.fillPlotter],\n legendFormatter: customizedFormatter,\n stackedGraph: false,\n visibility: [true],\n fillGraph: true,\n stepPlot: true\n }\n}\n\nlet ctrl = null\n// end function and varibable for chart\n\nexport default class extends FinanceReportController {\n static get targets () {\n return ['report', 'colorNoteRow', 'colorLabel', 'colorDescription',\n 'interval', 'groupBy', 'searchInput', 'searchBtn', 'clearSearchBtn', 'searchBox', 'nodata',\n 'treasuryToggleArea', 'reportDescription', 'reportAllPage',\n 'activeProposalSwitchArea', 'options', 'flow', 'zoom', 'cinterval', 'chartbox', 'noconfirms',\n 'chart', 'chartLoader', 'expando', 'littlechart', 'bigchart', 'fullscreen', 'treasuryChart', 'treasuryChartTitle',\n 'yearSelect', 'ttype', 'yearSelectTitle', 'treasuryTypeTitle', 'groupByLabel', 'typeSelector',\n 'amountFlowOption', 'balanceOption', 'chartHeader', 'outgoingExp', 'nameMatrixSwitch',\n 'weekZoomBtn', 'dayZoomBtn', 'weekGroupBtn', 'dayGroupBtn', 'sentRadioLabel', 'receivedRadioLabel',\n 'netSelectRadio', 'selectTreasuryType', 'proposalSelectType', 'proposalType', 'listLabel', 'monthLabel',\n 'currentBalanceArea', 'treasuryBalanceDisplay', 'treasuryLegacyPercent', 'treasuryTypeRate', 'chartData',\n 'specialTreasury', 'decentralizedData', 'adminData', 'domainFutureRow', 'futureLabel', 'reportType', 'pageLoader',\n 'treasuryBalanceRate', 'treasuryLegacyRate', 'decentralizedDataRate', 'adminDataRate', 'decentralizedTitle', 'adminTitle',\n 'treasuryBalanceCard', 'subTreasuryTitle', 'noDetailData', 'reportArea', 'detailReportArea', 'mainReportTopArea', 'proposalSumCard',\n 'proposalSpanRow', 'toVote', 'toDiscussion', 'totalSpanRow', 'expendiduteValue', 'yearMonthInfoTable', 'noReport', 'domainArea',\n 'domainReport', 'proposalArea', 'proposalReport', 'monthlyArea', 'monthlyReport', 'yearlyArea', 'yearlyReport', 'sameOwnerProposalArea',\n 'otherProposalSummary', 'summaryArea', 'summaryReport', 'reportParentContainer', 'yearMonthSelector', 'topYearSelect', 'topMonthSelect',\n 'detailReportTitle', 'prevBtn', 'nextBtn', 'proposalTopSummary', 'domainSummaryTable', 'domainSummaryArea', 'proposalSpent',\n 'treasurySpent', 'unaccountedValue', 'proposalSpentArea', 'treasurySpentArea', 'unaccountedValueArea', 'viewMode', 'useMonthAvgToggle',\n 'detailGroupBy', 'dinterval', 'detailMonthlyDesc']\n }\n\n async connectData () {\n ctrl = this\n ctrl.retrievedData = {}\n ctrl.ajaxing = false\n ctrl.requestedChart = false\n // Bind functions that are passed as callbacks\n ctrl.zoomCallback = ctrl._zoomCallback.bind(ctrl)\n ctrl.drawCallback = ctrl._drawCallback.bind(ctrl)\n ctrl.lastEnd = 0\n ctrl.bindElements()\n if (this.settings.type === 'bytime') {\n return\n }\n // These two are templates for query parameter sets.\n // When url query parameters are set, these will also be updated.\n ctrl.state = Object.assign({}, ctrl.settings)\n\n // Parse stimulus data\n const cdata = ctrl.data\n ctrl.dcrAddress = cdata.get('dcraddress')\n ctrl.balance = cdata.get('balance')\n\n if (ctrl.isTreasuryReport()) {\n ctrl.settings.zoom = ctrl.getTreasuryZoomStatus()\n ctrl.settings.bin = ctrl.getTreasuryBinStatus()\n ctrl.settings.flow = ctrl.getTreasuryFlowStatus()\n } else if (ctrl.isDomainType()) {\n ctrl.settings.zoom = domainChartZoom || ctrl.settings.zoom\n ctrl.settings.bin = domainChartBin || ctrl.settings.bin\n ctrl.settings.flow = domainChartFlow || ctrl.settings.flow\n } else {\n ctrl.settings.zoom = ''\n ctrl.settings.bin = ctrl.defaultSettings.bin\n ctrl.settings.flow = ctrl.defaultSettings.flow\n }\n if (ctrl.isNullValue(ctrl.optionsTarget.value)) {\n ctrl.optionsTarget.value = 'balance'\n }\n // Get initial view settings from the url\n ctrl.setChartType()\n if (!ctrl.isNullValue(ctrl.settings.flow)) {\n ctrl.setFlowChecks()\n } else {\n ctrl.settings.flow = ctrl.defaultSettings.flow\n ctrl.setFlowChecks()\n }\n if (!ctrl.isNullValue(ctrl.settings.zoom)) {\n ctrl.zoomButtons.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n }\n if (ctrl.isNullValue(ctrl.settings.bin)) {\n ctrl.settings.bin = ctrl.getBin()\n }\n if (ctrl.isNullValue(ctrl.settings.chart) || !ctrl.validChartType(ctrl.settings.chart)) {\n ctrl.settings.chart = ctrl.chartType\n }\n Dygraph = await getDefault(\n import('../vendor/dygraphs.min.js')\n )\n ctrl.currentTType = ctrl.settings.ttype\n ctrl.changedTType = null\n this.calculate()\n }\n\n getTreasuryZoomStatus () {\n switch (this.settings.ttype) {\n case 'current':\n return treasuryChartZoom || this.settings.zoom\n case 'legacy':\n return adminChartZoom || this.settings.zoom\n default:\n return combinedChartZoom || this.settings.zoom\n }\n }\n\n getTreasuryBinStatus () {\n switch (this.settings.ttype) {\n case 'current':\n return treasuryChartBin || this.settings.bin\n case 'legacy':\n return adminChartBin || this.settings.bin\n default:\n return combinedChartBin || this.settings.bin\n }\n }\n\n getTreasuryFlowStatus () {\n switch (this.settings.ttype) {\n case 'current':\n return treasuryChartFlow || this.settings.flow\n case 'legacy':\n return adminChartFlow || this.settings.flow\n default:\n return combinedChartFlow || this.settings.flow\n }\n }\n\n setTreasuryZoomStatus (zoom) {\n switch (this.settings.ttype) {\n case 'current':\n treasuryChartZoom = zoom\n break\n case 'legacy':\n adminChartZoom = zoom\n break\n default:\n combinedChartZoom = zoom\n }\n }\n\n setTreasuryBinStatus (bin) {\n switch (this.settings.ttype) {\n case 'current':\n treasuryChartBin = bin\n break\n case 'legacy':\n adminChartBin = bin\n break\n default:\n combinedChartBin = bin\n }\n }\n\n setTreasuryFlowStatus (flow) {\n switch (this.settings.ttype) {\n case 'current':\n treasuryChartFlow = flow\n break\n case 'legacy':\n adminChartFlow = flow\n break\n default:\n combinedChartFlow = flow\n }\n }\n\n _drawCallback (graph, first) {\n if (first) return\n const [start, end] = ctrl.graph.xAxisRange()\n if (start === end) return\n if (end === this.lastEnd) return // Only handle slide event.\n this.lastEnd = end\n ctrl.settings.zoom = Zoom.encode(start, end)\n if (ctrl.isTreasuryReport()) {\n ctrl.setTreasuryZoomStatus(ctrl.settings.zoom)\n } else if (ctrl.isDomainType()) {\n domainChartZoom = ctrl.settings.zoom\n }\n ctrl.updateQueryString()\n ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n }\n\n _zoomCallback (start, end) {\n ctrl.zoomButtons.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n ctrl.settings.zoom = Zoom.encode(start, end)\n if (ctrl.isTreasuryReport()) {\n ctrl.setTreasuryZoomStatus(ctrl.settings.zoom)\n } else if (ctrl.isDomainType()) {\n domainChartZoom = ctrl.settings.zoom\n }\n ctrl.updateQueryString()\n ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n }\n\n setSelectedZoom (zoomKey) {\n this.zoomButtons.forEach(function (button) {\n if (button.name === zoomKey) {\n button.classList.add('btn-selected')\n } else {\n button.classList.remove('btn-selected')\n }\n })\n }\n\n drawGraph () {\n const settings = ctrl.settings\n ctrl.noconfirmsTarget.classList.add('d-hide')\n ctrl.chartTarget.classList.remove('d-hide')\n // Check for invalid view parameters\n if (!ctrl.validChartType(settings.chart) || !ctrl.validGraphInterval()) return\n if (settings.chart === ctrl.state.chart && settings.bin === ctrl.state.bin) {\n // Only the zoom has changed.\n const zoom = Zoom.decode(settings.zoom)\n if (zoom) {\n ctrl.setZoom(zoom.start, zoom.end)\n }\n return\n }\n // Set the current view to prevent unnecessary reloads.\n Object.assign(ctrl.state, settings)\n if (ctrl.isTreasuryReport()) {\n ctrl.setTreasuryZoomStatus(settings.zoom)\n ctrl.setTreasuryBinStatus(settings.bin)\n ctrl.setTreasuryFlowStatus(settings.flow)\n } else if (ctrl.isDomainType()) {\n domainChartZoom = settings.zoom\n domainChartBin = settings.bin\n domainChartFlow = settings.flow\n }\n ctrl.fetchGraphData(settings.chart, settings.bin)\n }\n\n setIntervalButton (interval) {\n const button = ctrl.validGraphInterval(interval)\n if (!button) return false\n ctrl.binputs.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n button.classList.add('btn-selected')\n }\n\n validGraphInterval (interval) {\n const bin = interval || this.settings.bin || this.activeBin\n let b = false\n this.binputs.forEach((button) => {\n if (button.name === bin) b = button\n })\n return b\n }\n\n getBin () {\n let bin = ctrl.query.get('bin')\n if (!ctrl.setIntervalButton(bin)) {\n bin = ctrl.activeBin\n }\n return bin\n }\n\n setFlowChecks () {\n const bitmap = this.settings.flow\n this.flowBoxes.forEach((box) => {\n box.checked = bitmap & parseInt(box.value)\n })\n }\n\n disconnect () {\n if (this.graph !== undefined) {\n this.graph.destroy()\n }\n this.retrievedData = {}\n }\n\n validChartType (chart) {\n return this.optionsTarget.namedItem(chart) || false\n }\n\n setChartType () {\n const chart = this.settings.chart\n if (this.validChartType(chart)) {\n this.optionsTarget.value = chart\n }\n }\n\n // Request the initial chart data, grabbing the Dygraph script if necessary.\n initializeChart () {\n createOptions()\n // If no chart data has been requested, e.g. when initially on the\n // list tab, then fetch the initial chart data.\n this.fetchGraphData(this.chartType, this.getBin())\n }\n\n async fetchGraphData (chart, bin) {\n const cacheKey = chart + '-' + bin\n if (ctrl.ajaxing === cacheKey) {\n return\n }\n ctrl.requestedChart = cacheKey\n ctrl.ajaxing = cacheKey\n\n ctrl.chartLoaderTarget.classList.add('loading')\n // if not change type\n if (this.isDomainType() || (!ctrl.currentTType && ctrl.currentTType === ctrl.changedTType)) {\n // Check for cached data\n if (ctrl.retrievedData[cacheKey]) {\n // Queue the function to allow the loader to display.\n setTimeout(() => {\n ctrl.popChartCache(chart, bin)\n ctrl.chartLoaderTarget.classList.remove('loading')\n ctrl.ajaxing = false\n }, 10) // 0 should work but doesn't always\n return\n }\n }\n // if else, get data from api\n let graphDataResponse = null\n if (this.settings.type === 'treasury' && (bin === 'week' || bin === 'day') && this.settings.ttype !== 'current' && this.settings.ttype !== 'legacy') {\n const treasuryUrl = `/api/treasury/io/${bin}`\n const legacyUrl = '/api/address/' + ctrl.devAddress + '/amountflow/' + bin\n const treasuryRes = await requestJSON(treasuryUrl)\n const legacyRes = await requestJSON(legacyUrl)\n graphDataResponse = this.combinedDataHandler(treasuryRes, legacyRes)\n } else {\n let url = `/api/treasury/io/${bin}`\n if (!this.isDomainType() && this.settings.ttype === 'legacy') {\n url = '/api/address/' + ctrl.devAddress + '/amountflow/' + bin\n }\n graphDataResponse = this.isDomainType() ? (bin === 'year' ? domainChartYearData : domainChartData) : (this.settings.ttype !== 'current' && this.settings.ttype !== 'legacy') ? (bin === 'year' ? combinedChartYearData : combinedChartData) : await requestJSON(url)\n }\n ctrl.processData(chart, bin, graphDataResponse)\n this.currentTType = this.changedTType\n ctrl.ajaxing = false\n ctrl.chartLoaderTarget.classList.remove('loading')\n }\n\n isDomainType () {\n return (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') && this.settings.pgroup === 'domains'\n }\n\n combinedDataHandler (treasuryRes, legacyRes) {\n // create time map\n const timeArr = []\n // return combined data\n const combinedDataMap = new Map()\n const _this = this\n if (treasuryRes && treasuryRes.time) {\n treasuryRes.time.map((time, index) => {\n const dateTime = new Date(time)\n const dateTimeStr = _this.getStringFromDate(dateTime)\n timeArr.push(dateTimeStr)\n const item = {\n time: dateTimeStr,\n received: treasuryRes.received[index],\n sent: treasuryRes.sent[index],\n net: treasuryRes.net[index]\n }\n combinedDataMap.set(dateTimeStr, item)\n })\n }\n\n if (legacyRes && legacyRes.time) {\n legacyRes.time.map((time, index) => {\n const dateTime = new Date(time)\n const dateTimeStr = _this.getStringFromDate(dateTime)\n if (!timeArr.includes(dateTimeStr)) {\n timeArr.push(dateTimeStr)\n const item = {\n time: dateTimeStr,\n received: legacyRes.received[index],\n sent: legacyRes.sent[index],\n net: legacyRes.net[index]\n }\n combinedDataMap.set(dateTimeStr, item)\n } else {\n const item = combinedDataMap.get(dateTimeStr)\n item.received = Number(item.received) + Number(legacyRes.received[index])\n item.sent = Number(item.sent) + Number(legacyRes.sent[index])\n item.net = Number(item.net) + Number(legacyRes.net[index])\n combinedDataMap.set(dateTimeStr, item)\n }\n })\n }\n\n timeArr.sort(function (a, b) {\n const aTime = new Date(a)\n const bTime = new Date(b)\n if (aTime > bTime) {\n return 1\n }\n if (aTime < bTime) {\n return -1\n }\n return 0\n })\n\n const timeInsertArr = []\n const receivedArr = []\n const sentArr = []\n const netArr = []\n timeArr.forEach((time) => {\n timeInsertArr.push(time + 'T07:00:00Z')\n const item = combinedDataMap.get(time)\n receivedArr.push(item.received)\n sentArr.push(item.sent)\n netArr.push(item.net)\n })\n const mainResult = {\n time: timeInsertArr,\n received: receivedArr,\n sent: sentArr,\n net: netArr\n }\n return mainResult\n }\n\n getStringFromDate (date) {\n let result = date.getFullYear() + '-'\n const month = date.getMonth() + 1\n result += (month < 10 ? '0' + month : month) + '-'\n const day = date.getDate()\n result += day < 10 ? '0' + day : day\n return result\n }\n\n processData (chart, bin, data) {\n if (isEmpty(data)) {\n ctrl.noDataAvailable()\n return\n }\n const binSize = Zoom.mapValue(bin) || blockDuration\n if (chart === 'types') {\n ctrl.retrievedData['types-' + bin] = txTypesFunc(data, binSize)\n } else if (chart === 'amountflow' || chart === 'balance') {\n const processed = this.isDomainType() ? domainChartProcessor(data, binSize) : amountFlowProcessor(data, binSize)\n ctrl.retrievedData['amountflow-' + bin] = processed.flow\n if (!ctrl.isDomainType()) {\n ctrl.retrievedData['balance-' + bin] = processed.balance\n }\n } else return\n setTimeout(() => {\n ctrl.popChartCache(chart, bin)\n }, 0)\n }\n\n noDataAvailable () {\n this.noconfirmsTarget.classList.remove('d-hide')\n this.chartTarget.classList.add('d-hide')\n this.chartLoaderTarget.classList.remove('loading')\n }\n\n popChartCache (chart, bin) {\n const cacheKey = chart + '-' + bin\n const binSize = Zoom.mapValue(bin) || blockDuration\n if (!ctrl.retrievedData[cacheKey] ||\n ctrl.requestedChart !== cacheKey\n ) {\n return\n }\n const data = ctrl.retrievedData[cacheKey]\n let options = null\n ctrl.flowTarget.classList.add('d-hide')\n switch (chart) {\n case 'amountflow':\n options = this.isDomainType() ? domainGraphOptions : amountFlowGraphOptions\n options.plotter = sizedBarPlotter(binSize)\n ctrl.flowTarget.classList.remove('d-hide')\n break\n case 'balance':\n options = balanceGraphOptions\n break\n }\n options.zoomCallback = null\n options.drawCallback = null\n if (ctrl.graph === undefined) {\n ctrl.graph = ctrl.createGraph(data, options)\n } else {\n ctrl.graph.updateOptions({\n ...{ file: data },\n ...options\n })\n }\n if (chart === 'amountflow') {\n ctrl.updateFlow()\n }\n ctrl.chartLoaderTarget.classList.remove('loading')\n ctrl.xRange = ctrl.graph.xAxisExtremes()\n ctrl.validateZoom(binSize)\n }\n\n changeBin (e) {\n const target = e.srcElement || e.target\n if (target.nodeName !== 'BUTTON') return\n ctrl.settings.bin = target.name\n ctrl.setIntervalButton(target.name)\n this.handlerBinSelectorWhenChange()\n if (target.name === 'year') {\n if (ctrl.zoomButtons) {\n ctrl.zoomButtons.forEach((button) => {\n if (button.name === 'all') {\n button.click()\n }\n })\n }\n }\n this.updateQueryString()\n this.drawGraph()\n }\n\n changeGraph (e) {\n this.settings.chart = this.chartType\n if (this.settings.type === 'treasury') {\n this.treasuryChart = this.settings.chart\n }\n this.updateQueryString()\n this.drawGraph()\n }\n\n validateZoom (binSize) {\n ctrl.setButtonVisibility()\n const zoom = Zoom.validate(ctrl.activeZoomKey || ctrl.settings.zoom, ctrl.xRange, binSize)\n ctrl.setZoom(zoom.start, zoom.end)\n ctrl.graph.updateOptions({\n zoomCallback: ctrl.zoomCallback,\n drawCallback: ctrl.drawCallback\n })\n }\n\n setZoom (start, end) {\n ctrl.chartLoaderTarget.classList.add('loading')\n ctrl.graph.updateOptions({\n dateWindow: [start, end]\n })\n ctrl.settings.zoom = Zoom.encode(start, end)\n ctrl.lastEnd = end\n ctrl.updateQueryString()\n ctrl.chartLoaderTarget.classList.remove('loading')\n }\n\n onZoom (e) {\n const target = e.srcElement || e.target\n if (target.nodeName !== 'BUTTON') return\n ctrl.zoomButtons.forEach((button) => {\n button.classList.remove('btn-selected')\n })\n target.classList.add('btn-selected')\n if (ctrl.graph === undefined) {\n return\n }\n\n this.handlerAllowChartSelector()\n const duration = ctrl.activeZoomDuration\n const end = ctrl.xRange[1]\n const start = duration === 0 ? ctrl.xRange[0] : end - duration\n ctrl.setZoom(start, end)\n if (ctrl.isTreasuryReport()) {\n ctrl.setTreasuryZoomStatus(ctrl.settings.zoom)\n } else if (ctrl.isDomainType()) {\n domainChartZoom = ctrl.settings.zoom\n }\n }\n\n handlerBinSelectorWhenChange () {\n switch (this.activeBin) {\n case 'all':\n this.handlerZoomDisabledBySelector(['all'])\n break\n default:\n this.handlerZoomDisabledBySelector([])\n }\n }\n\n handlerZoomDisabledBySelector (disabledTypes) {\n this.zoomButtons.forEach((button) => {\n if (disabledTypes.includes(button.name)) {\n button.disabled = true\n } else {\n button.disabled = false\n }\n })\n }\n\n handlerAllowChartSelector () {\n const activeButtons = this.zoomTarget.getElementsByClassName('btn-selected')\n if (activeButtons.length === 0) return\n const activeZoomType = activeButtons[0].name\n switch (activeZoomType) {\n case 'all':\n if (this.activeBin === 'all') {\n ctrl.binputs.forEach((button) => {\n if (button.name === 'year') {\n button.click()\n }\n })\n }\n this.handlerGroupDisabledBySelector(['all'])\n break\n case 'year':\n this.handlerGroupDisabledBySelector([])\n break\n case 'month':\n // if current group type is year, change to month\n if (this.activeBin === 'year') {\n ctrl.binputs.forEach((button) => {\n if (button.name === 'month') {\n button.click()\n }\n })\n }\n this.handlerGroupDisabledBySelector(['year'])\n break\n case 'week':\n if (this.activeBin === 'year' || this.activeBin === 'month') {\n ctrl.binputs.forEach((button) => {\n if (button.name === 'week') {\n button.click()\n }\n })\n }\n this.handlerGroupDisabledBySelector(['year', 'month'])\n break\n case 'day':\n if (this.activeBin === 'year' || this.activeBin === 'month' || this.activeBin === 'week') {\n ctrl.binputs.forEach((button) => {\n if (button.name === 'day') {\n button.click()\n }\n })\n }\n this.handlerGroupDisabledBySelector(['year', 'month', 'week'])\n break\n }\n }\n\n handlerGroupDisabledBySelector (disabledTypes) {\n this.binputs.forEach((button) => {\n if (disabledTypes.includes(button.name)) {\n button.disabled = true\n } else {\n button.disabled = false\n }\n })\n }\n\n toggleExpand (e) {\n const btn = this.expandoTarget\n if (btn.classList.contains('dcricon-expand')) {\n btn.classList.remove('dcricon-expand')\n btn.classList.add('dcricon-collapse')\n this.bigchartTarget.appendChild(this.chartboxTarget)\n this.fullscreenTarget.classList.remove('d-none')\n } else {\n this.putChartBack()\n }\n if (this.graph) this.graph.resize()\n }\n\n putChartBack () {\n const btn = this.expandoTarget\n btn.classList.add('dcricon-expand')\n btn.classList.remove('dcricon-collapse')\n this.littlechartTarget.appendChild(this.chartboxTarget)\n this.fullscreenTarget.classList.add('d-none')\n if (this.graph) this.graph.resize()\n }\n\n exitFullscreen (e) {\n if (e.target !== this.fullscreenTarget) return\n this.putChartBack()\n }\n\n setButtonVisibility () {\n const duration = ctrl.chartDuration\n const buttonSets = [ctrl.zoomButtons, ctrl.binputs]\n buttonSets.forEach((buttonSet) => {\n buttonSet.forEach((button) => {\n if (button.dataset.fixed) return\n if (duration > Zoom.mapValue(button.name)) {\n button.classList.remove('d-hide')\n } else {\n button.classList.remove('btn-selected')\n button.classList.add('d-hide')\n }\n })\n })\n }\n\n updateFlow () {\n const bitmap = ctrl.flow\n if (bitmap === 0) {\n // If all boxes are unchecked, just leave the last view\n // in place to prevent chart errors with zero visible datasets\n return\n }\n ctrl.settings.flow = bitmap\n ctrl.updateQueryString()\n // Set the graph dataset visibility based on the bitmap\n // Dygraph dataset indices: 0 received, 1 sent, 2 & 3 net\n const visibility = {}\n visibility[0] = bitmap & 1\n visibility[1] = bitmap & 2\n visibility[2] = visibility[3] = bitmap & 4\n Object.keys(visibility).forEach((idx) => {\n ctrl.graph.setVisibility(idx, visibility[idx])\n })\n }\n\n createGraph (processedData, otherOptions) {\n return new Dygraph(\n this.chartTarget,\n processedData,\n { ...commonOptions, ...otherOptions }\n )\n }\n\n bindElements () {\n this.flowBoxes = this.flowTarget.querySelectorAll('input')\n this.zoomButtons = this.zoomTarget.querySelectorAll('button')\n this.binputs = this.cintervalTarget.querySelectorAll('button')\n }\n\n async initialize () {\n this.query = new TurboQuery()\n this.settings = TurboQuery.nullTemplate([\n 'chart', 'zoom', 'bin', 'flow', 'type', 'tsort', 'psort', 'stype',\n 'order', 'interval', 'search', 'usd', 'active', 'year', 'ttype', 'pgroup',\n 'ptype', 'dtype', 'dtime', 'dtoken', 'dname', 'dstype', 'dorder', 'tavg', 'dinterval'])\n this.politeiaUrl = this.data.get('politeiaUrl')\n this.defaultSettings = {\n type: 'proposal',\n tsort: 'newest',\n psort: 'newest',\n pgroup: 'proposals',\n stype: 'startdt',\n order: 'desc',\n interval: 'month',\n ptype: 'month',\n search: '',\n usd: false,\n active: true,\n chart: 'amountflow',\n zoom: '',\n bin: 'month',\n flow: 3,\n year: 0, // 0 when display all year\n ttype: 'combined',\n dtype: 'year',\n dtime: '',\n dtoken: '',\n dname: '',\n dstype: 'pname',\n dorder: 'desc',\n tavg: false,\n dinterval: 'month'\n }\n mainReportInitialized = false\n detailReportSettingsState = undefined\n mainReportSettingsState = undefined\n this.query.update(this.settings)\n if (this.isNullValue(this.settings.type)) {\n this.settings.type = this.defaultSettings.type\n }\n await this.initReportTimeRange()\n if (this.settings.type === 'bytime') {\n this.initReportDetailData()\n this.connectData()\n return\n }\n await this.initMainFinancialReport()\n await this.connectData()\n }\n\n async initMainFinancialReport () {\n this.treasuryChart = 'balance'\n this.proposalTSort = 'oldest'\n this.treasuryTSort = 'newest'\n this.isMonthDisplay = false\n this.useMonthAvg = false\n this.devAddress = this.data.get('devAddress')\n treasuryNote = `*All numbers are pulled from the blockchain. Includes <a href=\"/treasury\" data-turbolinks=\"false\">treasury</a> and <a href=\"/address/${this.devAddress}\" data-turbolinks=\"false\">legacy</a> data.`\n redrawChart = true\n domainChartZoom = undefined\n treasuryChartZoom = undefined\n combinedChartZoom = undefined\n adminChartZoom = undefined\n domainChartBin = undefined\n treasuryChartBin = undefined\n combinedChartBin = undefined\n adminChartBin = undefined\n domainChartFlow = undefined\n treasuryChartFlow = undefined\n combinedChartFlow = undefined\n adminChartFlow = undefined\n isSearching = false\n await this.initData()\n this.initScrollerForTable()\n this.isMonthDisplay = this.isTreasuryReport() || this.isDomainType() ? true : this.isProposalMonthReport() || this.isAuthorMonthGroup()\n this.useMonthAvg = this.settings.tavg\n document.getElementById('useMonthAvg').checked = this.useMonthAvg\n const tooltipElements = document.getElementsByClassName('cell-tooltip')\n document.addEventListener('click', function (event) {\n for (let i = 0; i < tooltipElements.length; i++) {\n const popEl = tooltipElements[i]\n const isClickInside = popEl.contains(event.target)\n // if click outside, add hidden to all tooltiptext element\n const tooltiptext = popEl.getElementsByClassName('tooltiptext')[0]\n if (!tooltiptext) {\n continue\n }\n if (!isClickInside) {\n popEl.classList.remove('active')\n tooltiptext.style.visibility = 'hidden'\n }\n }\n })\n mainReportInitialized = true\n }\n\n initYearMonthSelector () {\n // handle month year of dtime\n let selectedYear = -1\n let selectedMonth = 0\n if (this.settings.dtime && this.settings.dtime !== '') {\n const timeArr = this.settings.dtime.toString().split('_')\n selectedYear = Number(timeArr[0])\n if (timeArr.length > 1) {\n selectedMonth = Number(timeArr[1])\n }\n }\n selectedYear = selectedYear < 0 ? this.reportMaxYear : selectedYear\n let yearOptions = `<option name=\"all\" value=\"0\" ${selectedYear === 0 ? 'selected' : ''}>All</option>`\n for (let i = this.reportMaxYear; i >= this.reportMinYear; i--) {\n yearOptions += `<option name=\"year_${i}\" value=\"${i}\" ${selectedYear === i ? 'selected' : ''}>${i}</option>`\n }\n this.topYearSelectTarget.innerHTML = yearOptions\n\n // init month selector\n let minMonth = 1\n let maxMonth = 12\n if (selectedYear === this.reportMinYear) {\n minMonth = this.reportMinMonth\n }\n if (selectedYear === this.reportMaxYear) {\n maxMonth = this.reportMaxMonth\n }\n if (selectedYear === 0) {\n this.topMonthSelectTarget.disabled = true\n } else {\n this.topMonthSelectTarget.disabled = false\n }\n selectedMonth = selectedMonth < 0 ? maxMonth : selectedMonth\n let monthOptions = `<option name=\"month_all\" value=\"0\" ${selectedYear === 0 || selectedMonth === 0 ? 'selected' : ''}>All Months</option>`\n for (let i = minMonth; i <= maxMonth; i++) {\n monthOptions += `<option name=\"month_${i}\" value=\"${i}\" ${selectedMonth === i ? 'selected' : ''}>${this.getMonthDisplay(i)}</option>`\n }\n this.topMonthSelectTarget.innerHTML = monthOptions\n const timeIntArr = this.getDetailYearMonth()\n // init for prev, next buttons\n let prevBtnShow = true\n let nextBtnShow = true\n let hidePrevBtn = false\n let hideNextBtn = false\n if (this.isYearDetailReport()) {\n if (this.isAllYearTimeReport(this.settings.dtime)) {\n prevBtnShow = false\n nextBtnShow = false\n hidePrevBtn = true\n hideNextBtn = true\n } else if (timeIntArr[0] === this.reportMinYear) {\n prevBtnShow = false\n } else if (timeIntArr[0] === this.reportMaxYear) {\n nextBtnShow = false\n }\n } else if (this.isMonthDetailReport()) {\n if (timeIntArr[0] === this.reportMinYear && timeIntArr[1] === this.reportMinMonth) {\n prevBtnShow = false\n }\n if (timeIntArr[0] === this.reportMaxYear && timeIntArr[1] === this.reportMaxMonth) {\n nextBtnShow = false\n }\n }\n if (hidePrevBtn) {\n this.prevBtnTarget.classList.add('d-none')\n } else {\n this.prevBtnTarget.classList.remove('d-none')\n }\n if (hideNextBtn) {\n this.nextBtnTarget.classList.add('d-none')\n } else {\n this.nextBtnTarget.classList.remove('d-none')\n }\n if (prevBtnShow) {\n this.prevBtnTarget.classList.remove('disabled')\n this.prevBtnTarget.classList.add('cursor-pointer')\n } else {\n this.prevBtnTarget.classList.add('disabled')\n this.prevBtnTarget.classList.remove('cursor-pointer')\n }\n if (nextBtnShow) {\n this.nextBtnTarget.classList.remove('disabled')\n this.nextBtnTarget.classList.add('cursor-pointer')\n } else {\n this.nextBtnTarget.classList.add('disabled')\n this.nextBtnTarget.classList.remove('cursor-pointer')\n }\n }\n\n initReportDetailData () {\n this.reportTypeTargets.forEach((rTypeTarget) => {\n rTypeTarget.classList.remove('active')\n if (rTypeTarget.name === 'bytime') {\n rTypeTarget.classList.add('active')\n }\n })\n this.viewModeTarget.classList.add('d-none')\n this.detailReportAreaTarget.classList.remove('d-none')\n this.mainReportTopAreaTarget.classList.add('d-none')\n this.reportParentContainerTarget.classList.add('d-none')\n this.proposalSelectTypeTarget.classList.add('d-none')\n this.selectTreasuryTypeTarget.classList.add('d-none')\n this.yearMonthSelectorTarget.classList.remove('d-none')\n if (this.isNullValue(this.settings.dorder)) {\n this.settings.dorder = this.defaultSettings.dorder\n }\n if (this.isNullValue(this.settings.dtype)) {\n this.settings.dtype = this.defaultSettings.dtype\n }\n if (this.isNullValue(this.settings.dtime)) {\n // init dtime is now\n const now = new Date()\n const year = now.getFullYear()\n const month = now.getMonth() + 1\n let time = year\n if (this.settings.dtype === 'month') {\n time = time + '_' + month\n } else {\n time = '0'\n }\n this.settings.dtime = time\n } else {\n if (this.settings.dtime.toString().includes('_')) {\n this.settings.dtype = 'month'\n } else {\n this.settings.dtype = 'year'\n }\n }\n // init for detail report title\n const timeArr = this.settings.dtime.toString().split('_')\n this.detailReportTitleTarget.textContent = (this.isYearDetailReport() ? (this.isAllYearTimeReport(this.settings.dtime) ? 'All Time Report' : 'Yearly Report - ') : 'Monthly Report - ') +\n (this.isAllYearTimeReport(this.settings.dtime) ? '' : ((timeArr.length > 1 && this.settings.dtype === 'month' ? this.getMonthDisplay(Number(timeArr[1])) + ' ' : '') + timeArr[0]))\n // init year month selector\n this.initYearMonthSelector()\n this.updateQueryString()\n this.noDetailDataTarget.classList.add('d-none')\n this.reportAreaTarget.classList.remove('d-none')\n this.yearMonthCalculate()\n }\n\n getMonthDisplay (month) {\n switch (month) {\n case 1:\n return 'January'\n case 2:\n return 'February'\n case 3:\n return 'March'\n case 4:\n return 'April'\n case 5:\n return 'May'\n case 6:\n return 'June'\n case 7:\n return 'July'\n case 8:\n return 'August'\n case 9:\n return 'September'\n case 10:\n return 'October'\n case 11:\n return 'November'\n case 12:\n return 'December'\n default:\n return ''\n }\n }\n\n async initData () {\n this.detailReportAreaTarget.classList.add('d-none')\n this.mainReportTopAreaTarget.classList.remove('d-none')\n this.yearMonthSelectorTarget.classList.add('d-none')\n this.reportParentContainerTarget.classList.remove('d-none')\n this.viewModeTarget.classList.remove('d-none')\n if ((this.isNullValue(this.settings.type) || this.settings.type === 'proposal' || this.settings.type === 'summary') && !this.isDomainType()) {\n this.defaultSettings.tsort = 'oldest'\n } else {\n this.defaultSettings.tsort = 'newest'\n }\n if ((typeof this.settings.active) !== 'boolean') {\n this.settings.active = this.defaultSettings.active\n }\n if ((typeof this.settings.tavg) !== 'boolean') {\n this.settings.tavg = this.useMonthAvg\n }\n if (this.isNullValue(this.settings.ptype)) {\n this.settings.ptype = this.defaultSettings.ptype\n }\n if (this.isNullValue(this.settings.pgroup)) {\n this.settings.pgroup = this.defaultSettings.pgroup\n }\n if (!this.isNullValue(this.settings.type) && this.settings.type === 'treasury') {\n this.defaultSettings.stype = ''\n }\n\n if (this.settings.type === 'treasury' || this.isDomainType()) {\n this.settings.tsort = this.treasuryTSort\n } else {\n this.settings.tsort = this.proposalTSort\n }\n this.reportTypeTargets.forEach((rTypeTarget) => {\n rTypeTarget.classList.remove('active')\n if ((!this.settings.type && rTypeTarget.name === 'proposal') ||\n (rTypeTarget.name === 'proposal' && (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary')) ||\n (rTypeTarget.name === 'treasury' && this.settings.type === 'treasury')) {\n rTypeTarget.classList.add('active')\n }\n })\n if (this.isNullValue(this.settings.interval)) {\n this.settings.interval = this.defaultSettings.interval\n }\n if (this.isNullValue(this.settings.ttype)) {\n this.settings.ttype = this.defaultSettings.ttype\n }\n if (this.settings.search) {\n this.searchInputTarget.value = this.settings.search\n isSearching = true\n this.searchBtnTarget.classList.add('d-none')\n this.clearSearchBtnTarget.classList.remove('d-none')\n } else {\n this.searchBtnTarget.classList.remove('d-none')\n this.clearSearchBtnTarget.classList.add('d-none')\n }\n if (this.isTreasuryReport()) {\n this.ttypeTargets.forEach((ttypeTarget) => {\n ttypeTarget.classList.remove('active')\n if ((ttypeTarget.name === this.settings.ttype) || (ttypeTarget.name === 'current' && !this.settings.ttype)) {\n ttypeTarget.classList.add('active')\n }\n })\n }\n if (this.isNullValue(this.settings.type) || this.settings.type === 'proposal' || this.settings.type === 'summary') {\n this.proposalTypeTargets.forEach((proposalTypeTarget) => {\n proposalTypeTarget.classList.remove('active')\n if ((proposalTypeTarget.name === this.settings.pgroup) || (proposalTypeTarget.name === 'proposals' && !this.settings.pgroup)) {\n proposalTypeTarget.classList.add('active')\n }\n })\n }\n }\n\n async initScrollerForTable () {\n const $scroller = document.getElementById('scroller')\n const $container = document.getElementById('containerBody')\n const $wrapper = document.getElementById('wrapperReportTable')\n let ignoreScrollEvent = false\n let animation = null\n const scrollbarPositioner = () => {\n const scrollTop = document.scrollingElement.scrollTop\n const wrapperTop = $wrapper.offsetTop\n const wrapperBottom = wrapperTop + $wrapper.offsetHeight\n\n const topMatch = (window.innerHeight + scrollTop) >= wrapperTop\n const bottomMatch = (scrollTop) <= wrapperBottom\n\n if (topMatch && bottomMatch) {\n const inside = wrapperBottom >= scrollTop && window.innerHeight + scrollTop <= wrapperBottom\n\n if (inside) {\n $scroller.style.bottom = '0px'\n } else {\n const offset = (scrollTop + window.innerHeight) - wrapperBottom\n\n $scroller.style.bottom = offset + 'px'\n }\n $scroller.classList.add('visible')\n } else {\n $scroller.classList.remove('visible')\n }\n\n window.requestAnimationFrame(scrollbarPositioner)\n }\n\n window.requestAnimationFrame(scrollbarPositioner)\n\n $scroller.addEventListener('scroll', (e) => {\n if (ignoreScrollEvent) return false\n\n if (animation) window.cancelAnimationFrame(animation)\n animation = window.requestAnimationFrame(() => {\n ignoreScrollEvent = true\n $container.scrollLeft = $scroller.scrollLeft\n ignoreScrollEvent = false\n })\n })\n\n $container.addEventListener('scroll', (e) => {\n if (ignoreScrollEvent) return false\n\n if (animation) window.cancelAnimationFrame(animation)\n animation = window.requestAnimationFrame(() => {\n ignoreScrollEvent = true\n $scroller.scrollLeft = $container.scrollLeft\n\n ignoreScrollEvent = false\n })\n })\n\n $(window).on('resize', function () {\n // get table thead size\n const tableWidthStr = $('#reportTable thead').css('width').replace('px', '')\n const tableWidth = parseFloat(tableWidthStr.trim())\n const parentContainerWidthStr = $('#repotParentContainer').css('width').replace('px', '')\n const parentContainerWidth = parseFloat(parentContainerWidthStr.trim())\n if (tableWidth < parentContainerWidth + 5) {\n $('#scroller').addClass('d-none')\n } else {\n $('#scroller').removeClass('d-none')\n }\n // set overflow class\n $('#scroller').css('width', $('#repotParentContainer').css('width'))\n })\n }\n\n searchInputKeypress (e) {\n if (e.keyCode === 13) {\n this.searchProposal()\n }\n }\n\n onTypeChange (e) {\n if (!e.target.value || e.target.value === '') {\n return\n }\n this.searchBtnTarget.classList.remove('d-none')\n this.clearSearchBtnTarget.classList.add('d-none')\n }\n\n searchProposal () {\n // if search key is empty, ignore\n if (!this.searchInputTarget.value || this.searchInputTarget.value === '') {\n this.searchBtnTarget.classList.remove('d-none')\n this.clearSearchBtnTarget.classList.add('d-none')\n if (isSearching) {\n this.settings.search = this.defaultSettings.search\n isSearching = false\n this.calculate()\n }\n return\n }\n this.searchBtnTarget.classList.add('d-none')\n this.clearSearchBtnTarget.classList.remove('d-none')\n this.settings.search = this.searchInputTarget.value\n this.calculate()\n }\n\n clearSearch (e) {\n this.settings.search = this.defaultSettings.search\n this.searchInputTarget.value = ''\n this.searchBtnTarget.classList.remove('d-none')\n this.clearSearchBtnTarget.classList.add('d-none')\n isSearching = false\n this.calculate()\n }\n\n updateQueryString () {\n const [query, settings, defaults] = [{}, this.settings, this.defaultSettings]\n for (const k in settings) {\n if ((((typeof settings[k]) !== 'boolean') && !settings[k]) || settings[k].toString() === defaults[k].toString()) continue\n query[k] = settings[k]\n }\n this.query.replace(query)\n }\n\n parseSettingsState (isMain) {\n if (isMain) {\n mainReportSettingsState = {}\n } else {\n detailReportSettingsState = {}\n }\n for (const k in this.settings) {\n if (isMain) {\n mainReportSettingsState[k] = this.settings[k]\n } else {\n detailReportSettingsState[k] = this.settings[k]\n }\n }\n }\n\n parseSettingsFromState (isMain) {\n const state = isMain ? mainReportSettingsState : detailReportSettingsState\n if (!state) {\n for (const k in this.defaultSettings) {\n this.settings[k] = this.defaultSettings[k]\n }\n return\n }\n this.settings = {}\n for (const k in state) {\n this.settings[k] = state[k]\n }\n }\n\n setReportTitle () {\n switch (this.settings.type) {\n case '':\n case 'proposal':\n this.reportDescriptionTarget.innerHTML = proposalNote\n if (this.settings.pgroup === '' || this.settings.pgroup === 'proposals') {\n this.settings.interval = this.defaultSettings.interval\n this.reportDescriptionTarget.classList.add('d-none')\n } else if (this.settings.pgroup === 'authors') {\n if (this.settings.ptype !== 'list') {\n this.reportDescriptionTarget.classList.add('d-none')\n } else {\n this.reportDescriptionTarget.classList.remove('d-none')\n this.reportDescriptionTarget.innerHTML = proposalNote\n }\n }\n break\n case 'summary':\n this.reportDescriptionTarget.innerHTML = proposalNote\n break\n case 'domain':\n this.reportDescriptionTarget.innerHTML = proposalNote\n break\n case 'treasury':\n this.reportDescriptionTarget.innerHTML = treasuryNote\n break\n case 'author':\n this.reportDescriptionTarget.innerHTML = proposalNote\n }\n }\n\n async treasuryTypeChange (e) {\n if (e.target.name === this.settings.ttype) {\n return\n }\n const target = e.srcElement || e.target\n this.ttypeTargets.forEach((ttypeTarget) => {\n ttypeTarget.classList.remove('active')\n })\n target.classList.add('active')\n this.settings.ttype = e.target.name\n this.changedTType = e.target.name\n redrawChart = true\n await this.initData()\n await this.connectData()\n }\n\n async reportTypeChange (e) {\n if (((this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') && e.target.name === 'proposal') ||\n (this.settings.type === 'treasury' && e.target.name === 'treasury') || (this.settings.type === 'bytime' && e.target.name === 'bytime')) {\n return\n }\n if (this.settings.type !== 'bytime' && e.target.name === 'bytime') {\n this.parseSettingsState(true)\n this.parseSettingsFromState(false)\n } else if (this.settings.type === 'bytime' && e.target.name !== 'bytime') {\n this.parseSettingsState(false)\n this.parseSettingsFromState(true)\n }\n this.settings.type = e.target.name\n if (this.settings.type === 'treasury') {\n this.settings.chart = this.treasuryChart\n this.optionsTarget.value = this.settings.chart\n } else if ((this.settings.type === '' || this.settings.type === 'proposal') && !this.isMonthDisplay && mainReportInitialized) {\n this.settings.type = 'summary'\n }\n if (this.settings.type === 'bytime') {\n this.initReportDetailData()\n return\n }\n redrawChart = true\n if (!mainReportInitialized) {\n await this.initMainFinancialReport()\n } else {\n await this.initData()\n }\n await this.connectData()\n }\n\n async proposalTypeChange (e) {\n if (e.target.name === this.settings.pgroup) {\n return\n }\n const target = e.srcElement || e.target\n this.proposalTypeTargets.forEach((proposalTypeTarget) => {\n proposalTypeTarget.classList.remove('active')\n })\n target.classList.add('active')\n this.settings.pgroup = e.target.name\n if (this.settings.pgroup === '' || this.settings.pgroup === 'proposals') {\n this.settings.type = this.isMonthDisplay ? 'proposal' : 'summary'\n this.settings.ptype = this.defaultSettings.ptype\n } else if (this.settings.pgroup === 'authors') {\n this.settings.ptype = this.isMonthDisplay ? '' : 'list'\n this.settings.type = this.defaultSettings.type\n } else if (this.settings.pgroup === 'domains') {\n this.settings.ptype = this.defaultSettings.ptype\n }\n this.settings.stype = this.defaultSettings.stype\n await this.initData()\n await this.connectData()\n }\n\n isProposalGroup () {\n return (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') && (this.settings.pgroup === '' || this.settings.pgroup === 'proposals')\n }\n\n isSummaryReport () {\n return this.settings.type === 'summary' && (this.settings.pgroup === '' || this.settings.pgroup === 'proposals')\n }\n\n isProposalMonthReport () {\n return (this.settings.type === '' || this.settings.type === 'proposal') && (this.settings.pgroup === '' || this.settings.pgroup === 'proposals')\n }\n\n isAuthorGroup () {\n return (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') && this.settings.pgroup === 'authors'\n }\n\n isAuthorListGroup () {\n return this.isAuthorGroup() && this.settings.ptype === 'list'\n }\n\n isAuthorMonthGroup () {\n return this.isAuthorGroup() && this.settings.ptype !== 'list'\n }\n\n isTreasuryReport () {\n return this.settings.type === 'treasury'\n }\n\n dintervalChange (e) {\n if (e.target.name === ctrl.settings.dinterval) {\n return\n }\n const target = e.srcElement || e.target\n this.dintervalTargets.forEach((dintervalTarget) => {\n dintervalTarget.classList.remove('active')\n })\n target.classList.add('active')\n ctrl.settings.dinterval = e.target.name\n this.monthlyReportTarget.innerHTML = this.createTableDetailForMonthYear(detailMonthlySummary, 12, 'month')\n }\n\n intervalChange (e) {\n if (e.target.name === ctrl.settings.interval) {\n return\n }\n const target = e.srcElement || e.target\n this.intervalTargets.forEach((intervalTarget) => {\n intervalTarget.classList.remove('active')\n })\n target.classList.add('active')\n ctrl.settings.interval = e.target.name\n // if (e.target.name === 'year') {\n // if (ctrl.settings.bin !== 'year') {\n // ctrl.binputs.forEach((button) => {\n // if (button.name === 'year') {\n // button.click()\n // }\n // })\n // ctrl.zoomButtons.forEach((button) => {\n // if (button.name === 'all') {\n // button.click()\n // }\n // })\n // }\n // } else {\n // if (ctrl.settings.bin === 'year') {\n // ctrl.binputs.forEach((button) => {\n // if (button.name === 'month') {\n // button.click()\n // }\n // })\n // ctrl.zoomButtons.forEach((button) => {\n // if (button.name === 'year') {\n // button.click()\n // }\n // })\n // }\n // }\n this.calculate()\n }\n\n getApiUrlByType () {\n switch (this.settings.type) {\n case 'treasury':\n return '/api/finance-report/treasury'\n default:\n return `/api/finance-report/proposal?search=${!this.settings.search ? '' : this.settings.search}`\n }\n }\n\n isNotChartZoom () {\n switch (this.settings.ttype) {\n case 'current':\n return !treasuryChartZoom\n case 'legacy':\n return !adminChartZoom\n default:\n return !combinedChartZoom\n }\n }\n\n createReportTable () {\n if (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') {\n $('#reportTable').css('width', '')\n }\n // if summary, display toggle for filter Proposals are active\n if (this.settings.type === 'summary') {\n if (!this.settings.active) {\n document.getElementById('activeProposalInput').checked = false\n } else {\n document.getElementById('activeProposalInput').checked = true\n }\n }\n this.updateQueryString()\n\n if (this.settings.type === 'treasury') {\n this.treasuryToggleAreaTarget.classList.remove('d-none')\n this.createTreasuryTable(responseData)\n this.treasuryChartTarget.classList.remove('d-none')\n const notChartZoom = this.isNotChartZoom()\n if (redrawChart) {\n this.initializeChart()\n this.drawGraph()\n redrawChart = false\n if (ctrl.zoomButtons && notChartZoom) {\n ctrl.zoomButtons.forEach((button) => {\n if (button.name === 'all') {\n button.click()\n }\n })\n }\n }\n this.selectTreasuryTypeTarget.classList.remove('d-none')\n this.currentBalanceAreaTarget.classList.remove('d-none')\n this.chartDataTarget.classList.remove('d-none')\n this.balanceOptionTarget.classList.remove('d-none')\n this.activeProposalSwitchAreaTarget.classList.add('d-none')\n } else {\n this.treasuryToggleAreaTarget.classList.add('d-none')\n this.currentBalanceAreaTarget.classList.add('d-none')\n this.selectTreasuryTypeTarget.classList.add('d-none')\n if (this.isSummaryReport() || this.isAuthorListGroup()) {\n this.activeProposalSwitchAreaTarget.classList.remove('d-none')\n } else {\n this.activeProposalSwitchAreaTarget.classList.add('d-none')\n }\n if (!this.isDomainType()) {\n this.outgoingExpTarget.classList.add('d-none')\n this.treasuryChartTarget.classList.add('d-none')\n } else {\n this.outgoingExpTarget.classList.remove('d-none')\n this.outgoingExpTarget.classList.add('mt-1')\n this.outgoingExpTarget.innerHTML = '*Delta (Est): Estimated difference between actual spending and estimated spending for Proposals. <br /> <span style=\"font-style: italic;\">(Delta > 0: Unaccounted, Delta < 0: Missing)</span>'\n }\n }\n\n if (this.isDomainType() || this.settings.type === 'treasury') {\n this.groupByTarget.classList.remove('d-none')\n this.useMonthAvgToggleTarget.classList.remove('d-none')\n this.treasuryChartTitleTarget.classList.remove('d-none')\n this.treasuryTypeTitleTarget.classList.remove('d-none')\n if (this.settings.type === 'treasury') {\n this.typeSelectorTarget.classList.remove('d-none')\n this.treasuryChartTitleTarget.textContent = 'Treasury IO Chart'\n this.weekGroupBtnTarget.classList.remove('d-none')\n this.dayGroupBtnTarget.classList.remove('d-none')\n // show some option on group and zoom\n this.weekZoomBtnTarget.classList.remove('d-none')\n this.dayZoomBtnTarget.classList.remove('d-none')\n // change domain on radio button label\n this.sentRadioLabelTarget.textContent = 'Sent'\n this.receivedRadioLabelTarget.textContent = 'Received'\n // hide net radio button\n this.netSelectRadioTarget.classList.remove('d-none')\n } else {\n this.typeSelectorTarget.classList.add('d-none')\n this.treasuryChartTitleTarget.textContent = 'Domains Chart Data'\n this.treasuryTypeTitleTarget.textContent = 'Domains Spending Data'\n this.weekGroupBtnTarget.classList.add('d-none')\n this.dayGroupBtnTarget.classList.add('d-none')\n // hide some option on group and zoom\n this.weekZoomBtnTarget.classList.add('d-none')\n this.dayZoomBtnTarget.classList.add('d-none')\n // change domain on radio button label\n this.sentRadioLabelTarget.textContent = 'Development'\n this.receivedRadioLabelTarget.textContent = 'Marketing'\n // hide net radio button\n this.netSelectRadioTarget.classList.add('d-none')\n }\n } else {\n this.groupByTarget.classList.add('d-none')\n this.useMonthAvgToggleTarget.classList.add('d-none')\n this.treasuryChartTitleTarget.classList.add('d-none')\n this.treasuryTypeTitleTarget.classList.add('d-none')\n }\n\n // if treasury, get table content in other area\n if (this.settings.type !== 'treasury') {\n this.reportTarget.innerHTML = this.createTableContent()\n }\n\n // handler for group domains and authors\n if (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') {\n if (this.settings.pgroup === 'domains') {\n this.treasuryChartTarget.classList.remove('d-none')\n // check chart type. If current is balance, change to amountflow\n if (this.settings.chart === 'balance' || this.chartType === 'balance') {\n this.settings.chart = 'amountflow'\n this.optionsTarget.value = 'amountflow'\n }\n const notChartZoom = !domainChartZoom\n if (redrawChart) {\n this.initializeChart()\n this.drawGraph()\n redrawChart = false\n // hide balance select option\n this.balanceOptionTarget.classList.add('d-none')\n this.chartDataTarget.classList.add('d-none')\n if (ctrl.zoomButtons && notChartZoom) {\n ctrl.zoomButtons.forEach((button) => {\n if (button.name === 'all') {\n button.click()\n }\n })\n }\n }\n }\n }\n const tableWidthStr = $('#reportTable thead').css('width').replace('px', '')\n const tableWidth = parseFloat(tableWidthStr.trim())\n const parentContainerWidthStr = $('#repotParentContainer').css('width').replace('px', '')\n const parentContainerWidth = parseFloat(parentContainerWidthStr.trim())\n let hideScroller = false\n if (tableWidth < parentContainerWidth + 5) {\n $('#scroller').addClass('d-none')\n hideScroller = true\n } else {\n $('#scroller').removeClass('d-none')\n }\n this.reportTarget.classList.add('proposal-table-padding')\n let widthFinal = $('#reportTable thead').css('width')\n if (widthFinal !== '' && !this.isProposalMonthReport() && !this.isSummaryReport() && !this.isAuthorMonthGroup()) {\n let width = parseFloat(widthFinal.replaceAll('px', ''))\n width += 30\n widthFinal = width + 'px'\n this.searchBoxTarget.classList.add('searchbox-align')\n } else {\n this.searchBoxTarget.classList.remove('searchbox-align')\n }\n $('#reportTable').css('width', this.isTreasuryReport() ? 'auto' : widthFinal)\n $('html').css('overflow-x', 'hidden')\n // set overflow class\n $('#containerReportTable').addClass('of-x-hidden')\n $('#containerBody').addClass('of-x-hidden')\n $('#scrollerLong').css('width', (tableWidth + 25) + 'px')\n // set scroller width fit with container width\n $('#scroller').css('width', $('#repotParentContainer').css('width'))\n if (this.isMobile()) {\n $('#containerBody').css('overflow', 'scroll')\n this.reportTarget.classList.remove('proposal-table-padding')\n $('#scroller').addClass('d-none')\n } else {\n this.reportTarget.classList.add('proposal-table-padding')\n if (!hideScroller) {\n $('#scroller').removeClass('d-none')\n }\n }\n if (this.isProposalMonthReport() || this.isAuthorMonthGroup()) {\n // handler for scroll default\n if (this.settings.psort === 'oldest') {\n if (this.settings.tsort === 'newest') {\n $('#scroller').scrollLeft(tableWidth)\n } else {\n $('#scroller').scrollLeft(0)\n }\n } else {\n if (this.settings.tsort === 'newest') {\n $('#scroller').scrollLeft(0)\n } else {\n $('#scroller').scrollLeft(tableWidth)\n }\n }\n }\n // else {\n // $('#scroller').addClass('d-none')\n // }\n // else {\n // $('#reportTable').css('width', 'auto')\n // $('#scroller').scrollLeft(0)\n // $('#scroller').addClass('d-none')\n // $('html').css('overflow-x', '')\n // }\n }\n\n createTableContent () {\n if ((this.settings.type === '' || this.settings.type === 'summary' || this.settings.type === 'proposal') &&\n this.settings.pgroup !== 'proposals' && this.settings.pgroup !== '') {\n if (this.settings.pgroup === 'domains') {\n return this.createDomainTable(responseData)\n }\n if (this.settings.pgroup === 'authors') {\n if (this.settings.ptype === 'list') {\n return this.createAuthorTable(responseData)\n } else {\n return this.createMonthAuthorTable(responseData)\n }\n }\n return ''\n }\n switch (this.settings.type) {\n case 'summary':\n return this.createSummaryTable(responseData)\n default:\n return this.createProposalTable(responseData)\n }\n }\n\n sortByCreateDate () {\n if (this.settings.type === 'treasury' || this.isDomainType()) {\n this.settings.tsort = this.settings.tsort === 'oldest' ? 'newest' : 'oldest'\n this.treasuryTSort = this.settings.tsort\n } else {\n this.settings.tsort = (this.settings.tsort === 'oldest' || !this.settings.tsort || this.settings.tsort === '') ? 'newest' : 'oldest'\n this.proposalTSort = this.settings.tsort\n }\n if (this.settings.type === 'treasury' || this.isDomainType()) {\n this.settings.stype = ''\n }\n this.createReportTable(false)\n }\n\n sortByDate () {\n this.settings.psort = (this.settings.psort === 'newest' || !this.settings.psort || this.settings.psort === '') ? 'oldest' : 'newest'\n this.createReportTable(false)\n }\n\n sortByStartDate () {\n this.sortByType('startdt')\n }\n\n sortByPName () {\n this.sortByType('pname')\n }\n\n sortByIncoming () {\n this.sortByType('incoming')\n }\n\n sortByRate () {\n this.sortByType('rate')\n }\n\n sortByOutgoing () {\n this.sortByType('outgoing')\n }\n\n sortByNet () {\n this.sortByType('net')\n }\n\n sortByBalance () {\n this.sortByType('balance')\n }\n\n sortSpentPercent () {\n this.sortByType('percent')\n }\n\n sortByOutgoingEst () {\n this.sortByType('outest')\n }\n\n sortByDomain () {\n this.sortByType('domain')\n }\n\n sortByAuthor () {\n this.sortByType('author')\n }\n\n sortByPNum () {\n this.sortByType('pnum')\n }\n\n sortByBudget () {\n this.sortByType('budget')\n }\n\n sortByDays () {\n this.sortByType('days')\n }\n\n sortByAvg () {\n this.sortByType('avg')\n }\n\n sortByDomainItem (e) {\n this.sortByType(e.params.domain)\n }\n\n sortByDomainTotal () {\n this.sortByType('total')\n }\n\n sortByUnaccounted () {\n this.sortByType('unaccounted')\n }\n\n sortByTotalSpent () {\n this.sortByType('spent')\n }\n\n sortByRemaining () {\n this.sortByType('remaining')\n }\n\n sortByEndDate () {\n this.sortByType('enddt')\n }\n\n sortByType (type) {\n this.settings.stype = type\n this.settings.order = this.settings.order === 'esc' ? 'desc' : 'esc'\n this.createReportTable(false)\n }\n\n getTreasuryYearlyData (summary) {\n const dataMap = new Map()\n const yearArr = []\n for (let i = 0; i < summary.length; i++) {\n const item = summary[i]\n const month = item.month\n if (month && month !== '') {\n const timeArr = month.split('-')\n const year = timeArr[0]\n if (!yearArr.includes(year)) {\n yearArr.push(year)\n }\n let monthStr = ''\n if (timeArr[1].charAt(0) === '0') {\n monthStr = timeArr[1].substring(1, timeArr[1].length)\n } else {\n monthStr = timeArr[1]\n }\n const monthInt = parseInt(monthStr, 0)\n let monthObj = {}\n if (dataMap.has(year)) {\n monthObj = dataMap.get(year)\n monthObj.invalue += item.invalue\n monthObj.invalueUSD += item.invalueUSD\n monthObj.outvalue += item.outvalue\n monthObj.outvalueUSD += item.outvalueUSD\n monthObj.difference += item.difference\n monthObj.differenceUSD += item.differenceUSD\n monthObj.total += item.total\n monthObj.totalUSD += item.totalUSD\n monthObj.outEstimate += item.outEstimate\n monthObj.outEstimateUsd += item.outEstimateUsd\n monthObj.monthPrice += item.monthPrice\n monthObj.taddValue += item.taddValue\n monthObj.taddValueUSD += item.taddValueUSD\n monthObj.count += 1\n if (monthInt > monthObj.monthInt) {\n monthObj.monthInt = monthInt\n monthObj.creditLink = item.creditLink\n monthObj.debitLink = item.debitLink\n monthObj.balance = item.balance\n monthObj.balanceUSD = item.balanceUSD\n }\n } else {\n monthObj.month = year\n monthObj.invalue = item.invalue\n monthObj.invalueUSD = item.invalueUSD\n monthObj.outvalue = item.outvalue\n monthObj.outvalueUSD = item.outvalueUSD\n monthObj.difference = item.difference\n monthObj.differenceUSD = item.differenceUSD\n monthObj.total = item.total\n monthObj.totalUSD = item.totalUSD\n monthObj.outEstimate = item.outEstimate\n monthObj.outEstimateUsd = item.outEstimateUsd\n monthObj.monthPrice = item.monthPrice\n monthObj.count = 1\n monthObj.monthInt = monthInt\n monthObj.balance = item.balance\n monthObj.balanceUSD = item.balanceUSD\n monthObj.debitLink = item.debitLink\n monthObj.creditLink = item.creditLink\n monthObj.taddValue = item.taddValue\n monthObj.taddValueUSD = item.taddValueUSD\n }\n dataMap.set(year, monthObj)\n }\n }\n const result = []\n yearArr.forEach((year) => {\n const tempResultItem = dataMap.get(year)\n if (tempResultItem.count > 0) {\n tempResultItem.monthPrice = tempResultItem.monthPrice / tempResultItem.count\n }\n result.push(tempResultItem)\n })\n return result\n }\n\n getProposalYearlyData (data) {\n const result = {}\n result.allSpent = data.allSpent\n result.allBudget = data.allBudget\n result.proposalList = data.proposalList\n result.domainList = data.domainList\n result.summary = data.summary\n\n const dataMap = new Map()\n const yearArr = []\n data.report.forEach((report) => {\n const month = report.month\n if (month && month !== '') {\n const year = month.split('/')[0]\n if (!yearArr.includes(year)) {\n yearArr.push(year)\n }\n let monthObj = {}\n if (dataMap.has(year)) {\n monthObj = dataMap.get(year)\n monthObj.total += report.total\n for (let i = 0; i < monthObj.allData.length; i++) {\n monthObj.allData[i].expense += report.allData[i].expense\n }\n for (let i = 0; i < monthObj.domainData.length; i++) {\n monthObj.domainData[i].expense += report.domainData[i].expense\n // calculate DCR value\n monthObj.domainData[i].expenseDCR += report.usdRate > 0 ? report.domainData[i].expense / report.usdRate : 0\n }\n monthObj.treasurySpent += report.treasurySpent\n monthObj.treasurySpentDCR += report.usdRate > 0 ? report.treasurySpent / report.usdRate : 0\n } else {\n monthObj.total = report.total\n monthObj.month = year\n monthObj.allData = []\n monthObj.domainData = []\n for (let i = 0; i < report.allData.length; i++) {\n const item = report.allData[i]\n const allDataItem = {}\n allDataItem.token = item.token\n allDataItem.name = item.name\n allDataItem.expense = item.expense\n allDataItem.domain = item.domain\n monthObj.allData.push(allDataItem)\n }\n for (let i = 0; i < report.domainData.length; i++) {\n const item = report.domainData[i]\n const domainDataItem = {}\n domainDataItem.domain = item.domain\n domainDataItem.expense = item.expense\n // calculate DCR value\n domainDataItem.expenseDCR = report.usdRate > 0 ? item.expense / report.usdRate : 0\n monthObj.domainData.push(domainDataItem)\n }\n monthObj.treasurySpent = report.treasurySpent\n monthObj.treasurySpentDCR = report.usdRate > 0 ? report.treasurySpent / report.usdRate : 0\n }\n dataMap.set(year, monthObj)\n }\n })\n result.report = []\n yearArr.forEach((year) => {\n result.report.push(dataMap.get(year))\n })\n return result\n }\n\n createProposalTable (data) {\n if (!data.report) {\n return ''\n }\n\n let handlerData = data\n if (this.settings.interval === 'year') {\n handlerData = this.getProposalYearlyData(data)\n }\n\n if (handlerData.report.length < 1) {\n this.nodataTarget.classList.remove('d-none')\n this.reportTarget.classList.add('d-none')\n return\n }\n this.nodataTarget.classList.add('d-none')\n this.reportTarget.classList.remove('d-none')\n\n let thead = '<thead><tr class=\"text-secondary finance-table-header\">' +\n '<th class=\"text-center ps-0 month-col border-right-grey report-first-header head-first-cell\">' +\n '<div class=\"c1\"><span data-action=\"click->financereport#sortByDate\" class=\"homeicon-swap vertical-sort\"></span></div><div class=\"c2\"><span id=\"sortCreateDate\" data-action=\"click->financereport#sortByCreateDate\" class=\"homeicon-swap horizontal-sort\"></span></div></th>' +\n '###' +\n '<th class=\"text-right ps-0 fw-600 fs-13i month-col ta-center border-left-grey report-last-header va-mid\">Total</th>' +\n '</tr></thead>'\n let tbody = '<tbody>###</tbody>'\n\n let headList = ''\n const proposalTokenMap = data.proposalTokenMap\n for (let i = 0; i < handlerData.report.length; i++) {\n const index = this.settings.tsort === 'newest' ? i : (handlerData.report.length - i - 1)\n const report = handlerData.report[index]\n const timeParam = this.getFullTimeParam(report.month, '/')\n\n if (this.settings.interval === 'year') {\n headList += `<th class=\"text-center fw-600 pb-30i fs-13i table-header-sticky va-mid mw-75px\" id=\"${this.settings.interval + ';' + report.month}\">`\n headList += '<div class=\"d-flex justify-content-center\">'\n headList += `<a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" style=\"text-align: right; width: 80px;\" href=\"${'/finance-report?type=bytime&dtype=' + this.settings.interval + '&dtime=' + (timeParam === '' ? report.month : timeParam)}\">${report.month.replace('/', '-')}`\n headList += '</a></div></th>'\n } else {\n headList += '<th class=\"text-right fw-600 pb-30i fs-13i ps-2 pe-2 table-header-sticky va-mid mw-75px\" ' +\n `id=\"${this.settings.interval + ';' + report.month}\" ` +\n `><a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"${'/finance-report?type=bytime&dtype=month&dtime=' + (timeParam === '' ? report.month : timeParam)}\"><span class=\"d-block pr-5\">${report.month.replace('/', '-')}</span></a></th>`\n }\n }\n thead = thead.replace('###', headList)\n\n let bodyList = ''\n for (let i = 0; i < handlerData.proposalList.length; i++) {\n const index = this.settings.psort === 'oldest' ? (handlerData.proposalList.length - i - 1) : i\n const proposal = handlerData.proposalList[index]\n let token = ''\n if (proposalTokenMap[proposal] && proposalTokenMap[proposal] !== '') {\n token = proposalTokenMap[proposal]\n }\n bodyList += `<tr class=\"odd-even-row\"><td class=\"text-center fs-13i border-right-grey report-first-data\"><a href=\"${'/finance-report/detail?type=proposal&token=' + token}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i d-block ${this.settings.interval === 'year' ? 'proposal-year-title' : 'proposal-title-col'}\">${proposal}</a></td>`\n for (let j = 0; j < handlerData.report.length; j++) {\n const tindex = this.settings.tsort === 'newest' ? j : (handlerData.report.length - j - 1)\n const report = handlerData.report[tindex]\n const allData = report.allData[index]\n if (allData.expense > 0) {\n if (this.settings.interval === 'year') {\n bodyList += `<td class=\"${this.settings.interval === 'year' ? 'text-center' : 'text-right'} fs-13i proposal-content-td va-mid\">`\n bodyList += '<div class=\"d-flex justify-content-center\">'\n bodyList += `<span style=\"text-align: right; width: 80px;\">$${humanize.formatToLocalString(allData.expense, 2, 2)}</span>`\n bodyList += '</div>'\n } else {\n bodyList += '<td class=\"text-right fs-13i proposal-content-td va-mid\">'\n bodyList += `$${humanize.formatToLocalString(allData.expense, 2, 2)}`\n }\n } else {\n bodyList += '<td class=\"text-center fs-13i\">'\n }\n bodyList += '</td>'\n }\n bodyList += `<td class=\"text-right fs-13i fw-600 border-left-grey report-last-data va-mid\">$${humanize.formatToLocalString(handlerData.summary[index].budget, 2, 2)}</td></tr>`\n }\n\n bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n '<td class=\"text-center fw-600 fs-13i report-first-header report-first-last-footer va-mid\">Total</td>'\n for (let i = 0; i < handlerData.report.length; i++) {\n const index = this.settings.tsort === 'newest' ? i : (handlerData.report.length - i - 1)\n const report = handlerData.report[index]\n if (this.settings.interval === 'year') {\n bodyList += '<td class=\"text-center fw-600 fs-13i va-mid\">'\n bodyList += '<div class=\"d-flex justify-content-center\">'\n bodyList += `<span style=\"text-align: right; width: 80px;\">$${humanize.formatToLocalString(report.total, 2, 2)}</span>`\n bodyList += '</div>'\n bodyList += '</td>'\n } else {\n bodyList += `<td class=\"text-right fw-600 fs-13i va-mid\">$${humanize.formatToLocalString(report.total, 2, 2)}</td>`\n }\n }\n\n bodyList += `<td class=\"text-right fw-600 fs-13i report-last-header report-first-last-footer va-mid\">$${humanize.formatToLocalString(handlerData.allBudget, 2, 2)}</td></tr>`\n\n tbody = tbody.replace('###', bodyList)\n return thead + tbody\n }\n\n createMonthAuthorTable (data) {\n if (!data.report) {\n return ''\n }\n\n const handlerData = data\n if (handlerData.report.length < 1) {\n this.nodataTarget.classList.remove('d-none')\n this.reportTarget.classList.add('d-none')\n return\n }\n this.nodataTarget.classList.add('d-none')\n this.reportTarget.classList.remove('d-none')\n\n let thead = '<thead><tr class=\"text-secondary finance-table-header\">' +\n '<th class=\"text-center ps-0 month-col border-right-grey report-first-header head-first-cell\">' +\n '<div class=\"c1\"><span data-action=\"click->financereport#sortByDate\" class=\"homeicon-swap vertical-sort\"></span></div><div class=\"c2\"><span data-action=\"click->financereport#sortByCreateDate\" class=\"homeicon-swap horizontal-sort\"></span></div></th>' +\n '###' +\n '<th class=\"text-right ps-0 fw-600 month-col ta-center border-left-grey report-last-header va-mid\">Total</th>' +\n '</tr></thead>'\n let tbody = '<tbody>###</tbody>'\n\n let headList = ''\n for (let i = 0; i < handlerData.report.length; i++) {\n const index = this.settings.tsort === 'newest' ? i : (handlerData.report.length - i - 1)\n const report = handlerData.report[index]\n const timeParam = this.getFullTimeParam(report.month, '/')\n if (this.settings.interval === 'year') {\n headList += `<th class=\"text-center fw-600 pb-30i fs-13i table-header-sticky va-mid mw-75px\" id=\"${this.settings.interval + ';' + report.month}\">`\n headList += '<div class=\"d-flex justify-content-center\">'\n headList += `<a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" style=\"text-align: right; width: 80px;\" href=\"${'/finance-report/detail?type=' + this.settings.interval + '&time=' + (timeParam === '' ? report.month : timeParam)}\">${report.month.replace('/', '-')}`\n headList += '</a></div></th>'\n } else {\n headList += '<th class=\"text-right fw-600 pb-30i fs-13i ps-2 pe-2 table-header-sticky va-mid mw-75px\" ' +\n `id=\"${this.settings.interval + ';' + report.month}\" ` +\n `><a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"${'/finance-report?type=bytime&dtype=month&dtime=' + (timeParam === '' ? report.month : timeParam)}\"><span class=\"d-block pr-5\">${report.month.replace('/', '-')}</span></a></th>`\n }\n }\n thead = thead.replace('###', headList)\n\n let bodyList = ''\n for (let i = 0; i < handlerData.authorReport.length; i++) {\n const index = this.settings.psort === 'oldest' ? (handlerData.authorReport.length - i - 1) : i\n const author = handlerData.authorReport[index]\n const budget = author.budget\n bodyList += `<tr class=\"odd-even-row\"><td class=\"text-center fs-13i border-right-grey report-first-data\"><a data-turbolinks=\"false\" href=\"/finance-report/detail?type=owner&name=${author.name}\" class=\"link-hover-underline fw-600 fs-13i d-block ${this.settings.interval === 'year' ? 'proposal-year-title' : 'author-title-col'}\">${author.name}</a></td>`\n for (let j = 0; j < handlerData.report.length; j++) {\n const tindex = this.settings.tsort === 'newest' ? j : (handlerData.report.length - j - 1)\n const report = handlerData.report[tindex]\n const expense = this.getAuthorExpense(author.name, report.authorData)\n if (expense > 0) {\n if (this.settings.interval === 'year') {\n bodyList += `<td class=\"${this.settings.interval === 'year' ? 'text-center' : 'text-right'} fs-13i proposal-content-td va-mid\">`\n bodyList += '<div class=\"d-flex justify-content-center\">'\n bodyList += `<span style=\"text-align: right; width: 80px;\">$${humanize.formatToLocalString(expense, 2, 2)}</span>`\n bodyList += '</div>'\n } else {\n bodyList += '<td class=\"text-right fs-13i proposal-content-td va-mid\">'\n bodyList += `$${humanize.formatToLocalString(expense, 2, 2)}`\n }\n } else {\n bodyList += '<td class=\"text-center fs-13i\">'\n }\n bodyList += '</td>'\n }\n bodyList += `<td class=\"text-right fs-13i fw-600 border-left-grey report-last-data va-mid\">$${humanize.formatToLocalString(budget, 2, 2)}</td></tr>`\n }\n\n bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n '<td class=\"text-center fw-600 fs-13i report-first-header report-first-last-footer va-mid\">Total</td>'\n for (let i = 0; i < handlerData.report.length; i++) {\n const index = this.settings.tsort === 'newest' ? i : (handlerData.report.length - i - 1)\n const report = handlerData.report[index]\n if (this.settings.interval === 'year') {\n bodyList += '<td class=\"text-center fw-600 fs-13i va-mid\">'\n bodyList += '<div class=\"d-flex justify-content-center\">'\n bodyList += `<span style=\"text-align: right; width: 80px;\">$${humanize.formatToLocalString(report.total, 2, 2)}</span>`\n bodyList += '</div>'\n bodyList += '</td>'\n } else {\n bodyList += `<td class=\"text-right fw-600 fs-13i va-mid\">$${humanize.formatToLocalString(report.total, 2, 2)}</td>`\n }\n }\n\n bodyList += `<td class=\"text-right fw-600 fs-13i report-last-header report-first-last-footer va-mid\">$${humanize.formatToLocalString(handlerData.allBudget, 2, 2)}</td></tr>`\n\n tbody = tbody.replace('###', bodyList)\n return thead + tbody\n }\n\n getAuthorExpense (author, authorData) {\n let expense = 0\n authorData.forEach(tmp => {\n if (tmp.author === author) {\n expense = tmp.expense\n }\n })\n return expense\n }\n\n createSummaryTable (data) {\n if (!data.report) {\n return ''\n }\n if (data.summary.length < 1) {\n this.nodataTarget.classList.remove('d-none')\n this.reportTarget.classList.add('d-none')\n return\n }\n this.nodataTarget.classList.add('d-none')\n this.reportTarget.classList.remove('d-none')\n\n if (!this.settings.stype || this.settings.stype === '') {\n this.settings.stype = this.defaultSettings.stype\n }\n\n if (!this.settings.order || this.settings.order === '') {\n this.settings.order = this.defaultSettings.order\n }\n\n const thead = '<thead>' +\n '<tr class=\"text-secondary finance-table-header\">' +\n '<th class=\"va-mid text-center fs-13i month-col fw-600 proposal-name-col\">Name</th>' +\n '<th class=\"va-mid text-center fs-13i px-2 fw-600\">Domain</th>' +\n '<th class=\"va-mid text-center fs-13i px-2 fw-600\">Author</th>' +\n '<th class=\"va-mid text-center fs-13i px-2 fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByStartDate\">Start Date</label>' +\n `<span data-action=\"click->financereport#sortByStartDate\" class=\"${(this.settings.stype === 'startdt' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${(!this.settings.stype || this.settings.stype === '' || this.settings.stype === 'startdt') ? '' : 'c-grey-4'} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-center fs-13i px-2 fw-600\">End Date</th>' +\n '<th class=\"va-mid text-right fs-13i px-2 fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByBudget\">Budget</label>' +\n `<span data-action=\"click->financereport#sortByBudget\" class=\"${(this.settings.stype === 'budget' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'budget' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-right fs-13i px-2 fw-600\">Days</th>' +\n '<th class=\"va-mid text-right fs-13i px-2 fw-600\">Monthly Avg (Est)</th>' +\n '<th class=\"va-mid text-right fs-13i px-2 fw-600\">Total Spent (Est)</th>' +\n '<th class=\"va-mid text-right fs-13i px-2 fw-600\">Total Remaining (Est)</th></tr></thead>'\n let tbody = '<tbody>###</tbody>'\n let bodyList = ''\n const proposalTokenMap = data.proposalTokenMap\n // Handler sort before display data\n // sort by param\n const summaryList = this.sortSummary(data.summary)\n let totalBudget = 0.0\n let totalSpent = 0.0\n // create tbody content\n for (let i = 0; i < summaryList.length; i++) {\n const summary = summaryList[i]\n if (this.settings.active && summary.totalRemaining === 0.0) {\n continue\n }\n let token = ''\n if (proposalTokenMap[summary.name] && proposalTokenMap[summary.name] !== '') {\n token = proposalTokenMap[summary.name]\n }\n const lengthInDays = this.getLengthInDay(summary)\n let monthlyAverage = summary.budget / lengthInDays\n if (lengthInDays < 30) {\n monthlyAverage = summary.budget\n } else {\n monthlyAverage = monthlyAverage * 30\n }\n totalBudget += summary.budget\n totalSpent += summary.totalSpent\n bodyList += `<tr class=\"${summary.totalRemaining === 0.0 ? 'proposal-summary-row' : 'summary-active-row'}\">` +\n `<td class=\"va-mid text-center fs-13i proposal-name-column\"><a href=\"${'/finance-report/detail?type=proposal&token=' + token}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${summary.name}</a></td>` +\n `<td class=\"va-mid text-center px-2 fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + summary.domain}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${summary.domain.charAt(0).toUpperCase() + summary.domain.slice(1)}</a></td>` +\n `<td class=\"va-mid text-center px-2 fs-13i\"><a href=\"${'/finance-report/detail?type=owner&name=' + summary.author}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${summary.author}</a></td>` +\n `<td class=\"va-mid text-center px-2 fs-13i\">${summary.start}</td>` +\n `<td class=\"va-mid text-center px-2 fs-13i\">${summary.end}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(summary.budget, 2, 2)}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">${lengthInDays}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(monthlyAverage, 2, 2)}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">${summary.totalSpent > 0 ? '$' + humanize.formatToLocalString(summary.totalSpent, 2, 2) : '-'}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">${summary.totalRemaining > 0 ? '$' + humanize.formatToLocalString(summary.totalRemaining, 2, 2) : '-'}</td>` +\n '</tr>'\n }\n\n bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n '<td class=\"va-mid text-center fw-600 fs-13i\" colspan=\"5\">Total</td>' +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</td>` +\n '<td class=\"va-mid text-right px-2 fw-600 fs-13i\">-</td><td class=\"va-mid text-right px-2 fw-600 fs-13i\">-</td>' +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalSpent, 2, 2)}</td>` +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalBudget - totalSpent, 2, 2)}</td>` +\n '</tr>'\n\n tbody = tbody.replace('###', bodyList)\n return thead + tbody\n }\n\n changeYear (e) {\n if (!e.target.value || e.target.value === '') {\n return\n }\n this.settings.year = e.target.value\n this.calculate()\n }\n\n changeTopYear (e) {\n if (!e.target.value || e.target.value === '') {\n return\n }\n const currentTime = this.settings.dtime\n const timeArr = currentTime.toString().split('_')\n let currentMonth = 0\n if (timeArr.length > 1) {\n currentMonth = Number(timeArr[1])\n }\n if (this.isAllYearTimeReport(e.target.value) || (e.target.value === this.reportMinYear && currentMonth < this.reportMinMonth) || (e.target.value === this.reportMaxYear && currentMonth > this.reportMaxMonth)) {\n currentMonth = 0\n }\n if (this.isAllYearTimeReport(e.target.value)) {\n this.topMonthSelectTarget.disabled = true\n this.settings.dtype = 'year'\n this.settings.dtime = '0'\n } else {\n this.topMonthSelectTarget.disabled = false\n this.settings.dtime = e.target.value + (currentMonth > 0 ? '_' + currentMonth : '')\n }\n this.initReportDetailData()\n }\n\n isAllYearTimeReport (yearOption) {\n return yearOption === '' || yearOption === 0 || yearOption === '0'\n }\n\n changeTopMonth (e) {\n if (!e.target.value || e.target.value === '') {\n return\n }\n const currentTime = this.settings.dtime\n const timeArr = currentTime.toString().split('_')\n const year = timeArr[0]\n if (e.target.value > 0) {\n this.settings.dtime = year + '_' + e.target.value\n } else {\n this.settings.dtime = year\n }\n this.initReportDetailData()\n }\n\n getLengthInDay (summary) {\n const start = Date.parse(summary.start)\n const end = Date.parse(summary.end)\n const oneDay = 24 * 60 * 60 * 1000\n\n return Math.round(Math.abs((end - start) / oneDay))\n }\n\n sortAuthorData (authorList) {\n switch (this.settings.stype) {\n case 'budget':\n return this.sortSummaryByBudget(authorList)\n case 'spent':\n return this.sortAuthorByTotalReceived(authorList)\n case 'remaining':\n return this.sortAuthorByRemaining(authorList)\n case 'pnum':\n return this.sortAuthorByProposalNum(authorList)\n default:\n return this.sortSummaryByName(authorList)\n }\n }\n\n sortAuthorByProposalNum (authorList) {\n if (!authorList) {\n return\n }\n const _this = this\n authorList.sort(function (a, b) {\n if (a.proposals > b.proposals) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (a.proposals < b.proposals) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return authorList\n }\n\n sortAuthorByRemaining (authorList) {\n if (!authorList) {\n return\n }\n const _this = this\n authorList.sort(function (a, b) {\n if (a.totalRemaining > b.totalRemaining) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (a.totalRemaining < b.totalRemaining) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return authorList\n }\n\n sortAuthorByTotalReceived (authorList) {\n if (!authorList) {\n return\n }\n const _this = this\n authorList.sort(function (a, b) {\n if (a.totalReceived > b.totalReceived) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (a.totalReceived < b.totalReceived) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return authorList\n }\n\n sortDomains (domainDataList) {\n let result = []\n if (!domainDataList || domainDataList.length === 0) {\n return result\n }\n\n // if not sort by data column, sort by month, year\n if (!this.settings.stype || this.settings.stype === '') {\n for (let i = 0; i < domainDataList.length; i++) {\n const sort = this.settings.tsort\n result.push(sort === 'oldest' ? domainDataList[domainDataList.length - i - 1] : domainDataList[i])\n }\n return result\n }\n\n result = Array.from(domainDataList)\n const _this = this\n result.sort(function (a, b) {\n let aData = null\n let bData = null\n if (_this.settings.stype === 'total') {\n aData = a.total + (a.unaccounted > 0 ? a.unaccounted : 0)\n bData = b.total + (b.unaccounted > 0 ? b.unaccounted : 0)\n } else if (_this.settings.stype === 'unaccounted') {\n aData = a.unaccounted\n bData = b.unaccounted\n } else if (_this.settings.stype === 'rate') {\n aData = a.usdRate\n bData = b.usdRate\n } else {\n a.domainData.forEach((aDomainData) => {\n if (_this.settings.stype === aDomainData.domain) {\n aData = aDomainData.expense\n }\n })\n b.domainData.forEach((bDomainData) => {\n if (_this.settings.stype === bDomainData.domain) {\n bData = bDomainData.expense\n }\n })\n }\n if (aData > bData) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (aData < bData) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return result\n }\n\n sortTreasury (treasuryList) {\n let result = []\n if (!treasuryList) {\n return result\n }\n // if not sort by data column, sort by month, year\n if (!this.settings.stype || this.settings.stype === '') {\n for (let i = 0; i < treasuryList.length; i++) {\n const sort = this.settings.tsort\n result.push(sort === 'newest' ? treasuryList[i] : treasuryList[treasuryList.length - i - 1])\n }\n return result\n }\n\n result = Array.from(treasuryList)\n const _this = this\n result.sort(function (a, b) {\n let aData = null\n let bData = null\n switch (_this.settings.stype) {\n case 'outgoing':\n aData = a.outvalue\n bData = b.outvalue\n break\n case 'net':\n aData = a.outvalue > a.invalue ? 0 - a.difference : a.difference\n bData = b.outvalue > b.invalue ? 0 - b.difference : b.difference\n break\n case 'outest':\n aData = a.outEstimate\n bData = b.outEstimate\n break\n case 'rate':\n aData = a.monthPrice\n bData = b.monthPrice\n break\n case 'balance':\n aData = a.balance\n bData = b.balance\n break\n case 'percent':\n aData = 0\n bData = 0\n if (a.outvalue > 0) {\n aData = 100 * 1e8 * a.outEstimate / a.outvalue\n }\n if (b.outvalue > 0) {\n bData = 100 * 1e8 * b.outEstimate / b.outvalue\n }\n break\n default:\n aData = a.invalue\n bData = b.invalue\n }\n if (aData > bData) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (aData < bData) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return result\n }\n\n sortSummary (summary) {\n switch (this.settings.stype) {\n case 'pname':\n return this.sortSummaryByName(summary)\n case 'domain':\n return this.sortSummaryByDomain(summary)\n case 'author':\n return this.sortSummaryByAuthor(summary)\n case 'budget':\n return this.sortSummaryByBudget(summary)\n case 'spent':\n return this.sortSummaryBySpent(summary)\n case 'remaining':\n return this.sortSummaryByRemaining(summary)\n case 'days':\n return this.sortSummaryByDays(summary)\n case 'avg':\n return this.sortSummaryByAvg(summary)\n case 'enddt':\n return this.sortSummaryByDate(summary, false)\n default:\n return this.sortSummaryByDate(summary, true)\n }\n }\n\n sortSummaryByDate (summary, isStart) {\n if (!summary) {\n return\n }\n const _this = this\n summary.sort(function (a, b) {\n const date1 = Date.parse(isStart ? a.start : a.end)\n const date2 = Date.parse(isStart ? b.start : b.end)\n if (date1 > date2) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (date1 < date2) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return summary\n }\n\n sortSummaryByDays (summary) {\n if (!summary) {\n return\n }\n const _this = this\n summary.sort(function (a, b) {\n const lengtha = _this.getLengthInDay(a)\n const lengthb = _this.getLengthInDay(b)\n if (lengtha > lengthb) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (lengtha < lengthb) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return summary\n }\n\n sortSummaryByAvg (summary) {\n if (!summary) {\n return\n }\n const _this = this\n summary.sort(function (a, b) {\n const avga = (a.budget / _this.getLengthInDay(a)) * 30\n const avgb = (b.budget / _this.getLengthInDay(b)) * 30\n if (avga > avgb) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (avga < avgb) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return summary\n }\n\n sortSummaryByRemaining (summary) {\n if (!summary) {\n return\n }\n const _this = this\n summary.sort(function (a, b) {\n if (a.totalRemaining > b.totalRemaining) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (a.totalRemaining < b.totalRemaining) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return summary\n }\n\n sortSummaryBySpent (summary) {\n if (!summary) {\n return\n }\n const _this = this\n summary.sort(function (a, b) {\n if (a.totalSpent > b.totalSpent) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (a.totalSpent < b.totalSpent) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return summary\n }\n\n sortSummaryByBudget (summary) {\n if (!summary) {\n return\n }\n const _this = this\n summary.sort(function (a, b) {\n if (a.budget > b.budget) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (a.budget < b.budget) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return summary\n }\n\n sortByStartdt (summary) {\n if (this.settings.order !== 'esc') {\n return summary\n }\n const result = []\n for (let i = summary.length - 1; i >= 0; i--) {\n result.push(summary[i])\n }\n return result\n }\n\n sortSummaryByDomain (summary) {\n if (!summary) {\n return\n }\n const _this = this\n summary.sort(function (a, b) {\n if (a.domain > b.domain) {\n return _this.settings.order === 'desc' ? -1 : 1\n } else if (a.domain < b.domain) {\n return _this.settings.order === 'desc' ? 1 : -1\n } else {\n if (a.name > b.name) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (a.name < b.name) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n }\n return 0\n })\n\n return summary\n }\n\n sortSummaryByName (summary) {\n if (!summary) {\n return\n }\n const _this = this\n summary.sort(function (a, b) {\n if (a.name > b.name) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (a.name < b.name) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return summary\n }\n\n sortSummaryByAuthor (summary) {\n if (!summary) {\n return\n }\n const _this = this\n summary.sort(function (a, b) {\n if (a.author > b.author) {\n return _this.settings.order === 'desc' ? -1 : 1\n }\n if (a.author < b.author) {\n return _this.settings.order === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return summary\n }\n\n swapItemOnArray (array, index1, index2) {\n const temp = array[index1]\n array[index1] = index2\n array[index2] = temp\n }\n\n createAuthorTable (data) {\n if (!data.authorReport) {\n return ''\n }\n\n if (!this.settings.stype || this.settings.stype === '') {\n this.settings.stype = 'author'\n }\n\n if (!this.settings.order || this.settings.order === '') {\n this.settings.order = this.defaultSettings.order\n }\n\n const thead = '<thead>' +\n '<tr class=\"text-secondary finance-table-header\">' +\n '<th class=\"va-mid text-center px-2 fs-13i month-col fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByAuthor\">Author</label>' +\n `<span data-action=\"click->financereport#sortByAuthor\" class=\"${(this.settings.stype === 'author' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'author' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-center px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByPNum\">Proposals</label>' +\n `<span data-action=\"click->financereport#sortByPNum\" class=\"${(this.settings.stype === 'pnum' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'pnum' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByBudget\">Total Budget</label>' +\n `<span data-action=\"click->financereport#sortByBudget\" class=\"${(this.settings.stype === 'budget' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'budget' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Total Received (Est)</th>' +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Total Remaining (Est)</th>' +\n '</tr></thead>'\n let tbody = '<tbody>###</tbody>'\n let bodyList = ''\n let totalBudget = 0\n let totalSpent = 0\n let totalRemaining = 0\n let totalProposals = 0\n // Handler sort before display data\n const authorList = this.sortAuthorData(data.authorReport)\n // create tbody content\n for (let i = 0; i < authorList.length; i++) {\n const author = authorList[i]\n if (this.settings.active && author.totalRemaining === 0.0) {\n continue\n }\n totalBudget += author.budget\n totalSpent += author.totalReceived\n totalRemaining += author.totalRemaining\n totalProposals += author.proposals\n bodyList += `<tr class=\"${author.totalRemaining === 0.0 ? 'proposal-summary-row' : 'summary-active-row'}\"><td class=\"va-mid text-center px-2 fs-13i fw-600\"><a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"${'/finance-report/detail?type=owner&name=' + author.name}\">${author.name}</a></td>`\n bodyList += `<td class=\"va-mid text-center px-2 fs-13i\">${author.proposals}</td>`\n bodyList += `<td class=\"va-mid text-right px-2 fs-13i\">${author.budget > 0 ? '$' + humanize.formatToLocalString(author.budget, 2, 2) : '-'}</td>`\n bodyList += `<td class=\"va-mid text-right px-2 fs-13i\">${author.totalReceived > 0 ? '$' + humanize.formatToLocalString(author.totalReceived, 2, 2) : '-'}</td>`\n bodyList += `<td class=\"va-mid text-right px-2 fs-13i\">${author.totalRemaining > 0 ? '$' + humanize.formatToLocalString(author.totalRemaining, 2, 2) : '-'}</td></tr>`\n }\n\n bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n '<td class=\"va-mid text-center px-2 fw-600 fs-13i\">Total</td>' +\n `<td class=\"va-mid text-center px-2 fw-600 fs-13i\">${totalProposals}</td>` +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</td>` +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalSpent, 2, 2)}</td>` +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalRemaining, 2, 2)}</td>` +\n '</tr>'\n tbody = tbody.replace('###', bodyList)\n return thead + tbody\n }\n\n createDomainTable (data) {\n if (!data.report) {\n return ''\n }\n let handlerData = data\n // combined data of report and treasury report\n const treasuryDataMap = this.getTreasuryMonthSpentMap(data.treasurySummary)\n handlerData = this.getTreasuryDomainCombined(handlerData, treasuryDataMap)\n if (this.settings.interval === 'year') {\n handlerData = domainYearData != null ? domainYearData : this.getProposalYearlyData(handlerData)\n this.futureLabelTarget.textContent = 'Years in the future'\n } else {\n this.futureLabelTarget.textContent = 'Months in the future'\n }\n\n if (handlerData.report.length < 1) {\n this.nodataTarget.classList.remove('d-none')\n this.reportTarget.classList.add('d-none')\n return\n }\n this.nodataTarget.classList.add('d-none')\n this.reportTarget.classList.remove('d-none')\n let thead = '<col><colgroup span=\"2\"></colgroup><col5group span=\"5\"></col5group><thead><tr class=\"text-secondary finance-table-header\">' +\n `<th rowspan=\"2\" class=\"va-mid text-center ps-0 month-col cursor-pointer\" data-action=\"click->financereport#sortByCreateDate\"><span class=\"${this.settings.tsort === 'oldest' ? 'dcricon-arrow-up' : 'dcricon-arrow-down'} ${this.settings.stype && this.settings.stype !== '' ? 'c-grey-4' : ''} col-sort\"></span></th>`\n if (this.settings.interval !== 'year') {\n thead += '<th rowspan=\"2\" class=\"va-mid text-right-i fs-13i px-2 fw-600 treasury-content-cell\">Rate (USD/DCR)</th>'\n }\n thead += '###' +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Delta (Est)</th>' +\n '<th colspan=\"5\" scope=\"col5group\" class=\"va-mid text-center-i total-last-col fs-13i fw-600 border-left-grey\">Total Spent</th></tr>####</thead>'\n let row2 = '<tr class=\"text-secondary finance-table-header\">'\n let tbody = '<tbody>###</tbody>'\n\n let headList = ''\n let domainsRateColumn = ''\n handlerData.domainList.forEach((domain) => {\n const domainDisp = domain.charAt(0).toUpperCase() + domain.slice(1)\n headList += `<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i domain-content-cell fs-13i fw-600\"><a href=\"${'/finance-report/detail?type=domain&name=' + domain}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${domainDisp} (Est)</a>` +\n `<span data-action=\"click->financereport#sortByDomainItem\" data-financereport-domain-param=\"${domain}\" class=\"${(this.settings.stype === domain && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== domain ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n row2 += '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>'\n domainsRateColumn += `<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">${domainDisp}</th>`\n })\n headList += '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Dev Spend Total (Est)</th>'\n row2 += '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n domainsRateColumn +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">Unaccounted</th></tr>'\n thead = thead.replace('####', row2)\n thead = thead.replace('###', headList)\n let bodyList = ''\n const domainDataMap = new Map()\n // sort before display on table\n const domainList = this.sortDomains(handlerData.report)\n let unaccountedTotal = 0\n let unaccountedDcrTotal = 0\n let totalAllDcr = 0\n let totalAllValue = 0\n let totalDevAll = 0\n let totalDevAllDCR = 0\n const domainDCRTotalMap = new Map()\n const _this = this\n // create tbody content\n for (let i = 0; i < domainList.length; i++) {\n const report = domainList[i]\n const timeParam = this.getFullTimeParam(report.month, '/')\n let isFuture = false\n const timeYearMonth = this.getYearMonthArray(report.month, '/')\n const nowDate = new Date()\n const year = nowDate.getUTCFullYear()\n const month = nowDate.getUTCMonth() + 1\n let rowTotal = 0\n let rowTotalDCR = 0\n if (this.settings.interval === 'year') {\n isFuture = timeYearMonth[0] > year\n } else {\n const compareDataTime = timeYearMonth[0] * 12 + timeYearMonth[1]\n const compareNowTime = year * 12 + month\n isFuture = compareDataTime > compareNowTime\n }\n const usdRate = this.settings.interval === 'year' ? 0 : report.usdRate\n bodyList += `<tr class=\"odd-even-row ${isFuture ? 'future-row-data' : ''}\"><td class=\"va-mid text-center fs-13i fw-600\"><a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" style=\"text-align: right; width: 80px;\" href=\"${'/finance-report?type=bytime&' + (this.settings.interval === 'year' ? '' : 'dtype=month&') + 'dtime=' + (timeParam === '' ? report.month : timeParam)}\">${report.month.replace('/', '-')}</a></td>`\n if (this.settings.interval !== 'year') {\n bodyList += `<td class=\"va-mid text-right px-2 fs-13i\">${usdRate > 0 ? '$' + humanize.formatToLocalString(usdRate, 2, 2) : '-'}</td>`\n }\n report.domainData.forEach((domainData) => {\n const dcrValue = this.settings.interval === 'year' ? domainData.expenseDCR : (usdRate > 0 ? domainData.expense / usdRate : 0)\n const dcrDisp = dcrValue > 0 ? humanize.formatToLocalString(dcrValue, 2, 2) : '-'\n bodyList += `<td class=\"va-mid text-right px-2 fs-13i\">${domainData.expense > 0 ? '$' + humanize.formatToLocalString(domainData.expense, 2, 2) : '-'}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">${dcrDisp}</td>`\n rowTotal += domainData.expense > 0 ? domainData.expense : 0\n rowTotalDCR += dcrValue > 0 ? dcrValue : 0\n if (domainDataMap.has(domainData.domain)) {\n domainDataMap.set(domainData.domain, domainDataMap.get(domainData.domain) + domainData.expense)\n } else {\n domainDataMap.set(domainData.domain, domainData.expense)\n }\n if (domainDCRTotalMap.has(domainData.domain)) {\n domainDCRTotalMap.set(domainData.domain, domainDCRTotalMap.get(domainData.domain) + dcrValue)\n } else {\n domainDCRTotalMap.set(domainData.domain, dcrValue)\n }\n })\n const devTotal = rowTotal\n const devTotalDCR = rowTotalDCR\n totalDevAll += devTotal\n totalDevAllDCR += devTotalDCR\n const unaccounted = report.treasurySpent > 0 ? report.treasurySpent - devTotal : -devTotal\n const unaccountedDcr = this.settings.interval === 'year' ? (report.treasurySpentDCR > 0 ? report.treasurySpentDCR - rowTotalDCR : -rowTotalDCR) : (usdRate > 0 ? unaccounted / usdRate : 0)\n const unaccountedDcrDisp = (unaccountedDcr >= 0 ? '' : '-') + humanize.formatToLocalString(Math.abs(unaccountedDcr), 2, 2)\n rowTotal += unaccounted\n rowTotalDCR += unaccountedDcr\n let rateStr = ''\n let unaccountedPercent = 100\n report.domainData.forEach((domainData) => {\n const rate = _this.isZeroNumber(rowTotal) ? 0 : 100 * domainData.expense / rowTotal\n rateStr += `<td class=\"va-mid text-right fs-13i px-2 fw-600\">${isFuture || rowTotal <= 0 ? '-' : ((rate < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(rate), 2, 2) + '%')}</td>`\n unaccountedPercent -= rate\n })\n rateStr += `<td class=\"va-mid text-right fs-13i px-2 fw-600\">${isFuture || rowTotal <= 0 ? '-' : ((unaccountedPercent < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(unaccountedPercent), 2, 2) + '%')}</td>`\n const totalDcrDisp = this.isZeroNumber(rowTotalDCR) ? '-' : (rowTotalDCR < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(rowTotalDCR), 2, 2)\n totalAllDcr += rowTotalDCR > 0 ? rowTotalDCR : 0\n totalAllValue += rowTotal > 0 ? rowTotal : 0\n unaccountedTotal += unaccounted\n unaccountedDcrTotal += unaccountedDcr\n // display dev spent total\n bodyList += `<td class=\"va-mid text-right fs-13i px-2\">${devTotal > 0 ? '$' + humanize.formatToLocalString(devTotal, 2, 2) : '-'}</td>` +\n `<td class=\"va-mid text-right fs-13i px-2\">${devTotalDCR > 0 ? humanize.formatToLocalString(devTotalDCR, 2, 2) : '-'}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">${isFuture ? '-' : (unaccounted >= 0 ? '' : '-') + '$' + humanize.formatToLocalString(Math.abs(unaccounted), 2, 2)}`\n if (!isFuture) {\n bodyList += `<span class=\"dcricon-info cursor-pointer cell-tooltip ms-1\" data-action=\"click->financereport#showUnaccountedUSDTooltip\" data-show=\"${report.treasurySpent + ';' + devTotal}\"><span class=\"tooltiptext cursor-default click-popup\"><span class=\"tooltip-text d-flex ai-center\"></span></span></span>`\n }\n bodyList += '</td>' +\n `<td class=\"va-mid text-right fs-13i px-2\">${isFuture ? '-' : unaccountedDcrDisp}</td>` +\n `<td class=\"va-mid text-right fs-13i px-2 fw-600\">${this.isZeroNumber(rowTotal) ? '-' : (rowTotal < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(rowTotal), 2, 2)}</td>` +\n `<td class=\"va-mid text-right fs-13i px-2 fw-600\">${totalDcrDisp}</td>` +\n `${rateStr}</tr>`\n }\n\n bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\"><td class=\"text-center fw-600 fs-13i border-right-grey\">Total (Est)</td>'\n if (this.settings.interval !== 'year') {\n bodyList += '<td class=\"va-mid text-right fw-600 fs-13i px-2\">-</td>'\n }\n let rateTotalStr = ''\n let unaccountedTotalPercent = 100\n handlerData.domainList.forEach((domain) => {\n const expData = domainDataMap.has(domain) ? domainDataMap.get(domain) : 0\n const expDcrData = domainDCRTotalMap.has(domain) ? domainDCRTotalMap.get(domain) : 0\n const rateTotal = _this.isZeroNumber(totalAllValue) ? 0 : 100 * expData / totalAllValue\n bodyList += `<td class=\"va-mid text-right fw-600 fs-13i px-2\">$${humanize.formatToLocalString(expData, 2, 2)}</td>`\n bodyList += `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${humanize.formatToLocalString(expDcrData, 2, 2)}</td>`\n rateTotalStr += `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${(rateTotal < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(rateTotal), 2, 2) + '%'}</td>`\n unaccountedTotalPercent -= rateTotal\n })\n rateTotalStr += `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${(unaccountedTotalPercent < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(unaccountedTotalPercent), 2, 2) + '%'}</td>`\n bodyList += `<td class=\"va-mid text-right fw-600 fs-13i px-2\">$${humanize.formatToLocalString(totalDevAll, 2, 2)}</td>` +\n `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${humanize.formatToLocalString(totalDevAllDCR, 2, 2)}</td>` +\n `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${this.isZeroNumber(unaccountedTotal) ? '-' : (unaccountedTotal < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(unaccountedTotal), 2, 2)}</td>` +\n `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${this.isZeroNumber(unaccountedDcrTotal) ? '-' : (unaccountedDcrTotal < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(unaccountedDcrTotal), 2, 2)}</td>` +\n `<td class=\"va-mid text-right fw-600 fs-13i px-2\">$${humanize.formatToLocalString(totalAllValue, 2, 2)}</td>` +\n `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${totalAllDcr > 0 ? humanize.formatToLocalString(totalAllDcr, 2, 2) : '-'}</td>` +\n `${rateTotalStr}</tr>`\n\n tbody = tbody.replace('###', bodyList)\n return thead + tbody\n }\n\n isZeroNumber (number) {\n if (number === 0) {\n return true\n }\n const num = Math.abs(number)\n return num.toFixed(2) === '0.00'\n }\n\n showIngoingTaddTooltip (e) {\n const target = e.target\n const data = target.dataset.show\n if (!data || data === '') {\n return\n }\n const dataArr = data.split(';')\n if (dataArr.length < 2) {\n return\n }\n const tooltipText = target.getElementsByClassName('tooltiptext')[0]\n if (!tooltipText) {\n return\n }\n if (target.classList.contains('active')) {\n target.classList.remove('active')\n tooltipText.style.visibility = 'hidden'\n } else {\n target.classList.add('active')\n tooltipText.style.visibility = 'visible'\n const textElement = tooltipText.getElementsByClassName('tooltip-text')[0]\n if (!textElement) {\n return\n }\n textElement.innerHTML = `<p>Decentralized Treasury received <br /><span class=\"fw-600\">${humanize.formatToLocalString(Number(dataArr[0]), 2, 2)} DCR(~$${humanize.formatToLocalString(Number(dataArr[1]), 2, 2)})</span> <br />from Admin Treasury</p>`\n }\n }\n\n showOutgoingTaddTooltip (e) {\n const target = e.target\n const data = target.dataset.show\n if (!data || data === '') {\n return\n }\n const dataArr = data.split(';')\n if (dataArr.length < 2) {\n return\n }\n const tooltipText = target.getElementsByClassName('tooltiptext')[0]\n if (!tooltipText) {\n return\n }\n if (target.classList.contains('active')) {\n target.classList.remove('active')\n tooltipText.style.visibility = 'hidden'\n } else {\n target.classList.add('active')\n tooltipText.style.visibility = 'visible'\n const textElement = tooltipText.getElementsByClassName('tooltip-text')[0]\n if (!textElement) {\n return\n }\n textElement.innerHTML = `<p>Admin Treasury sent <br /><span class=\"fw-600\">${humanize.formatToLocalString(Number(dataArr[0]), 2, 2)} DCR(~$${humanize.formatToLocalString(Number(dataArr[1]), 2, 2)})</span><br />to Decentralized Treasury</p>`\n }\n }\n\n showUnaccountedUSDTooltip (e) {\n const target = e.target\n const data = target.dataset.show\n if (!data || data === '') {\n return\n }\n const dataArr = data.split(';')\n if (dataArr.length < 2) {\n return\n }\n const tooltipText = target.getElementsByClassName('tooltiptext')[0]\n if (!tooltipText) {\n return\n }\n if (target.classList.contains('active')) {\n target.classList.remove('active')\n tooltipText.style.visibility = 'hidden'\n } else {\n target.classList.add('active')\n tooltipText.style.visibility = 'visible'\n const textElement = tooltipText.getElementsByClassName('tooltip-text')[0]\n if (!textElement) {\n return\n }\n textElement.innerHTML = `<div class=\"fs-18\">-</div><div class=\"ms-2\"><p>Treasury Spent: <span class=\"fw-600\">$${humanize.formatToLocalString(Number(dataArr[0].trim()), 2, 2)}</span></p><p class=\"mt-2\">Estimate Spend: <span class=\"fw-600\">$${humanize.formatToLocalString(Number(dataArr[1].trim()), 2, 2)}</span></p></div>`\n }\n }\n\n showUnaccountedTooltip (e) {\n const target = e.target\n const data = target.dataset.show\n if (!data || data === '') {\n return\n }\n const dataArr = data.split(';')\n if (dataArr.length < 2) {\n return\n }\n const tooltipText = target.getElementsByClassName('tooltiptext')[0]\n if (!tooltipText) {\n return\n }\n if (target.classList.contains('active')) {\n target.classList.remove('active')\n tooltipText.style.visibility = 'hidden'\n } else {\n target.classList.add('active')\n tooltipText.style.visibility = 'visible'\n const textElement = tooltipText.getElementsByClassName('tooltip-text')[0]\n if (!textElement) {\n return\n }\n textElement.innerHTML = `<div class=\"fs-18\">-</div><div class=\"ms-2\"><p>Treasury Spent: <span class=\"fw-600\">${humanize.formatToLocalString(Number(dataArr[0].trim()), 2, 2)} DCR</span></p><p class=\"mt-2\">Dev Spent (Est): <span class=\"fw-600\">${humanize.formatToLocalString(Number(dataArr[1].trim()), 2, 2)} DCR</span></p></div>`\n }\n }\n\n getTreasuryDomainCombined (reportData, treasuryDataMap) {\n const report = reportData.report\n if (!report || report.length === 0) {\n return reportData\n }\n for (let i = report.length - 1; i >= 0; i--) {\n const reportItem = report[i]\n const monthFormat = reportItem.month.replace('/', '-')\n reportData.report[i].treasurySpent = treasuryDataMap.has(monthFormat) ? treasuryDataMap.get(monthFormat) : 0\n }\n return reportData\n }\n\n getFullTimeParam (timeInput, splitChar) {\n const timeArr = timeInput.split(splitChar)\n let timeParam = ''\n if (timeArr.length === 2) {\n timeParam = timeArr[0] + '_'\n // if month < 10\n if (timeArr[1].charAt(0) === '0') {\n timeParam += timeArr[1].substring(1, timeArr[1].length)\n } else {\n timeParam += timeArr[1]\n }\n }\n return timeParam\n }\n\n getYearMonthArray (timeInput, splitChar) {\n const timeArr = timeInput.split(splitChar)\n const result = []\n if (timeArr.length < 2) {\n result.push(parseInt(timeArr[0]))\n return result\n }\n result.push(parseInt(timeArr[0]))\n result.push(parseInt(timeArr[1]))\n return result\n }\n\n createTreasuryTable (data) {\n this.treasuryTypeTitleTarget.textContent = this.settings.ttype === 'legacy' ? 'Admin Treasury' : this.settings.ttype === 'combined' ? 'Combined' : 'Decentralized Treasury'\n if (this.isCombinedReport()) {\n this.outgoingExpTarget.classList.remove('d-none')\n this.outgoingExpTarget.classList.remove('mt-2')\n this.outgoingExpTarget.innerHTML = '*Dev Spent (Est): Estimated costs covered for proposals.<br />' +\n '*Delta (Est): Estimated difference between actual spending and estimated spending for Proposals. <br /> <span style=\"font-style: italic;\">(Delta > 0: Unaccounted, Delta < 0: Missing)</span>'\n } else {\n this.outgoingExpTarget.classList.add('d-none')\n }\n if (!data.treasurySummary && !data.legacySummary) {\n return\n }\n // init treasury summary map\n if (treasurySummaryMap === null) {\n treasurySummaryMap = new Map()\n data.treasurySummary.forEach(treasury => {\n const tmpTreasury = {}\n Object.assign(tmpTreasury, treasury)\n treasurySummaryMap.set(treasury.month, tmpTreasury)\n })\n }\n let treasuryData = this.getTreasuryDataWithType(data)\n // if not init combined, hanlder data\n if (!combinedChartData || !combinedChartYearData) {\n this.handlerDataForCombinedChart(treasuryData)\n }\n if (treasuryData === null) {\n return\n }\n\n if (this.settings.interval === 'year') {\n treasuryData = this.getTreasuryYearlyData(treasuryData)\n combinedYearData = treasuryData\n this.yearSelectTitleTarget.classList.add('d-none')\n this.yearSelectTarget.classList.add('d-none')\n } else {\n this.yearSelectTitleTarget.classList.remove('d-none')\n this.yearSelectTarget.classList.remove('d-none')\n // init year select options\n this.initYearSelectOptions(treasuryData)\n }\n // filter by year\n if (this.settings.interval !== 'year' && this.settings.year && this.settings.year.toString() !== '0') {\n const tmpData = []\n treasuryData.forEach((treasury) => {\n const yearArr = treasury.month.split('-')\n if (yearArr.length < 2) {\n return\n }\n if (this.settings.year.toString() !== yearArr[0].trim()) {\n return\n }\n tmpData.push(treasury)\n })\n treasuryData = tmpData\n }\n\n if (this.settings.ttype === 'combined') {\n this.initLegacyBalanceMap(this.settings.interval === 'year' ? this.getTreasuryYearlyData(data.legacySummary) : data.legacySummary, this.settings.interval === 'year' ? combinedYearData : this.settings.tavg ? combinedAvgData : combinedData)\n this.initTreasuryBalanceMap(this.settings.interval === 'year' ? this.getTreasuryYearlyData(data.treasurySummary) : data.treasurySummary, this.settings.interval === 'year' ? combinedYearData : this.settings.tavg ? combinedAvgData : combinedData)\n this.initCombinedBalanceMap(treasuryData)\n this.specialTreasuryTarget.classList.add('d-none')\n this.treasuryTypeRateTarget.classList.remove('d-none')\n } else {\n this.specialTreasuryTarget.classList.remove('d-none')\n this.treasuryTypeRateTarget.classList.add('d-none')\n }\n this.reportTarget.innerHTML = this.createTreasuryLegacyTableContent(treasuryData, data.treasurySummary, data.legacySummary)\n }\n\n isCombinedReport () {\n return this.settings.type === 'treasury' && (this.settings.ttype === 'combined' || this.settings.ttype === '')\n }\n\n initYearSelectOptions (treasuryData) {\n const yearArr = []\n if (!treasuryData) {\n return\n }\n treasuryData.forEach((treasury) => {\n const timeArr = treasury.month.split('-')\n if (timeArr.length > 1) {\n const year = timeArr[0].trim()\n if (!yearArr.includes(year)) {\n yearArr.push(year)\n }\n }\n })\n let options = `<option name=\"all\" value=\"0\" ${!this.settings.year || this.settings.year === 0 ? 'selected' : ''}>All</option>`\n yearArr.forEach((year) => {\n options += `<option name=\"name_${year}\" value=\"${year}\" ${this.settings.year && this.settings.year.toString() === year ? 'selected' : ''}>${year}</option>`\n })\n this.yearSelectTarget.innerHTML = options\n }\n\n getTreasuryMonthSpentMap (treasurySummary) {\n const spentMap = new Map()\n if (!treasurySummary || treasurySummary.length < 1) {\n return spentMap\n }\n treasurySummary.forEach((summary) => {\n spentMap.set(summary.month, summary.outvalueUSD)\n })\n return spentMap\n }\n\n getTreasuryValueMapByMonth (treasurySummary) {\n const summaryMap = new Map()\n const result = new Map()\n treasurySummary.forEach((summary) => {\n summaryMap.set(summary.month, summary.balanceUSD)\n })\n const now = new Date()\n const month = now.getUTCMonth() + 1\n const year = now.getUTCFullYear()\n const nowCompare = this.settings.interval === 'year' ? year : year * 12 + month\n const lowestTime = treasurySummary[treasurySummary.length - 1].month\n const lowestArr = lowestTime.split('-')\n if (this.settings.interval !== 'year' && lowestArr.length < 2) {\n return result\n }\n const lowestYear = Number(lowestArr[0])\n let lowestMonth = 0\n if (this.settings.interval !== 'year') {\n // if month < 10\n let lowestMonthStr = ''\n if (lowestArr[1].charAt(0) === '0') {\n lowestMonthStr = lowestArr[1].substring(1, lowestArr[1].length)\n } else {\n lowestMonthStr = lowestArr[1]\n }\n lowestMonth = Number(lowestMonthStr)\n }\n\n const lowestCompare = this.settings.interval === 'year' ? lowestYear : lowestYear * 12 + lowestMonth\n // browse frome lowest to now\n let tempBalance = 0\n for (let i = lowestCompare; i <= nowCompare; i++) {\n let year = i\n let month = 0\n let key = ''\n if (this.settings.interval !== 'year') {\n month = i % 12\n year = (i - month) / 12\n if (month === 0) {\n year -= 1\n month = 12\n }\n key = year + '-' + (month < 10 ? '0' + month : month)\n } else {\n key = year.toString()\n }\n // check key on summary map\n if (summaryMap.has(key)) {\n tempBalance = summaryMap.get(key)\n }\n result.set(key, tempBalance)\n }\n return result\n }\n\n getTreasuryDataWithType (data) {\n if (this.settings.ttype === 'current') {\n return data.treasurySummary\n }\n if (this.settings.ttype === 'legacy') {\n return data.legacySummary\n }\n if (!this.settings.tavg && combinedData !== null) {\n return combinedData\n } else if (this.settings.tavg && combinedAvgData !== null) {\n return combinedAvgData\n }\n const _this = this\n // create time map\n const timeArr = []\n // return combined data\n const combinedDataMap = new Map()\n if (data.treasurySummary) {\n data.treasurySummary.forEach((treasury) => {\n timeArr.push(treasury.month)\n const tmpTreasury = {}\n Object.assign(tmpTreasury, treasury)\n combinedDataMap.set(treasury.month, tmpTreasury)\n })\n }\n if (data.legacySummary) {\n data.legacySummary.forEach((legacy) => {\n if (!timeArr.includes(legacy.month)) {\n timeArr.push(legacy.month)\n const tmpLegacy = {}\n Object.assign(tmpLegacy, legacy)\n combinedDataMap.set(legacy.month, tmpLegacy)\n } else if (combinedDataMap.has(legacy.month)) {\n // if has in array (in map)\n const item = combinedDataMap.get(legacy.month)\n let treasuryInvalue = item.invalue\n let legacyOutValue = legacy.outvalue\n let treasuryInvalueUSD = item.invalueUSD\n let legacyOutValueUSD = legacy.outvalueUSD\n if (item.taddValue && item.taddValue > 0) {\n treasuryInvalue = item.invalue - item.taddValue\n legacyOutValue = legacy.outvalue - item.taddValue\n treasuryInvalueUSD = item.invalueUSD - item.taddValueUSD\n legacyOutValueUSD = legacy.outvalueUSD - item.taddValueUSD\n }\n item.invalue = treasuryInvalue + legacy.invalue\n item.invalueUSD = treasuryInvalueUSD + legacy.invalueUSD\n item.outvalue += legacyOutValue\n item.outvalueUSD += legacyOutValueUSD\n item.total += legacy.total\n item.totalUSD += legacy.totalUSD\n item.difference = Math.abs(item.invalue - item.outvalue)\n item.differenceUSD = (item.difference / 100000000) * item.monthPrice\n combinedDataMap.set(legacy.month, item)\n }\n })\n }\n\n timeArr.sort(function (a, b) {\n const aTimeCompare = _this.getTimeCompare(a)\n const bTimeCompare = _this.getTimeCompare(b)\n if (aTimeCompare > bTimeCompare) {\n return 1\n }\n if (aTimeCompare < bTimeCompare) {\n return -1\n }\n return 0\n })\n\n const result = []\n let balanceTotal = 0.0\n timeArr.forEach((month) => {\n if (combinedDataMap.has(month)) {\n const dataItem = combinedDataMap.get(month)\n balanceTotal += dataItem.invalue - dataItem.outvalue\n dataItem.balance = balanceTotal\n dataItem.balanceUSD = (balanceTotal / 100000000) * dataItem.monthPrice\n result.push(dataItem)\n }\n })\n const mainResult = []\n for (let i = result.length - 1; i >= 0; i--) {\n mainResult.push(result[i])\n }\n if (this.settings.tavg) {\n combinedAvgData = mainResult\n } else {\n combinedData = mainResult\n }\n return mainResult\n }\n\n initLegacyBalanceMap (legacyData, combinedData) {\n if (this.settings.interval !== 'year' && adminBalanceMap != null) {\n return adminBalanceMap\n }\n if (this.settings.interval === 'year' && adminYearlyBalanceMap != null) {\n return adminYearlyBalanceMap\n }\n const tempHasDataBalancemap = new Map()\n legacyData.forEach(summary => {\n tempHasDataBalancemap.set(summary.month, summary.balance)\n })\n // for each combined data\n let currentBalance = 0\n const tempBalanceMap = new Map()\n for (let i = combinedData.length - 1; i >= 0; i--) {\n const combined = combinedData[i]\n if (tempHasDataBalancemap.has(combined.month)) {\n currentBalance = tempHasDataBalancemap.get(combined.month)\n }\n tempBalanceMap.set(combined.month, currentBalance)\n }\n if (this.settings.interval === 'year') {\n adminYearlyBalanceMap = tempBalanceMap\n } else {\n adminBalanceMap = tempBalanceMap\n }\n return tempBalanceMap\n }\n\n initTreasuryBalanceMap (treasuryData, combinedData) {\n if (this.settings.interval !== 'year' && treasuryBalanceMap != null) {\n return treasuryBalanceMap\n }\n if (this.settings.interval === 'year' && treasuryYearlyBalanceMap != null) {\n return treasuryYearlyBalanceMap\n }\n const tempHasDataBalancemap = new Map()\n treasuryData.forEach(summary => {\n tempHasDataBalancemap.set(summary.month, summary.balance)\n })\n // for each combined data\n let currentBalance = 0\n const tempBalanceMap = new Map()\n for (let i = combinedData.length - 1; i >= 0; i--) {\n const combined = combinedData[i]\n if (tempHasDataBalancemap.has(combined.month)) {\n currentBalance = tempHasDataBalancemap.get(combined.month)\n }\n tempBalanceMap.set(combined.month, currentBalance)\n }\n if (this.settings.interval === 'year') {\n treasuryYearlyBalanceMap = tempBalanceMap\n } else {\n treasuryBalanceMap = tempBalanceMap\n }\n return tempBalanceMap\n }\n\n initCombinedBalanceMap (summaryData) {\n if (this.settings.interval === 'year' && combinedYearlyBalanceMap != null) {\n return combinedYearlyBalanceMap\n }\n if (this.settings.interval !== 'year' && combineBalanceMap != null) {\n return combineBalanceMap\n }\n const tmpCombineBalanceMap = new Map()\n summaryData.forEach(summary => {\n tmpCombineBalanceMap.set(summary.month, summary.balance)\n })\n\n if (this.settings.interval === 'year') {\n combinedYearlyBalanceMap = tmpCombineBalanceMap\n } else {\n combineBalanceMap = tmpCombineBalanceMap\n }\n return tmpCombineBalanceMap\n }\n\n getTimeCompare (timStr) {\n const aTimeSplit = timStr.split('-')\n let year = 0\n let month = 0\n if (aTimeSplit.length >= 2) {\n // year\n year = parseInt(aTimeSplit[0])\n // if month < 10\n if (aTimeSplit[1].charAt(0) === '0') {\n month = parseInt(aTimeSplit[1].substring(1, aTimeSplit[1].length))\n } else {\n month = parseInt(aTimeSplit[1])\n }\n } else {\n return 0\n }\n\n return year * 12 + month\n }\n\n createTreasuryLegacyTableContent (summary, treasurySummary, legacySummary) {\n const isLegacy = this.settings.ttype === 'legacy'\n const isCombined = !this.settings.ttype || this.settings.ttype === '' || this.settings.ttype === 'combined'\n const isDecentralized = this.settings.ttype === 'current'\n // create row 1\n let thead = '<col><colgroup span=\"2\"></colgroup><thead>' +\n '<tr class=\"text-secondary finance-table-header\">' +\n `<th rowspan=\"2\" class=\"va-mid text-center ps-0 month-col cursor-pointer\" data-action=\"click->financereport#sortByCreateDate\"><span class=\"${this.settings.tsort === 'newest' ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype && this.settings.stype !== '' ? 'c-grey-4' : ''} col-sort\"></span></th>`\n const usdDisp = this.settings.usd === true || this.settings.usd === 'true'\n let row2 = '<tr class=\"text-secondary finance-table-header\">'\n thead += '<th rowspan=\"2\" class=\"va-mid text-right-i fs-13i px-2 fw-600 treasury-content-cell\">Rate (USD/DCR)</th>' +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByIncoming\">Received</label>' +\n `<span data-action=\"click->financereport#sortByIncoming\" class=\"${(this.settings.stype === 'incoming' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'incoming' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByOutgoing\">Spent</label>' +\n `<span data-action=\"click->financereport#sortByOutgoing\" class=\"${(this.settings.stype === 'outgoing' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'outgoing' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Net</th>' +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByBalance\">Balance</label>' +\n `<span data-action=\"click->financereport#sortByBalance\" class=\"${(this.settings.stype === 'balance' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'balance' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n row2 += '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>'\n if (isCombined) {\n thead += '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Dev Spent (Est)</th>' +\n '<th rowspan=\"2\" class=\"va-mid text-right-i fs-13i px-2 fw-600 treasury-content-cell\">Dev Spent (%)</th>' +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Delta (Est)</th>'\n row2 += '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>'\n }\n thead += '</tr>'\n row2 += '</tr>'\n\n // add row 2\n thead += row2\n thead += '</thead>'\n let tbody = '<tbody>###</tbody>'\n let bodyList = ''\n // create tbody content\n let incomeTotal = 0; let outTotal = 0; let estimateOutTotal = 0\n let incomeUSDTotal = 0; let outUSDTotal = 0; let estimateOutUSDTotal = 0\n let lastBalance = 0; let lastBalanceUSD = 0\n let unaccountedTotal = 0; let unaccountedUSDTotal = 0\n let lastTreasuryItem, lastAdminItem\n let lastMonth = ''\n if (summary.length > 0) {\n lastBalance = summary[0].balance\n lastBalanceUSD = summary[0].balanceUSD\n lastMonth = summary[0].month\n }\n if (treasurySummary.length > 0) {\n lastTreasuryItem = treasurySummary[0]\n }\n if (legacySummary.length > 0) {\n lastAdminItem = legacySummary[0]\n }\n // display balance in top\n if (!isCombined) {\n this.treasuryBalanceDisplayTarget.textContent = humanize.formatToLocalString((lastBalance / 100000000), 2, 2) + ' DCR'\n this.treasuryBalanceRateTarget.textContent = '~$' + humanize.formatToLocalString(lastBalanceUSD, 2, 2)\n this.treasuryBalanceCardTarget.classList.remove('col-md-16', 'col-xl-12', 'col-xxl-8')\n this.treasuryBalanceCardTarget.classList.add('col-sm-12', 'col-lg-8', 'col-xl-6', 'col-xxl-5')\n this.subTreasuryTitleTarget.textContent = (isLegacy ? 'Admin' : 'Decentralized') + ' Balance'\n } else {\n this.treasuryBalanceCardTarget.classList.remove('col-sm-12', 'col-lg-8', 'col-xl-6', 'col-xxl-5')\n this.treasuryBalanceCardTarget.classList.add('col-md-16', 'col-xl-12', 'col-xxl-8')\n }\n const balanceMap = this.settings.interval === 'year' ? combinedYearlyBalanceMap : combineBalanceMap\n if (isCombined && lastMonth !== '' && balanceMap.has(lastMonth)) {\n const combined = balanceMap.get(lastMonth)\n let legacy = 0; let tresury = 0\n let legacyUSD = 0; let treasuryUSD = 0\n if (lastAdminItem) {\n legacy = lastAdminItem.balance\n legacyUSD = lastAdminItem.balanceUSD\n }\n if (lastTreasuryItem) {\n tresury = lastTreasuryItem.balance\n treasuryUSD = lastTreasuryItem.balanceUSD\n }\n const lastLegacyRate = 100 * legacy / combined\n const lastTreasuryRate = 100 * tresury / combined\n this.treasuryLegacyPercentTarget.textContent = `${humanize.formatToLocalString((lastBalance / 100000000), 2, 2)} DCR`\n this.treasuryLegacyRateTarget.textContent = '~$' + humanize.formatToLocalString((lastBalanceUSD), 2, 2)\n this.decentralizedDataTarget.textContent = `${humanize.formatToLocalString((tresury / 100000000), 2, 2)} DCR`\n this.decentralizedDataRateTarget.textContent = '~$' + humanize.formatToLocalString(treasuryUSD, 2, 2)\n this.decentralizedTitleTarget.textContent = 'Decentralized (' + humanize.formatToLocalString(lastTreasuryRate, 2, 2) + '%)'\n this.adminDataTarget.textContent = `${humanize.formatToLocalString((legacy / 100000000), 2, 2)} DCR`\n this.adminDataRateTarget.textContent = '~$' + humanize.formatToLocalString(legacyUSD, 2, 2)\n this.adminTitleTarget.textContent = 'Admin (' + humanize.formatToLocalString(lastLegacyRate, 2, 2) + '%)'\n }\n const treasuryList = this.sortTreasury(summary)\n const _this = this\n treasuryList.forEach((item) => {\n const timeParam = _this.getFullTimeParam(item.month, '-')\n incomeTotal += item.invalue\n incomeUSDTotal += item.invalueUSD\n outTotal += item.outvalue\n outUSDTotal += item.outvalueUSD\n estimateOutTotal += item.outEstimate\n estimateOutUSDTotal += item.outEstimateUsd\n let taddValue = 0\n let taddValueUSD = 0\n if (isLegacy) {\n if (treasurySummaryMap.has(item.month)) {\n const existTreasury = treasurySummaryMap.get(item.month)\n taddValue = existTreasury.taddValue\n taddValueUSD = existTreasury.taddValueUSD\n }\n } else {\n taddValue = item.taddValue\n taddValueUSD = item.taddValueUSD\n }\n const netNegative = item.outvalue > item.invalue\n const incomDisplay = item.invalue <= 0 ? '-' : humanize.formatToLocalString((item.invalue / 100000000), 2, 2)\n const incomUSDDisplay = item.invalue <= 0 ? '' : humanize.formatToLocalString(item.invalueUSD, 2, 2)\n const outcomeDisplay = item.outvalue <= 0 ? '-' : humanize.formatToLocalString((item.outvalue / 100000000), 2, 2)\n const outcomeUSDDisplay = item.outvalue <= 0 ? '' : humanize.formatToLocalString(item.outvalueUSD, 2, 2)\n const differenceDisplay = item.difference <= 0 ? '' : humanize.formatToLocalString((item.difference / 100000000), 2, 2)\n const differenceUSDDisplay = item.difference <= 0 ? '' : humanize.formatToLocalString(item.differenceUSD, 2, 2)\n const balanceDisplay = item.balance <= 0 ? '' : humanize.formatToLocalString((item.balance / 100000000), 2, 2)\n const balanceUSDDisplay = item.balance <= 0 ? '' : humanize.formatToLocalString(item.balanceUSD, 2, 2)\n let incomeHref = ''\n let outcomeHref = ''\n if (!isCombined) {\n incomeHref = item.invalue > 0 ? item.creditLink : ''\n outcomeHref = item.outvalue > 0 ? item.debitLink : ''\n }\n bodyList += '<tr class=\"odd-even-row\">' +\n `<td class=\"va-mid text-center fs-13i fw-600\"><a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"${'/finance-report?type=bytime&' + (this.settings.interval === 'year' ? '' : 'dtype=month&') + '&dtime=' + (timeParam === '' ? item.month : timeParam)}\">${item.month}</a></td>` +\n `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">$${humanize.formatToLocalString(item.monthPrice, 2, 2)}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell ${!isLegacy && taddValue > 0 ? 'special-cell' : ''}\">${incomeHref !== '' ? '<a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"' + incomeHref + '\">' : ''}${incomDisplay}${incomeHref !== '' ? '</a>' : ''}`\n if (!isLegacy && taddValue > 0) {\n bodyList += `<span class=\"dcricon-info cursor-pointer cell-tooltip ms-1\" data-action=\"click->financereport#showIngoingTaddTooltip\" data-show=\"${(taddValue / 1e8) + ';' + taddValueUSD}\"><span class=\"tooltiptext cursor-default click-popup\" style=\"text-align: left; line-height: 1rem;\"><span class=\"tooltip-text d-flex ai-center\"></span></span></span>`\n }\n bodyList += '</td>' +\n `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${incomUSDDisplay !== '' ? '$' + incomUSDDisplay : '-'}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell ${!isDecentralized && taddValue > 0 ? 'special-cell' : ''}\">${outcomeHref !== '' ? '<a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"' + outcomeHref + '\">' : ''}${outcomeDisplay}${outcomeHref !== '' ? '</a>' : ''}`\n if (!isDecentralized && taddValue > 0) {\n bodyList += `<span class=\"dcricon-info cursor-pointer cell-tooltip ms-1\" data-action=\"click->financereport#showOutgoingTaddTooltip\" data-show=\"${(taddValue / 1e8) + ';' + taddValueUSD}\"><span class=\"tooltiptext cursor-default click-popup\" style=\"text-align: left; line-height: 1rem;\"><span class=\"tooltip-text d-flex ai-center\"></span></span></span>`\n }\n bodyList += '</td>' +\n `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${outcomeUSDDisplay !== '' ? '$' + outcomeUSDDisplay : '-'}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${netNegative ? '-' : ''}${differenceDisplay !== '' ? differenceDisplay : '-'}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${netNegative ? '-' : ''}${differenceUSDDisplay !== '' ? '$' + differenceUSDDisplay : '-'}</td>` +\n `<td class=\"va-mid ps-2 text-right-i fs-13i treasury-content-cell\">${balanceDisplay !== '' ? balanceDisplay : '-'}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${balanceUSDDisplay !== '' ? '$' + balanceUSDDisplay : '-'}</td>`\n if (isCombined) {\n // calculate dev spent percent\n let devSentPercent = 0\n if (item.outvalue > 0) {\n devSentPercent = 100 * 1e8 * item.outEstimate / item.outvalue\n }\n const unaccounted = item.outvalue - 1e8 * item.outEstimate\n unaccountedTotal += unaccounted\n const unaccountedUSD = item.outvalueUSD - item.outEstimateUsd\n unaccountedUSDTotal += unaccountedUSD\n bodyList += `<td class=\"va-mid ps-2 text-right-i fs-13i treasury-content-cell\">${item.outEstimate === 0.0 ? '-' : humanize.formatToLocalString(item.outEstimate, 2, 2)}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${item.outEstimate !== 0.0 ? '$' + humanize.formatToLocalString(item.outEstimateUsd, 2, 2) : '-'}</td>` +\n `<td class=\"va-mid ps-2 text-right-i fs-13i treasury-content-cell\">${devSentPercent === 0.0 ? '-' : humanize.formatToLocalString(devSentPercent, 2, 2) + '%'}</td>` +\n `<td class=\"va-mid ps-2 text-right-i fs-13i treasury-content-cell\">${unaccounted === 0 ? '-' : (unaccounted < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(unaccounted) / 100000000, 2, 2)}`\n if (unaccounted !== 0) {\n bodyList += `<span class=\"dcricon-info cursor-pointer cell-tooltip ms-1\" data-action=\"click->financereport#showUnaccountedTooltip\" data-show=\"${item.outvalue / 100000000 + ';' + item.outEstimate}\"><span class=\"tooltiptext cursor-default move-left-click-popup\"><span class=\"tooltip-text d-flex ai-center\"></span></span></span>`\n }\n bodyList += `</td><td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${unaccountedUSD === 0 ? '-' : (unaccountedUSD < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(unaccountedUSD), 2, 2)}</td>`\n }\n // Display month price of decred\n bodyList += '</tr>'\n })\n const totalIncomDisplay = humanize.formatToLocalString((incomeTotal / 100000000), 2, 2)\n const totalIncomUSDDisplay = humanize.formatToLocalString(incomeUSDTotal, 2, 2)\n const totalOutcomeDisplay = humanize.formatToLocalString((outTotal / 100000000), 2, 2)\n const totalOutcomeUSDDisplay = humanize.formatToLocalString(outUSDTotal, 2, 2)\n const totalEstimateOutgoing = humanize.formatToLocalString(estimateOutTotal, 2, 2)\n const totalEstimateOutUSDgoing = humanize.formatToLocalString(estimateOutUSDTotal, 2, 2)\n const lastBalanceDisplay = humanize.formatToLocalString((lastBalance / 100000000), 2, 2)\n const lastBalanceUSDDisplay = humanize.formatToLocalString(lastBalanceUSD, 2, 2)\n const totalBalanceNegative = lastBalance < 0.0\n bodyList += '<tr class=\"va-mid finance-table-header finance-table-footer last-row-header\"><td class=\"text-center fw-600 fs-13i border-right-grey\">Total</td>' +\n '<td class=\"va-mid text-right-i fw-600 fs-13i ps-2 treasury-content-cell\">-</td>' +\n `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${totalIncomDisplay}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${incomeUSDTotal > 0 ? '$' : ''}${totalIncomUSDDisplay}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${totalOutcomeDisplay}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${outUSDTotal > 0 ? '$' : ''}${totalOutcomeUSDDisplay}</td>` +\n '<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">-</td><td class=\"va-mid text-right-i fw-600 fs-13i treasury-content-cell\">-</td>' +\n `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${totalBalanceNegative ? '-' : ''}${lastBalanceDisplay}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${lastBalanceUSD > 0 ? '$' : ''}${totalBalanceNegative ? '-' : ''}${usdDisp ? '$' : ''}${lastBalanceUSDDisplay}</td>`\n if (isCombined) {\n let totalDevSentPercent = 0\n if (outTotal > 0) {\n totalDevSentPercent = 100 * 1e8 * estimateOutTotal / outTotal\n }\n bodyList += `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${totalEstimateOutgoing}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${estimateOutUSDTotal > 0 ? '$' : ''}${totalEstimateOutUSDgoing}</td>` +\n `<td class=\"va-mid text-right-i fw-600 fs-13i treasury-content-cell\">${totalDevSentPercent > 0 ? humanize.formatToLocalString(totalDevSentPercent, 2, 2) + '%' : '-'}</td>` +\n `<td class=\"va-mid ps-2 text-right-i fw-600 fs-13i treasury-content-cell\">${unaccountedTotal === 0 ? '-' : (unaccountedTotal < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(unaccountedTotal / 100000000), 2, 2)}</td>` +\n `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${unaccountedUSDTotal === 0 ? '-' : (unaccountedUSDTotal < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(unaccountedUSDTotal), 2, 2)}</td>`\n }\n bodyList += '</tr>'\n tbody = tbody.replace('###', bodyList)\n return thead + tbody\n }\n\n getProposalResponse (pResponse) {\n if (!this.settings.tavg || !pResponse.treasurySummary || pResponse.treasurySummary.length < 1) {\n return pResponse\n }\n const res = {}\n Object.assign(res, pResponse)\n const treasurySum = []\n const treasuryYearlyData = this.getTreasuryYearlyData(pResponse.treasurySummary)\n const treasuryMonthAvgMap = new Map()\n const _this = this\n if (treasuryYearlyData && treasuryYearlyData.length > 0) {\n treasuryYearlyData.forEach((yearData) => {\n const numOfMonth = _this.countMonthOnYearData(yearData.month, pResponse.treasurySummary)\n if (numOfMonth > 0) {\n treasuryMonthAvgMap.set(yearData.month, { invalue: yearData.invalue / numOfMonth, outvalue: yearData.outvalue / numOfMonth })\n }\n })\n pResponse.treasurySummary.forEach((tSummary) => {\n const tmpTreasury = {}\n Object.assign(tmpTreasury, tSummary)\n if (tmpTreasury.month) {\n const year = tmpTreasury.month.split('-')[0]\n if (treasuryMonthAvgMap.has(year)) {\n tmpTreasury.invalue = treasuryMonthAvgMap.get(year).invalue\n tmpTreasury.outvalue = treasuryMonthAvgMap.get(year).outvalue\n tmpTreasury.invalueUSD = tmpTreasury.monthPrice * (tmpTreasury.invalue / 1e8)\n tmpTreasury.outvalueUSD = tmpTreasury.monthPrice * (tmpTreasury.outvalue / 1e8)\n tmpTreasury.difference = Math.abs(tmpTreasury.invalue - tmpTreasury.outvalue)\n tmpTreasury.differenceUSD = Math.abs(tmpTreasury.invalueUSD - tmpTreasury.outvalueUSD)\n tmpTreasury.total = tmpTreasury.invalue + tmpTreasury.outvalue\n tmpTreasury.totalUSD = tmpTreasury.invalueUSD + tmpTreasury.outvalueUSD\n }\n }\n treasurySum.push(tmpTreasury)\n })\n }\n res.treasurySummary = treasurySum\n return res\n }\n\n countMonthOnYearData (yearStr, treasuryData) {\n let count = 0\n treasuryData.forEach((tData) => {\n if (tData.month.startsWith(yearStr)) {\n count++\n }\n })\n return count\n }\n\n getTreasuryResponse (tResponse) {\n if (!this.settings.tavg) {\n return tResponse\n }\n const res = {}\n const treasurySum = []\n const legacySum = []\n const treasuryYearlyData = this.getTreasuryYearlyData(tResponse.treasurySummary)\n const legacyYearlyData = this.getTreasuryYearlyData(tResponse.legacySummary)\n const treasuryMonthAvgMap = new Map()\n const legacyMonthAvgMap = new Map()\n const taddMonthValueMap = new Map()\n const taddYearValueMap = new Map()\n const _this = this\n if (treasuryYearlyData && treasuryYearlyData.length > 0) {\n treasuryYearlyData.forEach((yearData) => {\n const numOfMonth = _this.countMonthOnYearData(yearData.month, tResponse.treasurySummary)\n if (numOfMonth > 0) {\n treasuryMonthAvgMap.set(yearData.month, { invalue: (yearData.invalue - yearData.taddValue) / numOfMonth, outvalue: yearData.outvalue / numOfMonth })\n taddYearValueMap.set(yearData.month, yearData.taddValue)\n }\n })\n tResponse.treasurySummary.forEach((tSummary) => {\n const tmpTreasury = {}\n Object.assign(tmpTreasury, tSummary)\n if (tmpTreasury.month) {\n const year = tmpTreasury.month.split('-')[0]\n if (treasuryMonthAvgMap.has(year)) {\n taddMonthValueMap.set(tmpTreasury.month, tmpTreasury.taddValue)\n tmpTreasury.invalue = treasuryMonthAvgMap.get(year).invalue\n if (tmpTreasury.taddValue > 0) {\n tmpTreasury.invalue += tmpTreasury.taddValue\n }\n tmpTreasury.outvalue = treasuryMonthAvgMap.get(year).outvalue\n tmpTreasury.invalueUSD = tmpTreasury.monthPrice * (tmpTreasury.invalue / 1e8)\n tmpTreasury.outvalueUSD = tmpTreasury.monthPrice * (tmpTreasury.outvalue / 1e8)\n tmpTreasury.difference = Math.abs(tmpTreasury.invalue - tmpTreasury.outvalue)\n tmpTreasury.differenceUSD = Math.abs(tmpTreasury.invalueUSD - tmpTreasury.outvalueUSD)\n tmpTreasury.total = tmpTreasury.invalue + tmpTreasury.outvalue\n tmpTreasury.totalUSD = tmpTreasury.invalueUSD + tmpTreasury.outvalueUSD\n tmpTreasury.devSpentPercent = tmpTreasury.outvalue > 0 ? 100 * (tmpTreasury.outEstimate / tmpTreasury.outvalue) : 0\n }\n }\n treasurySum.push(tmpTreasury)\n })\n }\n\n if (legacyYearlyData && legacyYearlyData.length > 0) {\n legacyYearlyData.forEach((yearData) => {\n const numOfMonth = _this.countMonthOnYearData(yearData.month, tResponse.legacySummary)\n if (numOfMonth > 0) {\n let tadd = 0\n if (taddYearValueMap.has(yearData.month)) {\n tadd = taddYearValueMap.get(yearData.month) > 0 ? taddYearValueMap.get(yearData.month) : 0\n }\n legacyMonthAvgMap.set(yearData.month, { invalue: yearData.invalue / numOfMonth, outvalue: (yearData.outvalue - tadd) / numOfMonth })\n }\n })\n tResponse.legacySummary.forEach((lSummary) => {\n const tmpTreasury = {}\n Object.assign(tmpTreasury, lSummary)\n if (tmpTreasury.month) {\n const year = tmpTreasury.month.split('-')[0]\n if (legacyMonthAvgMap.has(year)) {\n let tadd = 0\n if (taddMonthValueMap.has(tmpTreasury.month)) {\n tadd = taddMonthValueMap.get(tmpTreasury.month) > 0 ? taddMonthValueMap.get(tmpTreasury.month) : 0\n }\n tmpTreasury.invalue = legacyMonthAvgMap.get(year).invalue\n tmpTreasury.outvalue = legacyMonthAvgMap.get(year).outvalue + tadd\n tmpTreasury.invalueUSD = tmpTreasury.monthPrice * (tmpTreasury.invalue / 1e8)\n tmpTreasury.outvalueUSD = tmpTreasury.monthPrice * (tmpTreasury.outvalue / 1e8)\n tmpTreasury.difference = Math.abs(tmpTreasury.invalue - tmpTreasury.outvalue)\n tmpTreasury.differenceUSD = Math.abs(tmpTreasury.invalueUSD - tmpTreasury.outvalueUSD)\n tmpTreasury.total = tmpTreasury.invalue + tmpTreasury.outvalue\n tmpTreasury.totalUSD = tmpTreasury.invalueUSD + tmpTreasury.outvalueUSD\n }\n }\n legacySum.push(tmpTreasury)\n })\n }\n res.treasurySummary = treasurySum\n res.legacySummary = legacySum\n return res\n }\n\n // Calculate and response\n async calculate () {\n this.pageLoaderTarget.classList.add('loading')\n this.setReportTitle()\n if (this.isTreasuryReport() || this.isDomainType()) {\n this.intervalTargets.forEach((intervalTarget) => {\n intervalTarget.classList.remove('active')\n if (intervalTarget.name === this.settings.interval) {\n intervalTarget.classList.add('active')\n }\n })\n }\n if (this.isTreasuryReport()) {\n this.searchBoxTarget.classList.add('d-none')\n this.searchBoxTarget.classList.remove('report-search-box')\n this.colorNoteRowTarget.classList.add('d-none')\n this.searchInputTarget.value = ''\n this.settings.search = this.defaultSettings.search\n } else {\n if (this.settings.type !== 'domain') {\n this.settings.chart = this.defaultSettings.chart\n }\n this.searchBoxTarget.classList.remove('d-none')\n this.searchBoxTarget.classList.add('report-search-box')\n if (((this.settings.pgroup === '' || this.settings.pgroup === 'proposals') && this.settings.type === 'summary') || (this.settings.pgroup === 'authors' && this.settings.ptype === 'list')) {\n this.searchBoxTarget.classList.add('ms-3')\n } else {\n this.searchBoxTarget.classList.remove('ms-3')\n }\n this.settings.usd = false\n }\n\n if (this.isNullValue(this.settings.type) || this.settings.type === 'proposal' || this.settings.type === 'summary') {\n this.proposalSelectTypeTarget.classList.remove('d-none')\n document.getElementById('nameMonthSwitchInput').checked = this.isMonthDisplay\n if ((this.settings.pgroup === 'proposals' && this.settings.type === 'summary') || (this.settings.pgroup === 'authors' && this.settings.ptype === 'list')) {\n this.colorLabelTarget.classList.remove('proposal-note-color')\n this.colorLabelTarget.classList.add('summary-note-color')\n this.reportDescriptionTarget.classList.remove('d-none')\n } else if ((this.settings.pgroup === 'proposals' && (this.settings.type === 'proposal' || this.settings.type === '')) || (this.settings.pgroup === 'authors' && this.settings.ptype !== 'list')) {\n this.colorLabelTarget.classList.remove('summary-note-color')\n this.colorLabelTarget.classList.add('proposal-note-color')\n this.reportDescriptionTarget.classList.add('d-none')\n this.colorDescriptionTarget.textContent = (this.settings.interval === 'year' ? 'Valid payment year (Estimated based on total budget and time period of proposal)' : 'Valid payment month (Estimated based on total budget and time period of proposal)')\n } else {\n this.reportDescriptionTarget.classList.remove('d-none')\n }\n\n if (this.settings.pgroup === 'domains') {\n this.domainFutureRowTarget.classList.remove('d-none')\n } else {\n this.domainFutureRowTarget.classList.add('d-none')\n }\n\n // handler for group type\n if (this.settings.pgroup === 'proposals') {\n this.nameMatrixSwitchTarget.classList.remove('d-none')\n this.colorNoteRowTarget.classList.remove('d-none')\n if (this.settings.type === 'summary') {\n this.colorLabelTarget.classList.remove('proposal-note-color')\n this.colorLabelTarget.classList.add('summary-note-color')\n this.colorDescriptionTarget.textContent = 'The proposals are still active'\n } else {\n this.colorLabelTarget.classList.remove('summary-note-color')\n this.colorLabelTarget.classList.add('proposal-note-color')\n }\n } else if (this.settings.pgroup === 'domains') {\n this.nameMatrixSwitchTarget.classList.add('d-none')\n this.colorNoteRowTarget.classList.add('d-none')\n } else if (this.settings.pgroup === 'authors') {\n this.colorNoteRowTarget.classList.remove('d-none')\n this.nameMatrixSwitchTarget.classList.remove('d-none')\n if (this.settings.ptype === 'list') {\n this.colorDescriptionTarget.textContent = 'The authors are still active'\n }\n }\n } else {\n this.nameMatrixSwitchTarget.classList.add('d-none')\n this.proposalSelectTypeTarget.classList.add('d-none')\n this.reportDescriptionTarget.classList.remove('d-none')\n this.domainFutureRowTarget.classList.add('d-none')\n }\n // disabled group button for loading\n this.disabledGroupButton()\n if (!this.settings.search || this.settings.search === '') {\n let haveResponseData\n // if got report. ignore get by api\n if (this.settings.type === 'treasury') {\n if (treasuryResponse !== null) {\n responseData = this.getTreasuryResponse(treasuryResponse)\n haveResponseData = true\n }\n } else if (proposalResponse !== null) {\n responseData = this.getProposalResponse(proposalResponse)\n haveResponseData = true\n }\n\n if (haveResponseData) {\n if (this.isDomainType()) {\n this.handlerDomainYearlyData(responseData)\n }\n this.handlerDataForDomainChart(responseData)\n this.createReportTable()\n this.enabledGroupButton()\n this.pageLoaderTarget.classList.remove('loading')\n return\n }\n }\n\n // const _this = this\n requestCounter++\n const thisRequest = requestCounter\n\n const url = this.getApiUrlByType()\n let response\n if (hasCache(url)) {\n response = responseCache[url]\n } else {\n // response = await axios.get(url)\n response = await requestJSON(url)\n responseCache[url] = response\n if (thisRequest !== requestCounter) {\n // new request was issued while waiting.\n console.log('Response request different')\n }\n }\n // create table data\n responseData = response && this.settings.type === 'treasury' ? this.getTreasuryResponse(response) : this.getProposalResponse(response)\n if (this.isDomainType()) {\n this.handlerDomainYearlyData(responseData)\n }\n // handler for domain chart\n this.handlerDataForDomainChart(response)\n if (!this.settings.search || this.settings.search === '') {\n if (this.settings.type === 'treasury') {\n treasuryResponse = response\n } else {\n proposalResponse = response\n }\n }\n this.createReportTable()\n this.enabledGroupButton()\n this.pageLoaderTarget.classList.remove('loading')\n }\n\n handlerDomainYearlyData (data) {\n const treasuryDataMap = this.getTreasuryMonthSpentMap(data.treasurySummary)\n const handlerData = this.getTreasuryDomainCombined(data, treasuryDataMap)\n domainYearData = this.getProposalYearlyData(handlerData)\n }\n\n handlerDataForCombinedChart (data) {\n if (combinedChartData !== null && combinedChartYearData !== null) {\n return\n }\n if (!data || data.length === 0) {\n combinedChartData = {}\n combinedChartYearData = {}\n return\n }\n\n combinedChartData = this.getDataForCombinedChart(data, 'month')\n const treasuryYearlyData = this.getTreasuryYearlyData(data)\n combinedChartYearData = this.getDataForCombinedChart(treasuryYearlyData, 'year')\n }\n\n getDataForCombinedChart (data, type) {\n const timeArr = []\n const spentArr = []\n const receivedArr = []\n const netArr = []\n for (let i = data.length - 1; i >= 0; i--) {\n const item = data[i]\n if (type === 'month') {\n timeArr.push(item.month + '-01T07:00:00Z')\n } else {\n timeArr.push(item.month + '-01-01T07:00:00Z')\n }\n spentArr.push(item.outvalue / 100000000)\n receivedArr.push(item.invalue / 100000000)\n netArr.push((item.invalue - item.outvalue) / 100000000)\n }\n const result = {\n time: timeArr,\n received: receivedArr,\n sent: spentArr,\n net: netArr\n }\n return result\n }\n\n handlerDataForDomainChart (data) {\n // if data is existed, skip\n if (domainChartData !== null && domainChartYearData !== null) {\n return\n }\n if (!data.report || data.report.length === 0) {\n domainChartData = null\n domainChartYearData = null\n return\n }\n // get monthly data\n domainChartData = this.getDataOfDomainChart(data, 'month')\n if (domainYearData != null) {\n domainChartYearData = this.getDataOfDomainChart(domainYearData, 'year')\n }\n }\n\n getDataOfDomainChart (data, type) {\n // handler for yearlydata\n const timeArr = []\n const marketingArr = []\n const developmentArr = []\n const virtualNetArr = []\n for (let i = data.report.length - 1; i >= 0; i--) {\n const item = data.report[i]\n if (type === 'month') {\n timeArr.push(item.month.replace('/', '-') + '-01T07:00:00Z')\n } else {\n timeArr.push(item.month + '-01-01T07:00:00Z')\n }\n virtualNetArr.push(0)\n let hasMarketing = false\n let hasDevelopment = false\n item.domainData.forEach((domainData) => {\n if (domainData.domain === 'marketing') {\n marketingArr.push(domainData.expense)\n hasMarketing = true\n } else if (domainData.domain === 'development') {\n developmentArr.push(domainData.expense)\n hasDevelopment = true\n }\n })\n if (!hasMarketing) {\n marketingArr.push(0)\n }\n if (!hasDevelopment) {\n developmentArr.push(0)\n }\n }\n const result = {\n time: timeArr,\n marketing: marketingArr,\n development: developmentArr\n }\n return result\n }\n\n enabledGroupButton () {\n // enabled group button after loading\n this.intervalTargets.forEach((intervalTarget) => {\n intervalTarget.disabled = false\n })\n }\n\n disabledGroupButton () {\n // disabled group button after loading\n this.intervalTargets.forEach((intervalTarget) => {\n intervalTarget.disabled = true\n })\n }\n\n activeProposalSwitch (e) {\n const switchCheck = document.getElementById('activeProposalInput').checked\n this.settings.active = switchCheck\n this.calculate()\n }\n\n nameMatrixSwitchEvent (e) {\n const switchCheck = document.getElementById('nameMonthSwitchInput').checked\n this.isMonthDisplay = switchCheck\n // if is proposals group type\n if (this.settings.pgroup === 'proposals') {\n this.settings.type = !switchCheck || switchCheck === 'false' ? 'summary' : 'proposal'\n } else {\n this.settings.ptype = !switchCheck || switchCheck === 'false' ? 'list' : 'month'\n }\n this.calculate()\n }\n\n useMonthAvgSwitch (e) {\n const switchCheck = document.getElementById('useMonthAvg').checked\n this.useMonthAvg = switchCheck\n // if is not Treasury or domain type, do not anything\n if (!this.isTreasuryReport() && !this.isDomainType()) {\n return\n }\n this.settings.tavg = this.useMonthAvg\n this.calculate()\n }\n\n proposalReportTimeDetail (e) {\n const idArr = e.target.id.split(';')\n if (idArr.length !== 2) {\n return\n }\n window.location.href = '/finance-report/detail?type=' + idArr[0] + '&time=' + idArr[1].replace('/', '_')\n }\n\n showNoData () {\n this.noDetailDataTarget.classList.remove('d-none')\n this.reportAreaTarget.classList.add('d-none')\n }\n\n prevReport (e) {\n const timeIntArr = this.getDetailYearMonth()\n if (this.isYearDetailReport()) {\n if (timeIntArr[0] === this.reportMinYear) {\n return\n }\n this.settings.dtime = (timeIntArr[0] - 1).toString()\n } else if (this.isMonthDetailReport()) {\n let year = timeIntArr[0]\n let month = timeIntArr[1]\n if (year === this.reportMinYear && month === this.reportMinMonth) {\n return\n }\n if (month === 1) {\n year = year - 1\n month = 12\n } else {\n month = month - 1\n }\n this.settings.dtime = year + '_' + month\n }\n this.initReportDetailData()\n }\n\n nextReport (e) {\n const timeIntArr = this.getDetailYearMonth()\n if (this.isYearDetailReport()) {\n if (timeIntArr[0] === this.reportMaxYear) {\n return\n }\n this.settings.dtime = (timeIntArr[0] + 1).toString()\n } else if (this.isMonthDetailReport()) {\n let year = timeIntArr[0]\n let month = timeIntArr[1]\n if (year === this.reportMaxYear && month === this.reportMaxMonth) {\n return\n }\n if (month === 12) {\n year = year + 1\n month = 1\n } else {\n month = month + 1\n }\n this.settings.dtime = year + '_' + month\n }\n this.initReportDetailData()\n }\n\n proposalDetailsListUpdate () {\n if (this.settings.dtype === 'domain' || this.settings.dtype === 'owner') {\n this.summaryReportTarget.innerHTML = this.createDetailSummaryTable(responseDetailData.proposalInfos, this.settings.dtype === 'owner', this.settings.dtype === 'domain')\n } else if (this.settings.dtype === 'proposal') {\n this.otherProposalSummaryTarget.innerHTML = this.createDetailSummaryTable(responseDetailData.otherProposalInfos, true, false)\n }\n }\n\n yearMonthProposalListUpdate () {\n this.proposalReportTarget.innerHTML = this.createProposalDetailReport(responseDetailData)\n }\n\n setDomainGeneralInfo (data, type) {\n this.proposalSumCardTarget.classList.remove('d-none')\n let totalBudget = 0; let totalSpent = 0; let totalRemaining = 0\n if (data.proposalInfos && data.proposalInfos.length > 0) {\n data.proposalInfos.forEach((proposal) => {\n totalBudget += proposal.budget\n totalSpent += proposal.totalSpent\n totalRemaining += proposal.totalRemaining > 0 ? proposal.totalRemaining : 0\n })\n }\n this.proposalSpanRowTarget.innerHTML = `<p>Total Budget: <span class=\"fw-600\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</span></p>` +\n `<p>Total ${type === 'owner' ? 'Received' : 'Spent'} (Estimate):<span class=\"fw-600\">$${humanize.formatToLocalString(totalSpent, 2, 2)}</span></p>` +\n `<p>Total Remaining (Estimate): <span class=\"fw-600\">$${humanize.formatToLocalString(totalRemaining, 2, 2)}</span></p>`\n }\n\n createDetailSummaryTable (data, hideAuthor, hideDomain) {\n if (!data) {\n return ''\n }\n let thead = '<thead>' +\n '<tr class=\"text-secondary finance-table-header\">' +\n '<th class=\"va-mid text-center month-col fs-13i fw-600 proposal-name-col\">Name</th>'\n if (!hideDomain) {\n thead += '<th class=\"va-mid text-center fs-13i px-2 fw-600\">Domain</th>'\n }\n if (!hideAuthor) {\n thead += '<th class=\"va-mid text-center fs-13i px-2 fw-600\">Author</th>'\n }\n thead += '<th class=\"va-mid text-center px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortDetailByStartDate\">Start Date</label>' +\n `<span data-action=\"click->financereport#sortDetailByStartDate\" class=\"${(this.settings.dstype === 'startdt' && this.settings.dorder === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${(!this.settings.dstype || this.settings.dstype === '' || this.settings.dstype === 'startdt') ? '' : 'c-grey-4'} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-center px-2 fs-13i fw-600\">End Date</th>' +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortDetailByBudget\">Budget</label>' +\n `<span data-action=\"click->financereport#sortDetailByBudget\" class=\"${(this.settings.dstype === 'budget' && this.settings.dorder === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.dstype !== 'budget' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Days</th>' +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Monthly Avg (Est)</th>' +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Total Spent (Est)</th>' +\n '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Total Remaining (Est)</th></tr></thead>'\n let tbody = '<tbody>###</tbody>'\n let bodyList = ''\n let totalBudget = 0\n let totalAllSpent = 0\n let totalRemaining = 0\n // create tbody content\n const summaryList = this.sortDetailSummary(data)\n for (let i = 0; i < summaryList.length; i++) {\n const summary = summaryList[i]\n const lengthInDays = this.getLengthInDay(summary)\n let monthlyAverage = summary.budget / lengthInDays\n if (lengthInDays < 30) {\n monthlyAverage = summary.budget\n } else {\n monthlyAverage = monthlyAverage * 30\n }\n totalBudget += summary.budget\n totalAllSpent += summary.totalSpent\n totalRemaining += summary.totalRemaining > 0 ? summary.totalRemaining : 0\n bodyList += `<tr class=\"${summary.totalRemaining === 0.0 ? 'proposal-summary-row' : 'summary-active-row'}\">` +\n `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=proposal&token=' + summary.token}\" class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\">${summary.name}</a></td>`\n if (!hideAuthor) {\n bodyList += `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=owner&name=' + summary.author}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${summary.author}</a></td>`\n }\n if (!hideDomain) {\n bodyList += `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + summary.domain}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${summary.domain.charAt(0).toUpperCase() + summary.domain.slice(1)}</a></td>`\n }\n bodyList += `<td class=\"va-mid text-center fs-13i\">${summary.start}</td>` +\n `<td class=\"va-mid text-center fs-13i\">${summary.end}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(summary.budget, 2, 2)}</td>` +\n `<td class=\"va-mid text-right fs-13i\">${lengthInDays}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(monthlyAverage, 2, 2)}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">${summary.totalSpent > 0 ? '$' + humanize.formatToLocalString(summary.totalSpent, 2, 2) : ''}</td>` +\n `<td class=\"va-mid text-right px-2 fs-13i\">${summary.totalRemaining > 0 ? '$' + humanize.formatToLocalString(summary.totalRemaining, 2, 2) : ''}</td>` +\n '</tr>'\n }\n const totalColSpan = hideAuthor && hideDomain ? '3' : ((!hideAuthor && hideDomain) || (hideAuthor && !hideDomain) ? '4' : '5')\n bodyList += '<tr class=\"text-secondary finance-table-header finance-table-footer last-row-header\">' +\n `<td class=\"va-mid text-center fw-600 fs-13i\" colspan=\"${totalColSpan}\">Total</td>` +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</td>` +\n '<td></td><td></td>' +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalAllSpent, 2, 2)}</td>` +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalRemaining, 2, 2)}</td>` +\n '</tr>'\n tbody = tbody.replace('###', bodyList)\n return thead + tbody\n }\n\n getYearDataFromMonthData (data) {\n const result = []\n const yearDataMap = new Map()\n const yearArr = []\n data.monthData.forEach((item) => {\n const monthArr = item.month.split('-')\n if (monthArr.length !== 2) {\n return\n }\n const year = monthArr[0]\n if (!yearArr.includes(year)) {\n yearArr.push(year)\n }\n if (yearDataMap.has(year)) {\n yearDataMap.set(year, yearDataMap.get(year) + item.expense)\n } else {\n yearDataMap.set(year, item.expense)\n }\n })\n\n yearArr.forEach((year) => {\n const object = {\n month: year,\n expense: yearDataMap.get(year)\n }\n result.push(object)\n })\n return result\n }\n\n createMonthYearTable (data, type) {\n let handlerData = data.monthData\n if (type === 'year') {\n handlerData = this.getYearDataFromMonthData(data)\n }\n let breakTable = 7\n if (type === 'year' || this.settings.dtype === 'proposal') {\n // No break\n breakTable = 50\n }\n return this.createTableDetailForMonthYear(handlerData, breakTable, type)\n }\n\n createTableDetailForMonthYear (handlerDataInput, breakTable, type) {\n detailMonthlySummary = handlerDataInput\n let allTable = ''\n let count = 0\n let stepNum = 0\n let handlerData = []\n handlerData.push(...handlerDataInput)\n const yearData = []\n if (this.isAllYearTimeReport(this.settings.dtime)) {\n this.detailGroupByTarget.classList.remove('d-none')\n this.detailMonthlyDescTarget.textContent = this.settings.dinterval === 'year' ? 'Years in the future' : 'Months in the future'\n if (this.settings.dinterval === 'year' && yearList.length > 0) {\n yearList.forEach((year) => {\n let spentUSD = 0; let spentDCR = 0; let actualSpentUSD = 0; let actualSpentDCR = 0\n detailMonthlySummary.forEach((detailMonthly) => {\n if (detailMonthly.month.startsWith(year + '')) {\n spentUSD += detailMonthly.expense\n spentDCR += detailMonthly.expenseDcr\n actualSpentUSD += detailMonthly.actualExpense\n actualSpentDCR += detailMonthly.actualExpenseDcr\n }\n })\n yearData.push({\n month: year + '',\n expense: spentUSD,\n expenseDcr: spentDCR,\n actualExpense: actualSpentUSD,\n actualExpenseDcr: actualSpentDCR\n })\n })\n handlerData = yearData\n }\n } else {\n this.detailMonthlyDescTarget.textContent = 'Months in the future'\n this.detailGroupByTarget.classList.add('d-none')\n }\n for (let i = 0; i < handlerData.length; i++) {\n if (count === 0) {\n allTable += `<table class=\"table monthly v3 border-grey-2 w-auto ${stepNum > 0 ? 'ms-2' : ''}\" style=\"height: 40px;\">` +\n '<col><colgroup span=\"2\"></colgroup><thead>' +\n `<tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">${type === 'year' ? 'Year' : 'Month'}</th>` +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Spent (Est)</th>'\n allTable += (this.settings.dtype === 'year' ? '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Actual Spent</th>' : '') + '</tr>'\n allTable += '<tr class=\"text-secondary finance-table-header\">' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>'\n allTable += this.settings.dtype === 'year' ? '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' : ''\n allTable += '</tr></thead><tbody>'\n }\n const dataMonth = handlerData[i]\n let isFuture = false\n const timeYearMonth = this.getYearMonthArray(dataMonth.month, '-')\n const nowDate = new Date()\n const year = nowDate.getUTCFullYear()\n const month = nowDate.getUTCMonth() + 1\n if (type === 'year') {\n isFuture = timeYearMonth[0] > year\n } else if (type === 'month') {\n if (this.isAllYearTimeReport(this.settings.dtime) && this.settings.dinterval === 'year') {\n isFuture = timeYearMonth[0] > year\n } else {\n const compareDataTime = timeYearMonth[0] * 12 + timeYearMonth[1]\n const compareNowTime = year * 12 + month\n isFuture = compareDataTime > compareNowTime\n }\n }\n allTable += `<tr class=\"odd-even-row ${isFuture ? 'future-row-data' : ''}\">`\n const timeParam = this.getFullTimeParam(dataMonth.month, '-')\n allTable += `<td class=\"text-left px-2 fs-13i\"><a class=\"link-hover-underline fs-13i fw-600\" style=\"text-align: right; width: 80px;\" data-turbolinks=\"false\" href=\"${'/finance-report?type=bytime&dtype=' + (this.isAllYearTimeReport(this.settings.dtime) && this.settings.dinterval === 'year' ? 'year' : type) + '&dtime=' + (timeParam === '' ? dataMonth.month : timeParam)}\">${dataMonth.month}</a></td>`\n allTable += `<td class=\"text-right px-2 fs-13i\">${dataMonth.expense !== 0.0 ? '$' + humanize.formatToLocalString(dataMonth.expense, 2, 2) : '-'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">${dataMonth.expenseDcr !== 0.0 ? humanize.formatToLocalString(dataMonth.expenseDcr / 1e8, 2, 2) : '-'}</td>`\n if (this.settings.dtype === 'year') {\n allTable += `<td class=\"text-right px-2 fs-13i\">${dataMonth.actualExpense !== 0.0 ? '$' + humanize.formatToLocalString(dataMonth.actualExpense, 2, 2) : '-'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">${dataMonth.actualExpenseDcr !== 0.0 ? humanize.formatToLocalString(dataMonth.actualExpenseDcr / 1e8, 2, 2) : '-'}</td>`\n }\n allTable += '</tr>'\n if (count === breakTable) {\n allTable += '</tbody>'\n allTable += '</table>'\n count = 0\n } else {\n count++\n }\n stepNum++\n }\n if (count !== breakTable) {\n allTable += '</tbody>'\n allTable += '</table>'\n }\n return allTable\n }\n\n // Calculate and response\n async yearMonthCalculate () {\n this.pageLoaderTarget.classList.add('loading')\n // set up navigative to main report and up level of time\n // this.toUpReportTarget.href = '/finance-report'\n const url = `/api/finance-report/detail?type=${this.settings.dtype}&time=${this.settings.dtime}`\n let response\n requestDetailCounter++\n const thisRequest = requestDetailCounter\n if (hasDetailCache(url)) {\n response = responseDetailCache[url]\n } else {\n // response = await axios.get(url)\n response = await requestJSON(url)\n responseDetailCache[url] = response\n if (thisRequest !== requestDetailCounter) {\n // new request was issued while waiting.\n console.log('Response request different')\n }\n }\n\n if (!response) {\n this.proposalAreaTarget.classList.add('d-none')\n this.pageLoaderTarget.classList.remove('loading')\n return\n }\n responseDetailData = response\n this.proposalReportTarget.innerHTML = this.createProposalDetailReport(response)\n if (response.proposalTotal > 0) {\n this.proposalTopSummaryTarget.classList.remove('d-none')\n this.handlerSummaryArea(response)\n this.createDomainsSummaryTable(response)\n } else {\n this.proposalTopSummaryTarget.classList.add('d-none')\n }\n yearList = response.yearList\n this.createYearMonthTopSummary(response)\n // create month data list if type is year\n if (this.settings.dtype === 'year') {\n if (response.monthlyResultData && response.monthlyResultData.length > 0) {\n this.monthlyAreaTarget.classList.remove('d-none')\n this.monthlyReportTarget.innerHTML = this.createTableDetailForMonthYear(response.monthlyResultData, 12, 'month')\n } else {\n this.monthlyAreaTarget.classList.add('d-none')\n }\n } else {\n this.monthlyAreaTarget.classList.add('d-none')\n }\n this.pageLoaderTarget.classList.remove('loading')\n }\n\n handlerSummaryArea (data) {\n this.expendiduteValueTarget.textContent = '$' + humanize.formatToLocalString(data.proposalTotal, 2, 2)\n // display proposal spent value\n if (!data.reportDetail || data.reportDetail.length === 0) {\n return\n }\n let totalSpent = 0\n let totalSpentDCR = 0\n for (let i = 0; i < data.reportDetail.length; i++) {\n const report = data.reportDetail[i]\n totalSpent += report.spentEst > 0 ? report.spentEst : 0\n totalSpentDCR += report.totalSpentDcr > 0 ? report.totalSpentDcr : 0\n }\n if (totalSpent > 0) {\n this.proposalSpentAreaTarget.classList.remove('d-none')\n this.proposalSpentTarget.textContent = '$' + humanize.formatToLocalString(totalSpent, 2, 2) + ` (${humanize.formatToLocalString(totalSpentDCR, 2, 2)} DCR)`\n } else {\n this.proposalSpentAreaTarget.classList.add('d-none')\n }\n // display treasury spent value\n if (totalSpent > 0) {\n this.treasurySpentAreaTarget.classList.remove('d-none')\n this.unaccountedValueAreaTarget.classList.remove('d-none')\n const combinedUSD = data.treasurySummary.outvalueUSD + data.legacySummary.outvalueUSD\n const combinedDCR = data.treasurySummary.outvalue + data.legacySummary.outvalue\n this.treasurySpentTarget.textContent = '$' + humanize.formatToLocalString(combinedUSD, 2, 2) + ` (${humanize.formatToLocalString(combinedDCR / 100000000, 2, 2)} DCR)`\n const deltaUSD = combinedUSD - totalSpent\n const deltaDCR = combinedDCR / 100000000 - totalSpentDCR\n this.unaccountedValueTarget.textContent = (deltaUSD < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(deltaUSD), 2, 2) + ` (${humanize.formatToLocalString(deltaDCR, 2, 2)} DCR, ${deltaUSD < 0 ? 'Missing' : 'Unaccounted'})`\n } else {\n this.treasurySpentAreaTarget.classList.add('d-none')\n this.unaccountedValueAreaTarget.classList.add('d-none')\n }\n }\n\n createDomainDetailReport (data) {\n if (!data.reportDetail || data.reportDetail.length === 0) {\n return ''\n }\n const domainMap = new Map()\n data.reportDetail.forEach((detail) => {\n if (domainMap.has(detail.domain)) {\n domainMap.set(detail.domain, domainMap.get(detail.domain) + detail.expense)\n } else {\n domainMap.set(detail.domain, detail.expense)\n }\n })\n let tbody = '<tbody>###</tbody>'\n\n let bodyList = ''\n for (let i = 0; i < data.domainList.length; i++) {\n const domain = data.domainList[i]\n bodyList += '<tr>'\n // td domain name\n bodyList += `<td class=\"text-left fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + domain}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${domain.charAt(0).toUpperCase() + domain.slice(1)}</a></td>`\n bodyList += `<td class=\"text-right fs-13i\">$${humanize.formatToLocalString(domainMap.get(domain), 2, 2)}</td>`\n bodyList += '</tr>'\n }\n tbody = tbody.replace('###', bodyList)\n return tbody\n }\n\n createYearMonthTopSummary (data) {\n if (data.treasurySummary.invalue <= 0 && data.treasurySummary.outvalue <= 0 && data.legacySummary.invalue <= 0 && data.legacySummary.outvalue <= 0) {\n this.totalSpanRowTarget.classList.add('d-none')\n return\n }\n this.totalSpanRowTarget.classList.remove('d-none')\n let innerHtml = '<col><colgroup span=\"2\"></colgroup>' +\n '<thead><tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">Treasury Type</th>' +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Value</th></tr>' +\n '<tr class=\"text-secondary finance-table-header\"><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th></tr></thead><tbody>'\n innerHtml += data.treasurySummary.invalue > 0\n ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Decentralized Income</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.treasurySummary.invalue / 100000000), 3, 3) + ' DCR'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.treasurySummary.invalueUSD), 2, 2)}</td></tr>`\n : ''\n innerHtml += data.treasurySummary.outvalue > 0\n ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Decentralized Outgoing</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.treasurySummary.outvalue / 100000000), 3, 3) + ' DCR'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.treasurySummary.outvalueUSD), 2, 2)}</td></tr>`\n : ''\n innerHtml += data.legacySummary.invalue > 0\n ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Admin Income</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.legacySummary.invalue / 100000000), 3, 3) + ' DCR'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.legacySummary.invalueUSD), 2, 2)}</td></tr>`\n : ''\n innerHtml += data.legacySummary.outvalue > 0\n ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Admin Outgoing</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.legacySummary.outvalue / 100000000), 3, 3) + ' DCR'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.legacySummary.outvalueUSD), 2, 2)}</td></tr>`\n : ''\n innerHtml += '</tbody>'\n this.yearMonthInfoTableTarget.innerHTML = innerHtml\n }\n\n createDomainsSummaryTable (data) {\n const domainDataMap = this.getDomainsSummaryData(data)\n let innerHtml = '<col><colgroup span=\"2\"></colgroup>' +\n '<thead><tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">Domain</th>' +\n '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Spent (Est)</th></tr>' +\n '<tr class=\"text-secondary finance-table-header\"><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th></tr></thead><tbody>'\n let totalDCR = 0; let totalUSD = 0\n let hasData = false\n domainDataMap.forEach((val, key) => {\n if (val.valueDCR !== 0 || val.valueUSD !== 0) {\n const valueDCR = val.valueDCR\n totalDCR += val.valueDCR\n const valueUSD = val.valueUSD\n totalUSD += val.valueUSD\n hasData = true\n innerHtml += `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\"><a href=\"/finance-report/detail?type=domain&name=${key}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${key.charAt(0).toUpperCase() + key.slice(1)}</a></td>` +\n `<td class=\"text-right px-2 fs-13i\">${valueDCR > 0 ? humanize.formatToLocalString(valueDCR, 2, 2) : '-'}</td>` +\n `<td class=\"text-right px-2 fs-13i\">$${valueUSD > 0 ? humanize.formatToLocalString(valueUSD, 2, 2) : '-'}</td></tr>`\n }\n })\n if (!hasData) {\n this.domainSummaryAreaTarget.classList.add('d-none')\n return\n }\n this.domainSummaryAreaTarget.classList.remove('d-none')\n innerHtml += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n '<td class=\"va-mid text-center fw-600 fs-13i\">Total</td>' +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalDCR > 0 ? humanize.formatToLocalString(totalDCR, 2, 2) : '-'}</td>` +\n `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalUSD > 0 ? '$' + humanize.formatToLocalString(totalUSD, 2, 2) : '-'}</td>` +\n '</tr>'\n innerHtml += '</tbody>'\n this.domainSummaryTableTarget.innerHTML = innerHtml\n }\n\n getDomainsSummaryData (data) {\n const result = new Map()\n if (!data.reportDetail || data.reportDetail.length === 0) {\n return result\n }\n for (let i = 0; i < data.reportDetail.length; i++) {\n const report = data.reportDetail[i]\n const domain = report.domain\n if (result.has(domain)) {\n const detailData = {}\n const existData = result.get(domain)\n detailData.valueDCR = existData.valueDCR + (report.totalSpentDcr > 0 ? report.totalSpentDcr : 0)\n detailData.valueUSD = existData.valueUSD + (report.spentEst > 0 ? report.spentEst : 0)\n result.set(domain, detailData)\n } else {\n const detailData = {}\n detailData.valueDCR = report.totalSpentDcr > 0 ? report.totalSpentDcr : 0\n detailData.valueUSD = report.spentEst > 0 ? report.spentEst : 0\n result.set(domain, detailData)\n }\n }\n return result\n }\n\n sortDetailByPName () {\n this.proposalDetailSort('pname')\n }\n\n sortDetailByAuthor () {\n this.proposalDetailSort('author')\n }\n\n sortDetailByDomain () {\n this.proposalDetailSort('domain')\n }\n\n sortDetailByStartDate () {\n this.proposalDetailSort('startdt')\n }\n\n sortDetailByEndDate () {\n this.proposalDetailSort('enddt')\n }\n\n sortDetailBySpent () {\n this.proposalDetailSort('spent')\n }\n\n sortDetailByBudget () {\n this.proposalDetailSort('budget')\n }\n\n sortDetailByDays () {\n this.proposalDetailSort('days')\n }\n\n sortDetailByAvg () {\n this.proposalDetailSort('avg')\n }\n\n sortDetailByRemaining () {\n this.proposalDetailSort('remaining')\n }\n\n proposalDetailSort (type) {\n this.settings.dstype = type\n this.settings.dorder = this.settings.dorder === 'esc' ? 'desc' : 'esc'\n if (this.settings.dtype === 'year' || this.settings.dtype === 'month') {\n this.yearMonthProposalListUpdate()\n } else {\n this.proposalDetailsListUpdate()\n }\n }\n\n createProposalDetailReport (data) {\n if (!data.reportDetail || data.reportDetail.length === 0) {\n this.proposalAreaTarget.classList.add('d-none')\n return ''\n }\n\n if (!this.settings.dstype || this.settings.dstype === '') {\n this.settings.dstype = 'pname'\n }\n\n this.proposalAreaTarget.classList.remove('d-none')\n const yearTotalData = []\n let thead = '<thead>' +\n '<tr class=\"text-secondary finance-table-header\">' +\n '<th class=\"va-mid text-center px-2 fs-13i fw-600\">Proposal Name</th>' +\n '<th class=\"va-mid text-center px-2 fs-13i fw-600\">Domain</th>'\n if (this.isAllYearTimeReport(this.settings.dtime)) {\n if (data.reportDetail[0].spentYears.length > 0) {\n for (let i = 0; i < data.reportDetail[0].spentYears.length; i++) {\n const spentYear = data.reportDetail[0].spentYears[i]\n thead += `<th class=\"va-mid text-center px-2 fs-13i fw-600\">${spentYear.year}</th>`\n yearTotalData.push(0)\n }\n }\n thead += '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortDetailBySpent\">Total (Est)</label>' +\n `<span data-action=\"click->financereport#sortDetailBySpent\" class=\"${(this.settings.dstype === 'spent' && this.settings.dorder === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.dstype !== 'spent' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n } else {\n thead += `<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortDetailBySpent\">This ${this.settings.dtype === 'year' ? 'Year' : 'Month'} (Est)</label>` +\n `<span data-action=\"click->financereport#sortDetailBySpent\" class=\"${(this.settings.dstype === 'spent' && this.settings.dorder === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.dstype !== 'spent' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n }\n thead += '</tr></thead>'\n\n let tbody = '<tbody>###</tbody>'\n let bodyList = ''\n let totalExpense = 0\n // sort by startdt\n const summaryList = this.sortDetailSummary(data.reportDetail)\n const _this = this\n for (let i = 0; i < summaryList.length; i++) {\n bodyList += '<tr class=\"odd-even-row\">'\n const report = summaryList[i]\n // add proposal name\n bodyList += '<td class=\"va-mid px-2 text-left fs-13i\">' +\n `<a href=\"${'/finance-report/detail?type=proposal&token=' + report.token}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i d-block\">${report.name}</a></td>` +\n `<td class=\"va-mid text-center px-2 fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + report.domain}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${report.domain.charAt(0).toUpperCase() + report.domain.slice(1)}</a></td>`\n if (_this.isAllYearTimeReport(_this.settings.dtime)) {\n if (report.spentYears.length > 0) {\n let countHasData = 0\n report.spentYears.forEach((yData) => {\n if (yData.spend > 0) {\n countHasData++\n }\n })\n for (let i = 0; i < report.spentYears.length; i++) {\n const yearData = report.spentYears[i]\n let spend = yearData.spend\n if (countHasData === 1 && spend > 0) {\n spend = report.totalSpent\n }\n bodyList += '<td class=\"va-mid text-right px-2 fs-13i\">' +\n `${spend > 0 ? '$' + humanize.formatToLocalString(spend, 2, 2) : ''}</td>`\n yearTotalData[i] += spend\n }\n }\n }\n bodyList += '<td class=\"va-mid text-right px-2 fs-13i fw-600\">' +\n `${report.totalSpent > 0 ? '$' + humanize.formatToLocalString(report.totalSpent, 2, 2) : ''}</td>`\n totalExpense += report.totalSpent\n }\n\n bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n '<td class=\"va-mid text-center fw-600 fs-13i\" colspan=\"2\">Total</td>'\n if (_this.isAllYearTimeReport(_this.settings.dtime)) {\n for (let i = 0; i < data.reportDetail[0].spentYears.length; i++) {\n bodyList += `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${yearTotalData[i] > 0 ? '$' + humanize.formatToLocalString(yearTotalData[i], 2, 2) : ''}</td>`\n }\n }\n bodyList += `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalExpense > 0 ? '$' + humanize.formatToLocalString(totalExpense, 2, 2) : ''}</td></tr>`\n tbody = tbody.replace('###', bodyList)\n return thead + tbody\n }\n\n sortDetailSummary (summary) {\n if (!summary || summary.length === 0) {\n return\n }\n const _this = this\n if (this.settings.dstype === 'domain') {\n return this.sortDetailSummaryByDomain(summary)\n }\n summary.sort(function (a, b) {\n let aData = null\n let bData = null\n let alength\n let blength\n switch (_this.settings.dstype) {\n case 'pname':\n aData = a.name\n bData = b.name\n break\n case 'author':\n aData = a.author\n bData = b.author\n break\n case 'budget':\n aData = a.budget\n bData = b.budget\n break\n case 'spent':\n aData = a.totalSpent\n bData = b.totalSpent\n break\n case 'remaining':\n aData = a.totalRemaining\n bData = b.totalRemaining\n break\n case 'days':\n aData = _this.getLengthInDay(a)\n bData = _this.getLengthInDay(b)\n break\n case 'avg':\n alength = _this.getLengthInDay(a)\n blength = _this.getLengthInDay(b)\n aData = (a.budget / alength) * 30\n bData = (b.budget / blength) * 30\n break\n case 'enddt':\n aData = Date.parse(a.end)\n bData = Date.parse(b.end)\n break\n default:\n aData = Date.parse(a.start)\n bData = Date.parse(b.start)\n break\n }\n\n if (aData > bData) {\n return _this.settings.dorder === 'desc' ? -1 : 1\n }\n if (aData < bData) {\n return _this.settings.dorder === 'desc' ? 1 : -1\n }\n return 0\n })\n\n return summary\n }\n\n sortDetailSummaryByDomain (summary) {\n if (!summary) {\n return\n }\n const _this = this\n summary.sort(function (a, b) {\n if (a.domain > b.domain) {\n return _this.settings.dorder === 'desc' ? -1 : 1\n } else if (a.domain < b.domain) {\n return _this.settings.dorder === 'desc' ? 1 : -1\n } else {\n if (a.name > b.name) {\n return _this.settings.dorder === 'desc' ? -1 : 1\n }\n if (a.name < b.name) {\n return _this.settings.dorder === 'desc' ? 1 : -1\n }\n }\n return 0\n })\n\n return summary\n }\n\n getDetailYearMonthArray (timeInput, splitChar) {\n const timeArr = timeInput.split(splitChar)\n const result = []\n if (timeArr.length < 2) {\n result.push(parseInt(timeArr[0]))\n return result\n }\n result.push(parseInt(timeArr[0]))\n result.push(parseInt(timeArr[1]))\n return result\n }\n\n isYearDetailReport () {\n return this.settings.dtype === '' || this.settings.dtype === 'year'\n }\n\n isMonthDetailReport () {\n return this.settings.dtype === 'month'\n }\n\n getDetailYearMonth () {\n if (!this.settings.dtime || this.settings.dtime === '') {\n return []\n }\n const timeArr = this.settings.dtime.toString().split('_')\n const res = []\n res.push(Number(timeArr[0]))\n if (timeArr.length > 1) {\n res.push(Number(timeArr[1]))\n }\n return res\n }\n\n isNullValue (value) {\n return value === null || value === undefined || (typeof value === 'string' && value === '')\n }\n\n get chartType () {\n if (this.isDomainType()) {\n return 'amountflow'\n }\n return this.optionsTarget.value\n }\n\n get activeZoomDuration () {\n return this.activeZoomKey ? Zoom.mapValue(this.activeZoomKey) : false\n }\n\n get activeZoomKey () {\n const activeButtons = this.zoomTarget.getElementsByClassName('btn-selected')\n if (activeButtons.length === 0) return null\n return activeButtons[0].name\n }\n\n get chartDuration () {\n return this.xRange[1] - this.xRange[0]\n }\n\n get activeBin () {\n return this.cintervalTarget.getElementsByClassName('btn-selected')[0].name\n }\n\n get flow () {\n let base10 = 0\n this.flowBoxes.forEach((box) => {\n if (box.checked) base10 += parseInt(box.value)\n })\n return base10\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static get targets () {\n return ['footerBar']\n }\n\n connect () {\n this.isHomepage = this.data.get('isHomepage') === 'true'\n if (this.isHomepage) {\n this.footerBarTarget.classList.add('d-none')\n } else {\n this.footerBarTarget.classList.remove('d-none')\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport { assign, map, merge } from 'lodash-es'\nimport { animationFrame } from '../helpers/animation_helper.js'\nimport { isEqual } from '../helpers/chart_helper.js'\nimport { requestJSON } from '../helpers/http.js'\nimport humanize from '../helpers/humanize_helper.js'\nimport { getDefault } from '../helpers/module_helper.js'\nimport TurboQuery from '../helpers/turbolinks_helper.js'\nimport Zoom from '../helpers/zoom_helper.js'\nimport globalEventBus from '../services/event_bus_service.js'\nimport { darkEnabled } from '../services/theme_service.js'\n\nlet selectedChart\nlet selectedType\nlet Dygraph // lazy loaded on connect\n\nconst aDay = 86400 * 1000 // in milliseconds\nconst aMonth = 30 // in days\nconst atomsToDCR = 1e-8\nconst windowScales = ['ticket-price', 'pow-difficulty', 'missed-votes']\nconst rangeUse = ['hashrate', 'pow-difficulty']\nconst hybridScales = ['privacy-participation']\nconst lineScales = ['ticket-price', 'privacy-participation']\nconst modeScales = ['ticket-price']\nconst multiYAxisChart = ['ticket-price', 'coin-supply', 'privacy-participation']\nconst decredChartOpts = ['ticket-price', 'ticket-pool-size', 'ticket-pool-value', 'stake-participation',\n 'privacy-participation', 'missed-votes', 'block-size', 'blockchain-size', 'tx-count', 'duration-btw-blocks',\n 'pow-difficulty', 'chainwork', 'hashrate', 'coin-supply', 'fees']\nconst mutilchainChartOpts = ['block-size', 'blockchain-size', 'tx-count', 'tx-per-block', 'address-number',\n 'pow-difficulty', 'hashrate', 'mined-blocks', 'mempool-size', 'mempool-txs', 'coin-supply', 'fees']\nlet globalChainType = ''\n// index 0 represents y1 and 1 represents y2 axes.\nconst yValueRanges = { 'ticket-price': [1] }\nconst hashrateUnits = ['Th/s', 'Ph/s', 'Eh/s']\nlet ticketPoolSizeTarget, premine, stakeValHeight, stakeShare\nlet baseSubsidy, subsidyInterval, subsidyExponent, windowSize, avgBlockTime\nlet rawCoinSupply, rawPoolValue\nlet yFormatter, legendEntry, legendMarker, legendElement\n\nfunction hashrateTimePlotter (e) {\n hashrateLegendPlotter(e, 1693612800000)\n}\n\nfunction hashrateBlockPlotter (e) {\n hashrateLegendPlotter(e, 794429)\n}\n\nfunction makePt (x, y) { return { x, y } }\n\n// Legend plotter processing for hashrate chart for blake3 algorithm transition\nfunction hashrateLegendPlotter (e, midGapValue) {\n Dygraph.Plotters.fillPlotter(e)\n Dygraph.Plotters.linePlotter(e)\n const area = e.plotArea\n const ctx = e.drawingContext\n const mg = e.dygraph.toDomCoords(midGapValue, 0)\n const midGap = makePt(mg[0], mg[1])\n const fontSize = 13\n const dark = darkEnabled()\n ctx.textAlign = 'left'\n ctx.textBaseline = 'top'\n ctx.font = `${fontSize}px arial`\n ctx.lineWidth = 1\n ctx.strokeStyle = dark ? '#ffffff' : '#23562f'\n const boxColor = dark ? '#1e2b39' : '#ffffff'\n\n const line1 = 'Milestone'\n const line2 = '- Transition of the'\n const line3 = 'algorithm to BLAKE3'\n const line4 = '- Change block reward'\n const line5 = 'subsidy split to 1/89/10'\n let boxW = 0\n const txts = [line1, line2, line3, line4, line5]\n txts.forEach(txt => {\n const w = ctx.measureText(txt).width\n if (w > boxW) boxW = w\n })\n let rowHeight = fontSize * 1.5\n const rowPad = (rowHeight - fontSize) / 3\n const boxPad = rowHeight / 5\n let y = fontSize\n y += area.h / 4\n // Label the gap size.\n rowHeight -= 2 // just looks better\n ctx.fillStyle = boxColor\n const rect = makePt(midGap.x + boxPad, y - boxPad)\n const dims = makePt(boxW + boxPad * 3, rowHeight * 5 + boxPad * 2)\n ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n ctx.fillStyle = dark ? '#ffffff' : '#23562f'\n const centerX = midGap.x + boxW / 2 + 8\n const write = s => {\n const cornerX = centerX - (ctx.measureText(s).width / 2)\n ctx.fillText(s, cornerX + rowPad, y + rowPad)\n y += rowHeight\n }\n\n ctx.save()\n ctx.font = `bold ${fontSize + 2}px arial`\n write(line1)\n ctx.restore()\n write(line2)\n write(line3)\n write(line4)\n write(line5)\n // Draw a line from the box to the gap\n drawLine(ctx,\n makePt(midGap.x + boxW / 2, y),\n makePt(midGap.x, midGap.y - boxPad))\n}\n\nfunction drawLine (ctx, start, end) {\n ctx.beginPath()\n ctx.moveTo(start.x, start.y)\n ctx.lineTo(end.x, end.y)\n ctx.stroke()\n}\n\nfunction useRange (chart) {\n return rangeUse.indexOf(chart) > -1\n}\n\nfunction usesWindowUnits (chart) {\n return windowScales.indexOf(chart) > -1\n}\n\nfunction usesHybridUnits (chart) {\n return hybridScales.indexOf(chart) > -1\n}\n\nfunction isScaleDisabled (chart) {\n return lineScales.indexOf(chart) > -1\n}\n\nfunction isModeEnabled (chart) {\n return modeScales.includes(chart)\n}\n\nfunction hasMultipleVisibility (chart) {\n return multiYAxisChart.indexOf(chart) > -1\n}\n\nfunction intComma (amount) {\n if (!amount) return ''\n return amount.toLocaleString(undefined, { maximumFractionDigits: 0 })\n}\n\nfunction zipWindowHvYZ (ys, zs, winSize, yMult, zMult, offset) {\n yMult = yMult || 1\n zMult = zMult || 1\n offset = offset || 0\n return ys.map((y, i) => {\n return [i * winSize + offset, y * yMult, zs[i] * zMult]\n })\n}\n\nfunction zipWindowTvYZ (times, ys, zs, yMult, zMult) {\n yMult = yMult || 1\n zMult = zMult || 1\n return times.map((t, i) => {\n return [new Date(t * 1000), ys[i] * yMult, zs[i] * zMult]\n })\n}\n\nfunction ticketPriceFunc (data) {\n if (data.t) return zipWindowTvYZ(data.t, data.price, data.count, atomsToDCR)\n return zipWindowHvYZ(data.price, data.count, data.window, atomsToDCR)\n}\n\nfunction poolSizeFunc (data) {\n let out = []\n if (data.axis === 'height') {\n if (data.bin === 'block') out = zipIvY(data.count)\n else out = zipHvY(data.h, data.count)\n } else {\n out = zipTvY(data.t, data.count)\n }\n out.forEach(pt => pt.push(null))\n if (out.length) {\n out[0][2] = ticketPoolSizeTarget\n out[out.length - 1][2] = ticketPoolSizeTarget\n }\n return out\n}\n\nfunction percentStakedFunc (data) {\n rawCoinSupply = data.circulation.map(v => v * atomsToDCR)\n rawPoolValue = data.poolval.map(v => v * atomsToDCR)\n const ys = rawPoolValue.map((v, i) => [v / rawCoinSupply[i] * 100])\n if (data.axis === 'height') {\n if (data.bin === 'block') return zipIvY(ys)\n return zipHvY(data.h, ys)\n }\n return zipTvY(data.t, ys)\n}\n\nfunction anonymitySetFunc (data) {\n let d\n let start = -1\n let end = 0\n if (data.axis === 'height') {\n if (data.bin === 'block') {\n d = data.anonymitySet.map((y, i) => {\n if (start === -1 && y > 0) {\n start = i\n }\n end = i\n return [i, y * atomsToDCR]\n })\n } else {\n d = data.anonymitySet.map((y, i) => {\n if (start === -1 && y > 0) {\n start = i\n }\n end = data.h[i]\n return [data.h[i], y * atomsToDCR]\n })\n }\n } else {\n d = data.t.map((t, i) => {\n if (start === -1 && data.anonymitySet[i] > 0) {\n start = t * 1000\n }\n end = t * 1000\n return [new Date(t * 1000), data.anonymitySet[i] * atomsToDCR]\n })\n }\n return { data: d, limits: [start, end] }\n}\n\nfunction axesToRestoreYRange (chartName, origYRange, newYRange) {\n const axesIndexes = yValueRanges[chartName]\n if (!Array.isArray(origYRange) || !Array.isArray(newYRange) ||\n origYRange.length !== newYRange.length || !axesIndexes) return\n\n let axes\n for (let i = 0; i < axesIndexes.length; i++) {\n const index = axesIndexes[i]\n if (newYRange.length <= index) continue\n if (!isEqual(origYRange[index], newYRange[index])) {\n if (!axes) axes = {}\n if (index === 0) {\n axes = Object.assign(axes, { y1: { valueRange: origYRange[index] } })\n } else if (index === 1) {\n axes = Object.assign(axes, { y2: { valueRange: origYRange[index] } })\n }\n }\n }\n return axes\n}\n\nfunction withBigUnits (v, units) {\n const i = v === 0 ? 0 : Math.floor(Math.log10(v) / 3)\n return (v / Math.pow(1000, i)).toFixed(3) + ' ' + units[i]\n}\n\nfunction blockReward (height) {\n if (height >= stakeValHeight) return baseSubsidy * Math.pow(subsidyExponent, Math.floor(height / subsidyInterval))\n if (height > 1) return baseSubsidy * (1 - stakeShare)\n if (height === 1) return premine\n return 0\n}\n\nfunction addLegendEntryFmt (div, series, fmt) {\n div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${fmt(series.y)}`))\n}\n\nfunction addLegendEntry (div, series) {\n div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${series.yHTML}`))\n}\n\nfunction defaultYFormatter (div, data) {\n addLegendEntry(div, data.series[0])\n}\n\nfunction customYFormatter (fmt) {\n return (div, data) => addLegendEntryFmt(div, data.series[0], fmt)\n}\n\nfunction legendFormatter (data) {\n if (data.x == null) return legendElement.classList.add('d-hide')\n legendElement.classList.remove('d-hide')\n const div = document.createElement('div')\n let xHTML = data.xHTML\n if (data.dygraph.getLabels()[0] === 'Date') {\n xHTML = humanize.date(data.x, false, selectedChart !== 'ticket-price')\n }\n div.appendChild(legendEntry(`${data.dygraph.getLabels()[0]}: ${xHTML}`))\n yFormatter(div, data, data.dygraph.getOption('legendIndex'))\n dompurify.sanitize(div, { IN_PLACE: true, FORBID_TAGS: ['svg', 'math'] })\n return div.innerHTML\n}\n\nfunction nightModeOptions (nightModeOn) {\n if (nightModeOn) {\n return {\n rangeSelectorAlpha: 0.3,\n gridLineColor: '#596D81',\n colors: ['#2DD8A3', '#255595', '#FFC84E']\n }\n }\n return {\n rangeSelectorAlpha: 0.4,\n gridLineColor: '#C4CBD2',\n colors: ['#255594', '#006600', '#FF0090']\n }\n}\n\nfunction zipWindowHvY (ys, winSize, yMult, offset) {\n yMult = yMult || 1\n offset = offset || 0\n return ys.map((y, i) => {\n return [i * winSize + offset, y * yMult]\n })\n}\n\nfunction zipWindowTvY (times, ys, yMult) {\n yMult = yMult || 1\n return times.map((t, i) => {\n return [new Date(t * 1000), ys[i] * yMult]\n })\n}\n\nfunction zipTvY (times, ys, yMult) {\n yMult = yMult || 1\n return times.map((t, i) => {\n return [new Date(t * 1000), ys[i] * yMult]\n })\n}\n\nfunction zipIvY (ys, yMult, offset) {\n yMult = yMult || 1\n offset = offset || 1 // TODO: check for why offset is set to a default value of 1 when genesis block has a height of 0\n return ys.map((y, i) => {\n return [offset + i, y * yMult]\n })\n}\n\nfunction zipHvY (heights, ys, yMult, offset) {\n yMult = yMult || 1\n offset = offset || 1\n return ys.map((y, i) => {\n return [offset + heights[i], y * yMult]\n })\n}\n\nfunction zip2D (data, ys, yMult, offset) {\n yMult = yMult || 1\n if (data.axis === 'height') {\n if (data.bin === 'block') return zipIvY(ys, yMult)\n return zipHvY(data.h, ys, yMult, offset)\n }\n return zipTvY(data.t, ys, yMult)\n}\n\nfunction powDiffFunc (data) {\n if (data.t) return zipWindowTvY(data.t, data.diff)\n return zipWindowHvY(data.diff, data.window, 1, data.offset)\n}\n\nfunction circulationFunc (chartData) {\n let yMax = 0\n let h = -1\n const addDough = (newHeight) => {\n while (h < newHeight) {\n h++\n yMax += blockReward(h) * atomsToDCR\n }\n }\n const heights = chartData.h\n const times = chartData.t\n const supplies = chartData.supply\n const isHeightAxis = chartData.axis === 'height'\n let xFunc, hFunc\n if (chartData.bin === 'day') {\n xFunc = isHeightAxis ? i => heights[i] : i => new Date(times[i] * 1000)\n hFunc = i => heights[i]\n } else {\n xFunc = isHeightAxis ? i => i : i => new Date(times[i] * 1000)\n hFunc = i => i\n }\n\n const inflation = []\n const data = map(supplies, (n, i) => {\n const height = hFunc(i)\n addDough(height)\n inflation.push(yMax)\n return [xFunc(i), supplies[i] * atomsToDCR, null, 0]\n })\n\n const dailyBlocks = aDay / avgBlockTime\n const lastPt = data[data.length - 1]\n let x = lastPt[0]\n // Set yMax to the start at last actual supply for the prediction line.\n yMax = lastPt[1]\n if (!isHeightAxis) x = x.getTime()\n xFunc = isHeightAxis ? xx => xx : xx => { return new Date(xx) }\n const xIncrement = isHeightAxis ? dailyBlocks : aDay\n const projection = 6 * aMonth\n data.push([xFunc(x), null, yMax, null])\n for (let i = 1; i <= projection; i++) {\n addDough(h + dailyBlocks)\n x += xIncrement\n data.push([xFunc(x), null, yMax, null])\n }\n return { data, inflation }\n}\n\nfunction mapDygraphOptions (data, labelsVal, isDrawPoint, yLabel, labelsMG, labelsMG2) {\n return merge({\n file: data,\n labels: labelsVal,\n drawPoints: isDrawPoint,\n ylabel: yLabel,\n labelsKMB: labelsMG2 && labelsMG ? false : labelsMG,\n labelsKMG2: labelsMG2 && labelsMG ? false : labelsMG2\n }, nightModeOptions(darkEnabled()))\n}\n\nexport default class extends Controller {\n static get targets () {\n return [\n 'chartWrapper',\n 'labels',\n 'chartsView',\n 'chartSelect',\n 'zoomSelector',\n 'zoomOption',\n 'scaleType',\n 'axisOption',\n 'binSelector',\n 'scaleSelector',\n 'binSize',\n 'legendEntry',\n 'legendMarker',\n 'modeSelector',\n 'modeOption',\n 'rawDataURL',\n 'chartName',\n 'chartTitleName',\n 'chainTypeSelected',\n 'vSelectorItem',\n 'vSelector',\n 'ticketsPurchase',\n 'anonymitySet',\n 'ticketsPrice',\n 'rangeSelector',\n 'rangeOption'\n ]\n }\n\n async connect () {\n this.isHomepage = !window.location.href.includes('/charts')\n this.query = new TurboQuery()\n premine = parseInt(this.data.get('premine'))\n stakeValHeight = parseInt(this.data.get('svh'))\n stakeShare = parseInt(this.data.get('pos')) / 10.0\n baseSubsidy = parseInt(this.data.get('bs'))\n subsidyInterval = parseInt(this.data.get('sri'))\n subsidyExponent = parseFloat(this.data.get('mulSubsidy')) / parseFloat(this.data.get('divSubsidy'))\n this.chainType = 'dcr'\n avgBlockTime = parseInt(this.data.get(this.chainType + 'BlockTime')) * 1000\n globalChainType = this.chainType\n legendElement = this.labelsTarget\n\n // Prepare the legend element generators.\n const lm = this.legendMarkerTarget\n lm.remove()\n lm.removeAttribute('data-charts-target')\n legendMarker = () => {\n const node = document.createElement('div')\n node.appendChild(lm.cloneNode())\n return node.innerHTML\n }\n const le = this.legendEntryTarget\n le.remove()\n le.removeAttribute('data-charts-target')\n legendEntry = s => {\n const node = le.cloneNode()\n node.innerHTML = s\n return node\n }\n\n this.settings = TurboQuery.nullTemplate(['chart', 'zoom', 'scale', 'bin', 'axis', 'visibility', 'home', 'range'])\n if (!this.isHomepage) {\n this.query.update(this.settings)\n }\n this.settings.chart = this.settings.chart || 'ticket-price'\n this.zoomButtons = this.zoomSelectorTarget.querySelectorAll('button')\n this.binButtons = this.binSelectorTarget.querySelectorAll('button')\n this.scaleButtons = this.scaleSelectorTarget.querySelectorAll('button')\n this.modeButtons = this.modeSelectorTarget.querySelectorAll('button')\n this.zoomCallback = this._zoomCallback.bind(this)\n this.drawCallback = this._drawCallback.bind(this)\n this.limits = null\n this.lastZoom = null\n this.visibility = []\n this.setRange(this.settings.range ? this.settings.range : 'after')\n if (this.settings.visibility) {\n this.settings.visibility.split('-', -1).forEach(s => {\n this.visibility.push(s === 'true')\n })\n }\n Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n this.drawInitialGraph()\n this.processNightMode = (params) => {\n this.chartsView.updateOptions(\n nightModeOptions(params.nightMode)\n )\n }\n globalEventBus.on('NIGHT_MODE', this.processNightMode)\n }\n\n setRange (e) {\n const target = e.srcElement || e.target\n const option = target ? target.dataset.option : e\n if (!option) return\n this.setActiveOptionBtn(option, this.rangeOptionTargets)\n if (!target) return // Exit if running for the first time.\n selectedChart = null // Force fetch\n this.selectChart()\n }\n\n setVisibility (e) {\n switch (this.chartSelectTarget.value) {\n case 'ticket-price':\n if (!this.ticketsPriceTarget.checked && !this.ticketsPurchaseTarget.checked) {\n e.currentTarget.checked = true\n return\n }\n this.visibility = [this.ticketsPriceTarget.checked, this.ticketsPurchaseTarget.checked]\n break\n case 'coin-supply':\n this.visibility = [true, true, this.anonymitySetTarget.checked]\n break\n case 'privacy-participation':\n this.visibility = [true, this.anonymitySetTarget.checked]\n break\n default:\n return\n }\n this.chartsView.updateOptions({ visibility: this.visibility })\n this.settings.visibility = this.visibility.join('-')\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n }\n\n disconnect () {\n globalEventBus.off('NIGHT_MODE', this.processNightMode)\n if (this.chartsView !== undefined) {\n this.chartsView.destroy()\n }\n selectedChart = null\n }\n\n drawInitialGraph () {\n const options = {\n axes: { y: { axisLabelWidth: 70 }, y2: { axisLabelWidth: 65 } },\n labels: ['Date', 'Ticket Price', 'Tickets Bought'],\n digitsAfterDecimal: 8,\n showRangeSelector: true,\n rangeSelectorPlotFillColor: '#C4CBD2',\n rangeSelectorAlpha: 0.4,\n rangeSelectorHeight: 40,\n drawPoints: true,\n pointSize: 0.25,\n legend: 'always',\n labelsSeparateLines: true,\n labelsDiv: legendElement,\n legendFormatter: legendFormatter,\n highlightCircleSize: 4,\n ylabel: 'Ticket Price',\n y2label: 'Tickets Bought',\n labelsUTC: true,\n axisLineColor: '#C4CBD2'\n }\n\n this.chartsView = new Dygraph(\n this.chartsViewTarget,\n [[1, 1, 5], [2, 5, 11]],\n options\n )\n this.chartSelectTarget.value = this.settings.chart\n\n if (this.settings.axis) this.setAxis(this.settings.axis) // set first\n if (this.settings.scale === 'log') this.setSelectScale(this.settings.scale)\n if (this.settings.zoom) this.setSelectZoom(this.settings.zoom)\n this.setSelectBin(this.settings.bin ? this.settings.bin : 'day')\n this.setSelectMode(this.settings.mode ? this.settings.mode : 'smooth')\n\n const ogLegendGenerator = Dygraph.Plugins.Legend.generateLegendHTML\n Dygraph.Plugins.Legend.generateLegendHTML = (g, x, pts, w, row) => {\n g.updateOptions({ legendIndex: row }, true)\n return ogLegendGenerator(g, x, pts, w, row)\n }\n this.selectChart()\n }\n\n plotGraph (chartName, data) {\n let d = []\n const gOptions = {\n zoomCallback: null,\n drawCallback: null,\n logscale: this.settings.scale === 'log',\n valueRange: [null, null],\n visibility: null,\n y2label: null,\n y3label: null,\n stepPlot: this.settings.mode === 'stepped',\n axes: {},\n series: null,\n inflation: null,\n plotter: null\n }\n rawPoolValue = []\n rawCoinSupply = []\n yFormatter = defaultYFormatter\n const xlabel = data.t ? 'Date' : 'Block Height'\n const _this = this\n const isHeightBlock = data.axis === 'height' && data.bin === 'block'\n switch (chartName) {\n case 'ticket-price': // price graph\n d = ticketPriceFunc(data)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Price', 'Tickets Bought'], true,\n 'Price (DCR)', true, false))\n gOptions.y2label = 'Tickets Bought'\n gOptions.series = { 'Tickets Bought': { axis: 'y2' } }\n this.visibility = [this.ticketsPriceTarget.checked, this.ticketsPurchaseTarget.checked]\n gOptions.visibility = this.visibility\n gOptions.axes.y2 = {\n valueRange: [0, windowSize * 20 * 8],\n axisLabelFormatter: (y) => Math.round(y)\n }\n yFormatter = customYFormatter(y => y.toFixed(8) + ' DCR')\n break\n case 'ticket-pool-size': // pool size graph\n d = poolSizeFunc(data)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Ticket Pool Size', 'Network Target'],\n false, 'Ticket Pool Size', true, false))\n gOptions.series = {\n 'Network Target': {\n strokePattern: [5, 3],\n connectSeparatedPoints: true,\n strokeWidth: 2,\n color: '#C4CBD2'\n }\n }\n yFormatter = customYFormatter(y => `${intComma(y)} tickets (network target ${intComma(ticketPoolSizeTarget)})`)\n break\n case 'stake-participation':\n d = percentStakedFunc(data)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Stake Participation'], true,\n 'Stake Participation (%)', true, false))\n yFormatter = (div, data, i) => {\n addLegendEntryFmt(div, data.series[0], y => y.toFixed(4) + '%')\n div.appendChild(legendEntry(`${legendMarker()} Ticket Pool Value: ${intComma(rawPoolValue[i])} DCR`))\n div.appendChild(legendEntry(`${legendMarker()} Coin Supply: ${intComma(rawCoinSupply[i])} DCR`))\n }\n break\n case 'privacy-participation': { // anonymity set graph\n d = anonymitySetFunc(data)\n this.customLimits = d.limits\n const label = 'Mix Rate'\n assign(gOptions, mapDygraphOptions(d.data, [xlabel, label], false, `${label} (DCR)`, true, false))\n\n yFormatter = (div, data, i) => {\n addLegendEntryFmt(div, data.series[0], y => (y > 0 ? intComma(y) : '0') + ' DCR')\n }\n break\n }\n case 'ticket-pool-value': // pool value graph\n d = zip2D(data, data.poolval, atomsToDCR)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Ticket Pool Value'], true,\n 'Ticket Pool Value (DCR)', true, false))\n yFormatter = customYFormatter(y => intComma(y) + ' DCR')\n break\n case 'block-size': // block size graph\n d = zip2D(data, data.size)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Block Size'], false, 'Block Size', true, false))\n break\n case 'blockchain-size': // blockchain size graph\n d = zip2D(data, data.size)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Blockchain Size'], true,\n 'Blockchain Size', false, true))\n break\n case 'tx-count': // tx per block graph\n d = zip2D(data, data.count)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Total Transactions'], false,\n 'Total Transactions', false, false))\n break\n case 'tx-per-block': // tx per block graph\n d = zip2D(data, data.count)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Avg TXs Per Block'], false,\n 'Avg TXs Per Block', false, false))\n break\n case 'mined-blocks': // tx per block graph\n d = zip2D(data, data.count)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mined Blocks'], false,\n 'Mined Blocks', false, false))\n break\n case 'mempool-txs': // tx per block graph\n d = zip2D(data, data.count)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mempool Transactions'], false,\n 'Mempool Transactions', false, false))\n break\n case 'mempool-size': // blockchain size graph\n d = zip2D(data, data.size)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mempool Size'], true,\n 'Mempool Size', false, true))\n break\n case 'address-number': // tx per block graph\n d = zip2D(data, data.count)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Active Addresses'], false,\n 'Active Addresses', false, false))\n break\n case 'pow-difficulty': // difficulty graph\n d = powDiffFunc(data)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Difficulty'], true, 'Difficulty', true, false))\n if (_this.settings.range !== 'before' && _this.settings.range !== 'after') {\n gOptions.plotter = _this.settings.axis === 'height' ? hashrateBlockPlotter : hashrateTimePlotter\n }\n break\n case 'coin-supply': // supply graph\n if (this.settings.bin === 'day') {\n d = zip2D(data, data.supply)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Coins Supply'], false,\n 'Coins Supply', false, false))\n break\n }\n d = circulationFunc(data)\n assign(gOptions, mapDygraphOptions(d.data, [xlabel, 'Coin Supply', 'Inflation Limit', 'Mix Rate'],\n true, 'Coin Supply (' + this.chainType.toUpperCase() + ')', true, false))\n gOptions.y2label = 'Inflation Limit'\n gOptions.y3label = 'Mix Rate'\n gOptions.series = { 'Inflation Limit': { axis: 'y2' }, 'Mix Rate': { axis: 'y3' } }\n this.visibility = [true, true, this.anonymitySetTarget.checked]\n gOptions.visibility = this.visibility\n gOptions.series = {\n 'Inflation Limit': {\n strokePattern: [5, 5],\n color: '#C4CBD2',\n strokeWidth: 1.5\n },\n 'Mix Rate': {\n color: '#2dd8a3'\n }\n }\n gOptions.inflation = d.inflation\n yFormatter = (div, data, i) => {\n addLegendEntryFmt(div, data.series[0], y => intComma(y) + ' ' + globalChainType.toUpperCase())\n let change = 0\n if (i < d.inflation.length) {\n if (selectedType === 'dcr') {\n const supply = data.series[0].y\n if (this.anonymitySetTarget.checked) {\n const mixed = data.series[2].y\n const mixedPercentage = ((mixed / supply) * 100).toFixed(2)\n div.appendChild(legendEntry(`${legendMarker()} Mixed: ${intComma(mixed)} DCR (${mixedPercentage}%)`))\n }\n }\n const predicted = d.inflation[i]\n const unminted = predicted - data.series[0].y\n change = ((unminted / predicted) * 100).toFixed(2)\n div.appendChild(legendEntry(`${legendMarker()} Unminted: ${intComma(unminted)} ` + globalChainType.toUpperCase() + ` (${change}%)`))\n }\n }\n break\n\n case 'fees': // block fee graph\n d = zip2D(data, data.fees, atomsToDCR)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Total Fee'], false, 'Total Fee (' + globalChainType.toUpperCase() + ')', true, false))\n yFormatter = customYFormatter(y => y.toFixed(8) + ' ' + globalChainType.toUpperCase())\n break\n\n case 'duration-btw-blocks': // Duration between blocks graph\n d = zip2D(data, data.duration, 1, 1)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Duration Between Blocks'], false,\n 'Duration Between Blocks (seconds)', false, false))\n break\n\n case 'hashrate': // Total chainwork over time\n d = this.chainType === 'dcr' ? (isHeightBlock ? zipHvY(data.h, data.rate, 1e-3, data.offset) : zip2D(data, data.rate, 1e-3, data.offset)) : zip2D(data, data.rate, 1e-3, data.offset)\n assign(gOptions, mapDygraphOptions(d, [xlabel, 'Network Hashrate'],\n false, 'Network Hashrate (petahash/s)', true, false))\n yFormatter = customYFormatter(y => withBigUnits(y * 1e3, hashrateUnits))\n if (_this.settings.range !== 'before' && _this.settings.range !== 'after') {\n gOptions.plotter = _this.settings.axis === 'height' ? hashrateBlockPlotter : hashrateTimePlotter\n }\n break\n }\n\n const baseURL = `${this.query.url.protocol}//${this.query.url.host}`\n this.rawDataURLTarget.textContent = this.chainType === 'dcr'\n ? `${baseURL}/api/chart/${chartName}?axis=${this.settings.axis}&bin=${this.settings.bin}`\n : `${baseURL}/api/chainchart/${this.chainType}/${chartName}?axis=${this.settings.axis}&bin=${this.settings.bin}`\n\n this.chartsView.plotter_.clear()\n this.chartsView.updateOptions(gOptions, false)\n if (yValueRanges[chartName]) this.supportedYRange = this.chartsView.yAxisRanges()\n this.validateZoom()\n }\n\n updateVSelector (chart) {\n if (!chart) {\n chart = this.chartSelectTarget.value\n }\n const that = this\n let showWrapper = false\n this.vSelectorItemTargets.forEach(el => {\n let show = el.dataset.charts.indexOf(chart) > -1\n if (el.dataset.bin && el.dataset.bin.indexOf(that.selectedBin()) === -1) {\n show = false\n }\n if (show) {\n el.classList.remove('d-hide')\n showWrapper = true\n } else {\n el.classList.add('d-hide')\n }\n })\n if (showWrapper) {\n this.vSelectorTarget.classList.remove('d-hide')\n } else {\n this.vSelectorTarget.classList.add('d-hide')\n }\n this.setVisibilityFromSettings()\n }\n\n async chainTypeChange (e) {\n if (e.target.name === this.chainType) {\n return\n }\n const target = e.srcElement || e.target\n this.chainTypeSelectedTargets.forEach((cTypeTarget) => {\n cTypeTarget.classList.remove('active')\n })\n target.classList.add('active')\n let reinitChartType = false\n reinitChartType = this.chainType === 'dcr' || e.target.name === 'dcr'\n this.chainType = e.target.name\n // reinit\n if (reinitChartType) {\n this.chartSelectTarget.innerHTML = this.chainType === 'dcr' ? this.getDecredChartOptsHtml() : this.getMutilchainChartOptsHtml()\n }\n // determind select chart\n this.settings.chart = this.getSelectedChart()\n this.chartNameTarget.textContent = this.getChartName(this.chartSelectTarget.value)\n this.chartTitleNameTarget.textContent = this.chartNameTarget.textContent\n this.customLimits = null\n this.chartWrapperTarget.classList.add('loading')\n if (isScaleDisabled(this.settings.chart)) {\n this.scaleSelectorTarget.classList.add('d-hide')\n } else {\n this.scaleSelectorTarget.classList.remove('d-hide')\n }\n if (isModeEnabled(this.settings.chart)) {\n this.modeSelectorTarget.classList.remove('d-hide')\n } else {\n this.modeSelectorTarget.classList.add('d-hide')\n }\n if (hasMultipleVisibility(this.settings.chart)) {\n this.vSelectorTarget.classList.remove('d-hide')\n this.updateVSelector(this.settings.chart)\n } else {\n this.vSelectorTarget.classList.add('d-hide')\n }\n if (useRange(this.settings.chart) && this.chainType === 'dcr') {\n this.settings.range = this.selectedRange()\n this.rangeSelectorTarget.classList.remove('d-hide')\n } else {\n this.settings.range = ''\n this.rangeSelectorTarget.classList.add('d-hide')\n }\n if (selectedType !== this.chainType || (selectedType === this.chainType && selectedChart !== this.settings.chart) ||\n this.settings.bin !== this.selectedBin() || this.settings.axis !== this.selectedAxis()) {\n let url = this.chainType === 'dcr' ? '/api/chart/' + this.settings.chart : `/api/chainchart/${this.chainType}/` + this.settings.chart\n if (usesWindowUnits(this.settings.chart) && !usesHybridUnits(this.settings.chart)) {\n this.binSelectorTarget.classList.add('d-hide')\n this.settings.bin = 'window'\n } else {\n this.settings.bin = this.selectedBin()\n if (this.chainType === 'dcr') {\n this.binSelectorTarget.classList.remove('d-hide')\n this.binButtons.forEach(btn => {\n if (btn.name !== 'window') return\n if (usesHybridUnits(this.settings.chart)) {\n btn.classList.remove('d-hide')\n } else {\n btn.classList.add('d-hide')\n if (this.settings.bin === 'window') {\n this.settings.bin = 'day'\n this.setActiveToggleBtn(this.settings.bin, this.binButtons)\n }\n }\n })\n } else {\n this.binSelectorTarget.classList.add('d-hide')\n }\n }\n url += `?bin=${this.settings.bin}`\n if (this.settings.range !== '') {\n url += `&range=${this.settings.range}`\n }\n this.settings.axis = this.selectedAxis()\n if (!this.settings.axis) this.settings.axis = 'time' // Set the default.\n url += `&axis=${this.settings.axis}`\n this.setActiveOptionBtn(this.settings.axis, this.axisOptionTargets)\n const chartResponse = await requestJSON(url)\n selectedType = this.chainType\n selectedChart = this.settings.chart\n this.plotGraph(this.settings.chart, chartResponse)\n } else {\n this.chartWrapperTarget.classList.remove('loading')\n }\n }\n\n getSelectedChart () {\n let hasChart = false\n const chartOpts = this.chainType === 'dcr' ? decredChartOpts : mutilchainChartOpts\n chartOpts.forEach((opt) => {\n if (this.settings.chart === opt) {\n hasChart = true\n }\n })\n if (hasChart) {\n this.chartSelectTarget.value = this.settings.chart\n return this.settings.chart\n }\n return chartOpts[0]\n }\n\n getDecredChartOptsHtml () {\n return '<optgroup label=\"Staking\">' +\n '<option value=\"ticket-price\">Ticket Price</option>' +\n '<option value=\"ticket-pool-size\">Ticket Pool Size</option>' +\n '<option value=\"ticket-pool-value\">Ticket Pool Value</option>' +\n '<option value=\"stake-participation\">Stake Participation</option>' +\n '<option value=\"privacy-participation\">Privacy Participation</option>' +\n '<option value=\"missed-votes\">Missed Votes</option>' +\n '</optgroup>' +\n '<optgroup label=\"Chain\">' +\n '<option value=\"block-size\">Block Size</option>' +\n '<option value=\"blockchain-size\">Blockchain Size</option>' +\n '<option value=\"tx-count\">Transaction Count</option>' +\n '<option value=\"duration-btw-blocks\">Duration Between Blocks</option>' +\n '</optgroup>' +\n '<optgroup label=\"Mining\">' +\n '<option value=\"pow-difficulty\">PoW Difficulty</option>' +\n '<option value=\"chainwork\">Total Work</option>' +\n '<option value=\"hashrate\">Hashrate</option>' +\n '</optgroup>' +\n '<optgroup label=\"Distribution\">' +\n '<option value=\"coin-supply\">Coin Supply</option>' +\n '<option value=\"fees\">Fees</option>' +\n '</optgroup>'\n }\n\n getMutilchainChartOptsHtml () {\n return '<optgroup label=\"Chain\">' +\n '<option value=\"block-size\">Block Size</option>' +\n '<option value=\"blockchain-size\">Blockchain Size</option>' +\n '<option value=\"tx-count\">Transaction Count</option>' +\n '<option value=\"tx-per-block\">TXs Per Blocks</option>' +\n '<option value=\"address-number\">Active Addresses</option>' +\n '</optgroup>' +\n '<optgroup label=\"Mining\">' +\n '<option value=\"pow-difficulty\">Difficulty</option>' +\n '<option value=\"hashrate\">Hashrate</option>' +\n '<option value=\"mined-blocks\">Mined Blocks</option>' +\n '<option value=\"mempool-size\">Mempool Size</option>' +\n '<option value=\"mempool-txs\">Mempool TXs</option>' +\n '</optgroup>' +\n '<optgroup label=\"Distribution\">' +\n '<option value=\"coin-supply\">Coin Supply</option>' +\n '<option value=\"fees\">Fees</option>' +\n '</optgroup>'\n }\n\n async selectChart () {\n const selection = this.settings.chart = this.chartSelectTarget.value\n this.chartNameTarget.textContent = this.getChartName(this.chartSelectTarget.value)\n this.chartTitleNameTarget.textContent = this.chartNameTarget.textContent\n this.customLimits = null\n this.chartWrapperTarget.classList.add('loading')\n if (isScaleDisabled(selection)) {\n this.scaleSelectorTarget.classList.add('d-hide')\n this.vSelectorTarget.classList.remove('d-hide')\n } else {\n this.scaleSelectorTarget.classList.remove('d-hide')\n }\n if (isModeEnabled(selection)) {\n this.modeSelectorTarget.classList.remove('d-hide')\n } else {\n this.modeSelectorTarget.classList.add('d-hide')\n }\n if (hasMultipleVisibility(selection)) {\n this.vSelectorTarget.classList.remove('d-hide')\n this.updateVSelector(selection)\n } else {\n this.vSelectorTarget.classList.add('d-hide')\n }\n if (useRange(selection) && this.chainType === 'dcr') {\n this.settings.range = this.selectedRange()\n this.rangeSelectorTarget.classList.remove('d-hide')\n } else {\n this.settings.range = ''\n this.rangeSelectorTarget.classList.add('d-hide')\n }\n if (selectedChart !== selection || this.settings.bin !== this.selectedBin() ||\n this.settings.axis !== this.selectedAxis() || (this.chainType === 'dcr' && this.settings.range !== this.selectedRange())) {\n let url = this.chainType === 'dcr' ? '/api/chart/' + selection : `/api/chainchart/${this.chainType}/` + selection\n if (usesWindowUnits(selection) && !usesHybridUnits(selection)) {\n this.binSelectorTarget.classList.add('d-hide')\n this.settings.bin = 'window'\n } else {\n this.settings.bin = this.selectedBin()\n if (this.chainType === 'dcr') {\n this.binSelectorTarget.classList.remove('d-hide')\n this.binButtons.forEach(btn => {\n if (btn.name !== 'window') return\n if (usesHybridUnits(selection)) {\n btn.classList.remove('d-hide')\n } else {\n btn.classList.add('d-hide')\n if (this.settings.bin === 'window') {\n this.settings.bin = 'day'\n this.setActiveToggleBtn(this.settings.bin, this.binButtons)\n }\n }\n })\n } else {\n this.binSelectorTarget.classList.add('d-hide')\n }\n }\n url += `?bin=${this.settings.bin}`\n if (this.chainType === 'dcr' && this.settings.range !== '') {\n url += `&range=${this.settings.range}`\n }\n this.settings.axis = this.selectedAxis()\n if (!this.settings.axis) this.settings.axis = 'time' // Set the default.\n url += `&axis=${this.settings.axis}`\n this.setActiveOptionBtn(this.settings.axis, this.axisOptionTargets)\n const chartResponse = await requestJSON(url)\n selectedChart = selection\n selectedType = this.chainType\n this.plotGraph(selection, chartResponse)\n } else {\n this.chartWrapperTarget.classList.remove('loading')\n }\n }\n\n getChartName (chartValue) {\n switch (chartValue) {\n case 'block-size':\n return 'Block Size'\n case 'blockchain-size':\n return 'Blockchain Size'\n case 'tx-count':\n return 'Transaction Count'\n case 'duration-btw-blocks':\n return 'Duration Between Blocks'\n case 'pow-difficulty':\n return 'PoW Difficulty'\n case 'hashrate':\n return 'Hashrate'\n case 'coin-supply':\n return 'Coin Supply'\n case 'fees':\n return 'Fees'\n case 'tx-per-block':\n return 'TXs Per Blocks'\n case 'mined-blocks':\n return 'Mined Blocks'\n case 'mempool-txs':\n return 'Mempool TXs'\n case 'mempool-size':\n return 'Mempool Size'\n case 'address-number':\n return 'Active Addresses'\n default:\n return ''\n }\n }\n\n async validateZoom () {\n await animationFrame()\n this.chartWrapperTarget.classList.add('loading')\n await animationFrame()\n let oldLimits = this.limits || this.chartsView.xAxisExtremes()\n this.limits = this.chartsView.xAxisExtremes()\n const selected = this.selectedZoom()\n if (selected && !(selectedChart === 'privacy-participation' && selected === 'all')) {\n this.lastZoom = Zoom.validate(selected, this.limits,\n this.isTimeAxis() ? avgBlockTime : 1, this.isTimeAxis() ? 1 : avgBlockTime)\n } else {\n // if this is for the privacy-participation chart, then zoom to the beginning of the record\n if (selectedChart === 'privacy-participation') {\n this.limits = oldLimits = this.customLimits\n this.settings.zoom = Zoom.object(this.limits[0], this.limits[1])\n }\n this.lastZoom = Zoom.project(this.settings.zoom, oldLimits, this.limits)\n }\n if (this.lastZoom) {\n this.chartsView.updateOptions({\n dateWindow: [this.lastZoom.start, this.lastZoom.end]\n })\n }\n if (selected !== this.settings.zoom) {\n this._zoomCallback(this.lastZoom.start, this.lastZoom.end)\n }\n await animationFrame()\n this.chartWrapperTarget.classList.remove('loading')\n this.chartsView.updateOptions({\n zoomCallback: this.zoomCallback,\n drawCallback: this.drawCallback\n })\n }\n\n _zoomCallback (start, end) {\n this.lastZoom = Zoom.object(start, end)\n this.settings.zoom = Zoom.encode(this.lastZoom)\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n const ex = this.chartsView.xAxisExtremes()\n const option = Zoom.mapKey(this.settings.zoom, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n this.setActiveToggleBtn(option, this.zoomButtons)\n const axesData = axesToRestoreYRange(this.settings.chart,\n this.supportedYRange, this.chartsView.yAxisRanges())\n if (axesData) this.chartsView.updateOptions({ axes: axesData })\n }\n\n isTimeAxis () {\n return this.selectedAxis() === 'time'\n }\n\n _drawCallback (graph, first) {\n if (first) return\n const [start, end] = this.chartsView.xAxisRange()\n if (start === end) return\n if (this.lastZoom.start === start) return // only handle slide event.\n this._zoomCallback(start, end)\n }\n\n setSelectZoom (e) {\n const btn = e.target || e.srcElement\n let option\n if (btn.nodeName === 'BUTTON') {\n option = btn.name\n } else {\n const ex = this.chartsView.xAxisExtremes()\n option = Zoom.mapKey(e, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n }\n this.setActiveToggleBtn(option, this.zoomButtons)\n if (!e.target) return // Exit if running for the first time\\\n this.validateZoom()\n }\n\n setSelectBin (e) {\n const btn = e.target || e.srcElement\n if (!btn) {\n return\n }\n let option\n if (btn.nodeName === 'BUTTON') {\n option = btn.name\n }\n if (!option) {\n return\n }\n this.setActiveToggleBtn(option, this.binButtons)\n this.updateVSelector()\n selectedChart = null // Force fetch\n this.selectChart()\n }\n\n setSelectScale (e) {\n const btn = e.target || e.srcElement\n if (!btn) {\n return\n }\n let option\n if (btn.nodeName === 'BUTTON') {\n option = btn.name\n }\n if (!option) {\n return\n }\n this.setActiveToggleBtn(option, this.scaleButtons)\n if (this.chartsView) {\n this.chartsView.updateOptions({ logscale: option === 'log' })\n }\n this.settings.scale = option\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n }\n\n setSelectMode (e) {\n const btn = e.target || e.srcElement\n if (!btn) {\n return\n }\n let option\n if (btn.nodeName === 'BUTTON') {\n option = btn.name\n }\n if (!option) {\n return\n }\n this.setActiveToggleBtn(option, this.modeButtons)\n if (this.chartsView) {\n this.chartsView.updateOptions({ stepPlot: option === 'stepped' })\n }\n this.settings.mode = option\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n }\n\n setAxis (e) {\n const target = e.srcElement || e.target\n const option = target ? target.dataset.option : e\n if (!option) return\n this.setActiveOptionBtn(option, this.axisOptionTargets)\n if (!target) return // Exit if running for the first time.\n this.settings.axis = null\n this.selectChart()\n }\n\n setVisibilityFromSettings () {\n switch (this.chartSelectTarget.value) {\n case 'ticket-price':\n if (this.visibility.length !== 2) {\n this.visibility = [true, this.ticketsPurchaseTarget.checked]\n }\n this.ticketsPriceTarget.checked = this.visibility[0]\n this.ticketsPurchaseTarget.checked = this.visibility[1]\n break\n case 'coin-supply':\n if (this.visibility.length !== 3) {\n this.visibility = [true, true, this.anonymitySetTarget.checked]\n }\n this.anonymitySetTarget.checked = this.visibility[2]\n break\n case 'privacy-participation':\n if (this.visibility.length !== 2) {\n this.visibility = [true, this.anonymitySetTarget.checked]\n }\n this.anonymitySetTarget.checked = this.visibility[1]\n break\n default:\n return\n }\n this.settings.visibility = this.visibility.join('-')\n if (!this.isHomepage) {\n this.query.replace(this.settings)\n }\n }\n\n setActiveOptionBtn (opt, optTargets) {\n optTargets.forEach(li => {\n if (li.dataset.option === opt) {\n li.classList.add('active')\n } else {\n li.classList.remove('active')\n }\n })\n }\n\n setActiveToggleBtn (opt, optTargets) {\n optTargets.forEach(button => {\n if (button.name === opt) {\n button.classList.add('active')\n } else {\n button.classList.remove('active')\n }\n })\n }\n\n selectedZoom () { return this.selectedButtons(this.zoomButtons) }\n selectedBin () { return this.selectedButtons(this.binButtons) }\n selectedScale () { return this.selectedButtons(this.scaleButtons) }\n selectedAxis () { return this.selectedOption(this.axisOptionTargets) }\n selectedRange () { return this.selectedOption(this.rangeOptionTargets) }\n\n selectedOption (optTargets) {\n let key = false\n optTargets.forEach((el) => {\n if (el.classList.contains('active')) key = el.dataset.option\n })\n return key\n }\n\n selectedButtons (btnTargets) {\n let key = false\n btnTargets.forEach((btn) => {\n if (btn.classList.contains('active')) key = btn.name\n })\n return key\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\nimport ws from '../services/messagesocket_service'\nimport { keyNav } from '../services/keyboard_navigation_service'\nimport globalEventBus from '../services/event_bus_service'\nimport Mempool from '../helpers/mempool_helper'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst conversionRate = 100000000\n\nfunction makeMempoolBlock (block) {\n let fees = 0\n if (!block.Transactions) return\n for (const tx of block.Transactions) {\n fees += tx.Fees\n }\n\n return `<div class=\"block-rows homepage-blocks-row\">\n ${makeRewardsElement(block.Subsidy, fees, block.Votes.length, '#')}\n ${makeVoteElements(block.Votes)}\n ${makeTicketAndRevocationElements(block.Tickets, block.Revocations, '/mempool')}\n ${makeTransactionElements(block.Transactions, '/mempool')}\n </div>`\n}\n\nfunction makeTransactionElements (transactions, blockHref) {\n let totalDCR = 0\n const transactionElements = []\n if (transactions) {\n for (let i = 0; i < transactions.length; i++) {\n const tx = transactions[i]\n totalDCR += tx.Total\n transactionElements.push(makeTxElement(tx, `block-tx ${i === 0 ? 'left-vs-block-data' : ''} ${i === transactions.length - 1 ? 'right-vs-block-data' : ''}`, 'Transaction', true))\n }\n }\n\n if (transactionElements.length > 50) {\n const total = transactionElements.length\n transactionElements.splice(30)\n transactionElements.push(`<span class=\"block-tx\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} transactions\">\n <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n </span>`)\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-transactions px-1 my-1\" style=\"flex-grow: ${totalDCR}\">\n ${transactionElements.join('\\n')}\n </div>`\n}\n\nfunction makeTxElement (tx, className, type, appendFlexGrow) {\n // const style = [ `opacity: ${(tx.VinCount + tx.VoutCount) / 10}` ];\n const style = []\n if (appendFlexGrow) {\n style.push(`flex-grow: ${Math.round(tx.Total)}`)\n }\n\n return `<span class=\"${className}\" style=\"${style.join('; ')}\" data-homepage-target=\"tooltip\"\n title='{\"object\": \"${type}\", \"total\": \"${tx.Total}\", \"vout\": \"${tx.VoutCount}\", \"vin\": \"${tx.VinCount}\"}'>\n <a class=\"block-element-link\" href=\"/tx/${tx.TxID}\"></a>\n </span>`\n}\n\nfunction makeTicketAndRevocationElements (tickets, revocations, blockHref) {\n let totalDCR = 0\n const ticketElements = []\n const revCount = revocations ? revocations.length : 0\n const ticketCount = tickets ? tickets.length : 0\n if (tickets) {\n for (let i = 0; i < tickets.length; i++) {\n const ticket = tickets[i]\n totalDCR += ticket.Total\n ticketElements.push(makeTxElement(ticket, `block-ticket ${i === 0 ? 'left-vs-block-data' : ''} ${i === tickets.length - 1 && revCount === 0 ? 'right-vs-block-data' : ''}`, 'Ticket'))\n }\n }\n if (ticketElements.length > 50) {\n const total = ticketElements.length\n ticketElements.splice(30)\n ticketElements.push(`<span class=\"block-ticket\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} tickets\">\n <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n </span>`)\n }\n const revocationElements = []\n if (revCount > 0) {\n for (let i = 0; i < revCount; i++) {\n const revocation = revocations[i]\n totalDCR += revocation.Total\n revocationElements.push(makeTxElement(revocation, `block-rev ${ticketCount === 0 && i === 0 ? 'left-vs-block-data' : ''} ${i === revCount - 1 ? 'right-vs-block-data' : ''}`, 'Revocation'))\n }\n }\n\n const ticketsAndRevocationElements = ticketElements.concat(revocationElements)\n\n // append empty squares to tickets+revs\n for (let i = ticketsAndRevocationElements.length; i < 20; i++) {\n ticketsAndRevocationElements.push('<span title=\"Empty ticket slot\"></span>')\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-tickets px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n ${ticketsAndRevocationElements.join('\\n')}\n </div>`\n}\n\nfunction makeVoteElements (votes) {\n let totalDCR = 0\n const voteLen = votes ? votes.length : 0\n const voteElements = []\n if (voteLen > 0) {\n for (let i = 0; i < voteLen - 1; i++) {\n const vote = votes[i]\n totalDCR += vote.Total\n voteElements.push(`<span style=\"background: ${vote.VoteValid ? 'linear-gradient(to right, #2971ff 0%, #528cff 100%)' : 'linear-gradient(to right, #fd714a 0%, #f6896a 100%)'}\" data-homepage-target=\"tooltip\"\n title='{\"object\": \"Vote\", \"voteValid\": \"${vote.VoteValid}\"}' class=\"${i === 0 ? 'left-vs-block-data' : ''} ${i === voteLen - 1 ? 'right-vs-block-data' : ''}\">\n <a class=\"block-element-link\" href=\"/tx/${vote.TxID}\"></a>\n </span>`)\n }\n }\n // append empty squares to votes\n for (let i = voteElements.length; i < 5; i++) {\n voteElements.push('<span title=\"Empty vote slot\"></span>')\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-votes px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n ${voteElements.join('\\n')}\n </div>`\n}\n\nfunction makeRewardsElement (subsidy, fee, voteCount, rewardTxId) {\n if (!subsidy) {\n return `<div class=\"block-rewards px-1 mt-1\">\n <span class=\"pow\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n <span class=\"pos\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n <span class=\"fund\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n <span class=\"fees right-vs-block-data\" title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'></span>\n </div>`\n }\n\n const pow = subsidy.pow / conversionRate\n const pos = subsidy.pos / conversionRate\n const fund = (subsidy.developer || subsidy.dev) / conversionRate\n\n const backgroundColorRelativeToVotes = `style=\"width: ${voteCount * 20}%\"` // 5 blocks = 100% painting\n\n // const totalDCR = Math.round(pow + fund + fee);\n const totalDCR = 1\n return `<div class=\"block-rewards px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n <span class=\"pow\" style=\"flex-grow: ${pow}\" data-homepage-target=\"tooltip\"\n title='{\"object\": \"PoW Reward\", \"total\": \"${pow}\"}'>\n <span class=\"block-element-link\">\n <span class=\"paint left-vs-block-data\" ${backgroundColorRelativeToVotes}></span>\n </span>\n </span>\n <span class=\"pos\" style=\"flex-grow: ${pos}\" data-homepage-target=\"tooltip\"\n title='{\"object\": \"PoS Reward\", \"total\": \"${pos}\"}'>\n <span class=\"block-element-link\">\n <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n </span>\n </span>\n <span class=\"fund\" style=\"flex-grow: ${fund}\" data-homepage-target=\"tooltip\"\n title='{\"object\": \"Project Fund\", \"total\": \"${fund}\"}'>\n <span class=\"block-element-link\">\n <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n </span>\n </span>\n <span class=\"fees right-vs-block-data\" style=\"flex-grow: ${fee}\" data-homepage-target=\"tooltip\"\n title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'>\n <span class=\"block-element-link\"></span>\n </span>\n </div>`\n}\n\nexport default class extends Controller {\n static get targets () {\n return ['difficulty',\n 'bsubsidyTotal', 'bsubsidyPow', 'bsubsidyPos', 'bsubsidyDev',\n 'coinSupply', 'blocksdiff', 'devFund', 'windowIndex', 'posBar',\n 'rewardIdx', 'powBar', 'poolSize', 'poolValue', 'ticketReward',\n 'targetPct', 'poolSizePct', 'hashrate', 'hashrateDelta',\n 'nextExpectedSdiff', 'nextExpectedMin', 'nextExpectedMax', 'mempool',\n 'mpRegTotal', 'mpRegCount', 'mpTicketTotal', 'mpTicketCount', 'mpVoteTotal', 'mpVoteCount',\n 'mpRevTotal', 'mpRevCount', 'voteTally', 'blockVotes', 'blockHeight', 'blockSize',\n 'blockTotal', 'consensusMsg', 'powConverted', 'convertedDev',\n 'convertedSupply', 'convertedDevSub', 'exchangeRate', 'convertedStake',\n 'mixedPct', 'searchKey', 'memBlock', 'tooltip', 'avgBlockTime'\n ]\n }\n\n connect () {\n this.query = new TurboQuery()\n this.ticketsPerBlock = parseInt(this.mpVoteCountTarget.dataset.ticketsPerBlock)\n const mempoolData = this.mempoolTarget.dataset\n ws.send('getmempooltxs', mempoolData.id)\n this.mempool = new Mempool(mempoolData, this.voteTallyTargets)\n ws.registerEvtHandler('newtxs', (evt) => {\n const txs = JSON.parse(evt)\n this.mempool.mergeTxs(txs)\n this.setMempoolFigures()\n keyNav(evt, false, true)\n ws.send('getmempooltrimmed', '')\n })\n ws.registerEvtHandler('mempool', (evt) => {\n const m = JSON.parse(evt)\n this.mempool.replace(m)\n this.setMempoolFigures()\n keyNav(evt, false, true)\n ws.send('getmempooltxs', '')\n ws.send('getmempooltrimmed', '')\n })\n ws.registerEvtHandler('getmempooltxsResp', (evt) => {\n const m = JSON.parse(evt)\n this.mempool.replace(m)\n this.setMempoolFigures()\n keyNav(evt, false, true)\n })\n\n ws.registerEvtHandler('getmempooltrimmedResp', (event) => {\n this.handleMempoolUpdate(event)\n })\n\n this.processBlock = this._processBlock.bind(this)\n globalEventBus.on('BLOCK_RECEIVED', this.processBlock)\n this.setupTooltips()\n const isDev = this.data.get('dev')\n if (isDev && isDev !== '') {\n this.setAvgBlockTime()\n }\n }\n\n async setAvgBlockTime () {\n const url = '/api/block/avg-block-time'\n const resData = await requestJSON(url)\n this.avgBlockTimeTarget.textContent = humanize.timeDuration(resData * 1000)\n }\n\n handleMempoolUpdate (evt) {\n const mempool = JSON.parse(evt)\n mempool.Time = Math.round((new Date()).getTime() / 1000)\n this.memBlockTarget.innerHTML = makeMempoolBlock(mempool)\n this.setupTooltips()\n }\n\n setupTooltips () {\n this.tooltipTargets.forEach((tooltipElement) => {\n try {\n // parse the content\n const data = JSON.parse(tooltipElement.title)\n let newContent\n if (data.object === 'Vote') {\n newContent = `<b>${data.object} (${data.voteValid ? 'Yes' : 'No'})</b>`\n } else {\n newContent = `<b>${data.object}</b><br>${humanize.decimalParts(data.total, false, 8, 2)} DCR`\n }\n\n if (data.vin && data.vout) {\n newContent += `<br>${data.vin} Inputs, ${data.vout} Outputs`\n }\n\n tooltipElement.title = newContent\n } catch (error) {}\n })\n\n import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n const tippy = module.default\n tippy('.block-rows [title]', {\n allowTitleHTML: true,\n animation: 'shift-away',\n arrow: true,\n createPopperInstanceOnInit: true,\n dynamicTitle: true,\n performance: true,\n placement: 'top',\n size: 'small',\n sticky: true,\n theme: 'light'\n })\n })\n }\n\n disconnect () {\n ws.deregisterEvtHandlers('newtxs')\n ws.deregisterEvtHandlers('mempool')\n ws.deregisterEvtHandlers('getmempooltxsResp')\n ws.deregisterEvtHandlers('getmempooltrimmedResp')\n globalEventBus.off('BLOCK_RECEIVED', this.processBlock)\n }\n\n setMempoolFigures () {\n const totals = this.mempool.totals()\n const counts = this.mempool.counts()\n this.mpRegTotalTarget.textContent = humanize.threeSigFigs(totals.regular)\n this.mpRegCountTarget.textContent = counts.regular\n\n this.mpTicketTotalTarget.textContent = humanize.threeSigFigs(totals.ticket)\n this.mpTicketCountTarget.textContent = counts.ticket\n\n this.mpVoteTotalTarget.textContent = humanize.threeSigFigs(totals.vote)\n\n const ct = this.mpVoteCountTarget\n while (ct.firstChild) ct.removeChild(ct.firstChild)\n this.mempool.voteSpans(counts.vote).forEach((span) => { ct.appendChild(span) })\n\n this.mpRevTotalTarget.textContent = humanize.threeSigFigs(totals.rev)\n this.mpRevCountTarget.textContent = counts.rev\n\n this.mempoolTarget.textContent = humanize.threeSigFigs(totals.total)\n this.setVotes()\n }\n\n setVotes () {\n const hash = this.blockVotesTarget.dataset.hash\n const votes = this.mempool.blockVoteTally(hash)\n this.blockVotesTarget.querySelectorAll('div').forEach((div, i) => {\n const span = div.firstElementChild\n if (i < votes.affirm) {\n span.className = 'd-inline-block dcricon-affirm'\n div.dataset.tooltip = 'the stakeholder has voted to accept this block'\n } else if (i < votes.affirm + votes.reject) {\n span.className = 'd-inline-block dcricon-reject'\n div.dataset.tooltip = 'the stakeholder has voted to reject this block'\n } else {\n span.className = 'd-inline-block dcricon-missing'\n div.dataset.tooltip = 'this vote has not been received yet'\n }\n })\n const threshold = this.ticketsPerBlock / 2\n if (votes.affirm > threshold) {\n this.consensusMsgTarget.textContent = 'approved'\n this.consensusMsgTarget.className = 'small text-green'\n } else if (votes.reject > threshold) {\n this.consensusMsgTarget.textContent = 'rejected'\n this.consensusMsgTarget.className = 'small text-danger'\n } else {\n this.consensusMsgTarget.textContent = ''\n }\n }\n\n _processBlock (blockData) {\n const ex = blockData.extra\n this.difficultyTarget.innerHTML = humanize.decimalParts(ex.difficulty, true, 0)\n this.bsubsidyPowTarget.innerHTML = humanize.decimalParts(ex.subsidy.pow / 100000000, false, 8, 2)\n this.bsubsidyPosTarget.innerHTML = humanize.decimalParts((ex.subsidy.pos / 500000000), false, 8, 2) // 5 votes per block (usually)\n this.bsubsidyDevTarget.innerHTML = humanize.decimalParts(ex.subsidy.dev / 100000000, false, 8, 2)\n this.coinSupplyTarget.innerHTML = humanize.decimalParts(ex.coin_supply / 100000000, true, 0)\n this.mixedPctTarget.innerHTML = ex.mixed_percent.toFixed(0)\n this.blocksdiffTarget.innerHTML = humanize.decimalParts(ex.sdiff, false, 8, 2)\n this.nextExpectedSdiffTarget.innerHTML = humanize.decimalParts(ex.next_expected_sdiff, false, 2, 2)\n this.nextExpectedMinTarget.innerHTML = humanize.decimalParts(ex.next_expected_min, false, 2, 2)\n this.nextExpectedMaxTarget.innerHTML = humanize.decimalParts(ex.next_expected_max, false, 2, 2)\n this.windowIndexTarget.textContent = ex.window_idx\n this.posBarTarget.style.width = `${(ex.window_idx / ex.params.window_size) * 100}%`\n this.poolSizeTarget.innerHTML = humanize.decimalParts(ex.pool_info.size, true, 0)\n this.targetPctTarget.textContent = parseFloat(ex.pool_info.percent_target - 100).toFixed(2)\n this.rewardIdxTarget.textContent = ex.reward_idx\n this.powBarTarget.style.width = `${(ex.reward_idx / ex.params.reward_window_size) * 100}%`\n this.poolValueTarget.innerHTML = humanize.decimalParts(ex.pool_info.value, true, 0)\n this.ticketRewardTarget.innerHTML = `${ex.reward.toFixed(2)}%`\n this.poolSizePctTarget.textContent = parseFloat(ex.pool_info.percent).toFixed(2)\n const treasuryTotal = ex.dev_fund + ex.treasury_bal.balance\n this.devFundTarget.innerHTML = humanize.decimalParts(treasuryTotal / 100000000, true, 0)\n if (ex.hash_rate > 0.001 && ex.hash_rate < 1) {\n ex.hash_rate = ex.hash_rate * 1000\n } else if (ex.hash_rate < 0.001) {\n ex.hash_rate = ex.hash_rate * 1000000\n }\n this.hashrateTarget.innerHTML = humanize.decimalParts(ex.hash_rate, false, 3, 2)\n this.hashrateDeltaTarget.innerHTML = humanize.fmtPercentage(ex.hash_rate_change_month)\n this.blockVotesTarget.dataset.hash = blockData.block.hash\n this.setVotes()\n const block = blockData.block\n this.blockHeightTarget.textContent = block.height\n this.blockHeightTarget.href = `/block/${block.hash}`\n this.blockSizeTarget.textContent = humanize.bytes(block.size)\n this.blockTotalTarget.textContent = humanize.threeSigFigs(block.total)\n\n if (ex.exchange_rate) {\n const xcRate = ex.exchange_rate.value\n const btcIndex = ex.exchange_rate.index\n if (this.hasPowConvertedTarget) {\n this.powConvertedTarget.textContent = `${humanize.twoDecimals(ex.subsidy.pow / 1e8 * xcRate)} ${btcIndex}`\n }\n if (this.hasConvertedDevTarget) {\n this.convertedDevTarget.textContent = `${humanize.threeSigFigs(treasuryTotal / 1e8 * xcRate)} ${btcIndex}`\n }\n if (this.hasConvertedSupplyTarget) {\n this.convertedSupplyTarget.textContent = `${humanize.threeSigFigs(ex.coin_supply / 1e8 * xcRate)} ${btcIndex}`\n }\n if (this.hasConvertedDevSubTarget) {\n this.convertedDevSubTarget.textContent = `${humanize.twoDecimals(ex.subsidy.dev / 1e8 * xcRate)} ${btcIndex}`\n }\n if (this.hasExchangeRateTarget) {\n this.exchangeRateTarget.textContent = humanize.twoDecimals(xcRate)\n }\n if (this.hasConvertedStakeTarget) {\n this.convertedStakeTarget.textContent = `${humanize.twoDecimals(ex.sdiff * xcRate)} ${btcIndex}`\n }\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport { getDefault } from '../helpers/module_helper'\nimport { requestJSON } from '../helpers/http'\nimport humanize from '../helpers/humanize_helper'\nimport { darkEnabled } from '../services/theme_service'\nimport globalEventBus from '../services/event_bus_service'\n\nlet Dygraph\nconst SELL = 1\nconst BUY = 2\nconst candlestick = 'candlestick'\nconst orders = 'orders'\nconst depth = 'depth'\nconst history = 'history'\nconst volume = 'volume'\nconst aggregatedKey = 'aggregated'\nconst anHour = '1h'\nconst minuteMap = {\n '5m': 5,\n '30m': 30,\n '1h': 60,\n '1d': 1440,\n '1mo': 43200\n}\nconst PIPI = 2 * Math.PI\nconst prettyDurations = {\n '5m': '5 min',\n '30m': '30 min',\n '1h': 'hour',\n '1d': 'day',\n '1mo': 'month'\n}\nconst exchangeLinks = {\n binance: 'https://www.binance.com/en/trade/DCR_USDT',\n btc_binance: 'https://www.binance.com/en/trade/DCR_BTC',\n bittrex: 'https://bittrex.com/Market/Index?MarketName=BTC-DCR',\n poloniex: 'https://poloniex.com/exchange#btc_dcr',\n dragonex: 'https://dragonex.io/en-us/trade/index/dcr_btc',\n huobi: 'https://www.hbg.com/en-us/exchange/?s=dcr_btc',\n dcrdex: 'https://dex.decred.org',\n coinex: 'https://www.coinex.com/en/exchange/DCR-USDT',\n btc_coinex: 'https://www.coinex.com/en/exchange/dcr-btc'\n}\n\nconst btcPairUses = ['btc_binance', 'btc_coinex', 'dcrdex', 'aggregated']\n\nfunction useBTCPair (exchange) {\n return btcPairUses.indexOf(exchange) > -1\n}\n\nfunction useUSDPair (exchange) {\n return btcPairUses.indexOf(exchange) < 0 || exchange === 'aggregated'\n}\n\nconst printNames = {\n dcrdex: 'Dcrdex',\n btc_coinex: 'Coinex'\n // default is capitalize\n}\n\nfunction printName (token) {\n const name = printNames[token]\n if (name) return name\n return humanize.capitalize(token)\n}\n\nconst defaultZoomPct = 20\nlet hidden, visibilityChange\nif (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support\n hidden = 'hidden'\n visibilityChange = 'visibilitychange'\n} else if (typeof document.msHidden !== 'undefined') {\n hidden = 'msHidden'\n visibilityChange = 'msvisibilitychange'\n} else if (typeof document.webkitHidden !== 'undefined') {\n hidden = 'webkitHidden'\n visibilityChange = 'webkitvisibilitychange'\n}\nlet focused = true\nlet aggStacking = true\nlet refreshAvailable = false\nlet availableCandlesticks, availableDepths\n\nfunction screenIsBig () {\n return window.innerWidth >= 992\n}\n\nfunction validDepthExchange (token) {\n return availableDepths.indexOf(token) > -1\n}\n\nfunction usesOrderbook (chart) {\n return chart === depth || chart === orders\n}\n\nfunction usesCandlesticks (chart) {\n return chart === candlestick || chart === volume || chart === history\n}\n\nlet requestCounter = 0\nlet responseCache = {}\n\nfunction hasCache (k) {\n if (!responseCache[k]) return false\n const expiration = new Date(responseCache[k].expiration)\n return expiration > new Date()\n}\n\nfunction clearCache (k) {\n if (!responseCache[k]) return\n delete responseCache[k]\n}\n\nconst lightStroke = '#333'\nconst darkStroke = '#ddd'\nlet chartStroke = lightStroke\nlet conversionFactor = 1\nlet btcPrice, fiatCode\nconst gridColor = '#7774'\nconst binList = ['5m', '30m', '1h', '4h', '1d', 'week', '1mo']\nlet settings = {}\nconst xcColors = [chartStroke, '#ed6d47', '#41be53', '#3087d8', '#dece12']\n\nlet colorNumerator = 0\nlet colorDenominator = 1\nconst hslS = '100%'\nconst hslL = '50%'\nconst hslOffset = 225 // 0 <= x < 360\n\n// These are the first four hues generated by getHue(\nconst exchangeHues = {\n dcrdex: 'hsl(225,100%,50%)',\n binance: 'hsl(45,100%,50%)',\n bittrex: 'hsl(315,100%,50%)',\n poloniex: 'hsl(135,100%,50%)'\n}\n\nconst hsl = (h) => `hsl(${(h + hslOffset) % 360},${hslS},${hslL})`\n// Generates colors on the hue sequence 0, 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16, ...\nfunction generateHue () {\n if (colorNumerator >= colorDenominator) {\n colorNumerator = 1 // reset the numerator\n colorDenominator *= 2 // double the denominator\n if (colorDenominator >= 512) { // Will generate 256 different hues\n colorNumerator = 0\n colorDenominator = 1\n }\n return generateHue()\n }\n const hue = colorNumerator / colorDenominator * 360\n colorNumerator += 2\n return hsl(hue)\n}\n\nfunction getHue (token) {\n if (exchangeHues[token]) return exchangeHues[token]\n exchangeHues[token] = generateHue()\n return exchangeHues[token]\n}\n\n// Generate the constant hues so dynamically assigned hues won't use them.\nObject.keys(exchangeHues).forEach(generateHue)\n\nconst commonChartOpts = {\n gridLineColor: gridColor,\n axisLineColor: 'transparent',\n underlayCallback: (ctx, area, dygraph) => {\n ctx.lineWidth = 1\n ctx.strokeStyle = gridColor\n ctx.strokeRect(area.x, area.y, area.w, area.h)\n },\n // these should be set to avoid Dygraph strangeness\n labels: [' ', ' '], // To avoid an annoying console message,\n xlabel: ' ',\n ylabel: ' ',\n pointSize: 6,\n showRangeSelector: true,\n rangeSelectorPlotFillColor: '#C4CBD2',\n rangeSelectorAlpha: 0.4,\n rangeSelectorHeight: 40\n}\n\nconst chartResetOpts = {\n fillGraph: false,\n strokeWidth: 2,\n drawPoints: false,\n logscale: false,\n xRangePad: 0,\n yRangePad: 0,\n stackedGraph: false,\n zoomCallback: null\n}\n\nfunction convertedThreeSigFigs (x) {\n return humanize.threeSigFigs(x * conversionFactor)\n}\n\nfunction convertedEightDecimals (x) {\n return (x * conversionFactor).toFixed(8)\n}\n\nfunction orderbookStats (bids, asks) {\n const bidEdge = bids[0].price\n const askEdge = asks[0].price\n const midGap = (bidEdge + askEdge) / 2\n return {\n bidEdge: bidEdge,\n askEdge: askEdge,\n gap: askEdge - bidEdge,\n midGap: midGap,\n lowCut: 0.1 * midGap, // Low cutoff of 10% market.\n highCut: midGap * 2 // High cutoff + 100%\n }\n}\n\nconst dummyOrderbook = {\n pts: [[0, 0, 0]],\n outliers: {\n asks: [],\n bids: []\n }\n}\n\nfunction sizedArray (len, v) {\n const a = []\n for (let i = 0; i < len; i++) {\n a.push(v)\n }\n return a\n}\n\nfunction rangedPts (pts, cutoff) {\n const l = []\n const outliers = []\n pts.forEach(pt => {\n if (cutoff(pt)) {\n outliers.push(pt)\n return\n }\n l.push(pt)\n })\n return { pts: l, outliers: outliers }\n}\n\nfunction translateDepthSide (pts, idx, cutoff) {\n const sorted = rangedPts(pts, cutoff)\n let accumulator = 0\n const translated = sorted.pts.map(pt => {\n accumulator += pt.quantity\n pt = [pt.price, null, null]\n pt[idx] = accumulator\n return pt\n })\n return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction translateDepthPoint (pt, offset, accumulator) {\n const l = sizedArray(pt.volumes.length + 1, null)\n l[0] = pt.price\n pt.volumes.forEach((vol, i) => {\n accumulator[i] += vol\n l[offset + i + 1] = accumulator[i]\n })\n return l\n}\n\nfunction needsDummyPoint (pt, offset, accumulator) {\n const xcCount = pt.volumes.length\n for (let i = 0; i < xcCount; i++) {\n if (pt.volumes[i] && accumulator[i] === 0) return { price: pt.price + offset, volumes: sizedArray(xcCount, 0) }\n }\n return false\n}\n\nfunction translateAggregatedDepthSide (pts, idx, cutoff) {\n const sorted = rangedPts(pts, cutoff)\n const xcCount = pts[0].volumes.length\n const offset = idx === SELL ? 0 : xcCount\n const zeroWidth = idx === SELL ? -1e-8 : 1e-8\n const xcAccumulator = sizedArray(xcCount, 0)\n const l = []\n sorted.pts.forEach(pt => {\n const zeros = needsDummyPoint(pt, zeroWidth, xcAccumulator)\n if (zeros) {\n l.push(translateDepthPoint(zeros, offset, xcAccumulator))\n }\n l.push(translateDepthPoint(pt, offset, xcAccumulator))\n })\n return { pts: l, outliers: sorted.outliers }\n}\n\nfunction translateOrderbookSide (pts, idx, cutoff) {\n const sorted = rangedPts(pts, cutoff)\n const translated = sorted.pts.map(pt => {\n const l = [pt.price, null, null]\n l[idx] = pt.quantity\n return l\n })\n return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction sumPt (pt) {\n return pt.volumes.reduce((a, v) => { return a + v }, 0)\n}\n\nfunction translateAggregatedOrderbookSide (pts, idx, cutoff) {\n const sorted = rangedPts(pts, cutoff)\n const translated = sorted.pts.map(pt => {\n const l = [pt.price, null, null]\n l[idx] = sumPt(pt)\n return l\n })\n return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction processOrderbook (response, translator) {\n const bids = response.data.bids\n const asks = response.data.asks\n\n if (!response.tokens) {\n // Add the dummy points to make the chart line connect to the baseline and\n // because otherwise Dygraph has a bug that adds an offset to the asks side.\n bids.splice(0, 0, { price: bids[0].price + 1e-8, quantity: 0 })\n asks.splice(0, 0, { price: asks[0].price - 1e-8, quantity: 0 })\n }\n if (!bids || !asks) {\n console.warn('no bid/ask data in API response')\n return dummyOrderbook\n }\n if (!bids.length || !asks.length) {\n console.warn('empty bid/ask data in API response')\n return dummyOrderbook\n }\n const stats = orderbookStats(bids, asks)\n const buys = translator(bids, BUY, pt => pt.price < stats.lowCut)\n buys.pts.reverse()\n const sells = translator(asks, SELL, pt => pt.price > stats.highCut)\n\n // Find points in overlapping region with duplicate rates, to deal with a\n // Dygraphs bug.\n let dupes\n if (response.tokens) dupes = findAggregateDupes(buys.pts, sells.pts)\n\n return {\n pts: buys.pts.concat(sells.pts),\n outliers: buys.outliers.concat(sells.outliers),\n stats: stats,\n dupes: dupes\n }\n}\n\nfunction candlestickPlotter (e) {\n if (e.seriesIndex !== 0) return\n\n const area = e.plotArea\n const ctx = e.drawingContext\n ctx.strokeStyle = chartStroke\n ctx.lineWidth = 1\n const sets = e.allSeriesPoints\n if (sets.length < 2) {\n // do nothing\n return\n }\n\n const barWidth = area.w * Math.abs(sets[0][1].x - sets[0][0].x) * 0.8\n const [opens, closes, highs, lows] = sets\n let open, close, high, low\n for (let i = 0; i < sets[0].length; i++) {\n ctx.strokeStyle = '#777'\n open = opens[i]\n close = closes[i]\n high = highs[i]\n low = lows[i]\n const centerX = area.x + open.x * area.w\n const topY = area.h * high.y + area.y\n const bottomY = area.h * low.y + area.y\n ctx.beginPath()\n ctx.moveTo(centerX, topY)\n ctx.lineTo(centerX, bottomY)\n ctx.stroke()\n ctx.strokeStyle = 'black'\n let top\n if (open.yval > close.yval) {\n ctx.fillStyle = '#f93f39cc'\n top = area.h * open.y + area.y\n } else {\n ctx.fillStyle = '#1acc84cc'\n top = area.h * close.y + area.y\n }\n const h = area.h * Math.abs(open.y - close.y)\n const left = centerX - barWidth / 2\n ctx.fillRect(left, top, barWidth, h)\n ctx.strokeRect(left, top, barWidth, h)\n }\n}\n\nfunction drawOrderPt (ctx, pt) {\n return drawPt(ctx, pt, orderPtSize, true)\n}\n\nfunction drawPt (ctx, pt, size, bordered) {\n ctx.beginPath()\n ctx.arc(pt.x, pt.y, size, 0, PIPI)\n ctx.fill()\n if (bordered) ctx.stroke()\n}\n\nfunction drawLine (ctx, start, end) {\n ctx.beginPath()\n ctx.moveTo(start.x, start.y)\n ctx.lineTo(end.x, end.y)\n ctx.stroke()\n}\n\nfunction makePt (x, y) { return { x, y } }\n\nfunction canvasXY (area, pt) {\n return {\n x: area.x + pt.x * area.w,\n y: area.y + pt.y * area.h\n }\n}\n\nlet orderPtSize = 7\nif (!screenIsBig()) orderPtSize = 4\n\nfunction orderPlotter (e) {\n if (e.seriesIndex !== 0) return\n\n const area = e.plotArea\n const ctx = e.drawingContext\n\n // let buyColor, sellColor\n const [buyColor, sellColor] = e.dygraph.getColors()\n\n const [buys, sells] = e.allSeriesPoints\n ctx.lineWidth = 1\n ctx.strokeStyle = darkEnabled() ? 'black' : 'white'\n for (let i = 0; i < buys.length; i++) {\n const buy = buys[i]\n const sell = sells[i]\n if (buy) {\n ctx.fillStyle = buyColor\n drawOrderPt(ctx, canvasXY(area, buy))\n }\n if (sell) {\n ctx.fillStyle = sellColor\n drawOrderPt(ctx, canvasXY(area, sell))\n }\n }\n}\n\nconst greekCapDelta = String.fromCharCode(916)\n\nfunction depthLegendPlotter (e) {\n const tokens = e.dygraph.getOption('tokens')\n const stats = e.dygraph.getOption('stats')\n\n const area = e.plotArea\n const ctx = e.drawingContext\n\n const dark = darkEnabled()\n const big = screenIsBig()\n const mg = e.dygraph.toDomCoords(stats.midGap, 0)\n const midGap = makePt(mg[0], mg[1])\n const fontSize = big ? 15 : 13\n ctx.textAlign = 'left'\n ctx.textBaseline = 'top'\n ctx.font = `${fontSize}px arial`\n ctx.lineWidth = 1\n ctx.strokeStyle = chartStroke\n const boxColor = dark ? '#2228' : '#fff8'\n\n const midGapPrice = humanize.threeSigFigs(stats.midGap)\n const deltaPctTxt = `${greekCapDelta} : ${humanize.threeSigFigs(stats.gap / stats.midGap * 100)}%`\n const fiatGapTxt = `${humanize.threeSigFigs(stats.gap * btcPrice)} ${fiatCode}`\n const btcGapTxt = `${humanize.threeSigFigs(stats.gap)} BTC`\n let boxW = 0\n const txts = [fiatGapTxt, btcGapTxt, deltaPctTxt, midGapPrice]\n txts.forEach(txt => {\n const w = ctx.measureText(txt).width\n if (w > boxW) boxW = w\n })\n let rowHeight = fontSize * 1.5\n const rowPad = big ? (rowHeight - fontSize) / 2 : (rowHeight - fontSize) / 3\n const boxPad = big ? rowHeight / 3 : rowHeight / 5\n let x\n let y = big ? fontSize * 2 : fontSize\n\n // If it's an aggregated chart, start with a color legend\n if (tokens) {\n // If this is an aggregated chart, draw the color legend first\n const ptSize = fontSize / 3\n let legW = 0\n tokens.forEach(token => {\n const w = ctx.measureText(token).width + rowHeight// leave space for dot\n if (w > legW) legW = w\n })\n x = midGap.x - legW / 2\n const boxH = rowHeight * tokens.length\n ctx.fillStyle = boxColor\n const rect = makePt(x - boxPad, y - boxPad)\n const dims = makePt(legW + boxPad * 4, boxH + boxPad * 2)\n ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n tokens.forEach(token => {\n ctx.fillStyle = getHue(token)\n drawPt(ctx, makePt(x + rowHeight / 2, y + rowHeight / 2 - 1), ptSize)\n ctx.fillStyle = chartStroke\n ctx.fillText(token, x + rowPad + rowHeight, y + rowPad)\n y += rowHeight\n })\n y += boxPad * 3\n x = midGap.x - boxW / 2\n } else {\n y += area.h / 4\n x = midGap.x - boxW / 2 - 25\n }\n // Label the gap size.\n rowHeight -= 2 // just looks better\n ctx.fillStyle = boxColor\n const rect = makePt(x - boxPad, y - boxPad)\n const dims = makePt(boxW + boxPad * 3, rowHeight * 4 + boxPad * 2)\n ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n ctx.fillStyle = chartStroke\n const centerX = x + (boxW / 2)\n const write = s => {\n const cornerX = centerX - (ctx.measureText(s).width / 2)\n ctx.fillText(s, cornerX + rowPad, y + rowPad)\n y += rowHeight\n }\n\n ctx.save()\n ctx.font = `bold ${fontSize}px arial`\n write(midGapPrice)\n ctx.restore()\n write(deltaPctTxt)\n write(fiatGapTxt)\n write(btcGapTxt)\n\n // Draw a line from the box to the gap\n drawLine(ctx,\n makePt(x + boxW / 2, y + boxPad * 2 + boxPad),\n makePt(midGap.x, midGap.y - boxPad))\n}\n\nfunction depthPlotter (e) {\n Dygraph.Plotters.fillPlotter(e)\n const tokens = e.dygraph.getOption('tokens')\n if (tokens && e.dygraph.getOption('stackedGraph')) {\n if (e.seriesIndex === 0 || e.seriesIndex === tokens.length) {\n e.color = chartStroke\n } else {\n e.color = 'transparent'\n }\n fixAggregateStacking(e)\n }\n\n Dygraph.Plotters.linePlotter(e)\n\n // Callout box with color legend\n if (e.seriesIndex === e.allSeriesPoints.length - 1) depthLegendPlotter(e)\n}\n\nlet stickZoom, orderZoom\nlet samePair\nfunction calcStickWindow (start, end, bin) {\n const halfBin = minuteMap[bin] / 2\n start = new Date(start.getTime())\n end = new Date(end.getTime())\n return [\n start.setMinutes(start.getMinutes() - halfBin),\n end.setMinutes(end.getMinutes() + halfBin)\n ]\n}\n\nexport default class extends Controller {\n static get targets () {\n return ['chartSelect', 'exchanges', 'bin', 'chart', 'legend', 'conversion',\n 'xcName', 'xcLogo', 'actions', 'sticksOnly', 'depthOnly', 'chartLoader',\n 'xcRow', 'xcIndex', 'price', 'age', 'ageSpan', 'link', 'aggOption',\n 'aggStack', 'zoom', 'pairSelect', 'exchangeBtnArea', 'fiatLabel']\n }\n\n async connect () {\n this.isHomepage = !window.location.href.includes('/market')\n this.query = new TurboQuery()\n settings = TurboQuery.nullTemplate(['chart', 'xc', 'bin', 'xcs', 'pair'])\n this.exchangesButtons = this.exchangesTarget.querySelectorAll('button')\n this.dcrBtcPrice = this.data.get('dcrbtcprice')\n this.dcrBtcVolume = this.data.get('dcrbtcvolume')\n this.dcrUsdtPrice = this.data.get('price')\n this.dcrUsdtVolume = this.data.get('volume')\n const _this = this\n if (!this.isHomepage) {\n this.query.update(settings)\n } else {\n settings.chart = 'history'\n let hasBinance = false\n this.exchangesButtons.forEach(button => {\n if (button.name === 'binance') {\n hasBinance = true\n settings.xc = button.name\n settings.xcs = button.name\n settings.bin = '1mo'\n }\n if (!hasBinance) {\n const defaultOption = _this.exchangesButtons[0]\n settings.xc = defaultOption.name\n settings.xcs = defaultOption.name\n settings.bin = '1d'\n }\n })\n }\n this.processors = {\n orders: this.processOrders,\n candlestick: this.processCandlesticks,\n history: this.processHistory,\n xchistory: this.processXcsHistory,\n depth: this.processDepth.bind(this),\n volume: this.processVolume,\n xcvolume: this.processXcsVolume\n }\n commonChartOpts.labelsDiv = this.legendTarget\n this.converted = false\n btcPrice = parseFloat(this.conversionTarget.dataset.factor)\n fiatCode = this.conversionTarget.dataset.code\n this.binButtons = this.binTarget.querySelectorAll('button')\n this.lastUrl = null\n this.zoomButtons = this.zoomTarget.querySelectorAll('button')\n this.zoomCallback = this._zoomCallback.bind(this)\n availableCandlesticks = {}\n availableDepths = []\n this.exchangeOptions = []\n\n for (let i = 0; i < this.exchangesButtons.length; i++) {\n const option = this.exchangesButtons[i]\n this.exchangeOptions.push(option)\n if (option.dataset.sticks) {\n availableCandlesticks[option.name] = option.dataset.bins.split(';')\n }\n if (option.dataset.depth) availableDepths.push(option.name)\n }\n availableDepths.push('btc_aggregated')\n this.chartOptions = []\n const opts = this.chartSelectTarget.options\n for (let i = 0; i < opts.length; i++) {\n this.chartOptions.push(opts[i])\n }\n\n if (settings.chart == null) {\n settings.chart = depth\n }\n if (settings.pair == null) {\n settings.pair = 'usdt'\n }\n this.pairSelectTarget.value = settings.pair\n if (settings.xc == null) {\n settings.xc = usesOrderbook(settings.chart) ? aggregatedKey : 'binance'\n }\n if (settings.stack) {\n settings.stack = parseInt(settings.stack)\n if (settings.stack === 0) aggStacking = false\n }\n if (settings.bin == null) {\n settings.bin = anHour\n }\n if (settings.pair === 'btc') {\n this.setAggRowData(true)\n }\n // if chart is history, set to xcs\n if ((settings.chart === 'history' || settings.chart === 'volume') && (!settings.xcs || settings.xcs === null)) {\n settings.xcs = settings.xc\n }\n this.handlerExchangesDisplay()\n this.setButtons()\n this.setExchangeName()\n this.resize = this._resize.bind(this)\n window.addEventListener('resize', this.resize)\n this.tabVis = this._tabVis.bind(this)\n document.addEventListener(visibilityChange, this.tabVis)\n this.processNightMode = this._processNightMode.bind(this)\n globalEventBus.on('NIGHT_MODE', this.processNightMode)\n this.processXcUpdate = this._processXcUpdate.bind(this)\n globalEventBus.on('EXCHANGE_UPDATE', this.processXcUpdate)\n if (darkEnabled()) chartStroke = darkStroke\n this.setNameDisplay()\n this.fetchInitialData()\n }\n\n handlerRadiusForBtnGroup (btnGroup) {\n let firstSetted = false; let lastSetted = false\n for (let i = 0; i < btnGroup.length; i++) {\n const btn = btnGroup[i]\n if (!firstSetted && !btn.classList.contains('d-hide') && !btn.classList.contains('d-none')) {\n btn.classList.add('first-toggle-btn')\n firstSetted = true\n } else {\n btn.classList.remove('first-toggle-btn')\n }\n const lastBtn = btnGroup[btnGroup.length - i - 1]\n if (!lastSetted && !lastBtn.classList.contains('d-hide') && !lastBtn.classList.contains('d-none')) {\n lastBtn.classList.add('last-toggle-btn')\n lastSetted = true\n } else {\n lastBtn.classList.remove('last-toggle-btn')\n }\n }\n }\n\n setAggRowData (isBtcPair) {\n const aggRow = this.getExchangeRow(aggregatedKey)\n aggRow.price.textContent = humanize.threeSigFigs(isBtcPair ? this.dcrBtcPrice : this.dcrUsdtPrice)\n aggRow.volume.textContent = humanize.threeSigFigs(isBtcPair ? this.dcrBtcVolume : this.dcrUsdtVolume)\n }\n\n disconnect () {\n responseCache = {}\n window.removeEventListener('resize', this.resize)\n document.removeEventListener(visibilityChange, this.tabVis)\n globalEventBus.off('NIGHT_MODE', this.processNightMode)\n globalEventBus.off('EXCHANGE_UPDATE', this.processXcUpdate)\n }\n\n _resize () {\n if (this.graph) {\n orderPtSize = screenIsBig() ? 7 : 4\n this.graph.resize()\n }\n this.setNameDisplay()\n }\n\n setNameDisplay () {\n if (screenIsBig()) {\n this.xcNameTarget.classList.remove('d-hide')\n } else {\n this.xcNameTarget.classList.add('d-hide')\n }\n }\n\n _tabVis () {\n focused = !document[hidden]\n if (focused && refreshAvailable) this.refreshChart()\n }\n\n async fetchInitialData () {\n Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n const dummyGraph = new Dygraph(document.createElement('div'), [[0, 1]], { labels: ['', ''] })\n\n // A little hack to start with the default interaction model. Updating the\n // interactionModel with updateOptions later does not appear to work.\n const model = dummyGraph.getOption('interactionModel')\n model.mousedown = (event, g, context) => {\n // End panning even if the mouseup event is not on the chart.\n const mouseup = () => {\n context.isPanning = false\n document.removeEventListener('mouseup', mouseup)\n }\n document.addEventListener('mouseup', mouseup)\n context.initializeMouseDown(event, g, context)\n Dygraph.startPan(event, g, context)\n }\n model.mouseup = (event, g, context) => {\n if (!context.isPanning) return\n Dygraph.endPan(event, g, context)\n context.isPanning = false // I think Dygraph is supposed to set this, but they don't.\n const zoomCallback = g.getOption('zoomCallback')\n if (zoomCallback) {\n const range = g.xAxisRange()\n zoomCallback(range[0], range[1], g.yAxisRanges())\n }\n }\n model.mousemove = (event, g, context) => {\n if (!context.isPanning) return\n Dygraph.movePan(event, g, context)\n }\n commonChartOpts.interactionModel = model\n\n this.graph = new Dygraph(this.chartTarget, [[0, 0], [0, 1]], commonChartOpts)\n this.fetchChart()\n }\n\n async fetchChart (isRefresh) {\n let url = null\n requestCounter++\n const thisRequest = requestCounter\n let bin = settings.bin\n let xc = settings.xc\n const _this = this\n if (xc === 'aggregated' && settings.pair === 'btc') {\n xc = 'btc_' + xc\n }\n const chart = settings.chart\n const oldZoom = this.graph.xAxisRange()\n if (usesCandlesticks(chart)) {\n if (settings.chart !== 'history' && settings.chart !== 'volume') {\n if (!(xc in availableCandlesticks)) {\n console.warn('invalid candlestick exchange:', xc)\n return\n }\n if (availableCandlesticks[xc].indexOf(bin) === -1) {\n console.warn('invalid bin:', bin)\n bin = _this.setLastBin(xc)\n }\n }\n url = `/api/chart/market/${xc}/candlestick/${bin}`\n } else if (usesOrderbook(chart)) {\n if (!validDepthExchange(xc)) {\n console.warn('invalid depth exchange:', xc)\n return\n }\n url = `/api/chart/market/${xc}/depth`\n }\n if (!url) {\n console.warn('invalid chart:', chart)\n return\n }\n\n this.chartLoaderTarget.classList.add('loading')\n let response\n const xcResponseMap = new Map()\n if (settings.chart === 'history' || settings.chart === 'volume') {\n const xcs = settings.xcs && settings.xcs !== null ? settings.xcs : settings.xc\n const xcList = xcs.split(',')\n if (xcList.length > 0) {\n for (let i = 0; i < xcList.length; i++) {\n if (xcList[i].trim() === '') {\n continue\n }\n const itemXc = xcList[i].trim()\n if (!(itemXc in availableCandlesticks)) {\n console.warn('invalid candlestick exchange: ', xc)\n continue\n }\n if (availableCandlesticks[itemXc].indexOf(bin) === -1) {\n console.warn('invalid bin:', bin)\n bin = _this.setLastBin(itemXc)\n }\n const xcUrl = `/api/chart/market/${xcList[i]}/candlestick/${bin}`\n let xcResponse\n if (hasCache(xcUrl)) {\n xcResponse = responseCache[xcUrl]\n } else {\n // response = await axios.get(url)\n xcResponse = await requestJSON(xcUrl)\n responseCache[xcUrl] = xcResponse\n }\n xcResponseMap.set(xcList[i], xcResponse)\n }\n if (thisRequest !== requestCounter) {\n // new request was issued while waiting.\n this.chartLoaderTarget.classList.remove('loading')\n return\n }\n }\n } else {\n if (hasCache(url)) {\n response = responseCache[url]\n } else {\n // response = await axios.get(url)\n response = await requestJSON(url)\n responseCache[url] = response\n if (thisRequest !== requestCounter) {\n // new request was issued while waiting.\n this.chartLoaderTarget.classList.remove('loading')\n return\n }\n }\n }\n // Fiat conversion only available for order books for now.\n if (usesOrderbook(chart)) {\n this.ageSpanTarget.dataset.age = response.data.time\n this.ageSpanTarget.textContent = humanize.timeSince(response.data.time)\n this.ageTarget.classList.remove('d-hide')\n } else {\n this.ageTarget.classList.add('d-hide')\n }\n this.graph.updateOptions(chartResetOpts, true)\n if (settings.chart === 'history') {\n this.graph.updateOptions(this.processors.xchistory(xcResponseMap))\n } else if (settings.chart === 'volume') {\n this.graph.updateOptions(this.processors.xcvolume(xcResponseMap))\n } else {\n this.graph.updateOptions(this.processors[chart](response))\n }\n if (!this.isHomepage) {\n this.query.replace(settings)\n }\n if (isRefresh) this.graph.updateOptions({ dateWindow: oldZoom })\n else this.resetZoom()\n this.chartLoaderTarget.classList.remove('loading')\n this.lastUrl = url\n refreshAvailable = false\n }\n\n setLastBin (xc) {\n const availBins = usesOrderbook(settings.chart) ? availableDepths[xc] : availableCandlesticks[xc]\n for (let i = this.binButtons.length - 1; i >= 0; i--) {\n const button = this.binButtons[i]\n if (!button.classList.contains('d-hide') && !button.classList.contains('d-none') && availBins.indexOf(button.name)) {\n settings.bin = button.name\n this.setBinSelection()\n return button.name\n }\n }\n return ''\n }\n\n processCandlesticks (response) {\n const halfDuration = minuteMap[settings.bin] / 2\n const data = response.sticks.map(stick => {\n const t = new Date(stick.start)\n t.setMinutes(t.getMinutes() + halfDuration)\n return [t, stick.open, stick.close, stick.high, stick.low]\n })\n if (data.length === 0) return\n // limit to 50 points to start. Too many candlesticks = bad.\n let start = data[0][0]\n if (data.length > 50) {\n start = data[data.length - 50][0]\n }\n stickZoom = calcStickWindow(start, data[data.length - 1][0], settings.bin)\n return {\n file: data,\n labels: ['time', 'open', 'close', 'high', 'low'],\n xlabel: 'Time',\n ylabel: 'Price (USD)',\n plotter: candlestickPlotter,\n axes: {\n x: {\n axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n }\n }\n }\n\n processXcsHistory (responseMap) {\n const labels = ['time']\n const colors = []\n const timeArray = []\n const timeDataMap = new Map()\n xcColors[0] = chartStroke\n let index = 0\n for (const [key, value] of responseMap) {\n labels.push(key.charAt(0).toUpperCase() + key.slice(1))\n colors.push(xcColors[index])\n value.sticks.map(stick => {\n const time = new Date(stick.start)\n if (key === 'huobi' && settings.bin !== '1h') {\n time.setTime(time.getTime() + (8 * 60 * 60 * 1000))\n }\n if (settings.bin === '1mo') {\n time.setHours(0, 0, 0, 0)\n time.setDate(15)\n } else if (settings.bin === '1d') {\n time.setHours(0, 0, 0, 0)\n } else if (settings.bin === '1h') {\n time.setMinutes(30, 0, 0)\n }\n const avg = (stick.open + stick.close + stick.high + stick.low) / 4\n // check time exist\n if (!timeArray.some(tmpTime => tmpTime === time.getTime())) {\n timeArray.push(time.getTime())\n }\n // check exist on data map\n const timeInt = time.getTime()\n let dataArr\n if (timeDataMap.has(timeInt)) {\n dataArr = timeDataMap.get(timeInt)\n dataArr[index] = avg\n } else {\n dataArr = []\n for (let i = 0; i < responseMap.size; i++) {\n dataArr.push(0)\n }\n dataArr[index] = avg\n }\n timeDataMap.set(timeInt, dataArr)\n })\n index++\n }\n\n timeArray.sort(function (time1, time2) {\n if (time1 > time2) {\n return 1\n } else if (time1 < time2) {\n return -1\n }\n return 0\n })\n // remove all has zero value item\n const resArray = []\n timeArray.forEach((time) => {\n if (timeDataMap.has(time)) {\n const dataArray = timeDataMap.get(time)\n // check has zero data\n let hasZero = false\n dataArray.forEach((val) => {\n if (!val || val <= 0) {\n hasZero = true\n }\n })\n if (!hasZero) {\n resArray.push(time)\n }\n }\n })\n return {\n file: resArray.map(time => {\n if (timeDataMap.has(time)) {\n const dataArray = timeDataMap.get(time)\n const res = []\n res.push(new Date(time))\n res.push(...dataArray)\n return res\n }\n const res = []\n res.push(new Date(time))\n for (let i = 0; i < labels.length - 1; i++) {\n res.push(0)\n }\n return res\n }),\n labels: labels,\n xlabel: 'Time',\n ylabel: 'Price (USD)',\n colors: colors,\n plotter: Dygraph.Plotters.linePlotter,\n axes: {\n x: {\n axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n },\n strokeWidth: 2\n }\n }\n\n processHistory (response) {\n const halfDuration = minuteMap[settings.bin] / 2\n return {\n file: response.sticks.map(stick => {\n const t = new Date(stick.start)\n t.setMinutes(t.getMinutes() + halfDuration)\n // Not sure what the best way to reduce a candlestick to a single number\n // Trying this simple approach for now.\n const avg = (stick.open + stick.close + stick.high + stick.low) / 4\n return [t, avg]\n }),\n labels: ['time', 'price'],\n xlabel: 'Time',\n ylabel: 'Price (USD)',\n colors: [chartStroke],\n plotter: Dygraph.Plotters.linePlotter,\n axes: {\n x: {\n axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n },\n strokeWidth: 3\n }\n }\n\n processXcsVolume (responseMap) {\n const labels = ['time']\n const colors = []\n const timeArray = []\n const timeDataMap = new Map()\n xcColors[0] = chartStroke\n let index = 0\n for (const [key, value] of responseMap) {\n labels.push(key.charAt(0).toUpperCase() + key.slice(1))\n colors.push(xcColors[index])\n value.sticks.map(stick => {\n const time = new Date(stick.start)\n if (key === 'huobi' && settings.bin !== '1h') {\n time.setTime(time.getTime() + (8 * 60 * 60 * 1000))\n }\n if (settings.bin === '1mo') {\n time.setHours(0, 0, 0, 0)\n time.setDate(15)\n } else if (settings.bin === '1d') {\n time.setHours(0, 0, 0, 0)\n } else if (settings.bin === '1h') {\n time.setMinutes(30, 0, 0)\n }\n const vol = stick.volume\n // check time exist\n if (!timeArray.some(tmpTime => tmpTime === time.getTime())) {\n timeArray.push(time.getTime())\n }\n // check exist on data map\n const timeInt = time.getTime()\n let dataArr\n if (timeDataMap.has(timeInt)) {\n dataArr = timeDataMap.get(timeInt)\n dataArr[index] = vol\n } else {\n dataArr = []\n for (let i = 0; i < responseMap.size; i++) {\n dataArr.push(0)\n }\n dataArr[index] = vol\n }\n timeDataMap.set(timeInt, dataArr)\n })\n index++\n }\n timeArray.sort(function (time1, time2) {\n if (time1 > time2) {\n return 1\n } else if (time1 < time2) {\n return -1\n }\n return 0\n })\n // remove all has zero value item\n const resArray = []\n timeArray.forEach((time) => {\n if (timeDataMap.has(time)) {\n const dataArray = timeDataMap.get(time)\n // check has zero data\n let hasZero = false\n dataArray.forEach((val) => {\n if (!val || val <= 0) {\n hasZero = true\n }\n })\n if (!hasZero) {\n resArray.push(time)\n }\n }\n })\n return {\n file: resArray.map(time => {\n if (timeDataMap.has(time)) {\n const dataArray = timeDataMap.get(time)\n const res = []\n res.push(new Date(time))\n res.push(...dataArray)\n return res\n }\n const res = []\n res.push(new Date(time))\n for (let i = 0; i < labels.length - 1; i++) {\n res.push(0)\n }\n return res\n }),\n labels: labels,\n xlabel: 'Time',\n ylabel: `Volume (DCR / ${prettyDurations[settings.bin]})`,\n colors: colors,\n plotter: Dygraph.Plotters.linePlotter,\n axes: {\n x: {\n axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n },\n strokeWidth: 2\n }\n }\n\n processVolume (response) {\n const halfDuration = minuteMap[settings.bin] / 2\n return {\n file: response.sticks.map(stick => {\n const t = new Date(stick.start)\n t.setMinutes(t.getMinutes() + halfDuration)\n return [t, stick.volume]\n }),\n labels: ['time', 'volume'],\n xlabel: 'Time',\n ylabel: `Volume (DCR / ${prettyDurations[settings.bin]})`,\n colors: [chartStroke],\n plotter: Dygraph.Plotters.linePlotter,\n axes: {\n x: {\n axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n },\n strokeWidth: 3\n }\n }\n\n processDepth (response) {\n if (response.tokens) {\n return this.processAggregateDepth(response)\n }\n const data = processOrderbook(response, translateDepthSide)\n return {\n labels: ['price', 'cumulative sell', 'cumulative buy'],\n file: data.pts,\n fillGraph: true,\n colors: ['#ed6d47', '#41be53'],\n xlabel: 'Price (USD)',\n ylabel: 'Volume (DCR)',\n tokens: null,\n stats: data.stats,\n plotter: depthPlotter, // Don't use Dygraph.linePlotter here. fillGraph won't work.\n zoomCallback: this.zoomCallback,\n axes: {\n x: {\n axisLabelFormatter: convertedThreeSigFigs,\n valueFormatter: convertedEightDecimals\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n }\n }\n }\n\n processAggregateDepth (response) {\n // Re-order the data so that deepest books are first.\n reorderAggregateData(response)\n const tokens = response.tokens\n const data = processOrderbook(response, translateAggregatedDepthSide)\n const xcCount = tokens.length\n const keys = sizedArray(xcCount * 2 + 1, null)\n keys[0] = 'price'\n const colors = sizedArray(xcCount * 2, null)\n for (let i = 0; i < xcCount; i++) {\n const token = tokens[i]\n const color = getHue(token)\n keys[i + 1] = ` ${token} sell`\n keys[xcCount + i + 1] = ` ${token} buy`\n colors[i] = color\n colors[xcCount + i] = color\n }\n return {\n labels: keys,\n file: data.pts,\n colors: colors,\n xlabel: 'Price (USD)',\n ylabel: 'Volume (DCR)',\n plotter: depthPlotter,\n fillGraph: aggStacking,\n stackedGraph: aggStacking,\n tokens: tokens,\n stats: data.stats,\n dupes: data.dupes,\n zoomCallback: this.zoomCallback,\n axes: {\n x: {\n axisLabelFormatter: convertedThreeSigFigs,\n valueFormatter: convertedEightDecimals\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n }\n }\n }\n\n processOrders (response) {\n const data = processOrderbook(response, response.tokens ? translateAggregatedOrderbookSide : translateOrderbookSide)\n return {\n labels: ['price', 'sell', 'buy'],\n file: data.pts,\n colors: ['#f93f39cc', '#1acc84cc'],\n xlabel: 'Price (USD)',\n ylabel: 'Volume (DCR)',\n plotter: orderPlotter,\n axes: {\n x: {\n axisLabelFormatter: convertedThreeSigFigs\n },\n y: {\n axisLabelFormatter: humanize.threeSigFigs,\n valueFormatter: humanize.threeSigFigs\n }\n },\n stats: data.stats,\n strokeWidth: 0,\n drawPoints: true,\n logscale: true,\n xRangePad: 15,\n yRangePad: 15\n }\n }\n\n justifyBins () {\n let bins = []\n if (settings.chart === 'history' || settings.chart === 'volume') {\n if (!settings.xcs || settings.xcs === '') {\n settings.xcs = settings.xc === 'aggregated' ? this.exchangesButtons[0].name : settings.xc\n }\n bins = this.getHistoryChartAvailableBins()\n } else {\n if (settings.xc === 'aggregated' && settings.chart === 'candlestick') {\n settings.xc = this.exchangesButtons[0].name\n }\n bins = availableCandlesticks[settings.xc]\n }\n if (bins.indexOf(settings.bin) === -1) {\n settings.bin = bins[0]\n this.setBinSelection()\n }\n }\n\n setActiveExchanges (activeExchanges) {\n this.exchangesButtons.forEach(exchangeBtn => {\n if (activeExchanges.includes(exchangeBtn.name)) {\n exchangeBtn.classList.add('active')\n } else if (exchangeBtn.classList.contains('active')) {\n exchangeBtn.classList.remove('active')\n }\n })\n }\n\n setButtons () {\n this.chartSelectTarget.value = settings.chart\n let lastExchangeBtn = this.exchangesButtons[0]\n let lastExchangeIndex = 0\n this.exchangesButtons.forEach(exchangeBtn => {\n const idx = Number(exchangeBtn.dataset.exchangeindex)\n if (idx > lastExchangeIndex) {\n lastExchangeIndex = idx\n lastExchangeBtn = exchangeBtn\n }\n })\n const xsList = settings.chart === 'history' || settings.chart === 'volume' ? settings.xcs.split(',') : settings.xc.split(',')\n this.setActiveExchanges(xsList)\n if (usesOrderbook(settings.chart)) {\n this.binTarget.classList.add('d-hide')\n this.zoomTarget.classList.remove('d-hide')\n this.aggOptionTarget.classList.remove('d-hide')\n lastExchangeBtn.classList.remove('last-toggle-btn')\n } else {\n this.binTarget.classList.remove('d-hide')\n this.zoomTarget.classList.add('d-hide')\n this.aggOptionTarget.classList.add('d-hide')\n lastExchangeBtn.classList.add('last-toggle-btn')\n let bins\n if (settings.chart === 'history' || settings.chart === 'volume') {\n bins = this.getHistoryChartAvailableBins()\n } else {\n bins = availableCandlesticks[settings.xc]\n }\n this.binButtons.forEach(button => {\n if (bins.indexOf(button.name) >= 0) {\n button.classList.remove('d-hide')\n } else {\n button.classList.add('d-hide')\n }\n })\n this.setBinSelection()\n }\n const depthDisabled = !validDepthExchange(settings.xc)\n this.depthOnlyTargets.forEach(option => {\n option.disabled = depthDisabled\n })\n if (settings.xc === aggregatedKey && settings.chart === depth) {\n this.aggStackTarget.classList.remove('d-hide')\n settings.stack = aggStacking ? 1 : 0\n } else {\n this.aggStackTarget.classList.add('d-hide')\n settings.stack = null\n }\n this.handlerRadiusForBtnGroup(this.exchangesButtons)\n this.handlerRadiusForBtnGroup(this.binButtons)\n }\n\n getHistoryChartAvailableBins () {\n const bins = []\n let xcs = [settings.xc]\n if (settings.xcs && settings.xcs !== '') {\n xcs = settings.xcs.split(',')\n }\n bins.push(...binList)\n xcs.forEach((xc) => {\n const itemBins = availableCandlesticks[xc]\n for (let i = bins.length - 1; i >= 0; i--) {\n if (itemBins.indexOf(bins[i]) < 0) {\n bins.splice(i, 1)\n }\n }\n })\n return bins\n }\n\n setBinSelection () {\n const bin = settings.bin\n this.binButtons.forEach(button => {\n if (button.name === bin) {\n button.classList.add('active')\n } else {\n button.classList.remove('active')\n }\n })\n }\n\n changeGraph (e) {\n const target = e.target || e.srcElement\n settings.chart = target.value\n if (usesCandlesticks(settings.chart)) {\n this.justifyBins()\n }\n this.reorderExchanges()\n this.setButtons()\n this.setExchangeName()\n this.fetchChart()\n }\n\n reorderExchanges () {\n const isBTCPair = settings.pair === 'btc'\n const activeExchange = this.getSelectedExchanges()\n const afterActiveExchange = []\n const _this = this\n if (settings.chart === 'history' || settings.chart === 'volume') {\n if (activeExchange.length > 0) {\n activeExchange.forEach((activeEx) => {\n if (activeEx !== aggregatedKey && ((isBTCPair && useBTCPair(activeEx)) || (!isBTCPair && useUSDPair(activeEx)))) {\n afterActiveExchange.push(activeEx)\n }\n })\n }\n if (afterActiveExchange.length <= 0) {\n afterActiveExchange.push(_this.getFirstExchangeButton(isBTCPair))\n }\n settings.xcs = afterActiveExchange.join(',')\n } else {\n if (activeExchange.length <= 0) {\n afterActiveExchange.push(usesOrderbook(settings.chart) ? aggregatedKey : _this.getFirstExchangeButton(isBTCPair))\n } else {\n const exc = activeExchange[0]\n if ((isBTCPair && useBTCPair(exc)) || (!isBTCPair && useUSDPair(exc))) {\n afterActiveExchange.push(exc)\n } else {\n afterActiveExchange.push(_this.getFirstExchangeButton(isBTCPair))\n }\n }\n if (afterActiveExchange.length > 0) {\n settings.xc = afterActiveExchange.join(',')\n }\n }\n }\n\n async changePair (e) {\n const target = e.target || e.srcElement\n settings.pair = target.value\n this.setAggRowData(settings.pair === 'btc')\n this.handlerExchangesDisplay()\n this.setButtons()\n this.setExchangeName()\n await this.fetchChart()\n samePair = false\n if (usesOrderbook(settings.chart)) {\n samePair = true\n this.setZoomPct(defaultZoomPct)\n const stats = this.graph.getOption('stats')\n const spread = stats.midGap * defaultZoomPct / 100\n this.graph.updateOptions({ dateWindow: [stats.midGap - spread, stats.midGap + spread] })\n }\n }\n\n handlerExchangesDisplay () {\n const isBTCPair = settings.pair === 'btc'\n this.exchangesButtons.forEach(button => {\n if (isBTCPair) {\n this.fiatLabelTarget.textContent = 'DCR/BTC'\n if (useBTCPair(button.name)) {\n button.classList.remove('d-hide')\n } else if (useUSDPair(button.name)) {\n button.classList.add('d-hide')\n }\n } else {\n this.fiatLabelTarget.textContent = 'DCR/USDT'\n if (useBTCPair(button.name)) {\n button.classList.add('d-hide')\n } else if (useUSDPair(button.name)) {\n button.classList.remove('d-hide')\n }\n }\n })\n this.reorderExchanges()\n for (let i = 0; i < this.xcRowTargets.length; i++) {\n const xcRow = this.xcRowTargets[i]\n const token = xcRow.dataset.token\n if (token === 'aggregated') {\n continue\n }\n if (isBTCPair) {\n if (useBTCPair(token)) {\n xcRow.classList.remove('d-hide')\n } else if (useUSDPair(token)) {\n xcRow.classList.add('d-hide')\n }\n } else {\n if (useBTCPair(token)) {\n xcRow.classList.add('d-hide')\n } else if (useUSDPair(token)) {\n xcRow.classList.remove('d-hide')\n }\n }\n }\n }\n\n getFirstExchangeButton (isBTCPair) {\n let firstBtn = this.exchangesButtons[0].name\n for (let i = 0; i < this.exchangesButtons.length; i++) {\n const exBtn = this.exchangesButtons[i]\n if (!exBtn.classList.contains('d-hide') && !exBtn.classList.contains('d-none') && ((isBTCPair && useBTCPair(exBtn.name)) || (!isBTCPair && useUSDPair(exBtn.name)))) {\n firstBtn = exBtn.name\n break\n }\n }\n return firstBtn\n }\n\n changeExchange (e) {\n const btn = e.target || e.srcElement\n if (btn.nodeName !== 'BUTTON' || !this.graph) return\n this.handlerExchange(btn.name)\n }\n\n setExchange (e) {\n // not handle if is history or volume chart\n if (settings.chart === 'history' || settings.chart === 'volume') {\n return\n }\n let node = e.target || e.srcElement\n while (node && node.nodeName !== 'TR') node = node.parentNode\n if (!node || !node.dataset || !node.dataset.token) return\n if (usesCandlesticks(settings.chart) && node.dataset.token === aggregatedKey) {\n return\n }\n this.handlerExchange(node.dataset.token)\n }\n\n handlerExchange (token) {\n if (settings.chart === 'history' || settings.chart === 'volume') {\n const xcs = settings.xcs.split(',')\n if (xcs.indexOf(token) < 0) {\n xcs.push(token)\n } else {\n if (xcs.length > 1) {\n xcs.splice(xcs.indexOf(token), 1)\n } else {\n return\n }\n }\n settings.xcs = xcs.join(',')\n } else {\n if (settings.xc === token) {\n return\n }\n settings.xc = token\n }\n if (usesCandlesticks(settings.chart)) {\n if (settings.xc !== 'aggregated') {\n if (!availableCandlesticks[settings.xc]) {\n settings.chart = depth\n }\n }\n this.justifyBins()\n }\n this.setButtons()\n this.setExchangeName()\n this.fetchChart()\n this.resetZoom()\n }\n\n changeBin (e) {\n const btn = e.target || e.srcElement\n if (btn.nodeName !== 'BUTTON' || !this.graph) return\n settings.bin = btn.name\n this.justifyBins()\n this.setBinSelection()\n this.fetchChart()\n }\n\n resetZoom () {\n if (settings.chart === candlestick) {\n this.graph.updateOptions({ dateWindow: stickZoom })\n } else if (usesOrderbook(settings.chart)) {\n if (orderZoom && samePair) this.graph.updateOptions({ dateWindow: orderZoom })\n else {\n this.setZoomPct(defaultZoomPct)\n samePair = true\n }\n } else {\n this.graph.resetZoom()\n }\n }\n\n refreshChart () {\n refreshAvailable = true\n if (!focused) {\n return\n }\n this.fetchChart(true)\n }\n\n setConversion (e) {\n const btn = e.target || e.srcElement\n if (btn.nodeName !== 'BUTTON' || !this.graph) return\n this.conversionTarget.querySelectorAll('button').forEach(b => b.classList.remove('btn-selected'))\n btn.classList.add('btn-selected')\n let cLabel = 'BTC'\n if (e.target.name === 'BTC') {\n this.converted = false\n conversionFactor = 1\n } else {\n this.converted = true\n conversionFactor = btcPrice\n cLabel = fiatCode\n }\n this.graph.updateOptions({ xlabel: `Price (${cLabel})` })\n }\n\n setExchangeName () {\n if (settings.chart === 'history' || settings.chart === 'volume') {\n this.xcLogoTarget.classList.add('d-hide')\n this.actionsTarget.classList.add('d-hide')\n // exchange name\n const exchanges = []\n if (settings.xcs) {\n const exStrArr = settings.xcs.split(',')\n exStrArr.forEach((ex) => {\n exchanges.push(ex.charAt(0).toUpperCase() + ex.slice(1))\n })\n }\n this.xcNameTarget.textContent = exchanges.join(',')\n this.xcNameTarget.classList.add('fs-17')\n } else {\n this.xcNameTarget.classList.remove('fs-17')\n this.xcLogoTarget.classList.remove('d-hide')\n this.xcLogoTarget.className = `exchange-logo ${this.getXcLogo(settings.xc)}`\n const prettyName = printName(settings.xc)\n this.xcNameTarget.textContent = prettyName\n const href = exchangeLinks[settings.xc]\n if (href) {\n this.linkTarget.href = href\n this.linkTarget.textContent = `Visit ${prettyName}`\n this.actionsTarget.classList.remove('d-hide')\n } else {\n this.actionsTarget.classList.add('d-hide')\n }\n }\n }\n\n getXcLogo (xc) {\n if (xc.startsWith('btc_')) {\n return xc.replaceAll('btc_', '')\n }\n return xc\n }\n\n _processNightMode (data) {\n if (!this.graph) return\n chartStroke = data.nightMode ? darkStroke : lightStroke\n if (settings.chart === history || settings.chart === volume) {\n this.graph.updateOptions({ colors: [chartStroke] })\n }\n if (settings.chart === orders || settings.chart === depth) {\n this.graph.setAnnotations([])\n }\n }\n\n getExchangeRow (token) {\n const rows = this.xcRowTargets\n for (let i = 0; i < rows.length; i++) {\n const tr = rows[i]\n if (tr.dataset.token === token) {\n const row = {}\n tr.querySelectorAll('td').forEach(td => {\n switch (td.dataset.type) {\n case 'price':\n row.price = td\n break\n case 'volume':\n row.volume = td\n break\n case 'fiat':\n row.fiat = td\n break\n case 'arrow':\n row.arrow = td.querySelector('span')\n break\n }\n })\n return row\n }\n }\n return null\n }\n\n getSelectedExchanges () {\n const activeExchanges = []\n this.exchangesButtons.forEach(button => {\n if (button.classList.contains('active')) {\n activeExchanges.push(button.name)\n }\n })\n return activeExchanges\n }\n\n setStacking (e) {\n const btn = e.target || e.srcElement\n if (btn.nodeName !== 'BUTTON' || !this.graph) return\n this.aggStackTarget.querySelectorAll('button').forEach(b => b.classList.remove('btn-selected'))\n btn.classList.add('btn-selected')\n aggStacking = btn.name === 'on'\n this.graph.updateOptions({ stackedGraph: aggStacking, fillGraph: aggStacking })\n }\n\n setZoom (e) {\n const btn = e.target || e.srcElement\n if (btn.nodeName !== 'BUTTON' || !this.graph) return\n this.setZoomPct(parseInt(btn.name))\n const stats = this.graph.getOption('stats')\n const spread = stats.midGap * parseFloat(btn.name) / 100\n this.graph.updateOptions({ dateWindow: [stats.midGap - spread, stats.midGap + spread] })\n }\n\n setZoomPct (pct) {\n this.zoomButtons.forEach(b => {\n if (parseInt(b.name) === pct) b.classList.add('btn-selected')\n else b.classList.remove('btn-selected')\n })\n const stats = this.graph.getOption('stats')\n const spread = stats.midGap * pct / 100\n let low = stats.midGap - spread\n let high = stats.midGap + spread\n const [min, max] = this.graph.xAxisExtremes()\n if (low < min) low = min\n if (high > max) high = max\n orderZoom = [low, high]\n this.graph.updateOptions({ dateWindow: orderZoom })\n }\n\n _zoomCallback (start, end) {\n orderZoom = [start, end]\n this.zoomButtons.forEach(b => b.classList.remove('btn-selected'))\n }\n\n _processXcUpdate (update) {\n const xc = update.updater\n const cType = xc.chain_type\n if (cType && cType !== 'dcr') {\n return\n }\n if (update.fiat) { // btc-fiat exchange update\n this.xcIndexTargets.forEach(span => {\n if (span.dataset.token === xc.token) {\n span.textContent = humanize.commaWithDecimal(xc.price, 2)\n }\n })\n } else { // dcr-btc exchange update\n const row = this.getExchangeRow(xc.token)\n row.volume.textContent = humanize.threeSigFigs(xc.volume)\n row.price.textContent = humanize.threeSigFigs(xc.price)\n // row.fiat.textContent = (xc.price * update.btc_price).toFixed(2)\n if (xc.change === 0) {\n row.arrow.className = ''\n } else if (xc.change > 0) {\n row.arrow.className = 'dcricon-arrow-up text-green'\n } else {\n row.arrow.className = 'dcricon-arrow-down text-danger'\n }\n }\n // Update the big displayed value and the aggregated row\n // const fmtPrice = settings.pair === 'btc' ? update.dcr_btc_price.toFixed(6) : update.price.toFixed(2)\n this.priceTarget.textContent = update.price.toFixed(2)\n const aggRow = this.getExchangeRow(aggregatedKey)\n btcPrice = update.btc_price\n this.dcrBtcPrice = update.dcr_btc_price\n this.dcrUsdtPrice = update.price\n this.dcrUsdtVolume = update.volume\n this.dcrBtcVolum = update.dcr_btc_volume\n aggRow.price.textContent = humanize.threeSigFigs(settings.pair === 'btc' ? update.dcr_btc_price : update.price)\n aggRow.volume.textContent = humanize.threeSigFigs(settings.pair === 'btc' ? update.dcr_btc_volume : update.volume)\n // Auto-update the chart if it makes sense.\n if (settings.xc !== aggregatedKey && settings.xc !== xc.token) return\n if (settings.xc === aggregatedKey &&\n hasCache(this.lastUrl) &&\n responseCache[this.lastUrl].tokens.indexOf(update.updater) === -1) return\n if (usesOrderbook(settings.chart)) {\n clearCache(this.lastUrl)\n this.refreshChart()\n } else if (usesCandlesticks(settings.chart)) {\n // Only show refresh button if cache is expired\n if (!hasCache(this.lastUrl)) {\n this.refreshChart()\n }\n }\n }\n}\n\nfunction aggregateSums (side, sums, tokens, cutoff) {\n for (const pt of side) {\n if (cutoff(pt.price)) continue\n for (const i in tokens) sums[i][1] += pt.volumes[i]\n }\n}\n\n/*\n * reorderAggregateData reorders the aggregated order book data so that the\n * deepest books are first.\n */\nfunction reorderAggregateData (response) {\n let tokens = response.tokens\n const sums = []\n for (const token of tokens) sums.push([token, 0])\n\n const stats = orderbookStats(response.data.bids, response.data.asks)\n\n aggregateSums(response.data.bids, sums, tokens, v => v < stats.lowCut)\n aggregateSums(response.data.asks, sums, tokens, v => v > stats.highCut)\n\n sums.sort((a, b) => a[1] - b[1])\n\n const idxKey = {}\n for (const i in sums) idxKey[sums[i][0]] = i\n\n const reorder = side => {\n for (const pt of side) {\n const v = []\n for (const i in pt.volumes) v[idxKey[tokens[i]]] = pt.volumes[i]\n pt.volumes = v\n }\n }\n reorder(response.data.bids)\n reorder(response.data.asks)\n\n response.tokens = tokens = sums.map(v => v[0])\n}\n\n/*\n * findAggregateDupes finds price bins in the aggregated depth chart data that\n * have entries on both the buy and sell sides. Dygraphs doesn't handle the\n * duplicates well during drawing, so we will try to clean up the Dygraphs data\n * before passing it to the plotter.\n */\nfunction findAggregateDupes (buys, sells) {\n const dupes = []\n if (sells.length) {\n let sellIdx = 0\n let sellPrice = sells[sellIdx][0]\n\n for (const i in buys) {\n const buyPrice = buys[i][0]\n if (buyPrice < sellPrice) continue\n\n while (buyPrice > sellPrice) {\n sellIdx++\n if (sellIdx >= sells.length) return dupes\n sellPrice = sells[sellIdx][0]\n }\n if (Math.round(buyPrice * 1e8) === Math.round(sellPrice * 1e8)) {\n // Found a duplicate.\n dupes.push({\n price: buyPrice,\n i: buys.length + sellIdx,\n buy: buys[i],\n sell: sells[sellIdx]\n })\n }\n }\n }\n return dupes\n}\n\n/*\n * fixAggregateStacking attempts to correct a Dygraphs limitation where stacked\n * plots don't display right when 1) the data isn't monotionically increasing in\n * price, and 2) there is an exact match on price on the doubled back region.\n */\nfunction fixAggregateStacking (e) {\n if (e.setName.endsWith('buy')) return // only sell sides need fixing\n const dupes = e.dygraph.getOption('dupes')\n if (!dupes || dupes.length === 0) return\n let dupeIdx = 0\n let dupe = dupes[dupeIdx]\n // var dataIdx = e.seriesIndex + 1\n // var accume = 0\n // var accumeStacked = 0\n const pts = e.points\n for (let i = dupe.i; i < pts.length; i++) {\n const pt = pts[i]\n if (dupe && i === dupe.i) {\n // Need to adjust this one. Find a way to find a mapping from value to\n // ratio to canvas position.\n\n // Figure out how much buy order is mistakenly added.\n const misplacedVal = dupe.buy.reduce((acc, v) => { return i === 0 ? acc : acc + v }, 0)\n const subRatio = misplacedVal / e.axis.maxyval\n // Fixing these three values doesn't actually seem to affect the display,\n // but fixing them anyway.\n pt.y += subRatio\n pt.y_stacked += subRatio\n pt.yval_stacked -= misplacedVal\n // This line is the ticket to remove the dark black outline on the spike.\n pt.canvasy += subRatio * e.plotArea.h\n\n // TODO: Figure out how to add in missed accumulation, since the Dygraph\n // bug seems to ignore the actual sell value. Or just dump Dygraphs and\n // use canvas directly.\n // accumeStacked += dupe.sell.reduce((acc, v) => { return i === 0 ? acc : acc + v}, 0)\n // accume += dupe.sell[dataIdx]\n\n dupeIdx++\n if (dupeIdx >= dupes.length) dupe = null\n else dupe = dupes[dupeIdx]\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { map, each } from 'lodash-es'\nimport dompurify from 'dompurify'\nimport humanize from '../helpers/humanize_helper'\nimport ws from '../services/messagesocket_service'\nimport { keyNav } from '../services/keyboard_navigation_service'\nimport Mempool from '../helpers/mempool_helper'\nimport { copyIcon, alertArea } from './clipboard_controller'\nconst conversionRate = 100000000\n\nfunction incrementValue (el) {\n if (!el) return\n el.textContent = parseInt(el.textContent) + 1\n}\n\nfunction rowNode (rowText) {\n const tbody = document.createElement('tbody')\n tbody.innerHTML = rowText\n dompurify.sanitize(tbody, { IN_PLACE: true, FORBID_TAGS: ['svg', 'math'] })\n return tbody.firstElementChild\n}\n\nfunction txTableRow (tx) {\n return rowNode(`<tr class=\"flash\">\n <td class=\"break-word clipboard\">\n <a class=\"hash\" href=\"/tx/${tx.hash}\" title=\"${tx.hash}\">${tx.hash}</a>\n ${copyIcon()}\n ${alertArea()}\n </td>\n <td class=\"mono fs15 text-end\">${humanize.decimalParts(tx.total, false, 8)}</td>\n <td class=\"mono fs15 text-end\">${tx.size} B</td>\n <td class=\"mono fs15 text-end\">${tx.fee_rate} DCR/kB</td>\n <td class=\"mono fs15 text-end\" data-time-target=\"age\" data-age=\"${tx.time}\">${humanize.timeSince(tx.time)}</td>\n </tr>`)\n}\n\nfunction treasuryTxTableRow (tx) {\n return rowNode(`<tr class=\"flash\">\n <td class=\"break-word clipboard\">\n <a class=\"hash\" href=\"/tx/${tx.hash}\" title=\"${tx.hash}\">${tx.hash}</a>\n ${copyIcon()}\n ${alertArea()}\n </td>\n <td class=\"mono fs15 text-end\">${humanize.decimalParts(tx.total, false, 8)}</td>\n <td class=\"mono fs15 text-end\" data-time-target=\"age\" data-age=\"${tx.time}\">${humanize.timeSince(tx.time)}</td>\n </tr>`)\n}\n\nfunction voteTxTableRow (tx) {\n return rowNode(`<tr class=\"flash\" data-height=\"${tx.vote_info.block_validation.height}\" data-blockhash=\"${tx.vote_info.block_validation.hash}\">\n <td class=\"break-word clipboard\">\n <a class=\"hash\" href=\"/tx/${tx.hash}\">${tx.hash}</a>\n ${copyIcon()}\n ${alertArea()}\n </td>\n <td class=\"mono fs15\"><a href=\"/block/${tx.vote_info.block_validation.hash}\">${tx.vote_info.block_validation.height}<span\n class=\"small\">${tx.vote_info.last_block ? ' best' : ''}</span></a></td>\n <td class=\"mono fs15 text-end\"><a href=\"/tx/${tx.vote_info.ticket_spent}\">${tx.vote_info.mempool_ticket_index}<a/></td>\n <td class=\"mono fs15 text-end\">${tx.vote_info.vote_version}</td>\n <td class=\"mono fs15 text-end d-none d-sm-table-cell\">${humanize.decimalParts(tx.total, false, 8)}</td>\n <td class=\"mono fs15 text-end\">${humanize.bytes(tx.size)}</td>\n <td class=\"mono fs15 text-end d-none d-sm-table-cell jsonly\" data-time-target=\"age\" data-age=\"${tx.time}\">${humanize.timeSince(tx.time)}</td>\n </tr>`)\n}\n\nfunction buildTable (target, txType, txns, rowFn) {\n while (target.firstChild) target.removeChild(target.firstChild)\n if (txns && txns.length > 0) {\n map(txns, rowFn).forEach((tr) => {\n target.appendChild(tr)\n })\n } else {\n target.innerHTML = `<tr class=\"no-tx-tr\"><td colspan=\"${(txType === 'votes' ? 8 : 4)}\">No ${txType} in mempool.</td></tr>`\n }\n}\n\nfunction addTxRow (tx, target, rowFn) {\n if (target.childElementCount === 1 && target.firstElementChild.classList.contains('no-tx-tr')) {\n target.removeChild(target.firstElementChild)\n }\n target.insertBefore(rowFn(tx), target.firstChild)\n}\n\nfunction makeRewardsElement (subsidy, fee, voteCount, rewardTxId) {\n if (!subsidy) {\n return `<div class=\"block-rewards px-1 mt-1\">\n <span class=\"pow\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n <span class=\"pos\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n <span class=\"fund\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n <span class=\"fees right-vs-block-data\" title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'></span>\n </div>`\n }\n\n const pow = subsidy.pow / conversionRate\n const pos = subsidy.pos / conversionRate\n const fund = (subsidy.developer || subsidy.dev) / conversionRate\n\n const backgroundColorRelativeToVotes = `style=\"width: ${voteCount * 20}%\"` // 5 blocks = 100% painting\n\n // const totalDCR = Math.round(pow + fund + fee);\n const totalDCR = 1\n return `<div class=\"block-rewards px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n <span class=\"pow\" style=\"flex-grow: ${pow}\" data-mempool-target=\"tooltip\"\n title='{\"object\": \"PoW Reward\", \"total\": \"${pow}\"}'>\n <span class=\"block-element-link\">\n <span class=\"paint left-vs-block-data\" ${backgroundColorRelativeToVotes}></span>\n </span>\n </span>\n <span class=\"pos\" style=\"flex-grow: ${pos}\" data-mempool-target=\"tooltip\"\n title='{\"object\": \"PoS Reward\", \"total\": \"${pos}\"}'>\n <span class=\"block-element-link\">\n <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n </span>\n </span>\n <span class=\"fund\" style=\"flex-grow: ${fund}\" data-mempool-target=\"tooltip\"\n title='{\"object\": \"Project Fund\", \"total\": \"${fund}\"}'>\n <span class=\"block-element-link\">\n <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n </span>\n </span>\n <span class=\"fees right-vs-block-data\" style=\"flex-grow: ${fee}\" data-mempool-target=\"tooltip\"\n title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'>\n <span class=\"block-element-link\"></span>\n </span>\n </div>`\n}\n\nfunction makeVoteElements (votes) {\n let totalDCR = 0\n const voteLen = votes ? votes.length : 0\n const voteElements = []\n if (voteLen > 0) {\n for (let i = 0; i < voteLen - 1; i++) {\n const vote = votes[i]\n totalDCR += vote.Total\n voteElements.push(`<span style=\"background: ${vote.VoteValid ? 'linear-gradient(to right, #2971ff 0%, #528cff 100%)' : 'linear-gradient(to right, #fd714a 0%, #f6896a 100%)'}\" data-mempool-target=\"tooltip\"\n title='{\"object\": \"Vote\", \"voteValid\": \"${vote.VoteValid}\"}' class=\"${i === 0 ? 'left-vs-block-data' : ''} ${i === voteLen - 1 ? 'right-vs-block-data' : ''}\">\n <a class=\"block-element-link\" href=\"/tx/${vote.TxID}\"></a>\n </span>`)\n }\n }\n // append empty squares to votes\n for (let i = voteElements.length; i < 5; i++) {\n voteElements.push('<span title=\"Empty vote slot\"></span>')\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-votes px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n ${voteElements.join('\\n')}\n </div>`\n}\n\nfunction makeTicketAndRevocationElements (tickets, revocations, blockHref) {\n let totalDCR = 0\n const ticketElements = []\n const revCount = revocations ? revocations.length : 0\n const ticketCount = tickets ? tickets.length : 0\n if (tickets) {\n for (let i = 0; i < tickets.length; i++) {\n const ticket = tickets[i]\n totalDCR += ticket.Total\n ticketElements.push(makeTxElement(ticket, `block-ticket ${i === 0 ? 'left-vs-block-data' : ''} ${i === tickets.length - 1 && revCount === 0 ? 'right-vs-block-data' : ''}`, 'Ticket'))\n }\n }\n if (ticketElements.length > 50) {\n const total = ticketElements.length\n ticketElements.splice(30)\n ticketElements.push(`<span class=\"block-ticket\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} tickets\">\n <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n </span>`)\n }\n const revocationElements = []\n if (revCount > 0) {\n for (let i = 0; i < revCount; i++) {\n const revocation = revocations[i]\n totalDCR += revocation.Total\n revocationElements.push(makeTxElement(revocation, `block-rev ${ticketCount === 0 && i === 0 ? 'left-vs-block-data' : ''} ${i === revCount - 1 ? 'right-vs-block-data' : ''}`, 'Revocation'))\n }\n }\n\n const ticketsAndRevocationElements = ticketElements.concat(revocationElements)\n\n // append empty squares to tickets+revs\n for (let i = ticketsAndRevocationElements.length; i < 20; i++) {\n ticketsAndRevocationElements.push('<span title=\"Empty ticket slot\"></span>')\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-tickets px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n ${ticketsAndRevocationElements.join('\\n')}\n </div>`\n}\n\nfunction makeTxElement (tx, className, type, appendFlexGrow) {\n // const style = [ `opacity: ${(tx.VinCount + tx.VoutCount) / 10}` ];\n const style = []\n if (appendFlexGrow) {\n style.push(`flex-grow: ${Math.round(tx.Total)}`)\n }\n\n return `<span class=\"${className}\" style=\"${style.join('; ')}\" data-mempool-target=\"tooltip\"\n title='{\"object\": \"${type}\", \"total\": \"${tx.Total}\", \"vout\": \"${tx.VoutCount}\", \"vin\": \"${tx.VinCount}\"}'>\n <a class=\"block-element-link\" href=\"/tx/${tx.TxID}\"></a>\n </span>`\n}\n\nfunction makeTransactionElements (transactions, blockHref) {\n let totalDCR = 0\n const transactionElements = []\n if (transactions) {\n for (let i = 0; i < transactions.length; i++) {\n const tx = transactions[i]\n totalDCR += tx.Total\n transactionElements.push(makeTxElement(tx, `block-tx ${i === 0 ? 'left-vs-block-data' : ''} ${i === transactions.length - 1 ? 'right-vs-block-data' : ''}`, 'Transaction', true))\n }\n }\n\n if (transactionElements.length > 50) {\n const total = transactionElements.length\n transactionElements.splice(30)\n transactionElements.push(`<span class=\"block-tx\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} transactions\">\n <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n </span>`)\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-transactions px-1 my-1\" style=\"flex-grow: ${totalDCR}\">\n ${transactionElements.join('\\n')}\n </div>`\n}\n\nfunction makeMempoolBlock (block) {\n let fees = 0\n if (!block.Transactions) return\n for (const tx of block.Transactions) {\n fees += tx.Fees\n }\n\n return `<div class=\"block-rows\">\n ${makeRewardsElement(block.Subsidy, fees, block.Votes.length, '#')}\n ${makeVoteElements(block.Votes)}\n ${makeTicketAndRevocationElements(block.Tickets, block.Revocations, '/mempool')}\n ${makeTransactionElements(block.Transactions, '/mempool')}\n </div>`\n}\n\nexport default class extends Controller {\n static get targets () {\n return [\n 'bestBlock',\n 'bestBlockTime',\n 'tspendTransactions',\n 'taddTransactions',\n 'voteTransactions',\n 'ticketTransactions',\n 'revocationTransactions',\n 'regularTransactions',\n 'mempool',\n 'voteTally',\n 'regTotal',\n 'regCount',\n 'ticketTotal',\n 'ticketCount',\n 'voteTotal',\n 'voteCount',\n 'revTotal',\n 'revCount',\n 'likelyTotal',\n 'mempoolSize',\n 'memBlock',\n 'tooltip'\n ]\n }\n\n connect () {\n // from txhelpers.DetermineTxTypeString\n const mempoolData = this.mempoolTarget.dataset\n ws.send('getmempooltxs', mempoolData.id)\n this.mempool = new Mempool(mempoolData, this.voteTallyTargets)\n this.txTargetMap = {\n 'Treasury Spend': this.tspendTransactionsTarget,\n Vote: this.voteTransactionsTarget,\n Ticket: this.ticketTransactionsTarget,\n Revocation: this.revocationTransactionsTarget,\n Regular: this.regularTransactionsTarget\n }\n if (this.hasTaddTransactionsTarget) this.txTargetMap['Treasury Add'] = this.taddTransactionsTarget\n this.countTargetMap = {\n Vote: this.numVoteTarget,\n Ticket: this.numTicketTarget,\n Revocation: this.numRevocationTarget,\n Regular: this.numRegularTarget\n }\n ws.registerEvtHandler('newtxs', (evt) => {\n const txs = JSON.parse(evt)\n this.mempool.mergeTxs(txs)\n this.renderNewTxns(txs)\n this.setMempoolFigures()\n this.labelVotes()\n this.sortVotesTable()\n keyNav(evt, false, true)\n ws.send('getmempooltrimmed', '')\n })\n ws.registerEvtHandler('mempool', (evt) => {\n const m = JSON.parse(evt)\n this.mempool.replace(m)\n this.setMempoolFigures()\n this.updateBlock(m)\n ws.send('getmempooltxs', '')\n ws.send('getmempooltrimmed', '')\n })\n ws.registerEvtHandler('getmempooltxsResp', (evt) => {\n const m = JSON.parse(evt)\n this.mempool.replace(m)\n this.handleTxsResp(m)\n this.setMempoolFigures()\n this.labelVotes()\n this.sortVotesTable()\n keyNav(evt, false, true)\n })\n ws.registerEvtHandler('getmempooltrimmedResp', (event) => {\n this.handleMempoolUpdate(event)\n })\n this.setupTooltips()\n }\n\n disconnect () {\n ws.deregisterEvtHandlers('newtxs')\n ws.deregisterEvtHandlers('mempool')\n ws.deregisterEvtHandlers('getmempooltxsResp')\n ws.deregisterEvtHandlers('getmempooltrimmedResp')\n }\n\n handleMempoolUpdate (evt) {\n const mempool = JSON.parse(evt)\n mempool.Time = Math.round((new Date()).getTime() / 1000)\n this.memBlockTarget.innerHTML = makeMempoolBlock(mempool)\n this.setupTooltips()\n }\n\n setupTooltips () {\n this.tooltipTargets.forEach((tooltipElement) => {\n try {\n // parse the content\n const data = JSON.parse(tooltipElement.title)\n let newContent\n if (data.object === 'Vote') {\n newContent = `<b>${data.object} (${data.voteValid ? 'Yes' : 'No'})</b>`\n } else {\n newContent = `<b>${data.object}</b><br>${humanize.decimalParts(data.total, false, 8, 2)} DCR`\n }\n\n if (data.vin && data.vout) {\n newContent += `<br>${data.vin} Inputs, ${data.vout} Outputs`\n }\n\n tooltipElement.title = newContent\n } catch (error) {}\n })\n\n import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n const tippy = module.default\n tippy('.block-rows [title]', {\n allowTitleHTML: true,\n animation: 'shift-away',\n arrow: true,\n createPopperInstanceOnInit: true,\n dynamicTitle: true,\n performance: true,\n placement: 'top',\n size: 'small',\n sticky: true,\n theme: 'light'\n })\n })\n }\n\n updateBlock (m) {\n this.bestBlockTarget.textContent = m.block_height\n this.bestBlockTarget.dataset.hash = m.block_hash\n this.bestBlockTarget.href = `/block/${m.block_hash}`\n this.bestBlockTimeTarget.dataset.age = m.block_time\n }\n\n setMempoolFigures () {\n const totals = this.mempool.totals()\n const counts = this.mempool.counts()\n this.regTotalTarget.textContent = humanize.threeSigFigs(totals.regular)\n this.regCountTarget.textContent = counts.regular\n\n this.ticketTotalTarget.textContent = humanize.threeSigFigs(totals.ticket)\n this.ticketCountTarget.textContent = counts.ticket\n\n this.voteTotalTarget.textContent = humanize.threeSigFigs(totals.vote)\n\n const ct = this.voteCountTarget\n while (ct.firstChild) ct.removeChild(ct.firstChild)\n this.mempool.voteSpans(counts.vote).forEach((span) => { ct.appendChild(span) })\n\n this.revTotalTarget.textContent = humanize.threeSigFigs(totals.rev)\n this.revCountTarget.textContent = counts.rev\n\n this.likelyTotalTarget.textContent = humanize.threeSigFigs(totals.total)\n this.mempoolSizeTarget.textContent = humanize.bytes(totals.size)\n\n this.labelVotes()\n // this.setVotes()\n }\n\n handleTxsResp (m) {\n buildTable(this.regularTransactionsTarget, 'regular transactions', m.tx, txTableRow)\n buildTable(this.revocationTransactionsTarget, 'revocations', m.revs, txTableRow)\n buildTable(this.voteTransactionsTarget, 'votes', m.votes, voteTxTableRow)\n buildTable(this.ticketTransactionsTarget, 'tickets', m.tickets, txTableRow)\n buildTable(this.tspendTransactionsTarget, 'tspends', m.tspends, treasuryTxTableRow)\n if (this.hasTaddTransactionsTarget) buildTable(this.taddTransactionsTarget, 'tadds', m.tadds, treasuryTxTableRow)\n }\n\n renderNewTxns (txs) {\n each(txs, (tx) => {\n incrementValue(this.countTargetMap[tx.Type])\n let rowFn\n switch (tx.Type) {\n case 'Vote':\n rowFn = voteTxTableRow\n break\n case 'Treasury Spend':\n rowFn = treasuryTxTableRow\n break\n case 'Treasury Add':\n if (!this.hasTaddTransactionsTarget) return\n rowFn = treasuryTxTableRow\n break\n default:\n rowFn = txTableRow\n }\n addTxRow(tx, this.txTargetMap[tx.Type], rowFn)\n })\n }\n\n labelVotes () {\n const bestBlockHash = this.bestBlockTarget.dataset.hash\n const bestBlockHeight = parseInt(this.bestBlockTarget.textContent)\n this.voteTransactionsTarget.querySelectorAll('tr').forEach((tr) => {\n const voteValidationHash = tr.dataset.blockhash\n const voteBlockHeight = tr.dataset.height\n const best = tr.querySelector('.small')\n if (!best) return // Just the \"No votes in mempool.\" td?\n best.textContent = ''\n if (voteBlockHeight > bestBlockHeight) {\n tr.classList.add('blue-row')\n tr.classList.remove('disabled-row')\n } else if (voteValidationHash !== bestBlockHash) {\n tr.classList.add('disabled-row')\n tr.classList.remove('blue-row')\n if (tr.classList.contains('last_block')) {\n tr.textContent = 'False'\n }\n } else {\n tr.classList.remove('disabled-row')\n tr.classList.remove('blue-row')\n best.textContent = ' (best)'\n }\n })\n }\n\n sortVotesTable () {\n const rows = Array.from(this.voteTransactionsTarget.querySelectorAll('tr'))\n rows.sort(function (a, b) {\n if (a.dataset.height === b.dataset.height) {\n const indexA = parseInt(a.dataset.ticketIndex)\n const indexB = parseInt(b.dataset.ticketIndex)\n return (indexA - indexB)\n } else {\n return (b.dataset.height - a.dataset.height)\n }\n })\n this.voteTransactionsTarget.innerHTML = ''\n rows.forEach((row) => { this.voteTransactionsTarget.appendChild(row) })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { closeMenu, toggleSun } from '../services/theme_service'\n\nfunction closest (el, id) {\n // https://stackoverflow.com/a/48726873/1124661\n if (el.id === id) {\n return el\n }\n if (el.parentNode && el.parentNode.nodeName !== 'BODY') {\n return closest(el.parentNode, id)\n }\n return null\n}\n\nexport default class extends Controller {\n static get targets () {\n return ['toggle', 'homeToggle', 'form', 'homeMenu', 'commonMenu']\n }\n\n connect () {\n this.clickout = this._clickout.bind(this)\n this.formTargets.forEach(form => {\n form.addEventListener('submit', e => {\n e.preventDefault()\n return false\n })\n })\n }\n\n checkHomePage () {\n const originUrl = window.location.origin\n let href = window.location.href\n if (href.includes(originUrl)) {\n href = href.replace(originUrl, '')\n if (href === '/' || href === '') {\n return true\n }\n return false\n }\n return false\n }\n\n _clickout (e) {\n const target = e.target || e.srcElement\n if (!closest(target, 'hamburger-menu')) {\n document.removeEventListener('click', this.clickout)\n closeMenu()\n }\n }\n\n toggle (e) {\n if (this.toggleTarget.checked) {\n document.addEventListener('click', this.clickout)\n }\n }\n\n homeToggle (e) {\n if (this.homeToggleTarget.checked) {\n document.addEventListener('click', this.clickout)\n }\n }\n\n onSunClick () {\n toggleSun()\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport globalEventBus from '../services/event_bus_service'\n\nexport default class extends Controller {\n static get targets () {\n return ['confirmations']\n }\n\n initialize () {\n const that = this\n globalEventBus.on('BLOCK_RECEIVED', function (data) {\n that.refreshConfirmations(data.block.height)\n })\n }\n\n connect () {\n this.confirmationsTargets.forEach((el, i) => {\n if (!el.dataset.confirmations) return\n this.setConfirmationText(el, el.dataset.confirmations)\n })\n }\n\n setConfirmationText (el, confirmations) {\n if (confirmations > 0) {\n el.textContent = el.dataset.yes.replace('#', confirmations).replace('@', confirmations > 1 ? 's' : '')\n el.classList.add('confirmed')\n } else {\n el.textContent = el.dataset.no\n el.classList.remove('confirmed')\n }\n }\n\n refreshConfirmations (expHeight) {\n this.confirmationsTargets.forEach((el, i) => {\n const confirmHeight = parseInt(el.dataset.confirmationBlockHeight)\n if (confirmHeight === -1) return // Unconfirmed block\n const confirmations = expHeight - confirmHeight + 1\n this.setConfirmationText(el, confirmations)\n el.dataset.confirmations = confirmations\n })\n }\n}\n","/* global Turbolinks */\nimport { Controller } from '@hotwired/stimulus'\nimport Url from 'url-parse'\n\nexport default class extends Controller {\n static get targets () {\n return ['pagesize', 'votestatus', 'listview']\n }\n\n setPageSize () {\n const url = Url(window.location.href)\n const q = Url.qs.parse(url.query)\n delete q.offset\n delete q.height\n q[this.pagesizeTarget.dataset.offsetkey] = this.pagesizeTarget.dataset.offset\n q.rows = this.pagesizeTarget.selectedOptions[0].value\n if (this.hasVotestatusTarget) {\n q.byvotestatus = this.votestatusTarget.selectedOptions[0].value\n }\n url.set('query', q)\n Turbolinks.visit(url.toString())\n }\n\n setFilterbyVoteStatus () {\n const url = Url(window.location.href)\n const q = {}\n q.byvotestatus = this.votestatusTarget.selectedOptions[0].value\n url.set('query', q)\n Turbolinks.visit(url.toString())\n }\n\n setListView () {\n const url = Url(window.location.href, true)\n const newPeriod = this.listviewTarget.selectedOptions[0].value\n if (url.pathname !== newPeriod) {\n url.set('query', {})\n }\n url.set('pathname', newPeriod)\n Turbolinks.visit(url.href)\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { MiniMeter } from '../helpers/meters.js'\nimport { darkEnabled } from '../services/theme_service'\nimport globalEventBus from '../services/event_bus_service'\nimport { getDefault } from '../helpers/module_helper'\nimport { multiColumnBarPlotter, synchronize } from '../helpers/chart_helper'\nimport dompurify from 'dompurify'\nimport humanize from '../helpers/humanize_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst common = {\n labelsKMB: true,\n legend: 'always',\n fillGraph: true,\n strokeWidth: 2,\n gridLineColor: '#C4CBD2',\n labelsUTC: true,\n legendFormatter: legendFormatter\n}\n\nconst percentConfig = {\n ...common,\n labels: ['Date', 'Percent Yes'],\n ylabel: 'Approval (%)',\n colors: ['#2971FF'],\n labelsSeparateLines: true,\n underlayCallback: function (context, area, g) {\n const xVals = g.xAxisExtremes()\n const xl = g.toDomCoords(xVals[0], 60)\n const xr = g.toDomCoords(xVals[1], 60)\n\n context.beginPath()\n context.strokeStyle = '#ED6D47'\n context.moveTo(xl[0], xl[1])\n context.lineTo(xr[0], xr[1])\n context.fillStyle = '#ED6D47'\n context.fillText('60% Approval', xl[0] + 20, xl[1] + 10)\n context.closePath()\n context.stroke()\n }\n}\n\nconst cumulativeConfig = {\n ...common,\n labels: ['Date', 'Total Votes'],\n ylabel: 'Vote Count',\n colors: ['#2971FF'],\n underlayCallback: function (context, area, g) {\n const xVals = g.xAxisExtremes()\n const xl = g.toDomCoords(xVals[0], 8269)\n const xr = g.toDomCoords(xVals[1], 8269)\n\n context.beginPath()\n context.strokeStyle = '#ED6D47'\n context.moveTo(xl[0], xl[1])\n context.lineTo(xr[0], xr[1])\n context.fillStyle = '#ED6D47'\n context.fillText('20% Quorum', xl[0] + 20, xl[1] + 10)\n context.closePath()\n context.stroke()\n }\n}\n\nfunction legendFormatter (data) {\n let html\n if (data.x == null) {\n html = data.series.map(function (series) {\n return series.dashHTML + ' <span style=\"color:' +\n series.color + ';\">' + series.labelHTML + ' </span> '\n }).join('')\n } else {\n html = this.getLabels()[0] + ': ' + humanize.date(data.x) + ' UTC '\n data.series.forEach(function (series, index) {\n if (!series.isVisible) return\n\n let symbol = ''\n if (series.labelHTML.includes('Percent')) {\n series.labelHTML = 'Yes'\n symbol = '%'\n } else if (index === 0) {\n html = ''\n } else {\n // html += ' <br> '\n }\n\n const labeledData = '<span style=\"color:' + series.color + ';\">' +\n series.labelHTML + ' </span> : ' + Math.abs(series.y)\n html += series.dashHTML + ' ' + labeledData + '' + symbol + ' '\n })\n }\n dompurify.sanitize(html, { FORBID_TAGS: ['svg', 'math'] })\n return html\n}\n\nconst hourlyVotesConfig = {\n ...common,\n plotter: multiColumnBarPlotter,\n showRangeSelector: true,\n labels: ['Date', 'Yes', 'No'],\n ylabel: 'Votes Per Hour',\n xlabel: 'Date',\n colors: ['#2DD8A3', '#ED6D47'],\n fillColors: ['rgb(150,235,209)', 'rgb(246,182,163)']\n}\n\nlet gs = []\nlet Dygraph\nlet chartData = {}\n\nlet percentData\nlet cumulativeData\nlet hourlyVotesData\nexport default class extends Controller {\n static get targets () {\n return ['token', 'approvalMeter', 'cumulative', 'cumulativeLegend',\n 'approval', 'approvalLegend', 'log', 'logLegend'\n ]\n }\n\n async connect () {\n if (!this.hasApprovalMeterTarget) return // there will be no meter or charts\n\n const d = this.approvalMeterTarget.dataset\n const opts = {\n darkMode: darkEnabled(),\n segments: [\n { end: d.threshold, color: '#ed6d47' },\n { end: 1, color: '#2dd8a3' }\n ]\n }\n this.approvalMeter = new MiniMeter(this.approvalMeterTarget, opts)\n\n chartData = await requestJSON('/api/proposal/' + this.tokenTarget.dataset.hash)\n if (!chartData) return\n Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n\n this.setChartsData()\n this.plotGraph()\n this.setNightMode = this._setNightMode.bind(this)\n globalEventBus.on('NIGHT_MODE', this.setNightMode)\n }\n\n disconnect () {\n gs.map((chart) => { chart.destroy() })\n globalEventBus.off('NIGHT_MODE', this.setNightMode)\n }\n\n setChartsData () {\n let total = 0\n let yes = 0\n let hourlyYes = 0\n let hourlyNo = 0\n let currentDate = new Date(chartData?.time[0] * 1000)\n let currentHour = currentDate.getHours()\n\n percentData = []\n cumulativeData = []\n hourlyVotesData = []\n\n chartData.time.map((n, i) => {\n const formatedDate = new Date(n * 1000)\n yes += chartData.yes[i]\n total += (chartData.no[i] + chartData.yes[i])\n\n const percent = ((yes * 100) / total).toFixed(2)\n\n // accumulate hourly vote data. currentDate keeps track\n // of the hour of such date we are parsing data for\n hourlyYes += chartData.yes[i]\n hourlyNo += chartData.no[i]\n if (formatedDate.getHours() !== currentHour) {\n currentDate.setMinutes(0)\n percentData.push([currentDate, parseFloat(percent)])\n cumulativeData.push([currentDate, total])\n hourlyVotesData.push([currentDate, hourlyYes, hourlyNo * -1])\n currentDate = formatedDate\n currentHour = formatedDate.getHours()\n hourlyYes = 0\n hourlyNo = 0\n }\n })\n\n // add empty data at the beginning and end of hourlyVotesData\n // to pad the bar chart data on both ends\n const firstDate = new Date(chartData.time[0] * 1000)\n firstDate.setHours(firstDate.getHours() - 1)\n const lastDate = new Date(chartData.time[chartData.time.length - 1] * 1000)\n lastDate.setHours(lastDate.getHours() + 1)\n hourlyVotesData.unshift([firstDate, 0, 0])\n hourlyVotesData.push([lastDate, 0, 0])\n }\n\n plotGraph () {\n percentConfig.labelsDiv = this.approvalLegendTarget\n cumulativeConfig.labelsDiv = this.cumulativeLegendTarget\n hourlyVotesConfig.labelsDiv = this.logLegendTarget\n gs = [\n new Dygraph(\n this.approvalTarget,\n percentData,\n percentConfig\n ),\n new Dygraph(\n this.cumulativeTarget,\n cumulativeData,\n cumulativeConfig\n ),\n new Dygraph(\n this.logTarget,\n hourlyVotesData,\n hourlyVotesConfig\n )\n ]\n\n const options = {\n zoom: true,\n selection: true\n }\n\n synchronize(gs, options)\n }\n\n _setNightMode (state) {\n if (this.approvalMeter) {\n this.approvalMeter.setDarkMode(state.nightMode)\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport ws from '../services/messagesocket_service'\nimport { fadeIn } from '../helpers/animation_helper'\n\nexport default class extends Controller {\n static get targets () {\n return [\n 'decode',\n 'broadcast',\n 'rawTransaction',\n 'decodedTransaction',\n 'decodeHeader'\n ]\n }\n\n connect () {\n ws.registerEvtHandler('decodetxResp', (evt) => {\n this.decodeHeaderTarget.textContent = 'Decoded tx'\n fadeIn(this.decodedTransactionTarget)\n this.decodedTransactionTarget.textContent = evt\n })\n ws.registerEvtHandler('sendtxResp', (evt) => {\n this.decodeHeaderTarget.textContent = 'Sent tx'\n fadeIn(this.decodedTransactionTarget)\n this.decodedTransactionTarget.textContent = evt\n })\n }\n\n disconnect () {\n ws.deregisterEvtHandlers('decodetxResp')\n ws.deregisterEvtHandlers('sendtxResp')\n }\n\n send (e) {\n if (e.type === 'keypress' && e.keyCode !== 13) {\n return\n }\n if (this.rawTransactionTarget.value !== '') {\n ws.send(e.target.dataset.eventId, this.rawTransactionTarget.value)\n this.rawTransactionTarget.textContent = ''\n this.decodedTransactionTarget.textContent = ''\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { toggleSun } from '../services/theme_service'\n\n$(document).mouseup(function (e) {\n const selectArea = $('#chainSelectList')\n if (!selectArea.is(e.target) && selectArea.has(e.target).length === 0) {\n if (selectArea.css('display') !== 'none') {\n selectArea.css('display', 'none')\n }\n }\n})\n\n$(window).on('resize', function (event) {\n const winWidth = $(window).width()\n if (winWidth > 700) {\n $('#menu').css('width', $('#topBarLeft').width())\n return\n }\n $('#menu').css('width', 'auto')\n})\n\nconst multichainList = ['btc', 'ltc']\n\nfunction isMutilchainUrl (url) {\n let isMultichain = false\n multichainList.forEach((chain) => {\n if (url.includes('/' + chain)) {\n isMultichain = true\n }\n })\n return isMultichain\n}\n\nexport default class extends Controller {\n static get targets () {\n return ['navbar', 'coinSelect']\n }\n\n connect () {\n this.isMutilchain = isMutilchainUrl(window.location.href)\n if (this.isMutilchain) {\n const urlArr = window.location.href.split('/')\n let chain\n urlArr.forEach((element) => {\n if (multichainList.includes(element)) {\n chain = element\n }\n })\n this.coinSelectTarget.value = chain\n this.currentChain = chain\n } else {\n this.currentChain = 'dcr'\n }\n const _this = this\n document.addEventListener('scroll', function () {\n _this.handlerScroll()\n })\n _this.handlerScroll()\n $('html').css('overflow-x', '')\n // handler for chain selection\n const chainArray = []\n const chainNameArr = []\n $('.vodiapicker option').each(function () {\n const img = $(this).attr('data-thumbnail')\n const text = this.innerText\n const value = $(this).val()\n const item = '<li><img src=\"' + img + '\" alt=\"\" value=\"' + value + '\"/><span>' + text + '</span></li>'\n chainArray.push(item)\n chainNameArr.push(value)\n })\n $('#selectUl').html(chainArray)\n const chainIndex = chainNameArr.indexOf(this.currentChain)\n if (chainIndex >= 0) {\n $('.chain-selected-btn').html(chainArray[chainIndex])\n $('.chain-selected-btn').attr('value', this.currentChain)\n }\n $('#selectUl li').click(function () {\n const value = $(this).find('img').attr('value')\n if (value === _this.currentChain) {\n $('.selection-area').toggle()\n return\n }\n _this.keepWithUrl(value)\n // const img = $(this).find('img').attr('src')\n // const text = this.innerText\n // const item = '<li><img src=\"' + img + '\" alt=\"\" /><span>' + text + '</span></li>'\n // $('.chain-selected-btn').html(item)\n // $('.chain-selected-btn').attr('value', value)\n // $('.selection-area').toggle()\n })\n $('.chain-selected-btn').click(function () {\n $('.selection-area').toggle()\n })\n $('#menu').css('width', $('#topBarLeft').width())\n }\n\n handlerScroll () {\n // Get the scroll position\n const scrollPos = window.pageYOffset\n if (scrollPos > 20) {\n this.navbarTarget.classList.add('scroll-topbar')\n $('#menuDivider').addClass('d-none')\n } else {\n this.navbarTarget.classList.remove('scroll-topbar')\n $('#menuDivider').removeClass('d-none')\n }\n }\n\n changeCoin (e) {\n const coin = e.target.value\n this.keepWithUrl(coin)\n }\n\n removeUrlPostfixParam (href) {\n const indexOfParam = href.indexOf('?')\n if (indexOfParam < 0) {\n return href\n }\n return href.substring(0, indexOfParam)\n }\n\n getParamFromURL (href, key) {\n const indexOfParam = href.indexOf('?')\n if (indexOfParam < 0) {\n return ''\n }\n const paramStr = href.substring(indexOfParam + 1)\n const paramArr = paramStr.split('&')\n let value = ''\n paramArr.forEach(param => {\n if (!param || param === '') {\n return\n }\n const paramV = param.split('=')\n if (paramV.length < 2) {\n return\n }\n if (key === paramV[0].trim()) {\n value = paramV[1].trim()\n }\n })\n return value\n }\n\n keepWithUrl (coin) {\n const href = window.location.href\n const originUrl = this.removeUrlPostfixParam(href)\n const oldChain = this.currentChain\n this.currentChain = coin\n // if is chainhome\n if (window.location.pathname === '/' || originUrl.endsWith('/decred') || originUrl.endsWith('/' + oldChain)) {\n // if current is decred home, coin difference with dcr\n if (window.location.pathname === '/' || originUrl.endsWith('/decred')) {\n if (coin === 'dcr') {\n return\n }\n window.location.href = originUrl + coin\n return\n }\n if (oldChain === coin) {\n return\n }\n if (coin === 'dcr') {\n window.location.href = originUrl.replaceAll('/' + oldChain, '/decred')\n } else {\n window.location.href = originUrl.replaceAll('/' + oldChain, '/' + coin)\n }\n }\n // if is market page\n if (href.includes('/market')) {\n let newHref = this.replaceChainFromURL(originUrl, 'market', oldChain, coin)\n // get chart type\n const chartType = this.getParamFromURL(href, 'chart')\n if (chartType !== '') {\n newHref += '?chart=' + chartType\n }\n window.location.href = newHref\n return\n }\n // if is blocks page\n if (href.includes('/blocks')) {\n let newHref = this.replaceChainFromURL(originUrl, 'blocks', oldChain, coin)\n // get rows per page\n const rpp = this.getParamFromURL(href, 'rows')\n if (rpp !== '') {\n newHref += '?rows=' + rpp\n }\n window.location.href = newHref\n return\n }\n // if mempool page\n if (href.includes('/mempool')) {\n const newHref = this.replaceChainFromURL(originUrl, 'mempool', oldChain, coin)\n window.location.href = newHref\n return\n }\n // if supply page\n if (href.includes('/supply')) {\n const newHref = this.replaceChainFromURL(originUrl, 'supply', oldChain, coin)\n window.location.href = newHref\n return\n }\n // if supply page\n if (href.includes('/parameters')) {\n const newHref = this.replaceChainFromURL(originUrl, 'parameters', oldChain, coin)\n window.location.href = newHref\n return\n }\n // if visualblocks page\n if (href.includes('/visualblocks')) {\n const newHref = this.replaceChainFromURL(originUrl, 'visualblocks', oldChain, coin)\n window.location.href = newHref\n return\n }\n // if charts page\n if (href.includes('/charts')) {\n let newHref = this.replaceChainFromURL(originUrl, 'charts', oldChain, coin)\n // get chart type\n const chartType = this.getParamFromURL(href, 'chart')\n if (chartType !== '') {\n if (this.isSameChainChart(chartType, oldChain, coin)) {\n newHref += '?chart=' + chartType\n }\n }\n window.location.href = newHref\n return\n }\n // else\n switch (coin) {\n case 'dcr':\n window.location.href = '/decred'\n break\n default:\n window.location.href = '/' + coin\n break\n }\n }\n\n isSameChainChart (chartType, oldCoin, newCoin) {\n const sameChart = ['block-size', 'blockchain-size', 'tx-count', 'pow-difficulty', 'coin-supply', 'fees', 'duration-btw-blocks', 'hashrate']\n if (oldCoin !== 'dcr' && newCoin !== 'dcr') {\n return true\n }\n return sameChart.includes(chartType)\n }\n\n replaceChainFromURL (href, endsWith, oldCoin, newCoin) {\n // if oldCoin is decred\n if (oldCoin === 'dcr') {\n let replaceStr = '/' + endsWith\n if (href.includes('/decred')) {\n replaceStr = '/decred' + replaceStr\n }\n return href.replaceAll(replaceStr, '/' + newCoin + '/' + endsWith)\n }\n if (newCoin === 'dcr') {\n return href.replaceAll('/' + oldCoin + '/' + endsWith, '/decred/' + endsWith)\n }\n return href.replaceAll('/' + oldCoin + '/' + endsWith, '/' + newCoin + '/' + endsWith)\n }\n\n topSunClick () {\n toggleSun()\n }\n}\n","/* global Turbolinks */\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n execute (e) {\n e.preventDefault()\n const search = e.target[0].value.trim()\n if (search === '') {\n return\n }\n Turbolinks.visit('/search?search=' + search)\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst responseCache = {}\nlet requestCounter = 0\n\nfunction hasCache (k) {\n if (!responseCache[k]) return false\n const expiration = new Date(responseCache[k].expiration)\n return expiration > new Date()\n}\n\nexport default class extends Controller {\n static get targets () {\n return [\n 'blockHeight',\n 'startDate', 'endDate',\n 'priceDCR', 'dayText', 'amount', 'days', 'daysText',\n 'amountRoi', 'percentageRoi',\n 'table', 'tableBody', 'rowTemplate', 'amountError', 'startDateErr'\n ]\n }\n\n async initialize () {\n this.rewardPeriod = parseInt(this.data.get('rewardPeriod'))\n this.targetTimePerBlock = parseInt(this.data.get('timePerblock'))\n this.ticketExpiry = parseInt(this.data.get('ticketExpiry'))\n this.ticketMaturity = parseInt(this.data.get('ticketMaturity'))\n this.coinbaseMaturity = parseInt(this.data.get('coinbaseMaturity'))\n this.ticketsPerBlock = parseInt(this.data.get('ticketsPerblock'))\n this.ticketPrice = parseFloat(this.data.get('ticketPrice'))\n this.poolSize = parseInt(this.data.get('poolSize'))\n this.poolValue = parseFloat(this.data.get('poolValue'))\n this.blockHeight = parseInt(this.data.get('blockHeight'))\n this.coinSupply = parseInt(this.data.get('coinSupply')) / 1e8\n // default, startDate is 3 month ago\n this.last3Months = new Date()\n this.last3Months.setMonth(this.last3Months.getMonth() - 3)\n this.startDateTarget.value = this.formatDateToString(this.last3Months)\n this.endDateTarget.value = this.formatDateToString(new Date())\n this.amountTarget.value = 1000\n\n this.query = new TurboQuery()\n this.settings = TurboQuery.nullTemplate([\n 'amount', 'start', 'end'\n ])\n\n this.defaultSettings = {\n amount: 1000,\n start: this.startDateTarget.value,\n end: this.endDateTarget.value\n }\n\n this.query.update(this.settings)\n if (this.settings.amount) {\n this.amountTarget.value = this.settings.amount\n }\n if (this.settings.start) {\n this.startDateTarget.value = this.settings.start\n }\n if (this.settings.end) {\n this.endDateTarget.value = this.settings.end\n }\n\n this.calculate()\n }\n\n // Amount input event\n amountKeypress (e) {\n if (e.keyCode === 13) {\n this.amountChanged()\n }\n }\n\n // convert date to strin display (YYYY-MM-DD)\n formatDateToString (date) {\n return [\n date.getFullYear(),\n ('0' + (date.getMonth() + 1)).slice(-2),\n ('0' + date.getDate()).slice(-2)\n ].join('-')\n }\n\n updateQueryString () {\n const [query, settings, defaults] = [{}, this.settings, this.defaultSettings]\n for (const k in settings) {\n if (!settings[k] || settings[k].toString() === defaults[k].toString()) continue\n query[k] = settings[k]\n }\n this.query.replace(query)\n }\n\n // When amount was changed\n amountChanged () {\n this.settings.amount = parseInt(this.amountTarget.value)\n this.calculate()\n }\n\n // StartDate type event\n startDateKeypress (e) {\n if (e.keyCode !== 13) {\n return\n }\n if (!this.validateDate()) {\n return\n }\n this.startDateChanged()\n }\n\n // When startDate was changed\n startDateChanged () {\n if (!this.validateDate()) {\n return\n }\n this.settings.start = this.startDateTarget.value\n this.calculate()\n }\n\n // EndDate type event\n endDateKeypress (e) {\n if (e.keyCode !== 13) {\n return\n }\n if (!this.validateDate()) {\n return\n }\n this.endDateChanged()\n }\n\n // When EndDate was changed\n endDateChanged () {\n if (!this.validateDate()) {\n return\n }\n this.settings.end = this.endDateTarget.value\n this.calculate()\n }\n\n // Validate Date range\n validateDate () {\n const startDate = new Date(this.startDateTarget.value)\n const endDate = new Date(this.endDateTarget.value)\n\n if (startDate > endDate) {\n this.startDateErrTarget.textContent = 'Invalid date range'\n return\n }\n const days = this.getDaysOfRange(startDate, endDate)\n if (days < this.rewardPeriod) {\n this.startDateErrTarget.textContent = `You must stake for more than ${this.rewardPeriod} days`\n return false\n }\n\n this.startDateErrTarget.textContent = ''\n return true\n }\n\n hideAll (targets) {\n targets.classList.add('d-none')\n }\n\n showAll (targets) {\n targets.classList.remove('d-none')\n }\n\n // Get days between startDate and endDate\n getDaysOfRange (startDate, endDate) {\n const differenceInTime = endDate.getTime() - startDate.getTime()\n return differenceInTime / (1000 * 3600 * 24)\n }\n\n // Get Date from Days start from startDay\n getDateFromDays (startDate, days) {\n const tmpDate = new Date()\n tmpDate.setFullYear(startDate.getFullYear())\n tmpDate.setMonth(startDate.getMonth())\n tmpDate.setDate(startDate.getDate() + Number(days))\n return this.formatDateToString(tmpDate)\n }\n\n handlerRewardCalculator (days, startDate, amount) {\n let today = new Date()\n today = new Date(today.setUTCHours(0, 0, 0, 0))\n let startingHeight = this.blockHeight\n if (startDate.getTime() !== today.getTime()) {\n const miliSecDiff = Math.abs(startDate - today)\n const minutes = Math.floor(miliSecDiff / (1000 * 60))\n const targetTimePerBlockMinutes = Math.floor(this.targetTimePerBlock / 60)\n const blockDiff = Math.floor(minutes / targetTimePerBlockMinutes)\n if (startDate.getTime() < today.getTime()) {\n startingHeight = startingHeight - blockDiff\n } else {\n startingHeight = startingHeight + blockDiff\n }\n }\n const stakePerc = this.poolValue / this.coinSupply\n this.simulateStakingReward(days, amount, stakePerc, this.coinSupply, startingHeight, this.ticketPrice, this.blockHeight, startDate, amount)\n }\n\n async simulateStakingReward (numOfDays, startingBalance, currentStakePercent,\n actualCoinBase, startingBlockHeight, actualTicketPrice, blockHeight, startDate, amount) {\n requestCounter++\n const thisRequest = requestCounter\n const blocksPerDay = 86400 / this.targetTimePerBlock\n const numberOfBlocks = numOfDays * blocksPerDay\n let ticketsPurchased = 0\n const coinAdjustmentFactor = actualCoinBase / this.maxCoinSupplyAtBlock(startingBlockHeight)\n const meanVotingBlock = this.calcMeanVotingBlocks()\n const theoTicketPrice = this.theoreticalTicketPrice(startingBlockHeight, coinAdjustmentFactor, currentStakePercent, meanVotingBlock)\n const ticketAdjustmentFactor = actualTicketPrice / this.theoreticalTicketPrice(blockHeight, coinAdjustmentFactor, currentStakePercent, meanVotingBlock)\n // Prepare for simulation\n let simblock = startingBlockHeight\n let ticketPrice = 0\n let dcrBalance = startingBalance\n const simulationTable = []\n simulationTable.push({\n simBlock: simblock,\n simDay: 0,\n dcrBalance: dcrBalance,\n ticketPrice: theoTicketPrice,\n reward: 0\n })\n\n // Get milstone to get subsidy info\n const simBlockMilestone = []\n let tmpSimblock = simblock\n while (tmpSimblock < numberOfBlocks + startingBlockHeight) {\n tmpSimblock += this.ticketMaturity + meanVotingBlock\n tmpSimblock = Math.floor(tmpSimblock)\n simBlockMilestone.push(tmpSimblock)\n tmpSimblock += this.coinbaseMaturity\n tmpSimblock++\n }\n const blockListParam = simBlockMilestone.join(',')\n // get subsidy for milestones\n const url = `/api/stakingcalc/getBlocksReward?list=${blockListParam}`\n let response\n if (hasCache(url)) {\n response = responseCache[url]\n } else {\n // response = await axios.get(url)\n response = await requestJSON(url)\n responseCache[url] = response\n if (thisRequest !== requestCounter) {\n // new request was issued while waiting.\n this.startDateTarget.classList.remove('loading')\n return\n }\n }\n const rewardMap = response.rewardMap\n const rewardMyMap = new Map()\n for (const key in rewardMap) {\n rewardMyMap.set(Number(key), rewardMap[key])\n }\n while (simblock < numberOfBlocks + startingBlockHeight) {\n ticketPrice = this.theoreticalTicketPrice(simblock, coinAdjustmentFactor, currentStakePercent, meanVotingBlock) * ticketAdjustmentFactor\n ticketsPurchased = Math.floor(dcrBalance / ticketPrice)\n simulationTable[simulationTable.length - 1].ticketPrice = ticketPrice\n simulationTable[simulationTable.length - 1].ticketsPurchased = ticketsPurchased\n simblock += this.ticketMaturity + meanVotingBlock\n simblock = Math.floor(simblock)\n if (!rewardMyMap.has(simblock)) {\n continue\n }\n dcrBalance += rewardMyMap.get(simblock) * ticketsPurchased\n const blocksPassed = simblock - simulationTable[simulationTable.length - 1].simBlock\n const daysPassed = blocksPassed / blocksPerDay\n const day = simulationTable[simulationTable.length - 1].simDay + Math.floor(daysPassed)\n simulationTable.push({\n simBlock: simblock,\n simDay: day,\n dcrBalance: dcrBalance,\n reward: Number(rewardMyMap.get(simblock)) * ticketsPurchased,\n returnedFund: ticketPrice * ticketsPurchased,\n ticketPrice: this.theoreticalTicketPrice(simblock, coinAdjustmentFactor, currentStakePercent, meanVotingBlock) * ticketAdjustmentFactor\n })\n\n simblock += this.coinbaseMaturity\n simblock++\n }\n const simulationReward = ((dcrBalance - startingBalance) / startingBalance) * 100\n const excessBlocks = simblock - startingBlockHeight\n const stakingRward = (numberOfBlocks / excessBlocks) * simulationReward\n const overflow = startingBalance * (simulationReward - stakingRward) / 100\n simulationTable[simulationTable.length - 1].dcrBalance -= overflow\n simulationTable[simulationTable.length - 1].simDay -= (simblock - numberOfBlocks - startingBlockHeight) / blocksPerDay\n simulationTable[simulationTable.length - 1].reward -= overflow\n for (let i = simulationTable.length - 1; i > 0; i--) {\n if (simulationTable[i].reward >= 0) {\n break\n }\n simulationTable[i - 1].reward += simulationTable[i].reward\n simulationTable[i].reward = 0\n }\n this.createResultTable(stakingRward, simulationTable, numOfDays, startDate, amount)\n }\n\n createResultTable (reward, simulationTable, days, startDate, amount) {\n this.daysTextTarget.textContent = parseInt(days)\n // number of periods\n reward = !reward ? 0 : reward\n const totalAmount = reward * amount * 1 / 100\n this.percentageRoiTarget.textContent = reward.toFixed(2)\n this.amountRoiTarget.textContent = totalAmount.toFixed(2)\n if (!simulationTable || simulationTable.length === 0) {\n this.hideAll(this.tableTarget)\n } else {\n this.showAll(this.tableTarget)\n }\n this.tableBodyTarget.innerHTML = ''\n const _this = this\n simulationTable.forEach(item => {\n const exRow = document.importNode(_this.rowTemplateTarget.content, true)\n const fields = exRow.querySelectorAll('td')\n fields[0].innerText = _this.getDateFromDays(startDate, item.simDay)\n fields[1].innerText = item.simBlock\n item.returnedFund = !item.returnedFund ? 0 : item.returnedFund\n item.ticketPrice = !item.ticketPrice ? 0 : item.ticketPrice\n item.reward = !item.reward ? 0 : item.reward\n fields[2].innerText = item.ticketPrice.toFixed(2)\n fields[3].innerText = item.returnedFund.toFixed(2)\n fields[4].innerText = item.reward.toFixed(2)\n fields[5].innerText = item.dcrBalance.toFixed(2)\n fields[6].innerText = (100 * (item.dcrBalance - amount) / amount).toFixed(2)\n fields[7].innerText = item.ticketsPurchased ? item.ticketsPurchased : 0\n _this.tableBodyTarget.appendChild(exRow)\n })\n }\n\n theoreticalTicketPrice (blocknum, coinAdjustmentFactor, currentStakePercent, meanVotingBlock) {\n const projectedCoinsCirculating = this.maxCoinSupplyAtBlock(blocknum) * coinAdjustmentFactor * currentStakePercent\n const ticketPoolSize = (meanVotingBlock + this.ticketMaturity + this.coinbaseMaturity) * this.ticketsPerBlock\n return projectedCoinsCirculating / ticketPoolSize\n }\n\n maxCoinSupplyAtBlock (blocknum) {\n const maxSupply = (-(9 / (1e19)) * Math.pow(blocknum, 4) + (7 / (1e12)) * Math.pow(blocknum, 3) -\n (2 / (1e5)) * Math.pow(blocknum, 2) + 29.757 * blocknum + 76963 + 1680000) // Premine 1.68M\n return maxSupply\n }\n\n calcMeanVotingBlocks () {\n const logPoolSizeM1 = Math.log(this.poolSize - 1)\n const logPoolSize = Math.log(this.poolSize)\n let v = 0\n for (let i = 0; i <= this.ticketExpiry; i++) {\n v += Math.exp(Math.log(i) + (i - 1) * logPoolSizeM1 - i * logPoolSize)\n }\n return v\n }\n\n // Calculate and response\n async calculate () {\n const amount = parseFloat(this.amountTarget.value)\n if (!(amount > 0)) {\n this.amountErrorTarget.textContent = 'Amount must be greater than 0'\n return\n }\n this.amountErrorTarget.textContent = ''\n\n let startDate = new Date(this.startDateTarget.value)\n let endDate = new Date(this.endDateTarget.value)\n startDate = new Date(startDate.setUTCHours(0, 0, 0, 0))\n endDate = new Date(endDate.setUTCHours(0, 0, 0, 0))\n const days = this.getDaysOfRange(startDate, endDate)\n if (days < this.rewardPeriod) {\n this.startDateErrTarget.textContent = `You must stake for more than ${this.rewardPeriod} days`\n return\n }\n this.startDateErrTarget.textContent = ''\n this.updateQueryString()\n this.handlerRewardCalculator(days, startDate, amount)\n }\n}\n","/* global Turbolinks */\nimport { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport ws from '../services/messagesocket_service'\nimport globalEventBus from '../services/event_bus_service'\n\nfunction buildProgressBar (data) {\n const clean = dompurify.sanitize\n const progressVal = data.percentage_complete\n const timeRemaining = humanizeTime(data.seconds_to_complete)\n const htmlString = data.bar_msg.length > 0 ? clean(`<p style=\"font-size:14px;\">${data.bar_msg}</p>`, { FORBID_TAGS: ['svg', 'math'] }) : ''\n const subtitle = data.subtitle.trim()\n let notifStr = subtitle.length > 0 ? clean(`<span style=\"font-size:11px;\">notification : <i>${subtitle}</i></span>`, { FORBID_TAGS: ['svg', 'math'] }) : ''\n\n let remainingStr = 'pending'\n if (progressVal > 0) {\n remainingStr = data.seconds_to_complete > 0 ? 'remaining approx. ' + timeRemaining : '0sec'\n }\n\n if (progressVal === 100) {\n remainingStr = 'done'\n }\n\n if (subtitle === 'sync complete') {\n notifStr = ''\n }\n\n return htmlString + clean(`<div class=\"progress\" style=\"height:30px;border-radius:5px;\">\n <div class=\"progress-bar sync-progress-bar\" role=\"progressbar\" style=\"height:auto; width:` + progressVal + `%;\">\n <span class=\"nowrap ps-1 fw-bold\">Progress ` + progressVal + '% (' + remainingStr + `)</span>\n </div>\n </div>`, { FORBID_TAGS: ['svg', 'math'] }) + notifStr\n}\n\nfunction humanizeTime (secs) {\n const years = Math.floor(secs / 31536000) % 10\n const months = Math.floor(secs / 2628000) % 12\n const weeks = Math.floor(secs / 604800) % 4\n const days = Math.floor(secs / 86400) % 7\n const hours = Math.floor(secs / 3600) % 24\n const minutes = Math.floor(secs / 60) % 60\n const seconds = secs % 60\n const timeUnit = ['yr', 'mo', 'wk', 'd', 'hr', 'min', 'sec']\n\n return [years, months, weeks, days, hours, minutes, seconds]\n .map((v, i) => v !== 0 ? v + '' + timeUnit[i] : '')\n .join(' ')\n}\n\nlet hasRedirected = false\n\nexport default class extends Controller {\n static get targets () {\n return ['statusSyncing', 'futureBlock', 'init', 'address', 'message', 'searchResult']\n }\n\n connect () {\n this.progressBars = {\n 'initial-load': this.initTarget,\n 'addresses-sync': this.addressTarget\n }\n const isMutilchain = this.data.get('isMutilchain')\n const additionInfo = this.data.get('addInfo')\n if (isMutilchain === 'true') {\n this.searchResultTarget.innerHTML = additionInfo\n }\n ws.registerEvtHandler('blockchainSync', (evt) => {\n const d = JSON.parse(evt)\n let i\n\n for (i = 0; i < d.length; i++) {\n const v = d[i]\n\n const bar = this.progressBars[v.progress_bar_id]\n while (bar.firstChild) bar.removeChild(bar.firstChild)\n bar.innerHTML = buildProgressBar(v)\n\n if (v.subtitle === 'sync complete' && !hasRedirected) {\n hasRedirected = true // block consecutive calls.\n const msg = 'Blockchain synchronization complete. You will be redirected to the home page shortly.'\n this.messageTarget.querySelector('h5').textContent = msg\n setTimeout(() => Turbolinks.visit('/'), 10000)\n if (window.Notification.permission === 'granted') {\n const ntfn = new window.Notification('Blockchain Sync Complete', {\n body: msg,\n icon: '/images/dcrdata144x128.png'\n })\n setTimeout(() => ntfn.close(), 5000)\n }\n return\n }\n }\n })\n this.processBlock = this._processBlock.bind(this)\n globalEventBus.on('BLOCK_RECEIVED', this.processBlock)\n }\n\n disconnect () {\n ws.deregisterEvtHandlers('blockchainSync')\n globalEventBus.off('BLOCK_RECEIVED', this.processBlock)\n }\n\n _processBlock (blockData) {\n if (this.hasFutureBlockTarget) {\n Turbolinks.visit(window.location, { action: 'replace' })\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static get targets () {\n return ['tiles', 'ticketTiles', 'yearTile', 'weekTile']\n }\n\n connect () {\n const targetTimeStr = this.data.get('targetTime')\n const ticketTimeStr = this.data.get('ticketTime')\n this.chainType = this.data.get('chainType')\n if (!targetTimeStr) {\n return\n }\n this.targetDate = parseInt(targetTimeStr)\n this.runTargetCountDown()\n if (this.chainType === 'dcr') {\n this.ticketTime = parseInt(ticketTimeStr)\n this.runTicketTargetCountDown()\n }\n }\n\n runTargetCountDown () {\n this.getCountdown()\n const _this = this\n setInterval(function () { _this.getCountdown() }, 1000)\n }\n\n runTicketTargetCountDown () {\n this.getTicketCountdown()\n const _this = this\n setInterval(function () { _this.getTicketCountdown() }, 1000)\n }\n\n pad (n) {\n return (n < 10 ? '0' : '') + n\n }\n\n getTicketCountdown () {\n const currentDate = new Date().getTime()\n let secondsLeft = this.ticketTime - currentDate / 1000\n this.ticketDays = this.pad(parseInt(secondsLeft / 86400))\n secondsLeft = secondsLeft % 86400\n\n this.ticketHours = this.pad(parseInt(secondsLeft / 3600))\n secondsLeft = secondsLeft % 3600\n\n this.ticketMinutes = this.pad(parseInt(secondsLeft / 60))\n this.ticketSeconds = this.pad(parseInt(secondsLeft % 60))\n\n // format countdown string + set tag value\n this.ticketTilesTarget.innerHTML = '<span>' + this.ticketDays + '</span><span>' + this.ticketHours + '</span><span>' + this.ticketMinutes + '</span><span>' + this.ticketSeconds + '</span>'\n }\n\n getCountdown () {\n const currentDate = new Date().getTime()\n let secondsLeft = this.targetDate - currentDate / 1000\n\n // years handler\n this.years = null\n const numOfYears = parseInt(secondsLeft / 31536000)\n if (numOfYears > 0) {\n this.years = this.pad(numOfYears)\n secondsLeft = secondsLeft % 31536000\n }\n\n // week handler\n this.weeks = null\n const numOfWeek = parseInt(secondsLeft / 604800)\n if (numOfWeek > 0) {\n this.weeks = this.pad(numOfWeek)\n secondsLeft = secondsLeft % 604800\n }\n\n // days handler\n this.days = this.pad(parseInt(secondsLeft / 86400))\n secondsLeft = secondsLeft % 86400\n\n // hours handler\n this.hours = this.pad(parseInt(secondsLeft / 3600))\n secondsLeft = secondsLeft % 3600\n\n // minutes handler\n this.minutes = this.pad(parseInt(secondsLeft / 60))\n // seconds handler\n this.seconds = this.pad(parseInt(secondsLeft % 60))\n\n // format countdown string + set tag value\n let tileHtml = ''\n if (this.years !== null) {\n this.yearTileTarget.classList.remove('d-hide')\n tileHtml += '<span>' + this.years + '</span>'\n } else {\n this.yearTileTarget.classList.add('d-hide')\n }\n if (this.weeks !== null) {\n this.weekTileTarget.classList.remove('d-hide')\n tileHtml += '<span>' + this.weeks + '</span>'\n } else {\n this.weekTileTarget.classList.add('d-hide')\n }\n tileHtml += '<span>' + this.days + '</span><span>' + this.hours + '</span><span>' + this.minutes + '</span><span>' + this.seconds + '</span>'\n this.tilesTarget.innerHTML = tileHtml\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport ws from '../services/messagesocket_service'\nimport { barChartPlotter } from '../helpers/chart_helper'\nimport { getDefault } from '../helpers/module_helper'\nimport dompurify from 'dompurify'\nimport { requestJSON } from '../helpers/http'\n\nlet Dygraph // lazy loaded on connect\n\n// Common code for ploting dygraphs\nfunction legendFormatter (data) {\n if (data.x == null) return ''\n let html = this.getLabels()[0] + ': ' + data.xHTML\n data.series.map((series) => {\n const labeledData = ' <span style=\"color: ' + series.color + ';\">' + series.labelHTML + ': ' + series.yHTML\n html += '<br>' + series.dashHTML + labeledData + '</span>'\n })\n dompurify.sanitize(html, { FORBID_TAGS: ['svg', 'math'] })\n return html\n}\n\n// Plotting the actual ticketpool graphs\nlet ms = 0\nlet origDate = 0\n\nfunction Comparator (a, b) {\n if (a[0] < b[0]) return -1\n if (a[0] > b[0]) return 1\n return 0\n}\n\nfunction purchasesGraphData (items, memP) {\n const s = []\n let finalDate = ''\n\n items.time.map((n, i) => {\n finalDate = new Date(n)\n s.push([finalDate, 0, items.immature[i], items.live[i], items.price[i]])\n })\n\n if (memP) {\n s.push([new Date(memP.time), memP.count, 0, 0, memP.price]) // add mempool\n }\n\n origDate = s[0][0] - new Date(0)\n ms = (finalDate - new Date(0)) + 1000\n\n return s\n}\n\nfunction priceGraphData (items, memP) {\n let mempl = 0\n let mPrice = 0\n let mCount = 0\n let p = []\n\n if (memP) {\n mPrice = memP.price\n mCount = memP.count\n }\n\n items.price.map((n, i) => {\n if (n === mPrice) {\n mempl = mCount\n p.push([n, mempl, items.immature[i], items.live[i]])\n } else {\n p.push([n, 0, items.immature[i], items.live[i]])\n }\n })\n\n if (mempl === 0) {\n p.push([mPrice, mCount, 0, 0]) // add mempool\n p = p.sort(Comparator)\n }\n\n return p\n}\n\nfunction populateOutputs (data) {\n const totalCount = parseInt(data.count.reduce((a, n) => { return a + n }, 0))\n let tableData = '<tr><th style=\"width: 30%;\"># of sstxcommitment outputs</th><th>Count</th><th>% Occurrence</th></tr>'\n data.outputs.map((n, i) => {\n const count = parseInt(data.count[i])\n tableData += `<tr><td class=\"pe-2 lh1rem vam nowrap xs-w117 fw-bold\">${parseInt(n)}</td>\n <td><span class=\"hash lh1rem\">${count}</span></td>\n <td><span class=\"hash lh1rem\">${((count * 100) / totalCount).toFixed(4)}% </span></td></tr>`\n })\n const tbody = document.createElement('tbody')\n tbody.innerHTML = tableData\n return tbody\n}\n\nfunction getWindow (val) {\n switch (val) {\n case 'day': return [(ms - 8.64E+07) - 1000, ms]\n case 'wk': return [(ms - 6.048e+8) - 1000, ms]\n case 'mo': return [(ms - 2.628e+9) - 1000, ms]\n default: return [origDate, ms]\n }\n}\n\nconst commonOptions = {\n retainDateWindow: false,\n showRangeSelector: true,\n digitsAfterDecimal: 8,\n fillGraph: true,\n stackedGraph: true,\n plotter: barChartPlotter,\n legendFormatter: legendFormatter,\n labelsSeparateLines: true,\n rangeSelectorHeight: 30,\n legend: 'follow'\n}\n\nexport default class extends Controller {\n static get targets () {\n return ['zoom', 'bars', 'age', 'wrapper', 'outputs']\n }\n\n async initialize () {\n this.mempool = false\n this.tipHeight = 0\n this.purchasesGraph = null\n this.priceGraph = null\n this.graphData = {\n time_chart: null,\n price_chart: null\n }\n this.zoom = 'all'\n this.bars = 'all'\n\n Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n this.chartCount += 2\n this.purchasesGraph = this.makePurchasesGraph()\n this.priceGraph = this.makePriceGraph()\n }\n\n connect () {\n ws.registerEvtHandler('newblock', () => {\n ws.send('getticketpooldata', this.bars)\n })\n\n ws.registerEvtHandler('getticketpooldataResp', (evt) => {\n if (evt === '') {\n return\n }\n const data = JSON.parse(evt)\n this.processData(data)\n })\n\n this.fetchAll()\n }\n\n async fetchAll () {\n this.wrapperTarget.classList.add('loading')\n const chartsResponse = await requestJSON('/api/ticketpool/charts')\n this.processData(chartsResponse)\n this.wrapperTarget.classList.remove('loading')\n }\n\n processData (data) {\n if (data.mempool) {\n // If mempool data is included, assume the data height is the tip.\n this.mempool = data.mempool\n this.tipHeight = data.height\n }\n if (data.time_chart) {\n // Only append the mempool data if this data goes to the tip.\n const mempool = this.tipHeight === data.height ? this.mempool : false\n this.graphData.time_chart = purchasesGraphData(data.time_chart, mempool)\n if (this.purchasesGraph !== null) {\n this.purchasesGraph.updateOptions({ file: this.graphData.time_chart })\n this.purchasesGraph.resetZoom()\n }\n }\n if (data.price_chart) {\n this.graphData.price_chart = priceGraphData(data.price_chart, this.mempool)\n if (this.priceGraph !== null) {\n this.priceGraph.updateOptions({ file: this.graphData.price_chart })\n }\n }\n if (data.outputs_chart) {\n while (this.outputsTarget.firstChild) this.outputsTarget.removeChild(this.outputsTarget.firstChild)\n this.outputsTarget.appendChild(populateOutputs(data.outputs_chart))\n }\n }\n\n disconnect () {\n this.purchasesGraph.destroy()\n this.priceGraph.destroy()\n\n ws.deregisterEvtHandlers('ticketpool')\n ws.deregisterEvtHandlers('getticketpooldataResp')\n }\n\n onZoom (e) {\n const target = e.srcElement || e.target\n this.zoomTargets.forEach((zoomTarget) => {\n zoomTarget.classList.remove('active')\n })\n target.classList.add('active')\n this.zoom = e.target.name\n this.purchasesGraph.updateOptions({ dateWindow: getWindow(this.zoom) })\n }\n\n async onBarsChange (e) {\n const target = e.srcElement || e.target\n this.barsTargets.forEach((barsTarget) => {\n barsTarget.classList.remove('active')\n })\n this.bars = e.target.name\n target.classList.add('active')\n this.wrapperTarget.classList.add('loading')\n const url = '/api/ticketpool/bydate/' + this.bars\n const ticketPoolResponse = await requestJSON(url)\n this.purchasesGraph.updateOptions({\n file: purchasesGraphData(ticketPoolResponse.time_chart)\n })\n this.wrapperTarget.classList.remove('loading')\n }\n\n makePurchasesGraph () {\n const d = this.graphData.time_chart || [[0, 0, 0, 0, 0]]\n const p = {\n labels: ['Date', 'Mempool Tickets', 'Immature Tickets', 'Live Tickets', 'Ticket Value'],\n colors: ['#FF8C00', '#006600', '#2971FF', '#ff0090'],\n title: 'Tickets Purchase Distribution',\n ylabel: 'Number of Tickets',\n y2label: 'A.v.g. Tickets Value (DCR)',\n dateWindow: getWindow('day'),\n series: {\n 'Ticket Value': {\n axis: 'y2',\n plotter: Dygraph.Plotters.linePlotter\n }\n },\n axes: { y2: { axisLabelFormatter: (d) => { return d.toFixed(1) } } }\n }\n return new Dygraph(\n document.getElementById('tickets-by-purchase-date'),\n d, { ...commonOptions, ...p }\n )\n }\n\n makePriceGraph () {\n const d = this.graphData.price_chart || [[0, 0, 0, 0]]\n const p = {\n labels: ['Price', 'Mempool Tickets', 'Immature Tickets', 'Live Tickets'],\n colors: ['#FF8C00', '#006600', '#2971FF'],\n title: 'Ticket Price Distribution',\n labelsKMB: true,\n xlabel: 'Ticket Price (DCR)',\n ylabel: 'Number of Tickets'\n }\n return new Dygraph(\n document.getElementById('tickets-by-purchase-price'),\n d, { ...commonOptions, ...p }\n )\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\nimport globalEventBus from '../services/event_bus_service'\n\nfunction isCorrectVal (value) {\n return /^\\d+$/.test(value) && value > 0\n}\n\nexport default class extends Controller {\n static get targets () {\n return ['age', 'blocktime', 'header', 'duration']\n }\n\n connect () {\n this.startAgeRefresh()\n this.startDurationRefresh()\n this.processBlock = this._processBlock.bind(this)\n this.targetBlockTime = parseInt(document.getElementById('navBar').dataset.blocktime)\n if (this.hasBlocktimeTarget) {\n globalEventBus.on('BLOCK_RECEIVED', this.processBlock)\n }\n if (this.hasHeaderTarget) {\n this.headerTargets.forEach(h => {\n h.textContent = h.dataset.jstitle\n })\n }\n }\n\n disconnect () {\n this.stopAgeRefresh()\n this.stopDurationRefresh()\n if (this.hasBlocktimeTarget) {\n globalEventBus.off('BLOCK_RECEIVED', this.processBlock)\n }\n }\n\n _processBlock (blockData) {\n const block = blockData.block\n this.blocktimeTarget.dataset.stamp = block.unixStamp\n this.blocktimeTarget.classList.remove('text-danger')\n this.blocktimeTarget.textContent = humanize.timeSince(block.unixStamp)\n }\n\n startAgeRefresh () {\n setTimeout(() => {\n this.setAges()\n })\n this.ageRefreshTimer = setInterval(() => {\n this.setAges()\n }, 10 * 1000)\n }\n\n startDurationRefresh () {\n setTimeout(() => {\n this.setDurations()\n })\n this.durationRefreshTimer = setInterval(() => {\n this.setDurations()\n }, 10 * 1000)\n }\n\n stopAgeRefresh () {\n if (this.ageRefreshTimer) {\n clearInterval(this.ageRefreshTimer)\n }\n }\n\n stopDurationRefresh () {\n if (this.durationRefreshTimer) {\n clearInterval(this.durationRefreshTimer)\n }\n }\n\n setDurations () {\n if (!this.hasDurationTarget) return\n this.durationTargets.forEach((el) => {\n el.textContent = humanize.timeDuration(el.dataset.duration)\n })\n }\n\n setAges () {\n if (this.hasBlocktimeTarget) {\n const lbt = this.blocktimeTarget.dataset.stamp\n this.blocktimeTarget.textContent = humanize.timeSince(lbt)\n if ((new Date()).getTime() / 1000 - lbt > 8 * this.targetBlockTime) { // 8*blocktime = 40minutes = 12000 seconds\n this.element.classList.add('text-danger')\n }\n }\n if (!this.hasAgeTarget) return\n this.ageTargets.forEach((el) => {\n if (isCorrectVal(el.dataset.age)) {\n el.textContent = humanize.timeSince(el.dataset.age)\n } else if (el.dataset.age !== '') {\n el.textContent = humanize.timeSince(Date.parse(el.dataset.age) / 1000)\n }\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\nimport globalEventBus from '../services/event_bus_service'\n\nexport default class extends Controller {\n static get targets () {\n return ['difficulty', 'blockHeight', 'blockTime', 'supportedTable']\n }\n\n connect () {\n const activeChainStr = this.data.get('activeChain')\n if (!activeChainStr || activeChainStr === '') {\n return\n }\n this.activeChainArr = activeChainStr.split(',')\n const _this = this\n this.activeChainArr.forEach(activeChain => {\n if (!activeChain || activeChain === '') {\n return\n }\n switch (activeChain) {\n case 'dcr':\n _this.processBlock = _this._processBlock.bind(_this)\n globalEventBus.on('BLOCK_RECEIVED', _this.processBlock)\n break\n case 'ltc':\n _this.processLTCBlock = _this._processLTCBlock.bind(_this)\n globalEventBus.on('LTC_BLOCK_RECEIVED', _this.processLTCBlock)\n break\n case 'btc':\n _this.processBTCBlock = _this._processBTCBlock.bind(_this)\n globalEventBus.on('BTC_BLOCK_RECEIVED', _this.processBTCBlock)\n }\n })\n }\n\n disconnect () {\n const _this = this\n this.activeChainArr.forEach(activeChain => {\n if (!activeChain || activeChain === '') {\n return\n }\n switch (activeChain) {\n case 'dcr':\n globalEventBus.off('BLOCK_RECEIVED', _this.processBlock)\n break\n case 'ltc':\n globalEventBus.off('LTC_BLOCK_RECEIVED', _this.processLTCBlock)\n break\n case 'btc':\n globalEventBus.off('BTC_BLOCK_RECEIVED', _this.processBTCBlock)\n }\n })\n }\n\n _processBlock (blockData) {\n this.processMutilchainBlock(blockData, 'dcr')\n }\n\n _processLTCBlock (blockData) {\n this.processMutilchainBlock(blockData, 'ltc')\n }\n\n _processBTCBlock (blockData) {\n this.processMutilchainBlock(blockData, 'btc')\n }\n\n processMutilchainBlock (blockData, chainType) {\n const blockHeightObj = document.getElementById(chainType + '_blockHeight')\n const txCountObj = document.getElementById(chainType + '_txcount')\n const coinSupplyObj = document.getElementById(chainType + '_coinSupply')\n const block = blockData.block\n blockHeightObj.textContent = block.height\n blockHeightObj.href = (chainType === 'dcr' ? '' : '/' + chainType) + `/block/${block.hash}`\n\n // handler extra data\n const extra = blockData.extra\n if (!extra) {\n return\n }\n txCountObj.textContent = humanize.commaWithDecimal(extra.total_transactions, 0)\n coinSupplyObj.textContent = humanize.commaWithDecimal(extra.coin_value_supply, 2)\n }\n}\n","import txInBlock from '../helpers/block_helper'\nimport globalEventBus from '../services/event_bus_service'\nimport { barChartPlotter } from '../helpers/chart_helper'\nimport { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\nimport { MiniMeter } from '../helpers/meters.js'\nimport { darkEnabled } from '../services/theme_service'\nimport { getDefault } from '../helpers/module_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst chartLayout = {\n showRangeSelector: true,\n legend: 'follow',\n fillGraph: true,\n colors: ['#0c644e', '#f36e6e'],\n stackedGraph: true,\n legendFormatter: agendasLegendFormatter,\n labelsSeparateLines: true,\n labelsKMB: true,\n labelsUTC: true\n}\n\nfunction agendasLegendFormatter (data) {\n if (data.x == null) return ''\n let html\n if (this.getLabels()[0] === 'Date') {\n html = this.getLabels()[0] + ': ' + humanize.date(data.x)\n } else {\n html = this.getLabels()[0] + ': ' + data.xHTML\n }\n const total = data.series.reduce((total, n) => {\n return total + n.y\n }, 0)\n data.series.forEach((series) => {\n const percentage = total !== 0 ? ((series.y * 100) / total).toFixed(2) : 0\n html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n html += `<br>${series.dashHTML}<span style=\"color: ${series.color};\">${series.labelHTML}: ${series.yHTML} (${percentage}%)</span>`\n })\n return html\n}\n\nfunction cumulativeVoteChoicesData (d) {\n if (d == null || !(d.yes instanceof Array)) return [[0, 0, 0]]\n return d.yes.map((n, i) => {\n return [\n new Date(d.time[i]),\n n,\n d.no[i]\n ]\n })\n}\n\nfunction voteChoicesByBlockData (d) {\n if (d == null || !(d.yes instanceof Array)) return [[0, 0, 0]]\n return d.yes.map((n, i) => {\n return [\n d.height[i],\n n,\n d.no[i]\n ]\n })\n}\n\nexport default class extends Controller {\n static get targets () {\n return ['unconfirmed', 'confirmations', 'formattedAge', 'age', 'progressBar',\n 'ticketStage', 'expiryChance', 'mempoolTd', 'ticketMsg',\n 'expiryMsg', 'statusMsg', 'spendingTx', 'approvalMeter', 'cumulativeVoteChoices',\n 'voteChoicesByBlock', 'outputRow', 'showMoreText', 'showMoreIcon']\n }\n\n initialize () {\n this.emptydata = [[0, 0, 0]]\n this.cumulativeVoteChoicesChart = false\n this.voteChoicesByBlockChart = false\n }\n\n async connect () {\n this.txid = this.data.get('txid')\n this.type = this.data.get('type')\n this.isTSpend = this.type === 'Treasury Spend'\n this.processBlock = this._processBlock.bind(this)\n this.tspendExpend = false\n this.targetBlockTime = parseInt(document.getElementById('navBar').dataset.blocktime)\n globalEventBus.on('BLOCK_RECEIVED', this.processBlock)\n\n if (this.isTSpend) {\n this.Dygraph = await getDefault(\n import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n )\n this.drawCharts()\n const agendaResponse = await requestJSON('/api/treasury/votechart/' + this.txid)\n this.cumulativeVoteChoicesChart.updateOptions({\n file: cumulativeVoteChoicesData(agendaResponse.by_time)\n })\n this.voteChoicesByBlockChart.updateOptions({\n file: voteChoicesByBlockData(agendaResponse.by_height)\n })\n }\n\n // Approval meter for tspend votes.\n if (!this.hasApprovalMeterTarget) return // there will be no meter.\n\n const d = this.approvalMeterTarget.dataset\n const opts = {\n darkMode: darkEnabled(),\n segments: [\n { end: d.threshold, color: '#ed6d47' },\n { end: 1, color: '#2dd8a3' }\n ]\n }\n this.approvalMeter = new MiniMeter(this.approvalMeterTarget, opts)\n }\n\n drawCharts () {\n this.cumulativeVoteChoicesChart = this.drawChart(\n this.cumulativeVoteChoicesTarget,\n {\n labels: ['Date', 'Yes', 'No'],\n ylabel: 'Cumulative Vote Choices Cast',\n title: 'Cumulative Vote Choices',\n labelsKMB: true\n }\n )\n this.voteChoicesByBlockChart = this.drawChart(\n this.voteChoicesByBlockTarget,\n {\n labels: ['Block Height', 'Yes', 'No'],\n ylabel: 'Vote Choices Cast',\n title: 'Vote Choices By Block',\n plotter: barChartPlotter\n }\n )\n }\n\n toggleExpand () {\n this.tspendExpend = !this.tspendExpend\n if (!this.outputRowTargets || this.outputRowTargets.length === 0) {\n return\n }\n this.outputRowTargets.forEach((rowTarget) => {\n // get index\n const index = rowTarget.dataset.index\n if (Number(index) < 5) {\n return\n }\n if (this.tspendExpend) {\n rowTarget.classList.remove('d-hide')\n } else {\n rowTarget.classList.add('d-hide')\n }\n })\n this.showMoreTextTarget.textContent = this.tspendExpend ? 'Show Less' : 'Show More'\n if (this.tspendExpend) {\n this.showMoreIconTarget.classList.add('reverse')\n } else {\n this.showMoreIconTarget.classList.remove('reverse')\n }\n }\n\n disconnect () {\n globalEventBus.off('BLOCK_RECEIVED', this.processBlock)\n }\n\n drawChart (el, options, Dygraph) {\n return new this.Dygraph(\n el,\n this.emptydata,\n {\n ...chartLayout,\n ...options\n }\n )\n }\n\n _processBlock (blockData) {\n const block = blockData.block\n const extra = blockData.extra\n // If this is a transaction in mempool, it will have an unconfirmedTarget.\n if (this.hasUnconfirmedTarget) {\n const txid = this.unconfirmedTarget.dataset.txid\n if (txInBlock(txid, block)) {\n this.confirmationsTarget.textContent = this.confirmationsTarget.dataset.yes.replace('#', '1').replace('@', '')\n this.confirmationsTarget.classList.add('confirmed')\n // Set the block link\n const link = this.unconfirmedTarget.querySelector('.mp-unconfirmed-link')\n link.href = '/block/' + block.hash\n link.textContent = block.height\n this.unconfirmedTarget.querySelector('.mp-unconfirmed-msg').classList.add('d-none')\n // Reset the age and time to be based off of the block time.\n const age = this.unconfirmedTarget.querySelector('.mp-unconfirmed-time')\n age.dataset.age = block.time\n age.textContent = humanize.timeSince(block.unixStamp)\n this.formattedAgeTarget.textContent = humanize.date(block.time, true)\n this.ageTarget.dataset.age = block.unixStamp\n this.ageTarget.textContent = humanize.timeSince(block.unixStamp)\n this.ageTarget.dataset.timeTarget = 'age'\n // Prepare the progress bar for updating\n if (this.hasProgressBarTarget) {\n this.progressBarTarget.dataset.confirmHeight = block.height\n }\n delete this.unconfirmedTarget.dataset.txTarget\n }\n }\n\n // Look for any unconfirmed matching tx hashes in the table.\n if (this.hasMempoolTdTarget) {\n this.mempoolTdTargets.forEach((td) => {\n const txid = td.dataset.txid\n if (txInBlock(txid, block)) {\n const link = document.createElement('a')\n link.textContent = block.height\n link.href = `/block/${block.height}`\n while (td.firstChild) td.removeChild(td.firstChild)\n td.appendChild(link)\n delete td.dataset.txTarget\n }\n })\n }\n\n // Advance the progress bars.\n if (!this.hasProgressBarTarget) {\n return\n }\n const bar = this.progressBarTarget\n let txBlockHeight = parseInt(bar.dataset.confirmHeight)\n if (txBlockHeight === 0) {\n return\n }\n let confirmations = block.height - txBlockHeight + 1\n let txType = bar.dataset.txType\n let complete = parseInt(bar.getAttribute('aria-valuemax'))\n\n if (txType === 'LiveTicket') {\n // Check for a spending vote\n const votes = block.Votes || []\n for (const idx in votes) {\n const vote = votes[idx]\n if (this.txid === vote.VoteInfo.ticket_spent) {\n const link = document.createElement('a')\n link.href = `/tx/${vote.TxID}`\n link.textContent = 'vote'\n const msg = this.spendingTxTarget\n while (msg.firstChild) msg.removeChild(msg.firstChild)\n msg.appendChild(link)\n this.ticketStageTarget.innerHTML = 'Voted'\n return\n }\n }\n }\n\n if (confirmations === complete + 1) {\n // Hide bars after completion, or change ticket to live ticket\n if (txType === 'Ticket') {\n txType = bar.dataset.txType = 'LiveTicket'\n const expiry = parseInt(bar.dataset.expiry)\n bar.setAttribute('aria-valuemax', expiry)\n txBlockHeight = bar.dataset.confirmHeight = block.height\n this.ticketMsgTarget.classList.add('d-none')\n this.expiryMsgTarget.classList.remove('d-none')\n confirmations = 1\n complete = expiry\n } else {\n this.ticketStageTarget.innerHTML = txType === 'LiveTicket' ? 'Expired' : 'Mature'\n return\n }\n }\n\n const barMsg = bar.querySelector('span')\n if (confirmations === complete) {\n // Special case: progress reaching max\n switch (txType) {\n case 'Ticket':\n barMsg.textContent = 'Mature. Eligible to vote on next block.'\n this.statusMsgTarget.textContent = 'live'\n break\n case 'LiveTicket':\n barMsg.textContent = 'Ticket has expired'\n delete bar.dataset.txTarget\n this.statusMsgTarget.textContent = 'expired'\n break\n default: // Vote\n barMsg.textContent = 'Mature. Ready to spend.'\n this.statusMsgTarget.textContent = 'mature'\n }\n return\n }\n\n // Otherwise, set the bar appropriately\n const blocksLeft = complete + 1 - confirmations\n const remainingTime = blocksLeft * this.targetBlockTime\n switch (txType) {\n case 'LiveTicket': {\n barMsg.textContent = `block ${confirmations} of ${complete} (${(remainingTime / 86400.0).toFixed(1)} days remaining)`\n // Chance of expiring is (1-P)^N where P := single-block probability of being picked, N := blocks remaining.\n const pctChance = Math.pow(1 - parseFloat(bar.dataset.ticketsPerBlock) / extra.pool_info.size, blocksLeft) * 100\n this.expiryChanceTarget.textContent = `${pctChance.toFixed(2)}%`\n break\n }\n case 'Ticket':\n barMsg.textContent = `Immature, eligible to vote in ${blocksLeft} blocks (${(remainingTime / 3600.0).toFixed(1)} hours remaining)`\n break\n default: // Vote\n barMsg.textContent = `Immature, spendable in ${blocksLeft} blocks (${(remainingTime / 3600.0).toFixed(1)} hours remaining)`\n }\n bar.setAttribute('aria-valuenow', confirmations)\n bar.style.width = `${(confirmations / complete * 100).toString()}%`\n }\n\n toggleScriptData (e) {\n const target = e.srcElement || e.target\n const scriptData = target.querySelector('div.script-data')\n if (!scriptData) return\n scriptData.classList.toggle('d-hide')\n }\n\n _setNightMode (state) {\n if (this.approvalMeter) {\n this.approvalMeter.setDarkMode(state.nightMode)\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport globalEventBus from '../services/event_bus_service'\nimport ws from '../services/messagesocket_service'\n\nconst conversionRate = 100000000\n\nfunction makeNode (html) {\n const div = document.createElement('div')\n div.innerHTML = dompurify.sanitize(html, { FORBID_TAGS: ['svg', 'math'] })\n return div.firstChild\n}\n\nfunction makeMempoolBlock (block) {\n let fees = 0\n if (!block.Transactions) return\n for (const tx of block.Transactions) {\n fees += tx.Fees\n }\n\n return makeNode(`<div class=\"block visible\">\n <div class=\"block-info\">\n <a class=\"color-code\" href=\"/mempool\">Mempool</a>\n <div class=\"mono\" style=\"line-height: 1;\">${Math.floor(block.Total)} DCR</div>\n <span class=\"timespan\">\n <span data-time-target=\"age\" data-age=\"${block.Time}\"></span>\n </span>\n </div>\n <div class=\"block-rows\">\n ${makeRewardsElement(block.Subsidy, fees, block.Votes.length, '#')}\n ${makeVoteElements(block.Votes)}\n ${makeTicketAndRevocationElements(block.Tickets, block.Revocations, '/mempool')}\n ${makeTransactionElements(block.Transactions, '/mempool')}\n </div>\n </div>`\n )\n}\n\nfunction newBlockHtmlElement (block) {\n let rewardTxId\n for (const tx of block.Transactions) {\n if (tx.Coinbase) {\n rewardTxId = tx.TxID\n break\n }\n }\n\n return makeNode(`<div class=\"block visible\">\n ${makeBlockSummary(block.Height, block.Total, block.Time)}\n <div class=\"block-rows\">\n ${makeRewardsElement(block.Subsidy, block.MiningFee, block.Votes.length, rewardTxId)}\n ${makeVoteElements(block.Votes)}\n ${makeTicketAndRevocationElements(block.Tickets, block.Revocations, `/block/${block.Height}`)}\n ${makeTransactionElements(block.Transactions, `/block/${block.Height}`)}\n </div>\n </div>`\n )\n}\n\nfunction makeBlockSummary (blockHeight, totalSent, time) {\n return `<div class=\"block-info\">\n <a class=\"color-code\" href=\"/block/${blockHeight}\">${blockHeight}</a>\n <div class=\"mono\" style=\"line-height: 1;\">${Math.floor(totalSent)} DCR</div>\n <span class=\"timespan\">\n <span data-time-target=\"age\" data-age=\"${time}\"></span> ago\n </span>\n </div>`\n}\n\nfunction makeRewardsElement (subsidy, fee, voteCount, rewardTxId) {\n if (!subsidy) {\n return `<div class=\"block-rewards\">\n <span class=\"pow\"><span class=\"paint\" style=\"width:100%;\"></span></span>\n <span class=\"pos\"><span class=\"paint\" style=\"width:100%;\"></span></span>\n <span class=\"fund\"><span class=\"paint\" style=\"width:100%;\"></span></span>\n <span class=\"fees\" title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'></span>\n </div>`\n }\n\n const pow = subsidy.pow / conversionRate\n const pos = subsidy.pos / conversionRate\n const fund = (subsidy.developer || subsidy.dev) / conversionRate\n\n const backgroundColorRelativeToVotes = `style=\"width: ${voteCount * 20}%\"` // 5 blocks = 100% painting\n\n // const totalDCR = Math.round(pow + fund + fee);\n const totalDCR = 1\n return `<div class=\"block-rewards\" style=\"flex-grow: ${totalDCR}\">\n <span class=\"pow\" style=\"flex-grow: ${pow}\"\n title='{\"object\": \"PoW Reward\", \"total\": \"${pow}\"}' data-visualBlocks-target=\"tooltip\">\n <a class=\"block-element-link\" href=\"/tx/${rewardTxId}\">\n <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n </a>\n </span>\n <span class=\"pos\" style=\"flex-grow: ${pos}\"\n title='{\"object\": \"PoS Reward\", \"total\": \"${pos}\"}' data-visualBlocks-target=\"tooltip\">\n <a class=\"block-element-link\" href=\"/tx/${rewardTxId}\">\n <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n </a>\n </span>\n <span class=\"fund\" style=\"flex-grow: ${fund}\"\n title='{\"object\": \"Project Fund\", \"total\": \"${fund}\"}' data-visualBlocks-target=\"tooltip\">\n <a class=\"block-element-link\" href=\"/tx/${rewardTxId}\">\n <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n </a>\n </span>\n <span class=\"fees\" style=\"flex-grow: ${fee}\"\n title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}' data-visualBlocks-target=\"tooltip\">\n <a class=\"block-element-link\" href=\"/tx/${rewardTxId}\"></a>\n </span>\n </div>`\n}\n\nfunction makeVoteElements (votes) {\n let totalDCR = 0\n const voteElements = (votes || []).map(vote => {\n totalDCR += vote.Total\n return `<span style=\"background-color: ${vote.VoteValid ? '#2971ff' : 'rgba(253, 113, 74, 0.8)'}\"\n title='{\"object\": \"Vote\", \"total\": \"${vote.Total}\", \"voteValid\": \"${vote.VoteValid}\"}' data-visualBlocks-target=\"tooltip\">\n <a class=\"block-element-link\" href=\"/tx/${vote.TxID}\"></a>\n </span>`\n })\n\n // append empty squares to votes\n for (let i = voteElements.length; i < 5; i++) {\n voteElements.push('<span title=\"Empty vote slot\"></span>')\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-votes\" style=\"flex-grow: ${totalDCR}\">\n ${voteElements.join('\\n')}\n </div>`\n}\n\nfunction makeTicketAndRevocationElements (tickets, revocations, blockHref) {\n let totalDCR = 0\n\n const ticketElements = (tickets || []).map(ticket => {\n totalDCR += ticket.Total\n return makeTxElement(ticket, 'block-ticket', 'Ticket')\n })\n if (ticketElements.length > 50) {\n const total = ticketElements.length\n ticketElements.splice(30)\n ticketElements.push(`<span class=\"block-ticket\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} tickets\">\n <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n </span>`)\n }\n const revocationElements = (revocations || []).map(revocation => {\n totalDCR += revocation.Total\n return makeTxElement(revocation, 'block-rev', 'Revocation')\n })\n\n const ticketsAndRevocationElements = ticketElements.concat(revocationElements)\n\n // append empty squares to tickets+revs\n for (let i = ticketsAndRevocationElements.length; i < 20; i++) {\n ticketsAndRevocationElements.push('<span title=\"Empty ticket slot\"></span>')\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-tickets\" style=\"flex-grow: ${totalDCR}\">\n ${ticketsAndRevocationElements.join('\\n')}\n </div>`\n}\n\nfunction makeTransactionElements (transactions, blockHref) {\n let totalDCR = 0\n const transactionElements = (transactions || []).map(tx => {\n totalDCR += tx.Total\n return makeTxElement(tx, 'block-tx', 'Transaction', true)\n })\n\n if (transactionElements.length > 50) {\n const total = transactionElements.length\n transactionElements.splice(30)\n transactionElements.push(`<span class=\"block-tx\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} transactions\">\n <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n </span>`)\n }\n\n // totalDCR = Math.round(totalDCR);\n totalDCR = 1\n return `<div class=\"block-transactions\" style=\"flex-grow: ${totalDCR}\">\n ${transactionElements.join('\\n')}\n </div>`\n}\n\nfunction makeTxElement (tx, className, type, appendFlexGrow) {\n // const style = [ `opacity: ${(tx.VinCount + tx.VoutCount) / 10}` ];\n const style = []\n if (appendFlexGrow) {\n style.push(`flex-grow: ${Math.round(tx.Total)}`)\n }\n\n return `<span class=\"${className}\" style=\"${style.join('; ')}\" data-visualBlocks-target=\"tooltip\"\n title='{\"object\": \"${type}\", \"total\": \"${tx.Total}\", \"vout\": \"${tx.VoutCount}\", \"vin\": \"${tx.VinCount}\"}'>\n <a class=\"block-element-link\" href=\"/tx/${tx.TxID}\"></a>\n </span>`\n}\n\nexport default class extends Controller {\n static get targets () {\n return ['box', 'title', 'showmore', 'root', 'txs', 'tooltip', 'block']\n }\n\n connect () {\n this.handleVisualBlocksUpdate = this._handleVisualBlocksUpdate.bind(this)\n globalEventBus.on('BLOCK_RECEIVED', this.handleVisualBlocksUpdate)\n\n ws.registerEvtHandler('getmempooltrimmedResp', (event) => {\n console.log('received mempooltx response', event)\n this.handleMempoolUpdate(event)\n })\n\n ws.registerEvtHandler('mempool', (event) => {\n ws.send('getmempooltrimmed', '')\n })\n\n this.refreshBlocksDisplay = this._refreshBlocksDisplay.bind(this)\n // on load (js file is loaded after loading html content)\n window.addEventListener('resize', this.refreshBlocksDisplay)\n\n // allow some ms for page to properly render blocks before refreshing display\n setTimeout(this.refreshBlocksDisplay, 500)\n }\n\n disconnect () {\n ws.deregisterEvtHandlers('getmempooltrimmedResp')\n ws.deregisterEvtHandlers('mempool')\n globalEventBus.off('BLOCK_RECEIVED', this.handleVisualBlocksUpdate)\n window.removeEventListener('resize', this.refreshBlocksDisplay)\n }\n\n _handleVisualBlocksUpdate (newBlock) {\n const block = newBlock.block\n // show only regular tx in block.Transactions, exclude coinbase (reward) transactions\n const transactions = block.Tx.filter(tx => !tx.Coinbase)\n // trim unwanted data in this block\n const trimmedBlockInfo = {\n Time: block.time,\n Height: block.height,\n Total: block.TotalSent,\n MiningFee: block.MiningFee,\n Subsidy: block.Subsidy,\n Votes: block.Votes,\n Tickets: block.Tickets,\n Revocations: block.Revs,\n Transactions: transactions\n }\n\n const box = this.boxTarget\n box.insertBefore(newBlockHtmlElement(trimmedBlockInfo), box.firstChild.nextSibling)\n // hide last visible block as 1 more block is now visible\n const vis = this.visibleBlocks()\n vis[vis.length - 1].classList.remove('visible')\n // remove last block from dom to maintain max of 30 blocks (hidden or visible) in dom at any time\n box.removeChild(box.lastChild)\n this.setupTooltips()\n }\n\n handleMempoolUpdate (evt) {\n const mempool = JSON.parse(evt)\n mempool.Time = Math.round((new Date()).getTime() / 1000)\n this.boxTarget.replaceChild(makeMempoolBlock(mempool), this.boxTarget.firstChild)\n this.setupTooltips()\n }\n\n _refreshBlocksDisplay () {\n const visibleBlockElements = this.visibleBlocks()\n const currentlyDisplayedBlockCount = visibleBlockElements.length\n const maxBlockElements = this.calculateMaximumNumberOfBlocksToDisplay(visibleBlockElements[0])\n if (currentlyDisplayedBlockCount > maxBlockElements) {\n // remove the last x blocks\n for (let i = currentlyDisplayedBlockCount; i >= maxBlockElements; i--) {\n visibleBlockElements[i - 1].classList.remove('visible')\n }\n } else {\n const allBlockElements = this.blockTargets\n // add more blocks to fill display\n for (let i = currentlyDisplayedBlockCount; i < maxBlockElements; i++) {\n allBlockElements[i].classList.add('visible')\n }\n }\n this.setupTooltips()\n }\n\n calculateMaximumNumberOfBlocksToDisplay (blockElement) {\n const blocksSection = this.rootTarget.getBoundingClientRect()\n const margin = 20\n const blocksSectionFirstChildHeight = this.titleTarget.offsetHeight + margin\n const blocksSectionLastChildHeight = this.showmoreTarget.offsetHeight + margin\n\n // make blocks section fill available window height\n const extraSpace = window.innerHeight - document.getElementById('mainContainer').offsetHeight\n const blocksSectionHeight = blocksSection.height + extraSpace\n\n const totalAvailableWidth = blocksSection.width\n const totalAvailableHeight = blocksSectionHeight - blocksSectionFirstChildHeight - blocksSectionLastChildHeight\n\n const rect = blockElement.getBoundingClientRect()\n const blockWidth = rect.width\n const blockHeight = rect.height + margin // for spacing between rows\n\n const maxBlocksPerRow = Math.floor(totalAvailableWidth / blockWidth)\n let maxBlockRows = Math.floor(totalAvailableHeight / blockHeight)\n let maxBlockElements = maxBlocksPerRow * maxBlockRows\n\n const totalBlocksDisplayable = this.boxTarget.childElementCount\n while (maxBlockElements > totalBlocksDisplayable) {\n maxBlockRows--\n maxBlockElements = maxBlocksPerRow * maxBlockRows\n }\n\n return maxBlockElements\n }\n\n setupTooltips () {\n // check for empty tx rows and set custom tooltip\n this.txsTargets.forEach((div) => {\n if (div.childeElementCount === 0) {\n div.title = 'No regular transaction in block'\n }\n })\n\n this.tooltipTargets.forEach((tooltipElement) => {\n try {\n // parse the content\n const data = JSON.parse(tooltipElement.title)\n let newContent\n if (data.object === 'Vote') {\n newContent = `<b>${data.object} (${data.voteValid ? 'Yes' : 'No'})</b>`\n } else {\n newContent = `<b>${data.object}</b><br>${data.total} DCR`\n }\n\n if (data.vin && data.vout) {\n newContent += `<br>${data.vin} Inputs, ${data.vout} Outputs`\n }\n\n tooltipElement.title = newContent\n } catch (error) {}\n })\n\n import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n const tippy = module.default\n tippy('.block-rows [title]', {\n allowTitleHTML: true,\n animation: 'shift-away',\n arrow: true,\n createPopperInstanceOnInit: true,\n dynamicTitle: true,\n performance: true,\n placement: 'top',\n size: 'small',\n sticky: true,\n theme: 'light'\n })\n })\n }\n\n visibleBlocks () {\n return this.boxTarget.querySelectorAll('.visible')\n }\n}\n","// this place to put animation helper functions\n\nexport function animationFrame () {\n let _resolve = null\n const promise = new Promise(function (resolve) {\n _resolve = resolve\n })\n window.requestAnimationFrame(_resolve)\n return promise\n}\n\nexport async function fadeIn (element, duration) {\n element.style.transition = 'none'\n element.style.opacity = 0\n await animationFrame()\n element.style.transition = `opacity ${duration || 0.42}s ease-in-out`\n element.style.opacity = 1\n}\n","// Check for the txid in the given block\nexport default function txInBlock (txid, block) {\n const txTypes = [block.Tx, block.Tickets, block.Revs, block.Votes]\n for (const txIdx in txTypes) {\n const txs = txTypes[txIdx]\n for (const idx in txs) {\n if (txs[idx].TxID === txid) {\n return true\n }\n }\n }\n return false\n}\n","// shared functions for related to charts\n\nexport function barChartPlotter (e) {\n plotChart(e, findWidth(findMinSep(e.points, Infinity)))\n}\n\nfunction findWidth (sep) {\n return Math.floor(2.0 / 3 * sep * 10000) / 10000 // to 4 decimal places\n}\n\nfunction findMinSep (points, minSep) {\n for (let i = 1; i < points.length; i++) {\n const sep = points[i].canvasx - points[i - 1].canvasx\n if (sep < minSep) minSep = sep\n }\n return minSep\n}\n\nfunction findLineWidth (barWidth) {\n const width = 0.2 + (0.08 * barWidth)\n return width > 1 ? 1 : width\n}\n\nexport function sizedBarPlotter (binSize) {\n return (e) => {\n const canvasBin = e.dygraph.toDomXCoord(binSize) - e.dygraph.toDomXCoord(0)\n plotChart(e, findWidth(canvasBin))\n }\n}\n\nfunction plotChart (e, barWidth) {\n const ctx = e.drawingContext\n const yBottom = e.dygraph.toDomYCoord(0)\n\n ctx.fillStyle = e.color\n ctx.lineWidth = findLineWidth(barWidth)\n\n e.points.map((p) => {\n if (p.yval === 0) return\n const x = p.canvasx - barWidth / 2\n const height = yBottom - p.canvasy\n ctx.fillRect(x, p.canvasy, barWidth, height)\n ctx.strokeRect(x, p.canvasy, barWidth, height)\n })\n}\n\nexport function multiColumnBarPlotter (e) {\n if (e.seriesIndex !== 0) return\n\n const g = e.dygraph\n const ctx = e.drawingContext\n const sets = e.allSeriesPoints\n const yBottom = e.dygraph.toDomYCoord(0)\n\n let minSep = Infinity\n sets.map((bar) => { minSep = findMinSep(bar, minSep) })\n const barWidth = findWidth(minSep)\n const strokeColors = g.getColors()\n const fillColors = g.getOption('fillColors')\n ctx.lineWidth = findLineWidth(barWidth)\n\n sets.map((bar, i) => {\n ctx.fillStyle = fillColors[i]\n ctx.strokeStyle = strokeColors[i]\n\n bar.map((p) => {\n if (p.yval === 0) return\n const xLeft = p.canvasx - (barWidth / 2) * (1 - i / (sets.length - 1))\n const height = yBottom - p.canvasy\n const width = barWidth / sets.length\n\n ctx.fillRect(xLeft, p.canvasy, width, height)\n ctx.strokeRect(xLeft, p.canvasy, width, height)\n })\n })\n}\n\nexport function padPoints (pts, binSize, sustain) {\n let pad = binSize / 2.0\n const lastPt = pts[pts.length - 1]\n const firstPt = pts[0]\n const frontStamp = firstPt[0].getTime()\n const backStamp = lastPt[0].getTime()\n const duration = backStamp - frontStamp\n if (duration < binSize) {\n pad = Math.max(pad, (binSize - duration) / 2.0)\n }\n const front = [new Date(frontStamp - pad)]\n const back = [new Date(backStamp + pad)]\n for (let i = 1; i < firstPt.length; i++) {\n front.push(0)\n back.push(sustain ? lastPt[i] : 0)\n }\n pts.unshift(front)\n pts.push(back)\n}\n\nexport function isEqual (a, b) {\n if (!Array.isArray(a) || !Array.isArray(b)) return false\n let i = a.length\n if (i !== b.length) return false\n while (i--) {\n if (a[i] !== b[i]) return false\n }\n return true\n}\n\nfunction minViewValueRange (chartIndex) {\n if (chartIndex === 0) {\n return 70\n } else if (chartIndex === 1) {\n return 8400\n }\n return 0\n}\n\nfunction attachZoomHandlers (gs, prevCallbacks) {\n let block = false\n gs.map((g) => {\n g.updateOptions({\n drawCallback: function (me, initial) {\n if (block || initial) return\n block = true\n const opts = { dateWindow: me.xAxisRange() }\n\n gs.map((gCopy, j) => {\n if (gCopy === me) {\n if (prevCallbacks[j] && prevCallbacks[j].drawCallback) {\n prevCallbacks[j].drawCallback.apply(this, arguments)\n }\n return\n }\n\n if (isEqual(opts.dateWindow, gCopy.getOption('dateWindow'))) {\n return\n }\n\n const yMinRange = minViewValueRange(j)\n if (yMinRange > 0) {\n const yRange = gCopy.yAxisRange()\n if (yRange && yMinRange > yRange[1]) {\n opts.valueRange = [yRange[0], yMinRange]\n } else if (yRange && yMinRange < yRange[1]) {\n opts.valueRange = yRange\n }\n }\n\n gCopy.updateOptions(opts)\n\n delete opts.valueRange\n })\n block = false\n }\n }, true)\n })\n}\n\nfunction attachSelectionHandlers (gs, prevCallbacks) {\n let block = false\n gs.map((g) => {\n g.updateOptions({\n highlightCallback: function (event, x, points, row, seriesName) {\n if (block) return\n block = true\n const me = this\n gs.map((gCopy, i) => {\n if (me === gCopy) {\n if (prevCallbacks[i] && prevCallbacks[i].highlightCallback) {\n prevCallbacks[i].highlightCallback.apply(this, arguments)\n }\n return\n }\n const idx = gCopy.getRowForX(x)\n if (idx !== null) {\n gCopy.setSelection(idx, seriesName)\n }\n })\n block = false\n },\n unhighlightCallback: function (event) {\n if (block) return\n block = true\n const me = this\n gs.map((gCopy, i) => {\n if (me === gCopy) {\n if (prevCallbacks[i] && prevCallbacks[i].unhighlightCallback) {\n prevCallbacks[i].unhighlightCallback.apply(this, arguments)\n }\n return\n }\n gCopy.clearSelection()\n })\n block = false\n }\n }, true)\n })\n}\n\nexport function synchronize (dygraphs, syncOptions) {\n const prevCallbacks = []\n\n dygraphs.map((g, index) => {\n g.ready(() => {\n const callBackTypes = ['drawCallback', 'highlightCallback', 'unhighlightCallback']\n for (let j = 0; j < dygraphs.length; j++) {\n if (!prevCallbacks[j]) {\n prevCallbacks[j] = {}\n }\n for (let k = callBackTypes.length - 1; k >= 0; k--) {\n prevCallbacks[j][callBackTypes[k]] = dygraphs[j].getFunctionOption(callBackTypes[k])\n }\n }\n\n if (syncOptions.zoom) {\n attachZoomHandlers(dygraphs, prevCallbacks)\n }\n\n if (syncOptions.selection) {\n attachSelectionHandlers(dygraphs, prevCallbacks)\n }\n\n const yMinRange = minViewValueRange(index)\n if (yMinRange === 0) {\n return\n }\n const yRange = g.yAxisRange()\n if (yRange && yMinRange > yRange[1]) {\n g.updateOptions({ valueRange: [yRange[0], yMinRange] })\n }\n })\n })\n}\n","\nexport async function requestJSON (url) {\n const conf = {\n headers: {\n accept: 'application/json'\n },\n method: 'GET'\n }\n return await window.fetch(url, conf)\n .then(async resp => {\n if (resp.ok) {\n return await resp.json()\n }\n const msg = await resp.text()\n console.log(resp.statusText, msg)\n throw new Error(msg)\n })\n}\n","// For all your value formatting needs...\n\nfunction logn (n, b) {\n return Math.log(n) / Math.log(b)\n}\nfunction round (value, precision) {\n const multiplier = Math.pow(10, precision || 0)\n return Math.round(value * multiplier) / multiplier\n}\n\nfunction hashParts (hash) {\n const clipLen = 6\n const hashLen = hash.length - clipLen\n if (hashLen < 1) {\n return ['', hash]\n }\n return [hash.substring(0, hashLen), hash.substring(hashLen)]\n}\n\nconst humanize = {\n commaWithDecimal: function (val, decimal) {\n if (isNaN(val) || val === 0) return '0'\n if (isNaN(decimal)) decimal = 2\n else if (decimal > 8) decimal = 8\n return val.toLocaleString('en-US', { minimumFractionDigits: decimal, maximumFractionDigits: decimal })\n },\n fmtPercentage: function (val) {\n let sign = '+'\n let cssClass = 'text-green'\n if (val < 1) {\n sign = ''\n cssClass = 'text-danger'\n }\n sign = sign + val.toFixed(2)\n return `<span class=\"${cssClass}\">${sign} % </span>`\n },\n decimalParts: function (v, useCommas, precision, lgDecimals) {\n if (isNaN(precision) || precision > 8) {\n precision = 8\n }\n const formattedVal = parseFloat(v).toFixed(precision)\n const chunks = formattedVal.split('.')\n const int = useCommas ? parseInt(chunks[0]).toLocaleString() : chunks[0]\n const decimal = (chunks[1] || '')\n let i = decimal.length\n let numTrailingZeros = 0\n while (i--) {\n if (decimal[i] === '0') {\n numTrailingZeros++\n } else {\n break\n }\n }\n const decimalVals = decimal.slice(0, decimal.length - numTrailingZeros)\n const trailingZeros = (numTrailingZeros === 0) ? '' : decimal.slice(-(numTrailingZeros))\n\n let htmlString = '<div class=\"decimal-parts d-inline-block\">'\n\n if (!isNaN(lgDecimals) && lgDecimals > 0) {\n htmlString += `<span class=\"int\">${int}.${decimalVals.substring(0, lgDecimals)}</span>` +\n `<span class=\"decimal\">${decimalVals.substring(lgDecimals, decimalVals.length)}</span>` +\n `<span class=\"decimal trailing-zeroes\">${trailingZeros}</span>`\n } else if (precision !== 0) {\n htmlString += `<span class=\"int\">${int}</span>` +\n '<span class=\"decimal dot\">.</span>' +\n `<span class=\"decimal\">${decimalVals}</span>` +\n `<span class=\"decimal trailing-zeroes\">${trailingZeros}</span>`\n } else {\n htmlString += `<span class=\"int\">${int}</span>`\n }\n\n htmlString += '</div>'\n\n return htmlString\n },\n threeSigFigs: function (v) {\n const sign = v >= 0 ? '' : '-'\n v = Math.abs(v)\n if (v === 0) return '0'\n if (v >= 1e11) return `${sign}${Math.round(v / 1e9)}B`\n if (v >= 1e10) return `${sign}${(v / 1e9).toFixed(1)}B`\n if (v >= 1e9) return `${sign}${(v / 1e9).toFixed(2)}B`\n if (v >= 1e8) return `${sign}${Math.round(v / 1e6)}M`\n if (v >= 1e7) return `${sign}${(v / 1e6).toFixed(1)}M`\n if (v >= 1e6) return `${sign}${(v / 1e6).toFixed(2)}M`\n if (v >= 1e5) return `${sign}${Math.round(v / 1e3)}k`\n if (v >= 1e4) return `${sign}${(v / 1e3).toFixed(1)}k`\n if (v >= 1e3) return `${sign}${(v / 1e3).toFixed(2)}k`\n if (v >= 1e2) return `${sign}${Math.round(v)}`\n if (v >= 10) return `${sign}${v.toFixed(1)}`\n if (v >= 1) return `${sign}${v.toFixed(2)}`\n if (v >= 1e-1) return `${sign}${v.toFixed(3)}`\n if (v >= 1e-2) return `${sign}${v.toFixed(4)}`\n if (v >= 1e-3) return `${sign}${v.toFixed(5)}`\n if (v >= 1e-4) return `${sign}${v.toFixed(6)}`\n if (v >= 1e-5) return `${sign}${v.toFixed(7)}`\n return `${sign}${v.toFixed(8)}`\n },\n twoDecimals: function (v) {\n if (v === 0.0) return '0.00'\n if (Math.abs(v) < 1.0) return parseFloat(v).toPrecision(3)\n return parseFloat(v).toFixed(2)\n },\n subsidyToString: function (x, y = 1) {\n return (x / 100000000 / y) + ' DCR'\n },\n toAmountFloatDisplay: function (x, y, tail) {\n const floatAmount = x / 100000000\n return (y < 0 ? floatAmount : floatAmount.toFixed(y)) + ' ' + tail\n },\n toAmountFloat: function (x) {\n return parseFloat(x / 100000000)\n },\n bytes: function (s) { // from go-humanize\n const sizes = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB']\n if (s < 10) {\n return s + 'B'\n }\n const e = Math.floor(logn(s, 1000))\n const suffix = sizes[e]\n const val = Math.floor(s / Math.pow(1000, e) * 10 + 0.5) / 10\n const precision = (val < 10) ? 1 : 0\n return round(val, precision) + ' ' + suffix\n },\n timeSince: function (unixTime, keepOnly) {\n const seconds = Math.floor(((new Date().getTime() / 1000) - unixTime))\n let interval = Math.floor(seconds / 31536000)\n if (interval >= 1) {\n const extra = Math.floor((seconds - interval * 31536000) / 2628000)\n let result = interval + 'y'\n if (extra > 0 && keepOnly !== 'years') {\n result = result + ' ' + extra + 'mo'\n }\n return result\n }\n interval = Math.floor(seconds / 2628000)\n if (interval >= 1) {\n const extra = Math.floor((seconds - interval * 2628000) / 86400)\n let result = interval + 'mo'\n if (extra > 0 && keepOnly !== 'months') {\n result = result + ' ' + extra + 'd'\n }\n return result\n }\n interval = Math.floor(seconds / 86400)\n if (interval >= 1) {\n const extra = Math.floor((seconds - interval * 86400) / 3600)\n let result = interval + 'd'\n if (extra > 0 && keepOnly !== 'days') {\n result = result + ' ' + extra + 'h'\n }\n return result\n }\n const pad = function (x) {\n return x.toString().padStart(2, '\\u00a0')\n }\n interval = Math.floor(seconds / 3600)\n if (interval >= 1) {\n const extra = Math.floor((seconds - interval * 3600) / 60)\n let result = interval + 'h'\n if (extra > 0) {\n result = result + ' ' + pad(extra) + 'm'\n }\n return result\n }\n interval = Math.floor(seconds / 60)\n if (interval >= 1) {\n const extra = seconds - interval * 60\n let result = pad(interval) + 'm'\n if (extra > 0) {\n result = result + ' ' + pad(extra) + 's'\n }\n return result\n }\n return pad(Math.floor(seconds)) + 's'\n },\n // from time (sec) to duration miliseconds\n timeToDuration: function (time) {\n const timestampMs = time * 1000\n const now = Date.now()\n return now - timestampMs\n },\n timeDuration: function (duration, keepOnly) {\n const seconds = duration / 1000\n let interval = Math.floor(seconds / 31536000)\n if (interval >= 1) {\n const extra = Math.floor((seconds - interval * 31536000) / 2628000)\n let result = interval + 'y'\n if (extra > 0 && keepOnly !== 'years') {\n result = result + ' ' + parseInt(extra) + 'mo'\n }\n return result\n }\n interval = Math.floor(seconds / 2628000)\n if (interval >= 1) {\n const extra = Math.floor((seconds - interval * 2628000) / 86400)\n let result = interval + 'mo'\n if (extra > 0 && keepOnly !== 'months') {\n result = result + ' ' + parseInt(extra) + 'd'\n }\n return result\n }\n interval = Math.floor(seconds / 86400)\n if (interval >= 1) {\n const extra = Math.floor((seconds - interval * 86400) / 3600)\n let result = interval + 'd'\n if (extra > 0 && keepOnly !== 'days') {\n result = result + ' ' + parseInt(extra) + 'h'\n }\n return result\n }\n interval = Math.floor(seconds / 3600)\n if (interval >= 1) {\n const extra = Math.floor((seconds - interval * 3600) / 60)\n let result = interval + 'h'\n if (extra > 0) {\n result = result + ' ' + parseInt(extra) + 'm'\n }\n return result\n }\n interval = Math.floor(seconds / 60)\n if (interval >= 1) {\n const extra = seconds - interval * 60\n let result = parseInt(interval) + 'm'\n if (extra > 0) {\n result = result + ' ' + parseInt(extra) + 's'\n }\n return result\n }\n return parseInt(Math.floor(seconds)) + 's'\n },\n date: function (stamp, withTimezone, hideHisForMidnight) {\n const d = new Date(stamp)\n let dateStr = `${String(d.getUTCFullYear())}-${String(d.getUTCMonth() + 1).padStart(2, '0')}-${String(d.getUTCDate()).padStart(2, '0')}`\n if (!hideHisForMidnight) {\n dateStr += ` ${String(d.getUTCHours()).padStart(2, '0')}:${String(d.getUTCMinutes()).padStart(2, '0')}:${String(d.getUTCSeconds()).padStart(2, '0')}`\n }\n if (withTimezone) dateStr += ' (UTC)'\n return dateStr\n },\n hashElide: function (hash, link, asNode) {\n const div = document.createElement(link ? 'a' : 'div')\n if (link) div.href = link\n div.dataset.keynavePriority = 1\n div.classList.add('elidedhash')\n div.classList.add('mono')\n const [head, tail] = hashParts(hash)\n div.dataset.head = head\n div.dataset.tail = tail\n div.textContent = hash\n if (asNode) {\n return div\n }\n return div.outerHTML\n },\n capitalize: function (s) {\n if (typeof s !== 'string') return ''\n return s.charAt(0).toUpperCase() + s.slice(1)\n },\n formatToLocalString: function (number, minFracDigit, maxFracDigit) {\n return number.toLocaleString('en-US', {\n minimumFractionDigits: minFracDigit,\n maximumFractionDigits: maxFracDigit\n })\n }\n}\n\nexport default humanize\n","// Utilities for keeping a shallow local copy of the mempool.\n\n// txhelpers.TxType*\nconst mpKeys = {\n Regular: 'regular',\n Vote: 'vote',\n Ticket: 'ticket',\n Revocation: 'rev',\n 'Treasury Spend': 'tspend',\n 'Treasury Add': 'tadd'\n}\n\n// explorer/types.MempoolInfo\nfunction txLists (mempool) {\n return [mempool.tx, mempool.tickets, mempool.votes, mempool.revs, mempool.tspends, mempool.tadds]\n}\n\nfunction txList (mempool) {\n const l = []\n txLists(mempool).forEach(txs => {\n if (!txs) return\n txs.forEach(tx => {\n l.push(tx)\n })\n })\n return l\n}\n\nfunction makeTx (txid, txType, total, voteInfo, size) {\n return {\n txid: txid,\n type: txType,\n total: total,\n voteInfo: voteInfo, // null for all but votes\n size: size\n }\n}\n\nfunction ticketSpent (vote) {\n const vi = vote.voteInfo || vote.vote_info\n return vi.ticket_spent\n}\n\nfunction reduceTx (tx) {\n return makeTx(tx.txid, tx.Type, tx.total, tx.vote_info, tx.size)\n}\n\nexport default class Mempool {\n constructor (d, tallyTargets) {\n this.mempool = []\n // Create dummy transactions. Since we're only looking at totals, this is\n // okay for now and prevents an initial websocket call for the entire mempool.\n const avgSize = parseFloat(d.size) / parseInt(d.count)\n this.initType('Regular', parseFloat(d.regTotal), parseInt(d.regCount), avgSize)\n this.initType('Ticket', parseFloat(d.ticketTotal), parseInt(d.ticketCount), avgSize)\n this.initType('Revocation', parseFloat(d.revTotal), parseInt(d.revCount), avgSize)\n this.initVotes(tallyTargets, parseFloat(d.voteTotal), parseInt(d.voteCount), avgSize)\n }\n\n initType (txType, total, count, avgSize) {\n const fauxVal = count === 0 ? 0 : total / count\n for (let i = 0; i < count; i++) {\n this.mempool.push(makeTx('', txType, fauxVal, null, avgSize))\n }\n }\n\n initVotes (tallyTargets, total, count, avgSize) {\n const fauxVal = count === 0 ? 0 : total / count\n tallyTargets.forEach((span) => {\n const affirmed = parseInt(span.dataset.affirmed)\n for (let i = 0; i < parseInt(span.dataset.count); i++) {\n this.mempool.push(makeTx('', 'Vote', fauxVal, {\n block_validation: {\n hash: span.dataset.hash,\n validity: i < affirmed\n },\n ticket_spent: i\n }, avgSize))\n }\n })\n }\n\n // Replace the entire contents of mempool. m is a JSON representation of the\n // explorertypes.MempoolInfo\n replace (m) {\n this.mempool = []\n txList(m).forEach(tx => {\n if (this.isQuestionableVote(tx)) return\n this.mempool.push(reduceTx(tx))\n })\n }\n\n // Merges the given explorertypes.MempoolInfo into the current mempool.\n mergeMempool (m) {\n this.mergeTxs(txList(m))\n }\n\n // Merges the []explorertypes.MempoolTx into the current mempool.\n mergeTxs (txs) {\n txs.forEach(tx => {\n if (this.wantsTx(tx)) {\n this.mempool.push(reduceTx(tx))\n }\n })\n }\n\n // Checks whether the transaction is new and likely to be included in a block.\n wantsTx (newTx) {\n if (this.isQuestionableVote(newTx)) return false\n for (let i = 0; i < this.mempool.length; i++) {\n if (this.mempool[i].txid === newTx.txid) return false\n }\n return true\n }\n\n // Some votes are for older blocks, or duplicates but with different agendas.\n isQuestionableVote (tx) {\n if (tx.Type !== 'Vote') return false\n if (!tx.vote_info.last_block) return true\n for (let i = 0; i < this.mempool.length; i++) {\n const v = this.mempool[i]\n if (v.type === 'Vote' && ticketSpent(v) === ticketSpent(tx)) return true\n }\n }\n\n blockVoteTally (hash) {\n return this.mempool.reduce((votes, tx) => {\n if (tx.type !== 'Vote') return votes\n const validation = tx.voteInfo.block_validation\n if (validation.hash !== hash) return votes\n if (validation.validity) {\n votes.affirm++\n } else {\n votes.reject++\n }\n return votes\n }, {\n affirm: 0,\n reject: 0\n })\n }\n\n counts () {\n return this.mempool.reduce((d, tx) => {\n d.total += 1\n if (tx.type === 'Vote') {\n const validation = tx.voteInfo.block_validation\n if (!d.vote[validation.hash]) {\n d.vote[validation.hash] = this.blockVoteTally(validation.hash)\n }\n } else {\n d[mpKeys[tx.type]] += 1\n }\n return d\n }, { regular: 0, ticket: 0, vote: {}, rev: 0, total: 0 })\n }\n\n totals () {\n return this.mempool.reduce((d, tx) => {\n d.total += tx.total\n d[mpKeys[tx.type]] += tx.total\n d.size += tx.size\n return d\n }, { regular: 0, ticket: 0, vote: 0, rev: 0, total: 0, size: 0 })\n }\n\n voteSpans (tallys) {\n const spans = []\n let joiner\n for (const hash in tallys) {\n if (joiner) spans.push(joiner)\n const count = tallys[hash]\n const span = document.createElement('span')\n span.dataset.tooltip = `For block ${hash}`\n span.className = 'position-relative d-inline-block'\n span.textContent = count.affirm + count.reject\n spans.push(span)\n joiner = document.createElement('span')\n joiner.textContent = ' + '\n }\n return spans\n }\n}\n","const PIPI = 2 * Math.PI\n\nfunction makePt (x, y) { return { x, y } }\n\nfunction addOffset (pt, offset) {\n return {\n x: pt.x + offset.x,\n y: pt.y + offset.y\n }\n}\n\nfunction sleep (ms) {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n\n// Meter provides basic drawing and math utilities for a meter object, which\n// has a circular strip shape with a gap. You can draw segments of the strip\n// using segment. Child classes should implement a draw method. The parent\n// parameter should be a block element with class .meter. CSS classes .large-gap\n// and .arch can also be applied for increasingly large gap angle, with .arch\n// being a semi-circle. Any contents of parent will be replaced with the Meter.\n// Apply class .lil for a smaller meter.\nclass Meter {\n constructor (parent, opts) {\n opts = opts || {}\n this.options = opts\n this.radius = opts.radius || 0.4\n this.parent = parent\n this.canvas = document.createElement('canvas')\n opts.padding = opts.padding || 5\n // Add a little padding around the drawing area by offsetting all drawing.\n // This allows element like text to overflow the drawing area slightly\n // without being cut off.\n this.offset = makePt(opts.padding, opts.padding)\n // Meter's API provides an assumed canvas size of 100 x 100\n this.dimension = 100\n this.canvas.width = this.dimension + 2 * opts.padding\n this.canvas.height = this.dimension + 2 * opts.padding\n\n // Keep track of any properties being animated\n this.animationEnd = {}\n this.animationRunning = {}\n this.animationTarget = {}\n\n this.ctx = this.canvas.getContext('2d')\n this.ctx.textAlign = 'center'\n this.ctx.textBaseline = 'middle'\n while (parent.firstChild) parent.removeChild(parent.firstChild)\n this.parent.appendChild(this.canvas)\n this.middle = {\n x: 50,\n y: 50\n }\n this.offsetMiddle = addOffset(this.middle, this.offset)\n this.startAngle = Math.PI / 2\n let meterSpace = 0.5 // radians\n if (parent.classList.contains('large-gap')) meterSpace = Math.PI / 1.5\n if (parent.classList.contains('arch')) meterSpace = Math.PI\n this.meterSpecs = {\n meterSpace: meterSpace,\n startTheta: this.startAngle + meterSpace / 2,\n endTheta: this.startAngle + PIPI - meterSpace / 2\n }\n this.meterSpecs.range = this.meterSpecs.endTheta - this.meterSpecs.startTheta\n this.meterSpecs.start = this.normedPolarToCartesian(this.radius, 0)\n this.meterSpecs.end = this.normedPolarToCartesian(this.radius, 1)\n\n // animation options\n opts.fps = opts.fps || 60\n opts.animationLength = opts.animationLength || 400\n\n // A couple unicode characters\n this.checkmark = String.fromCharCode(10004)\n this.failmark = String.fromCharCode(10008)\n }\n\n roundCap () {\n this.ctx.lineCap = 'round'\n }\n\n buttCap () {\n this.ctx.lineCap = 'butt'\n }\n\n denorm (x) {\n return x * this.dimension\n }\n\n norm (x) {\n return x / this.dimension\n }\n\n normedPolarToCartesian (normed, normedTheta) {\n // maps radius: [0,1] to [0,width], and angle: [0,1] to [0,2PI]\n const r = this.denorm(normed)\n const theta = this.denormTheta(normedTheta)\n return {\n y: this.middle.x - r * Math.cos(theta + this.startAngle),\n x: this.middle.y + r * Math.sin(theta + this.startAngle)\n }\n }\n\n denormTheta (theta) {\n // [0, 1] to [this.meterSpecs.startTheta, this.meterSpecs.endTheta]\n return this.meterSpecs.startTheta + theta * this.meterSpecs.range\n }\n\n denormThetaRange (start, end) {\n return {\n start: this.denormTheta(start),\n end: this.denormTheta(end)\n }\n }\n\n setDarkMode (nightMode) {\n this.activeTheme = nightMode ? this.darkTheme : this.lightTheme\n this.draw()\n }\n\n clear () {\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height)\n }\n\n dot (pt, color, radius) {\n pt = addOffset(pt, this.offset)\n const ctx = this.ctx\n ctx.fillStyle = color\n ctx.beginPath()\n ctx.arc(pt.x, pt.y, radius, 0, PIPI)\n ctx.fill()\n }\n\n segment (start, end, color) {\n // A segment of the strip, where 0 <= start < end <= 1.\n const ctx = this.ctx\n ctx.strokeStyle = color\n const range = this.denormThetaRange(start, end)\n ctx.beginPath()\n ctx.arc(this.offsetMiddle.x, this.offsetMiddle.y, this.denorm(this.radius), range.start, range.end)\n ctx.stroke()\n }\n\n line (start, end) {\n // set ctx.lineWidth and ctx.strokeStyle before drawing.\n start = addOffset(start, this.offset)\n end = addOffset(end, this.offset)\n const ctx = this.ctx\n ctx.beginPath()\n ctx.moveTo(start.x, start.y)\n ctx.lineTo(end.x, end.y)\n ctx.stroke()\n }\n\n write (text, pt, maxWidth) {\n // Set ctx.textAlign and ctx.textBaseline for additional alignment options.\n pt = addOffset(pt, this.offset)\n this.ctx.fillText(text, pt.x, pt.y, maxWidth)\n }\n\n drawIndicator (value, color) {\n const ctx = this.ctx\n const opts = this.options\n const theme = this.activeTheme\n const halfLen = this.norm(opts.meterWidth) * 0.5\n const start = this.normedPolarToCartesian(this.radius - halfLen, value)\n const end = this.normedPolarToCartesian(this.radius + halfLen, value)\n ctx.lineWidth = 1.5\n ctx.strokeStyle = color\n this.dot(start, color, opts.dotSize)\n this.dot(end, color, opts.dotSize)\n ctx.strokeStyle = theme.text\n this.line(start, end)\n }\n\n async animate (key, target) {\n // key is a string referencing any property of Meter.data.\n const opts = this.options\n this.animationEnd[key] = new Date().getTime() + opts.animationLength\n this.animationTarget[key] = target\n if (this.animationRunning[key]) return\n this.animationRunning[key] = true\n const frameDuration = 1000 / opts.fps\n let now = new Date().getTime()\n while (now < this.animationEnd[key]) {\n const remainingTime = this.animationEnd[key] - now\n const progress = this.data[key]\n const toGo = this.animationTarget[key] - progress\n const step = toGo * frameDuration / remainingTime\n await sleep(frameDuration)\n this.data[key] = progress + step\n this.draw()\n now = new Date().getTime()\n }\n this.data[key] = this.animationTarget[key]\n this.draw()\n this.animationRunning[key] = false\n }\n}\n\n// VoteMeter has three regions: reject, revote, and approve. The parent element\n// should have property parent.dataset.threshold set to the pass threshold [0,1],\n// and parent.dataset.approval set to the current approval rate.\nexport class VoteMeter extends Meter {\n constructor (parent, opts) {\n super(parent, opts)\n this.writeCentralPercent = wcp.bind(this)\n this.buttCap()\n opts = this.options\n const d = parent.dataset\n this.data = {\n approval: parseFloat(d.approval)\n }\n this.approveThreshold = d.threshold\n this.rejectThreshold = 1 - d.threshold\n\n // Options\n opts.centralFontSize = opts.centralFontSize || 20\n opts.meterColor = opts.meterColor || '#2dd8a3'\n opts.meterWidth = opts.meterWidth || 12\n opts.approveColor = opts.approveColor || '#2dd8a3'\n opts.revoteColor = opts.revoteColor || '#ffe4a7'\n opts.rejectColor = opts.rejectColor || '#ed6d47'\n opts.dotColor = opts.dotColor || '#888'\n if (opts.showIndicator === undefined) opts.showIndicator = true\n this.darkTheme = opts.darkTheme || {\n text: 'white',\n tray: '#999'\n }\n this.lightTheme = opts.lightTheme || {\n text: 'black',\n tray: '#555'\n }\n this.activeTheme = opts.darkMode ? this.darkTheme : this.lightTheme\n\n // Set up a starting animation\n const progress = this.data.approval\n this.data.approval = 0.5\n this.draw()\n super.animate('approval', progress)\n }\n\n draw () {\n super.clear()\n const ctx = this.ctx\n const opts = this.options\n let indicatorColor\n const strokeColor = this.activeTheme.text\n const trayColor = this.activeTheme.tray\n\n // Draw the three-color tray with border\n const borderWidth = opts.meterWidth * 1.3\n ctx.lineWidth = borderWidth\n this.segment(0, 1, trayColor)\n ctx.lineWidth = opts.meterWidth\n this.segment(0, this.rejectThreshold, opts.rejectColor)\n this.segment(this.rejectThreshold, this.approveThreshold, opts.revoteColor)\n this.segment(this.approveThreshold, 1, opts.approveColor)\n ctx.strokeStyle = trayColor\n ctx.lineWidth = 2\n super.line(super.normedPolarToCartesian(this.radius + this.norm(borderWidth / 2), 0),\n super.normedPolarToCartesian(this.radius - this.norm(borderWidth / 2), 0))\n super.line(super.normedPolarToCartesian(this.radius + this.norm(borderWidth / 2), 1),\n super.normedPolarToCartesian(this.radius - this.norm(borderWidth / 2), 1))\n\n // Draw the indicator icon, which is a checkmark if the measure is currently\n // passing.\n if (opts.showIndicator) {\n ctx.font = `${super.denorm(0.2)}px sans-serif`\n if (this.data.approval < this.rejectThreshold) {\n ctx.fillStyle = indicatorColor = opts.rejectColor\n super.write(this.failmark, makePt(this.middle.x, super.denorm(0.35)))\n } else if (this.data.approval >= this.approveThreshold) {\n ctx.fillStyle = indicatorColor = opts.approveColor\n super.write(this.checkmark, makePt(this.middle.x, super.denorm(0.35)))\n } else {\n indicatorColor = opts.revoteColor\n super.dot(makePt(this.middle.x, super.denorm(0.35)), opts.dotColor, super.denorm(0.03))\n }\n }\n\n // The mark\n const halfLen = this.norm(opts.meterWidth * 0.5)\n const start = super.normedPolarToCartesian(this.radius - halfLen * 1.2, this.data.approval)\n const end = super.normedPolarToCartesian(this.radius + halfLen * 1.6, this.data.approval)\n ctx.lineWidth = 2.5\n ctx.strokeStyle = strokeColor\n super.line(start, end)\n super.dot(start, strokeColor, 3)\n super.dot(end, strokeColor, 3.5)\n super.dot(end, indicatorColor, 3)\n\n this.writeCentralPercent(this.data.approval)\n }\n}\n\n// ProgressMeter has a single threshold. The parent element should have property\n// parent.dataset.threshold set to the progress threshold [0,1], and\n// parent.dataset.progress set to the current value.\nexport class ProgressMeter extends Meter {\n constructor (parent, opts) {\n super(parent, opts)\n this.writeCentralPercent = wcp.bind(this)\n this.buttCap()\n opts = this.options\n this.threshold = parseFloat(parent.dataset.threshold)\n this.data = {\n progress: parseFloat(parent.dataset.progress)\n }\n\n opts.meterColor = opts.meterColor || '#2970ff'\n opts.meterWidth = opts.meterWidth || 14\n opts.centralFontSize = opts.centralFontSize || 20\n opts.successColor = opts.successColor = '#2dd8a3'\n opts.dotSize = opts.dotSize || 3\n if (opts.showIndicator === undefined) opts.showIndicator = false\n this.darkTheme = opts.darkTheme || {\n tray: '#777',\n text: 'white'\n }\n this.lightTheme = opts.lightTheme || {\n tray: '#999',\n text: 'black'\n }\n this.activeTheme = opts.darkMode ? this.darkTheme : this.lightTheme\n\n const progress = this.data.progress\n this.data.progress = 0\n this.draw()\n this.animate('progress', progress)\n }\n\n draw () {\n super.clear()\n const ctx = this.ctx\n const opts = this.options\n const theme = this.activeTheme\n\n ctx.lineWidth = opts.meterWidth * 0.95 // Prevents rough looking edge\n const c = this.data.progress >= this.threshold ? opts.successColor : theme.tray\n super.segment(0, 1, c)\n\n super.drawIndicator(this.threshold, c)\n\n ctx.lineWidth = opts.meterWidth\n super.segment(0, this.data.progress, opts.meterColor)\n\n super.drawIndicator(this.data.progress, theme.text)\n\n if (opts.showIndicator && this.data.progress >= this.threshold) {\n ctx.fillStyle = opts.successColor\n super.write(this.checkmark, makePt(this.middle.x, super.denorm(0.35)))\n }\n\n this.writeCentralPercent(this.data.progress)\n }\n}\n\n// wcp is the writeCentralPercent method used by VoteMeter and ProgressMeter.\nfunction wcp (v) {\n const [ctx, opts] = [this.ctx, this.options]\n ctx.save()\n const [whole, fraction] = (v * 100).toFixed(2).split('.')\n // Shift the text up a little if the indicator is showing. Also shift it\n // to the left slightly for aesthetics.\n const offset = opts.showIndicator ? this.denorm(0.02) : -this.denorm(0.02)\n ctx.fillStyle = this.activeTheme.text\n // special handling for 100%\n if (whole === '100') {\n const center = makePt(this.middle.x, this.middle.y + offset)\n ctx.font = `${opts.centralFontSize}px 'source-sans-pro-semibold', sans-serif`\n this.write('100%', center, this.denorm(0.5))\n } else {\n const center = makePt(this.middle.x - this.denorm(0.05), this.middle.y + offset)\n ctx.textAlign = 'right'\n ctx.font = `${opts.centralFontSize}px 'source-sans-pro-semibold', sans-serif`\n this.write(whole, center, this.denorm(0.5))\n ctx.font = `${opts.centralFontSize * 0.7}px 'source-sans-pro-semibold', sans-serif`\n ctx.textAlign = 'left'\n this.write(`.${fraction}%`, center, this.denorm(0.5))\n }\n ctx.restore()\n}\n\n// Mini meter is a semi-circular meter with a needle. The segment definitions\n// must be passed as an array of objects with the structure\n// [{end: float, color: string}, {end: float, color: string}, ...], where end is\n// the end of the segments range on the scale [0, 1]. The first range is assumed\n// to start at 0, and each subsequent segment will start at the previous\n// segment's end. The MiniMeter is designed to work with the .arch.lil CSS\n// classes, but not limited to that particular class.\nexport class MiniMeter extends Meter {\n constructor (parent, opts) {\n super(parent, opts)\n this.buttCap()\n opts = this.options\n this.radius = opts.radius || 0.475\n this.darkTheme = opts.darkTheme || { text: 'white' }\n this.lightTheme = opts.lightTheme || { text: '#333333' }\n this.activeTheme = opts.darkMode ? this.darkTheme : this.lightTheme\n opts.meterWidth = opts.meterWidth || 18\n this.value = parseFloat(parent.dataset.value)\n this.draw()\n }\n\n draw () {\n super.clear()\n const ctx = this.ctx\n const opts = this.options\n ctx.lineWidth = opts.meterWidth\n const textColor = this.activeTheme.text\n\n // Draw the segments.\n let start = 0\n opts.segments.forEach(segment => {\n super.segment(start, segment.end, segment.color)\n start = segment.end\n })\n\n // Draw the needle\n const tipLen = this.norm(opts.meterWidth) * 0.75\n const center = super.normedPolarToCartesian(0, 0)\n const end = super.normedPolarToCartesian(this.radius + tipLen, this.value)\n super.dot(center, textColor, 7)\n ctx.strokeStyle = textColor\n ctx.lineWidth = 5\n super.line(center, end)\n }\n}\n","// helpers for dynamic module imports\n\nexport async function getDefault (dynamicImportPromise) {\n const module = await dynamicImportPromise\n return new Promise(resolve => {\n resolve(module.default)\n })\n}\n","/* global Turbolinks */\nimport Url from 'url-parse'\n\nexport default class TurboQuery {\n constructor (turbolinks) {\n const tq = this\n tq.replaceTimer = 0\n tq.appendTimer = 0\n tq.turbolinks = turbolinks || Turbolinks || false\n if (!tq.turbolinks || !tq.turbolinks.supported) {\n console.error('No passed or global Turbolinks instance detected. TurboQuery requires Turbolinks.')\n return\n }\n // These are timer callbacks. Bind them to the TurboQuery instance.\n tq.replaceHistory = tq._replaceHistory.bind(tq)\n tq.appendHistory = tq._appendHistory.bind(tq)\n tq.url = Url(window.location.href, true)\n }\n\n replaceHref () {\n // Rerouting through timer to prevent spamming.\n // Turbolinks blocks replacement if frequency too high.\n if (this.replaceTimer === 0) {\n this.replaceTimer = setTimeout(this.replaceHistory, 250)\n }\n }\n\n toHref () {\n if (this.appendTimer === 0) {\n this.appendTimer = setTimeout(this.appendHistory, 250)\n }\n }\n\n _replaceHistory () {\n // see https://github.com/turbolinks/turbolinks/issues/219. This also works:\n // window.history.replaceState(window.history.state, this.addr, this.url.href)\n this.turbolinks.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.turbolinks.Location.wrap(this.url.href), this.turbolinks.uuid())\n this.replaceTimer = 0\n }\n\n _appendHistory () {\n // same as replaceHref, but creates a new entry in history for navigating\n // with the browsers forward and back buttons. May still not work because of\n // TurboLinks caching behavior, I think.\n this.turbolinks.controller.pushHistoryWithLocationAndRestorationIdentifier(this.turbolinks.Location.wrap(this.url.href), this.turbolinks.uuid())\n this.appendTimer = 0\n }\n\n replace (query) {\n this.url.set('query', this.filteredQuery(query))\n this.replaceHref()\n }\n\n to (query) {\n this.url.set('query', this.filteredQuery(query))\n this.toHref()\n }\n\n filteredQuery (query) {\n const filtered = {}\n Object.keys(query).forEach(function (key) {\n const v = query[key]\n if (typeof v === 'undefined' || v === null) return\n filtered[key] = v\n })\n return filtered\n }\n\n update (target) {\n // Update projects the current query parameters onto the given template.\n return this.constructor.project(target, this.parsed)\n }\n\n get parsed () {\n return this.url.query\n }\n\n // Not an ES5 getter.\n get (key) {\n if (Object.prototype.hasOwnProperty.call(this.url.query, key)) {\n return TurboQuery.parseValue(this.url.query[key])\n }\n return null\n }\n\n static parseValue (v) {\n switch (v) {\n case 'null':\n return null\n case '':\n return null\n case 'undefined':\n return null\n case 'false':\n return false\n case 'true':\n return true\n }\n if (!isNaN(parseFloat(v)) && isFinite(v)) {\n if (String(v).includes('.')) {\n return parseFloat(v)\n } else {\n return parseInt(v)\n }\n }\n return v\n }\n\n static project (target, source) {\n // project fills in the properties of the given template, if they exist in\n // the source. Extraneous source properties are not added to the template.\n const keys = Object.keys(target)\n let idx\n for (idx in keys) {\n const k = keys[idx]\n if (Object.prototype.hasOwnProperty.call(source, k)) {\n target[k] = this.parseValue(source[k])\n }\n }\n return target\n }\n\n static nullTemplate (keys) {\n const d = {}\n keys.forEach((key) => {\n d[key] = null\n })\n return d\n }\n}\n","// Utilities for working with chart zoom windows.\n\n// The keys in zoomMap can be passed directly to Zoom.validate.\nconst zoomMap = {\n all: 0,\n year: 3.154e+10,\n month: 2.628e+9,\n week: 6.048e+8,\n day: 8.64e+7\n}\n\nfunction zoomObject (start, end) {\n return { start, end }\n}\n\n// Attempts to decode a string of format start-end where start and end are\n// base 36 encoded unix timestamps in seconds.\nfunction decodeZoomString (encoded) {\n const range = encoded.split('-')\n if (range.length !== 2) {\n return false\n }\n const start = parseInt(range[0], 36)\n const end = parseInt(range[1], 36)\n if (isNaN(start) || isNaN(end) || end - start <= 0) {\n return false\n }\n return zoomObject(start, end)\n}\n\nfunction tryDecode (zoom) {\n if (Array.isArray(zoom) && zoom.length === 2) {\n return zoomObject(zoom[0], zoom[1])\n } else if (typeof zoom === 'string' && zoom.indexOf('-') !== -1) {\n return decodeZoomString(zoom)\n }\n return zoom\n}\n\n// Zoom is the exported class for dealing with Zoom windows. It is composed\n// entirely of static methods used for working with zoom ranges.\nexport default class Zoom {\n static object (start, end) {\n return zoomObject(start, end)\n }\n\n static mapValue (key, scale) {\n scale = scale || 1\n return zoomMap[key] / scale\n }\n\n // encode uses base 36 encoded unix timestamps to store the range in a\n // short string.\n static encode (start, end) {\n // Can supply a single argument of zoomObject type, or two\n // millisecond timestamps.\n if (!end) {\n const range = tryDecode(start)\n end = range.end\n start = range.start\n }\n return parseInt(start).toString(36) + '-' + parseInt(end).toString(36)\n }\n\n static decode (encoded, limits, scale) {\n // decodes zoomString, such as from this.encode. zoomObjects pass through.\n // If limits are provided, encoded can be a zoomMap key.\n scale = scale || 1\n const decoded = tryDecode(encoded)\n const lims = tryDecode(limits)\n if (lims && Object.prototype.hasOwnProperty.call(zoomMap, decoded)) {\n const duration = zoomMap[decoded] / scale\n if (duration === 0) return lims\n return zoomObject(lims.end - duration, lims.end)\n }\n return decoded\n }\n\n // validate will shift and clamp the proposed zoom window to accommodate the\n // range limits and minimum size.\n static validate (proposal, limits, minSize, scale) {\n // proposed: encoded zoom string || zoomMap key || zoomObject\n // limits: zoomObject || array\n scale = scale || 1\n const lims = tryDecode(limits)\n const proposed = tryDecode(proposal)\n let zoom = lims\n if (typeof proposed === 'string') {\n zoom = this.decode(proposed, lims, scale)\n if (!zoom) return false\n } else if (proposed && typeof proposed === 'object') {\n zoom = proposed\n }\n // Shift-Clamp\n if (minSize && zoom.end - zoom.start < minSize) {\n zoom.end = zoom.start + minSize\n }\n if (zoom.end > lims.end) {\n const shift = zoom.end - lims.end\n zoom.end -= shift\n zoom.start = Math.max(zoom.start - shift, lims.start)\n } else if (zoom.start < lims.start) {\n const shift = lims.start - zoom.start\n zoom.start += shift\n zoom.end = Math.min(zoom.end + shift, lims.end)\n }\n return zoom\n }\n\n // mapKey returns the corresponding map key, if the zoom meets the correct\n // range and position within the limits, else null.\n static mapKey (zoom, limits, scale) {\n scale = scale || 1\n const lims = tryDecode(limits)\n const decoded = this.decode(zoom, lims)\n const range = decoded.end - decoded.start\n if (decoded.start === lims.start && range === lims.end - lims.start) return 'all'\n for (const k in zoomMap) {\n const v = zoomMap[k]\n if (v === 0) continue\n // support an error of ±0.99 due to precision loss while dividing.\n if (Math.abs(v / scale - range) < 0.99) return k\n }\n return null\n }\n\n // project proportionally translates the zoom from oldWindow to newWindow.\n static project (zoom, oldWindow, newWindow) {\n const decoded = tryDecode(zoom)\n if (!decoded) return\n const ow = tryDecode(oldWindow)\n const nw = tryDecode(newWindow)\n const oldRange = ow.end - ow.start\n const newRange = nw.end - nw.start\n const pStart = (decoded.start - ow.start) / oldRange\n const pEnd = (decoded.end - ow.start) / oldRange\n return zoomObject(nw.start + pStart * newRange, nw.start + pEnd * newRange)\n }\n}\n","export function setCookie (cname, cvalue, exMins) {\n const d = new Date()\n d.setTime(d.getTime() + (exMins * 60 * 1000))\n const expires = 'expires=' + d.toUTCString()\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/'\n}\n","import { remove } from 'lodash-es'\n\nconst eventCallbacksPairs = []\n\nfunction findEventCallbacksPair (eventType) {\n return eventCallbacksPairs.find(eventObject => eventObject.eventType === eventType)\n}\n\nfunction EventCallbacksPair (eventType, callback) {\n this.eventType = eventType\n this.callbacks = [callback]\n}\n\nclass EventBus {\n on (eventType, callback) {\n const eventCallbacksPair = findEventCallbacksPair(eventType)\n if (eventCallbacksPair) {\n eventCallbacksPair.callbacks.push(callback)\n } else {\n eventCallbacksPairs.push(new EventCallbacksPair(eventType, callback))\n }\n }\n\n off (eventType, callback) {\n const eventCallbacksPair = findEventCallbacksPair(eventType)\n if (eventCallbacksPair) {\n remove(eventCallbacksPair.callbacks, (cb) => {\n return cb === callback\n })\n }\n }\n\n publish (eventType, args) {\n const eventCallbacksPair = findEventCallbacksPair(eventType)\n if (!eventCallbacksPair) return\n eventCallbacksPair.callbacks.forEach(callback => callback(args))\n }\n}\n\nconst eventBusInstance = new EventBus()\nexport default eventBusInstance\n","export function addPauseToMousetrap (Mousetrap) {\n var _originalStopCallback = Mousetrap.prototype.stopCallback\n Mousetrap.prototype.stopCallback = function (e, element, combo) {\n var self = this\n\n if (self.paused) {\n return true\n }\n\n return _originalStopCallback.call(self, e, element, combo)\n }\n\n Mousetrap.prototype.pause = function () {\n var self = this\n self.paused = true\n }\n\n Mousetrap.prototype.unpause = function () {\n var self = this\n self.paused = false\n }\n Mousetrap.init()\n}\n","/* global Turbolinks */\nimport { toggleMenu, toggleSun, closeMenu } from '../services/theme_service'\nimport { setCookie } from './cookie_service'\nimport Mousetrap from 'mousetrap'\nimport { addPauseToMousetrap } from '../vendor/mousetrap-pause'\n\naddPauseToMousetrap(Mousetrap)\n\n// Keyboard Navigation\nlet targets\nlet targetsLength\nlet currentIndex = 0\nlet jumpToIndexOnLoad\nconst keyNavCookieName = 'dcrdataKeyNav'\nlet searchBar, keyNavToggle, menuToggle\n\nfunction bindElements () {\n searchBar = document.getElementById('search')\n keyNavToggle = document.getElementById('keynav-toggle')\n const menuToggleObj = document.getElementById('menu-toggle')\n if (menuToggleObj) {\n menuToggle = menuToggleObj.querySelector('#common-menu-input')\n }\n}\nbindElements()\n\nfunction keyNavEnabled () {\n return document.cookie.includes(keyNavCookieName)\n}\n\nfunction setToggleText (txt) {\n keyNavToggle.querySelector('.text').textContent = txt\n}\n\nfunction clearTargets () {\n document.querySelectorAll('.keynav-target').forEach((el) => {\n el.classList.remove('keynav-target', 'pulsate')\n })\n}\n\nfunction enableKeyNav () {\n setCookie(keyNavCookieName, 1, 525600)\n Mousetrap.unpause()\n setToggleText('Disable Hot Keys')\n keyNav()\n}\n\nfunction disableKeyNav () {\n setCookie(keyNavCookieName, '', 0)\n clearTargets()\n setToggleText('Enable Hot Keys')\n Mousetrap.pause()\n}\n\nfunction toggleKeyNav () {\n if (keyNavEnabled()) {\n disableKeyNav()\n } else {\n enableKeyNav()\n }\n}\n\nexport function keyNav (event, pulsate, preserveIndex) {\n if (!keyNavEnabled()) return\n bindElements()\n if (menuToggle && menuToggle.checked) {\n targets = Array.from(document.getElementById('hamburger-menu').querySelectorAll('a'))\n currentIndex = 0\n } else {\n targets = []\n document.querySelectorAll('a').forEach((link) => {\n if (link.hasAttribute('data-keynav-skip')) return\n targets.push(link)\n })\n targets.push(searchBar)\n\n if (jumpToIndexOnLoad > 0) {\n currentIndex = jumpToIndexOnLoad\n jumpToIndexOnLoad = undefined\n } else if (!preserveIndex) {\n const priorityLink = document.querySelectorAll('[data-keynav-priority]')[0]\n const i = targets.indexOf(priorityLink)\n currentIndex = i > 0 ? i : 0\n }\n }\n targetsLength = targets.length\n clearTargets()\n const currentTarget = targets[currentIndex]\n currentTarget.classList.add('keynav-target')\n currentTarget.focus()\n currentTarget.blur()\n if (pulsate) {\n currentTarget.classList.add('pulsate')\n }\n}\n\nMousetrap.bind(['left', '['], function () {\n clearTargets()\n currentIndex--\n if (currentIndex < 0) {\n currentIndex = targetsLength - 1\n }\n targets[currentIndex].classList.add('keynav-target')\n})\n\nMousetrap.bind(['right', ']'], function () {\n clearTargets()\n currentIndex++\n if (currentIndex >= targetsLength) {\n currentIndex = 0\n }\n targets[currentIndex].classList.add('keynav-target')\n})\n\nMousetrap.bind('enter', function (e) {\n if (targets.length < currentIndex) {\n return\n }\n const currentTarget = targets[currentIndex]\n if (currentTarget.nodeName === 'INPUT') {\n currentTarget.focus()\n e.stopPropagation()\n e.preventDefault()\n return\n }\n if (currentTarget.id === 'keynav-toggle') {\n toggleKeyNav()\n return\n }\n const location = currentTarget.href\n if (location !== undefined) {\n if (currentTarget.dataset.preserveKeynavIndex) {\n jumpToIndexOnLoad = currentIndex\n }\n currentTarget.classList.add('activated')\n Turbolinks.visit(location)\n }\n})\n\nMousetrap.bind('\\\\', function (e) {\n e.preventDefault()\n const topSearch = searchBar\n if (topSearch.classList.contains('keynav-target')) {\n topSearch.blur()\n clearTargets()\n keyNav(e, true, 0)\n } else {\n clearTargets()\n topSearch.classList.add('keynav-target')\n topSearch.focus()\n }\n})\n\nMousetrap.bind('`', function () {\n toggleSun()\n})\n\nMousetrap.bind('=', function (e) {\n toggleMenu(e)\n keyNav(e, true)\n})\n\nMousetrap.bind('q', function () {\n clearTargets()\n})\n\nif (keyNavEnabled()) {\n Mousetrap.unpause()\n} else {\n Mousetrap.pause()\n}\n\nif (keyNavToggle) {\n keyNavToggle.querySelector('.text').textContent = keyNavEnabled() ? 'Disable Hot Keys' : 'Enable Hot Keys'\n keyNavToggle.addEventListener('click', (e) => {\n if (e.offsetX === 0) {\n // prevent duplicate click handling when turbolinks re-attaches handlers\n // TODO find a more semantic way to deal with this\n return\n }\n toggleKeyNav()\n })\n}\n\ndocument.addEventListener('turbolinks:load', function (e) {\n closeMenu(e)\n if (keyNavEnabled()) {\n keyNav(e, true)\n }\n})\n\nif (menuToggle) {\n menuToggle.addEventListener('change', (e) => {\n if (keyNavEnabled()) {\n keyNav(e, true)\n }\n })\n}\n","// MessageSocket is a WebSocket manager with an assumed JSON message format.\n//\n// JSON message format:\n// {\n// event: name,\n// message: your message data\n// }\n//\n// Functions for external use:\n// register(id, handler_function) -- register a function to handle events of\n// the given type\n// send(id, data) -- create a JSON message in the above format and send it\n//\n// Copyright (c) 2017, Jonathan Chappelow\n// See LICENSE for details.\n//\n// Based on ws_events_dispatcher.js by Ismael Celis\n\nfunction forward (event, message, handlers) {\n if (typeof handlers[event] === 'undefined') return\n // call each handler\n for (let i = 0; i < handlers[event].length; i++) {\n handlers[event][i](message)\n }\n}\n\nclass MessageSocket {\n constructor () {\n this.uri = undefined\n this.connection = undefined\n this.handlers = {}\n this.queue = []\n this.maxQlength = 5\n }\n\n registerEvtHandler (eventID, handler) {\n this.handlers[eventID] = this.handlers[eventID] || []\n this.handlers[eventID].push(handler)\n }\n\n deregisterEvtHandlers (eventID) {\n this.handlers[eventID] = []\n }\n\n // send a message back to the server\n send (eventID, message) {\n if (this.connection === undefined) {\n while (this.queue.length > this.maxQlength - 1) this.queue.shift()\n this.queue.push([eventID, message])\n return\n }\n const payload = JSON.stringify({\n event: eventID,\n message: message\n })\n\n if (window.loggingDebug) console.log('send', payload)\n this.connection.send(payload)\n }\n\n connect (uri) {\n this.uri = uri\n this.connection = new window.WebSocket(uri)\n\n this.close = (reason) => {\n console.log('close, reason:', reason, this.handlers)\n clearTimeout(pinger)\n this.handlers = {}\n this.connection.close()\n }\n\n // unmarshal message, and forward the message to registered handlers\n this.connection.onmessage = (evt) => {\n const json = JSON.parse(evt.data)\n forward(json.event, json.message, this.handlers)\n }\n\n // Stub out standard functions\n this.connection.onclose = () => {\n forward('close', null, this.handlers)\n }\n this.connection.onopen = () => {\n forward('open', null, this.handlers)\n while (this.queue.length) {\n const [eventID, message] = this.queue.shift()\n this.send(eventID, message)\n }\n }\n this.connection.onerror = (evt) => {\n forward('error', evt, this.handlers)\n }\n\n // Start ping pong\n const pinger = setInterval(() => {\n this.send('ping', 'sup')\n }, 7000)\n }\n}\n\nconst ws = new MessageSocket()\nexport default ws\n","import { setCookie } from './cookie_service'\nimport globalEventBus from './event_bus_service'\n\nconst sunIcon = document.getElementById('sun-icon')\nconst darkBGCookieName = 'dcrdataDarkBG'\n\nexport function darkEnabled () {\n return document.cookie.includes(darkBGCookieName)\n}\n\nfunction menuToggle () {\n return document.querySelector('#menu-toggle #common-menu-input')\n}\n\nif (darkEnabled()) {\n toggleToDarkClasses(document.body)\n} else {\n toggleToLightClasses(document.body)\n}\nfunction toggleToDarkClasses (body) {\n sunIcon.classList.remove('dcricon-sun-fill')\n sunIcon.classList.add('dcricon-sun-stroke')\n body.classList.add('darkBG')\n}\nfunction toggleToLightClasses (body) {\n body.classList.remove('darkBG')\n sunIcon.classList.remove('dcricon-sun-stroke')\n sunIcon.classList.add('dcricon-sun-fill')\n}\nexport function toggleSun () {\n if (darkEnabled()) {\n setCookie(darkBGCookieName, '', 0)\n toggleToLightClasses(document.body)\n globalEventBus.publish('NIGHT_MODE', { nightMode: false })\n } else {\n setCookie(darkBGCookieName, 1, 525600)\n toggleToDarkClasses(document.body)\n globalEventBus.publish('NIGHT_MODE', { nightMode: true })\n }\n}\n\ndocument.addEventListener('turbolinks:before-render', function (event) {\n if (darkEnabled()) {\n toggleToDarkClasses(event.data.newBody)\n } else {\n toggleToLightClasses(event.data.newBody)\n }\n})\n\nexport function toggleMenu () {\n const checkbox = menuToggle()\n if (!checkbox) {\n return\n }\n checkbox.checked = !checkbox.checked\n checkbox.dispatchEvent(new window.Event('change'))\n}\n\nexport function closeMenu () {\n const checkbox = menuToggle()\n if (!checkbox) {\n return\n }\n if (!checkbox.checked) return\n checkbox.checked = false\n checkbox.dispatchEvent(new window.Event('change'))\n}\n","!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).mempoolJS=e()}}((function(){var e=function(e){var t;return function(n){return t||e(t={exports:{},parent:n},t.exports),t.exports}},t=e((function(e,t){(function(t){(function(){\"use strict\";var r={\"Content-Type\":\"application/x-www-form-urlencoded\"};function o(e,t){!l.isUndefined(e)&&l.isUndefined(e[\"Content-Type\"])&&(e[\"Content-Type\"]=t)}var i,a={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:((\"undefined\"!=typeof XMLHttpRequest||void 0!==t&&\"[object process]\"===Object.prototype.toString.call(t))&&(i=n({})),i),transformRequest:[function(e,t){return v(t,\"Accept\"),v(t,\"Content-Type\"),l.isFormData(e)||l.isArrayBuffer(e)||l.isBuffer(e)||l.isStream(e)||l.isFile(e)||l.isBlob(e)?e:l.isArrayBufferView(e)?e.buffer:l.isURLSearchParams(e)?(o(t,\"application/x-www-form-urlencoded;charset=utf-8\"),e.toString()):l.isObject(e)||t&&\"application/json\"===t[\"Content-Type\"]?(o(t,\"application/json\"),function(e,t,n){if(l.isString(e))try{return(0,JSON.parse)(e),l.trim(e)}catch(r){if(\"SyntaxError\"!==r.name)throw r}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||a.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,o=!n&&\"json\"===this.responseType;if(o||r&&l.isString(e)&&e.length)try{return JSON.parse(e)}catch(i){if(o){if(\"SyntaxError\"===i.name)throw b(i,this,\"E_JSON_PARSE\");throw i}}return e}],timeout:0,xsrfCookieName:\"XSRF-TOKEN\",xsrfHeaderName:\"X-XSRF-TOKEN\",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:\"application/json, text/plain, */*\"}}};l.forEach([\"delete\",\"get\",\"head\"],(function(e){a.headers[e]={}})),l.forEach([\"post\",\"put\",\"patch\"],(function(e){a.headers[e]=l.merge(r)})),e.exports=a}).call(this)}).call(this,A)})),n=e((function(e,n){\"use strict\";var r=t({});e.exports=function(e){return new Promise((function(t,n){var o,i=e.data,a=e.headers,u=e.responseType;function s(){e.cancelToken&&e.cancelToken.unsubscribe(o),e.signal&&e.signal.removeEventListener(\"abort\",o)}l.isFormData(i)&&delete a[\"Content-Type\"];var c=new XMLHttpRequest;if(e.auth){var f=e.auth.username||\"\",h=e.auth.password?unescape(encodeURIComponent(e.auth.password)):\"\";a.Authorization=\"Basic \"+btoa(f+\":\"+h)}var p=m(e.baseURL,e.url);function v(){if(c){var r=\"getAllResponseHeaders\"in c?k(c.getAllResponseHeaders()):null,o={data:u&&\"text\"!==u&&\"json\"!==u?c.response:c.responseText,status:c.status,statusText:c.statusText,headers:r,config:e,request:c};w((function(e){t(e),s()}),(function(e){n(e),s()}),o),c=null}}if(c.open(e.method.toUpperCase(),d(p,e.params,e.paramsSerializer),!0),c.timeout=e.timeout,\"onloadend\"in c?c.onloadend=v:c.onreadystatechange=function(){c&&4===c.readyState&&(0!==c.status||c.responseURL&&0===c.responseURL.indexOf(\"file:\"))&&setTimeout(v)},c.onabort=function(){c&&(n(y(\"Request aborted\",e,\"ECONNABORTED\",c)),c=null)},c.onerror=function(){n(y(\"Network Error\",e,null,c)),c=null},c.ontimeout=function(){var t=e.timeout?\"timeout of \"+e.timeout+\"ms exceeded\":\"timeout exceeded\",o=e.transitional||r.transitional;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(y(t,e,o.clarifyTimeoutError?\"ETIMEDOUT\":\"ECONNABORTED\",c)),c=null},l.isStandardBrowserEnv()){var b=(e.withCredentials||_(p))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;b&&(a[e.xsrfHeaderName]=b)}\"setRequestHeader\"in c&&l.forEach(a,(function(e,t){void 0===i&&\"content-type\"===t.toLowerCase()?delete a[t]:c.setRequestHeader(t,e)})),l.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),u&&\"json\"!==u&&(c.responseType=e.responseType),\"function\"==typeof e.onDownloadProgress&&c.addEventListener(\"progress\",e.onDownloadProgress),\"function\"==typeof e.onUploadProgress&&c.upload&&c.upload.addEventListener(\"progress\",e.onUploadProgress),(e.cancelToken||e.signal)&&(o=function(e){c&&(n(!e||e&&e.type?new T(\"canceled\"):e),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(o),e.signal&&(e.signal.aborted?o():e.signal.addEventListener(\"abort\",o))),i||(i=null),c.send(i)}))}})),r=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}},o=Object.prototype.toString;function i(e){return\"[object Array]\"===o.call(e)}function a(e){return void 0===e}function u(e){return null!==e&&\"object\"==typeof e}function s(e){if(\"[object Object]\"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function c(e,t){if(null!=e)if(\"object\"!=typeof e&&(e=[e]),i(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.call(null,e[o],o,e)}var l={isArray:i,isArrayBuffer:function(e){return\"[object ArrayBuffer]\"===o.call(e)},isBuffer:function(e){return null!==e&&!a(e)&&null!==e.constructor&&!a(e.constructor)&&\"function\"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return\"undefined\"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return\"undefined\"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return\"string\"==typeof e},isNumber:function(e){return\"number\"==typeof e},isObject:u,isPlainObject:s,isUndefined:a,isDate:function(e){return\"[object Date]\"===o.call(e)},isFile:function(e){return\"[object File]\"===o.call(e)},isBlob:function(e){return\"[object Blob]\"===o.call(e)},isStream:function(e){return u(e)&&function(e){return\"[object Function]\"===o.call(e)}(e.pipe)},isURLSearchParams:function(e){return\"undefined\"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return(\"undefined\"==typeof navigator||\"ReactNative\"!==navigator.product&&\"NativeScript\"!==navigator.product&&\"NS\"!==navigator.product)&&\"undefined\"!=typeof window&&\"undefined\"!=typeof document},forEach:c,merge:function e(){var t={};function n(n,r){s(t[r])&&s(n)?t[r]=e(t[r],n):s(n)?t[r]=e({},n):i(n)?t[r]=n.slice():t[r]=n}for(var r=0,o=arguments.length;r<o;r++)c(arguments[r],n);return t},extend:function(e,t,n){return c(t,(function(t,o){e[o]=n&&\"function\"==typeof t?r(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}};function f(e){return encodeURIComponent(e).replace(/%3A/gi,\":\").replace(/%24/g,\"$\").replace(/%2C/gi,\",\").replace(/%20/g,\"+\").replace(/%5B/gi,\"[\").replace(/%5D/gi,\"]\")}var d=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(l.isURLSearchParams(t))r=t.toString();else{var o=[];l.forEach(t,(function(e,t){null!=e&&(l.isArray(e)?t+=\"[]\":e=[e],l.forEach(e,(function(e){l.isDate(e)?e=e.toISOString():l.isObject(e)&&(e=JSON.stringify(e)),o.push(f(t)+\"=\"+f(e))})))})),r=o.join(\"&\")}if(r){var i=e.indexOf(\"#\");-1!==i&&(e=e.slice(0,i)),e+=(-1===e.indexOf(\"?\")?\"?\":\"&\")+r}return e},h={};function p(){this.handlers=[]}p.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},p.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},p.prototype.forEach=function(e){l.forEach(this.handlers,(function(t){null!==t&&e(t)}))},h=p;var v=function(e,t){l.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))},b=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},e},y=function(e,t,n,r,o){var i=new Error(e);return b(i,t,n,r,o)},w=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(y(\"Request failed with status code \"+n.status,n.config,null,n.request,n)):e(n)},g=l.isStandardBrowserEnv()?{write:function(e,t,n,r,o,i){var a=[];a.push(e+\"=\"+encodeURIComponent(t)),l.isNumber(n)&&a.push(\"expires=\"+new Date(n).toGMTString()),l.isString(r)&&a.push(\"path=\"+r),l.isString(o)&&a.push(\"domain=\"+o),!0===i&&a.push(\"secure\"),document.cookie=a.join(\"; \")},read:function(e){var t=document.cookie.match(new RegExp(\"(^|;\\\\s*)(\"+e+\")=([^;]*)\"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,\"\",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},m=function(e,t){return e&&!/^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(t)?function(e,t){return t?e.replace(/\\/+$/,\"\")+\"/\"+t.replace(/^\\/+/,\"\"):e}(e,t):t},x=[\"age\",\"authorization\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"from\",\"host\",\"if-modified-since\",\"if-unmodified-since\",\"last-modified\",\"location\",\"max-forwards\",\"proxy-authorization\",\"referer\",\"retry-after\",\"user-agent\"],k=function(e){var t,n,r,o={};return e?(l.forEach(e.split(\"\\n\"),(function(e){if(r=e.indexOf(\":\"),t=l.trim(e.substr(0,r)).toLowerCase(),n=l.trim(e.substr(r+1)),t){if(o[t]&&x.indexOf(t)>=0)return;o[t]=\"set-cookie\"===t?(o[t]?o[t]:[]).concat([n]):o[t]?o[t]+\", \"+n:n}})),o):o},_=l.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement(\"a\");function r(e){var r=e;return t&&(n.setAttribute(\"href\",r),r=n.href),n.setAttribute(\"href\",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,\"\"):\"\",host:n.host,search:n.search?n.search.replace(/^\\?/,\"\"):\"\",hash:n.hash?n.hash.replace(/^#/,\"\"):\"\",hostname:n.hostname,port:n.port,pathname:\"/\"===n.pathname.charAt(0)?n.pathname:\"/\"+n.pathname}}return e=r(window.location.href),function(t){var n=l.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0},T={};function S(e){this.message=e}S.prototype.toString=function(){return\"Cancel\"+(this.message?\": \"+this.message:\"\")},S.prototype.__CANCEL__=!0,T=S;var P,E,A={},j=A={};function B(){throw new Error(\"setTimeout has not been defined\")}function O(){throw new Error(\"clearTimeout has not been defined\")}function M(e){if(P===setTimeout)return setTimeout(e,0);if((P===B||!P)&&setTimeout)return P=setTimeout,setTimeout(e,0);try{return P(e,0)}catch(t){try{return P.call(null,e,0)}catch(t){return P.call(this,e,0)}}}!function(){try{P=\"function\"==typeof setTimeout?setTimeout:B}catch(e){P=B}try{E=\"function\"==typeof clearTimeout?clearTimeout:O}catch(e){E=O}}();var R,C=[],L=!1,N=-1;function U(){L&&R&&(L=!1,R.length?C=R.concat(C):N=-1,C.length&&q())}function q(){if(!L){var e=M(U);L=!0;for(var t=C.length;t;){for(R=C,C=[];++N<t;)R&&R[N].run();N=-1,t=C.length}R=null,L=!1,function(e){if(E===clearTimeout)return clearTimeout(e);if((E===O||!E)&&clearTimeout)return E=clearTimeout,clearTimeout(e);try{E(e)}catch(t){try{return E.call(null,e)}catch(t){return E.call(this,e)}}}(e)}}function I(e,t){this.fun=e,this.array=t}function D(){}j.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];C.push(new I(e,t)),1!==C.length||L||M(q)},I.prototype.run=function(){this.fun.apply(null,this.array)},j.title=\"browser\",j.browser=!0,j.env={},j.argv=[],j.version=\"\",j.versions={},j.on=D,j.addListener=D,j.once=D,j.off=D,j.removeListener=D,j.removeAllListeners=D,j.emit=D,j.prependListener=D,j.prependOnceListener=D,j.listeners=function(e){return[]},j.binding=function(e){throw new Error(\"process.binding is not supported\")},j.cwd=function(){return\"/\"},j.chdir=function(e){throw new Error(\"process.chdir is not supported\")},j.umask=function(){return 0};var F=t({}),G=function(e,t,n){var r=this||F;return l.forEach(n,(function(n){e=n.call(r,e,t)})),e},H=function(e){return!(!e||!e.__CANCEL__)},J=t({});function W(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new T(\"canceled\")}var z,V=function(e){return W(e),e.headers=e.headers||{},e.data=G.call(e,e.data,e.headers,e.transformRequest),e.headers=l.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),l.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],(function(t){delete e.headers[t]})),(e.adapter||J.adapter)(e).then((function(t){return W(e),t.data=G.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return H(t)||(W(e),t&&t.response&&(t.response.data=G.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},X=function(e,t){t=t||{};var n={};function r(e,t){return l.isPlainObject(e)&&l.isPlainObject(t)?l.merge(e,t):l.isPlainObject(t)?l.merge({},t):l.isArray(t)?t.slice():t}function o(n){return l.isUndefined(t[n])?l.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function i(e){if(!l.isUndefined(t[e]))return r(void 0,t[e])}function a(n){return l.isUndefined(t[n])?l.isUndefined(e[n])?void 0:r(void 0,e[n]):r(void 0,t[n])}function u(n){return n in t?r(e[n],t[n]):n in e?r(void 0,e[n]):void 0}var s={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:u};return l.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=s[e]||o,r=t(e);l.isUndefined(r)&&t!==u||(n[e]=r)})),n},$=\"0.24.0\",K=$,Q={};[\"object\",\"boolean\",\"number\",\"function\",\"string\",\"symbol\"].forEach((function(e,t){Q[e]=function(n){return typeof n===e||\"a\"+(t<1?\"n \":\" \")+e}}));var Y={};Q.transitional=function(e,t,n){function r(e,t){return\"[Axios v\"+K+\"] Transitional option '\"+e+\"'\"+t+(n?\". \"+n:\"\")}return function(n,o,i){if(!1===e)throw new Error(r(o,\" has been removed\"+(t?\" in \"+t:\"\")));return t&&!Y[o]&&(Y[o]=!0,console.warn(r(o,\" has been deprecated since v\"+t+\" and will be removed in the near future\"))),!e||e(n,o,i)}};var Z={},ee=(z={assertOptions:function(e,t,n){if(\"object\"!=typeof e)throw new TypeError(\"options must be an object\");for(var r=Object.keys(e),o=r.length;o-- >0;){var i=r[o],a=t[i];if(a){var u=e[i],s=void 0===u||a(u,i,e);if(!0!==s)throw new TypeError(\"option \"+i+\" must be \"+s)}else if(!0!==n)throw Error(\"Unknown option \"+i)}},validators:Q}).validators;function te(e){this.defaults=e,this.interceptors={request:new h,response:new h}}te.prototype.request=function(e){\"string\"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=X(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method=\"get\";var t=e.transitional;void 0!==t&&z.assertOptions(t,{silentJSONParsing:ee.transitional(ee.boolean),forcedJSONParsing:ee.transitional(ee.boolean),clarifyTimeoutError:ee.transitional(ee.boolean)},!1);var n=[],r=!0;this.interceptors.request.forEach((function(t){\"function\"==typeof t.runWhen&&!1===t.runWhen(e)||(r=r&&t.synchronous,n.unshift(t.fulfilled,t.rejected))}));var o,i=[];if(this.interceptors.response.forEach((function(e){i.push(e.fulfilled,e.rejected)})),!r){var a=[V,void 0];for(Array.prototype.unshift.apply(a,n),a=a.concat(i),o=Promise.resolve(e);a.length;)o=o.then(a.shift(),a.shift());return o}for(var u=e;n.length;){var s=n.shift(),c=n.shift();try{u=s(u)}catch(l){c(l);break}}try{o=V(u)}catch(l){return Promise.reject(l)}for(;i.length;)o=o.then(i.shift(),i.shift());return o},te.prototype.getUri=function(e){return e=X(this.defaults,e),d(e.url,e.params,e.paramsSerializer).replace(/^\\?/,\"\")},l.forEach([\"delete\",\"get\",\"head\",\"options\"],(function(e){te.prototype[e]=function(t,n){return this.request(X(n||{},{method:e,url:t,data:(n||{}).data}))}})),l.forEach([\"post\",\"put\",\"patch\"],(function(e){te.prototype[e]=function(t,n,r){return this.request(X(r||{},{method:e,url:t,data:n}))}})),Z=te;var ne;function re(e){if(\"function\"!=typeof e)throw new TypeError(\"executor must be a function.\");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t<r;t++)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e){n.reason||(n.reason=new T(e),t(n.reason))}))}re.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},re.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},re.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},re.source=function(){var e;return{token:new re((function(t){e=t})),cancel:e}},ne=re;var oe={},ie=function e(t){var n=new Z(t),o=r(Z.prototype.request,n);return l.extend(o,Z.prototype,n),l.extend(o,n),o.create=function(n){return e(X(t,n))},o}(t({}));ie.Axios=Z,ie.Cancel=T,ie.CancelToken=ne,ie.isCancel=H,ie.VERSION=$,ie.all=function(e){return Promise.all(e)},ie.spread=function(e){return function(t){return e.apply(null,t)}},ie.isAxiosError=function(e){return\"object\"==typeof e&&!0===e.isAxiosError},(oe=ie).default=ie;var ae=oe,ue={},se=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ue,\"__esModule\",{value:!0}),ue.makeLiquidAPI=ue.makeBisqMarketsAPI=ue.makeBisqAPI=ue.makeBitcoinAPI=void 0;var ce=se(ae);ue.makeBitcoinAPI=function(e){var t=e.hostname,n=e.network;return n=n&&[\"testnet\",\"signet\"].includes(n)?\"/\"+n:\"\",(null==t?void 0:t.includes(\"localhost\"))?{api:ce.default.create({baseURL:\"http://\"+t+n+\"/api/\"})}:{api:ce.default.create({baseURL:\"https://\"+t+n+\"/api/\"})}},ue.makeBisqAPI=function(e){return(null==e?void 0:e.includes(\"localhost\"))?{api:ce.default.create({baseURL:\"http://\"+e+\"/bisq/api/\"})}:{api:ce.default.create({baseURL:\"https://\"+e+\"/bisq/api/\"})}},ue.makeBisqMarketsAPI=function(){return{api:ce.default.create({baseURL:\"https://bisq.markets/api/v1/markets/\"})}},ue.makeLiquidAPI=function(e){return(null==e?void 0:e.includes(\"localhost\"))?{api:ce.default.create({baseURL:\"http://\"+e+\"/liquid/api/\"})}:{api:ce.default.create({baseURL:\"https://\"+e+\"/liquid/api/\"})}},ue.makeBitcoinAPI,ue.makeBisqAPI,ue.makeBisqMarketsAPI,ue.makeLiquidAPI;var le={},fe=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},de=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(le,\"__esModule\",{value:!0}),le.useAddresses=void 0,le.useAddresses=function(e){return{getAddress:function(t){return fe(void 0,void 0,void 0,(function(){return de(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address)];case 1:return[2,n.sent().data]}}))}))},getAddressTxs:function(t){return fe(void 0,void 0,void 0,(function(){return de(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsChain:function(t){return fe(void 0,void 0,void 0,(function(){return de(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs/chain\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsMempool:function(t){return fe(void 0,void 0,void 0,(function(){return de(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs/mempool\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsUtxo:function(t){return fe(void 0,void 0,void 0,(function(){return de(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/utxo\")];case 1:return[2,n.sent().data]}}))}))}}};var he={},pe=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},ve=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(he,\"__esModule\",{value:!0}),he.useBlocks=void 0,he.useBlocks=function(e){return{getBlock:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash)];case 1:return[2,n.sent().data]}}))}))},getBlocks:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/blocks/\"+t.start_height)];case 1:return[2,n.sent().data]}}))}))},getBlockStatus:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/status\")];case 1:return[2,n.sent().data]}}))}))},getBlockTxs:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txs/\"+t.start_index)];case 1:return[2,n.sent().data]}}))}))},getBlockTxid:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txid/\"+t.index)];case 1:return[2,n.sent().data]}}))}))},getBlockTxids:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txids\")];case 1:return[2,n.sent().data]}}))}))},getBlockRaw:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/raw\")];case 1:return[2,n.sent().data]}}))}))},getBlockHeader:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/header\")];case 1:return[2,n.sent().data]}}))}))},getBlockHeight:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block-height/\"+t.height)];case 1:return[2,n.sent().data]}}))}))},getBlocksTipHash:function(){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/blocks/tip/hash\")];case 1:return[2,t.sent().data]}}))}))},getBlocksTipHeight:function(){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/blocks/tip/height\")];case 1:return[2,t.sent().data]}}))}))}}};var be={},ye=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},we=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(be,\"__esModule\",{value:!0}),be.useDifficulty=void 0,be.useDifficulty=function(e){return{getDifficultyAdjustment:function(){return ye(void 0,void 0,void 0,(function(){return we(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/difficulty-adjustment\")];case 1:return[2,t.sent().data]}}))}))}}};var ge={},me=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},xe=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(ge,\"__esModule\",{value:!0}),ge.useFees=void 0,ge.useFees=function(e){return{getFeesRecommended:function(){return me(void 0,void 0,void 0,(function(){return xe(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/fees/recommended\")];case 1:return[2,t.sent().data]}}))}))},getFeesMempoolBlocks:function(){return me(void 0,void 0,void 0,(function(){return xe(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/fees/mempool-blocks\")];case 1:return[2,t.sent().data]}}))}))},getCPFP:function(t){return me(void 0,void 0,void 0,(function(){return xe(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/v1/cpfp/\"+t.txid)];case 1:return[2,n.sent().data]}}))}))}}};var ke={},_e=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},Te=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(ke,\"__esModule\",{value:!0}),ke.useMempool=void 0,ke.useMempool=function(e){return{getMempool:function(){return _e(void 0,void 0,void 0,(function(){return Te(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool\")];case 1:return[2,t.sent().data]}}))}))},getMempoolTxids:function(){return _e(void 0,void 0,void 0,(function(){return Te(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool/txids\")];case 1:return[2,t.sent().data]}}))}))},getMempoolRecent:function(){return _e(void 0,void 0,void 0,(function(){return Te(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool/recent\")];case 1:return[2,t.sent().data]}}))}))}}};var Se={},Pe=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},Ee=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Se,\"__esModule\",{value:!0}),Se.useTransactions=void 0,Se.useTransactions=function(e){return{getTx:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid)];case 1:return[2,n.sent().data]}}))}))},getTxStatus:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/status\")];case 1:return[2,n.sent().data]}}))}))},getTxHex:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/hex\")];case 1:return[2,n.sent().data]}}))}))},getTxRaw:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/raw\")];case 1:return[2,n.sent().data]}}))}))},getTxMerkleBlockProof:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/merkleblock-proof\")];case 1:return[2,n.sent().data]}}))}))},getTxMerkleProof:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/merkle-proof\")];case 1:return[2,n.sent().data]}}))}))},getTxOutspend:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/outspend/\"+t.vout)];case 1:return[2,n.sent().data]}}))}))},getTxOutspends:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/outspends\")];case 1:return[2,n.sent().data]}}))}))},postTx:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.post(\"/tx\",{txhex:t.txhex})];case 1:return[2,n.sent().data]}}))}))}}};var Ae={},je=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},Be=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Ae,\"__esModule\",{value:!0});var Oe=function(e,t){var n=new WebSocket(t);return n.addEventListener(\"open\",(function(){n.send(JSON.stringify({action:\"want\",data:e}))})),n.addEventListener(\"close\",(function(){return je(this,void 0,void 0,(function(){return Be(this,(function(n){switch(n.label){case 0:return[4,Me(6e4)];case 1:return n.sent(),Oe(e,t),[2]}}))}))})),n},Me=function(e){return new Promise((function(t){setTimeout(t,e)}))};Ae.default=Oe;var Re={},Ce=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},Le=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},Ne=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Re,\"__esModule\",{value:!0});var Ue=Ne((function(){throw new Error(\"ws does not work in the browser. Browser clients must use the native WebSocket object\")})),qe=function(e,t){var n=new Ue.default(t),r=setInterval((function(){n.ping()}),3e4);return n.on(\"open\",(function(){n.send(JSON.stringify({action:\"want\",data:e}))})),n.on(\"close\",(function(){return Ce(this,void 0,void 0,(function(){return Le(this,(function(o){switch(o.label){case 0:return clearInterval(r),n.terminate(),[4,Ie(6e4)];case 1:return o.sent(),qe(e,t),[2]}}))}))})),n},Ie=function(e){return new Promise((function(t){setTimeout(t,e)}))};Re.default=qe;var De={},Fe=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(De,\"__esModule\",{value:!0}),De.useWebsocket=void 0;var Ge=Fe(Ae),He=Fe(Re);De.useWebsocket=function(e,t){var n=\"wss://\"+e+(\"main\"===t?\"\":\"/\"+t)+\"/api/v1/ws\";return{initClient:function(e){var t=e.options;return Ge.default(t,n)},initServer:function(e){var t=e.options;return He.default(t,n)}}};var Je={},We=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},ze=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Je,\"__esModule\",{value:!0}),Je.useAddresses=void 0,Je.useAddresses=function(e){return{getAddress:function(t){return We(void 0,void 0,void 0,(function(){return ze(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address)];case 1:return[2,n.sent().data]}}))}))}}};var Ve={},Xe=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},$e=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Ve,\"__esModule\",{value:!0}),Ve.useBlocks=void 0,Ve.useBlocks=function(e){return{getBlock:function(t){return Xe(void 0,void 0,void 0,(function(){return $e(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash)];case 1:return[2,n.sent().data]}}))}))},getBlocks:function(t){return Xe(void 0,void 0,void 0,(function(){return $e(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/blocks/\"+t.index+\"/\"+t.length)];case 1:return[2,n.sent().data]}}))}))},getBlocksTipHeight:function(){return Xe(void 0,void 0,void 0,(function(){return $e(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/blocks/tip/height\")];case 1:return[2,t.sent().data]}}))}))}}};var Ke={},Qe=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},Ye=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Ke,\"__esModule\",{value:!0}),Ke.useStatistics=void 0,Ke.useStatistics=function(e){return{getStats:function(){return Qe(void 0,void 0,void 0,(function(){return Ye(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/stats\")];case 1:return[2,t.sent().data]}}))}))}}};var Ze={},et=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},tt=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Ze,\"__esModule\",{value:!0}),Ze.useTransactions=void 0,Ze.useTransactions=function(e){return{getTx:function(t){return et(void 0,void 0,void 0,(function(){return tt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid)];case 1:return[2,n.sent().data]}}))}))},getTxs:function(t){return et(void 0,void 0,void 0,(function(){return tt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/txs/\"+t.index+\"/\"+t.length)];case 1:return[2,n.sent().data]}}))}))}}};var nt={},rt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},ot=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(nt,\"__esModule\",{value:!0}),nt.useMarkets=void 0,nt.useMarkets=function(e){return{getCurrencies:function(t){return void 0===t&&(t={basecurrency:\"BTC\",type:\"all\",format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/currencies\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getDepth:function(t){return void 0===t&&(t={market:\"xmr_btc\",format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/depth\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getHloc:function(t){return rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/hloc\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getMarkets:function(t){return void 0===t&&(t={format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/markets\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getOffers:function(t){return void 0===t&&(t={market:\"xmr_btc\",format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/offers\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getTicker:function(t){return void 0===t&&(t={format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/ticker\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getTrades:function(t){return void 0===t&&(t={market:\"all\",format:\"jsonpretty\",timestamp_from:\"2016-01-01\",timestamp_to:\"now\",limit:100,sort:\"desc\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/trades\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getVolumes:function(t){return void 0===t&&(t={basecurrency:\"\",market:\"\",interval:\"auto\",timestamp_from:\"2016-01-01\",timestamp_to:\"now\",format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/trades\",{params:t})];case 1:return[2,n.sent().data]}}))}))}}};var it={},at=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},ut=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(it,\"__esModule\",{value:!0}),it.useAssets=void 0,it.useAssets=function(e){return{getAsset:function(t){return at(void 0,void 0,void 0,(function(){return ut(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/asset/\"+t.asset_id)];case 1:return[2,n.sent().data]}}))}))},getAssetIcon:function(t){return at(void 0,void 0,void 0,(function(){return ut(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/v1/asset/\"+t.asset_id+\"/icon\")];case 1:return[2,n.sent().data]}}))}))},getAssetTxs:function(t){return at(void 0,void 0,void 0,(function(){var n;return ut(this,(function(r){switch(r.label){case 0:return n=!0===t.is_mempool?\"/mempool\":\"/chain\",[4,e.get(\"/asset/\"+t.asset_id+\"/txs\"+n)];case 1:return[2,r.sent().data]}}))}))},getAssetSupply:function(t){return at(void 0,void 0,void 0,(function(){var n;return ut(this,(function(r){switch(r.label){case 0:return n=!0===t.decimal?\"/decimal\":\"\",[4,e.get(\"/asset/\"+t.asset_id+\"/supply\"+n)];case 1:return[2,r.sent().data]}}))}))},getAssetsIcons:function(){return at(void 0,void 0,void 0,(function(){return ut(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/assets/icons\")];case 1:return[2,t.sent().data]}}))}))}}};var st={},ct=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},lt=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(st,\"__esModule\",{value:!0}),st.useAddresses=void 0,st.useAddresses=function(e){return{getAddress:function(t){return ct(void 0,void 0,void 0,(function(){return lt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address)];case 1:return[2,n.sent().data]}}))}))},getAddressTxs:function(t){return ct(void 0,void 0,void 0,(function(){return lt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsChain:function(t){return ct(void 0,void 0,void 0,(function(){return lt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs/chain\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsMempool:function(t){return ct(void 0,void 0,void 0,(function(){return lt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs/mempool\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsUtxo:function(t){return ct(void 0,void 0,void 0,(function(){return lt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/utxo\")];case 1:return[2,n.sent().data]}}))}))}}};var ft={},dt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},ht=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(ft,\"__esModule\",{value:!0}),ft.useBlocks=void 0,ft.useBlocks=function(e){return{getBlock:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash)];case 1:return[2,n.sent().data]}}))}))},getBlocks:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/blocks/\"+t.start_height)];case 1:return[2,n.sent().data]}}))}))},getBlockStatus:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/status\")];case 1:return[2,n.sent().data]}}))}))},getBlockTxs:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txs/\"+t.start_index)];case 1:return[2,n.sent().data]}}))}))},getBlockTxid:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txid/\"+t.index)];case 1:return[2,n.sent().data]}}))}))},getBlockTxids:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txids\")];case 1:return[2,n.sent().data]}}))}))},getBlockRaw:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/raw\")];case 1:return[2,n.sent().data]}}))}))},getBlockHeight:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block-height/\"+t.height)];case 1:return[2,n.sent().data]}}))}))},getBlocksTipHash:function(){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/blocks/tip/hash\")];case 1:return[2,t.sent().data]}}))}))},getBlocksTipHeight:function(){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/blocks/tip/height\")];case 1:return[2,t.sent().data]}}))}))}}};var pt={},vt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},bt=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(pt,\"__esModule\",{value:!0}),pt.useFees=void 0,pt.useFees=function(e){return{getFeesRecommended:function(){return vt(void 0,void 0,void 0,(function(){return bt(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/fees/recommended\")];case 1:return[2,t.sent().data]}}))}))},getFeesMempoolBlocks:function(){return vt(void 0,void 0,void 0,(function(){return bt(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/fees/mempool-blocks\")];case 1:return[2,t.sent().data]}}))}))},getCPFP:function(t){return vt(void 0,void 0,void 0,(function(){return bt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/v1/cpfp/\"+t.txid)];case 1:return[2,n.sent().data]}}))}))}}};var yt={},wt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},gt=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(yt,\"__esModule\",{value:!0}),yt.useMempool=void 0,yt.useMempool=function(e){return{getMempool:function(){return wt(void 0,void 0,void 0,(function(){return gt(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool\")];case 1:return[2,t.sent().data]}}))}))},getMempoolTxids:function(){return wt(void 0,void 0,void 0,(function(){return gt(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool/txids\")];case 1:return[2,t.sent().data]}}))}))},getMempoolRecent:function(){return wt(void 0,void 0,void 0,(function(){return gt(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool/recent\")];case 1:return[2,t.sent().data]}}))}))}}};var mt={},xt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},kt=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(mt,\"__esModule\",{value:!0}),mt.useTransactions=void 0,mt.useTransactions=function(e){return{getTx:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid)];case 1:return[2,n.sent().data]}}))}))},getTxStatus:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/status\")];case 1:return[2,n.sent().data]}}))}))},getTxHex:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/hex\")];case 1:return[2,n.sent().data]}}))}))},getTxRaw:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/raw\")];case 1:return[2,n.sent().data]}}))}))},getTxMerkleBlockProof:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/merkleblock-proof\")];case 1:return[2,n.sent().data]}}))}))},getTxMerkleProof:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/merkle-proof\")];case 1:return[2,n.sent().data]}}))}))},getTxOutspend:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/outspend/\"+t.vout)];case 1:return[2,n.sent().data]}}))}))},getTxOutspends:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/outspends\")];case 1:return[2,n.sent().data]}}))}))},postTx:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.post(\"/tx\",{txid:t.txhex})];case 1:return[2,n.sent().data]}}))}))}}};var _t={},Tt=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_t,\"__esModule\",{value:!0}),_t.useWebsocket=void 0;var St=Tt(Ae),Pt=Tt(Re);_t.useWebsocket=function(e){var t=\"wss://\"+e+\"/liquid/api/v1/ws\";return{initClient:function(e){var n=e.options;return St.default(n,t)},initServer:function(e){var n=e.options;return Pt.default(n,t)}}};var Et=function(e){var t=void 0===e?{hostname:\"mempool.space\",network:\"main\"}:e,n=t.hostname,r=t.network;n||(n=\"mempool.space\"),r||(r=\"main\");var o=ue.makeBitcoinAPI({hostname:n,network:r}).api,i=ue.makeBisqAPI(n).api,a=ue.makeBisqMarketsAPI().api,u=ue.makeLiquidAPI(n).api;return{bitcoin:{addresses:le.useAddresses(o),blocks:he.useBlocks(o),difficulty:be.useDifficulty(o),fees:ge.useFees(o),mempool:ke.useMempool(o),transactions:Se.useTransactions(o),websocket:De.useWebsocket(n,r)},bisq:{statistics:Ke.useStatistics(i),addresses:Je.useAddresses(i),blocks:Ve.useBlocks(i),transactions:Ze.useTransactions(i),markets:nt.useMarkets(a)},liquid:{addresses:st.useAddresses(u),assets:it.useAssets(u),blocks:ft.useBlocks(u),fees:pt.useFees(u),mempool:yt.useMempool(u),transactions:mt.useTransactions(u),websocket:_t.useWebsocket(n)}}};return Et.default=Et,Et}));","var map = {\n\t\"./address_controller.js\": 4781,\n\t\"./agenda_controller.js\": 6147,\n\t\"./agendas_controller.js\": 3154,\n\t\"./atomicswaps_controller.js\": 7684,\n\t\"./attackcost_controller.js\": 8648,\n\t\"./blockdetail_controller.js\": 2385,\n\t\"./blocklist_controller.js\": 5878,\n\t\"./bwdash_controller.js\": 5946,\n\t\"./chainaddress_controller.js\": 3186,\n\t\"./chaincharts_controller.js\": 3789,\n\t\"./chainhome_controller.js\": 6007,\n\t\"./chainmarket_controller.js\": 7490,\n\t\"./chainmempool_controller.js\": 2823,\n\t\"./chainvisualBlocks_controller.js\": 1464,\n\t\"./charts_controller.js\": 9816,\n\t\"./clipboard_controller.js\": 8235,\n\t\"./common_controller.js\": 6896,\n\t\"./connection_controller.js\": 7323,\n\t\"./financebase_controller.js\": 6408,\n\t\"./financedetail_controller.js\": 3756,\n\t\"./financereport_controller.js\": 7245,\n\t\"./footer_controller.js\": 5082,\n\t\"./homecharts_controller.js\": 6765,\n\t\"./homepage_controller.js\": 7779,\n\t\"./market_controller.js\": 719,\n\t\"./mempool_controller.js\": 7628,\n\t\"./menu_controller.js\": 8014,\n\t\"./newblock_controller.js\": 2638,\n\t\"./pagenavigation_controller.js\": 6848,\n\t\"./proposal_controller.js\": 7745,\n\t\"./rawtx_controller.js\": 4943,\n\t\"./scroll_controller.js\": 968,\n\t\"./search_controller.js\": 4659,\n\t\"./stakingreward_controller.js\": 6779,\n\t\"./status_controller.js\": 1417,\n\t\"./supply_controller.js\": 5618,\n\t\"./ticketpool_controller.js\": 7669,\n\t\"./time_controller.js\": 2472,\n\t\"./top_controller.js\": 2120,\n\t\"./tx_controller.js\": 9663,\n\t\"./visualBlocks_controller.js\": 9245\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 3943;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"js/\" + {\"1\":\"dygraphs\",\"2\":\"qrcode\",\"3\":\"tippy\"}[chunkId] + \".\" + {\"1\":\"bf49455eb18c1649\",\"2\":\"43c58bbf0ce85aca\",\"3\":\"5efda461e6c9c8e8\"}[chunkId] + \".bundle.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/dist/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t0: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdcrdata\"] = self[\"webpackChunkdcrdata\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4], () => (__webpack_require__(1290)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","key","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","undefined","done","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","doneResult","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","require","window","darkEnabled","application","Application","start","getSocketURI","protocol","host","sleep","ms","setTimeout","_createWebSocket","_callee","uri","updateBlockData","updateLtcBlockData","updateBtcBlockData","updateLtcMempoolData","updateBtcMempoolData","_context","ws","connect","event","newBlock","JSON","parse","loggingDebug","console","log","block","unixStamp","Date","time","getTime","globalEventBus","publish","newMempool","registerEvtHandler","e","args","arguments","apply","load","definitionsFromContext","document","addEventListener","querySelectorAll","el","classList","remove","localStorage","getItem","logDebug","yes","setItem","createWebSocket","location","on","Notification","permission","newBlockNtfn","body","concat","height","icon","notifyError","close","_asyncToGenerator","_defineProperties","target","props","descriptor","_toPropertyKey","input","prim","toPrimitive","res","hint","String","_toPrimitive","_setPrototypeOf","o","p","bind","_getPrototypeOf","Dygraph","commonOptions","typesGraphOptions","amountFlowGraphOptions","balanceGraphOptions","blockDuration","formatter","data","xHTML","humanize","date","x","html","this","getLabels","series","map","color","y","l","labelHTML","dashHTML","customizedFormatter","ctrl","_default","_Controller","subClass","superClass","_inherits","Constructor","protoProps","staticProps","_fetchGraphData","_fetchTable","_fetchTableWithPeriod","_hideQRCode","_showQRCode","_connect","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","NewTarget","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","instance","_classCallCheck","settings","cdata","retrievedData","ajaxing","qrCode","requestedChart","zoomCallback","_zoomCallback","drawCallback","_drawCallback","lastEnd","confirmMempoolTxs","_confirmMempoolTxs","bindElements","bindEvents","query","TurboQuery","nullTemplate","assign","dcrAddress","get","paginationParams","offset","parseInt","count","balance","update","setChartType","flow","setFlowChecks","zoom","zoomButtons","button","bin","getBin","chart","validChartType","chartType","getDefault","initializeChart","drawGraph","graph","destroy","off","digitsAfterDecimal","showRangeSelector","rangeSelectorHeight","rangeSelectorForegroundStrokeColor","rangeSelectorBackgroundStrokeColor","legend","fillAlpha","labelsKMB","labelsUTC","stepPlot","rangeSelectorPlotFillColor","rangeSelectorPlotFillGradientColor","rangeSelectorPlotStrokeColor","rangeSelectorPlotLineWidth","labels","colors","ylabel","visibility","legendFormatter","stackedGraph","fillGraph","plotter","Plotters","linePlotter","fillPlotter","fetchGraphData","flowBoxes","flowTarget","pageSizeOptions","hasPagesizeTarget","pagesizeTarget","zoomTarget","binputs","intervalTarget","paginatorTargets","link","preventDefault","_callee2","QRCode","qrCodeImg","_context2","qrboxTarget","fadeIn","qrimgTarget","toDataURL","errorCorrectionLevel","scale","margin","innerHTML","resize","qriconTarget","add","_callee3","_context3","style","opacity","animationFrame","txType","root","fetchTableWithPeriod","txnType","pageSize","toPage","url","href","parser","URL","searchParams","pagesize","txntype","direction","params","requestedOffset","_callee4","requestCount","tableResponse","_context4","listLoaderTarget","requestJSON","makeTableUrl","tableTarget","dompurify","n","tx_count","replace","setPageability","indexOf","mergedMsgTarget","tablePaginationParams","pages","setTablePaginationLinks","_x","_x2","_x3","_x4","_callee5","_context5","_x5","_x6","_x7","rowMax","paginationheaderTarget","pagebuttonsTarget","setAbility","pageplusTarget","pageminusTarget","option","disabled","text","Math","min","suffix","rangeEnd","Number","rangeTarget","toLocaleString","processedData","otherOptions","chartTarget","_objectSpread","tablePagesLink","tablePaginationTarget","txCount","links","d","active","str","join","noconfirmsTarget","validGraphInterval","Zoom","decode","setZoom","end","_callee6","cacheKey","chartKey","graphDataResponse","_context6","chartLoaderTarget","popChartCache","processData","_x8","_x9","isEmpty","noDataAvailable","binSize","mapValue","sentRtx","receivedRtx","tickets","votes","revokeTx","padPoints","txTypesFunc","processed","flowData","balanceData","v","net","netReceived","netSent","received","amountFlowProcessor","options","sizedBarPlotter","createGraph","updateOptions","file","updateFlow","xRange","xAxisExtremes","validateZoom","optionsTarget","namedItem","interval","activeBin","b","setButtonVisibility","validate","activeZoomKey","setGraphQuery","srcElement","nodeName","setIntervalButton","bitmap","idx","setVisibility","box","checked","duration","activeZoomDuration","dateWindow","encode","view","viewTargets","zoomKey","first","_ctrl$graph$xAxisRang2","xAxisRange","setSelectedZoom","mapKey","chartDuration","buttonSet","dataset","fixed","blockData","_this","hasPendingTarget","pendingTargets","row","txInBlock","txid","confirms","querySelector","textContent","confirmationBlockHeight","age","timeSince","addressTarget","txnCountTarget","txnCount","formatted","setTxnCountText","numUnconfirmedTargets","tr","td","hashTargets","btn","expandoTarget","contains","bigchartTarget","appendChild","chartboxTarget","fullscreenTarget","putChartBack","littlechartTarget","activeButtons","getElementsByClassName","base10","txntypeTarget","selectedOptions","selected","Controller","chartLayout","total","reduce","percentage","toFixed","yHTML","labelsSeparateLines","cumulativeVoteChoicesData","Array","abstain","no","voteChoicesByBlockData","emptydata","cumulativeVoteChoicesChart","voteChoicesByBlockChart","agendaResponse","agendaId","element","agendaName","description","agendaNameTarget","changeToHTMLTag","extendDescriptionTarget","drawCharts","by_time","by_height","inText","substring","linkStart","linkEnd","htmlLink","drawChart","cumulativeVoteChoicesTarget","title","voteChoicesByBlockTarget","barChartPlotter","minerMeter","voterMeter","meters","opts","darkMode","hasMinerMeterTarget","ProgressMeter","minerMeterTarget","hasVoterMeterTarget","voterMeterTarget","meterDiv","VoteMeter","setNightMode","_setNightMode","meter","setDarkMode","nightMode","amountOptions","txCountOptions","isSearching","amountFormatter","_clearSearch","_clearSearchState","swapsData","pair","status","mode","getElementById","pairTarget","statusTarget","search","searchInputTarget","searchBtnTarget","clearSearchBtnTarget","fetchTable","resetPageSizeOptions","processDecredBlock","_processDecredBlock","processBtcBlock","_processBtcBlock","processLtcBlock","_processLtcBlock","updateAtomicSwapsFromSocket","GroupSwaps","extra","swapsTotalAmount","swapsTotalContract","refundCount","swapList","totalAmount","totalContracts","totalAmountTarget","decimalParts","toAmountFloat","totalContractsTarget","parseFloat","refundCountTarget","redeemCountTarget","insertedGroupTx","newSwaps","includes","groupTx","swap","handlerUpdateTable","keyCode","searchAtomicSwapContract","resHtml","hasTargetToken","targetToken","toUpperCase","isRefund","toAmountFloatDisplay","source","timeDuration","timeToDuration","contracts","contract","hashElide","timeDisp","results","fees","lockTimeDisp","clearSearchState","redeemRadioTarget","refundRadioTarget","createGridDataView","createDataTableView","amountData","txCountData","redeemAmount","refundAmount","redeemCount","amount","txcount","amountTxCountProcessor","swaps_list","currentcount","current_count","dispCount","topTablePaginationTarget","paginationHTML","dcrPrice","hashrate","tpSize","tpValue","tpPrice","graphData","currentPoint","coinSupply","digitformat","decimalPlaces","noComma","minimumFractionDigits","maximumFractionDigits","endsWith","toString","cutFrom","substr","removeTrailingZeros","rateCalculation","pow","deviceList","units","power","cost","externalAttackType","dashLabels","nodes","yVals","isVisible","precession","nightModeOptions","nightModeOn","rangeSelectorAlpha","gridLineColor","defaultSettings","attack_time","target_pow","kwh_rate","other_costs","target_pos","price","device","attack_type","attackPeriodTarget","targetPowTarget","kwhRateTarget","otherCostsTarget","setAllInputs","targetPosTargets","priceDCRTarget","setDevice","attackTypeTarget","attackPercentTarget","targetPosTarget","setDevicesDesc","updateSliderData","doZoomY_","lowY","highY","plotGraph","processNightMode","chartsView","that","ratioTable","Map","set","xlabel","axes","axisLabelWidth","highlightSeriesOpts","strokeWidth","hideOverlayOnMouseOut","labelsDiv","labelsTarget","logscale","interactionModel","click","highlightCallback","graphTarget","setAnnotations","shortText","setActivePoint","_ref","defaults","k","preserveTargetPow","targetPercentage","currentTarget","previousKey","previousValue","gap","abs","preGap","selectedDevice","selectedAttackType","preserveTargetPoS","updateQueryString","deviceTarget","deviceDescTargets","selectedVal","setOption","deviceTargets","getRowForX","setSelection","ticketPercentage","targetHashRate","powPercentage","setAllValues","internalHashTargets","newHashRateTargets","additionalHashRateTargets","projectedPriceDivTarget","display","internalAttackTextTarget","internalAttackPosTextTarget","showAll","externalAttackTextTargets","externalAttackPosTextTarget","hideAll","updateTargetHashRate","ticketsTarget","internalAttackPosTextTargets","externalAttackPosTextTargets","calculate","disableHashRateUpdate","ticketAttackSize","DCRNeed","deviceInfo","deviceCount","ceil","totalDeviceCost","totalKwh","totalElectricity","extraCost","totalPow","newTicketPoolValueTargets","additionalDcrTargets","ticketPoolAttackTargets","projectedTicketPrice","projectedTicketPriceIncreaseTarget","projectedTicketPriceSignTarget","ticketPoolValueTarget","totalDCRPos","totalPos","timeStr","hourStr","timeHourStr","devicePronounStr","deviceSuffixStr","ticketPoolSizeLabelTarget","commaWithDecimal","actualHashRateTargets","ticketPriceTarget","targetHashRateTargets","durationUnitTarget","durationLongDescTargets","countDeviceTargets","devicePronounTarget","deviceSuffixTarget","deviceNameTargets","totalDeviceCostTargets","totalKwhTargets","totalElectricityTargets","otherCostsValueTargets","totalPowTargets","ticketSizeAttackTargets","totalDCRPosTargets","totalPosTargets","ticketPoolValueTargets","ticketPoolSizeTargets","blockHeightTarget","totalTarget","projectedTicketPriceTarget","attackPosPercentAmountLabelTarget","totalDCRPosLabelTargets","dcrPriceLabelTargets","showPosCostWarning","targets","totalDCRInCirculation","coinSupplyTarget","totalAttackCostContainerTarget","cssText","attackNotPossibleWrapperDivTargets","setupTooltips","tooltipTargets","tooltipElement","newContent","voteValid","vin","vout","module","tippy","allowTitleHTML","animation","arrow","createPopperInstanceOnInit","dynamicTitle","performance","placement","size","sticky","theme","_arrayLikeToArray","arr","len","arr2","conversionRate","newBlockHtmlElement","_step","_iterator","allowArrayLike","it","isArray","minLen","from","test","_unsupportedIterableToArray","F","s","_e","f","normalCompletion","didErr","step","_e2","_createForOfIteratorHelper","Transactions","tx","Coinbase","TxID","subsidy","fee","voteCount","pos","fund","developer","dev","backgroundColorRelativeToVotes","makeRewardsElement","Subsidy","MiningFee","Votes","voteLen","voteElements","vote","Total","VoteValid","makeVoteElements","revocations","blockHref","ticketElements","revCount","ticketCount","ticket","makeTxElement","splice","revocationElements","revocation","ticketsAndRevocationElements","makeTicketAndRevocationElements","Tickets","Revocations","Height","transactions","transactionElements","makeTransactionElements","className","appendFlexGrow","round","VoutCount","VinCount","_initialize","vsdisp","processBlock","_processBlock","pageOffset","initTableColumn","updateVsHrefLink","_this2","navLinkTargets","navLinkTarget","txColHeaderTarget","voteColHeaderTarget","ticketColHeaderTarget","revColHeaderTarget","vsBlocksHeaderTarget","vsDescriptionTarget","txColDataTargets","txColDataTarget","voteColDataTargets","voteColDataTarget","ticketColDataTargets","ticketColDataTarget","revColDataTargets","revColDataTarget","vsSimulDataTargets","vsSimulDataTarget","txsTargets","div","childeElementCount","hasTableTarget","rows","lastHeight","removeChild","newRow","createElement","linkClass","tds","newTd","dataType","timeTarget","bytes","threeSigFigs","TotalSent","createNewVsBlock","insertBefore","firstChild","Tx","filter","Time","Revs","Url","q","pairList","pairColor","_getCsvContent","_fetchCsvDataFromUrl","selectorOptions","dailySelectorOptions","monthlyData","weeklyData","sumOfRow","lastDayData","lastDayArr","lastMonthName","lastMonthData","prevMonthData","prevMonthArr","prevMonthName","last90daysSum","_i","itemData","last6MonthsSum","_i2","_itemData","lastYearSum","_i3","_itemData2","curPercentArr","curLabels","curColors","prevPercentArr","prevLabels","prevColors","curBreakdownChartData","prevBreakdownChartData","pieLayout","pageLoaderTarget","hasData","chartData","weekChartData","dailyChartData","buttons","stepmode","label","layout","barmode","showlegend","xaxis","rangeselector","rangeslider","visible","orientation","xanchor","traceorder","dailyLayout","fetchCsvDataFromUrl","dailyData","groupMonthlyData","groupWeeklyData","sumVolOfBwRow","split","getMonthName","todayStrTarget","todayDataTarget","monthlyStrTarget","curMonthBreakdownTarget","currentMonthDataTarget","prevMonthStrTarget","prevMonthBreakdownTarget","prevMonthDataTarget","last90DaysDataTarget","last6MonthsDataTarget","lastYearDataTarget","index","hasDataBool","item","xLabel","yLabel","sum","itemValue","marker","width","xWeekLabel","yWeekLabel","weeklySum","xDailyLabel","yDailyLabel","dailySum","curValueFloat","prevValueFloat","sort","a","Plotly","monthNumStr","getMonthNumber","monthStr","startsWith","replaceAll","csvData","jsonObject","getCsvContent","trim","$","ajax","records","lastTime","curWeekData","curWeekDataNum","dateRec","weekDayNum","getDay","recordFloat","dataNum","_loop","nextDayInt","setDate","getDate","nextDay","currentMonth","currentYear","curMonthData","dateArray","curFloat","resItem","floatValue","chainType","selectedChart","premine","stakeValHeight","stakeShare","baseSubsidy","subsidyInterval","subsidyExponent","avgBlockTime","yFormatter","legendEntry","legendMarker","legendElement","aDay","atomsToDCR","windowScales","hybridScales","lineScales","modeScales","globalChainType","yValueRanges","hashrateUnits","usesWindowUnits","usesHybridUnits","isModeEnabled","intComma","addLegendEntryFmt","fmt","defaultYFormatter","addLegendEntry","dygraph","getOption","IN_PLACE","FORBID_TAGS","zip2D","ys","yMult","axis","zipIvY","heights","zipHvY","h","times","t","zipTvY","mapDygraphOptions","labelsVal","isDrawPoint","labelsMG","labelsMG2","merge","drawPoints","labelsKMG2","_validateZoom","_selectChart","supplyPage","lm","le","isHomepage","legendMarkerTarget","removeAttribute","node","cloneNode","legendEntryTarget","limits","lastZoom","drawInitialGraph","y2","pointSize","highlightCircleSize","y2label","axisLineColor","chartsViewTarget","chartSelectTarget","setAxis","setScale","setBin","setMode","ogLegendGenerator","Plugins","Legend","generateLegendHTML","g","pts","w","legendIndex","selectChart","chartName","gOptions","valueRange","inflation","diff","winSize","zipWindowHvY","powDiffFunc","supply","xFunc","hFunc","yMax","addDough","newHeight","floor","supplies","isHeightAxis","dailyBlocks","lastPt","xx","xIncrement","circulationFunc","y3label","strokePattern","change","predicted","unminted","rate","log10","baseURL","rawDataURLTarget","plotter_","clear","supportedYRange","yAxisRanges","selection","chartResponse","chartNameTarget","getChartName","chartTitleNameTarget","customLimits","chartWrapperTarget","scaleSelectorTarget","modeSelectorTarget","selectedBin","selectedAxis","binSizeTargets","setActiveOptionBtn","axisOptionTargets","chartValue","oldLimits","selectedZoom","project","isTimeAxis","ex","zoomOptionTargets","axesData","origYRange","newYRange","axesIndexes","isEqual","y1","axesToRestoreYRange","_this$chartsView$xAxi2","scaleTypeTargets","modeOptionTargets","opt","optTargets","li","selectedOption","_mempoolSocketInit","rateStr","_mempoolJS","websocket","wsHostName","exchangeRate","t0","processXcUpdate","_processXcUpdate","mempoolJS","hostname","bitcoin","initClient","mempoolSocketInit","xc","updater","chain_type","exchangeRateTarget","twoDecimals","hash","blockSizeTarget","blockTotalTarget","blockTimeTarget","blocktime_unix","totalTransactionsTarget","total_transactions","coin_value_supply","exchangeValue","convertedSupplyTarget","mempoolInfo","txCountTarget","totalFeeTarget","total_fee","totalSize","ltcTotalFee","minFeeRatevB","MAX_VALUE","maxFeeRatevB","memBlock","blockSize","totalFees","feeRange","feevB","minFeeRateTarget","maxFeeRateTarget","totalSizeTarget","extras","txOutCountTarget","totalOutputs","totalSentTarget","totalOutputAmt","blocks","txOutCount","totalSent","da","diffChange","difficultyChange","prevRetarget","previousRetarget","remainingBlocks","timeRemaining","remainingTime","timeAvg","diffChangeTarget","prevRetargetTarget","remainingBlocksTarget","timeRemaningTarget","setAttribute","blockTimeAvgTarget","_slicedToArray","_arrayWithHoles","_s","_r","_arr","_n","_d","_iterableToArrayLimit","_nonIterableRest","hidden","visibilityChange","candlestick","orders","depth","history","volume","aggregatedKey","minuteMap","PIPI","PI","prettyDurations","printNames","dcrdex","btc_coinex","msHidden","webkitHidden","availableCandlesticks","availableDepths","focused","aggStacking","refreshAvailable","screenIsBig","innerWidth","validDepthExchange","token","usesOrderbook","usesCandlesticks","requestCounter","responseCache","hasCache","expiration","btcPrice","fiatCode","lightStroke","darkStroke","chartStroke","conversionFactor","gridColor","binList","xcColors","colorNumerator","colorDenominator","btcPairUses","exchangeHues","binance","bittrex","poloniex","hsl","useBTCPair","exchange","useUSDPair","generateHue","hue","getHue","commonChartOpts","underlayCallback","ctx","area","lineWidth","strokeStyle","strokeRect","chartResetOpts","xRangePad","yRangePad","convertedThreeSigFigs","convertedEightDecimals","orderbookStats","bids","asks","bidEdge","askEdge","midGap","lowCut","highCut","dummyOrderbook","outliers","sizedArray","rangedPts","cutoff","pt","translateDepthSide","sorted","accumulator","quantity","translateDepthPoint","volumes","vol","translateAggregatedDepthSide","xcCount","zeroWidth","xcAccumulator","zeros","needsDummyPoint","translateOrderbookSide","translateAggregatedOrderbookSide","sumPt","processOrderbook","response","translator","tokens","warn","stats","buys","dupes","sells","sellIdx","sellPrice","buyPrice","buy","sell","findAggregateDupes","candlestickPlotter","seriesIndex","plotArea","drawingContext","sets","allSeriesPoints","open","high","low","barWidth","_sets","opens","closes","highs","lows","centerX","topY","bottomY","beginPath","moveTo","lineTo","stroke","top","yval","fillStyle","left","fillRect","drawOrderPt","drawPt","orderPtSize","bordered","arc","fill","makePt","canvasXY","orderPlotter","_e$dygraph$getColors2","getColors","buyColor","sellColor","_e$allSeriesPoints","stickZoom","orderZoom","samePair","exchangeStateMap","greekCapDelta","fromCharCode","depthPlotter","setName","dupeIdx","dupe","points","_loop4","misplacedVal","acc","subRatio","maxyval","y_stacked","yval_stacked","canvasy","fixAggregateStacking","dark","big","mg","toDomCoords","fontSize","textAlign","textBaseline","font","boxColor","midGapPrice","deltaPctTxt","fiatGapTxt","btcGapTxt","boxW","txt","measureText","rowHeight","rowPad","boxPad","ptSize","legW","boxH","rect","dims","fillText","write","cornerX","save","restore","drawLine","depthLegendPlotter","_fetchChart","_changePair","_fetchInitialData","_initMutilchainExchangeStates","hasBinance","setExchaneLinks","exchangesButtons","exchangesTarget","xcs","defaultOption","initMutilchainExchangeStates","processors","processOrders","processCandlesticks","processHistory","xchistory","processXcsHistory","processDepth","processVolume","xcvolume","processXcsVolume","legendTarget","converted","conversionTarget","factor","code","binButtons","binTarget","lastUrl","exchangeOptions","sticks","bins","chartOptions","pairSelectTarget","stack","handlerExchangesDisplay","setButtons","setExchangeName","_resize","tabVis","_tabVis","_processNightMode","setNameDisplay","fetchInitialData","chainState","exchanges","exchangeLinks","btc_binance","dragonex","huobi","kucoin","gemini","coinex","chainTypeSelectedTargets","cTypeTarget","fetchChart","volumnedExchanges","selectOptions","exchangeBefore","getSelectedExchanges","selectedExchange","State","Token","candlesticks","getExchangeDispName","exchangeBtnAreaTarget","validExchanges","isValidExchange","setActiveExchanges","getFirstExchangeButton","changeExchangeSetting","selectedExchanges","exBtn","btnGroup","firstSetted","lastSetted","lastBtn","activeExchanges","exchangeBtn","removeEventListener","xcNameTarget","refreshChart","dummyGraph","model","mousedown","mouseup","isPanning","initializeMouseDown","startPan","endPan","range","mousemove","movePan","spread","setZoomPct","isBTCPair","fiatLabelTarget","reorderExchanges","xcRowTargets","xcRow","activeExchange","afterActiveExchange","activeEx","containExchange","exc","firstBtn","isRefresh","thisRequest","oldZoom","xcResponseMap","xcList","itemXc","xcUrl","xcResponse","setLastBin","ageSpanTarget","ageTarget","resetZoom","availBins","setBinSelection","upperFirstCase","halfDuration","stick","setMinutes","getMinutes","halfBin","calcStickWindow","axisLabelFormatter","dateAxisLabelFormatter","valueFormatter","responseMap","timeArray","timeDataMap","_step$value","setTime","setHours","avg","some","tmpTime","dataArr","timeInt","has","time1","time2","resArray","dataArray","hasZero","_toConsumableArray","_step2","_iterator2","_loop2","_step2$value","processAggregateDepth","_step4","sums","_iterator4","aggregateSums","idxKey","reorder","side","_step5","_iterator5","reorderAggregateData","getHistoryChartAvailableBins","itemBins","lastExchangeBtn","lastExchangeIndex","pairSelectorAreaTarget","exchangeindex","xsList","aggOptionTarget","lastBinIndex","firstBinIndex","indexOfBin","depthDisabled","depthOnlyTargets","aggStackTarget","handlerRadiusForBtnGroup","justifyBins","parentNode","handlerExchange","cLabel","xcLogoTarget","actionsTarget","getXcLogo","prettyName","capitalize","linkTarget","_loop3","fiat","_ret","pct","_this$graph$xAxisExtr2","max","xcIndexTargets","span","getExchangeRow","btc_price","fmtPrice","priceTarget","aggRow","_step3","_iterator3","totalFeesTarget","lastBlockSizeTarget","blockHeight","bestBlockTarget","bestBlockTimeTarget","timestamp","inner","txHash","totalOut","transListTarget","blockTargets","blockTarget","id","exist","firstBlockHeight","mempoolBlock","meminnerHtml","TotalSentSats","BlockReward","FeesSats","TotalInputs","TotalOutputs","theFirst","boxTarget","prepend","mempoolBox","memBlockReward","memFeeSpan","memTxCount","memInputCount","memOutputCount","getAttribute","memTotalSentTarget","inputsCount","outputsCount","memRewardBlockOuter","outerHTML","hasChange","totalInputs","txInCount","tempTotalSent","mempoolInnerTarget","theKid","ticketPoolSizeTarget","windowSize","rawCoinSupply","rawPoolValue","rangeUse","multiYAxisChart","chainworkUnits","rangeOption","hasMultipleVisibility","useRange","withBigUnits","customYFormatter","hashrateTimePlotter","hashrateLegendPlotter","hashrateBlockPlotter","difficultyTimePlotter","difficultyBlockPlotter","midGapValue","startY","lines","direct","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","line","lineToX","zipWindowTvY","setRange","_this3","isHeightBlock","zs","zMult","zipWindowHvYZ","ticketPriceFunc","ticketsPriceTarget","ticketsPurchaseTarget","out","poolSizeFunc","connectSeparatedPoints","circulation","poolval","percentStakedFunc","anonymitySet","anonymitySetTarget","mixed","mixedPercentage","anonymitySetFunc","work","missed","missedVotesFunc","_this4","vSelectorTarget","updateVSelector","selectedRange","rangeSelectorTarget","binSelectorTarget","rangeOptionTargets","showWrapper","vSelectorItemTargets","show","charts","setVisibilityFromSettings","copyIcon","controller","action","alertArea","clickEvent","navigator","clipboard","writeText","alertCopy","reason","originUrl","origin","toggleSun","indicatorTarget","updateConnectionStatus","evt","debug","msg","connected","requestPermission","FinanceReportController","_initReportTimeRange","timeRangeRes","reportMinYear","minYear","reportMinMonth","minMonth","reportMaxYear","maxYear","reportMaxMonth","maxMonth","createEvent","domainList","tokenList","ownerList","responseData","_FinanceReportControl","_yearMonthCalculate","_proposalCalculate","_initScrollerForTable","politeiaUrl","stype","order","showNoData","noDataTarget","reportAreaTarget","prevNextButtonsTarget","yearMonthCalculate","initScrollerForTable","proposalTopSummaryTarget","totalSpanRowTarget","proposalCalculate","$scroller","$container","$wrapper","ignoreScrollEvent","scrollbarPositioner","scrollTop","scrollingElement","wrapperTop","offsetTop","wrapperBottom","offsetHeight","innerHeight","bottom","requestAnimationFrame","cancelAnimationFrame","scrollLeft","tableWidthStr","css","tableWidth","parentContainerWidthStr","addClass","removeClass","currentValue","itemIndex","timeArr","year","month","handlerNextPrevButton","summaryReportTarget","createSummaryTable","proposalInfos","handlerScrollerTable","otherProposalInfos","proposalReportTarget","createProposalDetailReport","domainDisp","proposalName","remainingStr","yearBreadcumbTarget","currentDetailTarget","detailReportTitleTarget","toUpReportTarget","nextBtnTarget","prevBtnTarget","monthlyAreaTarget","yearlyAreaTarget","summaryAreaTarget","summaryTableTitleTarget","setDomainGeneralInfo","toVoteTarget","toDiscussionTarget","proposalInfo","proposalSumCardTarget","totalRemaining","formatToLocalString","proposalSpanRowTarget","author","domain","budget","totalSpent","yearlyReportTarget","createMonthYearTable","monthlyReportTarget","hideScroller","isMobile","totalBudget","proposal","handlerList","indexOfNow","prevBtnShow","nextBtnShow","hideAuthor","hideDomain","thead","tbody","bodyList","totalAllSpent","summaryList","sortSummary","summary","lengthInDays","getLengthInDay","monthlyAverage","yearDataMap","yearDataDcrMap","yearArr","monthData","monthArr","expense","expenseDcr","timeInput","splitChar","timeParam","handlerData","getYearDataFromMonthData","breakTable","createTableDetailForMonthYear","allTable","stepNum","dataMonth","isFuture","timeYearMonth","getYearMonthArray","nowDate","getUTCFullYear","getUTCMonth","getFullTimeParam","actualExpense","actualExpenseDcr","monthYearDisplay","reportType","myArr","monthNumber","initReportTimeRange","handlerYearMonthNextPrevButton","setMonth","proposalAreaTarget","proposalTotal","handlerSummaryArea","createDomainsSummaryTable","createYearMonthTopSummary","monthlyResultData","expendiduteValueTarget","reportDetail","totalSpentDCR","report","spentEst","totalSpentDcr","proposalSpentAreaTarget","proposalSpentTarget","treasurySpentAreaTarget","unaccountedValueAreaTarget","combinedUSD","treasurySummary","outvalueUSD","legacySummary","combinedDCR","outvalue","treasurySpentTarget","deltaUSD","deltaDCR","unaccountedValueTarget","domainMap","detail","invalue","innerHtml","invalueUSD","yearMonthInfoTableTarget","domainDataMap","getDomainsSummaryData","totalDCR","totalUSD","valueDCR","valueUSD","domainSummaryAreaTarget","domainSummaryTableTarget","proposalSort","yearMonthProposalListUpdate","proposalDetailsListUpdate","totalExpense","detailData","existData","sortSummaryByDomain","alength","blength","aData","bData","domainChartZoom","treasuryChartZoom","domainChartBin","treasuryChartBin","domainChartFlow","treasuryChartFlow","combinedChartZoom","combinedChartBin","combinedChartFlow","adminChartZoom","adminChartBin","adminChartFlow","detailMonthlySummary","yearList","responseDetailData","mainReportSettingsState","detailReportSettingsState","domainGraphOptions","proposalResponse","treasuryResponse","domainChartData","domainChartYearData","domainYearData","combinedChartData","combinedChartYearData","combinedData","combinedAvgData","combinedYearData","combineBalanceMap","combinedYearlyBalanceMap","treasuryBalanceMap","treasuryYearlyBalanceMap","adminBalanceMap","adminYearlyBalanceMap","treasurySummaryMap","redrawChart","responseDetailCache","requestDetailCounter","mainReportInitialized","proposalNote","treasuryNote","domainChartFormatter","_calculate","_proposalTypeChange","_reportTypeChange","_treasuryTypeChange","_initData","_initMainFinancialReport","_connectData","isTreasuryReport","getTreasuryZoomStatus","getTreasuryBinStatus","getTreasuryFlowStatus","isDomainType","isNullValue","currentTType","ttype","changedTType","setTreasuryZoomStatus","setTreasuryBinStatus","setTreasuryFlowStatus","treasuryUrl","legacyUrl","treasuryRes","legacyRes","devAddress","combinedDataHandler","t1","pgroup","combinedDataMap","dateTime","dateTimeStr","getStringFromDate","aTime","bTime","timeInsertArr","receivedArr","sentArr","netArr","getFullYear","getMonth","day","marketing","development","domainChartProcessor","handlerBinSelectorWhenChange","treasuryChart","handlerAllowChartSelector","handlerZoomDisabledBySelector","disabledTypes","handlerGroupDisabledBySelector","cintervalTarget","tsort","psort","ptype","usd","dtype","dtime","dtoken","dname","dstype","dorder","tavg","dinterval","initReportDetailData","connectData","initMainFinancialReport","tooltipElements","proposalTSort","treasuryTSort","isMonthDisplay","useMonthAvg","initData","isProposalMonthReport","isAuthorMonthGroup","popEl","isClickInside","tooltiptext","selectedYear","selectedMonth","yearOptions","topYearSelectTarget","topMonthSelectTarget","monthOptions","getMonthDisplay","timeIntArr","getDetailYearMonth","hidePrevBtn","hideNextBtn","isYearDetailReport","isAllYearTimeReport","isMonthDetailReport","reportTypeTargets","rTypeTarget","viewModeTarget","detailReportAreaTarget","mainReportTopAreaTarget","reportParentContainerTarget","proposalSelectTypeTarget","selectTreasuryTypeTarget","yearMonthSelectorTarget","now","initYearMonthSelector","noDetailDataTarget","ttypeTargets","ttypeTarget","proposalTypeTargets","proposalTypeTarget","searchProposal","isMain","reportDescriptionTarget","_callee7","_context7","_callee8","_context8","parseSettingsState","parseSettingsFromState","_callee9","_context9","isAuthorGroup","dintervalTargets","dintervalTarget","intervalTargets","treasuryToggleAreaTarget","createTreasuryTable","treasuryChartTarget","notChartZoom","isNotChartZoom","currentBalanceAreaTarget","chartDataTarget","balanceOptionTarget","activeProposalSwitchAreaTarget","isSummaryReport","isAuthorListGroup","outgoingExpTarget","groupByTarget","useMonthAvgToggleTarget","treasuryChartTitleTarget","treasuryTypeTitleTarget","typeSelectorTarget","weekGroupBtnTarget","dayGroupBtnTarget","weekZoomBtnTarget","dayZoomBtnTarget","sentRadioLabelTarget","receivedRadioLabelTarget","netSelectRadioTarget","reportTarget","createTableContent","widthFinal","searchBoxTarget","createProposalTable","createDomainTable","createAuthorTable","createMonthAuthorTable","createReportTable","sortByType","dataMap","monthInt","monthObj","difference","differenceUSD","outEstimate","outEstimateUsd","monthPrice","taddValue","taddValueUSD","creditLink","debitLink","balanceUSD","tempResultItem","allSpent","allBudget","proposalList","allData","domainData","expenseDCR","usdRate","treasurySpent","treasurySpentDCR","allDataItem","domainDataItem","getProposalYearlyData","nodataTarget","headList","proposalTokenMap","j","tindex","authorReport","getAuthorExpense","authorData","tmp","yearOption","authorList","sortSummaryByBudget","sortAuthorByTotalReceived","sortAuthorByRemaining","sortAuthorByProposalNum","sortSummaryByName","proposals","totalReceived","domainDataList","unaccounted","aDomainData","bDomainData","treasuryList","sortSummaryByAuthor","sortSummaryBySpent","sortSummaryByRemaining","sortSummaryByDays","sortSummaryByAvg","sortSummaryByDate","isStart","date1","date2","lengtha","lengthb","avga","avgb","array","index1","index2","temp","totalProposals","sortAuthorData","treasuryDataMap","getTreasuryMonthSpentMap","getTreasuryDomainCombined","futureLabelTarget","row2","domainsRateColumn","sortDomains","unaccountedTotal","unaccountedDcrTotal","totalAllDcr","totalAllValue","totalDevAll","totalDevAllDCR","domainDCRTotalMap","rowTotal","rowTotalDCR","compareDataTime","dcrValue","dcrDisp","devTotal","devTotalDCR","unaccountedDcr","unaccountedDcrDisp","unaccountedPercent","isZeroNumber","totalDcrDisp","rateTotalStr","unaccountedTotalPercent","expData","expDcrData","rateTotal","number","tooltipText","textElement","reportData","monthFormat","isCombinedReport","treasury","tmpTreasury","treasuryData","getTreasuryDataWithType","handlerDataForCombinedChart","getTreasuryYearlyData","yearSelectTitleTarget","yearSelectTarget","initYearSelectOptions","tmpData","initLegacyBalanceMap","initTreasuryBalanceMap","initCombinedBalanceMap","specialTreasuryTarget","treasuryTypeRateTarget","createTreasuryLegacyTableContent","_this5","spentMap","summaryMap","nowCompare","lowestArr","lowestYear","lowestMonth","lowestMonthStr","tempBalance","legacy","treasuryInvalue","legacyOutValue","treasuryInvalueUSD","legacyOutValueUSD","tmpLegacy","aTimeCompare","getTimeCompare","bTimeCompare","balanceTotal","dataItem","mainResult","legacyData","tempHasDataBalancemap","currentBalance","tempBalanceMap","combined","summaryData","tmpCombineBalanceMap","timStr","aTimeSplit","_this6","isLegacy","isCombined","isDecentralized","usdDisp","lastTreasuryItem","lastAdminItem","incomeTotal","outTotal","estimateOutTotal","incomeUSDTotal","outUSDTotal","estimateOutUSDTotal","lastBalance","lastBalanceUSD","unaccountedUSDTotal","lastMonth","treasuryBalanceCardTarget","treasuryBalanceDisplayTarget","treasuryBalanceRateTarget","subTreasuryTitleTarget","balanceMap","tresury","legacyUSD","treasuryUSD","lastLegacyRate","lastTreasuryRate","treasuryLegacyPercentTarget","treasuryLegacyRateTarget","decentralizedDataTarget","decentralizedDataRateTarget","decentralizedTitleTarget","adminDataTarget","adminDataRateTarget","adminTitleTarget","sortTreasury","existTreasury","netNegative","incomDisplay","incomUSDDisplay","outcomeDisplay","outcomeUSDDisplay","differenceDisplay","differenceUSDDisplay","balanceDisplay","balanceUSDDisplay","incomeHref","outcomeHref","devSentPercent","unaccountedUSD","totalIncomDisplay","totalIncomUSDDisplay","totalOutcomeDisplay","totalOutcomeUSDDisplay","totalEstimateOutgoing","totalEstimateOutUSDgoing","lastBalanceDisplay","lastBalanceUSDDisplay","totalBalanceNegative","totalDevSentPercent","pResponse","treasurySum","treasuryYearlyData","treasuryMonthAvgMap","yearData","numOfMonth","countMonthOnYearData","tSummary","yearStr","tData","tResponse","legacySum","legacyYearlyData","legacyMonthAvgMap","taddMonthValueMap","taddYearValueMap","devSpentPercent","tadd","lSummary","_callee10","haveResponseData","_this7","_context10","setReportTitle","colorNoteRowTarget","colorLabelTarget","colorDescriptionTarget","domainFutureRowTarget","nameMatrixSwitchTarget","disabledGroupButton","getTreasuryResponse","getProposalResponse","handlerDomainYearlyData","handlerDataForDomainChart","enabledGroupButton","getApiUrlByType","getDataForCombinedChart","spentArr","getDataOfDomainChart","marketingArr","developmentArr","virtualNetArr","hasMarketing","hasDevelopment","switchCheck","idArr","createDetailSummaryTable","otherProposalSummaryTarget","sortDetailSummary","handlerDataInput","_handlerData","detailGroupByTarget","detailMonthlyDescTarget","spentUSD","spentDCR","actualSpentUSD","actualSpentDCR","detailMonthly","_callee11","_context11","proposalDetailSort","yearTotalData","spentYears","spentYear","countHasData","yData","spend","sortDetailSummaryByDomain","footerBarTarget","selectedType","decredChartOpts","mutilchainChartOpts","line1","line2","line3","line4","line5","isScaleDisabled","_chainTypeChange","zoomSelectorTarget","scaleButtons","modeButtons","setSelectScale","setSelectZoom","setSelectBin","setSelectMode","reinitChartType","getDecredChartOptsHtml","getMutilchainChartOptsHtml","getSelectedChart","setActiveToggleBtn","hasChart","chartOpts","selectedButtons","btnTargets","makeMempoolBlock","Fees","_setAvgBlockTime","ticketsPerBlock","mpVoteCountTarget","mempoolData","mempoolTarget","send","mempool","Mempool","voteTallyTargets","txs","mergeTxs","setMempoolFigures","keyNav","m","handleMempoolUpdate","isDev","setAvgBlockTime","resData","avgBlockTimeTarget","memBlockTarget","deregisterEvtHandlers","totals","counts","mpRegTotalTarget","regular","mpRegCountTarget","mpTicketTotalTarget","mpTicketCountTarget","mpVoteTotalTarget","ct","voteSpans","mpRevTotalTarget","rev","mpRevCountTarget","setVotes","blockVotesTarget","blockVoteTally","firstElementChild","affirm","tooltip","threshold","consensusMsgTarget","difficultyTarget","difficulty","bsubsidyPowTarget","bsubsidyPosTarget","bsubsidyDevTarget","coin_supply","mixedPctTarget","mixed_percent","blocksdiffTarget","sdiff","nextExpectedSdiffTarget","next_expected_sdiff","nextExpectedMinTarget","next_expected_min","nextExpectedMaxTarget","next_expected_max","windowIndexTarget","window_idx","posBarTarget","window_size","poolSizeTarget","pool_info","targetPctTarget","percent_target","rewardIdxTarget","reward_idx","powBarTarget","reward_window_size","poolValueTarget","ticketRewardTarget","reward","poolSizePctTarget","percent","treasuryTotal","dev_fund","treasury_bal","devFundTarget","hash_rate","hashrateTarget","hashrateDeltaTarget","fmtPercentage","hash_rate_change_month","exchange_rate","xcRate","btcIndex","hasPowConvertedTarget","powConvertedTarget","hasConvertedDevTarget","convertedDevTarget","hasConvertedSupplyTarget","hasConvertedDevSubTarget","convertedDevSubTarget","hasExchangeRateTarget","hasConvertedStakeTarget","convertedStakeTarget","dcrBtcPrice","dcrBtcVolume","dcrUsdtPrice","dcrUsdtVolume","setAggRowData","isBtcPair","cType","dcr_btc_price","dcrBtcVolum","dcr_btc_volume","rowNode","rowText","txTableRow","fee_rate","treasuryTxTableRow","voteTxTableRow","vote_info","block_validation","last_block","ticket_spent","mempool_ticket_index","vote_version","buildTable","txns","rowFn","txTargetMap","tspendTransactionsTarget","Vote","voteTransactionsTarget","Ticket","ticketTransactionsTarget","Revocation","revocationTransactionsTarget","Regular","regularTransactionsTarget","hasTaddTransactionsTarget","taddTransactionsTarget","countTargetMap","numVoteTarget","numTicketTarget","numRevocationTarget","numRegularTarget","renderNewTxns","labelVotes","sortVotesTable","updateBlock","handleTxsResp","block_height","block_hash","block_time","regTotalTarget","regCountTarget","ticketTotalTarget","ticketCountTarget","voteTotalTarget","voteCountTarget","revTotalTarget","revCountTarget","likelyTotalTarget","mempoolSizeTarget","revs","tspends","tadds","each","Type","childElementCount","addTxRow","bestBlockHash","bestBlockHeight","voteValidationHash","blockhash","voteBlockHeight","best","ticketIndex","closest","clickout","_clickout","formTargets","form","closeMenu","toggleTarget","homeToggleTarget","refreshConfirmations","confirmationsTargets","confirmations","setConfirmationText","expHeight","confirmHeight","offsetkey","hasVotestatusTarget","byvotestatus","votestatusTarget","Turbolinks","visit","newPeriod","listviewTarget","pathname","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_defineProperty","getOwnPropertyDescriptors","defineProperties","percentData","cumulativeData","hourlyVotesData","common","symbol","labeledData","percentConfig","xVals","xl","xr","closePath","cumulativeConfig","hourlyVotesConfig","multiColumnBarPlotter","fillColors","gs","hasApprovalMeterTarget","approvalMeterTarget","segments","approvalMeter","MiniMeter","tokenTarget","setChartsData","_chartData","hourlyYes","hourlyNo","currentDate","currentHour","getHours","formatedDate","firstDate","lastDate","unshift","approvalLegendTarget","cumulativeLegendTarget","logLegendTarget","approvalTarget","cumulativeTarget","logTarget","synchronize","decodeHeaderTarget","decodedTransactionTarget","rawTransactionTarget","eventId","selectArea","is","multichainList","isMultichain","chain","isMutilchain","coinSelectTarget","currentChain","handlerScroll","chainArray","chainNameArr","img","attr","innerText","chainIndex","find","keepWithUrl","toggle","pageYOffset","navbarTarget","coin","indexOfParam","paramArr","param","paramV","removeUrlPostfixParam","oldChain","newHref","replaceChainFromURL","getParamFromURL","rpp","isSameChainChart","oldCoin","newCoin","replaceStr","_simulateStakingReward","rewardPeriod","targetTimePerBlock","ticketExpiry","ticketMaturity","coinbaseMaturity","ticketPrice","poolSize","poolValue","last3Months","startDateTarget","formatDateToString","endDateTarget","amountTarget","amountChanged","validateDate","startDateChanged","endDateChanged","startDate","endDate","getDaysOfRange","startDateErrTarget","days","tmpDate","setFullYear","today","setUTCHours","startingHeight","miliSecDiff","minutes","targetTimePerBlockMinutes","blockDiff","stakePerc","simulateStakingReward","numOfDays","startingBalance","currentStakePercent","actualCoinBase","startingBlockHeight","actualTicketPrice","blocksPerDay","numberOfBlocks","ticketsPurchased","coinAdjustmentFactor","meanVotingBlock","theoTicketPrice","ticketAdjustmentFactor","simblock","dcrBalance","simulationTable","simBlockMilestone","tmpSimblock","blockListParam","rewardMap","rewardMyMap","blocksPassed","daysPassed","simulationReward","stakingRward","overflow","maxCoinSupplyAtBlock","calcMeanVotingBlocks","theoreticalTicketPrice","simBlock","simDay","returnedFund","createResultTable","daysTextTarget","percentageRoiTarget","amountRoiTarget","tableBodyTarget","exRow","importNode","rowTemplateTarget","content","fields","getDateFromDays","blocknum","logPoolSizeM1","logPoolSize","exp","amountErrorTarget","handlerRewardCalculator","hasRedirected","progressBars","initTarget","additionInfo","searchResultTarget","bar","progress_bar_id","clean","progressVal","percentage_complete","secs","seconds_to_complete","years","months","weeks","hours","timeUnit","htmlString","bar_msg","subtitle","notifStr","messageTarget","ntfn","hasFutureBlockTarget","targetTimeStr","ticketTimeStr","targetDate","runTargetCountDown","ticketTime","runTicketTargetCountDown","getCountdown","setInterval","getTicketCountdown","secondsLeft","ticketDays","pad","ticketHours","ticketMinutes","ticketSeconds","ticketTilesTarget","numOfYears","numOfWeek","seconds","tileHtml","yearTileTarget","weekTileTarget","tilesTarget","origDate","Comparator","purchasesGraphData","items","memP","finalDate","immature","live","getWindow","retainDateWindow","_onBarsChange","_fetchAll","tipHeight","purchasesGraph","priceGraph","time_chart","price_chart","bars","chartCount","makePurchasesGraph","makePriceGraph","fetchAll","chartsResponse","wrapperTarget","mempl","mPrice","mCount","outputs_chart","outputsTarget","totalCount","tableData","outputs","populateOutputs","zoomTargets","ticketPoolResponse","barsTargets","barsTarget","startAgeRefresh","startDurationRefresh","targetBlockTime","blocktime","hasBlocktimeTarget","hasHeaderTarget","headerTargets","jstitle","stopAgeRefresh","stopDurationRefresh","blocktimeTarget","stamp","setAges","ageRefreshTimer","setDurations","durationRefreshTimer","clearInterval","hasDurationTarget","durationTargets","lbt","hasAgeTarget","ageTargets","activeChainStr","activeChainArr","activeChain","processLTCBlock","_processLTCBlock","processBTCBlock","_processBTCBlock","processMutilchainBlock","blockHeightObj","txCountObj","coinSupplyObj","isTSpend","tspendExpend","outputRowTargets","rowTarget","showMoreTextTarget","showMoreIconTarget","hasUnconfirmedTarget","unconfirmedTarget","confirmationsTarget","formattedAgeTarget","hasProgressBarTarget","progressBarTarget","txTarget","hasMempoolTdTarget","mempoolTdTargets","txBlockHeight","VoteInfo","spendingTxTarget","ticketStageTarget","expiry","ticketMsgTarget","expiryMsgTarget","barMsg","blocksLeft","pctChance","expiryChanceTarget","statusMsgTarget","scriptData","makeNode","rewardTxId","handleVisualBlocksUpdate","_handleVisualBlocksUpdate","refreshBlocksDisplay","_refreshBlocksDisplay","trimmedBlockInfo","nextSibling","vis","visibleBlocks","lastChild","replaceChild","visibleBlockElements","currentlyDisplayedBlockCount","maxBlockElements","calculateMaximumNumberOfBlocksToDisplay","allBlockElements","blockElement","blocksSection","rootTarget","getBoundingClientRect","blocksSectionFirstChildHeight","titleTarget","blocksSectionLastChildHeight","showmoreTarget","extraSpace","blocksSectionHeight","totalAvailableWidth","totalAvailableHeight","blockWidth","maxBlocksPerRow","maxBlockRows","totalBlocksDisplayable","_resolve","promise","_fadeIn","transition","txTypes","txIdx","plotChart","findWidth","findMinSep","Infinity","sep","minSep","canvasx","findLineWidth","canvasBin","toDomXCoord","yBottom","toDomYCoord","strokeColors","xLeft","sustain","firstPt","frontStamp","backStamp","front","back","minViewValueRange","chartIndex","dygraphs","syncOptions","prevCallbacks","ready","callBackTypes","getFunctionOption","me","initial","_arguments","gCopy","yMinRange","yRange","yAxisRange","attachZoomHandlers","seriesName","_arguments2","unhighlightCallback","_arguments3","clearSelection","attachSelectionHandlers","_requestJSON","conf","headers","accept","fetch","resp","ok","json","statusText","decimal","sign","cssClass","useCommas","precision","lgDecimals","chunks","int","numTrailingZeros","decimalVals","trailingZeros","toPrecision","subsidyToString","tail","floatAmount","multiplier","unixTime","keepOnly","padStart","timestampMs","withTimezone","hideHisForMidnight","dateStr","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","asNode","keynavePriority","_hashParts","hashLen","hashParts","_hashParts2","head","minFracDigit","maxFracDigit","mpKeys","txList","txLists","makeTx","voteInfo","ticketSpent","reduceTx","tallyTargets","avgSize","initType","regTotal","regCount","ticketTotal","revTotal","initVotes","voteTotal","fauxVal","affirmed","validity","isQuestionableVote","wantsTx","newTx","validation","tallys","joiner","spans","_createClass","addOffset","Meter","parent","radius","canvas","padding","dimension","animationEnd","animationRunning","animationTarget","getContext","middle","offsetMiddle","startAngle","meterSpace","meterSpecs","startTheta","endTheta","normedPolarToCartesian","fps","animationLength","checkmark","failmark","_animate","lineCap","normed","normedTheta","r","denorm","theta","denormTheta","cos","sin","activeTheme","darkTheme","lightTheme","draw","clearRect","denormThetaRange","maxWidth","halfLen","norm","meterWidth","dot","dotSize","frameDuration","progress","toGo","_Meter","_createSuper","_thisSuper","writeCentralPercent","wcp","buttCap","approval","approveThreshold","rejectThreshold","centralFontSize","meterColor","approveColor","revoteColor","rejectColor","dotColor","showIndicator","tray","_get","indicatorColor","strokeColor","trayColor","borderWidth","segment","_Meter2","_super2","successColor","animate","c","_toFixed$split2","whole","fraction","center","_Meter3","_super3","textColor","tipLen","_getDefault","dynamicImportPromise","turbolinks","tq","replaceTimer","appendTimer","supported","replaceHistory","_replaceHistory","appendHistory","_appendHistory","isFinite","parseValue","replaceHistoryWithLocationAndRestorationIdentifier","Location","uuid","pushHistoryWithLocationAndRestorationIdentifier","filteredQuery","replaceHref","toHref","filtered","parsed","zoomMap","all","week","zoomObject","tryDecode","encoded","decodeZoomString","decoded","lims","minSize","proposed","shift","oldWindow","newWindow","ow","nw","oldRange","newRange","pStart","pEnd","setCookie","cname","cvalue","exMins","expires","toUTCString","cookie","eventCallbacksPairs","findEventCallbacksPair","eventType","eventObject","EventCallbacksPair","callback","callbacks","EventBus","eventCallbacksPair","cb","Mousetrap","_originalStopCallback","targetsLength","stopCallback","combo","paused","pause","unpause","init","jumpToIndexOnLoad","searchBar","keyNavToggle","menuToggle","currentIndex","keyNavCookieName","menuToggleObj","keyNavEnabled","setToggleText","clearTargets","toggleKeyNav","pulsate","preserveIndex","hasAttribute","priorityLink","focus","blur","stopPropagation","preserveKeynavIndex","topSearch","toggleMenu","offsetX","forward","message","handlers","MessageSocket","connection","queue","maxQlength","eventID","handler","payload","stringify","WebSocket","clearTimeout","pinger","onmessage","onclose","onopen","_this$queue$shift2","onerror","sunIcon","darkBGCookieName","toggleToDarkClasses","toggleToLightClasses","checkbox","dispatchEvent","Event","newBody","isUndefined","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","adapter","XMLHttpRequest","transformRequest","isFormData","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","isString","transformResponse","responseType","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","Accept","A","u","cancelToken","unsubscribe","signal","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","getAllResponseHeaders","responseText","config","request","paramsSerializer","onloadend","onreadystatechange","readyState","responseURL","onabort","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","withCredentials","_","read","toLowerCase","setRequestHeader","onDownloadProgress","onUploadProgress","upload","T","abort","subscribe","aborted","FormData","ArrayBuffer","isView","isNumber","isPlainObject","isDate","pipe","URLSearchParams","product","extend","toISOString","use","fulfilled","rejected","synchronous","runWhen","eject","isAxiosError","toJSON","fileName","lineNumber","columnNumber","toGMTString","match","RegExp","decodeURIComponent","userAgent","port","S","__CANCEL__","P","E","B","O","M","R","C","L","N","U","run","I","fun","D","nextTick","browser","env","argv","version","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","G","H","J","W","throwIfRequested","z","V","X","timeoutMessage","decompress","transport","httpAgent","httpsAgent","socketPath","responseEncoding","K","Q","Y","ne","Z","ee","assertOptions","validators","te","interceptors","re","_listeners","cancel","getUri","oe","ie","Axios","Cancel","CancelToken","isCancel","VERSION","ae","ue","se","__importDefault","__esModule","default","makeLiquidAPI","makeBisqMarketsAPI","makeBisqAPI","makeBitcoinAPI","ce","network","api","fe","__awaiter","de","__generator","trys","ops","throw","return","useAddresses","getAddress","address","getAddressTxs","getAddressTxsChain","getAddressTxsMempool","getAddressTxsUtxo","he","pe","ve","useBlocks","getBlock","getBlocks","start_height","getBlockStatus","getBlockTxs","start_index","getBlockTxid","getBlockTxids","getBlockRaw","getBlockHeader","getBlockHeight","getBlocksTipHash","getBlocksTipHeight","be","ye","we","useDifficulty","getDifficultyAdjustment","ge","xe","useFees","getFeesRecommended","getFeesMempoolBlocks","getCPFP","ke","Te","useMempool","getMempool","getMempoolTxids","getMempoolRecent","Se","Pe","Ee","useTransactions","getTx","getTxStatus","getTxHex","getTxRaw","getTxMerkleBlockProof","getTxMerkleProof","getTxOutspend","getTxOutspends","postTx","post","txhex","Ae","je","Be","Me","Oe","Re","Ce","Le","Ne","Ue","Ie","qe","ping","terminate","De","Fe","useWebsocket","Ge","He","initServer","Je","We","ze","Ve","Xe","$e","Ke","Qe","Ye","useStatistics","getStats","Ze","et","tt","getTxs","nt","rt","ot","useMarkets","getCurrencies","basecurrency","format","getDepth","market","getHloc","getMarkets","getOffers","getTicker","getTrades","timestamp_from","timestamp_to","limit","getVolumes","at","ut","useAssets","getAsset","asset_id","getAssetIcon","getAssetTxs","is_mempool","getAssetSupply","getAssetsIcons","st","lt","ft","dt","ht","vt","bt","yt","wt","gt","mt","xt","kt","_t","Tt","St","Pt","Et","addresses","bisq","statistics","markets","liquid","assets","webpackContext","req","webpackContextResolve","__webpack_require__","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","chunkIds","priority","notFulfilled","every","getter","ns","def","current","getOwnPropertyNames","definition","chunkId","promises","miniCssF","globalThis","Function","prop","script","needAttach","scripts","getElementsByTagName","charset","nc","src","onScriptComplete","onload","doneFns","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}