1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import React from 'react';
18 } from '@material-ui/core';
19 import { ArvadosTheme } from 'common/custom-theme';
25 } from 'components/icon/icon';
26 import { MPVPanelProps } from 'components/multi-panel-view/multi-panel-view';
27 import { connect } from 'react-redux';
28 import { Process } from 'store/processes/process';
29 import { NodeInstanceType } from 'store/process-panel/process-panel';
30 import { DefaultView } from 'components/default-view/default-view';
32 interface ProcessResourceCardDataProps {
34 nodeInfo: NodeInstanceType | null;
37 type CssRules = "card" | "header" | "title" | "avatar" | "iconHeader" | "content";
39 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
48 type ProcessResourceCardProps = ProcessResourceCardDataProps & WithStyles<CssRules> & MPVPanelProps;
50 export const ProcessResourceCard = withStyles(styles)(connect()(
51 ({ classes, nodeInfo, doHidePanel, doMaximizePanel, doUnMaximizePanel, panelMaximized, panelName, process, }: ProcessResourceCardProps) => {
53 const loading = nodeInfo === null;
55 return <Card className={classes.card} data-cy="process-resources-card">
57 className={classes.header}
59 content: classes.title,
60 avatar: classes.avatar,
62 avatar={<ProcessIcon className={classes.iconHeader} />}
64 <Typography noWrap variant='h6' color='inherit'>
70 {doUnMaximizePanel && panelMaximized &&
71 <Tooltip title={`Unmaximize ${panelName || 'panel'}`} disableFocusListener>
72 <IconButton onClick={doUnMaximizePanel}><UnMaximizeIcon /></IconButton>
74 {doMaximizePanel && !panelMaximized &&
75 <Tooltip title={`Maximize ${panelName || 'panel'}`} disableFocusListener>
76 <IconButton onClick={doMaximizePanel}><MaximizeIcon /></IconButton>
79 <Tooltip title={`Close ${panelName || 'panel'}`} disableFocusListener>
80 <IconButton disabled={panelMaximized} onClick={doHidePanel}><CloseIcon /></IconButton>
84 <CardContent className={classes.content}>
86 {/* raw is undefined until params are loaded */}
87 {loading && <Grid container item alignItems='center' justify='center'>
90 {/* Once loaded, either raw or params may still be empty
91 * Raw when all params are empty
92 * Params when raw is provided by containerRequest properties but workflow mount is absent for preview
100 {!loading && <Grid container item alignItems='center' justify='center'>
101 <DefaultView messages={["No parameters found"]} />