2020-03-05 16:13:46 +07:00
< div class = "container-xl" >
2020-02-16 22:15:07 +07:00
2020-02-19 23:50:23 +07:00
< div class = "title-block" >
2020-03-25 02:55:26 +07:00
< h1 class = "float-left mr-3 mb-md-3" > Transaction</ h1 >
2020-03-10 14:46:12 +07:00
< ng-template [ ngIf ]=" tx ?. status ?. confirmed " >
2020-03-25 02:55:26 +07:00
< button * ngIf = "latestBlock" type = "button" class = "btn btn-sm btn-success float-right mr-2 mt-1 mt-md-3" > {{ latestBlock.height - tx.status.block_height + 1 }} confirmation< ng-container * ngIf = "latestBlock.height - tx.status.block_height + 1 > 1" > s</ ng-container ></ button >
2020-02-23 05:23:24 +07:00
</ ng-template >
2020-03-10 14:46:12 +07:00
< ng-template [ ngIf ]=" tx && ! tx ?. status . confirmed " >
2020-03-25 02:55:26 +07:00
< button type = "button" class = "btn btn-sm btn-danger float-right mr-2 mt-1 mt-md-3" > Unconfirmed</ button >
2020-02-23 05:23:24 +07:00
</ ng-template >
2020-03-10 14:46:12 +07:00
< div >
2020-03-25 02:55:26 +07:00
< a [ routerLink ]="['/ tx /', txId ]" style = "line-height: 56px;" >
2020-03-10 14:46:12 +07:00
< span class = "d-inline d-lg-none" > {{ txId | shortenString : 24 }}</ span >
< span class = "d-none d-lg-inline" > {{ txId }}</ span >
</ a >
< app-clipboard [ text ]=" txId " ></ app-clipboard >
</ div >
2020-03-23 04:07:31 +07:00
< div class = "clearfix" ></ div >
2020-02-19 23:50:23 +07:00
</ div >
2020-03-25 02:55:26 +07:00
< div class = "clearfix" ></ div >
2020-02-16 22:15:07 +07:00
< ng-template [ ngIf ]="! isLoadingTx && ! error " >
< ng-template [ ngIf ]=" tx . status . confirmed " [ ngIfElse ]=" unconfirmedTemplate " >
< div class = "box" >
2020-03-23 04:07:31 +07:00
< div class = "row" >
< div class = "col-sm" >
< table class = "table table-borderless table-striped" >
< tbody >
< tr >
< td class = "td-width" > Included in block</ td >
< td >
< a [ routerLink ]="['/ block /', tx . status . block_hash ]" [ state ]="{ data: { blockHeight: tx . status . block_height } }" > {{ tx.status.block_height }}</ a >
< i > (< app-time-since [ time ]=" tx . status . block_time " [ fastRender ]=" true " ></ app-time-since > ago)</ i >
</ td >
</ tr >
< ng-template [ ngIf ]=" transactionTime > 0">
< tr >
< td > Confirmed</ td >
< td > After < app-timespan [ time ]=" tx . status . block_time - transactionTime " ></ app-timespan ></ td >
</ tr >
</ ng-template >
</ tbody >
</ table >
</ div >
< div class = "col-sm" >
< table class = "table table-borderless table-striped" >
< tbody >
< ng-template [ ngIf ]=" tx . fee " >
< tr >
< td class = "td-width" > Fee</ td >
2020-04-11 23:23:39 +07:00
< td > {{ tx.fee | number }} sat (< app-fiat [ value ]=" tx . fee " ></ app-fiat > )</ td >
2020-03-23 04:07:31 +07:00
</ tr >
< tr >
< td > Fee per vByte</ td >
< td >
2020-04-11 23:23:39 +07:00
{{ tx.fee / (tx.weight / 4) | number : '1.1-1' }} sat/vB
2020-03-23 04:07:31 +07:00
< span * ngIf = "feeRating === 1" class = "badge badge-success" > Optimal</ span >
< span * ngIf = "feeRating === 2" class = "badge badge-warning" title = "Only ~{{ medianFeeNeeded }} sat/vB was needed to get into this block" > Overpaid {{ overpaidTimes }}x</ span >
< span * ngIf = "feeRating === 3" class = "badge badge-danger" title = "Only ~{{ medianFeeNeeded }} sat/vB was needed to get into this block" > Overpaid {{ overpaidTimes }}x</ span >
</ td >
</ tr >
</ ng-template >
</ tbody >
</ table >
</ div >
</ div >
2020-02-16 22:15:07 +07:00
</ div >
< br >
</ ng-template >
< ng-template # unconfirmedTemplate >
< div class = "box" >
2020-03-23 04:07:31 +07:00
< div class = "row" >
< div class = "col-sm" >
< table class = "table table-borderless table-striped" >
< tbody >
< ng-template [ ngIf ]=" transactionTime !== 0 " >
< tr * ngIf = "transactionTime === -1; else firstSeenTmpl" >
< td >< span class = "skeleton-loader" ></ span ></ td >
< td >< span class = "skeleton-loader" ></ span ></ td >
</ tr >
< ng-template # firstSeenTmpl >
< tr >
< td > First seen</ td >
< td >< i >< app-time-since [ time ]=" transactionTime " [ fastRender ]=" true " ></ app-time-since > ago</ i ></ td >
</ tr >
</ ng-template >
</ ng-template >
2020-02-28 01:09:07 +07:00
< tr >
2020-03-23 04:07:31 +07:00
< td class = "td-width" > ETA</ td >
< td >
< ng-template [ ngIf ]=" txInBlockIndex = == undefined " [ ngIfElse ]=" estimationTmpl " >
< span class = "skeleton-loader" ></ span >
</ ng-template >
< ng-template # estimationTmpl >
2020-03-25 21:29:40 +07:00
< ng-template [ ngIf ]=" network = == ' liquid '" [ ngIfElse ]=" timeEstimateDefault " >
< {{ 1 * txInBlockIndex + 1 }} minutes < i > ({{ txInBlockIndex + 1 }} block{{ txInBlockIndex > 0 ? 's' : '' }})</ i >
</ ng-template >
< ng-template # timeEstimateDefault >
~{{ 10 * txInBlockIndex + 10 }} minutes < i > ({{ txInBlockIndex + 1 }} block{{ txInBlockIndex > 0 ? 's' : '' }})</ i >
</ ng-template >
2020-03-23 04:07:31 +07:00
</ ng-template >
</ td >
2020-02-28 01:09:07 +07:00
</ tr >
2020-03-23 04:07:31 +07:00
</ tbody >
</ table >
</ div >
< div class = "col-sm" >
< table class = "table table-borderless table-striped" >
< tbody >
< tr >
< td class = "td-width" > Fee</ td >
2020-04-11 23:23:39 +07:00
< td > {{ tx.fee | number }} sat (< app-fiat [ value ]=" tx . fee " ></ app-fiat > )</ td >
2020-03-23 04:07:31 +07:00
</ tr >
< tr >
< td > Fee per vByte</ td >
2020-04-11 23:23:39 +07:00
< td > {{ tx.fee / (tx.weight / 4) | number : '1.1-1' }} sat/vB</ td >
2020-03-23 04:07:31 +07:00
</ tr >
</ tbody >
</ table >
</ div >
</ div >
2020-02-16 22:15:07 +07:00
</ div >
</ ng-template >
< h2 > Inputs & Outputs</ h2 >
< app-transactions-list [ transactions ]="[ tx ]" [ transactionPage ]=" true " ></ app-transactions-list >
< h2 > Details</ h2 >
< div class = "box" >
2020-03-11 16:06:11 +07:00
< table class = "table table-borderless table-striped" >
< tbody >
< tr >
< td > Size</ td >
< td > {{ tx.size | bytes: 2 }}</ td >
</ tr >
< tr >
< td > Weight</ td >
< td > {{ tx.weight | wuBytes: 2 }}</ td >
</ tr >
</ tbody >
</ table >
</ div >
2020-02-16 22:15:07 +07:00
</ ng-template >
< ng-template [ ngIf ]=" isLoadingTx && ! error " >
2020-03-11 16:06:11 +07:00
< div class = "box" >
2020-03-23 04:07:31 +07:00
< div class = "row" >
< div class = "col-sm" >
< table class = "table table-borderless table-striped" >
< tbody >
< tr >
< td class = "td-width" >< span class = "skeleton-loader" ></ span ></ td >
< td >< span class = "skeleton-loader" ></ span ></ td >
</ tr >
< tr >
< td >< span class = "skeleton-loader" ></ span ></ td >
< td >< span class = "skeleton-loader" ></ span ></ td >
</ tr >
</ tbody >
</ table >
</ div >
< div class = "col-sm" >
< table class = "table table-borderless table-striped" >
< tbody >
< tr >
< td class = "td-width" >< span class = "skeleton-loader" ></ span ></ td >
< td >< span class = "skeleton-loader" ></ span ></ td >
</ tr >
< tr >
< td >< span class = "skeleton-loader" ></ span ></ td >
< td >< span class = "skeleton-loader" ></ span ></ td >
</ tr >
</ tbody >
</ table >
</ div >
</ div >
2020-03-11 16:06:11 +07:00
</ div >
< br >
< h2 > Inputs & Outputs</ h2 >
< div class = "box" >
< div class = "row" >
< table class = "table table-borderless table-striped" >
< tbody >
< tr >
< td >< span class = "skeleton-loader" ></ span ></ td >
< td >< span class = "skeleton-loader" ></ span ></ td >
</ tr >
</ tbody >
</ table >
</ div >
</ div >
< br >
< h2 > Details</ h2 >
2020-02-16 22:15:07 +07:00
< div class = "box" >
< table class = "table table-borderless table-striped" >
< tbody >
< tr >
< td >< span class = "skeleton-loader" ></ span ></ td >
< td >< span class = "skeleton-loader" ></ span ></ td >
</ tr >
< tr >
< td >< span class = "skeleton-loader" ></ span ></ td >
< td >< span class = "skeleton-loader" ></ span ></ td >
</ tr >
</ tbody >
</ table >
</ div >
</ ng-template >
< ng-template [ ngIf ]=" error " >
< div class = "text-center" >
Error loading transaction data.
< br >
< i > {{ error.error }}</ i >
</ div >
</ ng-template >
2020-03-05 16:13:46 +07:00
</ div >
2020-02-16 22:15:07 +07:00
< br >