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 0000000000000000000000000000000000000000..6de54c0be305bfd1cb06a0ee62469e5a34f7cd1f --- /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 898a85fffe1ab87116b926ae6808f3f7ad8944ba..3f3d7c4f40626952a56e10d0deb30746a324a52e 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 15e0eb27c2325350c915efb8ec2c6e11d2eb8e71..efd8ca744afed673a5c8604362d49700df8ab788 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 d3b3d3ad95f797c8c964f6f068b11c174d6bb5a5..25ed17285ed3e7d7f3313d9adf29e10c5665eda8 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 0afb078b600c1a8f3a948554b6aa5ed435a41ab0..339ab17ded2bfd7a37a820ceec57428f1639a27b 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 0afb078b600c1a8f3a948554b6aa5ed435a41ab0..333990996d94d8b3da261e1e107e1812010f33c4 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 ddeedd3d48edcbeec88d1243bc0b6c5a34ffb1c1..d548e45c1329d5a4d2eb072851d142a2bc73f1c6 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",