From 90c0ece93fc016c7fc18d6340896304a52b38c1b Mon Sep 17 00:00:00 2001 From: nymkappa Date: Mon, 29 Aug 2022 22:25:43 +0200 Subject: [PATCH] Add loading animation for channel list --- .../channels-list/channels-list.component.html | 2 +- .../channels-list/channels-list.component.ts | 10 ++++++++-- frontend/src/app/lightning/node/node.component.html | 7 +++++-- frontend/src/app/lightning/node/node.component.scss | 13 +++++++++++++ frontend/src/app/lightning/node/node.component.ts | 6 +++++- 5 files changed, 32 insertions(+), 6 deletions(-) diff --git a/frontend/src/app/lightning/channels-list/channels-list.component.html b/frontend/src/app/lightning/channels-list/channels-list.component.html index 226b19f62..af87cefa4 100644 --- a/frontend/src/app/lightning/channels-list/channels-list.component.html +++ b/frontend/src/app/lightning/channels-list/channels-list.component.html @@ -10,7 +10,7 @@ - +
diff --git a/frontend/src/app/lightning/channels-list/channels-list.component.ts b/frontend/src/app/lightning/channels-list/channels-list.component.ts index 6a0732522..75b8263e2 100644 --- a/frontend/src/app/lightning/channels-list/channels-list.component.ts +++ b/frontend/src/app/lightning/channels-list/channels-list.component.ts @@ -14,6 +14,7 @@ import { LightningApiService } from '../lightning-api.service'; export class ChannelsListComponent implements OnInit, OnChanges { @Input() publicKey: string; @Output() channelsStatusChangedEvent = new EventEmitter(); + @Output() loadingEvent = new EventEmitter(false); channels$: Observable; // @ts-ignore @@ -26,6 +27,7 @@ export class ChannelsListComponent implements OnInit, OnChanges { defaultStatus = 'open'; status = 'open'; publicKeySize = 25; + isLoading = false; constructor( private lightningApiService: LightningApiService, @@ -56,6 +58,8 @@ export class ChannelsListComponent implements OnInit, OnChanges { ) .pipe( tap((val) => { + this.isLoading = true; + this.loadingEvent.emit(true); if (typeof val === 'string') { this.status = val; this.page = 1; @@ -64,10 +68,12 @@ export class ChannelsListComponent implements OnInit, OnChanges { } }), switchMap(() => { - this.channelsStatusChangedEvent.emit(this.status); - return this.lightningApiService.getChannelsByNodeId$(this.publicKey, (this.page - 1) * this.itemsPerPage, this.status); + this.channelsStatusChangedEvent.emit(this.status); + return this.lightningApiService.getChannelsByNodeId$(this.publicKey, (this.page - 1) * this.itemsPerPage, this.status); }), map((response) => { + this.isLoading = false; + this.loadingEvent.emit(false); return { channels: response.body, totalItems: parseInt(response.headers.get('x-total-count'), 10) diff --git a/frontend/src/app/lightning/node/node.component.html b/frontend/src/app/lightning/node/node.component.html index f2a6ce6f4..def6e28e6 100644 --- a/frontend/src/app/lightning/node/node.component.html +++ b/frontend/src/app/lightning/node/node.component.html @@ -133,7 +133,7 @@ -
+

Open channels ({{ node.opened_channel_count }}) @@ -142,10 +142,13 @@ Closed channels ({{ node.closed_channel_count }})

+
+ (channelsStatusChangedEvent)="onChannelsListStatusChanged($event)" + (loadingEvent)="onLoadingEvent($event)" + >
diff --git a/frontend/src/app/lightning/node/node.component.scss b/frontend/src/app/lightning/node/node.component.scss index 2b171416f..b2e6f573b 100644 --- a/frontend/src/app/lightning/node/node.component.scss +++ b/frontend/src/app/lightning/node/node.component.scss @@ -56,4 +56,17 @@ app-fiat { display: inline-block; margin-left: 10px; } +} + +.spinner-border { + @media (min-width: 768px) { + margin-top: 6.5px; + width: 1.75rem; + height: 1.75rem; + } + @media (max-width: 768px) { + margin-top: 2.3px; + width: 1.5rem; + height: 1.5rem; + } } \ No newline at end of file diff --git a/frontend/src/app/lightning/node/node.component.ts b/frontend/src/app/lightning/node/node.component.ts index 8ddaacf95..bfee9252d 100644 --- a/frontend/src/app/lightning/node/node.component.ts +++ b/frontend/src/app/lightning/node/node.component.ts @@ -22,7 +22,7 @@ export class NodeComponent implements OnInit { channelsListStatus: string; error: Error; publicKey: string; - + channelListLoading = false; publicKeySize = 99; constructor( @@ -97,4 +97,8 @@ export class NodeComponent implements OnInit { onChannelsListStatusChanged(e) { this.channelsListStatus = e; } + + onLoadingEvent(e) { + this.channelListLoading = e; + } }