refs #13632 Merge branch '13632-collections-service'
authorDaniel Kos <daniel.kos@contractors.roche.com>
Wed, 20 Jun 2018 06:09:00 +0000 (08:09 +0200)
committerDaniel Kos <daniel.kos@contractors.roche.com>
Wed, 20 Jun 2018 06:09:00 +0000 (08:09 +0200)
# Conflicts:
# src/components/data-table/data-table.tsx
# src/views-components/data-explorer/data-explorer.tsx
# src/views/data-explorer/data-explorer.tsx

Arvados-DCO-1.1-Signed-off-by: Daniel Kos <daniel.kos@contractors.roche.com>

1  2 
src/components/data-table/data-table.tsx
src/views-components/data-explorer/data-explorer.tsx
src/views/data-explorer/data-explorer.tsx
src/views/workbench/workbench.tsx

index ec260e967b02afbc03797d3e235a412610ff427f,bc5df0d9cc3de20c225554f42a1350abd2815fe7..37e0fe15d52fa7d31272cb9c005034f86d1cfae3
@@@ -6,11 -6,12 +6,13 @@@ import * as React from 'react'
  import { Table, TableBody, TableRow, TableCell, TableHead, StyleRulesCallback, Theme, WithStyles, withStyles, Typography } from '@material-ui/core';
  import { DataColumn } from './data-column';
  
+ export type DataColumns<T> = Array<DataColumn<T>>;
  export interface DataTableProps<T> {
      items: T[];
-     columns: Array<DataColumn<T>>;
+     columns: DataColumns<T>;
 -    onItemClick?: (item: T) => void;
 +    onRowClick?: (event: React.MouseEvent<HTMLTableRowElement>, item: T) => void;
 +    onRowContextMenu?: (event: React.MouseEvent<HTMLTableRowElement>, item: T) => void;
  }
  
  class DataTable<T> extends React.Component<DataTableProps<T> & WithStyles<CssRules>> {
index 874c32595251c7ee169512f5ba93a67212113abe,1215915b9c024bd94ba6375da7c03c70dd1467d7..c4de01a35be7eafc5f6452e6715fbc2cfb47f6b3
@@@ -3,24 -3,17 +3,27 @@@
  // SPDX-License-Identifier: AGPL-3.0
  
  import * as React from 'react';
- import { DataTable, DataColumn, ColumnSelector } from "../../components/data-table";
 -import { Typography, Grid, ListItem, Divider, List, ListItemIcon, ListItemText, Paper, Toolbar } from '@material-ui/core';
 -import IconButton, { IconButtonProps } from '@material-ui/core/IconButton';
 +import { Typography, Grid, Paper, Toolbar } from '@material-ui/core';
 +import IconButton from '@material-ui/core/IconButton';
  import MoreVertIcon from "@material-ui/icons/MoreVert";
 -import Popover from '../../components/popover/popover';
  import { formatFileSize, formatDate } from '../../common/formatters';
  import { DataItem } from './data-item';
- import { mockAnchorFromMouseEvent } from '../popover/helpers';
- import ContextMenu from '../context-menu/context-menu';
 -import { DataColumns, DataTableProps } from "../../components/data-table/data-table";
 -import { DataColumn } from "../../components/data-table/data-column";
++import { DataColumns } from "../../components/data-table/data-table";
++import ContextMenu from "../../components/context-menu/context-menu";
+ import ColumnSelector from "../../components/column-selector/column-selector";
+ import DataTable from "../../components/data-table/data-table";
++import { mockAnchorFromMouseEvent } from "../../components/popover/helpers";
++import { DataColumn } from "../../components/data-table/data-column";
  
 +export interface DataExplorerContextActions {
 +    onAddToFavourite: (dataIitem: DataItem) => void;
 +    onCopy: (dataIitem: DataItem) => void;
 +    onDownload: (dataIitem: DataItem) => void;
 +    onMoveTo: (dataIitem: DataItem) => void;
 +    onRemove: (dataIitem: DataItem) => void;
 +    onRename: (dataIitem: DataItem) => void;
 +    onShare: (dataIitem: DataItem) => void;
 +}
  interface DataExplorerProps {
      items: DataItem[];
      onItemClick: (item: DataItem) => void;
  }
  
  interface DataExplorerState {
-     columns: Array<DataColumn<DataItem>>;
+     columns: DataColumns<DataItem>;
 +    contextMenu: {
 +        anchorEl?: HTMLElement;
 +        item?: DataItem;
 +    };
  }
  
  class DataExplorer extends React.Component<DataExplorerProps, DataExplorerState> {
index da09b695dbb047f2bf564a5edb7c94ec264feaa2,baeb946c7182b3e2a6d1f8707a45c0371839b7ea..f4ee36f3b4af2542add0564b6405a075d1e38eaf
@@@ -11,9 -10,10 +10,10 @@@ import { RootState } from '../../store/
  import { connect, DispatchProp } from 'react-redux';
  import { push } from 'react-router-redux';
  import projectActions from "../../store/project/project-action";
- import { DataExplorer, DataItem } from '../../components/data-explorer';
- import { TreeItem } from '../../components/tree/tree';
- import { DataExplorerContextActions } from '../../components/data-explorer/data-explorer';
+ import { DataColumns } from "../../components/data-table/data-table";
 -import { DataItem } from "../../views-components/data-explorer/data-item";
 -import DataExplorer from "../../views-components/data-explorer/data-explorer";
++import DataExplorer, { DataExplorerContextActions } from "../../views-components/data-explorer/data-explorer";
+ import { mapProjectTreeItem } from "./data-explorer-selectors";
++import { DataItem } from "../../views-components/data-explorer/data-item";
  
  interface DataExplorerViewDataProps {
      projects: ProjectState;
@@@ -34,39 -29,18 +29,29 @@@ class DataExplorerView extends React.Co
          const projectItems = project && project.items || [];
          return (
              <DataExplorer
-                 items={projectItems.map(mapTreeItem)}
+                 items={projectItems.map(mapProjectTreeItem)}
                  onItemClick={this.goToProject}
 +                contextActions={this.contextActions}
              />
          );
      }
  
-     goToProject = (project: MappedProjectItem) => {
-         this.props.dispatch(push(`/project/${project.uuid}`));
-         this.props.dispatch(projectActions.TOGGLE_PROJECT_TREE_ITEM(project.uuid));
 +    contextActions: DataExplorerContextActions = {
 +        onAddToFavourite: console.log,
 +        onCopy: console.log,
 +        onDownload: console.log,
 +        onMoveTo: console.log,
 +        onRemove: console.log,
 +        onRename: console.log,
 +        onShare: console.log
 +    };
 +
 -        this.props.dispatch(push(`/project/${item.uuid}`));
+     goToProject = (item: DataItem) => {
++        this.props.dispatch(push(`/project/${item}`));
+         this.props.dispatch(projectActions.TOGGLE_PROJECT_TREE_ITEM(item.uuid));
      }
  }
  
- const mapTreeItem = (item: TreeItem<Project>): MappedProjectItem => ({
-     name: item.data.name,
-     type: item.data.kind,
-     owner: item.data.ownerUuid,
-     lastModified: item.data.modifiedAt,
-     uuid: item.data.uuid
- });
  export default connect(
      (state: RootState) => ({
          projects: state.projects
Simple merge