summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/directives/property-types/data-type-fields-structure/data-type-fields-structure.ts
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-ui/src/app/directives/property-types/data-type-fields-structure/data-type-fields-structure.ts')
-rw-r--r--catalog-ui/src/app/directives/property-types/data-type-fields-structure/data-type-fields-structure.ts211
1 files changed, 103 insertions, 108 deletions
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<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;
-}
+ 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<DataTypePropertyModel>):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<DataTypePropertyModel> => {
+ }
+
+ 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'];