| 
									
										
										
										
											2022-05-10 14:57:43 +02:00
										 |  |  | <app-indexing-progress *ngIf="!widget"></app-indexing-progress> | 
					
						
							| 
									
										
										
										
											2022-05-02 17:28:58 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  | <div class="container-xl" style="min-height: 335px" [ngClass]="{'widget': widget, 'full-height': !widget, 'legacy': !isMempoolModule}"> | 
					
						
							| 
									
										
										
										
											2022-05-10 17:05:07 +04:00
										 |  |  |   <h1 *ngIf="!widget" class="float-left" i18n="master-page.blocks">Blocks</h1> | 
					
						
							| 
									
										
										
										
											2022-05-24 11:55:43 +02:00
										 |  |  |   <div *ngIf="!widget && isLoading" class="spinner-border ml-3" role="status"></div> | 
					
						
							| 
									
										
										
										
											2022-03-10 18:35:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   <div class="clearfix"></div> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |   <div style="min-height: 295px"> | 
					
						
							|  |  |  |     <table class="table table-borderless"> | 
					
						
							|  |  |  |       <thead> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |         <th class="height text-left" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}" i18n="latest-blocks.height">Height</th> | 
					
						
							|  |  |  |         <th *ngIf="isMempoolModule" class="pool text-left" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}" i18n="mining.pool-name" | 
					
						
							| 
									
										
										
										
											2022-06-09 15:58:49 +02:00
										 |  |  |           i18n-ngbTooltip="mining.pool-name" ngbTooltip="Pool" placement="bottom" #miningpool [disableTooltip]="!isEllipsisActive(miningpool)">Pool</th> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |         <th class="timestamp" i18n="latest-blocks.timestamp" *ngIf="!widget" [class]="isMempoolModule ? '' : 'legacy'">Timestamp</th> | 
					
						
							|  |  |  |         <th *ngIf="auditAvailable" class="health text-right" i18n="latest-blocks.health" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}" | 
					
						
							| 
									
										
										
										
											2022-10-28 10:33:15 -06:00
										 |  |  |           i18n-ngbTooltip="latest-blocks.health" ngbTooltip="Health" placement="bottom" #health [disableTooltip]="!isEllipsisActive(health)">Health</th> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |         <th *ngIf="isMempoolModule" class="reward text-right" i18n="latest-blocks.reward" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}" | 
					
						
							| 
									
										
										
										
											2022-06-09 15:58:49 +02:00
										 |  |  |           i18n-ngbTooltip="latest-blocks.reward" ngbTooltip="Reward" placement="bottom" #reward [disableTooltip]="!isEllipsisActive(reward)">Reward</th> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:18:21 +09:00
										 |  |  |         <th *ngIf="isMempoolModule && !auditAvailable || isMempoolModule && !widget" class="fees text-right" i18n="latest-blocks.fees" [class]="isMempoolModule ? '' : 'legacy'">Fees</th> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |         <th *ngIf="auditAvailable && !widget" class="fee-delta" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"></th> | 
					
						
							|  |  |  |         <th *ngIf="isMempoolModule" class="txs text-right" i18n="dashboard.txs" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}" | 
					
						
							| 
									
										
										
										
											2022-06-09 15:58:49 +02:00
										 |  |  |           i18n-ngbTooltip="dashboard.txs" ngbTooltip="TXs" placement="bottom" #txs [disableTooltip]="!isEllipsisActive(txs)">TXs</th> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |         <th *ngIf="!isMempoolModule" class="txs text-right" i18n="dashboard.txs" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}">Transactions</th> | 
					
						
							|  |  |  |         <th class="size" i18n="latest-blocks.size" *ngIf="!widget" [class]="isMempoolModule ? '' : 'legacy'">Size</th> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |       </thead> | 
					
						
							|  |  |  |       <tbody *ngIf="blocks$ | async as blocks; else skeleton" [style]="isLoading ? 'opacity: 0.75' : ''"> | 
					
						
							|  |  |  |         <tr *ngFor="let block of blocks; let i= index; trackBy: trackByBlock"> | 
					
						
							| 
									
										
										
										
											2023-03-19 15:23:00 +09:00
										 |  |  |           <td class="height text-left" [class]="widget ? 'widget' : ''"> | 
					
						
							| 
									
										
										
										
											2022-12-26 16:30:10 +04:00
										 |  |  |             <a [routerLink]="['/block' | relativeUrl, block.id]" [state]="{ data: { block: block } }">{{ block.height }}</a> | 
					
						
							| 
									
										
										
										
											2022-03-11 14:54:34 +01:00
										 |  |  |           </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |           <td  *ngIf="isMempoolModule" class="pool text-left" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"> | 
					
						
							|  |  |  |             <div *ngIf="indexingAvailable" class="tooltip-custom"> | 
					
						
							| 
									
										
										
										
											2022-03-29 12:50:57 +09:00
										 |  |  |               <a class="clear-link" [routerLink]="['/mining/pool' | relativeUrl, block.extras.pool.slug]"> | 
					
						
							| 
									
										
										
										
											2022-04-18 11:54:52 +09:00
										 |  |  |                 <img width="22" height="22" src="{{ block.extras.pool['logo'] }}" | 
					
						
							| 
									
										
										
										
											2022-07-11 13:32:24 +02:00
										 |  |  |                   onError="this.src = '/resources/mining-pools/default.svg'" [alt]="'Logo of ' + block.extras.pool.name + ' mining pool'"> | 
					
						
							| 
									
										
										
										
											2022-03-15 23:33:51 +01:00
										 |  |  |                 <span class="pool-name">{{ block.extras.pool.name }}</span> | 
					
						
							|  |  |  |               </a> | 
					
						
							| 
									
										
										
										
											2022-03-22 18:31:28 +09:00
										 |  |  |               <span *ngIf="!widget" class="tooltiptext badge badge-secondary scriptmessage">{{ block.extras.coinbaseRaw | hex2ascii }}</span> | 
					
						
							| 
									
										
										
										
											2022-03-15 23:33:51 +01:00
										 |  |  |             </div> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |             <div *ngIf="!indexingAvailable" class="tooltip-custom"> | 
					
						
							|  |  |  |               <img width="22" height="22" src="{{ block.extras.pool['logo'] }}" | 
					
						
							|  |  |  |                 onError="this.src = '/resources/mining-pools/default.svg'" [alt]="'Logo of ' + block.extras.pool.name + ' mining pool'"> | 
					
						
							|  |  |  |               <span class="pool-name">{{ block.extras.pool.name }}</span> | 
					
						
							|  |  |  |               <span *ngIf="!widget" class="tooltiptext badge badge-secondary scriptmessage">{{ block.extras.coinbaseRaw | hex2ascii }}</span> | 
					
						
							|  |  |  |             </div> | 
					
						
							| 
									
										
										
										
											2022-03-11 14:54:34 +01:00
										 |  |  |           </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |           <td class="timestamp" *ngIf="!widget" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"> | 
					
						
							| 
									
										
										
										
											2024-01-13 18:11:13 -08:00
										 |  |  |             ‎{{ block.timestamp * 1000 | date:'yyyy-MM-dd HH:mm:ss' }} | 
					
						
							| 
									
										
										
										
											2022-03-11 14:54:34 +01:00
										 |  |  |           </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |           <td *ngIf="auditAvailable" class="health text-right" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"> | 
					
						
							| 
									
										
										
										
											2022-12-19 19:02:50 -06:00
										 |  |  |             <a | 
					
						
							| 
									
										
										
										
											2023-06-15 12:57:20 -04:00
										 |  |  |               *ngIf="block?.extras?.matchRate != null; else nullHealth" | 
					
						
							| 
									
										
										
										
											2022-12-19 19:02:50 -06:00
										 |  |  |               class="health-badge badge" | 
					
						
							| 
									
										
										
										
											2023-06-15 12:57:20 -04:00
										 |  |  |               [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" | 
					
						
							| 
									
										
										
										
											2022-12-26 16:30:10 +04:00
										 |  |  |               [state]="{ data: { block: block } }" | 
					
						
							| 
									
										
										
										
											2023-06-15 12:57:20 -04:00
										 |  |  |             >{{ block.extras.matchRate }}%</a> | 
					
						
							| 
									
										
										
										
											2022-12-19 19:02:50 -06:00
										 |  |  |             <ng-template #nullHealth> | 
					
						
							| 
									
										
										
										
											2023-06-15 12:57:20 -04:00
										 |  |  |               <span class="health-badge badge badge-secondary" i18n="unknown">Unknown</span> | 
					
						
							| 
									
										
										
										
											2022-12-19 19:02:50 -06:00
										 |  |  |             </ng-template> | 
					
						
							| 
									
										
										
										
											2022-10-28 10:33:15 -06:00
										 |  |  |           </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |           <td *ngIf="isMempoolModule" class="reward text-right" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"> | 
					
						
							| 
									
										
										
										
											2022-05-16 11:24:38 +02:00
										 |  |  |             <app-amount [satoshis]="block.extras.reward" [noFiat]="true" digitsInfo="1.2-2"></app-amount> | 
					
						
							| 
									
										
										
										
											2022-03-11 14:54:34 +01:00
										 |  |  |           </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:18:21 +09:00
										 |  |  |           <td *ngIf="isMempoolModule && !auditAvailable || isMempoolModule && !widget" class="fees text-right" [class]="isMempoolModule ? '' : 'legacy'"> | 
					
						
							| 
									
										
										
										
											2022-05-16 11:24:38 +02:00
										 |  |  |             <app-amount [satoshis]="block.extras.totalFees" [noFiat]="true" digitsInfo="1.2-2"></app-amount> | 
					
						
							| 
									
										
										
										
											2022-03-11 14:54:34 +01:00
										 |  |  |           </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |           <td *ngIf="auditAvailable" class="fee-delta" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"> | 
					
						
							| 
									
										
										
										
											2023-06-10 12:09:06 -04:00
										 |  |  |             <span *ngIf="block.extras.feeDelta" class="difference" [class.positive]="block.extras.feeDelta >= 0" [class.negative]="block.extras.feeDelta < 0"> | 
					
						
							| 
									
										
										
										
											2023-06-14 11:28:39 -04:00
										 |  |  |               {{ block.extras.feeDelta > 0 ? '+' : '' }}{{ (block.extras.feeDelta * 100) | amountShortener: 2 }}% | 
					
						
							| 
									
										
										
										
											2023-06-10 12:09:06 -04:00
										 |  |  |             </span> | 
					
						
							|  |  |  |           </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |           <td class="txs text-right" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |             {{ block.tx_count | number }} | 
					
						
							| 
									
										
										
										
											2022-03-11 14:54:34 +01:00
										 |  |  |           </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |           <td class="size" *ngIf="!widget" [class]="isMempoolModule ? '' : 'legacy'"> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |             <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> | 
					
						
							| 
									
										
										
										
											2022-03-11 14:54:34 +01:00
										 |  |  |           </td> | 
					
						
							|  |  |  |         </tr> | 
					
						
							|  |  |  |       </tbody> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |       <ng-template #skeleton> | 
					
						
							|  |  |  |         <tbody> | 
					
						
							|  |  |  |           <tr *ngFor="let item of skeletonLines"> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |             <td class="height text-left" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"> | 
					
						
							| 
									
										
										
										
											2022-04-18 11:54:52 +09:00
										 |  |  |               <span class="skeleton-loader" style="max-width: 75px"></span> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |             </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |             <td *ngIf="isMempoolModule" class="pool text-left" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"> | 
					
						
							| 
									
										
										
										
											2022-04-18 11:54:52 +09:00
										 |  |  |               <span class="skeleton-loader" style="max-width: 125px"></span> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |             </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |             <td class="timestamp" *ngIf="!widget" [class]="isMempoolModule ? '' : 'legacy'"> | 
					
						
							| 
									
										
										
										
											2022-04-18 11:54:52 +09:00
										 |  |  |               <span class="skeleton-loader" style="max-width: 150px"></span> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |             </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |             <td class="mined" *ngIf="!widget" [class]="isMempoolModule ? '' : 'legacy'"> | 
					
						
							| 
									
										
										
										
											2022-04-18 11:54:52 +09:00
										 |  |  |               <span class="skeleton-loader" style="max-width: 125px"></span> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |             </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |             <td *ngIf="auditAvailable" class="health text-right" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"> | 
					
						
							| 
									
										
										
										
											2022-10-28 10:33:15 -06:00
										 |  |  |               <span class="skeleton-loader" style="max-width: 75px"></span> | 
					
						
							|  |  |  |             </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |             <td *ngIf="isMempoolModule" class="reward text-right" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"> | 
					
						
							| 
									
										
										
										
											2022-04-18 11:54:52 +09:00
										 |  |  |               <span class="skeleton-loader" style="max-width: 75px"></span> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |             </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |             <td *ngIf="isMempoolModule && !widget" class="fees text-right" [class]="isMempoolModule ? '' : 'legacy'"> | 
					
						
							| 
									
										
										
										
											2022-04-18 11:54:52 +09:00
										 |  |  |               <span class="skeleton-loader" style="max-width: 75px"></span> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |             </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |             <td *ngIf="auditAvailable && !widget" class="fee-delta" [class]="isMempoolModule ? '' : 'legacy'"> | 
					
						
							| 
									
										
										
										
											2023-06-12 12:40:19 -04:00
										 |  |  |               <span class="skeleton-loader" style="max-width: 75px"></span> | 
					
						
							|  |  |  |             </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |             <td class="txs text-right" [ngClass]="{'widget': widget, 'legacy': !isMempoolModule}"> | 
					
						
							| 
									
										
										
										
											2022-04-18 11:54:52 +09:00
										 |  |  |               <span class="skeleton-loader" style="max-width: 75px"></span> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |             </td> | 
					
						
							| 
									
										
										
										
											2023-07-23 12:02:04 +09:00
										 |  |  |             <td class="size" *ngIf="!widget" [class]="isMempoolModule ? '' : 'legacy'"> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |               <span class="skeleton-loader"></span> | 
					
						
							|  |  |  |             </td> | 
					
						
							|  |  |  |           </tr> | 
					
						
							|  |  |  |         </tbody> | 
					
						
							|  |  |  |       </ng-template> | 
					
						
							|  |  |  |     </table> | 
					
						
							| 
									
										
										
										
											2022-03-10 18:35:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |     <ngb-pagination *ngIf="!widget" class="pagination-container float-right mt-2" [class]="isLoading ? 'disabled' : ''" | 
					
						
							| 
									
										
										
										
											2022-03-22 15:16:15 +09:00
										 |  |  |       [collectionSize]="blocksCount" [rotate]="true" [maxSize]="maxSize" [pageSize]="15" [(page)]="page" | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |       (pageChange)="pageChange(page)" [boundaryLinks]="true" [ellipses]="false"> | 
					
						
							|  |  |  |     </ngb-pagination> | 
					
						
							| 
									
										
										
										
											2023-01-13 11:31:56 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-19 19:30:55 +09:00
										 |  |  |     <ng-template [ngIf]="!widget"> | 
					
						
							|  |  |  |       <div class="clearfix"></div> | 
					
						
							| 
									
										
										
										
											2023-02-19 20:43:51 +09:00
										 |  |  |       <br> | 
					
						
							| 
									
										
										
										
											2023-02-19 19:30:55 +09:00
										 |  |  |     </ng-template> | 
					
						
							| 
									
										
										
										
											2022-03-12 17:33:07 +01:00
										 |  |  |   </div> | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2022-03-31 18:14:07 +09:00
										 |  |  | </div> |