X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/01ca27ba0a1ef84c53e223004249505435a788b6..2ace2e7ca42a3949de3e6c0327cd2648f344dee9:/services/workbench2/src/components/data-table/data-table.tsx diff --git a/services/workbench2/src/components/data-table/data-table.tsx b/services/workbench2/src/components/data-table/data-table.tsx index d3bbab5077..fb5886681c 100644 --- a/services/workbench2/src/components/data-table/data-table.tsx +++ b/services/workbench2/src/components/data-table/data-table.tsx @@ -24,7 +24,7 @@ import { DataTableFilters } from "../data-table-filters/data-table-filters-tree" import { DataTableMultiselectPopover } from "../data-table-multiselect-popover/data-table-multiselect-popover"; import { DataTableFiltersPopover } from "../data-table-filters/data-table-filters-popover"; import { countNodes, getTreeDirty } from "models/tree"; -import { IconType, PendingIcon } from "components/icon/icon"; +import { IconType } from "components/icon/icon"; import { SvgIconProps } from "@material-ui/core/SvgIcon"; import ArrowDownwardIcon from "@material-ui/icons/ArrowDownward"; import { createTree } from "models/tree"; @@ -54,6 +54,7 @@ export interface DataTableDataProps { toggleMSToolbar: (isVisible: boolean) => void; setCheckedListOnStore: (checkedList: TCheckedList) => void; checkedList: TCheckedList; + is404?: boolean; } type CssRules = @@ -69,8 +70,7 @@ type CssRules = | "tableCell" | "arrow" | "arrowButton" - | "tableCellWorkflows" - | "loader"; + | "tableCellWorkflows"; const styles: StyleRulesCallback = (theme: Theme) => ({ root: { @@ -83,11 +83,6 @@ const styles: StyleRulesCallback = (theme: Theme) => ({ tableBody: { background: theme.palette.background.paper, }, - loader: { - left: "50%", - marginLeft: "-84px", - position: "absolute", - }, noItemsInfo: { textAlign: "center", padding: theme.spacing.unit, @@ -146,6 +141,7 @@ export type TCheckedList = Record; type DataTableState = { isSelected: boolean; + isLoaded: boolean; }; type DataTableProps = DataTableDataProps & WithStyles; @@ -154,6 +150,7 @@ export const DataTable = withStyles(styles)( class Component extends React.Component> { state: DataTableState = { isSelected: false, + isLoaded: false, }; componentDidMount(): void { @@ -171,6 +168,9 @@ export const DataTable = withStyles(styles)( if (prevProps.currentRoute !== this.props.currentRoute) { this.initializeCheckedList([]) } + if(prevProps.working === true && this.props.working === false) { + this.setState({ isLoaded: true }); + } } componentWillUnmount(): void { @@ -291,7 +291,8 @@ export const DataTable = withStyles(styles)( }; render() { - const { items, classes, working, columns } = this.props; + const { items, classes, columns, is404 } = this.props; + const { isLoaded } = this.state; if (columns[0].name === this.checkBoxColumn.name) columns.shift(); columns.unshift(this.checkBoxColumn); return ( @@ -301,17 +302,9 @@ export const DataTable = withStyles(styles)( {this.mapVisibleColumns(this.renderHeadCell)} - {!working && items.map(this.renderBodyRow)} + {(isLoaded && !is404) && items.map(this.renderBodyRow)} - {!!working && ( -
- -
- )} - {items.length === 0 && !working && this.renderNoItemsPlaceholder(this.props.columns)} + {(!isLoaded || is404 || items.length === 0) && this.renderNoItemsPlaceholder(this.props.columns)} ); @@ -319,13 +312,30 @@ export const DataTable = withStyles(styles)( renderNoItemsPlaceholder = (columns: DataColumns) => { const dirty = columns.some(column => getTreeDirty("")(column.filters)); - return ( - - ); + if (this.state.isLoaded === false) { + return ( + + ); + } else if (this.props.is404) { + return ( + + ); + } else { + //if (isLoaded && !is404) + return ( + + ); + } }; renderHeadCell = (column: DataColumn, index: number) => {