From 5ebc60f8fa083839b86996492e16051f9d60bf3e Mon Sep 17 00:00:00 2001 From: Florent POITTEVIN <poittevin.florent@gmail.com> Date: Wed, 3 Jun 2020 14:14:22 +0200 Subject: [PATCH] fix: sort org unit list by name on deposit and fix infinite load --- .../routables/deposit-list/deposit-list.routable.html | 1 + .../routables/deposit-list/deposit-list.routable.ts | 7 ++++++- .../deposit-authorized-organizational-unit.state.ts | 6 +++++- .../shared-searchable-abstract-content.presentational.ts | 5 +++-- .../shared-searchable-multi-select.presentational.ts | 4 ++++ .../shared-searchable-single-select.presentational.ts | 4 ++++ 6 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/app/features/deposit/components/routables/deposit-list/deposit-list.routable.html b/src/app/features/deposit/components/routables/deposit-list/deposit-list.routable.html index 0dc5a8843..8285270af 100644 --- a/src/app/features/deposit/components/routables/deposit-list/deposit-list.routable.html +++ b/src/app/features/deposit/components/routables/deposit-list/deposit-list.routable.html @@ -44,6 +44,7 @@ solidifyValidation [resourceNameSpace]="depositAuthorizedOrganizationalUnitNameSpace" [state]="depositAuthorizedOrganizationalUnitState" + [sort]="depositAuthorizedOrganizationalUnitSort" [formControl]="fd" [canDeleteValue]="false" [labelKey]="'name'" diff --git a/src/app/features/deposit/components/routables/deposit-list/deposit-list.routable.ts b/src/app/features/deposit/components/routables/deposit-list/deposit-list.routable.ts index bccb221e5..6a27f5ec8 100644 --- a/src/app/features/deposit/components/routables/deposit-list/deposit-list.routable.ts +++ b/src/app/features/deposit/components/routables/deposit-list/deposit-list.routable.ts @@ -70,6 +70,7 @@ import { isNullOrUndefined, isUndefined, MappingObjectUtil, + MARK_AS_TRANSLATABLE, MemoizedUtil, OrderEnum, Override, @@ -79,7 +80,7 @@ import { ResourceNameSpace, ResourceState, SolidifyValidator, - MARK_AS_TRANSLATABLE, + Sort, } from "solidify-frontend"; @Component({ @@ -97,6 +98,10 @@ export class DepositListRoutable extends SharedAbstractListRoutable<Deposit, Dep readonly KEY_ORGANIZATIONAL_UNIT: keyof Deposit & string = "organizationalUnitId"; readonly KEY_STATUS: keyof Deposit & string = "status"; + depositAuthorizedOrganizationalUnitSort: Sort = { + field: "name" as keyof OrganizationalUnit, + order: OrderEnum.ascending, + }; depositAuthorizedOrganizationalUnitNameSpace: ResourceNameSpace = depositAuthorizedOrganizationalUnitNameSpace; depositAuthorizedOrganizationalUnitState: typeof DepositAuthorizedOrganizationalUnitState = DepositAuthorizedOrganizationalUnitState; diff --git a/src/app/features/deposit/stores/authorized-organizational-unit/deposit-authorized-organizational-unit.state.ts b/src/app/features/deposit/stores/authorized-organizational-unit/deposit-authorized-organizational-unit.state.ts index 0fc6a0942..6d4e04189 100644 --- a/src/app/features/deposit/stores/authorized-organizational-unit/deposit-authorized-organizational-unit.state.ts +++ b/src/app/features/deposit/stores/authorized-organizational-unit/deposit-authorized-organizational-unit.state.ts @@ -14,6 +14,7 @@ import { defaultResourceStateInitValue, MappingObjectUtil, NotificationService, + OrderEnum, QueryParameters, ResourceState, ResourceStateModel, @@ -30,7 +31,10 @@ export const defaultDepositAuthorizedOrgUnitValue: () => DepositAuthorizedOrgani // WARNING : IN SOME CASE WE NEED TO FILTER TO GET ONLY OPENED ORG UNIT const getQueryParameter = () => { - const queryParameters = new QueryParameters(environment.defaultEnumValuePageSizeLazyLoad); + const queryParameters = new QueryParameters(environment.defaultEnumValuePageSizeLazyLoad, { + field: "name" as keyof OrganizationalUnit, + order: OrderEnum.ascending, + }); MappingObjectUtil.set(queryParameters.search.searchItems, "openOnly", "true"); return queryParameters; }; diff --git a/src/app/shared/components/presentationals/shared-searchable-abstract-content/shared-searchable-abstract-content.presentational.ts b/src/app/shared/components/presentationals/shared-searchable-abstract-content/shared-searchable-abstract-content.presentational.ts index 10d0e7e82..72fd14db3 100644 --- a/src/app/shared/components/presentationals/shared-searchable-abstract-content/shared-searchable-abstract-content.presentational.ts +++ b/src/app/shared/components/presentationals/shared-searchable-abstract-content/shared-searchable-abstract-content.presentational.ts @@ -66,7 +66,8 @@ export abstract class SharedSearchableAbstractContentPresentational<TResource ex } const currentPosition = this._elementRef.nativeElement.scrollTop + this._elementRef.nativeElement.offsetHeight; const maxPosition = this._elementRef.nativeElement.scrollHeight; - if (currentPosition === maxPosition) { + + if (currentPosition >= maxPosition) { this.loadNextChunk(); } } @@ -158,7 +159,7 @@ export abstract class SharedSearchableAbstractContentPresentational<TResource ex } private _dispatchInitDataLoad(): void { - const queryParameters = new QueryParameters(this._pageSize); + const queryParameters = new QueryParameters(this._pageSize, this.host.sort); if (isNotNullNorUndefined(this.host.extraSearchQueryParam)) { queryParameters.search.searchItems = MappingObjectUtil.copy(this.host.extraSearchQueryParam); } diff --git a/src/app/shared/components/presentationals/shared-searchable-multi-select/shared-searchable-multi-select.presentational.ts b/src/app/shared/components/presentationals/shared-searchable-multi-select/shared-searchable-multi-select.presentational.ts index 83d898337..e3b4eb603 100644 --- a/src/app/shared/components/presentationals/shared-searchable-multi-select/shared-searchable-multi-select.presentational.ts +++ b/src/app/shared/components/presentationals/shared-searchable-multi-select/shared-searchable-multi-select.presentational.ts @@ -39,6 +39,7 @@ import { ResourceNameSpace, ResourceState, ResourceStateModel, + Sort, Type, } from "solidify-frontend"; @@ -68,6 +69,9 @@ export class SharedSearchableMultiSelectPresentational<TStateModel extends Resou @Input() searchKey: string; + @Input() + sort: Sort | undefined; + @ViewChild("inputElementRef", {static: true}) inputElementRef: ElementRef; diff --git a/src/app/shared/components/presentationals/shared-searchable-single-select/shared-searchable-single-select.presentational.ts b/src/app/shared/components/presentationals/shared-searchable-single-select/shared-searchable-single-select.presentational.ts index 94241210a..e04e55ad5 100644 --- a/src/app/shared/components/presentationals/shared-searchable-single-select/shared-searchable-single-select.presentational.ts +++ b/src/app/shared/components/presentationals/shared-searchable-single-select/shared-searchable-single-select.presentational.ts @@ -57,6 +57,7 @@ import { ResourceNameSpace, ResourceState, ResourceStateModel, + Sort, Type, } from "solidify-frontend"; @@ -124,6 +125,9 @@ export class SharedSearchableSingleSelectPresentational<TStateModel extends Reso @Input() defaultValue: string | undefined; + @Input() + sort: Sort | undefined; + isDefaultValueSelected: boolean = false; private url: string; -- GitLab