diff options
author | Tal Gitelman <tg851x@intl.att.com> | 2017-06-29 19:30:00 +0300 |
---|---|---|
committer | Michael Lando <ml636r@att.com> | 2017-06-29 21:32:19 +0300 |
commit | ed7e1c3dfe332abc67ed943717db2ee94406f95e (patch) | |
tree | e0f2f39596656456272900f59aadc3dff6c6e828 /catalog-ui/src/app/ng2 | |
parent | 68ccc45de18f41cddb79de33a245bceb3b063ffb (diff) |
[SDC] rebase code
Change-Id: I456ec65a233d277e6bae35e140f2e3da5765bae6
Signed-off-by: Tal Gitelman <tg851x@intl.att.com>
Signed-off-by: Michael Lando <ml636r@att.com>
Diffstat (limited to 'catalog-ui/src/app/ng2')
10 files changed, 104 insertions, 116 deletions
diff --git a/catalog-ui/src/app/ng2/app.module.ts b/catalog-ui/src/app/ng2/app.module.ts index ea73d382e2..970c57de89 100644 --- a/catalog-ui/src/app/ng2/app.module.ts +++ b/catalog-ui/src/app/ng2/app.module.ts @@ -11,13 +11,15 @@ import { StateParamsServiceFactory, CacheServiceProvider, EventListenerServiceProvider } from "./utils/ng1-upgraded-provider"; import {ConfigService} from "./services/config.service"; -import {HttpService} from "./services/http.service"; import {HttpModule} from '@angular/http'; import {AuthenticationService} from './services/authentication.service'; import {Cookie2Service} from "./services/cookie.service"; import {ComponentServiceNg2} from "./services/component-services/component.service"; import {ServiceServiceNg2} from "./services/component-services/service.service"; import {ComponentInstanceServiceNg2} from "./services/component-instance-services/component-instance.service"; +import { InterceptorService } from 'ng2-interceptors'; +import { XHRBackend, RequestOptions } from '@angular/http'; +import {HttpInterceptor} from "./services/http.interceptor.service"; export const upgradeAdapter = new UpgradeAdapter(forwardRef(() => AppModule)); @@ -25,6 +27,13 @@ export function configServiceFactory(config:ConfigService) { return () => config.loadValidationConfiguration(); } +export function interceptorFactory(xhrBackend: XHRBackend, requestOptions: RequestOptions){ + let service = new InterceptorService(xhrBackend, requestOptions); + service.addInterceptor(new HttpInterceptor()); + return service; +} + + // export function httpServiceFactory(backend: XHRBackend, options: RequestOptions) { // return new HttpService(backend, options); // } @@ -43,7 +52,6 @@ export function configServiceFactory(config:ConfigService) { exports: [], entryComponents: [], providers: [ - HttpService, DataTypesServiceProvider, SharingServiceProvider, CookieServiceProvider, @@ -61,6 +69,11 @@ export function configServiceFactory(config:ConfigService) { useFactory: configServiceFactory, deps: [ConfigService], multi: true + }, + { + provide: InterceptorService, + useFactory: interceptorFactory, + deps: [XHRBackend, RequestOptions] } ], bootstrap: [AppComponent] diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.module.ts b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.module.ts index b59ef9dbda..b14f3afd6b 100644 --- a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.module.ts +++ b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.module.ts @@ -15,7 +15,6 @@ import { DataTypeService } from './../../services/data-type.service'; import { PropertiesService } from './../../services/properties.service'; import { HierarchyNavService } from './../../services/hierarchy-nav.service'; import { PropertiesUtils } from './properties.utils'; -import { PostsService } from "../../services/posts.service"; import { DynamicElementModule } from 'app/ng2/components/dynamic-element/dynamic-element.module'; import { DynamicPropertyComponent } from './../../components/properties-table/dynamic-property/dynamic-property.component'; import {ConfirmationDeleteInputComponent} from "app/ng2/components/inputs-table/confirmation-delete-input/confirmation-delete-input.component" @@ -27,6 +26,7 @@ import {TooltipModule} from "../../components/tooltip/tooltip.module"; import { ComponentModeService } from "app/ng2/services/component-mode.service" import { ModalComponent } from "app/ng2/components/modal/modal.component" import {LoaderComponent} from "app/ng2/components/loader/loader.component" +import {HttpInterceptor} from "../../services/http.interceptor.service"; @NgModule({ declarations: [ @@ -63,7 +63,7 @@ import {LoaderComponent} from "app/ng2/components/loader/loader.component" // PopoverContentComponent, // PopoverComponent ], - providers: [PropertiesService, HierarchyNavService, PropertiesUtils, DataTypeService, PostsService, ContentAfterLastDotPipe, GroupByPipe, KeysPipe, ComponentModeService] + providers: [PropertiesService, HierarchyNavService, PropertiesUtils, DataTypeService,HttpInterceptor, ContentAfterLastDotPipe, GroupByPipe, KeysPipe, ComponentModeService] }) export class PropertiesAssignmentModule { diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts index 22d6f2fe51..e66ed59ad7 100644 --- a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts +++ b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts @@ -1,5 +1,4 @@ import {Component, ViewChild, ElementRef, Renderer, Inject} from "@angular/core"; -import {PostsService} from "../../services/posts.service"; import { PropertiesService } from "../../services/properties.service"; import { HierarchyNavService } from "../../services/hierarchy-nav.service"; import { PropertiesUtils } from './properties.utils'; @@ -8,15 +7,13 @@ import { PROPERTY_TYPES, ResourceType } from "app/utils"; import property = require("lodash/property"); import {ComponentServiceNg2} from "../../services/component-services/component.service"; import {ComponentInstanceServiceNg2} from "../../services/component-instance-services/component-instance.service" -import { InputFEModel, ComponentInstance, PropertyBEModel, DerivedPropertyType, DerivedFEProperty, ResourceInstance, SimpleFlatProperty } from "app/models"; +import { InputBEModel, InputFEModel, ComponentInstance, PropertyBEModel, DerivedPropertyType, DerivedFEProperty, ResourceInstance, SimpleFlatProperty } from "app/models"; import {HierarchyDisplayOptions} from "../../components/hierarchy-navigtion/hierarchy-display-options" import {PropertyRowSelectedEvent} from "./../../components/properties-table/properties-table.component"; import { KeysPipe } from 'app/ng2/pipes/keys.pipe'; import {FilterPropertiesAssignmentComponent} from "../../components/filter-properties-assignment/filter-properties-assignment.component"; import { ComponentModeService } from "app/ng2/services/component-mode.service" import {WorkspaceMode, EVENTS} from "../../../utils/constants"; -import {ComponentInstanceProperty, InputBEModel} from "app/models" -import {ComponentInstanceInput} from "../../../models/properties-inputs/input-be-model"; import {EventListenerService} from "app/services/event-listener-service" @Component({ templateUrl: './properties-assignment.page.component.html', @@ -102,6 +99,7 @@ export class PropertiesAssignmentComponent { } this.selectFirstInstanceByDefault(); }); + }; ngOnDestroy() { @@ -292,41 +290,23 @@ export class PropertiesAssignmentComponent { this.setInputTabIndication(response.length); this.checkedPropertiesCount = 0; _.forEach(response, (input: InputBEModel) => { - this.inputs.push(new InputFEModel(input)); - this.updatePropertyValueAfterDeclare(input); + let newInput: InputFEModel = new InputFEModel(input); + this.inputs.push(newInput); + this.updatePropertyValueAfterDeclare(newInput); }); }); }; - updatePropertyValueAfterDeclare = (input: InputBEModel) => { - _.forEach(input.properties, (property: ComponentInstanceProperty) => { - this.updatePropertyOrInputValueAfterDeclare(property, input); - }); - - _.forEach(input.inputs, (inputInstance: ComponentInstanceInput) => { - this.updatePropertyOrInputValueAfterDeclare(inputInstance, input); - }); - } - updatePropertyOrInputValueAfterDeclare = (inputSource: ComponentInstanceProperty | ComponentInstanceInput, input: InputBEModel) => { - if (this.instanceFePropertiesMap[inputSource.componentInstanceId]) { - let propertyForUpdatindVal = _.find(this.instanceFePropertiesMap[inputSource.componentInstanceId], (feProperty: PropertyFEModel) => { - return feProperty.name == inputSource.name; + updatePropertyValueAfterDeclare = (input: InputFEModel) => { + if (this.instanceFePropertiesMap[input.instanceUniqueId]) { + let propertyForUpdatindVal = _.find(this.instanceFePropertiesMap[input.instanceUniqueId], (feProperty: PropertyFEModel) => { + return feProperty.name == input.relatedProperty.name; }); - if (input.inputPath == propertyForUpdatindVal.name) input.inputPath = null; //Fix - if inputPath is sent for parent props, remove it - - propertyForUpdatindVal.setAsDeclared(input.inputPath); //set prop as declared before assigning value - this.propertiesService.disableRelatedProperties(propertyForUpdatindVal, input.inputPath); - this.propertiesUtils.resetPropertyValue(propertyForUpdatindVal, inputSource.value, input.inputPath); - // if (input.inputPath) { - // let childProp = _.find(propertyForUpdatindVal.flattenedChildren, (child: DerivedFEProperty) => { - // return child.propertiesName == input.inputPath; - // }); - // this.propertiesUtils.assignFlattenedChildrenValues(JSON.parse(inputSource.value), [childProp], inputSource.name); - // } else { - // propertyForUpdatindVal.valueObj = inputSource.value; - // } + propertyForUpdatindVal.setAsDeclared(input.relatedProperty.nestedPath); //set prop as declared before assigning value + this.propertiesService.disableRelatedProperties(propertyForUpdatindVal, input.relatedProperty.nestedPath); + this.propertiesUtils.resetPropertyValue(propertyForUpdatindVal, input.relatedProperty.value, input.relatedProperty.nestedPath); } } @@ -368,14 +348,6 @@ export class PropertiesAssignmentComponent { }); }; - getInstanceUniqueId = (instanceName: string): string => { - let wantedInstance: ComponentInstance = this.instances.find((instance) => { - return instance.normalizedName === instanceName; - }); - - return wantedInstance.uniqueId; - }; - /*** SEARCH RELATED FUNCTIONS ***/ diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/properties.utils.ts b/catalog-ui/src/app/ng2/pages/properties-assignment/properties.utils.ts index 0eb8534595..bdfbc4c402 100644 --- a/catalog-ui/src/app/ng2/pages/properties-assignment/properties.utils.ts +++ b/catalog-ui/src/app/ng2/pages/properties-assignment/properties.utils.ts @@ -20,8 +20,8 @@ export class PropertiesUtils { */ public convertPropertiesMapToFEAndCreateChildren = (instancePropertiesMap:InstanceBePropertiesMap, inputs:Array<InputFEModel>): InstanceFePropertiesMap => { let instanceFePropertiesMap:InstanceFePropertiesMap = new InstanceFePropertiesMap(); - angular.forEach(instancePropertiesMap, (properties:Array<PropertyBEModel>, instanceName:string) => { - let instanceInputs: Array<InputFEModel> = inputs.filter(input => input.instanceName == instanceName.split('.').pop()); + angular.forEach(instancePropertiesMap, (properties:Array<PropertyBEModel>, instanceId:string) => { + let instanceInputs: Array<InputFEModel> = inputs.filter(input => input.instanceUniqueId == instanceId); let propertyFeArray: Array<PropertyFEModel> = []; _.forEach(properties, (property: PropertyBEModel) => { @@ -35,9 +35,9 @@ export class PropertiesUtils { newFEProp.flattenedChildren = this.createFlattenedChildren(newFEProp.type, newFEProp.name); } if (instanceInputs.length) { //if this prop (or any children) are declared, set isDeclared and disable checkbox on parents/children - instanceInputs.filter(input => input.propertyName == newFEProp.name).forEach((input) => { - newFEProp.setAsDeclared(input.inputPath); //if a path was sent, its a child prop. this param is optional - this.propertiesService.disableRelatedProperties(newFEProp, input.inputPath); + instanceInputs.filter(input => input.relatedProperty.name == newFEProp.name).forEach((input) => { + newFEProp.setAsDeclared(input.relatedProperty.nestedPath); //if a path was sent, its a child prop. this param is optional + this.propertiesService.disableRelatedProperties(newFEProp, input.relatedProperty.nestedPath); }); } this.initValueObjectRef(newFEProp); //initialize valueObj. @@ -46,7 +46,7 @@ export class PropertiesUtils { this.dataTypeService.checkForCustomBehavior(newFEProp); } }); - instanceFePropertiesMap[instanceName] = propertyFeArray; + instanceFePropertiesMap[instanceId] = propertyFeArray; }); return instanceFePropertiesMap; @@ -140,10 +140,10 @@ export class PropertiesUtils { }); } - public resetPropertyValue = (property: PropertyFEModel, newValue: string, inputPath?: string): void => { + public resetPropertyValue = (property: PropertyFEModel, newValue: string, nestedPath?: string): void => { property.value = newValue; - if (inputPath) { - let newProp = property.flattenedChildren.find(prop => prop.propertiesName == inputPath); + if (nestedPath) { + let newProp = property.flattenedChildren.find(prop => prop.propertiesName == nestedPath); newProp && this.assignFlattenedChildrenValues(JSON.parse(newValue), [newProp], property.name); } else { this.initValueObjectRef(property); diff --git a/catalog-ui/src/app/ng2/services/component-instance-services/component-instance.service.ts b/catalog-ui/src/app/ng2/services/component-instance-services/component-instance.service.ts index 85709894ff..fd7e7b62ce 100644 --- a/catalog-ui/src/app/ng2/services/component-instance-services/component-instance.service.ts +++ b/catalog-ui/src/app/ng2/services/component-instance-services/component-instance.service.ts @@ -1,18 +1,18 @@ import {Injectable} from '@angular/core'; import {Response, RequestOptions, Headers} from '@angular/http'; import { Observable } from 'rxjs/Observable'; -import {HttpService} from "../http.service"; import {sdc2Config} from "../../../../main"; import {PropertyBEModel} from "app/models"; import {CommonUtils} from "app/utils"; import {Component, ComponentInstance, InputModel} from "app/models"; +import {InterceptorService} from "ng2-interceptors/index"; @Injectable() export class ComponentInstanceServiceNg2 { protected baseUrl; - constructor(private http: HttpService) { + constructor(private http: InterceptorService) { this.baseUrl = sdc2Config.api.root + sdc2Config.api.component_api_root; } diff --git a/catalog-ui/src/app/ng2/services/component-services/component.service.ts b/catalog-ui/src/app/ng2/services/component-services/component.service.ts index 3fa9fde40c..976d18eac3 100644 --- a/catalog-ui/src/app/ng2/services/component-services/component.service.ts +++ b/catalog-ui/src/app/ng2/services/component-services/component.service.ts @@ -1,17 +1,17 @@ -import {Injectable, Query} from '@angular/core'; +import {Injectable} from '@angular/core'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/toPromise'; import {Response, URLSearchParams} from '@angular/http'; import { Component, PropertyBEModel, InstancePropertiesAPIMap, FilterPropertiesAssignmentData} from "app/models"; import {downgradeInjectable} from '@angular/upgrade/static'; -import {HttpService} from "../http.service"; import {COMPONENT_FIELDS} from "app/utils"; import {ComponentGenericResponse} from "../responses/component-generic-response"; import {sdc2Config} from "../../../../main"; import {InstanceBePropertiesMap} from "../../../models/properties-inputs/property-fe-map"; import {API_QUERY_PARAMS} from "app/utils"; import {ComponentType, ServerTypeUrl} from "../../../utils/constants"; +import {InterceptorService} from "ng2-interceptors/index"; declare var angular:angular.IAngularStatic; @@ -20,7 +20,7 @@ export class ComponentServiceNg2 { protected baseUrl; - constructor(private http:HttpService) { + constructor(private http:InterceptorService) { this.baseUrl = sdc2Config.api.root + sdc2Config.api.component_api_root; } 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 d2f7078599..147fe9385c 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 @@ -6,7 +6,7 @@ import { Response } from '@angular/http'; import {Service} from "app/models"; import { downgradeInjectable } from '@angular/upgrade/static'; import {sdc2Config} from "../../../../main"; -import {HttpService} from "../http.service"; +import {InterceptorService} from "ng2-interceptors/index"; @Injectable() @@ -14,7 +14,7 @@ export class ServiceServiceNg2 { protected baseUrl = ""; - constructor(private http: HttpService) { + constructor(private http: InterceptorService) { this.baseUrl = sdc2Config.api.root + sdc2Config.api.component_api_root; } diff --git a/catalog-ui/src/app/ng2/services/http.interceptor.service.ts b/catalog-ui/src/app/ng2/services/http.interceptor.service.ts new file mode 100644 index 0000000000..aebbdbf7af --- /dev/null +++ b/catalog-ui/src/app/ng2/services/http.interceptor.service.ts @@ -0,0 +1,57 @@ +import 'rxjs/add/operator/map'; +import 'rxjs/add/operator/toPromise'; +import 'rxjs/Rx'; +import { sdc2Config } from './../../../main'; +import { Interceptor, InterceptedRequest, InterceptedResponse } from 'ng2-interceptors'; +import {SharingService} from "../../services/sharing-service"; +import {ReflectiveInjector} from '@angular/core'; +import {Cookie2Service} from "./cookie.service"; +import {UUID} from "angular2-uuid"; +import {Dictionary} from "../../utils/dictionary/dictionary"; + +export class HttpInterceptor implements Interceptor { + + private cookieService: Cookie2Service; + private sharingService:SharingService; + constructor() { + let injector = ReflectiveInjector.resolveAndCreate([Cookie2Service,SharingService]); + this.cookieService = injector.get(Cookie2Service); + this.sharingService = injector.get(SharingService); + } + + public interceptBefore(request: InterceptedRequest): InterceptedRequest { + + /** + * For every request to the server, that the service id, or resource id is sent in the URL, need to pass UUID in the header. + * Check if the unique id exists in uuidMap, and if so get the UUID and add it to the header. + */ + + request.options.headers.append(this.cookieService.getUserIdSuffix(), this.cookieService.getUserId()); + var uuidValue = this.getUuidValue(request.url); + if(uuidValue!= ''){ + request.options.headers.set('X-ECOMP-ServiceID',uuidValue); + } + request.options.headers.set('X-ECOMP-RequestID', UUID.UUID()); + return request; + + } + + public interceptAfter(response: InterceptedResponse): InterceptedResponse { + + return response; + + } + + private getUuidValue = (url: string) :string => { + let map:Dictionary<string, string> = this.sharingService.getUuidMap(); + if (map && url.indexOf(sdc2Config.api.root) > 0) { + map.forEach((key:string) => { + if (url.indexOf(key) !== -1) { + return this.sharingService.getUuidValue(key); + } + }); + } + return ''; + } + +} diff --git a/catalog-ui/src/app/ng2/services/posts.service.ts b/catalog-ui/src/app/ng2/services/posts.service.ts deleted file mode 100644 index dbfd44f219..0000000000 --- a/catalog-ui/src/app/ng2/services/posts.service.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs/Observable'; -import 'rxjs/add/operator/map'; -import 'rxjs/add/operator/toPromise'; -import 'rxjs/Rx'; -import {Response, Headers, RequestOptions, Http} from '@angular/http'; -import { COMPONENT_INSTANCE_RESPONSE,COMPONENT_INPUT_RESPONSE,COMPONENT_PROPERTIES_RESPONSE } from './mocks/properties.mock'; -import { HttpService } from './http.service'; -import { sdc2Config } from './../../../main'; -import {IAppConfigurtaion} from "../../models/app-config"; - -@Injectable() -export class PostsService { - - private base; - - constructor(private http: HttpService) { - this.base = sdc2Config.api.root; - } - - getAppVersion(): Observable<JSON> { - return this.http - .get(this.base + sdc2Config.api.GET_SDC_Version) - .map((res: Response) => res.json()); - } - - // getProperties(id:string): Observable<any> { - // return this.http - // .get(this.base + sdc2Config.api.GET_SDC_Version) - // .map((res: Response) => res.json()); - // } - - getProperties(): Observable<any> { - return Observable.create(observer => { - observer.next(COMPONENT_PROPERTIES_RESPONSE); - observer.complete(); - }); - } - - getInstance(): Observable<any> { - return Observable.create(observer => { - observer.next(COMPONENT_INSTANCE_RESPONSE); - observer.complete(); - }); - } - - getInputs(): Observable<any> { - return Observable.create(observer => { - observer.next(COMPONENT_INPUT_RESPONSE); - observer.complete(); - }); - } - -} diff --git a/catalog-ui/src/app/ng2/services/responses/component-generic-response.ts b/catalog-ui/src/app/ng2/services/responses/component-generic-response.ts index 7dcd95d712..38e23a58f3 100644 --- a/catalog-ui/src/app/ng2/services/responses/component-generic-response.ts +++ b/catalog-ui/src/app/ng2/services/responses/component-generic-response.ts @@ -3,7 +3,7 @@ */ import { ArtifactGroupModel, PropertyModel, PropertiesGroup, AttributeModel, AttributesGroup, ComponentInstance, - InputModel, Module, ComponentMetadata, RelationshipModel, RequirementsGroup, CapabilitiesGroup,InputFEModel} from "app/models"; + InputBEModel, Module, ComponentMetadata, RelationshipModel, RequirementsGroup, CapabilitiesGroup,InputFEModel} from "app/models"; import {CommonUtils} from "app/utils"; import {Serializable} from "../utils/serializable"; import {PropertyBEModel} from "../../../models/properties-inputs/property-be-model"; @@ -18,7 +18,7 @@ export class ComponentGenericResponse implements Serializable<ComponentGenericR public componentInstancesAttributes:AttributesGroup; public componentInstancesRelations:Array<RelationshipModel>; public componentInstances:Array<ComponentInstance>; - public inputs:Array<PropertyBEModel>; + public inputs:Array<InputBEModel>; public capabilities:CapabilitiesGroup; public requirements:RequirementsGroup; public properties:Array<PropertyModel>; |