diff --git a/src/app/app-config.service.ts b/src/app/app-config.service.ts index e669d360f7..f67abd723f 100644 --- a/src/app/app-config.service.ts +++ b/src/app/app-config.service.ts @@ -170,6 +170,7 @@ export interface AppConfigInterface { defaultTab?: DefaultTab; statusBannerMessage?: string; statusBannerCode?: "INFO" | "WARN"; + markForDeletionWorkflowEnabled?: boolean; } function isMainPageConfiguration(obj: any): obj is MainPageConfiguration { diff --git a/src/app/datasets/dataset-table-actions/dataset-table-actions.component.spec.ts b/src/app/datasets/dataset-table-actions/dataset-table-actions.component.spec.ts index 991fa38ed3..57ff762d1a 100644 --- a/src/app/datasets/dataset-table-actions/dataset-table-actions.component.spec.ts +++ b/src/app/datasets/dataset-table-actions/dataset-table-actions.component.spec.ts @@ -117,6 +117,18 @@ describe("DatasetTableActionsComponent", () => { setArchiveViewModeAction({ modeToggle }), ); }); + + it("should dispatch selected marked_for_deletion archive mode", () => { + dispatchSpy = spyOn(store, "dispatch"); + const modeToggle = ArchViewMode.marked_for_deletion; + + component.onModeChange(modeToggle); + + expect(dispatchSpy).toHaveBeenCalledTimes(1); + expect(dispatchSpy).toHaveBeenCalledWith( + setArchiveViewModeAction({ modeToggle }), + ); + }); }); describe("#isEmptySelection()", () => { diff --git a/src/app/datasets/dataset-table-actions/dataset-table-actions.component.ts b/src/app/datasets/dataset-table-actions/dataset-table-actions.component.ts index bc28185dd9..f0c345d7c0 100644 --- a/src/app/datasets/dataset-table-actions/dataset-table-actions.component.ts +++ b/src/app/datasets/dataset-table-actions/dataset-table-actions.component.ts @@ -38,8 +38,14 @@ export class DatasetTableActionsComponent implements OnInit, OnDestroy { ArchViewMode.work_in_progress, ArchViewMode.system_error, ArchViewMode.user_error, + ArchViewMode.marked_for_deletion, ArchViewMode.deleted, - ]; + ].filter( + (mode) => + this.appConfig.archiveWorkflowEnabled && + (mode !== ArchViewMode.marked_for_deletion || + this.appConfig.markForDeletionWorkflowEnabled), + ); searchPublicDataEnabled = this.appConfig.searchPublicDataEnabled; diff --git a/src/app/shared/services/datasets-list.service.ts b/src/app/shared/services/datasets-list.service.ts index 5545b986b3..75568ccfcb 100644 --- a/src/app/shared/services/datasets-list.service.ts +++ b/src/app/shared/services/datasets-list.service.ts @@ -112,6 +112,12 @@ export class DatasetsListService implements OnDestroy { return false; } + markedForDeletionCondition(dataset: DatasetClass): boolean { + return ( + dataset.datasetlifecycle.archiveStatusMessage === "markedForDeletion" + ); + } + deletedCondition(dataset: DatasetClass): boolean { return dataset.datasetlifecycle.archiveStatusMessage === "deleted"; } @@ -192,6 +198,8 @@ export class DatasetsListService implements OnDestroy { return "Archivable"; } else if (this.retrievableCondition(row)) { return "Retrievable"; + } else if (this.markedForDeletionCondition(row)) { + return "Marked for deletion"; } else if (this.deletedCondition(row)) { return "Deleted"; } else if (this.systemErrorCondition(row)) { @@ -210,6 +218,8 @@ export class DatasetsListService implements OnDestroy { return "Archivable"; } else if (this.retrievableCondition(row)) { return "Retrievable"; + } else if (this.markedForDeletionCondition(row)) { + return "Marked for deletion"; } else if (this.deletedCondition(row)) { return "Deleted"; } else if (this.systemErrorCondition(row)) { diff --git a/src/app/state-management/models/index.ts b/src/app/state-management/models/index.ts index 6a0e4a67f6..8bd090db9a 100644 --- a/src/app/state-management/models/index.ts +++ b/src/app/state-management/models/index.ts @@ -124,6 +124,7 @@ export enum ArchViewMode { work_in_progress = "work in progress", system_error = "system error", user_error = "user error", + marked_for_deletion = "marked for deletion", deleted = "deleted", } export enum JobViewMode { diff --git a/src/app/state-management/reducers/datasets.reducer.ts b/src/app/state-management/reducers/datasets.reducer.ts index 6391084561..130d3e1a46 100644 --- a/src/app/state-management/reducers/datasets.reducer.ts +++ b/src/app/state-management/reducers/datasets.reducer.ts @@ -343,6 +343,11 @@ const reducer = createReducer( ], }; break; + case ArchViewMode.marked_for_deletion: + mode = { + "datasetlifecycle.archiveStatusMessage": "markedForDeletion", + }; + break; case ArchViewMode.deleted: mode = { "datasetlifecycle.archiveStatusMessage": "deleted",