@multiplatform.one/backoffice 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.
Files changed (269) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/desk/DeskSurface.native.js.map +1 -1
  3. package/dist/cjs/form/DocFormScreen.cjs +167 -224
  4. package/dist/cjs/form/DocFormScreen.native.js +182 -259
  5. package/dist/cjs/form/DocFormScreen.native.js.map +1 -1
  6. package/dist/cjs/i18n/en.cjs +1 -0
  7. package/dist/cjs/i18n/en.native.js +1 -0
  8. package/dist/cjs/i18n/en.native.js.map +1 -1
  9. package/dist/cjs/list/ListBulkActionsBar.cjs +30 -18
  10. package/dist/cjs/list/ListBulkActionsBar.native.js +43 -31
  11. package/dist/cjs/list/ListBulkActionsBar.native.js.map +1 -1
  12. package/dist/cjs/list/sidebar-section.cjs +15 -7
  13. package/dist/cjs/list/sidebar-section.native.js +16 -7
  14. package/dist/cjs/list/sidebar-section.native.js.map +1 -1
  15. package/dist/cjs/report/DoctypeReportView.cjs +20 -374
  16. package/dist/cjs/report/DoctypeReportView.native.js +23 -455
  17. package/dist/cjs/report/DoctypeReportView.native.js.map +1 -1
  18. package/dist/cjs/report/QueryReportScreen.cjs +33 -23
  19. package/dist/cjs/report/QueryReportScreen.native.js +33 -23
  20. package/dist/cjs/report/QueryReportScreen.native.js.map +1 -1
  21. package/dist/cjs/report/queryReportColumns.cjs +3 -105
  22. package/dist/cjs/report/queryReportColumns.native.js +2 -129
  23. package/dist/cjs/report/queryReportColumns.native.js.map +1 -1
  24. package/dist/cjs/report/queryReportFilterBar.cjs +3 -4
  25. package/dist/cjs/report/queryReportFilterBar.native.js +3 -4
  26. package/dist/cjs/report/queryReportFilterBar.native.js.map +1 -1
  27. package/dist/cjs/report/queryReportUrlState.cjs +2 -2
  28. package/dist/cjs/report/queryReportUrlState.native.js +2 -2
  29. package/dist/cjs/report/queryReportUrlState.native.js.map +1 -1
  30. package/dist/cjs/report/report-grid.cjs +2 -426
  31. package/dist/cjs/report/report-grid.native.js +1 -479
  32. package/dist/cjs/report/report-grid.native.js.map +1 -1
  33. package/dist/cjs/report/report-toolbar.cjs +2 -228
  34. package/dist/cjs/report/report-toolbar.native.js +1 -274
  35. package/dist/cjs/report/report-toolbar.native.js.map +1 -1
  36. package/dist/cjs/report/reportShapes.cjs +12 -383
  37. package/dist/cjs/report/reportShapes.native.js +12 -501
  38. package/dist/cjs/report/reportShapes.native.js.map +1 -1
  39. package/dist/cjs/report/reportViewModel.cjs +20 -360
  40. package/dist/cjs/report/reportViewModel.native.js +19 -627
  41. package/dist/cjs/report/reportViewModel.native.js.map +1 -1
  42. package/dist/cjs/report/savedReports.cjs +2 -106
  43. package/dist/cjs/report/savedReports.native.js +1 -132
  44. package/dist/cjs/report/savedReports.native.js.map +1 -1
  45. package/dist/cjs/report/useQueryReport.cjs +11 -219
  46. package/dist/cjs/report/useQueryReport.native.js +11 -244
  47. package/dist/cjs/report/useQueryReport.native.js.map +1 -1
  48. package/dist/cjs/shared/measures.cjs +3 -5
  49. package/dist/cjs/shared/measures.native.js +3 -5
  50. package/dist/cjs/shared/measures.native.js.map +1 -1
  51. package/dist/cjs/views/ReportView.cjs +3 -256
  52. package/dist/cjs/views/ReportView.native.js +3 -382
  53. package/dist/cjs/views/ReportView.native.js.map +1 -1
  54. package/dist/cjs/views/report-controls.cjs +6 -6
  55. package/dist/cjs/views/report-controls.native.js +6 -6
  56. package/dist/cjs/views/report-controls.native.js.map +1 -1
  57. package/dist/esm/desk/DeskSurface.mjs.map +1 -1
  58. package/dist/esm/desk/DeskSurface.native.js.map +1 -1
  59. package/dist/esm/form/DocFormScreen.mjs +169 -226
  60. package/dist/esm/form/DocFormScreen.mjs.map +1 -1
  61. package/dist/esm/form/DocFormScreen.native.js +184 -261
  62. package/dist/esm/form/DocFormScreen.native.js.map +1 -1
  63. package/dist/esm/i18n/en.mjs +1 -0
  64. package/dist/esm/i18n/en.mjs.map +1 -1
  65. package/dist/esm/i18n/en.native.js +1 -0
  66. package/dist/esm/i18n/en.native.js.map +1 -1
  67. package/dist/esm/list/ListBulkActionsBar.mjs +31 -19
  68. package/dist/esm/list/ListBulkActionsBar.mjs.map +1 -1
  69. package/dist/esm/list/ListBulkActionsBar.native.js +37 -25
  70. package/dist/esm/list/ListBulkActionsBar.native.js.map +1 -1
  71. package/dist/esm/list/sidebar-section.mjs +16 -8
  72. package/dist/esm/list/sidebar-section.mjs.map +1 -1
  73. package/dist/esm/list/sidebar-section.native.js +17 -8
  74. package/dist/esm/list/sidebar-section.native.js.map +1 -1
  75. package/dist/esm/report/DoctypeReportView.mjs +21 -375
  76. package/dist/esm/report/DoctypeReportView.mjs.map +1 -1
  77. package/dist/esm/report/DoctypeReportView.native.js +24 -456
  78. package/dist/esm/report/DoctypeReportView.native.js.map +1 -1
  79. package/dist/esm/report/QueryReportScreen.mjs +26 -16
  80. package/dist/esm/report/QueryReportScreen.mjs.map +1 -1
  81. package/dist/esm/report/QueryReportScreen.native.js +26 -16
  82. package/dist/esm/report/QueryReportScreen.native.js.map +1 -1
  83. package/dist/esm/report/queryReportColumns.mjs +1 -103
  84. package/dist/esm/report/queryReportColumns.mjs.map +1 -1
  85. package/dist/esm/report/queryReportColumns.native.js +1 -117
  86. package/dist/esm/report/queryReportColumns.native.js.map +1 -1
  87. package/dist/esm/report/queryReportFilterBar.mjs +1 -2
  88. package/dist/esm/report/queryReportFilterBar.mjs.map +1 -1
  89. package/dist/esm/report/queryReportFilterBar.native.js +1 -2
  90. package/dist/esm/report/queryReportFilterBar.native.js.map +1 -1
  91. package/dist/esm/report/queryReportUrlState.mjs +1 -1
  92. package/dist/esm/report/queryReportUrlState.native.js +1 -1
  93. package/dist/esm/report/report-grid.mjs +1 -425
  94. package/dist/esm/report/report-grid.mjs.map +1 -1
  95. package/dist/esm/report/report-grid.native.js +1 -468
  96. package/dist/esm/report/report-grid.native.js.map +1 -1
  97. package/dist/esm/report/report-toolbar.mjs +2 -228
  98. package/dist/esm/report/report-toolbar.mjs.map +1 -1
  99. package/dist/esm/report/report-toolbar.native.js +2 -264
  100. package/dist/esm/report/report-toolbar.native.js.map +1 -1
  101. package/dist/esm/report/reportShapes.mjs +2 -373
  102. package/dist/esm/report/reportShapes.mjs.map +1 -1
  103. package/dist/esm/report/reportShapes.native.js +2 -491
  104. package/dist/esm/report/reportShapes.native.js.map +1 -1
  105. package/dist/esm/report/reportViewModel.mjs +2 -342
  106. package/dist/esm/report/reportViewModel.mjs.map +1 -1
  107. package/dist/esm/report/reportViewModel.native.js +2 -610
  108. package/dist/esm/report/reportViewModel.native.js.map +1 -1
  109. package/dist/esm/report/savedReports.mjs +1 -105
  110. package/dist/esm/report/savedReports.mjs.map +1 -1
  111. package/dist/esm/report/savedReports.native.js +1 -132
  112. package/dist/esm/report/savedReports.native.js.map +1 -1
  113. package/dist/esm/report/useQueryReport.mjs +2 -210
  114. package/dist/esm/report/useQueryReport.mjs.map +1 -1
  115. package/dist/esm/report/useQueryReport.native.js +2 -235
  116. package/dist/esm/report/useQueryReport.native.js.map +1 -1
  117. package/dist/esm/shared/measures.mjs +1 -3
  118. package/dist/esm/shared/measures.mjs.map +1 -1
  119. package/dist/esm/shared/measures.native.js +1 -3
  120. package/dist/esm/shared/measures.native.js.map +1 -1
  121. package/dist/esm/views/ReportView.mjs +3 -256
  122. package/dist/esm/views/ReportView.mjs.map +1 -1
  123. package/dist/esm/views/ReportView.native.js +3 -382
  124. package/dist/esm/views/ReportView.native.js.map +1 -1
  125. package/dist/esm/views/report-controls.mjs +3 -3
  126. package/dist/esm/views/report-controls.mjs.map +1 -1
  127. package/dist/esm/views/report-controls.native.js +3 -3
  128. package/dist/esm/views/report-controls.native.js.map +1 -1
  129. package/dist/jsx/desk/DeskSurface.mjs.map +1 -1
  130. package/dist/jsx/desk/DeskSurface.native.js.map +1 -1
  131. package/dist/jsx/form/DocFormScreen.mjs +169 -226
  132. package/dist/jsx/form/DocFormScreen.mjs.map +1 -1
  133. package/dist/jsx/form/DocFormScreen.native.js +182 -259
  134. package/dist/jsx/form/DocFormScreen.native.js.map +1 -1
  135. package/dist/jsx/i18n/en.mjs +1 -0
  136. package/dist/jsx/i18n/en.mjs.map +1 -1
  137. package/dist/jsx/i18n/en.native.js +1 -0
  138. package/dist/jsx/i18n/en.native.js.map +1 -1
  139. package/dist/jsx/list/ListBulkActionsBar.mjs +31 -19
  140. package/dist/jsx/list/ListBulkActionsBar.mjs.map +1 -1
  141. package/dist/jsx/list/ListBulkActionsBar.native.js +43 -31
  142. package/dist/jsx/list/ListBulkActionsBar.native.js.map +1 -1
  143. package/dist/jsx/list/sidebar-section.mjs +16 -8
  144. package/dist/jsx/list/sidebar-section.mjs.map +1 -1
  145. package/dist/jsx/list/sidebar-section.native.js +16 -7
  146. package/dist/jsx/list/sidebar-section.native.js.map +1 -1
  147. package/dist/jsx/report/DoctypeReportView.mjs +21 -375
  148. package/dist/jsx/report/DoctypeReportView.mjs.map +1 -1
  149. package/dist/jsx/report/DoctypeReportView.native.js +23 -455
  150. package/dist/jsx/report/DoctypeReportView.native.js.map +1 -1
  151. package/dist/jsx/report/QueryReportScreen.mjs +26 -16
  152. package/dist/jsx/report/QueryReportScreen.mjs.map +1 -1
  153. package/dist/jsx/report/QueryReportScreen.native.js +33 -23
  154. package/dist/jsx/report/QueryReportScreen.native.js.map +1 -1
  155. package/dist/jsx/report/queryReportColumns.mjs +1 -103
  156. package/dist/jsx/report/queryReportColumns.mjs.map +1 -1
  157. package/dist/jsx/report/queryReportColumns.native.js +2 -129
  158. package/dist/jsx/report/queryReportColumns.native.js.map +1 -1
  159. package/dist/jsx/report/queryReportFilterBar.mjs +1 -2
  160. package/dist/jsx/report/queryReportFilterBar.mjs.map +1 -1
  161. package/dist/jsx/report/queryReportFilterBar.native.js +3 -4
  162. package/dist/jsx/report/queryReportFilterBar.native.js.map +1 -1
  163. package/dist/jsx/report/queryReportUrlState.mjs +1 -1
  164. package/dist/jsx/report/queryReportUrlState.native.js +2 -2
  165. package/dist/jsx/report/queryReportUrlState.native.js.map +1 -1
  166. package/dist/jsx/report/report-grid.mjs +1 -425
  167. package/dist/jsx/report/report-grid.mjs.map +1 -1
  168. package/dist/jsx/report/report-grid.native.js +1 -479
  169. package/dist/jsx/report/report-grid.native.js.map +1 -1
  170. package/dist/jsx/report/report-toolbar.mjs +2 -228
  171. package/dist/jsx/report/report-toolbar.mjs.map +1 -1
  172. package/dist/jsx/report/report-toolbar.native.js +1 -274
  173. package/dist/jsx/report/report-toolbar.native.js.map +1 -1
  174. package/dist/jsx/report/reportShapes.mjs +2 -373
  175. package/dist/jsx/report/reportShapes.mjs.map +1 -1
  176. package/dist/jsx/report/reportShapes.native.js +12 -501
  177. package/dist/jsx/report/reportShapes.native.js.map +1 -1
  178. package/dist/jsx/report/reportViewModel.mjs +2 -342
  179. package/dist/jsx/report/reportViewModel.mjs.map +1 -1
  180. package/dist/jsx/report/reportViewModel.native.js +19 -627
  181. package/dist/jsx/report/reportViewModel.native.js.map +1 -1
  182. package/dist/jsx/report/savedReports.mjs +1 -105
  183. package/dist/jsx/report/savedReports.mjs.map +1 -1
  184. package/dist/jsx/report/savedReports.native.js +1 -132
  185. package/dist/jsx/report/savedReports.native.js.map +1 -1
  186. package/dist/jsx/report/useQueryReport.mjs +2 -210
  187. package/dist/jsx/report/useQueryReport.mjs.map +1 -1
  188. package/dist/jsx/report/useQueryReport.native.js +11 -244
  189. package/dist/jsx/report/useQueryReport.native.js.map +1 -1
  190. package/dist/jsx/shared/measures.mjs +1 -3
  191. package/dist/jsx/shared/measures.mjs.map +1 -1
  192. package/dist/jsx/shared/measures.native.js +3 -5
  193. package/dist/jsx/shared/measures.native.js.map +1 -1
  194. package/dist/jsx/views/ReportView.mjs +3 -256
  195. package/dist/jsx/views/ReportView.mjs.map +1 -1
  196. package/dist/jsx/views/ReportView.native.js +3 -382
  197. package/dist/jsx/views/ReportView.native.js.map +1 -1
  198. package/dist/jsx/views/report-controls.mjs +3 -3
  199. package/dist/jsx/views/report-controls.mjs.map +1 -1
  200. package/dist/jsx/views/report-controls.native.js +6 -6
  201. package/dist/jsx/views/report-controls.native.js.map +1 -1
  202. package/package.json +12 -12
  203. package/src/backofficeScreens.designLaw.spec.ts +0 -5
  204. package/src/desk/DeskSurface.tsx +4 -7
  205. package/src/form/DocFormScreen.chrome.spec.ts +77 -0
  206. package/src/form/DocFormScreen.guest.screen.spec.tsx +175 -0
  207. package/src/form/DocFormScreen.rights.spec.tsx +7 -3
  208. package/src/form/DocFormScreen.tsx +214 -315
  209. package/src/i18n/en.ts +1 -0
  210. package/src/list/ListBulkActionsBar.rights.spec.tsx +134 -0
  211. package/src/list/ListBulkActionsBar.screen.spec.tsx +7 -1
  212. package/src/list/ListBulkActionsBar.tsx +76 -57
  213. package/src/list/ListFilterBar.screen.spec.tsx +14 -13
  214. package/src/list/sidebar-section.tsx +11 -3
  215. package/src/report/DoctypeReportView.tsx +28 -550
  216. package/src/report/QueryReportScreen.spec.tsx +75 -1
  217. package/src/report/QueryReportScreen.tsx +38 -22
  218. package/src/report/queryReportColumns.tsx +4 -123
  219. package/src/report/queryReportFilterBar.tsx +3 -5
  220. package/src/report/queryReportUrlState.ts +1 -1
  221. package/src/report/report-grid.tsx +4 -529
  222. package/src/report/report-toolbar.tsx +4 -308
  223. package/src/report/reportShapes.ts +25 -613
  224. package/src/report/reportShim.spec.ts +162 -0
  225. package/src/report/reportViewModel.ts +32 -605
  226. package/src/report/savedReports.ts +4 -161
  227. package/src/report/useQueryReport.ts +9 -347
  228. package/src/shared/measures.ts +3 -11
  229. package/src/views/ReportView.screen.spec.tsx +25 -20
  230. package/src/views/ReportView.tsx +7 -439
  231. package/src/views/report-controls.tsx +12 -20
  232. package/types/desk/DeskSurface.d.ts.map +1 -1
  233. package/types/form/DocFormScreen.d.ts +2 -2
  234. package/types/form/DocFormScreen.d.ts.map +1 -1
  235. package/types/i18n/en.d.ts +1 -0
  236. package/types/i18n/en.d.ts.map +1 -1
  237. package/types/list/ListBulkActionsBar.d.ts.map +1 -1
  238. package/types/list/sidebar-section.d.ts.map +1 -1
  239. package/types/report/DoctypeReportView.d.ts.map +1 -1
  240. package/types/report/QueryReportScreen.d.ts +1 -1
  241. package/types/report/QueryReportScreen.d.ts.map +1 -1
  242. package/types/report/queryReportColumns.d.ts +2 -11
  243. package/types/report/queryReportColumns.d.ts.map +1 -1
  244. package/types/report/queryReportFilterBar.d.ts +1 -1
  245. package/types/report/queryReportFilterBar.d.ts.map +1 -1
  246. package/types/report/queryReportUrlState.d.ts +1 -1
  247. package/types/report/queryReportUrlState.d.ts.map +1 -1
  248. package/types/report/report-grid.d.ts +2 -19
  249. package/types/report/report-grid.d.ts.map +1 -1
  250. package/types/report/report-toolbar.d.ts +2 -29
  251. package/types/report/report-toolbar.d.ts.map +1 -1
  252. package/types/report/reportShapes.d.ts +2 -115
  253. package/types/report/reportShapes.d.ts.map +1 -1
  254. package/types/report/reportViewModel.d.ts +2 -135
  255. package/types/report/reportViewModel.d.ts.map +1 -1
  256. package/types/report/savedReports.d.ts +2 -18
  257. package/types/report/savedReports.d.ts.map +1 -1
  258. package/types/report/useQueryReport.d.ts +2 -35
  259. package/types/report/useQueryReport.d.ts.map +1 -1
  260. package/types/shared/measures.d.ts +1 -2
  261. package/types/shared/measures.d.ts.map +1 -1
  262. package/types/views/ReportView.d.ts +3 -22
  263. package/types/views/ReportView.d.ts.map +1 -1
  264. package/types/views/report-controls.d.ts +2 -5
  265. package/types/views/report-controls.d.ts.map +1 -1
  266. package/src/report/report-grid.spec.tsx +0 -175
  267. package/src/report/report-toolbar.spec.tsx +0 -90
  268. package/src/report/reportShapes.spec.ts +0 -391
  269. package/src/report/reportViewModel.spec.ts +0 -393
