diff options
Diffstat (limited to 'catalog-ui/src/app/ng2/services')
5 files changed, 109 insertions, 196 deletions
diff --git a/catalog-ui/src/app/ng2/services/component-mode.service.ts b/catalog-ui/src/app/ng2/services/component-mode.service.ts new file mode 100644 index 0000000000..12a581e5f9 --- /dev/null +++ b/catalog-ui/src/app/ng2/services/component-mode.service.ts @@ -0,0 +1,29 @@ +/** + * Created by rc2122 on 5/23/2017. + */ +import { Injectable } from '@angular/core'; +import {WorkspaceMode, ComponentState, Role} from "../../utils/constants"; +import { Component as ComponentData } from "app/models"; +import { CacheService } from "app/services/cache-service" + +@Injectable() + +export class ComponentModeService { + + constructor(private cacheService:CacheService) { + } + + public getComponentMode = (component:ComponentData):WorkspaceMode => {//return if is edit or view for resource or service + let mode = WorkspaceMode.VIEW; + + let user = this.cacheService.get("user"); + if (component.lifecycleState === ComponentState.NOT_CERTIFIED_CHECKOUT && + component.lastUpdaterUserId === user.userId) { + if ((component.isService() || component.isResource()) && user.role == Role.DESIGNER) { + mode = WorkspaceMode.EDIT; + } + } + return mode; + } +} + diff --git a/catalog-ui/src/app/ng2/services/component-services/service.service.ts b/catalog-ui/src/app/ng2/services/component-services/service.service.ts index b47b64c5c2..d2f7078599 100644 --- a/catalog-ui/src/app/ng2/services/component-services/service.service.ts +++ b/catalog-ui/src/app/ng2/services/component-services/service.service.ts @@ -20,7 +20,7 @@ export class ServiceServiceNg2 { validateConformanceLevel(service: Service): Observable<boolean> { - return this.http.get(this.baseUrl + service.getTypeUrl() + service.uniqueId + '/conformanceLevelValidation') + return this.http.get(this.baseUrl + service.getTypeUrl() + service.uuid + '/conformanceLevelValidation') .map((res: Response) => { return res.json(); }); diff --git a/catalog-ui/src/app/ng2/services/data-type.service.ts b/catalog-ui/src/app/ng2/services/data-type.service.ts index e7ea1a8430..be2388144f 100644 --- a/catalog-ui/src/app/ng2/services/data-type.service.ts +++ b/catalog-ui/src/app/ng2/services/data-type.service.ts @@ -49,12 +49,14 @@ export class DataTypeService { return propertiesArray; } */ - + public getDerivedDataTypeProperties(dataTypeObj: DataTypeModel, propertiesArray: Array<DerivedFEProperty>, parentName: string) { //push all child properties to array if (dataTypeObj.properties) { dataTypeObj.properties.forEach((derivedProperty) => { - propertiesArray.push(new DerivedFEProperty(derivedProperty, parentName)); + if(dataTypeObj.name !== PROPERTY_DATA.OPENECOMP_ROOT || derivedProperty.name !== PROPERTY_DATA.SUPPLEMENTAL_DATA){//The requirement is to not display the property supplemental_data + propertiesArray.push(new DerivedFEProperty(derivedProperty, parentName)); + } let derivedDataTypeObj: DataTypeModel = this.getDataTypeByTypeName(derivedProperty.type); this.getDerivedDataTypeProperties(derivedDataTypeObj, propertiesArray, parentName + "#" + derivedProperty.name); }); @@ -62,8 +64,8 @@ export class DataTypeService { //recurse parent (derivedFrom), in case one of parents contains properties if (PROPERTY_DATA.ROOT_DATA_TYPE !== dataTypeObj.derivedFrom.name) { this.getDerivedDataTypeProperties(dataTypeObj.derivedFrom, propertiesArray, parentName); - } - } - + } + } + } diff --git a/catalog-ui/src/app/ng2/services/hierarchy-nav.service.ts b/catalog-ui/src/app/ng2/services/hierarchy-nav.service.ts new file mode 100644 index 0000000000..512505d7c6 --- /dev/null +++ b/catalog-ui/src/app/ng2/services/hierarchy-nav.service.ts @@ -0,0 +1,63 @@ +import { Injectable } from '@angular/core'; +import { SimpleFlatProperty, PropertyFEModel, DerivedFEProperty } from 'app/models'; + + +@Injectable() +export class HierarchyNavService { + /** + * Build hirarchy structure for the tree when user selects on table row. + * First create Array<SimpleFlatProperty> and insert also the parent (PropertyFEModel) to this array. + * The Array is flat and contains SimpleFlatProperty that has parentName and uniqueId. + * Now we build hirarchy from this Array (that includes childrens) and return it for the tree + * + * @argument property: PropertyFEModel - property contains flattenedChildren array of DerivedFEProperty + * @returns Array<SimpleFlatProperty> - containing childrens Array<SimpleFlatProperty>, augmantin childrens to SimpleFlatProperty. + */ + public getSimplePropertiesTree(property: PropertyFEModel, instanceName: string): Array<SimpleFlatProperty> { + // Build Array of SimpleFlatProperty before unflatten function + let flattenProperties: Array<SimpleFlatProperty> = []; + flattenProperties.push(this.createSimpleFlatProperty(property, instanceName)); // Push the root property + _.each(property.flattenedChildren, (child: DerivedFEProperty): void => { + if (child.isChildOfListOrMap && child.schema.property.isSimpleType) return; //do not display non-complex children of list or map + flattenProperties.push(this.createSimpleFlatProperty(child, instanceName)); + }); + + let tree = this.unflatten(flattenProperties, '', []); + return tree[0].childrens; // Return the childrens without the root. + } + + public createSimpleFlatProperty = (property: PropertyFEModel | DerivedFEProperty, instanceName:string): SimpleFlatProperty => { + if (property instanceof PropertyFEModel) { + return new SimpleFlatProperty(property.uniqueId, property.name, property.name, '', instanceName); + } else { + let propName: string = (property.isChildOfListOrMap) ? property.mapKey : property.name; + return new SimpleFlatProperty(property.uniqueId, property.propertiesName, propName, property.parentName, instanceName); + } + + } + + /** + * Unflatten Array<SimpleFlatProperty> and build hirarchy. + * The result will be Array<SimpleFlatProperty> that augmantin with childrens for each SimpleFlatProperty. + */ + private unflatten(array: Array<SimpleFlatProperty>, parent: any, tree?: any): any { + tree = typeof tree !== 'undefined' ? tree : []; + parent = typeof parent !== 'undefined' && parent !== '' ? parent : { path: '' }; + + var childrens = _.filter(array, (child: SimpleFlatProperty): boolean => { + return child.parentName == parent.path; + }); + + if (!_.isEmpty(childrens)) { + if (parent.path == '') { + tree = childrens; + } else { + parent['childrens'] = childrens; + } + _.each(childrens, (child): void => { + this.unflatten(array, child); + }); + } + return tree; + } +}
\ No newline at end of file diff --git a/catalog-ui/src/app/ng2/services/properties.service.ts b/catalog-ui/src/app/ng2/services/properties.service.ts index 638e537cd1..a22e2aed20 100644 --- a/catalog-ui/src/app/ng2/services/properties.service.ts +++ b/catalog-ui/src/app/ng2/services/properties.service.ts @@ -8,11 +8,11 @@ import { UUID } from "angular2-uuid"; @Injectable() export class PropertiesService { - constructor(private dataTypeService:DataTypeService, private contentAfterLastDotPipe:ContentAfterLastDotPipe) { + constructor(private dataTypeService: DataTypeService, private contentAfterLastDotPipe: ContentAfterLastDotPipe) { } - public getParentPropertyFEModelFromPath = (properties:Array<PropertyFEModel>, path:string) => { - let parent:PropertyFEModel = _.find(properties, (property:PropertyFEModel):boolean=>{ + public getParentPropertyFEModelFromPath = (properties: Array<PropertyFEModel>, path: string) => { + let parent: PropertyFEModel = _.find(properties, (property: PropertyFEModel): boolean => { return property.name === path.substring(0, path.indexOf('#')); }); return parent; @@ -33,7 +33,7 @@ export class PropertiesService { } //disable parents and children of prop - public disableRelatedProperties = (property:PropertyFEModel, childPath?: string): void => { + public disableRelatedProperties = (property: PropertyFEModel, childPath?: string): void => { if (!childPath) { //selecting the parent property property.isSelected = true; property.flattenedChildren && property.flattenedChildren.map(child => { child.isSelected = false; child.isDisabled = true; }); @@ -41,18 +41,18 @@ export class PropertiesService { property.isSelected = false; property.isDisabled = true; property.flattenedChildren.filter((childProp: DerivedFEProperty) => { - return (childProp.propertiesName.indexOf(childPath + "#") > -1 //is child of prop to disable - || childPath.indexOf(childProp.propertiesName + "#") > -1); //is parent of prop to disable + return (childProp.propertiesName.indexOf(childPath + "#") === 0 //is child of prop to disable + || childPath.indexOf(childProp.propertiesName + "#") === 0); //is parent of prop to disable }).map((child: DerivedFEProperty) => { child.isSelected = false; child.isDisabled = true; }); } } - public getCheckedProperties = (properties:Array<PropertyFEModel>): Array<PropertyBEModel> => { + public getCheckedProperties = (properties: Array<PropertyFEModel>): Array<PropertyBEModel> => { let selectedProps: Array<PropertyBEModel> = []; properties.forEach(prop => { if (prop.isSelected && !prop.isDeclared && !prop.isDisabled) { selectedProps.push(new PropertyBEModel(prop)); - } else if(prop.flattenedChildren) { + } else if (prop.flattenedChildren) { prop.flattenedChildren.forEach((child) => { if (child.isSelected && !child.isDeclared && !child.isDisabled) { let childProp = new PropertyBEModel(prop, child); //create it from the parent @@ -64,186 +64,5 @@ export class PropertiesService { return selectedProps; } - /** - * Build hirarchy structure for the tree when user selects on table row. - * First create Array<SimpleFlatProperty> and insert also the parent (PropertyFEModel) to this array. - * The Array is flat and contains SimpleFlatProperty that has parentName and uniqueId. - * Now we build hirarchy from this Array (that includes childrens) and return it for the tree - * - * @argument property: PropertyFEModel - property contains flattenedChildren array of DerivedFEProperty - * @returns Array<SimpleFlatProperty> - containing childrens Array<SimpleFlatProperty>, augmantin childrens to SimpleFlatProperty. - */ - public getSimplePropertiesTree(property: PropertyFEModel, instanceName:string):Array<SimpleFlatProperty> { - // Build Array of SimpleFlatProperty before unflatten function - let flattenProperties:Array<SimpleFlatProperty> = []; - flattenProperties.push(new SimpleFlatProperty(property.uniqueId, property.name, property.name, '', instanceName)); // Push the root property - _.each(property.flattenedChildren, (child:DerivedFEProperty):void => { - flattenProperties.push(new SimpleFlatProperty(child.uniqueId, child.propertiesName, child.name, child.parentName, instanceName)); - }); - - let tree = this.unflatten(flattenProperties, '', []); - return tree[0].childrens; // Return the childrens without the root. - } - - /** - * Unflatten Array<SimpleFlatProperty> and build hirarchy. - * The result will be Array<SimpleFlatProperty> that augmantin with childrens for each SimpleFlatProperty. - */ - private unflatten( array:Array<SimpleFlatProperty>, parent:any, tree?:any ):any { - tree = typeof tree!=='undefined' ? tree : []; - parent = typeof parent!=='undefined' && parent!=='' ? parent : { path: '' }; - - var childrens = _.filter( array, (child:SimpleFlatProperty):boolean => { - return child.parentName == parent.path; - }); - - if( !_.isEmpty( childrens ) ){ - if( parent.path == '' ){ - tree = childrens; - } else { - parent['childrens'] = childrens; - } - _.each( childrens, ( child ):void => { - this.unflatten( array, child ); - }); - } - return tree; - } - - // TODO: To remove - // public convertPropertiesToFEAndInitialize(properties: Array<PropertyBEModel>): Array<PropertyFEModel> { - // let props:Array<PropertyFEModel> = []; - // _.forEach(properties, (property: PropertyFEModel, index: number) => { - // props[index] = new PropertyFEModel(property); - // this.initValueObjectRef(props[index]); - // if (props[index].isDataType || - // ((props[index].type === PROPERTY_TYPES.MAP || props[index].type === PROPERTY_TYPES.LIST) && props[index].schema.property.isDataType)) { - // props[index].valueObjectRef = props[index].valueObjectRef || {}; - // let defaultValueObject:any = props[index].defaultValue ? JSON.parse(props[index].defaultValue): null; - // this.createPropertiesTreeForProp(props[index], true, defaultValueObject); - // } - // }); - // return props; - // } - - /** - * Converts a property's map values to properties and adds them to property.childrenProperties - * @param property - property to add children to - * @param onlyFirstLevel - recursively retrieve properties for each dataType? - */ - //TODO: To remove - // public createPropertyNodesForMapOfDataTypes(property: PropertyFEModel, onlyFirstLevel:boolean):void { - // property.childrenProperties = []; - // angular.forEach(property.valueObjectRef,function(itemInMap:any, keyInMap:string){ - // let newProperty: PropertyFEModel = new PropertyFEModel(keyInMap, - // property.schema.property.type, - // UUID.UUID(), - // property, - // property.valueObjectRef[keyInMap]); - // !onlyFirstLevel && this.createPropertiesTreeForProp(newProperty); - // property.childrenProperties.push(newProperty); - // },this); - // } - - - /** - * Converts a property's list values to properties and adds them to property.childrenProperties - * @param property - property to add children to - * @param onlyFirstLevel - recursively retrieve properties for each dataType? - */ - //TODO: To remove - // public createPropertyNodesForListOfDataTypes(property: PropertyFEModel, onlyFirstLevel:boolean):void { - // property.childrenProperties = []; - // property.valueObjectRef.forEach((itemInList:any, index:number):void =>{ - // let newProperty: PropertyFEModel = new PropertyFEModel(this.contentAfterLastDotPipe.transform(property.schema.property.type), - // property.schema.property.type, - // UUID.UUID(), - // property, - // property.valueObjectRef[index]); - // !onlyFirstLevel && this.createPropertiesTreeForProp(newProperty); - // property.childrenProperties.push(newProperty); - // }); - // } - - // private checkIfPropertyDerivedFromSimpleAndUpdateProp(property:PropertyFEModel | SchemaProperty): boolean{ - // property.derivedFromSimpleTypeName = this.dataTypeService.getTypeForDataTypeDerivedFromSimple(property.type); - // if(property.derivedFromSimpleTypeName){ - // property.isSimpleType = true; - // property.isDataType = false; - // } - // return property.isSimpleType; - // } - - // TODO: Remove - public createPropertiesTreeForProp(property: PropertyFEModel, onlyFirstLevel?: boolean, defaultValueObj?: any): void { - } - - public getPropertyFEModelFromDerivedPropertyUniqueId(properties: Array<PropertyFEModel>, uniqueId: string): PropertyFEModel { - // _.each(properties, (property):void => { - // property.flattenedChildren - - // }); - - // let rootProperty = _.find(properties, (property):boolean => { return property.uniqueId === uniqueId; }); - // if - return null; - } - - /** - * Utilizes the dataTypeService to retrieve children properties from dataTypes recursively. - * @param property - * @param onlyFirstLevel - */ - // TODO: To remove - // public createPropertiesTreeForProp(property: PropertyFEModel, onlyFirstLevel?:boolean, defaultValueObj?:any ):void{ - // if (property.isDataType && !this.checkIfPropertyDerivedFromSimpleAndUpdateProp(property)){ - // let dataType: DataTypeModel = this.dataTypeService.getDataTypeByTypeName(property.type); - // property.childrenProperties = []; - // let childrenProperties = this.dataTypeService.getDataTypePropertiesRecursively(dataType); - // childrenProperties.forEach((childProperty: PropertyBEModel):void => { - // let childDataTypePropertyObj: PropertyFEModel = new PropertyFEModel(childProperty.name, childProperty.type,UUID.UUID(),property, {}, childProperty.schema); - // //init empty object in valueObjectRef[childProperty.name] because this property's children should has ref to this obj. - // if(!property.valueObjectRef[childDataTypePropertyObj.name]){ - // if ((childDataTypePropertyObj.isDataType && !this.checkIfPropertyDerivedFromSimpleAndUpdateProp(childDataTypePropertyObj)) - // || childDataTypePropertyObj.type === PROPERTY_TYPES.MAP){ - // property.valueObjectRef[childDataTypePropertyObj.name] = {}; - // }else if(childDataTypePropertyObj.type === PROPERTY_TYPES.LIST){ - // property.valueObjectRef[childDataTypePropertyObj.name] = []; - // } - // } - // childDataTypePropertyObj.valueObjectRef = property.valueObjectRef[childDataTypePropertyObj.name]; - // property.valueObjectRef[childDataTypePropertyObj.name] = property.valueObjectRef[childProperty.name] || childDataTypePropertyObj.defaultValue; - // if( !childDataTypePropertyObj.isDataType && defaultValueObj ){//init property default value - // childDataTypePropertyObj.defaultValue = JSON.stringify(defaultValueObj[childDataTypePropertyObj.name]); - // } - // property.childrenProperties.push(childDataTypePropertyObj); - // !onlyFirstLevel && this.createPropertiesTreeForProp(childDataTypePropertyObj, false, (defaultValueObj ? defaultValueObj[childDataTypePropertyObj.name] : null)); - // }); - // } else if (property.type == PROPERTY_TYPES.MAP && property.schema.property.isDataType && !this.checkIfPropertyDerivedFromSimpleAndUpdateProp(property.schema.property)){ - // if( property.valueObjectRef && !_.isEmpty(property.valueObjectRef)){ - // this.createPropertyNodesForMapOfDataTypes(property, onlyFirstLevel); - // } - // } else if (property.type == PROPERTY_TYPES.LIST && property.schema.property.isDataType && !this.checkIfPropertyDerivedFromSimpleAndUpdateProp(property.schema.property)){ - // if( property.valueObjectRef && property.valueObjectRef.length){ - // this.createPropertyNodesForListOfDataTypes(property, onlyFirstLevel); - // } - // } - // } -} - -export class SimpleFlatProperty { - uniqueId:string; - path:string; - name:string; - parentName:string; - instanceName:string; - - constructor(uniqueId?:string, path?:string, name?: string, parentName?:string, instanceName?:string) { - this.uniqueId = uniqueId; - this.path = path; - this.name = name; - this.parentName = parentName; - this.instanceName = instanceName; - } -} +}
\ No newline at end of file |