X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/20f7af812af9bd7094ae71d5a7571cfe556eb968..468c4ed9a390a1b0f2dad222b43707779ab49f16:/src/views/workflow-panel/workflow-description-card.tsx diff --git a/src/views/workflow-panel/workflow-description-card.tsx b/src/views/workflow-panel/workflow-description-card.tsx index 72af6bc2..c4db3fb9 100644 --- a/src/views/workflow-panel/workflow-description-card.tsx +++ b/src/views/workflow-panel/workflow-description-card.tsx @@ -3,20 +3,42 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; -import { StyleRulesCallback, WithStyles, withStyles, CardContent, Tab, Tabs, Paper } from '@material-ui/core'; +import { + StyleRulesCallback, + WithStyles, + withStyles, + CardContent, + Tab, + Tabs, + Table, + TableHead, + TableCell, + TableBody, + TableRow, + Divider +} 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 } from '~/models/workflow'; +import { WorkflowResource, parseWorkflowDefinition, getWorkflowInputs, getInputLabel, stringifyInputType } from '~/models/workflow'; +import { WorkflowGraph } from "~/views/workflow-panel/workflow-graph"; -export type CssRules = 'root' | 'tab'; +export type CssRules = 'root' | 'tab' | 'inputTab'; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ root: { - height: '100%', + height: '100%' }, tab: { - minWidth: '50%' + minWidth: '33%' + }, + inputTab: { + height: 'calc(100% - 48px - 16px * 2)', + overflowX: 'auto', + overflowY: 'hidden', + '&:last-child': { + paddingBottom: theme.spacing.unit / 2, + } } }); @@ -43,25 +65,63 @@ export const WorkflowDetailsCard = withStyles(styles)( + {value === 0 && - {workflow ? ( - workflow.description - ) : ( - - )} + {workflow ?
+ {workflow.description} +
: ( + + )}
} - {value === 1 && - {workflow ? ( - workflow.name - ) : ( - + {workflow + ? this.renderInputsTable() + : - )} + } + } + {value === 2 && + {workflow + ? + : + } } ; } - }); \ No newline at end of file + + 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} + )} + +
; + } + });