aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/operation-creator.component.ts
diff options
context:
space:
mode:
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.ts106
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();
});