merge master + cr change
authorPawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>
Thu, 6 Sep 2018 06:36:25 +0000 (08:36 +0200)
committerPawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>
Thu, 6 Sep 2018 06:36:25 +0000 (08:36 +0200)
Feature #14123

Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>

1  2 
src/store/navigation/navigation-action.ts
src/views-components/main-app-bar/main-app-bar.tsx

index 33181b373f66e995d53869cb74820c6da1c2db4d,ddb9d29ffdaa05a79f591773412f2723f4500337..0e87769e24a57095f4e74fd578f5c46ed1358c59
@@@ -7,10 -7,9 +7,10 @@@ import { push } from "react-router-redu
  import { ResourceKind, extractUuidKind } from '~/models/resource';
  import { getCollectionUrl } from "~/models/collection";
  import { getProjectUrl } from "~/models/project";
 -
  import { SidePanelTreeCategory } from '../side-panel-tree/side-panel-tree-actions';
  import { Routes, getProcessUrl, getProcessLogUrl } from '~/routes/routes';
 +import { RootState } from '~/store/store';
 +import { ServiceRepository } from '~/services/services';
  
  export const navigateTo = (uuid: string) =>
      async (dispatch: Dispatch) => {
@@@ -21,7 -20,7 +21,7 @@@
              dispatch<any>(navigateToCollection(uuid));
          } else if (kind === ResourceKind.CONTAINER_REQUEST) {
              dispatch<any>(navigateToProcess(uuid));
--        } 
++        }
          if (uuid === SidePanelTreeCategory.FAVORITES) {
              dispatch<any>(navigateToFavorites);
          }
