1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import * as React from 'react';
6 import DataExplorer, { DataExplorerProps } from "../../components/data-explorer/data-explorer";
7 import { RouteComponentProps } from 'react-router';
8 import { Project } from '../../models/project';
9 import { ProjectState, findTreeItem } from '../../store/project/project-reducer';
10 import { RootState } from '../../store/store';
11 import { connect, DispatchProp } from 'react-redux';
12 import { push } from 'react-router-redux';
13 import projectActions from "../../store/project/project-action";
14 import { Typography } from '@material-ui/core';
15 import { Column } from '../../components/data-explorer/column';
16 import ProjectExplorer from '../../components/project-explorer/project-explorer';
18 interface ProjectExplorerViewDataProps {
19 projects: ProjectState;
22 type ProjectExplorerViewProps = ProjectExplorerViewDataProps & RouteComponentProps<{ name: string }> & DispatchProp;
24 type ProjectExplorerViewState = Pick<DataExplorerProps<Project>, "columns">;
26 class ProjectExplorerView extends React.Component<ProjectExplorerViewProps, ProjectExplorerViewState> {
29 const project = findTreeItem(this.props.projects, this.props.match.params.name);
30 const projectItems = project && project.items || [];
33 projects={projectItems.map(item => item.data)}
34 onProjectClick={this.goToProject}
39 goToProject = (project: Project) => {
40 this.props.dispatch(push(`/project/${project.uuid}`));
41 this.props.dispatch(projectActions.TOGGLE_PROJECT_TREE_ITEM(project.uuid));
46 export default connect(
47 (state: RootState) => ({
48 projects: state.projects
50 )(ProjectExplorerView);