Merge branch 'origin/master' into 13666-data-explorer-mapper
[arvados-workbench2.git] / src / views / project-panel / project-panel.tsx
index f9e6c8b8e2c0b7f50ce690d0a445de582f71460c..68cbc8ec73758b169a343b1f1581fc71333db3f1 100644 (file)
@@ -3,32 +3,46 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import * as React from 'react';
-import { RouteComponentProps } from 'react-router-dom';
-import { DispatchProp, connect } from 'react-redux';
-import { ProjectState, findTreeItem } from '../../store/project/project-reducer';
-import ProjectExplorer from '../../views-components/project-explorer/project-explorer';
+import { RouteComponentProps } from 'react-router';
+import { ProjectState } from '../../store/project/project-reducer';
 import { RootState } from '../../store/store';
-import { mapProjectTreeItem } from './project-panel-selectors';
+import { connect, DispatchProp } from 'react-redux';
+import { CollectionState } from "../../store/collection/collection-reducer";
+import { setProjectItem } from "../../store/navigation/navigation-action";
+import ProjectExplorer, { ProjectExplorerContextActions } from "../../views-components/project-explorer/project-explorer";
+import { projectExplorerItems } from "./project-panel-selectors";
+import { ProjectExplorerItem } from "../../views-components/project-explorer/project-explorer-item";
 
 interface ProjectPanelDataProps {
     projects: ProjectState;
+    collections: CollectionState;
 }
 
 type ProjectPanelProps = ProjectPanelDataProps & RouteComponentProps<{ name: string }> & DispatchProp;
 
 class ProjectPanel extends React.Component<ProjectPanelProps> {
-
     render() {
-        const project = findTreeItem(this.props.projects, this.props.match.params.name);
-        const projectItems = project && project.items || [];
+        const items = projectExplorerItems(
+            this.props.projects.items,
+            this.props.projects.currentItemId,
+            this.props.collections
+        );
         return (
-            <ProjectExplorer items={projectItems.map(mapProjectTreeItem)} />
+            <ProjectExplorer
+                items={items}
+                onRowClick={this.goToItem}
+            />
         );
     }
+
+    goToItem = (item: ProjectExplorerItem) => {
+        this.props.dispatch<any>(setProjectItem(this.props.projects.items, item.uuid, item.kind));
+    }
 }
 
 export default connect(
     (state: RootState) => ({
-        projects: state.projects
+        projects: state.projects,
+        collections: state.collections
     })
 )(ProjectPanel);