X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/75fbb4eabf0da2fceebf8196bec769e4cbc6547b..1d2c756a9f8d3a6de62091d45e2a62702317b504:/services/workbench2/src/components/data-explorer/data-explorer.tsx diff --git a/services/workbench2/src/components/data-explorer/data-explorer.tsx b/services/workbench2/src/components/data-explorer/data-explorer.tsx index 27e46d5849..91ece48c3a 100644 --- a/services/workbench2/src/components/data-explorer/data-explorer.tsx +++ b/services/workbench2/src/components/data-explorer/data-explorer.tsx @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0 import React from "react"; -import { Grid, Paper, Toolbar, StyleRulesCallback, withStyles, WithStyles, TablePagination, IconButton, Tooltip, Button } from "@material-ui/core"; +import { Grid, Paper, Toolbar, StyleRulesCallback, withStyles, WithStyles, TablePagination, IconButton, Tooltip, Button, Typography } from "@material-ui/core"; import { ColumnSelector } from "components/column-selector/column-selector"; import { DataTable, DataColumns, DataTableFetchMode } from "components/data-table/data-table"; import { DataColumn } from "components/data-table/data-column"; @@ -17,7 +17,7 @@ import { CloseIcon, IconType, MaximizeIcon, UnMaximizeIcon, MoreVerticalIcon } f import { PaperProps } from "@material-ui/core/Paper"; import { MPVPanelProps } from "components/multi-panel-view/multi-panel-view"; -type CssRules = "titleWrapper" | "searchBox" | "headerMenu" | "toolbar" | "footer" | "root" | "moreOptionsButton" | "title" | 'subProcessTitle' | "dataTable" | "container"; +type CssRules = "titleWrapper" | "searchBox" | "headerMenu" | "toolbar" | "footer" | "loadMoreContainer" | "numResults" | "root" | "moreOptionsButton" | "title" | 'subProcessTitle' | "dataTable" | "container"; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ titleWrapper: { @@ -35,12 +35,22 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ footer: { overflow: "auto", }, + loadMoreContainer: { + minWidth: '8rem', + }, root: { height: "100%", }, moreOptionsButton: { padding: 0, }, + numResults: { + marginTop: 0, + fontSize: "10px", + marginLeft: "10px", + marginBottom: '-0.5rem', + minWidth: '8.5rem', + }, title: { display: "inline-block", paddingLeft: theme.spacing.unit * 2, @@ -84,7 +94,6 @@ interface DataExplorerDataProps { defaultViewIcon?: IconType; defaultViewMessages?: string[]; working?: boolean; - currentRefresh?: string; currentRoute?: string; hideColumnSelector?: boolean; paperProps?: PaperProps; @@ -97,6 +106,7 @@ interface DataExplorerDataProps { elementPath?: string; isMSToolbarVisible: boolean; checkedList: TCheckedList; + isNotFound: boolean; } interface DataExplorerActionProps { @@ -120,52 +130,13 @@ type DataExplorerProps = DataExplorerDataProps & DataExplorerActionProps extends React.Component> { - state = { - showLoading: false, - prevRefresh: "", - prevRoute: "", - }; multiSelectToolbarInTitle = !this.props.title && !this.props.progressBar; - componentDidUpdate(prevProps: DataExplorerProps) { - const currentRefresh = this.props.currentRefresh || ""; - const currentRoute = this.props.currentRoute || ""; - - if (currentRoute !== this.state.prevRoute) { - // Component already mounted, but the user comes from a route change, - // like browsing through a project hierarchy. - this.setState({ - showLoading: this.props.working, - prevRoute: currentRoute, - }); - } - - if (currentRefresh !== this.state.prevRefresh) { - // Component already mounted, but the user just clicked the - // refresh button. - this.setState({ - showLoading: this.props.working, - prevRefresh: currentRefresh, - }); - } - if (this.state.showLoading && !this.props.working) { - this.setState({ - showLoading: false, - }); - } - } - componentDidMount() { if (this.props.onSetColumns) { this.props.onSetColumns(this.props.columns); } - // Component just mounted, so we need to show the loading indicator. - this.setState({ - showLoading: this.props.working, - prevRefresh: this.props.currentRefresh || "", - prevRoute: this.props.currentRoute || "", - }); } render() { @@ -207,6 +178,7 @@ export const DataExplorer = withStyles(styles)( toggleMSToolbar, setCheckedListOnStore, checkedList, + working, } = this.props; return ( {elementPath && ( - {elementPath} + {elementPath.length > 2 ? elementPath : ''} )} ) : ( - + + + Showing {items.length} / {itemsAvailable} results + + + )}