diff --git a/views/market_view.html b/views/market_view.html index 7d56d80..037db5d 100644 --- a/views/market_view.html +++ b/views/market_view.html @@ -286,35 +286,43 @@

Trade History

}); // prepare chart datasets - var buyOrderLabels = _.uniq(data.buy_orders.map(o => parseFloat(o.price))); - var buyOrderDataset = []; - var buyOrderCurrentVolume = 0; - buyOrderLabels.forEach(label => { - let matchingBuyOrders = data.buy_orders.filter(o => parseFloat(o.price) === label); - - if (matchingBuyOrders.length === 0) { - buyOrderDataset.push(null); - } else { - buyOrderCurrentVolume = buyOrderCurrentVolume + matchingBuyOrders.reduce((acc, val) => acc + parseFloat(val.quantity), 0); - buyOrderDataset.push(buyOrderCurrentVolume); - } - }); - buyOrderLabels.reverse(); - buyOrderDataset.reverse(); - - var sellOrderLabels = _.uniq(data.sell_orders.map(o => parseFloat(o.price))); - var sellOrderDataset = _.fill(Array(buyOrderDataset.length), null); - var sellOrderCurrentVolume = 0; - sellOrderLabels.forEach(label => { - let matchingSellOrders = data.sell_orders.filter(o => parseFloat(o.price) === label); - - if (matchingSellOrders.length === 0) { - sellOrderDataset.push(null); - } else { - sellOrderCurrentVolume = sellOrderCurrentVolume + matchingSellOrders.reduce((acc, val) => acc + parseFloat(val.quantity), 0); - sellOrderDataset.push(sellOrderCurrentVolume); - } - }); + for (let i = 0; i < data.sell_orders.length; i++) { + data.sell_orders[i].stacked_volume = parseFloat(data.sell_orders[i].quantity) * parseFloat(data.sell_orders[i].price) + if (i > 0) + data.sell_orders[i].stacked_volume += data.sell_orders[i-1].stacked_volume + } + for (let i = 0; i < data.buy_orders.length; i++) { + data.buy_orders[i].stacked_volume = parseFloat(data.buy_orders[i].quantity) * parseFloat(data.buy_orders[i].price) + if (i > 0) + data.buy_orders[i].stacked_volume += data.buy_orders[i-1].stacked_volume + } + var datasets = [] + if (data.buy_orders.length > 0) + datasets.push({ + label: 'Buy', + steppedLine: 'after', + borderColor: '#88e86b', + backgroundColor: '#a9ea96', + data: data.buy_orders.map(o => { + return { + x:parseFloat(o.price), + y:parseFloat(o.stacked_volume) + } + }).concat({x:0, y: data.buy_orders[data.buy_orders.length-1].stacked_volume}) + }) + if (data.sell_orders.length > 0) + datasets.push({ + label: 'Sell', + steppedLine: 'before', + borderColor: '#e45858', + backgroundColor: '#e87f7f', + data: data.sell_orders.map(o => { + return { + x:parseFloat(o.price), + y:parseFloat(o.stacked_volume) + } + }) + }) // draw chart var chart_ctx = $("#market_depth_chart"); @@ -324,26 +332,18 @@

Trade History

display: false }, data: { - labels: buyOrderLabels.concat(sellOrderLabels), - datasets: [ - { - label: 'Buy', - steppedLine: 'after', - borderColor: '#88e86b', - backgroundColor: '#a9ea96', - data: buyOrderDataset - }, - { - label: 'Sell', - steppedLine: 'before', - borderColor: '#e45858', - backgroundColor: '#e87f7f', - data: sellOrderDataset - } - ] + datasets: datasets }, options: { - steppedLine: true + steppedLine: true, + scales: { + yAxes: [{ + stacked: true + }], + xAxes: [{ + type: 'linear' + }] + } } });