diff options
Diffstat (limited to 'catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/operation-creator.component.ts')
-rw-r--r-- | catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/operation-creator.component.ts | 106 |
1 files changed, 66 insertions, 40 deletions
diff --git a/catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/operation-creator.component.ts b/catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/operation-creator.component.ts index 8d26055feb..d2bad5f02d 100644 --- a/catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/operation-creator.component.ts +++ b/catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/operation-creator.component.ts @@ -5,34 +5,45 @@ import {Subscription} from "rxjs/Subscription"; import {TranslateService} from "app/ng2/shared/translator/translate.service"; import {WorkflowServiceNg2} from 'app/ng2/services/workflow.service'; -import {InputModel, OperationModel, OperationParameter} from 'app/models'; +import {OperationModel, OperationParameter, InputBEModel} from 'app/models'; import {DropdownValue} from "app/ng2/components/ui/form-components/dropdown/ui-element-dropdown.component"; +export interface OperationCreatorInput { + operation: OperationModel, + inputProperties: Array<InputBEModel>, + enableWorkflowAssociation: boolean, + readonly: boolean, + isService: boolean +} + @Component({ selector: 'operation-creator', templateUrl: './operation-creator.component.html', - styleUrls:['./operation-creator.component.less'], + styleUrls: ['./operation-creator.component.less'], providers: [TranslateService] }) export class OperationCreatorComponent { - input: any; + input: OperationCreatorInput; operation: OperationModel; workflows: Array<DropdownValue> = []; workflowVersions: Array<DropdownValue> = []; inputProperties: Array<DropdownValue> = []; - inputPropertyTypes: {}; + inputPropertyTypes: { [key: string]: string }; inputParameters: Array<OperationParameter> = []; noAssignInputParameters: Array<OperationParameter> = []; assignInputParameters: { [key: string]: { [key: string]: Array<OperationParameter>; }; } = {}; - isAssociateWorkflow: boolean = false; + enableWorkflowAssociation: boolean; + isAssociateWorkflow: boolean; isEditMode: boolean = false; isLoading: boolean = false; + readonly: boolean; + isService: boolean; propertyTooltipText: String; @@ -44,52 +55,64 @@ export class OperationCreatorComponent { ngOnInit() { + this.readonly = this.input.readonly; + this.isService = this.input.isService; + this.enableWorkflowAssociation = this.input.enableWorkflowAssociation && !this.isService; + this.inputProperties = _.map(this.input.inputProperties, - (input: InputModel) => new DropdownValue(input.uniqueId, input.name) + (input: InputBEModel) => new DropdownValue(input.uniqueId, input.name) ); this.inputPropertyTypes = {}; - _.forEach(this.input.inputProperties, (input: InputModel) => { + _.forEach(this.input.inputProperties, (input: InputBEModel) => { this.inputPropertyTypes[input.uniqueId] = input.type; }); - const inputOperation = <OperationModel>this.input.operation; + const inputOperation = this.input.operation; this.operation = new OperationModel(inputOperation || {}); - const buildInputParams = () => { - if (inputOperation.inputParams) { - this.inputParameters = []; - _.forEach(inputOperation.inputParams.listToscaDataDefinition, (input: OperationParameter) => { - this.addParam(input); + if (this.enableWorkflowAssociation) { + this.isLoading = true; + this.workflowServiceNg2.getWorkflows().subscribe(workflows => { + this.isLoading = false; + this.workflows = _.map(workflows, (workflow: any) => { + return new DropdownValue(workflow.id, workflow.name); }); - } - } - - this.isLoading = true; - this.workflowServiceNg2.getWorkflows().subscribe(workflows => { - this.isLoading = false; - - this.workflows = _.map(workflows, (workflow: any) => { - return new DropdownValue(workflow.id, workflow.name); + this.reconstructOperation(); }); + } else { + this.reconstructOperation(); + } - if (inputOperation) { - if (inputOperation.workflowVersionId) { - this.isAssociateWorkflow = true; - this.onSelectWorkflow(inputOperation.workflowVersionId).add(buildInputParams); - } else { - this.inputParameters = this.noAssignInputParameters; - this.isAssociateWorkflow = false; - buildInputParams(); - } + } - if (inputOperation.uniqueId) { - this.isEditMode = true; - } + reconstructOperation = () => { + const inputOperation = this.input.operation; + if (inputOperation) { + if (!this.enableWorkflowAssociation || !inputOperation.workflowVersionId || this.isService) { + this.inputParameters = this.noAssignInputParameters; + this.isAssociateWorkflow = false; + this.buildInputParams(); + } else { + this.isAssociateWorkflow = true; + this.onSelectWorkflow(inputOperation.workflowVersionId).add(this.buildInputParams); } - }); + if (inputOperation.uniqueId) { + this.isEditMode = true; + } + } + } + buildInputParams = () => { + if (this.input.operation.inputParams) { + _.forEach( + [...this.input.operation.inputParams.listToscaDataDefinition].sort((a, b) => a.name.localeCompare(b.name)), + (input: OperationParameter) => { + this.addParam(input); + } + ); + } } onSelectWorkflow(selectedVersionId?: string): Subscription { @@ -104,7 +127,9 @@ export class OperationCreatorComponent { this.isLoading = false; this.workflowVersions = _.map( - _.filter(versions, version => version.state === this.workflowServiceNg2.VERSION_STATE_CERTIFIED), + _.filter( + versions, version => version.state === this.workflowServiceNg2.VERSION_STATE_CERTIFIED + ).sort((a, b) => a.name.localeCompare(b.name)), (version: any) => { if (!this.assignInputParameters[this.operation.workflowId][version.id]) { this.assignInputParameters[this.operation.workflowId][version.id] = _.map(version.inputs, (input: any) => { @@ -114,14 +139,15 @@ export class OperationCreatorComponent { property: null, mandatory: input.mandatory, }); - }); + }) + .sort((a, b) => a.name.localeCompare(b.name)); } - return new DropdownValue(version.id, `v. ${version.name}`); + return new DropdownValue(version.id, `V ${version.name}`); } ); - if (!selectedVersionId && versions.length) { - this.operation.workflowVersionId = _.last(versions.sort()).id; + if (!selectedVersionId && this.workflowVersions.length) { + this.operation.workflowVersionId = _.last(this.workflowVersions).value; } this.changeWorkflowVersion(); }); |