From 393900f6c26d676c1791eab5a41f841146b9404b Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Wed, 29 Sep 2021 08:01:20 +0200 Subject: [PATCH] Fixed issue with pagination inside deltagare --- .../deltagare-list.component.html | 2 + .../deltagare-list.component.scss | 7 ++- .../deltagare-list.component.ts | 5 +- .../deltagare-list/deltagare-list.module.ts | 7 +-- .../pages/deltagare/deltagare.component.html | 21 ++++---- .../src/app/shared/models/api/params.model.ts | 21 ++++++++ .../services/api/deltagare.api.service.ts | 17 +++---- .../shared/services/api/employee.service.ts | 19 ++----- .../app/shared/services/deltagare.service.ts | 50 ++++++++++--------- apps/mina-sidor-fa/src/assets/CHANGELOG.md | 8 +++ 10 files changed, 89 insertions(+), 68 deletions(-) diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.html index 933c4df..72bb5bf 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.html @@ -1,4 +1,5 @@
+
@@ -77,6 +78,7 @@ *ngIf="totalPage > 1" class="deltagare-list__pagination" [afTotalPages]="totalPage" + [afInitActivePage]="currentPage" [afCurrentResultStart]="currentResultStart" [afCurrentResultEnd]="currentResultEnd" [afTotalResults]="count" diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.scss index b5a11ba..f9f7147 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.scss +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.scss @@ -1,6 +1,9 @@ @import 'variables/gutters'; +@import 'variables/z-index'; .deltagare-list { + position: relative; + z-index: $msfa__z-index-default; &__table { font-size: var(--digi--typography--font-size--s); @@ -16,7 +19,8 @@ border-width: 0; width: 100%; text-align: left; - padding: var(--digi--layout--gutter--s) $digi--layout--gutter--l var(--digi--layout--gutter--s) var(--digi--layout--gutter); + padding: var(--digi--layout--gutter--s) $digi--layout--gutter--l var(--digi--layout--gutter--s) + var(--digi--layout--gutter); margin: 0; font-size: inherit; font-weight: inherit; @@ -46,5 +50,4 @@ --digi-icon--height: 1rem; --digi-icon--width: 1rem; } - } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.ts index 2ca295e..92f71d9 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.component.ts @@ -1,10 +1,10 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; +import { ErrorSeverity } from '@msfa-enums/error-severity.enum'; +import { IconType } from '@msfa-enums/icon-type.enum'; import { SortOrder } from '@msfa-enums/sort-order.enum'; import { DeltagareCompact } from '@msfa-models/deltagare.model'; import { PaginationMeta } from '@msfa-models/pagination-meta.model'; import { Sort } from '@msfa-models/sort.model'; -import { IconType } from '@msfa-enums/icon-type.enum'; -import { ErrorSeverity } from '@msfa-enums/error-severity.enum'; import { BehaviorSubject } from 'rxjs'; import { map } from 'rxjs/operators'; @@ -17,6 +17,7 @@ import { map } from 'rxjs/operators'; export class DeltagareListComponent { @Input() deltagare: DeltagareCompact[]; @Input() paginationMeta: PaginationMeta; + @Input() deltagareLoading: boolean; @Input() sort: Sort; @Output() sorted = new EventEmitter(); @Output() paginated = new EventEmitter(); diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.module.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.module.ts index df3879a..e9e5e60 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.module.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list.module.ts @@ -1,15 +1,16 @@ +import { DigiNgDialogModule } from '@af/digi-ng/_dialog/dialog'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; -import { DeltagareListComponent } from './deltagare-list.component'; import { IconModule } from '@msfa-shared/components/icon/icon.module'; -import { DigiNgDialogModule } from '@af/digi-ng/_dialog/dialog'; +import { LoaderModule } from '@msfa-shared/components/loader/loader.module'; import { DeltagareListHandelserDialogComponent } from './deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component'; +import { DeltagareListComponent } from './deltagare-list.component'; @NgModule({ schemas: [CUSTOM_ELEMENTS_SCHEMA], declarations: [DeltagareListComponent, DeltagareListHandelserDialogComponent], - imports: [CommonModule, RouterModule, IconModule, DigiNgDialogModule], + imports: [CommonModule, RouterModule, IconModule, LoaderModule, DigiNgDialogModule], exports: [DeltagareListComponent], }) export class DeltagareListModule {} diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.component.html index 8eefc44..19ba180 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.component.html @@ -17,16 +17,15 @@ (afOnChange)="setOnlyMyDeltagare($event.detail.target.checked)" > - - - + @@ -37,7 +36,7 @@ -

+

Inga deltagare hittades{{(onlyMyDeltagare$ | async) ? '. Bocka ur "Visa endast mina tilldelade deltagare" för att se deltagare som tillhör din organisation.' : ' som tillhör din organisation.' }}

diff --git a/apps/mina-sidor-fa/src/app/shared/models/api/params.model.ts b/apps/mina-sidor-fa/src/app/shared/models/api/params.model.ts index 1a321d9..43d7573 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/api/params.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/api/params.model.ts @@ -1,3 +1,24 @@ +import { SortOrder } from '@msfa-enums/sort-order.enum'; +import { DeltagareCompact } from '@msfa-models/deltagare.model'; +import { EmployeeCompactResponse } from './employee.response.model'; + export interface Params { [param: string]: string | string[]; } + +export interface PaginationParams { + page: number; + limit: number; + order: SortOrder; + search?: string; +} + +export interface DeltagareParams extends PaginationParams { + sort: keyof DeltagareCompact; + onlyMyDeltagare: boolean; +} + +export interface EmployeeParams extends PaginationParams { + sort: keyof EmployeeCompactResponse; + onlyEmployeesWithoutAuthorization: boolean; +} diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/deltagare.api.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/deltagare.api.service.ts index 5609558..d1053bc 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/api/deltagare.api.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/api/deltagare.api.service.ts @@ -8,20 +8,19 @@ import { DisabilityResponse } from '@msfa-models/api/disability.response.model'; import { DriversLicenseResponse } from '@msfa-models/api/drivers-license.response.model'; import { EducationsResponse } from '@msfa-models/api/educations.response.model'; import { HighestEducationResponse } from '@msfa-models/api/highest-education.response.model'; -import { Params } from '@msfa-models/api/params.model'; +import { DeltagareParams, Params } from '@msfa-models/api/params.model'; import { TranslatorResponse } from '@msfa-models/api/translator.response.model'; import { WorkExperiencesResponse } from '@msfa-models/api/work-experiences.response.model'; import { WorkLanguagesResponse } from '@msfa-models/api/work-languages.response.model'; import { Avrop, mapAvropResponseToAvrop } from '@msfa-models/avrop.model'; import { ContactInformation, mapResponseToContactInformation } from '@msfa-models/contact-information.model'; -import { DeltagareCompact, DeltagareCompactData, mapResponseToDeltagareCompact } from '@msfa-models/deltagare.model'; +import { DeltagareCompactData, mapResponseToDeltagareCompact } from '@msfa-models/deltagare.model'; import { Disability, mapResponseToDisability } from '@msfa-models/disability.model'; import { DriversLicense, mapResponseToDriversLicense } from '@msfa-models/drivers-license.model'; import { Education, mapResponseToEducation } from '@msfa-models/education.model'; import { CustomError, errorToCustomError } from '@msfa-models/error/custom-error'; import { HighestEducation, mapResponseToHighestEducation } from '@msfa-models/highest-education.model'; import { ReportsData } from '@msfa-models/reports.model'; -import { Sort } from '@msfa-models/sort.model'; import { mapResponseToWorkExperience, WorkExperience } from '@msfa-models/work-experience.model'; import { sortFromToDates } from '@msfa-utils/sort.util'; import { BehaviorSubject, Observable, of } from 'rxjs'; @@ -39,15 +38,11 @@ export class DeltagareApiService { constructor(private httpClient: HttpClient) {} - public fetchAllDeltagare$( - limit: number, - page: number, - sort: Sort, - onlyMyDeltagare?: boolean - ): Observable { + public fetchAllDeltagare$(deltagareParams: DeltagareParams): Observable { + const { sort, order, limit, page, onlyMyDeltagare } = deltagareParams; const params: Params = { - sort: sort.key as string, - order: sort.order as string, + sort, + order, limit: limit.toString(), page: page.toString(), }; diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts index 49be182..1e481ea 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts @@ -10,7 +10,7 @@ import { EmployeeResponse, EmployeesDataResponse, } from '@msfa-models/api/employee.response.model'; -import { Params } from '@msfa-models/api/params.model'; +import { EmployeeParams, Params } from '@msfa-models/api/params.model'; import { Employee, EmployeesData, @@ -23,15 +23,6 @@ import { ErrorService } from '@msfa-services/error.service'; import { BehaviorSubject, combineLatest, Observable, of, throwError } from 'rxjs'; import { catchError, distinctUntilChanged, filter, map, switchMap, take, tap } from 'rxjs/operators'; -interface EmployeeParams { - page: number; - limit: number; - sort: keyof EmployeeCompactResponse; - order: SortOrder; - search: string; - onlyEmployeesWithoutAuthorization: boolean; -} - @Injectable({ providedIn: 'root', }) @@ -167,12 +158,10 @@ export class EmployeeService extends UnsubscribeDirective { } public setSort(sort: keyof EmployeeCompactResponse): void { - const currentParams = this._params$.getValue(); - const currentSort = currentParams.sort; - const currentOrder = currentParams.order; - const order = currentSort === sort && currentOrder === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC; + const params = this._params$.getValue(); + const order = params.sort === sort && params.order === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC; - this._params$.next({ ...this._params$.getValue(), sort, order }); + this._params$.next({ ...params, sort, order }); } public setPage(page: number): void { diff --git a/apps/mina-sidor-fa/src/app/shared/services/deltagare.service.ts b/apps/mina-sidor-fa/src/app/shared/services/deltagare.service.ts index 1f39dea..7efa82d 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/deltagare.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/deltagare.service.ts @@ -1,49 +1,51 @@ import { Injectable } from '@angular/core'; import { SortOrder } from '@msfa-enums/sort-order.enum'; +import { DeltagareParams } from '@msfa-models/api/params.model'; import { DeltagareCompact, DeltagareCompactData } from '@msfa-models/deltagare.model'; import { Sort } from '@msfa-models/sort.model'; -import { BehaviorSubject, combineLatest, Observable } from 'rxjs'; -import { switchMap } from 'rxjs/operators'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { map, switchMap } from 'rxjs/operators'; import { DeltagareApiService } from './api/deltagare.api.service'; @Injectable({ providedIn: 'root', }) export class DeltagareService { - private _limit$ = new BehaviorSubject(20); - private _page$ = new BehaviorSubject(1); - private _sort$ = new BehaviorSubject>({ key: 'fullName', order: SortOrder.ASC }); - public sort$: Observable> = this._sort$.asObservable(); - private _onlyMyDeltagare$ = new BehaviorSubject(false); - public onlyMyDeltagare$: Observable = this._onlyMyDeltagare$.asObservable(); + private _params$ = new BehaviorSubject({ + page: 1, + limit: 20, + sort: 'fullName', + order: SortOrder.ASC, + onlyMyDeltagare: false, + }); + public sort$: Observable> = this._params$.pipe( + map(({ sort, order }) => ({ key: sort, order })) + ); + public onlyMyDeltagare$: Observable = this._params$.pipe(map(({ onlyMyDeltagare }) => onlyMyDeltagare)); public showUnauthorizedError$: Observable = this.deltagareApiService.showUnauthorizedError$; public deltagareLoading$: Observable = this.deltagareApiService.deltagareLoading$; - public allDeltagareData$: Observable = combineLatest([ - this._limit$, - this._page$, - this._sort$, - this._onlyMyDeltagare$, - ]).pipe( - switchMap(([limit, page, sort, onlyMyDeltagare]) => - this.deltagareApiService.fetchAllDeltagare$(limit, page, sort, onlyMyDeltagare) - ) + public allDeltagareData$: Observable = this._params$.pipe( + switchMap(params => this.deltagareApiService.fetchAllDeltagare$(params)) ); constructor(private deltagareApiService: DeltagareApiService) {} - public setSort(newSortKey: keyof DeltagareCompact): void { - const currentSort = this._sort$.getValue(); - const order = - currentSort.key === newSortKey && currentSort.order === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC; + public setSort(sort: keyof DeltagareCompact): void { + const params = this._params$.getValue(); + const order = params.sort === sort && params.order === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC; - this._sort$.next({ key: newSortKey, order }); + this._params$.next({ + ...params, + sort, + order, + }); } public setPage(page: number): void { - this._page$.next(page); + this._params$.next({ ...this._params$.getValue(), page }); } public setOnlyMyDeltagare(value: boolean): void { - this._onlyMyDeltagare$.next(value); + this._params$.next({ ...this._params$.getValue(), onlyMyDeltagare: value, page: 1 }); } } diff --git a/apps/mina-sidor-fa/src/assets/CHANGELOG.md b/apps/mina-sidor-fa/src/assets/CHANGELOG.md index 5cc02c4..cf71ad8 100644 --- a/apps/mina-sidor-fa/src/assets/CHANGELOG.md +++ b/apps/mina-sidor-fa/src/assets/CHANGELOG.md @@ -7,6 +7,14 @@ - **avrop:** Now showing spårnamn instead of spårkod inside avrop. [TV-691](https://jira.arbetsformedlingen.se/browse/TV-691) - **avrop:** Fixed error-state on handledare select. [TV-699](https://jira.arbetsformedlingen.se/browse/TV-699) - **avrop:** Several bugfixes related to avrop. [TV-701](https://jira.arbetsformedlingen.se/browse/TV-701) +- **employees/deltagare:** Fixed issue with pagination inside employees and deltagare. [TV-676](https://jira.arbetsformedlingen.se/browse/TV-676) +- **deltagare:** Now handling undefined phonenumbers. [TV-696](https://jira.arbetsformedlingen.se/browse/TV-696) +- **avrop:** Text-changes to avrop. [TV-687](https://jira.arbetsformedlingen.se/browse/TV-687) + +### Features + +- **deltagare:** New column "Effekt" inside händelser. [TV-703](https://jira.arbetsformedlingen.se/browse/TV-703) +- **accessibility:** Added shortcomings to the tillgänglighetsredogörelsen. [TV-698](https://jira.arbetsformedlingen.se/browse/TV-698) ## [2.0.0](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/compare/diff?targetBranch=refs%2Ftags%2Fv1.5.0&sourceBranch=refs%2Ftags%2Fv2.0.0) (2021-09-24)