X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/5678598e1b83b59c14a7ace3ee9ae39368be3c28..92a7124fa9784501e320f97a68f72aca0632732e:/src/views/project-panel/project-panel.tsx diff --git a/src/views/project-panel/project-panel.tsx b/src/views/project-panel/project-panel.tsx index 8d779d46..c1d66603 100644 --- a/src/views/project-panel/project-panel.tsx +++ b/src/views/project-panel/project-panel.tsx @@ -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 ; case ResourceKind.Process: - case ResourceKind.Workflow: return ; default: return ; @@ -116,16 +122,16 @@ const renderOwner = (owner: string) => {owner} ; -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 - {getItemTypeLabel(type)} + {typeToLabel(type)} ; }; @@ -142,43 +148,72 @@ const renderStatus = (item: ProjectPanelItem) => {item.status || "-"} ; -export const columns: DataColumns = [{ - name: "Name", +export enum ProjectPanelColumnNames { + Name = "Name", + Status = "Status", + Type = "Type", + Owner = "Owner", + FileSize = "File size", + LastModified = "Last modified" + +} + +export const columns: DataColumns = [{ + 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" }];