Browse Source

added pagination on Blocks, Txs, Addresses

master
arnaucode 7 years ago
parent
commit
63a40a05b2
12 changed files with 147 additions and 37 deletions
  1. +9
    -0
      DevelopmentNotes.md
  2. BIN
      screenshots/new/goBlockchainDataAnalysis00.png
  3. BIN
      screenshots/new/goBlockchainDataAnalysis01png
  4. BIN
      screenshots/new/goBlockchainDataAnalysis02.png
  5. +55
    -13
      serverRoutes.go
  6. +6
    -0
      web/views/addresses/addresses.html
  7. +20
    -7
      web/views/addresses/addresses.js
  8. +9
    -1
      web/views/blocks/blocks.html
  9. +21
    -7
      web/views/blocks/blocks.js
  10. +2
    -2
      web/views/main/main.js
  11. +5
    -0
      web/views/txs/txs.html
  12. +20
    -7
      web/views/txs/txs.js

+ 9
- 0
DevelopmentNotes.md

@ -33,3 +33,12 @@ other
- fix error in exploreBlockchain.go, when getting the tx.Vin - fix error in exploreBlockchain.go, when getting the tx.Vin
tx 8f04960da36beaa928b9693f7dca4afae5a6122bb6874d409a1156e4c6c55024 has 4 vin, but exploreBlockchain is only getting the first 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

BIN
screenshots/new/goBlockchainDataAnalysis00.png

Before After
Width: 1344  |  Height: 615  |  Size: 166 KiB

BIN
screenshots/new/goBlockchainDataAnalysis01png

Before After
Width: 1344  |  Height: 646  |  Size: 192 KiB

BIN
screenshots/new/goBlockchainDataAnalysis02.png

Before After
Width: 1345  |  Height: 643  |  Size: 262 KiB

+ 55
- 13
serverRoutes.go

@ -35,16 +35,22 @@ var routes = Routes{
AllAddresses, AllAddresses,
}, },
Route{ Route{
"GetLastAddr",
"Blocks",
"Get", "Get",
"/lastaddr",
GetLastAddr,
"/blocks/{page}/{count}",
Blocks,
}, },
Route{ Route{
"GetLastTx",
"Txs",
"Get", "Get",
"/lasttx",
GetLastTx,
"/txs/{page}/{count}",
Txs,
},
Route{
"Addresses",
"Get",
"/addresses/{page}/{count}",
Addresses,
}, },
Route{ Route{
"Block", "Block",
@ -171,24 +177,42 @@ func AllAddresses(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, string(jsonNodes)) fmt.Fprintln(w, string(jsonNodes))
} }
func GetLastAddr(w http.ResponseWriter, r *http.Request) {
func Blocks(w http.ResponseWriter, r *http.Request) {
ipFilter(w, r) 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) 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 //convert []resp struct to json
jsonResp, err := json.Marshal(addresses)
jsonData, err := json.Marshal(blocks)
check(err) 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) 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{} 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) check(err)
//convert []resp struct to json //convert []resp struct to json
@ -197,6 +221,24 @@ func GetLastTx(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, string(jsonData)) 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) { func Block(w http.ResponseWriter, r *http.Request) {
ipFilter(w, r) ipFilter(w, r)

+ 6
- 0
web/views/addresses/addresses.html

@ -10,6 +10,12 @@
<a ng-href="#!/address/{{address.hash}}" class="list-group-item-text">{{address.hash}}</a> <a ng-href="#!/address/{{address.hash}}" class="list-group-item-text">{{address.hash}}</a>
</div> </div>
</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> </div>
</div> </div>

+ 20
- 7
web/views/addresses/addresses.js

@ -13,12 +13,25 @@ angular.module('app.addresses', ['ngRoute'])
//last addr //last addr
$scope.addresses = []; $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();
};
}); });

+ 9
- 1
web/views/blocks/blocks.html

@ -2,7 +2,10 @@
<div class="col-md-12"> <div class="col-md-12">
<div class="panel"> <div class="panel">
<div class="panel-heading c_deepPurpleG300to500"> <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>
<div class="panel-body"> <div class="panel-body">
<table class="table table-hover"> <table class="table table-hover">
@ -45,6 +48,11 @@
</tr> </tr>
</tbody> </tbody>
</table> </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> </div>
</div> </div>

+ 21
- 7
web/views/blocks/blocks.js

@ -13,12 +13,26 @@ angular.module('app.blocks', ['ngRoute'])
//last tx //last tx
$scope.txs = []; $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();
};
}); });

+ 2
- 2
web/views/main/main.js

@ -32,7 +32,7 @@ angular.module('app.main', ['ngRoute'])
//last addr //last addr
$scope.addresses = []; $scope.addresses = [];
$http.get(urlapi + 'lastaddr')
$http.get(urlapi + 'addresses/1/10')
.then(function(data, status, headers, config) { .then(function(data, status, headers, config) {
console.log(data); console.log(data);
$scope.addresses = data.data; $scope.addresses = data.data;
@ -42,7 +42,7 @@ angular.module('app.main', ['ngRoute'])
//last tx //last tx
$scope.txs = []; $scope.txs = [];
$http.get(urlapi + 'lasttx')
$http.get(urlapi + 'txs/1/10')
.then(function(data, status, headers, config) { .then(function(data, status, headers, config) {
console.log(data); console.log(data);
$scope.txs = data.data; $scope.txs = data.data;

+ 5
- 0
web/views/txs/txs.html

@ -45,6 +45,11 @@
</tr> </tr>
</tbody> </tbody>
</table> </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> </div>
</div> </div>

+ 20
- 7
web/views/txs/txs.js

@ -13,12 +13,25 @@ angular.module('app.txs', ['ngRoute'])
//last tx //last tx
$scope.txs = []; $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();
};
}); });

Loading…
Cancel
Save