import MoreVertIcon from "@material-ui/icons/MoreVert";
import { ColumnSelector } from "../column-selector/column-selector";
import { DataTable, DataColumns } from "../data-table/data-table";
-import { DataColumn } from "../data-table/data-column";
+import { DataColumn, SortDirection } from "../data-table/data-column";
import { DataTableFilterItem } from '../data-table-filters/data-table-filters';
import { SearchInput } from '../search-input/search-input';
-import { ArvadosTheme } from "../../common/custom-theme";
+import { ArvadosTheme } from "~/common/custom-theme";
import { DefaultView } from '../default-view/default-view';
-import { ProjectIcon } from '../icon/icon';
+import { IconType } from '../icon/icon';
type CssRules = 'searchBox' | "toolbar" | 'defaultRoot' | 'defaultMessage' | 'defaultIcon';
},
defaultRoot: {
position: 'absolute',
- width: '100%',
+ width: '80%',
+ left: '50%',
top: '50%',
- transform: 'translate(0%, -50%)'
+ transform: 'translate(-50%, -50%)'
},
defaultMessage: {
fontSize: '1.75rem',
rowsPerPage: number;
rowsPerPageOptions: number[];
page: number;
+ defaultIcon: IconType;
+ defaultMessages: string[];
}
interface DataExplorerActionProps<T> {
+ onSetColumns: (columns: DataColumns<T>) => void;
onSearch: (value: string) => void;
onRowClick: (item: T) => void;
onRowDoubleClick: (item: T) => void;
export const DataExplorer = withStyles(styles)(
class DataExplorerGeneric<T> extends React.Component<DataExplorerProps<T>> {
+ componentDidMount() {
+ if (this.props.onSetColumns) {
+ this.props.onSetColumns(this.props.columns);
+ }
+ }
render() {
- const {
- columns, onContextMenu, onFiltersChange, onSortToggle, extractKey,
- rowsPerPage, rowsPerPageOptions, onColumnToggle, searchValue, onSearch,
- items, itemsAvailable, onRowClick, onRowDoubleClick, classes
+ const {
+ columns, onContextMenu, onFiltersChange, onSortToggle, extractKey,
+ rowsPerPage, rowsPerPageOptions, onColumnToggle, searchValue, onSearch,
+ items, itemsAvailable, onRowClick, onRowDoubleClick, defaultIcon, defaultMessages, classes
} = this.props;
return <div>
{ items.length > 0 ? (
</Toolbar>
</Paper>
) : (
- <DefaultView
+ <DefaultView
classRoot={classes.defaultRoot}
- icon={ProjectIcon}
+ icon={defaultIcon}
classIcon={classes.defaultIcon}
- messages={['Your project is empty. Please create a project', 'or create a collection and upload a data.']}
+ messages={defaultMessages}
classMessage={classes.defaultMessage} />
)}
</div>;
name: "Actions",
selected: true,
configurable: false,
+ sortDirection: SortDirection.NONE,
+ filters: [],
key: "context-actions",
render: this.renderContextMenuTrigger,
width: "auto"