{"version":3,"sources":["app.ts"],"names":[],"mappings":"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","file":"app.4330f7a5.map","sourceRoot":"../src","sourcesContent":["/*\n/\n/\tWarning!\n/\n/\tThis file contains 1999-era javascript code structures. \n/\n/\tIf it hurts your eyes pleas make a PR:\n/\n/\tgithub.com/mathiasrw/cryptofiddle\n/\n*/\n\n// Todo:\n// https://min-api.cryptocompare.com/data/all/coinlist\n// http://jsfiddle.net/trekvnc2/\n// https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_sidenav\n// https://purecss.io\n// https://github.com/toomuchdesign/offside - insert link to cryptocompare\n\ndeclare const Navigo: any;\ndeclare var alasql: typeof alasql;\ndeclare const go: any;\ndeclare const Highcharts: any;\ndeclare const $: any;\nvar data;\n\nvar coins = ['BTC', 'BSV', 'BCH', 'EOS', 'ETH', 'IOT', 'XRP'],\n\tnomination = 'USD',\n\tseriesOptions = [],\n\tseriesCounter = 0,\n\tdefaultFrame = 'hours',\n\tcoinlist = JSON.parse(localStorage.getItem('coinlist') || '{}');\n\nvar intervals = {\n\t'1h': {\n\t\ttype: 'hour',\n\t\tcount: 1,\n\t\ttext: '1h',\n\t},\n\t'6h': {\n\t\ttype: 'hour',\n\t\tcount: 6,\n\t\ttext: '6h',\n\t},\n\n\t'24h': {\n\t\ttype: 'hour',\n\t\tcount: 24,\n\t\ttext: '24h',\n\t},\n\n\t'7d': {\n\t\ttype: 'day',\n\t\tcount: 7,\n\t\ttext: '7d',\n\t},\n\t'30d': {\n\t\ttype: 'day',\n\t\tcount: 30,\n\t\ttext: '30d',\n\t},\n\t'6m': {\n\t\ttype: 'month',\n\t\tcount: 6,\n\t\ttext: '6m',\n\t},\n\t'1y': {\n\t\ttype: 'year',\n\t\tcount: 1,\n\t\ttext: '1y',\n\t},\n\t'2y': {\n\t\ttype: 'year',\n\t\tcount: 2,\n\t\ttext: '2y',\n\t},\n\t'3y': {\n\t\ttype: 'year',\n\t\tcount: 3,\n\t\ttext: '3y',\n\t},\n\tytd: {\n\t\ttype: 'ytd',\n\t\ttext: 'YTD',\n\t},\n\tall: {\n\t\ttype: 'all',\n\t\ttext: 'All',\n\t},\n};\n\nvar frames = {\n\thours: {\n\t\tname: 'Last few hours',\n\t\turlpath: '/data/histominute',\n\t\trangeSelector: {\n\t\t\tbuttons: [intervals.all, intervals['24h'], intervals['6h'], intervals['1h']],\n\t\t\tselected: 0,\n\t\t},\n\t},\n\tweeks: {\n\t\tname: 'Last few weeks',\n\t\turlpath: '/data/histohour',\n\t\trangeSelector: {\n\t\t\tbuttons: [intervals.all, intervals['30d'], intervals['7d'], intervals['24h']],\n\t\t\tselected: 0,\n\t\t},\n\t},\n\tyears: {\n\t\tname: 'Last few years',\n\t\turlpath: '/data/histoday',\n\t\trangeSelector: {\n\t\t\tbuttons: [intervals.all, intervals['ytd'], intervals['3y'], intervals['1y'], intervals['6m']],\n\t\t\tselected: 0,\n\t\t},\n\t},\n};\n\nvar frame = frames[defaultFrame];\n\nlet show: any = {};\n\nshow.about = function() {\n\tdocument.getElementById('modal-about').style.right = '0';\n\tgotoState(true);\n};\n\nshow.selectCoins = function() {\n\tdocument.getElementById('modal-coins').style.right = '0';\n\tgotoState(true);\n};\n\n$('.close-about').click(function(event) {\n\tdocument.getElementById('modal-about').style.right = '-401px';\n\tprevent(event);\n});\n\n$('.close-coins').click(function(event) {\n\tdocument.getElementById('modal-coins').style.right = '-401px';\n\tprevent(event);\n});\n\nNavigo.MATCH_REGEXP_FLAGS = 'i';\n\nvar useLocationHash = true;\nif (process.env.NODE_ENV === 'production') useLocationHash = false;\n\nvar urlBase =\n\tlocation.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '') + '/';\nvar rute = new Navigo(urlBase, useLocationHash, '#!');\n\nfunction setDefaultsFromUrl(input) {\n\t$('#container').fadeOut();\n\tif (input.coins)\n\t\tcoins = input.coins\n\t\t\t.replace(/{[^a-z0-9-]/gi, '')\n\t\t\t.toUpperCase()\n\t\t\t.split('-')\n\t\t\t.filter((x) => x !== '');\n\n\tif (input.nomination) nomination = input.nomination.toUpperCase();\n\n\tif (input.scale) frame = frames[input.scale.toLowerCase()] || frames[defaultFrame];\n}\n\nlet mainHandle = '/:coins/in/:nomination/recent/:scale';\nvar mainHandleFunc = function(input) {\n\tsetDefaultsFromUrl(input);\n\tseriesOptions = [];\n\tseriesCounter = 0;\n\tfetch(function() {\n\t\t$('#container').fadeIn();\n\t});\n};\n\nrute\n\t.on(gotoState)\n\t.on('/hours', function() {\n\t\tdefaultFrame = 'hours';\n\t\tgotoState();\n\t})\n\t.on('/weeks', function() {\n\t\tdefaultFrame = 'weeks';\n\t\tgotoState();\n\t})\n\t.on('/years', function() {\n\t\tdefaultFrame = 'years';\n\t\tgotoState();\n\t})\n\t.on('/years', function() {\n\t\tdefaultFrame = 'years';\n\t\tgotoState();\n\t})\n\t.on('/about', function() {\n\t\tshow.about();\n\t})\n\t.on('/coins', function() {\n\t\tshow.selectCoins();\n\t})\n\t.on('/:coins', function(input) {\n\t\tsetDefaultsFromUrl(input);\n\t\tgotoState();\n\t})\n\t.on('/:coins/:nomination', function(input) {\n\t\tsetDefaultsFromUrl(input);\n\t\tgotoState();\n\t})\n\t.on('/:coins/in/:nomination', function(input) {\n\t\tsetDefaultsFromUrl(input);\n\t\tgotoState();\n\t})\n\t.on('/:coins/recent/:scale', function(input) {\n\t\tsetDefaultsFromUrl(input);\n\t\tgotoState();\n\t})\n\t.on(mainHandle, mainHandleFunc)\n\t.notFound(gotoState)\n\t.resolve();\n\nfunction prevent(event) {\n\tevent.preventDefault();\n\tevent.stopPropagation();\n}\n\nfunction gotoState(avoidAction = false) {\n\t$('#container').fadeOut();\n\n\tif (avoidAction) {\n\t\t// rute.pause(); // not working: https://github.com/krasimir/navigo/issues/172\n\t\trute.off(mainHandle);\n\t}\n\n\trute.navigate(\n\t\t['', coins.join('-'), 'in', nomination, 'recent', defaultFrame].join('/').toLowerCase()\n\t);\n\n\tif (avoidAction) {\n\t\t// rute.resume(); // not working: https://github.com/krasimir/navigo/issues/172\n\t\t//rute.on(mainHandle, mainHandleFunc);\n\t}\n}\n\nfunction fetch(cb) {\n\t$.each(coins, function(i, symbol) {\n\t\t$.getJSON(\n\t\t\t'https://min-api.cryptocompare.com' +\n\t\t\t\tframe.urlpath +\n\t\t\t\t'?fsym=' +\n\t\t\t\tsymbol.toUpperCase() +\n\t\t\t\t'&tsym=' +\n\t\t\t\tnomination.toUpperCase() +\n\t\t\t\t'&limit=2000&aggregate=1',\n\t\t\tfunction(data) {\n\t\t\t\tseriesOptions[i] = {\n\t\t\t\t\tname: getName(symbol, true),\n\t\t\t\t\tdata: alasql('MATRIX OF SELECT `time`*1000, `close` FROM ?', [data.Data]),\n\t\t\t\t};\n\n\t\t\t\tseriesCounter += 1;\n\n\t\t\t\tif (seriesCounter === coins.length) {\n\t\t\t\t\tcreateChart(seriesOptions, coins, nomination);\n\t\t\t\t\tif (cb) {\n\t\t\t\t\t\tcb();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n}\n\nvar graph = {};\n\nfunction createChart(seriesOptions, coins, nomination) {\n\tgraph = Highcharts.stockChart('graph', {\n\t\ttitle: {\n\t\t\ttext: 'Relative development of crypto-coins the ' + frame.name.toLowerCase(),\n\t\t},\n\t\tsubtitle: {\n\t\t\ttext: getSubtitle(),\n\t\t},\n\t\trangeSelector: frame.rangeSelector,\n\t\tyAxis: {\n\t\t\tlabels: {\n\t\t\t\tformatter: function() {\n\t\t\t\t\treturn (this.value > 0 ? ' + ' : '') + this.value + '%';\n\t\t\t\t},\n\t\t\t},\n\t\t\tplotLines: [\n\t\t\t\t{\n\t\t\t\t\tvalue: 0,\n\t\t\t\t\twidth: 2,\n\t\t\t\t\tcolor: 'silver',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\n\t\tplotOptions: {\n\t\t\tseries: {\n\t\t\t\tcompare: 'percent',\n\t\t\t\tshowInNavigator: true,\n\t\t\t},\n\t\t},\n\n\t\ttooltip: {\n\t\t\tpointFormat:\n\t\t\t\t'<span style=\"color:{series.color}\">{series.name}</span>: <b>{point.y}</b> ({point.change}%)<br/>',\n\t\t\tvalueDecimals: 1,\n\t\t\tsplit: seriesOptions.length <= 4 ? true : false,\n\t\t},\n\n\t\tseries: seriesOptions,\n\n\t\t/*labels: {\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\thtml: 'abc',\n\t\t\t\t\tstyle: 'bottom:100px;left:100px',\n\t\t\t\t},\n\t\t\t],\n\t\t},*/\n\t});\n}\n\nHighcharts.setOptions({\n\tcolors: [\n\t\t'#F9C80E',\n\t\t'#2288CC',\n\t\t'#55BF3B',\n\t\t'#ff0066',\n\t\t'#854CBA',\n\t\t'#bb4488',\n\t\t'#DD3322',\n\t\t'#99aa00',\n\t\t'#5885BC',\n\t],\n\tglobal: {\n\t\tuseUTC: false,\n\t},\n});\n\nfunction setSubtitle() {\n\tgraph.setTitle(null, {text: getSubtitle()});\n}\n\nfunction getSubtitle() {\n\tdata = [];\n\t$.each(coins, function(i, symbol) {\n\t\tvar msg = symbol;\n\t\tif (coinlist[symbol]) {\n\t\t\tmsg = coinlist[symbol].name;\n\t\t}\n\t\tdata.push(msg);\n\t});\n\n\tif (1 < data.length) {\n\t\tdata[data.length - 1] = 'and ' + data[data.length - 1];\n\t}\n\n\treturn data.join(', ') + ' priced in ' + nomination;\n}\n\nfunction getName(symbol, full) {\n\tif (!coinlist[symbol]) {\n\t\treturn symbol;\n\t}\n\tif (full) {\n\t\treturn coinlist[symbol].fullName;\n\t}\n\treturn coinlist[symbol].name;\n}\n\n$.getJSON('https://min-api.cryptocompare.com/data/all/coinlist', function(res) {\n\tconsole.log(res.Data['BCH']);\n\n\t$.each(res.Data, function(i, coin) {\n\t\tcoinlist[coin.Symbol] = {\n\t\t\tname: coin.CoinName,\n\t\t\tsymbol: coin.Symbol,\n\t\t\tfullName: coin.FullName,\n\t\t\trank: parseInt(coin.SortOrder),\n\t\t\timg: coinlist.BaseImageUrl + coin.ImageUrl,\n\t\t};\n\t});\n\n\tlocalStorage.setItem('coinlist', JSON.stringify(coinlist));\n\t//console.log(coinlist.sort(dynamicSort('rank')));\n});\n\nfunction dynamicSort(property) {\n\tvar sortOrder = 1;\n\tif (property[0] === '-') {\n\t\tsortOrder = -1;\n\t\tproperty = property.substr(1);\n\t}\n\treturn function(a, b) {\n\t\tvar result = a[property] < b[property] ? -1 : a[property] > b[property] ? 1 : 0;\n\t\treturn result * sortOrder;\n\t};\n}\n"]}