@quillsql/react 2.11.16 → 2.11.17

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 (203) hide show
  1. package/dist/cjs/Chart.d.ts +117 -42
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +44 -18
  4. package/dist/cjs/ChartBuilder.d.ts +194 -30
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +122 -62
  7. package/dist/cjs/ChartEditor.d.ts +114 -18
  8. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  9. package/dist/cjs/ChartEditor.js +47 -15
  10. package/dist/cjs/Dashboard.d.ts +148 -91
  11. package/dist/cjs/Dashboard.d.ts.map +1 -1
  12. package/dist/cjs/Dashboard.js +46 -152
  13. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
  14. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  15. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +5 -2
  16. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -1
  17. package/dist/cjs/QuillProvider.d.ts +105 -2
  18. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  19. package/dist/cjs/QuillProvider.js +59 -0
  20. package/dist/cjs/ReportBuilder.d.ts +188 -42
  21. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  22. package/dist/cjs/ReportBuilder.js +466 -394
  23. package/dist/cjs/SQLEditor.d.ts +158 -23
  24. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  25. package/dist/cjs/SQLEditor.js +35 -30
  26. package/dist/cjs/Table.d.ts +119 -15
  27. package/dist/cjs/Table.d.ts.map +1 -1
  28. package/dist/cjs/Table.js +37 -6
  29. package/dist/cjs/TableChart.d.ts.map +1 -1
  30. package/dist/cjs/TableChart.js +0 -194
  31. package/dist/cjs/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
  32. package/dist/cjs/components/Chart/BarList.d.ts.map +1 -0
  33. package/dist/cjs/{BarList.js → components/Chart/BarList.js} +1 -1
  34. package/dist/cjs/components/Chart/LineChart.d.ts +2 -3
  35. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  36. package/dist/cjs/components/Chart/LineChart.js +3 -3
  37. package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -0
  38. package/dist/cjs/{PieChart.js → components/Chart/PieChart.js} +1 -1
  39. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +2 -1
  40. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
  41. package/dist/cjs/components/Dashboard/ChartComponent.js +6 -7
  42. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +22 -0
  43. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -0
  44. package/dist/cjs/components/Dashboard/DashboardFilter.js +75 -0
  45. package/dist/cjs/components/Dashboard/DataLoader.d.ts +1 -1
  46. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  47. package/dist/cjs/components/Dashboard/DataLoader.js +1 -1
  48. package/dist/cjs/components/Dashboard/MetricComponent.d.ts +2 -12
  49. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  50. package/dist/cjs/components/Dashboard/MetricComponent.js +39 -17
  51. package/dist/cjs/components/Dashboard/TableComponent.d.ts +2 -1
  52. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  53. package/dist/cjs/components/Dashboard/TableComponent.js +6 -9
  54. package/dist/cjs/components/QuillSelect.d.ts +4 -1
  55. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  56. package/dist/cjs/components/QuillSelect.js +13 -8
  57. package/dist/cjs/components/QuillTable.d.ts +16 -2
  58. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  59. package/dist/cjs/components/QuillTable.js +4 -4
  60. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts +9 -3
  61. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  62. package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +8 -6
  63. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +13 -1
  64. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  65. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +4 -14
  66. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +21 -1
  67. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  68. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +15 -17
  69. package/dist/cjs/components/ReportBuilder/bigDateMap.js +1 -1
  70. package/dist/cjs/components/ReportBuilder/convert.d.ts +2 -1
  71. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  72. package/dist/cjs/components/ReportBuilder/convert.js +40 -20
  73. package/dist/cjs/components/ReportBuilder/pivot.d.ts +2 -1
  74. package/dist/cjs/components/ReportBuilder/pivot.d.ts.map +1 -1
  75. package/dist/cjs/components/ReportBuilder/ui.d.ts +83 -18
  76. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  77. package/dist/cjs/components/ReportBuilder/ui.js +52 -100
  78. package/dist/cjs/components/ReportBuilder/util.d.ts +2 -1
  79. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  80. package/dist/cjs/components/ReportBuilder/util.js +16 -9
  81. package/dist/cjs/components/UiComponents.d.ts +86 -86
  82. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  83. package/dist/cjs/components/UiComponents.js +118 -103
  84. package/dist/cjs/hooks/index.d.ts +1 -0
  85. package/dist/cjs/hooks/index.d.ts.map +1 -1
  86. package/dist/cjs/hooks/index.js +3 -1
  87. package/dist/cjs/hooks/useTheme.d.ts +7 -0
  88. package/dist/cjs/hooks/useTheme.d.ts.map +1 -0
  89. package/dist/cjs/hooks/useTheme.js +12 -0
  90. package/dist/cjs/index.d.ts +10 -2
  91. package/dist/cjs/index.d.ts.map +1 -1
  92. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  93. package/dist/cjs/internals/ReportBuilder/PivotList.js +10 -10
  94. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +29 -14
  95. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  96. package/dist/cjs/internals/ReportBuilder/PivotModal.js +73 -49
  97. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  98. package/dist/cjs/utils/dataFetcher.js +2 -0
  99. package/dist/esm/Chart.d.ts +117 -42
  100. package/dist/esm/Chart.d.ts.map +1 -1
  101. package/dist/esm/Chart.js +45 -19
  102. package/dist/esm/ChartBuilder.d.ts +194 -30
  103. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  104. package/dist/esm/ChartBuilder.js +122 -62
  105. package/dist/esm/ChartEditor.d.ts +114 -18
  106. package/dist/esm/ChartEditor.d.ts.map +1 -1
  107. package/dist/esm/ChartEditor.js +51 -19
  108. package/dist/esm/Dashboard.d.ts +148 -91
  109. package/dist/esm/Dashboard.d.ts.map +1 -1
  110. package/dist/esm/Dashboard.js +49 -153
  111. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
  112. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  113. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +6 -3
  114. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
  115. package/dist/esm/QuillProvider.d.ts +105 -2
  116. package/dist/esm/QuillProvider.d.ts.map +1 -1
  117. package/dist/esm/QuillProvider.js +59 -0
  118. package/dist/esm/ReportBuilder.d.ts +188 -42
  119. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  120. package/dist/esm/ReportBuilder.js +468 -396
  121. package/dist/esm/SQLEditor.d.ts +158 -23
  122. package/dist/esm/SQLEditor.d.ts.map +1 -1
  123. package/dist/esm/SQLEditor.js +35 -30
  124. package/dist/esm/Table.d.ts +119 -15
  125. package/dist/esm/Table.d.ts.map +1 -1
  126. package/dist/esm/Table.js +38 -7
  127. package/dist/esm/TableChart.d.ts.map +1 -1
  128. package/dist/esm/TableChart.js +0 -194
  129. package/dist/esm/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
  130. package/dist/esm/components/Chart/BarList.d.ts.map +1 -0
  131. package/dist/esm/{BarList.js → components/Chart/BarList.js} +1 -1
  132. package/dist/esm/components/Chart/LineChart.d.ts +2 -3
  133. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  134. package/dist/esm/components/Chart/LineChart.js +3 -3
  135. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -0
  136. package/dist/esm/{PieChart.js → components/Chart/PieChart.js} +1 -1
  137. package/dist/esm/components/Dashboard/ChartComponent.d.ts +2 -1
  138. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  139. package/dist/esm/components/Dashboard/ChartComponent.js +5 -6
  140. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +22 -0
  141. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -0
  142. package/dist/esm/components/Dashboard/DashboardFilter.js +71 -0
  143. package/dist/esm/components/Dashboard/DataLoader.d.ts +1 -1
  144. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  145. package/dist/esm/components/Dashboard/DataLoader.js +1 -1
  146. package/dist/esm/components/Dashboard/MetricComponent.d.ts +2 -12
  147. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  148. package/dist/esm/components/Dashboard/MetricComponent.js +39 -17
  149. package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -1
  150. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  151. package/dist/esm/components/Dashboard/TableComponent.js +6 -9
  152. package/dist/esm/components/QuillSelect.d.ts +4 -1
  153. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  154. package/dist/esm/components/QuillSelect.js +14 -9
  155. package/dist/esm/components/QuillTable.d.ts +16 -2
  156. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  157. package/dist/esm/components/QuillTable.js +4 -4
  158. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts +9 -3
  159. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  160. package/dist/esm/components/ReportBuilder/AddColumnPopover.js +8 -6
  161. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +13 -1
  162. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  163. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +4 -14
  164. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +21 -1
  165. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  166. package/dist/esm/components/ReportBuilder/AddSortPopover.js +17 -19
  167. package/dist/esm/components/ReportBuilder/bigDateMap.js +1 -1
  168. package/dist/esm/components/ReportBuilder/convert.d.ts +2 -1
  169. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  170. package/dist/esm/components/ReportBuilder/convert.js +33 -13
  171. package/dist/esm/components/ReportBuilder/pivot.d.ts +2 -1
  172. package/dist/esm/components/ReportBuilder/pivot.d.ts.map +1 -1
  173. package/dist/esm/components/ReportBuilder/ui.d.ts +83 -18
  174. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  175. package/dist/esm/components/ReportBuilder/ui.js +50 -98
  176. package/dist/esm/components/ReportBuilder/util.d.ts +2 -1
  177. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  178. package/dist/esm/components/ReportBuilder/util.js +14 -8
  179. package/dist/esm/components/UiComponents.d.ts +86 -86
  180. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  181. package/dist/esm/components/UiComponents.js +111 -101
  182. package/dist/esm/hooks/index.d.ts +1 -0
  183. package/dist/esm/hooks/index.d.ts.map +1 -1
  184. package/dist/esm/hooks/index.js +1 -0
  185. package/dist/esm/hooks/useTheme.d.ts +7 -0
  186. package/dist/esm/hooks/useTheme.d.ts.map +1 -0
  187. package/dist/esm/hooks/useTheme.js +10 -0
  188. package/dist/esm/index.d.ts +10 -2
  189. package/dist/esm/index.d.ts.map +1 -1
  190. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  191. package/dist/esm/internals/ReportBuilder/PivotList.js +10 -10
  192. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +29 -14
  193. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  194. package/dist/esm/internals/ReportBuilder/PivotModal.js +73 -49
  195. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  196. package/dist/esm/utils/dataFetcher.js +2 -0
  197. package/package.json +1 -1
  198. package/dist/cjs/BarList.d.ts.map +0 -1
  199. package/dist/cjs/PieChart.d.ts.map +0 -1
  200. package/dist/esm/BarList.d.ts.map +0 -1
  201. package/dist/esm/PieChart.d.ts.map +0 -1
  202. /package/dist/cjs/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
  203. /package/dist/esm/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { extractColumnish, isSelect, isLogicalBinaryExpr, isBigQuery, isNumericColumnType, } from './ast';
