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/ng2/pages/composition/palette/services | |
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/ng2/pages/composition/palette/services')
-rw-r--r-- | catalog-ui/src/app/ng2/pages/composition/palette/services/palette.service.ts | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/catalog-ui/src/app/ng2/pages/composition/palette/services/palette.service.ts b/catalog-ui/src/app/ng2/pages/composition/palette/services/palette.service.ts index 7587c5206f..d1d48507a5 100644 --- a/catalog-ui/src/app/ng2/pages/composition/palette/services/palette.service.ts +++ b/catalog-ui/src/app/ng2/pages/composition/palette/services/palette.service.ts @@ -3,6 +3,7 @@ import { Inject, Injectable } from '@angular/core'; import { LeftPaletteComponent, LeftPaletteMetadataTypes } from 'app/models/components/displayComponent'; import { GroupMetadata } from 'app/models/group-metadata'; import { PolicyMetadata } from 'app/models/policy-metadata'; +import { IComponentMetadata } from 'app/models/component-metadata'; import { SdcConfigToken } from 'app/ng2/config/sdc-config.config'; import { ISdcConfig } from 'app/ng2/config/sdc-config.config.factory'; import { WorkspaceService } from 'app/ng2/pages/workspace/workspace.service'; @@ -75,10 +76,20 @@ export class CompositionPaletteService { private combineResoponses(resInstances: object, resGrouops: object, resPolicies: object) { const retValObject = {}; - // Generic will be the 1st category in the left Pallete + if (resInstances['Generic']) { - retValObject['Generic'] = resInstances['Generic']; - } + if (this.isSubstitutionForNestedServices()) { + const serviceGroup = this.createServiceGroup(resInstances); + if (serviceGroup) { + retValObject['Service'] = serviceGroup; + } + } + else { + // Generic will be the 1st category in the left Pallete + retValObject['Generic'] = resInstances['Generic']; + } + } + // Add all other categories for (const category in resInstances) { if (category === 'Generic') { @@ -95,4 +106,25 @@ export class CompositionPaletteService { return retValObject; } + + private isSubstitutionForNestedServices(): boolean { + return this.workspaceService.metadata.categories[0].useServiceSubstitutionForNestedServices; + } + + private createServiceGroup(resInstances: object): object { + const servicesList = resInstances['Generic']['Generic']; + if (Array.isArray(servicesList) && servicesList.length > 0) { + delete resInstances['Generic']['Generic']; + return servicesList.reduce(function (map, component) { + if (map[component.categories[0].name]) { + map[component.categories[0].name].push(component); + } else { + map[component.categories[0].name] = [component]; + } + return map; + }, {}); + } + return null; + } + } |