X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b0cb49beedbfcac126469abb37cdf8a061081075..9999a9db9fede0e1971dc792389982b428a1bb19:/src/views/workbench/workbench.tsx diff --git a/src/views/workbench/workbench.tsx b/src/views/workbench/workbench.tsx index 13c7ea225f..59495e94b3 100644 --- a/src/views/workbench/workbench.tsx +++ b/src/views/workbench/workbench.tsx @@ -10,20 +10,24 @@ import AppBar from '@material-ui/core/AppBar'; import Toolbar from '@material-ui/core/Toolbar'; import Typography from '@material-ui/core/Typography'; import { connect, DispatchProp } from "react-redux"; -import Tree from "../../components/tree/tree"; -import { Project } from "../../models/project"; -import { RootState } from "../../store/root-reducer"; import ProjectList from "../../components/project-list/project-list"; import { Route, Switch } from "react-router"; import { Link } from "react-router-dom"; import Button from "@material-ui/core/Button/Button"; -import authActions from "../../store/auth-action"; -import { authService } from "../../services/services"; +import authActions from "../../store/auth/auth-action"; import IconButton from "@material-ui/core/IconButton/IconButton"; import Menu from "@material-ui/core/Menu/Menu"; import MenuItem from "@material-ui/core/MenuItem/MenuItem"; import { AccountCircle } from "@material-ui/icons"; import { User } from "../../models/user"; +import Grid from "@material-ui/core/Grid/Grid"; +import { RootState } from "../../store/store"; +import projectActions from "../../store/project/project-action" + +import ProjectTree from '../../components/project-tree/project-tree'; +import { TreeItem, TreeItemStatus } from "../../components/tree/tree"; +import { Project } from "../../models/project"; +import { projectService } from '../../services/services'; const drawerWidth = 240; @@ -58,8 +62,8 @@ const styles: StyleRulesCallback = (theme: Theme) => ({ }); interface WorkbenchDataProps { - projects: Project[]; - user: User; + projects: Array>; + user?: User; } interface WorkbenchActionProps { @@ -100,65 +104,78 @@ class Workbench extends React.Component { }); }; + toggleProjectTreeItem = (itemId: string, status: TreeItemStatus) => { + if (status === TreeItemStatus.Loaded) { + this.props.dispatch(projectActions.TOGGLE_PROJECT_TREE_ITEM(itemId)) + } else { + this.props.dispatch(projectService.getProjectList(itemId)).then(() => { + this.props.dispatch(projectActions.TOGGLE_PROJECT_TREE_ITEM(itemId)); + }) + } + }; + render() { - const {classes} = this.props; - const userLoggedIn = authService.isUserLoggedIn(); + const { classes, user } = this.props; return (
- - Arvados
Workbench 2 + + Arvados
Workbench 2
- {userLoggedIn ? -
- - {this.props.user.firstName} {this.props.user.lastName} - - - - + {user ? + + + + {user.firstName} {user.lastName} + + + + + + + - Logout - My account + id="menu-appbar" + anchorEl={this.state.anchorEl} + anchorOrigin={{ + vertical: 'top', + horizontal: 'right', + }} + transformOrigin={{ + vertical: 'top', + horizontal: 'right', + }} + open={!!this.state.anchorEl} + onClose={this.handleClose}> + Logout + My account -
+ : }
- {userLoggedIn && - -
- - {p.name} - }/> - } + {user && + +
+ + }
-
+
- +
@@ -169,7 +186,7 @@ class Workbench extends React.Component { export default connect( (state: RootState) => ({ projects: state.projects, - user: state.auth.user! + user: state.auth.user }) )( withStyles(styles)(Workbench)