@@ -22,365 +22,25 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
22
22
  }), mod);
23
23
  var reportViewModel_exports = {};
24
24
  __export(reportViewModel_exports, {
25
- DEFAULT_REPORT_PAGE_SIZE: () => DEFAULT_REPORT_PAGE_SIZE,
26
- REPORT_NUMERIC_FIELDTYPES: () => REPORT_NUMERIC_FIELDTYPES,
27
- REPORT_PAGE_SIZES: () => REPORT_PAGE_SIZES,
28
- buildGridRows: () => buildGridRows,
29
- buildReportCsv: () => buildReportCsv,
30
- columnAlign: () => columnAlign,
31
- columnFilterTuple: () => columnFilterTuple,
32
- columnFilterTuples: () => columnFilterTuples,
33
- compareCellValues: () => compareCellValues,
34
- computeTotals: () => computeTotals,
35
- defaultColumnWidth: () => defaultColumnWidth,
36
- defaultReportFieldnames: () => defaultReportFieldnames,
37
- fromDeskReportSettings: () => fromDeskReportSettings,
38
- orderReportRows: () => orderReportRows,
39
- parseDeskOrderBy: () => parseDeskOrderBy,
40
- parseReportFiltersParam: () => parseReportFiltersParam,
41
- reportColumnsFromMeta: () => reportColumnsFromMeta,
42
- resolveSelectedColumns: () => resolveSelectedColumns,
43
- toDeskReportSettings: () => toDeskReportSettings
25
+ DEFAULT_REPORT_PAGE_SIZE: () => import_frappe_ui.DEFAULT_REPORT_PAGE_SIZE,
26
+ REPORT_NUMERIC_FIELDTYPES: () => import_frappe_ui.REPORT_NUMERIC_FIELDTYPES,
27
+ REPORT_PAGE_SIZES: () => import_frappe_ui.REPORT_PAGE_SIZES,
28
+ buildGridRows: () => import_frappe_ui.buildReportGridRows,
29
+ buildReportCsv: () => import_frappe_ui.buildReportCsv,
30
+ columnAlign: () => import_frappe_ui.reportColumnAlign,
31
+ columnFilterTuple: () => import_frappe_ui.reportColumnFilterTuple,
32
+ columnFilterTuples: () => import_frappe_ui.reportColumnFilterTuples,
33
+ compareCellValues: () => import_frappe_ui.compareReportCellValues,
34
+ computeTotals: () => import_frappe_ui.computeReportTotals,
35
+ defaultColumnWidth: () => import_frappe_ui.defaultReportColumnWidth,
36
+ defaultReportFieldnames: () => import_frappe_ui.defaultReportFieldnames,
37
+ fromDeskReportSettings: () => import_frappe_ui.fromDeskReportSettings,
38
+ orderReportRows: () => import_frappe_ui.orderReportRows,
39
+ parseDeskOrderBy: () => import_frappe_ui.parseDeskOrderBy,
40
+ parseReportFiltersParam: () => import_frappe_ui.parseReportFiltersParam,
41
+ reportColumnsFromMeta: () => import_frappe_ui.reportColumnsFromMeta,
42
+ resolveSelectedColumns: () => import_frappe_ui.resolveReportColumns,
43
+ toDeskReportSettings: () => import_frappe_ui.toDeskReportSettings
44
44
  });
