@quillsql/react 2.13.40 → 2.13.41

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 (253) hide show
  1. package/dist/cjs/Chart.d.ts +5 -1
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +51 -28
  4. package/dist/cjs/ChartBuilder.d.ts +13 -1
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +342 -138
  7. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  8. package/dist/cjs/ChartEditor.js +11 -1
  9. package/dist/cjs/Context.d.ts +16 -4
  10. package/dist/cjs/Context.d.ts.map +1 -1
  11. package/dist/cjs/Context.js +57 -38
  12. package/dist/cjs/Dashboard.d.ts +6 -3
  13. package/dist/cjs/Dashboard.d.ts.map +1 -1
  14. package/dist/cjs/Dashboard.js +70 -28
  15. package/dist/cjs/QuillProvider.d.ts +4 -8
  16. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  17. package/dist/cjs/ReportBuilder.d.ts +1 -1
  18. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  19. package/dist/cjs/ReportBuilder.js +117 -45
  20. package/dist/cjs/SQLEditor.d.ts +7 -1
  21. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  22. package/dist/cjs/SQLEditor.js +53 -9
  23. package/dist/cjs/Table.d.ts +21 -1
  24. package/dist/cjs/Table.d.ts.map +1 -1
  25. package/dist/cjs/Table.js +30 -192
  26. package/dist/cjs/components/Chart/BarChart.d.ts +5 -1
  27. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  28. package/dist/cjs/components/Chart/BarChart.js +4 -3
  29. package/dist/cjs/components/Chart/CustomReferenceLine.d.ts +2 -0
  30. package/dist/cjs/components/Chart/CustomReferenceLine.d.ts.map +1 -0
  31. package/dist/cjs/components/Chart/CustomReferenceLine.js +26 -0
  32. package/dist/cjs/components/Chart/GaugeChart.d.ts +11 -0
  33. package/dist/cjs/components/Chart/GaugeChart.d.ts.map +1 -0
  34. package/dist/cjs/components/Chart/GaugeChart.js +198 -0
  35. package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
  36. package/dist/cjs/components/Chart/InternalChart.js +14 -11
  37. package/dist/cjs/components/Chart/LineChart.d.ts +5 -1
  38. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  39. package/dist/cjs/components/Chart/LineChart.js +4 -3
  40. package/dist/cjs/components/Chart/MapChart.d.ts +36 -0
  41. package/dist/cjs/components/Chart/MapChart.d.ts.map +1 -0
  42. package/dist/cjs/components/Chart/MapChart.js +548 -0
  43. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  44. package/dist/cjs/components/Dashboard/DataLoader.js +114 -42
  45. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  46. package/dist/cjs/components/Dashboard/MetricComponent.js +57 -54
  47. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  48. package/dist/cjs/components/Dashboard/TableComponent.js +5 -1
  49. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  50. package/dist/cjs/components/QuillMultiSelectWithCombo.js +5 -4
  51. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
  52. package/dist/cjs/components/QuillSelectWithCombo.js +12 -11
  53. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  54. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +2 -1
  55. package/dist/cjs/components/ReportBuilder/FilterModal.js +13 -13
  56. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +2 -1
  57. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  58. package/dist/cjs/components/ReportBuilder/FilterStack.js +4 -4
  59. package/dist/cjs/components/ReportBuilder/convert.d.ts +2 -0
  60. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  61. package/dist/cjs/components/ReportBuilder/convert.js +28 -7
  62. package/dist/cjs/components/ReportBuilder/util.d.ts +1 -1
  63. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  64. package/dist/cjs/components/ReportBuilder/util.js +15 -2
  65. package/dist/cjs/components/UiComponents.d.ts +4 -1
  66. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  67. package/dist/cjs/components/UiComponents.js +31 -5
  68. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  69. package/dist/cjs/hooks/useDashboard.js +11 -9
  70. package/dist/cjs/hooks/useExport.d.ts.map +1 -1
  71. package/dist/cjs/hooks/useExport.js +18 -4
  72. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  73. package/dist/cjs/hooks/useQuill.js +16 -3
  74. package/dist/cjs/hooks/useReport.d.ts.map +1 -1
  75. package/dist/cjs/hooks/useReport.js +1 -7
  76. package/dist/cjs/hooks/useVirtualTables.d.ts +6 -2
  77. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
  78. package/dist/cjs/hooks/useVirtualTables.js +5 -2
  79. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  80. package/dist/cjs/internals/ReportBuilder/PivotModal.js +6 -7
  81. package/dist/cjs/models/Filter.d.ts +20 -13
  82. package/dist/cjs/models/Filter.d.ts.map +1 -1
  83. package/dist/cjs/models/Filter.js +161 -87
  84. package/dist/cjs/models/Report.d.ts +12 -1
  85. package/dist/cjs/models/Report.d.ts.map +1 -1
  86. package/dist/cjs/models/Schema.d.ts +12 -1
  87. package/dist/cjs/models/Schema.d.ts.map +1 -1
  88. package/dist/cjs/utils/astFilterProcessing.js +22 -22
  89. package/dist/cjs/utils/astProcessing.d.ts +2 -2
  90. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  91. package/dist/cjs/utils/astProcessing.js +25 -6
  92. package/dist/cjs/utils/axisFormatter.d.ts.map +1 -1
  93. package/dist/cjs/utils/axisFormatter.js +25 -0
  94. package/dist/cjs/utils/color.d.ts +159 -0
  95. package/dist/cjs/utils/color.d.ts.map +1 -1
  96. package/dist/cjs/utils/color.js +14 -5
  97. package/dist/cjs/utils/columnProcessing.js +3 -3
  98. package/dist/cjs/utils/constants.d.ts +1 -0
  99. package/dist/cjs/utils/constants.d.ts.map +1 -1
  100. package/dist/cjs/utils/constants.js +2 -1
  101. package/dist/cjs/utils/dashboard.d.ts +13 -3
  102. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  103. package/dist/cjs/utils/dashboard.js +73 -16
  104. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  105. package/dist/cjs/utils/dataFetcher.js +3 -1
  106. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  107. package/dist/cjs/utils/filterProcessing.js +9 -9
  108. package/dist/cjs/utils/getDomain.d.ts +4 -1
  109. package/dist/cjs/utils/getDomain.d.ts.map +1 -1
  110. package/dist/cjs/utils/getDomain.js +11 -1
  111. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  112. package/dist/cjs/utils/pivotConstructor.js +5 -5
  113. package/dist/cjs/utils/queryConstructor.d.ts +1 -1
  114. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  115. package/dist/cjs/utils/queryConstructor.js +71 -43
  116. package/dist/cjs/utils/report.d.ts +23 -5
  117. package/dist/cjs/utils/report.d.ts.map +1 -1
  118. package/dist/cjs/utils/report.js +28 -8
  119. package/dist/cjs/utils/schema.d.ts +26 -3
  120. package/dist/cjs/utils/schema.d.ts.map +1 -1
  121. package/dist/cjs/utils/schema.js +75 -43
  122. package/dist/cjs/utils/tableProcessing.d.ts +10 -3
  123. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  124. package/dist/cjs/utils/tableProcessing.js +4 -6
  125. package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
  126. package/dist/cjs/utils/textProcessing.js +0 -1
  127. package/dist/esm/Chart.d.ts +5 -1
  128. package/dist/esm/Chart.d.ts.map +1 -1
  129. package/dist/esm/Chart.js +52 -29
  130. package/dist/esm/ChartBuilder.d.ts +13 -1
  131. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  132. package/dist/esm/ChartBuilder.js +347 -143
  133. package/dist/esm/ChartEditor.d.ts.map +1 -1
  134. package/dist/esm/ChartEditor.js +11 -1
  135. package/dist/esm/Context.d.ts +16 -4
  136. package/dist/esm/Context.d.ts.map +1 -1
  137. package/dist/esm/Context.js +59 -40
  138. package/dist/esm/Dashboard.d.ts +6 -3
  139. package/dist/esm/Dashboard.d.ts.map +1 -1
  140. package/dist/esm/Dashboard.js +71 -29
  141. package/dist/esm/QuillProvider.d.ts +4 -8
  142. package/dist/esm/QuillProvider.d.ts.map +1 -1
  143. package/dist/esm/ReportBuilder.d.ts +1 -1
  144. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  145. package/dist/esm/ReportBuilder.js +119 -47
  146. package/dist/esm/SQLEditor.d.ts +7 -1
  147. package/dist/esm/SQLEditor.d.ts.map +1 -1
  148. package/dist/esm/SQLEditor.js +54 -10
  149. package/dist/esm/Table.d.ts +21 -1
  150. package/dist/esm/Table.d.ts.map +1 -1
  151. package/dist/esm/Table.js +34 -196
  152. package/dist/esm/components/Chart/BarChart.d.ts +5 -1
  153. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  154. package/dist/esm/components/Chart/BarChart.js +5 -4
  155. package/dist/esm/components/Chart/CustomReferenceLine.d.ts +2 -0
  156. package/dist/esm/components/Chart/CustomReferenceLine.d.ts.map +1 -0
  157. package/dist/esm/components/Chart/CustomReferenceLine.js +23 -0
  158. package/dist/esm/components/Chart/GaugeChart.d.ts +11 -0
  159. package/dist/esm/components/Chart/GaugeChart.d.ts.map +1 -0
  160. package/dist/esm/components/Chart/GaugeChart.js +195 -0
  161. package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
  162. package/dist/esm/components/Chart/InternalChart.js +14 -11
  163. package/dist/esm/components/Chart/LineChart.d.ts +5 -1
  164. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  165. package/dist/esm/components/Chart/LineChart.js +5 -4
  166. package/dist/esm/components/Chart/MapChart.d.ts +36 -0
  167. package/dist/esm/components/Chart/MapChart.d.ts.map +1 -0
  168. package/dist/esm/components/Chart/MapChart.js +541 -0
  169. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  170. package/dist/esm/components/Dashboard/DataLoader.js +114 -42
  171. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  172. package/dist/esm/components/Dashboard/MetricComponent.js +57 -54
  173. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  174. package/dist/esm/components/Dashboard/TableComponent.js +5 -1
  175. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  176. package/dist/esm/components/QuillMultiSelectWithCombo.js +5 -4
  177. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
  178. package/dist/esm/components/QuillSelectWithCombo.js +12 -11
  179. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  180. package/dist/esm/components/ReportBuilder/AddColumnModal.js +2 -1
  181. package/dist/esm/components/ReportBuilder/FilterModal.js +14 -14
  182. package/dist/esm/components/ReportBuilder/FilterStack.d.ts +2 -1
  183. package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  184. package/dist/esm/components/ReportBuilder/FilterStack.js +4 -4
  185. package/dist/esm/components/ReportBuilder/convert.d.ts +2 -0
  186. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  187. package/dist/esm/components/ReportBuilder/convert.js +26 -7
  188. package/dist/esm/components/ReportBuilder/util.d.ts +1 -1
  189. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  190. package/dist/esm/components/ReportBuilder/util.js +15 -2
  191. package/dist/esm/components/UiComponents.d.ts +4 -1
  192. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  193. package/dist/esm/components/UiComponents.js +29 -4
  194. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  195. package/dist/esm/hooks/useDashboard.js +11 -9
  196. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  197. package/dist/esm/hooks/useExport.js +19 -5
  198. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  199. package/dist/esm/hooks/useQuill.js +16 -3
  200. package/dist/esm/hooks/useReport.d.ts.map +1 -1
  201. package/dist/esm/hooks/useReport.js +1 -7
  202. package/dist/esm/hooks/useVirtualTables.d.ts +6 -2
  203. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  204. package/dist/esm/hooks/useVirtualTables.js +6 -3
  205. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  206. package/dist/esm/internals/ReportBuilder/PivotModal.js +6 -7
  207. package/dist/esm/models/Filter.d.ts +20 -13
  208. package/dist/esm/models/Filter.d.ts.map +1 -1
  209. package/dist/esm/models/Filter.js +160 -86
  210. package/dist/esm/models/Report.d.ts +12 -1
  211. package/dist/esm/models/Report.d.ts.map +1 -1
  212. package/dist/esm/models/Schema.d.ts +12 -1
  213. package/dist/esm/models/Schema.d.ts.map +1 -1
  214. package/dist/esm/utils/astFilterProcessing.js +23 -23
  215. package/dist/esm/utils/astProcessing.d.ts +2 -2
  216. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  217. package/dist/esm/utils/astProcessing.js +25 -6
  218. package/dist/esm/utils/axisFormatter.d.ts.map +1 -1
  219. package/dist/esm/utils/axisFormatter.js +25 -0
  220. package/dist/esm/utils/color.d.ts +159 -0
  221. package/dist/esm/utils/color.d.ts.map +1 -1
  222. package/dist/esm/utils/color.js +8 -2
  223. package/dist/esm/utils/columnProcessing.js +3 -3
  224. package/dist/esm/utils/constants.d.ts +1 -0
  225. package/dist/esm/utils/constants.d.ts.map +1 -1
  226. package/dist/esm/utils/constants.js +1 -0
  227. package/dist/esm/utils/dashboard.d.ts +13 -3
  228. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  229. package/dist/esm/utils/dashboard.js +73 -16
  230. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  231. package/dist/esm/utils/dataFetcher.js +3 -1
  232. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  233. package/dist/esm/utils/filterProcessing.js +10 -10
  234. package/dist/esm/utils/getDomain.d.ts +4 -1
  235. package/dist/esm/utils/getDomain.d.ts.map +1 -1
  236. package/dist/esm/utils/getDomain.js +11 -1
  237. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  238. package/dist/esm/utils/pivotConstructor.js +5 -5
  239. package/dist/esm/utils/queryConstructor.d.ts +1 -1
  240. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  241. package/dist/esm/utils/queryConstructor.js +71 -43
  242. package/dist/esm/utils/report.d.ts +23 -5
  243. package/dist/esm/utils/report.d.ts.map +1 -1
  244. package/dist/esm/utils/report.js +29 -9
  245. package/dist/esm/utils/schema.d.ts +26 -3
  246. package/dist/esm/utils/schema.d.ts.map +1 -1
  247. package/dist/esm/utils/schema.js +74 -43
  248. package/dist/esm/utils/tableProcessing.d.ts +10 -3
  249. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  250. package/dist/esm/utils/tableProcessing.js +4 -6
  251. package/dist/esm/utils/textProcessing.d.ts.map +1 -1
  252. package/dist/esm/utils/textProcessing.js +0 -1
  253. package/package.json +8 -3
