<div data-ng-if="dataTypesService.isDataTypeForDataTypePropertyType(property)" class="inner-structure">
<fields-structure value-obj-ref="(valueObjRef[property.name])"
type-name="property.type"
+ parent-property="parentProperty"
+ component-instance-map="componentInstanceMap"
parent-form-obj="parentFormObj"
fields-prefix-name="fieldsPrefixName+property.name"
read-only="readOnly"
+ is-service="isService"
default-value="{{currentTypeDefaultValue[property.name]}}">
</fields-structure>
<div ng-switch-when="map">
<type-map value-obj-ref="valueObjRef[property.name]"
schema-property="property.schema.property"
+ parent-property="property"
+ component-instance-map="componentInstanceMap"
parent-form-obj="parentFormObj"
fields-prefix-name="fieldsPrefixName+property.name"
read-only="readOnly"
default-value="{{currentTypeDefaultValue[property.name]}}"
+ is-service="isService"
types="types"></type-map>
</div>
<div ng-switch-when="list">
<type-list value-obj-ref="valueObjRef[property.name]"
schema-property="property.schema.property"
+ parent-property="parentProperty"
+ component-instance-map="componentInstanceMap"
parent-form-obj="parentFormObj"
fields-prefix-name="fieldsPrefixName+property.name"
read-only="readOnly"
default-value="{{currentTypeDefaultValue[property.name]}}"
+ is-service="isService"
types="types"></type-list>
</div>
<div ng-switch-default class="primitive-value-field">
* Created by obarda on 1/27/2016.
*/
'use strict';
-import { DataTypesMap } from 'app/models';
+import { DataTypesMap, PropertyModel } from 'app/models';
import { DataTypePropertyModel } from 'app/models/data-type-properties';
import { DataTypesService } from 'app/services';
import { ValidationUtils } from 'app/utils';
+import {InstanceFeDetails} from "app/models/instance-fe-details";
import * as _ from 'lodash';
export interface IDataTypeFieldsStructureScope extends ng.IScope {
parentFormObj: ng.IFormController;
dataTypeProperties: DataTypePropertyModel[];
+ parentProperty:PropertyModel;
+ componentInstanceMap: Map<string, InstanceFeDetails>;
typeName: string;
valueObjRef: any;
propertyNameValidationPattern: RegExp;
expanded: boolean;
dataTypesService: DataTypesService;
constraints: string[];
+ isService:boolean;
expandAndCollapse(): void;
getValidationPattern(type: string): RegExp;
scope = {
valueObjRef: '=',
typeName: '=',
+ componentInstanceMap: '=',
+ parentProperty: '=',
parentFormObj: '=',
fieldsPrefixName: '=',
readOnly: '=',
defaultValue: '@',
types: '=',
- expandByDefault: '='
+ expandByDefault: '=',
+ isService: '='
};
restrict = 'E';
link = (scope:ITypeListScope, element:any, $attr:any) => {
scope.propertyNameValidationPattern = this.PropertyNameValidationPattern;
scope.stringSchema = this.stringSchema;
- if (scope.valueObjRef.length == 0) {
+ if (scope.valueObjRef == null || scope.valueObjRef.length == 0) {
+ scope.valueObjRef = [];
scope.valueObjRef.push("");
}
scope.showToscaFunction = new Array(scope.valueObjRef.length);
dropdownValuesLabel: string;
dropDownErrorMsg: string;
indexListValues:Array<ToscaIndexObject>;
+ parentListTypeFlag : boolean;
private isInitialized: boolean = false;
private componentMetadata: ComponentMetadata;
ngOnInit(): void {
this.componentMetadata = this.workspaceService.metadata;
this.indexListValues = [];
+ if (this.property != null) {
+ this.parentListTypeFlag = (this.property.type != PROPERTY_TYPES.LIST && (!this.isComplexType(this.property.type) || (this.isComplexType(this.property.type)
+ && this.property instanceof PropertyDeclareAPIModel && (<PropertyDeclareAPIModel> this.property).input instanceof DerivedFEProperty && this.property.input.type != PROPERTY_TYPES.LIST)));
+ }
this.formGroup.valueChanges.subscribe(() => {
this.formValidation();
});
if (this.property.type === PROPERTY_TYPES.ANY) {
return true;
}
- let validPropertyType = (this.property.type != PROPERTY_TYPES.LIST && property.type === PROPERTY_TYPES.LIST) ? property.schema.property.type : property.type;
- if (this.property.type != PROPERTY_TYPES.LIST && property.type === PROPERTY_TYPES.LIST && this.isComplexType(validPropertyType)) {
+ let validPropertyType = (this.parentListTypeFlag && property.type === PROPERTY_TYPES.LIST) ? property.schema.property.type : property.type;
+ if (this.parentListTypeFlag && property.type === PROPERTY_TYPES.LIST && this.isComplexType(validPropertyType)) {
let returnFlag : boolean = false;
const dataTypeFound: DataTypeModel = this.dataTypeService.getDataTypeByModelAndTypeName(this.componentMetadata.model, validPropertyType);
if (dataTypeFound && dataTypeFound.properties) {
this.indexListValues = [];
let subPropertyDropdownList : Array<PropertyDropdownValue> = [];
const selectedProperty: PropertyDropdownValue = this.selectedProperty.value;
- if (selectedProperty.isList) {
+ if (this.parentListTypeFlag && selectedProperty.isList) {
toscaIndexFlag = true;
if (selectedProperty.schemaType != null) {
nestedToscaFlag = true;
<div data-ng-if="isTypeDataType">
<fields-structure value-obj-ref="myValue"
type-name="editPropertyModel.property.type"
+ parent-property="editPropertyModel.property"
+ component-instance-map="componentInstanceMap"
parent-form-obj="forms.editForm"
fields-prefix-name="currentPropertyIndex"
read-only="editPropertyModel.property.readonly && !isPropertyValueOwner"
default-value="{{getDefaultValue()}}"
types="dataTypes"
+ is-service="!componentMetadata.isVfc"
expand-by-default="true"></fields-structure>
</div>