2022-05-10 14:57:43 +02:00
< app-indexing-progress * ngIf = "!widget" ></ app-indexing-progress >
2022-05-02 17:28:58 +09:00
2022-03-14 18:06:54 +01:00
< div [ class ]=" widget = == false ? ' full-container ' : ''" >
2022-01-17 15:34:34 +09:00
2022-03-07 19:54:17 +01:00
< div * ngIf = "widget" >
< div class = "pool-distribution" * ngIf = "(miningStatsObservable$ | async) as miningStats; else loadingReward" >
< div class = "item" >
2022-06-11 00:04:19 +02:00
< h5 class = "card-title d-inline-block" i18n = "mining.miners-luck" i18n-ngbTooltip = "mining.miners-luck-1w"
ngbTooltip = "Pools luck (1 week)" placement = "bottom" # minersluck [ disableTooltip ]="! isEllipsisActive ( minersluck )" > Pools luck</ h5 >
< p class = "card-text" i18n-ngbTooltip = "mining.pools-luck-desc"
ngbTooltip = "The overall luck of all mining pools over the past week. A luck bigger than 100% means the average block time for the current epoch is less than 10 minutes." placement = "bottom" >
2022-03-07 19:54:17 +01:00
{{ miningStats['minersLuck'] }}%
</ p >
</ div >
< div class = "item" >
2022-06-11 00:04:19 +02:00
< h5 class = "card-title d-inline-block" i18n = "mining.miners-count" i18n-ngbTooltip = "mining.miners-count-1w"
ngbTooltip = "Pools count (1w)" placement = "bottom" # poolscount [ disableTooltip ]="! isEllipsisActive ( poolscount )" > Pools count</ h5 >
< p class = "card-text" i18n-ngbTooltip = "mining.pools-count-desc"
ngbTooltip = "How many unique pools found at least one block over the past week." placement = "bottom" >
{{ miningStats.pools.length }}
2022-03-07 19:54:17 +01:00
</ p >
</ div >
< div class = "item" >
2022-06-11 00:04:19 +02:00
< h5 class = "card-title d-inline-block" i18n = "master-page.blocks" i18n-ngbTooltip = "master-page.blocks"
ngbTooltip = "Blocks (1w)" placement = "bottom" # blockscount [ disableTooltip ]="! isEllipsisActive ( blockscount )" > Blocks (1w)</ h5 >
< p class = "card-text" i18n-ngbTooltip = "mining.blocks-count-desc"
ngbTooltip = "The number of blocks found over the past week." placement = "bottom" >
{{ miningStats.blockCount }}
2022-03-07 19:54:17 +01:00
</ p >
</ div >
2022-03-05 18:47:21 +01:00
</ div >
</ div >
2022-03-14 18:06:54 +01:00
< div class = "card-header" * ngIf = "!widget" >
2022-07-16 21:37:45 +02:00
< div class = "d-flex d-md-block align-items-baseline" >
< span i18n = "mining.pools" > Pools Ranking</ span >
< button class = "btn p-0 pl-2" style = "margin: 0 0 4px 0px" ( click )=" onSaveChart ()" >
< fa-icon [ icon ]="[' fas ', ' download ']" [ fixedWidth ]=" true " ></ fa-icon >
</ button >
</ div >
2022-03-14 18:06:54 +01:00
< form [ formGroup ]=" radioGroupForm " class = "formRadioGroup"
2022-04-15 20:43:10 +09:00
* ngIf = "!widget && (miningStatsObservable$ | async) as stats" >
2022-11-28 16:00:50 +09:00
< div class = "btn-group btn-group-toggle" name = "radioBasic" >
< label class = "btn btn-primary btn-sm" * ngIf = "stats.totalBlockCount >= 144" [ class . active ]=" radioGroupForm . get (' dateSpan '). value = == ' 24h '" >
< input type = "radio" [ value ]="' 24h '" fragment = "24h" [ routerLink ]="['/ graphs / mining / pools ' | relativeUrl ]" [ attr . data-cy ]="' 24h '" formControlName = "dateSpan" > 24h
2022-01-06 19:59:33 +09:00
</ label >
2022-11-28 16:00:50 +09:00
< label class = "btn btn-primary btn-sm" * ngIf = "stats.totalBlockCount >= 432" [ class . active ]=" radioGroupForm . get (' dateSpan '). value = == ' 3d '" >
< input type = "radio" [ value ]="' 3d '" fragment = "3d" [ routerLink ]="['/ graphs / mining / pools ' | relativeUrl ]" [ attr . data-cy ]="' 3d '" formControlName = "dateSpan" > 3D
2022-01-06 19:59:33 +09:00
</ label >
2022-11-28 16:00:50 +09:00
< label class = "btn btn-primary btn-sm" * ngIf = "stats.totalBlockCount >= 1008" [ class . active ]=" radioGroupForm . get (' dateSpan '). value = == ' 1w '" >
< input type = "radio" [ value ]="' 1w '" fragment = "1w" [ routerLink ]="['/ graphs / mining / pools ' | relativeUrl ]" [ attr . data-cy ]="' 1w '" formControlName = "dateSpan" > 1W
2022-01-06 19:59:33 +09:00
</ label >
2022-11-28 16:00:50 +09:00
< label class = "btn btn-primary btn-sm" * ngIf = "stats.totalBlockCount >= 4320" [ class . active ]=" radioGroupForm . get (' dateSpan '). value = == ' 1m '" >
< input type = "radio" [ value ]="' 1m '" fragment = "1m" [ routerLink ]="['/ graphs / mining / pools ' | relativeUrl ]" [ attr . data-cy ]="' 1m '" formControlName = "dateSpan" > 1M
2022-01-06 19:59:33 +09:00
</ label >
2022-11-28 16:00:50 +09:00
< label class = "btn btn-primary btn-sm" * ngIf = "stats.totalBlockCount >= 12960" [ class . active ]=" radioGroupForm . get (' dateSpan '). value = == ' 3m '" >
< input type = "radio" [ value ]="' 3m '" fragment = "3m" [ routerLink ]="['/ graphs / mining / pools ' | relativeUrl ]" [ attr . data-cy ]="' 3m '" formControlName = "dateSpan" > 3M
2022-01-06 19:59:33 +09:00
</ label >
2022-11-28 16:00:50 +09:00
< label class = "btn btn-primary btn-sm" * ngIf = "stats.totalBlockCount >= 25920" [ class . active ]=" radioGroupForm . get (' dateSpan '). value = == ' 6m '" >
< input type = "radio" [ value ]="' 6m '" fragment = "6m" [ routerLink ]="['/ graphs / mining / pools ' | relativeUrl ]" [ attr . data-cy ]="' 6m '" formControlName = "dateSpan" > 6M
2022-01-06 19:59:33 +09:00
</ label >
2022-11-28 16:00:50 +09:00
< label class = "btn btn-primary btn-sm" * ngIf = "stats.totalBlockCount >= 52560" [ class . active ]=" radioGroupForm . get (' dateSpan '). value = == ' 1y '" >
< input type = "radio" [ value ]="' 1y '" fragment = "1y" [ routerLink ]="['/ graphs / mining / pools ' | relativeUrl ]" [ attr . data-cy ]="' 1y '" formControlName = "dateSpan" > 1Y
2022-01-06 19:59:33 +09:00
</ label >
2022-11-28 16:00:50 +09:00
< label class = "btn btn-primary btn-sm" * ngIf = "stats.totalBlockCount >= 105120" [ class . active ]=" radioGroupForm . get (' dateSpan '). value = == ' 2y '" >
< input type = "radio" [ value ]="' 2y '" fragment = "2y" [ routerLink ]="['/ graphs / mining / pools ' | relativeUrl ]" [ attr . data-cy ]="' 2y '" formControlName = "dateSpan" > 2Y
2022-01-06 19:59:33 +09:00
</ label >
2022-11-28 16:00:50 +09:00
< label class = "btn btn-primary btn-sm" * ngIf = "stats.totalBlockCount >= 157680" [ class . active ]=" radioGroupForm . get (' dateSpan '). value = == ' 3y '" >
< input type = "radio" [ value ]="' 3y '" fragment = "3y" [ routerLink ]="['/ graphs / mining / pools ' | relativeUrl ]" [ attr . data-cy ]="' 3y '" formControlName = "dateSpan" > 3Y
2022-01-06 19:59:33 +09:00
</ label >
2022-11-28 16:00:50 +09:00
< label class = "btn btn-primary btn-sm" [ class . active ]=" radioGroupForm . get (' dateSpan '). value = == ' all '" >
< input type = "radio" [ value ]="' all '" fragment = "all" [ routerLink ]="['/ graphs / mining / pools ' | relativeUrl ]" [ attr . data-cy ]="' all '" formControlName = "dateSpan" >< span i18n > All</ span >
2022-01-06 19:59:33 +09:00
</ label >
</ div >
</ form >
</ div >
2022-03-14 18:06:54 +01:00
< div [ class ]="! widget ? ' bottom-padding ' : ' pb-0 '" class = "container pb-lg-0" >
2022-08-11 10:19:13 +02:00
< div [ class ]=" widget ? ' chart-widget ' : ' chart '" echarts [ initOpts ]=" chartInitOptions " [ options ]=" chartOptions "
( chartInit )=" onChartInit ($ event )" >
2022-03-31 18:14:07 +09:00
</ div >
2022-03-14 18:06:54 +01:00
< div class = "text-center loadingGraphs" * ngIf = "isLoading" >
< div class = "spinner-border text-light" ></ div >
</ div >
< table * ngIf = "widget === false" class = "table table-borderless text-center pools-table" >
< thead >
< tr >
< th class = "d-none d-md-block" i18n = "mining.rank" > Rank</ th >
< th class = "" ></ th >
< th class = "" i18n = "mining.pool-name" > Pool</ th >
2022-04-11 18:17:36 +09:00
< th class = "" * ngIf = "this.miningWindowPreference === '24h'" i18n = "mining.hashrate" > Hashrate</ th >
2022-03-14 18:06:54 +01:00
< th class = "" i18n = "master-page.blocks" > Blocks</ th >
2022-05-10 17:05:07 +04:00
< th class = "d-none d-md-block" i18n = "mining.empty-blocks" > Empty blocks</ th >
2022-03-14 18:06:54 +01:00
</ tr >
</ thead >
2022-07-06 10:00:32 -07:00
< tbody [ attr . data-cy ]="' pools-table '" * ngIf = "(miningStatsObservable$ | async) as miningStats" >
2022-03-14 18:06:54 +01:00
< tr * ngFor = "let pool of miningStats.pools" >
< td class = "d-none d-md-block" > {{ pool.rank }}</ td >
2022-05-13 15:34:26 +02:00
< td class = "text-right" >
2022-07-11 13:32:24 +02:00
< img width = "25" height = "25" src = "{{ pool.logo }}" [ alt ]=" pool . name + ' mining pool logo '" onError = "this.src = '/resources/mining-pools/default.svg'" >
2022-05-13 15:34:26 +02:00
</ td >
2022-03-25 14:22:22 +09:00
< td class = "" >< a [ routerLink ]="[('/ mining / pool /' + pool . slug ) | relativeUrl ]" > {{ pool.name }}</ a ></ td >
2022-04-11 18:17:36 +09:00
< td class = "" * ngIf = "this.miningWindowPreference === '24h' && !isLoading" > {{ pool.lastEstimatedHashrate }} {{
2022-03-14 18:06:54 +01:00
miningStats.miningUnits.hashrateUnit }}</ td >
< td class = "" > {{ pool['blockText'] }}</ td >
< td class = "d-none d-md-block" > {{ pool.emptyBlocks }} ({{ pool.emptyBlockRatio }}%)</ td >
</ tr >
< tr style = "border-top: 1px solid #555" >
< td class = "d-none d-md-block" ></ td >
< td class = "text-right" ></ td >
2022-05-17 19:27:41 +04:00
< td class = "" >< b i18n = "mining.all-miners" > All miners</ b ></ td >
2022-04-11 18:17:36 +09:00
< td class = "" * ngIf = "this.miningWindowPreference === '24h'" >< b > {{ miningStats.lastEstimatedHashrate}} {{
2022-03-14 18:06:54 +01:00
miningStats.miningUnits.hashrateUnit }}</ b ></ td >
< td class = "" >< b > {{ miningStats.blockCount }}</ b ></ td >
< td class = "d-none d-md-block" >< b > {{ miningStats.totalEmptyBlock }} ({{ miningStats.totalEmptyBlockRatio
}}%)</ b ></ td >
</ tr >
</ tbody >
</ table >
</ div >
2022-01-06 19:59:33 +09:00
</ div >
2022-03-07 19:54:17 +01:00
< ng-template # loadingReward >
< div class = "pool-distribution" >
< div class = "item" >
2022-05-10 17:05:07 +04:00
< h5 class = "card-title" i18n = "mining.miners-luck" > Pools Luck (1w)</ h5 >
2022-03-07 19:54:17 +01:00
< p class = "card-text" >
< span class = "skeleton-loader skeleton-loader-big" ></ span >
</ p >
</ div >
< div class = "item" >
< h5 class = "card-title" i18n = "master-page.blocks" > Blocks (1w)</ h5 >
< p class = "card-text" >
< span class = "skeleton-loader skeleton-loader-big" ></ span >
</ p >
</ div >
< div class = "item" >
2022-05-10 17:05:07 +04:00
< h5 class = "card-title" i18n = "mining.miners-count" > Pools Count (1w)</ h5 >
2022-03-07 19:54:17 +01:00
< p class = "card-text" >
< span class = "skeleton-loader skeleton-loader-big" ></ span >
</ p >
</ div >
</ div >
2022-06-11 00:04:19 +02:00
</ ng-template >