@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
@@ -29,7 +29,16 @@ const constructReportFromItem = (item) => {
29
29
  };
30
30
  function filterValuesEquivalent(filters1, filters2) {
31
31
  if (filters1.length !== filters2.length) {
32
- return false;
32
+ // Find the odd filters out and return false ONLY if they have a selected value
33
+ const filters1Labels = filters1.map((f) => f.label);
34
+ const filters2Labels = filters2.map((f) => f.label);
35
+ const oddFilters = filters1Labels.filter((label) => !filters2Labels.includes(label));
36
+ for (const filter of oddFilters) {
37
+ const filter1 = filters1.find((f) => f.label === filter);
38
+ if (filter1?.selectedValue) {
39
+ return false;
40
+ }
41
+ }
33
42
  }
34
43
  // The two filters arrays aren't necessarily in the same order
35
44
  // we can build two dictionaries of [label, filter] and compare them
@@ -123,6 +132,9 @@ function tenantsEquivalent(tenants1, tenants2) {
123
132
  }
124
133
  return true;
125
134
  }
135
+ function customFieldsEquivalent(customFields1, customFields2) {
136
+ return equal(customFields1, customFields2);
137
+ }
126
138
  export default function DataLoader({ item, children, filters, userFilters, additionalProcessing: defaultAdditionalProcessing, reportMode = false, }) {
127
139
  const [client] = useContext(ClientContext);
128
140
  const [dashboard, dispatch] = useContext(DashboardContext);
@@ -153,9 +165,10 @@ export default function DataLoader({ item, children, filters, userFilters, addit
153
165
  reportFilters,
154
166
  dashboardFilters,
155
167
  ]);
156
- const previousTenants = useRef(null);
157
- const previousFilters = useRef(null);
158
- const previousUserFilters = useRef(null);
168
+ const previousFilters = useRef(filters);
169
+ const previousUserFilters = useRef(userFilters);
170
+ const previousTenants = useRef(tenants);
171
+ const previousCustomFields = useRef(schemaData.customFields);
159
172
  const [rowCountIsLoading, setRowCountIsLoading] = useState(false);
160
173
  const rowsRequestId = useRef(0);
161
174
  const rowsAbortController = useRef(null);
@@ -348,13 +361,22 @@ export default function DataLoader({ item, children, filters, userFilters, addit
348
361
  setLoading(true);
349
362
  const fetchRowsRequestId = rowsRequestId.current + 1;
350
363
  rowsRequestId.current = fetchRowsRequestId;
351
- previousUserFilters.current = userFilters ?? null;
364
+ previousUserFilters.current = userFilters;
352
365
  rowsAbortController.current?.abort();
353
366
  rowsAbortController.current = new AbortController();
354
367
  try {
355
368
  if (reportMode) {
356
369
  try {
357
- await fetchIndividualReport(item.id, 'Chart', true, filters, userFilters, processing, undefined, rowsAbortController.current);
370
+ await fetchIndividualReport({
371
+ reportId: item.id,
372
+ initiator: 'Chart',
373
+ fetchRows: true,
374
+ dashboardFilters: filters,
375
+ customFilters: userFilters,
376
+ additionalProcessing: processing,
377
+ reportAbortController: rowsAbortController.current,
378
+ customFields: schemaData.customFields,
379
+ });
358
380
  rowsAbortController.current = null;
359
381
  setError(undefined);
360
382
  }
@@ -363,7 +385,19 @@ export default function DataLoader({ item, children, filters, userFilters, addit
363
385
  }
364
386
  }
365
387
  else {
366
- const { report: fetchedReport, error } = await fetchReport(item.id, client, tenants, flags, true, filters.concat(userFilters ?? []), processing, undefined, schemaData.customFields, true, false, rowsAbortController.current.signal);
388
+ const { report: fetchedReport, error } = await fetchReport({
389
+ reportId: item.id,
390
+ client,
391
+ tenants,
392
+ flags,
393
+ useReportTask: true,
394
+ filters: filters.concat(userFilters ?? []),
395
+ additionalProcessing: processing,
396
+ customFields: schemaData.customFields,
397
+ rowsOnly: true,
398
+ rowCountOnly: false,
399
+ abortSignal: rowsAbortController.current.signal,
400
+ });
367
401
  dispatch({
368
402
  type: 'ADD_DASHBOARD_ITEM',
369
403
  id: item.id,
@@ -398,23 +432,30 @@ export default function DataLoader({ item, children, filters, userFilters, addit
398
432
  // TODO: this is getting ridiculous
399
433
  // we should be fetching this data directly when mutating filters/tenants rather than using a magical effect
400
434
  useEffect(() => {
401
- if ((previousFilters.current ||
402
- (reportMode ? reports : dashboard)[item.id]?.rows?.length) &&
403
- filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
404
- userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
405
- // !didFiltersChange(dashboard[item.id], filters) &&
406
- tenantsEquivalent(previousTenants.current ?? [], tenants ?? [])) {
407
- if (!rowsAbortController.current)
435
+ if (schemaData.isSchemaLoading ||
436
+ (filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
437
+ userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
438
+ tenantsEquivalent(previousTenants.current ?? [], tenants ?? []) &&
439
+ customFieldsEquivalent(previousCustomFields.current, schemaData.customFields) &&
440
+ ((reportMode ? reports : dashboard)[item.id]?.rows?.length || rowsAbortController.current))) {
441
+ if (!rowsAbortController.current && !schemaData.isSchemaLoading)
408
442
  setLoading(false);
409
- previousFilters.current = filters;
410
443
  return;
411
444
  }
412
445
  previousFilters.current = filters;
413
446
  previousUserFilters.current = userFilters ?? [];
414
- previousTenants.current = tenants ?? null;
447
+ previousTenants.current = tenants;
448
+ previousCustomFields.current = schemaData.customFields;
415
449
  setPreviousPage(0);
416
450
  fetchReportHelper(additionalProcessing);
417
- }, [filters, userFilters, item.id, tenants]);
451
+ }, [
452
+ filters,
453
+ userFilters,
454
+ item.id,
455
+ tenants,
456
+ schemaData.customFields,
457
+ schemaData.isSchemaLoading,
458
+ ]);
418
459
  useEffect(() => {
419
460
  const tempReport = (reportMode ? reports : dashboard)[item.id];
420
461
  if (tempReport?.triggerReload) {
@@ -423,7 +464,7 @@ export default function DataLoader({ item, children, filters, userFilters, addit
423
464
  else if (tempReport?.error) {
424
465
  setError(tempReport.error);
425
466
  }
426
- }, [(reportMode ? reports : dashboard)[item.id]]);
467
+ }, [(reportMode ? reports : dashboard)[item.id]?.triggerReload, (reportMode ? reports : dashboard)[item.id]?.error]);
427
468
  return (_jsx(_Fragment, { children: children({
428
469
  isLoading: loading,
429
470
  error,
@@ -451,10 +492,11 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
451
492
  const [error, setError] = useState(undefined);
452
493
  const [client] = useContext(ClientContext);
453
494
  const [schemaData] = useContext(SchemaDataContext);
454
- const previousFilters = useRef(null);
455
- const previousUserFilters = useRef(null);
456
- const previousDateBucket = useRef(undefined);
457
- const previousTenants = useRef(null);
495
+ const previousFilters = useRef(filters);
496
+ const previousUserFilters = useRef(userFilters);
497
+ const previousDateBucket = useRef(dateBucket);
498
+ const previousTenants = useRef(tenants);
499
+ const previousCustomFields = useRef(schemaData.customFields);
458
500
  const fetchReportAbortController = useRef(null);
459
501
  const rowsRequestId = useRef(0);
460
502
  const chartReport = useMemo(() => {
@@ -476,7 +518,7 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
476
518
  }
477
519
  const fetchRowsRequestId = rowsRequestId.current + 1;
478
520
  rowsRequestId.current = fetchRowsRequestId;
479
- previousUserFilters.current = userFilters ?? null;
521
+ previousUserFilters.current = userFilters;
480
522
  previousDateBucket.current = dateBucket;
481
523
  setLoading(true);
482
524
  fetchReportAbortController.current?.abort();
@@ -484,10 +526,20 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
484
526
  try {
485
527
  if (reportMode) {
486
528
  try {
487
- await fetchIndividualReport(item.id, 'Chart', true, filters, userFilters, {
488
- ...additionalProcessing,
489
- ...{ page: DEFAULT_PAGINATION },
490
- }, dateBucket, fetchReportAbortController.current);
529
+ await fetchIndividualReport({
530
+ reportId: item.id,
531
+ initiator: 'Chart',
532
+ fetchRows: true,
533
+ dashboardFilters: filters,
534
+ customFilters: userFilters,
535
+ additionalProcessing: {
536
+ ...additionalProcessing,
537
+ ...{ page: DEFAULT_PAGINATION },
538
+ },
539
+ dateBucket,
540
+ reportAbortController: fetchReportAbortController.current,
541
+ customFields: schemaData.customFields,
542
+ });
491
543
  setError(undefined);
492
544
  }
493
545
  catch (e) {
@@ -495,10 +547,21 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
495
547
  }
496
548
  }
497
549
  else {
498
- const { report, error } = await fetchReport(item.id, client, tenants, flags, useReportTask, filters.concat(userFilters ?? []), {
499
- ...additionalProcessing,
500
- ...{ page: DEFAULT_PAGINATION },
501
- }, dateBucket, schemaData.customFields, undefined, undefined, fetchReportAbortController.current.signal);
550
+ const { report, error } = await fetchReport({
551
+ reportId: item.id,
552
+ client,
553
+ tenants,
554
+ flags,
555
+ useReportTask,
556
+ filters: filters.concat(userFilters ?? []),
557
+ additionalProcessing: {
558
+ ...additionalProcessing,
559
+ ...{ page: DEFAULT_PAGINATION },
560
+ },
561
+ dateBucket,
562
+ customFields: schemaData.customFields,
563
+ abortSignal: fetchReportAbortController.current.signal,
564
+ });
502
565
  dispatch({
503
566
  type: 'ADD_DASHBOARD_ITEM',
504
567
  id: item.id,
@@ -529,23 +592,32 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
529
592
  if (!filters) {
530
593
  return;
531
594
  }
532
- if ((previousFilters.current ||
533
- (reportMode ? reports : dashboard)[item.id]?.rows?.length) &&
534
- filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
535
- userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
536
- tenantsEquivalent(tenants ?? [], previousTenants.current ?? []) &&
537
- previousDateBucket.current === dateBucket) {
538
- previousFilters.current = filters;
539
- if (!fetchReportAbortController.current)
595
+ if (schemaData.isSchemaLoading ||
596
+ (filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
597
+ userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
598
+ tenantsEquivalent(tenants ?? [], previousTenants.current ?? []) &&
599
+ previousDateBucket.current === dateBucket &&
600
+ customFieldsEquivalent(previousCustomFields.current, schemaData.customFields) &&
601
+ ((reportMode ? reports : dashboard)[item.id]?.rows?.length || fetchReportAbortController.current))) {
602
+ if (!fetchReportAbortController.current && !schemaData.isSchemaLoading)
540
603
  setLoading(false);
541
604
  return;
542
605
  }
543
606
  previousDateBucket.current = dateBucket;
544
607
  previousUserFilters.current = userFilters ?? [];
545
- previousTenants.current = tenants ?? null;
608
+ previousTenants.current = tenants;
546
609
  previousFilters.current = filters;
610
+ previousCustomFields.current = schemaData.customFields;
547
611
  fetchReportHelper();
548
- }, [filters, userFilters, item.id, dateBucket]);
612
+ }, [
613
+ filters,
614
+ userFilters,
615
+ item.id,
616
+ dateBucket,
617
+ tenants,
618
+ schemaData.customFields,
619
+ schemaData.isSchemaLoading,
620
+ ]);
549
621
  useEffect(() => {
550
622
  const tempReport = (reportMode ? reports : dashboard)[item.id];
551
623
  if (tempReport && tempReport.triggerReload) {
@@ -554,7 +626,7 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
554
626
  else if (tempReport?.error) {
555
627
  setError(tempReport.error);
556
628
  }
557
- }, [(reportMode ? reports : dashboard)[item.id]]);
629
+ }, [(reportMode ? reports : dashboard)[item.id]?.triggerReload, (reportMode ? reports : dashboard)[item.id]?.error]);
558
630
  return children({
559
631
  isLoading: !chartReport || loading,
560
632
  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"}
@@ -14,7 +14,7 @@ export default function QuillMetricComponent({ report, onClick, error, isLoading
14
14
  cursor: !onClick ? 'default' : 'pointer',
15
15
  boxSizing: 'content-box',
16
16
  borderRadius: 8,
17
- paddingBottom: isLoading ? 0 : 30,
17
+ paddingBottom: 0,
18
18
  width: '100%',
19
19
  }, children: _jsx("div", { style: {
20
20
  width: '100%',
@@ -70,58 +70,61 @@ export default function QuillMetricComponent({ report, onClick, error, isLoading
70
70
  color: theme?.secondaryTextColor,
71
71
  maxWidth: '100%',
72
72
  width: '100%',
73
- }, children: "No results" })) : (_jsx("div", { style: {
74
- padding: 0,
75
- height: '100%',
76
- width: '100%',
77
- boxSizing: 'content-box',
78
- }, children: _jsxs("div", { style: {
73
+ }, children: "No results" })) : (_jsx(MetricDisplay, { dateFilter: dateFilter, primaryMetricLabel: primaryMetricLabel, comparisonLabel: comparisonLabel, theme: theme, children: children }))] }) }) }, report?.name));
74
+ }
75
+ const MetricDisplay = ({ children, dateFilter, primaryMetricLabel, comparisonLabel, theme, }) => {
76
+ return _jsx("div", { style: {
77
+ padding: 0,
78
+ height: '100%',
79
+ width: '100%',
80
+ boxSizing: 'content-box',
81
+ }, children: _jsxs("div", { style: {
82
+ fontFamily: theme?.fontFamily,
83
+ fontSize: 32,
84
+ color: theme?.primaryTextColor,
85
+ fontWeight: '600',
86
+ textOverflow: 'ellipsis',
87
+ margin: 0,
88
+ whiteSpace: 'nowrap',
89
+ boxSizing: 'content-box',
90
+ maxWidth: '100%',
91
+ textAlign: 'left',
92
+ overflow: 'hidden',
93
+ height: '100%',
94
+ display: 'flex',
95
+ width: '100%',
96
+ flexDirection: 'row',
97
+ }, children: [_jsxs("div", { style: {
98
+ display: 'flex',
99
+ gap: 4,
100
+ alignItems: 'baseline',
101
+ marginRight: 'auto',
102
+ }, children: [_jsx("span", { children: children }), dateFilter?.comparison && (_jsx("span", { style: {
103
+ fontSize: 13,
104
+ fontWeight: '500',
79
105
  fontFamily: theme?.fontFamily,
80
- fontSize: 32,
81
106
  color: theme?.primaryTextColor,
82
- fontWeight: '600',
83
- textOverflow: 'ellipsis',
84
- margin: 0,
85
- whiteSpace: 'nowrap',
86
- boxSizing: 'content-box',
87
- maxWidth: '100%',
88
- textAlign: 'left',
89
- overflow: 'hidden',
90
- height: '100%',
91
- display: 'flex',
92
- width: '100%',
93
- flexDirection: 'row',
94
- }, children: [_jsxs("div", { style: {
95
- display: 'flex',
96
- gap: 4,
97
- alignItems: 'baseline',
98
- marginRight: 'auto',
99
- }, children: [_jsx("span", { children: children }), dateFilter?.comparison && (_jsx("span", { style: {
100
- fontSize: 13,
101
- fontWeight: '500',
102
- fontFamily: theme?.fontFamily,
103
- color: theme?.primaryTextColor,
104
- marginLeft: 2,
105
- }, children: primaryMetricLabel
106
- ? `in ${primaryMetricLabel.toLowerCase()}`
107
- : 'this period' }))] }), dateFilter?.comparison && (_jsxs("div", { style: {
108
- display: 'flex',
109
- gap: 4,
110
- alignItems: 'baseline',
111
- paddingTop: 4,
112
- color: theme?.secondaryTextColor,
113
- }, children: [_jsx("span", { style: {
114
- fontSize: 28,
115
- fontWeight: '500',
116
- fontFamily: theme?.fontFamily,
117
- color: theme?.secondaryTextColor,
118
- }, children: children }), _jsx("span", { style: {
119
- fontSize: 13,
120
- fontWeight: '500',
121
- fontFamily: theme?.fontFamily,
122
- color: theme?.secondaryTextColor,
123
- marginLeft: 2,
124
- }, children: comparisonLabel
125
- ? 'in ' + comparisonLabel.toLowerCase()
126
- : 'previous period' })] }))] }) }))] }) }) }, report?.name));
127
- }
107
+ marginLeft: 2,
108
+ }, children: primaryMetricLabel
109
+ ? `in ${primaryMetricLabel.toLowerCase()}`
110
+ : 'this period' }))] }), dateFilter?.comparison && (_jsxs("div", { style: {
111
+ display: 'flex',
112
+ gap: 4,
113
+ alignItems: 'baseline',
114
+ paddingTop: 4,
115
+ color: theme?.secondaryTextColor,
116
+ }, children: [_jsx("span", { style: {
117
+ fontSize: 28,
118
+ fontWeight: '500',
119
+ fontFamily: theme?.fontFamily,
120
+ color: theme?.secondaryTextColor,
121
+ }, children: children }), _jsx("span", { style: {
122
+ fontSize: 13,
123
+ fontWeight: '500',
124
+ fontFamily: theme?.fontFamily,
125
+ color: theme?.secondaryTextColor,
126
+ marginLeft: 2,
127
+ }, children: comparisonLabel
128
+ ? 'in ' + comparisonLabel.toLowerCase()
129
+ : 'previous period' })] }))] }) });
130
+ };
@@ -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"}
@@ -46,7 +46,11 @@ export default function QuillTableComponent({ report, onClick, isLoading, error,
46
46
  } })) : error ? (_jsx("div", { style: {
47
47
  width: '100%',
48
48
  height: '400px',
49
- }, children: _jsx(ChartError, { errorMessage: error }) })) : (_jsx(QuillTable, { isLoading: isLoading, rows: report.rows ?? [], rowCount: rowCount, rowCountIsLoading: rowCountIsLoading, columns: report.columns, rowsPerPage: report.pagination?.rowsPerPage ?? DEFAULT_PAGINATION.rowsPerPage, containerStyle: {
49
+ }, children: _jsx(ChartError, { errorMessage: error }) })) : (_jsx(QuillTable, { isLoading: isLoading, rows: report.rows ?? [], rowCount: rowCount, rowCountIsLoading: rowCountIsLoading, columns: report.includeCustomFields &&
50
+ report.columnsWithCustomFields &&
51
+ !report.pivot
52
+ ? report.columnsWithCustomFields
53
+ : report.columns, rowsPerPage: report.pagination?.rowsPerPage ?? DEFAULT_PAGINATION.rowsPerPage, containerStyle: {
50
54
  width: '100%',
51
55
  height: '400px',
52
56
  }, 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"}
@@ -93,9 +93,6 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
93
93
  // FIXME: Hacked this to display selected options that have been filtered out, which is good
94
94
  // But they don't have their proper labels, since we haven't stored/passed in the label
95
95
  const filteredItems = React.useMemo(() => {
96
- 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}$/;
97
- const isUuid = potentialOptions?.[0]?.value?.toString()?.match(uuidRegex);
98
- const isNumber = !isNaN(parseInt(potentialOptions?.[0]?.value ?? ''));
99
96
  // Sort null to top
100
97
  if (searchQuery === '') {
101
98
  return potentialOptions
@@ -110,16 +107,20 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
110
107
  })
111
108
  .slice(0, 20);
112
109
  }
110
+ 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}$/;
111
+ const isUuid = potentialOptions?.[0]?.value?.toString()?.match(uuidRegex);
112
+ const isNumber = typeof potentialOptions?.[0]?.value === 'number';
113
113
  return potentialOptions
114
114
  .filter((option) => {
115
115
  if (!option) {
116
116
  return false;
117
117
  }
118
118
  return option.label
119
+ .toString()
119
120
  .toLowerCase()
120
121
  .replace(/\s+/g, '')
121
122
  .includes(searchQuery.toLowerCase().replace(/\s+/g, ''))
122
- || (isNumber || isUuid ? option.value
123
+ || (isNumber || isUuid ? option.value.toString()
123
124
  .toLowerCase()
124
125
  .replace(/\s+/g, '')
125
126
  .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"}
@@ -16,13 +16,9 @@ export function QuillSelectComponentWithCombo({ options, value, width, onChange,
16
16
  // FIXME: Hacked this to display the option that has been filtered out, which is good
17
17
  // But it doesn't have its proper label, since we haven't stored/passed in the label
18
18
  const filteredItems = React.useMemo(() => {
19
- const optionValues = new Set(options.map((opt) => opt.value));
20
19
  // Sort null to top
21
20
  if (searchQuery === '') {
22
- return (optionValues.has(value ?? '') || value === undefined
23
- ? []
24
- : [{ label: value === '' ? '-' : (value ?? '-'), value: value ?? '' }])
25
- .concat(options)
21
+ return options
26
22
  .sort((a, b) => {
27
23
  if (a.value === null) {
28
24
  return -1;
@@ -34,18 +30,23 @@ export function QuillSelectComponentWithCombo({ options, value, width, onChange,
34
30
  })
35
31
  .slice(0, 20);
36
32
  }
37
- return (optionValues.has(value ?? '')
38
- ? [{ label: value ?? '-', value: value ?? '' }]
39
- : [])
40
- .concat(options)
33
+ 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}$/;
34
+ const isUuid = options?.[0]?.value?.toString()?.match(uuidRegex);
35
+ const isNumber = typeof options?.[0]?.value === 'number';
36
+ return options
41
37
  .filter((option) => {
42
38
  if (!option) {
43
39
  return false;
44
40
  }
45
- return option.value
41
+ return option.label
42
+ .toString()
46
43
  .toLowerCase()
47
44
  .replace(/\s+/g, '')
48
- .includes(searchQuery.toLowerCase().replace(/\s+/g, ''));
45
+ .includes(searchQuery.toLowerCase().replace(/\s+/g, ''))
46
+ || (isNumber || isUuid ? option.value.toString()
47
+ .toLowerCase()
48
+ .replace(/\s+/g, '')
49
+ .includes(searchQuery.toLowerCase().replace(/\s+/g, '')) : false);
49
50
  })
50
51
  .sort((a, b) => {
51
52
  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"}
@@ -86,7 +86,8 @@ export default function AddColumnModal({ onSave, orderedColumnNames, setOrderedC
86
86
  let tableName = initialTableName;
87
87
  const orderedSelectedColumns = [];
88
88
  for (const value of orderedColumnNames) {
89
- const [table, column] = value.split('.');
89
+ const [table, ...rest] = value.split('.');
90
+ const column = rest.join('.');
90
91
  if (selectedColumns.includes(value)) {
91
92
  tableName = table;
92
93
  orderedSelectedColumns.push(column);