UNPKG

pipeline-builder-demo

Version:
99 lines (80 loc) 3.35 kB
import { Injectable } from '@angular/core'; import * as Pipeline from 'pipeline-builder'; import {IPort, IToolOptions} from './tool-option'; @Injectable() export class ToolOptionService { private readonly IN_PROPERTY: string = 'i'; private readonly OUT_PROPERTY: string = 'o'; changeAlias(workflow: Pipeline.IWorkflow, callName: string, newAlias: string){ if(callName === newAlias) return; workflow.children[callName].rename(newAlias); } updateCommand(workflow: Pipeline.IWorkflow, taskName: string, newCommandText: string) { workflow.actions[taskName].data.command = newCommandText; } getPorts(workflowPortsObj: any) { let ports: IPort[] = []; let portNames = Object.getOwnPropertyNames(workflowPortsObj); portNames.forEach(portName => { ports.push({ _name: portName, name: portName, type: workflowPortsObj[portName].desc.type, value: workflowPortsObj[portName].desc.default }); }); return ports; } updatePorts(workflow: Pipeline.IWorkflow, selectedCall: Pipeline.IStep, opts: IToolOptions, iPortNamesToDel: string[], oPortNamesToDel: string[]){ opts.variables.forEach(portObj => { if(portObj._name){ this._editPort(workflow, selectedCall.action.name, this.IN_PROPERTY, portObj); } else { this._addPort(workflow, selectedCall.action.name, this.IN_PROPERTY, portObj); } }); opts.outputs.forEach(portObj => { if(portObj._name){ this._editPort(workflow, selectedCall.action.name, this.OUT_PROPERTY, portObj); } else { this._addPort(workflow, selectedCall.action.name, this.OUT_PROPERTY, portObj); } }); this._removePort(workflow, opts.name, iPortNamesToDel, oPortNamesToDel); } private _editPort(workflow: Pipeline.IWorkflow, taskName: string, portClass: string, portValueObj: IPort) { let oldPort = workflow.actions[taskName][portClass][portValueObj._name]; oldPort.type = portValueObj.type || ''; if(!portValueObj.value){ delete oldPort.default; } else { oldPort.default = portValueObj.value; } if(portValueObj._name !== portValueObj.name) { switch (portClass) { case this.IN_PROPERTY: workflow.actions[taskName].renameIPort(portValueObj._name, portValueObj.name); break; case this.OUT_PROPERTY: workflow.actions[taskName].renameOPort(portValueObj._name, portValueObj.name); } } } private _addPort(workflow: Pipeline.IWorkflow, taskName: string, portClass: string, portValueObj: IPort) { let portDescription = {}; portDescription[portClass] = {}; portDescription[portClass][portValueObj.name] = { type: portValueObj.type || '' }; if(portValueObj.value) { portDescription[portClass][portValueObj.name].default = portValueObj.value; } workflow.actions[taskName].addPorts(portDescription); } private _removePort(workflow: Pipeline.IWorkflow, taskName: string, iPortNamesToDel: string[], oPortNamesToDel: string[]){ let portsToDel = {}; portsToDel[this.IN_PROPERTY] = iPortNamesToDel; portsToDel[this.OUT_PROPERTY] = oPortNamesToDel; workflow.actions[taskName].removePorts(portsToDel); } }