diff options
author | MichaelMorris <michael.morris@est.tech> | 2020-06-23 09:15:48 +0100 |
---|---|---|
committer | Sébastien Determe <sebastien.determe@intl.att.com> | 2020-09-04 14:42:04 +0000 |
commit | 032525a375681fb18cc498d8daed9d73faa21ec3 (patch) | |
tree | 20cf4c17f406b8d30c29ce904fe1f19ea4a2c989 /catalog-ui/src/app/models | |
parent | c16117e08b97da93da61be841c22f5759cdadd37 (diff) |
Support for Nested/Hierarchical Services
Change-Id: I478cf2e1f9cf96443a3e35bf22ac2c9d72bca8f1
Issue-ID: SDC-3145
Signed-off-by: MichaelMorris <michael.morris@est.tech>
Diffstat (limited to 'catalog-ui/src/app/models')
7 files changed, 105 insertions, 7 deletions
diff --git a/catalog-ui/src/app/models/category.ts b/catalog-ui/src/app/models/category.ts index 0d5c63b5c1..15df98569d 100644 --- a/catalog-ui/src/app/models/category.ts +++ b/catalog-ui/src/app/models/category.ts @@ -37,6 +37,7 @@ export interface ICategoryBase { export interface IMainCategory extends ICategoryBase { subcategories:Array<ISubCategory>; + useServiceSubstitutionForNestedServices:boolean; } export interface ISubCategory extends ICategoryBase { diff --git a/catalog-ui/src/app/models/components/displayComponent.ts b/catalog-ui/src/app/models/components/displayComponent.ts index 4e946954f3..2e89bd0adf 100644 --- a/catalog-ui/src/app/models/components/displayComponent.ts +++ b/catalog-ui/src/app/models/components/displayComponent.ts @@ -28,6 +28,7 @@ import { PolicyMetadata } from '../policy-metadata'; import { GroupMetadata } from '../group-metadata'; import { RequirementsGroup } from '../requirement'; import { CapabilitiesGroup } from '../capability'; +import { IMainCategory } from '../category'; export enum LeftPaletteMetadataTypes { Component = 'COMPONENT', @@ -77,7 +78,6 @@ export class LeftPaletteComponent { } private initComponent(component: ComponentMetadata): void { - this.version = component.version; this.uniqueId = component.uniqueId; this.uuid = component.uuid; diff --git a/catalog-ui/src/app/models/componentsInstances/componentInstance.ts b/catalog-ui/src/app/models/componentsInstances/componentInstance.ts index e311589637..e91fcc9663 100644 --- a/catalog-ui/src/app/models/componentsInstances/componentInstance.ts +++ b/catalog-ui/src/app/models/componentsInstances/componentInstance.ts @@ -157,13 +157,17 @@ export class ComponentInstance implements IComponentInstance{ public isServiceProxy = ():boolean => { return this.originType === ComponentType.SERVICE_PROXY; } + + public isServiceSubstitution = ():boolean => { + return this.originType === ComponentType.SERVICE_SUBSTITUTION; + } public isVFC = ():boolean => { return this.originType === ResourceType.VFC; } public getComponentUid = ():string => { - return this.isServiceProxy()? this.sourceModelUid : this.componentUid; + return this.isServiceProxy() || this.isServiceSubstitution() ? this.sourceModelUid : this.componentUid; } public setInstanceRC = ():void=> { diff --git a/catalog-ui/src/app/models/componentsInstances/fullComponentInstance.ts b/catalog-ui/src/app/models/componentsInstances/fullComponentInstance.ts index ab9015d949..50a9eeb1d1 100644 --- a/catalog-ui/src/app/models/componentsInstances/fullComponentInstance.ts +++ b/catalog-ui/src/app/models/componentsInstances/fullComponentInstance.ts @@ -66,7 +66,7 @@ export class FullComponentInstance extends ComponentInstance { this.directives = componentInstance.directives; - if(originComponent.componentType === ComponentType.SERVICE || originComponent.componentType === ComponentType.SERVICE_PROXY){ + if(originComponent.componentType === ComponentType.SERVICE || originComponent.componentType === ComponentType.SERVICE_PROXY || ComponentType.SERVICE_SUBSTITUTION){ this.isServiceInstance = true; this.serviceApiArtifacts = (<Service>originComponent).serviceApiArtifacts; this.serviceType = (<Service>originComponent).serviceType; diff --git a/catalog-ui/src/app/models/componentsInstances/serviceSubstitutionInstance.ts b/catalog-ui/src/app/models/componentsInstances/serviceSubstitutionInstance.ts new file mode 100644 index 0000000000..6f91a62312 --- /dev/null +++ b/catalog-ui/src/app/models/componentsInstances/serviceSubstitutionInstance.ts @@ -0,0 +1,30 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation + * ================================================================================ + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +'use strict'; +import {ComponentInstance} from "./componentInstance"; + +export class ServiceSubstitutionInstance extends ComponentInstance { + + constructor(componentInstance?:ServiceSubstitutionInstance) { + super(componentInstance); + this.iconSprite = "sprite-services-icons"; + } +} + diff --git a/catalog-ui/src/app/models/graph/nodes/composition-graph-nodes/composition-ci-node-service-substitution.ts b/catalog-ui/src/app/models/graph/nodes/composition-graph-nodes/composition-ci-node-service-substitution.ts new file mode 100644 index 0000000000..94f85e316b --- /dev/null +++ b/catalog-ui/src/app/models/graph/nodes/composition-graph-nodes/composition-ci-node-service-substitution.ts @@ -0,0 +1,59 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation + * ================================================================================ + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +import { ImagesUrl, GraphUIObjects} from "../../../../utils/constants"; +import {ComponentInstance, CompositionCiNodeBase} from "../../../../models"; +import {ImageCreatorService} from "app/ng2/pages/composition/graph/common/image-creator.service"; +export class CompositionCiNodeServiceSubstitution extends CompositionCiNodeBase { + private isDependent: boolean; + private originalImg: string; + + constructor(instance:ComponentInstance, + imageCreator:ImageCreatorService) { + super(instance, imageCreator); + this.isDependent =instance.isDependent(); + this.initService(); + } + + private initService():void { + this.imagesPath = this.imagesPath + ImagesUrl.SERVICE_PROXY_ICONS; + this.img = this.imagesPath + this.componentInstance.icon + '.png'; + this.originalImg = this.img; + this.imgWidth = GraphUIObjects.DEFAULT_RESOURCE_WIDTH; + this.classes = 'service-node'; + if(this.archived){ + this.classes = this.classes + ' archived'; + return; + } + if (this.isDependent) { + this.classes += ' dependent'; + } + if (!this.certified) { + this.classes = this.classes + ' not-certified'; + } + + } + public initUncertifiedDependentImage(node:Cy.Collection, nodeMinSize:number):string { + return this.enhanceImage(node, nodeMinSize, this.imagesPath + 'uncertified_dependent.png'); + } + + public initDependentImage(node:Cy.Collection, nodeMinSize:number):string { + return this.enhanceImage(node, nodeMinSize, this.imagesPath + 'dependent.png'); + } +} diff --git a/catalog-ui/src/app/models/graph/nodes/nodes-factory.ts b/catalog-ui/src/app/models/graph/nodes/nodes-factory.ts index fbcd479603..57b245e3a8 100644 --- a/catalog-ui/src/app/models/graph/nodes/nodes-factory.ts +++ b/catalog-ui/src/app/models/graph/nodes/nodes-factory.ts @@ -30,6 +30,7 @@ import { NodeUcpe, CompositionCiNodeService, CompositionCiNodeServiceProxy, + CompositionCiNodeServiceSubstitution, CompositionCiNodeBase, ComponentInstance, CompositionCiNodeVfc @@ -41,10 +42,10 @@ import {Injectable} from "@angular/core"; @Injectable() export class NodesFactory { - constructor(private imageCreator:ImageCreatorService) { + constructor(private imageCreator: ImageCreatorService) { } - public createNode = (instance:ComponentInstance):CompositionCiNodeBase => { + public createNode = (instance: ComponentInstance): CompositionCiNodeBase => { if (instance.isUcpe()) { return new NodeUcpe(instance, this.imageCreator); @@ -55,6 +56,9 @@ export class NodesFactory { if (instance.originType === ComponentType.SERVICE_PROXY) { return new CompositionCiNodeServiceProxy(instance, this.imageCreator); } + if (instance.originType === ComponentType.SERVICE_SUBSTITUTION) { + return new CompositionCiNodeServiceSubstitution(instance, this.imageCreator); + } if (instance.originType == ResourceType.VFC) { return new CompositionCiNodeVfc(instance, this.imageCreator); } @@ -71,11 +75,11 @@ export class NodesFactory { return new CompositionCiNodeVf(instance, this.imageCreator); }; - public createModuleNode = (module:Module):ModuleNodeBase => { + public createModuleNode = (module: Module): ModuleNodeBase => { return new ModuleNodeBase(module); }; - public createUcpeCpNode = (instance:ComponentInstance):CompositionCiNodeCp => { + public createUcpeCpNode = (instance: ComponentInstance): CompositionCiNodeCp => { return new CompositionCiNodeUcpeCp(instance, this.imageCreator); } |