58 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <div class="container-xl">
 | |
|   <h1 class="float-left" i18n="latest-blocks.blocks">Blocks</h1>
 | |
|   <br>
 | |
| 
 | |
|   <div class="clearfix"></div>
 | |
| 
 | |
|   <table class="table table-borderless" [alwaysCallback]="true" infiniteScroll [infiniteScrollDistance]="1.5" [infiniteScrollUpDistance]="1.5" [infiniteScrollThrottle]="50" (scrolled)="loadMore()">
 | |
|     <thead>
 | |
|       <th style="width: 15%;" i18n="latest-blocks.height">Height</th>
 | |
|       <th class="d-none d-md-block" style="width: 20%;" i18n="latest-blocks.timestamp">Timestamp</th>
 | |
|       <th style="width: 20%;" i18n="latest-blocks.mined">Mined</th>
 | |
|       <th class="d-none d-lg-block" style="width: 15%;" i18n="latest-blocks.transactions">Transactions</th>
 | |
|       <th style="width: 20%;" i18n="latest-blocks.size">Size</th>
 | |
|     </thead>
 | |
|     <tbody>
 | |
|       <tr *ngFor="let block of blocks; let i= index; trackBy: trackByBlock">
 | |
|         <td><a [routerLink]="['/block' | relativeUrl, block.id]" [state]="{ data: { block: block } }">{{ block.height }}</a></td>
 | |
|         <td class="d-none d-md-block">{{ block.timestamp * 1000 | date:'yyyy-MM-dd HH:mm' }}</td>
 | |
|         <td><app-time-since [time]="block.timestamp" [fastRender]="true"></app-time-since></td>
 | |
|         <td class="d-none d-lg-block">{{ block.tx_count | number }}</td>
 | |
|         <td>
 | |
|           <div class="progress">
 | |
|             <div class="progress-bar progress-mempool {{ network$ | async }}" role="progressbar" [ngStyle]="{'width': (block.weight / 4000000)*100 + '%' }"></div>
 | |
|             <div class="progress-text">{{ block.size | bytes: 2 }}</div>
 | |
|           </div>
 | |
|         </td>
 | |
|       </tr>
 | |
|       <ng-template [ngIf]="isLoading">
 | |
|         <tr *ngFor="let item of [1,2,3,4,5,6,7,8,9,10]">
 | |
|           <td><span class="skeleton-loader"></span></td>
 | |
|           <td class="d-none d-md-block"><span class="skeleton-loader"></span></td>
 | |
|           <td><span class="skeleton-loader"></span></td>
 | |
|           <td class="d-none d-lg-block"><span class="skeleton-loader"></span></td>
 | |
|           <td><span class="skeleton-loader"></span></td>
 | |
|         </tr>
 | |
|       <ng-container *ngIf="(blocksLoadingStatus$ | async) as blocksLoadingStatus">
 | |
|       <tr>
 | |
|         <td colspan="5">
 | |
|           <div class="progress progress-dark">
 | |
|             <div class="progress-bar progress-darklight" role="progressbar" [ngStyle]="{'width': blocksLoadingStatus + '%' }"></div>
 | |
|           </div>
 | |
|         </td>
 | |
|       </tr>
 | |
|       </ng-container>
 | |
|     </ng-template>
 | |
|     </tbody>
 | |
|   </table>
 | |
| 
 | |
|   <ng-template [ngIf]="error">
 | |
|     <div class="text-center">
 | |
|       <span>Error loading blocks</span>
 | |
|       <br>
 | |
|       <i>{{ error.error }}</i>
 | |
|     </div>
 | |
|   </ng-template>
 | |
| 
 | |
| </div>
 |