// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import React from 'react'; import { StyleRulesCallback, WithStyles, withStyles, Card, CardHeader, IconButton, CardContent, Tooltip, Grid, Typography, } from '@material-ui/core'; import { ArvadosTheme } from 'common/custom-theme'; import { CloseIcon, CollectionIcon, LogIcon, MaximizeIcon } from 'components/icon/icon'; import { Process } from 'store/processes/process'; import { MPVPanelProps } from 'components/multi-panel-view/multi-panel-view'; import { FilterOption } from 'views/process-log-panel/process-log-panel'; import { ProcessLogForm } from 'views/process-log-panel/process-log-form'; import { ProcessLogCodeSnippet } from 'views/process-log-panel/process-log-code-snippet'; import { DefaultView } from 'components/default-view/default-view'; import { CodeSnippetDataProps } from 'components/code-snippet/code-snippet'; type CssRules = 'card' | 'content' | 'title' | 'iconHeader'; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ card: { height: '100%' }, content: { '&:last-child': { paddingBottom: theme.spacing.unit * 2, } }, title: { overflow: 'hidden', paddingTop: theme.spacing.unit * 0.5 }, iconHeader: { fontSize: '1.875rem', color: theme.customs.colors.green700 }, }); export interface ProcessLogsCardDataProps { process: Process; selectedFilter: FilterOption; filters: FilterOption[]; } export interface ProcessLogsCardActionProps { onLogFilterChange: (filter: FilterOption) => void; navigateToLog: (uuid: string) => void; } type ProcessLogsCardProps = ProcessLogsCardDataProps & ProcessLogsCardActionProps & CodeSnippetDataProps & WithStyles & MPVPanelProps; export const ProcessLogsCard = withStyles(styles)( ({ classes, process, filters, selectedFilter, lines, onLogFilterChange, navigateToLog, doHidePanel, doMaximizePanel, panelMaximized, panelName }: ProcessLogsCardProps) => } action={ navigateToLog(process.containerRequest.logUuid!)}> { doMaximizePanel && !panelMaximized && } { doHidePanel && } } title={ Logs } /> {lines.length > 0 ? < Grid container spacing={24} direction='column'> : } );