From 696e7f6f6d8c9e3028f6e3c9fff5d0c55dfdf92a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Thu, 18 Apr 2024 00:22:45 +0300 Subject: [PATCH] Paginated entities service updates (sorting) --- .../services/paginated-entities.service.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/lib/listing/services/paginated-entities.service.ts b/src/lib/listing/services/paginated-entities.service.ts index b2e3146..ff8058a 100644 --- a/src/lib/listing/services/paginated-entities.service.ts +++ b/src/lib/listing/services/paginated-entities.service.ts @@ -13,7 +13,12 @@ interface PaginatedResponse { totalHits: number; } -interface PaginatedConfig { +export interface SortOption { + sortDirection?: 'ASC' | 'DESC'; + sortProperty?: string; +} + +interface PaginatedConfig extends SortOption { readonly options: Options; readonly page: number; readonly pageSize: number; @@ -67,11 +72,15 @@ export abstract class PaginatedEntitiesService< return this.loadPage(this._currentConfig.page); } - loadPage(page = 0, pageSize?: number, searchOptions?: SearchOptions): Observable { + loadPage(page = 0, pageSize?: number, searchOptions?: SearchOptions, sortOptions?: SortOption): Observable { const options = searchOptions ?? this._currentConfig.options; const size = pageSize ?? this._currentConfig.pageSize; + const sOptions = sortOptions ?? { + sortDirection: this._currentConfig.sortDirection, + sortProperty: this._currentConfig.sortProperty, + }; - return super._post>({ page, size, options }).pipe( + return super._post>({ page, size, options, ...sOptions }).pipe( tap( response => (this._currentConfig = { @@ -79,6 +88,8 @@ export abstract class PaginatedEntitiesService< page: response.page, pageSize: response.pageSize, totalHits: response.totalHits, + sortDirection: sOptions.sortDirection, + sortProperty: sOptions.sortProperty, }), ), map(response => response.data),