@platform-mesh/portal-ui-lib 0.18.11 → 0.18.13
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.
- package/assets/platform-mesh-portal-ui-wc.js +5 -5
- package/fesm2022/platform-mesh-portal-ui-lib-portal-options.mjs +25 -32
- package/fesm2022/platform-mesh-portal-ui-lib-portal-options.mjs.map +1 -1
- package/fesm2022/platform-mesh-portal-ui-lib-services.mjs +12 -22
- package/fesm2022/platform-mesh-portal-ui-lib-services.mjs.map +1 -1
- package/package.json +2 -2
- package/portal-options/index.d.ts +2 -1
- package/services/index.d.ts +2 -3
|
@@ -38,19 +38,17 @@ class CustomGlobalNodesServiceImpl {
|
|
|
38
38
|
showBreadcrumbs: false,
|
|
39
39
|
hideSideNav: true,
|
|
40
40
|
hideFromNav: true,
|
|
41
|
+
context: {},
|
|
41
42
|
entityType: 'global',
|
|
42
43
|
children: [
|
|
43
44
|
{
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
pathSegment: ':userId',
|
|
46
|
+
hideSideNav: true,
|
|
47
|
+
hideFromNav: true,
|
|
47
48
|
defineEntity: {
|
|
48
49
|
id: 'user',
|
|
49
|
-
contextKey: 'profileUserId',
|
|
50
50
|
},
|
|
51
|
-
|
|
52
|
-
hideSideNav: true,
|
|
53
|
-
hideFromNav: true,
|
|
51
|
+
context: {},
|
|
54
52
|
children: [
|
|
55
53
|
{
|
|
56
54
|
pathSegment: 'overview',
|
|
@@ -265,7 +263,9 @@ class LuigiExtendedGlobalContextConfigServiceImpl {
|
|
|
265
263
|
organization: entityId,
|
|
266
264
|
organizationId: `${organizationOriginClusterId}/${entityId}`,
|
|
267
265
|
kcpCA: btoa(accountInfo?.spec?.clusterInfo?.ca),
|
|
266
|
+
kcpPath: `${kcpRootOrgsPath}:${entityId}`,
|
|
268
267
|
entityId: `${organizationOriginClusterId}/${entityId}`, // if no entity selected the entityId is the same as the organizationId
|
|
268
|
+
entityName: entityId,
|
|
269
269
|
};
|
|
270
270
|
}
|
|
271
271
|
catch (e) {
|
|
@@ -286,12 +286,13 @@ class CrdGatewayKcpPatchResolver {
|
|
|
286
286
|
this.gatewayService = inject(GatewayService);
|
|
287
287
|
this.envConfigService = inject(EnvConfigService);
|
|
288
288
|
}
|
|
289
|
-
async
|
|
290
|
-
if (
|
|
291
|
-
|
|
289
|
+
async resolveCrdGatewayKcpPath(nextNode, entityId, kind) {
|
|
290
|
+
if (nextNode.context.kcpPath) {
|
|
291
|
+
this.gatewayService.updateCrdGatewayUrlWithEntityPath(nextNode.context.kcpPath);
|
|
292
|
+
return nextNode.context.kcpPath;
|
|
292
293
|
}
|
|
293
|
-
let entityKcpPath = `:${entityId}`;
|
|
294
|
-
let node = nextNode
|
|
294
|
+
let entityKcpPath = kind !== 'Account' || !entityId ? '' : `:${entityId}`;
|
|
295
|
+
let node = nextNode;
|
|
295
296
|
do {
|
|
296
297
|
const entity = node?.context?.entity;
|
|
297
298
|
if (entity?.metadata?.name && entity['__typename'] === 'Account') {
|
|
@@ -300,22 +301,12 @@ class CrdGatewayKcpPatchResolver {
|
|
|
300
301
|
node = node?.parent;
|
|
301
302
|
} while (node);
|
|
302
303
|
const org = (await this.envConfigService.getEnvConfig()).idpName;
|
|
303
|
-
const kcpPath =
|
|
304
|
-
this.gatewayService.updateCrdGatewayUrlWithEntityPath(kcpPath);
|
|
305
|
-
}
|
|
306
|
-
async resolveCrdGatewayKcpPath(nextNode) {
|
|
307
|
-
let entityKcpPath = '';
|
|
308
|
-
let node = nextNode;
|
|
309
|
-
do {
|
|
310
|
-
const entity = node.context?.entity;
|
|
311
|
-
if (entity?.metadata?.name && entity['__typename'] === 'Account') {
|
|
312
|
-
entityKcpPath = `:${entity.metadata.name}${entityKcpPath}`;
|
|
313
|
-
}
|
|
314
|
-
node = node.parent;
|
|
315
|
-
} while (node);
|
|
316
|
-
const org = (await this.envConfigService.getEnvConfig()).idpName;
|
|
317
|
-
const kcpPath = nextNode.context?.kcpPath || `${kcpRootOrgsPath}:${org}${entityKcpPath}`;
|
|
304
|
+
const kcpPath = `${kcpRootOrgsPath}:${org}${entityKcpPath}`;
|
|
318
305
|
this.gatewayService.updateCrdGatewayUrlWithEntityPath(kcpPath);
|
|
306
|
+
if (!nextNode.context.kcpPath) {
|
|
307
|
+
nextNode.context.kcpPath = kcpPath;
|
|
308
|
+
}
|
|
309
|
+
return kcpPath;
|
|
319
310
|
}
|
|
320
311
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CrdGatewayKcpPatchResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
321
312
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CrdGatewayKcpPatchResolver, providedIn: 'root' }); }
|
|
@@ -358,7 +349,7 @@ class NodeContextProcessingServiceImpl {
|
|
|
358
349
|
if (!entityId || !group || !kind || !queryPart) {
|
|
359
350
|
return;
|
|
360
351
|
}
|
|
361
|
-
await this.crdGatewayKcpPatchResolver.
|
|
352
|
+
const kcpPath = await this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(entityNode, entityId, kind);
|
|
362
353
|
const operation = replaceDotsAndHyphensWithUnderscores(group);
|
|
363
354
|
const namespaceId = ctx.resourceDefinition?.scope === 'Namespaced'
|
|
364
355
|
? ctx.namespaceId
|
|
@@ -377,13 +368,15 @@ class NodeContextProcessingServiceImpl {
|
|
|
377
368
|
namespaceId,
|
|
378
369
|
}, kind.toLowerCase() === 'account'));
|
|
379
370
|
// update the current already calculated by Luigi context for a node
|
|
371
|
+
ctx.kcpPath = kcpPath;
|
|
380
372
|
ctx.entity = entity;
|
|
373
|
+
ctx.entityName = entityId;
|
|
381
374
|
ctx.entityId = `${entity.metadata?.annotations?.['kcp.io/cluster']}/${entityId}`;
|
|
382
375
|
// update the node context of sa node to contain the entity for future context calculations
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
376
|
+
entityNode.context.kcpPath = kcpPath;
|
|
377
|
+
entityNode.context.entity = entity;
|
|
378
|
+
entityNode.context.entityName = ctx.entityName;
|
|
379
|
+
entityNode.context.entityId = ctx.entityId;
|
|
387
380
|
}
|
|
388
381
|
catch (e) {
|
|
389
382
|
console.error(`Not able to read entity ${entityId} from ${operation}`);
|
|
@@ -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/services/crd-gateway-kcp-patch-resolver.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 { CustomGlobalNodesService, I18nService } 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: 'users',\n showBreadcrumbs: false,\n hideSideNav: true,\n hideFromNav: true,\n entityType: 'global',\n children: [\n {\n context: {\n profileUserId: ':profileUserId',\n } as unknown as PortalNodeContext,\n defineEntity: {\n id: 'user',\n contextKey: 'profileUserId',\n },\n pathSegment: ':profileUserId',\n hideSideNav: true,\n hideFromNav: true,\n children: [\n {\n pathSegment: 'overview',\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 { 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 entityId: `${organizationOriginClusterId}/${entityId}`, // if no entity selected the entityId is the same as the organizationId\n };\n } catch (e) {\n console.error(`Failed to read entity ${entityId} from ${operation}`, e);\n }\n return {};\n }\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { PortalLuigiNode } from '../models/luigi-node';\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\n public async resolveCrdGatewayKcpPathForNextAccountEntity(\n entityId: string,\n kind: string,\n nextNode: PortalLuigiNode,\n ) {\n if (kind !== 'Account' || !entityId) {\n return;\n }\n\n let entityKcpPath = `:${entityId}`;\n let node: PortalLuigiNode | undefined = nextNode.parent;\n\n do {\n const entity = node?.context?.entity;\n if (entity?.metadata?.name && entity['__typename'] === 'Account') {\n entityKcpPath = `:${entity.metadata.name}${entityKcpPath}`;\n }\n node = node?.parent;\n } while (node);\n\n const org = (await this.envConfigService.getEnvConfig()).idpName;\n const kcpPath =\n nextNode.context?.kcpPath || `${kcpRootOrgsPath}:${org}${entityKcpPath}`;\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(kcpPath);\n }\n\n public async resolveCrdGatewayKcpPath(nextNode: PortalLuigiNode) {\n let entityKcpPath = '';\n let node: PortalLuigiNode | undefined = nextNode;\n do {\n const entity = node.context?.entity;\n if (entity?.metadata?.name && entity['__typename'] === 'Account') {\n entityKcpPath = `:${entity.metadata.name}${entityKcpPath}`;\n }\n node = node.parent;\n } while (node);\n\n const org = (await this.envConfigService.getEnvConfig()).idpName;\n const kcpPath =\n nextNode.context?.kcpPath || `${kcpRootOrgsPath}:${org}${entityKcpPath}`;\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(kcpPath);\n }\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport {\n LuigiCoreService,\n NodeChangeHookConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class NodeChangeHookConfigServiceImpl\n implements NodeChangeHookConfigService\n{\n private luigiCoreService = inject(LuigiCoreService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\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 }\n}\n","import { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport { NodeContextProcessingService } from '@openmfp/portal-ui-lib';\nimport { ResourceService } from '@platform-mesh/portal-ui-lib/services';\nimport { replaceDotsAndHyphensWithUnderscores } from '@platform-mesh/portal-ui-lib/utils';\nimport { firstValueFrom } from 'rxjs';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NodeContextProcessingServiceImpl\n implements NodeContextProcessingService\n{\n private resourceService = inject(ResourceService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\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 queryPart = entityNode.defineEntity?.graphqlEntity?.query;\n\n if (!entityId || !group || !kind || !queryPart) {\n return;\n }\n\n await this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPathForNextAccountEntity(\n entityId,\n kind,\n entityNode,\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} { ${kind}(name: $name) ${queryPart} }}`;\n if (namespaceId) {\n query = `query ($name: String!, $namespace: String!) { ${operation} { ${kind}(name: $name, namespace: $namespace) ${queryPart} }}`;\n }\n\n try {\n const entity = await firstValueFrom(\n this.resourceService.read(\n entityId,\n operation,\n kind,\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.entity = entity;\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 if (entityNode.context) {\n entityNode.context.entity = entity;\n entityNode.context.entityId = ctx.entityId;\n }\n } catch (e) {\n console.error(`Not able to read entity ${entityId} from ${operation}`);\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: async () => {\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): any {\n return {\n redirectTo: path,\n keepURL: true,\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/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/services/crd-gateway-kcp-patch-resolver.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 { CustomGlobalNodesService, I18nService } 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: '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: {} as PortalNodeContext,\n children: [\n {\n pathSegment: 'overview',\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 { kcpRootOrgsPath } from '../models/constants';\nimport { PortalLuigiNode } from '../models/luigi-node';\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\n public async resolveCrdGatewayKcpPath(\n nextNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n ) {\n if (nextNode.context.kcpPath) {\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(\n nextNode.context.kcpPath,\n );\n return nextNode.context.kcpPath;\n }\n\n let entityKcpPath = kind !== 'Account' || !entityId ? '' : `:${entityId}`;\n let node: PortalLuigiNode | undefined = nextNode;\n do {\n const entity = node?.context?.entity;\n if (entity?.metadata?.name && entity['__typename'] === 'Account') {\n entityKcpPath = `:${entity.metadata.name}${entityKcpPath}`;\n }\n node = node?.parent;\n } while (node);\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.kcpPath) {\n nextNode.context.kcpPath = kcpPath;\n }\n return kcpPath;\n }\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport {\n LuigiCoreService,\n NodeChangeHookConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class NodeChangeHookConfigServiceImpl\n implements NodeChangeHookConfigService\n{\n private luigiCoreService = inject(LuigiCoreService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\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 }\n}\n","import { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport { NodeContextProcessingService } from '@openmfp/portal-ui-lib';\nimport { ResourceService } 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\n implements NodeContextProcessingService\n{\n private resourceService = inject(ResourceService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\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 queryPart = entityNode.defineEntity?.graphqlEntity?.query;\n\n if (!entityId || !group || !kind || !queryPart) {\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} { ${kind}(name: $name) ${queryPart} }}`;\n if (namespaceId) {\n query = `query ($name: String!, $namespace: String!) { ${operation} { ${kind}(name: $name, namespace: $namespace) ${queryPart} }}`;\n }\n\n try {\n const entity = await firstValueFrom(\n this.resourceService.read(\n entityId,\n operation,\n kind,\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.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 } catch (e) {\n console.error(`Not able to read entity ${entityId} from ${operation}`);\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: async () => {\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): any {\n return {\n redirectTo: path,\n keepURL: true,\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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"}
|
|
@@ -19,7 +19,7 @@ class GatewayService {
|
|
|
19
19
|
}
|
|
20
20
|
getGatewayUrl(nodeContext, readFromParentKcpPath = false) {
|
|
21
21
|
const gatewayUrl = nodeContext.portalContext.crdGatewayApiUrl;
|
|
22
|
-
const currentKcpPath =
|
|
22
|
+
const currentKcpPath = gatewayUrl.match(/\/([^\/]+)\/graphql$/)?.[1] || '';
|
|
23
23
|
return gatewayUrl?.replace(currentKcpPath, this.resolveKcpPath(nodeContext, readFromParentKcpPath));
|
|
24
24
|
}
|
|
25
25
|
updateCrdGatewayUrlWithEntityPath(kcpPath) {
|
|
@@ -29,28 +29,18 @@ class GatewayService {
|
|
|
29
29
|
gatewayUrl.replace(kcpPathRegexp, `$1${kcpPath}`);
|
|
30
30
|
}
|
|
31
31
|
resolveKcpPath(nodeContext, readFromParentKcpPath = false) {
|
|
32
|
-
if (nodeContext.kcpPath) {
|
|
33
|
-
return nodeContext.kcpPath;
|
|
34
|
-
}
|
|
35
32
|
const gatewayUrl = nodeContext.portalContext.crdGatewayApiUrl;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return currentKcpPath.slice(0, lastIndex);
|
|
33
|
+
let kcpPath = gatewayUrl.match(/\/([^\/]+)\/graphql$/)?.[1] || '';
|
|
34
|
+
if (nodeContext.kcpPath) {
|
|
35
|
+
kcpPath = nodeContext.kcpPath;
|
|
40
36
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (!currentKcpPath) {
|
|
47
|
-
this.luigiCoreService.showAlert({
|
|
48
|
-
text: 'Could not get current KCP path from gateway URL',
|
|
49
|
-
type: 'error',
|
|
50
|
-
});
|
|
51
|
-
return '';
|
|
37
|
+
if (readFromParentKcpPath) {
|
|
38
|
+
const lastIndex = kcpPath.lastIndexOf(':');
|
|
39
|
+
if (lastIndex !== -1) {
|
|
40
|
+
kcpPath = kcpPath.slice(0, lastIndex);
|
|
41
|
+
}
|
|
52
42
|
}
|
|
53
|
-
return
|
|
43
|
+
return kcpPath;
|
|
54
44
|
}
|
|
55
45
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GatewayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
56
46
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GatewayService, providedIn: 'root' }); }
|
|
@@ -176,7 +166,7 @@ class ResourceService {
|
|
|
176
166
|
return fieldsOrRawQuery;
|
|
177
167
|
}
|
|
178
168
|
}
|
|
179
|
-
list(operation, fieldsOrRawQuery, nodeContext) {
|
|
169
|
+
list(operation, fieldsOrRawQuery, nodeContext, readFromParentKcpPath = false) {
|
|
180
170
|
const isNamespacedResource = this.isNamespacedResource(nodeContext);
|
|
181
171
|
const variables = {
|
|
182
172
|
...(isNamespacedResource && {
|
|
@@ -198,7 +188,7 @@ class ResourceService {
|
|
|
198
188
|
};
|
|
199
189
|
}
|
|
200
190
|
return this.apolloFactory
|
|
201
|
-
.apollo(nodeContext)
|
|
191
|
+
.apollo(nodeContext, readFromParentKcpPath)
|
|
202
192
|
.subscribe({
|
|
203
193
|
query: gql `
|
|
204
194
|
${query.query}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-mesh-portal-ui-lib-services.mjs","sources":["../../projects/lib/services/resource/gateway.service.ts","../../projects/lib/services/resource/apollo-factory.ts","../../projects/lib/services/resource/resource.service.ts","../../projects/lib/services/platform-mesh-portal-ui-lib-services.ts"],"sourcesContent":["import { ResourceNodeContext } from './resource-node-context';\nimport { Injectable, inject } from '@angular/core';\nimport { LuigiCoreService } from '@openmfp/portal-ui-lib';\n\n\n@Injectable({ providedIn: 'root' })\nexport class GatewayService {\n private luigiCoreService = inject(LuigiCoreService);\n\n public getGatewayUrl(\n nodeContext: ResourceNodeContext,\n readFromParentKcpPath = false,\n ) {\n const gatewayUrl = nodeContext.portalContext.crdGatewayApiUrl;\n const currentKcpPath = this.getCurrentKcpPath(gatewayUrl);\n\n return gatewayUrl?.replace(\n currentKcpPath,\n this.resolveKcpPath(nodeContext, readFromParentKcpPath),\n );\n }\n\n public updateCrdGatewayUrlWithEntityPath(kcpPath: string) {\n const gatewayUrl =\n this.luigiCoreService.getGlobalContext().portalContext.crdGatewayApiUrl;\n const kcpPathRegexp = /(.*\\/)[^/]+(?=\\/graphql$)/;\n this.luigiCoreService.getGlobalContext().portalContext.crdGatewayApiUrl =\n gatewayUrl.replace(kcpPathRegexp, `$1${kcpPath}`);\n }\n\n public resolveKcpPath(\n nodeContext: ResourceNodeContext,\n readFromParentKcpPath = false,\n ) {\n if (nodeContext.kcpPath) {\n return nodeContext.kcpPath;\n }\n\n const gatewayUrl = nodeContext.portalContext.crdGatewayApiUrl;\n const currentKcpPath = this.getCurrentKcpPath(gatewayUrl);\n const lastIndex = currentKcpPath.lastIndexOf(':');\n\n if (readFromParentKcpPath && lastIndex !== -1) {\n return currentKcpPath.slice(0, lastIndex);\n }\n\n return currentKcpPath;\n }\n\n private getCurrentKcpPath(gatewayUrl: string): string {\n const kcpPathRegexp = /\\/([^\\/]+)\\/graphql$/;\n const currentKcpPath = gatewayUrl.match(kcpPathRegexp)?.[1];\n\n if (!currentKcpPath) {\n this.luigiCoreService.showAlert({\n text: 'Could not get current KCP path from gateway URL',\n type: 'error',\n });\n\n return '';\n }\n\n return currentKcpPath;\n }\n}\n","import { GatewayService } from './gateway.service';\nimport { ResourceNodeContext } from './resource-node-context';\nimport { Injectable, NgZone, inject } from '@angular/core';\nimport {\n type ApolloClientOptions,\n ApolloLink,\n Observable as ApolloObservable,\n FetchResult,\n InMemoryCache,\n Operation,\n split,\n} from '@apollo/client/core';\nimport { setContext } from '@apollo/client/link/context';\nimport { getMainDefinition } from '@apollo/client/utilities';\nimport { Apollo } from 'apollo-angular';\nimport { HttpLink } from 'apollo-angular/http';\nimport { print } from 'graphql';\nimport { Client, ClientOptions, createClient } from 'graphql-sse';\n\nclass SSELink extends ApolloLink {\n private client: Client;\n\n constructor(options: ClientOptions) {\n super();\n this.client = createClient(options);\n }\n\n public override request(operation: Operation): ApolloObservable<FetchResult> {\n return new ApolloObservable((sink) => {\n return this.client.subscribe(\n { ...operation, query: print(operation.query) },\n {\n next: sink.next.bind(sink),\n complete: sink.complete.bind(sink),\n error: sink.error.bind(sink),\n },\n );\n });\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApolloFactory {\n private httpLink = inject(HttpLink);\n private ngZone = inject(NgZone);\n private gatewayService = inject(GatewayService);\n\n public readonly apollo = (\n nodeContext: ResourceNodeContext,\n readFromParentKcpPath = false,\n ): Apollo =>\n new Apollo(\n this.ngZone,\n this.createApolloOptions(nodeContext, readFromParentKcpPath),\n );\n\n private createApolloOptions(\n nodeContext: ResourceNodeContext,\n readFromParentKcpPath = false,\n ): ApolloClientOptions<any> {\n const contextLink = setContext(() => {\n return {\n uri: () =>\n this.gatewayService.getGatewayUrl(nodeContext, readFromParentKcpPath),\n headers: {\n Authorization: `Bearer ${nodeContext.token}`,\n Accept: 'charset=utf-8',\n },\n };\n });\n\n const splitClient = split(\n ({ query }) => {\n const definition = getMainDefinition(query);\n return (\n definition.kind === 'OperationDefinition' &&\n definition.operation === 'subscription'\n );\n },\n new SSELink({\n url: () =>\n this.gatewayService.getGatewayUrl(nodeContext, readFromParentKcpPath),\n headers: () => ({\n Authorization: `Bearer ${nodeContext.token}`,\n }),\n }),\n this.httpLink.create({}),\n );\n\n const link = ApolloLink.from([contextLink, splitClient]);\n const cache = new InMemoryCache();\n\n return {\n link,\n cache,\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { TypedDocumentNode } from '@apollo/client/core';\nimport { LuigiCoreService } from '@openmfp/portal-ui-lib';\nimport {\n AccountInfo,\n Resource,\n ResourceDefinition,\n} from '@platform-mesh/portal-ui-lib/models';\nimport {\n getValueByPath,\n replaceDotsAndHyphensWithUnderscores,\n stripTypename,\n} from '@platform-mesh/portal-ui-lib/utils';\nimport { gql } from 'apollo-angular';\nimport * as gqlBuilder from 'gql-query-builder';\nimport { EMPTY, Observable } from 'rxjs';\nimport VariableOptions from 'gql-query-builder/build/VariableOptions';\nimport { catchError, map } from 'rxjs/operators';\nimport { ApolloFactory } from './apollo-factory';\nimport { ResourceNodeContext } from './resource-node-context';\n\ninterface ResourceResponseError extends Record<string, any> {\n message: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ResourceService {\n private apolloFactory = inject(ApolloFactory);\n private luigiCoreService = inject(LuigiCoreService);\n\n read(\n resourceId: string,\n operation: string,\n kind: string,\n fieldsOrRawQuery: any[] | string,\n nodeContext: ResourceNodeContext,\n readFromParentKcpPath: boolean = true,\n ): Observable<Resource> {\n const isNamespacedResource = this.isNamespacedResource(nodeContext);\n let query: string | TypedDocumentNode<any, any> = this.resolveReadQuery(\n fieldsOrRawQuery,\n kind,\n resourceId,\n isNamespacedResource ? nodeContext.namespaceId : undefined,\n operation,\n );\n\n try {\n query = gql`\n ${query}\n `;\n } catch (error) {\n this.luigiCoreService.showAlert({\n text: `Could not read a resource: ${resourceId}. Wrong read query: <br/><br/> ${query}`,\n type: 'error',\n });\n return EMPTY;\n }\n\n return this.apolloFactory\n .apollo(nodeContext, readFromParentKcpPath)\n .query({\n query,\n variables: {\n name: resourceId,\n ...(isNamespacedResource && {\n namespace: nodeContext.namespaceId,\n }),\n },\n })\n .pipe(\n map((res) => res.data?.[operation]?.[kind]),\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n private resolveReadQuery(\n fieldsOrRawQuery: any[] | string,\n kind: string,\n resourceId: string,\n namespace: string | undefined,\n operation: string,\n ) {\n if (fieldsOrRawQuery instanceof Array) {\n return (\n gqlBuilder\n .query({\n operation: kind,\n variables: {\n name: { value: resourceId, type: 'String!' },\n ...(namespace && {\n namespace: { value: namespace, type: 'String' },\n }),\n },\n fields: fieldsOrRawQuery,\n })\n .query.replace(kind, `${operation} { ${kind}`)\n .trim() + '}'\n );\n } else {\n return fieldsOrRawQuery;\n }\n }\n\n list(\n operation: string,\n fieldsOrRawQuery: any[] | string,\n nodeContext: ResourceNodeContext,\n ): Observable<Resource[] | any> {\n const isNamespacedResource = this.isNamespacedResource(nodeContext);\n const variables = {\n ...(isNamespacedResource && {\n namespace: { type: 'String', value: nodeContext.namespaceId },\n }),\n };\n\n let query: { variables: any; query: string };\n\n if (fieldsOrRawQuery instanceof Array) {\n query = gqlBuilder.subscription({\n operation,\n fields: fieldsOrRawQuery,\n variables: variables,\n });\n } else {\n query = {\n variables: this.normalizeGqlBuilderVariables(variables),\n query: fieldsOrRawQuery,\n };\n }\n\n return this.apolloFactory\n .apollo(nodeContext)\n .subscribe({\n query: gql`\n ${query.query}\n `,\n variables: query.variables,\n })\n .pipe(\n map(\n (res: any): Resource[] =>\n getValueByPath<any, Resource[]>(res.data, operation) ?? [],\n ),\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n private alertErrors(res: ResourceResponseError) {\n this.luigiCoreService.showAlert({\n text: res.message,\n type: 'error',\n });\n }\n\n delete(\n resource: Resource,\n resourceDefinition: ResourceDefinition,\n nodeContext: ResourceNodeContext,\n ) {\n const group = replaceDotsAndHyphensWithUnderscores(\n resourceDefinition.group,\n );\n const isNamespacedResource = this.isNamespacedResource(nodeContext);\n const kind = resourceDefinition.kind;\n\n const mutation = gqlBuilder.mutation({\n operation: group,\n fields: [\n {\n operation: `delete${kind}`,\n variables: {\n name: { type: 'String!', value: resource.metadata.name },\n ...(isNamespacedResource && {\n namespace: { type: 'String', value: nodeContext.namespaceId },\n }),\n },\n fields: [],\n },\n ],\n });\n\n return this.apolloFactory\n .apollo(nodeContext)\n .mutate<void>({\n mutation: gql`\n ${mutation.query}\n `,\n variables: mutation.variables,\n })\n .pipe(\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n create(\n resource: Resource,\n resourceDefinition: ResourceDefinition,\n nodeContext: ResourceNodeContext,\n ) {\n const isNamespacedResource = this.isNamespacedResource(nodeContext);\n const group = replaceDotsAndHyphensWithUnderscores(\n resourceDefinition.group,\n );\n const kind = resourceDefinition.kind;\n const namespace = nodeContext.namespaceId;\n\n const mutation = gqlBuilder.mutation({\n operation: group,\n fields: [\n {\n operation: `create${kind}`,\n variables: {\n ...(isNamespacedResource && {\n namespace: { type: 'String', value: namespace },\n }),\n object: { type: `${kind}Input!`, value: resource },\n },\n fields: ['__typename'],\n },\n ],\n });\n\n return this.apolloFactory\n .apollo(nodeContext)\n .mutate({\n mutation: gql`\n ${mutation.query}\n `,\n fetchPolicy: 'no-cache',\n variables: mutation.variables,\n })\n .pipe(\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n update(\n resource: Resource,\n resourceDefinition: ResourceDefinition,\n nodeContext: ResourceNodeContext,\n ) {\n const isNamespacedResource = this.isNamespacedResource(nodeContext);\n const group = replaceDotsAndHyphensWithUnderscores(\n resourceDefinition.group,\n );\n const kind = resourceDefinition.kind;\n const namespace = nodeContext.namespaceId;\n\n const cleanResource = stripTypename(resource);\n\n const mutation = gqlBuilder.mutation({\n operation: group,\n fields: [\n {\n operation: `update${kind}`,\n variables: {\n ...(isNamespacedResource && {\n namespace: { type: 'String', value: namespace },\n }),\n name: { type: 'String!', value: resource.metadata.name },\n object: {\n type: `${kind}Input!`,\n value: cleanResource,\n },\n },\n fields: ['__typename'],\n },\n ],\n });\n\n return this.apolloFactory\n .apollo(nodeContext)\n .mutate({\n mutation: gql`\n ${mutation.query}\n `,\n fetchPolicy: 'no-cache',\n variables: mutation.variables,\n })\n .pipe(\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n readAccountInfo(nodeContext: ResourceNodeContext): Observable<AccountInfo> {\n return this.apolloFactory\n .apollo(nodeContext)\n .query<string>({\n query: gql`\n {\n core_platform_mesh_io {\n AccountInfo(name: \"account\") {\n metadata {\n name\n annotations\n }\n spec {\n clusterInfo {\n ca\n }\n organization {\n originClusterId\n }\n }\n }\n }\n }\n `,\n })\n .pipe(\n map((res: any) => {\n return res.data.core_platform_mesh_io.AccountInfo;\n }),\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n private isNamespacedResource(nodeContext: ResourceNodeContext) {\n return nodeContext?.resourceDefinition?.scope === 'Namespaced';\n }\n\n private normalizeGqlBuilderVariables(\n variables: VariableOptions,\n ): Record<string, any> {\n return Object.fromEntries(\n Object.entries(variables).map(([key, value]) => [key, value.value]),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ApolloObservable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform-mesh-portal-ui-lib-services.mjs","sources":["../../projects/lib/services/resource/gateway.service.ts","../../projects/lib/services/resource/apollo-factory.ts","../../projects/lib/services/resource/resource.service.ts","../../projects/lib/services/platform-mesh-portal-ui-lib-services.ts"],"sourcesContent":["import { ResourceNodeContext } from './resource-node-context';\nimport { Injectable, inject } from '@angular/core';\nimport { LuigiCoreService } from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class GatewayService {\n private luigiCoreService = inject(LuigiCoreService);\n\n public getGatewayUrl(\n nodeContext: ResourceNodeContext,\n readFromParentKcpPath = false,\n ) {\n const gatewayUrl = nodeContext.portalContext.crdGatewayApiUrl;\n const currentKcpPath = gatewayUrl.match(/\\/([^\\/]+)\\/graphql$/)?.[1] || '';\n return gatewayUrl?.replace(\n currentKcpPath,\n this.resolveKcpPath(nodeContext, readFromParentKcpPath),\n );\n }\n\n public updateCrdGatewayUrlWithEntityPath(kcpPath: string) {\n const gatewayUrl =\n this.luigiCoreService.getGlobalContext().portalContext.crdGatewayApiUrl;\n const kcpPathRegexp = /(.*\\/)[^/]+(?=\\/graphql$)/;\n this.luigiCoreService.getGlobalContext().portalContext.crdGatewayApiUrl =\n gatewayUrl.replace(kcpPathRegexp, `$1${kcpPath}`);\n }\n\n public resolveKcpPath(\n nodeContext: ResourceNodeContext,\n readFromParentKcpPath = false,\n ): string {\n const gatewayUrl = nodeContext.portalContext.crdGatewayApiUrl;\n\n let kcpPath = gatewayUrl.match(/\\/([^\\/]+)\\/graphql$/)?.[1] || '';\n if (nodeContext.kcpPath) {\n kcpPath = nodeContext.kcpPath;\n }\n\n if (readFromParentKcpPath) {\n const lastIndex = kcpPath.lastIndexOf(':');\n if (lastIndex !== -1) {\n kcpPath = kcpPath.slice(0, lastIndex);\n }\n }\n\n return kcpPath;\n }\n}\n","import { GatewayService } from './gateway.service';\nimport { ResourceNodeContext } from './resource-node-context';\nimport { Injectable, NgZone, inject } from '@angular/core';\nimport {\n type ApolloClientOptions,\n ApolloLink,\n Observable as ApolloObservable,\n FetchResult,\n InMemoryCache,\n Operation,\n split,\n} from '@apollo/client/core';\nimport { setContext } from '@apollo/client/link/context';\nimport { getMainDefinition } from '@apollo/client/utilities';\nimport { Apollo } from 'apollo-angular';\nimport { HttpLink } from 'apollo-angular/http';\nimport { print } from 'graphql';\nimport { Client, ClientOptions, createClient } from 'graphql-sse';\n\nclass SSELink extends ApolloLink {\n private client: Client;\n\n constructor(options: ClientOptions) {\n super();\n this.client = createClient(options);\n }\n\n public override request(operation: Operation): ApolloObservable<FetchResult> {\n return new ApolloObservable((sink) => {\n return this.client.subscribe(\n { ...operation, query: print(operation.query) },\n {\n next: sink.next.bind(sink),\n complete: sink.complete.bind(sink),\n error: sink.error.bind(sink),\n },\n );\n });\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApolloFactory {\n private httpLink = inject(HttpLink);\n private ngZone = inject(NgZone);\n private gatewayService = inject(GatewayService);\n\n public readonly apollo = (\n nodeContext: ResourceNodeContext,\n readFromParentKcpPath = false,\n ): Apollo =>\n new Apollo(\n this.ngZone,\n this.createApolloOptions(nodeContext, readFromParentKcpPath),\n );\n\n private createApolloOptions(\n nodeContext: ResourceNodeContext,\n readFromParentKcpPath = false,\n ): ApolloClientOptions<any> {\n const contextLink = setContext(() => {\n return {\n uri: () =>\n this.gatewayService.getGatewayUrl(nodeContext, readFromParentKcpPath),\n headers: {\n Authorization: `Bearer ${nodeContext.token}`,\n Accept: 'charset=utf-8',\n },\n };\n });\n\n const splitClient = split(\n ({ query }) => {\n const definition = getMainDefinition(query);\n return (\n definition.kind === 'OperationDefinition' &&\n definition.operation === 'subscription'\n );\n },\n new SSELink({\n url: () =>\n this.gatewayService.getGatewayUrl(nodeContext, readFromParentKcpPath),\n headers: () => ({\n Authorization: `Bearer ${nodeContext.token}`,\n }),\n }),\n this.httpLink.create({}),\n );\n\n const link = ApolloLink.from([contextLink, splitClient]);\n const cache = new InMemoryCache();\n\n return {\n link,\n cache,\n };\n }\n}\n","import { ApolloFactory } from './apollo-factory';\nimport { ResourceNodeContext } from './resource-node-context';\nimport { Injectable, inject } from '@angular/core';\nimport { TypedDocumentNode } from '@apollo/client/core';\nimport { LuigiCoreService } from '@openmfp/portal-ui-lib';\nimport {\n AccountInfo,\n Resource,\n ResourceDefinition,\n} from '@platform-mesh/portal-ui-lib/models';\nimport {\n getValueByPath,\n replaceDotsAndHyphensWithUnderscores,\n stripTypename,\n} from '@platform-mesh/portal-ui-lib/utils';\nimport { gql } from 'apollo-angular';\nimport * as gqlBuilder from 'gql-query-builder';\nimport { EMPTY, Observable } from 'rxjs';\nimport VariableOptions from 'gql-query-builder/build/VariableOptions';\nimport { catchError, map } from 'rxjs/operators';\n\ninterface ResourceResponseError extends Record<string, any> {\n message: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ResourceService {\n private apolloFactory = inject(ApolloFactory);\n private luigiCoreService = inject(LuigiCoreService);\n\n read(\n resourceId: string,\n operation: string,\n kind: string,\n fieldsOrRawQuery: any[] | string,\n nodeContext: ResourceNodeContext,\n readFromParentKcpPath: boolean = true,\n ): Observable<Resource> {\n const isNamespacedResource = this.isNamespacedResource(nodeContext);\n let query: string | TypedDocumentNode<any, any> = this.resolveReadQuery(\n fieldsOrRawQuery,\n kind,\n resourceId,\n isNamespacedResource ? nodeContext.namespaceId : undefined,\n operation,\n );\n\n try {\n query = gql`\n ${query}\n `;\n } catch (error) {\n this.luigiCoreService.showAlert({\n text: `Could not read a resource: ${resourceId}. Wrong read query: <br/><br/> ${query}`,\n type: 'error',\n });\n return EMPTY;\n }\n\n return this.apolloFactory\n .apollo(nodeContext, readFromParentKcpPath)\n .query({\n query,\n variables: {\n name: resourceId,\n ...(isNamespacedResource && {\n namespace: nodeContext.namespaceId,\n }),\n },\n })\n .pipe(\n map((res) => res.data?.[operation]?.[kind]),\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n private resolveReadQuery(\n fieldsOrRawQuery: any[] | string,\n kind: string,\n resourceId: string,\n namespace: string | undefined,\n operation: string,\n ) {\n if (fieldsOrRawQuery instanceof Array) {\n return (\n gqlBuilder\n .query({\n operation: kind,\n variables: {\n name: { value: resourceId, type: 'String!' },\n ...(namespace && {\n namespace: { value: namespace, type: 'String' },\n }),\n },\n fields: fieldsOrRawQuery,\n })\n .query.replace(kind, `${operation} { ${kind}`)\n .trim() + '}'\n );\n } else {\n return fieldsOrRawQuery;\n }\n }\n\n list(\n operation: string,\n fieldsOrRawQuery: any[] | string,\n nodeContext: ResourceNodeContext,\n readFromParentKcpPath: boolean = false,\n ): Observable<Resource[] | any> {\n const isNamespacedResource = this.isNamespacedResource(nodeContext);\n const variables = {\n ...(isNamespacedResource && {\n namespace: { type: 'String', value: nodeContext.namespaceId },\n }),\n };\n\n let query: { variables: any; query: string };\n\n if (fieldsOrRawQuery instanceof Array) {\n query = gqlBuilder.subscription({\n operation,\n fields: fieldsOrRawQuery,\n variables: variables,\n });\n } else {\n query = {\n variables: this.normalizeGqlBuilderVariables(variables),\n query: fieldsOrRawQuery,\n };\n }\n\n return this.apolloFactory\n .apollo(nodeContext, readFromParentKcpPath)\n .subscribe({\n query: gql`\n ${query.query}\n `,\n variables: query.variables,\n })\n .pipe(\n map(\n (res: any): Resource[] =>\n getValueByPath<any, Resource[]>(res.data, operation) ?? [],\n ),\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n private alertErrors(res: ResourceResponseError) {\n this.luigiCoreService.showAlert({\n text: res.message,\n type: 'error',\n });\n }\n\n delete(\n resource: Resource,\n resourceDefinition: ResourceDefinition,\n nodeContext: ResourceNodeContext,\n ) {\n const group = replaceDotsAndHyphensWithUnderscores(\n resourceDefinition.group,\n );\n const isNamespacedResource = this.isNamespacedResource(nodeContext);\n const kind = resourceDefinition.kind;\n\n const mutation = gqlBuilder.mutation({\n operation: group,\n fields: [\n {\n operation: `delete${kind}`,\n variables: {\n name: { type: 'String!', value: resource.metadata.name },\n ...(isNamespacedResource && {\n namespace: { type: 'String', value: nodeContext.namespaceId },\n }),\n },\n fields: [],\n },\n ],\n });\n\n return this.apolloFactory\n .apollo(nodeContext)\n .mutate<void>({\n mutation: gql`\n ${mutation.query}\n `,\n variables: mutation.variables,\n })\n .pipe(\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n create(\n resource: Resource,\n resourceDefinition: ResourceDefinition,\n nodeContext: ResourceNodeContext,\n ) {\n const isNamespacedResource = this.isNamespacedResource(nodeContext);\n const group = replaceDotsAndHyphensWithUnderscores(\n resourceDefinition.group,\n );\n const kind = resourceDefinition.kind;\n const namespace = nodeContext.namespaceId;\n\n const mutation = gqlBuilder.mutation({\n operation: group,\n fields: [\n {\n operation: `create${kind}`,\n variables: {\n ...(isNamespacedResource && {\n namespace: { type: 'String', value: namespace },\n }),\n object: { type: `${kind}Input!`, value: resource },\n },\n fields: ['__typename'],\n },\n ],\n });\n\n return this.apolloFactory\n .apollo(nodeContext)\n .mutate({\n mutation: gql`\n ${mutation.query}\n `,\n fetchPolicy: 'no-cache',\n variables: mutation.variables,\n })\n .pipe(\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n update(\n resource: Resource,\n resourceDefinition: ResourceDefinition,\n nodeContext: ResourceNodeContext,\n ) {\n const isNamespacedResource = this.isNamespacedResource(nodeContext);\n const group = replaceDotsAndHyphensWithUnderscores(\n resourceDefinition.group,\n );\n const kind = resourceDefinition.kind;\n const namespace = nodeContext.namespaceId;\n\n const cleanResource = stripTypename(resource);\n\n const mutation = gqlBuilder.mutation({\n operation: group,\n fields: [\n {\n operation: `update${kind}`,\n variables: {\n ...(isNamespacedResource && {\n namespace: { type: 'String', value: namespace },\n }),\n name: { type: 'String!', value: resource.metadata.name },\n object: {\n type: `${kind}Input!`,\n value: cleanResource,\n },\n },\n fields: ['__typename'],\n },\n ],\n });\n\n return this.apolloFactory\n .apollo(nodeContext)\n .mutate({\n mutation: gql`\n ${mutation.query}\n `,\n fetchPolicy: 'no-cache',\n variables: mutation.variables,\n })\n .pipe(\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n readAccountInfo(nodeContext: ResourceNodeContext): Observable<AccountInfo> {\n return this.apolloFactory\n .apollo(nodeContext)\n .query<string>({\n query: gql`\n {\n core_platform_mesh_io {\n AccountInfo(name: \"account\") {\n metadata {\n name\n annotations\n }\n spec {\n clusterInfo {\n ca\n }\n organization {\n originClusterId\n }\n }\n }\n }\n }\n `,\n })\n .pipe(\n map((res: any) => {\n return res.data.core_platform_mesh_io.AccountInfo;\n }),\n catchError((error) => {\n this.alertErrors(error);\n console.error('Error executing GraphQL query.', error);\n return error;\n }),\n );\n }\n\n private isNamespacedResource(nodeContext: ResourceNodeContext) {\n return nodeContext?.resourceDefinition?.scope === 'Namespaced';\n }\n\n private normalizeGqlBuilderVariables(\n variables: VariableOptions,\n ): Record<string, any> {\n return Object.fromEntries(\n Object.entries(variables).map(([key, value]) => [key, value.value]),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ApolloObservable"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platform-mesh/portal-ui-lib",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.13",
|
|
4
4
|
"repository": {
|
|
5
5
|
"url": "git+https://github.com/platform-mesh/portal-ui-lib.git"
|
|
6
6
|
},
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"tslib": "2.8.1"
|
|
12
12
|
},
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"@openmfp/portal-ui-lib": "0.
|
|
14
|
+
"@openmfp/portal-ui-lib": "0.183.0",
|
|
15
15
|
"@angular/common": "20.3.9",
|
|
16
16
|
"@angular/compiler": "20.3.9",
|
|
17
17
|
"@angular/core": "20.3.9",
|
|
@@ -16,12 +16,13 @@ interface PortalNodeContext extends NodeContext {
|
|
|
16
16
|
translationTable?: any;
|
|
17
17
|
namespaceId?: string;
|
|
18
18
|
entity?: Resource;
|
|
19
|
+
entityName?: string;
|
|
19
20
|
entityId?: string;
|
|
20
21
|
entityContext?: PortalEntityContext;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
interface PortalLuigiNode extends LuigiNode {
|
|
24
|
-
context
|
|
25
|
+
context: PortalNodeContext;
|
|
25
26
|
parent?: PortalLuigiNode;
|
|
26
27
|
}
|
|
27
28
|
|
package/services/index.d.ts
CHANGED
|
@@ -36,8 +36,7 @@ declare class GatewayService {
|
|
|
36
36
|
private luigiCoreService;
|
|
37
37
|
getGatewayUrl(nodeContext: ResourceNodeContext, readFromParentKcpPath?: boolean): string;
|
|
38
38
|
updateCrdGatewayUrlWithEntityPath(kcpPath: string): void;
|
|
39
|
-
resolveKcpPath(nodeContext: ResourceNodeContext, readFromParentKcpPath?: boolean):
|
|
40
|
-
private getCurrentKcpPath;
|
|
39
|
+
resolveKcpPath(nodeContext: ResourceNodeContext, readFromParentKcpPath?: boolean): string;
|
|
41
40
|
static ɵfac: i0.ɵɵFactoryDeclaration<GatewayService, never>;
|
|
42
41
|
static ɵprov: i0.ɵɵInjectableDeclaration<GatewayService>;
|
|
43
42
|
}
|
|
@@ -47,7 +46,7 @@ declare class ResourceService {
|
|
|
47
46
|
private luigiCoreService;
|
|
48
47
|
read(resourceId: string, operation: string, kind: string, fieldsOrRawQuery: any[] | string, nodeContext: ResourceNodeContext, readFromParentKcpPath?: boolean): Observable<Resource>;
|
|
49
48
|
private resolveReadQuery;
|
|
50
|
-
list(operation: string, fieldsOrRawQuery: any[] | string, nodeContext: ResourceNodeContext): Observable<Resource[] | any>;
|
|
49
|
+
list(operation: string, fieldsOrRawQuery: any[] | string, nodeContext: ResourceNodeContext, readFromParentKcpPath?: boolean): Observable<Resource[] | any>;
|
|
51
50
|
private alertErrors;
|
|
52
51
|
delete(resource: Resource, resourceDefinition: ResourceDefinition, nodeContext: ResourceNodeContext): Observable<unknown>;
|
|
53
52
|
create(resource: Resource, resourceDefinition: ResourceDefinition, nodeContext: ResourceNodeContext): Observable<unknown>;
|