@acorex-platform/module-learning-management-client 0.0.28 → 0.0.32
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.
|
@@ -4,7 +4,7 @@ import * as i0 from '@angular/core';
|
|
|
4
4
|
import { inject, Injectable, NgModule, DestroyRef, signal, input, output, computed, effect, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
|
|
5
5
|
import { RootConfig, AXMLearningManagementMenuKeys, AXPLearningPermissionKeys } from '@acorex-platform/module-learning-management-client/contracts';
|
|
6
6
|
import { createEntityCommandOptions, AXPSearchCommandProvider, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';
|
|
7
|
-
import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetCoreModule, AXP_WIDGET_DEFINITION_PROVIDER, AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
7
|
+
import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetCoreModule, AXP_WIDGET_DEFINITION_PROVIDER, AXPColumnWidgetComponent, AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
8
8
|
import { AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';
|
|
9
9
|
import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
|
|
10
10
|
import { AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';
|
|
@@ -293,6 +293,9 @@ const AXLSkillMatrixWidget = {
|
|
|
293
293
|
edit: {
|
|
294
294
|
component: () => Promise.resolve().then(function () { return skillMatrixWidgetEdit_component; }).then((c) => c.AXLSkillMatrixWidgetEditComponent),
|
|
295
295
|
},
|
|
296
|
+
column: {
|
|
297
|
+
component: () => Promise.resolve().then(function () { return skillMatrixWidgetColumn_component; }).then((c) => c.AXLSkillMatrixWidgetColumnComponent),
|
|
298
|
+
},
|
|
296
299
|
},
|
|
297
300
|
};
|
|
298
301
|
|
|
@@ -856,6 +859,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
856
859
|
}, template: "<div class=\"__container\">\n <div class=\"__matrix-section\">\n <div class=\"__matrix-header ax-sm\">\n @if (!readonly()) {\n <ax-button color=\"primary\"\n [text]=\"'@learning-management:skills.components.skill-matrix.actions.choose-skills.title' | translate | async\"\n (onClick)=\"handleSelectSkills()\" [disabled]=\"isLoadingSkillEntity()\">\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@learning-management:skills.components.skill-matrix.messages.loading-skill-levels' | translate | async\n }}</span>\n </div>\n } @else {\n <axp-spreadsheet [title]=\"'Skill / Level'\" [columns]=\"spreadsheetColumns()\" [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\" [readonly]=\"readonly()\" [allowRemoveRows]=\"true\" [rowTitlePath]=\"'_skillTitle'\"\n [rowDescriptionPath]=\"'_skillDescription'\" (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\" (rowChange)=\"handleRowChange($event)\"></axp-spreadsheet>\n }\n </div>\n</div>", styles: [".skill-matrix{display:block;height:100%;width:100%}.skill-matrix .__container,.skill-matrix .__matrix-section{display:flex;flex-direction:column}.skill-matrix .__matrix-header{margin-bottom:calc(var(--spacing, .25rem) * 3);display:flex;justify-content:flex-end}.skill-matrix .__loading{display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 8);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
857
860
|
}], ctorParameters: () => [], propDecorators: { titles: [{ type: i0.Input, args: [{ isSignal: true, alias: "titles", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], skillIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "skillIds", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], cellChange: [{ type: i0.Output, args: ["cellChange"] }], skillIdsChange: [{ type: i0.Output, args: ["skillIdsChange"] }] } });
|
|
858
861
|
|
|
862
|
+
//#region ----- Imports -----
|
|
863
|
+
//#endregion
|
|
864
|
+
//#region ----- Helpers -----
|
|
865
|
+
function assignedRowCount(value) {
|
|
866
|
+
if (value == null || typeof value !== 'object' || Array.isArray(value)) {
|
|
867
|
+
return 0;
|
|
868
|
+
}
|
|
869
|
+
let count = 0;
|
|
870
|
+
for (const row of Object.values(value)) {
|
|
871
|
+
if (row == null || typeof row !== 'object') {
|
|
872
|
+
continue;
|
|
873
|
+
}
|
|
874
|
+
const hasCell = Object.values(row).some((cell) => cell != null && String(cell).trim() !== '');
|
|
875
|
+
if (hasCell) {
|
|
876
|
+
count += 1;
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
return count;
|
|
880
|
+
}
|
|
881
|
+
//#endregion
|
|
882
|
+
//#region ----- Component -----
|
|
883
|
+
class AXLSkillMatrixWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
884
|
+
//#region ----- Computed Properties -----
|
|
885
|
+
assignedCount() {
|
|
886
|
+
return assignedRowCount(this.rawValue);
|
|
887
|
+
}
|
|
888
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXLSkillMatrixWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
889
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXLSkillMatrixWidgetColumnComponent, isStandalone: true, selector: "axm-skill-matrix-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `
|
|
890
|
+
@if (assignedCount(); as count) {
|
|
891
|
+
<!-- ----- Assigned skill rows ----- -->
|
|
892
|
+
<span>{{ count }}</span>
|
|
893
|
+
}
|
|
894
|
+
<!-- ----- Empty matrix ----- -->
|
|
895
|
+
@else {
|
|
896
|
+
<span class="text-muted">---</span>
|
|
897
|
+
}
|
|
898
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
899
|
+
}
|
|
900
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXLSkillMatrixWidgetColumnComponent, decorators: [{
|
|
901
|
+
type: Component,
|
|
902
|
+
args: [{
|
|
903
|
+
selector: 'axm-skill-matrix-widget-column',
|
|
904
|
+
template: `
|
|
905
|
+
@if (assignedCount(); as count) {
|
|
906
|
+
<!-- ----- Assigned skill rows ----- -->
|
|
907
|
+
<span>{{ count }}</span>
|
|
908
|
+
}
|
|
909
|
+
<!-- ----- Empty matrix ----- -->
|
|
910
|
+
@else {
|
|
911
|
+
<span class="text-muted">---</span>
|
|
912
|
+
}
|
|
913
|
+
`,
|
|
914
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
915
|
+
imports: [],
|
|
916
|
+
inputs: ['rawValue', 'rowData'],
|
|
917
|
+
}]
|
|
918
|
+
}] });
|
|
919
|
+
|
|
920
|
+
var skillMatrixWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
921
|
+
__proto__: null,
|
|
922
|
+
AXLSkillMatrixWidgetColumnComponent: AXLSkillMatrixWidgetColumnComponent
|
|
923
|
+
});
|
|
924
|
+
|
|
859
925
|
//#region ---- Imports ----
|
|
860
926
|
//#endregion
|
|
861
927
|
//#region ---- Component Definition ----
|
|
@@ -871,7 +937,7 @@ class AXLSkillMatrixWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
871
937
|
this.titles = computed(() => {
|
|
872
938
|
// Read directly from context data signal for reactive updates
|
|
873
939
|
const contextData = this.contextService.data();
|
|
874
|
-
const requiredLevelsFromContext = get(contextData, '
|
|
940
|
+
const requiredLevelsFromContext = get(contextData, 'jobLevelsList');
|
|
875
941
|
if (Array.isArray(requiredLevelsFromContext) && requiredLevelsFromContext.length > 0) {
|
|
876
942
|
// Ensure each item has the required structure
|
|
877
943
|
return requiredLevelsFromContext.map((item) => {
|
|
@@ -1093,5 +1159,5 @@ var skillMatrixWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
1093
1159
|
* Generated bundle index. Do not edit.
|
|
1094
1160
|
*/
|
|
1095
1161
|
|
|
1096
|
-
export { AXLSkillMatrixWidgetEditComponent, AXLSkillMatrixWidgetViewComponent, AXMLearningManagementMenuProvider, AXMLearningManagementModule, AXMLearningManagementPermissionDefinitionProvider, AXMLearningManagementSearchCommandProvider, AXMLearningManagementSkillMatrixComponent };
|
|
1162
|
+
export { AXLSkillMatrixWidgetColumnComponent, AXLSkillMatrixWidgetEditComponent, AXLSkillMatrixWidgetViewComponent, AXMLearningManagementMenuProvider, AXMLearningManagementModule, AXMLearningManagementPermissionDefinitionProvider, AXMLearningManagementSearchCommandProvider, AXMLearningManagementSkillMatrixComponent };
|
|
1097
1163
|
//# sourceMappingURL=acorex-platform-module-learning-management-client.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-learning-management-client.mjs","sources":["../../../../libs/modules/learning-management/client/src/lib/menu.provider.ts","../../../../libs/modules/learning-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/learning-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/learning-management/client/src/lib/manifest.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget.config.ts","../../../../libs/modules/learning-management/client/src/lib/widget-definition.provider.ts","../../../../libs/modules/learning-management/client/src/lib/learning-management.module.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix.component.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix.component.html","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget-edit.component.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget-view.component.ts","../../../../libs/modules/learning-management/client/src/acorex-platform-module-learning-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXMLearningManagementMenuKeys } from '@acorex-platform/module-learning-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\n/**\n * Learning Management Module Menu Provider.\n * - Root \"Learning\": Skills, Courses, Trainings, Enrollments, Certificates, Licenses, Learning Paths (operational)\n * - Configuration/Learning: Skill Levels, Course Types, Training Definitions/Types, Certificate Definitions/Types, License Types, Mandatory Training Rules (reference)\n */\nexport class AXMLearningManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n\n // Root \"Learning\" - single level, direct links with dividers\n context.addItems([\n {\n name: AXMLearningManagementMenuKeys.Root,\n priority: 8210,\n text: '@learning-management:module.menus.root.title',\n icon: module.icon,\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: `${AXMLearningManagementMenuKeys.Root}:skills`,\n text: RootConfig.entities.skill.titlePlural,\n icon: RootConfig.entities.skill.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.skill.name),\n priority: 1,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:courses`,\n text: RootConfig.entities.course.titlePlural,\n icon: RootConfig.entities.course.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.course.name),\n priority: 2,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:trainings`,\n text: RootConfig.entities.training.titlePlural,\n icon: RootConfig.entities.training.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.training.name),\n priority: 3,\n },\n { name: `${AXMLearningManagementMenuKeys.Root}:divider1`, text: '', type: 'break', priority: 4 },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:enrollments`,\n text: RootConfig.entities.enrollment.titlePlural,\n icon: RootConfig.entities.enrollment.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.enrollment.name),\n priority: 5,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:attendance`,\n text: RootConfig.entities.attendance.titlePlural,\n icon: RootConfig.entities.attendance.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.attendance.name),\n priority: 6,\n },\n { name: `${AXMLearningManagementMenuKeys.Root}:divider2`, text: '', type: 'break', priority: 7 },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:certificates`,\n text: RootConfig.entities.certificate.titlePlural,\n icon: RootConfig.entities.certificate.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificate.name),\n priority: 8,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:licenses`,\n text: RootConfig.entities.license.titlePlural,\n icon: RootConfig.entities.license.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.license.name),\n priority: 9,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:learning-paths`,\n text: RootConfig.entities.learningPath.titlePlural,\n icon: RootConfig.entities.learningPath.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.learningPath.name),\n priority: 10,\n },\n ],\n },\n ]);\n\n // Configuration/Learning - reference data\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXMLearningManagementMenuKeys.ConfigurationRoot,\n priority: 8650,\n text: '@learning-management:module.menus.configuration.title',\n icon: module.icon,\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:skill-levels`,\n text: RootConfig.entities.skillLevel.titlePlural,\n icon: RootConfig.entities.skillLevel.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.skillLevel.name),\n priority: 1,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:course-types`,\n text: RootConfig.entities.courseType.titlePlural,\n icon: RootConfig.entities.courseType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.courseType.name),\n priority: 2,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:training-definitions`,\n text: RootConfig.entities.trainingDefinition.titlePlural,\n icon: RootConfig.entities.trainingDefinition.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.trainingDefinition.name),\n priority: 3,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:training-types`,\n text: RootConfig.entities.trainingType.titlePlural,\n icon: RootConfig.entities.trainingType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.trainingType.name),\n priority: 4,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:certificate-definitions`,\n text: RootConfig.entities.certificateDefinition.titlePlural,\n icon: RootConfig.entities.certificateDefinition.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificateDefinition.name),\n priority: 5,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:certificate-types`,\n text: RootConfig.entities.certificateType.titlePlural,\n icon: RootConfig.entities.certificateType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificateType.name),\n priority: 6,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:license-types`,\n text: RootConfig.entities.licenseType.titlePlural,\n icon: RootConfig.entities.licenseType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.licenseType.name),\n priority: 7,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:mandatory-rules`,\n text: RootConfig.entities.mandatoryTrainingRule.titlePlural,\n icon: RootConfig.entities.mandatoryTrainingRule.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.mandatoryTrainingRule.name),\n priority: 8,\n },\n ],\n },\n ]);\n }\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPLearningPermissionKeys\n} from '@acorex-platform/module-learning-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers learning capabilities into the shared Learning group.\n */\n@Injectable()\nexport class AXMLearningManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPLearningPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:learning.permissions';\n const G = '@common:permission-groups';\n\n context\n .addGroup(groups.Learning.Root, `${G}.learning.title`, `${G}.learning.description`, { order: 20 })\n .addPermission(keys.Access, `${P}.access.title`, `${P}.access.description`)\n .endPermission()\n .addPermission(\n keys.MaintainLearning,\n `${P}.maintain-learning.title`,\n `${P}.maintain-learning.description`,\n )\n .endPermission()\n .addPermission(keys.Setup, `${P}.setup.title`, `${P}.setup.description`)\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\n\n//#endregion\n\n//#region ---- Search Command Provider ----\n\nfunction cmd(id: string, entityKey: string, e: { name: string; title: string; icon: string }, title: string, desc: string) {\n return {\n id,\n group: 'command' as const,\n title,\n icon: e.icon,\n description: desc,\n command: {\n name: 'Entity:Create' as const,\n options: createEntityCommandOptions(entityKey, { name: e.name, module: RootConfig.module.name, title: e.title }),\n },\n };\n}\n\nexport class AXMLearningManagementSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n cmd('create-skill', `${RootConfig.module.name}.${RootConfig.entities.skill.name}`, RootConfig.entities.skill, '@learning-management:skills.search.create-skill.title', '@learning-management:skills.search.create-skill.description'),\n cmd('create-course', `${RootConfig.module.name}.${RootConfig.entities.course.name}`, RootConfig.entities.course, '@learning-management:courses.search.create-course.title', '@learning-management:courses.search.create-course.description'),\n cmd('create-training', `${RootConfig.module.name}.${RootConfig.entities.training.name}`, RootConfig.entities.training, '@learning-management:trainings.search.schedule-training.title', '@learning-management:trainings.search.schedule-training.description'),\n cmd('create-training-definition', `${RootConfig.module.name}.${RootConfig.entities.trainingDefinition.name}`, RootConfig.entities.trainingDefinition, '@learning-management:trainings.search.create-training-definition.title', '@learning-management:trainings.search.create-training-definition.description'),\n cmd('create-enrollment', `${RootConfig.module.name}.${RootConfig.entities.enrollment.name}`, RootConfig.entities.enrollment, '@learning-management:enrollments.search.create-enrollment.title', '@learning-management:enrollments.search.create-enrollment.description'),\n cmd('create-learning-path', `${RootConfig.module.name}.${RootConfig.entities.learningPath.name}`, RootConfig.entities.learningPath, '@learning-management:learning-paths.search.create-learning-path.title', '@learning-management:learning-paths.search.create-learning-path.description'),\n cmd('create-certificate', `${RootConfig.module.name}.${RootConfig.entities.certificate.name}`, RootConfig.entities.certificate, '@learning-management:certificates.search.issue-certificate.title', '@learning-management:certificates.search.issue-certificate.description'),\n cmd('create-certificate-definition', `${RootConfig.module.name}.${RootConfig.entities.certificateDefinition.name}`, RootConfig.entities.certificateDefinition, '@learning-management:certificates.search.create-certificate-definition.title', '@learning-management:certificates.search.create-certificate-definition.description'),\n cmd('create-attendance', `${RootConfig.module.name}.${RootConfig.entities.attendance.name}`, RootConfig.entities.attendance, '@learning-management:enrollments.search.create-attendance.title', '@learning-management:enrollments.search.create-attendance.description'),\n cmd('create-skill-level', `${RootConfig.module.name}.${RootConfig.entities.skillLevel.name}`, RootConfig.entities.skillLevel, '@learning-management:skills.search.create-skill-level.title', '@learning-management:skills.search.create-skill-level.description'),\n cmd('create-course-type', `${RootConfig.module.name}.${RootConfig.entities.courseType.name}`, RootConfig.entities.courseType, '@learning-management:courses.search.create-course-type.title', '@learning-management:courses.search.create-course-type.description'),\n cmd('create-training-type', `${RootConfig.module.name}.${RootConfig.entities.trainingType.name}`, RootConfig.entities.trainingType, '@learning-management:trainings.search.create-training-type.title', '@learning-management:trainings.search.create-training-type.description'),\n cmd('create-certificate-type', `${RootConfig.module.name}.${RootConfig.entities.certificateType.name}`, RootConfig.entities.certificateType, '@learning-management:certificates.search.create-certificate-type.title', '@learning-management:certificates.search.create-certificate-type.description'),\n cmd('create-mandatory-training-rule', `${RootConfig.module.name}.${RootConfig.entities.mandatoryTrainingRule.name}`, RootConfig.entities.mandatoryTrainingRule, '@learning-management:compliance.search.create-mandatory-training-rule.title', '@learning-management:compliance.search.create-mandatory-training-rule.description'),\n ];\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Learning Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const LearningManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n\n type: 'domain',\n domain: 'assessment-learning',\n // Module dependencies (optional)\n};\n\n//#endregion\n\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_LABEL_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';\n\nexport const AXLSkillMatrixWidget: AXPWidgetConfig<AXLSkillMatrixWidgetConfigType> = {\n name: 'skill-matrix-editor',\n title: 'Skill Matrix',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Matrix widget for managing skill levels across different skills',\n icon: 'fa-light fa-table',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./skill-matrix-widget-view.component').then((c) => c.AXLSkillMatrixWidgetViewComponent),\n },\n edit: {\n component: () => import('./skill-matrix-widget-edit.component').then((c) => c.AXLSkillMatrixWidgetEditComponent),\n },\n },\n};\n\nexport type AXLSkillMatrixWidgetConfigType = {\n type: 'editor';\n};\n\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXLSkillMatrixWidget } from './features/skill-matrix/skill-matrix-widget.config';\n\n//#endregion\n\n//#region ---- Learning Management Widgets Provider ----\n\n@Injectable()\nexport class AXMLearningManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXLSkillMatrixWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { NgModule } from '@angular/core';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { LearningManagementManifest } from './manifest';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXMLearningManagementPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMLearningManagementMenuProvider } from './menu.provider';\nimport { AXMLearningManagementSearchCommandProvider } from './search-command.provider';\n\nimport { AXMLearningManagementWidgetsProvider } from './widget-definition.provider';\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n ],\n providers: [\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: LearningManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMLearningManagementPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMLearningManagementMenuProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMLearningManagementSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMLearningManagementWidgetsProvider,\n multi: true,\n },\n ],\n})\nexport class AXMLearningManagementModule { }\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { type AXPCategoryEntity, type AXPWidgetNode, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AXPSpreadsheetComponent,\n AXPSpreadsheetColumn,\n AXPSpreadsheetCellChangeEvent,\n AXPSpreadsheetRowChangeEvent,\n AXPSpreadsheetItem,\n AXPSpreadsheetData,\n} from '@acorex-platform/framework-client/layout/components';\n\nimport { AXMLearningManagementSkillLevelEntityModel } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXPEntityDataSelectorService, AXPEntityDefinitionRegistryService, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXMLearningManagementSkillEntityModel } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXPCategoryTreeDataSource } from '@acorex-platform/framework-client/layout/components';\n\n//#endregion\n\n@Component({\n selector: 'axm-skill-matrix',\n standalone: true,\n imports: [\n CommonModule,\n AXPSpreadsheetComponent,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n templateUrl: './skill-matrix.component.html',\n styleUrl: './skill-matrix.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'axm-skill-matrix',\n },\n})\nexport class AXMLearningManagementSkillMatrixComponent {\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly skillLevelDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skillLevel.name)\n .data<string, AXMLearningManagementSkillLevelEntityModel>();\n private readonly skillDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skill.name)\n .data<string, AXMLearningManagementSkillEntityModel>();\n private readonly skillCategoryDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skillCategory.name)\n .data<string, any>();\n private readonly entityDataSelectorService = inject(AXPEntityDataSelectorService);\n private readonly entityResolver = inject(AXPEntityDefinitionRegistryService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly activeLocale = signal(this.translationService.getActiveLang());\n\n //#endregion\n\n //#region ---- Inputs ----\n\n /**\n * Array of job titles/positions to display as columns (e.g., Senior, Manager, Director)\n */\n titles = input<AXPSpreadsheetItem[]>([]);\n\n /**\n * Initial matrix data: { [skillId]: { [title.id]: skillLevelId } }\n */\n value = input<AXPSpreadsheetData>({});\n\n /**\n * Whether the matrix is in readonly mode\n */\n readonly = input<boolean>(false);\n\n /**\n * Initial skill IDs (for syncing with parent entity)\n */\n skillIds = input<string[]>([]);\n\n //#endregion\n\n //#region ---- Outputs ----\n\n /**\n * Emitted when the matrix value changes\n */\n valueChange = output<AXPSpreadsheetData>();\n\n /**\n * Emitted when a single cell value changes\n */\n cellChange = output<AXPSpreadsheetCellChangeEvent>();\n\n /**\n * Emitted when selected skills change (skill IDs array)\n */\n skillIdsChange = output<string[]>();\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n /**\n * Skill levels loaded from the service\n */\n private skillLevels = signal<AXMLearningManagementSkillLevelEntityModel[]>([]);\n\n /**\n * Selected skills (internal state)\n */\n protected selectedSkills = signal<AXMLearningManagementSkillEntityModel[]>([]);\n\n /**\n * Skill entity definition\n */\n private skillEntityDef = signal<AXPEntity | null>(null);\n\n /**\n * Loading state\n */\n protected isLoading = signal<boolean>(true);\n\n /**\n * Loading state for skill entity\n */\n protected isLoadingSkillEntity = signal<boolean>(false);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Vertical titles (skills) - rows of the matrix\n */\n protected verticalTitles = computed<AXPSpreadsheetItem[]>(() => {\n const locale = this.activeLocale();\n const skills = this.selectedSkills();\n const result = (skills ?? []).map((skill) => ({\n id: skill.id,\n title: resolveMultiLanguageString(skill.title, locale),\n description:\n skill.description != null ? resolveMultiLanguageString(skill.description, locale) : undefined,\n }));\n return result;\n });\n\n /**\n * Horizontal titles (job titles/positions) - columns of the matrix\n */\n protected horizontalTitles = computed<AXPSpreadsheetItem[]>(() => {\n const titlesInput = this.titles();\n const result = (titlesInput ?? []).map((title) => ({\n id: title.id,\n title: title.title,\n description: title.description || undefined,\n }));\n return result;\n });\n\n /**\n * Cell options (skill levels) - dropdown options for each cell, loaded from service\n */\n protected cellOptions = computed<AXPSpreadsheetItem[]>(() => {\n const locale = this.activeLocale();\n const levels = this.skillLevels();\n return (levels ?? []).map((level) => ({\n id: level.id,\n title: resolveMultiLanguageString(level.title, locale),\n description:\n level.description != null ? resolveMultiLanguageString(level.description, locale) : undefined,\n }));\n });\n\n /**\n * Spreadsheet columns - converted from horizontalTitles (job titles/positions)\n */\n protected spreadsheetColumns = computed<AXPSpreadsheetColumn[]>(() => {\n const horizontalTitles = this.horizontalTitles();\n const cellOptions = this.cellOptions();\n\n // Create SelectBox widget configuration for skill levels\n const selectBoxWidget: AXPWidgetNode = {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n textField: 'title',\n dataSource: cellOptions.map(option => ({\n id: option.id,\n title: option.title,\n description: option.description,\n })),\n },\n };\n\n // Convert horizontal titles to columns\n return horizontalTitles.map((title) => ({\n name: title.id,\n title: title.title,\n description: title.description,\n path: title.id, // Path to access the value in row object\n widget: selectBoxWidget,\n }));\n });\n\n /**\n * Spreadsheet rows - converted from matrix data and vertical titles\n */\n protected spreadsheetRows = computed<Record<string, any>[]>(() => {\n const verticalTitles = this.verticalTitles();\n const horizontalTitles = this.horizontalTitles();\n const matrixData = this.value();\n\n // Convert matrix data to spreadsheet rows\n return verticalTitles.map((skill) => {\n const row: Record<string, any> = {\n name: skill.id, // Required for fixed mode row identification\n _skillTitle: skill.title, // For row header display\n _skillDescription: skill.description, // For row header description\n };\n\n // Add cell values for each horizontal title (column)\n horizontalTitles.forEach((title) => {\n const cellValue = matrixData[skill.id]?.[title.id] ?? null;\n row[title.id] = cellValue;\n });\n\n return row;\n });\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n this.translationService.langChanges$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((lang) => this.activeLocale.set(lang));\n\n // Load skill levels and skill entity definition when component initializes\n this.loadSkillLevels();\n this.loadSkillEntityDef();\n\n // Watch for skillIds input changes and sync selected skills\n effect(() => {\n const ids = this.skillIds();\n if (ids && ids.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(ids);\n } else if (!ids || ids.length === 0) {\n // Try to extract skill IDs from matrix data keys\n const matrixData = this.value();\n const skillIdsFromMatrix = Object.keys(matrixData || {});\n if (skillIdsFromMatrix.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(skillIdsFromMatrix);\n } else {\n this.selectedSkills.set([]);\n }\n }\n });\n\n // Watch for matrix value changes and extract skill IDs\n effect(() => {\n const matrixData = this.value();\n const currentSkillIds = this.selectedSkills().map((s) => s.id);\n const skillIdsFromMatrix = Object.keys(matrixData || {});\n\n // If matrix has skills that aren't in selectedSkills, load them\n const missingIds = skillIdsFromMatrix.filter((id) => !currentSkillIds.includes(id));\n if (missingIds.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(missingIds);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Data Loading Methods ----\n\n /**\n * Load skill levels from the service\n */\n private async loadSkillLevels(): Promise<void> {\n try {\n this.isLoading.set(true);\n const query = {\n skip: 0,\n take: 1000,\n sort: [{ field: 'levelNumber', dir: 'asc' as const }],\n };\n const result = await this.skillLevelDataAccessor.query(query);\n this.skillLevels.set(result.items || []);\n } catch (error) {\n console.error('Error loading skill levels:', error);\n this.skillLevels.set([]);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n /**\n * Load skill entity definition\n */\n private async loadSkillEntityDef(): Promise<void> {\n try {\n this.isLoadingSkillEntity.set(true);\n const entityDef = await this.entityResolver.resolve(\n RootConfig.module.name,\n RootConfig.entities.skill.name\n );\n this.skillEntityDef.set(entityDef as AXPEntity);\n } catch (error) {\n console.error('Error loading skill entity definition:', error);\n this.skillEntityDef.set(null as unknown as AXPEntity);\n } finally {\n this.isLoadingSkillEntity.set(false);\n }\n }\n\n /**\n * Load skills by IDs\n */\n private async loadSkillsByIds(ids: string[]): Promise<void> {\n try {\n const skills: AXMLearningManagementSkillEntityModel[] = [];\n\n for (const id of ids) {\n try {\n const skill = await this.skillDataAccessor.byKey(id);\n if (skill) {\n skills.push(skill);\n }\n } catch (error) {\n console.error(`Error loading skill ${id}:`, error);\n }\n }\n\n this.selectedSkills.set(skills);\n } catch (error) {\n console.error('Error loading skills by IDs:', error);\n }\n }\n\n //#endregion\n\n //#region ---- Data Transformation Methods ----\n\n /**\n * Convert spreadsheet rows back to matrix data format\n */\n private convertSpreadsheetRowsToMatrixData(rows: Record<string, any>[]): AXPSpreadsheetData {\n const horizontalTitles = this.horizontalTitles();\n const matrixData: AXPSpreadsheetData = {};\n\n rows.forEach((row) => {\n const skillId = row['name']; // Row identifier (skill ID)\n if (!skillId) {\n return;\n }\n\n matrixData[skillId] = {};\n\n // Extract cell values for each column\n horizontalTitles.forEach((title) => {\n const cellValue = row[title.id] ?? null;\n matrixData[skillId][title.id] = cellValue;\n });\n });\n\n return matrixData;\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle spreadsheet change event - convert to matrix format\n */\n protected handleSpreadsheetChange(rows: Record<string, any>[]): void {\n const matrixData = this.convertSpreadsheetRowsToMatrixData(rows);\n this.valueChange.emit(matrixData);\n\n // Extract skill IDs from row names and emit\n const skillIds = rows.map((row) => row['name']).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n\n /**\n * Handle cell change event from spreadsheet\n */\n protected handleCellChange(event: AXPSpreadsheetCellChangeEvent): void {\n this.cellChange.emit(event);\n }\n\n /**\n * Open skill selector dialog with category filter\n */\n protected async handleSelectSkills(): Promise<void> {\n const entityDef = this.skillEntityDef();\n if (!entityDef) {\n console.error('Skill entity definition not loaded');\n return;\n }\n\n try {\n // Get currently selected skill IDs\n const selectedItemIds = this.selectedSkills()\n .map((skill) => skill.id)\n .filter((id) => id != null);\n\n // Create category tree data source\n const categoryTreeDataSource: AXPCategoryTreeDataSource = {\n loadRootNodes: async () => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'isEmpty' },\n value: true,\n },\n sort: [{ field: 'title', dir: 'asc' }],\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n loadChildNodes: async (parentId: string) => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'equal' },\n value: parentId,\n },\n sort: [{ field: 'title', dir: 'asc' }],\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n searchNodes: async (searchValue: string) => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n filters: [\n {\n field: 'title',\n operator: { type: 'contains' },\n value: searchValue,\n },\n {\n field: 'name',\n operator: { type: 'contains' },\n value: searchValue,\n },\n ],\n logic: 'or',\n },\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n };\n\n const result = await this.entityDataSelectorService.open({\n entity: entityDef,\n title: 'Select Skills',\n allowMultiple: true,\n selectedItemIds: selectedItemIds.length > 0 ? selectedItemIds : undefined,\n columns: ['title', 'description'],\n showCategoryFilter: false,\n categoryFilter: {\n title: 'Categories',\n dataSource: categoryTreeDataSource,\n filterField: 'categoryIds',\n filterOperator: 'contains',\n width: '350px',\n },\n });\n\n if (result && result.items && result.items.length > 0) {\n // Update selected skills\n this.selectedSkills.set(result.items);\n // Emit skill IDs change\n const skillIds = result.items.map((item) => item.id).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n } catch (error) {\n console.error('Error opening skill selector:', error);\n }\n }\n\n /**\n * Remove a skill from selection\n */\n protected handleRemoveSkill(skillId: string): void {\n const currentSkills = this.selectedSkills();\n const updatedSkills = currentSkills.filter((skill) => skill.id !== skillId);\n this.selectedSkills.set(updatedSkills);\n\n // Remove skill data from matrix value\n const currentMatrixData = this.value();\n const updatedMatrixData = { ...currentMatrixData };\n delete updatedMatrixData[skillId];\n\n // Emit updated matrix data\n this.valueChange.emit(updatedMatrixData);\n\n // Emit skill IDs change\n const skillIds = updatedSkills.map((skill) => skill.id).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n\n /**\n * Handle row change event from spreadsheet (add/remove)\n */\n protected handleRowChange(event: AXPSpreadsheetRowChangeEvent): void {\n if (event.type === 'remove') {\n // Remove skill from selection\n this.handleRemoveSkill(event.rowId);\n }\n // Note: 'add' type shouldn't happen in fixed mode, but if it does, we can handle it here\n }\n\n //#endregion\n}\n\n//#endregion\n\n","<div class=\"__container\">\n <div class=\"__matrix-section\">\n <div class=\"__matrix-header ax-sm\">\n @if (!readonly()) {\n <ax-button color=\"primary\"\n [text]=\"'@learning-management:skills.components.skill-matrix.actions.choose-skills.title' | translate | async\"\n (onClick)=\"handleSelectSkills()\" [disabled]=\"isLoadingSkillEntity()\">\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@learning-management:skills.components.skill-matrix.messages.loading-skill-levels' | translate | async\n }}</span>\n </div>\n } @else {\n <axp-spreadsheet [title]=\"'Skill / Level'\" [columns]=\"spreadsheetColumns()\" [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\" [readonly]=\"readonly()\" [allowRemoveRows]=\"true\" [rowTitlePath]=\"'_skillTitle'\"\n [rowDescriptionPath]=\"'_skillDescription'\" (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\" (rowChange)=\"handleRowChange($event)\"></axp-spreadsheet>\n }\n </div>\n</div>","//#region ---- Imports ----\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPSpreadsheetData, AXPSpreadsheetItem } from '@acorex-platform/framework-client/layout/components';\nimport { get } from 'lodash';\nimport { AXMLearningManagementSkillMatrixComponent } from './skill-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-skill-matrix-widget-edit',\n standalone: true,\n imports: [\n AXMLearningManagementSkillMatrixComponent\n],\n template: `\n <axm-skill-matrix\n [titles]=\"titles()\"\n [value]=\"matrixValue()\"\n [skillIds]=\"skillIds()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"handleValueChange($any($event))\"\n (skillIdsChange)=\"handleSkillIdsChange($any($event))\"\n ></axm-skill-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXLSkillMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Titles from context - reactively reads from context data signal\n * This ensures the titles update immediately when requiredLevels changes in context\n */\n protected titles = computed<AXPSpreadsheetItem[]>(() => {\n // Read directly from context data signal for reactive updates\n const contextData = this.contextService.data();\n const requiredLevelsFromContext = get(contextData, 'jobLevels') as any[] | undefined;\n\n if (Array.isArray(requiredLevelsFromContext) && requiredLevelsFromContext.length > 0) {\n // Ensure each item has the required structure\n return requiredLevelsFromContext.map((item: any) => {\n if (typeof item === 'string') {\n // If item is just a string (ID), convert to proper format\n return { id: item, title: item };\n }\n // If item is an object, ensure it has id and title\n return {\n id: item.id || item.value || String(item),\n title: item.title || item.name || String(item),\n description: item.description,\n };\n });\n }\n\n // Fallback to options (for initial load or when context is not yet available)\n const options = this.options();\n const rawTitles = options?.['titles'];\n\n // If titles is not set, return empty array\n if (!rawTitles) {\n return [];\n }\n\n // If it's already an array, return it (evaluated expression result)\n if (Array.isArray(rawTitles)) {\n // Ensure each item has the required structure\n return rawTitles.map((item: any) => {\n if (typeof item === 'string') {\n // If item is just a string (ID), convert to proper format\n return { id: item, title: item };\n }\n // If item is an object, ensure it has id and title\n return {\n id: item.id || item.value || String(item),\n title: item.title || item.name || String(item),\n description: item.description,\n };\n });\n }\n\n // If it's still a string (unevaluated expression), return empty array\n // The expression will be evaluated by the widget renderer and options will update\n if (typeof rawTitles === 'string') {\n return [];\n }\n\n return [];\n });\n\n /**\n * Readonly mode from options - properly tracks options signal changes\n */\n protected readonly = computed<boolean>(() => {\n const options = this.options();\n const result = options?.['readonly'] ?? false;\n return result;\n });\n\n /**\n * Current matrix value - tracks getValue signal changes\n */\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n const result = (this.getValue() as AXPSpreadsheetData) || {};\n const keysCount = Object.keys(result).length;\n return result;\n });\n\n /**\n * Skill IDs extracted from matrix data keys or from options\n */\n protected skillIds = computed<string[]>(() => {\n const options = this.options();\n const skillIdsFromOptions = options?.['skillIds'] ?? [];\n\n // If skillIds from options is an array, use it\n if (Array.isArray(skillIdsFromOptions) && skillIdsFromOptions.length > 0) {\n return skillIdsFromOptions;\n }\n\n // Otherwise, extract from matrix data keys\n const matrixData = this.matrixValue();\n return Object.keys(matrixData || {});\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle value change from skill-matrix component\n */\n protected handleValueChange(data: AXPSpreadsheetData): void {\n const dataKeysCount = Object.keys(data || {}).length;\n const currentKeysCount = Object.keys(this.getValue() || {}).length;\n if (data) {\n this.setValue(data);\n const afterKeysCount = Object.keys(this.getValue() || {}).length;\n } else {\n }\n }\n\n /**\n * Handle skill IDs change from skill-matrix component\n * Skill IDs are stored as keys in the matrix data, so this is mainly for tracking\n */\n protected handleSkillIdsChange(skillIds: string[]): void {\n // Skill IDs are already reflected in the matrix data keys\n // This handler is here for potential future use or side effects\n console.log('Skill IDs changed:', skillIds);\n }\n\n //#endregion\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXMLearningManagementSkillMatrixComponent } from './skill-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-skill-matrix-widget-view',\n standalone: true,\n imports: [\n AXMLearningManagementSkillMatrixComponent\n],\n template: `\n <axm-skill-matrix\n [value]=\"matrixValue()\"\n [readonly]=\"true\"\n (valueChange)=\"handleValueChange($any($event))\"\n ></axm-skill-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXLSkillMatrixWidgetViewComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Skill IDs from options\n */\n protected skills = computed<{ id: string; title: string; description?: string }[]>(() => {\n return this.options()['skills'] || [];\n });\n\n /**\n * Current matrix value\n */\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle value change from skill-matrix component\n */\n protected handleValueChange(data: AXPSpreadsheetData): void {\n if (data) {\n this.setValue(data);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-learning-management-client.mjs","sources":["../../../../libs/modules/learning-management/client/src/lib/menu.provider.ts","../../../../libs/modules/learning-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/learning-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/learning-management/client/src/lib/manifest.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget.config.ts","../../../../libs/modules/learning-management/client/src/lib/widget-definition.provider.ts","../../../../libs/modules/learning-management/client/src/lib/learning-management.module.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix.component.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix.component.html","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget-column.component.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget-edit.component.ts","../../../../libs/modules/learning-management/client/src/lib/features/skill-matrix/skill-matrix-widget-view.component.ts","../../../../libs/modules/learning-management/client/src/acorex-platform-module-learning-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXMLearningManagementMenuKeys } from '@acorex-platform/module-learning-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\n/**\n * Learning Management Module Menu Provider.\n * - Root \"Learning\": Skills, Courses, Trainings, Enrollments, Certificates, Licenses, Learning Paths (operational)\n * - Configuration/Learning: Skill Levels, Course Types, Training Definitions/Types, Certificate Definitions/Types, License Types, Mandatory Training Rules (reference)\n */\nexport class AXMLearningManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n\n // Root \"Learning\" - single level, direct links with dividers\n context.addItems([\n {\n name: AXMLearningManagementMenuKeys.Root,\n priority: 8210,\n text: '@learning-management:module.menus.root.title',\n icon: module.icon,\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: `${AXMLearningManagementMenuKeys.Root}:skills`,\n text: RootConfig.entities.skill.titlePlural,\n icon: RootConfig.entities.skill.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.skill.name),\n priority: 1,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:courses`,\n text: RootConfig.entities.course.titlePlural,\n icon: RootConfig.entities.course.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.course.name),\n priority: 2,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:trainings`,\n text: RootConfig.entities.training.titlePlural,\n icon: RootConfig.entities.training.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.training.name),\n priority: 3,\n },\n { name: `${AXMLearningManagementMenuKeys.Root}:divider1`, text: '', type: 'break', priority: 4 },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:enrollments`,\n text: RootConfig.entities.enrollment.titlePlural,\n icon: RootConfig.entities.enrollment.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.enrollment.name),\n priority: 5,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:attendance`,\n text: RootConfig.entities.attendance.titlePlural,\n icon: RootConfig.entities.attendance.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.attendance.name),\n priority: 6,\n },\n { name: `${AXMLearningManagementMenuKeys.Root}:divider2`, text: '', type: 'break', priority: 7 },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:certificates`,\n text: RootConfig.entities.certificate.titlePlural,\n icon: RootConfig.entities.certificate.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificate.name),\n priority: 8,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:licenses`,\n text: RootConfig.entities.license.titlePlural,\n icon: RootConfig.entities.license.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.license.name),\n priority: 9,\n },\n {\n name: `${AXMLearningManagementMenuKeys.Root}:learning-paths`,\n text: RootConfig.entities.learningPath.titlePlural,\n icon: RootConfig.entities.learningPath.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.learningPath.name),\n priority: 10,\n },\n ],\n },\n ]);\n\n // Configuration/Learning - reference data\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXMLearningManagementMenuKeys.ConfigurationRoot,\n priority: 8650,\n text: '@learning-management:module.menus.configuration.title',\n icon: module.icon,\n policy: {\n features: [module.name],\n },\n children: [\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:skill-levels`,\n text: RootConfig.entities.skillLevel.titlePlural,\n icon: RootConfig.entities.skillLevel.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.skillLevel.name),\n priority: 1,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:course-types`,\n text: RootConfig.entities.courseType.titlePlural,\n icon: RootConfig.entities.courseType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.courseType.name),\n priority: 2,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:training-definitions`,\n text: RootConfig.entities.trainingDefinition.titlePlural,\n icon: RootConfig.entities.trainingDefinition.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.trainingDefinition.name),\n priority: 3,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:training-types`,\n text: RootConfig.entities.trainingType.titlePlural,\n icon: RootConfig.entities.trainingType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.trainingType.name),\n priority: 4,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:certificate-definitions`,\n text: RootConfig.entities.certificateDefinition.titlePlural,\n icon: RootConfig.entities.certificateDefinition.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificateDefinition.name),\n priority: 5,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:certificate-types`,\n text: RootConfig.entities.certificateType.titlePlural,\n icon: RootConfig.entities.certificateType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.certificateType.name),\n priority: 6,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:license-types`,\n text: RootConfig.entities.licenseType.titlePlural,\n icon: RootConfig.entities.licenseType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.licenseType.name),\n priority: 7,\n },\n {\n name: `${AXMLearningManagementMenuKeys.ConfigurationRoot}:mandatory-rules`,\n text: RootConfig.entities.mandatoryTrainingRule.titlePlural,\n icon: RootConfig.entities.mandatoryTrainingRule.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.mandatoryTrainingRule.name),\n priority: 8,\n },\n ],\n },\n ]);\n }\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPLearningPermissionKeys\n} from '@acorex-platform/module-learning-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers learning capabilities into the shared Learning group.\n */\n@Injectable()\nexport class AXMLearningManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPLearningPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:learning.permissions';\n const G = '@common:permission-groups';\n\n context\n .addGroup(groups.Learning.Root, `${G}.learning.title`, `${G}.learning.description`, { order: 20 })\n .addPermission(keys.Access, `${P}.access.title`, `${P}.access.description`)\n .endPermission()\n .addPermission(\n keys.MaintainLearning,\n `${P}.maintain-learning.title`,\n `${P}.maintain-learning.description`,\n )\n .endPermission()\n .addPermission(keys.Setup, `${P}.setup.title`, `${P}.setup.description`)\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\n\n//#endregion\n\n//#region ---- Search Command Provider ----\n\nfunction cmd(id: string, entityKey: string, e: { name: string; title: string; icon: string }, title: string, desc: string) {\n return {\n id,\n group: 'command' as const,\n title,\n icon: e.icon,\n description: desc,\n command: {\n name: 'Entity:Create' as const,\n options: createEntityCommandOptions(entityKey, { name: e.name, module: RootConfig.module.name, title: e.title }),\n },\n };\n}\n\nexport class AXMLearningManagementSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n cmd('create-skill', `${RootConfig.module.name}.${RootConfig.entities.skill.name}`, RootConfig.entities.skill, '@learning-management:skills.search.create-skill.title', '@learning-management:skills.search.create-skill.description'),\n cmd('create-course', `${RootConfig.module.name}.${RootConfig.entities.course.name}`, RootConfig.entities.course, '@learning-management:courses.search.create-course.title', '@learning-management:courses.search.create-course.description'),\n cmd('create-training', `${RootConfig.module.name}.${RootConfig.entities.training.name}`, RootConfig.entities.training, '@learning-management:trainings.search.schedule-training.title', '@learning-management:trainings.search.schedule-training.description'),\n cmd('create-training-definition', `${RootConfig.module.name}.${RootConfig.entities.trainingDefinition.name}`, RootConfig.entities.trainingDefinition, '@learning-management:trainings.search.create-training-definition.title', '@learning-management:trainings.search.create-training-definition.description'),\n cmd('create-enrollment', `${RootConfig.module.name}.${RootConfig.entities.enrollment.name}`, RootConfig.entities.enrollment, '@learning-management:enrollments.search.create-enrollment.title', '@learning-management:enrollments.search.create-enrollment.description'),\n cmd('create-learning-path', `${RootConfig.module.name}.${RootConfig.entities.learningPath.name}`, RootConfig.entities.learningPath, '@learning-management:learning-paths.search.create-learning-path.title', '@learning-management:learning-paths.search.create-learning-path.description'),\n cmd('create-certificate', `${RootConfig.module.name}.${RootConfig.entities.certificate.name}`, RootConfig.entities.certificate, '@learning-management:certificates.search.issue-certificate.title', '@learning-management:certificates.search.issue-certificate.description'),\n cmd('create-certificate-definition', `${RootConfig.module.name}.${RootConfig.entities.certificateDefinition.name}`, RootConfig.entities.certificateDefinition, '@learning-management:certificates.search.create-certificate-definition.title', '@learning-management:certificates.search.create-certificate-definition.description'),\n cmd('create-attendance', `${RootConfig.module.name}.${RootConfig.entities.attendance.name}`, RootConfig.entities.attendance, '@learning-management:enrollments.search.create-attendance.title', '@learning-management:enrollments.search.create-attendance.description'),\n cmd('create-skill-level', `${RootConfig.module.name}.${RootConfig.entities.skillLevel.name}`, RootConfig.entities.skillLevel, '@learning-management:skills.search.create-skill-level.title', '@learning-management:skills.search.create-skill-level.description'),\n cmd('create-course-type', `${RootConfig.module.name}.${RootConfig.entities.courseType.name}`, RootConfig.entities.courseType, '@learning-management:courses.search.create-course-type.title', '@learning-management:courses.search.create-course-type.description'),\n cmd('create-training-type', `${RootConfig.module.name}.${RootConfig.entities.trainingType.name}`, RootConfig.entities.trainingType, '@learning-management:trainings.search.create-training-type.title', '@learning-management:trainings.search.create-training-type.description'),\n cmd('create-certificate-type', `${RootConfig.module.name}.${RootConfig.entities.certificateType.name}`, RootConfig.entities.certificateType, '@learning-management:certificates.search.create-certificate-type.title', '@learning-management:certificates.search.create-certificate-type.description'),\n cmd('create-mandatory-training-rule', `${RootConfig.module.name}.${RootConfig.entities.mandatoryTrainingRule.name}`, RootConfig.entities.mandatoryTrainingRule, '@learning-management:compliance.search.create-mandatory-training-rule.title', '@learning-management:compliance.search.create-mandatory-training-rule.description'),\n ];\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Learning Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const LearningManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n\n type: 'domain',\n domain: 'assessment-learning',\n // Module dependencies (optional)\n};\n\n//#endregion\n\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_LABEL_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';\n\nexport const AXLSkillMatrixWidget: AXPWidgetConfig<AXLSkillMatrixWidgetConfigType> = {\n name: 'skill-matrix-editor',\n title: 'Skill Matrix',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Matrix widget for managing skill levels across different skills',\n icon: 'fa-light fa-table',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./skill-matrix-widget-view.component').then((c) => c.AXLSkillMatrixWidgetViewComponent),\n },\n edit: {\n component: () => import('./skill-matrix-widget-edit.component').then((c) => c.AXLSkillMatrixWidgetEditComponent),\n },\n column: {\n component: () => import('./skill-matrix-widget-column.component').then((c) => c.AXLSkillMatrixWidgetColumnComponent),\n },\n },\n};\n\nexport type AXLSkillMatrixWidgetConfigType = {\n type: 'editor';\n};\n\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXLSkillMatrixWidget } from './features/skill-matrix/skill-matrix-widget.config';\n\n//#endregion\n\n//#region ---- Learning Management Widgets Provider ----\n\n@Injectable()\nexport class AXMLearningManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXLSkillMatrixWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { NgModule } from '@angular/core';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { LearningManagementManifest } from './manifest';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXMLearningManagementPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMLearningManagementMenuProvider } from './menu.provider';\nimport { AXMLearningManagementSearchCommandProvider } from './search-command.provider';\n\nimport { AXMLearningManagementWidgetsProvider } from './widget-definition.provider';\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n ],\n providers: [\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: LearningManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMLearningManagementPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMLearningManagementMenuProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMLearningManagementSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMLearningManagementWidgetsProvider,\n multi: true,\n },\n ],\n})\nexport class AXMLearningManagementModule { }\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { type AXPCategoryEntity, type AXPWidgetNode, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AXPSpreadsheetComponent,\n AXPSpreadsheetColumn,\n AXPSpreadsheetCellChangeEvent,\n AXPSpreadsheetRowChangeEvent,\n AXPSpreadsheetItem,\n AXPSpreadsheetData,\n} from '@acorex-platform/framework-client/layout/components';\n\nimport { AXMLearningManagementSkillLevelEntityModel } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXPEntityDataSelectorService, AXPEntityDefinitionRegistryService, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { RootConfig } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXMLearningManagementSkillEntityModel } from '@acorex-platform/module-learning-management-client/contracts';\nimport { AXPCategoryTreeDataSource } from '@acorex-platform/framework-client/layout/components';\n\n//#endregion\n\n@Component({\n selector: 'axm-skill-matrix',\n standalone: true,\n imports: [\n CommonModule,\n AXPSpreadsheetComponent,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n templateUrl: './skill-matrix.component.html',\n styleUrl: './skill-matrix.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'axm-skill-matrix',\n },\n})\nexport class AXMLearningManagementSkillMatrixComponent {\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly skillLevelDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skillLevel.name)\n .data<string, AXMLearningManagementSkillLevelEntityModel>();\n private readonly skillDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skill.name)\n .data<string, AXMLearningManagementSkillEntityModel>();\n private readonly skillCategoryDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.skillCategory.name)\n .data<string, any>();\n private readonly entityDataSelectorService = inject(AXPEntityDataSelectorService);\n private readonly entityResolver = inject(AXPEntityDefinitionRegistryService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly activeLocale = signal(this.translationService.getActiveLang());\n\n //#endregion\n\n //#region ---- Inputs ----\n\n /**\n * Array of job titles/positions to display as columns (e.g., Senior, Manager, Director)\n */\n titles = input<AXPSpreadsheetItem[]>([]);\n\n /**\n * Initial matrix data: { [skillId]: { [title.id]: skillLevelId } }\n */\n value = input<AXPSpreadsheetData>({});\n\n /**\n * Whether the matrix is in readonly mode\n */\n readonly = input<boolean>(false);\n\n /**\n * Initial skill IDs (for syncing with parent entity)\n */\n skillIds = input<string[]>([]);\n\n //#endregion\n\n //#region ---- Outputs ----\n\n /**\n * Emitted when the matrix value changes\n */\n valueChange = output<AXPSpreadsheetData>();\n\n /**\n * Emitted when a single cell value changes\n */\n cellChange = output<AXPSpreadsheetCellChangeEvent>();\n\n /**\n * Emitted when selected skills change (skill IDs array)\n */\n skillIdsChange = output<string[]>();\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n /**\n * Skill levels loaded from the service\n */\n private skillLevels = signal<AXMLearningManagementSkillLevelEntityModel[]>([]);\n\n /**\n * Selected skills (internal state)\n */\n protected selectedSkills = signal<AXMLearningManagementSkillEntityModel[]>([]);\n\n /**\n * Skill entity definition\n */\n private skillEntityDef = signal<AXPEntity | null>(null);\n\n /**\n * Loading state\n */\n protected isLoading = signal<boolean>(true);\n\n /**\n * Loading state for skill entity\n */\n protected isLoadingSkillEntity = signal<boolean>(false);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Vertical titles (skills) - rows of the matrix\n */\n protected verticalTitles = computed<AXPSpreadsheetItem[]>(() => {\n const locale = this.activeLocale();\n const skills = this.selectedSkills();\n const result = (skills ?? []).map((skill) => ({\n id: skill.id,\n title: resolveMultiLanguageString(skill.title, locale),\n description:\n skill.description != null ? resolveMultiLanguageString(skill.description, locale) : undefined,\n }));\n return result;\n });\n\n /**\n * Horizontal titles (job titles/positions) - columns of the matrix\n */\n protected horizontalTitles = computed<AXPSpreadsheetItem[]>(() => {\n const titlesInput = this.titles();\n const result = (titlesInput ?? []).map((title) => ({\n id: title.id,\n title: title.title,\n description: title.description || undefined,\n }));\n return result;\n });\n\n /**\n * Cell options (skill levels) - dropdown options for each cell, loaded from service\n */\n protected cellOptions = computed<AXPSpreadsheetItem[]>(() => {\n const locale = this.activeLocale();\n const levels = this.skillLevels();\n return (levels ?? []).map((level) => ({\n id: level.id,\n title: resolveMultiLanguageString(level.title, locale),\n description:\n level.description != null ? resolveMultiLanguageString(level.description, locale) : undefined,\n }));\n });\n\n /**\n * Spreadsheet columns - converted from horizontalTitles (job titles/positions)\n */\n protected spreadsheetColumns = computed<AXPSpreadsheetColumn[]>(() => {\n const horizontalTitles = this.horizontalTitles();\n const cellOptions = this.cellOptions();\n\n // Create SelectBox widget configuration for skill levels\n const selectBoxWidget: AXPWidgetNode = {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n textField: 'title',\n dataSource: cellOptions.map(option => ({\n id: option.id,\n title: option.title,\n description: option.description,\n })),\n },\n };\n\n // Convert horizontal titles to columns\n return horizontalTitles.map((title) => ({\n name: title.id,\n title: title.title,\n description: title.description,\n path: title.id, // Path to access the value in row object\n widget: selectBoxWidget,\n }));\n });\n\n /**\n * Spreadsheet rows - converted from matrix data and vertical titles\n */\n protected spreadsheetRows = computed<Record<string, any>[]>(() => {\n const verticalTitles = this.verticalTitles();\n const horizontalTitles = this.horizontalTitles();\n const matrixData = this.value();\n\n // Convert matrix data to spreadsheet rows\n return verticalTitles.map((skill) => {\n const row: Record<string, any> = {\n name: skill.id, // Required for fixed mode row identification\n _skillTitle: skill.title, // For row header display\n _skillDescription: skill.description, // For row header description\n };\n\n // Add cell values for each horizontal title (column)\n horizontalTitles.forEach((title) => {\n const cellValue = matrixData[skill.id]?.[title.id] ?? null;\n row[title.id] = cellValue;\n });\n\n return row;\n });\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n this.translationService.langChanges$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((lang) => this.activeLocale.set(lang));\n\n // Load skill levels and skill entity definition when component initializes\n this.loadSkillLevels();\n this.loadSkillEntityDef();\n\n // Watch for skillIds input changes and sync selected skills\n effect(() => {\n const ids = this.skillIds();\n if (ids && ids.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(ids);\n } else if (!ids || ids.length === 0) {\n // Try to extract skill IDs from matrix data keys\n const matrixData = this.value();\n const skillIdsFromMatrix = Object.keys(matrixData || {});\n if (skillIdsFromMatrix.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(skillIdsFromMatrix);\n } else {\n this.selectedSkills.set([]);\n }\n }\n });\n\n // Watch for matrix value changes and extract skill IDs\n effect(() => {\n const matrixData = this.value();\n const currentSkillIds = this.selectedSkills().map((s) => s.id);\n const skillIdsFromMatrix = Object.keys(matrixData || {});\n\n // If matrix has skills that aren't in selectedSkills, load them\n const missingIds = skillIdsFromMatrix.filter((id) => !currentSkillIds.includes(id));\n if (missingIds.length > 0 && this.skillEntityDef()) {\n this.loadSkillsByIds(missingIds);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Data Loading Methods ----\n\n /**\n * Load skill levels from the service\n */\n private async loadSkillLevels(): Promise<void> {\n try {\n this.isLoading.set(true);\n const query = {\n skip: 0,\n take: 1000,\n sort: [{ field: 'levelNumber', dir: 'asc' as const }],\n };\n const result = await this.skillLevelDataAccessor.query(query);\n this.skillLevels.set(result.items || []);\n } catch (error) {\n console.error('Error loading skill levels:', error);\n this.skillLevels.set([]);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n /**\n * Load skill entity definition\n */\n private async loadSkillEntityDef(): Promise<void> {\n try {\n this.isLoadingSkillEntity.set(true);\n const entityDef = await this.entityResolver.resolve(\n RootConfig.module.name,\n RootConfig.entities.skill.name\n );\n this.skillEntityDef.set(entityDef as AXPEntity);\n } catch (error) {\n console.error('Error loading skill entity definition:', error);\n this.skillEntityDef.set(null as unknown as AXPEntity);\n } finally {\n this.isLoadingSkillEntity.set(false);\n }\n }\n\n /**\n * Load skills by IDs\n */\n private async loadSkillsByIds(ids: string[]): Promise<void> {\n try {\n const skills: AXMLearningManagementSkillEntityModel[] = [];\n\n for (const id of ids) {\n try {\n const skill = await this.skillDataAccessor.byKey(id);\n if (skill) {\n skills.push(skill);\n }\n } catch (error) {\n console.error(`Error loading skill ${id}:`, error);\n }\n }\n\n this.selectedSkills.set(skills);\n } catch (error) {\n console.error('Error loading skills by IDs:', error);\n }\n }\n\n //#endregion\n\n //#region ---- Data Transformation Methods ----\n\n /**\n * Convert spreadsheet rows back to matrix data format\n */\n private convertSpreadsheetRowsToMatrixData(rows: Record<string, any>[]): AXPSpreadsheetData {\n const horizontalTitles = this.horizontalTitles();\n const matrixData: AXPSpreadsheetData = {};\n\n rows.forEach((row) => {\n const skillId = row['name']; // Row identifier (skill ID)\n if (!skillId) {\n return;\n }\n\n matrixData[skillId] = {};\n\n // Extract cell values for each column\n horizontalTitles.forEach((title) => {\n const cellValue = row[title.id] ?? null;\n matrixData[skillId][title.id] = cellValue;\n });\n });\n\n return matrixData;\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle spreadsheet change event - convert to matrix format\n */\n protected handleSpreadsheetChange(rows: Record<string, any>[]): void {\n const matrixData = this.convertSpreadsheetRowsToMatrixData(rows);\n this.valueChange.emit(matrixData);\n\n // Extract skill IDs from row names and emit\n const skillIds = rows.map((row) => row['name']).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n\n /**\n * Handle cell change event from spreadsheet\n */\n protected handleCellChange(event: AXPSpreadsheetCellChangeEvent): void {\n this.cellChange.emit(event);\n }\n\n /**\n * Open skill selector dialog with category filter\n */\n protected async handleSelectSkills(): Promise<void> {\n const entityDef = this.skillEntityDef();\n if (!entityDef) {\n console.error('Skill entity definition not loaded');\n return;\n }\n\n try {\n // Get currently selected skill IDs\n const selectedItemIds = this.selectedSkills()\n .map((skill) => skill.id)\n .filter((id) => id != null);\n\n // Create category tree data source\n const categoryTreeDataSource: AXPCategoryTreeDataSource = {\n loadRootNodes: async () => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'isEmpty' },\n value: true,\n },\n sort: [{ field: 'title', dir: 'asc' }],\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n loadChildNodes: async (parentId: string) => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'equal' },\n value: parentId,\n },\n sort: [{ field: 'title', dir: 'asc' }],\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n searchNodes: async (searchValue: string) => {\n const result = await this.skillCategoryDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n filters: [\n {\n field: 'title',\n operator: { type: 'contains' },\n value: searchValue,\n },\n {\n field: 'name',\n operator: { type: 'contains' },\n value: searchValue,\n },\n ],\n logic: 'or',\n },\n });\n return (result.items || []).map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n })) as AXPCategoryEntity[];\n },\n };\n\n const result = await this.entityDataSelectorService.open({\n entity: entityDef,\n title: 'Select Skills',\n allowMultiple: true,\n selectedItemIds: selectedItemIds.length > 0 ? selectedItemIds : undefined,\n columns: ['title', 'description'],\n showCategoryFilter: false,\n categoryFilter: {\n title: 'Categories',\n dataSource: categoryTreeDataSource,\n filterField: 'categoryIds',\n filterOperator: 'contains',\n width: '350px',\n },\n });\n\n if (result && result.items && result.items.length > 0) {\n // Update selected skills\n this.selectedSkills.set(result.items);\n // Emit skill IDs change\n const skillIds = result.items.map((item) => item.id).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n } catch (error) {\n console.error('Error opening skill selector:', error);\n }\n }\n\n /**\n * Remove a skill from selection\n */\n protected handleRemoveSkill(skillId: string): void {\n const currentSkills = this.selectedSkills();\n const updatedSkills = currentSkills.filter((skill) => skill.id !== skillId);\n this.selectedSkills.set(updatedSkills);\n\n // Remove skill data from matrix value\n const currentMatrixData = this.value();\n const updatedMatrixData = { ...currentMatrixData };\n delete updatedMatrixData[skillId];\n\n // Emit updated matrix data\n this.valueChange.emit(updatedMatrixData);\n\n // Emit skill IDs change\n const skillIds = updatedSkills.map((skill) => skill.id).filter((id) => id != null);\n this.skillIdsChange.emit(skillIds);\n }\n\n /**\n * Handle row change event from spreadsheet (add/remove)\n */\n protected handleRowChange(event: AXPSpreadsheetRowChangeEvent): void {\n if (event.type === 'remove') {\n // Remove skill from selection\n this.handleRemoveSkill(event.rowId);\n }\n // Note: 'add' type shouldn't happen in fixed mode, but if it does, we can handle it here\n }\n\n //#endregion\n}\n\n//#endregion\n\n","<div class=\"__container\">\n <div class=\"__matrix-section\">\n <div class=\"__matrix-header ax-sm\">\n @if (!readonly()) {\n <ax-button color=\"primary\"\n [text]=\"'@learning-management:skills.components.skill-matrix.actions.choose-skills.title' | translate | async\"\n (onClick)=\"handleSelectSkills()\" [disabled]=\"isLoadingSkillEntity()\">\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n @if (isLoading()) {\n <div class=\"__loading\">\n <span>{{ '@learning-management:skills.components.skill-matrix.messages.loading-skill-levels' | translate | async\n }}</span>\n </div>\n } @else {\n <axp-spreadsheet [title]=\"'Skill / Level'\" [columns]=\"spreadsheetColumns()\" [rowsInput]=\"spreadsheetRows()\"\n [rowMode]=\"'fixed'\" [readonly]=\"readonly()\" [allowRemoveRows]=\"true\" [rowTitlePath]=\"'_skillTitle'\"\n [rowDescriptionPath]=\"'_skillDescription'\" (cellChange)=\"handleCellChange($event)\"\n (spreadsheetChange)=\"handleSpreadsheetChange($event)\" (rowChange)=\"handleRowChange($event)\"></axp-spreadsheet>\n }\n </div>\n</div>","//#region ----- Imports -----\n\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction assignedRowCount(value: unknown): number {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return 0;\n }\n\n let count = 0;\n for (const row of Object.values(value as AXPSpreadsheetData)) {\n if (row == null || typeof row !== 'object') {\n continue;\n }\n const hasCell = Object.values(row).some((cell) => cell != null && String(cell).trim() !== '');\n if (hasCell) {\n count += 1;\n }\n }\n return count;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-skill-matrix-widget-column',\n template: `\n @if (assignedCount(); as count) {\n <!-- ----- Assigned skill rows ----- -->\n <span>{{ count }}</span>\n }\n <!-- ----- Empty matrix ----- -->\n @else {\n <span class=\"text-muted\">---</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXLSkillMatrixWidgetColumnComponent extends AXPColumnWidgetComponent<AXPSpreadsheetData> {\n //#region ----- Computed Properties -----\n\n protected assignedCount(): number {\n return assignedRowCount(this.rawValue);\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPSpreadsheetData, AXPSpreadsheetItem } from '@acorex-platform/framework-client/layout/components';\nimport { get } from 'lodash';\nimport { AXMLearningManagementSkillMatrixComponent } from './skill-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-skill-matrix-widget-edit',\n standalone: true,\n imports: [\n AXMLearningManagementSkillMatrixComponent\n],\n template: `\n <axm-skill-matrix\n [titles]=\"titles()\"\n [value]=\"matrixValue()\"\n [skillIds]=\"skillIds()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"handleValueChange($any($event))\"\n (skillIdsChange)=\"handleSkillIdsChange($any($event))\"\n ></axm-skill-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXLSkillMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Titles from context - reactively reads from context data signal\n * This ensures the titles update immediately when requiredLevels changes in context\n */\n protected titles = computed<AXPSpreadsheetItem[]>(() => {\n // Read directly from context data signal for reactive updates\n const contextData = this.contextService.data();\n const requiredLevelsFromContext = get(contextData, 'jobLevelsList') as any[] | undefined;\n\n if (Array.isArray(requiredLevelsFromContext) && requiredLevelsFromContext.length > 0) {\n // Ensure each item has the required structure\n return requiredLevelsFromContext.map((item: any) => {\n if (typeof item === 'string') {\n // If item is just a string (ID), convert to proper format\n return { id: item, title: item };\n }\n // If item is an object, ensure it has id and title\n return {\n id: item.id || item.value || String(item),\n title: item.title || item.name || String(item),\n description: item.description,\n };\n });\n }\n\n // Fallback to options (for initial load or when context is not yet available)\n const options = this.options();\n const rawTitles = options?.['titles'];\n\n // If titles is not set, return empty array\n if (!rawTitles) {\n return [];\n }\n\n // If it's already an array, return it (evaluated expression result)\n if (Array.isArray(rawTitles)) {\n // Ensure each item has the required structure\n return rawTitles.map((item: any) => {\n if (typeof item === 'string') {\n // If item is just a string (ID), convert to proper format\n return { id: item, title: item };\n }\n // If item is an object, ensure it has id and title\n return {\n id: item.id || item.value || String(item),\n title: item.title || item.name || String(item),\n description: item.description,\n };\n });\n }\n\n // If it's still a string (unevaluated expression), return empty array\n // The expression will be evaluated by the widget renderer and options will update\n if (typeof rawTitles === 'string') {\n return [];\n }\n\n return [];\n });\n\n /**\n * Readonly mode from options - properly tracks options signal changes\n */\n protected readonly = computed<boolean>(() => {\n const options = this.options();\n const result = options?.['readonly'] ?? false;\n return result;\n });\n\n /**\n * Current matrix value - tracks getValue signal changes\n */\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n const result = (this.getValue() as AXPSpreadsheetData) || {};\n const keysCount = Object.keys(result).length;\n return result;\n });\n\n /**\n * Skill IDs extracted from matrix data keys or from options\n */\n protected skillIds = computed<string[]>(() => {\n const options = this.options();\n const skillIdsFromOptions = options?.['skillIds'] ?? [];\n\n // If skillIds from options is an array, use it\n if (Array.isArray(skillIdsFromOptions) && skillIdsFromOptions.length > 0) {\n return skillIdsFromOptions;\n }\n\n // Otherwise, extract from matrix data keys\n const matrixData = this.matrixValue();\n return Object.keys(matrixData || {});\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle value change from skill-matrix component\n */\n protected handleValueChange(data: AXPSpreadsheetData): void {\n const dataKeysCount = Object.keys(data || {}).length;\n const currentKeysCount = Object.keys(this.getValue() || {}).length;\n if (data) {\n this.setValue(data);\n const afterKeysCount = Object.keys(this.getValue() || {}).length;\n } else {\n }\n }\n\n /**\n * Handle skill IDs change from skill-matrix component\n * Skill IDs are stored as keys in the matrix data, so this is mainly for tracking\n */\n protected handleSkillIdsChange(skillIds: string[]): void {\n // Skill IDs are already reflected in the matrix data keys\n // This handler is here for potential future use or side effects\n console.log('Skill IDs changed:', skillIds);\n }\n\n //#endregion\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPSpreadsheetData } from '@acorex-platform/framework-client/layout/components';\nimport { AXMLearningManagementSkillMatrixComponent } from './skill-matrix.component';\n\n//#endregion\n\n//#region ---- Component Definition ----\n\n@Component({\n selector: 'axm-skill-matrix-widget-view',\n standalone: true,\n imports: [\n AXMLearningManagementSkillMatrixComponent\n],\n template: `\n <axm-skill-matrix\n [value]=\"matrixValue()\"\n [readonly]=\"true\"\n (valueChange)=\"handleValueChange($any($event))\"\n ></axm-skill-matrix>\n `,\n host: {\n class: 'block w-full',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXLSkillMatrixWidgetViewComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Skill IDs from options\n */\n protected skills = computed<{ id: string; title: string; description?: string }[]>(() => {\n return this.options()['skills'] || [];\n });\n\n /**\n * Current matrix value\n */\n protected matrixValue = computed<AXPSpreadsheetData>(() => {\n return (this.getValue() as AXPSpreadsheetData) || {};\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle value change from skill-matrix component\n */\n protected handleValueChange(data: AXPSpreadsheetData): void {\n if (data) {\n this.setValue(data);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@ import { AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPS
|
|
|
2
2
|
import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex-platform/framework-client/auth';
|
|
3
3
|
import * as _angular_core from '@angular/core';
|
|
4
4
|
import * as i1 from '@acorex-platform/framework-client/layout/widget-core';
|
|
5
|
-
import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
5
|
+
import { AXPColumnWidgetComponent, AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
6
6
|
import { AXPSpreadsheetItem, AXPSpreadsheetData, AXPSpreadsheetCellChangeEvent, AXPSpreadsheetColumn, AXPSpreadsheetRowChangeEvent } from '@acorex-platform/framework-client/layout/components';
|
|
7
7
|
import { AXMLearningManagementSkillEntityModel } from '@acorex-platform/module-learning-management-client/contracts';
|
|
8
8
|
|
|
@@ -154,6 +154,12 @@ declare class AXMLearningManagementSkillMatrixComponent {
|
|
|
154
154
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMLearningManagementSkillMatrixComponent, "axm-skill-matrix", never, { "titles": { "alias": "titles"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "skillIds": { "alias": "skillIds"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "cellChange": "cellChange"; "skillIdsChange": "skillIdsChange"; }, never, never, true, never>;
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
+
declare class AXLSkillMatrixWidgetColumnComponent extends AXPColumnWidgetComponent<AXPSpreadsheetData> {
|
|
158
|
+
protected assignedCount(): number;
|
|
159
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLSkillMatrixWidgetColumnComponent, never>;
|
|
160
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLSkillMatrixWidgetColumnComponent, "axm-skill-matrix-widget-column", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
|
|
161
|
+
}
|
|
162
|
+
|
|
157
163
|
declare class AXLSkillMatrixWidgetEditComponent extends AXPValueWidgetComponent<AXPSpreadsheetData> {
|
|
158
164
|
/**
|
|
159
165
|
* Titles from context - reactively reads from context data signal
|
|
@@ -206,4 +212,4 @@ declare class AXLSkillMatrixWidgetViewComponent extends AXPValueWidgetComponent<
|
|
|
206
212
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLSkillMatrixWidgetViewComponent, "axm-skill-matrix-widget-view", never, {}, {}, never, never, true, never>;
|
|
207
213
|
}
|
|
208
214
|
|
|
209
|
-
export { AXLSkillMatrixWidgetEditComponent, AXLSkillMatrixWidgetViewComponent, AXMLearningManagementMenuProvider, AXMLearningManagementModule, AXMLearningManagementPermissionDefinitionProvider, AXMLearningManagementSearchCommandProvider, AXMLearningManagementSkillMatrixComponent };
|
|
215
|
+
export { AXLSkillMatrixWidgetColumnComponent, AXLSkillMatrixWidgetEditComponent, AXLSkillMatrixWidgetViewComponent, AXMLearningManagementMenuProvider, AXMLearningManagementModule, AXMLearningManagementPermissionDefinitionProvider, AXMLearningManagementSearchCommandProvider, AXMLearningManagementSkillMatrixComponent };
|