arnaucube
arnaucube/goBlockchainDataAnalysisPublic Self-hosted repository
added pagination on Blocks, Txs, Addresses
arnaucode idoctnef@openmailbox.org
Thu, 31 Aug 2017 16:13:50 +0200
commit

63a40a05b2bd42a7a3c116d5c1af71dab1e6dd50

parent

58393a26e9eea1ee713a684b31264f8a8e6d5d11

M DevelopmentNotes.md → DevelopmentNotes.md

@@ -33,3 +33,12 @@ - num address evolution throught time

- fix error in exploreBlockchain.go, when getting the tx.Vin tx 8f04960da36beaa928b9693f7dca4afae5a6122bb6874d409a1156e4c6c55024 has 4 vin, but exploreBlockchain is only getting the first + +- pagination in address network generation + +- stop rendering dots of sankey, when view change + +- sidebar pages: + list of addresses in fairmarket (addresses of shops), to view statistics in time of the inputs and outputs in a timeline + +- refresh blockchain database every minute
M serverRoutes.go → serverRoutes.go

@@ -35,16 +35,22 @@ "/alladdresses",

AllAddresses, }, Route{ - "GetLastAddr", + "Blocks", "Get", - "/lastaddr", - GetLastAddr, + "/blocks/{page}/{count}", + Blocks, }, Route{ - "GetLastTx", + "Txs", "Get", - "/lasttx", - GetLastTx, + "/txs/{page}/{count}", + Txs, + }, + Route{ + "Addresses", + "Get", + "/addresses/{page}/{count}", + Addresses, }, Route{ "Block",

@@ -171,24 +177,42 @@ check(err)

fmt.Fprintln(w, string(jsonNodes)) } -func GetLastAddr(w http.ResponseWriter, r *http.Request) { +func Blocks(w http.ResponseWriter, r *http.Request) { ipFilter(w, r) + vars := mux.Vars(r) + page, err := strconv.Atoi(vars["page"]) + check(err) + count, err := strconv.Atoi(vars["count"]) + check(err) - addresses := []AddressModel{} - err := addressCollection.Find(bson.M{}).Limit(10).Sort("-$natural").All(&addresses) + blocks := []BlockModel{} + err = blockCollection.Find(bson.M{}).Skip((page - 1) * 20).Limit(count).Sort("-$natural").All(&blocks) check(err) + for _, block := range blocks { + //blockheight := strconv.FormatInt(block.Height, 10) + blockheight := block.Height + txs := []TxModel{} + err = txCollection.Find(bson.M{"blockheight": blockheight}).All(&txs) + block.Txs = txs + } + //convert []resp struct to json - jsonResp, err := json.Marshal(addresses) + jsonData, err := json.Marshal(blocks) check(err) - fmt.Fprintln(w, string(jsonResp)) + fmt.Fprintln(w, string(jsonData)) } -func GetLastTx(w http.ResponseWriter, r *http.Request) { +func Txs(w http.ResponseWriter, r *http.Request) { ipFilter(w, r) + vars := mux.Vars(r) + page, err := strconv.Atoi(vars["page"]) + check(err) + count, err := strconv.Atoi(vars["count"]) + check(err) txs := []TxModel{} - err := txCollection.Find(bson.M{}).Limit(10).Sort("-$natural").All(&txs) + err = txCollection.Find(bson.M{}).Skip((page - 1) * 20).Limit(count).Sort("-$natural").All(&txs) check(err) //convert []resp struct to json

@@ -196,6 +220,24 @@ jsonData, err := json.Marshal(txs)

check(err) fmt.Fprintln(w, string(jsonData)) +} +func Addresses(w http.ResponseWriter, r *http.Request) { + ipFilter(w, r) + vars := mux.Vars(r) + page, err := strconv.Atoi(vars["page"]) + check(err) + count, err := strconv.Atoi(vars["count"]) + check(err) + + addresses := []AddressModel{} + err = addressCollection.Find(bson.M{}).Skip((page - 1) * 20).Limit(count).Sort("-$natural").All(&addresses) + check(err) + + //convert []resp struct to json + jsonResp, err := json.Marshal(addresses) + check(err) + + fmt.Fprintln(w, string(jsonResp)) } func Block(w http.ResponseWriter, r *http.Request) { ipFilter(w, r)
M web/views/addresses/addresses.html → web/views/addresses/addresses.html

@@ -10,6 +10,12 @@ <div class="row-content">

<a ng-href="#!/address/{{address.hash}}" class="list-group-item-text">{{address.hash}}</a> </div> </div> + + <ul class="pager"> + <li><a class="withripple" ng-click="getPrev()">Previous</a></li> + Current page: {{page}} + <li><a class="withripple" ng-click="getNext()">Next</a></li> + </ul> </div> </div> </div>
M web/views/addresses/addresses.js → web/views/addresses/addresses.js

@@ -13,12 +13,25 @@ .controller('AddressesCtrl', function($scope, $http) {

//last addr $scope.addresses = []; - $http.get(urlapi + 'lastaddr') - .then(function(data, status, headers, config) { - console.log(data); - $scope.addresses = data.data; - }, function(data, status, headers, config) { - console.log('data error'); - }); + $scope.page = 1; + $scope.count = 10; + $scope.getAddresses = function() { + $http.get(urlapi + 'addresses/' + $scope.page + '/' + $scope.count) + .then(function(data, status, headers, config) { + console.log(data); + $scope.addresses = data.data; + }, function(data, status, headers, config) { + console.log('data error'); + }); + }; + $scope.getAddresses(); + $scope.getPrev = function(){ + $scope.page++; + $scope.getAddresses(); + }; + $scope.getNext = function(){ + $scope.page--; + $scope.getAddresses(); + }; });
M web/views/blocks/blocks.html → web/views/blocks/blocks.html

@@ -2,7 +2,10 @@ <div class="row">

<div class="col-md-12"> <div class="panel"> <div class="panel-heading c_deepPurpleG300to500"> - <h3 class="panel-title">Last Tx with amount</h3> + <h3 class="panel-title"> + Last Blocks with amount + <div ng-click="getBlocks()" class="btn btn-default pull-right">Previous</div> + </h3> </div> <div class="panel-body"> <table class="table table-hover">

@@ -45,6 +48,11 @@ </td>

</tr> </tbody> </table> + <ul class="pager"> + <li><a class="withripple" ng-click="getPrev()">Previous</a></li> + Current page: {{page}} + <li><a class="withripple" ng-click="getNext()">Next</a></li> + </ul> </div> </div> </div>
M web/views/blocks/blocks.js → web/views/blocks/blocks.js

@@ -13,12 +13,26 @@ .controller('BlocksCtrl', function($scope, $http) {

//last tx $scope.txs = []; - $http.get(urlapi + 'lasttx') - .then(function(data, status, headers, config) { - console.log(data); - $scope.txs = data.data; - }, function(data, status, headers, config) { - console.log('data error'); - }); + $scope.page = 1; + $scope.count = 10; + $scope.getBlocks = function() {; + $http.get(urlapi + 'blocks/' + $scope.page + '/' + $scope.count) + .then(function(data, status, headers, config) { + console.log(data); + $scope.txs = data.data; + }, function(data, status, headers, config) { + console.log('data error'); + }); + }; + $scope.getBlocks(); + + $scope.getPrev = function(){ + $scope.page++; + $scope.getBlocks(); + }; + $scope.getNext = function(){ + $scope.page--; + $scope.getBlocks(); + }; });
M web/views/main/main.js → web/views/main/main.js

@@ -32,7 +32,7 @@

//last addr $scope.addresses = []; - $http.get(urlapi + 'lastaddr') + $http.get(urlapi + 'addresses/1/10') .then(function(data, status, headers, config) { console.log(data); $scope.addresses = data.data;

@@ -42,7 +42,7 @@ });

//last tx $scope.txs = []; - $http.get(urlapi + 'lasttx') + $http.get(urlapi + 'txs/1/10') .then(function(data, status, headers, config) { console.log(data); $scope.txs = data.data;
M web/views/txs/txs.html → web/views/txs/txs.html

@@ -45,6 +45,11 @@ </td>

</tr> </tbody> </table> + <ul class="pager"> + <li><a class="withripple" ng-click="getPrev()">Previous</a></li> + Current page: {{page}} + <li><a class="withripple" ng-click="getNext()">Next</a></li> + </ul> </div> </div> </div>
M web/views/txs/txs.js → web/views/txs/txs.js

@@ -13,12 +13,25 @@ .controller('TxsCtrl', function($scope, $http) {

//last tx $scope.txs = []; - $http.get(urlapi + 'lasttx') - .then(function(data, status, headers, config) { - console.log(data); - $scope.txs = data.data; - }, function(data, status, headers, config) { - console.log('data error'); - }); + $scope.page = 1; + $scope.count = 10; + $scope.getTxs = function() { + $http.get(urlapi + 'txs/' + $scope.page + '/' + $scope.count) + .then(function(data, status, headers, config) { + console.log(data); + $scope.txs = data.data; + }, function(data, status, headers, config) { + console.log('data error'); + }); + }; + $scope.getTxs(); + $scope.getPrev = function(){ + $scope.page++; + $scope.getTxs(); + }; + $scope.getNext = function(){ + $scope.page--; + $scope.getTxs(); + }; });