@acorex-platform/module-dashboard-management-client 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-Cl4LZc2m.mjs +9057 -0
- package/fesm2022/acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-Cl4LZc2m.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-dashboard-management-client-contracts.mjs +216 -0
- package/fesm2022/acorex-platform-module-dashboard-management-client-contracts.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-dashboard-management-client-index-2e_oRKpO.mjs +133 -0
- package/fesm2022/acorex-platform-module-dashboard-management-client-index-2e_oRKpO.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-dashboard-management-client.mjs +2 -0
- package/fesm2022/acorex-platform-module-dashboard-management-client.mjs.map +1 -0
- package/package.json +28 -0
- package/types/acorex-platform-module-dashboard-management-client-contracts.d.ts +368 -0
- package/types/acorex-platform-module-dashboard-management-client.d.ts +1234 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { get, isString, isArray, castArray } from 'lodash';
|
|
2
|
+
|
|
3
|
+
// Management feature removed - module name is used directly as feature key
|
|
4
|
+
const AXPDashboardManagementFeatureKeys = {};
|
|
5
|
+
|
|
6
|
+
const AXPDashboardManagementMenuKeys = {
|
|
7
|
+
Root: 'DashboardManagement:Menu',
|
|
8
|
+
Dashboards: 'DashboardManagement:Menu:Dashboards',
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Administration capabilities used by this module.
|
|
13
|
+
* Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
|
|
14
|
+
*/
|
|
15
|
+
const AXPAdministrationPermissionKeys = {
|
|
16
|
+
Access: 'Administration:Permission:Access',
|
|
17
|
+
MaintainUsersAndRoles: 'Administration:Permission:MaintainUsersAndRoles',
|
|
18
|
+
ManageSessions: 'Administration:Permission:ManageSessions',
|
|
19
|
+
MaintainPolicies: 'Administration:Permission:MaintainPolicies',
|
|
20
|
+
ViewIntegrations: 'Administration:Permission:ViewIntegrations',
|
|
21
|
+
MaintainConnections: 'Administration:Permission:MaintainConnections',
|
|
22
|
+
MaintainWorkflows: 'Administration:Permission:MaintainWorkflows',
|
|
23
|
+
ManageWorkflowActions: 'Administration:Permission:ManageWorkflowActions',
|
|
24
|
+
ViewRules: 'Administration:Permission:ViewRules',
|
|
25
|
+
MaintainRules: 'Administration:Permission:MaintainRules',
|
|
26
|
+
ManageRuleActions: 'Administration:Permission:ManageRuleActions',
|
|
27
|
+
MaintainAi: 'Administration:Permission:MaintainAi',
|
|
28
|
+
UseAiAssist: 'Administration:Permission:UseAiAssist',
|
|
29
|
+
MaintainDashboards: 'Administration:Permission:MaintainDashboards',
|
|
30
|
+
ViewJobs: 'Administration:Permission:ViewJobs',
|
|
31
|
+
ManageJobActions: 'Administration:Permission:ManageJobActions',
|
|
32
|
+
ViewObservability: 'Administration:Permission:ViewObservability',
|
|
33
|
+
MaintainObservability: 'Administration:Permission:MaintainObservability',
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* @deprecated Prefer {@link AXPAdministrationPermissionKeys}.
|
|
37
|
+
* Legacy nested shape kept so existing imports compile during migration.
|
|
38
|
+
*/
|
|
39
|
+
const AXMPermissionsKeys = {
|
|
40
|
+
DashboardManagement: {
|
|
41
|
+
Management: AXPAdministrationPermissionKeys.MaintainDashboards,
|
|
42
|
+
Dashboard: {
|
|
43
|
+
Management: AXPAdministrationPermissionKeys.MaintainDashboards,
|
|
44
|
+
View: AXPAdministrationPermissionKeys.MaintainDashboards,
|
|
45
|
+
Edit: AXPAdministrationPermissionKeys.MaintainDashboards,
|
|
46
|
+
Delete: AXPAdministrationPermissionKeys.MaintainDashboards,
|
|
47
|
+
Create: AXPAdministrationPermissionKeys.MaintainDashboards,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
var AXPHomeDashboardSetting;
|
|
53
|
+
(function (AXPHomeDashboardSetting) {
|
|
54
|
+
AXPHomeDashboardSetting["CurrentDashboard"] = "DashboardManagement:Setting:Home.CurrentDashboard";
|
|
55
|
+
})(AXPHomeDashboardSetting || (AXPHomeDashboardSetting = {}));
|
|
56
|
+
|
|
57
|
+
/** Component key for the dashboard Layout page tab. Register via AXP_PAGE_COMPONENT_PROVIDER. */
|
|
58
|
+
const DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY = 'dashboard-layout-page';
|
|
59
|
+
|
|
60
|
+
const config = {
|
|
61
|
+
i18n: 'dashboard-management',
|
|
62
|
+
module: 'DashboardManagement',
|
|
63
|
+
};
|
|
64
|
+
/** Builds shared dashboard widget type ids: `{module}:Widget:Dashboard:{Segment}`. */
|
|
65
|
+
const dashboardWidgetId = (segment) => `${config.module}:Widget:Dashboard:${segment}`;
|
|
66
|
+
const RootConfig = {
|
|
67
|
+
config,
|
|
68
|
+
module: {
|
|
69
|
+
module: config.module,
|
|
70
|
+
name: config.module,
|
|
71
|
+
title: `@${config.i18n}:module.title`,
|
|
72
|
+
icon: 'fa-regular fa-tachometer-alt',
|
|
73
|
+
},
|
|
74
|
+
entities: {
|
|
75
|
+
dashboard: {
|
|
76
|
+
name: 'Dashboard',
|
|
77
|
+
title: '@dashboard-management:dashboards.terms.dashboard',
|
|
78
|
+
titlePlural: '@dashboard-management:dashboards.terms.dashboards',
|
|
79
|
+
icon: 'fa-regular fa-tachometer-alt',
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
/** Dashboard widget type ids owned by dashboard-management. */
|
|
83
|
+
widgets: {
|
|
84
|
+
barChart: dashboardWidgetId('BarChart'),
|
|
85
|
+
donutChart: dashboardWidgetId('DonutChart'),
|
|
86
|
+
lineChart: dashboardWidgetId('LineChart'),
|
|
87
|
+
gaugeChart: dashboardWidgetId('GaugeChart'),
|
|
88
|
+
funnelChart: dashboardWidgetId('FunnelChart'),
|
|
89
|
+
heatmapChart: dashboardWidgetId('HeatmapChart'),
|
|
90
|
+
stickyNote: dashboardWidgetId('StickyNote'),
|
|
91
|
+
clockCalendar: dashboardWidgetId('ClockCalendar'),
|
|
92
|
+
weather: dashboardWidgetId('Weather'),
|
|
93
|
+
shortcut: dashboardWidgetId('Shortcut'),
|
|
94
|
+
kpiProgress: dashboardWidgetId('KpiProgress'),
|
|
95
|
+
kpiSegmented: dashboardWidgetId('KpiSegmented'),
|
|
96
|
+
kpiDetails: dashboardWidgetId('KpiDetails'),
|
|
97
|
+
kpiStatCard: dashboardWidgetId('KpiStatCard'),
|
|
98
|
+
},
|
|
99
|
+
/**
|
|
100
|
+
* @deprecated Dashboard queries moved to owning modules (`{Module}:Dashboard:*`).
|
|
101
|
+
* Update seeds/widgets to module keys; these aliases remain for transitional references only.
|
|
102
|
+
*/
|
|
103
|
+
queries: {
|
|
104
|
+
tenantAdmin: {
|
|
105
|
+
activeUsersKpi: `${config.module}:Dashboard:TenantAdmin:ActiveUsersKpi`,
|
|
106
|
+
employeesKpi: `${config.module}:Dashboard:TenantAdmin:EmployeesKpi`,
|
|
107
|
+
openTasksKpi: `${config.module}:Dashboard:TenantAdmin:OpenTasksKpi`,
|
|
108
|
+
activeProjectsKpi: `${config.module}:Dashboard:TenantAdmin:ActiveProjectsKpi`,
|
|
109
|
+
openHazardsKpi: `${config.module}:Dashboard:TenantAdmin:OpenHazardsKpi`,
|
|
110
|
+
documentsKpi: `${config.module}:Dashboard:TenantAdmin:DocumentsKpi`,
|
|
111
|
+
workflowDefinitionsKpi: `${config.module}:Dashboard:TenantAdmin:WorkflowDefinitionsKpi`,
|
|
112
|
+
subscriptionKpi: `${config.module}:Dashboard:TenantAdmin:SubscriptionKpi`,
|
|
113
|
+
usersByRoleDonut: `${config.module}:Dashboard:TenantAdmin:UsersByRoleDonut`,
|
|
114
|
+
taskStatusDonut: `${config.module}:Dashboard:TenantAdmin:TaskStatusDonut`,
|
|
115
|
+
deliveryStatusDonut: `${config.module}:Dashboard:TenantAdmin:DeliveryStatusDonut`,
|
|
116
|
+
integrationsDonut: `${config.module}:Dashboard:TenantAdmin:IntegrationsDonut`,
|
|
117
|
+
jobsByStatusBar: `${config.module}:Dashboard:TenantAdmin:JobsByStatusBar`,
|
|
118
|
+
jobSchedulesByStatusBar: `${config.module}:Dashboard:TenantAdmin:JobSchedulesByStatusBar`,
|
|
119
|
+
workflowsByStatusBar: `${config.module}:Dashboard:TenantAdmin:WorkflowsByStatusBar`,
|
|
120
|
+
teamsBar: `${config.module}:Dashboard:TenantAdmin:TeamsBar`,
|
|
121
|
+
projectsByStatusBar: `${config.module}:Dashboard:TenantAdmin:ProjectsByStatusBar`,
|
|
122
|
+
trainingComplianceGauge: `${config.module}:Dashboard:TenantAdmin:TrainingComplianceGauge`,
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
//#region ---- Dashboard Scope Types ----
|
|
128
|
+
//#endregion
|
|
129
|
+
|
|
130
|
+
//#endregion
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Strict DTOs for dashboard chart / KPI queries.
|
|
134
|
+
* Chart widgets fetch an AXPQuery whose result matches one of these shapes.
|
|
135
|
+
*/
|
|
136
|
+
//#region ---- Result type keys (query metadata `resultType`) ----
|
|
137
|
+
/** Stable result-type ids stored on query definitions for designer filtering. */
|
|
138
|
+
const AXP_CHART_QUERY_RESULT_TYPE = {
|
|
139
|
+
barSeries: 'AXPBarChartQueryResult',
|
|
140
|
+
lineSeries: 'AXPLineChartQueryResult',
|
|
141
|
+
donutSeries: 'AXPDonutChartQueryResult',
|
|
142
|
+
gaugeValue: 'AXPGaugeChartQueryResult',
|
|
143
|
+
funnelSeries: 'AXPFunnelChartQueryResult',
|
|
144
|
+
heatmapSeries: 'AXPHeatmapChartQueryResult',
|
|
145
|
+
kpiStatCard: 'AXPKpiStatCardQueryResult',
|
|
146
|
+
kpiSegmented: 'AXPKpiSegmentedQueryResult',
|
|
147
|
+
kpiProgress: 'AXPKpiProgressQueryResult',
|
|
148
|
+
kpiDetails: 'AXPKpiDetailsQueryResult',
|
|
149
|
+
};
|
|
150
|
+
//#endregion
|
|
151
|
+
|
|
152
|
+
//#region ---- Imports ----
|
|
153
|
+
//#endregion
|
|
154
|
+
//#region ---- Builders ----
|
|
155
|
+
function buildUserScopeRef(userId) {
|
|
156
|
+
return { userId: userId.trim() };
|
|
157
|
+
}
|
|
158
|
+
function buildTenantScopeRef(tenantId, roleIds) {
|
|
159
|
+
return {
|
|
160
|
+
tenantId: tenantId.trim(),
|
|
161
|
+
roleIds: [...new Set(roleIds.map((id) => id.trim()).filter(Boolean))],
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function buildEntityScopeRef(entityType) {
|
|
165
|
+
return { entityType: entityType.trim() };
|
|
166
|
+
}
|
|
167
|
+
//#endregion
|
|
168
|
+
//#region ---- Readers ----
|
|
169
|
+
function readScopeUserId(scopeRef) {
|
|
170
|
+
const userId = get(scopeRef, 'userId');
|
|
171
|
+
return isString(userId) && userId.trim() ? userId.trim() : undefined;
|
|
172
|
+
}
|
|
173
|
+
function readScopeTenantId(scopeRef) {
|
|
174
|
+
const tenantId = get(scopeRef, 'tenantId');
|
|
175
|
+
return isString(tenantId) && tenantId.trim() ? tenantId.trim() : undefined;
|
|
176
|
+
}
|
|
177
|
+
function readScopeRoleIds(scopeRef) {
|
|
178
|
+
const roleIds = get(scopeRef, 'roleIds');
|
|
179
|
+
if (!isArray(roleIds)) {
|
|
180
|
+
return [];
|
|
181
|
+
}
|
|
182
|
+
return roleIds.filter((id) => isString(id) && id.trim().length > 0);
|
|
183
|
+
}
|
|
184
|
+
function readScopeEntityType(scopeRef) {
|
|
185
|
+
const entityType = get(scopeRef, 'entityType');
|
|
186
|
+
return isString(entityType) && entityType.trim() ? entityType.trim() : undefined;
|
|
187
|
+
}
|
|
188
|
+
//#endregion
|
|
189
|
+
//#region ---- Normalization ----
|
|
190
|
+
/**
|
|
191
|
+
* Ensures {@link scopeRef} matches {@link scope} and strips incompatible keys.
|
|
192
|
+
*/
|
|
193
|
+
function normalizeDashboardScopeRef(scope, scopeRef, fallback) {
|
|
194
|
+
switch (scope) {
|
|
195
|
+
case 'U':
|
|
196
|
+
return buildUserScopeRef(readScopeUserId(scopeRef) ?? fallback?.userId ?? '');
|
|
197
|
+
case 'T':
|
|
198
|
+
return buildTenantScopeRef(readScopeTenantId(scopeRef) ?? fallback?.tenantId ?? '', readScopeRoleIds(scopeRef).length > 0
|
|
199
|
+
? readScopeRoleIds(scopeRef)
|
|
200
|
+
: castArray(fallback?.roleIds ?? []));
|
|
201
|
+
case 'E':
|
|
202
|
+
return buildEntityScopeRef(readScopeEntityType(scopeRef) ?? fallback?.entityType ?? '');
|
|
203
|
+
default:
|
|
204
|
+
return buildUserScopeRef(fallback?.userId ?? '');
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
//#endregion
|
|
208
|
+
|
|
209
|
+
//#region ---- Contracts barrel ----
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Generated bundle index. Do not edit.
|
|
213
|
+
*/
|
|
214
|
+
|
|
215
|
+
export { AXMPermissionsKeys, AXPAdministrationPermissionKeys, AXPDashboardManagementFeatureKeys, AXPDashboardManagementMenuKeys, AXPHomeDashboardSetting, AXP_CHART_QUERY_RESULT_TYPE, DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY, RootConfig, buildEntityScopeRef, buildTenantScopeRef, buildUserScopeRef, normalizeDashboardScopeRef, readScopeEntityType, readScopeRoleIds, readScopeTenantId, readScopeUserId };
|
|
216
|
+
//# sourceMappingURL=acorex-platform-module-dashboard-management-client-contracts.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-dashboard-management-client-contracts.mjs","sources":["../../../../libs/modules/dashboard-management/contracts/src/features.keys.ts","../../../../libs/modules/dashboard-management/contracts/src/menu.keys.ts","../../../../libs/modules/dashboard-management/contracts/src/permission.keys.ts","../../../../libs/modules/dashboard-management/contracts/src/settings.keys.ts","../../../../libs/modules/dashboard-management/contracts/src/DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/dashboard-management/contracts/src/root-config.ts","../../../../libs/modules/dashboard-management/contracts/src/dashboard-scope.types.ts","../../../../libs/modules/dashboard-management/contracts/src/dashboard.types.ts","../../../../libs/modules/dashboard-management/contracts/src/chart-query.types.ts","../../../../libs/modules/dashboard-management/contracts/src/entities/dashboard/dashboard-scope.util.ts","../../../../libs/modules/dashboard-management/contracts/src/index.ts","../../../../libs/modules/dashboard-management/contracts/src/acorex-platform-module-dashboard-management-client-contracts.ts"],"sourcesContent":["// Management feature removed - module name is used directly as feature key\nexport const AXPDashboardManagementFeatureKeys = {} as const;\n\n","export const AXPDashboardManagementMenuKeys = {\n Root: 'DashboardManagement:Menu',\n Dashboards: 'DashboardManagement:Menu:Dashboards',\n} as const;\n\n","/**\n * Administration capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPAdministrationPermissionKeys = {\n Access: 'Administration:Permission:Access',\n MaintainUsersAndRoles: 'Administration:Permission:MaintainUsersAndRoles',\n ManageSessions: 'Administration:Permission:ManageSessions',\n MaintainPolicies: 'Administration:Permission:MaintainPolicies',\n ViewIntegrations: 'Administration:Permission:ViewIntegrations',\n MaintainConnections: 'Administration:Permission:MaintainConnections',\n MaintainWorkflows: 'Administration:Permission:MaintainWorkflows',\n ManageWorkflowActions: 'Administration:Permission:ManageWorkflowActions',\n ViewRules: 'Administration:Permission:ViewRules',\n MaintainRules: 'Administration:Permission:MaintainRules',\n ManageRuleActions: 'Administration:Permission:ManageRuleActions',\n MaintainAi: 'Administration:Permission:MaintainAi',\n UseAiAssist: 'Administration:Permission:UseAiAssist',\n MaintainDashboards: 'Administration:Permission:MaintainDashboards',\n ViewJobs: 'Administration:Permission:ViewJobs',\n ManageJobActions: 'Administration:Permission:ManageJobActions',\n ViewObservability: 'Administration:Permission:ViewObservability',\n MaintainObservability: 'Administration:Permission:MaintainObservability',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPAdministrationPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMPermissionsKeys = {\n DashboardManagement: {\n Management: AXPAdministrationPermissionKeys.MaintainDashboards,\n Dashboard: {\n Management: AXPAdministrationPermissionKeys.MaintainDashboards,\n View: AXPAdministrationPermissionKeys.MaintainDashboards,\n Edit: AXPAdministrationPermissionKeys.MaintainDashboards,\n Delete: AXPAdministrationPermissionKeys.MaintainDashboards,\n Create: AXPAdministrationPermissionKeys.MaintainDashboards,\n },\n },\n} as const;\n","export enum AXPHomeDashboardSetting {\n CurrentDashboard = 'DashboardManagement:Setting:Home.CurrentDashboard',\n}\n","/** Component key for the dashboard Layout page tab. Register via AXP_PAGE_COMPONENT_PROVIDER. */\nexport const DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY = 'dashboard-layout-page';\n","const config = {\n i18n: 'dashboard-management',\n module: 'DashboardManagement',\n} as const;\n\n/** Builds shared dashboard widget type ids: `{module}:Widget:Dashboard:{Segment}`. */\nconst dashboardWidgetId = (segment: string): string =>\n `${config.module}:Widget:Dashboard:${segment}`;\n\nexport const RootConfig = {\n config,\n module: {\n module: config.module,\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-regular fa-tachometer-alt',\n },\n entities: {\n dashboard: {\n name: 'Dashboard',\n title: '@dashboard-management:dashboards.terms.dashboard',\n titlePlural: '@dashboard-management:dashboards.terms.dashboards',\n icon: 'fa-regular fa-tachometer-alt',\n },\n },\n /** Dashboard widget type ids owned by dashboard-management. */\n widgets: {\n barChart: dashboardWidgetId('BarChart'),\n donutChart: dashboardWidgetId('DonutChart'),\n lineChart: dashboardWidgetId('LineChart'),\n gaugeChart: dashboardWidgetId('GaugeChart'),\n funnelChart: dashboardWidgetId('FunnelChart'),\n heatmapChart: dashboardWidgetId('HeatmapChart'),\n stickyNote: dashboardWidgetId('StickyNote'),\n clockCalendar: dashboardWidgetId('ClockCalendar'),\n weather: dashboardWidgetId('Weather'),\n shortcut: dashboardWidgetId('Shortcut'),\n kpiProgress: dashboardWidgetId('KpiProgress'),\n kpiSegmented: dashboardWidgetId('KpiSegmented'),\n kpiDetails: dashboardWidgetId('KpiDetails'),\n kpiStatCard: dashboardWidgetId('KpiStatCard'),\n },\n /**\n * @deprecated Dashboard queries moved to owning modules (`{Module}:Dashboard:*`).\n * Update seeds/widgets to module keys; these aliases remain for transitional references only.\n */\n queries: {\n tenantAdmin: {\n activeUsersKpi: `${config.module}:Dashboard:TenantAdmin:ActiveUsersKpi`,\n employeesKpi: `${config.module}:Dashboard:TenantAdmin:EmployeesKpi`,\n openTasksKpi: `${config.module}:Dashboard:TenantAdmin:OpenTasksKpi`,\n activeProjectsKpi: `${config.module}:Dashboard:TenantAdmin:ActiveProjectsKpi`,\n openHazardsKpi: `${config.module}:Dashboard:TenantAdmin:OpenHazardsKpi`,\n documentsKpi: `${config.module}:Dashboard:TenantAdmin:DocumentsKpi`,\n workflowDefinitionsKpi: `${config.module}:Dashboard:TenantAdmin:WorkflowDefinitionsKpi`,\n subscriptionKpi: `${config.module}:Dashboard:TenantAdmin:SubscriptionKpi`,\n usersByRoleDonut: `${config.module}:Dashboard:TenantAdmin:UsersByRoleDonut`,\n taskStatusDonut: `${config.module}:Dashboard:TenantAdmin:TaskStatusDonut`,\n deliveryStatusDonut: `${config.module}:Dashboard:TenantAdmin:DeliveryStatusDonut`,\n integrationsDonut: `${config.module}:Dashboard:TenantAdmin:IntegrationsDonut`,\n jobsByStatusBar: `${config.module}:Dashboard:TenantAdmin:JobsByStatusBar`,\n jobSchedulesByStatusBar: `${config.module}:Dashboard:TenantAdmin:JobSchedulesByStatusBar`,\n workflowsByStatusBar: `${config.module}:Dashboard:TenantAdmin:WorkflowsByStatusBar`,\n teamsBar: `${config.module}:Dashboard:TenantAdmin:TeamsBar`,\n projectsByStatusBar: `${config.module}:Dashboard:TenantAdmin:ProjectsByStatusBar`,\n trainingComplianceGauge: `${config.module}:Dashboard:TenantAdmin:TrainingComplianceGauge`,\n },\n },\n};\n","//#region ---- Dashboard Scope Types ----\n\n/**\n * Dashboard visibility scope.\n * - `T`: Tenant shared dashboard\n * - `U`: User personal dashboard\n * - `E`: Entity-scoped dashboard\n */\nexport type AXMDashboardScope = 'U' | 'T' | 'E';\n\n/** Scope reference for personal dashboards. */\nexport interface AXMDashboardUserScopeRef {\n userId: string;\n}\n\n/** Scope reference for tenant dashboards. */\nexport interface AXMDashboardTenantScopeRef {\n tenantId: string;\n roleIds: string[];\n}\n\n/** Scope reference for entity-type dashboards (one layout shared by all records of the type). */\nexport interface AXMDashboardEntityScopeRef {\n entityType: string;\n}\n\n/**\n * Scope-specific reference payload.\n * Shape depends on {@link AXMDashboardScope}.\n */\nexport type AXMDashboardScopeRef =\n | AXMDashboardUserScopeRef\n | AXMDashboardTenantScopeRef\n | AXMDashboardEntityScopeRef;\n\n//#endregion\n","import type { AXMDashboardScope, AXMDashboardScopeRef } from './dashboard-scope.types';\n\nexport type { AXMDashboardScope, AXMDashboardScopeRef } from './dashboard-scope.types';\n\n//#region ---- Widget Layout Contract Types ----\n\n/** Grid size preset as `[width, height]` in column/row units. */\nexport type AXGridLayoutSize = readonly [width: number, height: number];\n\nexport interface AXGridLayoutNode {\n id?: string;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n minWidth?: number;\n minHeight?: number;\n maxWidth?: number;\n maxHeight?: number;\n /** When set, resize snaps to one of these `[width, height]` presets. */\n allowedSizes?: readonly AXGridLayoutSize[];\n}\n\nexport type AXMDashboardBreakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\n\nexport interface AXMDashboardWidgetLayoutMap {\n id: string;\n title?: string;\n lg: AXGridLayoutNode;\n md: AXGridLayoutNode;\n sm: AXGridLayoutNode;\n xl?: AXGridLayoutNode;\n '2xl'?: AXGridLayoutNode;\n '3xl'?: AXGridLayoutNode;\n '4xl'?: AXGridLayoutNode;\n}\n\nexport interface AXMDashboardWidgetData {\n config: AXMDashboardWidgetLayoutMap;\n node?: unknown;\n}\n\n//#endregion\n\n//#region ---- Dashboard Entity Contract Types ----\n\nexport type AXPMultiLanguageString = string | Record<string, string>;\n\nexport interface AXPEntityModel<Id> {\n id: Id;\n auditInfo?: {\n created?: { at?: string | Date; by?: { id: string; type?: string } };\n updated?: { at?: string | Date; by?: { id: string; type?: string } };\n };\n stateInfo?: Record<string, unknown>;\n scopeInfo?: { tenantId?: string; userId?: string; applicationId?: string };\n}\n\nexport interface AXMCommonDashboardEntityModel extends AXPEntityModel<string> {\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n widgets: AXMDashboardWidgetData[];\n isArchived?: boolean;\n archivedAt?: string | Date;\n locked?: boolean;\n scope: AXMDashboardScope;\n scopeRef: AXMDashboardScopeRef;\n categoryIds?: string[];\n}\n\n//#endregion\n","/**\n * Strict DTOs for dashboard chart / KPI queries.\n * Chart widgets fetch an AXPQuery whose result matches one of these shapes.\n */\n\n//#region ---- Result type keys (query metadata `resultType`) ----\n\n/** Stable result-type ids stored on query definitions for designer filtering. */\nexport const AXP_CHART_QUERY_RESULT_TYPE = {\n barSeries: 'AXPBarChartQueryResult',\n lineSeries: 'AXPLineChartQueryResult',\n donutSeries: 'AXPDonutChartQueryResult',\n gaugeValue: 'AXPGaugeChartQueryResult',\n funnelSeries: 'AXPFunnelChartQueryResult',\n heatmapSeries: 'AXPHeatmapChartQueryResult',\n kpiStatCard: 'AXPKpiStatCardQueryResult',\n kpiSegmented: 'AXPKpiSegmentedQueryResult',\n kpiProgress: 'AXPKpiProgressQueryResult',\n kpiDetails: 'AXPKpiDetailsQueryResult',\n} as const;\n\nexport type AXPChartQueryResultType =\n (typeof AXP_CHART_QUERY_RESULT_TYPE)[keyof typeof AXP_CHART_QUERY_RESULT_TYPE];\n\n//#endregion\n\n//#region ---- Series item shapes ----\n\nexport interface AXPBarChartQueryItem {\n id: string;\n label: string;\n value: number;\n color?: string;\n tooltipLabel?: string;\n}\n\nexport interface AXPLineChartQueryPoint {\n x: number | string;\n y: number;\n tooltipLabel?: string;\n}\n\nexport interface AXPLineChartQuerySeries {\n id?: string;\n label?: string;\n lineColor?: string;\n fillColor?: string;\n data: AXPLineChartQueryPoint[];\n}\n\nexport interface AXPDonutChartQueryItem {\n id: string;\n label: string;\n value: number;\n color?: string;\n tooltipLabel?: string;\n}\n\nexport interface AXPFunnelChartQueryItem {\n id?: string;\n name: string;\n value: number;\n color?: string;\n}\n\nexport interface AXPHeatmapChartQueryItem {\n x: number | string;\n y: number | string;\n value: number;\n label?: string;\n}\n\n//#endregion\n\n//#region ---- Query result envelopes ----\n\nexport interface AXPBarChartQueryResult {\n items: AXPBarChartQueryItem[];\n}\n\nexport interface AXPLineChartQueryResult {\n series: AXPLineChartQuerySeries[];\n}\n\nexport interface AXPDonutChartQueryResult {\n items: AXPDonutChartQueryItem[];\n}\n\nexport interface AXPGaugeChartQueryResult {\n value: number;\n}\n\nexport interface AXPFunnelChartQueryResult {\n items: AXPFunnelChartQueryItem[];\n}\n\nexport interface AXPHeatmapChartQueryResult {\n items: AXPHeatmapChartQueryItem[];\n}\n\nexport interface AXPKpiStatCardQueryResult {\n title?: string;\n titleBadgeText?: string;\n titleBadgeTone?: string;\n value?: number | string;\n valuePrefix?: string;\n valueSuffix?: string;\n format?: {\n style?: 'decimal' | 'currency' | 'percent';\n currency?: string;\n minimumFractionDigits?: number;\n maximumFractionDigits?: number;\n };\n icon?: string;\n iconTone?: string;\n trendValue?: string;\n trendLabel?: string;\n trendStatus?: 'success' | 'danger' | 'neutral';\n}\n\nexport interface AXPKpiSegmentedQueryResult {\n title?: string;\n icon?: string;\n segments: Array<{ label: string; value: number; color?: string }>;\n}\n\nexport interface AXPKpiProgressQueryResult {\n title?: string;\n icon?: string;\n value?: number | string;\n valuePrefix?: string;\n valueSuffix?: string;\n subtitle?: string;\n targetValue?: number | string;\n progressValue?: number;\n progressPercent?: number;\n}\n\nexport interface AXPKpiDetailsQueryResult {\n title?: string;\n value?: number | string;\n valuePrefix?: string;\n valueSuffix?: string;\n subtitle?: string;\n details: Array<{ label: string; value: string | number; color?: string }>;\n}\n\n//#endregion\n\n//#region ---- Widget options ----\n\n/** Chart/KPI widget options for data binding (dashboard query and/or AI inline data). */\nexport interface AXPChartQueryWidgetOptions {\n /** Runtime AXPQuery key (e.g. `PlatformManagement:Dashboard:TenantsByStatusBar`). */\n query?: string;\n /** Optional input payload passed to `queryExecutor.fetch(query, queryInput)`. */\n queryInput?: Record<string, unknown>;\n /** Inline chart rows/series for AI chat (see chart-widget-data.util.ts). */\n dataSource?: unknown;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { castArray, get, isArray, isString } from 'lodash';\n\nimport type {\n AXMDashboardEntityScopeRef,\n AXMDashboardScope,\n AXMDashboardScopeRef,\n AXMDashboardTenantScopeRef,\n AXMDashboardUserScopeRef,\n} from '../../dashboard-scope.types';\n\n//#endregion\n\n//#region ---- Builders ----\n\nexport function buildUserScopeRef(userId: string): AXMDashboardUserScopeRef {\n return { userId: userId.trim() };\n}\n\nexport function buildTenantScopeRef(tenantId: string, roleIds: readonly string[]): AXMDashboardTenantScopeRef {\n return {\n tenantId: tenantId.trim(),\n roleIds: [...new Set(roleIds.map((id) => id.trim()).filter(Boolean))],\n };\n}\n\nexport function buildEntityScopeRef(entityType: string): AXMDashboardEntityScopeRef {\n return { entityType: entityType.trim() };\n}\n\n//#endregion\n\n//#region ---- Readers ----\n\nexport function readScopeUserId(scopeRef: AXMDashboardScopeRef | undefined): string | undefined {\n const userId = get(scopeRef, 'userId');\n return isString(userId) && userId.trim() ? userId.trim() : undefined;\n}\n\nexport function readScopeTenantId(scopeRef: AXMDashboardScopeRef | undefined): string | undefined {\n const tenantId = get(scopeRef, 'tenantId');\n return isString(tenantId) && tenantId.trim() ? tenantId.trim() : undefined;\n}\n\nexport function readScopeRoleIds(scopeRef: AXMDashboardScopeRef | undefined): string[] {\n const roleIds = get(scopeRef, 'roleIds');\n if (!isArray(roleIds)) {\n return [];\n }\n return roleIds.filter((id): id is string => isString(id) && id.trim().length > 0);\n}\n\nexport function readScopeEntityType(scopeRef: AXMDashboardScopeRef | undefined): string | undefined {\n const entityType = get(scopeRef, 'entityType');\n return isString(entityType) && entityType.trim() ? entityType.trim() : undefined;\n}\n\n//#endregion\n\n//#region ---- Normalization ----\n\n/**\n * Ensures {@link scopeRef} matches {@link scope} and strips incompatible keys.\n */\nexport function normalizeDashboardScopeRef(\n scope: AXMDashboardScope,\n scopeRef: unknown,\n fallback?: Partial<{\n userId: string;\n tenantId: string;\n roleIds: readonly string[];\n entityType: string;\n }>,\n): AXMDashboardScopeRef {\n switch (scope) {\n case 'U':\n return buildUserScopeRef(readScopeUserId(scopeRef as AXMDashboardScopeRef) ?? fallback?.userId ?? '');\n case 'T':\n return buildTenantScopeRef(\n readScopeTenantId(scopeRef as AXMDashboardScopeRef) ?? fallback?.tenantId ?? '',\n readScopeRoleIds(scopeRef as AXMDashboardScopeRef).length > 0\n ? readScopeRoleIds(scopeRef as AXMDashboardScopeRef)\n : castArray(fallback?.roleIds ?? []),\n );\n case 'E':\n return buildEntityScopeRef(\n readScopeEntityType(scopeRef as AXMDashboardScopeRef) ?? fallback?.entityType ?? '',\n );\n default:\n return buildUserScopeRef(fallback?.userId ?? '');\n }\n}\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './features.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './settings.keys';\n\nexport * from './DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY';\n\nexport * from './root-config';\n\nexport * from './dashboard-scope.types';\nexport * from './dashboard.types';\nexport * from './chart-query.types';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;AACO,MAAM,iCAAiC,GAAG;;ACD1C,MAAM,8BAA8B,GAAG;AAC1C,IAAA,IAAI,EAAE,0BAA0B;AAChC,IAAA,UAAU,EAAE,qCAAqC;;;ACFrD;;;AAGG;AACI,MAAM,+BAA+B,GAAG;AAC7C,IAAA,MAAM,EAAE,kCAAkC;AAC1C,IAAA,qBAAqB,EAAE,iDAAiD;AACxE,IAAA,cAAc,EAAE,0CAA0C;AAC1D,IAAA,gBAAgB,EAAE,4CAA4C;AAC9D,IAAA,gBAAgB,EAAE,4CAA4C;AAC9D,IAAA,mBAAmB,EAAE,+CAA+C;AACpE,IAAA,iBAAiB,EAAE,6CAA6C;AAChE,IAAA,qBAAqB,EAAE,iDAAiD;AACxE,IAAA,SAAS,EAAE,qCAAqC;AAChD,IAAA,aAAa,EAAE,yCAAyC;AACxD,IAAA,iBAAiB,EAAE,6CAA6C;AAChE,IAAA,UAAU,EAAE,sCAAsC;AAClD,IAAA,WAAW,EAAE,uCAAuC;AACpD,IAAA,kBAAkB,EAAE,8CAA8C;AAClE,IAAA,QAAQ,EAAE,oCAAoC;AAC9C,IAAA,gBAAgB,EAAE,4CAA4C;AAC9D,IAAA,iBAAiB,EAAE,6CAA6C;AAChE,IAAA,qBAAqB,EAAE,iDAAiD;;AAG1E;;;AAGG;AACI,MAAM,kBAAkB,GAAG;AAChC,IAAA,mBAAmB,EAAE;QACnB,UAAU,EAAE,+BAA+B,CAAC,kBAAkB;AAC9D,QAAA,SAAS,EAAE;YACT,UAAU,EAAE,+BAA+B,CAAC,kBAAkB;YAC9D,IAAI,EAAE,+BAA+B,CAAC,kBAAkB;YACxD,IAAI,EAAE,+BAA+B,CAAC,kBAAkB;YACxD,MAAM,EAAE,+BAA+B,CAAC,kBAAkB;YAC1D,MAAM,EAAE,+BAA+B,CAAC,kBAAkB;AAC3D,SAAA;AACF,KAAA;;;ICvCS;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,kBAAA,CAAA,GAAA,mDAAsE;AACxE,CAAC,EAFW,uBAAuB,KAAvB,uBAAuB,GAAA,EAAA,CAAA,CAAA;;ACAnC;AACO,MAAM,mCAAmC,GAAG;;ACDnD,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,sBAAsB;AAC5B,IAAA,MAAM,EAAE,qBAAqB;CACrB;AAEV;AACA,MAAM,iBAAiB,GAAG,CAAC,OAAe,KACxC,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,kBAAA,EAAqB,OAAO,EAAE;AAEzC,MAAM,UAAU,GAAG;IACxB,MAAM;AACN,IAAA,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,MAAM;AACnB,QAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,aAAA,CAAe;AACrC,QAAA,IAAI,EAAE,8BAA8B;AACrC,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,KAAK,EAAE,kDAAkD;AACzD,YAAA,WAAW,EAAE,mDAAmD;AAChE,YAAA,IAAI,EAAE,8BAA8B;AACrC,SAAA;AACF,KAAA;;AAED,IAAA,OAAO,EAAE;AACP,QAAA,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC;AACvC,QAAA,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC;AAC3C,QAAA,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC;AACzC,QAAA,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC;AAC3C,QAAA,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC;AAC7C,QAAA,YAAY,EAAE,iBAAiB,CAAC,cAAc,CAAC;AAC/C,QAAA,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC;AAC3C,QAAA,aAAa,EAAE,iBAAiB,CAAC,eAAe,CAAC;AACjD,QAAA,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC;AACrC,QAAA,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC;AACvC,QAAA,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC;AAC7C,QAAA,YAAY,EAAE,iBAAiB,CAAC,cAAc,CAAC;AAC/C,QAAA,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC;AAC3C,QAAA,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC;AAC9C,KAAA;AACD;;;AAGG;AACH,IAAA,OAAO,EAAE;AACP,QAAA,WAAW,EAAE;AACX,YAAA,cAAc,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,qCAAA,CAAuC;AACvE,YAAA,YAAY,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,mCAAA,CAAqC;AACnE,YAAA,YAAY,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,mCAAA,CAAqC;AACnE,YAAA,iBAAiB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,wCAAA,CAA0C;AAC7E,YAAA,cAAc,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,qCAAA,CAAuC;AACvE,YAAA,YAAY,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,mCAAA,CAAqC;AACnE,YAAA,sBAAsB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,6CAAA,CAA+C;AACvF,YAAA,eAAe,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,sCAAA,CAAwC;AACzE,YAAA,gBAAgB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,uCAAA,CAAyC;AAC3E,YAAA,eAAe,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,sCAAA,CAAwC;AACzE,YAAA,mBAAmB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,0CAAA,CAA4C;AACjF,YAAA,iBAAiB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,wCAAA,CAA0C;AAC7E,YAAA,eAAe,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,sCAAA,CAAwC;AACzE,YAAA,uBAAuB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,8CAAA,CAAgD;AACzF,YAAA,oBAAoB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,2CAAA,CAA6C;AACnF,YAAA,QAAQ,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,+BAAA,CAAiC;AAC3D,YAAA,mBAAmB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,0CAAA,CAA4C;AACjF,YAAA,uBAAuB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,8CAAA,CAAgD;AAC1F,SAAA;AACF,KAAA;;;ACnEH;AAmCA;;ACmCA;;ACtEA;;;AAGG;AAEH;AAEA;AACO,MAAM,2BAA2B,GAAG;AACzC,IAAA,SAAS,EAAE,wBAAwB;AACnC,IAAA,UAAU,EAAE,yBAAyB;AACrC,IAAA,WAAW,EAAE,0BAA0B;AACvC,IAAA,UAAU,EAAE,0BAA0B;AACtC,IAAA,YAAY,EAAE,2BAA2B;AACzC,IAAA,aAAa,EAAE,4BAA4B;AAC3C,IAAA,WAAW,EAAE,2BAA2B;AACxC,IAAA,YAAY,EAAE,4BAA4B;AAC1C,IAAA,WAAW,EAAE,2BAA2B;AACxC,IAAA,UAAU,EAAE,0BAA0B;;AA+IxC;;ACjKA;AAYA;AAEA;AAEM,SAAU,iBAAiB,CAAC,MAAc,EAAA;IAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE;AAClC;AAEM,SAAU,mBAAmB,CAAC,QAAgB,EAAE,OAA0B,EAAA;IAC9E,OAAO;AACL,QAAA,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE;QACzB,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;KACtE;AACH;AAEM,SAAU,mBAAmB,CAAC,UAAkB,EAAA;IACpD,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE;AAC1C;AAEA;AAEA;AAEM,SAAU,eAAe,CAAC,QAA0C,EAAA;IACxE,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACtC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,SAAS;AACtE;AAEM,SAAU,iBAAiB,CAAC,QAA0C,EAAA;IAC1E,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC1C,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,SAAS;AAC5E;AAEM,SAAU,gBAAgB,CAAC,QAA0C,EAAA;IACzE,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC;AACxC,IAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACrB,QAAA,OAAO,EAAE;IACX;IACA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAmB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACnF;AAEM,SAAU,mBAAmB,CAAC,QAA0C,EAAA;IAC5E,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC;IAC9C,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,SAAS;AAClF;AAEA;AAEA;AAEA;;AAEG;SACa,0BAA0B,CACxC,KAAwB,EACxB,QAAiB,EACjB,QAKE,EAAA;IAEF,QAAQ,KAAK;AACX,QAAA,KAAK,GAAG;AACN,YAAA,OAAO,iBAAiB,CAAC,eAAe,CAAC,QAAgC,CAAC,IAAI,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;AACvG,QAAA,KAAK,GAAG;YACN,OAAO,mBAAmB,CACxB,iBAAiB,CAAC,QAAgC,CAAC,IAAI,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAC/E,gBAAgB,CAAC,QAAgC,CAAC,CAAC,MAAM,GAAG;AAC1D,kBAAE,gBAAgB,CAAC,QAAgC;kBACjD,SAAS,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,CACvC;AACH,QAAA,KAAK,GAAG;AACN,YAAA,OAAO,mBAAmB,CACxB,mBAAmB,CAAC,QAAgC,CAAC,IAAI,QAAQ,EAAE,UAAU,IAAI,EAAE,CACpF;AACH,QAAA;YACE,OAAO,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;;AAEtD;AAEA;;AC9FA;;ACAA;;AAEG;;;;"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import * as contracts from '@acorex-platform/module-dashboard-management-client/contracts';
|
|
2
|
+
import { DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY } from '@acorex-platform/module-dashboard-management-client/contracts';
|
|
3
|
+
export * from '@acorex-platform/module-dashboard-management-client/contracts';
|
|
4
|
+
import { A as AXMDashboardStore, a as AXMDashboardGridLayoutSectionComponent, D as DASHBOARD_LAYOUT_ENTITY_MODE } from './acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-Cl4LZc2m.mjs';
|
|
5
|
+
import * as i0 from '@angular/core';
|
|
6
|
+
import { Injectable, inject, input, signal, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
7
|
+
import { resolveMultiLanguageString } from '@acorex/core/translation';
|
|
8
|
+
import { AXPDesignerService } from '@acorex-platform/framework-client/layout/designer';
|
|
9
|
+
import { AXPPageLayoutBaseComponent, AXPPageLayoutBase } from '@acorex-platform/framework-client/layout/views';
|
|
10
|
+
|
|
11
|
+
//#region ---- Dashboard layout page provider ----
|
|
12
|
+
class AXMDashboardLayoutPageComponentProvider {
|
|
13
|
+
async components() {
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
key: DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY,
|
|
17
|
+
loader: () => Promise.resolve().then(function () { return dashboardLayoutPage_component; }).then((m) => m.AXMDashboardLayoutPageComponent),
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDashboardLayoutPageComponentProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
22
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDashboardLayoutPageComponentProvider }); }
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDashboardLayoutPageComponentProvider, decorators: [{
|
|
25
|
+
type: Injectable
|
|
26
|
+
}] });
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
class AXMDashboardLayoutPageComponent extends AXPPageLayoutBaseComponent {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(...arguments);
|
|
32
|
+
//#region ---- Services & Dependencies ----
|
|
33
|
+
this.store = inject(AXMDashboardStore);
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region ---- Inputs (entity page renderer) ----
|
|
36
|
+
this.rootContext = input(/* @ts-ignore */
|
|
37
|
+
...(ngDevMode ? [undefined, { debugName: "rootContext" }] : /* istanbul ignore next */ []));
|
|
38
|
+
this.pageConfig = input(/* @ts-ignore */
|
|
39
|
+
...(ngDevMode ? [undefined, { debugName: "pageConfig" }] : /* istanbul ignore next */ []));
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region ---- Local state ----
|
|
42
|
+
this.context = signal({}, /* @ts-ignore */
|
|
43
|
+
...(ngDevMode ? [{ debugName: "context" }] : /* istanbul ignore next */ []));
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region ---- Effects ----
|
|
46
|
+
this.#syncFromRootContext = effect(() => {
|
|
47
|
+
const ctx = this.rootContext();
|
|
48
|
+
if (!ctx || typeof ctx['id'] !== 'string') {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.store.hydrateFromEntityDetailModel(ctx);
|
|
52
|
+
this.context.set({ ...ctx });
|
|
53
|
+
}, /* @ts-ignore */
|
|
54
|
+
...(ngDevMode ? [{ debugName: "#syncFromRootContext" }] : /* istanbul ignore next */ []));
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
//#region ---- Effects ----
|
|
58
|
+
#syncFromRootContext;
|
|
59
|
+
//#endregion
|
|
60
|
+
//#region ---- Page chrome (AXPPageLayoutBase) ----
|
|
61
|
+
getPageTitle() {
|
|
62
|
+
const title = this.store.selectedDashboard()?.title;
|
|
63
|
+
if (title == null || title === '') {
|
|
64
|
+
return '';
|
|
65
|
+
}
|
|
66
|
+
return resolveMultiLanguageString(title, 'en-US');
|
|
67
|
+
}
|
|
68
|
+
async getPageDescription() {
|
|
69
|
+
const raw = this.store.selectedDashboard()?.description;
|
|
70
|
+
if (raw == null || raw === '') {
|
|
71
|
+
return '';
|
|
72
|
+
}
|
|
73
|
+
if (typeof raw === 'object' && !Array.isArray(raw) && this.translateService.isValidMultiLanguageObject(raw)) {
|
|
74
|
+
return this.translateService.resolve(raw);
|
|
75
|
+
}
|
|
76
|
+
return String(raw);
|
|
77
|
+
}
|
|
78
|
+
async getPrimaryMenuItems() {
|
|
79
|
+
return [
|
|
80
|
+
{
|
|
81
|
+
title: await this.translateService.translateAsync('@general:actions.add-item.title'),
|
|
82
|
+
icon: 'fa-light fa-square-plus',
|
|
83
|
+
color: 'primary',
|
|
84
|
+
items: [
|
|
85
|
+
{
|
|
86
|
+
title: await this.translateService.translateAsync('@dashboard:widget'),
|
|
87
|
+
icon: 'fa-light fa-window-restore',
|
|
88
|
+
command: { name: 'new-widget' },
|
|
89
|
+
disabled: this.store.isDashboardLocked(),
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
async execute(command) {
|
|
96
|
+
switch (command.name) {
|
|
97
|
+
case 'new-widget':
|
|
98
|
+
await this.store.addWidget();
|
|
99
|
+
this.recompute();
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDashboardLayoutPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
104
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXMDashboardLayoutPageComponent, isStandalone: true, selector: "axm-dashboard-layout-page", inputs: { rootContext: { classPropertyName: "rootContext", publicName: "rootContext", isSignal: true, isRequired: false, transformFunction: null }, pageConfig: { classPropertyName: "pageConfig", publicName: "pageConfig", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
105
|
+
AXPDesignerService,
|
|
106
|
+
{ provide: DASHBOARD_LAYOUT_ENTITY_MODE, useValue: true },
|
|
107
|
+
AXMDashboardStore,
|
|
108
|
+
{
|
|
109
|
+
provide: AXPPageLayoutBase,
|
|
110
|
+
useExisting: AXMDashboardLayoutPageComponent,
|
|
111
|
+
},
|
|
112
|
+
], usesInheritance: true, ngImport: i0, template: "<axm-dashboard-grid-layout-section\n [widgetsContext]=\"context()\"\n (addWidget)=\"execute({ name: 'new-widget' })\"\n></axm-dashboard-grid-layout-section>\n", dependencies: [{ kind: "component", type: AXMDashboardGridLayoutSectionComponent, selector: "axm-dashboard-grid-layout-section", inputs: ["widgetsContext", "loadingVariant", "enableCanvasContextMenu", "isTenantDashboardReadOnly"], outputs: ["addWidget", "canvasContextMenuCommand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
113
|
+
}
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDashboardLayoutPageComponent, decorators: [{
|
|
115
|
+
type: Component,
|
|
116
|
+
args: [{ selector: 'axm-dashboard-layout-page', imports: [AXMDashboardGridLayoutSectionComponent], providers: [
|
|
117
|
+
AXPDesignerService,
|
|
118
|
+
{ provide: DASHBOARD_LAYOUT_ENTITY_MODE, useValue: true },
|
|
119
|
+
AXMDashboardStore,
|
|
120
|
+
{
|
|
121
|
+
provide: AXPPageLayoutBase,
|
|
122
|
+
useExisting: AXMDashboardLayoutPageComponent,
|
|
123
|
+
},
|
|
124
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<axm-dashboard-grid-layout-section\n [widgetsContext]=\"context()\"\n (addWidget)=\"execute({ name: 'new-widget' })\"\n></axm-dashboard-grid-layout-section>\n" }]
|
|
125
|
+
}], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }] } });
|
|
126
|
+
|
|
127
|
+
var dashboardLayoutPage_component = /*#__PURE__*/Object.freeze({
|
|
128
|
+
__proto__: null,
|
|
129
|
+
AXMDashboardLayoutPageComponent: AXMDashboardLayoutPageComponent
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
export { AXMDashboardLayoutPageComponent, AXMDashboardLayoutPageComponentProvider, DASHBOARD_LAYOUT_ENTITY_MODE };
|
|
133
|
+
//# sourceMappingURL=acorex-platform-module-dashboard-management-client-index-2e_oRKpO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-dashboard-management-client-index-2e_oRKpO.mjs","sources":["../../../../libs/modules/dashboard-management/client/src/lib/features/dashboard-layout-page/dashboard-layout-page-component.provider.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/dashboard-layout-page/dashboard-layout-page.component.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/dashboard-layout-page/dashboard-layout-page.component.html"],"sourcesContent":["import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY } from '@acorex-platform/module-dashboard-management-client/contracts';\n\n//#region ---- Dashboard layout page provider ----\n\n@Injectable()\nexport class AXMDashboardLayoutPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./dashboard-layout-page.component').then((m) => m.AXMDashboardLayoutPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex-platform/framework-shared/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nimport { resolveMultiLanguageString } from '@acorex/core/translation';\n\nimport { AXPDesignerService } from '@acorex-platform/framework-client/layout/designer';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';\n\nimport { AXMCommonDashboardEntityModel } from '@acorex-platform/module-dashboard-management-client/contracts';\nimport { AXMDashboardStore } from '../dashboard-services/home-dashboard.store';\nimport { AXMDashboardGridLayoutSectionComponent } from '../shared/dashboard-grid-layout-section';\nimport { DASHBOARD_LAYOUT_ENTITY_MODE } from './dashboard-layout-entity-mode.token';\n\n//#endregion\n\n@Component({\n selector: 'axm-dashboard-layout-page',\n templateUrl: './dashboard-layout-page.component.html',\n imports: [AXMDashboardGridLayoutSectionComponent],\n providers: [\n AXPDesignerService,\n { provide: DASHBOARD_LAYOUT_ENTITY_MODE, useValue: true },\n AXMDashboardStore,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMDashboardLayoutPageComponent,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMDashboardLayoutPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Services & Dependencies ----\n\n protected readonly store = inject(AXMDashboardStore);\n\n //#endregion\n\n //#region ---- Inputs (entity page renderer) ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Local state ----\n\n protected readonly context = signal<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ---- Effects ----\n\n #syncFromRootContext = effect(() => {\n const ctx = this.rootContext();\n if (!ctx || typeof ctx['id'] !== 'string') {\n return;\n }\n this.store.hydrateFromEntityDetailModel(ctx as unknown as AXMCommonDashboardEntityModel);\n this.context.set({ ...ctx });\n });\n\n //#endregion\n\n //#region ---- Page chrome (AXPPageLayoutBase) ----\n\n override getPageTitle(): string {\n const title = this.store.selectedDashboard()?.title;\n if (title == null || title === '') {\n return '';\n }\n return resolveMultiLanguageString(title, 'en-US');\n }\n\n override async getPageDescription(): Promise<string> {\n const raw = this.store.selectedDashboard()?.description;\n if (raw == null || raw === '') {\n return '';\n }\n if (typeof raw === 'object' && !Array.isArray(raw) && this.translateService.isValidMultiLanguageObject(raw)) {\n return this.translateService.resolve(raw);\n }\n return String(raw);\n }\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n title: await this.translateService.translateAsync('@general:actions.add-item.title'),\n icon: 'fa-light fa-square-plus',\n color: 'primary',\n items: [\n {\n title: await this.translateService.translateAsync('@dashboard:widget'),\n icon: 'fa-light fa-window-restore',\n command: { name: 'new-widget' },\n disabled: this.store.isDashboardLocked(),\n },\n ],\n },\n ];\n }\n\n override async execute(command: AXPExecuteCommand): Promise<void> {\n switch (command.name) {\n case 'new-widget':\n await this.store.addWidget();\n this.recompute();\n break;\n }\n }\n\n //#endregion\n}\n","<axm-dashboard-grid-layout-section\n [widgetsContext]=\"context()\"\n (addWidget)=\"execute({ name: 'new-widget' })\"\n></axm-dashboard-grid-layout-section>\n"],"names":[],"mappings":";;;;;;;;;;AAOA;MAGa,uCAAuC,CAAA;AAClD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,mCAAmC;AACxC,gBAAA,MAAM,EAAE,MACN,6EAA2C,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,+BAA+B,CAAC;AAC7F,aAAA;SACF;IACH;8GATW,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvC,uCAAuC,EAAA,CAAA,CAAA;;2FAAvC,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBADnD;;;ACaD;AAiBM,MAAO,+BAAgC,SAAQ,0BAA0B,CAAA;AAf/E,IAAA,WAAA,GAAA;;;AAkBqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;;;AAMpD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAA2B;AAC9C,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK;kGAA2B;;;QAM1B,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,EAAE;oFAAC;;;AAMhE,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,MAAK;AACjC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;YAC9B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;gBACzC;YACF;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,GAA+C,CAAC;YACxF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;QAC9B,CAAC;iGAAC;AAqDH,IAAA;;;AA5DC,IAAA,oBAAoB;;;IAaX,YAAY,GAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK;QACnD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AACjC,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC;IACnD;AAES,IAAA,MAAM,kBAAkB,GAAA;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,WAAW;QACvD,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE;AAC7B,YAAA,OAAO,EAAE;QACX;QACA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAE;YAC3G,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;QAC3C;AACA,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB;AAES,IAAA,MAAM,mBAAmB,GAAA;QAChC,OAAO;AACL,YAAA;gBACE,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,iCAAiC,CAAC;AACpF,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE;AACL,oBAAA;wBACE,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,mBAAmB,CAAC;AACtE,wBAAA,IAAI,EAAE,4BAA4B;AAClC,wBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC/B,wBAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;AACzC,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH;IAES,MAAM,OAAO,CAAC,OAA0B,EAAA;AAC/C,QAAA,QAAQ,OAAO,CAAC,IAAI;AAClB,YAAA,KAAK,YAAY;AACf,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBAC5B,IAAI,CAAC,SAAS,EAAE;gBAChB;;IAEN;8GA/EW,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAX/B;YACT,kBAAkB;AAClB,YAAA,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzD,iBAAiB;AACjB,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,+BAA+B;AAC7C,aAAA;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpCH,kKAIA,4CDuBY,sCAAsC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAYrC,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAf3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAE5B,CAAC,sCAAsC,CAAC,EAAA,SAAA,EACtC;wBACT,kBAAkB;AAClB,wBAAA,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI,EAAE;wBACzD,iBAAiB;AACjB,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,+BAAiC;AAC7C,yBAAA;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kKAAA,EAAA;;;;;;;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { b as AXMAddDashboardPopup, c as AXMConfigurationPopup, d as AXMDashboardHomeComponent, e as AXMDashboardManagementModule, f as AXMDashboardPopupService, A as AXMDashboardStore, g as AXMDashboardWidgetWrapperComponent, h as AXPBarChartWidget, i as AXPBarChartWidgetViewComponent, j as AXPClockCalendarWidget, k as AXPClockCalendarWidgetViewComponent, l as AXPDASHBOARD_ENTITY_CONTEXT_KEY, m as AXPDashboardWidgetComponent, n as AXPDonutChartWidget, o as AXPDonutChartWidgetViewComponent, p as AXPFunnelChartWidget, q as AXPFunnelChartWidgetViewComponent, r as AXPGaugeChartWidget, s as AXPGaugeChartWidgetViewComponent, t as AXPHeatmapChartWidget, u as AXPHeatmapChartWidgetViewComponent, v as AXPKpiDetailsWidget, w as AXPKpiDetailsWidgetViewComponent, x as AXPKpiProgressWidget, y as AXPKpiProgressWidgetViewComponent, z as AXPKpiSegmentedWidget, B as AXPKpiSegmentedWidgetViewComponent, C as AXPKpiStatCardWidget, E as AXPKpiStatCardWidgetViewComponent, F as AXPLineChartWidget, G as AXPLineChartWidgetViewComponent, H as AXPShortcutWidget, I as AXPShortcutWidgetViewComponent, J as AXPStickyNoteWidget, K as AXPStickyNoteWidgetViewComponent, L as AXP_CHART_FUNNEL_DIMENSIONS, M as AXP_CHART_GAUGE_DIMENSIONS, N as AXP_CHART_SQUARE_DIMENSIONS, O as AXP_CHART_WIDE_DIMENSIONS, P as AXP_DASHBOARD_SHARED_SUB_CHART_CARTESIAN, Q as AXP_DASHBOARD_SHARED_SUB_CHART_KPI, R as AXP_DASHBOARD_SHARED_SUB_CHART_RADIAL, S as AXP_DASHBOARD_SHARED_SUB_CHART_SPECIALIZED, T as AXP_DASHBOARD_SHARED_SUB_UTILITY_NOTES, U as AXP_DASHBOARD_SHARED_SUB_UTILITY_SHORTCUT, V as AXP_DASHBOARD_SHARED_SUB_UTILITY_TIME, W as AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER, X as AXP_KPI_DETAILS_DIMENSIONS, Y as AXP_KPI_GRID_HEIGHT_OPTION, Z as AXP_KPI_GRID_WIDTH_OPTION, _ as AXP_KPI_PROGRESS_SEGMENTED_DIMENSIONS, $ as AXP_KPI_STANDARD_DIMENSIONS, a0 as AXP_KPI_STAT_CARD_DIMENSIONS, a1 as AXP_UTILITY_CLOCK_CALENDAR_DIMENSIONS, a2 as AXP_UTILITY_COMPACT_SQUARE_DIMENSIONS, a3 as AXP_UTILITY_SHORTCUT_DIMENSIONS, a4 as AXP_UTILITY_WEATHER_DIMENSIONS, a5 as AXP_WIDGETS_CHART_CATEGORY, a6 as AXP_WIDGETS_UTILITY_CATEGORY, Y as DASHBOARD_WIDGET_GRID_HEIGHT_OPTION, Z as DASHBOARD_WIDGET_GRID_WIDTH_OPTION, a7 as STICKY_NOTE_COLOR_PRESETS, a8 as STICKY_NOTE_DEFAULT_BACKGROUND, a9 as buildDashboardChartWidget, aa as buildDashboardChartWidgetWithQuery, ab as buildDashboardClockCalendar, ac as buildDashboardKpiStatCard, ad as buildDashboardKpiTile, ae as buildDashboardShortcut, af as buildDashboardStickyNote, ag as buildDashboardWeatherWidget, ah as buildDashboardWidgetsContext, ai as defineDashboardWidgetDimensions, aj as enrichDashboardLayoutNode, ak as formatDashboardGridSizeToken, ak as formatKpiGridSizeToken, al as formatKpiValue, am as formatUtcOffsetLabel, an as getIanaTimeZoneOffsetMinutes, ao as hasKpiQueryConfigured, ap as isStickyNoteEmpty, aq as layoutFromDimensions, ar as loadKpiQueryResult, as as normalizeKpiPercent, at as readDashboardEntityContext, au as readDashboardGridSizeToken, au as readKpiGridSizeToken, av as resolveDashboardLayoutNode, aw as resolveDashboardMetaDimensionsForBreakpoint, ax as resolveDashboardMetaLayoutNode, ay as resolveKpiIconToneTheme, az as resolveKpiIconToneValueColor, aA as resolveKpiProgressBarTone, aB as resolveKpiSegmentPaletteColor, aC as resolveKpiText, aD as resolveStickyNoteBackgroundColor, aE as resolveStickyNoteLayoutVariant, aF as resolveStickyNoteMutedTextColor, aG as resolveStickyNoteText, aH as resolveStickyNoteTextColor, aI as resolveTimeZoneCode, aJ as shouldShowStickyNoteEmptyHint, aK as stripHtmlToPlainText, aL as withDashboardGridSizeOptions } from './acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-Cl4LZc2m.mjs';
|
|
2
|
+
//# sourceMappingURL=acorex-platform-module-dashboard-management-client.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-dashboard-management-client.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@acorex-platform/module-dashboard-management-client",
|
|
3
|
+
"version": "0.0.21",
|
|
4
|
+
"sideEffects": false,
|
|
5
|
+
"peerDependencies": {
|
|
6
|
+
"@angular/common": "^21.0.0",
|
|
7
|
+
"@angular/core": "^21.0.0"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"tslib": "^2.3.0"
|
|
11
|
+
},
|
|
12
|
+
"module": "fesm2022/acorex-platform-module-dashboard-management-client.mjs",
|
|
13
|
+
"typings": "types/acorex-platform-module-dashboard-management-client.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
"./package.json": {
|
|
16
|
+
"default": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./types/acorex-platform-module-dashboard-management-client.d.ts",
|
|
20
|
+
"default": "./fesm2022/acorex-platform-module-dashboard-management-client.mjs"
|
|
21
|
+
},
|
|
22
|
+
"./contracts": {
|
|
23
|
+
"types": "./types/acorex-platform-module-dashboard-management-client-contracts.d.ts",
|
|
24
|
+
"default": "./fesm2022/acorex-platform-module-dashboard-management-client-contracts.mjs"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"type": "module"
|
|
28
|
+
}
|