import { TreeItem, TreeItemStatus } from '../tree/tree';
import { FileTreeData } from '../file-tree/file-tree-data';
import { FileTree } from '../file-tree/file-tree';
-import { IconButton, Grid, Typography, StyleRulesCallback, withStyles, WithStyles, CardHeader, Card, Button } from '@material-ui/core';
+import { IconButton, Grid, Typography, StyleRulesCallback, withStyles, WithStyles, CardHeader, Card, Button, Tooltip } from '@material-ui/core';
import { CustomizeTableIcon } from '../icon/icon';
export interface CollectionPanelFilesProps {
className={classes.cardSubheader}
action={
<IconButton onClick={onOptionsMenuOpen}>
- <CustomizeTableIcon />
+ <Tooltip title="More options">
+ <CustomizeTableIcon />
+ </Tooltip>
</IconButton>
} />
<Grid container justify="space-between">
// SPDX-License-Identifier: AGPL-3.0
import * as React from 'react';
-import { Grid, Paper, Toolbar, StyleRulesCallback, withStyles, WithStyles, TablePagination, IconButton } from '@material-ui/core';
+import { Grid, Paper, Toolbar, StyleRulesCallback, withStyles, WithStyles, TablePagination, IconButton, Tooltip } from '@material-ui/core';
import MoreVertIcon from "@material-ui/icons/MoreVert";
import { ColumnSelector } from "../column-selector/column-selector";
import { DataTable, DataColumns } from "../data-table/data-table";
renderContextMenuTrigger = (item: T) =>
<Grid container justify="flex-end">
<IconButton onClick={event => this.props.onContextMenu(event, item)}>
- <MoreVertIcon />
+ <Tooltip title="More options">
+ <MoreVertIcon />
+ </Tooltip>
</IconButton>
</Grid>
},
content: {
display: 'inline-block',
+ width: '100%'
},
tableBody: {
background: theme.palette.background.paper
import * as React from "react";
import { TreeItem } from "../tree/tree";
import { ProjectIcon, MoreOptionsIcon, DefaultIcon, CollectionIcon } from "../icon/icon";
-import { Typography, IconButton, StyleRulesCallback, withStyles, WithStyles } from "@material-ui/core";
+import { Typography, IconButton, StyleRulesCallback, withStyles, WithStyles, Tooltip } from '@material-ui/core';
import { formatFileSize } from "~/common/formatters";
import { ListItemTextIcon } from "../list-item-text-icon/list-item-text-icon";
import { FileTreeData } from "./file-tree-data";
<IconButton
className={classes.button}
onClick={this.handleClick}>
- <MoreOptionsIcon />
+ <Tooltip title="More options">
+ <MoreOptionsIcon />
+ </Tooltip>
</IconButton>
</div >;
}
});
const getIcon = (item: TreeItem<FileTreeData>) => {
- switch(item.data.type){
+ switch (item.data.type) {
case 'directory':
return ProjectIcon;
case 'file':
minWidth: "20px",
},
dialogActions: {
- marginBottom: "24px"
+ marginBottom: theme.spacing.unit * 3
}
});
-interface DialogProjectProps {
+interface DialogProjectDataProps {
cancelLabel?: string;
dialogTitle: string;
formFields: React.ComponentType<InjectedFormProps<any> & WithDialogProps<any>>;
submitLabel?: string;
}
-export const FormDialog = withStyles(styles)((props: DialogProjectProps & WithDialogProps<{}> & InjectedFormProps<any> & WithStyles<CssRules>) =>
+type DialogProjectProps = DialogProjectDataProps & WithDialogProps<{}> & InjectedFormProps<any> & WithStyles<CssRules>;
+
+export const FormDialog = withStyles(styles)((props: DialogProjectProps) =>
<Dialog
open={props.open}
onClose={props.closeDialog}
import CloudUpload from '@material-ui/icons/CloudUpload';
import Code from '@material-ui/icons/Code';
import ChevronLeft from '@material-ui/icons/ChevronLeft';
+import ImportContacts from '@material-ui/icons/ImportContacts';
import ChevronRight from '@material-ui/icons/ChevronRight';
import Close from '@material-ui/icons/Close';
import ContentCopy from '@material-ui/icons/FileCopyOutlined';
import Inbox from '@material-ui/icons/Inbox';
import Info from '@material-ui/icons/Info';
import Input from '@material-ui/icons/Input';
+import InsertDriveFile from '@material-ui/icons/InsertDriveFile';
+import LastPage from '@material-ui/icons/LastPage';
import LibraryBooks from '@material-ui/icons/LibraryBooks';
import Menu from '@material-ui/icons/Menu';
import MoreVert from '@material-ui/icons/MoreVert';
+import Mail from '@material-ui/icons/Mail';
+import MoveToInbox from '@material-ui/icons/MoveToInbox';
import Notifications from '@material-ui/icons/Notifications';
import People from '@material-ui/icons/People';
import Person from '@material-ui/icons/Person';
import RestoreFromTrash from '@material-ui/icons/History';
import Search from '@material-ui/icons/Search';
import SettingsApplications from '@material-ui/icons/SettingsApplications';
+import SettingsEthernet from '@material-ui/icons/SettingsEthernet';
import Star from '@material-ui/icons/Star';
import StarBorder from '@material-ui/icons/StarBorder';
+import HelpOutline from '@material-ui/icons/HelpOutline';
export type IconType = React.SFC<{ className?: string }>;
export const AdvancedIcon: IconType = (props) => <SettingsApplications {...props} />;
export const BackIcon: IconType = (props) => <ArrowBack {...props} />;
export const CustomizeTableIcon: IconType = (props) => <Menu {...props} />;
+export const CommandIcon: IconType = (props) => <LastPage {...props} />;
export const CopyIcon: IconType = (props) => <ContentCopy {...props} />;
export const CollectionIcon: IconType = (props) => <LibraryBooks {...props} />;
export const CloseIcon: IconType = (props) => <Close {...props} />;
export const DownloadIcon: IconType = (props) => <GetApp {...props} />;
export const FavoriteIcon: IconType = (props) => <Star {...props} />;
export const HelpIcon: IconType = (props) => <Help {...props} />;
-export const LogIcon: IconType = (props) => <Folder {...props} />;
+export const InputIcon: IconType = (props) => <InsertDriveFile {...props} />;
+export const LogIcon: IconType = (props) => <SettingsEthernet {...props} />;
export const MoreOptionsIcon: IconType = (props) => <MoreVert {...props} />;
export const MoveToIcon: IconType = (props) => <Input {...props} />;
export const NewProjectIcon: IconType = (props) => <CreateNewFolder {...props} />;
export const NotificationIcon: IconType = (props) => <Notifications {...props} />;
+export const OutputIcon: IconType = (props) => <MoveToInbox {...props} />;
export const PaginationDownIcon: IconType = (props) => <ArrowDropDown {...props} />;
export const PaginationLeftArrowIcon: IconType = (props) => <ChevronLeft {...props} />;
export const PaginationRightArrowIcon: IconType = (props) => <ChevronRight {...props} />;
export const UserPanelIcon: IconType = (props) => <Person {...props} />;
export const UsedByIcon: IconType = (props) => <Folder {...props} />;
export const WorkflowIcon: IconType = (props) => <Code {...props} />;
+export const ImportContactsIcon: IconType = (props) => <ImportContacts {...props} />;
+export const HelpOutlineIcon: IconType = (props) => <HelpOutline {...props} />;
+export const MailIcon: IconType = (props) => <Mail {...props} />;
import { toggleFavorite } from "~/store/favorites/favorites-actions";
import {
RenameIcon, ShareIcon, MoveToIcon, CopyIcon, DetailsIcon, ProvenanceGraphIcon,
- AdvancedIcon, RemoveIcon, ReRunProcessIcon, LogIcon
+ AdvancedIcon, RemoveIcon, ReRunProcessIcon, LogIcon, InputIcon, CommandIcon, OutputIcon
} from "~/components/icon/icon";
import { favoritePanelActions } from "~/store/favorite-panel/favorite-panel-action";
import { navigateToProcessLogs } from '~/store/navigation/navigation-action';
}
},
{
+ icon: InputIcon,
name: "Inputs",
execute: (dispatch, resource) => {
// add code
}
},
{
+ icon: OutputIcon,
name: "Outputs",
execute: (dispatch, resource) => {
// add code
}
},
{
+ icon: CommandIcon,
name: "Command",
execute: (dispatch, resource) => {
// add code
--- /dev/null
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import * as React from "react";
+import { MenuItem, Typography } from "@material-ui/core";
+import { DropdownMenu } from "~/components/dropdown-menu/dropdown-menu";
+import { ImportContactsIcon, HelpIcon } from "~/components/icon/icon";
+import { ArvadosTheme } from '~/common/custom-theme';
+import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles';
+
+type CssRules = 'link' | 'icon' | 'title' | 'linkTitle';
+
+const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
+ link: {
+ textDecoration: 'none',
+ color: 'inherit',
+ width: '100%',
+ display: 'flex'
+ },
+ icon: {
+ width: '16px',
+ height: '16px'
+ },
+ title: {
+ paddingBottom: theme.spacing.unit * 0.5,
+ paddingLeft: theme.spacing.unit * 2,
+ paddingTop: theme.spacing.unit * 0.5,
+ outline: 'none',
+ },
+ linkTitle: {
+ marginLeft: theme.spacing.unit
+ },
+});
+
+const links = [
+ {
+ title: "Public Pipelines and Data sets",
+ link: "https://dev.arvados.org/projects/arvados/wiki/Public_Pipelines_and_Datasets",
+ },
+ {
+ title: "Tutorials and User guide",
+ link: "http://doc.arvados.org/user/",
+ },
+ {
+ title: "API Reference",
+ link: "http://doc.arvados.org/api/",
+ },
+ {
+ title: "SDK Reference",
+ link: "http://doc.arvados.org/sdk/"
+ },
+];
+
+export const HelpMenu = withStyles(styles)(
+ ({ classes }: WithStyles<CssRules>) =>
+ <DropdownMenu
+ icon={<HelpIcon />}
+ id="help-menu"
+ title="Help">
+ <li className={classes.title}>
+ <Typography variant="body1">Help</Typography>
+ </li>
+ {
+ links.map(link =>
+ <MenuItem key={link.title}>
+ <a href={link.link} target="_blank" className={classes.link}>
+ <ImportContactsIcon className={classes.icon} />
+ <Typography variant="body1" className={classes.linkTitle}>{link.title}</Typography>
+ </a>
+ </MenuItem>
+ )
+ }
+ </DropdownMenu>
+);
<IconButton
aria-label="More options"
onClick={this.handleContextMenu}>
- <MoreOptionsIcon />
+ <Tooltip title="More options">
+ <MoreOptionsIcon />
+ </Tooltip>
</IconButton>
}
title={item && item.name}
action={
<div>
<IconButton aria-label="More options">
- <MoreOptionsIcon />
+ <Tooltip title="More options">
+ <MoreOptionsIcon />
+ </Tooltip>
</IconButton>
</div>
}
<IconButton
aria-label="More options"
onClick={event => onContextMenu(event)}>
- <MoreOptionsIcon />
+ <Tooltip title="More options">
+ <MoreOptionsIcon />
+ </Tooltip>
</IconButton>
</div>
}
import { formatTime } from '~/common/formatters';
import { getProcessStatusColor } from '~/store/processes/process';
-export type CssRules = 'label' | 'value' | 'title' | 'content' | 'action' | 'options' | 'status' | 'rightSideHeader' | 'titleHeader'| 'header';
+export type CssRules = 'label' | 'value' | 'title' | 'content' | 'action' | 'options' | 'status' | 'rightSideHeader' | 'titleHeader' | 'header';
const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
label: {
className={classes.options}
aria-label="More options"
onClick={onContextMenu}>
- <MoreOptionsIcon />
+ <Tooltip title="More options">
+ <MoreOptionsIcon />
+ </Tooltip>
</IconButton>
</div>
}
// SPDX-License-Identifier: AGPL-3.0
import * as React from 'react';
-import { IconButton, StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core';
+import { IconButton, StyleRulesCallback, WithStyles, withStyles, Tooltip } from '@material-ui/core';
import { DataExplorer } from "~/views-components/data-explorer/data-explorer";
import { connect, DispatchProp } from 'react-redux';
import { DataColumns } from '~/components/data-table/data-table';
));
}
}}>
- <RestoreFromTrashIcon />
+ <Tooltip title="Restore">
+ <RestoreFromTrashIcon />
+ </Tooltip>
</IconButton>
);
configurable: true,
sortDirection: SortDirection.ASC,
filters: [],
- render: uuid => <ResourceName uuid={uuid}/>
+ render: uuid => <ResourceName uuid={uuid} />
},
{
name: TrashPanelColumnNames.TYPE,
type: ResourceKind.PROJECT
}
],
- render: uuid => <ResourceType uuid={uuid}/>,
+ render: uuid => <ResourceType uuid={uuid} />,
},
{
name: TrashPanelColumnNames.FILE_SIZE,
configurable: false,
sortDirection: SortDirection.NONE,
filters: [],
- render: uuid => <ResourceRestore uuid={uuid}/>
+ render: uuid => <ResourceRestore uuid={uuid} />
}
];
onRowDoubleClick={this.handleRowDoubleClick}
onContextMenu={this.handleContextMenu}
contextMenuColumn={false}
- dataTableDefaultView={<DataTableDefaultView icon={TrashIcon}/>} />
+ dataTableDefaultView={<DataTableDefaultView icon={TrashIcon} />} />
: <PanelDefaultView
icon={TrashIcon}
messages={['Your trash list is empty.']} />;