diff --git a/lib/webserver.js b/lib/webserver.js index 3edf2c82dcf8683001053d2569783bfd08d94e6e..640ecefb69b4d37cf20aa57c2c725bfd309f9494 100644 --- a/lib/webserver.js +++ b/lib/webserver.js @@ -1009,31 +1009,34 @@ module.exports = (host, port, duniterServer, sigValidity, msValidity, sigWindow, try { // get GET parameters var begin = 0;// Default Value - if( typeof(req.query.begin) != 'undefined' ) { begin = req.query.begin; } + if( typeof(req.query.begin) != 'undefined' && req.query.begin >= 0) { begin = req.query.begin; } var end = -1;// Default Value is current timestamp - if( typeof(req.query.end) != 'undefined' ) { begin = req.query.end; } + if( typeof(req.query.end) != 'undefined' && req.query.end >= 0) { end = req.query.end; } + + // get beginBlock and endBlock + var beginBlock = yield duniterServer.dal.peerDAL.query('SELECT `medianTime` FROM block WHERE `number` = '+begin+' LIMIT 1'); + var endBlock = yield duniterServer.dal.peerDAL.query('SELECT `medianTime` FROM block WHERE `number` = '+end+' LIMIT 1'); - // get full blockchain + // get blockchain if (end >= begin && begin >= 0) { - var blockchain = yield duniterServer.dal.peerDAL.query('SELECT `issuer`,`membersCount`,`medianTime`,`dividend`,`number`,`nonce` FROM block WHERE `number` < '+end+' AND `number` > '+begin+' ORDER BY `medianTime` ASC'); + var blockchain = yield duniterServer.dal.peerDAL.query('SELECT `issuer`,`membersCount`,`medianTime`,`dividend`,`number`,`nonce` FROM block WHERE `fork`=0 AND `medianTime` < '+endBlock[0].medianTime+' AND `medianTime` > '+beginBlock[0].medianTime+' ORDER BY `medianTime` ASC'); } else { - var blockchain = yield duniterServer.dal.peerDAL.query('SELECT `issuer`,`membersCount`,`medianTime`,`dividend`,`number`,`nonce` FROM block WHERE `number` > '+begin+' ORDER BY `medianTime` ASC'); + var blockchain = yield duniterServer.dal.peerDAL.query('SELECT `issuer`,`membersCount`,`medianTime`,`dividend`,`number`,`nonce` FROM block WHERE `fork`=0 AND `medianTime` > '+beginBlock[0].medianTime+' ORDER BY `medianTime` ASC'); } - //var blockchain = yield duniterServer.dal.peerDAL.query('SELECT `issuer`,`membersCount`,`medianTime`,`dividend`,`number`,`nonce` FROM block WHERE `medianTime` < '+end+' AND `medianTime` > '+begin+' ORDER BY `medianTime` ASC'); - + // get blockchain timestamp - const currentBlockNumber = blockchain.length-1; + const currentBlockNumber = begin+blockchain.length-1; const currentBlockchainTimestamp = blockchain[currentBlockNumber].medianTime; + if (end == -1) { end = currentBlockNumber; } // get idtys list var idtys = yield duniterServer.dal.peerDAL.query('SELECT `uid`,`pub` FROM i_index WHERE `wasMember`=1'); // get current membersCount const currentMembersCount = blockchain[currentBlockNumber].membersCount; - //console.log("blockchain[currentBlockNumber].membersCount %s", blockchain[currentBlockNumber].membersCount); // create and initialize tabNbBlockByMember and tabIndexMembers var tabNbBlockByMember = [ [] ]; @@ -1100,7 +1103,7 @@ module.exports = (host, port, duniterServer, sigValidity, msValidity, sigWindow, } // Appeler le module blockChart - let blockChartMod = blockChart(req, res, tabNbBlockByMemberSort, currentBlockNumber); + let blockChartMod = blockChart(req, res, tabNbBlockByMemberSort, currentBlockNumber, begin, end); // renvoyer les données en JSON //var response = JSON.stringify(tabNbBlockByMemberSort); @@ -1122,21 +1125,25 @@ module.exports = (host, port, duniterServer, sigValidity, msValidity, sigWindow, var begin = 0;// Default Value if( typeof(req.query.begin) != 'undefined' ) { begin = req.query.begin; } var end = -1;// Default Value is current timestamp - if( typeof(req.query.end) != 'undefined' ) { begin = req.query.end; } + if( typeof(req.query.end) != 'undefined' ) { end = req.query.end; } - // get full blockchain + // get beginBlock and endBlock + var beginBlock = yield duniterServer.dal.peerDAL.query('SELECT `medianTime` FROM block WHERE `number` = '+begin+' LIMIT 1'); + var endBlock = yield duniterServer.dal.peerDAL.query('SELECT `medianTime` FROM block WHERE `number` = '+end+' LIMIT 1'); + + // get blockchain if (end >= begin && begin >= 0) { - var blockchain = yield duniterServer.dal.peerDAL.query('SELECT `issuer`,`membersCount`,`monetaryMass`,`medianTime`,`dividend`,`number`,`nonce` FROM block WHERE `number` < '+end+' AND `number` > '+begin+' ORDER BY `medianTime` ASC'); + var blockchain = yield duniterServer.dal.peerDAL.query('SELECT `issuer`,`membersCount`,`monetaryMass`,`medianTime`,`dividend`,`number`,`nonce` FROM block WHERE `fork`=0 AND `medianTime` < '+endBlock[0].medianTime+' AND `medianTime` > '+beginBlock[0].medianTime+' ORDER BY `medianTime` ASC'); } else { - var blockchain = yield duniterServer.dal.peerDAL.query('SELECT `issuer`,`membersCount`,`monetaryMass`,`medianTime`,`dividend`,`number`,`nonce` FROM block WHERE `number` > '+begin+' ORDER BY `medianTime` ASC'); + var blockchain = yield duniterServer.dal.peerDAL.query('SELECT `issuer`,`membersCount`,`monetaryMass`,`medianTime`,`dividend`,`number`,`nonce` FROM block WHERE `fork`=0 AND `medianTime` > '+beginBlock[0].medianTime+' ORDER BY `medianTime` ASC'); } // get blockchain timestamp - const currentBlockNumber = blockchain.length-1; - const currentBlockchainTimestamp = blockchain[currentBlockNumber].medianTime; + const currentBlockNumber = begin+blockchain.length-1; + const currentBlockchainTimestamp = blockchain[blockchain.length-1].medianTime; // create and fill tabMembersCount, tabMonetaryMass, tabCurrency and currentDividend var tabMembersCount = []; @@ -1152,7 +1159,7 @@ module.exports = (host, port, duniterServer, sigValidity, msValidity, sigWindow, tabMembersCount.push(blockchain[b].membersCount); tabMonetaryMass.push(blockchain[b].monetaryMass); tabCurrency.push({ - blockNumber: b, + blockNumber: blockchain[b].number, timestamp: blockchain[b].medianTime, membersCount: blockchain[b].membersCount, monetaryMass: blockchain[b].monetaryMass,