@platform-mesh/portal-ui-lib 0.28.2 → 0.28.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -10,29 +10,12 @@ import { shareReplay } from 'rxjs/operators';
|
|
|
10
10
|
import '@ui5/webcomponents/dist/Breadcrumbs.js';
|
|
11
11
|
import '@ui5/webcomponents/dist/BreadcrumbsItem.js';
|
|
12
12
|
|
|
13
|
-
const kcpRootOrgsPath = 'root:orgs';
|
|
14
|
-
|
|
15
13
|
class CustomGlobalNodesServiceImpl {
|
|
16
14
|
constructor() {
|
|
17
15
|
this.i18nService = inject(I18nService);
|
|
18
16
|
}
|
|
19
17
|
async getCustomGlobalNodes() {
|
|
20
18
|
return [
|
|
21
|
-
{
|
|
22
|
-
label: 'PROFILE_ORGANIZATION_MANAGEMENT',
|
|
23
|
-
pathSegment: 'organization-management',
|
|
24
|
-
hideFromNav: true,
|
|
25
|
-
hideSideNav: true,
|
|
26
|
-
order: '1001',
|
|
27
|
-
viewUrl: '/assets/platform-mesh-portal-ui-wc.js#organization-management',
|
|
28
|
-
webcomponent: {
|
|
29
|
-
selfRegistered: true,
|
|
30
|
-
},
|
|
31
|
-
context: {
|
|
32
|
-
translationTable: this.i18nService.translationTable,
|
|
33
|
-
kcpPath: kcpRootOrgsPath,
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
19
|
{
|
|
37
20
|
pathSegment: 'error',
|
|
38
21
|
order: '1000',
|
|
@@ -258,6 +241,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
258
241
|
}]
|
|
259
242
|
}] });
|
|
260
243
|
|
|
244
|
+
const kcpRootOrgsPath = 'root:orgs';
|
|
245
|
+
|
|
261
246
|
class LuigiExtendedGlobalContextConfigServiceImpl {
|
|
262
247
|
constructor() {
|
|
263
248
|
this.resourceService = inject(ResourceService);
|
|
@@ -570,15 +555,6 @@ class UserProfileConfigServiceImpl {
|
|
|
570
555
|
icon: 'customer',
|
|
571
556
|
link: `/users/${userId}/overview`,
|
|
572
557
|
},
|
|
573
|
-
{
|
|
574
|
-
label: 'PROFILE_ORGANIZATION',
|
|
575
|
-
icon: 'building',
|
|
576
|
-
link: '/organization-management',
|
|
577
|
-
openNodeInModal: {
|
|
578
|
-
width: '360px',
|
|
579
|
-
height: '260px',
|
|
580
|
-
},
|
|
581
|
-
},
|
|
582
558
|
],
|
|
583
559
|
};
|
|
584
560
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-mesh-portal-ui-lib-portal-options.mjs","sources":["../../projects/lib/portal-options/models/constants.ts","../../projects/lib/portal-options/services/custom-global-nodes.service.ts","../../projects/lib/portal-options/services/header-bar-renderers/namespace-selection-renderer.service.ts","../../projects/lib/portal-options/services/header-bar-renderers/breadcrumb-renderer.ts","../../projects/lib/portal-options/services/header-bar-config.service.ts","../../projects/lib/portal-options/services/luigi-extended-global-context-config.service.ts","../../projects/lib/portal-options/utils/account-hierarchy.util.ts","../../projects/lib/portal-options/services/account-path-resolver.service.ts","../../projects/lib/portal-options/services/crd-gateway-kcp-patch-resolver.service.ts","../../projects/lib/portal-options/services/org-ready.service.ts","../../projects/lib/portal-options/services/node-change-hook-config.service.ts","../../projects/lib/portal-options/services/node-context-processing.service.ts","../../projects/lib/portal-options/services/router-config.service.ts","../../projects/lib/portal-options/services/user-profile-config.service.ts","../../projects/lib/portal-options/platform-mesh-portal-ui-lib-portal-options.ts"],"sourcesContent":["export const kcpRootOrgsPath = 'root:orgs';\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { inject } from '@angular/core';\nimport {\n CustomGlobalNodesService,\n EntityType,\n I18nService,\n NodeContext,\n} from '@openmfp/portal-ui-lib';\n\nexport class CustomGlobalNodesServiceImpl implements CustomGlobalNodesService {\n private i18nService = inject(I18nService);\n\n async getCustomGlobalNodes(): Promise<PortalLuigiNode[]> {\n return [\n {\n label: 'PROFILE_ORGANIZATION_MANAGEMENT',\n pathSegment: 'organization-management',\n hideFromNav: true,\n hideSideNav: true,\n order: '1001',\n viewUrl:\n '/assets/platform-mesh-portal-ui-wc.js#organization-management',\n webcomponent: {\n selfRegistered: true,\n },\n context: {\n translationTable: this.i18nService.translationTable,\n kcpPath: kcpRootOrgsPath,\n } as PortalNodeContext,\n },\n {\n pathSegment: 'error',\n order: '1000',\n hideFromNav: true,\n showBreadcrumbs: false,\n context: {} as PortalNodeContext,\n children: [\n {\n pathSegment: ':id',\n entityType: EntityType.ENTITY_ERROR,\n hideFromNav: true,\n hideSideNav: true,\n viewUrl: '/assets/platform-mesh-portal-ui-wc.js#error-component',\n context: {\n id: ':id',\n translationTable: this.i18nService.translationTable,\n } as any as NodeContext,\n webcomponent: {\n selfRegistered: true,\n },\n },\n ],\n },\n {\n pathSegment: 'users',\n showBreadcrumbs: false,\n hideSideNav: true,\n hideFromNav: true,\n context: {} as PortalNodeContext,\n entityType: 'global',\n children: [\n {\n pathSegment: ':userId',\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'user',\n },\n context: {\n userId: ':userId',\n } as PortalNodeContext,\n children: [\n {\n pathSegment: 'overview',\n context: {} as PortalNodeContext,\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'overview',\n },\n compound: {\n children: [],\n },\n },\n ],\n },\n ],\n },\n ];\n }\n}\n","import { DestroyRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AuthService,\n LuigiCoreService,\n LuigiNode,\n PortalConfig,\n} from '@openmfp/portal-ui-lib';\nimport { FieldDefinition, Resource } from '@platform-mesh/portal-ui-lib/models';\nimport {\n ResourceNodeContext,\n ResourceService,\n} from '@platform-mesh/portal-ui-lib/services';\nimport { generateGraphQLFields } from '@platform-mesh/portal-ui-lib/utils';\nimport '@ui5/webcomponents/dist/ComboBox.js';\nimport { Observable, of } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\n\nconst defaultColumns: FieldDefinition[] = [\n {\n label: 'Name',\n property: 'metadata.name',\n },\n];\n\n@Injectable({ providedIn: 'root' })\nexport class NamespaceSelectionRendererService {\n private namespaceResources$?: Observable<Resource[]>;\n\n private resourceService = inject(ResourceService);\n private authService = inject(AuthService);\n private luigiCoreService = inject(LuigiCoreService);\n private destroyRef = inject(DestroyRef);\n\n public create(portalConfig: PortalConfig) {\n return (containerElement: HTMLElement, nodeItems: any[], _clickHandler: any) => {\n containerElement.style.paddingBottom = '0.5rem';\n\n const lastNode = nodeItems.at(-1)?.node as LuigiNode | undefined;\n\n if (!this.isNamespacedNode(lastNode)) {\n return containerElement;\n }\n\n const ui5combobox = this.createCombobox(containerElement);\n const namespaceName = this.getNamespaceNodeName(lastNode);\n this.addComboboxItems(portalConfig, ui5combobox, namespaceName);\n\n ui5combobox.addEventListener('change', (event: any) => {\n const value = (event?.target as any)?.value ?? '';\n const selected = (value || '').trim();\n this.replacePathSegment(namespaceName, selected);\n });\n\n return ui5combobox as HTMLElement;\n };\n }\n\n private isNamespacedNode(node: LuigiNode | undefined) {\n return node?.context?.resourceDefinition?.scope === 'Namespaced';\n }\n\n private getNamespaceNodeName(node?: LuigiNode) {\n const namespacedNodeName = node?.navigationContext || '';\n const segments = window.location.pathname.split('/').filter(Boolean);\n const index = segments.indexOf(namespacedNodeName);\n\n return index > 0 ? segments[index - 1] : null;\n }\n\n private createCombobox(containerElement: HTMLElement) {\n const ui5combobox = document.createElement('ui5-combobox');\n ui5combobox.setAttribute('placeholder', 'Namespaces');\n containerElement.appendChild(ui5combobox);\n\n const allResourceOption = document.createElement('ui5-cb-item');\n allResourceOption.setAttribute('text', '-all-');\n ui5combobox.appendChild(allResourceOption);\n\n return ui5combobox;\n }\n\n private addComboboxItems(\n portalConfig: PortalConfig,\n ui5combobox: HTMLElement,\n namespaceName: string | null,\n ) {\n if (!this.namespaceResources$) {\n this.namespaceResources$ = this.getNamespaceResources(portalConfig).pipe(\n shareReplay(1),\n takeUntilDestroyed(this.destroyRef),\n );\n }\n\n this.namespaceResources$.subscribe((resources) => {\n resources.forEach((resource) => {\n const name = resource.metadata?.name;\n if (!name) {\n return;\n }\n const existingItem = Array.from(ui5combobox.children).find(\n (child) => (child as Element).getAttribute('text') === name,\n );\n\n if (existingItem) {\n return;\n }\n const resourceOption = document.createElement('ui5-cb-item');\n resourceOption.setAttribute('text', name);\n if (name === namespaceName) {\n ui5combobox.setAttribute('value', name);\n }\n ui5combobox.appendChild(resourceOption);\n });\n });\n }\n\n private getNamespaceResources(\n portalConfig: PortalConfig,\n ): Observable<Resource[]> {\n const operation = 'core_namespaces';\n const fields = generateGraphQLFields(defaultColumns);\n\n try {\n return this.resourceService.list(operation, fields, {\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n token: this.authService.getToken(),\n } as ResourceNodeContext);\n } catch (e) {\n console.error(`Failed to read entities from ${operation}`, e);\n return of([]);\n }\n }\n\n private replacePathSegment(name: string | null, newValue: string): void {\n if (!name || !newValue) {\n return;\n }\n const segments = window.location.pathname.split('/').filter(Boolean);\n const index = segments.indexOf(name);\n\n if (index !== -1) {\n segments[index] = newValue;\n const newPath = `/${segments.join('/')}`;\n\n this.luigiCoreService.navigation().navigate(newPath);\n } else {\n console.warn(`Segment \"${name}\" not found in path.`);\n }\n }\n}","import '@ui5/webcomponents/dist/Breadcrumbs.js';\nimport '@ui5/webcomponents/dist/BreadcrumbsItem.js';\n\nexport const breadcrumbRenderer = (\n containerElement: HTMLElement,\n nodeItems: any[],\n clickHandler: (item: any) => void,\n): HTMLElement => {\n containerElement.style.width = '100%';\n\n const ui5breadcrumbs = document.createElement('ui5-breadcrumbs');\n ui5breadcrumbs.setAttribute('separators', 'Slash');\n containerElement.appendChild(ui5breadcrumbs);\n\n nodeItems.forEach((item) => {\n if (item.node?.hideFromBreadcrumb) {\n return;\n }\n\n const itemCmp = document.createElement('ui5-breadcrumbs-item');\n itemCmp.textContent = item.label ?? '';\n (itemCmp as any)._item = item;\n ui5breadcrumbs.appendChild(itemCmp);\n });\n\n ui5breadcrumbs.addEventListener('item-click', (event: any) => {\n if (\n !(\n event.detail.ctrlKey ||\n event.detail.altKey ||\n event.detail.shiftKey ||\n event.detail.metaKey\n )\n ) {\n event.preventDefault();\n clickHandler(event.detail.item._item);\n }\n });\n\n return ui5breadcrumbs;\n};\n","import { Injectable, inject } from '@angular/core';\nimport {\n ConfigService,\n HeaderBarConfig,\n HeaderBarConfigService,\n} from '@openmfp/portal-ui-lib';\nimport { NamespaceSelectionRendererService } from './header-bar-renderers/namespace-selection-renderer.service';\nimport { breadcrumbRenderer } from './header-bar-renderers/breadcrumb-renderer';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeaderBarConfigServiceImpl implements HeaderBarConfigService {\n private configService = inject(ConfigService);\n private namespaceSelectionRendererService = inject(NamespaceSelectionRendererService);\n\n public async getConfig(): Promise<HeaderBarConfig> {\n const portalConfig = await this.configService.getPortalConfig();\n\n return {\n pendingItemLabel: '...',\n omitRoot: false,\n clearBeforeRender: true,\n autoHide: true,\n leftRenderers: [breadcrumbRenderer],\n rightRenderers: [this.namespaceSelectionRendererService.create(portalConfig)],\n };\n }\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { Injectable, inject } from '@angular/core';\nimport {\n AuthService,\n ConfigService,\n EnvConfigService,\n LuigiExtendedGlobalContextConfigService,\n} from '@openmfp/portal-ui-lib';\nimport { ResourceService } from '@platform-mesh/portal-ui-lib/services';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LuigiExtendedGlobalContextConfigServiceImpl\n implements LuigiExtendedGlobalContextConfigService\n{\n private resourceService = inject(ResourceService);\n private envConfigService = inject(EnvConfigService);\n private configService = inject(ConfigService);\n private authService = inject(AuthService);\n\n async createLuigiExtendedGlobalContext(): Promise<Record<string, any>> {\n const portalConfig = await this.configService.getPortalConfig();\n const entityId = (await this.envConfigService.getEnvConfig()).idpName;\n const operation = 'core_platform_mesh_io';\n\n if (entityId === 'welcome') {\n return {};\n }\n\n try {\n const accountInfo = await firstValueFrom(\n this.resourceService.readAccountInfo({\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n token: this.authService.getToken(),\n accountId: entityId,\n }),\n );\n\n const organizationOriginClusterId =\n accountInfo?.spec?.organization?.originClusterId;\n if (!organizationOriginClusterId) {\n console.error(`AccountInfo organization id missing for: ${entityId}`);\n return {};\n }\n\n return {\n organization: entityId,\n organizationId: `${organizationOriginClusterId}/${entityId}`,\n kcpCA: btoa(accountInfo?.spec?.clusterInfo?.ca),\n kcpPath: `${kcpRootOrgsPath}:${entityId}`,\n entityId: `${organizationOriginClusterId}/${entityId}`, // if no entity selected the entityId is the same as the organizationId\n entityName: entityId,\n };\n } catch (e) {\n console.error(`Failed to read entity ${entityId} from ${operation}`, e);\n }\n return {};\n }\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\n\nexport function collectAccountNamesFromHierarchy(\n node: PortalLuigiNode | undefined,\n): string[] {\n const accountNames: string[] = [];\n let currentNode: PortalLuigiNode | undefined = node;\n\n while (currentNode) {\n const entity = currentNode.context?.entity;\n if (entity?.metadata?.name && entity['__typename'] === 'Account') {\n accountNames.unshift(entity.metadata.name);\n }\n currentNode = currentNode.parent;\n }\n\n return accountNames;\n}\n\nexport function getInitialAccountId(\n entityId?: string,\n kind?: string,\n): string | undefined {\n return kind === 'Account' && entityId ? entityId : undefined;\n}\n\nexport function calculateAccountHierarchy(\n entityNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n): string[] {\n const accountNames = collectAccountNamesFromHierarchy(entityNode);\n const initialId = getInitialAccountId(entityId, kind);\n\n if (initialId) {\n const defineEntityId = entityNode.defineEntity?.id;\n if (defineEntityId?.includes('core_platform-mesh_io_account')) {\n const deepLevel = parseInt(defineEntityId.split(':').pop() || '0');\n if (accountNames.length >= deepLevel) {\n accountNames.pop();\n }\n }\n\n accountNames.push(initialId);\n }\n\n return accountNames;\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\nimport { calculateAccountHierarchy } from '../utils/account-hierarchy.util';\nimport { Injectable, inject } from '@angular/core';\nimport { LuigiCoreService } from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class AccountPathResolverService {\n private luigiCoreService = inject(LuigiCoreService);\n private lastProccesedEntityId: string | undefined;\n public resolveAccountHierarchy(\n entityNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n ): string {\n if (entityNode.context?.accountPath) {\n if (this.lastProccesedEntityId === entityId) {\n return entityNode.context.accountPath;\n }\n }\n\n const accountNames = calculateAccountHierarchy(entityNode, entityId, kind);\n\n const path = accountNames.join(':');\n entityNode.context.accountPath = path;\n this.lastProccesedEntityId = entityId;\n return path;\n }\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { calculateAccountHierarchy } from '../utils/account-hierarchy.util';\nimport { Injectable, inject } from '@angular/core';\nimport { EnvConfigService } from '@openmfp/portal-ui-lib';\nimport { GatewayService } from '@platform-mesh/portal-ui-lib/services';\n\n@Injectable({ providedIn: 'root' })\nexport class CrdGatewayKcpPatchResolver {\n private gatewayService = inject(GatewayService);\n private envConfigService = inject(EnvConfigService);\n private lastProccesedEntityId: string | undefined;\n\n public async resolveCrdGatewayKcpPath(\n nextNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n ) {\n if (nextNode.context?.kcpPath) {\n if (this.lastProccesedEntityId === entityId) {\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(\n nextNode.context.kcpPath,\n );\n return nextNode.context.kcpPath;\n }\n }\n\n const accountNames = calculateAccountHierarchy(nextNode, entityId, kind);\n\n const entityKcpPath =\n accountNames.length > 0 ? `:${accountNames.join(':')}` : '';\n\n const org = (await this.envConfigService.getEnvConfig()).idpName;\n const kcpPath = `${kcpRootOrgsPath}:${org}${entityKcpPath}`;\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(kcpPath);\n\n if (nextNode.context && !nextNode.context.kcpPath) {\n nextNode.context.kcpPath = kcpPath;\n }\n this.lastProccesedEntityId = entityId;\n return kcpPath;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { AuthService, ConfigService, EnvConfigService } from '@openmfp/portal-ui-lib';\nimport { ResourceService } from '@platform-mesh/portal-ui-lib/services';\nimport { exhaustMap, filter, Subject, tap } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class OrganizationReadyService {\n private configService = inject(ConfigService);\n private envConfigService = inject(EnvConfigService);\n private resourceService = inject(ResourceService);\n private authService = inject(AuthService);\n\n private isReady = false;\n private check$ = new Subject<void>();\n\n constructor() {\n this.initChecks();\n }\n\n private async initChecks() {\n const portalConfig = await this.configService.getPortalConfig();\n const envIdpName = (await this.envConfigService.getEnvConfig()).idpName;\n\n if(envIdpName === 'welcome') {\n return;\n }\n\n this.check$\n .pipe(\n filter(() => !this.isReady),\n exhaustMap(() =>\n this.resourceService.readOrganizationReady({\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n token: this.authService.getToken(),\n accountId: envIdpName,\n }),\n ),\n tap((isReady) => {\n this.isReady = isReady;\n }),\n ).subscribe()\n }\n\n public checkOrganizationReady() {\n this.check$.next();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n LuigiCoreService,\n NodeChangeHookConfigService,\n} from '@openmfp/portal-ui-lib';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { AccountPathResolverService } from './account-path-resolver.service';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { OrganizationReadyService } from './org-ready.service';\n\n@Injectable({ providedIn: 'root' })\nexport class NodeChangeHookConfigServiceImpl implements NodeChangeHookConfigService {\n private luigiCoreService = inject(LuigiCoreService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n private accountPathResolverService = inject(AccountPathResolverService);\n private organizationReadyService = inject(OrganizationReadyService);\n\n nodeChangeHook(prevNode: PortalLuigiNode, nextNode: PortalLuigiNode) {\n if (\n nextNode.initialRoute &&\n nextNode.virtualTree &&\n !(nextNode as any)._virtualTree\n ) {\n this.luigiCoreService.navigation().navigate(nextNode.initialRoute);\n }\n\n this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(nextNode);\n this.accountPathResolverService.resolveAccountHierarchy(nextNode);\n this.organizationReadyService.checkOrganizationReady();\n }\n}\n","import { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { AccountPathResolverService } from './account-path-resolver.service';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport { NodeContextProcessingService } from '@openmfp/portal-ui-lib';\nimport {\n ResourceRequestParams,\n ResourceService,\n} from '@platform-mesh/portal-ui-lib/services';\nimport { replaceDotsAndHyphensWithUnderscores } from '@platform-mesh/portal-ui-lib/utils';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NodeContextProcessingServiceImpl implements NodeContextProcessingService {\n private resourceService = inject(ResourceService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n private accountPathResolver = inject(AccountPathResolverService);\n\n public async processNodeContext(\n entityId: string,\n entityNode: PortalLuigiNode,\n ctx: PortalNodeContext,\n ) {\n const group = entityNode.defineEntity?.graphqlEntity?.group;\n const kind = entityNode.defineEntity?.graphqlEntity?.kind;\n const version = entityNode.defineEntity?.graphqlEntity?.version;\n const queryPart = entityNode.defineEntity?.graphqlEntity?.query;\n\n if (!entityId || !group || !kind || !queryPart || !version) {\n return;\n }\n\n const kcpPath =\n await this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(\n entityNode,\n entityId,\n kind,\n );\n\n const operation = replaceDotsAndHyphensWithUnderscores(group);\n const namespaceId =\n ctx.resourceDefinition?.scope === 'Namespaced'\n ? ctx.namespaceId\n : undefined;\n let query = `query ($name: String!) { ${operation} { ${version} { ${kind}(name: $name) ${queryPart} }}}`;\n if (namespaceId) {\n query = `query ($name: String!, $namespace: String!) { ${operation} { ${version} { ${kind}(name: $name, namespace: $namespace) ${queryPart} }}}`;\n }\n\n const accountPath = this.accountPathResolver.resolveAccountHierarchy(\n entityNode,\n entityId,\n kind,\n );\n\n const params: ResourceRequestParams = {\n kind,\n version,\n operation,\n };\n\n try {\n const entity = await firstValueFrom(\n this.resourceService.read(\n entityId,\n params,\n query,\n {\n resourceDefinition: ctx.resourceDefinition,\n portalContext: {\n crdGatewayApiUrl: ctx.portalContext.crdGatewayApiUrl,\n },\n token: ctx.token,\n namespaceId,\n },\n kind.toLowerCase() === 'account',\n ),\n );\n\n // update the current already calculated by Luigi context for a node\n ctx.kcpPath = kcpPath;\n ctx.entity = entity;\n ctx.entityName = entityId;\n ctx.accountPath = accountPath;\n ctx.entityId = `${entity.metadata?.annotations?.['kcp.io/cluster']}/${entityId}`;\n // update the node context of sa node to contain the entity for future context calculations\n entityNode.context.kcpPath = kcpPath;\n entityNode.context.entity = entity;\n entityNode.context.entityName = ctx.entityName;\n entityNode.context.entityId = ctx.entityId;\n entityNode.context.accountPath = accountPath;\n } catch (e) {\n console.error(`Not able to read entity ${entityId} from ${operation}`);\n throw e;\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n ClientEnvironment,\n EnvConfigService,\n RoutingConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable()\nexport class CustomRoutingConfigServiceImpl implements RoutingConfigService {\n private envConfigService = inject(EnvConfigService);\n private envConfig: ClientEnvironment | null = null;\n\n constructor() {\n this.getEnvConfig();\n }\n\n async getEnvConfig(): Promise<void> {\n this.envConfig = await this.envConfigService.getEnvConfig();\n }\n\n getRoutingConfig(): any {\n return {\n pageNotFoundHandler: () => {\n if (!this.envConfig?.baseDomain) {\n return this.redirectTo('error/404');\n }\n\n if (window.location.hostname === this.envConfig.baseDomain) {\n return this.redirectTo('welcome');\n }\n\n return this.redirectTo('error/404');\n },\n };\n }\n\n public redirectTo(path: string, keepURL = true): any {\n return {\n redirectTo: path,\n keepURL,\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n AuthService,\n UserProfile,\n UserProfileConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class UserProfileConfigServiceImpl implements UserProfileConfigService {\n private authService = inject(AuthService);\n async getProfile(): Promise<UserProfile> {\n const { userId } = this.authService.getUserInfo();\n\n return {\n items: [\n {\n label: 'PROFILE_PROFILE',\n icon: 'customer',\n link: `/users/${userId}/overview`,\n },\n {\n label: 'PROFILE_ORGANIZATION',\n icon: 'building',\n link: '/organization-management',\n openNodeInModal: {\n width: '360px',\n height: '260px',\n },\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform-mesh-portal-ui-lib-portal-options.mjs","sources":["../../projects/lib/portal-options/services/custom-global-nodes.service.ts","../../projects/lib/portal-options/services/header-bar-renderers/namespace-selection-renderer.service.ts","../../projects/lib/portal-options/services/header-bar-renderers/breadcrumb-renderer.ts","../../projects/lib/portal-options/services/header-bar-config.service.ts","../../projects/lib/portal-options/models/constants.ts","../../projects/lib/portal-options/services/luigi-extended-global-context-config.service.ts","../../projects/lib/portal-options/utils/account-hierarchy.util.ts","../../projects/lib/portal-options/services/account-path-resolver.service.ts","../../projects/lib/portal-options/services/crd-gateway-kcp-patch-resolver.service.ts","../../projects/lib/portal-options/services/org-ready.service.ts","../../projects/lib/portal-options/services/node-change-hook-config.service.ts","../../projects/lib/portal-options/services/node-context-processing.service.ts","../../projects/lib/portal-options/services/router-config.service.ts","../../projects/lib/portal-options/services/user-profile-config.service.ts","../../projects/lib/portal-options/platform-mesh-portal-ui-lib-portal-options.ts"],"sourcesContent":["import { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { inject } from '@angular/core';\nimport {\n CustomGlobalNodesService,\n EntityType,\n I18nService,\n NodeContext,\n} from '@openmfp/portal-ui-lib';\n\nexport class CustomGlobalNodesServiceImpl implements CustomGlobalNodesService {\n private i18nService = inject(I18nService);\n\n async getCustomGlobalNodes(): Promise<PortalLuigiNode[]> {\n return [\n {\n pathSegment: 'error',\n order: '1000',\n hideFromNav: true,\n showBreadcrumbs: false,\n context: {} as PortalNodeContext,\n children: [\n {\n pathSegment: ':id',\n entityType: EntityType.ENTITY_ERROR,\n hideFromNav: true,\n hideSideNav: true,\n viewUrl: '/assets/platform-mesh-portal-ui-wc.js#error-component',\n context: {\n id: ':id',\n translationTable: this.i18nService.translationTable,\n } as any as NodeContext,\n webcomponent: {\n selfRegistered: true,\n },\n },\n ],\n },\n {\n pathSegment: 'users',\n showBreadcrumbs: false,\n hideSideNav: true,\n hideFromNav: true,\n context: {} as PortalNodeContext,\n entityType: 'global',\n children: [\n {\n pathSegment: ':userId',\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'user',\n },\n context: {\n userId: ':userId',\n } as PortalNodeContext,\n children: [\n {\n pathSegment: 'overview',\n context: {} as PortalNodeContext,\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'overview',\n },\n compound: {\n children: [],\n },\n },\n ],\n },\n ],\n },\n ];\n }\n}\n","import { DestroyRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AuthService,\n LuigiCoreService,\n LuigiNode,\n PortalConfig,\n} from '@openmfp/portal-ui-lib';\nimport { FieldDefinition, Resource } from '@platform-mesh/portal-ui-lib/models';\nimport {\n ResourceNodeContext,\n ResourceService,\n} from '@platform-mesh/portal-ui-lib/services';\nimport { generateGraphQLFields } from '@platform-mesh/portal-ui-lib/utils';\nimport '@ui5/webcomponents/dist/ComboBox.js';\nimport { Observable, of } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\n\nconst defaultColumns: FieldDefinition[] = [\n {\n label: 'Name',\n property: 'metadata.name',\n },\n];\n\n@Injectable({ providedIn: 'root' })\nexport class NamespaceSelectionRendererService {\n private namespaceResources$?: Observable<Resource[]>;\n\n private resourceService = inject(ResourceService);\n private authService = inject(AuthService);\n private luigiCoreService = inject(LuigiCoreService);\n private destroyRef = inject(DestroyRef);\n\n public create(portalConfig: PortalConfig) {\n return (containerElement: HTMLElement, nodeItems: any[], _clickHandler: any) => {\n containerElement.style.paddingBottom = '0.5rem';\n\n const lastNode = nodeItems.at(-1)?.node as LuigiNode | undefined;\n\n if (!this.isNamespacedNode(lastNode)) {\n return containerElement;\n }\n\n const ui5combobox = this.createCombobox(containerElement);\n const namespaceName = this.getNamespaceNodeName(lastNode);\n this.addComboboxItems(portalConfig, ui5combobox, namespaceName);\n\n ui5combobox.addEventListener('change', (event: any) => {\n const value = (event?.target as any)?.value ?? '';\n const selected = (value || '').trim();\n this.replacePathSegment(namespaceName, selected);\n });\n\n return ui5combobox as HTMLElement;\n };\n }\n\n private isNamespacedNode(node: LuigiNode | undefined) {\n return node?.context?.resourceDefinition?.scope === 'Namespaced';\n }\n\n private getNamespaceNodeName(node?: LuigiNode) {\n const namespacedNodeName = node?.navigationContext || '';\n const segments = window.location.pathname.split('/').filter(Boolean);\n const index = segments.indexOf(namespacedNodeName);\n\n return index > 0 ? segments[index - 1] : null;\n }\n\n private createCombobox(containerElement: HTMLElement) {\n const ui5combobox = document.createElement('ui5-combobox');\n ui5combobox.setAttribute('placeholder', 'Namespaces');\n containerElement.appendChild(ui5combobox);\n\n const allResourceOption = document.createElement('ui5-cb-item');\n allResourceOption.setAttribute('text', '-all-');\n ui5combobox.appendChild(allResourceOption);\n\n return ui5combobox;\n }\n\n private addComboboxItems(\n portalConfig: PortalConfig,\n ui5combobox: HTMLElement,\n namespaceName: string | null,\n ) {\n if (!this.namespaceResources$) {\n this.namespaceResources$ = this.getNamespaceResources(portalConfig).pipe(\n shareReplay(1),\n takeUntilDestroyed(this.destroyRef),\n );\n }\n\n this.namespaceResources$.subscribe((resources) => {\n resources.forEach((resource) => {\n const name = resource.metadata?.name;\n if (!name) {\n return;\n }\n const existingItem = Array.from(ui5combobox.children).find(\n (child) => (child as Element).getAttribute('text') === name,\n );\n\n if (existingItem) {\n return;\n }\n const resourceOption = document.createElement('ui5-cb-item');\n resourceOption.setAttribute('text', name);\n if (name === namespaceName) {\n ui5combobox.setAttribute('value', name);\n }\n ui5combobox.appendChild(resourceOption);\n });\n });\n }\n\n private getNamespaceResources(\n portalConfig: PortalConfig,\n ): Observable<Resource[]> {\n const operation = 'core_namespaces';\n const fields = generateGraphQLFields(defaultColumns);\n\n try {\n return this.resourceService.list(operation, fields, {\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n token: this.authService.getToken(),\n } as ResourceNodeContext);\n } catch (e) {\n console.error(`Failed to read entities from ${operation}`, e);\n return of([]);\n }\n }\n\n private replacePathSegment(name: string | null, newValue: string): void {\n if (!name || !newValue) {\n return;\n }\n const segments = window.location.pathname.split('/').filter(Boolean);\n const index = segments.indexOf(name);\n\n if (index !== -1) {\n segments[index] = newValue;\n const newPath = `/${segments.join('/')}`;\n\n this.luigiCoreService.navigation().navigate(newPath);\n } else {\n console.warn(`Segment \"${name}\" not found in path.`);\n }\n }\n}","import '@ui5/webcomponents/dist/Breadcrumbs.js';\nimport '@ui5/webcomponents/dist/BreadcrumbsItem.js';\n\nexport const breadcrumbRenderer = (\n containerElement: HTMLElement,\n nodeItems: any[],\n clickHandler: (item: any) => void,\n): HTMLElement => {\n containerElement.style.width = '100%';\n\n const ui5breadcrumbs = document.createElement('ui5-breadcrumbs');\n ui5breadcrumbs.setAttribute('separators', 'Slash');\n containerElement.appendChild(ui5breadcrumbs);\n\n nodeItems.forEach((item) => {\n if (item.node?.hideFromBreadcrumb) {\n return;\n }\n\n const itemCmp = document.createElement('ui5-breadcrumbs-item');\n itemCmp.textContent = item.label ?? '';\n (itemCmp as any)._item = item;\n ui5breadcrumbs.appendChild(itemCmp);\n });\n\n ui5breadcrumbs.addEventListener('item-click', (event: any) => {\n if (\n !(\n event.detail.ctrlKey ||\n event.detail.altKey ||\n event.detail.shiftKey ||\n event.detail.metaKey\n )\n ) {\n event.preventDefault();\n clickHandler(event.detail.item._item);\n }\n });\n\n return ui5breadcrumbs;\n};\n","import { Injectable, inject } from '@angular/core';\nimport {\n ConfigService,\n HeaderBarConfig,\n HeaderBarConfigService,\n} from '@openmfp/portal-ui-lib';\nimport { NamespaceSelectionRendererService } from './header-bar-renderers/namespace-selection-renderer.service';\nimport { breadcrumbRenderer } from './header-bar-renderers/breadcrumb-renderer';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeaderBarConfigServiceImpl implements HeaderBarConfigService {\n private configService = inject(ConfigService);\n private namespaceSelectionRendererService = inject(NamespaceSelectionRendererService);\n\n public async getConfig(): Promise<HeaderBarConfig> {\n const portalConfig = await this.configService.getPortalConfig();\n\n return {\n pendingItemLabel: '...',\n omitRoot: false,\n clearBeforeRender: true,\n autoHide: true,\n leftRenderers: [breadcrumbRenderer],\n rightRenderers: [this.namespaceSelectionRendererService.create(portalConfig)],\n };\n }\n}\n","export const kcpRootOrgsPath = 'root:orgs';\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { Injectable, inject } from '@angular/core';\nimport {\n AuthService,\n ConfigService,\n EnvConfigService,\n LuigiExtendedGlobalContextConfigService,\n} from '@openmfp/portal-ui-lib';\nimport { ResourceService } from '@platform-mesh/portal-ui-lib/services';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LuigiExtendedGlobalContextConfigServiceImpl\n implements LuigiExtendedGlobalContextConfigService\n{\n private resourceService = inject(ResourceService);\n private envConfigService = inject(EnvConfigService);\n private configService = inject(ConfigService);\n private authService = inject(AuthService);\n\n async createLuigiExtendedGlobalContext(): Promise<Record<string, any>> {\n const portalConfig = await this.configService.getPortalConfig();\n const entityId = (await this.envConfigService.getEnvConfig()).idpName;\n const operation = 'core_platform_mesh_io';\n\n if (entityId === 'welcome') {\n return {};\n }\n\n try {\n const accountInfo = await firstValueFrom(\n this.resourceService.readAccountInfo({\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n token: this.authService.getToken(),\n accountId: entityId,\n }),\n );\n\n const organizationOriginClusterId =\n accountInfo?.spec?.organization?.originClusterId;\n if (!organizationOriginClusterId) {\n console.error(`AccountInfo organization id missing for: ${entityId}`);\n return {};\n }\n\n return {\n organization: entityId,\n organizationId: `${organizationOriginClusterId}/${entityId}`,\n kcpCA: btoa(accountInfo?.spec?.clusterInfo?.ca),\n kcpPath: `${kcpRootOrgsPath}:${entityId}`,\n entityId: `${organizationOriginClusterId}/${entityId}`, // if no entity selected the entityId is the same as the organizationId\n entityName: entityId,\n };\n } catch (e) {\n console.error(`Failed to read entity ${entityId} from ${operation}`, e);\n }\n return {};\n }\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\n\nexport function collectAccountNamesFromHierarchy(\n node: PortalLuigiNode | undefined,\n): string[] {\n const accountNames: string[] = [];\n let currentNode: PortalLuigiNode | undefined = node;\n\n while (currentNode) {\n const entity = currentNode.context?.entity;\n if (entity?.metadata?.name && entity['__typename'] === 'Account') {\n accountNames.unshift(entity.metadata.name);\n }\n currentNode = currentNode.parent;\n }\n\n return accountNames;\n}\n\nexport function getInitialAccountId(\n entityId?: string,\n kind?: string,\n): string | undefined {\n return kind === 'Account' && entityId ? entityId : undefined;\n}\n\nexport function calculateAccountHierarchy(\n entityNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n): string[] {\n const accountNames = collectAccountNamesFromHierarchy(entityNode);\n const initialId = getInitialAccountId(entityId, kind);\n\n if (initialId) {\n const defineEntityId = entityNode.defineEntity?.id;\n if (defineEntityId?.includes('core_platform-mesh_io_account')) {\n const deepLevel = parseInt(defineEntityId.split(':').pop() || '0');\n if (accountNames.length >= deepLevel) {\n accountNames.pop();\n }\n }\n\n accountNames.push(initialId);\n }\n\n return accountNames;\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\nimport { calculateAccountHierarchy } from '../utils/account-hierarchy.util';\nimport { Injectable, inject } from '@angular/core';\nimport { LuigiCoreService } from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class AccountPathResolverService {\n private luigiCoreService = inject(LuigiCoreService);\n private lastProccesedEntityId: string | undefined;\n public resolveAccountHierarchy(\n entityNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n ): string {\n if (entityNode.context?.accountPath) {\n if (this.lastProccesedEntityId === entityId) {\n return entityNode.context.accountPath;\n }\n }\n\n const accountNames = calculateAccountHierarchy(entityNode, entityId, kind);\n\n const path = accountNames.join(':');\n entityNode.context.accountPath = path;\n this.lastProccesedEntityId = entityId;\n return path;\n }\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { calculateAccountHierarchy } from '../utils/account-hierarchy.util';\nimport { Injectable, inject } from '@angular/core';\nimport { EnvConfigService } from '@openmfp/portal-ui-lib';\nimport { GatewayService } from '@platform-mesh/portal-ui-lib/services';\n\n@Injectable({ providedIn: 'root' })\nexport class CrdGatewayKcpPatchResolver {\n private gatewayService = inject(GatewayService);\n private envConfigService = inject(EnvConfigService);\n private lastProccesedEntityId: string | undefined;\n\n public async resolveCrdGatewayKcpPath(\n nextNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n ) {\n if (nextNode.context?.kcpPath) {\n if (this.lastProccesedEntityId === entityId) {\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(\n nextNode.context.kcpPath,\n );\n return nextNode.context.kcpPath;\n }\n }\n\n const accountNames = calculateAccountHierarchy(nextNode, entityId, kind);\n\n const entityKcpPath =\n accountNames.length > 0 ? `:${accountNames.join(':')}` : '';\n\n const org = (await this.envConfigService.getEnvConfig()).idpName;\n const kcpPath = `${kcpRootOrgsPath}:${org}${entityKcpPath}`;\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(kcpPath);\n\n if (nextNode.context && !nextNode.context.kcpPath) {\n nextNode.context.kcpPath = kcpPath;\n }\n this.lastProccesedEntityId = entityId;\n return kcpPath;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { AuthService, ConfigService, EnvConfigService } from '@openmfp/portal-ui-lib';\nimport { ResourceService } from '@platform-mesh/portal-ui-lib/services';\nimport { exhaustMap, filter, Subject, tap } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class OrganizationReadyService {\n private configService = inject(ConfigService);\n private envConfigService = inject(EnvConfigService);\n private resourceService = inject(ResourceService);\n private authService = inject(AuthService);\n\n private isReady = false;\n private check$ = new Subject<void>();\n\n constructor() {\n this.initChecks();\n }\n\n private async initChecks() {\n const portalConfig = await this.configService.getPortalConfig();\n const envIdpName = (await this.envConfigService.getEnvConfig()).idpName;\n\n if(envIdpName === 'welcome') {\n return;\n }\n\n this.check$\n .pipe(\n filter(() => !this.isReady),\n exhaustMap(() =>\n this.resourceService.readOrganizationReady({\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n token: this.authService.getToken(),\n accountId: envIdpName,\n }),\n ),\n tap((isReady) => {\n this.isReady = isReady;\n }),\n ).subscribe()\n }\n\n public checkOrganizationReady() {\n this.check$.next();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n LuigiCoreService,\n NodeChangeHookConfigService,\n} from '@openmfp/portal-ui-lib';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { AccountPathResolverService } from './account-path-resolver.service';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { OrganizationReadyService } from './org-ready.service';\n\n@Injectable({ providedIn: 'root' })\nexport class NodeChangeHookConfigServiceImpl implements NodeChangeHookConfigService {\n private luigiCoreService = inject(LuigiCoreService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n private accountPathResolverService = inject(AccountPathResolverService);\n private organizationReadyService = inject(OrganizationReadyService);\n\n nodeChangeHook(prevNode: PortalLuigiNode, nextNode: PortalLuigiNode) {\n if (\n nextNode.initialRoute &&\n nextNode.virtualTree &&\n !(nextNode as any)._virtualTree\n ) {\n this.luigiCoreService.navigation().navigate(nextNode.initialRoute);\n }\n\n this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(nextNode);\n this.accountPathResolverService.resolveAccountHierarchy(nextNode);\n this.organizationReadyService.checkOrganizationReady();\n }\n}\n","import { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { AccountPathResolverService } from './account-path-resolver.service';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport { NodeContextProcessingService } from '@openmfp/portal-ui-lib';\nimport {\n ResourceRequestParams,\n ResourceService,\n} from '@platform-mesh/portal-ui-lib/services';\nimport { replaceDotsAndHyphensWithUnderscores } from '@platform-mesh/portal-ui-lib/utils';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NodeContextProcessingServiceImpl implements NodeContextProcessingService {\n private resourceService = inject(ResourceService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n private accountPathResolver = inject(AccountPathResolverService);\n\n public async processNodeContext(\n entityId: string,\n entityNode: PortalLuigiNode,\n ctx: PortalNodeContext,\n ) {\n const group = entityNode.defineEntity?.graphqlEntity?.group;\n const kind = entityNode.defineEntity?.graphqlEntity?.kind;\n const version = entityNode.defineEntity?.graphqlEntity?.version;\n const queryPart = entityNode.defineEntity?.graphqlEntity?.query;\n\n if (!entityId || !group || !kind || !queryPart || !version) {\n return;\n }\n\n const kcpPath =\n await this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(\n entityNode,\n entityId,\n kind,\n );\n\n const operation = replaceDotsAndHyphensWithUnderscores(group);\n const namespaceId =\n ctx.resourceDefinition?.scope === 'Namespaced'\n ? ctx.namespaceId\n : undefined;\n let query = `query ($name: String!) { ${operation} { ${version} { ${kind}(name: $name) ${queryPart} }}}`;\n if (namespaceId) {\n query = `query ($name: String!, $namespace: String!) { ${operation} { ${version} { ${kind}(name: $name, namespace: $namespace) ${queryPart} }}}`;\n }\n\n const accountPath = this.accountPathResolver.resolveAccountHierarchy(\n entityNode,\n entityId,\n kind,\n );\n\n const params: ResourceRequestParams = {\n kind,\n version,\n operation,\n };\n\n try {\n const entity = await firstValueFrom(\n this.resourceService.read(\n entityId,\n params,\n query,\n {\n resourceDefinition: ctx.resourceDefinition,\n portalContext: {\n crdGatewayApiUrl: ctx.portalContext.crdGatewayApiUrl,\n },\n token: ctx.token,\n namespaceId,\n },\n kind.toLowerCase() === 'account',\n ),\n );\n\n // update the current already calculated by Luigi context for a node\n ctx.kcpPath = kcpPath;\n ctx.entity = entity;\n ctx.entityName = entityId;\n ctx.accountPath = accountPath;\n ctx.entityId = `${entity.metadata?.annotations?.['kcp.io/cluster']}/${entityId}`;\n // update the node context of sa node to contain the entity for future context calculations\n entityNode.context.kcpPath = kcpPath;\n entityNode.context.entity = entity;\n entityNode.context.entityName = ctx.entityName;\n entityNode.context.entityId = ctx.entityId;\n entityNode.context.accountPath = accountPath;\n } catch (e) {\n console.error(`Not able to read entity ${entityId} from ${operation}`);\n throw e;\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n ClientEnvironment,\n EnvConfigService,\n RoutingConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable()\nexport class CustomRoutingConfigServiceImpl implements RoutingConfigService {\n private envConfigService = inject(EnvConfigService);\n private envConfig: ClientEnvironment | null = null;\n\n constructor() {\n this.getEnvConfig();\n }\n\n async getEnvConfig(): Promise<void> {\n this.envConfig = await this.envConfigService.getEnvConfig();\n }\n\n getRoutingConfig(): any {\n return {\n pageNotFoundHandler: () => {\n if (!this.envConfig?.baseDomain) {\n return this.redirectTo('error/404');\n }\n\n if (window.location.hostname === this.envConfig.baseDomain) {\n return this.redirectTo('welcome');\n }\n\n return this.redirectTo('error/404');\n },\n };\n }\n\n public redirectTo(path: string, keepURL = true): any {\n return {\n redirectTo: path,\n keepURL,\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n AuthService,\n UserProfile,\n UserProfileConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class UserProfileConfigServiceImpl implements UserProfileConfigService {\n private authService = inject(AuthService);\n async getProfile(): Promise<UserProfile> {\n const { userId } = this.authService.getUserInfo();\n\n return {\n items: [\n {\n label: 'PROFILE_PROFILE',\n icon: 'customer',\n link: `/users/${userId}/overview`,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|