Skip to content
This repository has been archived by the owner on Nov 20, 2019. It is now read-only.

Commit

Permalink
Now use Charts.JS to generate the charts (replace sparklines).
Browse files Browse the repository at this point in the history
  • Loading branch information
dvandal committed May 19, 2018
1 parent 02d3a16 commit ae00c3a
Show file tree
Hide file tree
Showing 14 changed files with 394 additions and 211 deletions.
38 changes: 37 additions & 1 deletion lib/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,43 @@ function collectStats(){
telegramBotDisable: config.telegram && config.telegram.botCommands ? config.telegram.botCommands.disable : "/disable"
});
},
charts: charts.getPoolChartsData
charts: function (callback) {
// Get enabled charts data
charts.getPoolChartsData(function(error, data) {
if (error) {
callback(error, data);
return;
}

// Add last 24 hours blocks data
var currentTimestamp = Date.now() / 1000 | 0;
var beginAtTimestamp = currentTimestamp - 86400;
var beginAtDate = new Date(beginAtTimestamp * 1000);
var beginAtHour = beginAtDate.getHours();

var blocksCount = {};
for (var i = 0; i <= 24; i++) {
var date = utils.dateFormat(new Date((beginAtTimestamp + (i * 60 * 60)) * 1000), 'yyyy-mm-dd HH:00');
blocksCount[date] = 0;
}

redisClient.zrevrange(config.coin + ':blocks:matured', 0, -1, 'WITHSCORES', function(err, result) {
for (var i = 0; i < result.length; i++){
var block = result[i].split(':');
if (block[5]) {
var blockTimestamp = block[1];
if (blockTimestamp < beginAtTimestamp) {
continue;
}
var date = utils.dateFormat(new Date(blockTimestamp * 1000), 'yyyy-mm-dd HH:00');
blocksCount[date] ++;
}
}
data.blocks = blocksCount;
callback(error, data);
});
});
}
}, function(error, results){
log('info', logSystem, 'Stat collection finished: %d ms redis, %d ms daemon', [redisFinished - startTime, daemonFinished - startTime]);

Expand Down
2 changes: 0 additions & 2 deletions lib/charts.js
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,6 @@ function getCoinPrice(callback) {
var tickers = [config.symbol.toUpperCase() + '-' + currency.toUpperCase()];
market.get(source, tickers, function(data) {
var error = (!data || !data[0] || !data[0].price) ? 'No exchange data for ' + config.symbol.toUpperCase() + ' to ' + currency.toUpperCase() + ' using ' + source : null;
if (error) log('error', logSystem, error);

var price = (data && data[0] && data[0].price) ? data[0].price : null;
callback(error, price);
});
Expand Down
60 changes: 48 additions & 12 deletions lib/market.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,16 @@ exports.get = function(exchange, tickers, callback) {
getExchangeMarkets(exchange, function(error, marketData) {
if (!marketData || marketData.length === 0) {
callback({});
return ;
}
return ;
}

for (var i in tickers) {
(function(i){
var pairName = tickers[i];
var pairParts = pairName.split('-');
var base = pairParts[0] || null;
var target = pairParts[1] || null;

if (!marketData[base]) {
completedFetches++;
if (completedFetches === numTickers) callback(marketPrices);
Expand Down Expand Up @@ -93,9 +93,11 @@ function getExchangeMarkets(exchange, callback) {
// Altex
if (exchange == "altex") {
apiInterfaces.jsonHttpRequest('api.altex.exchange', 443, '', function(error, response) {
if (error) log('error', logSystem, 'API request to %s has failed: %s', [exchange, error]);

if (error) callback(error, {});
if (!response || !response.success) callback('API request failed', {});
if (!response || !response.success) callback('No market informations', {});

var data = {};
for (var ticker in response.data) {
tickerParts = ticker.split('_');
Expand All @@ -115,8 +117,10 @@ function getExchangeMarkets(exchange, callback) {
// Crex24
else if (exchange == "crex24") {
apiInterfaces.jsonHttpRequest('api.crex24.com', 443, '', function(error, response) {
if (error) log('error', logSystem, 'API request to %s has failed: %s', [exchange, error]);

if (error) callback(error, {});
if (!response || !response.Tickers) callback('API request failed', {});
if (!response || !response.Tickers) callback('No market informations', {});

var data = {};
for (var i in response.Tickers) {
Expand All @@ -140,8 +144,10 @@ function getExchangeMarkets(exchange, callback) {
// Cryptopia
else if (exchange == "cryptopia") {
apiInterfaces.jsonHttpRequest('www.cryptopia.co.nz', 443, '', function(error, response) {
if (error) log('error', logSystem, 'API request to %s has failed: %s', [exchange, error]);

if (error) callback(error, {});
if (!response || !response.Success) callback('API request failed', {});
if (!response || !response.Success) callback('No market informations', {});

var data = {};
for (var i in response.Data) {
Expand All @@ -165,8 +171,10 @@ function getExchangeMarkets(exchange, callback) {
// Stocks.Exchange
else if (exchange == "stocks.exchange") {
apiInterfaces.jsonHttpRequest('stocks.exchange', 443, '', function(error, response) {
if (error) log('error', logSystem, 'API request to %s has failed: %s', [exchange, error]);

if (error) callback(error, {});
if (!response) callback('API request failed', {});
if (!response) callback('No market informations', {});

var data = {};
for (var i in response) {
Expand All @@ -190,6 +198,8 @@ function getExchangeMarkets(exchange, callback) {
// TradeOgre
else if (exchange == "tradeogre") {
apiInterfaces.jsonHttpRequest('tradeogre.com', 443, '', function(error, response) {
if (error) log('error', logSystem, 'API request to %s has failed: %s', [exchange, error]);

var data = {};
if (!error && response) {
for (var i in response) {
Expand Down Expand Up @@ -241,29 +251,43 @@ function getExchangePrice(exchange, base, target, callback) {
if (exchange == "cryptonator") {
var ticker = base + '-' + target;
apiInterfaces.jsonHttpRequest('api.cryptonator.com', 443, '', function(error, response) {
if (error) log('error', logSystem, 'API request to %s has failed: %s', [exchange, error]);
if (response.error) log('warn', logSystem, 'Cryptonator API error: %s', [response.error]);

var error = response.error ? response.error : error;
var price = response.success ? +response.ticker.price : null;
if (!price) log('warn', logSystem, 'No exchange data for %s using %s', [ticker, exchange]);

callback(error, { ticker: ticker, price: price, source: exchange });
}, '/api/ticker/' + ticker);
}

// Altex
else if (exchange == "altex") {
getExchangeMarkets(exchange, function(error, data) {
if (error) log('error', logSystem, 'API request to %s has failed: %s', [exchange, error]);

var price = null;
if (!error && data[base] && data[base][target]) {
price = data[base][target];
}
}
if (!price) log('warn', logSystem, 'No exchange data for %s using %s', [ticker, exchange]);

callback(error, { ticker: ticker, price: price, source: exchange });
});
});
}

// Crex24
else if (exchange == "crex24") {
var ticker = base + '_' + target;
apiInterfaces.jsonHttpRequest('api.crex24.com', 443, '', function(error, response) {
if (error) log('error', logSystem, 'API request to %s has failed: %s', [exchange, error]);
if (response.Error) log('warn', logSystem, 'Crex24 API error: %s', [response.Error]);

var error = response.Error ? response.Error : error;
var price = (response.Tickers && response.Tickers[0]) ? +response.Tickers[0].Last : null;
if (!price) log('warn', logSystem, 'No exchange data for %s using %s', [ticker, exchange]);

callback(error, { ticker: ticker, price: price, source: exchange });
}, '/CryptoExchangeService/BotPublic/ReturnTicker?request=[NamePairs=' + ticker + ']');
}
Expand All @@ -272,6 +296,9 @@ function getExchangePrice(exchange, base, target, callback) {
else if (exchange == "cryptopia") {
var ticker = base + '_' + target;
apiInterfaces.jsonHttpRequest('www.cryptopia.co.nz', 443, '', function(error, response) {
if (error) log('error', logSystem, 'API request to %s has failed: %s', [exchange, error]);
if (response.Error) log('warn', logSystem, 'Cryptopia API error: %s', [response.Error]);

var error = response.Error ? response.Error : error;
var price = (response.Data && response.Data.LastPrice) ? +response.Data.LastPrice : null;
callback(error, { ticker: ticker, price: price, source: exchange });
Expand All @@ -281,20 +308,29 @@ function getExchangePrice(exchange, base, target, callback) {
// Stocks.Exchange
else if (exchange == "stocks.exchange") {
getExchangeMarkets(exchange, function(error, data) {
if (error) log('error', logSystem, 'API request to %s has failed: %s', [exchange, error]);

var price;
if (!error && data[base] && data[base][target]) {
price = data[base][target];
}
}
if (!price) log('warn', logSystem, 'No exchange data for %s using %s', [ticker, exchange]);

callback(error, { ticker: ticker, price: price, source: exchange });
});
});
}

// TradeOgre
else if (exchange == "tradeogre") {
var ticker = target + '-' + base;
apiInterfaces.jsonHttpRequest('tradeogre.com', 443, '', function(error, response) {
if (error) log('error', logSystem, 'API request to %s has failed: %s', [exchange, error]);
if (response.message) log('warn', logSystem, 'TradeOgre API error: %s', [response.message]);

var error = response.message ? response.message : error;
var price = +response.price || null;
if (!price) log('warn', logSystem, 'No exchange data for %s using %s', [ticker, exchange]);

callback(error, { ticker: ticker, price: price, source: exchange });
}, '/api/v1/ticker/' + ticker);
}
Expand Down
2 changes: 1 addition & 1 deletion website_example/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-timeago/1.6.3/jquery.timeago.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-sparklines/2.1.2/jquery.sparkline.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
Expand Down
1 change: 1 addition & 0 deletions website_example/lang/ca.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
"difficulty": "Dificultat",
"blockHash": "Bloc Hash",
"effort": "Esforç",
"blocksFoundLast24": "Blocks found in the last 24 hours",

"payments": "Pagaments",
"paymentsHistory": "Historial de pagaments",
Expand Down
3 changes: 2 additions & 1 deletion website_example/lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@
"height": "Height",
"difficulty": "Difficulty",
"blockHash": "Block Hash",
"effort": "Effort",
"effort": "Effort",
"blocksFoundLast24": "Blocks found in the last 24 hours",

"payments": "Payments",
"paymentsHistory": "Payments History",
Expand Down
1 change: 1 addition & 0 deletions website_example/lang/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"difficulty": "Dificultad",
"blockHash": "Bloque Hash",
"effort": "Esfuerzo",
"blocksFoundLast24": "Blocks found in the last 24 hours",

"payments": "Pagos",
"paymentsHistory": "Historial de pagos",
Expand Down
1 change: 1 addition & 0 deletions website_example/lang/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"difficulty": "Difficulté",
"blockHash": "Hash du bloc",
"effort": "Effort",
"blocksFoundLast24": "Blocs trouvés dans les 24 dernières heures",

"payments": "Paiements",
"paymentsHistory": "Historique des paiements",
Expand Down
1 change: 1 addition & 0 deletions website_example/lang/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
"difficulty": "난이도",
"blockHash": "블럭 해시",
"effort": "풀의노력",
"blocksFoundLast24": "Blocks found in the last 24 hours",

"payments": "출금상황",
"paymentsHistory": "출금 내역",
Expand Down
1 change: 1 addition & 0 deletions website_example/lang/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
"difficulty": "Сложность",
"blockHash": "Хеш блока",
"effort": "Усилие",
"blocksFoundLast24": "Blocks found in the last 24 hours",

"payments": "Платежи",
"paymentsHistory": "История платежей",
Expand Down
Loading

0 comments on commit ae00c3a

Please sign in to comment.