@acorex-platform/module-dashboard-management-client 0.0.30 → 0.0.33

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.
Files changed (20) hide show
  1. package/fesm2022/{acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-Cl4LZc2m.mjs → acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-DxkwqZno.mjs} +19 -18
  2. package/fesm2022/{acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-Cl4LZc2m.mjs.map → acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-DxkwqZno.mjs.map} +1 -1
  3. package/fesm2022/acorex-platform-module-dashboard-management-client-contracts-entities-dashboard.mjs +279 -0
  4. package/fesm2022/acorex-platform-module-dashboard-management-client-contracts-entities-dashboard.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-dashboard-management-client-contracts-entity-catalog-acorex-platform-module-dashboard-management-client-contracts-entity-catalog-Dubv7lD6.mjs +89 -0
  6. package/fesm2022/acorex-platform-module-dashboard-management-client-contracts-entity-catalog-acorex-platform-module-dashboard-management-client-contracts-entity-catalog-Dubv7lD6.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-dashboard-management-client-contracts-entity-catalog-dashboard.entity-DX6PhoGP.mjs +209 -0
  8. package/fesm2022/acorex-platform-module-dashboard-management-client-contracts-entity-catalog-dashboard.entity-DX6PhoGP.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-dashboard-management-client-contracts-entity-catalog.mjs +2 -0
  10. package/fesm2022/acorex-platform-module-dashboard-management-client-contracts-entity-catalog.mjs.map +1 -0
  11. package/fesm2022/{acorex-platform-module-dashboard-management-client-index-2e_oRKpO.mjs → acorex-platform-module-dashboard-management-client-index-DN7YO4nx.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-dashboard-management-client-index-2e_oRKpO.mjs.map → acorex-platform-module-dashboard-management-client-index-DN7YO4nx.mjs.map} +1 -1
  13. package/fesm2022/acorex-platform-module-dashboard-management-client-local-entities.mjs +29 -0
  14. package/fesm2022/acorex-platform-module-dashboard-management-client-local-entities.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-dashboard-management-client.mjs +1 -1
  16. package/package.json +13 -1
  17. package/types/acorex-platform-module-dashboard-management-client-contracts-entities-dashboard.d.ts +5 -0
  18. package/types/acorex-platform-module-dashboard-management-client-contracts-entity-catalog.d.ts +10 -0
  19. package/types/acorex-platform-module-dashboard-management-client-local-entities.d.ts +12 -0
  20. package/types/acorex-platform-module-dashboard-management-client.d.ts +12 -0
