@quillsql/react 2.13.40 → 2.13.42

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 (267) 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 +30 -3
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +483 -182
  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 +95 -46
  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 +69 -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 +2 -1
  18. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  19. package/dist/cjs/ReportBuilder.js +190 -48
  20. package/dist/cjs/SQLEditor.d.ts +8 -1
  21. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  22. package/dist/cjs/SQLEditor.js +94 -10
  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 +5 -2
  66. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  67. package/dist/cjs/components/UiComponents.js +34 -7
  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/index.d.ts +1 -1
  80. package/dist/cjs/index.d.ts.map +1 -1
  81. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  82. package/dist/cjs/internals/ReportBuilder/PivotModal.js +7 -8
  83. package/dist/cjs/models/Columns.d.ts +1 -0
  84. package/dist/cjs/models/Columns.d.ts.map +1 -1
  85. package/dist/cjs/models/Filter.d.ts +20 -13
  86. package/dist/cjs/models/Filter.d.ts.map +1 -1
  87. package/dist/cjs/models/Filter.js +161 -87
  88. package/dist/cjs/models/Report.d.ts +12 -1
  89. package/dist/cjs/models/Report.d.ts.map +1 -1
  90. package/dist/cjs/models/Schema.d.ts +12 -1
  91. package/dist/cjs/models/Schema.d.ts.map +1 -1
  92. package/dist/cjs/utils/astFilterProcessing.js +22 -22
  93. package/dist/cjs/utils/astProcessing.d.ts +2 -2
  94. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  95. package/dist/cjs/utils/astProcessing.js +25 -6
  96. package/dist/cjs/utils/axisFormatter.d.ts.map +1 -1
  97. package/dist/cjs/utils/axisFormatter.js +25 -0
  98. package/dist/cjs/utils/color.d.ts +159 -0
  99. package/dist/cjs/utils/color.d.ts.map +1 -1
  100. package/dist/cjs/utils/color.js +14 -5
  101. package/dist/cjs/utils/columnProcessing.js +3 -3
  102. package/dist/cjs/utils/constants.d.ts +1 -0
  103. package/dist/cjs/utils/constants.d.ts.map +1 -1
  104. package/dist/cjs/utils/constants.js +2 -1
  105. package/dist/cjs/utils/dashboard.d.ts +14 -3
  106. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  107. package/dist/cjs/utils/dashboard.js +79 -16
  108. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  109. package/dist/cjs/utils/dataFetcher.js +3 -1
  110. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  111. package/dist/cjs/utils/filterProcessing.js +9 -9
  112. package/dist/cjs/utils/getDomain.d.ts +4 -1
  113. package/dist/cjs/utils/getDomain.d.ts.map +1 -1
  114. package/dist/cjs/utils/getDomain.js +11 -1
  115. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  116. package/dist/cjs/utils/pivotConstructor.js +9 -6
  117. package/dist/cjs/utils/queryConstructor.d.ts +1 -1
  118. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  119. package/dist/cjs/utils/queryConstructor.js +83 -49
  120. package/dist/cjs/utils/report.d.ts +23 -5
  121. package/dist/cjs/utils/report.d.ts.map +1 -1
  122. package/dist/cjs/utils/report.js +36 -14
  123. package/dist/cjs/utils/schema.d.ts +28 -3
  124. package/dist/cjs/utils/schema.d.ts.map +1 -1
  125. package/dist/cjs/utils/schema.js +79 -43
  126. package/dist/cjs/utils/tableProcessing.d.ts +12 -3
  127. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  128. package/dist/cjs/utils/tableProcessing.js +36 -8
  129. package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
  130. package/dist/cjs/utils/textProcessing.js +0 -1
  131. package/dist/cjs/utils/valueFormatter.d.ts +1 -0
  132. package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
  133. package/dist/cjs/utils/valueFormatter.js +55 -1
  134. package/dist/esm/Chart.d.ts +5 -1
  135. package/dist/esm/Chart.d.ts.map +1 -1
  136. package/dist/esm/Chart.js +52 -29
  137. package/dist/esm/ChartBuilder.d.ts +30 -3
  138. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  139. package/dist/esm/ChartBuilder.js +487 -187
  140. package/dist/esm/ChartEditor.d.ts.map +1 -1
  141. package/dist/esm/ChartEditor.js +11 -1
  142. package/dist/esm/Context.d.ts +16 -4
  143. package/dist/esm/Context.d.ts.map +1 -1
  144. package/dist/esm/Context.js +97 -48
  145. package/dist/esm/Dashboard.d.ts +6 -3
  146. package/dist/esm/Dashboard.d.ts.map +1 -1
  147. package/dist/esm/Dashboard.js +70 -29
  148. package/dist/esm/QuillProvider.d.ts +4 -8
  149. package/dist/esm/QuillProvider.d.ts.map +1 -1
  150. package/dist/esm/ReportBuilder.d.ts +2 -1
  151. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  152. package/dist/esm/ReportBuilder.js +192 -50
  153. package/dist/esm/SQLEditor.d.ts +8 -1
  154. package/dist/esm/SQLEditor.d.ts.map +1 -1
  155. package/dist/esm/SQLEditor.js +95 -11
  156. package/dist/esm/Table.d.ts +21 -1
  157. package/dist/esm/Table.d.ts.map +1 -1
  158. package/dist/esm/Table.js +34 -196
  159. package/dist/esm/components/Chart/BarChart.d.ts +5 -1
  160. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  161. package/dist/esm/components/Chart/BarChart.js +5 -4
  162. package/dist/esm/components/Chart/CustomReferenceLine.d.ts +2 -0
  163. package/dist/esm/components/Chart/CustomReferenceLine.d.ts.map +1 -0
  164. package/dist/esm/components/Chart/CustomReferenceLine.js +23 -0
  165. package/dist/esm/components/Chart/GaugeChart.d.ts +11 -0
  166. package/dist/esm/components/Chart/GaugeChart.d.ts.map +1 -0
  167. package/dist/esm/components/Chart/GaugeChart.js +195 -0
  168. package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
  169. package/dist/esm/components/Chart/InternalChart.js +14 -11
  170. package/dist/esm/components/Chart/LineChart.d.ts +5 -1
  171. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  172. package/dist/esm/components/Chart/LineChart.js +5 -4
  173. package/dist/esm/components/Chart/MapChart.d.ts +36 -0
  174. package/dist/esm/components/Chart/MapChart.d.ts.map +1 -0
  175. package/dist/esm/components/Chart/MapChart.js +541 -0
  176. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  177. package/dist/esm/components/Dashboard/DataLoader.js +114 -42
  178. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  179. package/dist/esm/components/Dashboard/MetricComponent.js +57 -54
  180. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  181. package/dist/esm/components/Dashboard/TableComponent.js +5 -1
  182. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  183. package/dist/esm/components/QuillMultiSelectWithCombo.js +5 -4
  184. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
  185. package/dist/esm/components/QuillSelectWithCombo.js +12 -11
  186. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  187. package/dist/esm/components/ReportBuilder/AddColumnModal.js +2 -1
  188. package/dist/esm/components/ReportBuilder/FilterModal.js +14 -14
  189. package/dist/esm/components/ReportBuilder/FilterStack.d.ts +2 -1
  190. package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  191. package/dist/esm/components/ReportBuilder/FilterStack.js +4 -4
  192. package/dist/esm/components/ReportBuilder/convert.d.ts +2 -0
  193. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  194. package/dist/esm/components/ReportBuilder/convert.js +26 -7
  195. package/dist/esm/components/ReportBuilder/util.d.ts +1 -1
  196. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  197. package/dist/esm/components/ReportBuilder/util.js +15 -2
  198. package/dist/esm/components/UiComponents.d.ts +5 -2
  199. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  200. package/dist/esm/components/UiComponents.js +32 -6
  201. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  202. package/dist/esm/hooks/useDashboard.js +11 -9
  203. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  204. package/dist/esm/hooks/useExport.js +19 -5
  205. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  206. package/dist/esm/hooks/useQuill.js +16 -3
  207. package/dist/esm/hooks/useReport.d.ts.map +1 -1
  208. package/dist/esm/hooks/useReport.js +1 -7
  209. package/dist/esm/hooks/useVirtualTables.d.ts +6 -2
  210. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  211. package/dist/esm/hooks/useVirtualTables.js +6 -3
  212. package/dist/esm/index.d.ts +1 -1
  213. package/dist/esm/index.d.ts.map +1 -1
  214. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  215. package/dist/esm/internals/ReportBuilder/PivotModal.js +7 -8
  216. package/dist/esm/models/Columns.d.ts +1 -0
  217. package/dist/esm/models/Columns.d.ts.map +1 -1
  218. package/dist/esm/models/Filter.d.ts +20 -13
  219. package/dist/esm/models/Filter.d.ts.map +1 -1
  220. package/dist/esm/models/Filter.js +160 -86
  221. package/dist/esm/models/Report.d.ts +12 -1
  222. package/dist/esm/models/Report.d.ts.map +1 -1
  223. package/dist/esm/models/Schema.d.ts +12 -1
  224. package/dist/esm/models/Schema.d.ts.map +1 -1
  225. package/dist/esm/utils/astFilterProcessing.js +23 -23
  226. package/dist/esm/utils/astProcessing.d.ts +2 -2
  227. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  228. package/dist/esm/utils/astProcessing.js +25 -6
  229. package/dist/esm/utils/axisFormatter.d.ts.map +1 -1
  230. package/dist/esm/utils/axisFormatter.js +25 -0
  231. package/dist/esm/utils/color.d.ts +159 -0
  232. package/dist/esm/utils/color.d.ts.map +1 -1
  233. package/dist/esm/utils/color.js +8 -2
  234. package/dist/esm/utils/columnProcessing.js +3 -3
  235. package/dist/esm/utils/constants.d.ts +1 -0
  236. package/dist/esm/utils/constants.d.ts.map +1 -1
  237. package/dist/esm/utils/constants.js +1 -0
  238. package/dist/esm/utils/dashboard.d.ts +14 -3
  239. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  240. package/dist/esm/utils/dashboard.js +80 -17
  241. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  242. package/dist/esm/utils/dataFetcher.js +3 -1
  243. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  244. package/dist/esm/utils/filterProcessing.js +10 -10
  245. package/dist/esm/utils/getDomain.d.ts +4 -1
  246. package/dist/esm/utils/getDomain.d.ts.map +1 -1
  247. package/dist/esm/utils/getDomain.js +11 -1
  248. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  249. package/dist/esm/utils/pivotConstructor.js +9 -6
  250. package/dist/esm/utils/queryConstructor.d.ts +1 -1
  251. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  252. package/dist/esm/utils/queryConstructor.js +83 -49
  253. package/dist/esm/utils/report.d.ts +23 -5
  254. package/dist/esm/utils/report.d.ts.map +1 -1
  255. package/dist/esm/utils/report.js +38 -16
  256. package/dist/esm/utils/schema.d.ts +28 -3
  257. package/dist/esm/utils/schema.d.ts.map +1 -1
  258. package/dist/esm/utils/schema.js +78 -43
  259. package/dist/esm/utils/tableProcessing.d.ts +12 -3
  260. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  261. package/dist/esm/utils/tableProcessing.js +36 -8
  262. package/dist/esm/utils/textProcessing.d.ts.map +1 -1
  263. package/dist/esm/utils/textProcessing.js +0 -1
  264. package/dist/esm/utils/valueFormatter.d.ts +1 -0
  265. package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
  266. package/dist/esm/utils/valueFormatter.js +53 -0
  267. package/package.json +10 -3
