X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/137f7f8bbfb118af318cea460df8bd6e717fcf82..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 ff3dd9c8..c1d66603 100644 --- a/src/views/project-panel/project-panel.tsx +++ b/src/views/project-panel/project-panel.tsx @@ -9,14 +9,20 @@ import { formatDate, formatFileSize } from '../../common/formatters'; import DataExplorer from "../../views-components/data-explorer/data-explorer"; import { ContextMenuAction } from '../../components/context-menu/context-menu'; import { DispatchProp, connect } from 'react-redux'; -import actions from "../../store/data-explorer/data-explorer-action"; import { DataColumns } from '../../components/data-table/data-table'; -import { ResourceKind } from "../../models/resource"; 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, @@ -90,10 +96,12 @@ const renderName = (item: ProjectPanelItem) => const renderIcon = (item: ProjectPanelItem) => { switch (item.kind) { - case ResourceKind.PROJECT: + case ResourceKind.Project: return ; - case ResourceKind.COLLECTION: - return ; + case ResourceKind.Collection: + return ; + case ResourceKind.Process: + return ; default: return ; } @@ -114,53 +122,98 @@ const renderOwner = (owner: string) => {owner} ; -const renderType = (type: string) => - - {type} + + +const typeToLabel = (type: string) => { + switch (type) { + case ResourceKind.Collection: + return "Data collection"; + case ResourceKind.Project: + return "Project"; + case ResourceKind.Process: + return "Process"; + default: + return "Unknown"; + } +}; + +const renderType = (type: string) => { + return + {typeToLabel(type)} ; +}; 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" }];