import yellow from '@material-ui/core/colors/yellow';
import red from '@material-ui/core/colors/red';
-interface ArvadosThemeOptions extends ThemeOptions {
+export interface ArvadosThemeOptions extends ThemeOptions {
customs: any;
}
const grey900 = grey["900"];
const rocheBlue = '#06C';
-const themeOptions: ArvadosThemeOptions = {
+export const themeOptions: ArvadosThemeOptions = {
customs: {
colors: {
green700: green["700"],
import { filterResources } from '../resources/resources';
import { ResourceKind, Resource } from '~/models/resource';
import { getTimeDiff } from '~/common/formatters';
+import { SubprocessesStatus } from '~/views/process-panel/process-subprocesses-card';
+import { ArvadosTheme } from '~/common/custom-theme';
export interface Process {
containerRequest: ContainerRequestResource;
? getTimeDiff(subprocess.container.finishedAt || '', subprocess.container.startedAt || '')
: 0;
+export const getProcessStatusColor = (status: string, {customs}: ArvadosTheme) => {
+ switch (status) {
+ case SubprocessesStatus.COMPLETED:
+ return customs.colors.green700;
+ case SubprocessesStatus.CANCELED:
+ return customs.colors.red900;
+ case SubprocessesStatus.QUEUED:
+ return customs.colors.grey500;
+ case SubprocessesStatus.FAILED:
+ return customs.colors.red900;
+ case SubprocessesStatus.ACTIVE:
+ return customs.colors.blue500;
+ default:
+ return customs.colors.grey500;
+ }
+};
+
export const getProcessStatus = (process: Process) =>
process.container
? process.container.state
const isSubprocess = (containerUuid: string) => (resource: Resource) =>
resource.kind === ResourceKind.CONTAINER_REQUEST
&& (resource as ContainerRequestResource).requestingContainerUuid === containerUuid;
+
StyleRulesCallback, WithStyles, withStyles, Card,
CardHeader, IconButton, CardContent, Grid, Chip, Typography, Tooltip
} from '@material-ui/core';
-import * as classnames from "classnames";
import { ArvadosTheme } from '~/common/custom-theme';
import { MoreOptionsIcon, ProcessIcon } from '~/components/icon/icon';
import { DetailsAttribute } from '~/components/details-attribute/details-attribute';
-import { Process } from '~/store/processes/process';
+import { Process, getProcessStatusColor } from '~/store/processes/process';
import { getProcessStatus } from '~/store/processes/process';
-import { getStatusColor } from '~/views/process-panel/process-panel-root';
+
type CssRules = 'card' | 'iconHeader' | 'label' | 'value' | 'chip' | 'link' | 'content' | 'title' | 'avatar'
| 'headerActive' | 'headerCompleted' | 'headerQueued' | 'headerFailed' | 'headerCanceled';
type ProcessInformationCardProps = ProcessInformationCardDataProps & WithStyles<CssRules>;
-export const ProcessInformationCard = withStyles(styles)(
- ({ classes, process, onContextMenu }: ProcessInformationCardProps) =>
+export const ProcessInformationCard = withStyles(styles, { withTheme: true })(
+ ({ classes, process, onContextMenu, theme }: ProcessInformationCardProps) =>
<Card className={classes.card}>
<CardHeader
classes={{
action={
<div>
<Chip label={getProcessStatus(process)}
- className={classnames([classes.chip, getStatusColor(getProcessStatus(process), classes)])} />
+ className={classes.chip}
+ style={{ backgroundColor: getProcessStatusColor(getProcessStatus(process), theme as ArvadosTheme) }}/>
<IconButton
aria-label="More options"
onClick={event => onContextMenu(event)}>
icon={ProcessIcon}
messages={['Process not found']} />
</Grid>;
-
-export const getStatusColor = (status: string, classes: Record<CssRules, string>) => {
- switch (status) {
- case SubprocessesStatus.COMPLETED:
- return classes.headerCompleted;
- case SubprocessesStatus.CANCELED:
- return classes.headerCanceled;
- case SubprocessesStatus.QUEUED:
- return classes.headerQueued;
- case SubprocessesStatus.FAILED:
- return classes.headerFailed;
- case SubprocessesStatus.ACTIVE:
- return classes.headerActive;
- default:
- return classes.headerQueued;
- }
-};
StyleRulesCallback, WithStyles, withStyles, Card,
CardHeader, IconButton, CardContent, Typography, Tooltip
} from '@material-ui/core';
-import * as classnames from "classnames";
import { ArvadosTheme } from '~/common/custom-theme';
import { MoreOptionsIcon } from '~/components/icon/icon';
import { DetailsAttribute } from '~/components/details-attribute/details-attribute';
-import { getStatusColor } from '~/views/process-panel/process-panel-root';
import { Process, getProcessStatus, getProcessRuntime } from '~/store/processes/process';
import { formatTime } from '~/common/formatters';
+import { getProcessStatusColor } from '~/store/processes/process';
export type CssRules = 'label' | 'value' | 'title' | 'content' | 'action' | 'options' | 'status' | 'rightSideHeader' | 'titleHeader'
| 'header' | 'headerActive' | 'headerCompleted' | 'headerQueued' | 'headerFailed' | 'headerCanceled';
type ProcessSubprocessesCardProps = ProcessSubprocessesCardDataProps & WithStyles<CssRules>;
-export const ProcessSubprocessesCard = withStyles(styles)(
- ({ classes, onContextMenu, subprocess }: ProcessSubprocessesCardProps) => {
+export const ProcessSubprocessesCard = withStyles(styles, { withTheme: true })(
+ ({ classes, onContextMenu, subprocess, theme }: ProcessSubprocessesCardProps) => {
return <Card>
<CardHeader
- className={classnames([classes.header, getStatusColor(getProcessStatus(subprocess), classes)])}
+ className={classes.header}
+ style={{ backgroundColor: getProcessStatusColor(getProcessStatus(subprocess), theme as ArvadosTheme) }}
classes={{ content: classes.title, action: classes.action }}
action={
<div className={classes.rightSideHeader}>