X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/36f8f69a5bf5c19ad3c8de57466944e2b7d0c390..bf6ffb898a38a806ea0dd98daca7b3801923b62f:/src/models/workflow.ts diff --git a/src/models/workflow.ts b/src/models/workflow.ts index 59915137..6d21dbc7 100644 --- a/src/models/workflow.ts +++ b/src/models/workflow.ts @@ -11,9 +11,9 @@ export interface WorkflowResource extends Resource { description: string; definition: string; } -export interface WorkflowResoruceDefinition { +export interface WorkflowResourceDefinition { cwlVersion: string; - $graph: Array; + $graph?: Array; } export interface Workflow { class: 'Workflow'; @@ -22,6 +22,7 @@ export interface Workflow { inputs: CommandInputParameter[]; outputs: any[]; steps: any[]; + hints?: ProcessRequirement[]; } export interface CommandLineTool { @@ -29,6 +30,21 @@ export interface CommandLineTool { id: string; inputs: CommandInputParameter[]; outputs: any[]; + hints?: ProcessRequirement[]; +} + +export type ProcessRequirement = GenericProcessRequirement | WorkflowRunnerResources; + +export interface GenericProcessRequirement { + class: string; +} + +export interface WorkflowRunnerResources { + class: 'http://arvados.org/cwl#WorkflowRunnerResources'; + ramMin?: number; + coresMin?: number; + keep_cache?: number; + acrContainerImage?: string; } export type CommandInputParameter = @@ -41,6 +57,8 @@ export type CommandInputParameter = FileCommandInputParameter | DirectoryCommandInputParameter | StringArrayCommandInputParameter | + IntArrayCommandInputParameter | + FloatArrayCommandInputParameter | FileArrayCommandInputParameter | DirectoryArrayCommandInputParameter | EnumCommandInputParameter; @@ -90,6 +108,8 @@ export interface GenericCommandInputParameter { doc?: string | string[]; default?: Value; type?: Type | Array; + value?: Value; + disabled?: boolean; } export type GenericArrayCommandInputParameter = GenericCommandInputParameter, Value[]>; @@ -104,25 +124,36 @@ export type DirectoryCommandInputParameter = GenericCommandInputParameter; export type StringArrayCommandInputParameter = GenericArrayCommandInputParameter; +export type IntArrayCommandInputParameter = GenericArrayCommandInputParameter; +export type FloatArrayCommandInputParameter = GenericArrayCommandInputParameter; export type FileArrayCommandInputParameter = GenericArrayCommandInputParameter; export type DirectoryArrayCommandInputParameter = GenericArrayCommandInputParameter; export type WorkflowInputsData = { [key: string]: boolean | number | string | File | Directory; }; -export const parseWorkflowDefinition = (workflow: WorkflowResource): WorkflowResoruceDefinition => { +export const parseWorkflowDefinition = (workflow: WorkflowResource): WorkflowResourceDefinition => { const definition = safeLoad(workflow.definition); return definition; }; -export const getWorkflowInputs = (workflowDefinition: WorkflowResoruceDefinition) => { - const mainWorkflow = workflowDefinition.$graph.find(item => item.class === 'Workflow' && item.id === '#main'); +export const getWorkflow = (workflowDefinition: WorkflowResourceDefinition) => { + if (!workflowDefinition.$graph) { return undefined; } + const mainWorkflow = workflowDefinition.$graph.find(item => item.id === '#main'); return mainWorkflow - ? mainWorkflow.inputs + ? mainWorkflow : undefined; }; + +export const getWorkflowInputs = (workflowDefinition: WorkflowResourceDefinition) => { + if (!workflowDefinition) { return undefined; } + return getWorkflow(workflowDefinition) + ? getWorkflow(workflowDefinition)!.inputs + : undefined; +}; + export const getInputLabel = (input: CommandInputParameter) => { - return `${input.label || input.id}`; + return `${input.label || input.id.split('/').pop()}`; }; export const isRequiredInput = ({ type }: CommandInputParameter) => {