@@ -0,0 +1,279 @@
1
+ import { AXPWidgetsList } from '@acorex-platform/framework-shared/core';
2
+ import { createQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex-platform/framework-shared/entity';
3
+
4
+ const config = {
5
+ i18n: 'dashboard-management',
6
+ module: 'DashboardManagement',
7
+ };
8
+ /** Builds shared dashboard widget type ids: `{module}:Widget:Dashboard:{Segment}`. */
9
+ const dashboardWidgetId = (segment) => `${config.module}:Widget:Dashboard:${segment}`;
10
+ const RootConfig = {
11
+ config,
12
+ module: {
13
+ module: config.module,
14
+ name: config.module,
15
+ title: `@${config.i18n}:module.title`,
16
+ icon: 'fa-regular fa-tachometer-alt',
17
+ },
18
+ entities: {
19
+ dashboard: {
20
+ name: 'Dashboard',
21
+ title: '@dashboard-management:dashboards.terms.dashboard',
22
+ titlePlural: '@dashboard-management:dashboards.terms.dashboards',
23
+ icon: 'fa-regular fa-tachometer-alt',
24
+ },
25
+ },
26
+ /** Dashboard widget type ids owned by dashboard-management. */
27
+ widgets: {
28
+ barChart: dashboardWidgetId('BarChart'),
29
+ donutChart: dashboardWidgetId('DonutChart'),
30
+ lineChart: dashboardWidgetId('LineChart'),
31
+ gaugeChart: dashboardWidgetId('GaugeChart'),
32
+ funnelChart: dashboardWidgetId('FunnelChart'),
33
+ heatmapChart: dashboardWidgetId('HeatmapChart'),
34
+ stickyNote: dashboardWidgetId('StickyNote'),
35
+ clockCalendar: dashboardWidgetId('ClockCalendar'),
36
+ weather: dashboardWidgetId('Weather'),
37
+ shortcut: dashboardWidgetId('Shortcut'),
38
+ kpiProgress: dashboardWidgetId('KpiProgress'),
39
+ kpiSegmented: dashboardWidgetId('KpiSegmented'),
40
+ kpiDetails: dashboardWidgetId('KpiDetails'),
41
+ kpiStatCard: dashboardWidgetId('KpiStatCard'),
42
+ },
43
+ /**
44
+ * @deprecated Dashboard queries moved to owning modules (`{Module}:Dashboard:*`).
45
+ * Update seeds/widgets to module keys; these aliases remain for transitional references only.
46
+ */
47
+ queries: {
48
+ tenantAdmin: {
49
+ activeUsersKpi: `${config.module}:Dashboard:TenantAdmin:ActiveUsersKpi`,
50
+ employeesKpi: `${config.module}:Dashboard:TenantAdmin:EmployeesKpi`,
51
+ openTasksKpi: `${config.module}:Dashboard:TenantAdmin:OpenTasksKpi`,
52
+ activeProjectsKpi: `${config.module}:Dashboard:TenantAdmin:ActiveProjectsKpi`,
53
+ openHazardsKpi: `${config.module}:Dashboard:TenantAdmin:OpenHazardsKpi`,
54
+ documentsKpi: `${config.module}:Dashboard:TenantAdmin:DocumentsKpi`,
55
+ workflowDefinitionsKpi: `${config.module}:Dashboard:TenantAdmin:WorkflowDefinitionsKpi`,
56
+ subscriptionKpi: `${config.module}:Dashboard:TenantAdmin:SubscriptionKpi`,
57
+ usersByRoleDonut: `${config.module}:Dashboard:TenantAdmin:UsersByRoleDonut`,
58
+ taskStatusDonut: `${config.module}:Dashboard:TenantAdmin:TaskStatusDonut`,
59
+ deliveryStatusDonut: `${config.module}:Dashboard:TenantAdmin:DeliveryStatusDonut`,
60
+ integrationsDonut: `${config.module}:Dashboard:TenantAdmin:IntegrationsDonut`,
61
+ jobsByStatusBar: `${config.module}:Dashboard:TenantAdmin:JobsByStatusBar`,
62
+ jobSchedulesByStatusBar: `${config.module}:Dashboard:TenantAdmin:JobSchedulesByStatusBar`,
63
+ workflowsByStatusBar: `${config.module}:Dashboard:TenantAdmin:WorkflowsByStatusBar`,
64
+ teamsBar: `${config.module}:Dashboard:TenantAdmin:TeamsBar`,
65
+ projectsByStatusBar: `${config.module}:Dashboard:TenantAdmin:ProjectsByStatusBar`,
66
+ trainingComplianceGauge: `${config.module}:Dashboard:TenantAdmin:TrainingComplianceGauge`,
67
+ },
68
+ },
69
+ };
70
+
71
+ /** Component key for the dashboard Layout page tab. Register via AXP_PAGE_COMPONENT_PROVIDER. */
72
+ const DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY = 'dashboard-layout-page';
73
+
74
+ async function dashboardFactory() {
75
+ const entityDef = {
76
+ module: RootConfig.module.name,
77
+ name: RootConfig.entities.dashboard.name,
78
+ title: RootConfig.entities.dashboard.title,
79
+ icon: RootConfig.entities.dashboard.icon,
80
+ plugins: [{ name: 'category' }, { name: 'archive' }],
81
+ pages: [
82
+ {
83
+ componentKey: DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY,
84
+ title: '@dashboard-management:dashboards.entities.dashboard.pages.layout.title',
85
+ description: '@dashboard-management:dashboards.entities.dashboard.pages.layout.description',
86
+ icon: 'fa-light fa-table-layout',
87
+ layout: { order: 1, position: 'after' },
88
+ },
89
+ ],
90
+ formats: {
91
+ individual: RootConfig.entities.dashboard.title,
92
+ plural: RootConfig.entities.dashboard.titlePlural,
93
+ displayName: '@general:terms.interface.configuration',
94
+ searchResult: {
95
+ title: '{{ title }}',
96
+ description: RootConfig.module.title,
97
+ },
98
+ },
99
+ relatedEntities: [],
100
+ groups: [
101
+ {
102
+ id: 'section',
103
+ title: RootConfig.entities.dashboard.title,
104
+ },
105
+ {
106
+ id: 'access',
107
+ title: '@dashboard-management:dashboards.entities.dashboard.groups.access.title',
108
+ },
109
+ ],
110
+ properties: [
111
+ {
112
+ name: 'id',
113
+ title: 'ID',
114
+ groupId: 'section',
115
+ schema: { dataType: 'uuid', visible: false, nullable: false, readonly: true, unique: { enabled: true } },
116
+ },
117
+ {
118
+ name: 'title',
119
+ title: '@general:terms.common.title',
120
+ groupId: 'section',
121
+ options: {
122
+ sort: {
123
+ enabled: true,
124
+ },
125
+ filter: {
126
+ advance: {
127
+ enabled: true,
128
+ },
129
+ inline: {
130
+ enabled: true,
131
+ },
132
+ },
133
+ },
134
+ schema: {
135
+ dataType: 'string',
136
+ interface: {
137
+ type: AXPWidgetsList.Editors.TextBox,
138
+ options: {
139
+ multiLanguage: true,
140
+ placeholder: '@general:terms.common.title',
141
+ },
142
+ },
143
+ },
144
+ validations: [
145
+ {
146
+ rule: 'required',
147
+ },
148
+ ],
149
+ },
150
+ {
151
+ name: 'description',
152
+ title: '@dashboard-management:dashboards.entities.dashboard.fields.description.title',
153
+ groupId: 'section',
154
+ options: {
155
+ sort: {
156
+ enabled: false,
157
+ },
158
+ filter: {
159
+ advance: {
160
+ enabled: false,
161
+ },
162
+ inline: {
163
+ enabled: false,
164
+ },
165
+ },
166
+ },
167
+ schema: {
168
+ dataType: 'string',
169
+ interface: {
170
+ type: AXPWidgetsList.Editors.LargeTextBox,
171
+ options: {
172
+ rows: 3,
173
+ multiLanguage: true,
174
+ placeholder: '@general:terms.common.description',
175
+ },
176
+ },
177
+ },
178
+ },
179
+ {
180
+ name: 'scope',
181
+ title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.title',
182
+ groupId: 'access',
183
+ options: {
184
+ sort: { enabled: true },
185
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
186
+ },
187
+ schema: {
188
+ dataType: 'string',
189
+ visible: false,
190
+ interface: {
191
+ type: AXPWidgetsList.Editors.SelectBox,
192
+ options: {
193
+ valueField: 'id',
194
+ dataSource: [
195
+ {
196
+ id: 'T',
197
+ title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.tenant',
198
+ },
199
+ {
200
+ id: 'U',
201
+ title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.personal',
202
+ },
203
+ {
204
+ id: 'E',
205
+ title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.entity',
206
+ },
207
+ ],
208
+ },
209
+ },
210
+ },
211
+ },
212
+ {
213
+ name: 'scopeRef.roleIds',
214
+ title: '@dashboard:roles',
215
+ groupId: 'access',
216
+ schema: {
217
+ dataType: 'object',
218
+ visible: `{{ !context.eval("scope") || context.eval("scope") === "T" }}`,
219
+ interface: {
220
+ type: AXPWidgetsList.Editors.LookupBox,
221
+ options: {
222
+ entity: 'SecurityManagement.Role',
223
+ multiple: true,
224
+ look: 'select',
225
+ },
226
+ },
227
+ },
228
+ },
229
+ ],
230
+ columns: [{ name: 'title' }, { name: 'description' }],
231
+ interfaces: {
232
+ master: {
233
+ create: {
234
+ sections: [{ id: 'section' }, { id: 'access' }],
235
+ properties: [
236
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
237
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },
238
+ { name: 'scopeRef.roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
239
+ ],
240
+ },
241
+ update: {
242
+ sections: [{ id: 'section' }, { id: 'access' }],
243
+ properties: [
244
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
245
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },
246
+ { name: 'scopeRef.roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
247
+ ],
248
+ },
249
+ single: {
250
+ title: '{{title}}',
251
+ sections: [{ id: 'section', layout: { positions: { lg: { colSpan: 12 } } } }, { id: 'access' }],
252
+ properties: [
253
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
254
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },
255
+ { name: 'scopeRef.roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
256
+ ],
257
+ actions: [...entityMasterRecordActions()],
258
+ },
259
+ list: {
260
+ actions: [...entityMasterCrudActions()],
261
+ views: [
262
+ createQueryView('tenant', '@dashboard-management:dashboards.entities.dashboard.views.tenant', true, {
263
+ sorts: [{ name: 'title', dir: 'asc' }],
264
+ conditions: [{ name: 'scope', operator: { type: 'equal' }, value: 'T' }],
265
+ }),
266
+ ],
267
+ },
268
+ },
269
+ },
270
+ };
271
+ return entityDef;
272
+ }
273
+
274
+ /**
275
+ * Generated bundle index. Do not edit.
276
+ */
277
+
278
+ export { dashboardFactory };
279
+ //# sourceMappingURL=acorex-platform-module-dashboard-management-client-contracts-entities-dashboard.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-dashboard-management-client-contracts-entities-dashboard.mjs","sources":["../../../../libs/modules/dashboard-management/contracts/src/root-config.ts","../../../../libs/modules/dashboard-management/contracts/src/DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/dashboard-management/contracts/src/entities/dashboard/dashboard.entity.ts","../../../../libs/modules/dashboard-management/contracts/src/acorex-platform-module-dashboard-management-client-contracts-entities-dashboard.ts"],"sourcesContent":["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","/** 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","import { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity, createQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '../../root-config';\nimport { DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY } from '../../DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY';\n\nexport async function dashboardFactory(): Promise<AXPEntity | null> {\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.dashboard.name,\n title: RootConfig.entities.dashboard.title,\n icon: RootConfig.entities.dashboard.icon,\n plugins: [{ name: 'category' }, { name: 'archive' }],\n pages: [\n {\n componentKey: DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY,\n title: '@dashboard-management:dashboards.entities.dashboard.pages.layout.title',\n description: '@dashboard-management:dashboards.entities.dashboard.pages.layout.description',\n icon: 'fa-light fa-table-layout',\n layout: { order: 1, position: 'after' },\n },\n ],\n formats: {\n individual: RootConfig.entities.dashboard.title,\n plural: RootConfig.entities.dashboard.titlePlural,\n displayName: '@general:terms.interface.configuration',\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.dashboard.title,\n },\n {\n id: 'access',\n title: '@dashboard-management:dashboards.entities.dashboard.groups.access.title',\n },\n ],\n properties: [\n {\n name: 'id',\n title: 'ID',\n groupId: 'section',\n schema: { dataType: 'uuid', visible: false, nullable: false, readonly: true, unique: { enabled: true } },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.TextBox,\n options: {\n multiLanguage: true,\n placeholder: '@general:terms.common.title',\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n\n {\n name: 'description',\n title: '@dashboard-management:dashboards.entities.dashboard.fields.description.title',\n groupId: 'section',\n options: {\n sort: {\n enabled: false,\n },\n filter: {\n advance: {\n enabled: false,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LargeTextBox,\n options: {\n rows: 3,\n multiLanguage: true,\n placeholder: '@general:terms.common.description',\n },\n },\n },\n },\n {\n name: 'scope',\n title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.title',\n groupId: 'access',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'string',\n visible: false,\n interface: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n dataSource: [\n {\n id: 'T',\n title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.tenant',\n },\n {\n id: 'U',\n title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.personal',\n },\n {\n id: 'E',\n title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.entity',\n },\n ],\n },\n },\n },\n },\n {\n name: 'scopeRef.roleIds',\n title: '@dashboard:roles',\n groupId: 'access',\n schema: {\n dataType: 'object',\n visible: `{{ !context.eval(\"scope\") || context.eval(\"scope\") === \"T\" }}`,\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: 'SecurityManagement.Role',\n multiple: true,\n look: 'select',\n },\n },\n },\n },\n ],\n columns: [{ name: 'title' }, { name: 'description' }],\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'section' }, { id: 'access' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },\n { name: 'scopeRef.roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n },\n update: {\n sections: [{ id: 'section' }, { id: 'access' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },\n { name: 'scopeRef.roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'section', layout: { positions: { lg: { colSpan: 12 } } } }, { id: 'access' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },\n { name: 'scopeRef.roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [\n createQueryView('tenant', '@dashboard-management:dashboards.entities.dashboard.views.tenant', true, {\n sorts: [{ name: 'title', dir: 'asc' }],\n conditions: [{ name: 'scope', operator: { type: 'equal' }, value: 'T' }],\n }),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.dashboard';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ const config = {
2
+ i18n: 'dashboard-management',
3
+ module: 'DashboardManagement',
4
+ };
5
+ /** Builds shared dashboard widget type ids: `{module}:Widget:Dashboard:{Segment}`. */
6
+ const dashboardWidgetId = (segment) => `${config.module}:Widget:Dashboard:${segment}`;
7
+ const RootConfig = {
8
+ config,
9
+ module: {
10
+ module: config.module,
11
+ name: config.module,
12
+ title: `@${config.i18n}:module.title`,
13
+ icon: 'fa-regular fa-tachometer-alt',
14
+ },
15
+ entities: {
16
+ dashboard: {
17
+ name: 'Dashboard',
18
+ title: '@dashboard-management:dashboards.terms.dashboard',
19
+ titlePlural: '@dashboard-management:dashboards.terms.dashboards',
20
+ icon: 'fa-regular fa-tachometer-alt',
21
+ },
22
+ },
23
+ /** Dashboard widget type ids owned by dashboard-management. */
24
+ widgets: {
25
+ barChart: dashboardWidgetId('BarChart'),
26
+ donutChart: dashboardWidgetId('DonutChart'),
27
+ lineChart: dashboardWidgetId('LineChart'),
28
+ gaugeChart: dashboardWidgetId('GaugeChart'),
29
+ funnelChart: dashboardWidgetId('FunnelChart'),
30
+ heatmapChart: dashboardWidgetId('HeatmapChart'),
31
+ stickyNote: dashboardWidgetId('StickyNote'),
32
+ clockCalendar: dashboardWidgetId('ClockCalendar'),
33
+ weather: dashboardWidgetId('Weather'),
34
+ shortcut: dashboardWidgetId('Shortcut'),
35
+ kpiProgress: dashboardWidgetId('KpiProgress'),
36
+ kpiSegmented: dashboardWidgetId('KpiSegmented'),
37
+ kpiDetails: dashboardWidgetId('KpiDetails'),
38
+ kpiStatCard: dashboardWidgetId('KpiStatCard'),
39
+ },
40
+ /**
41
+ * @deprecated Dashboard queries moved to owning modules (`{Module}:Dashboard:*`).
42
+ * Update seeds/widgets to module keys; these aliases remain for transitional references only.
43
+ */
44
+ queries: {
45
+ tenantAdmin: {
46
+ activeUsersKpi: `${config.module}:Dashboard:TenantAdmin:ActiveUsersKpi`,
47
+ employeesKpi: `${config.module}:Dashboard:TenantAdmin:EmployeesKpi`,
48
+ openTasksKpi: `${config.module}:Dashboard:TenantAdmin:OpenTasksKpi`,
49
+ activeProjectsKpi: `${config.module}:Dashboard:TenantAdmin:ActiveProjectsKpi`,
50
+ openHazardsKpi: `${config.module}:Dashboard:TenantAdmin:OpenHazardsKpi`,
51
+ documentsKpi: `${config.module}:Dashboard:TenantAdmin:DocumentsKpi`,
52
+ workflowDefinitionsKpi: `${config.module}:Dashboard:TenantAdmin:WorkflowDefinitionsKpi`,
53
+ subscriptionKpi: `${config.module}:Dashboard:TenantAdmin:SubscriptionKpi`,
54
+ usersByRoleDonut: `${config.module}:Dashboard:TenantAdmin:UsersByRoleDonut`,
55
+ taskStatusDonut: `${config.module}:Dashboard:TenantAdmin:TaskStatusDonut`,
56
+ deliveryStatusDonut: `${config.module}:Dashboard:TenantAdmin:DeliveryStatusDonut`,
57
+ integrationsDonut: `${config.module}:Dashboard:TenantAdmin:IntegrationsDonut`,
58
+ jobsByStatusBar: `${config.module}:Dashboard:TenantAdmin:JobsByStatusBar`,
59
+ jobSchedulesByStatusBar: `${config.module}:Dashboard:TenantAdmin:JobSchedulesByStatusBar`,
60
+ workflowsByStatusBar: `${config.module}:Dashboard:TenantAdmin:WorkflowsByStatusBar`,
61
+ teamsBar: `${config.module}:Dashboard:TenantAdmin:TeamsBar`,
62
+ projectsByStatusBar: `${config.module}:Dashboard:TenantAdmin:ProjectsByStatusBar`,
63
+ trainingComplianceGauge: `${config.module}:Dashboard:TenantAdmin:TrainingComplianceGauge`,
64
+ },
65
+ },
66
+ };
67
+
68
+ //#region ----- Imports -----
69
+ //#endregion
70
+ //#region ----- Local entity catalog -----
71
+ /**
72
+ * Lazy per-entity layout factories. Do not re-export from the contracts barrel
73
+ * so RootConfig imports stay light. Server seed and client `local-entities`
74
+ * consume this catalog explicitly.
75
+ */
76
+ const dashboardManagementLocalEntityCatalog = {
77
+ moduleName: RootConfig.module.name,
78
+ loaders: {
79
+ [RootConfig.entities.dashboard.name]: () => import('./acorex-platform-module-dashboard-management-client-contracts-entity-catalog-dashboard.entity-DX6PhoGP.mjs').then((m) => m.dashboardFactory()),
80
+ },
81
+ };
82
+ //#endregion
83
+
84
+ /**
85
+ * Generated bundle index. Do not edit.
86
+ */
87
+
88
+ export { RootConfig as R, dashboardManagementLocalEntityCatalog as d };
89
+ //# sourceMappingURL=acorex-platform-module-dashboard-management-client-contracts-entity-catalog-acorex-platform-module-dashboard-management-client-contracts-entity-catalog-Dubv7lD6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-dashboard-management-client-contracts-entity-catalog-acorex-platform-module-dashboard-management-client-contracts-entity-catalog-Dubv7lD6.mjs","sources":["../../../../libs/modules/dashboard-management/contracts/src/root-config.ts","../../../../libs/modules/dashboard-management/contracts/src/entity-catalog.ts","../../../../libs/modules/dashboard-management/contracts/src/acorex-platform-module-dashboard-management-client-contracts-entity-catalog.ts"],"sourcesContent":["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 ----- Imports -----\n\nimport type { AXPLocalEntityCatalog } from '@acorex-platform/framework-shared/entity';\n\nimport { RootConfig } from './root-config';\n\n//#endregion\n\n//#region ----- Local entity catalog -----\n\n/**\n * Lazy per-entity layout factories. Do not re-export from the contracts barrel\n * so RootConfig imports stay light. Server seed and client `local-entities`\n * consume this catalog explicitly.\n */\nexport const dashboardManagementLocalEntityCatalog: AXPLocalEntityCatalog = {\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.dashboard.name]: () =>\n import('./entities/dashboard/dashboard.entity.js').then((m) => m.dashboardFactory()),\n },\n};\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-catalog';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ import { AXPWidgetsList } from '@acorex-platform/framework-shared/core';
2
+ import { createQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex-platform/framework-shared/entity';
3
+ import { R as RootConfig } from './acorex-platform-module-dashboard-management-client-contracts-entity-catalog-acorex-platform-module-dashboard-management-client-contracts-entity-catalog-Dubv7lD6.mjs';
4
+
5
+ /** Component key for the dashboard Layout page tab. Register via AXP_PAGE_COMPONENT_PROVIDER. */
6
+ const DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY = 'dashboard-layout-page';
7
+
8
+ async function dashboardFactory() {
9
+ const entityDef = {
10
+ module: RootConfig.module.name,
11
+ name: RootConfig.entities.dashboard.name,
12
+ title: RootConfig.entities.dashboard.title,
13
+ icon: RootConfig.entities.dashboard.icon,
14
+ plugins: [{ name: 'category' }, { name: 'archive' }],
15
+ pages: [
16
+ {
17
+ componentKey: DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY,
18
+ title: '@dashboard-management:dashboards.entities.dashboard.pages.layout.title',
19
+ description: '@dashboard-management:dashboards.entities.dashboard.pages.layout.description',
20
+ icon: 'fa-light fa-table-layout',
21
+ layout: { order: 1, position: 'after' },
22
+ },
23
+ ],
24
+ formats: {
25
+ individual: RootConfig.entities.dashboard.title,
26
+ plural: RootConfig.entities.dashboard.titlePlural,
27
+ displayName: '@general:terms.interface.configuration',
28
+ searchResult: {
29
+ title: '{{ title }}',
30
+ description: RootConfig.module.title,
31
+ },
32
+ },
33
+ relatedEntities: [],
34
+ groups: [
35
+ {
36
+ id: 'section',
37
+ title: RootConfig.entities.dashboard.title,
38
+ },
39
+ {
40
+ id: 'access',
41
+ title: '@dashboard-management:dashboards.entities.dashboard.groups.access.title',
42
+ },
43
+ ],
44
+ properties: [
45
+ {
46
+ name: 'id',
47
+ title: 'ID',
48
+ groupId: 'section',
49
+ schema: { dataType: 'uuid', visible: false, nullable: false, readonly: true, unique: { enabled: true } },
50
+ },
51
+ {
52
+ name: 'title',
53
+ title: '@general:terms.common.title',
54
+ groupId: 'section',
55
+ options: {
56
+ sort: {
57
+ enabled: true,
58
+ },
59
+ filter: {
60
+ advance: {
61
+ enabled: true,
62
+ },
63
+ inline: {
64
+ enabled: true,
65
+ },
66
+ },
67
+ },
68
+ schema: {
69
+ dataType: 'string',
70
+ interface: {
71
+ type: AXPWidgetsList.Editors.TextBox,
72
+ options: {
73
+ multiLanguage: true,
74
+ placeholder: '@general:terms.common.title',
75
+ },
76
+ },
77
+ },
78
+ validations: [
79
+ {
80
+ rule: 'required',
81
+ },
82
+ ],
83
+ },
84
+ {
85
+ name: 'description',
86
+ title: '@dashboard-management:dashboards.entities.dashboard.fields.description.title',
87
+ groupId: 'section',
88
+ options: {
89
+ sort: {
90
+ enabled: false,
91
+ },
92
+ filter: {
93
+ advance: {
94
+ enabled: false,
95
+ },
96
+ inline: {
97
+ enabled: false,
98
+ },
99
+ },
100
+ },
101
+ schema: {
102
+ dataType: 'string',
103
+ interface: {
104
+ type: AXPWidgetsList.Editors.LargeTextBox,
105
+ options: {
106
+ rows: 3,
107
+ multiLanguage: true,
108
+ placeholder: '@general:terms.common.description',
109
+ },
110
+ },
111
+ },
112
+ },
113
+ {
114
+ name: 'scope',
115
+ title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.title',
116
+ groupId: 'access',
117
+ options: {
118
+ sort: { enabled: true },
119
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
120
+ },
121
+ schema: {
122
+ dataType: 'string',
123
+ visible: false,
124
+ interface: {
125
+ type: AXPWidgetsList.Editors.SelectBox,
126
+ options: {
127
+ valueField: 'id',
128
+ dataSource: [
129
+ {
130
+ id: 'T',
131
+ title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.tenant',
132
+ },
133
+ {
134
+ id: 'U',
135
+ title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.personal',
136
+ },
137
+ {
138
+ id: 'E',
139
+ title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.entity',
140
+ },
141
+ ],
142
+ },
143
+ },
144
+ },
145
+ },
146
+ {
147
+ name: 'scopeRef.roleIds',
148
+ title: '@dashboard:roles',
149
+ groupId: 'access',
150
+ schema: {
151
+ dataType: 'object',
152
+ visible: `{{ !context.eval("scope") || context.eval("scope") === "T" }}`,
153
+ interface: {
154
+ type: AXPWidgetsList.Editors.LookupBox,
155
+ options: {
156
+ entity: 'SecurityManagement.Role',
157
+ multiple: true,
158
+ look: 'select',
159
+ },
160
+ },
161
+ },
162
+ },
163
+ ],
164
+ columns: [{ name: 'title' }, { name: 'description' }],
165
+ interfaces: {
166
+ master: {
167
+ create: {
168
+ sections: [{ id: 'section' }, { id: 'access' }],
169
+ properties: [
170
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
171
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },
172
+ { name: 'scopeRef.roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
173
+ ],
174
+ },
175
+ update: {
176
+ sections: [{ id: 'section' }, { id: 'access' }],
177
+ properties: [
178
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
179
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },
180
+ { name: 'scopeRef.roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
181
+ ],
182
+ },
183
+ single: {
184
+ title: '{{title}}',
185
+ sections: [{ id: 'section', layout: { positions: { lg: { colSpan: 12 } } } }, { id: 'access' }],
186
+ properties: [
187
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
188
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },
189
+ { name: 'scopeRef.roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
190
+ ],
191
+ actions: [...entityMasterRecordActions()],
192
+ },
193
+ list: {
194
+ actions: [...entityMasterCrudActions()],
195
+ views: [
196
+ createQueryView('tenant', '@dashboard-management:dashboards.entities.dashboard.views.tenant', true, {
197
+ sorts: [{ name: 'title', dir: 'asc' }],
198
+ conditions: [{ name: 'scope', operator: { type: 'equal' }, value: 'T' }],
199
+ }),
200
+ ],
201
+ },
202
+ },
203
+ },
204
+ };
205
+ return entityDef;
206
+ }
207
+
208
+ export { dashboardFactory };
209
+ //# sourceMappingURL=acorex-platform-module-dashboard-management-client-contracts-entity-catalog-dashboard.entity-DX6PhoGP.mjs.map