From 290faaef1d774c235d6df266842e8c73253f77ac Mon Sep 17 00:00:00 2001 From: Homada Boumedane <homada.boumedane@unige.ch> Date: Thu, 16 Apr 2020 10:45:25 +0200 Subject: [PATCH] fix(portal): deposit Reserving a DOI on a deposit containing archive collections will make the submit button disappear Closes DLCM-1188 --- .../deposit-detail-edit.routable.ts | 21 +++++++++++++------ src/app/shared/services/security.service.ts | 11 +++------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/app/features/deposit/components/routables/deposit-detail-edit/deposit-detail-edit.routable.ts b/src/app/features/deposit/components/routables/deposit-detail-edit/deposit-detail-edit.routable.ts index ff1fdab46..f0a47da16 100644 --- a/src/app/features/deposit/components/routables/deposit-detail-edit/deposit-detail-edit.routable.ts +++ b/src/app/features/deposit/components/routables/deposit-detail-edit/deposit-detail-edit.routable.ts @@ -99,7 +99,6 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable< @Select(AppState.currentOrgUnitPersonRoleResId) currentPersonRoleObs: Observable<string[]>; @Select(AppState.currentOrgUnitPerson) currentPersonObs: Observable<PersonRole>; @Select(AppState.currentUserApplicationRolesResId) currentUserApplicationRoleObs: Observable<string[]>; - formPresentationalObs: Observable<DepositFormPresentational | undefined> = MemoizedUtil.select(this._store, DepositState, state => state.formPresentational); @ViewChild("matTabGroup") readonly matTabGroup: MatTabGroup; @@ -204,7 +203,7 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable< { color: "primary", icon: "edit", - displayCondition: current => !this.isEdit && /*(this.canDoAlterationActions || this.canDoValidatorActions) && */ !isNullOrUndefined(current) && (current.status === Deposit.StatusEnum.INVALIDATION || current.status === Deposit.StatusEnum.REJECTED || current.status === Deposit.StatusEnum.INERROR), + displayCondition: current => !this.isEdit && !isNullOrUndefined(current) && (current.status === Deposit.StatusEnum.INVALIDATION || current.status === Deposit.StatusEnum.REJECTED || current.status === Deposit.StatusEnum.INERROR), callback: () => this.backToRevision(), disableCondition: current => isNullOrUndefined(current), labelToTranslate: TRANSLATE("deposit.backToEdit"), @@ -213,7 +212,7 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable< { color: "primary", icon: "library_books", - displayCondition: current => !this.isEdit && this.canDoAlterationActions && this.canReserveDoiAction, + displayCondition: current => this.displayReserveDOIButton(), callback: () => this.reserveDOI(), disableCondition: current => isNullOrUndefined(current), labelToTranslate: TRANSLATE("deposit.reserveDOI"), @@ -223,7 +222,7 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable< { color: "primary", icon: "done_all", - displayCondition: current => !this.isEdit && this.canDoAlterationActions && isFalse(MemoizedUtil.isLoadingSnapshot(this._store, DepositState)) && this.canSubmitAction, + displayCondition: current => this.displaySubmitButton(), callback: () => this.submit(), disableCondition: current => isNullOrUndefined(current), labelToTranslate: TRANSLATE("deposit.submit"), @@ -347,10 +346,12 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable< && MemoizedUtil.selectSnapshot(this._store, DepositDataFileState, state => state.numberFilesExcluded === 0) && MemoizedUtil.selectSnapshot(this._store, DepositDataFileState, state => state.numberFilesNotReady > 0), })).add(() => { - this.canSubmitAction = MemoizedUtil.selectSnapshot(this._store, DepositDataFileState, state => state.numberFilesInError === 0) + this.canSubmitAction = + (MemoizedUtil.selectSnapshot(this._store, DepositDataFileState, state => state.numberFilesInError === 0) && MemoizedUtil.selectSnapshot(this._store, DepositDataFileState, state => state.numberFiles > 0) && MemoizedUtil.selectSnapshot(this._store, DepositDataFileState, state => state.numberFilesExcluded === 0) - && MemoizedUtil.selectSnapshot(this._store, DepositDataFileState, state => state.numberFilesIgnored === 0); + && MemoizedUtil.selectSnapshot(this._store, DepositDataFileState, state => state.numberFilesIgnored === 0)) + || MemoizedUtil.selectSnapshot(this._store, DepositCollectionState, state => state.numberCollections > 0); this.afterChangeInFiles = false; }); } @@ -408,6 +409,14 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable< return !isNullOrUndefined(personRole) && !isNullOrUndefined(deposit) && personRole.orgUnitId === deposit.organizationalUnitId; } + private displaySubmitButton(): boolean { + return !this.isEdit && this.canDoAlterationActions && isFalse(MemoizedUtil.isLoadingSnapshot(this._store, DepositState)) && this.canSubmitAction; + } + + private displayReserveDOIButton(): boolean { + return !this.isEdit && this.canDoAlterationActions && this.canReserveDoiAction; + } + @Override() edit(): void { this._store.dispatch(new Navigate([RoutesEnum.deposit, this._orgUnitResId, DepositRoutesEnum.detail, this._resId, DepositRoutesEnum.metadata, DepositRoutesEnum.edit])); diff --git a/src/app/shared/services/security.service.ts b/src/app/shared/services/security.service.ts index 7095293ea..8421ee8ad 100644 --- a/src/app/shared/services/security.service.ts +++ b/src/app/shared/services/security.service.ts @@ -167,17 +167,12 @@ export class SecurityService { if (isNullOrUndefined(applicationRoles)) { return false; } - if (applicationRoles.includes(UserApplicationRoleEnum.admin) || applicationRoles.includes(UserApplicationRoleEnum.root)) { - return true; - } - return false; + return applicationRoles.includes(UserApplicationRoleEnum.admin) || applicationRoles.includes(UserApplicationRoleEnum.root); + } public isMemberOfOrgUnit(orgUnitId: string): boolean { const listAuthorizedOrgUnitId = this._store.selectSnapshot(AppState.listAuthorizedOrganizationalUnitId); - if (listAuthorizedOrgUnitId.includes(orgUnitId)) { - return true; - } - return false; + return listAuthorizedOrgUnitId.includes(orgUnitId); } } -- GitLab