diff options
Diffstat (limited to 'catalog-ui/src/app/ng2/services')
-rw-r--r-- | catalog-ui/src/app/ng2/services/catalog.service.ts | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/catalog-ui/src/app/ng2/services/catalog.service.ts b/catalog-ui/src/app/ng2/services/catalog.service.ts index bbdfa1b420..fcb9dd4006 100644 --- a/catalog-ui/src/app/ng2/services/catalog.service.ts +++ b/catalog-ui/src/app/ng2/services/catalog.service.ts @@ -21,11 +21,15 @@ import { Injectable, Inject } from "@angular/core"; import { Observable } from "rxjs/Observable"; import { SdcConfigToken, ISdcConfig } from "../config/sdc-config.config"; -import { Component, IApi, IComponentsArray } from "app/models"; +import {Component, DataTypeModel, IApi, IComponentsArray} from "app/models"; import { ComponentFactory } from 'app/utils/component-factory'; import {ResourceType} from "../../utils/constants"; import {SharingService} from "./sharing.service"; import { HttpClient, HttpParams } from "@angular/common/http"; +import {DataTypesService} from "../../services/data-types-service"; +import {DataTypeCatalogComponent} from "../../models/data-type-catalog-component"; +import {zip} from "rxjs"; +import {map} from "rxjs/operators"; @Injectable() export class CatalogService { @@ -36,31 +40,37 @@ export class CatalogService { constructor(private http: HttpClient, @Inject(SdcConfigToken) sdcConfig:ISdcConfig, private componentFactory:ComponentFactory, + private dataTypesService:DataTypesService, private sharingService:SharingService) { this.api = sdcConfig.api; this.baseUrl = sdcConfig.api.root ; this.baseMicroServiceUrl = sdcConfig.api.uicache_root; } - public getCatalog(): Observable<Array<Component>> { + public getCatalog(): Observable<Array<Component | DataTypeCatalogComponent>> { let searchParams = new HttpParams(); searchParams = searchParams.append('excludeTypes', ResourceType.VFCMT).append('excludeTypes', ResourceType.CONFIGURATION); - return this.http.get<IComponentsArray>(this.baseMicroServiceUrl + this.api.GET_uicache_catalog, {params: searchParams}) - .map(res => this.processComponentsResponse(res, true)); + const observableComponents = this.http.get<IComponentsArray>(this.baseMicroServiceUrl + this.api.GET_uicache_catalog, {params: searchParams}); + const observableDataTypes = this.dataTypesService.getDataTypesFromAllModel(); + return zip(observableComponents, observableDataTypes) + .pipe(map(res => this.processComponentsResponse(res, true))); } public getArchiveCatalog() { return this.http.get<IComponentsArray>(this.baseUrl + '/v1/catalog/archive/', {}) - .map(res => this.processComponentsResponse(res)); + .map(res => this.processComponentsResponse(res[0])); } - private processComponentsResponse(componentsArr: IComponentsArray, addSharing:boolean = false) { - const componentsList: Component[] = []; - if (componentsArr.resources) { - componentsList.push(...this.getResourceItems(componentsArr.resources)); + private processComponentsResponse(componentsArr: [IComponentsArray, DataTypeModel[]], addSharing:boolean = false) { + const componentsList:Array<Component | DataTypeCatalogComponent> = []; + if (componentsArr[0].resources) { + componentsList.push(...this.getResourceItems(componentsArr[0].resources)); } - if (componentsArr.services) { - componentsList.push(...this.getServiceItems(componentsArr.services)); + if (componentsArr[0].services) { + componentsList.push(...this.getServiceItems(componentsArr[0].services)); + } + if (componentsArr[1]) { + componentsList.push(...this.getDataTypesItems(componentsArr[1])); } if (addSharing) { componentsList.forEach((item) => this.sharingService.addUuidValue(item.uniqueId, item.uuid)); @@ -82,4 +92,8 @@ export class CatalogService { return serviceItems; } + private getDataTypesItems(dataTypes: Array<DataTypeModel>):Array<DataTypeCatalogComponent> { + return dataTypes.map(dataType => new DataTypeCatalogComponent(dataType)); + } + }
\ No newline at end of file |