@@ -36,7 +36,16 @@ const constructReportFromItem = (item) => {
36
36
  };
37
37
  function filterValuesEquivalent(filters1, filters2) {
38
38
  if (filters1.length !== filters2.length) {
39
- return false;
39
+ // Find the odd filters out and return false ONLY if they have a selected value
40
+ const filters1Labels = filters1.map((f) => f.label);
41
+ const filters2Labels = filters2.map((f) => f.label);
42
+ const oddFilters = filters1Labels.filter((label) => !filters2Labels.includes(label));
43
+ for (const filter of oddFilters) {
44
+ const filter1 = filters1.find((f) => f.label === filter);
45
+ if (filter1?.selectedValue) {
46
+ return false;
47
+ }
48
+ }
40
49
  }
41
50
  // The two filters arrays aren't necessarily in the same order
42
51
  // we can build two dictionaries of [label, filter] and compare them
@@ -130,6 +139,9 @@ function tenantsEquivalent(tenants1, tenants2) {
130
139
  }
131
140
  return true;
132
141
  }
142
+ function customFieldsEquivalent(customFields1, customFields2) {
143
+ return (0, fast_deep_equal_1.default)(customFields1, customFields2);
144
+ }
133
145
  function DataLoader({ item, children, filters, userFilters, additionalProcessing: defaultAdditionalProcessing, reportMode = false, }) {
134
146
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
135
147
  const [dashboard, dispatch] = (0, react_1.useContext)(Context_1.DashboardContext);
@@ -160,9 +172,10 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
160
172
  reportFilters,
161
173
  dashboardFilters,
162
174
  ]);
