Skip to content

Commit 3f1b901

Browse files
committed
chore(concierge): add loading state to signage playlist display
1 parent b44179d commit 3f1b901

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

apps/concierge/src/app/signage/signage-playlist-media-list.component.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
1818
import { MatRippleModule } from '@angular/material/core';
1919
import { MatMenuModule } from '@angular/material/menu';
20+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
2021
import { MatTooltipModule } from '@angular/material/tooltip';
2122
import { Router } from '@angular/router';
2223
import { currentUser, notifyInfo, SettingsService } from '@placeos/common';
@@ -207,7 +208,14 @@ import { SignageStateService } from './signage-state.service';
207208
}
208209
</div>
209210
</div>
210-
@if (media().length > 0) {
211+
@if (loading()) {
212+
<div
213+
class="mx-auto flex flex-1 flex-col items-center justify-center space-y-2 p-8 opacity-30"
214+
>
215+
<mat-spinner diameter="32" />
216+
<p>{{ 'COMMON.LOADING' | translate }}...</p>
217+
</div>
218+
} @else if (media().length > 0) {
211219
<div
212220
cdkDropList
213221
class="flex h-1/2 flex-1 flex-col space-y-2 overflow-auto p-2"
@@ -351,6 +359,7 @@ import { SignageStateService } from './signage-state.service';
351359
DragDropModule,
352360
MatTooltipModule,
353361
MediaDurationPipe,
362+
MatProgressSpinnerModule,
354363
],
355364
})
356365
export class SignagePlaylistMediaListComponent implements OnChanges {
@@ -362,6 +371,7 @@ export class SignagePlaylistMediaListComponent implements OnChanges {
362371
public readonly playlist = input('');
363372
public readonly playlist_count = input(0);
364373
public readonly approved = signal(0);
374+
public readonly loading = signal(false);
365375

366376
public playlist_ids: string[] = [];
367377

@@ -428,12 +438,16 @@ export class SignagePlaylistMediaListComponent implements OnChanges {
428438
toObservable(this._playlist_media_observable).pipe(
429439
filter((playlist) => !!playlist),
430440
debounceTime(300),
441+
tap(() => this.loading.set(true)),
431442
switchMap((playlist) =>
432443
listSignagePlaylistMedia(playlist.id).pipe(
433444
catchError(() => of({ id: '', items: [], approved: 0 })),
434445
),
435446
),
436-
tap((_: any) => this.approved.set(_.approved)),
447+
tap((_: any) => {
448+
this.approved.set(_.approved);
449+
this.loading.set(false);
450+
}),
437451
),
438452
{ initialValue: { id: '', items: [], approved: 0 } },
439453
);

apps/concierge/src/app/signage/signage.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ export class SignageComponent {
101101
{ id: 'Zones', name: i18n('APP.CONCIERGE.SIGNAGE_ZONES') },
102102
]);
103103
public readonly active_link = signal(this.links()[0]?.id);
104-
public readonly hide_sidebar = settingSignal('hide_sidebar', true);
104+
public readonly hide_sidebar = settingSignal('hide_sidebar', false);
105105

106106
constructor() {
107107
// Update active link based on current URL

shared/assets/locale/en-AU.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"FEATURES": "Features",
6363
"BOOKABLE": "Bookable",
6464
"EMPTY": "N/A",
65+
"LOADING": "Loading",
6566
"UNKNOWN": "Unknown",
6667
"NEXT": "Next",
6768
"PREVIOUS": "Previous",

0 commit comments

Comments
 (0)