45
45
  module.exports = __toCommonJS(reportViewModel_exports);
46
- var import_frappe_ui = require("@multiplatform.one/frappe-ui");
47
- const VALUELESS_FIELDTYPES = /* @__PURE__ */new Set(["Section Break", "Column Break", "Tab Break", "HTML", "Table", "Table MultiSelect", "Button", "Image", "Fold", "Heading"]);
48
- const REPORT_NUMERIC_FIELDTYPES = /* @__PURE__ */new Set(["Int", "Float", "Currency", "Percent", "Rating", "Duration"]);
49
- const WIDE_FIELDTYPES = /* @__PURE__ */new Set(["Small Text", "Text", "Long Text", "Text Editor", "Markdown Editor", "Code", "JSON"]);
50
- const REPORT_PAGE_SIZES = [20, 100, 500];
51
- const DEFAULT_REPORT_PAGE_SIZE = REPORT_PAGE_SIZES[0];
52
- function defaultColumnWidth(fieldtype) {
53
- if (fieldtype === "Check") return 90;
54
- if (REPORT_NUMERIC_FIELDTYPES.has(fieldtype)) return 110;
55
- if (fieldtype === "Date") return 120;
56
- if (fieldtype === "Datetime") return 165;
57
- if (WIDE_FIELDTYPES.has(fieldtype)) return 240;
58
- return 160;
59
- }
60
- function columnAlign(fieldtype) {
61
- if (fieldtype === "Check") return "center";
62
- return REPORT_NUMERIC_FIELDTYPES.has(fieldtype) ? "right" : "left";
63
- }
64
- function toColumnDef(field) {
65
- const fieldtype = String(field.fieldtype);
66
- return {
67
- fieldname: field.fieldname,
68
- label: field.label || field.fieldname,
69
- fieldtype,
70
- kind: (0, import_frappe_ui.fieldKind)(fieldtype),
71
- options: field.options,
72
- width: defaultColumnWidth(fieldtype),
73
- align: columnAlign(fieldtype)
74
- };
75
- }
76
- function standardReportColumns() {
77
- return [{
78
- fieldname: "name",
79
- label: "ID",
80
- fieldtype: "Data",
81
- kind: "text",
82
- width: 160,
83
- align: "left"
84
- }, {
85
- fieldname: "owner",
86
- label: "Created By",
87
- fieldtype: "Link",
88
- kind: "link",
89
- options: "User",
90
- width: 160,
91
- align: "left"
92
- }, {
93
- fieldname: "creation",
94
- label: "Created On",
95
- fieldtype: "Datetime",
96
- kind: "date",
97
- width: 165,
98
- align: "left"
99
- }, {
100
- fieldname: "modified",
101
- label: "Last Updated On",
102
- fieldtype: "Datetime",
103
- kind: "date",
104
- width: 165,
105
- align: "left"
106
- }, {
107
- fieldname: "modified_by",
108
- label: "Last Updated By",
109
- fieldtype: "Link",
110
- kind: "link",
111
- options: "User",
112
- width: 160,
113
- align: "left"
114
- }];
115
- }
116
- function reportColumnsFromMeta(meta) {
117
- const out = [];
118
- const seen = /* @__PURE__ */new Set();
119
- const push = column => {
120
- if (!column.fieldname || seen.has(column.fieldname)) return;
121
- seen.add(column.fieldname);
122
- out.push(column);
123
- };
124
- push(standardReportColumns()[0]);
125
- for (const field of meta?.fields ?? []) {
126
- const fieldtype = String(field.fieldtype);
127
- if (VALUELESS_FIELDTYPES.has(fieldtype) || fieldtype.startsWith("Table")) continue;
128
- push(toColumnDef(field));
129
- }
130
- for (const standard of standardReportColumns()) push(standard);
131
- return out;
132
- }
133
- function defaultReportFieldnames(meta) {
134
- const out = [];
135
- const seen = /* @__PURE__ */new Set();
136
- const push = fieldname => {
137
- if (!fieldname || seen.has(fieldname)) return;
138
- seen.add(fieldname);
139
- out.push(fieldname);
140
- };
141
- const pickable = field => {
142
- const fieldtype = String(field.fieldtype);
143
- return !VALUELESS_FIELDTYPES.has(fieldtype) && !fieldtype.startsWith("Table") && field.report_hide !== 1;
144
- };
145
- const fields = meta?.fields ?? [];
146
- push("name");
147
- const status = fields.find(field => field.fieldname === "status");
148
- if (status && pickable(status)) push("status");
149
- push(meta?.title_field);
150
- push(meta?.image_field);
151
- const flagged = fields.filter(field => pickable(field) && (field.in_list_view === 1 || field.in_standard_filter === 1));
152
- for (const field of flagged) push(field.fieldname);
153
- for (const field of flagged) {
154
- if (String(field.fieldtype) !== "Currency" || !field.options) continue;
155
- push(field.options.includes(":") ? field.options.split(":")[1] : field.options);
156
- }
157
- push("modified");
158
- return out;
159
- }
160
- function resolveSelectedColumns(all, fieldnames) {
161
- const byName = new Map(all.map(column => [column.fieldname, column]));
162
- const out = [];
163
- for (const fieldname of fieldnames) {
164
- const column = byName.get(fieldname);
165
- if (column) out.push(column);
166
- }
167
- return out;
168
- }
169
- const COMPARISON_PREFIXES = [">=", "<=", "!=", ">", "<", "="];
170
- const CHECK_TRUE = /* @__PURE__ */new Set(["1", "true", "yes", "y", "\u2713"]);
171
- const CHECK_FALSE = /* @__PURE__ */new Set(["0", "false", "no", "n"]);
172
- function columnFilterTuple(column, raw) {
173
- const text = raw.trim();
174
- if (!text) return null;
175
- switch (column.kind) {
176
- case "check":
177
- {
178
- const lowered = text.toLowerCase();
179
- if (CHECK_TRUE.has(lowered)) return [column.fieldname, "=", 1];
180
- if (CHECK_FALSE.has(lowered)) return [column.fieldname, "=", 0];
181
- return null;
182
- }
183
- case "select":
184
- {
185
- const match = (0, import_frappe_ui.selectOptionsFromField)(column.options).find(option => option.value.toLowerCase() === text.toLowerCase());
186
- if (match) return [column.fieldname, "=", match.value];
187
- return [column.fieldname, "like", text.includes("%") ? text : `%${text}%`];
188
- }
189
- case "number":
190
- case "date":
191
- {
192
- for (const prefix of COMPARISON_PREFIXES) {
193
- if (text.startsWith(prefix)) {
194
- const value = text.slice(prefix.length).trim();
195
- return value ? [column.fieldname, prefix, value] : null;
196
- }
197
- }
198
- return [column.fieldname, "=", text];
199
- }
200
- default:
201
- return [column.fieldname, "like", text.includes("%") ? text : `%${text}%`];
202
- }
203
- }
204
- function columnFilterTuples(columns, filters) {
205
- const out = [];
206
- for (const column of columns) {
207
- const raw = filters[column.fieldname];
208
- if (raw === void 0) continue;
209
- const tuple = columnFilterTuple(column, raw);
210
- if (tuple) out.push(tuple);
211
- }
212
- return out;
213
- }
214
- function parseReportFiltersParam(raw) {
215
- if (typeof raw !== "string" || !raw) return void 0;
216
- const candidates = [raw];
217
- try {
218
- const decoded = decodeURIComponent(raw);
219
- if (decoded !== raw) candidates.push(decoded);
220
- } catch {}
221
- for (const candidate of candidates) {
222
- try {
223
- const parsed = JSON.parse(candidate);
224
- if (!Array.isArray(parsed)) continue;
225
- const filters = [];
226
- for (const tuple of parsed) {
227
- if (Array.isArray(tuple) && tuple.length === 3 && typeof tuple[0] === "string" && typeof tuple[1] === "string") {
228
- filters.push([tuple[0], tuple[1], tuple[2]]);
229
- }
230
- }
231
- if (filters.length > 0) return filters;
232
- } catch {}
233
- }
234
- return void 0;
235
- }
236
- const BACKTICK_FIELD_RE = /`tab([^`]+)`\.`([^`]+)`/;
237
- function toDeskFieldExpr(doctype, fieldname) {
238
- return `\`tab${doctype}\`.\`${fieldname}\``;
239
- }
240
- function parseDeskOrderBy(orderBy) {
241
- if (typeof orderBy !== "string" || !orderBy.trim()) return void 0;
242
- const [expr, direction] = orderBy.trim().split(/\s+/);
243
- const backticked = expr.match(BACKTICK_FIELD_RE);
244
- const field = backticked ? backticked[2] : expr.replace(/`/g, "");
245
- if (!field) return void 0;
246
- return {
247
- field,
248
- order: direction?.toLowerCase() === "asc" ? "asc" : "desc"
249
- };
250
- }
251
- function toDeskReportSettings(doctype, config) {
252
- const sort = config.sort ?? {
253
- field: "modified",
254
- order: "desc"
255
- };
256
- return {
257
- fields: config.fieldnames.map(fieldname => [fieldname, doctype]),
258
- filters: config.filters.map(([fieldname, operator, value]) => [doctype, fieldname, operator, value]),
259
- order_by: `${toDeskFieldExpr(doctype, sort.field)} ${sort.order}`,
260
- add_totals_row: config.addTotals ? 1 : 0,
261
- page_length: config.pageSize ?? DEFAULT_REPORT_PAGE_SIZE,
262
- column_widths: {},
263
- group_by: config.groupBy ? {
264
- group_by: toDeskFieldExpr(doctype, config.groupBy),
265
- aggregate_function: "count",
266
- aggregate_on: null
267
- } : null
268
- };
269
- }
270
- function fromDeskReportSettings(doctype, json) {
271
- if (!json || typeof json !== "object") return void 0;
272
- const raw = json;
273
- const fieldnames = [];
274
- if (Array.isArray(raw.fields)) {
275
- for (const entry of raw.fields) {
276
- if (typeof entry === "string") {
277
- fieldnames.push(entry);
278
- } else if (Array.isArray(entry) && typeof entry[0] === "string") {
279
- const fieldDoctype = typeof entry[1] === "string" ? entry[1] : doctype;
280
- if (fieldDoctype === doctype) fieldnames.push(entry[0]);
281
- }
282
- }
283
- }
284
- const filters = [];
285
- if (Array.isArray(raw.filters)) {
286
- for (const entry of raw.filters) {
287
- if (!Array.isArray(entry)) continue;
288
- if (entry.length === 4) {
289
- const [filterDoctype, fieldname, operator, value] = entry;
290
- if (filterDoctype === doctype && typeof fieldname === "string" && typeof operator === "string") {
291
- filters.push([fieldname, operator, value]);
292
- }
293
- } else if (entry.length === 3 && typeof entry[0] === "string" && typeof entry[1] === "string") {
294
- filters.push([entry[0], entry[1], entry[2]]);
295
- }
296
- }
297
- }
298
- const groupByRaw = raw.group_by;
299
- const groupByExpr = typeof groupByRaw?.group_by === "string" ? groupByRaw.group_by : void 0;
300
- const groupByMatch = groupByExpr?.match(BACKTICK_FIELD_RE);
301
- return {
302
- fieldnames,
303
- filters,
304
- sort: parseDeskOrderBy(raw.order_by),
305
- pageSize: typeof raw.page_length === "number" && raw.page_length > 0 ? raw.page_length : void 0,
306
- groupBy: groupByMatch ? groupByMatch[2] : null,
307
- addTotals: raw.add_totals_row === 1
308
- };
309
- }
310
- function isNullish(value) {
311
- return value === null || value === void 0;
312
- }
313
- function compareCellValues(a, b) {
314
- if (isNullish(a) && isNullish(b)) return 0;
315
- if (isNullish(a)) return 1;
316
- if (isNullish(b)) return -1;
317
- if (typeof a === "number" && typeof b === "number") return a - b;
318
- const left = String(a);
319
- const right = String(b);
320
- return left < right ? -1 : left > right ? 1 : 0;
321
- }
322
- function orderReportRows(rows, sort, groupBy) {
323
- const direction = sort.order === "asc" ? 1 : -1;
324
- const sorted = [...rows];
325
- sorted.sort((a, b) => {
326
- if (groupBy) {
327
- const grouped = compareCellValues(a[groupBy], b[groupBy]);
328
- if (grouped !== 0) return grouped;
329
- }
330
- const left = a[sort.field];
331
- const right = b[sort.field];
332
- const ordered = isNullish(left) || isNullish(right) ? compareCellValues(left, right) : direction * compareCellValues(left, right);
333
- return ordered || compareCellValues(a.name, b.name);
334
- });
335
- return sorted;
336
- }
337
- function buildGridRows(orderedRows, pageStart, pageSize, groupBy) {
338
- const page = orderedRows.slice(pageStart, pageStart + pageSize);
339
- const out = [];
340
- let previousGroup;
341
- const counts = /* @__PURE__ */new Map();
342
- if (groupBy) {
343
- for (const row of orderedRows) {
344
- const groupKey = String(row[groupBy] ?? "");
345
- counts.set(groupKey, (counts.get(groupKey) ?? 0) + 1);
346
- }
347
- }
348
- page.forEach((row, index) => {
349
- if (groupBy) {
350
- const groupKey = String(row[groupBy] ?? "");
351
- if (previousGroup === void 0 || groupKey !== previousGroup) {
352
- previousGroup = groupKey;
353
- out.push({
354
- kind: "group",
355
- key: `group:${groupKey}:${pageStart + index}`,
356
- value: row[groupBy],
357
- count: counts.get(groupKey) ?? 0
358
- });
359
- }
360
- }
361
- out.push({
362
- kind: "row",
363
- key: row.name,
364
- row,
365
- index: pageStart + index + 1
366
- });
367
- });
368
- return out;
369
- }
370
- function computeTotals(columns, rows) {
371
- if (rows.length === 0) return [];
372
- return columns.filter(column => REPORT_NUMERIC_FIELDTYPES.has(column.fieldtype)).map(column => ({
373
- fieldname: column.fieldname,
374
- fieldtype: column.fieldtype,
375
- value: rows.reduce((sum, row) => sum + (Number(row[column.fieldname]) || 0), 0)
376
- }));
377
- }
378
- function escapeCsvCell(value) {
379
- if (value === null || value === void 0) return "";
380
- const text = String(value);
381
- return /[",\n]/.test(text) ? `"${text.replace(/"/g, '""')}"` : text;
382
- }
383
- function buildReportCsv(columns, rows) {
384
- const lines = [columns.map(column => escapeCsvCell(column.label)).join(","), ...rows.map(row => columns.map(column => escapeCsvCell(row[column.fieldname])).join(","))];
385
- return lines.join("\n");
386
- }
46
+ var import_frappe_ui = require("@multiplatform.one/frappe-ui");