Merge pull request #2517 from mempool/nymkappa/bugfix/missing-loaders
Add skeleton loader in node per isp/country lists
This commit is contained in:
		
						commit
						b5f6fdecbf
					
				| @ -6,6 +6,7 @@ | |||||||
| 
 | 
 | ||||||
|   <div style="min-height: 295px"> |   <div style="min-height: 295px"> | ||||||
|     <table class="table table-borderless"> |     <table class="table table-borderless"> | ||||||
|  |        | ||||||
|       <thead> |       <thead> | ||||||
|         <th class="alias text-left" i18n="lightning.alias">Alias</th> |         <th class="alias text-left" i18n="lightning.alias">Alias</th> | ||||||
|         <th class="timestamp-first text-left" i18n="lightning.first_seen">First seen</th> |         <th class="timestamp-first text-left" i18n="lightning.first_seen">First seen</th> | ||||||
| @ -14,7 +15,8 @@ | |||||||
|         <th class="channels text-right" i18n="lightning.channels">Channels</th> |         <th class="channels text-right" i18n="lightning.channels">Channels</th> | ||||||
|         <th class="city text-right" i18n="lightning.location">Location</th> |         <th class="city text-right" i18n="lightning.location">Location</th> | ||||||
|       </thead> |       </thead> | ||||||
|       <tbody *ngIf="nodes$ | async as nodes"> |        | ||||||
|  |       <tbody *ngIf="nodes$ | async as nodes; else skeleton"> | ||||||
|         <tr *ngFor="let node of nodes; let i= index; trackBy: trackByPublicKey"> |         <tr *ngFor="let node of nodes; let i= index; trackBy: trackByPublicKey"> | ||||||
|           <td class="alias text-left text-truncate"> |           <td class="alias text-left text-truncate"> | ||||||
|             <a [routerLink]="['/lightning/node/' | relativeUrl, node.public_key]">{{ node.alias }}</a> |             <a [routerLink]="['/lightning/node/' | relativeUrl, node.public_key]">{{ node.alias }}</a> | ||||||
| @ -39,6 +41,32 @@ | |||||||
|             <app-geolocation [data]="node.geolocation" [type]="'list-country'"></app-geolocation> |             <app-geolocation [data]="node.geolocation" [type]="'list-country'"></app-geolocation> | ||||||
|           </td> |           </td> | ||||||
|       </tbody> |       </tbody> | ||||||
|  | 
 | ||||||
|  |       <ng-template #skeleton> | ||||||
|  |         <tbody> | ||||||
|  |           <tr *ngFor="let item of skeletonLines"> | ||||||
|  |             <td class="alias text-left text-truncate"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |             <td class="timestamp-first text-left"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |             <td class="timestamp-update text-left"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |             <td class="capacity text-right"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |             <td class="channels text-right"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |             <td class="city text-right text-truncate"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |           </tr> | ||||||
|  |         </tbody> | ||||||
|  |       </ng-template> | ||||||
|  | 
 | ||||||
