diff options
Diffstat (limited to 'catalog-ui')
18 files changed, 160 insertions, 188 deletions
diff --git a/catalog-ui/package.json b/catalog-ui/package.json index bc28d90e3b..4fd1f46734 100644 --- a/catalog-ui/package.json +++ b/catalog-ui/package.json @@ -82,6 +82,8 @@ "@angular/platform-browser-dynamic": "^2.4.8", "@angular/router": "^3.4.8", "@angular/upgrade": "^2.4.8", + "@bardit/cytoscape-expand-collapse": "^2.0.3", + "@bardit/cytoscape-qtip": "^2.5.1", "@types/core-js": "^0.9.35", "@types/js-md5": "^0.4.0", "@types/lodash": "^4.14.52", @@ -114,9 +116,6 @@ "codelyzer": "^2.0.1", "core-js": "^2.4.1", "cytoscape": "^2.7.15", - "@bardit/cytoscape-expand-collapse": "^2.0.3", - "@bardit/cytoscape-qtip": "^2.5.1", - "sdc-angular-dragdrop": "^1.0.14", "cytoscape.js-undo-redo": "^1.0.1", "express": "4.14.0", "jquery": "^2.2.4", @@ -126,15 +125,17 @@ "multer": "1.2.1", "ng-html2js": "2.0.0", "ng-infinite-scroll": "^1.3.0", + "ng2-interceptors": "^1.3.0-1", "perfect-scrollbar": "^0.6.16", "qtip2": "^3.0.3", "reflect-metadata": "^0.1.10", "restangular": "^1.6.1", "rxjs": "^5.2.0", + "sdc-angular-dragdrop": "^1.0.14", "ts-helpers": "^1.1.2", "ts-node": "^2.1.0", "tslint": "^4.4.2", - "typescript": "^2.1.6", + "typescript": "2.3.4", "typings": "^2.1.0", "underscore": "^1.8.3", "webpack": "^2.2.1", diff --git a/catalog-ui/src/app/models/properties-inputs/input-be-model.ts b/catalog-ui/src/app/models/properties-inputs/input-be-model.ts index 6d7854a6bf..6767bce729 100644 --- a/catalog-ui/src/app/models/properties-inputs/input-be-model.ts +++ b/catalog-ui/src/app/models/properties-inputs/input-be-model.ts @@ -3,11 +3,17 @@ import {PropertyBEModel} from 'app/models'; * Created by rc2122 on 6/1/2017. */ export class InputBEModel extends PropertyBEModel { - properties:Array<ComponentInstanceProperty>; - inputs:Array<ComponentInstanceInput>; + properties: Array<ComponentInstanceModel>; + inputs: Array<ComponentInstanceModel>; + instanceUniqueId: string; + propertyId: string; - constructor(input?: PropertyBEModel) { + constructor(input?: InputBEModel) { super(input); + this.instanceUniqueId = input.instanceUniqueId; + this.propertyId = input.propertyId; + this.properties = input.properties; + this.inputs = input.inputs; } @@ -17,33 +23,7 @@ export class InputBEModel extends PropertyBEModel { } -export class ComponentInstanceProperty extends PropertyBEModel { +export interface ComponentInstanceModel extends InputBEModel { componentInstanceId:string; - componentInstanceName:string; - - constructor(property?: PropertyBEModel) { - super(property); - } - - - - public toJSON = (): any => { - }; - -} - -export class ComponentInstanceInput extends InputBEModel { - componentInstanceId:string; - componentInstanceName:string; - - constructor(property?: PropertyBEModel) { - super(property); - } - - - - public toJSON = (): any => { - }; - + componentInstanceName: string; } - diff --git a/catalog-ui/src/app/models/properties-inputs/input-fe-model.ts b/catalog-ui/src/app/models/properties-inputs/input-fe-model.ts index 4f3417186c..3af4431b55 100644 --- a/catalog-ui/src/app/models/properties-inputs/input-fe-model.ts +++ b/catalog-ui/src/app/models/properties-inputs/input-fe-model.ts @@ -5,41 +5,42 @@ import {InputBEModel} from "./input-be-model"; export class InputFEModel extends InputBEModel { isSimpleType: boolean; - isDataType: boolean; - instanceName: string; - instanceId: string; - propertyName: string; - + relatedProperty: SimpleRelatedProperty; constructor(input?: InputBEModel) { super(input); if (input) { this.isSimpleType = PROPERTY_DATA.SIMPLE_TYPES.indexOf(this.type) > -1; - this.isDataType = PROPERTY_DATA.TYPES.indexOf(this.type) == -1; - - let propNameIndex:number = this.name.indexOf('_'); - this.instanceName = this.name.substring(0, propNameIndex); - - if(input.properties && input.properties.length){ - this.instanceId = input.properties[0].componentInstanceId; - this.propertyName = input.properties[0].name; - }else if(input.inputs && input.inputs.length){ - this.instanceId = input.inputs[0].componentInstanceId; - this.propertyName = input.inputs[0].name; - }else{ - if (input.inputPath && input.inputPath.indexOf('#') > -1) { - this.propertyName = input.inputPath.substring(0, input.inputPath.indexOf('#')) - } else { - this.inputPath = undefined; //input path may be populated even if its a parent - ensure its empty - this.propertyName = this.name.substring(propNameIndex + 1); - } - } + this.relatedProperty = new SimpleRelatedProperty(input); } } +} +export class SimpleRelatedProperty { + name: string; + value: string; + nestedPath: string; + + constructor(input: InputBEModel) { + if(!input.instanceUniqueId){ + return; + } + //Check if input is on DerivedFEProperty level, in which case we want to set a nested path + let instanceName = input.instanceUniqueId.split('.').pop(); + if (input.inputPath && input.inputPath.indexOf('#') > -1 + && instanceName + "_" + input.inputPath.split('#').join('_') == input.name) { //Ignore inputPath for a complex child on VL that was declared within VF, that was then dragged into service. For that case, input.name will be missing the vl name, so we'll know to ignore the path and fall into else case. + this.nestedPath = input.inputPath; + this.name = input.inputPath.substring(0, input.inputPath.indexOf('#')); + } else { //PropertyFEModel level. Can parse input name to get prop name. + let propNameLength = input.name.length - instanceName.length + 1; + this.name = input.name.substr(instanceName.length + 1, propNameLength); + } - public toJSON = (): any => { - }; - -} + //In declare response, input contains nested property, and we need to extract value so we can update our prop. + let nestedProperty = input.properties && input.properties[0] || input.inputs && input.inputs[0]; + if (nestedProperty) { + this.value = nestedProperty.value; + } + } +}; diff --git a/catalog-ui/src/app/models/properties.ts b/catalog-ui/src/app/models/properties.ts index 357dac2e7d..99a5b86fb9 100644 --- a/catalog-ui/src/app/models/properties.ts +++ b/catalog-ui/src/app/models/properties.ts @@ -50,6 +50,7 @@ export class PropertyModel implements IPropertyModel { schema:SchemaPropertyGroupModel; componentInstanceId:string; parentValue:string; + ownerId:string; //instance properties value:string; @@ -90,6 +91,7 @@ export class PropertyModel implements IPropertyModel { this.simpleType = property.simpleType; this.componentInstanceId = property.componentInstanceId; this.parentValue = property.parentValue; + this.ownerId = property.ownerId; } if (!this.schema || !this.schema.property) { 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>; diff --git a/catalog-ui/src/app/utils/common-utils.ts b/catalog-ui/src/app/utils/common-utils.ts index d8019d2f96..acfbd80ff4 100644 --- a/catalog-ui/src/app/utils/common-utils.ts +++ b/catalog-ui/src/app/utils/common-utils.ts @@ -1,6 +1,6 @@ import {Module, AttributeModel, ResourceInstance, PropertyModel, InputFEModel} from "../models"; import {ComponentInstanceFactory} from "./component-instance-factory"; -import {PropertyBEModel, RelationshipModel} from "app/models"; +import {InputBEModel, PropertyBEModel, RelationshipModel} from "app/models"; export class CommonUtils { @@ -57,13 +57,13 @@ export class CommonUtils { return modules; }; - static initInputs(inputsObj:Array<PropertyBEModel>):Array<PropertyBEModel> { + static initInputs(inputsObj: Array<InputBEModel>): Array<InputBEModel> { - let inputs = new Array<PropertyBEModel>(); + let inputs = new Array<InputBEModel>(); if(inputsObj) { - _.forEach(inputsObj, (input:PropertyBEModel):void => { - inputs.push(new PropertyBEModel(input)); + _.forEach(inputsObj, (input: InputBEModel):void => { + inputs.push(new InputBEModel(input)); }) } diff --git a/catalog-ui/src/app/view-models/workspace/tabs/properties/properties-view.html b/catalog-ui/src/app/view-models/workspace/tabs/properties/properties-view.html index d1e0582386..24011cc751 100644 --- a/catalog-ui/src/app/view-models/workspace/tabs/properties/properties-view.html +++ b/catalog-ui/src/app/view-models/workspace/tabs/properties/properties-view.html @@ -46,8 +46,8 @@ <span data-tests-id="propertyDescription_{{property.name}}" data-ng-bind="property.description"></span> </div> <div class="table-btn-col flex-item" ng-if="!isViewMode()"> - <button class="table-delete-btn" data-tests-id="delete_{{property.name}}" data-ng-if="property.parentUniqueId==component.uniqueId" - data-ng-click="delete(property); $event.stopPropagation();" data-ng-class="{'disabled': isViewMode()}"> </button> + <button class="table-delete-btn" data-tests-id="delete_{{property.name}}" data-ng-if="!property.ownerId || property.ownerId==component.uniqueId" + data-ng-click="delete(property); $event.stopPropagation();" data-ng-class="{'disabled': isViewMode()}"></button> </div> </div> </perfect-scrollbar> diff --git a/catalog-ui/src/assets/styles/images/sprites/sprite-global.png b/catalog-ui/src/assets/styles/images/sprites/sprite-global.png Binary files differindex fb9e79894a..7a795c7a91 100644 --- a/catalog-ui/src/assets/styles/images/sprites/sprite-global.png +++ b/catalog-ui/src/assets/styles/images/sprites/sprite-global.png diff --git a/catalog-ui/src/assets/styles/sprite.less b/catalog-ui/src/assets/styles/sprite.less index 62defccca8..0c0f538388 100644 --- a/catalog-ui/src/assets/styles/sprite.less +++ b/catalog-ui/src/assets/styles/sprite.less @@ -232,8 +232,8 @@ .filter-icon { background-position: -48px -1040px; width: 19px; height: 20px;} .filter-icon:hover { background-position: -99px -1040px; width: 19px; height: 20px;} .filled-checkbox-icon { background-position: -100px -1079px; width: 14px; height: 14px;} -.round-checked-icon { background-position: -50px -1119px; width: 20px; height: 20px;} -.round-checked-icon.disabled { background-position: -100px -1119px; width: 20px; height: 20px;} +.round-checked-icon { background-position: -50px -1157px; width: 16px; height: 18px;} +.round-checked-icon.disabled { background-position: -100px -1157px; width: 16px; height: 18px;} .round-expand-icon { background-position: -50px -1188px; width: 15px; height: 15px; } .round-expand-icon:hover { background-position: -100px -1188px; width: 15px; height: 15px; } .round-expand-icon.open { background-position: -50px -1216px; width: 15px; height: 15px; } |