aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/input-list/input-list.component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/input-list/input-list.component.ts')
-rw-r--r--catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/input-list/input-list.component.ts37
1 files changed, 36 insertions, 1 deletions
diff --git a/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/input-list/input-list.component.ts b/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/input-list/input-list.component.ts
index 208c0030f6..62c5e8a52a 100644
--- a/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/input-list/input-list.component.ts
+++ b/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/input-list/input-list.component.ts
@@ -23,9 +23,12 @@ import {Component, EventEmitter, Input, Output} from '@angular/core';
import {InputOperationParameter} from "../../../../../../models/interfaceOperation";
import {DataTypeModel} from "../../../../../../models/data-types";
import {DerivedPropertyType} from "../../../../../../models/properties-inputs/property-be-model";
+import {SubPropertyToscaFunction} from "../../../../../../models/sub-property-tosca-function";
import {PROPERTY_DATA, PROPERTY_TYPES} from "../../../../../../utils/constants";
import {InstanceFeDetails} from "../../../../../../models/instance-fe-details";
+import {ToscaFunction} from "../../../../../../models/tosca-function";
import {CustomToscaFunction} from "../../../../../../models/default-custom-functions";
+import {ToscaFunctionType} from 'app/models/tosca-function-type.enum';
@Component({
selector: 'input-list',
@@ -121,6 +124,9 @@ export class InputListComponent {
onValueChange($event: any) {
const inputOperationParameter = this._inputs.find(input => input.name == $event.name);
+ if (!inputOperationParameter.subPropertyToscaFunctions) {
+ inputOperationParameter.subPropertyToscaFunctions = [];
+ }
if (inputOperationParameter) {
inputOperationParameter.valid = true;
if ($event.isToscaFunction) {
@@ -128,15 +134,44 @@ export class InputListComponent {
if (!inputOperationParameter.toscaFunction) {
inputOperationParameter.valid = false;
}
+ } else if (this.isTypeComplex(inputOperationParameter.type)) {
+ this.setComplexType($event, inputOperationParameter);
} else {
inputOperationParameter.value = $event.value;
inputOperationParameter.toscaFunction = null;
}
+ }
this.inputsValidityChangeEvent.emit(this._inputs.every(input => input.valid === true));
this.inputValueChangeEvent.emit(new InputOperationParameter(inputOperationParameter));
- }
}
+ private setComplexType ($event, inputOperationParameter): void {
+ Object.keys($event.value).forEach(function (key) {
+ let value = $event.value[key];
+ if (!value || value.length < 1) {
+ return;
+ }
+ let subPropertyToscaFunction = inputOperationParameter.subPropertyToscaFunctions.find(existingSubPropertyToscaFunction => {
+ const prop = existingSubPropertyToscaFunction.subPropertyPath;
+ return prop && [key] && prop.length === [key].length && prop.every(function(value, index) { return value === [key][index]});
+ });
+ let valueKeys = value instanceof Object ? Object.keys(value) : undefined;
+ if (value && value.type && value.type in ToscaFunctionType) {
+ if (!subPropertyToscaFunction){
+ subPropertyToscaFunction = new SubPropertyToscaFunction();
+ inputOperationParameter.subPropertyToscaFunctions.push(subPropertyToscaFunction);
+ }
+ subPropertyToscaFunction.toscaFunction = value;
+ $event.value[key] = (value as ToscaFunction).buildValueObject();
+ let array: string[] = [];
+ array.push(key)
+ subPropertyToscaFunction.subPropertyPath = array;
+ } else if (subPropertyToscaFunction && (!valueKeys || !valueKeys.every(value => value.toUpperCase() in ToscaFunctionType))) {
+ inputOperationParameter.subPropertyToscaFunctions.splice(inputOperationParameter.subPropertyToscaFunctions.indexOf(subPropertyToscaFunction), 1)
+ }
+ });
+}
+
onDelete(inputName: string) {
this.inputDeleteEvent.emit(inputName);
}