Fixed issue with sorting

This commit is contained in:
Erik Tiekstra
2021-08-18 14:55:41 +02:00
parent 456f305f0e
commit aa55ee80f4
4 changed files with 23 additions and 19 deletions

View File

@@ -1,5 +1,6 @@
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
import { SortOrder } from '@msfa-enums/sort-order.enum';
import { EmployeeCompactResponse } from '@msfa-models/api/employee.response.model';
import { EmployeeCompact } from '@msfa-models/employee.model';
import { PaginationMeta } from '@msfa-models/pagination-meta.model';
import { Sort } from '@msfa-models/sort.model';
@@ -13,19 +14,19 @@ import { Sort } from '@msfa-models/sort.model';
export class EmployeesListComponent {
@Input() employees: EmployeeCompact[];
@Input() paginationMeta: PaginationMeta;
@Input() sort: Sort<keyof EmployeeCompact>;
@Output() sorted = new EventEmitter<keyof EmployeeCompact>();
@Input() sort: Sort<keyof EmployeeCompactResponse>;
@Output() sorted = new EventEmitter<keyof EmployeeCompactResponse>();
@Output() paginated = new EventEmitter<number>();
columnHeaders: { label: string; key: keyof EmployeeCompact }[] = [
{ label: 'Namn', key: 'fullName' },
columnHeaders: { label: string; key: keyof EmployeeCompactResponse }[] = [
{ label: 'Namn', key: 'name' },
{
label: 'Tjänst',
key: 'tjanster',
key: 'tjanst',
},
{
label: 'Utförandeverksamheter',
key: 'utforandeVerksamheter',
key: 'utforandeVerksamhet',
},
];
@@ -52,7 +53,7 @@ export class EmployeesListComponent {
return end < this.count ? end : this.count;
}
handleSort(key: keyof EmployeeCompact): void {
handleSort(key: keyof EmployeeCompactResponse): void {
this.sorted.emit(key);
}

View File

@@ -1,6 +1,7 @@
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { IconType } from '@msfa-enums/icon-type.enum';
import { EmployeeCompact, EmployeesData } from '@msfa-models/employee.model';
import { EmployeeCompactResponse } from '@msfa-models/api/employee.response.model';
import { EmployeesData } from '@msfa-models/employee.model';
import { Sort } from '@msfa-models/sort.model';
import { EmployeeService } from '@msfa-services/api/employee.service';
import { BehaviorSubject, Observable } from 'rxjs';
@@ -15,7 +16,7 @@ export class EmployeesComponent {
private _searchValue$ = new BehaviorSubject<string>('');
private _onlyEmployeesWithoutAuthorization$ = new BehaviorSubject<boolean>(false);
employeesData$: Observable<EmployeesData> = this.employeeService.employeesData$;
sort$: Observable<Sort<keyof EmployeeCompact>> = this.employeeService.sort$;
sort$: Observable<Sort<keyof EmployeeCompactResponse>> = this.employeeService.sort$;
iconType = IconType;
constructor(private employeeService: EmployeeService) {}
@@ -32,7 +33,7 @@ export class EmployeesComponent {
this._searchValue$.next($event.detail.target.value);
}
handleEmployeesSort(key: keyof EmployeeCompact): void {
handleEmployeesSort(key: keyof EmployeeCompactResponse): void {
this.employeeService.setSort(key);
}

View File

@@ -4,11 +4,14 @@ import { ErrorType } from '@msfa-enums/error-type.enum';
import { SortOrder } from '@msfa-enums/sort-order.enum';
import { environment } from '@msfa-environment';
import { EmployeeInviteMockApiResponse } from '@msfa-models/api/employee-invite.response.model';
import { EmployeeResponse, EmployeesApiResponse } from '@msfa-models/api/employee.response.model';
import {
EmployeeCompactResponse,
EmployeeResponse,
EmployeesApiResponse,
} from '@msfa-models/api/employee.response.model';
import { EmployeeInviteMockaData } from '@msfa-models/employee-invite-mock-data.model';
import {
Employee,
EmployeeCompact,
EmployeesData,
mapEmployeeToRequestData,
mapResponseToEmployee,
@@ -27,8 +30,8 @@ export class EmployeeService {
private _apiUrl = `${environment.api.url}/users`;
private _limit$ = new BehaviorSubject<number>(20);
private _page$ = new BehaviorSubject<number>(1);
private _sort$ = new BehaviorSubject<Sort<keyof EmployeeCompact>>({ key: 'fullName', order: SortOrder.ASC });
public sort$: Observable<Sort<keyof EmployeeCompact>> = this._sort$.asObservable();
private _sort$ = new BehaviorSubject<Sort<keyof EmployeeCompactResponse>>({ key: 'name', order: SortOrder.ASC });
public sort$: Observable<Sort<keyof EmployeeCompactResponse>> = this._sort$.asObservable();
private _searchFilter$ = new BehaviorSubject<string>('');
private _onlyEmployeesWithoutAuthorization$ = new BehaviorSubject<boolean>(false);
@@ -47,7 +50,7 @@ export class EmployeeService {
private _fetchEmployees$(
limit: number,
page: number,
sort: Sort<keyof EmployeeCompact>,
sort: Sort<keyof EmployeeCompactResponse>,
searchFilter: string,
onlyEmployeesWithoutAuthorization?: boolean
): Observable<EmployeesData> {
@@ -94,7 +97,7 @@ export class EmployeeService {
this._onlyEmployeesWithoutAuthorization$.next(value);
}
public setSort(newSortKey: keyof EmployeeCompact): void {
public setSort(newSortKey: keyof EmployeeCompactResponse): void {
const currentSort = this._sort$.getValue();
const order =
currentSort.key === newSortKey && currentSort.order === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC;