1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import React from 'react';
17 } from '@material-ui/core';
18 import { Process } from 'store/processes/process';
19 import { ProcessLogCodeSnippet } from 'views/process-log-panel/process-log-code-snippet';
22 ProcessLogFormDataProps,
23 ProcessLogFormActionProps
24 } from 'views/process-log-panel/process-log-form';
25 import { MoreOptionsIcon, LogIcon } from 'components/icon/icon';
26 import { ArvadosTheme } from 'common/custom-theme';
27 import { CodeSnippetDataProps } from 'components/code-snippet/code-snippet';
28 import { DefaultView } from 'components/default-view/default-view';
30 type CssRules = 'backLink' | 'backIcon' | 'card' | 'title' | 'iconHeader' | 'link';
32 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
38 textDecoration: 'none',
39 padding: theme.spacing.unit,
40 color: theme.palette.grey["700"],
43 marginRight: theme.spacing.unit
49 color: theme.palette.grey["700"]
53 color: theme.customs.colors.green700
57 color: theme.palette.primary.main,
65 interface ProcessLogMainCardDataProps {
69 export interface ProcessLogMainCardActionProps {
70 onContextMenu: (event: React.MouseEvent<any>, process: Process) => void;
71 navigateToLogCollection: (uuid: string) => void;
74 export type ProcessLogMainCardProps = ProcessLogMainCardDataProps
75 & ProcessLogMainCardActionProps
76 & CodeSnippetDataProps
77 & ProcessLogFormDataProps
78 & ProcessLogFormActionProps;
80 export const ProcessLogMainCard = withStyles(styles)(
81 ({ classes, process, selectedFilter, filters, onChange, lines, onContextMenu, navigateToLogCollection }: ProcessLogMainCardProps & WithStyles<CssRules>) =>
83 <Card className={classes.card}>
85 avatar={<LogIcon className={classes.iconHeader} />}
87 <Tooltip title="More options" disableFocusListener>
88 <IconButton onClick={event => onContextMenu(event, process)} aria-label="More options">
93 <Typography noWrap variant='h6' className={classes.title}>
94 Logs for {process.containerRequest.name}
103 <Grid container item>
105 <ProcessLogForm selectedFilter={selectedFilter} filters={filters} onChange={onChange} />
107 <Grid item xs={6} className={classes.link}>
108 <span onClick={() => navigateToLogCollection(process.containerRequest.logUuid!)}>
114 <ProcessLogCodeSnippet lines={lines} />
119 messages={['No logs yet']} />