@acorex/modules 20.3.0-next.4 → 20.3.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DDriJFmP.mjs → acorex-modules-document-management-acorex-modules-document-management-DhEDQZru.mjs} +122 -80
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DDriJFmP.mjs.map → acorex-modules-document-management-acorex-modules-document-management-DhEDQZru.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-OYJu4IJz.mjs → acorex-modules-document-management-attachment-widget.component-Bx2Ps7uX.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-OYJu4IJz.mjs.map → acorex-modules-document-management-attachment-widget.component-Bx2Ps7uX.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-CZzlGMcu.mjs → acorex-modules-document-management-create-folder-dialog.component-B26m8qWj.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-CZzlGMcu.mjs.map → acorex-modules-document-management-create-folder-dialog.component-B26m8qWj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-VdV7xGPS.mjs → acorex-modules-document-management-details-view.component-3DmulyK_.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-VdV7xGPS.mjs.map → acorex-modules-document-management-details-view.component-3DmulyK_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-Gi0_m0oe.mjs → acorex-modules-document-management-document-signature-popup.component-DmR6gFdD.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-Gi0_m0oe.mjs.map → acorex-modules-document-management-document-signature-popup.component-DmR6gFdD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-BgRZ_nhs.mjs → acorex-modules-document-management-drive-choose.component-BNyPOrzl.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-BgRZ_nhs.mjs.map → acorex-modules-document-management-drive-choose.component-BNyPOrzl.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-BRCGsnuI.mjs → acorex-modules-document-management-drive.component-D5X_bI5D.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive.component-BRCGsnuI.mjs.map → acorex-modules-document-management-drive.component-D5X_bI5D.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-CnsPx3K3.mjs → acorex-modules-document-management-large-icons-view.component-AzDtXQqt.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-CnsPx3K3.mjs.map → acorex-modules-document-management-large-icons-view.component-AzDtXQqt.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-D4OUme1W.mjs → acorex-modules-document-management-large-tiles-view.component-DCG_v9JT.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-D4OUme1W.mjs.map → acorex-modules-document-management-large-tiles-view.component-DCG_v9JT.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-C7i4jI9h.mjs → acorex-modules-document-management-list-view.component-Cb2OVElN.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-C7i4jI9h.mjs.map → acorex-modules-document-management-list-view.component-Cb2OVElN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DHVn7RIv.mjs → acorex-modules-document-management-rename-node-dialog.component-B7gcoDDb.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DHVn7RIv.mjs.map → acorex-modules-document-management-rename-node-dialog.component-B7gcoDDb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-By36moe5.mjs → acorex-modules-document-management-small-icons-view.component-EN4ttbvx.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-By36moe5.mjs.map → acorex-modules-document-management-small-icons-view.component-EN4ttbvx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CO6MfsEU.mjs → acorex-modules-document-management-small-tiles-view.component-C-HjbNwe.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CO6MfsEU.mjs.map → acorex-modules-document-management-small-tiles-view.component-C-HjbNwe.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-WkDn4mpE.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-BQ_KNd7M.mjs} +23 -12
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-WkDn4mpE.mjs.map → acorex-modules-human-capital-management-acorex-modules-human-capital-management-BQ_KNd7M.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-DsUYujPr.mjs → acorex-modules-human-capital-management-employee-skill.entity-3wofaUXu.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-DsUYujPr.mjs.map → acorex-modules-human-capital-management-employee-skill.entity-3wofaUXu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-CC-LIIki.mjs → acorex-modules-human-capital-management-employee.entity-1fVathnk.mjs} +10 -8
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-1fVathnk.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-Mgkdm2vo.mjs → acorex-modules-human-capital-management-employment-type.entity-BWrwli0P.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-Mgkdm2vo.mjs.map → acorex-modules-human-capital-management-employment-type.entity-BWrwli0P.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BJyciZGL.mjs → acorex-modules-human-capital-management-leave-request.entity-4ddc6R_K.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BJyciZGL.mjs.map → acorex-modules-human-capital-management-leave-request.entity-4ddc6R_K.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-IewYlMLV.mjs → acorex-modules-human-capital-management-leave-type.entity-DYYJVRju.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-IewYlMLV.mjs.map → acorex-modules-human-capital-management-leave-type.entity-DYYJVRju.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-BlKFRnO0.mjs → acorex-modules-human-capital-management-position-assignment.entity-DIqdhqk4.mjs} +7 -53
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-DIqdhqk4.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-De1qKpcU.mjs → acorex-modules-human-capital-management-skill-level.entity-BN67pBaa.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-De1qKpcU.mjs.map → acorex-modules-human-capital-management-skill-level.entity-BN67pBaa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-skill.entity-RrnBU0M5.mjs → acorex-modules-human-capital-management-skill.entity-D4CglCC7.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-skill.entity-RrnBU0M5.mjs.map → acorex-modules-human-capital-management-skill.entity-D4CglCC7.mjs.map} +1 -1
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-keZ4Gk7y.mjs +544 -0
- package/fesm2022/acorex-modules-organization-management-org-chart.page-keZ4Gk7y.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-position.entity-DK-i78ck.mjs → acorex-modules-organization-management-position.entity-CzBbuApR.mjs} +47 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-CzBbuApR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-settings.provider-feVwZnkw.mjs → acorex-modules-organization-management-settings.provider-BvOAb0jb.mjs} +21 -2
- package/fesm2022/acorex-modules-organization-management-settings.provider-BvOAb0jb.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +358 -240
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +76 -16
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-Y-liTcuX.mjs → acorex-modules-settings-management-setting-page.component-IG1o_0Dp.mjs} +17 -14
- package/fesm2022/acorex-modules-settings-management-setting-page.component-IG1o_0Dp.mjs.map +1 -0
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
- package/organization-management/README.md +98 -2
- package/organization-management/index.d.ts +44 -123
- package/package.json +1 -1
- package/report-management/index.d.ts +31 -3
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-CC-LIIki.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-BlKFRnO0.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-add-item.component-CtuULLkY.mjs +0 -89
- package/fesm2022/acorex-modules-organization-management-add-item.component-CtuULLkY.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-branch.entity-C4Le6Kv6.mjs +0 -317
- package/fesm2022/acorex-modules-organization-management-branch.entity-C4Le6Kv6.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-department.entity-BkEbajpN.mjs +0 -288
- package/fesm2022/acorex-modules-organization-management-department.entity-BkEbajpN.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-division.entity-Cds8jkR5.mjs +0 -515
- package/fesm2022/acorex-modules-organization-management-division.entity-Cds8jkR5.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DfwjhVRX.mjs +0 -116
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DfwjhVRX.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-D7NlQXp2.mjs +0 -147
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-D7NlQXp2.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-DeqD7PyH.mjs +0 -989
- package/fesm2022/acorex-modules-organization-management-org-chart.page-DeqD7PyH.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-DK-i78ck.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-settings.keys-B3cgSi_S.mjs +0 -22
- package/fesm2022/acorex-modules-organization-management-settings.keys-B3cgSi_S.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-settings.provider-feVwZnkw.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-Y-liTcuX.mjs.map +0 -1
|
@@ -39,6 +39,7 @@ import { AXDonutChartComponent } from '@acorex/charts/donut-chart';
|
|
|
39
39
|
import { AXLineChartComponent } from '@acorex/charts/line-chart';
|
|
40
40
|
import * as i1$3 from '@acorex/components/data-table';
|
|
41
41
|
import { AXDataTableModule } from '@acorex/components/data-table';
|
|
42
|
+
import { AXBadgeModule } from '@acorex/components/badge';
|
|
42
43
|
|
|
43
44
|
const config = {
|
|
44
45
|
i18n: 'report-management',
|
|
@@ -1493,6 +1494,9 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1493
1494
|
filterContext: {},
|
|
1494
1495
|
categoriesPath: [],
|
|
1495
1496
|
allowFetchData: false,
|
|
1497
|
+
shouldExecuteReport: false,
|
|
1498
|
+
lastAppliedFilterContext: null, // Track last applied filters
|
|
1499
|
+
hasBeenExecuted: false, // Track if report has been executed at least once
|
|
1496
1500
|
status: AXPPageStatus.Idle,
|
|
1497
1501
|
error: null,
|
|
1498
1502
|
})), withComputed((store) => ({
|
|
@@ -1558,7 +1562,14 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1558
1562
|
path: param.path,
|
|
1559
1563
|
title: param.title,
|
|
1560
1564
|
description: param.description,
|
|
1561
|
-
widget:
|
|
1565
|
+
widget: {
|
|
1566
|
+
...param.widget,
|
|
1567
|
+
options: {
|
|
1568
|
+
...param.widget.options,
|
|
1569
|
+
clearButton: true,
|
|
1570
|
+
hasClearButton: true
|
|
1571
|
+
}
|
|
1572
|
+
}
|
|
1562
1573
|
}))
|
|
1563
1574
|
}))
|
|
1564
1575
|
};
|
|
@@ -1568,6 +1579,34 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1568
1579
|
isTableLayout: computed(() => store.currentLayout()?.layout?.type === 'table'),
|
|
1569
1580
|
isChartLayout: computed(() => store.currentLayout()?.layout?.type === 'chart'),
|
|
1570
1581
|
//#endregion
|
|
1582
|
+
//#region ---- Filter States ----
|
|
1583
|
+
hasUnappliedFilters: computed(() => {
|
|
1584
|
+
const currentContext = store.filterContext();
|
|
1585
|
+
const lastApplied = store.lastAppliedFilterContext();
|
|
1586
|
+
const hasBeenExecuted = store.hasBeenExecuted();
|
|
1587
|
+
// If report has never been executed, don't show unapplied filters warning
|
|
1588
|
+
if (!hasBeenExecuted) {
|
|
1589
|
+
return false;
|
|
1590
|
+
}
|
|
1591
|
+
// If no filters have been applied yet, return true
|
|
1592
|
+
if (lastApplied === null) {
|
|
1593
|
+
return true;
|
|
1594
|
+
}
|
|
1595
|
+
// Check if current filters are different from last applied filters
|
|
1596
|
+
const currentKeys = Object.keys(currentContext);
|
|
1597
|
+
const lastKeys = Object.keys(lastApplied);
|
|
1598
|
+
if (currentKeys.length !== lastKeys.length) {
|
|
1599
|
+
return true;
|
|
1600
|
+
}
|
|
1601
|
+
// Check if any values are different
|
|
1602
|
+
for (const key of currentKeys) {
|
|
1603
|
+
if (currentContext[key] !== lastApplied[key]) {
|
|
1604
|
+
return true;
|
|
1605
|
+
}
|
|
1606
|
+
}
|
|
1607
|
+
return false;
|
|
1608
|
+
}),
|
|
1609
|
+
//#endregion
|
|
1571
1610
|
//#region ---- Action States ----
|
|
1572
1611
|
canExecute: computed(() => store.reportDefinition() !== null &&
|
|
1573
1612
|
store.currentLayout() !== null &&
|
|
@@ -1594,10 +1633,11 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1594
1633
|
}
|
|
1595
1634
|
patchState(store, {
|
|
1596
1635
|
status: AXPPageStatus.Submitting,
|
|
1597
|
-
error: null
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1636
|
+
error: null,
|
|
1637
|
+
allowFetchData: true,
|
|
1638
|
+
shouldExecuteReport: true,
|
|
1639
|
+
lastAppliedFilterContext: { ...store.filterContext() }, // Mark current filters as applied
|
|
1640
|
+
hasBeenExecuted: true // Mark that report has been executed at least once
|
|
1601
1641
|
});
|
|
1602
1642
|
patchState(store, {
|
|
1603
1643
|
status: AXPPageStatus.Submitted,
|
|
@@ -1671,6 +1711,7 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1671
1711
|
categoriesPath: categoriesPath || [],
|
|
1672
1712
|
filterContext: {}, // Reset context when loading new report
|
|
1673
1713
|
allowFetchData: false,
|
|
1714
|
+
hasBeenExecuted: false, // Reset execution state for new report
|
|
1674
1715
|
});
|
|
1675
1716
|
}
|
|
1676
1717
|
}
|
|
@@ -1708,12 +1749,16 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1708
1749
|
updateFilterContext(context) {
|
|
1709
1750
|
patchState(store, {
|
|
1710
1751
|
filterContext: { ...store.filterContext(), ...context },
|
|
1752
|
+
shouldExecuteReport: false, // Reset execution flag when filters change
|
|
1711
1753
|
});
|
|
1712
1754
|
},
|
|
1713
1755
|
clearFilters() {
|
|
1714
1756
|
patchState(store, {
|
|
1715
1757
|
allowFetchData: false,
|
|
1758
|
+
shouldExecuteReport: false,
|
|
1716
1759
|
filterContext: {},
|
|
1760
|
+
lastAppliedFilterContext: null, // Reset applied filters when clearing
|
|
1761
|
+
hasBeenExecuted: false, // Reset execution state when clearing filters
|
|
1717
1762
|
});
|
|
1718
1763
|
},
|
|
1719
1764
|
resetFilters() {
|
|
@@ -1754,6 +1799,9 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1754
1799
|
currentLayout: null,
|
|
1755
1800
|
filterContext: {},
|
|
1756
1801
|
allowFetchData: false,
|
|
1802
|
+
shouldExecuteReport: false,
|
|
1803
|
+
lastAppliedFilterContext: null,
|
|
1804
|
+
hasBeenExecuted: false,
|
|
1757
1805
|
categoriesPath: [],
|
|
1758
1806
|
status: AXPPageStatus.Idle,
|
|
1759
1807
|
error: null,
|
|
@@ -1817,7 +1865,7 @@ class AXPReportChartViewComponent {
|
|
|
1817
1865
|
* Effect to fetch chart data when conditions are met
|
|
1818
1866
|
*/
|
|
1819
1867
|
this.#fetchData = effect(() => {
|
|
1820
|
-
if (this.vm.allowFetchData() && this.chartOptions()) {
|
|
1868
|
+
if (this.vm.allowFetchData() && this.vm.shouldExecuteReport() && this.chartOptions()) {
|
|
1821
1869
|
this.vm.fetchData().then((data) => {
|
|
1822
1870
|
const raw = ((data?.data).data ?? {});
|
|
1823
1871
|
switch (this.chartType()) {
|
|
@@ -1897,15 +1945,20 @@ class AXPReportTableViewComponent {
|
|
|
1897
1945
|
this.commandService = inject(AXPCommandService);
|
|
1898
1946
|
this.grid = viewChild('grid', ...(ngDevMode ? [{ debugName: "grid" }] : []));
|
|
1899
1947
|
//#endregion
|
|
1900
|
-
//#region ----
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1948
|
+
//#region ---- Effects ----
|
|
1949
|
+
/**
|
|
1950
|
+
* Effect to handle data fetching when report is executed
|
|
1951
|
+
*/
|
|
1904
1952
|
this.#fetchData = effect(() => {
|
|
1905
|
-
if (this.grid() && this.vm.allowFetchData()) {
|
|
1953
|
+
if (this.grid() && this.vm.allowFetchData() && this.vm.shouldExecuteReport()) {
|
|
1906
1954
|
this.grid()?.refresh();
|
|
1907
1955
|
}
|
|
1908
1956
|
}, ...(ngDevMode ? [{ debugName: "#fetchData" }] : []));
|
|
1957
|
+
//#endregion
|
|
1958
|
+
//#region ---- Computed Properties ----
|
|
1959
|
+
this.layout = computed(() => {
|
|
1960
|
+
return this.vm.currentLayout()?.layout;
|
|
1961
|
+
}, ...(ngDevMode ? [{ debugName: "layout" }] : []));
|
|
1909
1962
|
this.dataSource = new AXDataSource({
|
|
1910
1963
|
load: async (e) => {
|
|
1911
1964
|
if (!this.vm.allowFetchData()) {
|
|
@@ -1970,6 +2023,11 @@ class AXPReportTableViewComponent {
|
|
|
1970
2023
|
handleRowAction(name, data) {
|
|
1971
2024
|
this.commandService.execute(name, data);
|
|
1972
2025
|
}
|
|
2026
|
+
//#endregion
|
|
2027
|
+
//#region ---- Effects ----
|
|
2028
|
+
/**
|
|
2029
|
+
* Effect to handle data fetching when report is executed
|
|
2030
|
+
*/
|
|
1973
2031
|
#fetchData;
|
|
1974
2032
|
//#endregion
|
|
1975
2033
|
//#region ---- Helpers ----
|
|
@@ -1979,7 +2037,7 @@ class AXPReportTableViewComponent {
|
|
|
1979
2037
|
return {
|
|
1980
2038
|
icon: action.icon ?? 'fa-light fa-eye',
|
|
1981
2039
|
text: action.title,
|
|
1982
|
-
name: action.name,
|
|
2040
|
+
name: action.command?.name ?? action.name,
|
|
1983
2041
|
divided: action.break,
|
|
1984
2042
|
color: action.color,
|
|
1985
2043
|
};
|
|
@@ -1988,7 +2046,7 @@ class AXPReportTableViewComponent {
|
|
|
1988
2046
|
return {
|
|
1989
2047
|
icon: defaultAction.icon ?? 'fa-light fa-eye',
|
|
1990
2048
|
text: defaultAction.title,
|
|
1991
|
-
name: defaultAction.name,
|
|
2049
|
+
name: defaultAction.name ?? defaultAction.command?.name,
|
|
1992
2050
|
divided: defaultAction.break,
|
|
1993
2051
|
color: defaultAction.color,
|
|
1994
2052
|
};
|
|
@@ -2100,6 +2158,7 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
2100
2158
|
await this.vm.executeReport();
|
|
2101
2159
|
}
|
|
2102
2160
|
handleRefresh() {
|
|
2161
|
+
debugger;
|
|
2103
2162
|
this.vm.refresh();
|
|
2104
2163
|
}
|
|
2105
2164
|
handleClearFilters() {
|
|
@@ -2258,7 +2317,7 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
2258
2317
|
provide: AXPPageLayoutBase,
|
|
2259
2318
|
useExisting: AXPReportViewerPageComponent,
|
|
2260
2319
|
},
|
|
2261
|
-
], viewQueries: [{ propertyName: "filtersForm", first: true, predicate: ["filtersForm"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n
|
|
2320
|
+
], viewQueries: [{ propertyName: "filtersForm", first: true, predicate: ["filtersForm"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-dynamic-form #filtersForm [formDefinition]=\"vm.formDefinition()\" [context]=\"vm.filterContext()\"\n [layoutConfig]=\"defaultLayout()\" [layoutLook]=\"'compact'\" (contextChange)=\"handleFiltersChange($event)\"\n (contextInitiated)=\"handleFiltersInitiated($event)\">\n </axp-dynamic-form>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\" *translate=\"let t\">\n @if (vm.hasUnappliedFilters()) {\n <div class=\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\">\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\">\n <ax-icon class=\"fa-light fa-exclamation-triangle ax-text-sm\"></ax-icon>\n <span class=\"ax-text-xs\">Filters have been changed but not applied. Click 'Execute Report' to apply\n changes.</span>\n </div>\n </div>\n }\n <ax-button [class.ax-sm]=\"layoutService.isSmall()\" class=\"ax-w-full\"\n [disabled]=\"vm.hasUnappliedFilters() === false && vm.hasBeenExecuted()\"\n [text]=\"t('@report-management:features.report-viewer.actions.execute') | async\" [color]=\"'primary'\"\n (onClick)=\"execute({ name: 'execute-report' })\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-play\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </axp-layout-footer>\n </axp-layout-start-side>\n }\n\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (vm.hasMultipleLayouts()) {\n <ax-button [text]=\"vm.currentLayout()?.title\">\n <ax-icon icon=\"fa-light {{ vm.currentLayout()?.icon }}\"></ax-icon>\n <ax-dropdown-panel>\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-button-item-list>\n <ax-button-item [text]=\"layout.title\" [selected]=\"vm.currentLayout()?.id === layout.id\"\n (onClick)=\"vm.switchLayout(layout.id)\">\n <ax-icon icon=\"fa-light {{ layout.icon }}\"></ax-icon>\n </ax-button-item>\n </ax-button-item-list>\n }\n </ax-dropdown-panel>\n </ax-button>\n }\n </axp-layout-prefix>\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Main Content: Report Display -->\n <axp-page-content class=\"ax-overflow-auto\">\n @if (!vm.reportDefinition()) {\n <ng-container *ngTemplateOutlet=\"noReport\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"reportDisplay\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Report Display Area -->\n<ng-template #reportDisplay>\n @if (vm.isTableLayout()) {\n <axp-report-table-view> </axp-report-table-view>\n } @else if (vm.isChartLayout()) {\n <axp-report-chart-view> </axp-report-chart-view>\n }\n</ng-template>\n\n<!-- No Report Selected State -->\n<ng-template #noReport>\n <div class=\"__no-report\" *translate=\"let t\">\n <div class=\"__no-report-icon\">\n <ax-icon class=\"fa-light fa-chart-line\"></ax-icon>\n </div>\n <div class=\"__no-report-content\">\n <h3 class=\"__no-report-title\">\n {{ t('@report-management:features.report-viewer.no-report.title') | async }}\n </h3>\n <p class=\"__no-report-description\">\n {{ t('@report-management:features.report-viewer.no-report.description') | async }}\n </p>\n <div class=\"__no-report-actions\">\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.no-report.browse-reports') | async\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n </div>\n</ng-template>", styles: [".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:.5rem}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections{gap:0px!important}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections axp-layout-section{border-style:none!important;padding:0!important;--tw-shadow: 0 0 #0000 !important;--tw-shadow-colored: 0 0 #0000 !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}.axp-report-viewer-page .__mobile-filters{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page .__no-report{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.axp-report-viewer-page .__no-report .__no-report-icon{margin-bottom:1rem;font-size:3.75rem;line-height:1;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));opacity:.5}.axp-report-viewer-page .__no-report .__no-report-content{max-width:28rem}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-description{margin-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.75}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-actions{display:flex;justify-content:center}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}.axp-report-viewer-page .ax-filter{filter:grayscale(100%) blur(1px)}.axp-report-viewer-page .ax-grayscale{filter:grayscale(100%)}.axp-report-viewer-page .ax-blur-sm{filter:blur(1px)}.axp-report-viewer-page .ax-pointer-events-none{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i1$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i5.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type:
|
|
2262
2321
|
//
|
|
2263
2322
|
AXPDynamicFormComponent, selector: "axp-dynamic-form", inputs: ["formDefinition", "context", "layoutLook", "layoutDirection", "layoutConfig"], outputs: ["contextChange", "contextInitiated", "validityChange"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutStartSideComponent, selector: "axp-layout-page-start-side, axp-layout-start-side" }, { kind: "component", type: AXPThemeLayoutHeaderComponent, selector: "axp-layout-header" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPReportTableViewComponent, selector: "axp-report-table-view" }, { kind: "component", type: AXPThemeLayoutFooterComponent, selector: "axp-layout-footer, axp-layout-page-footer" }, { kind: "component", type: AXPReportChartViewComponent, selector: "axp-report-chart-view" }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2264
2323
|
}
|
|
@@ -2272,6 +2331,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
|
|
|
2272
2331
|
AXTranslationModule,
|
|
2273
2332
|
AXDropdownButtonModule,
|
|
2274
2333
|
AXDropdownModule,
|
|
2334
|
+
AXBadgeModule,
|
|
2275
2335
|
//
|
|
2276
2336
|
AXPDynamicFormComponent,
|
|
2277
2337
|
AXPPageLayoutComponent,
|
|
@@ -2288,7 +2348,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
|
|
|
2288
2348
|
provide: AXPPageLayoutBase,
|
|
2289
2349
|
useExisting: AXPReportViewerPageComponent,
|
|
2290
2350
|
},
|
|
2291
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n
|
|
2351
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-dynamic-form #filtersForm [formDefinition]=\"vm.formDefinition()\" [context]=\"vm.filterContext()\"\n [layoutConfig]=\"defaultLayout()\" [layoutLook]=\"'compact'\" (contextChange)=\"handleFiltersChange($event)\"\n (contextInitiated)=\"handleFiltersInitiated($event)\">\n </axp-dynamic-form>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\" *translate=\"let t\">\n @if (vm.hasUnappliedFilters()) {\n <div class=\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\">\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\">\n <ax-icon class=\"fa-light fa-exclamation-triangle ax-text-sm\"></ax-icon>\n <span class=\"ax-text-xs\">Filters have been changed but not applied. Click 'Execute Report' to apply\n changes.</span>\n </div>\n </div>\n }\n <ax-button [class.ax-sm]=\"layoutService.isSmall()\" class=\"ax-w-full\"\n [disabled]=\"vm.hasUnappliedFilters() === false && vm.hasBeenExecuted()\"\n [text]=\"t('@report-management:features.report-viewer.actions.execute') | async\" [color]=\"'primary'\"\n (onClick)=\"execute({ name: 'execute-report' })\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-play\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </axp-layout-footer>\n </axp-layout-start-side>\n }\n\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (vm.hasMultipleLayouts()) {\n <ax-button [text]=\"vm.currentLayout()?.title\">\n <ax-icon icon=\"fa-light {{ vm.currentLayout()?.icon }}\"></ax-icon>\n <ax-dropdown-panel>\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-button-item-list>\n <ax-button-item [text]=\"layout.title\" [selected]=\"vm.currentLayout()?.id === layout.id\"\n (onClick)=\"vm.switchLayout(layout.id)\">\n <ax-icon icon=\"fa-light {{ layout.icon }}\"></ax-icon>\n </ax-button-item>\n </ax-button-item-list>\n }\n </ax-dropdown-panel>\n </ax-button>\n }\n </axp-layout-prefix>\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Main Content: Report Display -->\n <axp-page-content class=\"ax-overflow-auto\">\n @if (!vm.reportDefinition()) {\n <ng-container *ngTemplateOutlet=\"noReport\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"reportDisplay\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Report Display Area -->\n<ng-template #reportDisplay>\n @if (vm.isTableLayout()) {\n <axp-report-table-view> </axp-report-table-view>\n } @else if (vm.isChartLayout()) {\n <axp-report-chart-view> </axp-report-chart-view>\n }\n</ng-template>\n\n<!-- No Report Selected State -->\n<ng-template #noReport>\n <div class=\"__no-report\" *translate=\"let t\">\n <div class=\"__no-report-icon\">\n <ax-icon class=\"fa-light fa-chart-line\"></ax-icon>\n </div>\n <div class=\"__no-report-content\">\n <h3 class=\"__no-report-title\">\n {{ t('@report-management:features.report-viewer.no-report.title') | async }}\n </h3>\n <p class=\"__no-report-description\">\n {{ t('@report-management:features.report-viewer.no-report.description') | async }}\n </p>\n <div class=\"__no-report-actions\">\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.no-report.browse-reports') | async\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n </div>\n</ng-template>", styles: [".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:.5rem}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections{gap:0px!important}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections axp-layout-section{border-style:none!important;padding:0!important;--tw-shadow: 0 0 #0000 !important;--tw-shadow-colored: 0 0 #0000 !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}.axp-report-viewer-page .__mobile-filters{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page .__no-report{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.axp-report-viewer-page .__no-report .__no-report-icon{margin-bottom:1rem;font-size:3.75rem;line-height:1;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));opacity:.5}.axp-report-viewer-page .__no-report .__no-report-content{max-width:28rem}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-description{margin-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.75}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-actions{display:flex;justify-content:center}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}.axp-report-viewer-page .ax-filter{filter:grayscale(100%) blur(1px)}.axp-report-viewer-page .ax-grayscale{filter:grayscale(100%)}.axp-report-viewer-page .ax-blur-sm{filter:blur(1px)}.axp-report-viewer-page .ax-pointer-events-none{pointer-events:none}\n"] }]
|
|
2292
2352
|
}] });
|
|
2293
2353
|
|
|
2294
2354
|
var reportViewerPage_component = /*#__PURE__*/Object.freeze({
|
|
@@ -2337,7 +2397,7 @@ class AXPReportBarChartViewComponent {
|
|
|
2337
2397
|
* Effect to handle data fetching when chart configuration changes
|
|
2338
2398
|
*/
|
|
2339
2399
|
this.#fetchData = effect(() => {
|
|
2340
|
-
if (this.vm.allowFetchData() && this.chartOptions()) {
|
|
2400
|
+
if (this.vm.allowFetchData() && this.vm.shouldExecuteReport() && this.chartOptions()) {
|
|
2341
2401
|
// TODO: Implement chart data fetching
|
|
2342
2402
|
console.log('Chart data fetch triggered', {
|
|
2343
2403
|
chartType: this.chartType(),
|