2
- import { generateColumnExpr, isColumnDateish } from './util';
2
+ import { generateColumnExpr, isColumnDateish, isIdColumn } from './util';
3
3
  // Helper functions that preprocess the AST.
4
4
  // Find and replace certain pre-set date comparison queries with their
5
5
  // more stable counterparts.
@@ -175,6 +175,9 @@ export function convertGroupBy(ast, prevPivot = null, schemaTables) {
175
175
  }
176
176
  if (column.expr.type === 'aggr_func' && !isIdColumn(columnName)) {
177
177
  pivot.aggregationType = column.expr.name.toLowerCase();
178
+ if (pivot.aggregationType === 'avg') {
179
+ pivot.aggregationType = 'average';
180
+ }
178
181
  pivot.valueField =
179
182
  column.expr.args?.expr?.value || column.expr.args?.expr?.column;
180
183
  if (column.expr.args.expr.type === 'column_ref') {
@@ -190,15 +193,23 @@ export function convertGroupBy(ast, prevPivot = null, schemaTables) {
190
193
  }
191
194
  }
192
195
  if (columnName === '*') {
193
- // TODO: make valueField be a number
196
+ // Use the first numeric column found, if none found, use the first column
197
+ let columnForValueField = columns.find((c) => {
198
+ return isNumericColumnType(c.fieldType) && !isIdColumn(c.field);
199
+ });
200
+ if (!columnForValueField) {
201
+ columnForValueField = columns[0];
202
+ }
194
203
  for (let i = 0; i < columns.length; i++) {
195
204
  if (!isIdColumn(columns[i]?.field) &&
196
205
  isNumericColumnType(columns[i]?.fieldType)) {
197
- pivot.valueField = columns[i].field;
198
- columnName = columns[i].field;
206
+ columnForValueField = columns[i];
199
207
  break;
200
208
  }
201
209
  }
210
+ pivot.valueField = columnForValueField.field;
211
+ pivot.valueFieldType = 'number';
212
+ columnName = columnForValueField.field;
202
213
  }
203
214
  newColumns.push({
204
215
  type: 'expr',
@@ -230,6 +241,9 @@ export function convertGroupBy(ast, prevPivot = null, schemaTables) {
230
241
  if (!isIdColumn(columnName)) {
231
242
  pivot.valueField = columnName;
232
243
  pivot.aggregationType = column?.expr?.name?.toLowerCase();
244
+ if (pivot.aggregationType === 'avg') {
245
+ pivot.aggregationType = 'average';
246
+ }
233
247
  }
234
248
  const findByName = (x) => [x.expr?.value, x.expr?.column].includes(columnName);
235
249
  if (!newColumns.find(findByName)) {
@@ -276,19 +290,27 @@ export function convertGroupBy(ast, prevPivot = null, schemaTables) {
276
290
  const columnName = columnNode?.value || columnNode?.column;
277
291
  // if count(*), make the value field an actual column
278
292
  if (columnName === '*') {
279
- const numericColumn = columns.find((c) => {
293
+ let columnForValueField = columns.find((c) => {
280
294
  return isNumericColumnType(c.fieldType) && !isIdColumn(c.field);
281
295
  });
282
- pivot.valueField = numericColumn?.field;
296
+ // if there aren't any numeric columns use the first column
297
+ if (!column) {
298
+ columnForValueField = columns[0];
299
+ }
300
+ pivot.valueField = columnForValueField?.field;
301
+ pivot.valueFieldType = 'number';
283
302
  pivot.aggregationType = column?.expr?.name.toLowerCase();
284
- const findByName = (x) => [x.expr?.value, x.expr?.column].includes(numericColumn.field);
303
+ if (pivot.aggregationType === 'avg') {
304
+ pivot.aggregationType = 'average';
305
+ }
306
+ const findByName = (x) => [x.expr?.value, x.expr?.column].includes(columnForValueField.field);
285
307
  if (!newColumns.find(findByName)) {
286
308
  newColumns.push({
287
309
  type: 'expr',
288
310
  expr: {
289
311
  type: 'column_ref',
290
312
  table: null,
291
- column: numericColumn?.field || '',
313
+ column: columnForValueField?.field || '',
292
314
  },
293
315
  as: null,
294
316
  });
@@ -300,6 +322,9 @@ export function convertGroupBy(ast, prevPivot = null, schemaTables) {
300
322
  !isIdColumn(columnName)) {
301
323
  pivot.valueField = columnName;
302
324
  pivot.aggregationType = column?.expr?.name.toLowerCase();
325
+ if (pivot.aggregationType === 'avg') {
326
+ pivot.aggregationType = 'average';
327
+ }
303
328
  }
304
329
  const findByName = (x) => [x.expr?.value, x.expr?.column].includes(columnName);
305
330
  if (!newColumns.find(findByName)) {
@@ -771,8 +796,3 @@ export function convertRemoveSimpleParentheses(ast) {
771
796
  }
772
797
  return { ...ast, where: node };
773
798
  }
774
- function isIdColumn(columnName) {
775
- return (columnName &&
776
- (columnName.toLowerCase() === 'id' ||
777
- columnName.toLowerCase().endsWith('_id')));
778
- }
@@ -2,8 +2,9 @@
2
2
  * Represents the metadata of a pivot table.
3
3
  */
4
4
  export type Pivot = {
5
- aggregationType: 'sum' | 'average' | 'min' | 'max' | 'count';
5
+ aggregationType: 'sum' | 'average' | 'min' | 'max' | 'count' | 'avg';
6
6
  valueField: string;
7
+ valueFieldType?: string;
7
8
  rowField?: string;
8
9
  rowFieldType?: string;
9
10
  columnField?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"pivot.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/pivot.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,eAAe,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,KAAK,GAAG,MAAM,CAAC;CAC/B,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"pivot.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/pivot.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,eAAe,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,KAAK,GAAG,MAAM,CAAC;CAC/B,GAAG,IAAI,CAAC"}
@@ -1,4 +1,5 @@
1
- /// <reference types="react" />
1
+ import { ReactNode } from 'react';
2
+ import { SidebarComponentProps, ContainerComponentProps } from '../UiComponents';
2
3
  /**
3
4
  * This file is a collection of basic UI components that conform to the shape
4
5
  * expected by the Report Builder. Where possible, we use our existing
@@ -9,26 +10,90 @@ export declare const QuillButton: ({ children, ...props }: any) => import("react
9
10
  export declare const QuillSecondaryButton: ({ children, ...props }: any) => import("react/jsx-runtime").JSX.Element;
10
11
  export declare const QuillReportBuilderTable: ({ rows, columns, error, ...props }: any) => import("react/jsx-runtime").JSX.Element;
11
12
  export declare const QuillTag: import("react").ForwardRefExoticComponent<Omit<any, "ref"> & import("react").RefAttributes<unknown>>;
12
- export declare const QuillSidebarHeading: ({ label }: any) => import("react/jsx-runtime").JSX.Element;
13
- export declare const QuillSidebarSubHeading: ({ label }: any) => import("react/jsx-runtime").JSX.Element;
14
- export declare const QuillSidebar: import("react").ForwardRefExoticComponent<Omit<any, "ref"> & import("react").RefAttributes<unknown>>;
15
- export declare const CustomContainer: import("react").ForwardRefExoticComponent<Omit<any, "ref"> & import("react").RefAttributes<unknown>>;
16
- export declare const QuillSelect: ({ onChange, ...props }: any) => import("react/jsx-runtime").JSX.Element;
17
- export declare function MemoizedPopover({ onClose, children, style, trigger, isOpen, }: any): import("react/jsx-runtime").JSX.Element;
18
- export declare const QuillPopover: import("react").ForwardRefExoticComponent<Omit<any, "ref"> & import("react").RefAttributes<unknown>>;
13
+ export interface SidebarHeadingComponentProps {
14
+ label: string;
15
+ }
16
+ export declare const QuillSidebarHeading: ({ label, }: SidebarHeadingComponentProps) => import("react/jsx-runtime").JSX.Element;
17
+ export declare const QuillSidebar: ({ children }: SidebarComponentProps) => import("react/jsx-runtime").JSX.Element;
18
+ export declare const CustomContainer: ({ children }: ContainerComponentProps) => import("react/jsx-runtime").JSX.Element;
19
19
  export declare const QuillHandleButton: () => import("react/jsx-runtime").JSX.Element;
20
- export declare const QuillSelectColumn: ({ label, selected, setSelected, children, }: any) => import("react/jsx-runtime").JSX.Element;
21
- export declare const QuillDraggableColumn: ({ label, children, onDelete }: any) => import("react/jsx-runtime").JSX.Element;
20
+ export interface SelectColumnComponentProps {
21
+ label: string;
22
+ isSelected: boolean;
23
+ setSelected: () => void;
24
+ DragHandle: ({ dragIcon }: {
25
+ dragIcon: () => JSX.Element;
26
+ }) => JSX.Element;
27
+ }
28
+ export declare const QuillSelectColumn: ({ label, isSelected, setSelected, DragHandle, }: SelectColumnComponentProps) => import("react/jsx-runtime").JSX.Element;
29
+ /**
30
+ * Props for a draggable card with a grab-handle and a column name.
31
+ */
32
+ export interface DraggableColumnComponentProps {
33
+ label: string;
34
+ onDelete: () => void;
35
+ DragHandle: ({ dragIcon }: {
36
+ dragIcon: () => JSX.Element;
37
+ }) => JSX.Element;
38
+ }
39
+ /**
40
+ * A draggable card with a grab-handle and a column name
41
+ */
42
+ export declare const QuillDraggableColumn: ({ label, onDelete, DragHandle, }: DraggableColumnComponentProps) => import("react/jsx-runtime").JSX.Element;
22
43
  export declare const QuillButtonLoadingState: () => import("react/jsx-runtime").JSX.Element;
23
44
  export declare const QuillTableLoadingState: () => import("react/jsx-runtime").JSX.Element;
24
- export declare const DEFAULT_TAB_OPTIONS: {
25
- label: string;
26
- value: string;
27
- }[];
28
- export declare const QuillTabs: import("react").ForwardRefExoticComponent<Omit<any, "ref"> & import("react").RefAttributes<unknown>>;
29
45
  export declare const EditPopover: ({ onSave, onDelete, Button, renderNode, activeEditItem, }: any) => import("react/jsx-runtime").JSX.Element;
30
- export declare const QuillFilterPopover: ({ filterLabel, onClickDeleteFilter, popoverTitle, popoverChildren, isOpen, setIsOpen, }: any) => import("react/jsx-runtime").JSX.Element;
31
- export declare const QuillSortPopover: ({ filterLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }: any) => import("react/jsx-runtime").JSX.Element;
32
- export declare const TagWrapper: ({ isCard, isRow, editPopoverKey, keyPrefix, formData, activeEditItem, setEditPopoverKey, setActiveEditItem, setActivePath, setOpenPopover, setIsPending, clearCheckboxes, fetchSqlQuery, handleDelete, setCheckboxes, handleReplaceSubtree, FilterPopover, getByKey, EditPopover, Button, renderNode, children, }: any) => import("react/jsx-runtime").JSX.Element;
46
+ export interface FilterPopoverComponentProps {
47
+ isOpen: boolean;
48
+ setIsOpen: (isOpen: boolean) => void;
49
+ popoverTitle?: string;
50
+ popoverChildren: ReactNode;
51
+ filterLabel: string;
52
+ onClickDelete: (e: React.MouseEvent<HTMLElement>) => void;
53
+ }
54
+ export declare const QuillFilterPopover: ({ filterLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }: FilterPopoverComponentProps) => import("react/jsx-runtime").JSX.Element;
55
+ export interface SortPopoverComponentProps {
56
+ isOpen: boolean;
57
+ setIsOpen: (isOpen: boolean) => void;
58
+ popoverTitle?: string;
59
+ popoverChildren: ReactNode;
60
+ sortLabel: string;
61
+ onClickDelete: (e: React.MouseEvent<HTMLElement>) => void;
62
+ }
63
+ export declare const QuillSortPopover: ({ sortLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }: SortPopoverComponentProps) => import("react/jsx-runtime").JSX.Element;
64
+ export interface LimitPopoverComponentProps {
65
+ isOpen: boolean;
66
+ setIsOpen: (isOpen: boolean) => void;
67
+ popoverTitle?: string;
68
+ popoverChildren: ReactNode;
69
+ limitLabel: string;
70
+ onClickDelete: (e: React.MouseEvent<HTMLElement>) => void;
71
+ }
72
+ export declare const QuillLimitPopover: ({ limitLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }: LimitPopoverComponentProps) => import("react/jsx-runtime").JSX.Element;
73
+ export interface TagWrapperProps {
74
+ isCard: boolean;
75
+ isRow: boolean;
76
+ editPopoverKey: string;
77
+ keyPrefix: string;
78
+ formData: any;
79
+ activeEditItem: any;
80
+ setEditPopoverKey: any;
81
+ setActiveEditItem: any;
82
+ setActivePath: any;
83
+ setOpenPopover: any;
84
+ setIsPending: any;
85
+ clearCheckboxes: any;
86
+ fetchSqlQuery: any;
87
+ handleDelete: any;
88
+ setCheckboxes: any;
89
+ handleReplaceSubtree: any;
90
+ FilterPopover: (props: FilterPopoverComponentProps) => JSX.Element;
91
+ getByKey: any;
92
+ EditPopover: any;
93
+ Button: any;
94
+ renderNode: any;
95
+ children: any;
96
+ }
97
+ export declare const TagWrapper: ({ isCard, isRow, editPopoverKey, keyPrefix, formData, activeEditItem, setEditPopoverKey, setActiveEditItem, setActivePath, setOpenPopover, setIsPending, clearCheckboxes, fetchSqlQuery, handleDelete, setCheckboxes, handleReplaceSubtree, FilterPopover, getByKey, EditPopover, Button, renderNode, children, }: TagWrapperProps) => import("react/jsx-runtime").JSX.Element;
33
98
  export declare const AddFilterPopover: ({ onSave, Button, renderNode, activeEditItem, }: any) => import("react/jsx-runtime").JSX.Element;
34
99
  //# sourceMappingURL=ui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/ui.tsx"],"names":[],"mappings":";AAiBA;;;;;GAKG;AAEH,eAAO,MAAM,WAAW,2BAA4B,GAAG,4CA2BtD,CAAC;AAEF,eAAO,MAAM,oBAAoB,2BAA4B,GAAG,4CA2B/D,CAAC;AAEF,eAAO,MAAM,uBAAuB,uCAKjC,GAAG,4CAiBL,CAAC;AAEF,eAAO,MAAM,QAAQ,sGAoFpB,CAAC;AAGF,eAAO,MAAM,mBAAmB,cAAe,GAAG,4CAEjD,CAAC;AAGF,eAAO,MAAM,sBAAsB,cAAe,GAAG,4CAEpD,CAAC;AAGF,eAAO,MAAM,YAAY,sGAiBxB,CAAC;AAGF,eAAO,MAAM,eAAe,sGAuB3B,CAAC;AAEF,eAAO,MAAM,WAAW,2BAA4B,GAAG,4CAUtD,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,QAAQ,EACR,KAAU,EACV,OAAO,EACP,MAAM,GACP,EAAE,GAAG,2CAgDL;AAED,eAAO,MAAM,YAAY,sGAkCxB,CAAC;AAGF,eAAO,MAAM,iBAAiB,+CAwE7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,gDAK3B,GAAG,4CA6CL,CAAC;AAGF,eAAO,MAAM,oBAAoB,kCAAmC,GAAG,4CAiDtE,CAAC;AAGF,eAAO,MAAM,uBAAuB,+CAMnC,CAAC;AAGF,eAAO,MAAM,sBAAsB,+CAMlC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;GAG/B,CAAC;AAEF,eAAO,MAAM,SAAS,sGAIrB,CAAC;AAEF,eAAO,MAAM,WAAW,8DAMrB,GAAG,4CA+BL,CAAC;AAEF,eAAO,MAAM,kBAAkB,4FAO5B,GAAG,4CAqBL,CAAC;AAEF,eAAO,MAAM,gBAAgB,sFAO1B,GAAG,4CAqBL,CAAC;AAEF,eAAO,MAAM,UAAU,sTAuBpB,GAAG,4CAqFL,CAAC;AAEF,eAAO,MAAM,gBAAgB,oDAK1B,GAAG,4CAsBL,CAAC"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/ui.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { forwardRef, useContext, useEffect, useRef, useState } from 'react';
3
- import { MemoizedSelect, MemoizedCheckbox, MemoizedHeader, MemoizedLabel, MemoizedTabs, LoadingSpinner, MemoizedSecondaryButton, } from '../UiComponents';
2
+ import { forwardRef, useContext, useEffect, useState } from 'react';
3
+ import { MemoizedCheckbox, MemoizedHeader, LoadingSpinner, MemoizedSecondaryButton, MemoizedPopover, } from '../UiComponents';
4
4
  import MemoizedQuillTable from '../QuillTable';
5
5
  import { ThemeContext } from '../../Context';
6
6
  import { isNodeEmptyCollection, allNumericNodesValidInTree } from './util';
@@ -52,6 +52,7 @@ export const QuillSecondaryButton = ({ children, ...props }) => {
52
52
  ...props.style,
53
53
  }, children: children }));
54
54
  };
55
+ // TODO: remove this, I think it is unused.
55
56
  export const QuillReportBuilderTable = ({ rows, columns, error, ...props }) => {
56
57
  const reformattedColumns = columns.map((c) => ({ label: c, field: c }));
57
58
  return (_jsx("div", { style: { height: '100%', overflow: 'auto' }, children: _jsx(MemoizedQuillTable, { rows: rows, columns: reformattedColumns, rowsPerPage: 10, showDownloadCSVButton: rows?.length > 0, downloadCSV: () => downloadCSV({ rows, fields: reformattedColumns, name: 'my_report' }), emptyStateLabel: error || 'No results', ...props }) }));
@@ -96,20 +97,18 @@ export const QuillTag = forwardRef(({ label, onClick, children, onClickDelete, h
96
97
  }, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: theme?.secondaryButtonColor || 'currentColor', style: { width: 16, height: 16 }, children: _jsx("path", { d: "M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z" }) }) }) }))] }));
