X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/180c2c37b635cbb7a33257d2ee9b4395553ce5e7..71b9264c1720e619f8cfcb297a7848ece420c61c:/src/components/data-table-filters/data-table-filters.tsx diff --git a/src/components/data-table-filters/data-table-filters.tsx b/src/components/data-table-filters/data-table-filters.tsx index d288a5a3..a57f29aa 100644 --- a/src/components/data-table-filters/data-table-filters.tsx +++ b/src/components/data-table-filters/data-table-filters.tsx @@ -18,10 +18,15 @@ import { Card, CardActions, Typography, - CardContent + CardContent, + Tooltip } from "@material-ui/core"; import * as classnames from "classnames"; import { DefaultTransformOrigin } from "../popover/helpers"; +import { createTree, initTreeNode, mapTree } from '~/models/tree'; +import { DataTableFilters as DataTableFiltersModel, DataTableFiltersTree } from "./data-table-filters-tree"; +import { pipe } from 'lodash/fp'; +import { setNode } from '~/models/tree'; export type CssRules = "root" | "icon" | "active" | "checkbox"; @@ -73,14 +78,27 @@ interface DataTableFilterState { anchorEl?: HTMLElement; filters: DataTableFilterItem[]; prevFilters: DataTableFilterItem[]; + filtersTree: DataTableFiltersModel; } +const filters: DataTableFiltersModel = pipe( + createTree, + setNode(initTreeNode({ id: 'Project', value: { name: 'Project' } })), + setNode(initTreeNode({ id: 'Process', value: { name: 'Process' } })), + setNode(initTreeNode({ id: 'Data collection', value: { name: 'Data collection' } })), + setNode(initTreeNode({ id: 'General', parent: 'Data collection', value: { name: 'General' } })), + setNode(initTreeNode({ id: 'Output', parent: 'Data collection', value: { name: 'Output' } })), + setNode(initTreeNode({ id: 'Log', parent: 'Data collection', value: { name: 'Log' } })), + mapTree(node => ({...node, selected: true})), +)(); + export const DataTableFilters = withStyles(styles)( class extends React.Component, DataTableFilterState> { state: DataTableFilterState = { anchorEl: undefined, filters: [], - prevFilters: [] + prevFilters: [], + filtersTree: filters, }; icon = React.createRef(); @@ -88,16 +106,18 @@ export const DataTableFilters = withStyles(styles)( const { name, classes, children } = this.props; const isActive = this.state.filters.some(f => f.selected); return <> - - {children} - - + + + {children} + + + {this.state.filters.map((filter, index) => + key={index}> @@ -127,10 +145,13 @@ export const DataTableFilters = withStyles(styles)( )} + this.setState({ filtersTree })} />