1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import * as React from 'react';
6 import { RouteComponentProps } from 'react-router';
7 import { ProjectState } from '../../store/project/project-reducer';
8 import { RootState } from '../../store/store';
9 import { connect, DispatchProp } from 'react-redux';
10 import { CollectionState } from "../../store/collection/collection-reducer";
11 import { setProjectItem } from "../../store/navigation/navigation-action";
12 import ProjectExplorer, { ProjectExplorerContextActions } from "../../views-components/project-explorer/project-explorer";
13 import { projectExplorerItems } from "./project-panel-selectors";
14 import { ProjectExplorerItem } from "../../views-components/project-explorer/project-explorer-item";
16 interface ProjectPanelDataProps {
17 projects: ProjectState;
18 collections: CollectionState;
21 type ProjectPanelProps = ProjectPanelDataProps & RouteComponentProps<{ name: string }> & DispatchProp;
23 class ProjectPanel extends React.Component<ProjectPanelProps> {
25 const items = projectExplorerItems(
26 this.props.projects.items,
27 this.props.projects.currentItemId,
28 this.props.collections
33 onRowClick={this.goToItem}
38 goToItem = (item: ProjectExplorerItem) => {
39 this.props.dispatch<any>(setProjectItem(this.props.projects.items, item.uuid, item.kind));
43 export default connect(
44 (state: RootState) => ({
45 projects: state.projects,
46 collections: state.collections