2022-05-10 14:52:37 +02:00
< app-indexing-progress > < / app-indexing-progress >
2022-05-02 17:28:58 +09:00
2024-07-04 19:38:27 +09:00
< div class = "container-xl" * ngIf = "!error; else errorTemplate" >
2022-02-08 18:56:51 +09:00
2022-04-05 00:36:00 +09:00
<!-- Pool overview -->
2022-03-08 18:58:19 +01:00
< div * ngIf = "poolStats$ | async as poolStats; else loadingMain" >
2022-03-22 17:19:34 +09:00
< div style = "display:flex" class = "mb-3" >
2022-05-13 15:34:26 +02:00
< img width = "50" height = "50" src = "{{ poolStats['logo'] }}" [ alt ] = " poolStats . pool . name + ' mining pool logo ' "
2023-10-18 18:00:07 +00:00
onError="this.onerror=null; this.src = '/resources/mining-pools/default.svg'" class="mr-3">
2022-03-16 19:17:33 +01:00
< h1 class = "m-0 pt-1 pt-md-0" > {{ poolStats.pool.name }}< / h1 >
2022-03-16 17:00:06 +01:00
< / div >
2022-02-11 17:55:38 +09:00
2024-09-06 17:46:12 +00:00
< div class = "box pool-details" >
2022-02-09 19:41:05 +09:00
< div class = "row" >
2022-03-25 17:48:24 +09:00
2022-04-05 00:36:00 +09:00
< div class = "col-lg-6" >
< table class = "table table-borderless table-striped taller" style = "table-layout: fixed;" >
2022-02-09 19:41:05 +09:00
< tbody >
2022-03-25 17:48:24 +09:00
<!-- Regexes desktop -->
2022-04-05 00:36:00 +09:00
< tr * ngIf = "!isMobile()" class = "taller-row" >
2022-03-25 17:48:24 +09:00
< td class = "label" i18n = "mining.tags" > Tags< / td >
2022-04-05 00:36:00 +09:00
< td * ngIf = "poolStats.pool.regexes.length else nodata" style = "vertical-align: middle" >
< div class = "scrollable" > {{ poolStats.pool.regexes }}< / div >
2022-03-25 17:48:24 +09:00
< / td >
< / tr >
<!-- Regexes mobile -->
< tr * ngIf = "isMobile()" >
< td colspan = 2 >
2022-04-05 00:36:00 +09:00
< span class = "label" i18n = "mining.tags" > Tags< / span >
2022-03-30 16:11:18 +09:00
< div * ngIf = "poolStats.pool.regexes.length else nodatamobile" class = "overflow-auto" >
2022-03-09 16:30:45 +01:00
{{ poolStats.pool.regexes }}
< / div >
< / td >
< / tr >
2022-03-25 17:48:24 +09:00
<!-- Addresses desktop -->
2022-04-05 00:36:00 +09:00
< tr * ngIf = "!isMobile()" class = "taller-row" >
< td class = "label addresses" i18n = "mining.addresses" > Addresses< / td >
2023-03-16 16:35:59 +09:00
< td * ngIf = "poolStats.pool.addresses.length else nodata" style = "padding-top: 25px" >
2023-03-16 16:13:11 +09:00
< a class = "addresses-data" [ routerLink ] = " [ ' / address ' | relativeUrl , poolStats . pool . addresses [ 0 ] ] " >
2022-04-05 00:36:00 +09:00
{{ poolStats.pool.addresses[0] }}
< / a >
2022-04-06 15:02:24 +09:00
< div >
< div # collapse = "ngbCollapse" [ ( ngbCollapse ) ] = " gfg " >
2023-03-16 16:13:11 +09:00
< a class = "addresses-data" * ngFor = "let address of poolStats.pool.addresses | slice: 1"
2022-04-06 15:02:24 +09:00
[routerLink]="['/address' | relativeUrl, address]">{{
address }}< br > < / a >
< / div >
< button * ngIf = "poolStats.pool.addresses.length >= 2" type = "button"
class="btn btn-sm btn-primary small-button" (click)="collapse.toggle()"
[attr.aria-expanded]="!gfg" aria-controls="collapseExample">
< div * ngIf = "gfg" > < span i18n = "show-all" > Show all< / span > ({{ poolStats.pool.addresses.length }})
< / div >
< span * ngIf = "!gfg" i18n = "hide" > Hide< / span >
< / button >
2022-02-11 19:10:29 +09:00
< / div >
< / td >
2022-03-25 17:48:24 +09:00
< / tr >
<!-- Addresses mobile -->
< tr * ngIf = "isMobile()" >
< td colspan = 2 >
< span class = "label" i18n = "mining.addresses" > Addresses< / span >
< div * ngIf = "poolStats.pool.addresses.length else nodatamobile" >
< button * ngIf = "poolStats.pool.addresses.length >= 2" type = "button"
2022-04-06 15:02:24 +09:00
class="btn btn-sm btn-primary float-right small-button mobile" (click)="collapse.toggle()"
2022-03-25 17:48:24 +09:00
[attr.aria-expanded]="!gfg" aria-controls="collapseExample">
2022-03-29 10:52:50 +09:00
< span i18n = "show-all" > Show all< / span > ({{ poolStats.pool.addresses.length }})
2022-03-25 17:48:24 +09:00
< / button >
2023-03-16 16:13:11 +09:00
< a class = "addresses-data" [ routerLink ] = " [ ' / address ' | relativeUrl , poolStats . pool . addresses [ 0 ] ] " >
{{ poolStats.pool.addresses[0] | shortenString: 30 }}
2022-03-25 17:48:24 +09:00
< / a >
< div # collapse = "ngbCollapse" [ ( ngbCollapse ) ] = " gfg " style = "width: 100%" >
2023-03-16 16:13:11 +09:00
< a class = "addresses-data" * ngFor = "let address of poolStats.pool.addresses | slice: 1"
2022-03-25 17:48:24 +09:00
[routerLink]="['/address' | relativeUrl, address]">{{
2023-03-16 16:13:11 +09:00
address | shortenString: 30 }}< br > < / a >
2022-03-25 17:48:24 +09:00
< / div >
< / div >
< / td >
2022-02-09 19:41:05 +09:00
< / tr >
< / tbody >
< / table >
< / div >
2022-03-25 17:48:24 +09:00
2022-04-05 00:36:00 +09:00
< div class = "col-lg-6" >
2022-02-09 19:41:05 +09:00
< table class = "table table-borderless table-striped" >
< tbody >
2024-03-15 07:40:44 +00:00
<!-- Hashrate -->
< tr [ class . taller-row ] = " ! isMobile ( ) " >
< td [ class . data ] = " ! isMobile ( ) " [ attr . colspan ] = " isMobile ( ) ? 2 : 1 " >
2022-04-05 00:36:00 +09:00
< table class = "table table-xs table-data" >
< thead >
< tr >
2023-03-29 15:09:38 +09:00
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "mining.reward" > Reward< / th >
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "mining.hashrate" > Hashrate (24h)< / th >
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "latest-blocks.avg_health" * ngIf = "auditAvailable" > Avg Health< / th >
2022-04-05 00:36:00 +09:00
< / tr >
< / thead >
< tbody >
2024-06-26 10:48:17 +09:00
< td class = "text-center" > < app-amount [ satoshis ] = " poolStats . totalReward " digitsInfo = "1.0-0" [ noFiat ] = " true " [ ignoreViewMode ] = " true " > < / app-amount > < / td >
2023-03-16 16:13:11 +09:00
< td class = "text-center" > {{ poolStats.estimatedHashrate | amountShortener : 1 : 'H/s' }}< / td >
2023-03-21 16:02:46 +09:00
< td class = "text-center" * ngIf = "auditAvailable; else emptyTd" > < span class = "health-badge badge" [ class . badge-success ] = " poolStats . avgBlockHealth > = 99"
2023-03-16 16:13:11 +09:00
[class.badge-warning]="poolStats.avgBlockHealth >= 75 & & poolStats.avgBlockHealth < 99 " [ class . badge-danger ] = " poolStats . avgBlockHealth < 75 "
*ngIf="poolStats.avgBlockHealth != null; else nullHealth">{{ poolStats.avgBlockHealth }}%< / span >
< ng-template # nullHealth >
< span class = "health-badge badge badge-secondary" i18n = "unknown" > Unknown< / span >
< / ng-template >
< / td >
2022-04-05 00:36:00 +09:00
< / tbody >
< / table >
< / td >
2022-02-09 19:41:05 +09:00
< / tr >
2022-03-25 17:48:24 +09:00
2024-03-15 07:40:44 +00:00
<!-- Mined blocks -->
< tr [ class . taller-row ] = " ! isMobile ( ) " >
< td [ class . data ] = " ! isMobile ( ) " [ attr . colspan ] = " isMobile ( ) ? 2 : 1 " >
2022-04-05 00:36:00 +09:00
< table class = "table table-xs table-data" >
< thead >
< tr >
2023-11-25 20:31:29 +09:00
< th scope = "col" class = "data-title text-center" style = "width: 33%" i18n = "24h" > Blocks (24h)< / th >
2023-03-29 15:09:38 +09:00
< th scope = "col" class = "data-title text-center" style = "width: 33%" i18n = "1w" > 1w< / th >
< th scope = "col" class = "data-title text-center" style = "width: 33%" i18n = "all" > All< / th >
2022-04-05 00:36:00 +09:00
< / tr >
< / thead >
< tbody >
2023-03-16 16:13:11 +09:00
< td class = "text-center" > {{ formatNumber(poolStats.blockCount['24h'], this.locale, '1.0-0') }} ({{ formatNumber(100 *
2022-04-06 15:02:24 +09:00
poolStats.blockShare['24h'], this.locale, '1.0-0') }}%)< / td >
2023-03-16 16:13:11 +09:00
< td class = "text-center" > {{ formatNumber(poolStats.blockCount['1w'], this.locale, '1.0-0') }} ({{ formatNumber(100 *
2022-04-06 15:02:24 +09:00
poolStats.blockShare['1w'], this.locale, '1.0-0') }}%)< / td >
2023-03-16 16:13:11 +09:00
< td class = "text-center" > {{ formatNumber(poolStats.blockCount['all'], this.locale, '1.0-0') }} ({{ formatNumber(100 *
2022-04-06 15:02:24 +09:00
poolStats.blockShare['all'], this.locale, '1.0-0') }}%)< / td >
2022-04-05 00:36:00 +09:00
< / tbody >
< / table >
2022-03-25 17:48:24 +09:00
< / td >
< / tr >
2024-03-16 09:16:58 +00:00
<!-- Bid Boost -->
< tr [ class . taller-row ] = " ! isMobile ( ) " * ngIf = "(oobFees$ | async) as oob;" >
< td [ class . data ] = " ! isMobile ( ) " [ attr . colspan ] = " isMobile ( ) ? 2 : 1 " >
< table class = "table table-xs table-data" >
< thead >
< tr >
2024-03-17 08:00:51 +00:00
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "1w" > Out-of-band Fees (1w)< / th >
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "1m" > 1m< / th >
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "all" > All< / th >
2024-03-16 09:16:58 +00:00
< / tr >
< / thead >
< tbody >
2024-06-26 10:48:17 +09:00
< td * ngFor = "let total of oob" class = "text-center clip" > < app-amount [ satoshis ] = " total . cost " [ digitsInfo ] = " isMobile ( ) ? ' 1 . 2-4 ' : ' 1 . 8-8 ' " [ ignoreViewMode ] = " true " > < / app-amount > < / td >
2024-03-16 09:16:58 +00:00
< / tbody >
< / table >
< / td >
< / tr >
2022-02-09 19:41:05 +09:00
< / tbody >
< / table >
< / div >
2022-04-05 00:36:00 +09:00
2022-02-09 19:41:05 +09:00
< / div >
< / div >
< / div >
2022-03-25 17:48:24 +09:00
< ng-template # nodata >
2022-04-05 00:36:00 +09:00
< td class = "taller-row" style = "vertical-align: middle" > ~< / td >
2022-03-25 17:48:24 +09:00
< / ng-template >
< ng-template # nodatamobile >
< div > ~< / div >
< / ng-template >
2022-04-05 00:36:00 +09:00
<!-- Hashrate chart -->
2023-10-18 21:12:51 +00:00
< div class = "chart" * browserOnly echarts [ initOpts ] = " chartInitOptions " [ options ] = " chartOptions " > < / div >
2023-11-02 01:29:55 +00:00
< div class = "text-center loadingGraphs" * ngIf = "!stateService.isBrowser || isLoading" >
2022-03-08 12:50:47 +01:00
< div class = "spinner-border text-light" > < / div >
< / div >
2024-09-06 17:46:12 +00:00
<!-- Stratum Job -->
< ng-container * ngIf = "(job$ | async) as job;" >
< h2 i18n = "pool.next_block" > Next block< / h2 >
< div class = "box mb-3" >
< div class = "row" >
< div class = "col" >
< table class = "table table-borderless table-striped" >
< tbody >
< tr >
< td >
< table class = "job-table table table-xs table-borderless table-fixed table-data" >
< thead >
< tr >
< th class = "data-title clip text-center height" i18n = "latest-blocks.height" > Height< / th >
< th class = "data-title clip text-center expected" i18n = "next-block.expected-time" > Expected< / th >
< th class = "data-title clip text-center reward" i18n = "latest-blocks.reward" > Reward< / th >
< th class = "data-title clip text-center timestamp" i18n = "next-block.timestamp" > Timestamp< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td class = "text-center height" >
{{ job.height }}
< / td >
< td class = "text-center expected" >
< ng-container * ngIf = "(expectedBlockTime$ | async) as expectedBlockTime; else expectedPlaceholder" >
< app-time kind = "until" [ time ] = " expectedBlockTime " [ fastRender ] = " false " [ fixedRender ] = " true " [ precision ] = " 1 " minUnit = "minute" > < / app-time >
< / ng-container >
< ng-template # expectedPlaceholder > ~< / ng-template >
< / td >
< td class = "text-center reward" >
< app-amount [ satoshis ] = " job . reward " > < / app-amount >
< / td >
< td class = "text-center timestamp" >
< app-timestamp [ customFormat ] = " ' yyyy-MM-dd HH:mm:ss ' " [ unixTime ] = " job . timestamp " [ precision ] = " 1 " minUnit = "minute" [ hideTimeSince ] = " true " > < / app-timestamp >
< / td >
< / tr >
< / tbody >
< / table >
< / td >
< / tr >
< tr >
< td >
< table class = "job-table table table-xs table-borderless table-fixed table-data" >
< thead >
< tr >
< th class = "data-title clip text-center coinbase" i18n = "latest-blocks.coinbasetag" > Coinbase tag< / th >
< th class = "data-title clip text-center clean" i18n = "next-block.clean" > Clean< / th >
< th class = "data-title clip text-center prevhash" i18n = "next-block.prevhash" > Prevhash< / th >
< th class = "data-title clip text-center job-received" i18n = "next-block.job-received" > Job Received< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td class = "text-center coinbase" >
{{ job.scriptsig | hex2ascii }}
< / td >
< td class = "text-center clean" >
@if (job.cleanJobs) {
< fa-icon [ icon ] = " [ ' fas ' , ' check-circle ' ] " [ fixedWidth ] = " true " > < / fa-icon >
} @else {
< fa-icon [ icon ] = " [ ' fas ' , ' times-circle ' ] " [ fixedWidth ] = " true " > < / fa-icon >
}
< / td >
< td class = "text-center prevhash" >
< a [ routerLink ] = " [ ' / block ' | relativeUrl , job . prevHash ] " >
< app-truncate [ text ] = " job . prevHash " [ lastChars ] = " 8 " > < / app-truncate >
< / a >
< / td >
< td class = "text-center job-received" >
< app-timestamp [ customFormat ] = " ' yyyy-MM-dd HH:mm:ss ' " [ unixTime ] = " job . received / 1000 " [ precision ] = " 1 " minUnit = "minute" [ hideTimeSince ] = " true " > < / app-timestamp >
< / td >
< / tr >
< / tbody >
< / table >
< / td >
< / tr >
< tr >
< td >
< table class = "stratum-table" >
< thead >
< tr >
< th class = "data-title clip text-center" [ attr . colspan ] = " Math . max ( job . merkleBranches . length , 12 ) " >
< a class = "title-link" href = "" [ routerLink ] = " [ ' / stratum ' | relativeUrl ] " >
Merkle Branches
< span > < / span >
< fa-icon [ icon ] = " [ ' fas ' , ' external-link-alt ' ] " [ fixedWidth ] = " true " style = "vertical-align: text-top; font-size: 13px; color: var(--title-fg)" > < / fa-icon >
< / a >
< / th >
< / tr >
< / thead >
< tbody >
< tr >
@for (branch of job.merkleBranches; track $index) {
< td class = "merkle" [ style . background-color ] = " branch ? ' # ' + branch . slice ( 0 , 6 ) : ' ' " > < / td >
}
@for (_ of [].constructor(Math.max(0, 12 - job.merkleBranches.length)); track $index) {
< td class = "merkle empty-branch" > < / td >
}
< / tr >
< / tbody >
< / table >
< / td >
< / tr >
< / tbody >
< / table >
< / div >
< / div >
< / div >
< / ng-container >
2022-04-05 00:36:00 +09:00
<!-- Blocks list -->
2024-09-06 17:46:12 +00:00
< h2 i18n = "master-page.blocks" > Blocks< / h2 >
2022-03-25 17:48:24 +09:00
< table class = "table table-borderless" [ alwaysCallback ] = " true " infiniteScroll [ infiniteScrollDistance ] = " 1 . 5 "
[infiniteScrollUpDistance]="1.5" [infiniteScrollThrottle]="50" (scrolled)="loadMore()">
2022-04-05 00:36:00 +09:00
< ng-container * ngIf = "blocks$ | async as blocks; else skeleton" >
< thead * ngIf = "blocks.length > 0" >
< th class = "height" i18n = "latest-blocks.height" > Height< / th >
< th class = "timestamp" i18n = "latest-blocks.timestamp" > Timestamp< / th >
< th class = "mined" i18n = "latest-blocks.mined" > Mined< / th >
2022-05-10 17:05:07 +04:00
< th class = "coinbase text-left" i18n = "latest-blocks.coinbasetag" > Coinbase tag< / th >
2023-03-16 16:13:11 +09:00
< th * ngIf = "auditAvailable" class = "health text-right" i18n = "latest-blocks.health" > Health< / th >
2022-05-10 17:05:07 +04:00
< th class = "reward text-right" i18n = "latest-blocks.reward" > Reward< / th >
2023-03-16 16:13:11 +09:00
< th * ngIf = "!auditAvailable" class = "fees text-right" i18n = "latest-blocks.fees" > Fees< / th >
2022-05-10 17:05:07 +04:00
< th class = "txs text-right" i18n = "dashboard.txs" > TXs< / th >
2022-04-05 00:36:00 +09:00
< th class = "size" i18n = "latest-blocks.size" > Size< / th >
< / thead >
< tbody [ style ] = " isLoading ? ' opacity: 0 . 75 ' : ' ' " >
< tr * ngFor = "let block of blocks; let i= index; trackBy: trackByBlock" >
< td class = "height" >
2022-05-27 20:43:14 +02:00
< a [ routerLink ] = " [ ' / block ' | relativeUrl , block . id ] " > {{ block.height }}< / a >
2022-04-05 00:36:00 +09:00
< / td >
< td class = "timestamp" >
2024-11-13 14:43:04 +01:00
< app-timestamp [ customFormat ] = " ' yyyy-MM-dd HH:mm:ss ' " [ unixTime ] = " block . timestamp " [ hideTimeSince ] = " true " > < / app-timestamp >
2022-04-05 00:36:00 +09:00
< / td >
< td class = "mined" >
2024-06-08 23:28:44 +00:00
< app-time kind = "since" [ time ] = " block . timestamp " [ fastRender ] = " true " [ showTooltip ] = " true " > < / app-time >
2022-04-05 00:36:00 +09:00
< / td >
< td class = "coinbase" >
< span class = "badge badge-secondary scriptmessage longer" >
{{ block.extras.coinbaseRaw | hex2ascii }}
< / span >
< / td >
2023-03-16 16:13:11 +09:00
< td * ngIf = "auditAvailable" class = "health text-right" >
< a
class="health-badge badge"
[class.badge-success]="block.extras.matchRate >= 99"
[class.badge-warning]="block.extras.matchRate >= 75 & & block.extras.matchRate < 99 "
[class.badge-danger]="block.extras.matchRate < 75 "
[routerLink]="block.extras.matchRate != null ? ['/block/' | relativeUrl, block.id] : null"
[state]="{ data: { block: block } }"
*ngIf="block.extras.matchRate != null; else nullHealth"
>{{ block.extras.matchRate }}%< / a >
< ng-template # nullHealth >
< span class = "health-badge badge badge-secondary" i18n = "unknown" > Unknown< / span >
< / ng-template >
< / td >
2022-04-05 00:36:00 +09:00
< td class = "reward text-right" >
2024-06-26 10:48:17 +09:00
< app-amount [ satoshis ] = " block . extras . reward " digitsInfo = "1.2-2" [ noFiat ] = " true " [ ignoreViewMode ] = " true " > < / app-amount >
2022-04-05 00:36:00 +09:00
< / td >
2023-03-16 16:13:11 +09:00
< td * ngIf = "!auditAvailable" class = "fees text-right" >
2024-06-26 10:48:17 +09:00
< app-amount [ satoshis ] = " block . extras . totalFees " digitsInfo = "1.2-2" [ noFiat ] = " true " [ ignoreViewMode ] = " true " > < / app-amount >
2022-04-05 00:36:00 +09:00
< / td >
< td class = "txs text-right" >
{{ block.tx_count | number }}
< / td >
< td class = "size" >
< div class = "progress" >
< div class = "progress-bar progress-mempool" role = "progressbar"
[ngStyle]="{'width': (block.weight / stateService.env.BLOCK_WEIGHT_UNITS)*100 + '%' }">< / div >
< div class = "progress-text" [ innerHTML ] = " block . size | bytes: 2 " > < / div >
< / div >
< / td >
< / tr >
< / tbody >
< / ng-container >
2022-03-16 17:00:06 +01:00
< ng-template # skeleton >
2022-04-05 00:36:00 +09:00
< thead >
< th class = "height" i18n = "latest-blocks.height" > Height< / th >
< th class = "timestamp" i18n = "latest-blocks.timestamp" > Timestamp< / th >
< th class = "mined" i18n = "latest-blocks.mined" > Mined< / th >
2022-05-10 17:05:07 +04:00
< th class = "coinbase text-left" i18n = "latest-blocks.coinbasetag" > Coinbase tag< / th >
< th class = "reward text-right" i18n = "latest-blocks.reward" > Reward< / th >
2022-04-05 00:36:00 +09:00
< th class = "fees text-right" i18n = "latest-blocks.fees" > Fees< / th >
2022-05-10 17:05:07 +04:00
< th class = "txs text-right" i18n = "dashboard.txs" > TXs< / th >
2022-04-05 00:36:00 +09:00
< th class = "size" i18n = "latest-blocks.size" > Size< / th >
< / thead >
2022-03-16 17:00:06 +01:00
< tbody >
2022-03-22 17:19:34 +09:00
< tr * ngFor = "let item of [1,2,3,4,5]" >
2022-03-16 17:00:06 +01:00
< td class = "height" >
< span class = "skeleton-loader" > < / span >
< / td >
< td class = "timestamp" >
< span class = "skeleton-loader" > < / span >
< / td >
< td class = "mined" >
< span class = "skeleton-loader" > < / span >
< / td >
2022-03-16 20:10:01 +01:00
< td class = "coinbase" >
< span class = "skeleton-loader" > < / span >
< / td >
2022-03-16 17:00:06 +01:00
< td class = "reward text-right" >
< span class = "skeleton-loader" > < / span >
< / td >
< td class = "fees text-right" >
< span class = "skeleton-loader" > < / span >
< / td >
< td class = "txs text-right" >
< span class = "skeleton-loader" > < / span >
< / td >
2022-03-16 20:10:01 +01:00
< td class = "size text-right" >
2022-03-16 17:00:06 +01:00
< span class = "skeleton-loader" > < / span >
< / td >
< / tr >
< / tbody >
< / ng-template >
2022-02-09 19:41:05 +09:00
< / table >
2022-02-08 18:56:51 +09:00
2022-03-08 18:58:19 +01:00
< / div >
2022-04-05 00:36:00 +09:00
<!-- Main table skeleton -->
2022-03-08 18:58:19 +01:00
< ng-template # loadingMain >
< div >
2022-03-22 17:19:34 +09:00
< div class = "mb-3" style = "display:flex; position: relative" >
< div class = "skeleton-loader mr-3" style = "width: 50px; height: 50px" > < / div >
2022-03-25 17:48:24 +09:00
< h1 class = "m-0 pt-1 pt-md-0" >
< div class = "skeleton-loader" style = "position: absolute; top: 32%; width: 150px; height: 20px" > < / div >
< / h1 >
2022-03-16 20:10:01 +01:00
< / div >
2022-03-08 18:58:19 +01:00
< div class = "box" >
< div class = "row" >
2022-04-05 00:36:00 +09:00
< div class = "col-lg-6" >
< table class = "table table-borderless table-striped taller" style = "table-layout: fixed;" >
2022-03-08 18:58:19 +01:00
< tbody >
2022-03-29 10:52:50 +09:00
<!-- Regexes desktop -->
2022-04-05 00:36:00 +09:00
< tr * ngIf = "!isMobile()" class = "taller-row" >
2022-03-29 10:52:50 +09:00
< td class = "label" i18n = "mining.tags" > Tags< / td >
2022-04-05 00:36:00 +09:00
< td style = "vertical-align: middle" >
2022-03-16 20:10:01 +01:00
< div class = "skeleton-loader" > < / div >
< / td >
< / tr >
2022-03-29 10:52:50 +09:00
<!-- Regexes mobile -->
< tr * ngIf = "isMobile()" >
< td colspan = 2 >
< span class = "label" i18n = "mining.tags" > Tags< / span >
< div class = "overflow-auto" >
2022-03-08 18:58:19 +01:00
< div class = "skeleton-loader" > < / div >
< / div >
< / td >
2022-03-29 10:52:50 +09:00
< / tr >
<!-- Addresses desktop -->
2022-04-05 00:36:00 +09:00
< tr * ngIf = "!isMobile()" class = "taller-row" >
2022-03-29 10:52:50 +09:00
< td class = "label" i18n = "mining.addresses" > Addresses< / td >
2022-04-05 00:36:00 +09:00
< td style = "vertical-align: middle;" >
2022-03-29 10:52:50 +09:00
< div class = "skeleton-loader" > < / div >
2022-04-05 00:36:00 +09:00
< div # collapse = "ngbCollapse" [ ( ngbCollapse ) ] = " gfg " >
< div class = "skeleton-loader" > < / div >
< / div >
2022-03-29 10:52:50 +09:00
< / td >
2022-03-08 18:58:19 +01:00
< / tr >
2022-03-29 10:52:50 +09:00
<!-- Addresses mobile -->
< tr * ngIf = "isMobile()" >
< td colspan = 2 >
< span class = "label" i18n = "mining.addresses" > Addresses< / span >
< div >
< div class = "skeleton-loader" > < / div >
2022-04-05 00:36:00 +09:00
< div # collapse = "ngbCollapse" [ ( ngbCollapse ) ] = " gfg " style = "width: 100%" >
< div class = "skeleton-loader" > < / div >
< / div >
2022-03-29 10:52:50 +09:00
< / div >
< / td >
< / tr >
2022-03-08 18:58:19 +01:00
< / tbody >
< / table >
< / div >
2022-03-29 10:52:50 +09:00
2022-04-05 00:36:00 +09:00
< div class = "col-lg-6" >
2022-03-25 17:48:24 +09:00
< table class = "table table-borderless table-striped" >
2022-03-08 18:58:19 +01:00
< tbody >
2022-03-29 10:52:50 +09:00
2022-04-05 00:36:00 +09:00
<!-- Hashrate desktop -->
< tr * ngIf = "!isMobile()" class = "taller-row" >
2022-03-29 10:52:50 +09:00
< td class = "data" >
2022-04-05 00:36:00 +09:00
< table class = "table table-xs table-data text-center" >
< thead >
< tr >
2023-03-29 15:09:38 +09:00
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "mining.total-reward" > Reward< / th >
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "mining.estimated" > Hashrate (24h)< / th >
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "mining.luck" * ngIf = "auditAvailable" > Avg Health< / th >
2022-04-05 00:36:00 +09:00
< / tr >
< / thead >
< tbody >
2023-03-16 16:35:59 +09:00
< td class = "text-center" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
2023-03-16 16:35:59 +09:00
< td class = "text-center" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
2023-03-21 16:02:46 +09:00
< td class = "text-center" * ngIf = "auditAvailable" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
< / tbody >
< / table >
2022-03-09 16:30:45 +01:00
< / td >
2022-03-08 18:58:19 +01:00
< / tr >
2022-04-05 00:36:00 +09:00
<!-- Hashrate mobile -->
2022-03-29 10:52:50 +09:00
< tr * ngIf = "isMobile()" >
2022-04-05 00:36:00 +09:00
< td colspan = "2" >
< table class = "table table-xs table-data text-center" >
< thead >
< tr >
2023-03-29 15:09:38 +09:00
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "mining.total-reward" > Reward< / th >
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "mining.estimated" > Hashrate (24h)< / th >
< th scope = "col" class = "data-title clip text-center" style = "width: 33%" i18n = "mining.luck" * ngIf = "auditAvailable" > Avg Health< / th >
2022-04-05 00:36:00 +09:00
< / tr >
< / thead >
< tbody >
2023-03-16 16:35:59 +09:00
< td class = "text-center" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
2023-03-16 16:35:59 +09:00
< td class = "text-center" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
2023-03-21 16:02:46 +09:00
< td class = "text-center" * ngIf = "auditAvailable" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
< / tbody >
< / table >
2022-03-29 10:52:50 +09:00
< / td >
< / tr >
2022-04-05 00:36:00 +09:00
<!-- Mined blocks desktop -->
< tr * ngIf = "!isMobile()" class = "taller-row" >
2022-03-29 10:52:50 +09:00
< td class = "data" >
2022-04-05 00:36:00 +09:00
< table class = "table table-xs table-data text-center" >
< thead >
< tr >
2023-11-25 20:31:29 +09:00
< th scope = "col" class = "data-title text-center" style = "width: 33%" i18n = "24h" > Blocks (24h)< / th >
2023-03-29 15:09:38 +09:00
< th scope = "col" class = "data-title text-center" style = "width: 33%" i18n = "1w" > 1w< / th >
< th scope = "col" class = "data-title text-center" style = "width: 33%" i18n = "all" > All< / th >
2022-04-05 00:36:00 +09:00
< / tr >
< / thead >
< tbody >
2023-03-16 16:35:59 +09:00
< td class = "text-center" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
2023-03-16 16:35:59 +09:00
< td class = "text-center" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
2023-03-16 16:35:59 +09:00
< td class = "text-center" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
< / tbody >
< / table >
2022-03-09 16:30:45 +01:00
< / td >
2022-03-08 18:58:19 +01:00
< / tr >
2022-04-05 00:36:00 +09:00
<!-- Mined blocks mobile -->
2022-03-29 10:52:50 +09:00
< tr * ngIf = "isMobile()" >
2022-04-05 00:36:00 +09:00
< td colspan = 2 >
< table class = "table table-xs table-data text-center" >
< thead >
< tr >
2023-11-25 20:31:29 +09:00
< th scope = "col" class = "data-title text-center" style = "width: 33%" i18n = "24h" > Blocks (24h)< / th >
2023-03-29 15:09:38 +09:00
< th scope = "col" class = "data-title text-center" style = "width: 33%" i18n = "1w" > 1w< / th >
< th scope = "col" class = "data-title text-center" style = "width: 33%" i18n = "all" > All< / th >
2022-04-05 00:36:00 +09:00
< / tr >
< / thead >
< tbody >
2023-03-16 16:35:59 +09:00
< td class = "text-center" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
2023-03-16 16:35:59 +09:00
< td class = "text-center" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
2023-03-16 16:35:59 +09:00
< td class = "text-center" >
2022-04-05 00:36:00 +09:00
< div class = "skeleton-loader data" > < / div >
< / td >
< / tbody >
< / table >
2022-03-29 10:52:50 +09:00
< / td >
< / tr >
2022-03-08 18:58:19 +01:00
< / tbody >
< / table >
< / div >
2022-04-05 00:36:00 +09:00
2022-03-08 18:58:19 +01:00
< / div >
< / div >
< / div >
2023-03-21 16:02:46 +09:00
< / ng-template >
< ng-template # emptyTd >
< td class = "text-center" > < / td >
2024-07-04 19:38:27 +09:00
< / ng-template >
< ng-template # errorTemplate >
< br >
< app-http-error [ error ] = " error " >
< span i18n = "pool.error.loading-pool-data" > Error loading pool data.< / span >
< / app-http-error >
2022-03-08 18:58:19 +01:00
< / ng-template >