@@ -218,7 +218,7 @@ exports.getType = getType;
218
218
  */
219
219
  function filterSentence(filter) {
220
220
  let value = '';
221
- if (filter.filterType == Filter_1.FilterType.NullFilter) {
221
+ if (filter.filterType == Filter_1.InternalFilterType.NullFilter) {
222
222
  return `${(0, textProcessing_1.snakeAndCamelCaseToTitleCase)(filter.field)} ${filter.operator}`;
223
223
  }
224
224
  else if (filter.value === null || filter.value === undefined) {
@@ -350,7 +350,7 @@ async function buildQueryFromFilters(baseAst, filters, endpoint, client) {
350
350
  }
351
351
  }
352
352
  function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDateFilter) {
353
- if (customDateFilter.filterType === Filter_1.FilterType.DateCustomFilter &&
353
+ if (customDateFilter.filterType === Filter_1.FilterType.Date &&
354
354
  customDateFilter.value &&
355
355
  typeof customDateFilter.value === 'object' &&
356
356
  'startDate' in customDateFilter.value &&
@@ -363,14 +363,14 @@ function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDateFilter
363
363
  endDate: new Date(endDate),
364
364
  };
365
365
  }
366
- else if (customDateFilter.filterType === Filter_1.FilterType.DateFilter &&
366
+ else if (customDateFilter.filterType === Filter_1.FilterType.Date &&
367
367
  customDateFilter.value &&
368
368
  typeof customDateFilter.value === 'object' &&
369
369
  'value' in customDateFilter.value &&
370
370
  'unit' in customDateFilter.value) {
371
371
  const { value, unit } = customDateFilter.value;
372
372
  let processedUnit;
373
- let processedValue = value;
373
+ let processedValue = value || 1;
374
374
  switch (unit) {
375
375
  case Filter_1.TimeUnit.Day:
376
376
  processedUnit = 'days';
@@ -453,7 +453,7 @@ function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDateFilter
453
453
  return dashboardDateFilter;
454
454
  }
455
455
  }
456
- else if (customDateFilter.filterType === Filter_1.FilterType.DateComparisonFilter &&
456
+ else if (customDateFilter.filterType === Filter_1.FilterType.Date &&
457
457
  customDateFilter.value &&
458
458
  typeof customDateFilter.value === 'string') {
459
459
  const parsedDate = (0, date_fns_1.parse)(customDateFilter.value, 'yyyy-mm-dd', new Date());
@@ -495,14 +495,14 @@ function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDateFilter
495
495
  return dashboardDateFilter;
496
496
  }
497
497
  function mergeCustomFilters(filters, customFilters) {
498
- const customDateFilters = customFilters.filter((filter) => filter.filterType === Filter_1.FilterType.DateCustomFilter ||
499
- filter.filterType === Filter_1.FilterType.DateFilter ||
500
- filter.filterType === Filter_1.FilterType.DateComparisonFilter);
498
+ const customDateFilters = customFilters.filter((filter) => filter.filterType === Filter_1.InternalFilterType.DateCustomFilter ||
499
+ filter.filterType === Filter_1.InternalFilterType.DateFilter ||
500
+ filter.filterType === Filter_1.InternalFilterType.DateComparisonFilter);
501
501
  if (customDateFilters.length === 0) {
502
502
  return filters.concat(customFilters);
503
503
  }
504
504
  const withoutDate = filters.filter((filter) => filter.filterType !== Filter_1.DashboardFilterType.Date);
505
- const customWithoutDate = customFilters.filter((filter) => filter.filterType !== Filter_1.FilterType.DateCustomFilter);
505
+ const customWithoutDate = customFilters.filter((filter) => filter.filterType !== Filter_1.InternalFilterType.DateCustomFilter);
506
506
  const withDate = filters.find((filter) => filter.filterType === Filter_1.DashboardFilterType.Date);
507
507
  return withoutDate
508
508
  .concat([
@@ -4,5 +4,8 @@
4
4
  * @param fields - The fields to consider for domain calculation.
5
5
  * @returns - An array representing the adjusted domain [min, max].
6
6
  */
7
- export default function getDomain(data: any[], fields: any[]): number[];
7
+ export default function getDomain(data: any[], fields: any[], referenceLines: {
8
+ label: string;
9
+ query: number[];
10
+ }[] | undefined): number[];
8
11
  //# sourceMappingURL=getDomain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getDomain.d.ts","sourceRoot":"","sources":["../../../src/utils/getDomain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAkCtE"}
1
+ {"version":3,"file":"getDomain.d.ts","sourceRoot":"","sources":["../../../src/utils/getDomain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAC,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CA6CtI"}
@@ -7,7 +7,7 @@ exports.default = getDomain;
7
7
  * @param fields - The fields to consider for domain calculation.
8
8
  * @returns - An array representing the adjusted domain [min, max].
9
9
  */
10
- function getDomain(data, fields) {
10
+ function getDomain(data, fields, referenceLines) {
11
11
  const fieldsArray = fields.map((elem) => elem.field);
12
12
  const numericValues = [];
13
13
  data.forEach((item) => {
@@ -23,6 +23,16 @@ function getDomain(data, fields) {
23
23
  }
24
24
  });
25
25
  });
26
+ if (referenceLines) {
27
+ referenceLines.forEach((line) => {
28
+ if (typeof line.query[0] === 'number') {
29
+ numericValues.push(line.query[0]);
30
+ }
31
+ if (typeof line.query[line.query.length - 1] === 'number') {
32
+ numericValues.push(line.query[line.query.length - 1]);
33
+ }
34
+ });
35
+ }
26
36
  const [minValue, maxValue] = numericValues.reduce(([min, max], value) => [Math.min(min, value), Math.max(max, value)], [Infinity, -Infinity]);
27
37
  if (minValue === 0 && maxValue === 0) {
28
38
  return [0, 1];
@@ -1 +1 @@
1
- {"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAYvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,gBAAuB,GACxB,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EACJ;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,SAAS,CAAC,CAkWrB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,sBAUnD"}
1
+ {"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAYvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,gBAAuB,GACxB,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EACJ;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,SAAS,CAAC,CAuWrB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,sBAYnD"}
@@ -29,13 +29,15 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
29
29
  }
30
30
  }
31
31
  if (!pivot.aggregations?.length && pivot.aggregationType) {
32
- pivot.aggregations = [{
32
+ pivot.aggregations = [
33
+ {
33
34
  aggregationType: pivot.aggregationType,
34
35
  valueField: pivot.valueField,
35
36
  valueFieldType: pivot.valueFieldType,
36
37
  valueField2: pivot.valueField2,
37
38
  valueField2Type: pivot.valueField2Type,
38
- }];
39
+ },
40
+ ];
39
41
  }
40
42
  let comparisonInterval = undefined;
41
43
  if (dateFilter && dateFilter.comparisonRange) {
@@ -88,7 +90,6 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
88
90
  task: 'query',
89
91
  clientId: client.publicKey,
90
92
  databaseType: databaseType,
91
- getCustomFields: false,
92
93
  runQueryConfig: {
93
94
  overridePost: true,
94
95
  convertDatatypes: true,
@@ -147,7 +148,7 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
147
148
  label: (0, textProcessing_1.snakeCaseToTitleCase)((0, columnProcessing_1.processColumnName)(field.name.replace('comparison_', 'comparison '))),
148
149
  format: field.name === pivot.rowField
149
150
  ? 'string'
150
- : (pivot.aggregations?.[index]?.aggregationType === 'percentage')
151
+ : pivot.aggregations?.[index]?.aggregationType === 'percentage'
151
152
  ? 'percent'
152
153
  : 'whole_number',
153
154
  fieldType: field.fieldType,
@@ -263,8 +264,10 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
263
264
  };
264
265
  }
265
266
  function disambiguatedValueField(pivot) {
266
- // console.log(pivot);
267
267
  if (pivot.aggregations && pivot.aggregations.length > 0) {
268
+ if (!pivot.aggregations[0]?.valueField && !pivot.valueField) {
269
+ return undefined; // avoid returning empty string
270
+ }
268
271
  if (pivot.aggregations.length === 1) {
269
272
  return pivot.aggregations[0]?.valueField ?? pivot.valueField;
270
273
  }
@@ -272,5 +275,5 @@ function disambiguatedValueField(pivot) {
272
275
  return `${pivot.aggregations[0].valueField}_${(0, textProcessing_1.matchCasing)(pivot.aggregations[0].aggregationType, pivot.aggregations[0].valueField)}`;
273
276
  }
274
277
  }
275
- return pivot.valueField;
278
+ return pivot.valueField ? pivot.valueField : undefined; // avoid returning empty string
276
279
  }
@@ -2,7 +2,7 @@ import { Pivot } from '../models/Pivot';
2
2
  import { AdditionalProcessing } from './tableProcessing';
3
3
  export declare function processSingleQuotes(value: string, databaseType: string): string;
4
4
  export declare function processAggType(aggType: string, hasColumnField?: boolean): string;
5
- export declare function processColumnReference(column: string, databaseType: string, fallbackOnNull?: string, isPivotColumnFieldAlias?: boolean, isPivotValueFieldAlias?: boolean): string;
5
+ export declare function processColumnReference(column: string, databaseType: string, fallbackOnNull?: string, isColumnFieldAlias?: boolean, isValueFieldAlias?: boolean): string;
6
6
  export declare function replaceSpacesWithUnderscores(column: string): string;
7
7
  export declare function processDateTrunc(dateBucket: string, rowField: string, databaseType: string, comparisonInterval?: string): string;
8
8
  export declare function processValueField(aggType: string, databaseType: string, valueField: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAStE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,UAAQ,UAGrE;AAMD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,uBAAuB,CAAC,EAAE,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO,UAkGjC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAmBD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,UA8B5B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,UAYnB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAcrB;AAmFD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAkBrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAkBpB;AA8uBD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,KAAK,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,YAAY,SAAe,sBAgE5B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,sBAqB1E"}
1
+ {"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAStE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,UAAQ,UAGrE;AAMD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,kBAAkB,CAAC,EAAE,OAAO,EAC5B,iBAAiB,CAAC,EAAE,OAAO,UAkG5B;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAmBD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,UA8B5B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,UAYnB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAcrB;AAmFD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAkBrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAkBpB;AA82BD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,KAAK,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,YAAY,SAAe,sBAuE5B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,sBAqB1E"}
@@ -32,14 +32,14 @@ function replaceBigQuerySpecialCharacters(column) {
32
32
  }
33
33
  function processColumnReference(column, databaseType, fallbackOnNull,
34
34
  // for mysql, we only want to use double quotes for pivot column field aliases
35
- isPivotColumnFieldAlias, isPivotValueFieldAlias) {
35
+ isColumnFieldAlias, isValueFieldAlias) {
36
36
  switch (databaseType.toLowerCase()) {
37
37
  case 'postgresql':
38
38
  case 'clickhouse': {
39
39
  if (column === '') {
40
40
  return fallbackOnNull ? `"${fallbackOnNull}"` : `"_"`;
41
41
  }
42
- if (isPivotColumnFieldAlias) {
42
+ if (isColumnFieldAlias) {
43
43
  return `"${column.replaceAll('"', '')}"`;
44
44
  }
45
45
  const columnParts = column.split('.');
@@ -54,7 +54,7 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
54
54
  if (column === '') {
55
55
  return fallbackOnNull ? `${fallbackOnNull}` : '_';
56
56
  }
57
- if (isPivotColumnFieldAlias) {
57
+ if (isColumnFieldAlias) {
58
58
  return `\`${column.replaceAll(`\``, '').replaceAll(`"`, '')}\``;
59
59
  }
60
60
  const columnParts = column.split('.');
@@ -70,10 +70,10 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
70
70
  if (column === '') {
71
71
  return fallbackOnNull ? `${fallbackOnNull}` : '_';
72
72
  }
73
- if (isPivotColumnFieldAlias) {
73
+ if (isColumnFieldAlias) {
74
74
  return `"${column.replaceAll('"', '')}"`;
75
75
  }
76
- if (isPivotValueFieldAlias) {
76
+ if (isValueFieldAlias) {
77
77
  const cleanedColumn = column.replaceAll(')', '').replaceAll('(', '_');
78
78
  return `${cleanedColumn}`;
79
79
  }
@@ -87,7 +87,7 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
87
87
  if (column === '') {
88
88
  return fallbackOnNull ? `\`${fallbackOnNull}\`` : '`_`';
89
89
  }
90
- if (isPivotColumnFieldAlias) {
90
+ if (isColumnFieldAlias) {
91
91
  return `\`${replaceBigQuerySpecialCharacters(column.replaceAll('`', ''))}\``;
92
92
  }
93
93
  const columnParts = column.split('.');
@@ -102,7 +102,7 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
102
102
  if (column === '') {
103
103
  return fallbackOnNull ? `[${fallbackOnNull}]` : `[_]`;
104
104
  }
105
- if (isPivotColumnFieldAlias) {
105
+ if (isColumnFieldAlias) {
106
106
  return `[${column.replaceAll(']', '').replaceAll('[', '')}]`;
107
107
  }
108
108
  const columnParts = column.split('.');
@@ -179,7 +179,7 @@ function generateCountQuery(fields, query, databaseType) {
179
179
  switch (databaseType.toLowerCase()) {
180
180
  case 'mysql':
181
181
  cte = fields.map((field, index) => {
182
- return `, distinct_cte_${index} AS (SELECT DISTINCT ${processColumnReference(field, databaseType)} FROM querytable LIMIT ${constants_1.MAX_PIVOT_UNIQUE_VALUES + 1})`;
182
+ return `, distinct_cte_${index} AS (SELECT DISTINCT ${processColumnReference(field, databaseType, undefined, true)} FROM querytable LIMIT ${constants_1.MAX_PIVOT_UNIQUE_VALUES + 1})`;
183
183
  });
184
184
  countQuery = fields.map((field, index) => {
185
185
  return `SELECT '${field}' AS ${processColumnReference('field', databaseType)}, COUNT(*) AS ${processColumnReference('count', databaseType)} FROM distinct_cte_${index}`;
@@ -188,7 +188,7 @@ function generateCountQuery(fields, query, databaseType) {
188
188
  break;
189
189
  default:
190
190
  countQuery = fields.map((field) => {
191
- return `SELECT '${field}' AS ${processColumnReference('field', databaseType)}, COUNT(DISTINCT ${processColumnReference(field, databaseType)}) AS ${processColumnReference('count', databaseType)} FROM querytable`;
191
+ return `SELECT '${field}' AS ${processColumnReference('field', databaseType)}, COUNT(DISTINCT ${processColumnReference(field, databaseType, undefined, true)}) AS ${processColumnReference('count', databaseType)} FROM querytable`;
192
192
  });
193
193
  }
194
194
  return cteQuery + countQuery.join(' UNION ALL ');
@@ -307,7 +307,10 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
307
307
  if (!isValidBaseQuery || !pivot.columnField || !pivot.rowField)
308
308
  return undefined;
309
309
  const rowField = pivot.rowField;
310
- if (!pivot.aggregations?.[0]?.valueField && !pivot.valueField)
310
+ if (!pivot.aggregations?.[0]?.valueField &&
311
+ pivot.aggregations?.[0]?.aggregationType !== 'count' &&
312
+ !pivot.valueField &&
313
+ pivot.aggregationType !== 'count')
311
314
  throw new Error('No value field provided for pivot');
312
315
  if (!pivot.aggregations?.[0]?.aggregationType && !pivot.aggregationType)
313
316
  throw new Error('No aggregation type provided for pivot');
@@ -331,7 +334,7 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
331
334
  let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString();
332
335
  if (disambiguationIndex === '1')
333
336
  disambiguationIndex = '';
334
- const valueFieldAlias = processColumnReference((currentAgg.valueField || rowField || 'count'), databaseType, undefined, false, true);
337
+ const valueFieldAlias = processColumnReference(currentAgg.valueField || rowField || 'count', databaseType, undefined, false, true);
335
338
  const valueAliasSubstring = currentAgg.valueField
336
339
  ? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
337
340
  : '';
@@ -354,16 +357,23 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
354
357
  const value2Expr = (currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool'
355
358
  ? `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`
356
359
  : valueField2Alias;
357
- if (currentAgg.valueField === currentAgg.valueField2 || !currentAgg.valueField2) {
358
- caseWhens = columnFieldValues.map((column) => {
359
- return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${valueExpr} END) / GREATEST(sum(${value2Expr}), 1) AS ${processColumnReference(column + disambiguation, databaseType, '_', true)}`;
360
- });
360
+ if (currentAgg.valueField === currentAgg.valueField2 ||
361
+ !currentAgg.valueField2) {
362
+ caseWhens = [
363
+ ...caseWhens,
364
+ ...columnFieldValues.map((column) => {
365
+ return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${valueExpr} END) / GREATEST(sum(${value2Expr}), 1) AS ${processColumnReference(column + disambiguation, databaseType, '_', true)}`;
366
+ })
367
+ ];
361
368
  }
362
369
  else {
363
370
  value2AliasSubstring = `${processColumnReference(currentAgg.valueField2 ?? currentAgg.valueField, databaseType, undefined, true)} AS ${valueField2Alias}`;
364
- caseWhens = columnFieldValues.map((column) => {
365
- return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${valueExpr} END) / GREATEST(sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${value2Expr} END), 1) AS ${processColumnReference(column + disambiguation, databaseType, '_', true)}`;
366
- });
371
+ caseWhens = [
372
+ ...caseWhens,
373
+ ...columnFieldValues.map((column) => {
374
+ return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${valueExpr} END) / GREATEST(sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${value2Expr} END), 1) AS ${processColumnReference(column + disambiguation, databaseType, '_', true)}`;
375
+ })
376
+ ];
367
377
  }
368
378
  }
369
379
  else {
@@ -386,7 +396,7 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
386
396
  ];
387
397
  valueAliases = Array.from(new Set(valueAliases));
388
398
  const sortQuery = pivot.sort && pivot.sortField && pivot.rowLimit
389
- ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
399
+ ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
390
400
  : '';
391
401
  const pivotQuery = `
392
402
  ,quill_alias AS (
@@ -415,7 +425,10 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
415
425
  if (!isValidBaseQuery || !pivot.columnField || !pivot.rowField) {
416
426
  return undefined;
417
427
  }
418
- if (!pivot.aggregations?.[0]?.valueField && !pivot.valueField)
428
+ if (!pivot.aggregations?.[0]?.valueField &&
429
+ pivot.aggregations?.[0]?.aggregationType !== 'count' &&
430
+ !pivot.valueField &&
431
+ pivot.aggregationType !== 'count')
419
432
  throw new Error('No value field provided for pivot');
420
433
  if (!pivot.aggregations?.[0]?.aggregationType && !pivot.aggregationType)
421
434
  throw new Error('No aggregation type provided for pivot');
@@ -441,12 +454,14 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
441
454
  let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString();
442
455
  if (disambiguationIndex === '1')
443
456
  disambiguationIndex = '';
444
- const valueFieldAlias = processColumnReference((currentAgg.valueField ?? rowField), databaseType, undefined, false, true);
457
+ const valueFieldAlias = processColumnReference(currentAgg.valueField ?? rowField, databaseType, undefined, false, true);
445
458
  const valueAliasSubstring = currentAgg.valueField
446
459
  ? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
447
460
  : '';
448
461
  let value2AliasSubstring = '';
449
- const disambiguationField = Object.values(seenAggs[currentAgg.aggregationType ?? ''] ?? {}).reduce((acc, v) => acc + v) > 1 ? `_${currentAgg.valueField}${disambiguationIndex}` : '';
462
+ const disambiguationField = Object.values(seenAggs[currentAgg.aggregationType ?? ''] ?? {}).reduce((acc, v) => acc + v) > 1
463
+ ? `_${currentAgg.valueField}${disambiguationIndex}`
464
+ : '';
450
465
  const disambiguation = pivot.aggregations?.length > 1
451
466
  ? `${disambiguationField}_${disambiguationField ? (0, textProcessing_1.matchCasing)(currentAgg.aggregationType, currentAgg.valueField) : currentAgg.aggregationType}`
452
467
  : '';
@@ -463,7 +478,8 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
463
478
  ? `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`
464
479
  : valueField2Alias;
465
480
  // edge case. if the user picks amount and amount, we assume they want a pie chart like breakdown of amount. so the summation of valueField2 has to be moved outside of the case whe
466
- if (currentAgg.valueField === currentAgg.valueField2 || !currentAgg.valueField2) {
481
+ if (currentAgg.valueField === currentAgg.valueField2 ||
482
+ !currentAgg.valueField2) {
467
483
  caseWhens = [
468
484
  ...caseWhens,
469
485
  ...columnFieldValues.map((column) => {
@@ -501,7 +517,7 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
501
517
  ];
502
518
  valueFieldAliases = Array.from(new Set(valueFieldAliases));
503
519
  // pivot sort matters in the base query when there is a rowLimit. In mssql, an orderby must be accompanied by a limit in a subquery and not allowed in a cte
504
- const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} ` : ''}`;
520
+ const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} ` : ''}`;
505
521
  const pivotQuery = `
506
522
  , quill_alias AS (SELECT ${valueFieldAliases.length > 0 ? `${valueFieldAliases.join(', ')}` : ''} FROM quill_base_table),
507
523
  quill_qt_agg AS (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)}),
@@ -548,7 +564,7 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
548
564
  if (disambiguationIndex === '1')
549
565
  disambiguationIndex = '';
550
566
  // This is the alias (from quill_alias CTE) for the field
551
- const valueFieldAlias = processColumnReference((currentAgg.valueField || rowField || 'count'), databaseType, undefined, false, true);
567
+ const valueFieldAlias = processColumnReference(currentAgg.valueField || rowField || 'count', databaseType, undefined, false, true);
552
568
  // In the base query, we select the raw column.
553
569
  const valueAliasSubstring = currentAgg.valueField
554
570
  ? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
@@ -571,10 +587,13 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
571
587
  if ((currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool') {
572
588
  value2Expr = `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`;
573
589
  }
574
- value2AliasSubstring = currentAgg.valueField2 && currentAgg.valueField !== currentAgg.valueField2
575
- ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
576
- : '';
577
- const percentageExpr = currentAgg.valueField === currentAgg.valueField2 || !currentAgg.valueField2
590
+ value2AliasSubstring =
591
+ currentAgg.valueField2 &&
592
+ currentAgg.valueField !== currentAgg.valueField2
593
+ ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
594
+ : '';
595
+ const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
596
+ !currentAgg.valueField2
578
597
  ? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
579
598
  : `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
580
599
  quillAggSelects = [
@@ -595,7 +614,7 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
595
614
  });
596
615
  valueFieldAliases = Array.from(new Set(valueFieldAliases));
597
616
  const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit
598
- ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
617
+ ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
599
618
  : ''}`;
600
619
  const pivotQuery = `, quill_alias AS (
601
620
  SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowAlias}${valueFieldAliases.length > 0 ? `, ${valueFieldAliases.join(', ')}` : ''}
@@ -620,7 +639,9 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
620
639
  }
621
640
  const rowField = pivot.rowField || '';
622
641
  const rowFieldAlias = processColumnReference(rowField, databaseType, undefined);
623
- let quillAggSelects = [`${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(rowField, databaseType)}`];
642
+ let quillAggSelects = [
643
+ `${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(rowField, databaseType)}`,
644
+ ];
624
645
  let valueFieldAliases = [];
625
646
  const seenAggs = {};
626
647
  pivot.aggregations?.forEach((currentAgg) => {
@@ -639,7 +660,7 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
639
660
  let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString() ?? '';
640
661
  if (disambiguationIndex === '1')
641
662
  disambiguationIndex = '';
642
- const valueFieldAlias = processColumnReference((currentAgg.valueField || rowField || 'count'), databaseType, undefined, false, true);
663
+ const valueFieldAlias = processColumnReference(currentAgg.valueField || rowField || 'count', databaseType, undefined, false, true);
643
664
  const valueAliasSubstring = currentAgg.valueField
644
665
  ? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
645
666
  : '';
@@ -657,14 +678,17 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
657
678
  throw new Error('No value field provided for percentage aggregation');
658
679
  }
659
680
  const valueField2Alias = processColumnReference(currentAgg.valueField2 ?? currentAgg.valueField, databaseType, undefined, false, true);
660
- value2AliasSubstring = currentAgg.valueField2 && currentAgg.valueField !== currentAgg.valueField2
661
- ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
662
- : '';
681
+ value2AliasSubstring =
682
+ currentAgg.valueField2 &&
683
+ currentAgg.valueField !== currentAgg.valueField2
684
+ ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
685
+ : '';
663
686
  let value2Expr = valueField2Alias;
664
687
  if ((currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool') {
665
688
  value2Expr = `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`;
666
689
  }
667
- const percentageExpr = currentAgg.valueField === currentAgg.valueField2 || !currentAgg.valueField2
690
+ const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
691
+ !currentAgg.valueField2
668
692
  ? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
669
693
  : `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
670
694
  quillAggSelects = [
@@ -685,7 +709,7 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
685
709
  });
686
710
  valueFieldAliases = Array.from(new Set(valueFieldAliases));
687
711
  // pivot sort matters in the base query when there is a rowLimit. In mssql, an orderby must be accompanied by a limit in a subquery and not allowed in a cte
688
- const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} ` : ''}`;
712
+ const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} ` : ''}`;
689
713
  const pivotQuery = `, quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueFieldAliases.length > 0 ? `, ${valueFieldAliases.join(', ')}` : ''}
690
714
  FROM quill_base_table),
691
715
  quill_qt_agg AS (SELECT ${quillAggSelects.join(', ')}
@@ -721,7 +745,7 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
721
745
  let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString() ?? '';
722
746
  if (disambiguationIndex === '1')
723
747
  disambiguationIndex = '';
724
- const valueFieldAlias = processColumnReference((currentAgg.valueField || 'count'), databaseType, undefined, false, true);
748
+ const valueFieldAlias = processColumnReference(currentAgg.valueField || 'count', databaseType, undefined, false, true);
725
749
  const valueAliasSubstring = currentAgg.valueField
726
750
  ? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
727
751
  : '';
@@ -731,9 +755,10 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
731
755
  : '';
732
756
  // If the field type is bool, wrap it in a CASE WHEN
733
757
  let valueExpr = !currentAgg.valueField ? '*' : valueFieldAlias;
734
- valueExpr = currentAgg.valueFieldType === 'bool'
735
- ? `CASE WHEN ${valueFieldAlias} THEN 1 ELSE 0 END`
736
- : valueExpr;
758
+ valueExpr =
759
+ currentAgg.valueFieldType === 'bool'
760
+ ? `CASE WHEN ${valueFieldAlias} THEN 1 ELSE 0 END`
761
+ : valueExpr;
737
762
  if (currentAgg.aggregationType === 'percentage') {
738
763
  if (!currentAgg.valueField) {
739
764
  throw new Error('No value field provided for percentage aggregation');
@@ -742,10 +767,13 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
742
767
  const value2Expr = (currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool'
743
768
  ? `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`
744
769
  : valueField2Alias;
745
- value2AliasSubstring = currentAgg.valueField2 && currentAgg.valueField !== currentAgg.valueField2
746
- ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
747
- : '';
748
- const percentageExpr = currentAgg.valueField === currentAgg.valueField2 || !currentAgg.valueField2
770
+ value2AliasSubstring =
771
+ currentAgg.valueField2 &&
772
+ currentAgg.valueField !== currentAgg.valueField2
773
+ ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
774
+ : '';
775
+ const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
776
+ !currentAgg.valueField2
749
777
  ? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
750
778
  : `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
751
779
  quillAggSelects = [
@@ -766,7 +794,7 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
766
794
  });
767
795
  valueFieldAliases = Array.from(new Set(valueFieldAliases));
768
796
  const sortQuery = pivot.sort && pivot.sortField && pivot.rowLimit
769
- ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
797
+ ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
770
798
  : '';
771
799
  const pivotQuery = `, quill_alias AS (
772
800
  SELECT ${valueFieldAliases.join(', ')} FROM quill_base_table
@@ -796,7 +824,13 @@ function additionalProcessingOnPivotQuery(pivot, query, additionalProcessing, da
796
824
  }
797
825
  if (!pivot.aggregations || pivot.aggregations.length === 0) {
798
826
  if (pivot.aggregationType) {
799
- pivot.aggregations = [{ aggregationType: pivot.aggregationType, valueField: pivot.valueField, valueField2: pivot.valueField2 }];
827
+ pivot.aggregations = [
828
+ {
829
+ aggregationType: pivot.aggregationType,
830
+ valueField: pivot.valueField,
831
+ valueField2: pivot.valueField2,
832
+ },
833
+ ];
800
834
  }
801
835
  else {
802
836
  throw new Error('No aggregations provided for pivot');
@@ -820,13 +854,13 @@ function additionalProcessingOnPivotQuery(pivot, query, additionalProcessing, da
820
854
  ? `_${(0, textProcessing_1.matchCasing)(pivot.aggregations?.[0]?.aggregationType, pivot.aggregations?.[0]?.valueField)}`
821
855
  : '';
822
856
  if (additionalProcessing.sort) {
823
- sortQuery = `ORDER BY ${processColumnReference(additionalProcessing.sort.field, databaseType)} ${additionalProcessing.sort.direction || ''}`;
857
+ sortQuery = `ORDER BY ${processColumnReference(additionalProcessing.sort.field, databaseType, undefined, true)} ${additionalProcessing.sort.direction || ''}`;
824
858
  }
825
859
  else {
826
860
  const valueFieldAlias = processColumnReference((pivot.aggregations?.[0]?.valueField ?? '') + disambiguation, databaseType, undefined, false, true);
827
861
  const defaultSortField = pivot.sortField || pivot.rowField || valueFieldAlias;
828
862
  const defaultSortDirection = pivot.sortDirection || '';
829
- sortQuery = `ORDER BY ${processColumnReference(defaultSortField, databaseType)} ${defaultSortDirection}`;
863
+ sortQuery = `ORDER BY ${processColumnReference(defaultSortField, databaseType, undefined, true)} ${defaultSortDirection}`;
830
864
  }
831
865
  const additionalProcessingQuery = `
832
866
  SELECT *
@@ -5,6 +5,7 @@ import { Pivot, PivotData } from '../models/Pivot';
5
5
  import { QuillReport, QuillReportInternal } from '../models/Report';
6
6
  import { DateRangesByColumn, Table, UniqueValuesByTable } from '../models/Tables';
7
7
  import { AdditionalProcessing } from './tableProcessing';
8
+ import { CustomField } from '../models/Schema';
8
9
  export type ReportBuilderInfo = {
9
10
  rows: any[];
10
11
  columns: ColumnInternal[];
@@ -22,19 +23,36 @@ export type ReportBuilderInfo = {
22
23
  };
23
24
  export declare const EMPTY_REPORT: QuillReport;
24
25
  export declare const EMPTY_INTERNAL_REPORT: QuillReportInternal;
25
- export declare function fetchReport(reportId: string, client: QuillProviderClient, tenants?: {
26
- tenantField: string;
27
- tenantIds: (string | number)[];
28
- }[] | (string | number)[], flags?: string[], useReportTask?: boolean, filters?: any[], additionalProcessing?: AdditionalProcessing, dateBucket?: string, customFields?: any, rowsOnly?: boolean, rowCountOnly?: boolean, abortSignal?: AbortSignal, getDefaultDashboardFilters?: boolean): Promise<{
26
+ export declare function fetchReport({ reportId, client, tenants, flags, useReportTask, filters, additionalProcessing, dateBucket, customFields, rowsOnly, rowCountOnly, abortSignal, getDefaultDashboardFilters, }: {
27
+ reportId: string;
28
+ client: QuillProviderClient;
29
+ tenants?: {
30
+ tenantField: string;
31
+ tenantIds: (string | number)[];
32
+ }[] | (string | number)[];
33
+ flags?: string[];
34
+ useReportTask?: boolean;
35
+ filters?: any[];
36
+ additionalProcessing?: AdditionalProcessing;
37
+ dateBucket?: string;
38
+ customFields?: any;
39
+ rowsOnly?: boolean;
40
+ rowCountOnly?: boolean;
41
+ abortSignal?: AbortSignal;
42
+ getDefaultDashboardFilters?: boolean;
43
+ }): Promise<{
29
44
  report: QuillReportInternal;
30
45
  error?: string;
31
46
  }>;
32
- export declare function processReportResponse({ resp, client, filters, dateBucket, additionalProcessing, }: {
47
+ export declare function processReportResponse({ resp, client, filters, dateBucket, additionalProcessing, customFields, }: {
33
48
  resp: any;
34
49
  client: QuillProviderClient;
35
50
  filters?: (DashboardFilter | InternalFilter)[];
36
51
  dateBucket?: string;
37
52
  additionalProcessing?: AdditionalProcessing;
53
+ customFields?: {
54
+ [tableName: string]: CustomField[];
55
+ } | null;
38
56
  }): Promise<QuillReportInternal>;
39
57
  export declare function fetchReportInfo(reportId: string, client: QuillProviderClient, tenants?: {
40
58
  tenantField: string;
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"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"}