97
98
  });
98
99
  // A heading element in the sidebar (eg. "Filters")
99
- export const QuillSidebarHeading = ({ label }) => (_jsx(MemoizedHeader, { children: label }));
100
- // A sub-heading element in the sidebar (eg. "Filters")
101
- export const QuillSidebarSubHeading = ({ label }) => (_jsx(MemoizedLabel, { children: label }));
100
+ export const QuillSidebarHeading = ({ label, }) => _jsx(MemoizedHeader, { label: label });
102
101
  // The gray thing on the left.
103
- export const QuillSidebar = forwardRef(({ children, ...props }, forwardedRef) => (_jsx("div", { style: {
102
+ export const QuillSidebar = ({ children }) => (_jsx("div", { style: {
104
103
  overflowX: 'visible',
105
104
  padding: '12px',
106
105
  width: '25%',
107
106
  height: '100%',
108
107
  maxWidth: '300px',
109
108
  boxSizing: 'border-box',
110
- }, ref: forwardedRef, ...props, children: children })));
109
+ }, children: children }));
111
110
  // A big wrapper around the main content (ie. Input, Button, and Table)
112
- export const CustomContainer = forwardRef(({ children, ...props }, forwardedRef) => (_jsx("div", { style: {
111
+ export const CustomContainer = ({ children }) => (_jsx("div", { style: {
113
112
  position: 'sticky',
114
113
  top: 0,
115
114
  display: 'flex',
@@ -122,59 +121,7 @@ export const CustomContainer = forwardRef(({ children, ...props }, forwardedRef)
122
121
  width: '75%',
123
122
  height: '100%',
124
123
  boxSizing: 'border-box',
125
- }, ref: forwardedRef, ...props, children: children })));
126
- export const QuillSelect = ({ onChange, ...props }) => {
127
- const handleOnChange = (value) => {
128
- if (!onChange)
129
- return;
130
- const option = props.options.find((opt) => opt.value === value);
131
- if (option) {
132
- onChange(option.value);
133
- }
134
- };
135
- return _jsx(MemoizedSelect, { ...props, onChange: handleOnChange });
136
- };
137
- export function MemoizedPopover({ onClose, children, style = {}, trigger, isOpen, }) {
138
- const modalRef = useRef(null);
139
- const [theme] = useContext(ThemeContext);
140
- useEffect(() => {
141
- const listener = (event) => {
142
- if (modalRef?.current && !modalRef?.current?.contains(event.target)) {
143
- onClose(event);
144
- }
145
- };
146
- document.addEventListener('mousedown', listener);
147
- return () => {
148
- document.removeEventListener('mousedown', listener);
149
- };
150
- }, [modalRef, onClose]);
151
- return (_jsxs("div", { children: [trigger, isOpen && (_jsx("div", { id: "quill-popover-modal", ref: modalRef, style: { position: 'relative' }, children: _jsx("div", { style: {
152
- background: theme?.backgroundColor || 'white',
153
- position: 'absolute',
154
- boxShadow: '0px 1px 12px 0px rgba(56, 65, 81, 0.1)',
155
- border: theme
156
- ? `${theme.borderWidth || 1}px solid ${theme.borderColor || '#e7e7e7'}`
157
- : '1px solid #e7e7e7',
158
- boxSizing: 'content-box',
159
- zIndex: 999,
160
- top: 12,
161
- borderRadius: 6,
162
- padding: 20,
163
- ...style,
164
- }, children: children }) }))] }));
165
- }
166
- export const QuillPopover = forwardRef(({ children, trigger, isOpen, onClose = () => { }, title = undefined }, ref) => {
167
- const [theme] = useContext(ThemeContext);
168
- return (_jsxs(MemoizedPopover, { isOpen: isOpen, onClose: onClose, trigger: trigger, parentRef: ref, ref: ref, children: [title && (_jsx("h1", { style: {
169
- fontWeight: '600',
170
- fontSize: 18,
171
- margin: 0,
172
- textAlign: 'left',
173
- marginBottom: 5,
174
- color: theme?.primaryTextColor,
175
- fontFamily: theme?.fontFamily,
176
- }, children: title })), children] }));
177
- });
124
+ }, children: children }));
178
125
  // The six-dot grab-handle icon.
179
126
  export const QuillHandleButton = () => {
180
127
  const [theme] = useContext(ThemeContext);
@@ -219,7 +166,7 @@ export const QuillHandleButton = () => {
219
166
  background: '#9CA0A7',
220
167
  } })] })] }));
