From be414d2f98cac5fb96cf16e78943e1ecb8945e0f Mon Sep 17 00:00:00 2001 From: Michal Klobukowski Date: Thu, 14 Jun 2018 16:37:44 +0200 Subject: [PATCH] Remove columns configurator usage to project-explorer, use provided keys when mapping over columns Feature #13601 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- src/components/data-explorer/column.ts | 1 + .../data-explorer/data-explorer.tsx | 69 +++++++++---------- .../project-explorer/project-explorer.tsx | 11 ++- 3 files changed, 43 insertions(+), 38 deletions(-) diff --git a/src/components/data-explorer/column.ts b/src/components/data-explorer/column.ts index 6681f63b4c..53ac7b001f 100644 --- a/src/components/data-explorer/column.ts +++ b/src/components/data-explorer/column.ts @@ -6,6 +6,7 @@ export interface Column { header: string; selected: boolean; configurable?: boolean; + key?: React.Key; render: (item: T) => React.ReactElement; renderHeader?: () => React.ReactElement; } diff --git a/src/components/data-explorer/data-explorer.tsx b/src/components/data-explorer/data-explorer.tsx index 05c157f208..229a0905ed 100644 --- a/src/components/data-explorer/data-explorer.tsx +++ b/src/components/data-explorer/data-explorer.tsx @@ -18,47 +18,42 @@ class DataExplorer extends React.Component & WithStyles< render() { const { items, columns, classes, onItemClick, onColumnToggle } = this.props; return ( -
- - - -
- { - items.length > 0 ? ( - - - - { - columns.filter(column => column.selected).map(({ header, renderHeader }, index) => ( - - {renderHeader ? renderHeader() : header} - - )) - } - - - +
+ { + items.length > 0 ? ( +
+ + { - items.map((item, index) => ( - onItemClick && onItemClick(item)}> - { - columns.filter(column => column.selected).map((column, index) => ( - - {column.render(item)} - - )) - } - + columns.filter(column => column.selected).map(({ header, renderHeader, key }, index) => ( + + {renderHeader ? renderHeader() : header} + )) } - -
- ) : ( - No items - ) - } + + + + { + items.map((item, index) => ( + onItemClick && onItemClick(item)}> + { + columns.filter(column => column.selected).map((column, index) => ( + + {column.render(item)} + + )) + } + + )) + } + + + ) : ( + No items + ) + } -
); } diff --git a/src/components/project-explorer/project-explorer.tsx b/src/components/project-explorer/project-explorer.tsx index 18910bf2e2..7b8565b546 100644 --- a/src/components/project-explorer/project-explorer.tsx +++ b/src/components/project-explorer/project-explorer.tsx @@ -4,6 +4,7 @@ import * as React from 'react'; import DataExplorer, { DataExplorerProps } from "../../components/data-explorer/data-explorer"; +import ColumnsConfigurator from "../../components/data-explorer/columns-configurator/columns-configurator"; import { Typography, Grid, ListItem, Divider, List, ListItemIcon, ListItemText } from '@material-ui/core'; import { Column } from '../../components/data-explorer/column'; import IconButton, { IconButtonProps } from '@material-ui/core/IconButton'; @@ -89,9 +90,17 @@ class ProjectExplorer extends React.Component , + renderHeader: () => ( + + + + ), render: item => ( -- 2.30.2