@quillsql/react 2.13.43 → 2.13.44

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 (249) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +2 -2
  3. package/dist/cjs/ChartBuilder.d.ts +1 -0
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +48 -14
  6. package/dist/cjs/ChartEditor.d.ts +1 -1
  7. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  8. package/dist/cjs/ChartEditor.js +2 -2
  9. package/dist/cjs/Context.d.ts.map +1 -1
  10. package/dist/cjs/Context.js +37 -26
  11. package/dist/cjs/Dashboard.d.ts +2 -2
  12. package/dist/cjs/Dashboard.d.ts.map +1 -1
  13. package/dist/cjs/Dashboard.js +115 -99
  14. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  15. package/dist/cjs/ReportBuilder.js +871 -1574
  16. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  17. package/dist/cjs/SQLEditor.js +23 -4
  18. package/dist/cjs/Table.d.ts.map +1 -1
  19. package/dist/cjs/components/Chart/CustomReferenceLine.js +1 -1
  20. package/dist/cjs/components/Chart/GaugeChart.js +0 -6
  21. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  22. package/dist/cjs/components/Dashboard/DashboardFilter.js +3 -3
  23. package/dist/cjs/components/Dashboard/DashboardSection.d.ts +1 -1
  24. package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +1 -1
  25. package/dist/cjs/components/Dashboard/DashboardSection.js +20 -19
  26. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  27. package/dist/cjs/components/Dashboard/MetricComponent.js +1 -0
  28. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  29. package/dist/cjs/components/Dashboard/TableComponent.js +5 -1
  30. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  31. package/dist/cjs/components/QuillMultiSelectWithCombo.js +58 -8
  32. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  33. package/dist/cjs/components/QuillSelect.js +91 -14
  34. package/dist/cjs/components/QuillSelectWithCombo.js +6 -6
  35. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +6 -16
  36. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  37. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +172 -75
  38. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +1 -5
  39. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  40. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -9
  41. package/dist/cjs/components/ReportBuilder/DraggableColumns.d.ts +17 -0
  42. package/dist/cjs/components/ReportBuilder/DraggableColumns.d.ts.map +1 -0
  43. package/dist/cjs/components/ReportBuilder/DraggableColumns.js +52 -0
  44. package/dist/cjs/components/ReportBuilder/DraggableItem.d.ts +17 -0
  45. package/dist/cjs/components/ReportBuilder/DraggableItem.d.ts.map +1 -0
  46. package/dist/cjs/components/ReportBuilder/DraggableItem.js +17 -0
  47. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +6 -12
  48. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  49. package/dist/cjs/components/ReportBuilder/FilterModal.js +29 -20
  50. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +8 -17
  51. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  52. package/dist/cjs/components/ReportBuilder/FilterStack.js +20 -86
  53. package/dist/cjs/components/ReportBuilder/convert.js +6 -6
  54. package/dist/cjs/components/ReportBuilder/ui.d.ts +8 -9
  55. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  56. package/dist/cjs/components/ReportBuilder/ui.js +30 -8
  57. package/dist/cjs/components/ReportBuilder/util.d.ts +2 -5
  58. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  59. package/dist/cjs/components/ReportBuilder/util.js +1 -1
  60. package/dist/cjs/components/UiComponents.d.ts +3 -2
  61. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  62. package/dist/cjs/components/UiComponents.js +13 -13
  63. package/dist/cjs/hooks/useAskQuill.d.ts +1 -1
  64. package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
  65. package/dist/cjs/hooks/useAskQuill.js +14 -12
  66. package/dist/cjs/hooks/useDashboard.d.ts +5 -3
  67. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  68. package/dist/cjs/hooks/useDashboard.js +8 -6
  69. package/dist/cjs/hooks/useOnClickOutside.d.ts +1 -0
  70. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
  71. package/dist/cjs/hooks/useOnClickOutside.js +33 -0
  72. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +2 -1
  73. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  74. package/dist/cjs/internals/ReportBuilder/PivotForm.js +22 -15
  75. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +7 -5
  76. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  77. package/dist/cjs/internals/ReportBuilder/PivotModal.js +100 -48
  78. package/dist/cjs/models/Client.d.ts +4 -0
  79. package/dist/cjs/models/Client.d.ts.map +1 -1
  80. package/dist/cjs/models/Dashboard.d.ts +1 -0
  81. package/dist/cjs/models/Dashboard.d.ts.map +1 -1
  82. package/dist/cjs/models/Report.d.ts +2 -0
  83. package/dist/cjs/models/Report.d.ts.map +1 -1
  84. package/dist/cjs/models/ReportBuilder.d.ts +46 -0
  85. package/dist/cjs/models/ReportBuilder.d.ts.map +1 -0
  86. package/dist/cjs/models/ReportBuilder.js +19 -0
  87. package/dist/cjs/models/Tables.d.ts +5 -5
  88. package/dist/cjs/models/Tables.d.ts.map +1 -1
  89. package/dist/cjs/utils/astFilterProcessing.d.ts +4 -0
  90. package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
  91. package/dist/cjs/utils/astFilterProcessing.js +301 -97
  92. package/dist/cjs/utils/astProcessing.d.ts +14 -4
  93. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  94. package/dist/cjs/utils/astProcessing.js +38 -4
  95. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  96. package/dist/cjs/utils/dashboard.js +18 -3
  97. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  98. package/dist/cjs/utils/dataFetcher.js +4 -3
  99. package/dist/cjs/utils/filterProcessing.d.ts +2 -11
  100. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  101. package/dist/cjs/utils/filterProcessing.js +4 -16
  102. package/dist/cjs/utils/pivotConstructor.d.ts +2 -1
  103. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  104. package/dist/cjs/utils/pivotConstructor.js +4 -2
  105. package/dist/cjs/utils/pivotProcessing.d.ts +17 -7
  106. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  107. package/dist/cjs/utils/pivotProcessing.js +60 -51
  108. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  109. package/dist/cjs/utils/queryConstructor.js +15 -2
  110. package/dist/cjs/utils/report.d.ts +12 -9
  111. package/dist/cjs/utils/report.d.ts.map +1 -1
  112. package/dist/cjs/utils/report.js +114 -47
  113. package/dist/cjs/utils/reportBuilder.d.ts +88 -0
  114. package/dist/cjs/utils/reportBuilder.d.ts.map +1 -0
  115. package/dist/cjs/utils/reportBuilder.js +395 -0
  116. package/dist/cjs/utils/schema.d.ts +7 -0
  117. package/dist/cjs/utils/schema.d.ts.map +1 -1
  118. package/dist/cjs/utils/schema.js +36 -2
  119. package/dist/cjs/utils/tableProcessing.d.ts +59 -29
  120. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  121. package/dist/cjs/utils/tableProcessing.js +75 -90
  122. package/dist/cjs/utils/ui.d.ts +2 -0
  123. package/dist/cjs/utils/ui.d.ts.map +1 -0
  124. package/dist/cjs/utils/ui.js +18 -0
  125. package/dist/esm/Chart.d.ts.map +1 -1
  126. package/dist/esm/Chart.js +2 -2
  127. package/dist/esm/ChartBuilder.d.ts +1 -0
  128. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  129. package/dist/esm/ChartBuilder.js +49 -15
  130. package/dist/esm/ChartEditor.d.ts +1 -1
  131. package/dist/esm/ChartEditor.d.ts.map +1 -1
  132. package/dist/esm/ChartEditor.js +2 -2
  133. package/dist/esm/Context.d.ts.map +1 -1
  134. package/dist/esm/Context.js +37 -26
  135. package/dist/esm/Dashboard.d.ts +2 -2
  136. package/dist/esm/Dashboard.d.ts.map +1 -1
  137. package/dist/esm/Dashboard.js +119 -103
  138. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  139. package/dist/esm/ReportBuilder.js +878 -1581
  140. package/dist/esm/SQLEditor.d.ts.map +1 -1
  141. package/dist/esm/SQLEditor.js +23 -4
  142. package/dist/esm/Table.d.ts.map +1 -1
  143. package/dist/esm/components/Chart/CustomReferenceLine.js +1 -1
  144. package/dist/esm/components/Chart/GaugeChart.js +0 -6
  145. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  146. package/dist/esm/components/Dashboard/DashboardFilter.js +3 -3
  147. package/dist/esm/components/Dashboard/DashboardSection.d.ts +1 -1
  148. package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +1 -1
  149. package/dist/esm/components/Dashboard/DashboardSection.js +21 -20
  150. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  151. package/dist/esm/components/Dashboard/MetricComponent.js +1 -0
  152. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  153. package/dist/esm/components/Dashboard/TableComponent.js +5 -1
  154. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  155. package/dist/esm/components/QuillMultiSelectWithCombo.js +57 -7
  156. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  157. package/dist/esm/components/QuillSelect.js +58 -14
  158. package/dist/esm/components/QuillSelectWithCombo.js +6 -6
  159. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +6 -16
  160. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  161. package/dist/esm/components/ReportBuilder/AddColumnModal.js +173 -76
  162. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +1 -5
  163. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  164. package/dist/esm/components/ReportBuilder/AddSortPopover.js +2 -9
  165. package/dist/esm/components/ReportBuilder/DraggableColumns.d.ts +17 -0
  166. package/dist/esm/components/ReportBuilder/DraggableColumns.d.ts.map +1 -0
  167. package/dist/esm/components/ReportBuilder/DraggableColumns.js +46 -0
  168. package/dist/esm/components/ReportBuilder/DraggableItem.d.ts +17 -0
  169. package/dist/esm/components/ReportBuilder/DraggableItem.d.ts.map +1 -0
  170. package/dist/esm/components/ReportBuilder/DraggableItem.js +14 -0
  171. package/dist/esm/components/ReportBuilder/FilterModal.d.ts +6 -12
  172. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  173. package/dist/esm/components/ReportBuilder/FilterModal.js +29 -20
  174. package/dist/esm/components/ReportBuilder/FilterStack.d.ts +8 -17
  175. package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  176. package/dist/esm/components/ReportBuilder/FilterStack.js +21 -87
  177. package/dist/esm/components/ReportBuilder/convert.js +6 -6
  178. package/dist/esm/components/ReportBuilder/ui.d.ts +8 -9
  179. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  180. package/dist/esm/components/ReportBuilder/ui.js +33 -11
  181. package/dist/esm/components/ReportBuilder/util.d.ts +2 -5
  182. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  183. package/dist/esm/components/ReportBuilder/util.js +1 -1
  184. package/dist/esm/components/UiComponents.d.ts +3 -2
  185. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  186. package/dist/esm/components/UiComponents.js +13 -13
  187. package/dist/esm/hooks/useAskQuill.d.ts +1 -1
  188. package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
  189. package/dist/esm/hooks/useAskQuill.js +14 -12
  190. package/dist/esm/hooks/useDashboard.d.ts +5 -3
  191. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  192. package/dist/esm/hooks/useDashboard.js +8 -6
  193. package/dist/esm/hooks/useOnClickOutside.d.ts +1 -0
  194. package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
  195. package/dist/esm/hooks/useOnClickOutside.js +31 -0
  196. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +2 -1
  197. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  198. package/dist/esm/internals/ReportBuilder/PivotForm.js +23 -16
  199. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +7 -5
  200. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  201. package/dist/esm/internals/ReportBuilder/PivotModal.js +101 -49
  202. package/dist/esm/models/Client.d.ts +4 -0
  203. package/dist/esm/models/Client.d.ts.map +1 -1
  204. package/dist/esm/models/Dashboard.d.ts +1 -0
  205. package/dist/esm/models/Dashboard.d.ts.map +1 -1
  206. package/dist/esm/models/Report.d.ts +2 -0
  207. package/dist/esm/models/Report.d.ts.map +1 -1
  208. package/dist/esm/models/ReportBuilder.d.ts +46 -0
  209. package/dist/esm/models/ReportBuilder.d.ts.map +1 -0
  210. package/dist/esm/models/ReportBuilder.js +16 -0
  211. package/dist/esm/models/Tables.d.ts +5 -5
  212. package/dist/esm/models/Tables.d.ts.map +1 -1
  213. package/dist/esm/utils/astFilterProcessing.d.ts +4 -0
  214. package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
  215. package/dist/esm/utils/astFilterProcessing.js +300 -97
  216. package/dist/esm/utils/astProcessing.d.ts +14 -4
  217. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  218. package/dist/esm/utils/astProcessing.js +38 -5
  219. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  220. package/dist/esm/utils/dashboard.js +18 -3
  221. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  222. package/dist/esm/utils/dataFetcher.js +4 -3
  223. package/dist/esm/utils/filterProcessing.d.ts +2 -11
  224. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  225. package/dist/esm/utils/filterProcessing.js +4 -15
  226. package/dist/esm/utils/pivotConstructor.d.ts +2 -1
  227. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  228. package/dist/esm/utils/pivotConstructor.js +4 -2
  229. package/dist/esm/utils/pivotProcessing.d.ts +17 -7
  230. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  231. package/dist/esm/utils/pivotProcessing.js +58 -49
  232. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  233. package/dist/esm/utils/queryConstructor.js +15 -2
  234. package/dist/esm/utils/report.d.ts +12 -9
  235. package/dist/esm/utils/report.d.ts.map +1 -1
  236. package/dist/esm/utils/report.js +116 -46
  237. package/dist/esm/utils/reportBuilder.d.ts +88 -0
  238. package/dist/esm/utils/reportBuilder.d.ts.map +1 -0
  239. package/dist/esm/utils/reportBuilder.js +386 -0
  240. package/dist/esm/utils/schema.d.ts +7 -0
  241. package/dist/esm/utils/schema.d.ts.map +1 -1
  242. package/dist/esm/utils/schema.js +34 -1
  243. package/dist/esm/utils/tableProcessing.d.ts +59 -29
  244. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  245. package/dist/esm/utils/tableProcessing.js +71 -86
  246. package/dist/esm/utils/ui.d.ts +2 -0
  247. package/dist/esm/utils/ui.d.ts.map +1 -0
  248. package/dist/esm/utils/ui.js +14 -0
  249. package/package.json +1 -1
@@ -3,21 +3,25 @@ import { ColumnInternal } from '../models/Columns';
3
3
  import { DashboardFilter, InternalFilter } from '../models/Filter';
4
4
  import { Pivot, PivotData } from '../models/Pivot';
5
5
  import { QuillReport, QuillReportInternal } from '../models/Report';
6
- import { DateRangesByColumn, Table, UniqueValuesByTable } from '../models/Tables';
6
+ import { DateRangesByColumn, UniqueValuesByTable, Table, UniqueValuesByColumn } from '../models/Tables';
7
7
  import { AdditionalProcessing } from './tableProcessing';
8
8
  import { CustomField } from '../models/Schema';
9
+ import { ReportBuilderColumn } from '../models/ReportBuilder';
9
10
  export type ReportBuilderInfo = {
10
11
  rows: any[];
11
12
  columns: ColumnInternal[];
13
+ reportBuilderColumns: ReportBuilderColumn[];
12
14
  rowCount: number;
13
15
  pivot: Pivot | null;
14
16
  pivotData: PivotData | null;
15
17
  formattedRows: any[];
16
18
  report: QuillReportInternal;
17
- table: string;
18
- uniqueValues: UniqueValuesByTable;
19
+ tables: string[];
20
+ uniqueStringsByTable: UniqueValuesByTable;
21
+ uniqueStringsByColumn: UniqueValuesByColumn;
19
22
  dateRanges: DateRangesByColumn;
20
23
  query: string;
24
+ pivotHint: string;
21
25
  error?: string;
22
26
  itemQuery?: string[];
23
27
  };
