Remove unused workflow references
[arvados-workbench2.git] / src / views / project-panel / project-panel.tsx
index 8d779d46afbc7be010c2c52fdf11645dcc832b0c..c1d66603405d9de7774c0aaca8056fd3f8e855bf 100644 (file)
@@ -13,9 +13,16 @@ import { DataColumns } from '../../components/data-table/data-table';
 import { RouteComponentProps } from 'react-router';
 import { RootState } from '../../store/store';
 import { ResourceKind } from '../../models/kinds';
+import { DataTableFilterItem } from '../../components/data-table-filters/data-table-filters';
+import { ContainerRequestState } from '../../models/container-request';
+import { SortDirection } from '../../components/data-table/data-column';
 
 export const PROJECT_PANEL_ID = "projectPanel";
 
+export interface ProjectPanelFilter extends DataTableFilterItem {
+    type: ResourceKind | ContainerRequestState;
+}
+
 type ProjectPanelProps = {
     currentItemId: string,
     onItemClick: (item: ProjectPanelItem) => void,
@@ -94,7 +101,6 @@ const renderIcon = (item: ProjectPanelItem) => {
         case ResourceKind.Collection:
             return <i className="fas fa-archive fa-lg" />;
         case ResourceKind.Process:
-        case ResourceKind.Workflow:
             return <i className="fas fa-cogs fa-lg" />;
         default:
             return <i />;
@@ -116,16 +122,16 @@ const renderOwner = (owner: string) =>
         {owner}
     </Typography>;
 
-const getItemTypeLabel = (type: string) => {
-    switch(type){
+
+
+const typeToLabel = (type: string) => {
+    switch (type) {
         case ResourceKind.Collection:
             return "Data collection";
         case ResourceKind.Project:
             return "Project";
-        case ResourceKind.Process: 
+        case ResourceKind.Process:
             return "Process";
-        case ResourceKind.Workflow:
-            return "Workflow";
         default:
             return "Unknown";
     }
@@ -133,7 +139,7 @@ const getItemTypeLabel = (type: string) => {
 
 const renderType = (type: string) => {
     return <Typography noWrap>
-        {getItemTypeLabel(type)}
+        {typeToLabel(type)}
     </Typography>;
 };
 
@@ -142,43 +148,72 @@ const renderStatus = (item: ProjectPanelItem) =>
         {item.status || "-"}
     </Typography>;
 
-export const columns: DataColumns<ProjectPanelItem> = [{
-    name: "Name",
+export enum ProjectPanelColumnNames {
+    Name = "Name",
+    Status = "Status",
+    Type = "Type",
+    Owner = "Owner",
+    FileSize = "File size",
+    LastModified = "Last modified"
+
+}
+
+export const columns: DataColumns<ProjectPanelItem, ProjectPanelFilter> = [{
+    name: ProjectPanelColumnNames.Name,
     selected: true,
-    sortDirection: "desc",
+    sortDirection: SortDirection.Asc,
     render: renderName,
     width: "450px"
 }, {
     name: "Status",
     selected: true,
+    filters: [{
+        name: ContainerRequestState.Committed,
+        selected: true,
+        type: ContainerRequestState.Committed
+    }, {
+        name: ContainerRequestState.Final,
+        selected: true,
+        type: ContainerRequestState.Final
+    }, {
+        name: ContainerRequestState.Uncommitted,
+        selected: true,
+        type: ContainerRequestState.Uncommitted
+    }],
     render: renderStatus,
     width: "75px"
 }, {
-    name: "Type",
+    name: ProjectPanelColumnNames.Type,
     selected: true,
     filters: [{
-        name: "Collection",
-        selected: true
+        name: typeToLabel(ResourceKind.Collection),
+        selected: true,
+        type: ResourceKind.Collection
+    }, {
+        name: typeToLabel(ResourceKind.Process),
+        selected: true,
+        type: ResourceKind.Process
     }, {
-        name: "Project",
-        selected: true
+        name: typeToLabel(ResourceKind.Project),
+        selected: true,
+        type: ResourceKind.Project
     }],
     render: item => renderType(item.kind),
     width: "125px"
 }, {
-    name: "Owner",
+    name: ProjectPanelColumnNames.Owner,
     selected: true,
     render: item => renderOwner(item.owner),
     width: "200px"
 }, {
-    name: "File size",
+    name: ProjectPanelColumnNames.FileSize,
     selected: true,
     render: item => renderFileSize(item.fileSize),
     width: "50px"
 }, {
-    name: "Last modified",
+    name: ProjectPanelColumnNames.LastModified,
     selected: true,
-    sortDirection: "none",
+    sortDirection: SortDirection.None,
     render: item => renderDate(item.lastModified),
     width: "150px"
 }];