@multiplatform.one/frappe-ui 7.28.1 → 7.29.0
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/dist/cjs/FrappeCalendar.cjs +3 -2
- package/dist/cjs/FrappeCalendar.native.js +3 -2
- package/dist/cjs/FrappeCalendar.native.js.map +1 -1
- package/dist/cjs/FrappeForm.cjs +148 -464
- package/dist/cjs/FrappeForm.native.js +152 -633
- package/dist/cjs/FrappeForm.native.js.map +1 -1
- package/dist/cjs/FrappeListView.cjs +5 -27
- package/dist/cjs/FrappeListView.native.js +11 -32
- package/dist/cjs/FrappeListView.native.js.map +1 -1
- package/dist/cjs/FrappeReportBuilder.cjs +523 -309
- package/dist/cjs/FrappeReportBuilder.native.js +658 -353
- package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
- package/dist/cjs/FrappeReportView.cjs +35 -234
- package/dist/cjs/FrappeReportView.native.js +39 -283
- package/dist/cjs/FrappeReportView.native.js.map +1 -1
- package/dist/cjs/dependsOn.cjs +2 -2
- package/dist/cjs/dependsOn.native.js +1 -2
- package/dist/cjs/dependsOn.native.js.map +1 -1
- package/dist/cjs/fields/shared/EditorPreviewPanes.cjs +2 -2
- package/dist/cjs/fields/shared/EditorPreviewPanes.native.js +2 -2
- package/dist/cjs/fields/shared/EditorPreviewPanes.native.js.map +1 -1
- package/dist/cjs/formEngine/docPermissions.cjs +20 -0
- package/dist/cjs/formEngine/docPermissions.native.js +69 -0
- package/dist/cjs/formEngine/docPermissions.native.js.map +1 -1
- package/dist/cjs/formEngine/index.cjs +2 -0
- package/dist/cjs/formEngine/index.native.js +2 -0
- package/dist/cjs/formEngine/index.native.js.map +1 -1
- package/dist/cjs/index.cjs +67 -7
- package/dist/cjs/index.native.js +67 -7
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/liveErrors.cjs +8 -2
- package/dist/cjs/liveErrors.native.js +8 -2
- package/dist/cjs/liveErrors.native.js.map +1 -1
- package/dist/cjs/measures.cjs +31 -0
- package/dist/cjs/measures.native.js +34 -0
- package/dist/cjs/measures.native.js.map +1 -0
- package/dist/cjs/recordShape.cjs +103 -0
- package/dist/cjs/recordShape.native.js +115 -0
- package/dist/cjs/recordShape.native.js.map +1 -0
- package/dist/cjs/report/ReportGrid.cjs +453 -0
- package/dist/cjs/report/ReportGrid.native.js +510 -0
- package/dist/cjs/report/ReportGrid.native.js.map +1 -0
- package/dist/cjs/report/ReportViewToolbar.cjs +253 -0
- package/dist/cjs/report/ReportViewToolbar.native.js +303 -0
- package/dist/cjs/report/ReportViewToolbar.native.js.map +1 -0
- package/dist/cjs/report/queryReport.cjs +444 -0
- package/dist/cjs/report/queryReport.native.js +588 -0
- package/dist/cjs/report/queryReport.native.js.map +1 -0
- package/dist/cjs/report/queryReportColumns.cjs +131 -0
- package/dist/cjs/report/queryReportColumns.native.js +159 -0
- package/dist/cjs/report/queryReportColumns.native.js.map +1 -0
- package/dist/cjs/report/reportViewModel.cjs +386 -0
- package/dist/cjs/report/reportViewModel.native.js +657 -0
- package/dist/cjs/report/reportViewModel.native.js.map +1 -0
- package/dist/cjs/report/savedReports.cjs +137 -0
- package/dist/cjs/report/savedReports.native.js +169 -0
- package/dist/cjs/report/savedReports.native.js.map +1 -0
- package/dist/cjs/report/useFrappeReport.cjs +184 -0
- package/dist/cjs/report/useFrappeReport.native.js +214 -0
- package/dist/cjs/report/useFrappeReport.native.js.map +1 -0
- package/dist/cjs/report/useQueryReport.cjs +201 -0
- package/dist/cjs/report/useQueryReport.native.js +233 -0
- package/dist/cjs/report/useQueryReport.native.js.map +1 -0
- package/dist/cjs/useFrappeForm.cjs +558 -0
- package/dist/cjs/useFrappeForm.native.js +714 -0
- package/dist/cjs/useFrappeForm.native.js.map +1 -0
- package/dist/esm/FrappeCalendar.mjs +4 -3
- package/dist/esm/FrappeCalendar.mjs.map +1 -1
- package/dist/esm/FrappeCalendar.native.js +4 -3
- package/dist/esm/FrappeCalendar.native.js.map +1 -1
- package/dist/esm/FrappeForm.mjs +151 -467
- package/dist/esm/FrappeForm.mjs.map +1 -1
- package/dist/esm/FrappeForm.native.js +155 -636
- package/dist/esm/FrappeForm.native.js.map +1 -1
- package/dist/esm/FrappeListView.mjs +6 -28
- package/dist/esm/FrappeListView.mjs.map +1 -1
- package/dist/esm/FrappeListView.native.js +12 -33
- package/dist/esm/FrappeListView.native.js.map +1 -1
- package/dist/esm/FrappeReportBuilder.mjs +526 -312
- package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
- package/dist/esm/FrappeReportBuilder.native.js +661 -356
- package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
- package/dist/esm/FrappeReportView.mjs +30 -229
- package/dist/esm/FrappeReportView.mjs.map +1 -1
- package/dist/esm/FrappeReportView.native.js +34 -278
- package/dist/esm/FrappeReportView.native.js.map +1 -1
- package/dist/esm/dependsOn.mjs +2 -2
- package/dist/esm/dependsOn.mjs.map +1 -1
- package/dist/esm/dependsOn.native.js +1 -2
- package/dist/esm/dependsOn.native.js.map +1 -1
- package/dist/esm/fields/shared/EditorPreviewPanes.mjs +2 -2
- package/dist/esm/fields/shared/EditorPreviewPanes.mjs.map +1 -1
- package/dist/esm/fields/shared/EditorPreviewPanes.native.js +2 -2
- package/dist/esm/fields/shared/EditorPreviewPanes.native.js.map +1 -1
- package/dist/esm/formEngine/docPermissions.mjs +19 -1
- package/dist/esm/formEngine/docPermissions.mjs.map +1 -1
- package/dist/esm/formEngine/docPermissions.native.js +68 -1
- package/dist/esm/formEngine/docPermissions.native.js.map +1 -1
- package/dist/esm/formEngine/index.mjs +2 -2
- package/dist/esm/formEngine/index.mjs.map +1 -1
- package/dist/esm/formEngine/index.native.js +2 -2
- package/dist/esm/formEngine/index.native.js.map +1 -1
- package/dist/esm/index.mjs +16 -4
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +16 -4
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/liveErrors.mjs +8 -3
- package/dist/esm/liveErrors.mjs.map +1 -1
- package/dist/esm/liveErrors.native.js +8 -3
- package/dist/esm/liveErrors.native.js.map +1 -1
- package/dist/esm/measures.mjs +5 -0
- package/dist/esm/measures.mjs.map +1 -0
- package/dist/esm/measures.native.js +5 -0
- package/dist/esm/measures.native.js.map +1 -0
- package/dist/esm/recordShape.mjs +74 -0
- package/dist/esm/recordShape.mjs.map +1 -0
- package/dist/esm/recordShape.native.js +83 -0
- package/dist/esm/recordShape.native.js.map +1 -0
- package/dist/esm/report/ReportGrid.mjs +428 -0
- package/dist/esm/report/ReportGrid.mjs.map +1 -0
- package/dist/esm/report/ReportGrid.native.js +471 -0
- package/dist/esm/report/ReportGrid.native.js.map +1 -0
- package/dist/esm/report/ReportViewToolbar.mjs +228 -0
- package/dist/esm/report/ReportViewToolbar.mjs.map +1 -0
- package/dist/esm/report/ReportViewToolbar.native.js +264 -0
- package/dist/esm/report/ReportViewToolbar.native.js.map +1 -0
- package/dist/esm/report/queryReport.mjs +404 -0
- package/dist/esm/report/queryReport.mjs.map +1 -0
- package/dist/esm/report/queryReport.native.js +545 -0
- package/dist/esm/report/queryReport.native.js.map +1 -0
- package/dist/esm/report/queryReportColumns.mjs +105 -0
- package/dist/esm/report/queryReportColumns.mjs.map +1 -0
- package/dist/esm/report/queryReportColumns.native.js +119 -0
- package/dist/esm/report/queryReportColumns.native.js.map +1 -0
- package/dist/esm/report/reportViewModel.mjs +343 -0
- package/dist/esm/report/reportViewModel.mjs.map +1 -0
- package/dist/esm/report/reportViewModel.native.js +611 -0
- package/dist/esm/report/reportViewModel.native.js.map +1 -0
- package/dist/esm/report/savedReports.mjs +112 -0
- package/dist/esm/report/savedReports.mjs.map +1 -0
- package/dist/esm/report/savedReports.native.js +141 -0
- package/dist/esm/report/savedReports.native.js.map +1 -0
- package/dist/esm/report/useFrappeReport.mjs +158 -0
- package/dist/esm/report/useFrappeReport.mjs.map +1 -0
- package/dist/esm/report/useFrappeReport.native.js +185 -0
- package/dist/esm/report/useFrappeReport.native.js.map +1 -0
- package/dist/esm/report/useQueryReport.mjs +176 -0
- package/dist/esm/report/useQueryReport.mjs.map +1 -0
- package/dist/esm/report/useQueryReport.native.js +205 -0
- package/dist/esm/report/useQueryReport.native.js.map +1 -0
- package/dist/esm/useFrappeForm.mjs +533 -0
- package/dist/esm/useFrappeForm.mjs.map +1 -0
- package/dist/esm/useFrappeForm.native.js +686 -0
- package/dist/esm/useFrappeForm.native.js.map +1 -0
- package/dist/jsx/FrappeCalendar.mjs +4 -3
- package/dist/jsx/FrappeCalendar.mjs.map +1 -1
- package/dist/jsx/FrappeCalendar.native.js +3 -2
- package/dist/jsx/FrappeCalendar.native.js.map +1 -1
- package/dist/jsx/FrappeForm.mjs +151 -467
- package/dist/jsx/FrappeForm.mjs.map +1 -1
- package/dist/jsx/FrappeForm.native.js +152 -633
- package/dist/jsx/FrappeForm.native.js.map +1 -1
- package/dist/jsx/FrappeListView.mjs +6 -28
- package/dist/jsx/FrappeListView.mjs.map +1 -1
- package/dist/jsx/FrappeListView.native.js +11 -32
- package/dist/jsx/FrappeListView.native.js.map +1 -1
- package/dist/jsx/FrappeReportBuilder.mjs +526 -312
- package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
- package/dist/jsx/FrappeReportBuilder.native.js +658 -353
- package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
- package/dist/jsx/FrappeReportView.mjs +30 -229
- package/dist/jsx/FrappeReportView.mjs.map +1 -1
- package/dist/jsx/FrappeReportView.native.js +39 -283
- package/dist/jsx/FrappeReportView.native.js.map +1 -1
- package/dist/jsx/dependsOn.mjs +2 -2
- package/dist/jsx/dependsOn.mjs.map +1 -1
- package/dist/jsx/dependsOn.native.js +1 -2
- package/dist/jsx/dependsOn.native.js.map +1 -1
- package/dist/jsx/fields/shared/EditorPreviewPanes.mjs +2 -2
- package/dist/jsx/fields/shared/EditorPreviewPanes.mjs.map +1 -1
- package/dist/jsx/fields/shared/EditorPreviewPanes.native.js +2 -2
- package/dist/jsx/fields/shared/EditorPreviewPanes.native.js.map +1 -1
- package/dist/jsx/formEngine/docPermissions.mjs +19 -1
- package/dist/jsx/formEngine/docPermissions.mjs.map +1 -1
- package/dist/jsx/formEngine/docPermissions.native.js +69 -0
- package/dist/jsx/formEngine/docPermissions.native.js.map +1 -1
- package/dist/jsx/formEngine/index.mjs +2 -2
- package/dist/jsx/formEngine/index.mjs.map +1 -1
- package/dist/jsx/formEngine/index.native.js +2 -0
- package/dist/jsx/formEngine/index.native.js.map +1 -1
- package/dist/jsx/index.js +16 -4
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +16 -4
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +67 -7
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/liveErrors.mjs +8 -3
- package/dist/jsx/liveErrors.mjs.map +1 -1
- package/dist/jsx/liveErrors.native.js +8 -2
- package/dist/jsx/liveErrors.native.js.map +1 -1
- package/dist/jsx/measures.mjs +5 -0
- package/dist/jsx/measures.mjs.map +1 -0
- package/dist/jsx/measures.native.js +34 -0
- package/dist/jsx/measures.native.js.map +1 -0
- package/dist/jsx/recordShape.mjs +74 -0
- package/dist/jsx/recordShape.mjs.map +1 -0
- package/dist/jsx/recordShape.native.js +115 -0
- package/dist/jsx/recordShape.native.js.map +1 -0
- package/dist/jsx/report/ReportGrid.mjs +428 -0
- package/dist/jsx/report/ReportGrid.mjs.map +1 -0
- package/dist/jsx/report/ReportGrid.native.js +510 -0
- package/dist/jsx/report/ReportGrid.native.js.map +1 -0
- package/dist/jsx/report/ReportViewToolbar.mjs +228 -0
- package/dist/jsx/report/ReportViewToolbar.mjs.map +1 -0
- package/dist/jsx/report/ReportViewToolbar.native.js +303 -0
- package/dist/jsx/report/ReportViewToolbar.native.js.map +1 -0
- package/dist/jsx/report/queryReport.mjs +404 -0
- package/dist/jsx/report/queryReport.mjs.map +1 -0
- package/dist/jsx/report/queryReport.native.js +588 -0
- package/dist/jsx/report/queryReport.native.js.map +1 -0
- package/dist/jsx/report/queryReportColumns.mjs +105 -0
- package/dist/jsx/report/queryReportColumns.mjs.map +1 -0
- package/dist/jsx/report/queryReportColumns.native.js +159 -0
- package/dist/jsx/report/queryReportColumns.native.js.map +1 -0
- package/dist/jsx/report/reportViewModel.mjs +343 -0
- package/dist/jsx/report/reportViewModel.mjs.map +1 -0
- package/dist/jsx/report/reportViewModel.native.js +657 -0
- package/dist/jsx/report/reportViewModel.native.js.map +1 -0
- package/dist/jsx/report/savedReports.mjs +112 -0
- package/dist/jsx/report/savedReports.mjs.map +1 -0
- package/dist/jsx/report/savedReports.native.js +169 -0
- package/dist/jsx/report/savedReports.native.js.map +1 -0
- package/dist/jsx/report/useFrappeReport.mjs +158 -0
- package/dist/jsx/report/useFrappeReport.mjs.map +1 -0
- package/dist/jsx/report/useFrappeReport.native.js +214 -0
- package/dist/jsx/report/useFrappeReport.native.js.map +1 -0
- package/dist/jsx/report/useQueryReport.mjs +176 -0
- package/dist/jsx/report/useQueryReport.mjs.map +1 -0
- package/dist/jsx/report/useQueryReport.native.js +233 -0
- package/dist/jsx/report/useQueryReport.native.js.map +1 -0
- package/dist/jsx/useFrappeForm.mjs +533 -0
- package/dist/jsx/useFrappeForm.mjs.map +1 -0
- package/dist/jsx/useFrappeForm.native.js +714 -0
- package/dist/jsx/useFrappeForm.native.js.map +1 -0
- package/package.json +16 -16
- package/src/FrappeCalendar.tsx +8 -2
- package/src/FrappeForm.stories.tsx +52 -0
- package/src/FrappeForm.tsx +176 -565
- package/src/FrappeListView.cards.stories.tsx +3 -6
- package/src/FrappeListView.tsx +15 -55
- package/src/FrappeReportBuilder.stories.tsx +34 -7
- package/src/FrappeReportBuilder.tsx +790 -380
- package/src/FrappeReportView.spec.tsx +10 -6
- package/src/FrappeReportView.stories.tsx +20 -1
- package/src/FrappeReportView.tsx +89 -415
- package/src/dependsOn.ts +4 -1
- package/src/fields/shared/EditorPreviewPanes.tsx +2 -2
- package/src/formEngine/docPermissions.spec.ts +36 -1
- package/src/formEngine/docPermissions.ts +34 -0
- package/src/formEngine/index.ts +8 -1
- package/src/frappeRemainder.designLaw.spec.ts +9 -1
- package/src/frappeRoutes.spec.tsx +9 -0
- package/src/frappeViews.designLaw.spec.ts +15 -2
- package/src/guestFallback.spec.tsx +236 -0
- package/src/index.ts +117 -16
- package/src/liveErrors.spec.ts +10 -0
- package/src/liveErrors.ts +16 -3
- package/src/measures.ts +11 -0
- package/src/recordShape.spec.ts +100 -0
- package/src/recordShape.ts +133 -0
- package/src/report/ReportGrid.spec.tsx +175 -0
- package/src/report/ReportGrid.tsx +530 -0
- package/src/report/ReportViewToolbar.spec.tsx +90 -0
- package/src/report/ReportViewToolbar.tsx +314 -0
- package/src/report/queryReport.spec.ts +483 -0
- package/src/report/queryReport.ts +722 -0
- package/src/report/queryReportColumns.tsx +123 -0
- package/src/report/reportViewModel.spec.ts +393 -0
- package/src/report/reportViewModel.ts +617 -0
- package/src/report/savedReports.ts +172 -0
- package/src/report/seam.spec.ts +216 -0
- package/src/report/useFrappeReport.ts +241 -0
- package/src/report/useQueryReport.spec.tsx +131 -0
- package/src/report/useQueryReport.ts +309 -0
- package/src/useFrappeForm.spec.tsx +209 -0
- package/src/useFrappeForm.ts +778 -0
- package/types/FrappeCalendar.d.ts.map +1 -1
- package/types/FrappeForm.d.ts +21 -1
- package/types/FrappeForm.d.ts.map +1 -1
- package/types/FrappeListView.d.ts.map +1 -1
- package/types/FrappeReportBuilder.d.ts +66 -16
- package/types/FrappeReportBuilder.d.ts.map +1 -1
- package/types/FrappeReportView.d.ts +9 -127
- package/types/FrappeReportView.d.ts.map +1 -1
- package/types/dependsOn.d.ts.map +1 -1
- package/types/formEngine/docPermissions.d.ts +14 -0
- package/types/formEngine/docPermissions.d.ts.map +1 -1
- package/types/formEngine/index.d.ts +1 -1
- package/types/formEngine/index.d.ts.map +1 -1
- package/types/index.d.ts +15 -3
- package/types/index.d.ts.map +1 -1
- package/types/liveErrors.d.ts +9 -1
- package/types/liveErrors.d.ts.map +1 -1
- package/types/measures.d.ts +3 -0
- package/types/measures.d.ts.map +1 -0
- package/types/recordShape.d.ts +45 -0
- package/types/recordShape.d.ts.map +1 -0
- package/types/report/ReportGrid.d.ts +20 -0
- package/types/report/ReportGrid.d.ts.map +1 -0
- package/types/report/ReportViewToolbar.d.ts +31 -0
- package/types/report/ReportViewToolbar.d.ts.map +1 -0
- package/types/report/queryReport.d.ts +181 -0
- package/types/report/queryReport.d.ts.map +1 -0
- package/types/report/queryReportColumns.d.ts +12 -0
- package/types/report/queryReportColumns.d.ts.map +1 -0
- package/types/report/reportViewModel.d.ts +146 -0
- package/types/report/reportViewModel.d.ts.map +1 -0
- package/types/report/savedReports.d.ts +27 -0
- package/types/report/savedReports.d.ts.map +1 -0
- package/types/report/useFrappeReport.d.ts +60 -0
- package/types/report/useFrappeReport.d.ts.map +1 -0
- package/types/report/useQueryReport.d.ts +37 -0
- package/types/report/useQueryReport.d.ts.map +1 -0
- package/types/useFrappeForm.d.ts +142 -0
- package/types/useFrappeForm.d.ts.map +1 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
+
get: () => from[key],
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
+
value: true
|
|
22
|
+
}), mod);
|
|
23
|
+
var savedReports_exports = {};
|
|
24
|
+
__export(savedReports_exports, {
|
|
25
|
+
useSavedReports: () => useSavedReports
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(savedReports_exports);
|
|
28
|
+
var import_react = require("react");
|
|
29
|
+
var import_FrappeProvider = require("../FrappeProvider.cjs");
|
|
30
|
+
var import_reportViewModel = require("./reportViewModel.cjs");
|
|
31
|
+
var import_useFrappeReport = require("./useFrappeReport.cjs");
|
|
32
|
+
function useSavedReports(doctype, connection) {
|
|
33
|
+
const config = (0, import_FrappeProvider.useFrappeConfig)();
|
|
34
|
+
const baseURL = connection ? connection.baseURL : config?.baseURL;
|
|
35
|
+
const auth = connection ? connection.auth : config?.auth;
|
|
36
|
+
const fixtureMode = Boolean(connection ? connection.fixtures : config?.fixtures);
|
|
37
|
+
const call = (0, import_react.useMemo)(() => baseURL ? (0, import_useFrappeReport.reportCall)({
|
|
38
|
+
baseURL,
|
|
39
|
+
auth
|
|
40
|
+
}) : void 0, [baseURL, auth]);
|
|
41
|
+
const [reports, setReports] = (0, import_react.useState)([]);
|
|
42
|
+
const [loading, setLoading] = (0, import_react.useState)(false);
|
|
43
|
+
const [generation, setGeneration] = (0, import_react.useState)(0);
|
|
44
|
+
const memoryConfigs = (0, import_react.useRef)(/* @__PURE__ */new Map());
|
|
45
|
+
(0, import_react.useEffect)(() => {
|
|
46
|
+
memoryConfigs.current = /* @__PURE__ */new Map();
|
|
47
|
+
setReports([]);
|
|
48
|
+
}, [doctype]);
|
|
49
|
+
(0, import_react.useEffect)(() => {
|
|
50
|
+
if (!call || fixtureMode) return;
|
|
51
|
+
let cancelled = false;
|
|
52
|
+
setLoading(true);
|
|
53
|
+
call.get("frappe.client.get_list", {
|
|
54
|
+
doctype: "Report",
|
|
55
|
+
filters: JSON.stringify([["ref_doctype", "=", doctype], ["report_type", "=", "Report Builder"], ["disabled", "=", 0]]),
|
|
56
|
+
fields: JSON.stringify(["name", "report_name", "json"]),
|
|
57
|
+
limit_page_length: 0,
|
|
58
|
+
order_by: "report_name asc"
|
|
59
|
+
}).then(res => {
|
|
60
|
+
if (cancelled) return;
|
|
61
|
+
const rows = res.payload?.message ?? [];
|
|
62
|
+
setReports(rows.map(row => ({
|
|
63
|
+
name: row.name,
|
|
64
|
+
reportName: row.report_name || row.name,
|
|
65
|
+
json: row.json
|
|
66
|
+
})));
|
|
67
|
+
setLoading(false);
|
|
68
|
+
}).catch(() => {
|
|
69
|
+
if (cancelled) return;
|
|
70
|
+
setReports([]);
|
|
71
|
+
setLoading(false);
|
|
72
|
+
});
|
|
73
|
+
return () => {
|
|
74
|
+
cancelled = true;
|
|
75
|
+
};
|
|
76
|
+
}, [call, fixtureMode, doctype, generation]);
|
|
77
|
+
const load = (0, import_react.useCallback)(async name => {
|
|
78
|
+
if (fixtureMode) return memoryConfigs.current.get(name);
|
|
79
|
+
const summary = reports.find(report => report.name === name);
|
|
80
|
+
let json = summary?.json;
|
|
81
|
+
if (json === void 0 && call) {
|
|
82
|
+
const res = await call.get("frappe.client.get_value", {
|
|
83
|
+
doctype: "Report",
|
|
84
|
+
filters: JSON.stringify({
|
|
85
|
+
name
|
|
86
|
+
}),
|
|
87
|
+
fieldname: JSON.stringify(["json"])
|
|
88
|
+
});
|
|
89
|
+
json = res.payload?.message?.json;
|
|
90
|
+
}
|
|
91
|
+
if (!json) return void 0;
|
|
92
|
+
try {
|
|
93
|
+
return (0, import_reportViewModel.fromDeskReportSettings)(doctype, JSON.parse(json));
|
|
94
|
+
} catch {
|
|
95
|
+
return void 0;
|
|
96
|
+
}
|
|
97
|
+
}, [call, fixtureMode, reports, doctype]);
|
|
98
|
+
const save = (0, import_react.useCallback)(async (name, viewConfig) => {
|
|
99
|
+
const trimmed = name.trim();
|
|
100
|
+
if (!trimmed) throw new Error("Report name is required");
|
|
101
|
+
if (fixtureMode || !call) {
|
|
102
|
+
memoryConfigs.current.set(trimmed, viewConfig);
|
|
103
|
+
setReports(previous => [...previous.filter(report => report.name !== trimmed), {
|
|
104
|
+
name: trimmed,
|
|
105
|
+
reportName: trimmed
|
|
106
|
+
}]);
|
|
107
|
+
return trimmed;
|
|
108
|
+
}
|
|
109
|
+
const res = await call.post("frappe.desk.reportview.save_report", {
|
|
110
|
+
name: trimmed,
|
|
111
|
+
doctype,
|
|
112
|
+
report_settings: JSON.stringify((0, import_reportViewModel.toDeskReportSettings)(doctype, viewConfig))
|
|
113
|
+
});
|
|
114
|
+
setGeneration(value => value + 1);
|
|
115
|
+
return res.payload?.message ?? trimmed;
|
|
116
|
+
}, [call, fixtureMode, doctype]);
|
|
117
|
+
const remove = (0, import_react.useCallback)(async name => {
|
|
118
|
+
if (fixtureMode || !call) {
|
|
119
|
+
memoryConfigs.current.delete(name);
|
|
120
|
+
setReports(previous => previous.filter(report => report.name !== name));
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
await call.post("frappe.desk.reportview.delete_report", {
|
|
124
|
+
name
|
|
125
|
+
});
|
|
126
|
+
setGeneration(value => value + 1);
|
|
127
|
+
}, [call, fixtureMode]);
|
|
128
|
+
const refresh = (0, import_react.useCallback)(() => setGeneration(value => value + 1), []);
|
|
129
|
+
return (0, import_react.useMemo)(() => ({
|
|
130
|
+
reports,
|
|
131
|
+
loading,
|
|
132
|
+
load,
|
|
133
|
+
save,
|
|
134
|
+
remove,
|
|
135
|
+
refresh
|
|
136
|
+
}), [reports, loading, load, save, remove, refresh]);
|
|
137
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
}), mod);
|
|
25
|
+
var savedReports_exports = {};
|
|
26
|
+
__export(savedReports_exports, {
|
|
27
|
+
useSavedReports: () => useSavedReports
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(savedReports_exports);
|
|
30
|
+
var import_react = require("react");
|
|
31
|
+
var import_FrappeProvider = require("../FrappeProvider.native.js");
|
|
32
|
+
var import_reportViewModel = require("./reportViewModel.native.js");
|
|
33
|
+
var import_useFrappeReport = require("./useFrappeReport.native.js");
|
|
34
|
+
function useSavedReports(doctype, connection) {
|
|
35
|
+
var config = (0, import_FrappeProvider.useFrappeConfig)();
|
|
36
|
+
var baseURL = connection ? connection.baseURL : config === null || config === void 0 ? void 0 : config.baseURL;
|
|
37
|
+
var auth = connection ? connection.auth : config === null || config === void 0 ? void 0 : config.auth;
|
|
38
|
+
var fixtureMode = Boolean(connection ? connection.fixtures : config === null || config === void 0 ? void 0 : config.fixtures);
|
|
39
|
+
var call = (0, import_react.useMemo)(function () {
|
|
40
|
+
return baseURL ? (0, import_useFrappeReport.reportCall)({
|
|
41
|
+
baseURL,
|
|
42
|
+
auth
|
|
43
|
+
}) : void 0;
|
|
44
|
+
}, [baseURL, auth]);
|
|
45
|
+
var [reports, setReports] = (0, import_react.useState)([]);
|
|
46
|
+
var [loading, setLoading] = (0, import_react.useState)(false);
|
|
47
|
+
var [generation, setGeneration] = (0, import_react.useState)(0);
|
|
48
|
+
var memoryConfigs = (0, import_react.useRef)(/* @__PURE__ */new Map());
|
|
49
|
+
(0, import_react.useEffect)(function () {
|
|
50
|
+
memoryConfigs.current = /* @__PURE__ */new Map();
|
|
51
|
+
setReports([]);
|
|
52
|
+
}, [doctype]);
|
|
53
|
+
(0, import_react.useEffect)(function () {
|
|
54
|
+
if (!call || fixtureMode) return;
|
|
55
|
+
var cancelled = false;
|
|
56
|
+
setLoading(true);
|
|
57
|
+
call.get("frappe.client.get_list", {
|
|
58
|
+
doctype: "Report",
|
|
59
|
+
filters: JSON.stringify([["ref_doctype", "=", doctype], ["report_type", "=", "Report Builder"], ["disabled", "=", 0]]),
|
|
60
|
+
fields: JSON.stringify(["name", "report_name", "json"]),
|
|
61
|
+
limit_page_length: 0,
|
|
62
|
+
order_by: "report_name asc"
|
|
63
|
+
}).then(function (res) {
|
|
64
|
+
var _ref;
|
|
65
|
+
var _res_payload;
|
|
66
|
+
if (cancelled) return;
|
|
67
|
+
var rows = (_ref = (_res_payload = res.payload) === null || _res_payload === void 0 ? void 0 : _res_payload.message) !== null && _ref !== void 0 ? _ref : [];
|
|
68
|
+
setReports(rows.map(function (row) {
|
|
69
|
+
return {
|
|
70
|
+
name: row.name,
|
|
71
|
+
reportName: row.report_name || row.name,
|
|
72
|
+
json: row.json
|
|
73
|
+
};
|
|
74
|
+
}));
|
|
75
|
+
setLoading(false);
|
|
76
|
+
}).catch(function () {
|
|
77
|
+
if (cancelled) return;
|
|
78
|
+
setReports([]);
|
|
79
|
+
setLoading(false);
|
|
80
|
+
});
|
|
81
|
+
return function () {
|
|
82
|
+
cancelled = true;
|
|
83
|
+
};
|
|
84
|
+
}, [call, fixtureMode, doctype, generation]);
|
|
85
|
+
var load = (0, import_react.useCallback)(async function (name) {
|
|
86
|
+
if (fixtureMode) return memoryConfigs.current.get(name);
|
|
87
|
+
var summary = reports.find(function (report) {
|
|
88
|
+
return report.name === name;
|
|
89
|
+
});
|
|
90
|
+
var json = summary === null || summary === void 0 ? void 0 : summary.json;
|
|
91
|
+
if (json === void 0 && call) {
|
|
92
|
+
var _res_payload_message, _res_payload;
|
|
93
|
+
var res = await call.get("frappe.client.get_value", {
|
|
94
|
+
doctype: "Report",
|
|
95
|
+
filters: JSON.stringify({
|
|
96
|
+
name
|
|
97
|
+
}),
|
|
98
|
+
fieldname: JSON.stringify(["json"])
|
|
99
|
+
});
|
|
100
|
+
json = (_res_payload = res.payload) === null || _res_payload === void 0 ? void 0 : (_res_payload_message = _res_payload.message) === null || _res_payload_message === void 0 ? void 0 : _res_payload_message.json;
|
|
101
|
+
}
|
|
102
|
+
if (!json) return void 0;
|
|
103
|
+
try {
|
|
104
|
+
return (0, import_reportViewModel.fromDeskReportSettings)(doctype, JSON.parse(json));
|
|
105
|
+
} catch (unused) {
|
|
106
|
+
return void 0;
|
|
107
|
+
}
|
|
108
|
+
}, [call, fixtureMode, reports, doctype]);
|
|
109
|
+
var save = (0, import_react.useCallback)(async function (name, viewConfig) {
|
|
110
|
+
var _ref;
|
|
111
|
+
var _res_payload;
|
|
112
|
+
var trimmed = name.trim();
|
|
113
|
+
if (!trimmed) throw new Error("Report name is required");
|
|
114
|
+
if (fixtureMode || !call) {
|
|
115
|
+
memoryConfigs.current.set(trimmed, viewConfig);
|
|
116
|
+
setReports(function (previous) {
|
|
117
|
+
return [...previous.filter(function (report) {
|
|
118
|
+
return report.name !== trimmed;
|
|
119
|
+
}), {
|
|
120
|
+
name: trimmed,
|
|
121
|
+
reportName: trimmed
|
|
122
|
+
}];
|
|
123
|
+
});
|
|
124
|
+
return trimmed;
|
|
125
|
+
}
|
|
126
|
+
var res = await call.post("frappe.desk.reportview.save_report", {
|
|
127
|
+
name: trimmed,
|
|
128
|
+
doctype,
|
|
129
|
+
report_settings: JSON.stringify((0, import_reportViewModel.toDeskReportSettings)(doctype, viewConfig))
|
|
130
|
+
});
|
|
131
|
+
setGeneration(function (value) {
|
|
132
|
+
return value + 1;
|
|
133
|
+
});
|
|
134
|
+
return (_ref = (_res_payload = res.payload) === null || _res_payload === void 0 ? void 0 : _res_payload.message) !== null && _ref !== void 0 ? _ref : trimmed;
|
|
135
|
+
}, [call, fixtureMode, doctype]);
|
|
136
|
+
var remove = (0, import_react.useCallback)(async function (name) {
|
|
137
|
+
if (fixtureMode || !call) {
|
|
138
|
+
memoryConfigs.current.delete(name);
|
|
139
|
+
setReports(function (previous) {
|
|
140
|
+
return previous.filter(function (report) {
|
|
141
|
+
return report.name !== name;
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
await call.post("frappe.desk.reportview.delete_report", {
|
|
147
|
+
name
|
|
148
|
+
});
|
|
149
|
+
setGeneration(function (value) {
|
|
150
|
+
return value + 1;
|
|
151
|
+
});
|
|
152
|
+
}, [call, fixtureMode]);
|
|
153
|
+
var refresh = (0, import_react.useCallback)(function () {
|
|
154
|
+
return setGeneration(function (value) {
|
|
155
|
+
return value + 1;
|
|
156
|
+
});
|
|
157
|
+
}, []);
|
|
158
|
+
return (0, import_react.useMemo)(function () {
|
|
159
|
+
return {
|
|
160
|
+
reports,
|
|
161
|
+
loading,
|
|
162
|
+
load,
|
|
163
|
+
save,
|
|
164
|
+
remove,
|
|
165
|
+
refresh
|
|
166
|
+
};
|
|
167
|
+
}, [reports, loading, load, save, remove, refresh]);
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=savedReports.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","savedReports_exports","__export","useSavedReports","module","exports","import_react","require","import_FrappeProvider","import_reportViewModel","import_useFrappeReport","doctype","connection","config","useFrappeConfig","baseURL","auth","fixtureMode","Boolean","fixtures","call","useMemo","reportCall","reports","setReports","useState","loading","setLoading","generation","setGeneration","memoryConfigs","useRef","Map","useEffect","current","cancelled","get","filters","JSON","stringify","fields","limit_page_length","order_by","then","res","_ref","_res_payload","rows","payload","message","map","row","name","reportName","report_name","json","catch","load","useCallback","summary","find","report","_res_payload_message","fieldname","fromDeskReportSettings","parse","unused"],"sources":["../../../src/report/savedReports.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
+
get: () => from[key],
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
+
value: true
|
|
22
|
+
}), mod);
|
|
23
|
+
var useFrappeReport_exports = {};
|
|
24
|
+
__export(useFrappeReport_exports, {
|
|
25
|
+
reportCall: () => reportCall,
|
|
26
|
+
useFrappeReport: () => useFrappeReport
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(useFrappeReport_exports);
|
|
29
|
+
var import_frappe = require("@multiplatform.one/frappe");
|
|
30
|
+
var import_react = require("react");
|
|
31
|
+
var import_queryReport = require("./queryReport.cjs");
|
|
32
|
+
const callCache = /* @__PURE__ */new Map();
|
|
33
|
+
function reportCall(connection) {
|
|
34
|
+
const key = `${connection.baseURL}:${connection.auth?.useToken ? "t" : ""}:${connection.auth?.token ?? ""}:${connection.auth?.type ?? ""}`;
|
|
35
|
+
let call = callCache.get(key);
|
|
36
|
+
if (!call) {
|
|
37
|
+
const authConfig = connection.auth ? {
|
|
38
|
+
useToken: connection.auth.useToken,
|
|
39
|
+
token: connection.auth.token,
|
|
40
|
+
type: connection.auth.type
|
|
41
|
+
} : void 0;
|
|
42
|
+
call = new import_frappe.CallModule(new import_frappe.HttpClient(connection.baseURL, authConfig));
|
|
43
|
+
callCache.set(key, call);
|
|
44
|
+
}
|
|
45
|
+
return call;
|
|
46
|
+
}
|
|
47
|
+
const DEFAULT_DEBOUNCE_MS = 400;
|
|
48
|
+
function useFrappeReport(connection, {
|
|
49
|
+
reportName,
|
|
50
|
+
filters,
|
|
51
|
+
fixture,
|
|
52
|
+
fetchFilterDefs = false,
|
|
53
|
+
ignorePreparedReport = false,
|
|
54
|
+
debounceMs = DEFAULT_DEBOUNCE_MS,
|
|
55
|
+
enabled = true
|
|
56
|
+
}) {
|
|
57
|
+
const isEnabled = enabled && !!reportName && (!!connection || !!fixture);
|
|
58
|
+
const [payload, setPayload] = (0, import_react.useState)(void 0);
|
|
59
|
+
const [scriptFilters, setScriptFilters] = (0, import_react.useState)(void 0);
|
|
60
|
+
const [isLoading, setIsLoading] = (0, import_react.useState)(isEnabled);
|
|
61
|
+
const [isFetching, setIsFetching] = (0, import_react.useState)(false);
|
|
62
|
+
const [error, setError] = (0, import_react.useState)(void 0);
|
|
63
|
+
const compactedFilters = (0, import_react.useMemo)(() => (0, import_queryReport.compactFilterValues)(filters), [filters]);
|
|
64
|
+
const filtersKey = JSON.stringify(compactedFilters);
|
|
65
|
+
const runKey = JSON.stringify([connection?.baseURL, !!fixture, reportName, filtersKey, ignorePreparedReport]);
|
|
66
|
+
const fetchSeq = (0, import_react.useRef)(0);
|
|
67
|
+
const argsRef = (0, import_react.useRef)({
|
|
68
|
+
reportName,
|
|
69
|
+
filters: compactedFilters,
|
|
70
|
+
fixture,
|
|
71
|
+
ignorePreparedReport
|
|
72
|
+
});
|
|
73
|
+
argsRef.current = {
|
|
74
|
+
reportName,
|
|
75
|
+
filters: compactedFilters,
|
|
76
|
+
fixture,
|
|
77
|
+
ignorePreparedReport
|
|
78
|
+
};
|
|
79
|
+
const connectionRef = (0, import_react.useRef)(connection);
|
|
80
|
+
connectionRef.current = connection;
|
|
81
|
+
const runFetch = (0, import_react.useCallback)(async () => {
|
|
82
|
+
const {
|
|
83
|
+
reportName: name,
|
|
84
|
+
filters: values,
|
|
85
|
+
fixture: fx,
|
|
86
|
+
ignorePreparedReport: skipPrepared
|
|
87
|
+
} = argsRef.current;
|
|
88
|
+
const conn = connectionRef.current;
|
|
89
|
+
if (!name || !conn && !fx) return;
|
|
90
|
+
const seq = ++fetchSeq.current;
|
|
91
|
+
setIsFetching(true);
|
|
92
|
+
try {
|
|
93
|
+
let raw;
|
|
94
|
+
if (fx) {
|
|
95
|
+
raw = typeof fx === "function" ? await fx({
|
|
96
|
+
reportName: name,
|
|
97
|
+
filters: values
|
|
98
|
+
}) : fx;
|
|
99
|
+
} else if (conn) {
|
|
100
|
+
const res = await reportCall(conn).post("frappe.desk.query_report.run", {
|
|
101
|
+
report_name: name,
|
|
102
|
+
filters: values,
|
|
103
|
+
ignore_prepared_report: skipPrepared ? 1 : 0,
|
|
104
|
+
// Desk parity: only let the server substitute saved custom
|
|
105
|
+
// filters when the caller sent no filter values at all.
|
|
106
|
+
are_default_filters: Object.keys(values).length ? 0 : 1
|
|
107
|
+
});
|
|
108
|
+
raw = res.payload.message;
|
|
109
|
+
}
|
|
110
|
+
if (seq !== fetchSeq.current) return;
|
|
111
|
+
setPayload((0, import_queryReport.normalizeQueryReportPayload)(raw ?? {}));
|
|
112
|
+
setError(void 0);
|
|
113
|
+
} catch (err) {
|
|
114
|
+
if (seq !== fetchSeq.current) return;
|
|
115
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
116
|
+
} finally {
|
|
117
|
+
if (seq === fetchSeq.current) {
|
|
118
|
+
setIsLoading(false);
|
|
119
|
+
setIsFetching(false);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}, []);
|
|
123
|
+
const debouncerRef = (0, import_react.useRef)(void 0);
|
|
124
|
+
if (!debouncerRef.current) {
|
|
125
|
+
debouncerRef.current = new import_frappe.AsyncDebouncer(() => runFetch(), {
|
|
126
|
+
wait: debounceMs
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
(0, import_react.useEffect)(() => {
|
|
130
|
+
debouncerRef.current?.setOptions({
|
|
131
|
+
wait: debounceMs
|
|
132
|
+
});
|
|
133
|
+
}, [debounceMs]);
|
|
134
|
+
(0, import_react.useEffect)(() => () => debouncerRef.current?.cancel(), []);
|
|
135
|
+
const lastRunKeyRef = (0, import_react.useRef)(void 0);
|
|
136
|
+
const lastReportRef = (0, import_react.useRef)(void 0);
|
|
137
|
+
(0, import_react.useEffect)(() => {
|
|
138
|
+
if (!isEnabled || lastRunKeyRef.current === runKey) return;
|
|
139
|
+
lastRunKeyRef.current = runKey;
|
|
140
|
+
const reportChanged = lastReportRef.current !== argsRef.current.reportName;
|
|
141
|
+
lastReportRef.current = argsRef.current.reportName;
|
|
142
|
+
setError(void 0);
|
|
143
|
+
if (reportChanged) {
|
|
144
|
+
setIsLoading(true);
|
|
145
|
+
debouncerRef.current?.cancel();
|
|
146
|
+
void runFetch();
|
|
147
|
+
} else if (debounceMs <= 0) {
|
|
148
|
+
void runFetch();
|
|
149
|
+
} else {
|
|
150
|
+
void debouncerRef.current?.maybeExecute();
|
|
151
|
+
}
|
|
152
|
+
}, [isEnabled, runKey, debounceMs, runFetch]);
|
|
153
|
+
(0, import_react.useEffect)(() => {
|
|
154
|
+
if (!isEnabled || !fetchFilterDefs || fixture || !connection) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
let cancelled = false;
|
|
158
|
+
void (async () => {
|
|
159
|
+
try {
|
|
160
|
+
const res = await reportCall(connection).get("frappe.desk.query_report.get_script", {
|
|
161
|
+
report_name: reportName
|
|
162
|
+
});
|
|
163
|
+
if (!cancelled) setScriptFilters(res.payload.message?.filters ?? []);
|
|
164
|
+
} catch {
|
|
165
|
+
if (!cancelled) setScriptFilters([]);
|
|
166
|
+
}
|
|
167
|
+
})();
|
|
168
|
+
return () => {
|
|
169
|
+
cancelled = true;
|
|
170
|
+
};
|
|
171
|
+
}, [isEnabled, fetchFilterDefs, fixture, connection, reportName]);
|
|
172
|
+
const refresh = (0, import_react.useCallback)(() => {
|
|
173
|
+
debouncerRef.current?.cancel();
|
|
174
|
+
void runFetch();
|
|
175
|
+
}, [runFetch]);
|
|
176
|
+
return {
|
|
177
|
+
payload,
|
|
178
|
+
scriptFilters,
|
|
179
|
+
isLoading,
|
|
180
|
+
isFetching,
|
|
181
|
+
error,
|
|
182
|
+
refresh
|
|
183
|
+
};
|
|
184
|
+
}
|