}
export interface WorkflowResoruceDefinition {
cwlVersion: string;
- $graph: Array<Workflow | CommandLineTool>;
+ graph?: Array<Workflow | CommandLineTool>;
+ $graph?: Array<Workflow | CommandLineTool>;
}
export interface Workflow {
class: 'Workflow';
FileCommandInputParameter |
DirectoryCommandInputParameter |
StringArrayCommandInputParameter |
+ IntArrayCommandInputParameter |
+ FloatArrayCommandInputParameter |
FileArrayCommandInputParameter |
DirectoryArrayCommandInputParameter |
EnumCommandInputParameter;
doc?: string | string[];
default?: Value;
type?: Type | Array<Type | CWLType.NULL>;
+ value?: Value;
+ disabled?: boolean;
}
export type GenericArrayCommandInputParameter<Type, Value> = GenericCommandInputParameter<CommandInputArraySchema<Type>, Value[]>;
export type EnumCommandInputParameter = GenericCommandInputParameter<CommandInputEnumSchema, string>;
export type StringArrayCommandInputParameter = GenericArrayCommandInputParameter<CWLType.STRING, string>;
+export type IntArrayCommandInputParameter = GenericArrayCommandInputParameter<CWLType.INT, string>;
+export type FloatArrayCommandInputParameter = GenericArrayCommandInputParameter<CWLType.FLOAT, string>;
export type FileArrayCommandInputParameter = GenericArrayCommandInputParameter<CWLType.FILE, File>;
export type DirectoryArrayCommandInputParameter = GenericArrayCommandInputParameter<CWLType.DIRECTORY, Directory>;
};
export const getWorkflowInputs = (workflowDefinition: WorkflowResoruceDefinition) => {
- const mainWorkflow = workflowDefinition.$graph.find(item => item.class === 'Workflow' && item.id === '#main');
- return mainWorkflow
- ? mainWorkflow.inputs
- : undefined;
+ if (workflowDefinition.graph) {
+ const mainWorkflow = workflowDefinition.graph.find(item => item.class === 'Workflow' && item.id === '#main');
+ return mainWorkflow
+ ? mainWorkflow.inputs
+ : undefined;
+ } else {
+ const mainWorkflow = workflowDefinition.$graph!.find(item => item.class === 'Workflow' && item.id === '#main');
+ return mainWorkflow
+ ? mainWorkflow.inputs
+ : undefined;
+ }
};
+
export const getInputLabel = (input: CommandInputParameter) => {
return `${input.label || input.id}`;
};
? input.type.indexOf(type) > -1
: input.type === type;
+export const isArrayOfType = (input: GenericCommandInputParameter<any, any>, type: CWLType) =>
+ typeof input.type === 'object' &&
+ input.type.type === 'array'
+ ? input.type.items === type
+ : false;
+
export const stringifyInputType = ({ type }: CommandInputParameter) => {
if (typeof type === 'string') {
return type;