@Input() allowClear: boolean = true;
@Input() compositionMap: boolean = false;
@Input() compositionMapKey: string = "";
+ @Input() complexListKey: string = null;
@Output() onValidFunction: EventEmitter<ToscaGetFunction> = new EventEmitter<ToscaGetFunction>();
@Output() onValidityChange: EventEmitter<ToscaFunctionValidationEvent> = new EventEmitter<ToscaFunctionValidationEvent>();
private initToscaFunction(): void {
if (this.compositionMap && this.property.subPropertyToscaFunctions) {
let keyToFind = [this.compositionMapKey];
- let subPropertyToscaFunction = this.property.subPropertyToscaFunctions.find(subPropertyToscaFunction => this.areEqual(subPropertyToscaFunction.subPropertyPath, keyToFind));
+ if (this.complexListKey != null) {
+ keyToFind = [this.complexListKey,this.compositionMapKey];
+ }
+ let subPropertyToscaFunction;
+ this.property.subPropertyToscaFunctions.forEach(subToscaFunction => {
+ if (subToscaFunction.subPropertyPath.toString() == keyToFind.toString()) {
+ subPropertyToscaFunction = subToscaFunction;
+ }
+ });
if (subPropertyToscaFunction){
this.toscaFunction = subPropertyToscaFunction.toscaFunction;
}
this.toscaFunctionForm.setValue(this.inToscaFunction ? this.inToscaFunction : this.property.toscaFunction);
- let type = this.property.toscaFunction.type;
+ let type = this.property.toscaFunction.type ? this.property.toscaFunction.type : this.toscaFunctionForm.value.type;
if (type == ToscaFunctionType.CUSTOM) {
- let name = (this.property.toscaFunction as ToscaCustomFunction).name;
+ let name = (this.toscaFunctionForm.value as ToscaCustomFunction).name;
let customToscaFunc = this.customToscaFunctions.find(custToscFunc => _.isEqual(custToscFunc.name, name))
if (customToscaFunc) {
this.toscaFunctionTypeForm.setValue(name);
} else {
this.toscaFunctionForm.setValue(undefined);
}
+ this.emitValidityChange();
}
onCustomFunctionValidityChange(validationEvent: ToscaCustomFunctionValidationEvent): void {
} else {
this.toscaFunctionForm.setValue(undefined);
}
+ this.emitValidityChange();
}
onFunctionTypeChange(): void {