163
- const previousTenants = (0, react_1.useRef)(null);
164
- const previousFilters = (0, react_1.useRef)(null);
165
- const previousUserFilters = (0, react_1.useRef)(null);
175
+ const previousFilters = (0, react_1.useRef)(filters);
176
+ const previousUserFilters = (0, react_1.useRef)(userFilters);
177
+ const previousTenants = (0, react_1.useRef)(tenants);
178
+ const previousCustomFields = (0, react_1.useRef)(schemaData.customFields);
166
179
  const [rowCountIsLoading, setRowCountIsLoading] = (0, react_1.useState)(false);
167
180
  const rowsRequestId = (0, react_1.useRef)(0);
168
181
  const rowsAbortController = (0, react_1.useRef)(null);
@@ -355,13 +368,22 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
355
368
  setLoading(true);
356
369
  const fetchRowsRequestId = rowsRequestId.current + 1;
357
370
  rowsRequestId.current = fetchRowsRequestId;
358
- previousUserFilters.current = userFilters ?? null;
371
+ previousUserFilters.current = userFilters;
359
372
  rowsAbortController.current?.abort();
360
373
  rowsAbortController.current = new AbortController();
361
374
  try {
362
375
  if (reportMode) {
363
376
  try {
364
- await fetchIndividualReport(item.id, 'Chart', true, filters, userFilters, processing, undefined, rowsAbortController.current);
377
+ await fetchIndividualReport({
378
+ reportId: item.id,
379
+ initiator: 'Chart',
380
+ fetchRows: true,
381
+ dashboardFilters: filters,
382
+ customFilters: userFilters,
383
+ additionalProcessing: processing,
384
+ reportAbortController: rowsAbortController.current,
385
+ customFields: schemaData.customFields,
386
+ });
365
387
  rowsAbortController.current = null;
366
388
  setError(undefined);
367
389
  }
@@ -370,7 +392,19 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
370
392
  }
371
393
  }
