summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-custom-function/tosca-custom-function.component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-custom-function/tosca-custom-function.component.ts')
-rw-r--r--catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-custom-function/tosca-custom-function.component.ts76
1 files changed, 65 insertions, 11 deletions
diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-custom-function/tosca-custom-function.component.ts b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-custom-function/tosca-custom-function.component.ts
index 7746d3845f..35f1649ec6 100644
--- a/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-custom-function/tosca-custom-function.component.ts
+++ b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-custom-function/tosca-custom-function.component.ts
@@ -30,7 +30,9 @@ import {PROPERTY_TYPES} from "../../../../../utils/constants";
import {InstanceFeDetails} from "../../../../../models/instance-fe-details";
import {ToscaFunctionValidationEvent} from "../tosca-function.component";
import {ToscaFunction} from "../../../../../models/tosca-function";
+import {ToscaGetFunction} from "../../../../../models/tosca-get-function";
import {CustomToscaFunction} from "../../../../../models/default-custom-functions";
+import {ToscaGetFunctionValidationEvent} from "../tosca-get-function/tosca-get-function.component";
@Component({
selector: 'app-tosca-custom-function',
@@ -43,10 +45,14 @@ export class ToscaCustomFunctionComponent implements OnInit {
@Input() componentInstanceMap: Map<string, InstanceFeDetails> = new Map<string, InstanceFeDetails>();
@Input() customToscaFunctions: Array<CustomToscaFunction> = [];
@Input() name: string;
+ @Input() type: ToscaFunctionType;
+ @Input() propertyType: string;
+ @Input() propertySchemaType: string = undefined;
@Input() isDefaultCustomFunction: boolean;
@Output() onValidFunction: EventEmitter<ToscaCustomFunction> = new EventEmitter<ToscaCustomFunction>();
@Output() onValidityChange: EventEmitter<ToscaCustomFunctionValidationEvent> = new EventEmitter<ToscaCustomFunctionValidationEvent>();
+ toscaGetFunction: ToscaFunction;
customFunctionFormName: FormControl = new FormControl('', [Validators.required, Validators.minLength(1)]);
customParameterFormArray: FormArray = new FormArray([], Validators.minLength(1));
formGroup: FormGroup = new FormGroup(
@@ -58,20 +64,29 @@ export class ToscaCustomFunctionComponent implements OnInit {
parameters: ToscaFunctionParameter[] = [];
propertyInputList: Array<PropertyBEModel> = [];
+ previousType: ToscaFunctionType;
- STRING_FUNCTION_TYPE = ToscaFunctionType.STRING
+ STRING_FUNCTION_TYPE = ToscaFunctionType.STRING;
+ GET_INPUT = ToscaFunctionType.GET_INPUT;
ngOnInit() {
this.initForm();
}
ngOnChanges() {
+ if (this.previousType && this.previousType != this.type) {
+ this.propertyInputList = [];
+ this.customParameterFormArray = new FormArray([], Validators.minLength(1));
+ this.parameters = [];
+ }
+ this.fillVariables();
if (this.name && this.isDefaultCustomFunction) {
this.customFunctionFormName.setValue(this.name);
this.emitOnValidityChange();
} else {
- this.name = "";
+ this.name = '';
}
+ this.previousType = this.type;
}
private initForm(): void {
@@ -81,7 +96,13 @@ export class ToscaCustomFunctionComponent implements OnInit {
this.onValidFunction.emit(this.buildCustomFunctionFromForm());
}
});
+ }
+
+ private fillVariables() {
if (!this.toscaCustomFunction) {
+ if (this.type === this.GET_INPUT && this.parameters.length < 1) {
+ this.addFunction();
+ }
return;
}
if (this.toscaCustomFunction.parameters) {
@@ -89,13 +110,13 @@ export class ToscaCustomFunctionComponent implements OnInit {
this.customFunctionFormName.setValue(this.name)
this.parameters = Array.from(this.toscaCustomFunction.parameters);
for (const parameter of this.parameters) {
+ if (this.type === this.GET_INPUT) {
+ this.toscaGetFunction = parameter as ToscaGetFunction;
+ this.addToscaFunctionToParameters(parameter);
+ return;
+ }
if (parameter.type !== PROPERTY_TYPES.STRING) {
- const propertyBEModel = this.createProperty(parameter.value);
- propertyBEModel.toscaFunction = <ToscaFunction> parameter;
- this.propertyInputList.push(propertyBEModel);
- this.customParameterFormArray.push(
- new FormControl(parameter, [Validators.required, Validators.minLength(1)])
- );
+ this.addToscaFunctionToParameters(parameter);
} else {
this.propertyInputList.push(undefined);
this.customParameterFormArray.push(
@@ -104,6 +125,18 @@ export class ToscaCustomFunctionComponent implements OnInit {
}
}
}
+ if (this.type === this.GET_INPUT && this.parameters.length < 1) {
+ this.addFunction();
+ }
+ }
+
+ private addToscaFunctionToParameters(parameter: ToscaFunctionParameter) {
+ const propertyBEModel = this.createProperty(parameter.value);
+ propertyBEModel.toscaFunction = <ToscaFunction> parameter;
+ this.propertyInputList.push(propertyBEModel);
+ this.customParameterFormArray.push(
+ new FormControl(parameter, [Validators.required, Validators.minLength(1)])
+ );
}
private buildCustomFunctionFromForm(): ToscaCustomFunction {
@@ -111,6 +144,9 @@ export class ToscaCustomFunctionComponent implements OnInit {
toscaCustomFunction1.name = this.customFunctionFormName.value;
this.customParameterFormArray.controls.forEach(control => {
const value = control.value;
+ if (!value) {
+ return;
+ }
if (typeof value === 'string') {
const stringParameter = new ToscaStringParameter();
stringParameter.value = value;
@@ -140,12 +176,13 @@ export class ToscaCustomFunctionComponent implements OnInit {
addStringParameter(): void {
const toscaStringParameter = new ToscaStringParameter();
- toscaStringParameter.value = ''
- this.parameters.push(toscaStringParameter);
+ toscaStringParameter.value = '';
this.propertyInputList.push(undefined);
this.customParameterFormArray.push(
new FormControl('', [Validators.required, Validators.minLength(1)])
);
+ this.parameters.push(toscaStringParameter);
+ console.log(this.customParameterFormArray)
}
removeParameter(position): void {
@@ -156,7 +193,15 @@ export class ToscaCustomFunctionComponent implements OnInit {
createProperty(value?: any): PropertyBEModel {
const property = new PropertyBEModel();
- property.type = PROPERTY_TYPES.ANY;
+ if (this.type === this.GET_INPUT) {
+ property.type = this.propertyType;
+ if (this.propertySchemaType) {
+ property.schemaType = this.propertySchemaType;
+ }
+ } else {
+ property.type = PROPERTY_TYPES.ANY;
+ }
+
property.value = value ? value : undefined;
return property;
}
@@ -168,6 +213,15 @@ export class ToscaCustomFunctionComponent implements OnInit {
this.customParameterFormArray.controls[index].setValue(undefined);
}
}
+
+ onGetFunctionValidityChange(event: ToscaGetFunctionValidationEvent, index: number): void {
+ if (event.isValid && event.toscaGetFunction) {
+ this.customParameterFormArray.controls[index].setValue(event.toscaGetFunction);
+ } else {
+ this.customParameterFormArray.controls[index].setValue(undefined);
+ }
+ this.emitOnValidityChange();
+ }
}
export interface ToscaCustomFunctionValidationEvent {