diff --git a/client/src/app/pages/applications/applications-table/applications-table.tsx b/client/src/app/pages/applications/applications-table/applications-table.tsx index d102d69a2a..d504501472 100644 --- a/client/src/app/pages/applications/applications-table/applications-table.tsx +++ b/client/src/app/pages/applications/applications-table/applications-table.tsx @@ -335,7 +335,7 @@ export const ApplicationsTable: React.FC = () => { sort: "sessionStorage", }, isLoading: isFetchingApplications, - sortableColumns: ["name", "businessService", "tags", "effort"], + sortableColumns: ["name", "businessService", "tags", "effort", "analysis"], initialSort: { columnKey: "name", direction: "asc" }, initialColumns: { name: { isIdentity: true }, @@ -345,6 +345,7 @@ export const ApplicationsTable: React.FC = () => { businessService: app.businessService?.name || "", tags: app.tags?.length || 0, effort: app.effort || 0, + analysis: app.tasks.currentAnalyzer?.state || 0, }), filterCategories: [ { @@ -367,7 +368,7 @@ export const ApplicationsTable: React.FC = () => { title: t("terms.archetypes"), type: FilterType.multiselect, placeholderText: - t("actions.filterBy", { + t("action s.filterBy", { what: t("terms.archetypes").toLowerCase(), }) + "...", selectOptions: referencedArchetypeRefs.map(({ name }) => ({ @@ -499,6 +500,23 @@ export const ApplicationsTable: React.FC = () => { ], getItemValue: (item) => normalizeRisk(item.risk) ?? "", }, + { + categoryKey: "analysis", + title: t("terms.analysis"), + type: FilterType.multiselect, + placeholderText: + t("actions.filterBy", { + what: t("terms.analysis").toLowerCase(), + }) + "...", + selectOptions: Object.values(applications) + .map((a) => ({ + value: a?.tasks.currentAnalyzer?.state || "No Task", + label: a?.tasks.currentAnalyzer?.state || "Not Started", + })) + .filter((v, i, a) => a.findIndex((v3) => v3.label === v.label) === i) + .sort((a, b) => a.value.localeCompare(b.value)), + getItemValue: (item) => item?.tasks.currentAnalyzer?.state || "No Task", + }, ], initialItemsPerPage: 10, hasActionsColumn: true, diff --git a/client/src/app/pages/applications/components/application-analysis-status.tsx b/client/src/app/pages/applications/components/application-analysis-status.tsx index 4462aacaff..94c1e79537 100644 --- a/client/src/app/pages/applications/components/application-analysis-status.tsx +++ b/client/src/app/pages/applications/components/application-analysis-status.tsx @@ -7,7 +7,7 @@ export interface ApplicationAnalysisStatusProps { state: TaskState; } -const taskStateToAnalyze: Map = new Map([ +export const taskStateToAnalyze: Map = new Map([ ["not supported", "Canceled"], ["Canceled", "Canceled"], ["Created", "Scheduled"],