221
168
  };
222
- export const QuillSelectColumn = ({ label, selected, setSelected, children, }) => {
169
+ export const QuillSelectColumn = ({ label, isSelected, setSelected, DragHandle, }) => {
223
170
  const [theme] = useContext(ThemeContext);
224
171
  return (_jsxs("div", { title: label, style: {
225
172
  boxShadow: '0px 1px 4px #e2e8f005',
@@ -231,13 +178,13 @@ export const QuillSelectColumn = ({ label, selected, setSelected, children, }) =
231
178
  display: 'flex',
232
179
  alignItems: 'center',
233
180
  backgroundColor: theme?.backgroundColor || 'white',
234
- }, children: [_jsx("div", { children: children }), _jsxs("label", { style: {
181
+ }, children: [_jsx(DragHandle, { dragIcon: QuillHandleButton }), _jsxs("label", { style: {
235
182
  display: 'flex',
236
183
  gap: 2,
237
184
  whiteSpace: 'nowrap',
238
185
  textOverflow: 'ellipsis',
239
186
  overflow: 'hidden',
240
- }, children: [_jsx(MemoizedCheckbox, { checked: selected, onChange: () => setSelected() }), _jsx("span", { style: {
187
+ }, children: [_jsx(MemoizedCheckbox, { isChecked: isSelected, onChange: () => setSelected() }), _jsx("span", { style: {
241
188
  marginLeft: 6,
242
189
  display: 'block',
243
190
  whiteSpace: 'nowrap',
@@ -247,8 +194,10 @@ export const QuillSelectColumn = ({ label, selected, setSelected, children, }) =
247
194
  color: theme?.primaryTextColor,
248
195
  }, children: snakeCaseToTitleCase(label) })] })] }));
249
196
  };
250
- // A draggable card with a grab-handle and a column name
251
- export const QuillDraggableColumn = ({ label, children, onDelete }) => {
197
+ /**
198
+ * A draggable card with a grab-handle and a column name
199
+ */
200
+ export const QuillDraggableColumn = ({ label, onDelete, DragHandle, }) => {
252
201
  const [theme] = useContext(ThemeContext);
253
202
  return (_jsxs("div", { style: {
254
203
  boxShadow: '0px 1px 4px #e2e8f005',
@@ -257,13 +206,14 @@ export const QuillDraggableColumn = ({ label, children, onDelete }) => {
257
206
  display: 'flex',
258
207
  alignItems: 'center',
259
208
  backgroundColor: theme?.backgroundColor || 'white',
260
- }, children: [_jsx("div", { children: children }), _jsx("div", { style: {
209
+ }, children: [_jsx(DragHandle, { dragIcon: QuillHandleButton }), _jsx("div", { style: {
261
210
  marginLeft: 2,
262
211
  marginRight: 'auto',
263
212
  fontSize: 14,
264
213
  display: 'block',
265
214
  whiteSpace: 'nowrap',
266
215
  textOverflow: 'ellipsis',
216
+ overflow: 'hidden',
267
217
  fontFamily: theme?.fontFamily,
268
218
  }, children: label }), _jsx("button", { onClick: onDelete, style: {
269
219
  paddingRight: 4,
@@ -281,11 +231,6 @@ export const QuillButtonLoadingState = () => {
281
231
  export const QuillTableLoadingState = () => {
282
232
  return (_jsx("div", { style: { display: 'flex', flexDirection: 'column', margin: 'auto' }, children: _jsx(LoadingSpinner, {}) }));
283
233
  };
284
- export const DEFAULT_TAB_OPTIONS = [
285
- { label: 'or', value: 'OR' },
286
- { label: 'and', value: 'AND' },
287
- ];
288
- export const QuillTabs = forwardRef(({ options = DEFAULT_TAB_OPTIONS, ...props }, ref) => (_jsx(MemoizedTabs, { ref: ref, options: options, ...props })));
289
234
  export const EditPopover = ({ onSave, onDelete, Button, renderNode, activeEditItem, }) => {
290
235
  const handleOnClick = () => {
291
236
  if (!allNumericNodesValidInTree(activeEditItem)) {
@@ -306,39 +251,45 @@ export const EditPopover = ({ onSave, onDelete, Button, renderNode, activeEditIt
306
251
  width: '100%',
307
252
  }, children: [_jsx(MemoizedSecondaryButton, { onClick: onDelete, label: "Delete" }), _jsx(Button, { onClick: handleOnClick, label: "Save" })] })] }));
308
253
  };
309
- export const QuillFilterPopover = ({ filterLabel, onClickDeleteFilter, popoverTitle, popoverChildren, isOpen, setIsOpen, }) => {
310
- return (_jsx(QuillPopover, { isOpen: isOpen, title: popoverTitle, trigger: _jsx(QuillTag, { label: filterLabel, onClickDelete: onClickDeleteFilter, onClick: () => {
311
- setIsOpen((isOpen) => !isOpen);
312
- } }), onClose: () => {
313
- setIsOpen(false);
314
- }, children: popoverChildren }));
254
+ export const QuillFilterPopover = ({ filterLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }) => {
255
+ const handleSetIsOpen = (isOpen) => {
256
+ setIsOpen(isOpen);
257
+ };
258
+ return (_jsxs(_Fragment, { children: [_jsx(QuillTag, { label: filterLabel, onClickDelete: onClickDelete, onClick: () => setIsOpen(!isOpen) }), _jsx(MemoizedPopover, { isOpen: isOpen, setIsOpen: handleSetIsOpen, popoverTitle: popoverTitle, popoverChildren: popoverChildren })] }));
259
+ };
260
+ export const QuillSortPopover = ({ sortLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }) => {
261
+ return (_jsxs(_Fragment, { children: [_jsx(QuillTag, { label: sortLabel, onClickDelete: onClickDelete, onClick: () => {
262
+ setIsOpen(!isOpen);
263
+ } }), _jsx(MemoizedPopover, { isOpen: isOpen, popoverTitle: popoverTitle, setIsOpen: setIsOpen, popoverChildren: popoverChildren })] }));
315
264
  };
316
- export const QuillSortPopover = ({ filterLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }) => {
317
- return (_jsx(QuillPopover, { isOpen: isOpen, title: popoverTitle, trigger: _jsx(QuillTag, { label: filterLabel, onClickDelete: onClickDelete, onClick: () => {
318
- setIsOpen((isOpen) => !isOpen);
319
- } }), onClose: () => {
320
- setIsOpen(false);
321
- }, children: popoverChildren }));
265
+ export const QuillLimitPopover = ({ limitLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }) => {
266
+ return (_jsxs(_Fragment, { children: [_jsx(QuillTag, { label: limitLabel, onClickDelete: onClickDelete, onClick: () => {
267
+ setIsOpen(!isOpen);
268
+ } }), _jsx(MemoizedPopover, { isOpen: isOpen, popoverTitle: popoverTitle, setIsOpen: setIsOpen, popoverChildren: popoverChildren })] }));
322
269
  };
323
270
  export const TagWrapper = ({ isCard, isRow, editPopoverKey, keyPrefix, formData, activeEditItem, setEditPopoverKey, setActiveEditItem, setActivePath, setOpenPopover, setIsPending, clearCheckboxes, fetchSqlQuery, handleDelete, setCheckboxes, handleReplaceSubtree, FilterPopover, getByKey, EditPopover, Button, renderNode, children, }) => {
324
271
  const [isOpen, setIsOpen] = useState(false);
272
+ const onOpen = () => {
273
+ setActiveEditItem(getByKey(formData, keyPrefix));
274
+ setActivePath(keyPrefix);
275
+ setIsPending(true);
276
+ setEditPopoverKey(keyPrefix);
277
+ setCheckboxes(getByKey(formData, keyPrefix));
278
+ };
279
+ const onClose = () => {
280
+ setEditPopoverKey(null);
281
+ setIsPending(false);
282
+ setActiveEditItem(null);
283
+ setActivePath(null);
284
+ setOpenPopover(null);
285
+ clearCheckboxes();
286
+ };
325
287
  useEffect(() => {
326
288
  if (isOpen) {
327
- // open
328
- setActiveEditItem(getByKey(formData, keyPrefix));
329
- setActivePath(keyPrefix);
330
- setIsPending(true);
331
- setEditPopoverKey(keyPrefix);
332
- setCheckboxes(getByKey(formData, keyPrefix));
289
+ onOpen();
333
290
  }
334
291
  else {
335
- // closed
336
- setEditPopoverKey(null);
337
- setIsPending(false);
338
- setActiveEditItem(null);
339
- setActivePath(null);
340
- setOpenPopover(null);
341
- clearCheckboxes();
292
+ onClose();
342
293
  }
343
294
  }, [isOpen]);
344
295
  if (isCard && isRow) {
@@ -350,9 +301,10 @@ export const TagWrapper = ({ isCard, isRow, editPopoverKey, keyPrefix, formData,
350
301
  setActivePath(null);
351
302
  setOpenPopover(null);
352
303
  setEditPopoverKey(null);
304
+ fetchSqlQuery();
353
305
  clearCheckboxes();
354
306
  };
355
- return (_jsx("div", { style: { width: '100%' }, children: _jsx(FilterPopover, { isOpen: editPopoverKey === keyPrefix, popoverTitle: "Edit Filter", filterLabel: children, onClickDeleteFilter: handleClickDelete, setIsOpen: setIsOpen, popoverChildren: _jsx(EditPopover, { Button: Button, renderNode: renderNode, activeEditItem: activeEditItem, onSave: () => {
307
+ return (_jsx("div", { style: { width: '100%' }, children: _jsx(FilterPopover, { isOpen: editPopoverKey === keyPrefix, popoverTitle: "Edit Filter", filterLabel: children, onClickDelete: handleClickDelete, setIsOpen: setIsOpen, popoverChildren: _jsx(EditPopover, { Button: Button, renderNode: renderNode, activeEditItem: activeEditItem, onSave: () => {
356
308
  if (isNodeEmptyCollection(activeEditItem)) {
357
309
  setIsPending(false);
358
310
  setActiveEditItem(null);
@@ -73,6 +73,7 @@ export declare const getDateFilterInfo: (node: any) => {
73
73
  intervalType: any;
74
74
  intervalPaths: any;
75
75
  };
76
- export declare function removeNonSelectedTableReferences(ast: any, table: string): any;
76
+ export declare function removeNonSelectedTableReferences(ast: any, table: string, columns: string[]): any;
77
77
  export declare function allNumericNodesValidInTree(node: any): boolean;
78
+ export declare function isIdColumn(columnName?: string): boolean | "" | undefined;
78
79
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/util.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,qBAAqB,SAAU,GAAG,YAW9C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,WAa1C;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,WAK5C;AAGD,eAAO,MAAM,WAAW,SAAU,GAAG,YAuBpC,CAAC;AAKF,eAAO,MAAM,oBAAoB,SAAU,GAAG,QAE7C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG;;;;;;;;EAU3C;AAKD,eAAO,MAAM,eAAe,QAAS,GAAG,QAMvC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,WAiBvD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,GAAG,iBAQjD;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAOf;AAQD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAWf;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAOf;AAMD,eAAO,MAAM,mBAAmB,SAAU,GAAG,gBAAgB,MAAM,YA4BlE,CAAC;AAIF,eAAO,MAAM,2BAA2B,SAAU,GAAG,YAUpD,CAAC;AAIF,eAAO,MAAM,oBAAoB,SACzB,GAAG,gBACK,MAAM,KACnB,OAoBF,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,GAAG,gBAAgB,MAAM,QAYpE,CAAC;AAEF,eAAO,MAAM,4BAA4B,SAAU,GAAG,KAAG,OAUxD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,SAAU,GAAG,QA4B3C,CAAC;AAGF,eAAO,MAAM,UAAU,eAAgB,MAAM,SAe5C,CAAC;AAmBF;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,UAsBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,UAgB9C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,sBAmBtE;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,SAAU,GAAG,YAU1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,SAAU,GAAG,YAOxC,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,WAehD;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,GACV,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAyB1C;AAED,eAAO,MAAM,QAAQ,QAAS,GAAG,QAAoC,CAAC;AAEtE,eAAO,MAAM,QAAQ,MAAO,MAAM,WAA2C,CAAC;AA4L9E,eAAO,MAAM,iBAAiB,SAAU,GAAG;;;;;;;CAc1C,CAAC;AAqCF,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,OAQvE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAe7D"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/util.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,qBAAqB,SAAU,GAAG,YAW9C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,WAa1C;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,WAK5C;AAGD,eAAO,MAAM,WAAW,SAAU,GAAG,YAuBpC,CAAC;AAKF,eAAO,MAAM,oBAAoB,SAAU,GAAG,QAE7C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG;;;;;;;;EAU3C;AAKD,eAAO,MAAM,eAAe,QAAS,GAAG,QAMvC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,WAiBvD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,GAAG,iBAQjD;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAOf;AAQD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAWf;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAOf;AAMD,eAAO,MAAM,mBAAmB,SAAU,GAAG,gBAAgB,MAAM,YA4BlE,CAAC;AAIF,eAAO,MAAM,2BAA2B,SAAU,GAAG,YAUpD,CAAC;AAIF,eAAO,MAAM,oBAAoB,SACzB,GAAG,gBACK,MAAM,KACnB,OAoBF,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,GAAG,gBAAgB,MAAM,QAYpE,CAAC;AAEF,eAAO,MAAM,4BAA4B,SAAU,GAAG,KAAG,OAUxD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,SAAU,GAAG,QA4B3C,CAAC;AAGF,eAAO,MAAM,UAAU,eAAgB,MAAM,SAe5C,CAAC;AAmBF;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,UAsBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,UAgB9C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,sBAmBtE;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,SAAU,GAAG,YAU1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,SAAU,GAAG,YAOxC,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,WAehD;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,GACV,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAyB1C;AAED,eAAO,MAAM,QAAQ,QAAS,GAAG,QAAoC,CAAC;AAEtE,eAAO,MAAM,QAAQ,MAAO,MAAM,WAA2C,CAAC;AA4L9E,eAAO,MAAM,iBAAiB,SAAU,GAAG;;;;;;;CAc1C,CAAC;AA6CF,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,OAQlB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAc7D;AAED,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,4BAO7C"}
@@ -627,18 +627,20 @@ function getNodeTable(node) {
627
627
  return null;
628
628
  }
629
629
  // Recursively remove filters that don't apply to the given table
630
- function removeNonSelectedTableFilters(node, table) {
630
+ function removeNonSelectedTableFilters(node, table, columns) {
631
631
  if (node.left.type !== 'binary_expr') {
632
632
  const referencedTable = getNodeTable(node.left);
633
- if (referencedTable && referencedTable !== table) {
633
+ const referencedColumn = node.left.column || node.left.value;
634
+ if ((referencedTable && referencedTable !== table) ||
635
+ !columns.includes(referencedColumn)) {
634
636
  return null;
635
637
  }
636
638
  else {
637
639
  return node;
638
640
  }
639
641
  }
640
- node.left = removeNonSelectedTableFilters(node.left, table);
641
- node.right = removeNonSelectedTableFilters(node.right, table);
642
+ node.left = removeNonSelectedTableFilters(node.left, table, columns);
643
+ node.right = removeNonSelectedTableFilters(node.right, table, columns);
642
644
  if (node.left && node.right) {
643
645
  return node;
644
646
  }
@@ -652,14 +654,13 @@ function removeNonSelectedTableFilters(node, table) {
652
654
  return null;
653
655
  }
654
656
  }
655
- export function removeNonSelectedTableReferences(ast, table) {
657
+ export function removeNonSelectedTableReferences(ast, table, columns) {
656
658
  ast.columns = ast.columns.filter((col) => {
657
659
  return col.table === table || col.expr.table === table || !col.expr.table;
658
660
  });
659
661
  if (!ast.where)
660
662
  return ast;
661
- ast.where = removeNonSelectedTableFilters(ast.where, table);
662
- console.log(ast);
663
+ ast.where = removeNonSelectedTableFilters(ast.where, table, columns);
663
664
  return ast;
664
665
  }
665
666
  export function allNumericNodesValidInTree(node) {
@@ -667,7 +668,6 @@ export function allNumericNodesValidInTree(node) {
667
668
  return true;
668
669
  if (node.type === 'number') {
669
670
  const value = parseFloat(node.value);
670
- console.log(node.value, value);
671
671
  if (Number.isNaN(value)) {
672
672
  return false;
673
673
  }
@@ -680,3 +680,9 @@ export function allNumericNodesValidInTree(node) {
680
680
  const isRightValid = allNumericNodesValidInTree(node.right);
681
681
  return isLeftValid && isRightValid;
682
682
  }
683
+ export function isIdColumn(columnName) {
684
+ return (columnName &&
685
+ (columnName.toLowerCase() === 'id' ||
686
+ columnName.toLowerCase().endsWith('_id') ||
687
+ columnName.endsWith('Id')));
688
+ }