@@@ -37,11 -36,4 +37,11 @@@ export const navigateToCollection = com
  
  export const navigateToProcess = compose(push, getProcessUrl);
  
 -export const navigateToProcessLogs = compose(push, getProcessLogUrl);
 +export const navigateToProcessLogs = compose(push, getProcessLogUrl);
 +
 +export const navigateToRootProject = (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
 +    const rootProjectUuid = services.authService.getUuid();
-     if(rootProjectUuid){
++    if (rootProjectUuid) {
 +        dispatch(navigateToProject(rootProjectUuid));
 +    }
 +};
index 44be9f7aa103f3584da4a99091cd11fab4566791,ee47a0103b86acb6e9502f6b837f2632ea4d45eb..04e0fb804a75dba4ac8eae7116d4606617889aa6
@@@ -3,24 -3,11 +3,24 @@@
  // SPDX-License-Identifier: AGPL-3.0
  
  import * as React from "react";
- import { AppBar, Toolbar, Typography, Grid, IconButton, Badge, Button, MenuItem } from "@material-ui/core";
+ import { AppBar, Toolbar, Typography, Grid, IconButton, Badge, Button, MenuItem, Tooltip } from "@material-ui/core";
 +import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles';
 +import { ArvadosTheme } from '~/common/custom-theme';
 +import { Link } from "react-router-dom";
  import { User, getUserFullname } from "~/models/user";
  import { SearchBar } from "~/components/search-bar/search-bar";
  import { DropdownMenu } from "~/components/dropdown-menu/dropdown-menu";
  import { DetailsIcon, NotificationIcon, UserPanelIcon, HelpIcon } from "~/components/icon/icon";
 +import { Routes } from '~/routes/routes';
 +
 +type CssRules = 'link';
 +
 +const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
 +    link: {
 +        textDecoration: 'none',
 +        color: 'inherit'
 +    }
 +});
  
  export interface MainAppBarMenuItem {
      label: string;
@@@ -47,65 -34,65 +47,68 @@@ export interface MainAppBarActionProps 
      onDetailsPanelToggle: () => void;
  }
  
 -export type MainAppBarProps = MainAppBarDataProps & MainAppBarActionProps;
 +export type MainAppBarProps = MainAppBarDataProps & MainAppBarActionProps & WithStyles<CssRules>;
  
 -export const MainAppBar: React.SFC<MainAppBarProps> = (props) => {
 -    return <AppBar position="static">
 -        <Toolbar>
 -            <Grid container justify="space-between">
 -                <Grid item xs={3}>
 -                    <Typography variant="headline" color="inherit" noWrap>
 -                        Arvados 2
 -                    </Typography>
 -                    <Typography variant="body1" color="inherit" noWrap >
 -                        {props.buildInfo}
 -                    </Typography>
 -                </Grid>
 -                <Grid item xs={6} container alignItems="center">
 -                    {
 -                        props.user && <SearchBar
 -                            value={props.searchText}
 -                            onSearch={props.onSearch}
 -                            debounce={props.searchDebounce}
 -                        />
 -                    }
 +export const MainAppBar = withStyles(styles)(
 +    (props: MainAppBarProps) => {
 +        return <AppBar position="static">
 +            <Toolbar>
 +                <Grid container justify="space-between">
 +                    <Grid item xs={3}>
 +                        <Typography variant="headline" color="inherit" noWrap>
 +                            <Link to={Routes.ROOT} className={props.classes.link}>
 +                                Arvados 2
 +                            </Link>
 +                        </Typography>
 +                        <Typography variant="body1" color="inherit" noWrap >
 +                            {props.buildInfo}
 +                        </Typography>
 +                    </Grid>
 +                    <Grid item xs={6} container alignItems="center">
 +                        {
 +                            props.user && <SearchBar
 +                                value={props.searchText}
 +                                onSearch={props.onSearch}
 +                                debounce={props.searchDebounce}
 +                            />
 +                        }
 +                    </Grid>
 +                    <Grid item xs={3} container alignItems="center" justify="flex-end">
 +                        {
 +                            props.user ? renderMenuForUser(props) : renderMenuForAnonymous(props)
 +                        }
 +                    </Grid>
                  </Grid>
 -                <Grid item xs={3} container alignItems="center" justify="flex-end">
 -                    {
 -                        props.user ? renderMenuForUser(props) : renderMenuForAnonymous(props)
 -                    }
 -                </Grid>
 -            </Grid>
 -        </Toolbar>
 -        <Toolbar >
 -            {props.user && <props.breadcrumbs />}
 -            {props.user && <IconButton color="inherit" onClick={props.onDetailsPanelToggle}>
 -                <Tooltip title="Additional Info">
 -                    <DetailsIcon />
 -                </Tooltip>
 -            </IconButton>
 -            }
 -        </Toolbar>
 -    </AppBar>;
 -};
 +            </Toolbar>
 +            <Toolbar >
 +                {props.user && <props.breadcrumbs />}
 +                {props.user && <IconButton color="inherit" onClick={props.onDetailsPanelToggle}>
-                     <DetailsIcon />
-                 </IconButton>
-                 }
++                    <Tooltip title="Additional Info">
++                        <DetailsIcon />
++                    </Tooltip>
++                </IconButton>}
 +            </Toolbar>
 +        </AppBar>;
 +    }
 +);
  
  const renderMenuForUser = ({ user, menuItems, onMenuItemClick }: MainAppBarProps) => {
      return (
          <>
              <IconButton color="inherit">
-                 <Badge badgeContent={3} color="primary">
-                     <NotificationIcon />
-                 </Badge>
+                 <Tooltip title="Notification">
+                     <Badge badgeContent={3} color="primary">
+                         <NotificationIcon />
+                     </Badge>
+                 </Tooltip>
              </IconButton>
-             <DropdownMenu icon={<UserPanelIcon />} id="account-menu">
+             <DropdownMenu icon={<UserPanelIcon />} id="account-menu" title="Account Management">
                  <MenuItem>
                      {getUserFullname(user)}
                  </MenuItem>
                  {renderMenuItems(menuItems.accountMenu, onMenuItemClick)}
              </DropdownMenu>
-             <DropdownMenu icon={<HelpIcon />} id="help-menu">
+             <DropdownMenu icon={<HelpIcon />} id="help-menu" title="Help">
                  {renderMenuItems(menuItems.helpMenu, onMenuItemClick)}
              </DropdownMenu>
          </>