From 5da57f536ff3d0c1c995f5e76d16993d570ec5f3 Mon Sep 17 00:00:00 2001 From: Florent Poittevin <florent.poittevin@unige.ch> Date: Tue, 26 Nov 2019 09:50:22 +0100 Subject: [PATCH] fix: preservation job delete --- .../dialogs/job-delete/job-delete.dialog.ts | 37 +++++++++++++++++++ .../routables/job-list/job-list.routable.ts | 2 +- .../job/preservation-job.module.ts | 2 + src/app/shared/utils/store-dialog.util.ts | 4 ++ src/assets/i18n/de.json | 8 ++++ src/assets/i18n/en.json | 12 +++++- src/assets/i18n/fr.json | 8 ++++ 7 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 src/app/features/preservation/job/components/dialogs/job-delete/job-delete.dialog.ts diff --git a/src/app/features/preservation/job/components/dialogs/job-delete/job-delete.dialog.ts b/src/app/features/preservation/job/components/dialogs/job-delete/job-delete.dialog.ts new file mode 100644 index 000000000..6de54c0be --- /dev/null +++ b/src/app/features/preservation/job/components/dialogs/job-delete/job-delete.dialog.ts @@ -0,0 +1,37 @@ +import { + ChangeDetectionStrategy, + Component, + Inject, +} from "@angular/core"; +import { + MAT_DIALOG_DATA, + MatDialogRef, +} from "@angular/material"; +import {preservationJobActionNameSpace} from "@app/features/preservation/job/stores/preservation-job.action"; +import {PreservationJobStateModel} from "@app/features/preservation/job/stores/preservation-job.state"; +import {PreservationJob} from "@app/generated-api"; +import {Store} from "@ngxs/store"; +import {SharedAbstractDeleteDialog} from "@shared/components/dialogs/shared-abstract-delete/shared-abstract-delete.dialog"; +import {LocalStateEnum} from "@shared/enums/local-state.enum"; +import {DeleteDialog} from "@shared/models/delete-dialog.model"; +import {TRANSLATE} from "solidify-frontend"; + +@Component({ + selector: "dlcm-job-delete-dialog", + templateUrl: "../../../../../../shared/components/dialogs/shared-abstract-delete/shared-abstract-delete.dialog.html", + styleUrls: ["../../../../../../shared/components/dialogs/shared-abstract-delete/shared-abstract-delete.dialog.scss"], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class JobDeleteDialog extends SharedAbstractDeleteDialog<PreservationJob, PreservationJobStateModel> { + public readonly KEY_TITLE: string = TRANSLATE("preservation.job.dialog.delete.title"); + public readonly KEY_MESSAGE: string = TRANSLATE("preservation.job.dialog.delete.message"); + public readonly KEY_CONFIRM_BUTTON: string = TRANSLATE("preservation.job.dialog.delete.confirm"); + public readonly KEY_CANCEL_BUTTON: string = TRANSLATE("preservation.job.dialog.delete.cancel"); + + constructor(protected store: Store, + protected dialogRef: MatDialogRef<JobDeleteDialog>, + @Inject(MAT_DIALOG_DATA) public data: DeleteDialog) { + super(store, dialogRef, data, LocalStateEnum.preservation_job, preservationJobActionNameSpace); + } + +} diff --git a/src/app/features/preservation/job/components/routables/job-list/job-list.routable.ts b/src/app/features/preservation/job/components/routables/job-list/job-list.routable.ts index 898a85fff..3f3d7c4f4 100644 --- a/src/app/features/preservation/job/components/routables/job-list/job-list.routable.ts +++ b/src/app/features/preservation/job/components/routables/job-list/job-list.routable.ts @@ -128,7 +128,7 @@ export class JobListRoutable extends SharedAbstractListRoutable<PreservationJob, field: "lastUpdate.when" as any, header: TRANSLATE("preservation.job.table.header.when"), type: FieldTypeEnum.datetime, - order: OrderEnum.none, + order: OrderEnum.descending, isFilterable: true, isSortable: true, }, diff --git a/src/app/features/preservation/job/preservation-job.module.ts b/src/app/features/preservation/job/preservation-job.module.ts index 15e0eb27c..efd8ca744 100644 --- a/src/app/features/preservation/job/preservation-job.module.ts +++ b/src/app/features/preservation/job/preservation-job.module.ts @@ -1,5 +1,6 @@ import {NgModule} from "@angular/core"; import {JobExecutionListContainer} from "@app/features/preservation/job/components/containers/job-execution-list/job-execution-list.container"; +import {JobDeleteDialog} from "@app/features/preservation/job/components/dialogs/job-delete/job-delete.dialog"; import {JobExecutionDetailDialog} from "@app/features/preservation/job/components/dialogs/job-execution-detail/job-execution-detail.dialog"; import {JobFormPresentational} from "@app/features/preservation/job/components/presentationals/job-form/job-form.presentational"; import {JobCreateRoutable} from "@app/features/preservation/job/components/routables/job-create/job-create.routable"; @@ -22,6 +23,7 @@ const containers = [ ]; const dialogs = [ JobExecutionDetailDialog, + JobDeleteDialog, ]; const presentationals = [ JobFormPresentational, diff --git a/src/app/shared/utils/store-dialog.util.ts b/src/app/shared/utils/store-dialog.util.ts index d3b3d3ad9..25ed17285 100644 --- a/src/app/shared/utils/store-dialog.util.ts +++ b/src/app/shared/utils/store-dialog.util.ts @@ -10,6 +10,7 @@ import {AdminPreservationPolicyDeleteDialog} from "@admin/preservation-policy/co import {AdminSubmissionPolicyDeleteDialog} from "@admin/submission-policy/components/dialogs/admin-submission-policy-delete/admin-submission-policy-delete.dialog"; import {AdminUserDeleteDialog} from "@admin/user/components/dialogs/admin-user-delete/admin-user-delete.dialog"; import {Component} from "@angular/core"; +import {JobDeleteDialog} from "@app/features/preservation/job/components/dialogs/job-delete/job-delete.dialog"; import {LocalStateEnum} from "@app/shared/enums/local-state.enum"; import {DepositDeleteDialog} from "@deposit/components/dialogs/deposit-delete/deposit-delete.dialog"; import {StringUtil} from "solidify-frontend"; @@ -54,6 +55,9 @@ export class StoreDialogUtil { if (state === LocalStateEnum.admin_fundingAgencies) { return AdminFundingAgencyDeleteDialog as Component; } + if (state === LocalStateEnum.preservation_job) { + return JobDeleteDialog as Component; + } throw Error(StringUtil.format(StoreDialogUtil.messageNotFound, "Delete", state)); } } diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 0afb078b6..339ab17de 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -1221,6 +1221,14 @@ "new": "Create", "refresh": "Refresh" }, + "dialog": { + "delete": { + "cancel": "Cancel", + "confirm": "Yes", + "message": "Are you sure you want to delete this job?", + "title": "Confirm deletion" + } + }, "form": { "enable": "Enabled", "jobRecurrence": "Job recurrence", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 0afb078b6..333990996 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1221,6 +1221,14 @@ "new": "Create", "refresh": "Refresh" }, + "dialog": { + "delete": { + "cancel": "Cancel", + "confirm": "Yes", + "message": "Are you sure you want to delete this job?", + "title": "Confirm deletion" + } + }, "form": { "enable": "Enabled", "jobRecurrence": "Job recurrence", @@ -1259,11 +1267,11 @@ }, "resume": { "fail": "Unable to resume the job", - "success": "Job resumed with success" + "success": "Job resumed successfully" }, "start": { "fail": "Unable to start the job", - "success": "Job started with success" + "success": "Job started successfully" } }, "state": { diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index ddeedd3d4..d548e45c1 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -1221,6 +1221,14 @@ "new": "Créer", "refresh": "Rafraichir" }, + "dialog": { + "delete": { + "cancel": "Annuler", + "confirm": "Oui", + "message": "Êtes-vous sûr de vouloir supprimer ce job ?", + "title": "Confirmation de suppression" + } + }, "form": { "enable": "Actif", "jobRecurrence": "Récurrence du job", -- GitLab