|     </table> |     </table> | ||||||
|   </div> |   </div> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -16,11 +16,17 @@ export class NodesPerCountry implements OnInit { | |||||||
|   nodes$: Observable<any>; |   nodes$: Observable<any>; | ||||||
|   country: {name: string, flag: string}; |   country: {name: string, flag: string}; | ||||||
| 
 | 
 | ||||||
|  |   skeletonLines: number[] = []; | ||||||
|  | 
 | ||||||
|   constructor( |   constructor( | ||||||
|     private apiService: ApiService, |     private apiService: ApiService, | ||||||
|     private seoService: SeoService, |     private seoService: SeoService, | ||||||
|     private route: ActivatedRoute, |     private route: ActivatedRoute, | ||||||
|   ) { } |   ) { | ||||||
|  |     for (let i = 0; i < 20; ++i) { | ||||||
|  |       this.skeletonLines.push(i); | ||||||
|  |     } | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|   ngOnInit(): void { |   ngOnInit(): void { | ||||||
|     this.nodes$ = this.apiService.getNodeForCountry$(this.route.snapshot.params.country) |     this.nodes$ = this.apiService.getNodeForCountry$(this.route.snapshot.params.country) | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ | |||||||
| 
 | 
 | ||||||
|   <div style="min-height: 295px"> |   <div style="min-height: 295px"> | ||||||
|     <table class="table table-borderless"> |     <table class="table table-borderless"> | ||||||
|  | 
 | ||||||
|       <thead> |       <thead> | ||||||
|         <th class="alias text-left" i18n="lightning.alias">Alias</th> |         <th class="alias text-left" i18n="lightning.alias">Alias</th> | ||||||
|         <th class="timestamp-first text-left" i18n="lightning.first_seen">First seen</th> |         <th class="timestamp-first text-left" i18n="lightning.first_seen">First seen</th> | ||||||
| @ -11,7 +12,8 @@ | |||||||
|         <th class="channels text-right" i18n="lightning.channels">Channels</th> |         <th class="channels text-right" i18n="lightning.channels">Channels</th> | ||||||
|         <th class="city text-right" i18n="lightning.location">Location</th> |         <th class="city text-right" i18n="lightning.location">Location</th> | ||||||
|       </thead> |       </thead> | ||||||
|       <tbody *ngIf="nodes$ | async as nodes"> | 
 | ||||||
|  |       <tbody *ngIf="nodes$ | async as nodes; else skeleton"> | ||||||
|         <tr *ngFor="let node of nodes; let i= index; trackBy: trackByPublicKey"> |         <tr *ngFor="let node of nodes; let i= index; trackBy: trackByPublicKey"> | ||||||
|           <td class="alias text-left text-truncate"> |           <td class="alias text-left text-truncate"> | ||||||
|             <a [routerLink]="['/lightning/node/' | relativeUrl, node.public_key]">{{ node.alias }}</a> |             <a [routerLink]="['/lightning/node/' | relativeUrl, node.public_key]">{{ node.alias }}</a> | ||||||
| @ -36,6 +38,32 @@ | |||||||
|             <app-geolocation [data]="node.geolocation" [type]="'list-isp'"></app-geolocation> |             <app-geolocation [data]="node.geolocation" [type]="'list-isp'"></app-geolocation> | ||||||
|           </td> |           </td> | ||||||
|       </tbody> |       </tbody> | ||||||
|  |      | ||||||
|  |       <ng-template #skeleton> | ||||||
|  |         <tbody> | ||||||
|  |           <tr *ngFor="let item of skeletonLines"> | ||||||
|  |             <td class="alias text-left text-truncate"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |             <td class="timestamp-first text-left"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |             <td class="timestamp-update text-left"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |             <td class="capacity text-right"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |             <td class="channels text-right"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |             <td class="city text-right text-truncate"> | ||||||
|  |               <span class="skeleton-loader"></span> | ||||||
|  |             </td> | ||||||
|  |           </tr> | ||||||
|  |         </tbody> | ||||||
|  |       </ng-template> | ||||||
|  |    | ||||||
|     </table> |     </table> | ||||||
|   </div> |   </div> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -15,11 +15,17 @@ export class NodesPerISP implements OnInit { | |||||||
|   nodes$: Observable<any>; |   nodes$: Observable<any>; | ||||||
|   isp: {name: string, id: number}; |   isp: {name: string, id: number}; | ||||||
| 
 | 
 | ||||||
|  |   skeletonLines: number[] = []; | ||||||
|  | 
 | ||||||
|   constructor( |   constructor( | ||||||
|     private apiService: ApiService, |     private apiService: ApiService, | ||||||
|     private seoService: SeoService, |     private seoService: SeoService, | ||||||
|     private route: ActivatedRoute, |     private route: ActivatedRoute, | ||||||
|   ) { } |   ) { | ||||||
|  |     for (let i = 0; i < 20; ++i) { | ||||||
|  |       this.skeletonLines.push(i); | ||||||
|  |     } | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|   ngOnInit(): void { |   ngOnInit(): void { | ||||||
|     this.nodes$ = this.apiService.getNodeForISP$(this.route.snapshot.params.isp) |     this.nodes$ = this.apiService.getNodeForISP$(this.route.snapshot.params.isp) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user