Skip to content
Snippets Groups Projects
Commit 611719b5 authored by Florent Poittevin's avatar Florent Poittevin
Browse files

fix: deposit banner and submission button when no file

parent 29a30ddc
No related branches found
No related tags found
No related merge requests found
<div class="alert-wrapper">
<div *ngIf="filesRetrieve(numberFilesInErrorObs | async, numberFilesObs | async)
&& !canSubmit((currentObs | async)?.status, numberFilesInErrorObs | async, numberFilesObs | async)"
&& !canSubmitAction"
class="alert warn"
>
{{message| translate}}
......@@ -57,7 +57,7 @@
<mat-icon>delete</mat-icon>
{{KEY_DELETE_BUTTON | translate}}
</button>
<button *ngIf="canDoAlterationActions && canSubmit((currentObs | async)?.status, numberFilesInErrorObs | async, numberFilesObs | async)"
<button *ngIf="canDoAlterationActions && canSubmitAction"
mat-flat-button
color="primary"
[disabled]="!(currentObs| async)"
......
......@@ -85,6 +85,7 @@ export class DepositDetailRoutable extends SharedAbstractDetailRoutable<DepositE
tabSelected: DepositTabEnum;
canDoValidatorActions: boolean = false;
canDoAlterationActions: boolean = false;
canSubmitAction: boolean = false;
readonly KEY_PARAM_NAME: string = "title";
readonly KEY_DELETE_BUTTON: string = TRANSLATE("deposit.delete");
......@@ -133,9 +134,31 @@ export class DepositDetailRoutable extends SharedAbstractDetailRoutable<DepositE
filter(deposit => !isNullOrUndefined(deposit) && deposit.resId === this._resId),
take(1),
tap(deposit => {
let canSubmitAction = deposit.status === Deposit.StatusEnum.INPROGRESS;
const canDoValidatorActions = this._securityService.depositInValidationStep(deposit);
const canDoAlterationActions = this._securityService.depositInEditionStep(deposit);
this.subscribe(combineLatest(this.numberFilesObs, this.numberFilesInErrorObs).pipe(
distinctUntilChanged(),
filter(([numberFiles, numberFilesInError]) => !isNullOrUndefined(numberFiles) && !isNullOrUndefined(numberFilesInError)),
tap(([numberFiles, numberFilesInError]) => {
if (numberFiles === 0) {
this.message = TRANSLATE("deposit.error.noFile");
canSubmitAction = false;
}
if (numberFilesInError > 0) {
this.message = TRANSLATE("deposit.error.fileInError");
canSubmitAction = false;
}
if (isTrue(canSubmitAction)) {
this.canSubmitAction = true;
}
this._changeDetector.detectChanges();
}),
));
if (this._securityService.isRootOrAdmin()) {
this.canDoValidatorActions = canDoValidatorActions;
this.canDoAlterationActions = canDoAlterationActions;
......@@ -192,24 +215,6 @@ export class DepositDetailRoutable extends SharedAbstractDetailRoutable<DepositE
return !isNullOrUndefined(personRole) && !isNullOrUndefined(deposit) && personRole.orgUnitId === deposit.organizationalUnitId;
}
canSubmit(currentStatus: Deposit.StatusEnum | undefined, numberFilesInError: number, numberFiles: number): boolean {
if (currentStatus !== Deposit.StatusEnum.INPROGRESS) {
return false;
}
if (numberFiles === 0) {
this.message = TRANSLATE("deposit.error.noFile");
return false;
}
if (numberFilesInError > 0) {
this.message = TRANSLATE("deposit.error.fileInError");
return false;
}
return true;
}
edit(): void {
const tabRouteSelected = DepositHelper.getTabRouteSelected(this.route);
this.store.dispatch(new Navigate([RoutesEnum.depositEdit, this._resId, tabRouteSelected]));
......
......@@ -114,7 +114,7 @@ export namespace DepositDataFileAction {
}
export class GetNumberFiles extends BaseAction {
static readonly type: string = `[${state}] Get Number File Error`;
static readonly type: string = `[${state}] Get Number File`;
constructor(public parentId: string) {
super();
......@@ -122,7 +122,7 @@ export namespace DepositDataFileAction {
}
export class GetNumberFilesSuccess extends BaseSubAction<GetNumberFiles> {
static readonly type: string = `[${state}] Get Number File Error Success`;
static readonly type: string = `[${state}] Get Number File Success`;
constructor(public parentAction: GetNumberFiles, public numberFiles: number) {
super(parentAction);
......@@ -130,7 +130,7 @@ export namespace DepositDataFileAction {
}
export class GetNumberFilesFail extends BaseSubAction<GetNumberFiles> {
static readonly type: string = `[${state}] Get Number File Error Fail`;
static readonly type: string = `[${state}] Get Number File Fail`;
}
export class GetNumberFilesInError extends BaseAction {
......
......@@ -216,14 +216,13 @@ export class DepositDataFileState extends CompositionState<DepositDataFile> {
});
const queryParameters = new QueryParameters(0);
queryParameters.search.searchItems.set("status", DepositDataFileStateEnum.IN_ERROR);
return this.apiService.get<DepositDataFile>(`${this._urlResource}/${action.parentId}/${this._resourceName}`, queryParameters)
.pipe(
tap(collection => {
ctx.dispatch(new DepositDataFileAction.GetNumberFilesInErrorSuccess(action, collection._page.totalItems));
ctx.dispatch(new DepositDataFileAction.GetNumberFilesSuccess(action, collection._page.totalItems));
}),
catchError(error => {
ctx.dispatch(new DepositDataFileAction.GetNumberFilesInErrorFail(action));
ctx.dispatch(new DepositDataFileAction.GetNumberFilesFail(action));
throw error;
}),
);
......
......@@ -1031,4 +1031,4 @@
}
}
}
}
}
\ No newline at end of file
......@@ -1031,4 +1031,4 @@
}
}
}
}
}
\ No newline at end of file
......@@ -1031,4 +1031,4 @@
}
}
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment