182 lines
10 KiB
HTML
182 lines
10 KiB
HTML
<div class="line-bot row ng-cloak" data-ng-hide="!tx" data-ng-cloak>
|
|
<div class="col-xs-12 col-md-6">
|
|
<button class="btn-expand pull-left" data-ng-click="itemsExpanded = !itemsExpanded"><span class="glyphicon glyphicon-plus" data-ng-class="{'glyphicon-minus': itemsExpanded}" tooltip="Show/Hide items details" tooltip-placement="right"></span></button>
|
|
<button class="btn-copy pull-right" clip-copy="tx.txid"></button>
|
|
<div class="ellipsis">
|
|
<a class="txid" href="/tx/{{tx.txid}}">{{tx.txid}}</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xs-12 col-md-6 text-right" data-ng-show="tx.firstSeenTs">
|
|
first seen at
|
|
<time>{{tx.firstSeenTs * 1000 | date:'medium'}}</time>
|
|
</div>
|
|
<div class="col-xs-12 col-md-6 text-right" data-ng-show="tx.time && !tx.firstSeenTs">
|
|
mined at
|
|
<time>{{tx.time * 1000 | date:'medium'}}</time>
|
|
</div>
|
|
</div>
|
|
<div class="row line-mid">
|
|
<div class="col-md-5">
|
|
<div class="row" data-ng-if="tx.isCoinBase">
|
|
<div class="col-md-12 transaction-vin-vout" data-ng-repeat="vin in tx.vin">
|
|
<div class="ellipsis">
|
|
<span>No Inputs (Newly Generated Coins)</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row" data-ng-if="!tx.isCoinBase">
|
|
|
|
<!-- Simple view -->
|
|
<div data-ng-if="!itemsExpanded" data-ng-init="currentInNoExpanded=0; sizeInNoExpanded=5">
|
|
<div data-ng-repeat="vin in tx.vinSimple| startFrom:currentInNoExpanded*sizeInNoExpanded | limitTo:sizeInNoExpanded">
|
|
<div class="col-md-12 transaction-vin-vout">
|
|
<div class="text-muted pull-right btc-value" data-ng-class="{'text-danger': $root.currentAddr == vin.addr}"><small>{{$root.currency.getConvertion(vin.value)}}</small></div>
|
|
<div class="ellipsis">
|
|
<span data-ng-show="vin.notAddr">{{vin.addr}}</span>
|
|
<span class="text-muted" title="Current Bitcoin Address" data-ng-show="vin.addr == $root.currentAddr">{{vin.addr}}</span>
|
|
<a href="/address/{{vin.addr}}" data-ng-show="!vin.notAddr && vin.addr != $root.currentAddr">{{vin.addr}}</a>
|
|
</div>
|
|
<div data-ng-show="vin.unconfirmedInput" class="text-danger"> <span class="glyphicon glyphicon-warning-sign"></span> (Input unconfirmed)</div>
|
|
<div data-ng-show="vin.dbError" class="text-danger"> <span class="glyphicon glyphicon-warning-sign"></span> Incoherence in levelDB detected, please resync</div>
|
|
<div data-ng-show="vin.doubleSpentTxID" class="text-danger"> <span class="glyphicon glyphicon-warning-sign"></span> Double spent attempt detected. From tx:
|
|
<a href="/tx/{{vin.doubleSpentTxID}}">{{vin.doubleSpentTxID}},{{vin.doubleSpentIndex}}</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="showmore_collapse text-center" data-ng-show="tx.vinSimple.length > 5" data-ng-class="{ 'hidden': itemsExpanded}">
|
|
<a href="#" ng-hide="sizeInNoExpanded != tx.vinSimple.length" ng-click="currentInNoExpanded=0; sizeInNoExpanded=5">...less</a>
|
|
<a href="#" ng-hide="currentInNoExpanded >= tx.vinSimple.length/sizeInNoExpanded - 1" ng-click="currentInNoExpanded=0; sizeInNoExpanded=tx.vinSimple.length">more...</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Full view -->
|
|
<div data-ng-if="itemsExpanded" data-ng-init="currentInExpanded=0; sizeInExpanded=5">
|
|
<div data-ng-repeat="vin in tx.vin| startFrom:currentInExpanded*sizeInExpanded | limitTo:sizeInExpanded">
|
|
<div class="col-md-12 transaction-vin-vout">
|
|
<div class="text-muted pull-right btc-value"><small>{{$root.currency.getConvertion(vin.value)}}</small></div>
|
|
<div class="ellipsis">
|
|
<a class="glyphicon glyphicon-chevron-right" href="/tx/{{vin.txid}}" title="Outpoint: {{vin.txid}},{{vin.vout}}"></a>
|
|
<span data-ng-show="vin.notAddr">{{vin.addr}}</span>
|
|
<a href="/address/{{vin.addr}}" data-ng-show="!vin.notAddr">{{vin.addr}}</a>
|
|
</div>
|
|
<div data-ng-show="vin.unconfirmedInput" class="text-danger"> <span class="glyphicon glyphicon-warning-sign"></span> (Input unconfirmed)</div>
|
|
<div data-ng-show="vin.dbError" class="text-danger"> <span class="glyphicon glyphicon-warning-sign"></span> Incoherence in levelDB detected, please resync</div>
|
|
<div data-ng-show="vin.doubleSpentTxID" class="text-danger"> <span class="glyphicon glyphicon-warning-sign"></span> Double spent attempt detected. From tx:
|
|
<a href="/tx/{{vin.doubleSpentTxID}}">{{vin.doubleSpentTxID}},{{vin.doubleSpentIndex}}</a>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="col-md-12">
|
|
<div class="panel panel-default">
|
|
<div class="panel-body" style="word-wrap:break-word">
|
|
<small>
|
|
<strong>scriptSig</strong>
|
|
{{vin.scriptSig.asm}}
|
|
</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="showmore_collapse text-center" data-ng-show="tx.vin.length > 5" data-ng-class="{ 'hidden': !itemsExpanded}">
|
|
<a href="#" ng-hide="sizeInExpanded != tx.vin.length" ng-click="currentInExpanded=0; sizeInExpanded=5">...less</a>
|
|
<a href="#" ng-hide="currentInExpanded >= tx.vin.length/sizeInExpanded - 1" ng-click="currentInExpanded=0; sizeInExpanded=tx.vin.length">more...</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-1 text-center hidden-xs hidden-sm">
|
|
<span class="glyphicon glyphicon-chevron-right text-primary"></span>
|
|
</div>
|
|
<div class="col-xs-12 text-center hidden-md hidden-lg">
|
|
<span class="glyphicon glyphicon-chevron-down text-primary"></span>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="row">
|
|
|
|
<!-- Simple view -->
|
|
<div data-ng-if="!itemsExpanded" data-ng-init="currentOutNoExpanded=0; sizeOutNoExpanded=5">
|
|
<div data-ng-repeat="vout in tx.voutSimple| startFrom:currentOutNoExpanded*sizeOutNoExpanded | limitTo:sizeOutNoExpanded">
|
|
<div class="col-md-12 transaction-vin-vout">
|
|
<div class="text-muted pull-right btc-value" data-ng-class="{'text-success': $root.currentAddr == vout.addr}">
|
|
|
|
<small>
|
|
{{$root.currency.getConvertion(vout.value)}}
|
|
<span class="text-danger" data-ng-show="vout.isSpent" tooltip="Output is spent" tooltip-placement="left">(S)</span>
|
|
<span class="text-success" data-ng-show="!vout.isSpent" tooltip="Output is unspent" tooltip-placement="left">(U)</span>
|
|
</small>
|
|
</div>
|
|
|
|
<div class="ellipsis">
|
|
<span data-ng-show="vout.notAddr">{{vout.addr}}</span>
|
|
<span class="text-muted" title="Current Bitcoin Address" data-ng-show="address == $root.currentAddr" data-ng-repeat="address in vout.addr.split(',')">{{vout.addr}}</span>
|
|
<a href="/address/{{address}}" data-ng-show="!vout.notAddr && address != $root.currentAddr" data-ng-repeat="address in vout.addr.split(',')">{{address}}</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="showmore_collapse text-center" data-ng-show="tx.voutSimple.length > 5" data-ng-class="{ 'hidden': itemsExpanded}">
|
|
<a href="#" ng-hide="sizeOutNoExpanded != tx.voutSimple.length" ng-click="currentOutNoExpanded=0; sizeOutNoExpanded=5">...less</a>
|
|
<a href="#" ng-hide="currentOutNoExpanded >= tx.voutSimple.length/sizeOutNoExpanded - 1" ng-click="currentOutNoExpanded=0; sizeOutNoExpanded=tx.voutSimple.length">more...</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Full view -->
|
|
<div data-ng-if="itemsExpanded" data-ng-init="currentOutExpanded=0; sizeOutExpanded=5">
|
|
<div data-ng-repeat="vout in tx.vout| startFrom:currentOutExpanded*sizeOutExpanded | limitTo:sizeOutExpanded">
|
|
<div class="col-md-12 transaction-vin-vout">
|
|
<div class="text-muted pull-right btc-value">
|
|
<small>{{$root.currency.getConvertion(vout.value)}}
|
|
<span class="text-success" data-ng-show="!vout.spendTxId" tooltip="Output is unspent" tooltip-placement="left">(U)</span>
|
|
<a class="glyphicon glyphicon-chevron-right" data-ng-show="vout.spendTxId" href="/tx/{{vout.spendTxId}}" title="Spent at: {{vout.spendTxId}},{{vout.spendIndex}}"></a>
|
|
</small>
|
|
</div>
|
|
<div class="ellipsis">
|
|
<a href="/address/{{address}}" data-ng-repeat="address in vout.scriptPubKey.addresses">{{address}}</a>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-12">
|
|
<div class="panel panel-default">
|
|
<div class="panel-body" style="word-wrap:break-word">
|
|
<small>
|
|
<p>
|
|
<strong>Type</strong>
|
|
{{vout.scriptPubKey.type}}
|
|
</p>
|
|
<p>
|
|
<strong>scriptPubKey</strong>
|
|
{{vout.scriptPubKey.asm}}
|
|
</p>
|
|
</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="showmore_collapse text-center" data-ng-show="tx.vout.length > 5" data-ng-class="{ 'hidden': !itemsExpanded}">
|
|
<a href="#" ng-hide="sizeOutExpanded != tx.vout.length" ng-click="currentOutExpanded=0; sizeOutExpanded=5">...less</a>
|
|
<a href="#" ng-hide="currentOutExpanded >= tx.vout.length/sizeOutExpanded - 1" ng-click="currentOutExpanded=0; sizeOutExpanded=tx.vout.length">more...</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default" data-ng-class="{ 'hidden': !itemsExpanded && !tx.blockhash}">
|
|
<div class="panel-body" style="word-wrap:break-word">
|
|
<small>
|
|
<strong>BlockHash</strong>
|
|
<a href="/block/{{tx.blockhash}}">{{tx.blockhash}}</a>
|
|
<button class="btn-copy" clip-copy="tx.blockhash"></button>
|
|
</small>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="line-top row ng-cloak" data-ng-hide="!tx" data-ng-cloak>
|
|
<div class="col-xs-12 col-sm-4 col-md-4">
|
|
<span data-ng-show="!tx.isCoinBase && !isNaN(parseFloat(tx.fees))" class="txvalues txvalues-default">Fees: {{$root.currency.getConvertion(tx.fees)}} </span>
|
|
</div>
|
|
<div class="col-xs-12 col-sm-8 col-md-8 text-right">
|
|
<span data-ng-show="tx.confirmations" class="txvalues txvalues-success">{{tx.confirmations}} Confirmations</span>
|
|
<span data-ng-show="!tx.confirmations" class="txvalues txvalues-danger">Unconfirmed Transaction!</span>
|
|
<span class="txvalues txvalues-primary">{{$root.currency.getConvertion(tx.valueOut)}}</span>
|
|
</div>
|
|
</div>
|