// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; import { StyleRulesCallback, WithStyles, withStyles, CardContent, Tab, Tabs, Typography, List, ListItem, Table, TableHead, TableCell, TableBody, TableRow } from '@material-ui/core'; import { ArvadosTheme } from '~/common/custom-theme'; import { WorkflowIcon } from '~/components/icon/icon'; import { DataTableDefaultView } from '~/components/data-table-default-view/data-table-default-view'; import { WorkflowResource, parseWorkflowDefinition, getWorkflowInputs, getInputLabel, stringifyInputType } from '~/models/workflow'; export type CssRules = 'root' | 'tab'; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ root: { height: '100%', }, tab: { minWidth: '50%' } }); interface WorkflowDetailsCardDataProps { workflow?: WorkflowResource; } type WorkflowDetailsCardProps = WorkflowDetailsCardDataProps & WithStyles; export const WorkflowDetailsCard = withStyles(styles)( class extends React.Component { state = { value: 0, }; handleChange = (event: React.MouseEvent, value: number) => { this.setState({ value }); } render() { const { classes, workflow } = this.props; const { value } = this.state; return
{value === 0 && {workflow ? ( workflow.description ) : ( )} } {value === 1 && {workflow ? this.renderInputsTable() : } }
; } get inputs() { if (this.props.workflow) { const definition = parseWorkflowDefinition(this.props.workflow); if (definition) { return getWorkflowInputs(definition); } } return; } renderInputsTable() { return Label Type Description {this.inputs && this.inputs.map(input => {getInputLabel(input)} {stringifyInputType(input)} {input.doc} )}
; } });