From bfffed4099450c1f996fb93422f2efd6a0add504 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Mon, 20 Sep 2021 09:53:00 +0200 Subject: [PATCH] Updated avrop loading --- .../src/app/pages/avrop/avrop.component.html | 5 +++-- .../src/app/pages/avrop/avrop.component.ts | 3 ++- .../src/app/pages/avrop/avrop.module.ts | 2 ++ .../avrop-filters/avrop-filters.component.html | 15 ++++++++------- .../avrop-filters/avrop-filters.component.ts | 11 +++++++++-- .../avrop-filters/avrop-filters.module.ts | 5 +++-- .../avrop-list/avrop-list.component.html | 3 ++- .../components/avrop-list/avrop-list.component.ts | 1 + .../components/avrop-list/avrop-list.module.ts | 3 ++- .../multiselect-panel.component.scss | 2 +- .../src/app/shared/services/avrop.service.ts | 15 +++++++++++++-- 11 files changed, 46 insertions(+), 19 deletions(-) diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.html b/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.html index 3f56623..33dacab 100644 --- a/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.html +++ b/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.html @@ -1,5 +1,5 @@ -
+

Nya deltagare

@@ -75,6 +75,7 @@ [isSubmitted]="avropIsSubmitted$ | async" [handledare]="selectedHandledare$ | async" [handledareConfirmed]="handledareConfirmed$ | async" + [avropLoading]="avropLoading$ | async" (selectionChanged)="updateSelectedAvrop($event)" (paginated)="setNewPage($event)" > @@ -118,7 +119,7 @@
- + diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.ts b/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.ts index 8f2e203..4c93bd8 100644 --- a/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.ts @@ -1,8 +1,8 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; import { Avrop, AvropCompactData } from '@msfa-models/avrop.model'; import { Handledare } from '@msfa-models/handledare.model'; -import { MultiselectFilterOption } from '@msfa-shared/components/multiselect/multiselect-filter-option'; import { AvropService } from '@msfa-services/avrop.service'; +import { MultiselectFilterOption } from '@msfa-shared/components/multiselect/multiselect-filter-option'; import { Observable } from 'rxjs'; @Component({ @@ -25,6 +25,7 @@ export class AvropComponent { avropIsLocked$: Observable = this.avropService.avropIsLocked$; handledareConfirmed$: Observable = this.avropService.handledareIsConfirmed$; avropIsSubmitted$: Observable = this.avropService.avropIsSubmitted$; + avropLoading$: Observable = this.avropService.avropLoading$; constructor(private avropService: AvropService) {} diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/avrop.module.ts b/apps/mina-sidor-fa/src/app/pages/avrop/avrop.module.ts index 47f7730..9368882 100644 --- a/apps/mina-sidor-fa/src/app/pages/avrop/avrop.module.ts +++ b/apps/mina-sidor-fa/src/app/pages/avrop/avrop.module.ts @@ -4,6 +4,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; import { LayoutModule } from '@msfa-shared/components/layout/layout.module'; +import { LoaderModule } from '@msfa-shared/components/loader/loader.module'; import { AvropComponent } from './avrop.component'; import { AvropFiltersModule } from './components/avrop-filters/avrop-filters.module'; import { AvropListModule } from './components/avrop-list/avrop-list.module'; @@ -19,6 +20,7 @@ import { AvropListModule } from './components/avrop-list/avrop-list.module'; AvropFiltersModule, DigiNgProgressProgressbarModule, DigiNgSkeletonBaseModule, + LoaderModule, ], }) export class AvropModule {} diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.component.html b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.component.html index 4ff7d8d..5c39cde 100644 --- a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.component.html +++ b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.component.html @@ -1,5 +1,5 @@ -
-
+
+
-
+
-
+
-
- -
+
diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.component.ts b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.component.ts index dd7755b..74ef590 100644 --- a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.component.ts @@ -1,7 +1,8 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { MultiselectFilterOption } from '@msfa-shared/components/multiselect/multiselect-filter-option'; import { AvropService } from '@msfa-services/avrop.service'; -import { Observable } from 'rxjs'; +import { MultiselectFilterOption } from '@msfa-shared/components/multiselect/multiselect-filter-option'; +import { combineLatest, Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; @Component({ selector: 'msfa-avrop-filters', @@ -19,6 +20,12 @@ export class AvropFiltersComponent { .filteredUtforandeVerksamheter$; filteredKommuner$: Observable = this.avropService.filteredKommuner$; + filtersAreLoading$: Observable = combineLatest([ + this.availableKommuner$, + this.availableTjanster$, + this.availableUtforandeVerksamheter$, + ]).pipe(map(([kommuner, tjanster, uv]) => !!(kommuner && tjanster && uv))); + constructor(private avropService: AvropService) {} updateSelectedTjanster(filterOptions: MultiselectFilterOption[]): void { diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.module.ts b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.module.ts index c76d143..cb4439b 100644 --- a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.module.ts +++ b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-filters/avrop-filters.module.ts @@ -1,12 +1,13 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { AvropFiltersComponent } from './avrop-filters.component'; +import { LoaderModule } from '@msfa-shared/components/loader/loader.module'; import { MultiselectModule } from '@msfa-shared/components/multiselect/multiselect.module'; +import { AvropFiltersComponent } from './avrop-filters.component'; @NgModule({ schemas: [CUSTOM_ELEMENTS_SCHEMA], declarations: [AvropFiltersComponent], - imports: [CommonModule, MultiselectModule], + imports: [CommonModule, MultiselectModule, LoaderModule], exports: [AvropFiltersComponent], }) export class AvropFiltersModule {} diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.component.html b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.component.html index 1c2e8e5..0583a66 100644 --- a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.component.html +++ b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.component.html @@ -1,4 +1,5 @@ -
+ +
(); @Output() paginated = new EventEmitter(); diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.module.ts b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.module.ts index 790ffd4..ad45586 100644 --- a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.module.ts +++ b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.module.ts @@ -1,3 +1,4 @@ +import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { AvropRowModule } from '../avrop-row/avrop-row.module'; @@ -6,7 +7,7 @@ import { AvropListComponent } from './avrop-list.component'; @NgModule({ schemas: [CUSTOM_ELEMENTS_SCHEMA], declarations: [AvropListComponent], - imports: [CommonModule, AvropRowModule], + imports: [CommonModule, AvropRowModule, DigiNgSkeletonBaseModule], exports: [AvropListComponent], }) export class AvropListModule {} diff --git a/apps/mina-sidor-fa/src/app/shared/components/multiselect/multiselect-panel/multiselect-panel.component.scss b/apps/mina-sidor-fa/src/app/shared/components/multiselect/multiselect-panel/multiselect-panel.component.scss index db6904d..568a18c 100644 --- a/apps/mina-sidor-fa/src/app/shared/components/multiselect/multiselect-panel/multiselect-panel.component.scss +++ b/apps/mina-sidor-fa/src/app/shared/components/multiselect/multiselect-panel/multiselect-panel.component.scss @@ -104,7 +104,7 @@ justify-content: center; align-items: center; background-color: var(--digi--ui--color--background--tertiary); - height: 70px; + padding: $digi--layout--gutter $digi--layout--gutter--l; } &__no-options-available { diff --git a/apps/mina-sidor-fa/src/app/shared/services/avrop.service.ts b/apps/mina-sidor-fa/src/app/shared/services/avrop.service.ts index ba8c669..343a914 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/avrop.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/avrop.service.ts @@ -5,7 +5,7 @@ import { Handledare } from '@msfa-models/handledare.model'; import { AvropApiService } from '@msfa-services/api/avrop-api.service'; import { MultiselectFilterOption } from '@msfa-shared/components/multiselect/multiselect-filter-option'; import { BehaviorSubject, combineLatest, Observable } from 'rxjs'; -import { filter, map, switchMap } from 'rxjs/operators'; +import { filter, map, switchMap, tap } from 'rxjs/operators'; type Step = 1 | 2 | 3 | 4; @@ -24,6 +24,8 @@ export class AvropService { private _handledareIsConfirmed$ = new BehaviorSubject(false); private _avropIsSubmitted$ = new BehaviorSubject(false); private _error$ = new BehaviorSubject(null); + private _avropLoading$ = new BehaviorSubject(false); + public avropLoading$: Observable = this._avropLoading$.asObservable(); public filteredTjanster$: Observable = this._filteredTjanster$.asObservable(); public filteredUtforandeVerksamheter$: Observable< @@ -50,7 +52,16 @@ export class AvropService { this._filteredKommuner$, this._page$, this._limit$, - ]).pipe(switchMap(() => this.avropApiService.fetchAvrop$(this.filtersForAvrop))); + ]).pipe( + switchMap(() => { + this._avropLoading$.next(true); + return this.avropApiService.fetchAvrop$(this.filtersForAvrop).pipe( + tap(() => { + this._avropLoading$.next(false); + }) + ); + }) + ); public availableTjanster$: Observable = combineLatest([ this._filteredUtforandeVerksamheter$,