in client/src/components/pipelines/version/graph/visualization/forms/utilities/extract-entity-properties.js [88:255]
export default function extractEntityProperties (entity, wdlDocument) {
let name,
type,
alias,
executableType,
executableName,
scatterItems,
expression,
inputs,
declarations,
outputs,
executable,
task,
runtime,
command,
issues,
entityIssues,
nameIssues,
commandIssues,
executables;
executables = [];
let nameAvailable = false;
let aliasAvailable = false;
let executableNameAvailable = false;
let executableNameEditable = false;
let inputsAvailable = false;
let declarationsAvailable = false;
let outputsAvailable = false;
let inputsEditable = false;
let declarationsEditable = false;
let outputsEditable = false;
let scatterItemsAvailable = false;
let expressionAvailable = false;
let runtimeAttributesAvailable = false;
let runtimeAttributesEditable = false;
let commandAvailable = false;
let commandEditable = false;
let isPipelineTask = false;
let canRemoveEntity = false;
let canAddSubAction = false;
if (entity) {
type = getEntityType(entity);
canRemoveEntity = !isWorkflow(entity);
canAddSubAction = !isCall(entity);
issues = entity.issues || [];
entityIssues = entity.entityIssues || [];
if (isWorkflow(entity) || isTask(entity)) {
name = entity.name;
nameAvailable = true;
} else if (isCall(entity)) {
alias = entity.alias;
aliasAvailable = true;
executableName = entity.executableName;
executableNameAvailable = true;
executableNameEditable = true;
executableType = getEntityType(entity.executable);
}
if (isCall(entity) || isTask(entity)) {
task = isCall(entity) ? entity.executable : entity;
if (task) {
runtimeAttributesAvailable = true;
runtimeAttributesEditable = task.document === wdlDocument;
const {
runtime: taskRuntime = [],
command: taskCommand
} = extractTaskProperties(task);
runtime = taskRuntime.map((r) => ({
property: r.property,
value: r.value,
valid: r.valid === undefined ? true : r.valid,
issues: r.issues || [],
entityIssues: r.entityIssues || [],
docker: /^docker$/i.test(r.property),
node: /^node$/i.test(r.property),
removable: r.removable === undefined || r.removable,
id: r.uuid
}));
commandAvailable = true;
commandEditable = !isPipelineTask && task.document === wdlDocument;
executableNameEditable = task.document === wdlDocument;
command = taskCommand;
}
}
if (
isWorkflow(entity) ||
isTask(entity) ||
isCall(entity) ||
isScatter(entity)
) {
const eInputs = entity.getActionInputs();
const eDeclarations = entity.getActionDeclarations();
executable = isCall(entity) ? (entity.executable || entity) : entity;
const eOutputs = isWorkflow(executable) || isTask(executable)
? executable.getActionOutputs()
: [];
inputsEditable = !isScatter(entity) && executable.document === wdlDocument;
declarationsEditable = !isCall(entity) && executable.document === wdlDocument;
outputsEditable = !isScatter(entity) && executable.document === wdlDocument;
inputsAvailable = !isScatter(entity);
declarationsAvailable = isScatter(entity) ||
(entity.supports(WdlVersion.draft3) && !isCall(entity));
outputsAvailable = isWorkflow(executable) || isTask(executable);
if (isScatter(entity)) {
scatterItemsAvailable = true;
scatterItems = [].concat(eInputs);
inputs = [];
} else {
scatterItems = [];
inputs = []
.concat(eInputs);
}
declarations = []
.concat(eDeclarations);
outputs = []
.concat(eOutputs);
}
if (isConditional(entity)) {
expressionAvailable = true;
expression = entity.expression;
}
if (entity.document) {
executables = (entity.document.executables || [])
.filter((e) => !isWorkflow(e) || e.document !== wdlDocument);
}
nameIssues = entityIssues.filter((issue) => issue instanceof WdlErrors.UniqueNameRequiredError);
commandIssues = entityIssues.filter((issue) => issue instanceof WdlErrors.CommandRequiredError);
}
return {
type,
name,
nameAvailable,
alias,
aliasAvailable,
executableName,
executableNameAvailable,
executableNameEditable,
executableType,
inputs,
inputsAvailable,
inputsEditable,
declarations,
declarationsAvailable,
declarationsEditable,
outputs,
executable,
outputsAvailable,
outputsEditable,
scatterItems,
scatterItemsAvailable,
scatterItemsEditable: false,
expression,
expressionAvailable,
runtime,
runtimeAttributesAvailable,
runtimeAttributesEditable,
task,
command,
commandAvailable,
commandEditable,
issues,
nameIssues,
commandIssues,
isPipelineTask,
canRemoveEntity,
canAddSubAction,
executables
};
}