372
394
  else {
373
- const { report: fetchedReport, error } = await (0, report_1.fetchReport)(item.id, client, tenants, flags, true, filters.concat(userFilters ?? []), processing, undefined, schemaData.customFields, true, false, rowsAbortController.current.signal);
395
+ const { report: fetchedReport, error } = await (0, report_1.fetchReport)({
396
+ reportId: item.id,
397
+ client,
398
+ tenants,
399
+ flags,
400
+ useReportTask: true,
401
+ filters: filters.concat(userFilters ?? []),
402
+ additionalProcessing: processing,
403
+ customFields: schemaData.customFields,
404
+ rowsOnly: true,
405
+ rowCountOnly: false,
406
+ abortSignal: rowsAbortController.current.signal,
407
+ });
374
408
  dispatch({
375
409
  type: 'ADD_DASHBOARD_ITEM',
376
410
  id: item.id,
@@ -405,23 +439,30 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
405
439
  // TODO: this is getting ridiculous
406
440
  // we should be fetching this data directly when mutating filters/tenants rather than using a magical effect
407
441
  (0, react_1.useEffect)(() => {
408
- if ((previousFilters.current ||
409
- (reportMode ? reports : dashboard)[item.id]?.rows?.length) &&
410
- filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
411
- userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
412
- // !didFiltersChange(dashboard[item.id], filters) &&
413
- tenantsEquivalent(previousTenants.current ?? [], tenants ?? [])) {
414
- if (!rowsAbortController.current)
442
+ if (schemaData.isSchemaLoading ||
443
+ (filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
444
+ userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
445
+ tenantsEquivalent(previousTenants.current ?? [], tenants ?? []) &&
446
+ customFieldsEquivalent(previousCustomFields.current, schemaData.customFields) &&
447
+ ((reportMode ? reports : dashboard)[item.id]?.rows?.length || rowsAbortController.current))) {
448
+ if (!rowsAbortController.current && !schemaData.isSchemaLoading)
415
449
  setLoading(false);
416
- previousFilters.current = filters;
417
450
  return;
418
451
  }
419
452
  previousFilters.current = filters;
420
453
  previousUserFilters.current = userFilters ?? [];
421
- previousTenants.current = tenants ?? null;
454
+ previousTenants.current = tenants;
455
+ previousCustomFields.current = schemaData.customFields;
422
456
  setPreviousPage(0);
423
457
  fetchReportHelper(additionalProcessing);
424
- }, [filters, userFilters, item.id, tenants]);
458
+ }, [
459
+ filters,
460
+ userFilters,
461
+ item.id,
462
+ tenants,
463
+ schemaData.customFields,
464
+ schemaData.isSchemaLoading,
465
+ ]);
425
466
  (0, react_1.useEffect)(() => {
426
467
  const tempReport = (reportMode ? reports : dashboard)[item.id];
427
468
  if (tempReport?.triggerReload) {
@@ -430,7 +471,7 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
430
471
  else if (tempReport?.error) {
431
472
  setError(tempReport.error);
432
473
  }
433
- }, [(reportMode ? reports : dashboard)[item.id]]);
474
+ }, [(reportMode ? reports : dashboard)[item.id]?.triggerReload, (reportMode ? reports : dashboard)[item.id]?.error]);
434
475
  return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children({
435
476
  isLoading: loading,
436
477
  error,
@@ -458,10 +499,11 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
458
499
  const [error, setError] = (0, react_1.useState)(undefined);
459
500
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
460
501
  const [schemaData] = (0, react_1.useContext)(Context_1.SchemaDataContext);
461
- const previousFilters = (0, react_1.useRef)(null);
462
- const previousUserFilters = (0, react_1.useRef)(null);
463
- const previousDateBucket = (0, react_1.useRef)(undefined);
464
- const previousTenants = (0, react_1.useRef)(null);
502
+ const previousFilters = (0, react_1.useRef)(filters);
503
+ const previousUserFilters = (0, react_1.useRef)(userFilters);
504
+ const previousDateBucket = (0, react_1.useRef)(dateBucket);
505
+ const previousTenants = (0, react_1.useRef)(tenants);
506
+ const previousCustomFields = (0, react_1.useRef)(schemaData.customFields);
465
507
  const fetchReportAbortController = (0, react_1.useRef)(null);
466
508
  const rowsRequestId = (0, react_1.useRef)(0);
467
509
  const chartReport = (0, react_1.useMemo)(() => {
@@ -483,7 +525,7 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
483
525
  }
484
526
  const fetchRowsRequestId = rowsRequestId.current + 1;
485
527
  rowsRequestId.current = fetchRowsRequestId;
486
- previousUserFilters.current = userFilters ?? null;
528
+ previousUserFilters.current = userFilters;
487
529
  previousDateBucket.current = dateBucket;
488
530
  setLoading(true);
489
531
  fetchReportAbortController.current?.abort();
@@ -491,10 +533,20 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
491
533
  try {
492
534
  if (reportMode) {
493
535
  try {
494
- await fetchIndividualReport(item.id, 'Chart', true, filters, userFilters, {
495
- ...additionalProcessing,
496
- ...{ page: paginationProcessing_1.DEFAULT_PAGINATION },
497
- }, dateBucket, fetchReportAbortController.current);
536
+ await fetchIndividualReport({
537
+ reportId: item.id,
538
+ initiator: 'Chart',
539
+ fetchRows: true,
540
+ dashboardFilters: filters,
541
+ customFilters: userFilters,
542
+ additionalProcessing: {
543
+ ...additionalProcessing,
544
+ ...{ page: paginationProcessing_1.DEFAULT_PAGINATION },
545
+ },
546
+ dateBucket,
547
+ reportAbortController: fetchReportAbortController.current,
548
+ customFields: schemaData.customFields,
549
+ });
498
550
  setError(undefined);
499
551
  }
500
552
  catch (e) {
@@ -502,10 +554,21 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
502
554
  }
503
555
  }
504
556
  else {
505
- const { report, error } = await (0, report_1.fetchReport)(item.id, client, tenants, flags, useReportTask, filters.concat(userFilters ?? []), {
506
- ...additionalProcessing,
507
- ...{ page: paginationProcessing_1.DEFAULT_PAGINATION },
508
- }, dateBucket, schemaData.customFields, undefined, undefined, fetchReportAbortController.current.signal);
557
+ const { report, error } = await (0, report_1.fetchReport)({
558
+ reportId: item.id,
559
+ client,
560
+ tenants,
561
+ flags,
562
+ useReportTask,
563
+ filters: filters.concat(userFilters ?? []),
564
+ additionalProcessing: {
565
+ ...additionalProcessing,
566
+ ...{ page: paginationProcessing_1.DEFAULT_PAGINATION },
567
+ },
568
+ dateBucket,
569
+ customFields: schemaData.customFields,
570
+ abortSignal: fetchReportAbortController.current.signal,
571
+ });
509
572
  dispatch({
510
573
  type: 'ADD_DASHBOARD_ITEM',
511
574
  id: item.id,
@@ -536,23 +599,32 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
536
599
  if (!filters) {
537
600
  return;
538
601
  }
539
- if ((previousFilters.current ||
540
- (reportMode ? reports : dashboard)[item.id]?.rows?.length) &&
541
- filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
542
- userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
543
- tenantsEquivalent(tenants ?? [], previousTenants.current ?? []) &&
544
- previousDateBucket.current === dateBucket) {
545
- previousFilters.current = filters;
546
- if (!fetchReportAbortController.current)
602
+ if (schemaData.isSchemaLoading ||
603
+ (filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
604
+ userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
605
+ tenantsEquivalent(tenants ?? [], previousTenants.current ?? []) &&
606
+ previousDateBucket.current === dateBucket &&
607
+ customFieldsEquivalent(previousCustomFields.current, schemaData.customFields) &&
608
+ ((reportMode ? reports : dashboard)[item.id]?.rows?.length || fetchReportAbortController.current))) {
609
+ if (!fetchReportAbortController.current && !schemaData.isSchemaLoading)
547
610
  setLoading(false);
548
611
  return;
549
612
  }
550
613
  previousDateBucket.current = dateBucket;
551
614
  previousUserFilters.current = userFilters ?? [];
552
- previousTenants.current = tenants ?? null;
615
+ previousTenants.current = tenants;
553
616
  previousFilters.current = filters;
617
+ previousCustomFields.current = schemaData.customFields;
554
618
  fetchReportHelper();
555
- }, [filters, userFilters, item.id, dateBucket]);
619
+ }, [
620
+ filters,
621
+ userFilters,
622
+ item.id,
623
+ dateBucket,
624
+ tenants,
625
+ schemaData.customFields,
626
+ schemaData.isSchemaLoading,
627
+ ]);
556
628
  (0, react_1.useEffect)(() => {
557
629
  const tempReport = (reportMode ? reports : dashboard)[item.id];
558
630
  if (tempReport && tempReport.triggerReload) {
@@ -561,7 +633,7 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
561
633
  else if (tempReport?.error) {
562
634
  setError(tempReport.error);
563
635
  }
564
- }, [(reportMode ? reports : dashboard)[item.id]]);
636
+ }, [(reportMode ? reports : dashboard)[item.id]?.triggerReload, (reportMode ? reports : dashboard)[item.id]?.error]);
565
637
  return children({
566
638
  isLoading: !chartReport || loading,
567
639
  data: chartReport,
@@ -1 +1 @@
1
- {"version":3,"file":"MetricComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/MetricComponent.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA+MhC"}
1
+ {"version":3,"file":"MetricComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/MetricComponent.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA4HhC"}
@@ -20,7 +20,7 @@ function QuillMetricComponent({ report, onClick, error, isLoading, children, })
20
20
  cursor: !onClick ? 'default' : 'pointer',
21
21
  boxSizing: 'content-box',
22
22
  borderRadius: 8,
23
- paddingBottom: isLoading ? 0 : 30,
23
+ paddingBottom: 0,
24
24
  width: '100%',
25
25
  }, children: (0, jsx_runtime_1.jsx)("div", { style: {
26
26
  width: '100%',
@@ -76,58 +76,61 @@ function QuillMetricComponent({ report, onClick, error, isLoading, children, })
76
76
  color: theme?.secondaryTextColor,
77
77
  maxWidth: '100%',
78
78
  width: '100%',
79
- }, children: "No results" })) : ((0, jsx_runtime_1.jsx)("div", { style: {
80
- padding: 0,
81
- height: '100%',
82
- width: '100%',
83
- boxSizing: 'content-box',
84
- }, children: (0, jsx_runtime_1.jsxs)("div", { style: {
79
+ }, children: "No results" })) : ((0, jsx_runtime_1.jsx)(MetricDisplay, { dateFilter: dateFilter, primaryMetricLabel: primaryMetricLabel, comparisonLabel: comparisonLabel, theme: theme, children: children }))] }) }) }, report?.name));
80
+ }
81
+ const MetricDisplay = ({ children, dateFilter, primaryMetricLabel, comparisonLabel, theme, }) => {
82
+ return (0, jsx_runtime_1.jsx)("div", { style: {
83
+ padding: 0,
84
+ height: '100%',
85
+ width: '100%',
86
+ boxSizing: 'content-box',
87
+ }, children: (0, jsx_runtime_1.jsxs)("div", { style: {
88
+ fontFamily: theme?.fontFamily,
89
+ fontSize: 32,
90
+ color: theme?.primaryTextColor,
91
+ fontWeight: '600',
92
+ textOverflow: 'ellipsis',
93
+ margin: 0,
94
+ whiteSpace: 'nowrap',
95
+ boxSizing: 'content-box',
96
+ maxWidth: '100%',
97
+ textAlign: 'left',
98
+ overflow: 'hidden',
99
+ height: '100%',
100
+ display: 'flex',
101
+ width: '100%',
102
+ flexDirection: 'row',
103
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
104
+ display: 'flex',
105
+ gap: 4,
106
+ alignItems: 'baseline',
107
+ marginRight: 'auto',
108
+ }, children: [(0, jsx_runtime_1.jsx)("span", { children: children }), dateFilter?.comparison && ((0, jsx_runtime_1.jsx)("span", { style: {
109
+ fontSize: 13,
110
+ fontWeight: '500',
85
111
  fontFamily: theme?.fontFamily,
86
- fontSize: 32,
87
112
  color: theme?.primaryTextColor,
88
- fontWeight: '600',
89
- textOverflow: 'ellipsis',
90
- margin: 0,
91
- whiteSpace: 'nowrap',
92
- boxSizing: 'content-box',
93
- maxWidth: '100%',
94
- textAlign: 'left',
95
- overflow: 'hidden',
96
- height: '100%',
97
- display: 'flex',
98
- width: '100%',
99
- flexDirection: 'row',
100
- }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
101
- display: 'flex',
102
- gap: 4,
103
- alignItems: 'baseline',
104
- marginRight: 'auto',
105
- }, children: [(0, jsx_runtime_1.jsx)("span", { children: children }), dateFilter?.comparison && ((0, jsx_runtime_1.jsx)("span", { style: {
106
- fontSize: 13,
107
- fontWeight: '500',
108
- fontFamily: theme?.fontFamily,
109
- color: theme?.primaryTextColor,
110
- marginLeft: 2,
111
- }, children: primaryMetricLabel
112
- ? `in ${primaryMetricLabel.toLowerCase()}`
113
- : 'this period' }))] }), dateFilter?.comparison && ((0, jsx_runtime_1.jsxs)("div", { style: {
114
- display: 'flex',
115
- gap: 4,
116
- alignItems: 'baseline',
117
- paddingTop: 4,
118
- color: theme?.secondaryTextColor,
119
- }, children: [(0, jsx_runtime_1.jsx)("span", { style: {
120
- fontSize: 28,
121
- fontWeight: '500',
122
- fontFamily: theme?.fontFamily,
123
- color: theme?.secondaryTextColor,
124
- }, children: children }), (0, jsx_runtime_1.jsx)("span", { style: {
125
- fontSize: 13,
126
- fontWeight: '500',
127
- fontFamily: theme?.fontFamily,
128
- color: theme?.secondaryTextColor,
129
- marginLeft: 2,
130
- }, children: comparisonLabel
131
- ? 'in ' + comparisonLabel.toLowerCase()
132
- : 'previous period' })] }))] }) }))] }) }) }, report?.name));
133
- }
113
+ marginLeft: 2,
114
+ }, children: primaryMetricLabel
115
+ ? `in ${primaryMetricLabel.toLowerCase()}`
116
+ : 'this period' }))] }), dateFilter?.comparison && ((0, jsx_runtime_1.jsxs)("div", { style: {
117
+ display: 'flex',
118
+ gap: 4,
119
+ alignItems: 'baseline',
120
+ paddingTop: 4,
121
+ color: theme?.secondaryTextColor,
122
+ }, children: [(0, jsx_runtime_1.jsx)("span", { style: {
123
+ fontSize: 28,
124
+ fontWeight: '500',
125
+ fontFamily: theme?.fontFamily,
126
+ color: theme?.secondaryTextColor,
127
+ }, children: children }), (0, jsx_runtime_1.jsx)("span", { style: {
128
+ fontSize: 13,
129
+ fontWeight: '500',
130
+ fontFamily: theme?.fontFamily,
131
+ color: theme?.secondaryTextColor,
132
+ marginLeft: 2,
133
+ }, children: comparisonLabel
134
+ ? 'in ' + comparisonLabel.toLowerCase()
135
+ : 'previous period' })] }))] }) });
136
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,MAAM,EACN,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,GAAG,CAAC,OAAO,CAkGd"}
1
+ {"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,MAAM,EACN,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,GAAG,CAAC,OAAO,CA0Gd"}
@@ -52,7 +52,11 @@ function QuillTableComponent({ report, onClick, isLoading, error, rowCount, rowC
52
52
  } })) : error ? ((0, jsx_runtime_1.jsx)("div", { style: {
53
53
  width: '100%',
54
54
  height: '400px',
55
- }, children: (0, jsx_runtime_1.jsx)(ChartError_1.default, { errorMessage: error }) })) : ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { isLoading: isLoading, rows: report.rows ?? [], rowCount: rowCount, rowCountIsLoading: rowCountIsLoading, columns: report.columns, rowsPerPage: report.pagination?.rowsPerPage ?? paginationProcessing_1.DEFAULT_PAGINATION.rowsPerPage, containerStyle: {
55
+ }, children: (0, jsx_runtime_1.jsx)(ChartError_1.default, { errorMessage: error }) })) : ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { isLoading: isLoading, rows: report.rows ?? [], rowCount: rowCount, rowCountIsLoading: rowCountIsLoading, columns: report.includeCustomFields &&
56
+ report.columnsWithCustomFields &&
57
+ !report.pivot
58
+ ? report.columnsWithCustomFields
59
+ : report.columns, rowsPerPage: report.pagination?.rowsPerPage ?? paginationProcessing_1.DEFAULT_PAGINATION.rowsPerPage, containerStyle: {
56
60
  width: '100%',
57
61
  height: '400px',
58
62
  }, downloadCSV: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAc,EAEZ,aAAa,EAMd,MAAM,OAAO,CAAC;AAGf;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,KAAK,GACN,EAAE,yBAAyB,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,2CA4flF;AAED,eAAO,MAAM,gBAAgB,sCAI1B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,4CAwDA,CAAC"}
1
+ {"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAc,EAEZ,aAAa,EAMd,MAAM,OAAO,CAAC;AAGf;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,KAAK,GACN,EAAE,yBAAyB,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,2CA6flF;AAED,eAAO,MAAM,gBAAgB,sCAI1B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,4CAwDA,CAAC"}
@@ -130,9 +130,6 @@ function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, v
130
130
  // FIXME: Hacked this to display selected options that have been filtered out, which is good
131
131
  // But they don't have their proper labels, since we haven't stored/passed in the label
132
132
  const filteredItems = react_1.default.useMemo(() => {
133
- const uuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
134
- const isUuid = potentialOptions?.[0]?.value?.toString()?.match(uuidRegex);
135
- const isNumber = !isNaN(parseInt(potentialOptions?.[0]?.value ?? ''));
136
133
  // Sort null to top
137
134
  if (searchQuery === '') {
138
135
  return potentialOptions
@@ -147,16 +144,20 @@ function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, v
147
144
  })
148
145
  .slice(0, 20);
149
146
  }
147
+ const uuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
148
+ const isUuid = potentialOptions?.[0]?.value?.toString()?.match(uuidRegex);
149
+ const isNumber = typeof potentialOptions?.[0]?.value === 'number';
150
150
  return potentialOptions
151
151
  .filter((option) => {
152
152
  if (!option) {
153
153
  return false;
154
154
  }
155
155
  return option.label
156
+ .toString()
156
157
  .toLowerCase()
157
158
  .replace(/\s+/g, '')
158
159
  .includes(searchQuery.toLowerCase().replace(/\s+/g, ''))
159
- || (isNumber || isUuid ? option.value
160
+ || (isNumber || isUuid ? option.value.toString()
160
161
  .toLowerCase()
161
162
  .replace(/\s+/g, '')
162
163
  .includes(searchQuery.toLowerCase().replace(/\s+/g, '')) : false);
@@ -1 +1 @@
1
- {"version":3,"file":"QuillSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAWtE;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE,oBAAoB,2CAkTtB"}
1
+ {"version":3,"file":"QuillSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAWtE;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE,oBAAoB,2CA+StB"}
@@ -52,13 +52,9 @@ function QuillSelectComponentWithCombo({ options, value, width, onChange, label,
52
52
  // FIXME: Hacked this to display the option that has been filtered out, which is good
53
53
  // But it doesn't have its proper label, since we haven't stored/passed in the label
54
54
  const filteredItems = react_1.default.useMemo(() => {
55
- const optionValues = new Set(options.map((opt) => opt.value));
56
55
  // Sort null to top
57
56
  if (searchQuery === '') {
58
- return (optionValues.has(value ?? '') || value === undefined
59
- ? []
60
- : [{ label: value === '' ? '-' : (value ?? '-'), value: value ?? '' }])
61
- .concat(options)
57
+ return options
62
58
  .sort((a, b) => {
63
59
  if (a.value === null) {
64
60
  return -1;
@@ -70,18 +66,23 @@ function QuillSelectComponentWithCombo({ options, value, width, onChange, label,
70
66
  })
71
67
  .slice(0, 20);
72
68
  }
73
- return (optionValues.has(value ?? '')
74
- ? [{ label: value ?? '-', value: value ?? '' }]
75
- : [])
76
- .concat(options)
69
+ const uuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
70
+ const isUuid = options?.[0]?.value?.toString()?.match(uuidRegex);
71
+ const isNumber = typeof options?.[0]?.value === 'number';
72
+ return options
77
73
  .filter((option) => {
78
74
  if (!option) {
79
75
  return false;
80
76
  }
81
- return option.value
77
+ return option.label
78
+ .toString()
82
79
  .toLowerCase()
83
80
  .replace(/\s+/g, '')
84
- .includes(searchQuery.toLowerCase().replace(/\s+/g, ''));
81
+ .includes(searchQuery.toLowerCase().replace(/\s+/g, ''))
82
+ || (isNumber || isUuid ? option.value.toString()
83
+ .toLowerCase()
84
+ .replace(/\s+/g, '')
85
+ .includes(searchQuery.toLowerCase().replace(/\s+/g, '')) : false);
85
86
  })
86
87
  .sort((a, b) => {
87
88
  if (a.value === null) {
@@ -1 +1 @@
1
- {"version":3,"file":"AddColumnModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAiB3D,OAAO,EAGL,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,MAAM,EACN,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,sBAAoD,EACpD,gBAAwC,GACzC,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,kBAAkB,EAAE,GAAG,CAAC;IACxB,qBAAqB,EAAE,GAAG,CAAC;IAC3B,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;IACX,gBAAgB,EAAE,GAAG,CAAC;IACtB,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,EACd,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC,GACjD,KAAK,CAAC,yBAAyB,CAC7B,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAChE,CAAC;IACN,YAAY,EAAE,CAAC,KAAK,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;SAAE,KAAK,GAAG,CAAC,OAAO,CAAC;KAC5E,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;IACZ,sBAAsB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAC1C,gBAAgB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;CACrC,2CAqNA"}
1
+ {"version":3,"file":"AddColumnModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAiB3D,OAAO,EAGL,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,MAAM,EACN,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,sBAAoD,EACpD,gBAAwC,GACzC,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,kBAAkB,EAAE,GAAG,CAAC;IACxB,qBAAqB,EAAE,GAAG,CAAC;IAC3B,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;IACX,gBAAgB,EAAE,GAAG,CAAC;IACtB,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,EACd,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC,GACjD,KAAK,CAAC,yBAAyB,CAC7B,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAChE,CAAC;IACN,YAAY,EAAE,CAAC,KAAK,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;SAAE,KAAK,GAAG,CAAC,OAAO,CAAC;KAC5E,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;IACZ,sBAAsB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAC1C,gBAAgB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;CACrC,2CAsNA"}
@@ -89,7 +89,8 @@ function AddColumnModal({ onSave, orderedColumnNames, setOrderedColumnNames, sel
89
89
  let tableName = initialTableName;
90
90
  const orderedSelectedColumns = [];
91
91
  for (const value of orderedColumnNames) {
92
- const [table, column] = value.split('.');
92
+ const [table, ...rest] = value.split('.');
93
+ const column = rest.join('.');
93
94
  if (selectedColumns.includes(value)) {
94
95
  tableName = table;
95
96
  orderedSelectedColumns.push(column);