wowtoken.app/js/token.js

110 lines
2.7 KiB
JavaScript

var current_token_int = 0;
var current_region_selection = 'us'
var current_time_selection = '72h'
var current_price_hash = {
us: 0,
eu: 0,
kr: 0,
tw: 0
}
var chart_js_data;
var ctx;
var token_chart;
function populateChart() {
ctx = document.getElementById("token-chart").getContext('2d');
token_chart = new Chart(ctx, {
type: 'line',
data: {
datasets: [{
borderColor: 'gold',
label: current_region_selection.toUpperCase() + " WoW Token Price",
data: chart_js_data,
cubicInterpolationMode: 'monotone',
pointRadius: 0
}]
},
options: {
scales: {
x: {
type: 'time',
}
},
}
})
}
async function callUpdateURL() {
let resp = await fetch("https://data.wowtoken.app/token/current.json");
let data = await resp.json();
updateTokens(data);
}
function updateTokens(data) {
updateRegionalToken('us', data);
updateRegionalToken('eu', data);
updateRegionalToken('kr', data);
updateRegionalToken('tw', data);
}
function updateRegionalToken(region, data) {
if (current_price_hash[region] != data['price_data'][region]) {
current_price_hash[region] = data['price_data'][region];
if (region === current_region_selection) {
formatToken();
}
}
}
function updateRegionPreference(newRegion) {
if (newRegion != current_region_selection) {
token_chart.destroy();
current_region_selection = newRegion;
}
formatToken();
pullChartData().then(populateChart);
}
function updateTimePreference(newTime) {
if (newTime != current_time_selection) {
token_chart.destroy();
current_time_selection = newTime;
}
pullChartData().then(populateChart)
}
async function pullChartData() {
let resp = await fetch("https://data.wowtoken.app/token/history/" + current_region_selection + "/" + current_time_selection + ".json");
let chart_data = await resp.json();
new_chart_js_data = []
for (i = 0; i < chart_data.length; i++) {
datum = {
x: chart_data[i]['time'],
y: chart_data[i]['value']
}
new_chart_js_data.push(datum)
}
chart_js_data = new_chart_js_data
}
async function updateChartData() {
token_chart.destroy();
pullChartData().then(populateChart)
}
function formatToken() {
$("#token").html(current_price_hash[current_region_selection].toLocaleString());
}
$(document).ready(function() {
callUpdateURL()
setInterval(callUpdateURL, 60*1000);
pullChartData().then(populateChart);
setInterval(updateChartData, 15*60*1000)
});