commit
27d6aca7e1
|
@ -36,7 +36,6 @@ script(type='text/javascript', src='/js/services/socket.js')
|
||||||
//Application Controllers
|
//Application Controllers
|
||||||
script(type='text/javascript', src='/js/controllers/index.js')
|
script(type='text/javascript', src='/js/controllers/index.js')
|
||||||
script(type='text/javascript', src='/js/controllers/header.js')
|
script(type='text/javascript', src='/js/controllers/header.js')
|
||||||
script(type='text/javascript', src='/js/controllers/footer.js')
|
|
||||||
script(type='text/javascript', src='/js/controllers/blocks.js')
|
script(type='text/javascript', src='/js/controllers/blocks.js')
|
||||||
script(type='text/javascript', src='/js/controllers/transactions.js')
|
script(type='text/javascript', src='/js/controllers/transactions.js')
|
||||||
script(type='text/javascript', src='/js/controllers/address.js')
|
script(type='text/javascript', src='/js/controllers/address.js')
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
angular.module('insight.system').controller('FooterController',
|
|
||||||
function ($scope, Global, Status) {
|
|
||||||
$scope.global = Global;
|
|
||||||
|
|
||||||
$scope.getFooter = function() {
|
|
||||||
Status.get({
|
|
||||||
q: 'getInfo'
|
|
||||||
}, function(d) {
|
|
||||||
$scope.info = d.info;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
|
@ -23,6 +23,17 @@ angular.module('insight.status').controller('StatusController',
|
||||||
$scope.getSync = function() {
|
$scope.getSync = function() {
|
||||||
Sync.get({}, function(sync) {
|
Sync.get({}, function(sync) {
|
||||||
$rootScope.syncError = null;
|
$rootScope.syncError = null;
|
||||||
|
|
||||||
|
if (sync.blocksToSync > sync.syncedBlocks ) {
|
||||||
|
sync.message = 'Blocks to sync: ' + (sync.blocksToSync - sync.syncedBlocks);
|
||||||
|
sync.tooltip = 'Skipped blocks:' + sync.skipped_blocks;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sync.message = 'On sync';
|
||||||
|
sync.tooltip = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$scope.sync = sync;
|
$scope.sync = sync;
|
||||||
}, function(e) {
|
}, function(e) {
|
||||||
$rootScope.syncError = 'Could not get sync information' + e;
|
$rootScope.syncError = 'Could not get sync information' + e;
|
||||||
|
|
|
@ -14,19 +14,29 @@ angular.module('insight.transactions').controller('transactionsController',
|
||||||
|
|
||||||
var ret = [];
|
var ret = [];
|
||||||
var tmp = {};
|
var tmp = {};
|
||||||
|
var u=0;
|
||||||
// TODO multiple output address
|
// TODO multiple output address
|
||||||
//
|
//
|
||||||
for(var i=0; i < l; i++) {
|
for(var i=0; i < l; i++) {
|
||||||
|
|
||||||
|
var notAddr = false;
|
||||||
|
|
||||||
|
// non standard input
|
||||||
|
if (items[i].scriptSig && !items[i].addr) {
|
||||||
|
items[i].addr = 'Unparsed address [' + u++ + ']';
|
||||||
|
items[i].notAddr = true;
|
||||||
|
notAddr = true;
|
||||||
|
}
|
||||||
|
|
||||||
// non standard output
|
// non standard output
|
||||||
if (items[i].scriptPubKey && items[i].scriptPubKey.addresses.length > 1) {
|
if (items[i].scriptPubKey && items[i].scriptPubKey.addresses.length > 1) {
|
||||||
item[i].addr = items[i].scriptPubKey.addresses.join(',');
|
items[i].addr = items[i].scriptPubKey.addresses.join(',');
|
||||||
ret.push(items[i]);
|
ret.push(items[i]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var addr = items[i].addr ||
|
var addr = items[i].addr || (items[i].scriptPubKey && items[i].scriptPubKey.addresses[0] );
|
||||||
(items[i].scriptPubKey && items[i].scriptPubKey.addresses[0] );
|
|
||||||
if (!tmp[addr]) {
|
if (!tmp[addr]) {
|
||||||
tmp[addr] = {};
|
tmp[addr] = {};
|
||||||
tmp[addr].valueSat = 0;
|
tmp[addr].valueSat = 0;
|
||||||
|
@ -37,6 +47,7 @@ angular.module('insight.transactions').controller('transactionsController',
|
||||||
tmp[addr].valueSat += items[i].valueSat;
|
tmp[addr].valueSat += items[i].valueSat;
|
||||||
tmp[addr].value = tmp[addr].valueSat / 100000000;
|
tmp[addr].value = tmp[addr].valueSat / 100000000;
|
||||||
tmp[addr].items.push(items[i]);
|
tmp[addr].items.push(items[i]);
|
||||||
|
tmp[addr].notAddr = notAddr;
|
||||||
tmp[addr].count++;
|
tmp[addr].count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,16 +23,20 @@
|
||||||
<div class="no_matching text-danger" data-ng-show="badQuery">No matching records found!</div>
|
<div class="no_matching text-danger" data-ng-show="badQuery">No matching records found!</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="status" data-ng-controller="FooterController" data-ng-init="getFooter()">
|
<div class="status" data-ng-controller="StatusController">
|
||||||
<i class="small" data-ng-show="info.blocks">
|
<span data-ng-init="getSync()">
|
||||||
<strong>Status:</strong> On Sync
|
<span class="small" tooltip="{{sync.tooltip}}" tooltip-placement="down">
|
||||||
</i>
|
<i><strong> {{sync.message}} </strong></i>
|
||||||
<i class="small">
|
</span>
|
||||||
<strong> Connections: </strong> {{info.connections}}
|
</span>
|
||||||
</i>
|
<span data-ng-init="getStatus('Info')">
|
||||||
<i class="small">
|
<i class="small">
|
||||||
<strong>Height:</strong> {{info.blocks}}
|
<strong> Connections: </strong> {{info.connections}}
|
||||||
</i>
|
</i>
|
||||||
|
<i class="small">
|
||||||
|
<strong>Height:</strong> {{info.blocks}}
|
||||||
|
</i>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>Block </strong>
|
<td><strong>Block </strong>
|
||||||
<td class="text-muted text-right">
|
<td class="text-right">
|
||||||
|
|
||||||
<a href="/#!/block/{{tx.blockhash}}" class=" ellipsis">{{tx.blockhash}}</a>
|
<a href="/#!/block/{{tx.blockhash}}" class=" ellipsis">{{tx.blockhash}}</a>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -1,6 +1,14 @@
|
||||||
<div class="line-bot">
|
<div class="line-bot">
|
||||||
<a href="/#!/tx/{{tx.txid}}">{{tx.txid}}</a>
|
<a href="/#!/tx/{{tx.txid}}">{{tx.txid}}</a>
|
||||||
|
|
||||||
|
<a class="pull-right" style="margin-left:10px" data-ng-click="itemsExpanded = !itemsExpanded">
|
||||||
|
<span data-ng-show="itemsExpanded" class="glyphicon glyphicon-minus-sign" tooltip="Hide items details" tooltip-placement="down" ></span>
|
||||||
|
<span data-ng-show="!itemsExpanded" class="glyphicon glyphicon-plus-sign" tooltip="Show items details" tooltip-placement="down"></span>
|
||||||
|
</a>
|
||||||
|
|
||||||
<span class="pull-right">{{tx.time * 1000 | date:'medium'}}</span>
|
<span class="pull-right">{{tx.time * 1000 | date:'medium'}}</span>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -13,42 +21,32 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-ng-show="!tx.isCoinBase">
|
<div data-ng-show="!tx.isCoinBase">
|
||||||
<ul class="list-unstyled" data-ng-repeat="vin in tx.vinSimple" data-ng-show="!inputsExpanded">
|
<ul class="list-unstyled" data-ng-repeat="vin in tx.vinSimple" data-ng-show="!itemsExpanded">
|
||||||
<li class="row">
|
<li class="row">
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<div class="ellipsis">
|
<div class="ellipsis">
|
||||||
<a data-ng-show="vin.addr" href="/#!/address/{{vin.addr}}">{{vin.addr}}</a>
|
<span data-ng-show="vin.notAddr">{{vin.addr}}</span>
|
||||||
|
<a data-ng-show="!vin.notAddr" href="/#!/address/{{vin.addr}}">{{vin.addr}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-right text-muted"><small>{{vin.value}} BTC</small></p>
|
<p class="text-right text-muted"><small>{{vin.value}} BTC</small></p>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul class="list-unstyled" data-ng-repeat="vin in tx.vin" data-ng-show="inputsExpanded">
|
<ul class="list-unstyled" data-ng-repeat="vin in tx.vin" data-ng-show="itemsExpanded">
|
||||||
<li class="row expanded-tx">
|
<li class="row expanded-tx">
|
||||||
<a class="col-md-1 glyphicon glyphicon-arrow-right" href="/#!/tx/{{vin.txid}}" alt="Outpoint: {{vin.txid}},{{vin.vout}}" tooltip="Outpoint: {{vin.txid}},{{vin.vout}}" tooltip-placement="right" >
|
<a class="col-md-1 glyphicon glyphicon-arrow-right" href="/#!/tx/{{vin.txid}}" alt="Outpoint: {{vin.txid}},{{vin.vout}}" tooltip="Outpoint: {{vin.txid}},{{vin.vout}}" tooltip-placement="right" >
|
||||||
</a>
|
</a>
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<div class="ellipsis">
|
<div class="ellipsis">
|
||||||
<span data-ng-show="!vin.addr">Address could not be parsed</span>
|
<span data-ng-show="vin.notAddr">{{vin.addr}}</span>
|
||||||
<a data-ng-show="vin.addr" href="/#!/address/{{vin.addr}}">{{vin.addr}}</a>
|
<a data-ng-show="!vin.notAddr" href="/#!/address/{{vin.addr}}">{{vin.addr}}</a>
|
||||||
</div>
|
</div>
|
||||||
<div style="word-wrap:break-word">
|
<div style="word-wrap:break-word">
|
||||||
<small><strong>scriptSig</strong>{{vin.scriptSig.asm}}</small>
|
<small><strong>scriptSig</strong> {{vin.scriptSig.asm}}</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-right text-muted"><small>{{vin.value}} BTC</small></p>
|
<p class="text-right text-muted"><small>{{vin.value}} BTC</small></p>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="text-center">
|
|
||||||
<a class="text-small" data-ng-click="inputsExpanded = !inputsExpanded">
|
|
||||||
<span data-ng-show="inputsExpanded">
|
|
||||||
<span class="glyphicon glyphicon-chevron-up"></span> Collapse Inputs
|
|
||||||
</span>
|
|
||||||
<span data-ng-show="!inputsExpanded">
|
|
||||||
<span class="glyphicon glyphicon-chevron-down"></span> Expand Inputs
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -58,17 +56,18 @@
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div data-ng-repeat="vout in tx.voutSimple" data-ng-show="!outputsExpanded">
|
<div data-ng-repeat="vout in tx.voutSimple" data-ng-show="!itemsExpanded">
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
<div class="ellipsis">
|
<div class="ellipsis">
|
||||||
<a href="/#!/address/{{address}}" data-ng-repeat="address in vout.addr.split(',')">{{address}}</a>
|
<span data-ng-show="vout.hideLink">{{vout.addr}}</span>
|
||||||
|
<a href="/#!/address/{{address}}" data-ng-show="!vout.hideLink" data-ng-repeat="address in vout.addr.split(',')">{{address}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<p class="text-right text-muted"> <small>{{vout.value}} BTC</small></p>
|
<p class="text-right text-muted"> <small>{{vout.value}} BTC</small></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div data-ng-repeat="vout in tx.vout" data-ng-show="outputsExpanded">
|
<div data-ng-repeat="vout in tx.vout" data-ng-show="itemsExpanded">
|
||||||
<div class="col-md-9 expanded-tx">
|
<div class="col-md-9 expanded-tx">
|
||||||
<div class="ellipsis">
|
<div class="ellipsis">
|
||||||
<a href="/#!/address/{{address}}" data-ng-repeat="address in vout.scriptPubKey.addresses">{{address}}</a>
|
<a href="/#!/address/{{address}}" data-ng-repeat="address in vout.scriptPubKey.addresses">{{address}}</a>
|
||||||
|
@ -84,16 +83,6 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="text-center">
|
|
||||||
<a class="text-small" data-ng-click="outputsExpanded = !outputsExpanded">
|
|
||||||
<span data-ng-show="outputsExpanded">
|
|
||||||
<span class="glyphicon glyphicon-chevron-up"></span> Collapse Outputs
|
|
||||||
</span>
|
|
||||||
<span data-ng-show="!outputsExpanded">
|
|
||||||
<span class="glyphicon glyphicon-chevron-down"></span> Expand Outputs
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue