@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
@@ -1,6 +1,6 @@
1
1
  import { endOfDay, parse, startOfDay, sub } from 'date-fns';
2
2
  import { COMPARISON_RANGE, PRIMARY_RANGE, defaultOptionsV2, getRangeFromPresetOptions, } from '../DateRangePicker/dateRangePickerUtils';
3
- import { DateOperator, FieldType, FilterType, DashboardFilterType, TimeUnit, } from '../models/Filter';
3
+ import { DateOperator, FieldType, InternalFilterType, DashboardFilterType, TimeUnit, FilterType, } from '../models/Filter';
4
4
  import { filterTreeToAst } from './astFilterProcessing';
5
5
  import { snakeAndCamelCaseToTitleCase } from './textProcessing';
6
6
  export function findAndProcessDateFilter(filters) {
@@ -203,7 +203,7 @@ export const getType = (t) => {
203
203
  */
204
204
  export function filterSentence(filter) {
205
205
  let value = '';
206
- if (filter.filterType == FilterType.NullFilter) {
206
+ if (filter.filterType == InternalFilterType.NullFilter) {
207
207
  return `${snakeAndCamelCaseToTitleCase(filter.field)} ${filter.operator}`;
208
208
  }
209
209
  else if (filter.value === null || filter.value === undefined) {
@@ -335,7 +335,7 @@ export async function buildQueryFromFilters(baseAst, filters, endpoint, client)
335
335
  }
336
336
  }
337
337
  export function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDateFilter) {
338
- if (customDateFilter.filterType === FilterType.DateCustomFilter &&
338
+ if (customDateFilter.filterType === FilterType.Date &&
339
339
  customDateFilter.value &&
340
340
  typeof customDateFilter.value === 'object' &&
341
341
  'startDate' in customDateFilter.value &&
@@ -348,14 +348,14 @@ export function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDat
348
348
  endDate: new Date(endDate),
349
349
  };
350
350
  }
351
- else if (customDateFilter.filterType === FilterType.DateFilter &&
351
+ else if (customDateFilter.filterType === FilterType.Date &&
352
352
  customDateFilter.value &&
353
353
  typeof customDateFilter.value === 'object' &&
354
354
  'value' in customDateFilter.value &&
355
355
  'unit' in customDateFilter.value) {
356
356
  const { value, unit } = customDateFilter.value;
357
357
  let processedUnit;
358
- let processedValue = value;
358
+ let processedValue = value || 1;
359
359
  switch (unit) {
360
360
  case TimeUnit.Day:
361
361
  processedUnit = 'days';
@@ -438,7 +438,7 @@ export function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDat
438
438
  return dashboardDateFilter;
439
439
  }
440
440
  }
441
- else if (customDateFilter.filterType === FilterType.DateComparisonFilter &&
441
+ else if (customDateFilter.filterType === FilterType.Date &&
442
442
  customDateFilter.value &&
443
443
  typeof customDateFilter.value === 'string') {
444
444
  const parsedDate = parse(customDateFilter.value, 'yyyy-mm-dd', new Date());
@@ -480,14 +480,14 @@ export function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDat
480
480
  return dashboardDateFilter;
481
481
  }
482
482
  export function mergeCustomFilters(filters, customFilters) {
483
- const customDateFilters = customFilters.filter((filter) => filter.filterType === FilterType.DateCustomFilter ||
484
- filter.filterType === FilterType.DateFilter ||
485
- filter.filterType === FilterType.DateComparisonFilter);
483
+ const customDateFilters = customFilters.filter((filter) => filter.filterType === InternalFilterType.DateCustomFilter ||
484
+ filter.filterType === InternalFilterType.DateFilter ||
485
+ filter.filterType === InternalFilterType.DateComparisonFilter);
486
486
  if (customDateFilters.length === 0) {
487
487
  return filters.concat(customFilters);
488
488
  }
489
489
  const withoutDate = filters.filter((filter) => filter.filterType !== DashboardFilterType.Date);
490
- const customWithoutDate = customFilters.filter((filter) => filter.filterType !== FilterType.DateCustomFilter);
490
+ const customWithoutDate = customFilters.filter((filter) => filter.filterType !== InternalFilterType.DateCustomFilter);
491
491
  const withDate = filters.find((filter) => filter.filterType === DashboardFilterType.Date);
492
492
  return withoutDate
493
493
  .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"}
@@ -4,7 +4,7 @@
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, fields) {
7
+ export default function getDomain(data, fields, referenceLines) {
8
8
  const fieldsArray = fields.map((elem) => elem.field);
9
9
  const numericValues = [];
10
10
  data.forEach((item) => {
@@ -20,6 +20,16 @@ export default function getDomain(data, fields) {
20
20
  }
21
21
  });
22
22
  });
23
+ if (referenceLines) {
24
+ referenceLines.forEach((line) => {
25
+ if (typeof line.query[0] === 'number') {
26
+ numericValues.push(line.query[0]);
27
+ }
28
+ if (typeof line.query[line.query.length - 1] === 'number') {
29
+ numericValues.push(line.query[line.query.length - 1]);
30
+ }
31
+ });
32
+ }
23
33
  const [minValue, maxValue] = numericValues.reduce(([min, max], value) => [Math.min(min, value), Math.max(max, value)], [Infinity, -Infinity]);
24
34
  if (minValue === 0 && maxValue === 0) {
25
35
  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"}
@@ -25,13 +25,15 @@ export async function generatePivotWithSQL({ pivot, report, client, dateBucket,
25
25
  }
26
26
  }
27
27
  if (!pivot.aggregations?.length && pivot.aggregationType) {
28
- pivot.aggregations = [{
28
+ pivot.aggregations = [
29
+ {
29
30
  aggregationType: pivot.aggregationType,
30
31
  valueField: pivot.valueField,
31
32
  valueFieldType: pivot.valueFieldType,
32
33
  valueField2: pivot.valueField2,
33
34
  valueField2Type: pivot.valueField2Type,
34
- }];
35
+ },
36
+ ];
35
37
  }
36
38
  let comparisonInterval = undefined;
37
39
  if (dateFilter && dateFilter.comparisonRange) {
@@ -84,7 +86,6 @@ export async function generatePivotWithSQL({ pivot, report, client, dateBucket,
84
86
  task: 'query',
85
87
  clientId: client.publicKey,
86
88
  databaseType: databaseType,
87
- getCustomFields: false,
88
89
  runQueryConfig: {
89
90
  overridePost: true,
90
91
  convertDatatypes: true,
@@ -143,7 +144,7 @@ export async function generatePivotWithSQL({ pivot, report, client, dateBucket,
143
144
  label: snakeCaseToTitleCase(processColumnName(field.name.replace('comparison_', 'comparison '))),
144
145
  format: field.name === pivot.rowField
145
146
  ? 'string'
146
- : (pivot.aggregations?.[index]?.aggregationType === 'percentage')
147
+ : pivot.aggregations?.[index]?.aggregationType === 'percentage'
147
148
  ? 'percent'
148
149
  : 'whole_number',
149
150
  fieldType: field.fieldType,
@@ -259,8 +260,10 @@ export async function generatePivotWithSQL({ pivot, report, client, dateBucket,
259
260
  };
260
261
  }
261
262
  export function disambiguatedValueField(pivot) {
262
- // console.log(pivot);
263
263
  if (pivot.aggregations && pivot.aggregations.length > 0) {
264
+ if (!pivot.aggregations[0]?.valueField && !pivot.valueField) {
265
+ return undefined; // avoid returning empty string
266
+ }
264
267
  if (pivot.aggregations.length === 1) {
265
268
  return pivot.aggregations[0]?.valueField ?? pivot.valueField;
266
269
  }
@@ -268,5 +271,5 @@ export function disambiguatedValueField(pivot) {
268
271
  return `${pivot.aggregations[0].valueField}_${matchCasing(pivot.aggregations[0].aggregationType, pivot.aggregations[0].valueField)}`;
269
272
  }
270
273
  }
271
- return pivot.valueField;
274
+ return pivot.valueField ? pivot.valueField : undefined; // avoid returning empty string
272
275
  }
@@ -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"}
@@ -18,14 +18,14 @@ function replaceBigQuerySpecialCharacters(column) {
18
18
  }
19
19
  export function processColumnReference(column, databaseType, fallbackOnNull,
20
20
  // for mysql, we only want to use double quotes for pivot column field aliases
21
- isPivotColumnFieldAlias, isPivotValueFieldAlias) {
21
+ isColumnFieldAlias, isValueFieldAlias) {
22
22
  switch (databaseType.toLowerCase()) {
23
23
  case 'postgresql':
24
24
  case 'clickhouse': {
25
25
  if (column === '') {
26
26
  return fallbackOnNull ? `"${fallbackOnNull}"` : `"_"`;
27
27
  }
28
- if (isPivotColumnFieldAlias) {
28
+ if (isColumnFieldAlias) {
29
29
  return `"${column.replaceAll('"', '')}"`;
30
30
  }
31
31
  const columnParts = column.split('.');
@@ -40,7 +40,7 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
40
40
  if (column === '') {
41
41
  return fallbackOnNull ? `${fallbackOnNull}` : '_';
42
42
  }
43
- if (isPivotColumnFieldAlias) {
43
+ if (isColumnFieldAlias) {
44
44
  return `\`${column.replaceAll(`\``, '').replaceAll(`"`, '')}\``;
45
45
  }
46
46
  const columnParts = column.split('.');
@@ -56,10 +56,10 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
56
56
  if (column === '') {
57
57
  return fallbackOnNull ? `${fallbackOnNull}` : '_';
58
58
  }
59
- if (isPivotColumnFieldAlias) {
59
+ if (isColumnFieldAlias) {
60
60
  return `"${column.replaceAll('"', '')}"`;
61
61
  }
62
- if (isPivotValueFieldAlias) {
62
+ if (isValueFieldAlias) {
63
63
  const cleanedColumn = column.replaceAll(')', '').replaceAll('(', '_');
64
64
  return `${cleanedColumn}`;
65
65
  }
@@ -73,7 +73,7 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
73
73
  if (column === '') {
74
74
  return fallbackOnNull ? `\`${fallbackOnNull}\`` : '`_`';
75
75
  }
76
- if (isPivotColumnFieldAlias) {
76
+ if (isColumnFieldAlias) {
77
77
  return `\`${replaceBigQuerySpecialCharacters(column.replaceAll('`', ''))}\``;
78
78
  }
79
79
  const columnParts = column.split('.');
@@ -88,7 +88,7 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
88
88
  if (column === '') {
89
89
  return fallbackOnNull ? `[${fallbackOnNull}]` : `[_]`;
90
90
  }
91
- if (isPivotColumnFieldAlias) {
91
+ if (isColumnFieldAlias) {
92
92
  return `[${column.replaceAll(']', '').replaceAll('[', '')}]`;
93
93
  }
94
94
  const columnParts = column.split('.');
@@ -165,7 +165,7 @@ export function generateCountQuery(fields, query, databaseType) {
165
165
  switch (databaseType.toLowerCase()) {
166
166
  case 'mysql':
167
167
  cte = fields.map((field, index) => {
168
- return `, distinct_cte_${index} AS (SELECT DISTINCT ${processColumnReference(field, databaseType)} FROM querytable LIMIT ${MAX_PIVOT_UNIQUE_VALUES + 1})`;
168
+ return `, distinct_cte_${index} AS (SELECT DISTINCT ${processColumnReference(field, databaseType, undefined, true)} FROM querytable LIMIT ${MAX_PIVOT_UNIQUE_VALUES + 1})`;
169
169
  });
170
170
  countQuery = fields.map((field, index) => {
171
171
  return `SELECT '${field}' AS ${processColumnReference('field', databaseType)}, COUNT(*) AS ${processColumnReference('count', databaseType)} FROM distinct_cte_${index}`;
@@ -174,7 +174,7 @@ export function generateCountQuery(fields, query, databaseType) {
174
174
  break;
175
175
  default:
176
176
  countQuery = fields.map((field) => {
177
- return `SELECT '${field}' AS ${processColumnReference('field', databaseType)}, COUNT(DISTINCT ${processColumnReference(field, databaseType)}) AS ${processColumnReference('count', databaseType)} FROM querytable`;
177
+ return `SELECT '${field}' AS ${processColumnReference('field', databaseType)}, COUNT(DISTINCT ${processColumnReference(field, databaseType, undefined, true)}) AS ${processColumnReference('count', databaseType)} FROM querytable`;
178
178
  });
179
179
  }
180
180
  return cteQuery + countQuery.join(' UNION ALL ');
@@ -293,7 +293,10 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
293
293
  if (!isValidBaseQuery || !pivot.columnField || !pivot.rowField)
294
294
  return undefined;
295
295
  const rowField = pivot.rowField;
296
- if (!pivot.aggregations?.[0]?.valueField && !pivot.valueField)
296
+ if (!pivot.aggregations?.[0]?.valueField &&
297
+ pivot.aggregations?.[0]?.aggregationType !== 'count' &&
298
+ !pivot.valueField &&
299
+ pivot.aggregationType !== 'count')
297
300
  throw new Error('No value field provided for pivot');
298
301
  if (!pivot.aggregations?.[0]?.aggregationType && !pivot.aggregationType)
299
302
  throw new Error('No aggregation type provided for pivot');
@@ -317,7 +320,7 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
317
320
  let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString();
318
321
  if (disambiguationIndex === '1')
319
322
  disambiguationIndex = '';
320
- const valueFieldAlias = processColumnReference((currentAgg.valueField || rowField || 'count'), databaseType, undefined, false, true);
323
+ const valueFieldAlias = processColumnReference(currentAgg.valueField || rowField || 'count', databaseType, undefined, false, true);
321
324
  const valueAliasSubstring = currentAgg.valueField
322
325
  ? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
323
326
  : '';
@@ -340,16 +343,23 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
340
343
  const value2Expr = (currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool'
341
344
  ? `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`
342
345
  : valueField2Alias;
343
- if (currentAgg.valueField === currentAgg.valueField2 || !currentAgg.valueField2) {
344
- caseWhens = columnFieldValues.map((column) => {
345
- return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${valueExpr} END) / GREATEST(sum(${value2Expr}), 1) AS ${processColumnReference(column + disambiguation, databaseType, '_', true)}`;
346
- });
346
+ if (currentAgg.valueField === currentAgg.valueField2 ||
347
+ !currentAgg.valueField2) {
348
+ caseWhens = [
349
+ ...caseWhens,
350
+ ...columnFieldValues.map((column) => {
351
+ return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${valueExpr} END) / GREATEST(sum(${value2Expr}), 1) AS ${processColumnReference(column + disambiguation, databaseType, '_', true)}`;
352
+ })
353
+ ];
347
354
  }
348
355
  else {
349
356
  value2AliasSubstring = `${processColumnReference(currentAgg.valueField2 ?? currentAgg.valueField, databaseType, undefined, true)} AS ${valueField2Alias}`;
350
- caseWhens = columnFieldValues.map((column) => {
351
- 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)}`;
352
- });
357
+ caseWhens = [
358
+ ...caseWhens,
359
+ ...columnFieldValues.map((column) => {
360
+ 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)}`;
361
+ })
362
+ ];
353
363
  }
354
364
  }
355
365
  else {
@@ -372,7 +382,7 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
372
382
  ];
373
383
  valueAliases = Array.from(new Set(valueAliases));
374
384
  const sortQuery = pivot.sort && pivot.sortField && pivot.rowLimit
375
- ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
385
+ ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
376
386
  : '';
377
387
  const pivotQuery = `
378
388
  ,quill_alias AS (
@@ -401,7 +411,10 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
401
411
  if (!isValidBaseQuery || !pivot.columnField || !pivot.rowField) {
402
412
  return undefined;
403
413
  }
404
- if (!pivot.aggregations?.[0]?.valueField && !pivot.valueField)
414
+ if (!pivot.aggregations?.[0]?.valueField &&
415
+ pivot.aggregations?.[0]?.aggregationType !== 'count' &&
416
+ !pivot.valueField &&
417
+ pivot.aggregationType !== 'count')
405
418
  throw new Error('No value field provided for pivot');
406
419
  if (!pivot.aggregations?.[0]?.aggregationType && !pivot.aggregationType)
407
420
  throw new Error('No aggregation type provided for pivot');
@@ -427,12 +440,14 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
427
440
  let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString();
428
441
  if (disambiguationIndex === '1')
429
442
  disambiguationIndex = '';
430
- const valueFieldAlias = processColumnReference((currentAgg.valueField ?? rowField), databaseType, undefined, false, true);
443
+ const valueFieldAlias = processColumnReference(currentAgg.valueField ?? rowField, databaseType, undefined, false, true);
431
444
  const valueAliasSubstring = currentAgg.valueField
432
445
  ? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
433
446
  : '';
434
447
  let value2AliasSubstring = '';
435
- const disambiguationField = Object.values(seenAggs[currentAgg.aggregationType ?? ''] ?? {}).reduce((acc, v) => acc + v) > 1 ? `_${currentAgg.valueField}${disambiguationIndex}` : '';
448
+ const disambiguationField = Object.values(seenAggs[currentAgg.aggregationType ?? ''] ?? {}).reduce((acc, v) => acc + v) > 1
449
+ ? `_${currentAgg.valueField}${disambiguationIndex}`
450
+ : '';
436
451
  const disambiguation = pivot.aggregations?.length > 1
437
452
  ? `${disambiguationField}_${disambiguationField ? matchCasing(currentAgg.aggregationType, currentAgg.valueField) : currentAgg.aggregationType}`
438
453
  : '';
@@ -449,7 +464,8 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
449
464
  ? `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`
450
465
  : valueField2Alias;
451
466
  // 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
452
- if (currentAgg.valueField === currentAgg.valueField2 || !currentAgg.valueField2) {
467
+ if (currentAgg.valueField === currentAgg.valueField2 ||
468
+ !currentAgg.valueField2) {
453
469
  caseWhens = [
454
470
  ...caseWhens,
455
471
  ...columnFieldValues.map((column) => {
@@ -487,7 +503,7 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
487
503
  ];
488
504
  valueFieldAliases = Array.from(new Set(valueFieldAliases));
489
505
  // 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
490
- const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} ` : ''}`;
506
+ const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} ` : ''}`;
491
507
  const pivotQuery = `
492
508
  , quill_alias AS (SELECT ${valueFieldAliases.length > 0 ? `${valueFieldAliases.join(', ')}` : ''} FROM quill_base_table),
493
509
  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)}),
@@ -534,7 +550,7 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
534
550
  if (disambiguationIndex === '1')
535
551
  disambiguationIndex = '';
536
552
  // This is the alias (from quill_alias CTE) for the field
537
- const valueFieldAlias = processColumnReference((currentAgg.valueField || rowField || 'count'), databaseType, undefined, false, true);
553
+ const valueFieldAlias = processColumnReference(currentAgg.valueField || rowField || 'count', databaseType, undefined, false, true);
538
554
  // In the base query, we select the raw column.
539
555
  const valueAliasSubstring = currentAgg.valueField
540
556
  ? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
@@ -557,10 +573,13 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
557
573
  if ((currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool') {
558
574
  value2Expr = `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`;
559
575
  }
560
- value2AliasSubstring = currentAgg.valueField2 && currentAgg.valueField !== currentAgg.valueField2
561
- ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
562
- : '';
563
- const percentageExpr = currentAgg.valueField === currentAgg.valueField2 || !currentAgg.valueField2
576
+ value2AliasSubstring =
577
+ currentAgg.valueField2 &&
578
+ currentAgg.valueField !== currentAgg.valueField2
579
+ ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
580
+ : '';
581
+ const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
582
+ !currentAgg.valueField2
564
583
  ? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
565
584
  : `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
566
585
  quillAggSelects = [
@@ -581,7 +600,7 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
581
600
  });
582
601
  valueFieldAliases = Array.from(new Set(valueFieldAliases));
583
602
  const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit
584
- ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
603
+ ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
585
604
  : ''}`;
586
605
  const pivotQuery = `, quill_alias AS (
587
606
  SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowAlias}${valueFieldAliases.length > 0 ? `, ${valueFieldAliases.join(', ')}` : ''}
@@ -606,7 +625,9 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
606
625
  }
607
626
  const rowField = pivot.rowField || '';
608
627
  const rowFieldAlias = processColumnReference(rowField, databaseType, undefined);
609
- let quillAggSelects = [`${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(rowField, databaseType)}`];
628
+ let quillAggSelects = [
629
+ `${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(rowField, databaseType)}`,
630
+ ];
610
631
  let valueFieldAliases = [];
611
632
  const seenAggs = {};
612
633
  pivot.aggregations?.forEach((currentAgg) => {
@@ -625,7 +646,7 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
625
646
  let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString() ?? '';
626
647
  if (disambiguationIndex === '1')
627
648
  disambiguationIndex = '';
628
- const valueFieldAlias = processColumnReference((currentAgg.valueField || rowField || 'count'), databaseType, undefined, false, true);
649
+ const valueFieldAlias = processColumnReference(currentAgg.valueField || rowField || 'count', databaseType, undefined, false, true);
629
650
  const valueAliasSubstring = currentAgg.valueField
630
651
  ? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
631
652
  : '';
@@ -643,14 +664,17 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
643
664
  throw new Error('No value field provided for percentage aggregation');
644
665
  }
645
666
  const valueField2Alias = processColumnReference(currentAgg.valueField2 ?? currentAgg.valueField, databaseType, undefined, false, true);
646
- value2AliasSubstring = currentAgg.valueField2 && currentAgg.valueField !== currentAgg.valueField2
647
- ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
648
- : '';
667
+ value2AliasSubstring =
668
+ currentAgg.valueField2 &&
669
+ currentAgg.valueField !== currentAgg.valueField2
670
+ ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
671
+ : '';
649
672
  let value2Expr = valueField2Alias;
650
673
  if ((currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool') {
651
674
  value2Expr = `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`;
652
675
  }
653
- const percentageExpr = currentAgg.valueField === currentAgg.valueField2 || !currentAgg.valueField2
676
+ const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
677
+ !currentAgg.valueField2
654
678
  ? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
655
679
  : `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
656
680
  quillAggSelects = [
@@ -671,7 +695,7 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
671
695
  });
672
696
  valueFieldAliases = Array.from(new Set(valueFieldAliases));
673
697
  // 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
674
- const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} ` : ''}`;
698
+ const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} ` : ''}`;
675
699
  const pivotQuery = `, quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueFieldAliases.length > 0 ? `, ${valueFieldAliases.join(', ')}` : ''}
676
700
  FROM quill_base_table),
677
701
  quill_qt_agg AS (SELECT ${quillAggSelects.join(', ')}
@@ -707,7 +731,7 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
707
731
  let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString() ?? '';
708
732
  if (disambiguationIndex === '1')
709
733
  disambiguationIndex = '';
710
- const valueFieldAlias = processColumnReference((currentAgg.valueField || 'count'), databaseType, undefined, false, true);
734
+ const valueFieldAlias = processColumnReference(currentAgg.valueField || 'count', databaseType, undefined, false, true);
711
735
  const valueAliasSubstring = currentAgg.valueField
712
736
  ? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
713
737
  : '';
@@ -717,9 +741,10 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
717
741
  : '';
718
742
  // If the field type is bool, wrap it in a CASE WHEN
719
743
  let valueExpr = !currentAgg.valueField ? '*' : valueFieldAlias;
720
- valueExpr = currentAgg.valueFieldType === 'bool'
721
- ? `CASE WHEN ${valueFieldAlias} THEN 1 ELSE 0 END`
722
- : valueExpr;
744
+ valueExpr =
745
+ currentAgg.valueFieldType === 'bool'
746
+ ? `CASE WHEN ${valueFieldAlias} THEN 1 ELSE 0 END`
747
+ : valueExpr;
723
748
  if (currentAgg.aggregationType === 'percentage') {
724
749
  if (!currentAgg.valueField) {
725
750
  throw new Error('No value field provided for percentage aggregation');
@@ -728,10 +753,13 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
728
753
  const value2Expr = (currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool'
729
754
  ? `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`
730
755
  : valueField2Alias;
731
- value2AliasSubstring = currentAgg.valueField2 && currentAgg.valueField !== currentAgg.valueField2
732
- ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
733
- : '';
734
- const percentageExpr = currentAgg.valueField === currentAgg.valueField2 || !currentAgg.valueField2
756
+ value2AliasSubstring =
757
+ currentAgg.valueField2 &&
758
+ currentAgg.valueField !== currentAgg.valueField2
759
+ ? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
760
+ : '';
761
+ const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
762
+ !currentAgg.valueField2
735
763
  ? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
736
764
  : `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
737
765
  quillAggSelects = [
@@ -752,7 +780,7 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
752
780
  });
753
781
  valueFieldAliases = Array.from(new Set(valueFieldAliases));
754
782
  const sortQuery = pivot.sort && pivot.sortField && pivot.rowLimit
755
- ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
783
+ ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
756
784
  : '';
757
785
  const pivotQuery = `, quill_alias AS (
758
786
  SELECT ${valueFieldAliases.join(', ')} FROM quill_base_table
@@ -782,7 +810,13 @@ export function additionalProcessingOnPivotQuery(pivot, query, additionalProcess
782
810
  }
783
811
  if (!pivot.aggregations || pivot.aggregations.length === 0) {
784
812
  if (pivot.aggregationType) {
785
- pivot.aggregations = [{ aggregationType: pivot.aggregationType, valueField: pivot.valueField, valueField2: pivot.valueField2 }];
813
+ pivot.aggregations = [
814
+ {
815
+ aggregationType: pivot.aggregationType,
816
+ valueField: pivot.valueField,
817
+ valueField2: pivot.valueField2,
818
+ },
819
+ ];
786
820
  }
787
821
  else {
788
822
  throw new Error('No aggregations provided for pivot');
@@ -806,13 +840,13 @@ export function additionalProcessingOnPivotQuery(pivot, query, additionalProcess
806
840
  ? `_${matchCasing(pivot.aggregations?.[0]?.aggregationType, pivot.aggregations?.[0]?.valueField)}`
807
841
  : '';
808
842
  if (additionalProcessing.sort) {
809
- sortQuery = `ORDER BY ${processColumnReference(additionalProcessing.sort.field, databaseType)} ${additionalProcessing.sort.direction || ''}`;
843
+ sortQuery = `ORDER BY ${processColumnReference(additionalProcessing.sort.field, databaseType, undefined, true)} ${additionalProcessing.sort.direction || ''}`;
810
844
  }
811
845
  else {
812
846
  const valueFieldAlias = processColumnReference((pivot.aggregations?.[0]?.valueField ?? '') + disambiguation, databaseType, undefined, false, true);
813
847
  const defaultSortField = pivot.sortField || pivot.rowField || valueFieldAlias;
814
848
  const defaultSortDirection = pivot.sortDirection || '';
815
- sortQuery = `ORDER BY ${processColumnReference(defaultSortField, databaseType)} ${defaultSortDirection}`;
849
+ sortQuery = `ORDER BY ${processColumnReference(defaultSortField, databaseType, undefined, true)} ${defaultSortDirection}`;
816
850
  }
817
851
  const additionalProcessingQuery = `
818
852
  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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"}