From 032525a375681fb18cc498d8daed9d73faa21ec3 Mon Sep 17 00:00:00 2001 From: MichaelMorris Date: Tue, 23 Jun 2020 09:15:48 +0100 Subject: Support for Nested/Hierarchical Services Change-Id: I478cf2e1f9cf96443a3e35bf22ac2c9d72bca8f1 Issue-ID: SDC-3145 Signed-off-by: MichaelMorris --- .../composition-ci-node-service-substitution.ts | 59 ++++++++++++++++++++++ .../src/app/models/graph/nodes/nodes-factory.ts | 12 +++-- 2 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 catalog-ui/src/app/models/graph/nodes/composition-graph-nodes/composition-ci-node-service-substitution.ts (limited to 'catalog-ui/src/app/models/graph/nodes') 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); } -- cgit 1.2.3-korg