@acorex/modules 21.0.0-next.31 → 21.0.0-next.34
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/fesm2022/{acorex-modules-ai-management-acorex-modules-ai-management-B6lnG21F.mjs → acorex-modules-ai-management-acorex-modules-ai-management-WuqoH4OL.mjs} +10 -11
- package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-WuqoH4OL.mjs.map +1 -0
- package/fesm2022/{acorex-modules-ai-management-agent.entity-C2APPc7g.mjs → acorex-modules-ai-management-agent.entity-DK9GNMdR.mjs} +2 -2
- package/fesm2022/{acorex-modules-ai-management-agent.entity-C2APPc7g.mjs.map → acorex-modules-ai-management-agent.entity-DK9GNMdR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-D_54-MqC.mjs → acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-CWXEW9yL.mjs} +2 -2
- package/fesm2022/{acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-D_54-MqC.mjs.map → acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-CWXEW9yL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-pG9y9bqO.mjs → acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-CNKwIqUE.mjs} +6 -4
- package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-CNKwIqUE.mjs.map +1 -0
- package/fesm2022/{acorex-modules-ai-management-assist.entity-D7sIFWTx.mjs → acorex-modules-ai-management-assist.entity-DX2U9sd5.mjs} +2 -2
- package/fesm2022/{acorex-modules-ai-management-assist.entity-D7sIFWTx.mjs.map → acorex-modules-ai-management-assist.entity-DX2U9sd5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-ai-management-index-DoOTRMvM.mjs → acorex-modules-ai-management-index-KX3TVRXr.mjs} +2 -2
- package/fesm2022/{acorex-modules-ai-management-index-DoOTRMvM.mjs.map → acorex-modules-ai-management-index-KX3TVRXr.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-ai-management-model.entity-xhfG1tFZ.mjs → acorex-modules-ai-management-model.entity-BeuDUahR.mjs} +2 -2
- package/fesm2022/{acorex-modules-ai-management-model.entity-xhfG1tFZ.mjs.map → acorex-modules-ai-management-model.entity-BeuDUahR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-Bot8Ctq1.mjs → acorex-modules-ai-management-open-ai-endpoint.entity-D-9unl6i.mjs} +2 -2
- package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-Bot8Ctq1.mjs.map → acorex-modules-ai-management-open-ai-endpoint.entity-D-9unl6i.mjs.map} +1 -1
- package/fesm2022/acorex-modules-ai-management.mjs +1 -1
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-D1DhOSYU.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-BNK6C-Ng.mjs} +25 -25
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-D1DhOSYU.mjs.map → acorex-modules-assessment-management-acorex-modules-assessment-management-BNK6C-Ng.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-BwwarDP0.mjs → acorex-modules-assessment-management-assessment-case.entity-Ds8pRzvE.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-BwwarDP0.mjs.map → acorex-modules-assessment-management-assessment-case.entity-Ds8pRzvE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-CQNn4Ryb.mjs → acorex-modules-assessment-management-assessment-session.entity-tq1Q4wkS.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-CQNn4Ryb.mjs.map → acorex-modules-assessment-management-assessment-session.entity-tq1Q4wkS.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-AptlLpWh.mjs → acorex-modules-assessment-management-fill-assessment-session.command-yf0PnWC0.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-AptlLpWh.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-yf0PnWC0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-index-BBzx9W5u.mjs → acorex-modules-assessment-management-index-B2SncZAW.mjs} +6 -6
- package/fesm2022/acorex-modules-assessment-management-index-B2SncZAW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-BMoPn_op.mjs → acorex-modules-assessment-management-preview-question.command-DPzL8C44.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-BMoPn_op.mjs.map → acorex-modules-assessment-management-preview-question.command-DPzL8C44.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BI7JJIbZ.mjs → acorex-modules-assessment-management-preview-questionnaire.command-BrI5gFtx.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BI7JJIbZ.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-BrI5gFtx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BfWuSVG9.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-XD5IJpvW.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BfWuSVG9.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-XD5IJpvW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CcDAcPJJ.mjs → acorex-modules-assessment-management-question-bank-item.entity-CZ32sQ9M.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CcDAcPJJ.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-CZ32sQ9M.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-DC7xwETF.mjs → acorex-modules-assessment-management-questionnaire-calculation.entity-C7gf4s1y.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-DC7xwETF.mjs.map → acorex-modules-assessment-management-questionnaire-calculation.entity-C7gf4s1y.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DF7F-quh.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-BZyIlYWg.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DF7F-quh.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-BZyIlYWg.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-zybar1sK.mjs → acorex-modules-assessment-management-questionnaire.entity-CmmThk2f.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-zybar1sK.mjs.map → acorex-modules-assessment-management-questionnaire.entity-CmmThk2f.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-DqJ-_k-4.mjs → acorex-modules-assessment-management-save-questionnaire-questions.command-GLqvK8wB.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-DqJ-_k-4.mjs.map → acorex-modules-assessment-management-save-questionnaire-questions.command-GLqvK8wB.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-IHxXETJQ.mjs → acorex-modules-assessment-management-view-session-answers.command-CU1TVonZ.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-IHxXETJQ.mjs.map → acorex-modules-assessment-management-view-session-answers.command-CU1TVonZ.mjs.map} +1 -1
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +4366 -3497
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +3 -2
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-eRTHzLDQ.mjs +784 -0
- package/fesm2022/acorex-modules-organization-management-org-chart.page-eRTHzLDQ.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +3 -9
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management.mjs +488 -105
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/package.json +2 -2
- package/types/acorex-modules-dashboard-management.d.ts +397 -218
- package/types/acorex-modules-organization-management.d.ts +3 -12
- package/types/acorex-modules-workflow-management.d.ts +27 -0
- package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-B6lnG21F.mjs.map +0 -1
- package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-pG9y9bqO.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-index-BBzx9W5u.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-E0hy7dXg.mjs +0 -638
- package/fesm2022/acorex-modules-organization-management-org-chart.page-E0hy7dXg.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-organization-management-org-chart.page-E0hy7dXg.mjs","sources":["../../../../libs/modules/organization-management/src/lib/features/organization-chart/org-chart.service.ts","../../../../libs/modules/organization-management/src/lib/features/organization-chart/org-chart.page.ts","../../../../libs/modules/organization-management/src/lib/features/organization-chart/org-chart.page.html"],"sourcesContent":["import { AXStyleColorType } from '@acorex/cdk/common';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPExportService } from '@acorex/platform/common';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\n\nimport { AXPDataGenerator, createMultiLanguageString } from '@acorex/platform/core';\nimport { inject, Injectable, signal } from '@angular/core';\n\nimport { AXMOrganizationNode } from './org-chart.type';\nimport { AXMOrganizationManagementChartEntityService } from '../../entities';\n\nexport type OrgChartMode = 'location' | 'structure' | 'reporting';\n\nexport type OrgChartGenerateInput = {\n mode?: OrgChartMode;\n includeEmployees?: boolean;\n preferPrimary?: boolean;\n};\n\nexport interface OrgChartDialogResult {\n cancelled: boolean;\n input?: OrgChartGenerateInput;\n}\n\n@Injectable()\nexport class AXMOrgChartService {\n\n // Employee moved to HCM; resolve via runtime query mapping instead of direct service\n private chartService = inject(AXMOrganizationManagementChartEntityService);\n\n private loadingDialog = inject(AXLoadingDialogService);\n private exportService = inject(AXPExportService);\n private translationService = inject(AXTranslationService);\n private commandService = inject(AXPCommandService);\n private layoutBuilder = inject(AXPLayoutBuilderService);\n\n\n private readonly _rootNode = signal<AXMOrganizationNode>({\n id: AXPDataGenerator.uuid(),\n /** Until `load()`; keep in sync with `organization-management.organization-chart.nodes.company`. */\n title: createMultiLanguageString('Company', 'شرکت'),\n });\n\n public readonly rootNode = this._rootNode.asReadonly();\n\n\n public async load(): Promise<void> {\n const first = (\n await this.chartService.query({\n skip: 0,\n take: 1,\n sort: [{ field: 'version', dir: 'desc' }],\n })\n ).items[0];\n //\n if (first && first.data) {\n const data = first.data as AXMOrganizationNode;\n this._rootNode.set(data);\n } else {\n await this.generate();\n await this.load();\n }\n }\n\n public async generate(): Promise<void> {\n const dialogResult = await this.showGenerateDialog();\n\n if (dialogResult.cancelled) {\n return;\n }\n\n const input = dialogResult.input || {\n includeEmployees: true,\n preferPrimary: true,\n mode: 'structure',\n } as OrgChartGenerateInput;\n\n // Prefer generating a fresh chart via mock command when available\n await this.commandService.execute('OrganizationManagement.OrgChart:Generate', input);\n }\n\n /**\n * Show dialog to get OrgChart generation parameters from user\n */\n private async showGenerateDialog(): Promise<OrgChartDialogResult> {\n const modeLabel = await this.translationService.translateAsync('@organization-management:organization-chart.components.generate-dialog.fields.mode.label');\n const includeEmployeesLabel = await this.translationService.translateAsync('@organization-management:organization-chart.components.generate-dialog.fields.include-employees.label');\n const preferPrimaryLabel = await this.translationService.translateAsync('@organization-management:organization-chart.components.generate-dialog.fields.prefer-primary.label');\n\n return this.layoutBuilder\n .create()\n .dialog<OrgChartDialogResult>(dialog => {\n dialog\n .setTitle('@organization-management:organization-chart.components.generate-dialog.title')\n .setMessage('@organization-management:organization-chart.components.generate-dialog.message')\n .setContext({\n mode: 'structure' as OrgChartMode,\n includeEmployees: true,\n preferPrimary: false\n })\n .content(flex => {\n flex.formField(modeLabel, (field) => {\n field.path('mode');\n field.selectionList({\n valueField: 'value',\n textField: 'text',\n dataSource: [\n { value: 'structure', text: '@organization-management:organization-chart.options.mode.structure' },\n { value: 'location', text: '@organization-management:organization-chart.options.mode.location' },\n { value: 'reporting', text: '@organization-management:organization-chart.options.mode.reporting' }\n ]\n });\n })\n .formField(includeEmployeesLabel, (field) => {\n field.path('includeEmployees');\n field.toggleSwitch();\n })\n .formField(preferPrimaryLabel, (field) => {\n field.path('preferPrimary');\n field.toggleSwitch();\n });\n })\n .setActions(actions => {\n actions\n .cancel()\n .submit('@general:generate');\n })\n .onAction(async (dialogRef) => {\n const context = dialogRef.context();\n const action = dialogRef.action();\n\n if (!context || action === 'cancel') {\n return { cancelled: true };\n }\n\n // dialogRef.setLoading(true);\n // await new Promise((r) => setTimeout(r, 800));\n // dialogRef.setLoading(false);\n\n // if (1 == 1) {\n // throw new Error('test');\n // }\n\n return {\n cancelled: false,\n input: context as OrgChartGenerateInput\n };\n });\n })\n .show();\n }\n\n //#region ---- Printing ----\n\n async printChart(element: HTMLElement): Promise<void> {\n const d = this.loadingDialog.show({\n title: 'Printing Organization Chart...',\n mode: 'determinate',\n progressColor: 'primary',\n progressValue: 0,\n status: '0/10',\n text: 'Initializing print process...',\n buttons: [\n { text: 'Cancel', color: 'danger', onClick: () => d.close() }\n ],\n });\n\n try {\n await this.updateStep(d, await this.translate('@organization-management:organization-chart.states.preparing-document'), 10, '1/10');\n const chartElement = element;\n const { originalStyles, modifiedStyles } = this.expandChart(chartElement);\n\n await this.updateStep(d, await this.translate('@organization-management:organization-chart.states.rendering-chart-image'), 25, '2.5/10');\n const blob = await this.exportService.generateBlobFromElement(chartElement, {\n popup: true,\n filter: (node: Node) => !(node instanceof Element && node.classList.contains('--toggle')),\n bgcolor: 'transparent',\n scale: 2,\n quality: 1,\n height: Number.parseInt(modifiedStyles.modifiedHeight),\n width: Number.parseInt(modifiedStyles.modifiedWidth),\n });\n\n await this.updateStep(d, await this.translate('@organization-management:organization-chart.states.finalizing-image-processing'), 50, '5/10');\n this.restoreChartStyles(chartElement, originalStyles);\n\n await this.updateStep(d, await this.translate('@organization-management:organization-chart.states.downloading-image'), 75, '7.5/10');\n this.exportService.download(blob, 'org-chart.png');\n\n await this.updateStep(d, await this.translate('@organization-management:organization-chart.states.process-complete'), 100, '10/10');\n setTimeout(() => d.close(), 1500);\n } catch (err) {\n console.error('Error capturing chart:', err);\n await this.updateStep(d, await this.translate('@organization-management:organization-chart.states.failed-to-generate-chart-image'), 100, 'Error', 'danger');\n d.close();\n }\n }\n\n private expandChart(chartElement: HTMLElement) {\n const originalStyles = {\n originalOverflow: chartElement.style.overflow,\n originalWidth: chartElement.style.width,\n originalHeight: chartElement.style.height,\n };\n const modifiedStyles = {\n modifiedOverflow: 'visible',\n modifiedWidth: `${chartElement.scrollWidth}px`,\n modifiedHeight: `${chartElement.scrollHeight}px`,\n };\n chartElement.style.overflow = modifiedStyles.modifiedOverflow;\n chartElement.style.width = modifiedStyles.modifiedWidth;\n chartElement.style.height = modifiedStyles.modifiedHeight;\n return { originalStyles, modifiedStyles };\n }\n\n private restoreChartStyles(\n chartElement: HTMLElement,\n originalStyles: { originalOverflow: string; originalWidth: string; originalHeight: string },\n ): void {\n chartElement.style.overflow = originalStyles.originalOverflow;\n chartElement.style.width = originalStyles.originalWidth;\n chartElement.style.height = originalStyles.originalHeight;\n }\n\n private async updateStep(\n dialog: any,\n text: string,\n progress: number,\n status: string,\n color: AXStyleColorType = 'primary',\n ): Promise<void> {\n return new Promise((resolve) => {\n dialog.setProgressColor(color);\n dialog.setProgressText(text);\n dialog.setProgressValue(progress);\n dialog.setProgressStatus(status);\n resolve();\n });\n }\n\n private async translate(key: string): Promise<string> {\n return (await this.translationService.translateAsync(key)) + '...';\n }\n\n //#endregion\n\n}\n","import { AXPanViewDirective } from '@acorex/cdk/pan-view';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport {\n AXContextMenuComponent,\n AXContextMenuItemsClickEvent,\n AXContextMenuOpeningEvent,\n AXMenuModule,\n} from '@acorex/components/menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n NgZone,\n signal,\n TemplateRef,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport get from 'lodash-es/get';\nimport set from 'lodash-es/set';\nimport { RootConfig } from '../../const';\nimport { AXMOrgChartService } from './org-chart.service';\nimport { AXMOrganizationNode, AXMOrgChartCategory, AXMOrgChartNodeType } from './org-chart.type';\nimport {\n AXPActionMenuItem,\n AXPBreadcrumbItem,\n AXPExecuteCommand,\n AXPResolveMultiLanguageStringPipe,\n createMultiLanguageString,\n getActionButton,\n resolveActionLook,\n} from '@acorex/platform/core';\n/**\n * Component for displaying and interacting with an organizational chart.\n */\n@Component({\n templateUrl: './org-chart.page.html',\n styleUrls: ['./org-chart.page.scss'],\n imports: [\n CommonModule,\n RouterModule,\n //\n AXMenuModule,\n AXButtonModule,\n AXDropdownButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXPanViewDirective,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n //\n AXPThemeLayoutBlockComponent,\n AXPPageLayoutComponent,\n AXPResolveMultiLanguageStringPipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n AXMOrgChartService,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMOrgChartPage\n }\n ],\n})\nexport class AXMOrgChartPage extends AXPPageLayoutBaseComponent {\n protected readonly rootConfig = RootConfig;\n\n private d3!: typeof import('d3');\n\n private nodeTemplate = viewChild.required<TemplateRef<any>>('nodeTemplate');\n private treeContainer = viewChild.required<ElementRef<HTMLDivElement>>('chart');\n private parent = viewChild.required<ElementRef<HTMLDivElement>>('parent');\n private contextMenu = viewChild(AXContextMenuComponent);\n private panView = viewChild(AXPanViewDirective);\n\n private ngzone = inject(NgZone);\n private viewContainerRef = inject(ViewContainerRef);\n // printing is handled by service itself\n private chartService = inject(AXMOrgChartService);\n\n private readonly NODE_STROKE_COLOR = 'rgba(var(--ax-sys-color-primary-400))';\n private readonly LINK_STROKE_WIDTH = 1;\n\n protected readonly NodeTypes = AXMOrgChartNodeType;\n\n protected isFullscreen = signal(false);\n protected panX = signal(0);\n protected panY = signal(0);\n protected panZoomLevel = signal(100);\n\n protected isChartRendered = false;\n\n protected nodeTypes = [\n { title: 'Company', color: 'primary', icon: 'fal fa-building', category: AXMOrgChartCategory.Company },\n { title: 'Location', color: 'accent1', icon: 'fal fa-globe', category: AXMOrgChartCategory.Location },\n { title: 'Business Unit', color: 'accent2', icon: 'fal fa-sitemap', category: AXMOrgChartCategory.BusinessUnit },\n { title: 'Position', color: 'accent3', icon: 'fal fa-user-tie', category: AXMOrgChartCategory.Position },\n { title: 'Employee', color: 'surface', icon: 'fal fa-address-card', category: AXMOrgChartCategory.Employee },\n ];\n\n /**\n * UI chrome for chart cards; align copy with `organization-chart.organization-chart.nodes` / mock `org-chart-labels`.\n */\n protected readonly chartML = {\n vacant: createMultiLanguageString('Vacant', 'خالی'),\n directReports: createMultiLanguageString('Direct reports', 'گزارش مستقیم'),\n teamMembers: createMultiLanguageString('Team members', 'اعضای تیم'),\n };\n\n protected chartInitials(name: string | null | undefined): string {\n if (!name?.trim()) {\n return '?';\n }\n const parts = name\n .trim()\n .split(/\\s+/)\n .filter(Boolean);\n if (parts.length === 1) {\n return parts[0].slice(0, 2).toUpperCase();\n }\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n }\n\n #initialize = afterNextRender(async () => {\n this.d3 = await import('d3');\n\n await this.refresh();\n });\n\n /**\n * Zooms in the chart.\n */\n protected zoomIn() {\n this.panView()?.zoomIn();\n }\n\n /**\n * Zooms out the chart.\n */\n protected zoomOut() {\n this.panView()?.zoomOut();\n }\n\n /**\n * Resets the zoom level and pan position of the chart.\n */\n protected zoomReset() {\n this.panView()?.resetPosition();\n }\n\n /**\n * Toggles fullscreen mode for the chart.\n */\n protected toggleFullscreen() {\n if (this.isFullscreen()) {\n document.exitFullscreen();\n this.isFullscreen.set(false);\n } else {\n this.parent().nativeElement.requestFullscreen();\n this.isFullscreen.set(true);\n }\n document.querySelector(`foreignObject[node=\"node-${this.chartService.rootNode().id}\"]`)?.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n inline: 'center',\n });\n }\n\n /**\n * Calculates the maximum depth of the organizational chart.\n * @param node - The root node of the chart.\n * @returns The maximum depth of the chart.\n */\n private calculateMaxDepth(node: AXMOrganizationNode): number {\n if (!node.children || node.children.length === 0 || node.isExpanded === false) {\n return 1;\n }\n return 1 + Math.max(...node.children.map((child) => this.calculateMaxDepth(child)));\n }\n\n /**\n * Calculates the maximum breadth of the organizational chart.\n * @param node - The root node of the chart.\n * @returns The maximum breadth of the chart.\n */\n private calculateMaxBreadth(node: AXMOrganizationNode): number {\n if (!node.children || node.children.length === 0 || node.isExpanded === false) {\n return 1;\n }\n return node.children.reduce((acc, child) => acc + this.calculateMaxBreadth(child), 0);\n }\n\n /**\n * Creates and renders the organizational chart.\n * @param el - The container element for the chart.\n * @param data - The root node of the organizational chart.\n */\n createChart(el: Element, data: AXMOrganizationNode): void {\n if (!this.d3) {\n return;\n }\n this.ngzone.runOutsideAngular(() => {\n const NODE_WIDTH_BASE = 300;\n const NODE_HEIGHT_BASE = 220;\n const HORIZONTAL_SPACING = 20;\n const VERTICAL_SPACING = 40;\n\n this.clearChart(el);\n const newSvg = this.d3.select(el).append('svg');\n\n const root = this.d3.hierarchy(data);\n\n root.descendants().forEach((node: any) => {\n if (node.data.isExpanded === false) {\n node.children = undefined;\n }\n });\n\n const treeLayout = this.d3\n .tree<AXMOrganizationNode>()\n .nodeSize([NODE_WIDTH_BASE + HORIZONTAL_SPACING, NODE_HEIGHT_BASE + VERTICAL_SPACING]);\n\n treeLayout(root);\n\n let minX = Infinity,\n maxX = -Infinity,\n minY = Infinity,\n maxY = -Infinity;\n root.descendants().forEach((d: any) => {\n if (d.x < minX) minX = d.x;\n if (d.x > maxX) maxX = d.x;\n if (d.y < minY) minY = d.y;\n if (d.y > maxY) maxY = d.y;\n });\n\n const CONTAINER_WIDTH = maxX - minX + NODE_WIDTH_BASE + 2 * HORIZONTAL_SPACING;\n const CONTAINER_HEIGHT = maxY - minY + NODE_HEIGHT_BASE + 2 * VERTICAL_SPACING;\n\n newSvg.attr('width', CONTAINER_WIDTH).attr('height', CONTAINER_HEIGHT);\n\n const g = newSvg\n .append('g')\n .attr(\n 'transform',\n `translate(${-minX + NODE_WIDTH_BASE / 2 + HORIZONTAL_SPACING / 2}, ${-minY + NODE_HEIGHT_BASE / 2 + VERTICAL_SPACING / 2\n })`\n );\n\n const link = g\n .selectAll('.link')\n .data(root.links())\n .enter()\n .append('path')\n .attr('class', 'link')\n .attr('d', (d: any) => {\n const source = d.source;\n const target = d.target;\n return `M${source.x},${source.y}V${(source.y + target.y) / 2}H${target.x}V${target.y - 10}`;\n })\n .attr('fill', 'none')\n .attr('stroke', this.NODE_STROKE_COLOR)\n .attr('stroke-width', this.LINK_STROKE_WIDTH)\n .attr('from', (d: any) => `node-${d.source.data.id}`)\n .attr('to', (d: any) => `node-${d.target.data.id}`);\n\n const node = g\n .selectAll('.axp-chart-node')\n .data(root.descendants())\n .enter()\n .append('foreignObject')\n .attr('class', 'axp-chart-node')\n .attr('node', (d: any) => `node-${d.data.id}`)\n .attr('x', (d: any) => d.x - NODE_WIDTH_BASE / 2)\n .attr('y', (d: any) => d.y - NODE_HEIGHT_BASE / 2 + 10)\n .attr('width', NODE_WIDTH_BASE)\n .attr('height', NODE_HEIGHT_BASE)\n .each((d: any) => this.renderNodeTemplate(d.data, d.x, d.y));\n\n this.contextMenu()?.refresh();\n });\n if (!this.isChartRendered) {\n // document.querySelector(`foreignObject[node=\"node-${data.id}\"] .--heading-container`)?.scrollIntoView({\n // behavior: 'smooth',\n // block: 'center',\n // inline: 'center',\n // });\n this.isChartRendered = true;\n this.panView()?.resetPosition();\n }\n }\n\n /**\n * Renders the node template for a given organizational node.\n * @param data - The node data.\n * @param x - The x-coordinate of the node.\n * @param y - The y-coordinate of the node.\n */\n private renderNodeTemplate(data: AXMOrganizationNode, x: number, y: number): void {\n // Find the key that matches the node type\n // category is the same as type in simplified structure\n set(data, 'category', data.type);\n\n const viewRef = this.viewContainerRef.createEmbeddedView(this.nodeTemplate(), {\n $implicit: data,\n });\n\n const nodeElement = this.d3.select(this.treeContainer().nativeElement).select(`[node=\"node-${data.id}\"]`);\n const element = nodeElement.node() as HTMLElement | null;\n if (element) {\n element.appendChild(viewRef.rootNodes[0]);\n }\n }\n\n /**\n * Toggles the expansion state of a node.\n * @param data - The node data.\n * @param el - The HTML element representing the node.\n */\n protected toggleNode(data: AXMOrganizationNode, el: HTMLDivElement) {\n data.isExpanded = data.isExpanded === undefined ? false : !data.isExpanded;\n this.createChart(this.treeContainer().nativeElement, this.chartService.rootNode());\n // el.scrollIntoView({\n // behavior: 'smooth',\n // });\n }\n\n /**\n * Clears the chart from the container element.\n * @param el - The container element.\n */\n private clearChart(el: Element): void {\n if (this.d3) {\n this.d3.select(el).select('svg').remove();\n this.viewContainerRef.clear();\n }\n }\n\n private async refresh() {\n if (this.d3) {\n await this.chartService.load();\n this.createChart(this.treeContainer().nativeElement, this.chartService.rootNode());\n }\n }\n\n //#region Context Menu\n\n // protected async handleContextMenuOnOpening(e: AXContextMenuOpeningEvent) {\n // const node = get(e.targetElement, '__data__.data') as any as AXMOrganizationNode;\n // const allowedAddItems = await this.chartService.getAllowedAddMenuItems(node);\n // const allowDelete = node.type != AXMOrganizationNodeType.Company;\n // const isPasteAvailable = await this.chartService.isPasteAvailable();\n // const allowPaste = await this.chartService.allowPaste(node);\n // //\n // if (allowedAddItems.length) {\n // e.items.push({\n // text: 'Add New',\n // icon: 'fa-light fa-plus',\n // items: allowedAddItems,\n // break: allowDelete,\n // });\n // }\n // //\n // if (allowDelete) {\n // e.items.push({\n // name: 'cut',\n // text: 'Cut',\n // icon: 'fa-light fa-cut',\n // data: node,\n // });\n // e.items.push({\n // name: 'copy',\n // text: 'Copy',\n // icon: 'fa-light fa-copy',\n // data: node,\n // break: !isPasteAvailable,\n // });\n // }\n // if (isPasteAvailable) {\n // e.items.push({\n // name: 'paste',\n // text: 'Paste',\n // icon: 'fa-light fa-paste',\n // data: node,\n // break: true,\n // disabled: !allowPaste,\n // });\n // }\n // //\n // if (allowDelete) {\n // e.items.push({\n // name: 'remove',\n // text: 'Remove',\n // color: 'danger',\n // icon: 'fa-light fa-trash-can',\n // data: node,\n // });\n // }\n // //\n // if (e.items.length == 0) {\n // e.canceled = true;\n // }\n // }\n\n protected async handleContextMenuItemClick(e: AXContextMenuItemsClickEvent) {\n\n }\n\n //#endregion\n\n /**\n * Prints the organizational chart.\n */\n protected async printChart() {\n let [panX, panY, panZoomLevel] = [this.panX(), this.panY(), this.panZoomLevel()];\n this.panX.set(0), this.panY.set(0), this.panZoomLevel.set(100);\n await this.chartService.printChart(this.treeContainer().nativeElement);\n this.panX.set(panX), this.panY.set(panY), this.panZoomLevel.set(panZoomLevel);\n }\n\n /**\n * Gets the node colors based on the provided color.\n * @param color - The color to use for the node.\n * @returns An object containing the node's background, text, and border colors.\n */\n protected getNodeColors(color: string) {\n if (color.includes('surface')) {\n return {\n '--node-bg-color': `var(--ax-sys-color-${color})`,\n '--node-text-color': `var(--ax-sys-color-on-${color})`,\n '--node-border-color': `var(--ax-sys-color-border-${color})`,\n };\n }\n return {\n '--node-bg-color': `var(--ax-sys-color-${color}-surface)`,\n '--node-text-color': `var(--ax-sys-color-on-${color}-surface)`,\n '--node-border-color': `var(--ax-sys-color-border-${color}-surface)`,\n };\n }\n\n protected updateVar(oldValue: any, newValue: AXMOrgChartCategory) {\n oldValue.cat = newValue;\n }\n\n\n\n override async getPageTitle(): Promise<string> {\n return await this.translateService.translateAsync('@organization-management:organization-chart.components.chart.title');\n }\n\n override async getPageDescription(): Promise<string> {\n return await this.translateService.translateAsync('@organization-management:organization-chart.components.chart.description');\n }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n ...getActionButton('print'),\n command: {\n name: 'print',\n },\n },\n {\n ...getActionButton('refresh'),\n command: {\n name: 'refresh',\n },\n }\n ];\n }\n override async getPageBreadcrumbs(): Promise<AXPBreadcrumbItem[]> {\n return [\n {\n title: await this.translateService.translateAsync('@organization-management:module.menus.root.title')\n },\n ];\n }\n\n override async execute(command: AXPExecuteCommand) {\n if (command.name == 'print') {\n await this.printChart();\n }\n if (command.name == 'refresh') {\n await this.chartService.generate();\n await this.refresh();\n }\n }\n\n ngOnDestroy(): void {\n this.clearChart(this.treeContainer().nativeElement);\n }\n}\n","<axp-page-layout *translate=\"let t\">\n <axp-page-content class=\"ax-overflow-hidden\">\n <div class=\"ax-h-[calc(100vh-290px)]\" #parent id=\"parent\">\n <div #chart axPanView [(panX)]=\"panX\" [(panY)]=\"panY\" [freeMode]=\"true\" [(zoom)]=\"panZoomLevel\"\n [fitContent]=\"true\" wrapperClasses=\"h\" class=\"ax-light\"></div>\n </div>\n </axp-page-content>\n <axp-page-footer>\n <axp-layout-prefix>\n <div class=\"ax-flex ax-gap-1 ax-light ax-flex-wrap ax-justify-center\">\n @let v = {cat:'Company'}; @for (item of nodeTypes; track $index) {\n <div class=\"axp-node-hint\" [style]=\"getNodeColors(item.color)\" [class.ax-ms-4]=\"v.cat!=item.category\">\n <div class=\"--badge\"></div>\n {{item.title}}\n </div>\n {{updateVar(v, item.category)}} }\n </div>\n </axp-layout-prefix>\n <axp-layout-suffix>\n <div class=\"ax-flex ax-gap-2\">\n <ax-button (onClick)=\"zoomOut()\">\n <ax-icon class=\"fa-solid fa-minus\"> </ax-icon>\n </ax-button>\n <ax-button [text]=\"panZoomLevel()\" (onClick)=\"zoomReset()\"></ax-button>\n <ax-button (onClick)=\"zoomIn()\">\n <ax-icon class=\"fa-solid fa-add\"> </ax-icon>\n </ax-button>\n <ax-button (onClick)=\"toggleFullscreen()\">\n <ax-icon>\n <i class=\"fa-solid\" [class]=\"isFullscreen()? 'fa-compress' : 'fa-expand'\"></i>\n </ax-icon>\n </ax-button>\n </div>\n </axp-layout-suffix>\n </axp-page-footer>\n</axp-page-layout>\n\n<ng-template #nodeTemplate let-data>\n <div>\n @switch (data.category) {\n @case (NodeTypes.Company) {\n @if (data.metadata?.chartTemplate === 'merged-executive') {\n <ng-container *ngTemplateOutlet=\"mergedExecutiveTemplate; context: { data, color: 'primary' }\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"generalTemplate; context: { data, color: 'primary' }\"></ng-container>\n } }\n @case (NodeTypes.Country) {\n <ng-container *ngTemplateOutlet=\"generalTemplate; context: { data, color: 'accent1' }\"></ng-container>\n } @case (NodeTypes.State) {\n <ng-container *ngTemplateOutlet=\"generalTemplate; context: { data, color: 'accent1' }\"></ng-container>\n } @case (NodeTypes.City) {\n <ng-container *ngTemplateOutlet=\"generalTemplate; context: { data, color: 'accent1' }\"></ng-container>\n }\n @case (NodeTypes.Division) {\n @if (data.metadata?.chartTemplate === 'merged-unit') {\n <ng-container *ngTemplateOutlet=\"mergedUnitTemplate; context: { data, color: 'accent2' }\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"generalTemplate; context: { data, color: 'accent2' }\"></ng-container>\n }\n } @case (NodeTypes.Department) {\n @if (data.metadata?.chartTemplate === 'merged-unit') {\n <ng-container *ngTemplateOutlet=\"mergedUnitTemplate; context: { data, color: 'accent2' }\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"generalTemplate; context: { data, color: 'accent2' }\"></ng-container>\n }\n } @case (NodeTypes.Branch) {\n @if (data.metadata?.chartTemplate === 'merged-unit') {\n <ng-container *ngTemplateOutlet=\"mergedUnitTemplate; context: { data, color: 'accent2' }\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"generalTemplate; context: { data, color: 'accent2' }\"></ng-container>\n }\n }\n @case (NodeTypes.Position) {\n @if (data.metadata?.chartTemplate === 'merged-manager') {\n <ng-container *ngTemplateOutlet=\"mergedManagerTemplate; context: { data, color: 'accent3' }\"></ng-container>\n } @else if (data.metadata?.chartTemplate === 'position-ic') {\n <ng-container *ngTemplateOutlet=\"positionIcTemplate; context: { data, color: 'accent3' }\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"generalTemplate; context: { data, color: 'accent3' }\"></ng-container>\n }\n }\n @case (NodeTypes.Employee) {\n @if (data.metadata?.chartTemplate === 'employee-card') {\n <ng-container *ngTemplateOutlet=\"employeeCardTemplate; context: { data, color: 'surface' }\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"generalTemplate; context: { data, color: 'surface' }\"></ng-container>\n } } }\n </div>\n</ng-template>\n\n<!--- Merged company (CEO / top role) -->\n<ng-template #mergedExecutiveTemplate let-data=\"data\" let-color=\"color\">\n <div #node class=\"--node-container --merged-card\" [class.--vacant]=\"data.metadata?.topRole?.vacant\"\n [style]=\"getNodeColors(color)\">\n <div class=\"--container\">\n <div class=\"--merged-top\">\n <span class=\"--merged-entity-title\" [title]=\"data.title | axpResolveMultiLanguageString\">{{\n data.title | axpResolveMultiLanguageString\n }}</span>\n @if (data.description) {\n <span class=\"--merged-entity-desc\">{{ data.description | axpResolveMultiLanguageString }}</span>\n }\n </div>\n @if (data.metadata?.topRole) {\n <div class=\"--merged-role-block\">\n <div class=\"--merged-avatar\"\n [class.--placeholder]=\"data.metadata.topRole.vacant || !data.metadata.topRole.employeeName\">\n {{ chartInitials(data.metadata.topRole.employeeName) }}\n </div>\n <div class=\"--merged-role-text\">\n @if (!data.metadata.topRole.vacant && data.metadata.topRole.employeeName) {\n <span class=\"--merged-name\">{{ data.metadata.topRole.employeeName }}</span>\n <span class=\"--merged-position\">{{\n data.metadata.topRole.positionTitle | axpResolveMultiLanguageString\n }}</span>\n } @else {\n <span class=\"--merged-vacant\">{{ chartML.vacant | axpResolveMultiLanguageString }}</span>\n <span class=\"--merged-position\">{{\n data.metadata.topRole.positionTitle | axpResolveMultiLanguageString\n }}</span>\n }\n </div>\n </div>\n }\n @if (data.metadata?.stats?.directChildren != null) {\n <div class=\"--merged-stats\">\n <span class=\"--merged-stat-n\">{{ data.metadata.stats.directChildren }}</span>\n <span class=\"--merged-stat-label\">{{ chartML.teamMembers | axpResolveMultiLanguageString }}</span>\n </div>\n }\n\n </div>\n </div>\n</ng-template>\n\n<!--- Merged business unit (head role) -->\n<ng-template #mergedUnitTemplate let-data=\"data\" let-color=\"color\">\n <div #node class=\"--node-container --merged-card --merged-unit\" [class.--vacant]=\"data.metadata?.unitHead?.vacant\"\n [style]=\"getNodeColors(color)\">\n <div class=\"--container\">\n <div class=\"--merged-top\">\n <span class=\"--merged-entity-title\" [title]=\"data.title | axpResolveMultiLanguageString\">{{\n data.title | axpResolveMultiLanguageString\n }}</span>\n @if (data.description) {\n <span class=\"--merged-entity-desc\">{{ data.description | axpResolveMultiLanguageString }}</span>\n }\n </div>\n @if (data.metadata?.unitHead) {\n <div class=\"--merged-role-block\">\n <div class=\"--merged-avatar\"\n [class.--placeholder]=\"data.metadata.unitHead.vacant || !data.metadata.unitHead.employeeName\">\n {{ chartInitials(data.metadata.unitHead.employeeName) }}\n </div>\n <div class=\"--merged-role-text\">\n @if (!data.metadata.unitHead.vacant && data.metadata.unitHead.employeeName) {\n <span class=\"--merged-name\">{{ data.metadata.unitHead.employeeName }}</span>\n <span class=\"--merged-position\">{{\n data.metadata.unitHead.positionTitle | axpResolveMultiLanguageString\n }}</span>\n } @else {\n <span class=\"--merged-vacant\">{{ chartML.vacant | axpResolveMultiLanguageString }}</span>\n <span class=\"--merged-position\">{{\n data.metadata.unitHead.positionTitle | axpResolveMultiLanguageString\n }}</span>\n }\n </div>\n </div>\n }\n @if (data.metadata?.stats?.directChildren != null) {\n <div class=\"--merged-stats\">\n <span class=\"--merged-stat-n\">{{ data.metadata.stats.directChildren }}</span>\n <span class=\"--merged-stat-label\">{{ chartML.teamMembers | axpResolveMultiLanguageString }}</span>\n </div>\n }\n @if (data.children && data.children.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"toggleNode(data, node)\">\n <ax-icon icon=\"fa-solid\" [class]=\"data.isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!--- Manager position: seat + occupant merged -->\n<ng-template #mergedManagerTemplate let-data=\"data\" let-color=\"color\">\n <div #node class=\"--node-container --merged-card --merged-manager\" [class.--vacant]=\"data.metadata?.vacant\"\n [style]=\"getNodeColors(color)\">\n <div class=\"--container\">\n <div class=\"--merged-top --merged-top-compact\">\n <i class=\"fa-light fa-user-tie fa-fw --merged-type-icon\"></i>\n <span class=\"--merged-entity-title\" [title]=\"data.title | axpResolveMultiLanguageString\">{{\n data.title | axpResolveMultiLanguageString\n }}</span>\n </div>\n <div class=\"--merged-role-block\">\n <div class=\"--merged-avatar\"\n [class.--placeholder]=\"data.metadata?.vacant || !data.metadata?.occupant?.displayName\">\n {{ chartInitials(data.metadata?.occupant?.displayName) }}\n </div>\n <div class=\"--merged-role-text\">\n @if (!data.metadata?.vacant && data.metadata?.occupant?.displayName) {\n <span class=\"--merged-name\">{{ data.metadata.occupant.displayName }}</span>\n @if (data.description) {\n <span class=\"--merged-position-sub\">{{ data.description | axpResolveMultiLanguageString }}</span>\n }\n } @else {\n <span class=\"--merged-vacant\">{{ chartML.vacant | axpResolveMultiLanguageString }}</span>\n }\n </div>\n </div>\n @if (data.metadata?.stats?.directReports != null && data.metadata.stats.directReports > 0) {\n <div class=\"--merged-stats\">\n <span class=\"--merged-stat-n\">{{ data.metadata.stats.directReports }}</span>\n <span class=\"--merged-stat-label\">{{ chartML.directReports | axpResolveMultiLanguageString }}</span>\n </div>\n }\n @if (data.children && data.children.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"toggleNode(data, node)\">\n <ax-icon icon=\"fa-solid\" [class]=\"data.isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!--- IC position: seat box (employee child rendered separately) -->\n<ng-template #positionIcTemplate let-data=\"data\" let-color=\"color\">\n <div #node class=\"--node-container --ic-position\" [class.--vacant]=\"data.metadata?.vacant\"\n [style]=\"getNodeColors(color)\">\n <div class=\"--container\">\n <div class=\"--heading-container\">\n <div class=\"--content\">\n <div class=\"--icon\">\n <i class=\"fa-light fa-xl fa-fw\" [class]=\"data.icon\"></i>\n </div>\n <div class=\"--titles\">\n <span class=\"--title\" [title]=\"data.title | axpResolveMultiLanguageString\">{{\n data.title | axpResolveMultiLanguageString\n }}</span>\n @if (data.metadata?.vacant) {\n <span class=\"--sub-title\">{{ chartML.vacant | axpResolveMultiLanguageString }}</span>\n }\n </div>\n @if (data?.children?.length) {\n <div class=\"--badge\">\n <span>{{ data?.children?.length ?? 0 }}</span>\n </div>\n }\n </div>\n </div>\n @if (data.children && data.children.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"toggleNode(data, node)\">\n <ax-icon icon=\"fa-solid\" [class]=\"data.isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!--- Employee under IC position -->\n<ng-template #employeeCardTemplate let-data=\"data\" let-color=\"color\">\n <div #node class=\"--node-container --employee-card\" [style]=\"getNodeColors(color)\">\n <div class=\"--container\">\n <div class=\"--employee-row\">\n <div class=\"--merged-avatar --employee-avatar\">\n {{ chartInitials(data.title | axpResolveMultiLanguageString) }}\n </div>\n <div class=\"--employee-text\">\n <span class=\"--merged-name\">{{ data.title | axpResolveMultiLanguageString }}</span>\n @if (data.subtitle) {\n <span class=\"--merged-position-sub\">{{ data.subtitle | axpResolveMultiLanguageString }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #generalTemplate let-data=\"data\" let-color=\"color\">\n <div #node class=\"--node-container\" [style]=\"getNodeColors(color)\">\n <div class=\"--container\">\n <div class=\"--heading-container\">\n <div class=\"--content\">\n <div class=\"--icon\">\n <i class=\"fa-light fa-xl fa-fw\" [class]=\"data.icon\"></i>\n </div>\n <div class=\"--titles\">\n <span class=\"--title\" [title]=\"data.title | axpResolveMultiLanguageString\">{{\n data.title | axpResolveMultiLanguageString\n }}</span>\n @if (data.subtitle) {\n <span class=\"--sub-title\" [title]=\"data.subtitle | axpResolveMultiLanguageString\">{{\n data.subtitle | axpResolveMultiLanguageString\n }}</span>\n }\n </div>\n @if (data?.children?.length) {\n <div class=\"--badge\">\n <span>{{ data?.children?.length ?? 0 }}</span>\n </div>\n }\n </div>\n </div>\n @if (data.description) {\n <div class=\"--body-container\">\n <div class=\"--description\" [class.ax-pb-3]=\"data.children && data.children.length > 0\">\n <span>{{ data.description | axpResolveMultiLanguageString }}</span>\n </div>\n </div>\n } @if (data.children && data.children.length > 0) {\n <div class=\"--toggle\">\n <ax-button class=\"ax-xs ax-rounded-sm\" (onClick)=\"toggleNode(data, node)\">\n <ax-icon icon=\"fa-solid\" [class]=\"data.isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\"></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</ng-template>"],"names":["i2","i3","i4"],"mappings":"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"}
|