@multiplatform.one/frappe-ui 7.28.1 → 7.29.1
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,112 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
+
import { useFrappeConfig } from "../FrappeProvider.mjs";
|
|
3
|
+
import { toDeskReportSettings, fromDeskReportSettings } from "./reportViewModel.mjs";
|
|
4
|
+
import { reportCall } from "./useFrappeReport.mjs";
|
|
5
|
+
function useSavedReports(doctype, connection) {
|
|
6
|
+
const config = useFrappeConfig();
|
|
7
|
+
const baseURL = connection ? connection.baseURL : config?.baseURL;
|
|
8
|
+
const auth = connection ? connection.auth : config?.auth;
|
|
9
|
+
const fixtureMode = Boolean(connection ? connection.fixtures : config?.fixtures);
|
|
10
|
+
const call = useMemo(() => baseURL ? reportCall({
|
|
11
|
+
baseURL,
|
|
12
|
+
auth
|
|
13
|
+
}) : void 0, [baseURL, auth]);
|
|
14
|
+
const [reports, setReports] = useState([]);
|
|
15
|
+
const [loading, setLoading] = useState(false);
|
|
16
|
+
const [generation, setGeneration] = useState(0);
|
|
17
|
+
const memoryConfigs = useRef(/* @__PURE__ */new Map());
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
memoryConfigs.current = /* @__PURE__ */new Map();
|
|
20
|
+
setReports([]);
|
|
21
|
+
}, [doctype]);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (!call || fixtureMode) return;
|
|
24
|
+
let cancelled = false;
|
|
25
|
+
setLoading(true);
|
|
26
|
+
call.get("frappe.client.get_list", {
|
|
27
|
+
doctype: "Report",
|
|
28
|
+
filters: JSON.stringify([["ref_doctype", "=", doctype], ["report_type", "=", "Report Builder"], ["disabled", "=", 0]]),
|
|
29
|
+
fields: JSON.stringify(["name", "report_name", "json"]),
|
|
30
|
+
limit_page_length: 0,
|
|
31
|
+
order_by: "report_name asc"
|
|
32
|
+
}).then(res => {
|
|
33
|
+
if (cancelled) return;
|
|
34
|
+
const rows = res.payload?.message ?? [];
|
|
35
|
+
setReports(rows.map(row => ({
|
|
36
|
+
name: row.name,
|
|
37
|
+
reportName: row.report_name || row.name,
|
|
38
|
+
json: row.json
|
|
39
|
+
})));
|
|
40
|
+
setLoading(false);
|
|
41
|
+
}).catch(() => {
|
|
42
|
+
if (cancelled) return;
|
|
43
|
+
setReports([]);
|
|
44
|
+
setLoading(false);
|
|
45
|
+
});
|
|
46
|
+
return () => {
|
|
47
|
+
cancelled = true;
|
|
48
|
+
};
|
|
49
|
+
}, [call, fixtureMode, doctype, generation]);
|
|
50
|
+
const load = useCallback(async name => {
|
|
51
|
+
if (fixtureMode) return memoryConfigs.current.get(name);
|
|
52
|
+
const summary = reports.find(report => report.name === name);
|
|
53
|
+
let json = summary?.json;
|
|
54
|
+
if (json === void 0 && call) {
|
|
55
|
+
const res = await call.get("frappe.client.get_value", {
|
|
56
|
+
doctype: "Report",
|
|
57
|
+
filters: JSON.stringify({
|
|
58
|
+
name
|
|
59
|
+
}),
|
|
60
|
+
fieldname: JSON.stringify(["json"])
|
|
61
|
+
});
|
|
62
|
+
json = res.payload?.message?.json;
|
|
63
|
+
}
|
|
64
|
+
if (!json) return void 0;
|
|
65
|
+
try {
|
|
66
|
+
return fromDeskReportSettings(doctype, JSON.parse(json));
|
|
67
|
+
} catch {
|
|
68
|
+
return void 0;
|
|
69
|
+
}
|
|
70
|
+
}, [call, fixtureMode, reports, doctype]);
|
|
71
|
+
const save = useCallback(async (name, viewConfig) => {
|
|
72
|
+
const trimmed = name.trim();
|
|
73
|
+
if (!trimmed) throw new Error("Report name is required");
|
|
74
|
+
if (fixtureMode || !call) {
|
|
75
|
+
memoryConfigs.current.set(trimmed, viewConfig);
|
|
76
|
+
setReports(previous => [...previous.filter(report => report.name !== trimmed), {
|
|
77
|
+
name: trimmed,
|
|
78
|
+
reportName: trimmed
|
|
79
|
+
}]);
|
|
80
|
+
return trimmed;
|
|
81
|
+
}
|
|
82
|
+
const res = await call.post("frappe.desk.reportview.save_report", {
|
|
83
|
+
name: trimmed,
|
|
84
|
+
doctype,
|
|
85
|
+
report_settings: JSON.stringify(toDeskReportSettings(doctype, viewConfig))
|
|
86
|
+
});
|
|
87
|
+
setGeneration(value => value + 1);
|
|
88
|
+
return res.payload?.message ?? trimmed;
|
|
89
|
+
}, [call, fixtureMode, doctype]);
|
|
90
|
+
const remove = useCallback(async name => {
|
|
91
|
+
if (fixtureMode || !call) {
|
|
92
|
+
memoryConfigs.current.delete(name);
|
|
93
|
+
setReports(previous => previous.filter(report => report.name !== name));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
await call.post("frappe.desk.reportview.delete_report", {
|
|
97
|
+
name
|
|
98
|
+
});
|
|
99
|
+
setGeneration(value => value + 1);
|
|
100
|
+
}, [call, fixtureMode]);
|
|
101
|
+
const refresh = useCallback(() => setGeneration(value => value + 1), []);
|
|
102
|
+
return useMemo(() => ({
|
|
103
|
+
reports,
|
|
104
|
+
loading,
|
|
105
|
+
load,
|
|
106
|
+
save,
|
|
107
|
+
remove,
|
|
108
|
+
refresh
|
|
109
|
+
}), [reports, loading, load, save, remove, refresh]);
|
|
110
|
+
}
|
|
111
|
+
export { useSavedReports };
|
|
112
|
+
//# sourceMappingURL=savedReports.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","useFrappeConfig","toDeskReportSettings","fromDeskReportSettings","reportCall","useSavedReports","doctype","connection","config","baseURL","auth","fixtureMode","Boolean","fixtures","call","reports","setReports","loading","setLoading","generation","setGeneration","memoryConfigs","Map","current","cancelled","get","filters","JSON","stringify","fields","limit_page_length","order_by","then","res","rows","payload","message","map","row","name","reportName","report_name","json","catch","load","summary","find","report","fieldname","parse","save","viewConfig","trimmed","trim","Error","set","previous","filter","post","report_settings","value","remove","delete","refresh"],"sources":["../../../src/report/savedReports.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
+
import { useFrappeConfig } from "../FrappeProvider.native.js";
|
|
3
|
+
import { toDeskReportSettings, fromDeskReportSettings } from "./reportViewModel.native.js";
|
|
4
|
+
import { reportCall } from "./useFrappeReport.native.js";
|
|
5
|
+
function useSavedReports(doctype, connection) {
|
|
6
|
+
var config = useFrappeConfig();
|
|
7
|
+
var baseURL = connection ? connection.baseURL : config === null || config === void 0 ? void 0 : config.baseURL;
|
|
8
|
+
var auth = connection ? connection.auth : config === null || config === void 0 ? void 0 : config.auth;
|
|
9
|
+
var fixtureMode = Boolean(connection ? connection.fixtures : config === null || config === void 0 ? void 0 : config.fixtures);
|
|
10
|
+
var call = useMemo(function () {
|
|
11
|
+
return baseURL ? reportCall({
|
|
12
|
+
baseURL,
|
|
13
|
+
auth
|
|
14
|
+
}) : void 0;
|
|
15
|
+
}, [baseURL, auth]);
|
|
16
|
+
var [reports, setReports] = useState([]);
|
|
17
|
+
var [loading, setLoading] = useState(false);
|
|
18
|
+
var [generation, setGeneration] = useState(0);
|
|
19
|
+
var memoryConfigs = useRef(/* @__PURE__ */new Map());
|
|
20
|
+
useEffect(function () {
|
|
21
|
+
memoryConfigs.current = /* @__PURE__ */new Map();
|
|
22
|
+
setReports([]);
|
|
23
|
+
}, [doctype]);
|
|
24
|
+
useEffect(function () {
|
|
25
|
+
if (!call || fixtureMode) return;
|
|
26
|
+
var cancelled = false;
|
|
27
|
+
setLoading(true);
|
|
28
|
+
call.get("frappe.client.get_list", {
|
|
29
|
+
doctype: "Report",
|
|
30
|
+
filters: JSON.stringify([["ref_doctype", "=", doctype], ["report_type", "=", "Report Builder"], ["disabled", "=", 0]]),
|
|
31
|
+
fields: JSON.stringify(["name", "report_name", "json"]),
|
|
32
|
+
limit_page_length: 0,
|
|
33
|
+
order_by: "report_name asc"
|
|
34
|
+
}).then(function (res) {
|
|
35
|
+
var _ref;
|
|
36
|
+
var _res_payload;
|
|
37
|
+
if (cancelled) return;
|
|
38
|
+
var rows = (_ref = (_res_payload = res.payload) === null || _res_payload === void 0 ? void 0 : _res_payload.message) !== null && _ref !== void 0 ? _ref : [];
|
|
39
|
+
setReports(rows.map(function (row) {
|
|
40
|
+
return {
|
|
41
|
+
name: row.name,
|
|
42
|
+
reportName: row.report_name || row.name,
|
|
43
|
+
json: row.json
|
|
44
|
+
};
|
|
45
|
+
}));
|
|
46
|
+
setLoading(false);
|
|
47
|
+
}).catch(function () {
|
|
48
|
+
if (cancelled) return;
|
|
49
|
+
setReports([]);
|
|
50
|
+
setLoading(false);
|
|
51
|
+
});
|
|
52
|
+
return function () {
|
|
53
|
+
cancelled = true;
|
|
54
|
+
};
|
|
55
|
+
}, [call, fixtureMode, doctype, generation]);
|
|
56
|
+
var load = useCallback(async function (name) {
|
|
57
|
+
if (fixtureMode) return memoryConfigs.current.get(name);
|
|
58
|
+
var summary = reports.find(function (report) {
|
|
59
|
+
return report.name === name;
|
|
60
|
+
});
|
|
61
|
+
var json = summary === null || summary === void 0 ? void 0 : summary.json;
|
|
62
|
+
if (json === void 0 && call) {
|
|
63
|
+
var _res_payload_message, _res_payload;
|
|
64
|
+
var res = await call.get("frappe.client.get_value", {
|
|
65
|
+
doctype: "Report",
|
|
66
|
+
filters: JSON.stringify({
|
|
67
|
+
name
|
|
68
|
+
}),
|
|
69
|
+
fieldname: JSON.stringify(["json"])
|
|
70
|
+
});
|
|
71
|
+
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;
|
|
72
|
+
}
|
|
73
|
+
if (!json) return void 0;
|
|
74
|
+
try {
|
|
75
|
+
return fromDeskReportSettings(doctype, JSON.parse(json));
|
|
76
|
+
} catch (unused) {
|
|
77
|
+
return void 0;
|
|
78
|
+
}
|
|
79
|
+
}, [call, fixtureMode, reports, doctype]);
|
|
80
|
+
var save = useCallback(async function (name, viewConfig) {
|
|
81
|
+
var _ref;
|
|
82
|
+
var _res_payload;
|
|
83
|
+
var trimmed = name.trim();
|
|
84
|
+
if (!trimmed) throw new Error("Report name is required");
|
|
85
|
+
if (fixtureMode || !call) {
|
|
86
|
+
memoryConfigs.current.set(trimmed, viewConfig);
|
|
87
|
+
setReports(function (previous) {
|
|
88
|
+
return [...previous.filter(function (report) {
|
|
89
|
+
return report.name !== trimmed;
|
|
90
|
+
}), {
|
|
91
|
+
name: trimmed,
|
|
92
|
+
reportName: trimmed
|
|
93
|
+
}];
|
|
94
|
+
});
|
|
95
|
+
return trimmed;
|
|
96
|
+
}
|
|
97
|
+
var res = await call.post("frappe.desk.reportview.save_report", {
|
|
98
|
+
name: trimmed,
|
|
99
|
+
doctype,
|
|
100
|
+
report_settings: JSON.stringify(toDeskReportSettings(doctype, viewConfig))
|
|
101
|
+
});
|
|
102
|
+
setGeneration(function (value) {
|
|
103
|
+
return value + 1;
|
|
104
|
+
});
|
|
105
|
+
return (_ref = (_res_payload = res.payload) === null || _res_payload === void 0 ? void 0 : _res_payload.message) !== null && _ref !== void 0 ? _ref : trimmed;
|
|
106
|
+
}, [call, fixtureMode, doctype]);
|
|
107
|
+
var remove = useCallback(async function (name) {
|
|
108
|
+
if (fixtureMode || !call) {
|
|
109
|
+
memoryConfigs.current.delete(name);
|
|
110
|
+
setReports(function (previous) {
|
|
111
|
+
return previous.filter(function (report) {
|
|
112
|
+
return report.name !== name;
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
await call.post("frappe.desk.reportview.delete_report", {
|
|
118
|
+
name
|
|
119
|
+
});
|
|
120
|
+
setGeneration(function (value) {
|
|
121
|
+
return value + 1;
|
|
122
|
+
});
|
|
123
|
+
}, [call, fixtureMode]);
|
|
124
|
+
var refresh = useCallback(function () {
|
|
125
|
+
return setGeneration(function (value) {
|
|
126
|
+
return value + 1;
|
|
127
|
+
});
|
|
128
|
+
}, []);
|
|
129
|
+
return useMemo(function () {
|
|
130
|
+
return {
|
|
131
|
+
reports,
|
|
132
|
+
loading,
|
|
133
|
+
load,
|
|
134
|
+
save,
|
|
135
|
+
remove,
|
|
136
|
+
refresh
|
|
137
|
+
};
|
|
138
|
+
}, [reports, loading, load, save, remove, refresh]);
|
|
139
|
+
}
|
|
140
|
+
export { useSavedReports };
|
|
141
|
+
//# sourceMappingURL=savedReports.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","useFrappeConfig","toDeskReportSettings","fromDeskReportSettings","reportCall","useSavedReports","doctype","connection","config","baseURL","auth","fixtureMode","Boolean","fixtures","call","reports","setReports","loading","setLoading","generation","setGeneration","memoryConfigs","Map","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","summary","find","report","_res_payload_message","fieldname","parse","unused","save","viewConfig","trimmed","trim"],"sources":["../../../src/report/savedReports.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { AsyncDebouncer, CallModule, HttpClient } from "@multiplatform.one/frappe";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { compactFilterValues, normalizeQueryReportPayload } from "./queryReport.mjs";
|
|
4
|
+
const callCache = /* @__PURE__ */new Map();
|
|
5
|
+
function reportCall(connection) {
|
|
6
|
+
const key = `${connection.baseURL}:${connection.auth?.useToken ? "t" : ""}:${connection.auth?.token ?? ""}:${connection.auth?.type ?? ""}`;
|
|
7
|
+
let call = callCache.get(key);
|
|
8
|
+
if (!call) {
|
|
9
|
+
const authConfig = connection.auth ? {
|
|
10
|
+
useToken: connection.auth.useToken,
|
|
11
|
+
token: connection.auth.token,
|
|
12
|
+
type: connection.auth.type
|
|
13
|
+
} : void 0;
|
|
14
|
+
call = new CallModule(new HttpClient(connection.baseURL, authConfig));
|
|
15
|
+
callCache.set(key, call);
|
|
16
|
+
}
|
|
17
|
+
return call;
|
|
18
|
+
}
|
|
19
|
+
const DEFAULT_DEBOUNCE_MS = 400;
|
|
20
|
+
function useFrappeReport(connection, {
|
|
21
|
+
reportName,
|
|
22
|
+
filters,
|
|
23
|
+
fixture,
|
|
24
|
+
fetchFilterDefs = false,
|
|
25
|
+
ignorePreparedReport = false,
|
|
26
|
+
debounceMs = DEFAULT_DEBOUNCE_MS,
|
|
27
|
+
enabled = true
|
|
28
|
+
}) {
|
|
29
|
+
const isEnabled = enabled && !!reportName && (!!connection || !!fixture);
|
|
30
|
+
const [payload, setPayload] = useState(void 0);
|
|
31
|
+
const [scriptFilters, setScriptFilters] = useState(void 0);
|
|
32
|
+
const [isLoading, setIsLoading] = useState(isEnabled);
|
|
33
|
+
const [isFetching, setIsFetching] = useState(false);
|
|
34
|
+
const [error, setError] = useState(void 0);
|
|
35
|
+
const compactedFilters = useMemo(() => compactFilterValues(filters), [filters]);
|
|
36
|
+
const filtersKey = JSON.stringify(compactedFilters);
|
|
37
|
+
const runKey = JSON.stringify([connection?.baseURL, !!fixture, reportName, filtersKey, ignorePreparedReport]);
|
|
38
|
+
const fetchSeq = useRef(0);
|
|
39
|
+
const argsRef = useRef({
|
|
40
|
+
reportName,
|
|
41
|
+
filters: compactedFilters,
|
|
42
|
+
fixture,
|
|
43
|
+
ignorePreparedReport
|
|
44
|
+
});
|
|
45
|
+
argsRef.current = {
|
|
46
|
+
reportName,
|
|
47
|
+
filters: compactedFilters,
|
|
48
|
+
fixture,
|
|
49
|
+
ignorePreparedReport
|
|
50
|
+
};
|
|
51
|
+
const connectionRef = useRef(connection);
|
|
52
|
+
connectionRef.current = connection;
|
|
53
|
+
const runFetch = useCallback(async () => {
|
|
54
|
+
const {
|
|
55
|
+
reportName: name,
|
|
56
|
+
filters: values,
|
|
57
|
+
fixture: fx,
|
|
58
|
+
ignorePreparedReport: skipPrepared
|
|
59
|
+
} = argsRef.current;
|
|
60
|
+
const conn = connectionRef.current;
|
|
61
|
+
if (!name || !conn && !fx) return;
|
|
62
|
+
const seq = ++fetchSeq.current;
|
|
63
|
+
setIsFetching(true);
|
|
64
|
+
try {
|
|
65
|
+
let raw;
|
|
66
|
+
if (fx) {
|
|
67
|
+
raw = typeof fx === "function" ? await fx({
|
|
68
|
+
reportName: name,
|
|
69
|
+
filters: values
|
|
70
|
+
}) : fx;
|
|
71
|
+
} else if (conn) {
|
|
72
|
+
const res = await reportCall(conn).post("frappe.desk.query_report.run", {
|
|
73
|
+
report_name: name,
|
|
74
|
+
filters: values,
|
|
75
|
+
ignore_prepared_report: skipPrepared ? 1 : 0,
|
|
76
|
+
// Desk parity: only let the server substitute saved custom
|
|
77
|
+
// filters when the caller sent no filter values at all.
|
|
78
|
+
are_default_filters: Object.keys(values).length ? 0 : 1
|
|
79
|
+
});
|
|
80
|
+
raw = res.payload.message;
|
|
81
|
+
}
|
|
82
|
+
if (seq !== fetchSeq.current) return;
|
|
83
|
+
setPayload(normalizeQueryReportPayload(raw ?? {}));
|
|
84
|
+
setError(void 0);
|
|
85
|
+
} catch (err) {
|
|
86
|
+
if (seq !== fetchSeq.current) return;
|
|
87
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
88
|
+
} finally {
|
|
89
|
+
if (seq === fetchSeq.current) {
|
|
90
|
+
setIsLoading(false);
|
|
91
|
+
setIsFetching(false);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}, []);
|
|
95
|
+
const debouncerRef = useRef(void 0);
|
|
96
|
+
if (!debouncerRef.current) {
|
|
97
|
+
debouncerRef.current = new AsyncDebouncer(() => runFetch(), {
|
|
98
|
+
wait: debounceMs
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
useEffect(() => {
|
|
102
|
+
debouncerRef.current?.setOptions({
|
|
103
|
+
wait: debounceMs
|
|
104
|
+
});
|
|
105
|
+
}, [debounceMs]);
|
|
106
|
+
useEffect(() => () => debouncerRef.current?.cancel(), []);
|
|
107
|
+
const lastRunKeyRef = useRef(void 0);
|
|
108
|
+
const lastReportRef = useRef(void 0);
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
if (!isEnabled || lastRunKeyRef.current === runKey) return;
|
|
111
|
+
lastRunKeyRef.current = runKey;
|
|
112
|
+
const reportChanged = lastReportRef.current !== argsRef.current.reportName;
|
|
113
|
+
lastReportRef.current = argsRef.current.reportName;
|
|
114
|
+
setError(void 0);
|
|
115
|
+
if (reportChanged) {
|
|
116
|
+
setIsLoading(true);
|
|
117
|
+
debouncerRef.current?.cancel();
|
|
118
|
+
void runFetch();
|
|
119
|
+
} else if (debounceMs <= 0) {
|
|
120
|
+
void runFetch();
|
|
121
|
+
} else {
|
|
122
|
+
void debouncerRef.current?.maybeExecute();
|
|
123
|
+
}
|
|
124
|
+
}, [isEnabled, runKey, debounceMs, runFetch]);
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
if (!isEnabled || !fetchFilterDefs || fixture || !connection) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
let cancelled = false;
|
|
130
|
+
void (async () => {
|
|
131
|
+
try {
|
|
132
|
+
const res = await reportCall(connection).get("frappe.desk.query_report.get_script", {
|
|
133
|
+
report_name: reportName
|
|
134
|
+
});
|
|
135
|
+
if (!cancelled) setScriptFilters(res.payload.message?.filters ?? []);
|
|
136
|
+
} catch {
|
|
137
|
+
if (!cancelled) setScriptFilters([]);
|
|
138
|
+
}
|
|
139
|
+
})();
|
|
140
|
+
return () => {
|
|
141
|
+
cancelled = true;
|
|
142
|
+
};
|
|
143
|
+
}, [isEnabled, fetchFilterDefs, fixture, connection, reportName]);
|
|
144
|
+
const refresh = useCallback(() => {
|
|
145
|
+
debouncerRef.current?.cancel();
|
|
146
|
+
void runFetch();
|
|
147
|
+
}, [runFetch]);
|
|
148
|
+
return {
|
|
149
|
+
payload,
|
|
150
|
+
scriptFilters,
|
|
151
|
+
isLoading,
|
|
152
|
+
isFetching,
|
|
153
|
+
error,
|
|
154
|
+
refresh
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
export { reportCall, useFrappeReport };
|
|
158
|
+
//# sourceMappingURL=useFrappeReport.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AsyncDebouncer","CallModule","HttpClient","useCallback","useEffect","useMemo","useRef","useState","compactFilterValues","normalizeQueryReportPayload","callCache","Map","reportCall","connection","key","baseURL","auth","useToken","token","type","call","get","authConfig","set","DEFAULT_DEBOUNCE_MS","useFrappeReport","reportName","filters","fixture","fetchFilterDefs","ignorePreparedReport","debounceMs","enabled","isEnabled","payload","setPayload","scriptFilters","setScriptFilters","isLoading","setIsLoading","isFetching","setIsFetching","error","setError","compactedFilters","filtersKey","JSON","stringify","runKey","fetchSeq","argsRef","current","connectionRef","runFetch","name","values","fx","skipPrepared","conn","seq","raw","res","post","report_name","ignore_prepared_report","are_default_filters","Object","keys","length","message","err","Error","String","debouncerRef","wait","setOptions","cancel","lastRunKeyRef","lastReportRef","reportChanged","maybeExecute","cancelled","refresh"],"sources":["../../../src/report/useFrappeReport.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { AsyncDebouncer, CallModule, HttpClient } from "@multiplatform.one/frappe";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { compactFilterValues, normalizeQueryReportPayload } from "./queryReport.native.js";
|
|
4
|
+
function _instanceof(left, right) {
|
|
5
|
+
"@swc/helpers - instanceof";
|
|
6
|
+
|
|
7
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
8
|
+
return !!right[Symbol.hasInstance](left);
|
|
9
|
+
} else {
|
|
10
|
+
return left instanceof right;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
var callCache = /* @__PURE__ */new Map();
|
|
14
|
+
function reportCall(connection) {
|
|
15
|
+
var _ref, _ref1;
|
|
16
|
+
var _connection_auth, _connection_auth1, _connection_auth2;
|
|
17
|
+
var key = `${connection.baseURL}:${((_connection_auth = connection.auth) === null || _connection_auth === void 0 ? void 0 : _connection_auth.useToken) ? "t" : ""}:${(_ref = (_connection_auth1 = connection.auth) === null || _connection_auth1 === void 0 ? void 0 : _connection_auth1.token) !== null && _ref !== void 0 ? _ref : ""}:${(_ref1 = (_connection_auth2 = connection.auth) === null || _connection_auth2 === void 0 ? void 0 : _connection_auth2.type) !== null && _ref1 !== void 0 ? _ref1 : ""}`;
|
|
18
|
+
var call = callCache.get(key);
|
|
19
|
+
if (!call) {
|
|
20
|
+
var authConfig = connection.auth ? {
|
|
21
|
+
useToken: connection.auth.useToken,
|
|
22
|
+
token: connection.auth.token,
|
|
23
|
+
type: connection.auth.type
|
|
24
|
+
} : void 0;
|
|
25
|
+
call = new CallModule(new HttpClient(connection.baseURL, authConfig));
|
|
26
|
+
callCache.set(key, call);
|
|
27
|
+
}
|
|
28
|
+
return call;
|
|
29
|
+
}
|
|
30
|
+
var DEFAULT_DEBOUNCE_MS = 400;
|
|
31
|
+
function useFrappeReport(connection, param) {
|
|
32
|
+
var {
|
|
33
|
+
reportName,
|
|
34
|
+
filters,
|
|
35
|
+
fixture,
|
|
36
|
+
fetchFilterDefs = false,
|
|
37
|
+
ignorePreparedReport = false,
|
|
38
|
+
debounceMs = DEFAULT_DEBOUNCE_MS,
|
|
39
|
+
enabled = true
|
|
40
|
+
} = param;
|
|
41
|
+
var isEnabled = enabled && !!reportName && (!!connection || !!fixture);
|
|
42
|
+
var [payload, setPayload] = useState(void 0);
|
|
43
|
+
var [scriptFilters, setScriptFilters] = useState(void 0);
|
|
44
|
+
var [isLoading, setIsLoading] = useState(isEnabled);
|
|
45
|
+
var [isFetching, setIsFetching] = useState(false);
|
|
46
|
+
var [error, setError] = useState(void 0);
|
|
47
|
+
var compactedFilters = useMemo(function () {
|
|
48
|
+
return compactFilterValues(filters);
|
|
49
|
+
}, [filters]);
|
|
50
|
+
var filtersKey = JSON.stringify(compactedFilters);
|
|
51
|
+
var runKey = JSON.stringify([connection === null || connection === void 0 ? void 0 : connection.baseURL, !!fixture, reportName, filtersKey, ignorePreparedReport]);
|
|
52
|
+
var fetchSeq = useRef(0);
|
|
53
|
+
var argsRef = useRef({
|
|
54
|
+
reportName,
|
|
55
|
+
filters: compactedFilters,
|
|
56
|
+
fixture,
|
|
57
|
+
ignorePreparedReport
|
|
58
|
+
});
|
|
59
|
+
argsRef.current = {
|
|
60
|
+
reportName,
|
|
61
|
+
filters: compactedFilters,
|
|
62
|
+
fixture,
|
|
63
|
+
ignorePreparedReport
|
|
64
|
+
};
|
|
65
|
+
var connectionRef = useRef(connection);
|
|
66
|
+
connectionRef.current = connection;
|
|
67
|
+
var runFetch = useCallback(async function () {
|
|
68
|
+
var {
|
|
69
|
+
reportName: name,
|
|
70
|
+
filters: values,
|
|
71
|
+
fixture: fx,
|
|
72
|
+
ignorePreparedReport: skipPrepared
|
|
73
|
+
} = argsRef.current;
|
|
74
|
+
var conn = connectionRef.current;
|
|
75
|
+
if (!name || !conn && !fx) return;
|
|
76
|
+
var seq = ++fetchSeq.current;
|
|
77
|
+
setIsFetching(true);
|
|
78
|
+
try {
|
|
79
|
+
var raw;
|
|
80
|
+
if (fx) {
|
|
81
|
+
raw = typeof fx === "function" ? await fx({
|
|
82
|
+
reportName: name,
|
|
83
|
+
filters: values
|
|
84
|
+
}) : fx;
|
|
85
|
+
} else if (conn) {
|
|
86
|
+
var res = await reportCall(conn).post("frappe.desk.query_report.run", {
|
|
87
|
+
report_name: name,
|
|
88
|
+
filters: values,
|
|
89
|
+
ignore_prepared_report: skipPrepared ? 1 : 0,
|
|
90
|
+
// Desk parity: only let the server substitute saved custom
|
|
91
|
+
// filters when the caller sent no filter values at all.
|
|
92
|
+
are_default_filters: Object.keys(values).length ? 0 : 1
|
|
93
|
+
});
|
|
94
|
+
raw = res.payload.message;
|
|
95
|
+
}
|
|
96
|
+
if (seq !== fetchSeq.current) return;
|
|
97
|
+
setPayload(normalizeQueryReportPayload(raw !== null && raw !== void 0 ? raw : {}));
|
|
98
|
+
setError(void 0);
|
|
99
|
+
} catch (err) {
|
|
100
|
+
if (seq !== fetchSeq.current) return;
|
|
101
|
+
setError(_instanceof(err, Error) ? err : new Error(String(err)));
|
|
102
|
+
} finally {
|
|
103
|
+
if (seq === fetchSeq.current) {
|
|
104
|
+
setIsLoading(false);
|
|
105
|
+
setIsFetching(false);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}, []);
|
|
109
|
+
var debouncerRef = useRef(void 0);
|
|
110
|
+
if (!debouncerRef.current) {
|
|
111
|
+
debouncerRef.current = new AsyncDebouncer(function () {
|
|
112
|
+
return runFetch();
|
|
113
|
+
}, {
|
|
114
|
+
wait: debounceMs
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
useEffect(function () {
|
|
118
|
+
var _debouncerRef_current;
|
|
119
|
+
(_debouncerRef_current = debouncerRef.current) === null || _debouncerRef_current === void 0 ? void 0 : _debouncerRef_current.setOptions({
|
|
120
|
+
wait: debounceMs
|
|
121
|
+
});
|
|
122
|
+
}, [debounceMs]);
|
|
123
|
+
useEffect(function () {
|
|
124
|
+
return function () {
|
|
125
|
+
var _debouncerRef_current;
|
|
126
|
+
return (_debouncerRef_current = debouncerRef.current) === null || _debouncerRef_current === void 0 ? void 0 : _debouncerRef_current.cancel();
|
|
127
|
+
};
|
|
128
|
+
}, []);
|
|
129
|
+
var lastRunKeyRef = useRef(void 0);
|
|
130
|
+
var lastReportRef = useRef(void 0);
|
|
131
|
+
useEffect(function () {
|
|
132
|
+
if (!isEnabled || lastRunKeyRef.current === runKey) return;
|
|
133
|
+
lastRunKeyRef.current = runKey;
|
|
134
|
+
var reportChanged = lastReportRef.current !== argsRef.current.reportName;
|
|
135
|
+
lastReportRef.current = argsRef.current.reportName;
|
|
136
|
+
setError(void 0);
|
|
137
|
+
if (reportChanged) {
|
|
138
|
+
var _debouncerRef_current;
|
|
139
|
+
setIsLoading(true);
|
|
140
|
+
(_debouncerRef_current = debouncerRef.current) === null || _debouncerRef_current === void 0 ? void 0 : _debouncerRef_current.cancel();
|
|
141
|
+
void runFetch();
|
|
142
|
+
} else if (debounceMs <= 0) {
|
|
143
|
+
void runFetch();
|
|
144
|
+
} else {
|
|
145
|
+
var _debouncerRef_current1;
|
|
146
|
+
void ((_debouncerRef_current1 = debouncerRef.current) === null || _debouncerRef_current1 === void 0 ? void 0 : _debouncerRef_current1.maybeExecute());
|
|
147
|
+
}
|
|
148
|
+
}, [isEnabled, runKey, debounceMs, runFetch]);
|
|
149
|
+
useEffect(function () {
|
|
150
|
+
if (!isEnabled || !fetchFilterDefs || fixture || !connection) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
var cancelled = false;
|
|
154
|
+
void async function () {
|
|
155
|
+
try {
|
|
156
|
+
var _ref;
|
|
157
|
+
var _res_payload_message;
|
|
158
|
+
var res = await reportCall(connection).get("frappe.desk.query_report.get_script", {
|
|
159
|
+
report_name: reportName
|
|
160
|
+
});
|
|
161
|
+
if (!cancelled) setScriptFilters((_ref = (_res_payload_message = res.payload.message) === null || _res_payload_message === void 0 ? void 0 : _res_payload_message.filters) !== null && _ref !== void 0 ? _ref : []);
|
|
162
|
+
} catch (unused) {
|
|
163
|
+
if (!cancelled) setScriptFilters([]);
|
|
164
|
+
}
|
|
165
|
+
}();
|
|
166
|
+
return function () {
|
|
167
|
+
cancelled = true;
|
|
168
|
+
};
|
|
169
|
+
}, [isEnabled, fetchFilterDefs, fixture, connection, reportName]);
|
|
170
|
+
var refresh = useCallback(function () {
|
|
171
|
+
var _debouncerRef_current;
|
|
172
|
+
(_debouncerRef_current = debouncerRef.current) === null || _debouncerRef_current === void 0 ? void 0 : _debouncerRef_current.cancel();
|
|
173
|
+
void runFetch();
|
|
174
|
+
}, [runFetch]);
|
|
175
|
+
return {
|
|
176
|
+
payload,
|
|
177
|
+
scriptFilters,
|
|
178
|
+
isLoading,
|
|
179
|
+
isFetching,
|
|
180
|
+
error,
|
|
181
|
+
refresh
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
export { reportCall, useFrappeReport };
|
|
185
|
+
//# sourceMappingURL=useFrappeReport.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AsyncDebouncer","CallModule","HttpClient","useCallback","useEffect","useMemo","useRef","useState","compactFilterValues","normalizeQueryReportPayload","_instanceof","left","right","Symbol","hasInstance","callCache","Map","reportCall","connection","_ref","_ref1","_connection_auth","_connection_auth1","_connection_auth2","key","baseURL","auth","useToken","token","type","call","get","authConfig","set","DEFAULT_DEBOUNCE_MS","useFrappeReport","param","reportName","filters","fixture","fetchFilterDefs","ignorePreparedReport","debounceMs","enabled","isEnabled","payload","setPayload","scriptFilters","setScriptFilters","isLoading","setIsLoading","isFetching","setIsFetching","error","setError","compactedFilters","filtersKey","JSON","stringify","runKey","fetchSeq","argsRef","current","connectionRef","runFetch","name","values","fx","skipPrepared","conn","seq","raw","res","post","report_name","ignore_prepared_report","are_default_filters","Object","keys","length","message","err","Error","String","debouncerRef","wait","_debouncerRef_current","setOptions","cancel","lastRunKeyRef","lastReportRef","reportChanged","_debouncerRef_current1","maybeExecute"],"sources":["../../../src/report/useFrappeReport.ts"],"sourcesContent":[null],"mappings":"AAOA,SAASA,cAAA,EAAgBC,UAAA,EAAYC,UAAA,QAAmC;AACxE,SAASC,WAAA,EAAaC,SAAA,EAAWC,OAAA,EAASC,MAAA,EAAQC,QAAA,QAAgB;AAClE,SAAAC,mBAAA,EAAAC,2BAAA;AAAA,SACEC,YAAAC,IAAA,EAAAC,KAAA;EACA;;EAAA,IAAAA,KAKK,mBAAAC,MAAA,oBAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA;IAqBP,OAAM,EAAAF,KAAY,CAAAC,MAAA,CAAAC,WAAA,CAAI,CAAAH,IAAwB;EAGvC,OAAS;IACd,OAAMA,IAAM,YAAGC,KAAW;EAC1B;AACA;AACE,IAAAG,SAAM,kBAAqC,IAAWC,GAAA,EAClD;AAAA,SACEC,UAAUA,CAAAC,UAAW,EAAK;EAAA,IAC1BC,IAAA,EAAAC,KAAO;EAAgB,IACvBC,gBAAM,EAAWC,iBAAK,EAAAC,iBAAA;EAAA,IACxBC,GACA,MAAAN,UAAA,CAAAO,OAAA,MAAAJ,gBAAA,GAAAH,UAAA,CAAAQ,IAAA,cAAAL,gBAAA,uBAAAA,gBAAA,CAAAM,QAAA,iBAAAR,IAAA,IAAAG,iBAAA,GAAAJ,UAAA,CAAAQ,IAAA,cAAAJ,iBAAA,uBAAAA,iBAAA,CAAAM,KAAA,cAAAT,IAAA,cAAAA,IAAA,UAAAC,KAAA,IAAAG,iBAAA,GAAAL,UAAA,CAAAQ,IAAA,cAAAH,iBAAA,uBAAAA,iBAAA,CAAAM,IAAA,cAAAT,KAAA,cAAAA,KAAA;EACJ,IAAAU,IAAA,GAAOf,SAAI,CAAAgB,GAAW,CAAAP,GAAI;EAC1B,KAAAM,IAAA;IACF,IAAAE,UAAA,GAAAd,UAAA,CAAAQ,IAAA;MACAC,QAAO,EAAAT,UAAA,CAAAQ,IAAA,CAAAC,QAAA;MACTC,KAAA,EAAAV,UAAA,CAAAQ,IAAA,CAAAE,KAAA;MAEMC,IAAA,EAAAX,UAAA,CAAAQ,IAAA,CAAsBG;IAsCrB,SAAS;IAGZC,IAAA,OAAA7B,UAAA,KAAAC,UAAA,CAAAgB,UAAA,CAAAO,OAAA,EAAAO,UAAA;IACAjB,SAAA,CAAAkB,GAAA,CAAAT,GAAA,EAAAM,IAAA;EACA;EACA,OAAAA,IAAA;AAAkB;AACK,IACvBI,mBAAa;AAAA,SACbC,eAAUA,CAAAjB,UAAA,EAAAkB,KAAA;EACZ,IACuB;IAAAC,UAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,eAAA;IAAAC,oBAAA;IAAAC,UAAA,GAAAR,mBAAA;IAAAS,OAAA;EAAA,IAAAP,KAAA;EACvB,IAAAQ,SAAM,GAAAD,OAAY,MAAWN,UAAE,OAAenB,UAAE,MAAcqB,OAAE;EAEhE,KAAAM,OAAO,EAAAC,UAAS,IAAUvC,QAAI,MAAyC;EACvE,KAAAwC,aAAO,EAAAC,gBAAe,IAAgBzC,QAAI;EAAA,IACxC,CAAA0C,SAAA,EAAAC,YAAA,IAAA3C,QAAA,CAAAqC,SAAA;EACF,KAAAO,UAAA,EAAAC,aAAA,IAAA7C,QAAA;EACA,KAAA8C,KAAO,EAAAC,QAAW,IAAA/C,QAAY,MAAI;EAClC,IAAAgD,gBAAmB,GAAAlD,OAAA,aAAiB;IACpC,OAAOG,mBAAmB,CAAA8B,OAA4B;EAEtD,IACAA,OAAM,CACN;EAA8B,IAC5BkB,UAAY,GAAAC,IAAA,CAAAC,SAAA,CAAAH,gBAAA;EAAA,IACVI,MAAA,GAAAF,IAAA,CAAAC,SAAA,EACFxC,UAAA,aAAAA,UAAA,uBAAAA,UAAA,CAAAO,OAAA,EACA,EAAAc,OAAA,EACAF,UAAA,EACDmB,UAAA,EAEDf,oBAAiB,CACjB;EACA,IAAAmB,QAAQ,GAAAtD,MAAY;EACpB,IAAAuD,OAAM,GAAAvD,MAAA;IACN+B,UAAA;IAEAC,OAAM,EAAAiB,gBAAW;IACfhB,OAAM;IAAAE;EACQ;EACHoB,OACT,CAAAC,OAAS;IAAAzB,UACT;IACFC,OAAI,EAAAiB,gBAAQ;IACZhB,OAAM;IACNE;EACA;EACA,IAAAsB,aAAc,GAAIzD,MAAA,CAAAY,UAAA;EAClB6C,aAAI,CAAAD,OAAA,GAAA5C,UAAA;EACF,IAAA8C,QAAI,GAAA7D,WAAA;IACJ;MAAIkC,UAAI,EAAA4B,IAAA;MAAA3B,OAAA,EAAA4B,MAAA;MAAA3B,OAAA,EAAA4B,EAAA;MAAA1B,oBAAA,EAAA2B;IAAA,IAAAP,OAAA,CAAAC,OAAA;IACN,IAAAO,IAAA,GAAMN,aAAc,CAAAD,OAAA;IAA+D,IACrF,CAAAG,IAAA,IAAW,CAAAI,IAAA,IAAM,CAAAF,EAAA;IACf,IAAAG,GAAA,GAAM,EAAAV,QAAM,CAAAE,OAAM;IAAiBV,aACjC;IAAA;MACA,IAAAmB,GACE;MAAa,IAAAJ,EACb;QAASI,GAAA,GACT,OAAAJ,EAAA,eAAwB,SAAAA,EAAA;UAAmB9B,UAAA,EAAA4B,IAAA;UAAA3B,OAAA,EAAA4B;QAAA,KAG3CC,EAAA;MAAsD,OACxD,IAAAE,IAAA;QACF,IAAAG,GAAA,SAAAvD,UAAA,CAAAoD,IAAA,EAAAI,IAAA;UACAC,WAAU,EAAAT,IAAQ;UACpB3B,OAAA,EAAA4B,MAAA;UACIS,sBAAiB,EAAAP,YAAS;UAC9B;UACA;UACFQ,mBAAc,EAAAC,MAAA,CAAAC,IAAA,CAAAZ,MAAA,EAAAa,MAAA;QACZ,EAAI;QACJR,GAAA,GAAAC,GAAS,CAAA3B,OAAA,CAAAmC,OAAe;MAC1B;MACE,IAAIV,GAAA,KAAQV,QAAA,CAASE,OAAA,EAAS;MAC5BhB,UAAA,CAAArC,2BAAkB,CAAA8D,GAAA,aAAAA,GAAA,cAAAA,GAAA;MAClBjB,QAAA,QAAc;IAAK,EACrB,OAAA2B,GAAA;MACF,IAAAX,GAAA,KAAAV,QAAA,CAAAE,OAAA;MACER,QAAC,CAAA5C,WAAA,CAAAuE,GAAA,EAAAC,KAAA,IAAAD,GAAA,OAAAC,KAAA,CAAAC,MAAA,CAAAF,GAAA;IAGL,UAAM;MACF,IAACX,GAAA,KAAAV,QAAa,CAAAE,OAAS;QACzBZ,YAAa,OAAU;QACrBE,aAAM;MACP;IACH;EACA;EACE,IAAAgC,YAAa,GAAA9E,MAAS;EACxB,IAAI,CAAA8E,YAAW,CAAAtB,OAAA;IACfsB,YAAU,CAAAtB,OAAY,OAAA9D,cAAa,CAAS,YAAW;MAKvD,OAAMgE,QAAA;IACN;MACAqB,IAAA,EAAU3C;IACR;EACA;EACAtC,SAAM;IACN,IAAAkF,qBAAwB;IACxB,CAAAA,qBAAkB,GAAAF,YAAA,CAAAtB,OAAA,cAAAwB,qBAAA,uBAAAA,qBAAA,CAAAC,UAAA;MAClBF,IAAI,EAAA3C;IACF;EACA,IACAA,UAAK,CAAS,CAChB;EACEtC,SAAK,aAAS;IAChB,OAAO;MACL,IAAAkF,qBAAkB;MACpB,QAAAA,qBAAA,GAAAF,YAAA,CAAAtB,OAAA,cAAAwB,qBAAA,uBAAAA,qBAAA,CAAAE,MAAA;IACF,CAAG;EAIH;EACE,IAAAC,aAAK,GAAanF,MAAC;EACjB,IAAAoF,aAAA,GAAApF,MAAA;EAAAF,SACF;IACA,IAAI,CAAAwC,SAAA,IAAY6C,aAAA,CAAA3B,OAAA,KAAAH,MAAA;IAChB8B,aAAM,CAAA3B,OAAY,GAAAH,MAAA;IAChB,IAAAgC,aAAI,GAAAD,aAAA,CAAA5B,OAAA,KAAAD,OAAA,CAAAC,OAAA,CAAAzB,UAAA;IACFqD,aAAM,CAAA5B,OAAM,GAAMD,OAAA,CAAAC,OAAW,CAAAzB,UAE1B;IACHiB,QAAI,CAAC;IAA8D,IACrEqC,aAAQ;MAGN,IAAAL,qBAAgB;MAClBpC,YAAA;MACF,CAAGoC,qBAAA,GAAAF,YAAA,CAAAtB,OAAA,cAAAwB,qBAAA,uBAAAA,qBAAA,CAAAE,MAAA;MACH,KAAOxB,QAAM;IACX,WAAAtB,UAAY;MACd,KAAAsB,QAAA;IACF,CAAG,MAAC;MAEJ,IAAM4B,sBAAsB;MAC1B,OAAAA,sBAA6B,GAAAR,YAAA,CAAAtB,OAAA,cAAA8B,sBAAA,uBAAAA,sBAAA,CAAAC,YAAA;IAC7B;EACF,GAAG,CAEHjD,SAAS,EACXe,MAAA,E","ignoreList":[]}
|