From 53ffb2081458b49b56aa89c60a20cad1c129fa0d Mon Sep 17 00:00:00 2001 From: Florent Poittevin <florent.poittevin@unige.ch> Date: Wed, 29 Jan 2020 15:13:04 +0100 Subject: [PATCH] feat: simplify home archive list for a simplest way to retrieve org unit name --- package-lock.json | 6 +- package.json | 2 +- .../home-search/home-search.routable.html | 4 +- .../home-search/home-search.routable.ts | 79 ++++++------------- src/app/features/home/models/archive.model.ts | 2 +- src/app/features/home/stores/home.state.ts | 3 +- .../shared-data-table.presentational.scss | 1 - 7 files changed, 33 insertions(+), 64 deletions(-) diff --git a/package-lock.json b/package-lock.json index 798845387..141859eeb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11327,9 +11327,9 @@ } }, "solidify-frontend": { - "version": "0.2.23", - "resolved": "https://nexus.unige.ch/repository/npm-all/solidify-frontend/-/solidify-frontend-0.2.23.tgz", - "integrity": "sha512-FmmOmBbFqiPEbzTyhPkuRdzHzyz+duB4VBLWDl741Y2Pp7konxtRrZgCde3TApSXuUF54i/xgih538bfFNkJoQ==", + "version": "0.2.24", + "resolved": "https://nexus.unige.ch/repository/npm-all/solidify-frontend/-/solidify-frontend-0.2.24.tgz", + "integrity": "sha512-oeiYewq+S1hb++TrG5+yI7VEM2a3w9yggr9ZLGC51t3qVqnp2wS/YR17MlaB1ST2vXVc6gDNzXnz7D2IIS1K5g==", "requires": { "tslib": "^1.9.0" } diff --git a/package.json b/package.json index f124c3614..7f9a7cdce 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "primeicons": "2.0.0", "primeng": "8.0.4", "rxjs": "6.5.3", - "solidify-frontend": "0.2.23", + "solidify-frontend": "0.2.24", "streamsaver": "2.0.3", "sync-pom-version-to-package": "1.3.1", "ts-key-enum": "2.0.0", diff --git a/src/app/features/home/components/routables/home-search/home-search.routable.html b/src/app/features/home/components/routables/home-search/home-search.routable.html index ff0594945..f9c5fc134 100644 --- a/src/app/features/home/components/routables/home-search/home-search.routable.html +++ b/src/app/features/home/components/routables/home-search/home-search.routable.html @@ -27,11 +27,11 @@ </div> </div> -<div [dlcmSpinner]="(isLoadingObs | async) || (isLoadingOrgUnitObs | async)" +<div [dlcmSpinner]="(isLoadingObs | async)" class="wrapper" > <dlcm-shared-data-table *ngIf="(listAdaptedObs | async).length > 0;" - [isLoading]="(isLoadingObs | async) || (isLoadingOrgUnitObs | async)" + [isLoading]="isLoadingObs | async" [columns]="columns" [datas]="listAdaptedObs | async" [skipInitialQuery]="true" diff --git a/src/app/features/home/components/routables/home-search/home-search.routable.ts b/src/app/features/home/components/routables/home-search/home-search.routable.ts index cb8afe28e..b8739d3e2 100644 --- a/src/app/features/home/components/routables/home-search/home-search.routable.ts +++ b/src/app/features/home/components/routables/home-search/home-search.routable.ts @@ -17,33 +17,25 @@ import {ArchiveMetadata} from "@app/shared/models/business/archive-metadata.mode import {DataTableColumns} from "@app/shared/models/data-table-columns.model"; import {LocalStateModel} from "@app/shared/models/local-state.model"; import {MetadataUtil} from "@app/shared/utils/metadata.util"; -import {HomeOrgUnitAction} from "@home/stores/organizational-unit/home-organizational-unit.action"; -import {HomeOrganizationalUnitState} from "@home/stores/organizational-unit/home-organizational-unit.state"; import {TranslateService} from "@ngx-translate/core"; import {Navigate} from "@ngxs/router-plugin"; import { Actions, - ofActionCompleted, Select, Store, } from "@ngxs/store"; +import {DataTableComponentEnum} from "@shared/enums/data-table-component.enum"; import { BehaviorSubject, - combineLatest, Observable, } from "rxjs"; -import {filter} from "rxjs/internal/operators/filter"; import {tap} from "rxjs/internal/operators/tap"; import {distinctUntilChanged} from "rxjs/operators"; import { - ArrayUtil, isEmptyArray, isNullOrUndefined, - isTrue, - MemoizedUtil, OrderEnum, QueryParameters, - ResourceState, StoreUtil, TRANSLATE, } from "solidify-frontend"; @@ -82,10 +74,11 @@ export class HomeSearchRoutable extends SharedAbstractPresentational implements this.columns = [ { - field: "organizationalUnit", + field: "organizationalUnitId", header: TRANSLATE("access.table.header.organizationalUnit"), type: FieldTypeEnum.string, order: OrderEnum.none, + component: DataTableComponentEnum.organizationalUnitName, isSortable: false, isFilterable: false, }, @@ -115,55 +108,31 @@ export class HomeSearchRoutable extends SharedAbstractPresentational implements }, ]; - this.subscribe(this._actions$.pipe( - ofActionCompleted(HomeOrgUnitAction.GetByListIdSuccess), - distinctUntilChanged(), - filter(r => isTrue(r.result.successful)), - tap((result) => { - const listArchives = this.store.selectSnapshot(HomeState.list); - const searchScope = this.store.selectSnapshot(HomeState.searchScope); - const listOrgUnit = ResourceState.listSnapshot(this.store, HomeOrganizationalUnitState); - const newList: Archive[] = []; - listArchives.forEach((archive: ArchiveMetadata) => { - newList.push({ - resId: archive.resId, - organizationalUnit: this.getOrganizationalUnitNameFromId(MetadataUtil.getOrganizationalUnitResId(archive.metadata), listOrgUnit), - title: MetadataUtil.getTitle(searchScope, archive.metadata), - yearPublicationDate: MetadataUtil.getPublicationYear(searchScope, archive.metadata), - accessLevel: MetadataUtil.getAccessLevel(searchScope, archive.metadata) as Deposit.AccessEnum, + this.subscribe(this.listArchiveMetadataObs + .pipe( + distinctUntilChanged(), + tap((listArchives) => { + if (isNullOrUndefined(listArchives) || isEmptyArray(listArchives)) { + this.listAdaptedBS.next([]); + return; + } + const searchScope = this.store.selectSnapshot(HomeState.searchScope); + const newList: Archive[] = []; + listArchives.forEach((archive: ArchiveMetadata) => { + newList.push({ + resId: archive.resId, + organizationalUnitId: MetadataUtil.getOrganizationalUnitResId(archive.metadata), + title: MetadataUtil.getTitle(searchScope, archive.metadata), + yearPublicationDate: MetadataUtil.getPublicationYear(searchScope, archive.metadata), + accessLevel: MetadataUtil.getAccessLevel(searchScope, archive.metadata) as Deposit.AccessEnum, + }); }); - }); - this.listAdaptedBS.next(newList); - }), - )); - - this.subscribe( - combineLatest(this.listArchiveMetadataObs, this.searchScopeObs) - .pipe( - distinctUntilChanged(), - tap(([listArchives, searchScope]) => { - if (isNullOrUndefined(listArchives) || isEmptyArray(listArchives)) { - this.listAdaptedBS.next([]); - return; - } - let listOrgUnitResId = listArchives.map(a => MetadataUtil.getOrganizationalUnitResId(a.metadata)); - listOrgUnitResId = ArrayUtil.distinct(listOrgUnitResId); - this.store.dispatch(new HomeOrgUnitAction.GetByListId(listOrgUnitResId, true)); - }), - ), + this.listAdaptedBS.next(newList); + }), + ), ); } - getOrganizationalUnitNameFromId(resId: string, listOrgUnits: AccessOrganizationalUnit[]): string { - if (!isNullOrUndefined(listOrgUnits)) { - const orgUnits = listOrgUnits.find(o => o.resId === resId); - if (orgUnits) { - return orgUnits.name; - } - } - return this.translate.instant("access.organizationalUnitNotFound"); - } - search(searchTerm: string, queryParameters?: QueryParameters): void { this.store.dispatch(new HomeAction.Search(true, searchTerm, queryParameters)); } diff --git a/src/app/features/home/models/archive.model.ts b/src/app/features/home/models/archive.model.ts index 0dff2d828..4c4869480 100644 --- a/src/app/features/home/models/archive.model.ts +++ b/src/app/features/home/models/archive.model.ts @@ -2,7 +2,7 @@ import {Deposit} from "@app/generated-api"; export interface Archive { resId?: string; - organizationalUnit: string; + organizationalUnitId: string; title: string; yearPublicationDate: string; accessLevel: Deposit.AccessEnum; diff --git a/src/app/features/home/stores/home.state.ts b/src/app/features/home/stores/home.state.ts index d1f3f73c7..aed677795 100644 --- a/src/app/features/home/stores/home.state.ts +++ b/src/app/features/home/stores/home.state.ts @@ -170,7 +170,8 @@ export class HomeState { }); const pathFilter = "query"; - MappingObjectUtil.set(queryParameters.search.searchItems, pathFilter, searchString); + queryParameters = QueryParametersUtil.clone(queryParameters); + MappingObjectUtil.set(QueryParametersUtil.getSearchItems(queryParameters), pathFilter, searchString); if (searchString === StringUtil.stringEmpty) { ctx.dispatch(new HomeAction.SearchSuccess(null)); diff --git a/src/app/shared/components/presentationals/shared-data-table/shared-data-table.presentational.scss b/src/app/shared/components/presentationals/shared-data-table/shared-data-table.presentational.scss index 929574941..4ad2325ff 100644 --- a/src/app/shared/components/presentationals/shared-data-table/shared-data-table.presentational.scss +++ b/src/app/shared/components/presentationals/shared-data-table/shared-data-table.presentational.scss @@ -71,7 +71,6 @@ $inputGroupTextColor: #444444; top: 0; z-index: $z-index-sticky; background-color: $white; - // TODO Manage shadow } } -- GitLab