@@ -72,9 +76,8 @@ export declare function saveReport({ report, dashboardItemId, client, }: {
72
76
  }): Promise<any>;
73
77
  export declare const formatRowsFromReport: (report: any, xAxisField?: string, xAxisFormat?: string) => any;
74
78
  export declare function convertInternalReportToReport(report: QuillReportInternal, dashboardFilters: DashboardFilter[], initiator?: string): QuillReport;
75
- export declare const fetchReportBuilderDataFromAST: ({ baseAst, formData, schema, client, tenants, pivot, previousFormData, currentTable, previousRelevant, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName, }: {
79
+ export declare const fetchReportBuilderDataFromAST: ({ baseAst, schema, client, tenants, pivot, previousRelevant, requiresNewFilteredUniqueValues, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName, }: {
76
80
  baseAst: any;
77
- formData: any;
78
81
  schema: Table[];
79
82
  client: QuillProviderClient;
80
83
  tenants?: {
@@ -82,17 +85,17 @@ export declare const fetchReportBuilderDataFromAST: ({ baseAst, formData, schema
82
85
  tenantIds: (string | number)[];
83
86
  }[] | (string | number)[];
84
87
  pivot?: Pivot;
85
- previousFormData?: any;
86
- currentTable?: string;
87
88
  previousRelevant?: {
88
- uniqueStrings: UniqueValuesByTable;
89
+ uniqueStringsByTable: UniqueValuesByTable;
90
+ uniqueStringsByColumn: UniqueValuesByColumn;
89
91
  dateRanges: DateRangesByColumn;
90
92
  };
93
+ requiresNewFilteredUniqueValues?: boolean;
91
94
  report?: QuillReportInternal;
92
95
  customFields?: any;
93
96
  skipUniqueValues?: boolean;
94
97
  skipRowCount?: boolean;
95
98
  processing?: AdditionalProcessing;
96
- dashboardName?: string;
99
+ dashboardName: string;
97
100
  }) => Promise<ReportBuilderInfo>;
98
101
  //# sourceMappingURL=report.d.ts.map
@@ -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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"}
@@ -1,9 +1,7 @@
1
- import equal from 'fast-deep-equal';
2
1
  import { createInitialFormData } from '../ChartBuilder';
3
2
  import { getTableNames } from '../components/ReportBuilder/ast';
4
3
  import { generatePivotTable } from '../internals/ReportBuilder/PivotModal';
5
- import { InternalFilterType } from '../models/Filter';
6
- import { createBasicSelectASTFromColumns } from './astProcessing';
4
+ import { InternalFilterType, } from '../models/Filter';
7
5
  import { getYAxisFields } from './columnProcessing';
8
6
  import { cleanDashboardItem } from './dashboard';
9
7
  import { fetchSqlQuery, getData } from './dataFetcher';
@@ -12,9 +10,12 @@ import { getDateBucketFromRange } from './dates';
12
10
  import { DataLoadError } from './error';
13
11
  import { DEFAULT_PAGINATION } from './paginationProcessing';
14
12
  import { isPivotPossible, isValidPivot } from './pivotProcessing';
15
- import { fetchTableByAST, getQueryDateRangeByColumns, getRelevantInfoFromQuery, getUniqueStringValues, } from './tableProcessing';
13
+ import { fetchTableByAST, getQueryDateRangeByColumns, getRelevantInfoFromQuery, } from './tableProcessing';
16
14
  import { snakeAndCamelCaseToTitleCase } from './textProcessing';
17
15
  import { quillAutoFormat, quillFormat } from './valueFormatter';
16
+ import { getFieldFromExpression } from './astFilterProcessing';
17
+ import { isValidPivotForReport, makePivotValid, setTypesOnPivot, } from './reportBuilder';
18
+ import { createSelectStarFromAst } from './astProcessing';
18
19
  export const EMPTY_REPORT = {
19
20
  id: '',
20
21
  name: '',
@@ -42,6 +43,7 @@ function extractAllReportValuesFromQuillInternalReport(reportInternal) {
42
43
  id: reportInternal.id,
43
44
  name: reportInternal.name,
44
45
  dashboardName: reportInternal.dashboardName,
46
+ section: reportInternal.section,
45
47
  rows: reportInternal.rows,
46
48
  columns: reportInternal.columns,
47
49
  chartType: reportInternal.chartType,
@@ -63,7 +65,6 @@ function extractAllReportValuesFromQuillInternalReport(reportInternal) {
63
65
  columnsWithCustomFields: reportInternal.columnsWithCustomFields,
64
66
  };
65
67
  }
66
- // TODO: Convert this to take an object rather than a bunch of arguments
67
68
  export async function fetchReport({ reportId, client, tenants, flags, useReportTask = true, filters = [], additionalProcessing, dateBucket, customFields, rowsOnly, rowCountOnly, abortSignal, getDefaultDashboardFilters, }) {
68
69
  let reportInfo = undefined;
69
70
  let errorMessage = undefined;
@@ -344,26 +345,72 @@ export function convertInternalReportToReport(report, dashboardFilters, initiato
344
345
  return EMPTY_REPORT;
345
346
  }
346
347
  }
347
- export const fetchReportBuilderDataFromAST = async ({ baseAst, formData, schema, client, tenants, pivot, previousFormData, currentTable, previousRelevant, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName, }) => {
348
+ export const fetchReportBuilderDataFromAST = async ({ baseAst, schema, client, tenants, pivot, previousRelevant, requiresNewFilteredUniqueValues, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName, }) => {
348
349
  let newRows = [];
349
350
  let newColumns = [];
350
351
  let newRowCount = 0;
351
352
  let newPivot = null;
352
353
  let newPivotData = null;
354
+ let pivotHint = '';
353
355
  let formattedRows = [];
354
356
  let curReport = report;
355
- let table = '';
356
357
  let error;
357
- const relevantInfo = previousRelevant ?? { uniqueStrings: {}, dateRanges: {} };
358
+ const relevantInfo = previousRelevant ?? {
359
+ uniqueStringsByTable: {},
360
+ dateRanges: {},
361
+ uniqueStringsByColumn: {},
362
+ };
358
363
  let query = '';
364
+ let tables = [];
365
+ const reportBuilderColumns = [];
359
366
  try {
360
- const tables = getTableNames(baseAst);
361
- table = tables[0] ? tables[0] : '';
362
- const tableInfo = schema.find((tableInfo) => tableInfo.name === table);
363
- if (!table || !tableInfo) {
364
- throw new Error('No table found');
365
- }
366
- const tableData = await fetchTableByAST({ ...baseAst, where: formData }, client, tenants, processing ?? { page: DEFAULT_PAGINATION }, customFields, skipRowCount, undefined, dashboardName);
367
+ tables = getTableNames(baseAst);
368
+ const astColumnsByTable = {};
369
+ baseAst.columns.forEach((col) => {
370
+ if (!astColumnsByTable[col.expr?.table ?? '']) {
371
+ astColumnsByTable[col.expr?.table ?? ''] = [];
372
+ }
373
+ const field = getFieldFromExpression(col.expr ?? col);
374
+ const table = tables.length === 1 ? tables[0] : col.expr?.table;
375
+ if (field) {
376
+ astColumnsByTable[table ?? '']?.push(field);
377
+ if (table) {
378
+ reportBuilderColumns.push({ field, table, alias: col.as });
379
+ }
380
+ }
381
+ });
382
+ const columnInfo = tables.flatMap((table) => {
383
+ const tableInfo = schema.find((tableInfo) => tableInfo.name === table);
384
+ if (!tableInfo) {
385
+ return [];
386
+ }
387
+ return tableInfo.columns
388
+ .map((col) => ({ ...col, table }))
389
+ .filter((col) => {
390
+ return (astColumnsByTable[table]?.includes(col.field) ||
391
+ astColumnsByTable['']?.includes(col.field));
392
+ });
393
+ });
394
+ const aliasedColumnInfo = tables.flatMap((table) => {
395
+ const tableInfo = schema.find((tableInfo) => tableInfo.name === table);
396
+ if (!tableInfo) {
397
+ return [];
398
+ }
399
+ return tableInfo.columns
400
+ .map((col) => ({ ...col, table }))
401
+ .filter((col) => {
402
+ return (astColumnsByTable[table]?.includes(col.field) ||
403
+ astColumnsByTable['']?.includes(col.field));
404
+ })
405
+ .map((col) => {
406
+ const reportBuilderColumn = reportBuilderColumns.find((c) => c.field === col.field && c.table === col.table);
407
+ return {
408
+ ...col,
409
+ field: reportBuilderColumn?.alias ?? col.field,
410
+ };
411
+ });
412
+ });
413
+ const tableData = await fetchTableByAST(baseAst, client, tenants, processing ?? { page: DEFAULT_PAGINATION }, customFields, skipRowCount, undefined, dashboardName);
367
414
  if (tableData.error) {
368
415
  throw new Error(tableData.error);
369
416
  }
@@ -394,36 +441,56 @@ export const fetchReportBuilderDataFromAST = async ({ baseAst, formData, schema,
394
441
  referenceLines: report?.referenceLines,
395
442
  referenceLineYValues: report?.referenceLineYValues,
396
443
  };
397
- if (table !== currentTable || previousFormData !== formData) {
398
- const queryResult = await fetchSqlQuery({
399
- ...createBasicSelectASTFromColumns(tableInfo.columns, table),
400
- where: formData,
401
- }, client, formData);
402
- if (queryResult.error) {
403
- throw new Error(queryResult.error);
404
- }
405
- query = queryResult.query;
406
- if (!skipUniqueValues) {
407
- const { uniqueStrings, dateRanges } = await getRelevantInfoFromQuery(tableInfo.columns, client, tenants, queryResult.query, customFields, dashboardName);
408
- relevantInfo.uniqueStrings[table] = uniqueStrings ?? {};
409
- relevantInfo.dateRanges = dateRanges ?? {};
410
- }
411
- else {
412
- const dateColumns = tableInfo.columns.filter((column) => {
413
- return column.fieldType === 'date';
414
- });
415
- if (dateColumns.length > 0) {
416
- const dateRanges = await getQueryDateRangeByColumns(dateColumns, queryResult.query, client, tenants, customFields ?? [], dashboardName);
417
- if (dateRanges === null) {
418
- throw new Error("Couldn't fetch date ranges");
419
- }
420
- relevantInfo.dateRanges = dateRanges ?? {};
444
+ const queryResult = await fetchSqlQuery(baseAst, client);
445
+ if (queryResult.error) {
446
+ throw new Error(queryResult.error);
447
+ }
448
+ query = queryResult.query;
449
+ if (!skipUniqueValues || (pivot && requiresNewFilteredUniqueValues)) {
450
+ const starQuery = await fetchSqlQuery(createSelectStarFromAst(baseAst), client);
451
+ const { uniqueStrings, dateRanges, columnUniqueValues } = await getRelevantInfoFromQuery({
452
+ tables,
453
+ columns: columnInfo,
454
+ aliasedColumns: aliasedColumnInfo,
455
+ reportBuilderColumns,
456
+ client,
457
+ tenants,
458
+ query: queryResult.query,
459
+ queryTemplate: starQuery.query,
460
+ customFields,
461
+ dashboardName,
462
+ });
463
+ relevantInfo.uniqueStringsByTable = uniqueStrings ?? {};
464
+ relevantInfo.dateRanges = dateRanges ?? {};
465
+ relevantInfo.uniqueStringsByColumn = columnUniqueValues ?? {};
466
+ }
467
+ else {
468
+ const dateColumns = aliasedColumnInfo.filter((column) => {
469
+ return column.fieldType === 'date';
470
+ });
471
+ if (dateColumns.length > 0) {
472
+ const dateRanges = await getQueryDateRangeByColumns(dateColumns, queryResult.query, client, tenants, customFields ?? [], dashboardName);
473
+ if (dateRanges === null) {
474
+ throw new Error("Couldn't fetch date ranges");
421
475
  }
476
+ relevantInfo.dateRanges = dateRanges ?? {};
422
477
  }
423
478
  }
424
479
  if (!!relevantInfo.error) {
425
480
  throw new Error(relevantInfo.error);
426
481
  }
482
+ if (pivot &&
483
+ !isValidPivotForReport(pivot, relevantInfo.uniqueStringsByColumn, tableData.columns)) {
484
+ const { pivot: newValidPivot, hint } = makePivotValid(pivot, relevantInfo.uniqueStringsByColumn, tableData.columns);
485
+ if (newValidPivot) {
486
+ pivot = newValidPivot;
487
+ pivotHint = hint;
488
+ }
489
+ else {
490
+ pivot = undefined;
491
+ pivotHint = 'Pivot no longer valid';
492
+ }
493
+ }
427
494
  if (pivot) {
428
495
  if (isPivotPossible(tableData.columns, pivot)) {
429
496
  let dateBucket = undefined;
@@ -431,19 +498,16 @@ export const fetchReportBuilderDataFromAST = async ({ baseAst, formData, schema,
431
498
  if (rowFieldDateRange) {
432
499
  dateBucket = getDateBucketFromRange(rowFieldDateRange.dateRange);
433
500
  }
434
- if (!Object.values(relevantInfo.uniqueStrings[table] ?? {}).length ||
435
- !equal(formData, previousFormData)) {
436
- relevantInfo.uniqueStrings[table] = await getUniqueStringValues(tableInfo.columns.filter((column) => column.field === pivot?.columnField), table, client, tenants, customFields, undefined, undefined, query ? query : (report?.queryString ?? ''), report?.dashboardName);
437
- }
438
501
  newPivotData = await generatePivotTable({
439
502
  pivot,
440
503
  dateBucket,
441
504
  report: curReport,
442
505
  client,
443
- uniqueValues: relevantInfo.uniqueStrings[table],
506
+ uniqueValues: relevantInfo.uniqueStringsByColumn,
444
507
  dashboardName,
445
508
  tenants,
446
509
  additionalProcessing: processing,
510
+ caller: 'ReportBuilder',
447
511
  });
448
512
  newPivot = pivot;
449
513
  }
@@ -474,18 +538,24 @@ export const fetchReportBuilderDataFromAST = async ({ baseAst, formData, schema,
474
538
  catch (e) {
475
539
  error = e.message;
476
540
  }
541
+ if (newPivot) {
542
+ newPivot = setTypesOnPivot(newPivot, newColumns);
543
+ }
477
544
  return {
478
545
  rows: newRows,
479
546
  columns: newColumns,
547
+ reportBuilderColumns,
480
548
  rowCount: newRowCount,
481
549
  pivot: newPivot,
482
550
  pivotData: newPivotData,
483
551
  formattedRows,
484
552
  report: curReport ?? EMPTY_INTERNAL_REPORT,
485
- table,
486
- uniqueValues: relevantInfo.uniqueStrings,
553
+ tables,
554
+ uniqueStringsByTable: relevantInfo.uniqueStringsByTable,
555
+ uniqueStringsByColumn: relevantInfo.uniqueStringsByColumn,
487
556
  dateRanges: relevantInfo.dateRanges,
488
557
  query,
558
+ pivotHint,
489
559
  error: error,
490
560
  itemQuery: curReport?.itemQuery,
491
561
  };
@@ -0,0 +1,88 @@
1
+ import { Column, ColumnInternal } from '../models/Columns';
2
+ import { Pivot } from '../models/Pivot';
3
+ import { ReportBuilderState } from '../models/ReportBuilder';
4
+ import { Table, UniqueValuesByColumn } from '../models/Tables';
5
+ export declare const reportBuilderStateToAst: (reportBuilderState: ReportBuilderState, databaseType: string) => {
6
+ from: {
7
+ db: null;
8
+ table: string;
9
+ as: string | null;
10
+ join: import("../models/ReportBuilder").JoinType | null;
11
+ on: {
12
+ type: string;
13
+ operator: string;
14
+ left: {
15
+ type: string;
16
+ table: string;
17
+ column: string;
18
+ };
19
+ right: {
20
+ type: string;
21
+ table: string;
22
+ column: string;
23
+ };
24
+ } | null;
25
+ }[];
26
+ columns: {
27
+ expr: {
28
+ type: string;
29
+ table: string;
30
+ column: string;
31
+ };
32
+ as: string | null;
33
+ }[] | null;
34
+ where: any;
35
+ orderby: {
36
+ expr: {
37
+ type: string;
38
+ table: null;
39
+ column: string;
40
+ };
41
+ type: import("../models/ReportBuilder").SortDirection;
42
+ }[] | null;
43
+ limit: {
44
+ value: number;
45
+ percent: null;
46
+ seperator?: undefined;
47
+ } | {
48
+ seperator: string;
49
+ value: {
50
+ type: string;
51
+ value: number;
52
+ }[];
53
+ percent?: undefined;
54
+ } | null;
55
+ top: {
56
+ value: number;
57
+ percent: null;
58
+ seperator?: undefined;
59
+ } | {
60
+ seperator: string;
61
+ value: {
62
+ type: string;
63
+ value: number;
64
+ }[];
65
+ percent?: undefined;
66
+ } | null;
67
+ with: null;
68
+ type: string;
69
+ options: null;
70
+ distinct: {
71
+ type: null;
72
+ };
73
+ into: {
74
+ position: null;
75
+ };
76
+ groupby: null;
77
+ having: null;
78
+ window: null;
79
+ };
80
+ export declare const astToReportBuilderState: (ast: any, databaseType: string, schema: Table[]) => ReportBuilderState;
81
+ export declare const isValidPivotForReport: (pivot: Pivot, uniqueValuesByColumn: UniqueValuesByColumn, reportColumns: ColumnInternal[]) => boolean;
82
+ export declare const makePivotValid: (pivot: Pivot, uniqueValuesForPivot: UniqueValuesByColumn, reportColumns: ColumnInternal[]) => {
83
+ pivot: Pivot | null;
84
+ hint: string;
85
+ };
86
+ export declare const formatRows: (rows: any[], columns: Column[], pivot?: boolean, aggregationType?: string, dateBucket?: string) => any;
87
+ export declare const setTypesOnPivot: (newPivot: Pivot, searchColumns: ColumnInternal[]) => Pivot;
88
+ //# sourceMappingURL=reportBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reportBuilder.d.ts","sourceRoot":"","sources":["../../../src/utils/reportBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAEL,kBAAkB,EAKnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAmC/D,eAAO,MAAM,uBAAuB,uBACd,kBAAkB,gBACxB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBrB,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAC7B,GAAG,gBACM,MAAM,UACZ,KAAK,EAAE,KACd,kBAuBF,CAAC;AAwOF,eAAO,MAAM,qBAAqB,UACzB,KAAK,wBACU,oBAAoB,iBAC3B,cAAc,EAAE,YAuChC,CAAC;AAEF,eAAO,MAAM,cAAc,UAClB,KAAK,wBACU,oBAAoB,iBAC3B,cAAc,EAAE,KAC9B;IAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAgCrC,CAAC;AAEF,eAAO,MAAM,UAAU,SACf,GAAG,EAAE,WACF,MAAM,EAAE,UACT,OAAO,oBACG,MAAM,eACX,MAAM,QA6CpB,CAAC;AAEF,eAAO,MAAM,eAAe,aAChB,KAAK,iBACA,cAAc,EAAE,KAoBzB,KAAK,CAAC"}