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

Add delete feature to deposit

parent 4c4401e6
No related branches found
No related tags found
1 merge request!10Fpo/crud deposit
Showing with 52 additions and 76 deletions
<h1 mat-dialog-title>{{'deposit.dialog.delete.title' | translate}}</h1>
<div mat-dialog-content>
<p>{{'deposit.dialog.delete.message' | translate:paramMessage}}</p>
</div>
<div mat-dialog-actions>
<button mat-button (click)="confirm()">{{'deposit.dialog.delete.confirm' | translate}}</button>
<button mat-button [mat-dialog-close]="" cdkFocusInitial>{{'deposit.dialog.delete.cancel' | translate}}</button>
</div>
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { DeleteDialog } from './delete.dialog';
describe('TestComponent', () => {
let component: DeleteDialog;
let fixture: ComponentFixture<DeleteDialog>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ DeleteDialog ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(DeleteDialog);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import {Component, OnInit, ChangeDetectionStrategy, Inject} from '@angular/core';
import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material';
import {Store} from '@ngxs/store';
import {BaseDirective} from '@app/shared/directives/base.directive';
import {DeleteDialogModel} from "@app/deposit/models/delete-dialog.model";
import {DepositDelete} from "@app/deposit/deposit.action";
import {ChangeDetectionStrategy, Component, Inject} from "@angular/core";
import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material";
import {DepositStateModel} from "@app/deposit/deposit.state";
import {DepositsModel} from "@app/generated-api";
import {AbstractDeleteDialog} from "@app/shared/dialogs/abstract-delete/abstract-delete.dialog";
import {StateEnum} from "@app/shared/enums/state.enum";
import {DeleteDialogModel} from "@app/shared/models/delete-dialog.model";
import {TRANSLATE} from "@app/shared/utils/translate.util";
import {Store} from "@ngxs/store";
@Component({
selector: 'dlcm-delete-dialog',
templateUrl: './delete.dialog.html',
styleUrls: ['./delete.dialog.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
selector: "dlcm-delete-dialog",
templateUrl: "../../../shared/dialogs/abstract-delete/abstract-delete.dialog.html",
styleUrls: ["../../../shared/dialogs/abstract-delete/abstract-delete.dialog.scss"],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DeleteDialog extends BaseDirective implements OnInit {
paramMessage = {title: ''};
export class DeleteDialog extends AbstractDeleteDialog<DepositsModel, DepositStateModel> {
protected readonly KEY_TITLE: string = TRANSLATE("deposit.dialog.delete.title");
protected readonly KEY_MESSAGE: string = TRANSLATE("deposit.dialog.delete.message");
protected readonly KEY_CONFIRM_BUTTON: string = TRANSLATE("deposit.dialog.delete.confirm");
protected readonly KEY_CANCEL_BUTTON: string = TRANSLATE("deposit.dialog.delete.cancel");
constructor(private store: Store,
private dialogRef: MatDialogRef<DeleteDialog>,
@Inject(MAT_DIALOG_DATA) public data: DeleteDialogModel) {
super();
}
ngOnInit() {
this.paramMessage.title = this.data.depositTitle;
}
confirm() {
this.store.dispatch(new DepositDelete(this.data.depositId));
this.dialogRef.close();
constructor(protected store: Store,
protected dialogRef: MatDialogRef<DeleteDialog>,
@Inject(MAT_DIALOG_DATA) public data: DeleteDialogModel,
) {
super(store, dialogRef, data, StateEnum.deposit);
}
}
......@@ -16,6 +16,7 @@ import {Store} from "@ngxs/store";
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DetailView extends AbstractDetailView<DepositsModel, DepositStateModel> {
readonly KEY_PARAM_NAME: string = "title";
readonly KEY_DELETE_BUTTON: string = TRANSLATE("deposit.delete");
readonly KEY_EDIT_BUTTON: string = TRANSLATE("deposit.edit");
......
......@@ -26,4 +26,5 @@ export class DeleteDialog extends AbstractDeleteDialog<OrganizationalUnitsModel,
) {
super(store, dialogRef, data, StateEnum.organizationalUnit);
}
}
......@@ -15,6 +15,7 @@ import {Store} from "@ngxs/store";
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DetailView extends AbstractDetailView<OrganizationalUnitsModel, OrganizationalUnitStateModel> {
readonly KEY_PARAM_NAME: string = "name";
readonly KEY_DELETE_BUTTON: string = TRANSLATE("organizationalUnit.delete");
readonly KEY_EDIT_BUTTON: string = TRANSLATE("organizationalUnit.edit");
......
import {DeleteDialog as DepositDeleteDialog} from "@app/deposit/dialogs/delete/delete.dialog";
import {DeleteDialog as OrgUnitDeleteDialog} from "@app/organizational-unit/dialogs/delete/delete.dialog";
import {StateEnum} from "@app/shared/enums/state.enum";
export class CrudDialogUtil {
static delete(state: StateEnum) {
if (state === StateEnum.organizationalUnit) {
return OrgUnitDeleteDialog;
}
if (state === StateEnum.deposit) {
return DepositDeleteDialog;
}
}
}
import {ChangeDetectionStrategy, Component, OnInit} from "@angular/core";
import {ComponentType} from "@angular/cdk/portal";
import {OnInit} from "@angular/core";
import {MatDialog} from "@angular/material";
import {ActivatedRoute} from "@angular/router";
import {DeleteDialog} from "@app/organizational-unit/dialogs/delete/delete.dialog";
import {CrudStateModel} from "@app/shared/crud.state";
import {AbstractDeleteDialog} from "@app/shared/dialogs/abstract-delete/abstract-delete.dialog";
import {BaseDirective} from "@app/shared/directives/base.directive";
import {StateEnum} from "@app/shared/enums/state.enum";
import {DeleteDialogModel} from "@app/shared/models/delete-dialog.model";
import {CrudActionUtil} from "@app/shared/utils/crud-action.util";
import {CrudDialogUtil} from "@app/shared/utils/crud-dialog.util";
import {CrudRouteUtil} from "@app/shared/utils/crud-route.util";
import {Navigate} from "@ngxs/router-plugin";
import {Store} from "@ngxs/store";
......@@ -18,6 +20,7 @@ export abstract class AbstractDetailView<T, U extends CrudStateModel<T>> extends
isLoading$: Observable<boolean>;
current$: Observable<T>;
abstract readonly KEY_PARAM_NAME: string;
abstract readonly KEY_EDIT_BUTTON: string;
abstract readonly KEY_DELETE_BUTTON: string;
......@@ -52,10 +55,10 @@ export abstract class AbstractDetailView<T, U extends CrudStateModel<T>> extends
delete() {
const datas = {} as DeleteDialogModel;
this.addToSubscription(this.current$.pipe(take(1)).subscribe((model: T) => {
datas.name = model["name"];
datas.name = model[this.KEY_PARAM_NAME];
datas.resId = model["resId"];
}));
const dialogRef = this.dialog.open(DeleteDialog, {
const dialogRef = this.dialog.open(CrudDialogUtil.delete(this.state) as ComponentType<AbstractDeleteDialog<T, U>>, {
width: "250px",
data: datas,
});
......
......@@ -47,7 +47,7 @@
"edit": "Edit",
"hasEmbargo": "Has Embargo",
"hint": {
"title": "Title of the deposit"
"author": ""
},
"language": "Language",
"license": "License",
......@@ -85,9 +85,6 @@
}
},
"edit": "Edit",
"hint": {
"name": "The name of the organization"
},
"isEmpty": "Is Empty",
"name": "Name",
"new": "Create new organizational unit",
......
......@@ -40,14 +40,14 @@
"delete": {
"cancel": "Cancel",
"confirm": "Yes! I'm sure",
"message": "Are you sure you want to delete the Deposit '{{title}}'?",
"message": "Are you sure you want to delete the Deposit '{{name}}'?",
"title": "Confirm deletion"
}
},
"edit": "Edit",
"hasEmbargo": "Has Embargo",
"hint": {
"title": "Title of the deposit"
"author": ""
},
"language": "Language",
"license": "License",
......@@ -85,9 +85,6 @@
}
},
"edit": "Edit",
"hint": {
"name": "The name of the organization"
},
"isEmpty": "Is Empty",
"name": "Name",
"new": "Create new organizational unit",
......
......@@ -47,7 +47,7 @@
"edit": "",
"hasEmbargo": "Has Embargo",
"hint": {
"title": "Title of the deposit"
"author": ""
},
"language": "Language",
"license": "License",
......@@ -85,9 +85,6 @@
}
},
"edit": "",
"hint": {
"name": ""
},
"isEmpty": "",
"name": "",
"new": "Créer nouvelle unité organisationnel",
......@@ -110,4 +107,4 @@
"table": {
"nodata": "There is no data to display"
}
}
}
\ 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