X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog-ui%2Fsrc%2Fapp%2Fdirectives%2Fproperty-types%2Fdata-type-fields-structure%2Fdata-type-fields-structure.ts;h=419ad2d9a650bc7488af6dbae2749512f936115b;hb=287b5c443f135bee69a9b32919f481ec40495dbf;hp=cb16ffa2b48b4157a4e19859b327f7c2e3e1a1b3;hpb=5526028d3bc464937c9a4373a7fc6e577d781cad;p=sdc.git diff --git a/catalog-ui/src/app/directives/property-types/data-type-fields-structure/data-type-fields-structure.ts b/catalog-ui/src/app/directives/property-types/data-type-fields-structure/data-type-fields-structure.ts index cb16ffa2b4..419ad2d9a6 100644 --- a/catalog-ui/src/app/directives/property-types/data-type-fields-structure/data-type-fields-structure.ts +++ b/catalog-ui/src/app/directives/property-types/data-type-fields-structure/data-type-fields-structure.ts @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -22,45 +22,37 @@ * Created by obarda on 1/27/2016. */ 'use strict'; -import * as _ from "lodash"; -import {DataTypesService} from "app/services"; -import { ValidationUtils } from "app/utils"; -import { DataTypePropertyModel } from "app/models/data-type-properties"; -import { DataTypesMap} from "app/models"; +import { DataTypesMap } from 'app/models'; +import { DataTypePropertyModel } from 'app/models/data-type-properties'; +import { DataTypesService } from 'app/services'; +import { ValidationUtils } from 'app/utils'; +import * as _ from 'lodash'; export interface IDataTypeFieldsStructureScope extends ng.IScope { - parentFormObj:ng.IFormController; - dataTypeProperties:Array; - typeName:string; - valueObjRef:any; - propertyNameValidationPattern:RegExp; - fieldsPrefixName:string; - readOnly:boolean; - currentTypeDefaultValue:any; - types:DataTypesMap; - expandByDefault:boolean; - expand:boolean; - expanded:boolean; - dataTypesService:DataTypesService; - constraints:string[]; - - expandAndCollapse():void; - getValidationPattern(type:string):RegExp; - validateIntRange(value:string):boolean; - onValueChange(propertyName:string, type:string):void - inputOnValueChange(property:any):void; -} + parentFormObj: ng.IFormController; + dataTypeProperties: DataTypePropertyModel[]; + typeName: string; + valueObjRef: any; + propertyNameValidationPattern: RegExp; + fieldsPrefixName: string; + readOnly: boolean; + currentTypeDefaultValue: any; + types: DataTypesMap; + expandByDefault: boolean; + expand: boolean; + expanded: boolean; + dataTypesService: DataTypesService; + constraints: string[]; + expandAndCollapse(): void; + getValidationPattern(type: string): RegExp; + validateIntRange(value: string): boolean; + onValueChange(propertyName: string, type: string): void; + inputOnValueChange(property: any): void; +} export class DataTypeFieldsStructureDirective implements ng.IDirective { - - - constructor(private DataTypesService:DataTypesService, - private PropertyNameValidationPattern:RegExp, - private ValidationUtils:ValidationUtils) { - } - constraints: string[]; scope = { @@ -71,35 +63,87 @@ export class DataTypeFieldsStructureDirective implements ng.IDirective { readOnly: '=', defaultValue: '@', types: '=', - expandByDefault: '=' + expandByDefault: '=' }; restrict = 'E'; replace = true; - template = ():string => { + + constructor(private DataTypesService: DataTypesService, + private PropertyNameValidationPattern: RegExp, + private ValidationUtils: ValidationUtils) { + } + + public static factory = (DataTypesService: DataTypesService, + PropertyNameValidationPattern: RegExp, + ValidationUtils: ValidationUtils) => { + return new DataTypeFieldsStructureDirective(DataTypesService, PropertyNameValidationPattern, ValidationUtils); + } + template = (): string => { return require('./data-type-fields-structure.html'); - }; - //public types=Utils.Constants.PROPERTY_DATA.TYPES; + } + + link = (scope: IDataTypeFieldsStructureScope, element: any, $attr: any) => { + scope.propertyNameValidationPattern = this.PropertyNameValidationPattern; + + scope.$watchCollection('[typeName,fieldsPrefixName]', (newData: any): void => { + this.rerender(scope); + }); + + scope.expandAndCollapse = (): void => { + if (!scope.expanded) { + this.initDataOnScope(scope, $attr); + scope.expanded = true; + } + scope.expand = !scope.expand; + }; + + scope.getValidationPattern = (type: string): RegExp => { + return this.ValidationUtils.getValidationPattern(type); + }; + + scope.validateIntRange = (value: string): boolean => { + return !value || this.ValidationUtils.validateIntRange(value); + }; + + scope.onValueChange = (propertyName: string, type: string, ): void => { + scope.valueObjRef[propertyName] = !angular.isUndefined(scope.valueObjRef[propertyName]) ? scope.valueObjRef[propertyName] : scope.currentTypeDefaultValue[propertyName]; + if (scope.valueObjRef[propertyName] && type != 'string') { + scope.valueObjRef[propertyName] = JSON.parse(scope.valueObjRef[propertyName]); + } + }; + + scope.inputOnValueChange = (property: any) => { + if (property.constraints) { + // this.constraints = property.constraints[0].validValues; + } + + const value = !scope.parentFormObj[scope.fieldsPrefixName + property.name].$error.pattern + && ('integer' == property.type && scope.parentFormObj[scope.fieldsPrefixName + property.name].$setValidity('pattern', scope.validateIntRange(scope.valueObjRef[property.name])) + || scope.onValueChange(property.name, (property.simpleType || property.type))); + return value; + }; + } + // public types=Utils.Constants.PROPERTY_DATA.TYPES; - //get data type properties array and return object with the properties and their default value - //(for example: get: [{name:"prop1",defaultValue:1 ...},{name:"prop2", defaultValue:"bla bla" ...}] + // get data type properties array and return object with the properties and their default value + // (for example: get: [{name:"prop1",defaultValue:1 ...},{name:"prop2", defaultValue:"bla bla" ...}] // return: {prop1: 1, prop2: "bla bla"} - private getDefaultValue = (dataTypeProperties:Array):any => { - let defaultValue = {}; - for (let i = 0; i < dataTypeProperties.length; i++) { - if (dataTypeProperties[i].type != 'string') { - if (!angular.isUndefined(dataTypeProperties[i].defaultValue)) { - defaultValue[dataTypeProperties[i].name] = JSON.parse(dataTypeProperties[i].defaultValue); + private getDefaultValue = (dataTypeProperties: DataTypePropertyModel[]): any => { + const defaultValue = {}; + for (const element of dataTypeProperties) { + if (element.type != 'string') { + if (!angular.isUndefined(element.defaultValue)) { + defaultValue[element.name] = JSON.parse(element.defaultValue); } } else { - defaultValue[dataTypeProperties[i].name] = dataTypeProperties[i].defaultValue; + defaultValue[element.name] = element.defaultValue; } } return defaultValue; - }; - + } - private initDataOnScope = (scope:any, $attr:any):void => { + private initDataOnScope = (scope: any, $attr: any): void => { scope.dataTypesService = this.DataTypesService; scope.dataTypeProperties = this.getDataTypeProperties(scope.typeName, scope.types); if ($attr.defaultValue) { @@ -112,7 +156,7 @@ export class DataTypeFieldsStructureDirective implements ng.IDirective { scope.valueObjRef = {}; } - _.forEach(scope.currentTypeDefaultValue, (value, key)=> { + _.forEach(scope.currentTypeDefaultValue, (value, key) => { if (angular.isUndefined(scope.valueObjRef[key])) { if (typeof scope.currentTypeDefaultValue[key] == 'object') { angular.copy(scope.currentTypeDefaultValue[key], scope.valueObjRef[key]); @@ -121,72 +165,23 @@ export class DataTypeFieldsStructureDirective implements ng.IDirective { } } }); - }; - - private getDataTypeProperties = (dataTypeName:string, typesInModel:DataTypesMap):Array => { + } + + private getDataTypeProperties = (dataTypeName: string, typesInModel: DataTypesMap): DataTypePropertyModel[] => { let properties = typesInModel[dataTypeName].properties || []; - if (typesInModel[dataTypeName].derivedFromName != "tosca.datatypes.Root") { + if (typesInModel[dataTypeName].derivedFromName != 'tosca.datatypes.Root') { properties = this.getDataTypeProperties(typesInModel[dataTypeName].derivedFromName, typesInModel).concat(properties); } return properties; - }; + } - private rerender = (scope:any):void => { + private rerender = (scope: any): void => { scope.expanded = false; scope.expand = false; if (scope.expandByDefault) { scope.expandAndCollapse(); } - }; - - link = (scope:IDataTypeFieldsStructureScope, element:any, $attr:any) => { - scope.propertyNameValidationPattern = this.PropertyNameValidationPattern; - - scope.$watchCollection('[typeName,fieldsPrefixName]', (newData:any):void => { - this.rerender(scope); - }); - - - scope.expandAndCollapse = ():void => { - if (!scope.expanded) { - this.initDataOnScope(scope, $attr); - scope.expanded = true; - } - scope.expand = !scope.expand; - }; - - scope.getValidationPattern = (type:string):RegExp => { - return this.ValidationUtils.getValidationPattern(type); - }; - - scope.validateIntRange = (value:string):boolean => { - return !value || this.ValidationUtils.validateIntRange(value); - }; - - scope.onValueChange = (propertyName:string, type:string,):void => { - scope.valueObjRef[propertyName] = !angular.isUndefined(scope.valueObjRef[propertyName]) ? scope.valueObjRef[propertyName] : scope.currentTypeDefaultValue[propertyName]; - if (scope.valueObjRef[propertyName] && type != 'string') { - scope.valueObjRef[propertyName] = JSON.parse(scope.valueObjRef[propertyName]); - } - }; - - scope.inputOnValueChange = (property:any) => { - if (property.constraints){ - // this.constraints = property.constraints[0].validValues; - } - - let value = !scope.parentFormObj[scope.fieldsPrefixName + property.name].$error.pattern - && ('integer' == property.type && scope.parentFormObj[scope.fieldsPrefixName + property.name].$setValidity('pattern', scope.validateIntRange(scope.valueObjRef[property.name])) - || scope.onValueChange(property.name, (property.simpleType || property.type))); - return value; - } - }; - - public static factory = (DataTypesService:DataTypesService, - PropertyNameValidationPattern:RegExp, - ValidationUtils:ValidationUtils)=> { - return new DataTypeFieldsStructureDirective(DataTypesService, PropertyNameValidationPattern, ValidationUtils); - }; + } } DataTypeFieldsStructureDirective.factory.$inject = ['Sdc.Services.DataTypesService', 'PropertyNameValidationPattern', 'ValidationUtils'];