@quillsql/react 2.12.46 → 2.12.48

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 (255) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +16 -7
  3. package/dist/cjs/ChartBuilder.d.ts +10 -11
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +78 -81
  6. package/dist/cjs/ChartEditor.d.ts +3 -1
  7. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  8. package/dist/cjs/ChartEditor.js +26 -10
  9. package/dist/cjs/Context.d.ts +2 -3
  10. package/dist/cjs/Context.d.ts.map +1 -1
  11. package/dist/cjs/Context.js +42 -28
  12. package/dist/cjs/Dashboard.d.ts +12 -12
  13. package/dist/cjs/Dashboard.d.ts.map +1 -1
  14. package/dist/cjs/Dashboard.js +61 -69
  15. package/dist/cjs/QuillProvider.d.ts +2 -0
  16. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  17. package/dist/cjs/QuillProvider.js +1 -15
  18. package/dist/cjs/ReportBuilder.d.ts +9 -9
  19. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  20. package/dist/cjs/ReportBuilder.js +116 -179
  21. package/dist/cjs/SQLEditor.d.ts +20 -11
  22. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  23. package/dist/cjs/SQLEditor.js +157 -90
  24. package/dist/cjs/Table.js +3 -3
  25. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  26. package/dist/cjs/components/Chart/BarChart.js +6 -25
  27. package/dist/cjs/components/Chart/BarList.js +1 -1
  28. package/dist/cjs/components/Chart/ChartError.d.ts +5 -2
  29. package/dist/cjs/components/Chart/ChartError.d.ts.map +1 -1
  30. package/dist/cjs/components/Chart/ChartError.js +7 -10
  31. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  32. package/dist/cjs/components/Chart/LineChart.js +16 -1
  33. package/dist/cjs/components/Chart/PieChart.js +1 -1
  34. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +1 -1
  35. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
  36. package/dist/cjs/components/Dashboard/ChartComponent.js +46 -47
  37. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  38. package/dist/cjs/components/Dashboard/DashboardFilter.js +2 -1
  39. package/dist/cjs/components/Dashboard/DataLoader.d.ts +2 -2
  40. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  41. package/dist/cjs/components/Dashboard/DataLoader.js +19 -13
  42. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  43. package/dist/cjs/components/Dashboard/MetricComponent.js +16 -26
  44. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  45. package/dist/cjs/components/Dashboard/TableComponent.js +16 -25
  46. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  47. package/dist/cjs/components/QuillMultiSelectWithCombo.js +31 -1
  48. package/dist/cjs/components/QuillSelect.js +1 -1
  49. package/dist/cjs/components/QuillTable.d.ts +1 -1
  50. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  51. package/dist/cjs/components/QuillTable.js +115 -105
  52. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +3 -3
  53. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  54. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +2 -2
  55. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +2 -2
  56. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  57. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +28 -9
  58. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +1 -1
  59. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  60. package/dist/cjs/components/ReportBuilder/FilterModal.js +178 -114
  61. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  62. package/dist/cjs/components/ReportBuilder/convert.js +1 -2
  63. package/dist/cjs/components/ReportBuilder/ui.d.ts +9 -1
  64. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  65. package/dist/cjs/components/ReportBuilder/ui.js +37 -3
  66. package/dist/cjs/components/ReportBuilder/util.d.ts +5 -1
  67. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  68. package/dist/cjs/components/ReportBuilder/util.js +26 -12
  69. package/dist/cjs/components/UiComponents.d.ts +17 -3
  70. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  71. package/dist/cjs/components/UiComponents.js +160 -29
  72. package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
  73. package/dist/cjs/hooks/useAskQuill.js +7 -7
  74. package/dist/cjs/hooks/useAstToFilterTree.d.ts +4 -1
  75. package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
  76. package/dist/cjs/hooks/useAstToFilterTree.js +4 -1
  77. package/dist/cjs/hooks/useDashboard.d.ts +5 -1
  78. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  79. package/dist/cjs/hooks/useDashboard.js +28 -4
  80. package/dist/cjs/hooks/useOnClickOutside.js +2 -2
  81. package/dist/cjs/hooks/useQuill.js +4 -4
  82. package/dist/cjs/hooks/useVirtualTables.d.ts +10 -0
  83. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -0
  84. package/dist/cjs/hooks/useVirtualTables.js +29 -0
  85. package/dist/cjs/index.d.ts +2 -1
  86. package/dist/cjs/index.d.ts.map +1 -1
  87. package/dist/cjs/index.js +4 -1
  88. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  89. package/dist/cjs/internals/ReportBuilder/PivotModal.js +45 -21
  90. package/dist/cjs/models/Client.d.ts +3 -0
  91. package/dist/cjs/models/Client.d.ts.map +1 -1
  92. package/dist/cjs/models/Report.d.ts +2 -0
  93. package/dist/cjs/models/Report.d.ts.map +1 -1
  94. package/dist/cjs/models/Schema.d.ts +7 -0
  95. package/dist/cjs/models/Schema.d.ts.map +1 -0
  96. package/dist/cjs/models/Schema.js +2 -0
  97. package/dist/cjs/models/Tables.d.ts +2 -0
  98. package/dist/cjs/models/Tables.d.ts.map +1 -1
  99. package/dist/cjs/utils/astFilterProcessing.d.ts +4 -0
  100. package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
  101. package/dist/cjs/utils/astFilterProcessing.js +47 -44
  102. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  103. package/dist/cjs/utils/astProcessing.js +8 -8
  104. package/dist/cjs/utils/client.d.ts.map +1 -1
  105. package/dist/cjs/utils/client.js +1 -0
  106. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  107. package/dist/cjs/utils/columnProcessing.js +88 -5
  108. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  109. package/dist/cjs/utils/dataFetcher.js +7 -3
  110. package/dist/cjs/utils/filterProcessing.d.ts +25 -0
  111. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  112. package/dist/cjs/utils/filterProcessing.js +121 -1
  113. package/dist/cjs/utils/paginationProcessing.js +2 -2
  114. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  115. package/dist/cjs/utils/pivotConstructor.js +10 -6
  116. package/dist/cjs/utils/queryConstructor.d.ts +1 -0
  117. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  118. package/dist/cjs/utils/queryConstructor.js +37 -11
  119. package/dist/cjs/utils/report.d.ts +5 -0
  120. package/dist/cjs/utils/report.d.ts.map +1 -1
  121. package/dist/cjs/utils/report.js +63 -9
  122. package/dist/cjs/utils/schema.js +22 -20
  123. package/dist/cjs/utils/tableProcessing.d.ts +1 -0
  124. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  125. package/dist/cjs/utils/tableProcessing.js +22 -1
  126. package/dist/cjs/utils/validation.d.ts.map +1 -1
  127. package/dist/cjs/utils/validation.js +4 -0
  128. package/dist/esm/Chart.d.ts.map +1 -1
  129. package/dist/esm/Chart.js +17 -8
  130. package/dist/esm/ChartBuilder.d.ts +10 -11
  131. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  132. package/dist/esm/ChartBuilder.js +81 -84
  133. package/dist/esm/ChartEditor.d.ts +3 -1
  134. package/dist/esm/ChartEditor.d.ts.map +1 -1
  135. package/dist/esm/ChartEditor.js +27 -11
  136. package/dist/esm/Context.d.ts +2 -3
  137. package/dist/esm/Context.d.ts.map +1 -1
  138. package/dist/esm/Context.js +42 -28
  139. package/dist/esm/Dashboard.d.ts +12 -12
  140. package/dist/esm/Dashboard.d.ts.map +1 -1
  141. package/dist/esm/Dashboard.js +63 -71
  142. package/dist/esm/QuillProvider.d.ts +2 -0
  143. package/dist/esm/QuillProvider.d.ts.map +1 -1
  144. package/dist/esm/QuillProvider.js +2 -16
  145. package/dist/esm/ReportBuilder.d.ts +9 -9
  146. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  147. package/dist/esm/ReportBuilder.js +122 -185
  148. package/dist/esm/SQLEditor.d.ts +20 -11
  149. package/dist/esm/SQLEditor.d.ts.map +1 -1
  150. package/dist/esm/SQLEditor.js +160 -93
  151. package/dist/esm/Table.js +4 -4
  152. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  153. package/dist/esm/components/Chart/BarChart.js +7 -26
  154. package/dist/esm/components/Chart/BarList.js +1 -1
  155. package/dist/esm/components/Chart/ChartError.d.ts +5 -2
  156. package/dist/esm/components/Chart/ChartError.d.ts.map +1 -1
  157. package/dist/esm/components/Chart/ChartError.js +7 -10
  158. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  159. package/dist/esm/components/Chart/LineChart.js +16 -1
  160. package/dist/esm/components/Chart/PieChart.js +1 -1
  161. package/dist/esm/components/Dashboard/ChartComponent.d.ts +1 -1
  162. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  163. package/dist/esm/components/Dashboard/ChartComponent.js +46 -47
  164. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  165. package/dist/esm/components/Dashboard/DashboardFilter.js +2 -1
  166. package/dist/esm/components/Dashboard/DataLoader.d.ts +2 -2
  167. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  168. package/dist/esm/components/Dashboard/DataLoader.js +20 -14
  169. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  170. package/dist/esm/components/Dashboard/MetricComponent.js +16 -26
  171. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  172. package/dist/esm/components/Dashboard/TableComponent.js +16 -25
  173. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  174. package/dist/esm/components/QuillMultiSelectWithCombo.js +31 -1
  175. package/dist/esm/components/QuillSelect.js +1 -1
  176. package/dist/esm/components/QuillTable.d.ts +1 -1
  177. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  178. package/dist/esm/components/QuillTable.js +115 -105
  179. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +3 -3
  180. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  181. package/dist/esm/components/ReportBuilder/AddColumnModal.js +2 -2
  182. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +2 -2
  183. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  184. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +28 -9
  185. package/dist/esm/components/ReportBuilder/FilterModal.d.ts +1 -1
  186. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  187. package/dist/esm/components/ReportBuilder/FilterModal.js +178 -114
  188. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  189. package/dist/esm/components/ReportBuilder/convert.js +1 -2
  190. package/dist/esm/components/ReportBuilder/ui.d.ts +9 -1
  191. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  192. package/dist/esm/components/ReportBuilder/ui.js +38 -4
  193. package/dist/esm/components/ReportBuilder/util.d.ts +5 -1
  194. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  195. package/dist/esm/components/ReportBuilder/util.js +26 -12
  196. package/dist/esm/components/UiComponents.d.ts +17 -3
  197. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  198. package/dist/esm/components/UiComponents.js +158 -28
  199. package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
  200. package/dist/esm/hooks/useAskQuill.js +8 -8
  201. package/dist/esm/hooks/useAstToFilterTree.d.ts +4 -1
  202. package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
  203. package/dist/esm/hooks/useAstToFilterTree.js +4 -1
  204. package/dist/esm/hooks/useDashboard.d.ts +5 -1
  205. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  206. package/dist/esm/hooks/useDashboard.js +28 -5
  207. package/dist/esm/hooks/useOnClickOutside.js +2 -2
  208. package/dist/esm/hooks/useQuill.js +5 -5
  209. package/dist/esm/hooks/useVirtualTables.d.ts +10 -0
  210. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -0
  211. package/dist/esm/hooks/useVirtualTables.js +25 -0
  212. package/dist/esm/index.d.ts +2 -1
  213. package/dist/esm/index.d.ts.map +1 -1
  214. package/dist/esm/index.js +2 -1
  215. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  216. package/dist/esm/internals/ReportBuilder/PivotModal.js +44 -23
  217. package/dist/esm/models/Client.d.ts +3 -0
  218. package/dist/esm/models/Client.d.ts.map +1 -1
  219. package/dist/esm/models/Report.d.ts +2 -0
  220. package/dist/esm/models/Report.d.ts.map +1 -1
  221. package/dist/esm/models/Schema.d.ts +7 -0
  222. package/dist/esm/models/Schema.d.ts.map +1 -0
  223. package/dist/esm/models/Schema.js +1 -0
  224. package/dist/esm/models/Tables.d.ts +2 -0
  225. package/dist/esm/models/Tables.d.ts.map +1 -1
  226. package/dist/esm/utils/astFilterProcessing.d.ts +4 -0
  227. package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
  228. package/dist/esm/utils/astFilterProcessing.js +45 -43
  229. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  230. package/dist/esm/utils/astProcessing.js +8 -8
  231. package/dist/esm/utils/client.d.ts.map +1 -1
  232. package/dist/esm/utils/client.js +1 -0
  233. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  234. package/dist/esm/utils/columnProcessing.js +88 -5
  235. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  236. package/dist/esm/utils/dataFetcher.js +7 -3
  237. package/dist/esm/utils/filterProcessing.d.ts +25 -0
  238. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  239. package/dist/esm/utils/filterProcessing.js +116 -0
  240. package/dist/esm/utils/paginationProcessing.js +2 -2
  241. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  242. package/dist/esm/utils/pivotConstructor.js +10 -6
  243. package/dist/esm/utils/queryConstructor.d.ts +1 -0
  244. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  245. package/dist/esm/utils/queryConstructor.js +35 -10
  246. package/dist/esm/utils/report.d.ts +5 -0
  247. package/dist/esm/utils/report.d.ts.map +1 -1
  248. package/dist/esm/utils/report.js +61 -8
  249. package/dist/esm/utils/schema.js +22 -20
  250. package/dist/esm/utils/tableProcessing.d.ts +1 -0
  251. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  252. package/dist/esm/utils/tableProcessing.js +21 -1
  253. package/dist/esm/utils/validation.d.ts.map +1 -1
  254. package/dist/esm/utils/validation.js +4 -0
  255. package/package.json +3 -1
@@ -11,32 +11,20 @@ import { getType } from '../../utils/filterProcessing';
11
11
  * Modal for adding, editing, and deleting Filters
12
12
  */
13
13
  export default function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, onSubmitFilter, onDeleteFilter, ButtonComponent, SelectComponent, TextInputComponent, SecondaryButtonComponent, MultiSelectComponent, }) {
14
- const [field, setField] = useState(filter ? filter.field : '');
14
+ const [field, setField] = useState('');
15
15
  const [fieldOptions, setFieldOptions] = useState([]);
16
16
  const [fieldValues, setFieldValues] = useState([]);
17
- const [type, setType] = useState(filter ? filter.filterType : '');
18
- const [value, setValue] = useState(filter
19
- ? filter.filterType === 'date-filter'
20
- ? filter.value.value
21
- : filter.value
22
- : undefined);
23
- const [selectedOptions, setSelectedOptions] = useState(filter && filter.filterType === 'string-in-filter'
24
- ? filter.value.map((val) => {
25
- return { label: val, value: val };
26
- })
27
- : []);
28
- const [operator, setOperator] = useState(filter ? filter.operator : '');
17
+ const [type, setType] = useState('');
18
+ const [value, setValue] = useState(undefined);
19
+ const [selectedOptions, setSelectedOptions] = useState([]);
20
+ const [operator, setOperator] = useState('');
29
21
  const [operatorOptions, setOperatorOptions] = useState([]);
30
- const [unit, setUnit] = useState(filter && filter.filterType === 'date-filter' ? filter.value.unit : '');
22
+ const [unit, setUnit] = useState('');
31
23
  const [unitOptions, setUnitOptions] = useState([]);
32
- const [startDate, setStartDate] = useState(filter && filter.value?.startDate
33
- ? filter.value.startDate.substring(0, 10)
34
- : startOfToday().toISOString().substring(0, 10));
35
- const [endDate, setEndDate] = useState(filter && filter.value?.endDate
36
- ? filter.value.endDate.substring(0, 10)
37
- : startOfToday().toISOString().substring(0, 10));
24
+ const [startDate, setStartDate] = useState(startOfToday().toISOString().substring(0, 10));
25
+ const [endDate, setEndDate] = useState(startOfToday().toISOString().substring(0, 10));
38
26
  const [filterInitialized, setFilterInitialized] = useState(false);
39
- const [table, setTable] = useState('');
27
+ const [table, setTable] = useState(undefined);
40
28
  // Define all supported operator options for each field type
41
29
  const allOperatorOptions = {
42
30
  [FieldTypes.Number]: [
@@ -80,6 +68,20 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
80
68
  // Effect hook to initialize or update fieldValues based on selected field
81
69
  useEffect(() => {
82
70
  if (filter) {
71
+ setField(filter.field);
72
+ onFieldChange(filter.field, fieldOptions);
73
+ setType(filter.filterType);
74
+ onTypeChange(filter.filterType);
75
+ setValue(filter.filterType === 'date-filter' ? filter.value.value : filter.value);
76
+ setOperator(filter.operator);
77
+ onOperatorChange(filter.operator);
78
+ setUnit(filter.filterType === 'date-filter' ? filter.value.unit : '');
79
+ setStartDate(filter.value?.startDate
80
+ ? filter.value.startDate.substring(0, 10)
81
+ : startOfToday().toISOString().substring(0, 10));
82
+ setEndDate(filter.value?.endDate
83
+ ? filter.value.endDate.substring(0, 10)
84
+ : startOfToday().toISOString().substring(0, 10));
83
85
  if (filter.filterType === 'string-in-filter') {
84
86
  setSelectedOptions(filter.value.map((val) => {
85
87
  return { label: val, value: val };
@@ -100,33 +102,14 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
100
102
  setFieldOptions(fo);
101
103
  if (!filter && fo.length > 0 && fo[0]) {
102
104
  setField(fo[0].name);
105
+ onFieldChange(fo[0].name, fo);
103
106
  }
104
- }
105
- }, [schema]);
106
- // Effect hook to update UI when field selection changes
107
- useEffect(() => {
108
- if (field !== '') {
109
- const selectedOption = fieldOptions.find((option) => option.name === field);
110
- if (selectedOption) {
111
- const fv = getFieldValues(selectedOption.name, selectedOption.table);
112
- setFieldValues(fv);
113
- if (!selectedOptions.every((item) => fv
114
- .map((v) => v.toLowerCase())
115
- .includes(item.value.toLowerCase()))) {
116
- setSelectedOptions([]);
117
- }
118
- setType(getType(selectedOption.type));
119
- setTable(selectedOption.table);
107
+ else {
108
+ onFieldChange(field !== '' ? field : filter?.field ?? '', fo);
120
109
  }
121
110
  }
122
- else {
123
- setType('');
124
- setFieldValues([]);
125
- setSelectedOptions([]);
126
- }
127
- }, [field, fieldOptions]);
128
- // Effect hook to update operator options based on selected field type
129
- useEffect(() => {
111
+ }, [schema]);
112
+ function onTypeChange(type) {
130
113
  if (type) {
131
114
  const options = customOperatorOptions?.[type] ?? allOperatorOptions[type];
132
115
  if (options) {
@@ -135,18 +118,22 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
135
118
  switch (type) {
136
119
  case 'string':
137
120
  setOperator(StringOperator.Is);
121
+ onOperatorChange(StringOperator.Is);
138
122
  setValue('');
139
123
  break;
140
124
  case 'date':
141
125
  setOperator(DateOperator.InTheLast);
126
+ onOperatorChange(DateOperator.InTheLast);
142
127
  setValue('90');
143
128
  break;
144
129
  case 'number':
145
130
  setOperator(NumberOperator.EqualTo);
131
+ onOperatorChange(NumberOperator.EqualTo);
146
132
  setValue('0');
147
133
  break;
148
134
  case 'boolean':
149
135
  setOperator(BoolOperator.EqualTo);
136
+ onOperatorChange(BoolOperator.EqualTo);
150
137
  setValue(true);
151
138
  break;
152
139
  }
@@ -159,31 +146,94 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
159
146
  else {
160
147
  setOperatorOptions([]);
161
148
  setOperator('');
162
- setType('');
149
+ onOperatorChange('');
163
150
  }
164
- }, [type]);
165
- // Effect hook to update UI when operator selection changes
166
- useEffect(() => {
151
+ }
152
+ function onOperatorChange(operator) {
167
153
  if (operator === '') {
168
154
  setValue('');
169
155
  }
170
156
  if (typeof value !== 'string' &&
171
157
  typeof value !== 'number' &&
172
158
  typeof value !== 'boolean' &&
173
- operator !== DateOperator.Custom) {
159
+ operator !== DateOperator.Custom &&
160
+ (filterInitialized || !filter)) {
174
161
  setValue('');
175
162
  }
163
+ else if (type === FieldTypes.Date &&
164
+ [
165
+ DateOperator.GreaterThan,
166
+ DateOperator.GreaterThanOrEqualTo,
167
+ DateOperator.EqualTo,
168
+ DateOperator.LessThan,
169
+ DateOperator.LessThanOrEqualTo,
170
+ DateOperator.NotEqualTo,
171
+ ].includes(operator) &&
172
+ !isValid(parse(value, 'yyyy-mm-dd', new Date())) &&
173
+ (filterInitialized || !filter)) {
174
+ setValue(startOfToday().toISOString().substring(0, 10));
175
+ }
176
+ else if (type === FieldTypes.Date &&
177
+ [
178
+ DateOperator.InTheLast,
179
+ DateOperator.InTheCurrent,
180
+ DateOperator.InThePrevious,
181
+ ].includes(operator) &&
182
+ (value === '' || (typeof value !== 'number' && isNaN(Number(value)))) &&
183
+ (filterInitialized || !filter)) {
184
+ setValue('90');
185
+ }
176
186
  const options = getUnits(operator);
177
187
  setUnitOptions(options);
178
- if (!options || !options.includes(unit)) {
188
+ if (unit === '' && options.length > 0) {
189
+ setUnit(TimeUnit.Day);
190
+ }
191
+ else if (!options || !options.includes(unit)) {
179
192
  setUnit('');
180
193
  }
181
- }, [operator]);
182
- useEffect(() => {
183
- if (!filter && unitOptions.length > 0) {
184
- setUnit(TimeUnit.Day);
194
+ }
195
+ function onFieldChange(field, fieldOptions) {
196
+ if (field !== '') {
197
+ const selectedOption = fieldOptions.find((option) => option.name === field);
198
+ if (selectedOption) {
199
+ const fieldValues = getFieldValues(selectedOption.name, selectedOption.table);
200
+ if (filterInitialized || !filter) {
201
+ if (!selectedOptions.every((item) => fieldValues
202
+ .map((v) => v.toLowerCase())
203
+ .includes(item.value.toLowerCase()))) {
204
+ setSelectedOptions([]);
205
+ }
206
+ }
207
+ else {
208
+ const preSelected = Array.isArray(filter.value)
209
+ ? filter.value.map((val) => {
210
+ return { label: val, value: val };
211
+ })
212
+ : [];
213
+ // if a filter comes with invalid choices, include them anyway
214
+ const valuesSet = new Set(fieldValues.map((v) => v.toLowerCase()));
215
+ preSelected.forEach((option) => {
216
+ if (!valuesSet.has(option.value.toLowerCase())) {
217
+ valuesSet.add(option.value.toLowerCase());
218
+ fieldValues.push(option.value);
219
+ }
220
+ });
221
+ }
222
+ setFieldValues(fieldValues);
223
+ setType(getType(selectedOption.type));
224
+ onTypeChange(getType(selectedOption.type));
225
+ if (selectedOption.table !== '') {
226
+ setTable(selectedOption.table);
227
+ }
228
+ }
185
229
  }
186
- }, [unitOptions]);
230
+ else {
231
+ setType('');
232
+ onTypeChange('');
233
+ setFieldValues([]);
234
+ setSelectedOptions([]);
235
+ }
236
+ }
187
237
  // Function that returns the list of units used for certain DateOperators
188
238
  const getUnits = (operator) => {
189
239
  switch (operator) {
@@ -228,7 +278,17 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
228
278
  // Handler for operator selection change
229
279
  const handleOperatorChange = (event) => {
230
280
  const newOp = event.target.value;
231
- setOperator(newOp);
281
+ if (typeof newOp === 'string') {
282
+ setOperator(newOp);
283
+ onOperatorChange(newOp);
284
+ }
285
+ };
286
+ const handleFieldChange = (event) => {
287
+ const newField = event.target.value;
288
+ if (typeof newField === 'string' && newField !== field) {
289
+ setField(newField);
290
+ onFieldChange(newField, fieldOptions);
291
+ }
232
292
  };
233
293
  // Handler for date range selection
234
294
  const handleDateRangeSelect = (date) => {
@@ -241,6 +301,7 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
241
301
  }
242
302
  }
243
303
  setOperator(DateOperator.Custom);
304
+ onOperatorChange(DateOperator.Custom);
244
305
  };
245
306
  // Handler for form submission
246
307
  const handleSubmit = () => {
@@ -258,7 +319,9 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
258
319
  switch (operator) {
259
320
  case DateOperator.InTheLast:
260
321
  case DateOperator.InThePrevious:
261
- if (typeof value !== 'number' && isNaN(Number(value))) {
322
+ if (value === undefined ||
323
+ value === '' ||
324
+ (typeof value !== 'number' && isNaN(Number(value)))) {
262
325
  alert('Please specify a valid number');
263
326
  return;
264
327
  }
@@ -366,7 +429,7 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
366
429
  });
367
430
  break;
368
431
  default:
369
- if (typeof value !== 'string') {
432
+ if (typeof value !== 'string' || value === '') {
370
433
  alert('Please specify a valid string');
371
434
  return;
372
435
  }
@@ -444,6 +507,9 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
444
507
  const handleDelete = () => {
445
508
  onDeleteFilter();
446
509
  };
510
+ if (filter && !filterInitialized) {
511
+ return null; // prevent flashing
512
+ }
447
513
  return (_jsxs("div", { style: {
448
514
  display: 'flex',
449
515
  flexDirection: 'column',
@@ -459,7 +525,7 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
459
525
  gap: '20px',
460
526
  flexDirection: 'row',
461
527
  width: '100%',
462
- }, children: [_jsx("div", { style: { display: 'flex', gap: 20 }, children: _jsx(SelectComponent, { value: field, width: 200, onChange: (event) => setField(event.target.value), options: [
528
+ }, children: [_jsx("div", { style: { display: 'flex', gap: 20 }, children: _jsx(SelectComponent, { value: field, width: 200, onChange: handleFieldChange, options: [
463
529
  ...fieldOptions.map((option) => ({
464
530
  value: option.name,
465
531
  label: option.table !== ''
@@ -474,33 +540,33 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
474
540
  ? `${operator} one of`
475
541
  : operator,
476
542
  })),
477
- ] }) })), _jsx("div", { style: { display: 'flex', gap: 20 }, children: (() => {
478
- switch (operator) {
479
- case BoolOperator.EqualTo:
480
- case BoolOperator.NotEqualTo:
481
- case StringOperator.IsExactly:
482
- case StringOperator.IsNotExactly:
483
- case StringOperator.Contains:
484
- case NumberOperator.EqualTo:
485
- case NumberOperator.NotEqualTo:
486
- case NumberOperator.GreaterThan:
487
- case NumberOperator.LessThan:
488
- case NumberOperator.GreaterThanOrEqualTo:
489
- case NumberOperator.LessThanOrEqualTo:
490
- if (type === 'boolean') {
491
- return (_jsx(SelectComponent, { value: value, width: 200, onChange: (event) => setValue(event.target.value), options: [
543
+ ] }) })), (() => {
544
+ switch (operator) {
545
+ case BoolOperator.EqualTo:
546
+ case BoolOperator.NotEqualTo:
547
+ case StringOperator.IsExactly:
548
+ case StringOperator.IsNotExactly:
549
+ case StringOperator.Contains:
550
+ case NumberOperator.EqualTo:
551
+ case NumberOperator.NotEqualTo:
552
+ case NumberOperator.GreaterThan:
553
+ case NumberOperator.LessThan:
554
+ case NumberOperator.GreaterThanOrEqualTo:
555
+ case NumberOperator.LessThanOrEqualTo:
556
+ if (type === 'boolean') {
557
+ return (_jsx("div", { style: { display: 'flex', gap: 20 }, children: _jsx(SelectComponent, { value: value, width: 200, onChange: (event) => setValue(event.target.value), options: [
492
558
  { value: true, label: 'true' },
493
559
  { value: false, label: 'false' },
494
- ] }));
495
- }
496
- else {
497
- return (_jsx(TextInputComponent, { value: value, width: 120, onChange: (event) => {
560
+ ] }) }));
561
+ }
562
+ else {
563
+ return (_jsx("div", { style: { display: 'flex', gap: 20 }, children: _jsx(TextInputComponent, { value: value, width: 120, onChange: (event) => {
498
564
  setValue(event.target.value);
499
- } }));
500
- }
501
- case StringOperator.Is:
502
- case StringOperator.IsNot:
503
- return (_jsx(MultiSelectComponent, { options: fieldValues.map((v) => {
565
+ } }) }));
566
+ }
567
+ case StringOperator.Is:
568
+ case StringOperator.IsNot:
569
+ return (_jsx("div", { style: { display: 'flex', gap: 20 }, children: _jsx(MultiSelectComponent, { options: fieldValues.map((v) => {
504
570
  return { value: v.toLowerCase(), label: v };
505
571
  }), width: 200, value: selectedOptions.map((val) => val.value.toLowerCase()), onChange: (e) => {
506
572
  if (e.target.value === '') {
@@ -518,9 +584,9 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
518
584
  };
519
585
  });
520
586
  setSelectedOptions(jsonValue);
521
- } }));
522
- case DateOperator.Custom:
523
- return (_jsx(QuillDateRangePicker, { dateRange: {
587
+ } }) }));
588
+ case DateOperator.Custom:
589
+ return (_jsx("div", { style: { display: 'flex', gap: 20 }, children: _jsx(QuillDateRangePicker, { dateRange: {
524
590
  startDate: startDate
525
591
  ? new Date(startDate + 'T00:00:00')
526
592
  : startOfToday(),
@@ -532,37 +598,35 @@ export default function FilterModal({ schema, filter, fieldValuesMap, customOper
532
598
  from: value.startDate,
533
599
  to: value.endDate,
534
600
  });
535
- } }));
536
- case DateOperator.InTheLast:
537
- case DateOperator.InThePrevious:
538
- return (_jsxs("div", { style: { display: 'flex', flexDirection: 'row' }, children: [_jsx(TextInputComponent, { value: value, width: 120, onChange: (event) => {
539
- setValue(event.target.value);
540
- } }), unitOptions.length > 0 && (_jsx("div", { style: { marginLeft: '10px', marginRight: '10px' }, children: _jsx(SelectComponent, { value: unit, width: 200, onChange: (event) => setUnit(event.target.value), options: [
541
- // { value: 'Select', label: 'Select' },
542
- ...unitOptions.map((unit) => ({
543
- value: unit,
544
- label: `${unit}${value && value !== '1' && value !== 1
545
- ? 's'
546
- : ''}`,
547
- })),
548
- ] }) }))] }));
549
- case DateOperator.InTheCurrent:
550
- return (_jsx(_Fragment, { children: unitOptions.length > 0 && (_jsx("div", { style: { marginLeft: '10px', marginRight: '10px' }, children: _jsx(SelectComponent, { value: unit, width: 200, onChange: (event) => setUnit(event.target.value), options: [
601
+ } }) }));
602
+ case DateOperator.InTheLast:
603
+ case DateOperator.InThePrevious:
604
+ return (_jsxs("div", { style: { display: 'flex', flexDirection: 'row' }, children: [_jsx(TextInputComponent, { value: value, width: 120, onChange: (event) => {
605
+ setValue(event.target.value);
606
+ } }), unitOptions.length > 0 && (_jsx("div", { style: { marginLeft: '10px' }, children: _jsx(SelectComponent, { value: unit, width: 200, onChange: (event) => setUnit(event.target.value), options: [
551
607
  // { value: 'Select', label: 'Select' },
552
608
  ...unitOptions.map((unit) => ({
553
609
  value: unit,
554
- label: `${unit}${operator !== DateOperator.InTheCurrent &&
555
- value &&
556
- value !== '1' &&
557
- value !== 1
558
- ? 's'
559
- : ''}`,
610
+ label: `${unit}${value && value !== '1' && value !== 1 ? 's' : ''}`,
560
611
  })),
561
- ] }) })) }));
562
- default:
563
- return _jsx(_Fragment, {});
564
- }
565
- })() })] }) }), _jsx("div", { style: {
612
+ ] }) }))] }));
613
+ case DateOperator.InTheCurrent:
614
+ return (_jsx("div", { style: { display: 'flex', gap: 20 }, children: unitOptions.length > 0 && (_jsx(SelectComponent, { value: unit, width: 200, onChange: (event) => setUnit(event.target.value), options: [
615
+ // { value: 'Select', label: 'Select' },
616
+ ...unitOptions.map((unit) => ({
617
+ value: unit,
618
+ label: `${unit}${operator !== DateOperator.InTheCurrent &&
619
+ value &&
620
+ value !== '1' &&
621
+ value !== 1
622
+ ? 's'
623
+ : ''}`,
624
+ })),
625
+ ] })) }));
626
+ default:
627
+ return _jsx(_Fragment, {});
628
+ }
629
+ })()] }) }), _jsx("div", { style: {
566
630
  display: 'flex',
567
631
  flexDirection: 'row',
568
632
  justifyContent: 'flex-end',
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/convert.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,IAAI,GAAG,EACpB,GAAG,EAOJ,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAQ5C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAuBlE;AAGD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,QAahB;AAGD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,QAalB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAoDpD;AAUD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,YAAY,EAAE,KAAK,EAAE,GACpB,GAAG,CAAC,MAAM,CA8BZ;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAkBrE;AAmID,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,UAAU,EAAE,cAAc,EAAE,GAC3B,KAAK,GAAG,IAAI,CAmFd;AA+BD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,KAAK,EAAE,EACrB,SAAS,CAAC,EAAE,KAAK;;;;;;EAwFlB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,OAyNtE;AAID,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAY1E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,OA+C5C"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/convert.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,IAAI,GAAG,EACpB,GAAG,EAOJ,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAQ5C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAuBlE;AAGD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,QAahB;AAGD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,QAalB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAoDpD;AAUD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,YAAY,EAAE,KAAK,EAAE,GACpB,GAAG,CAAC,MAAM,CA8BZ;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAkBrE;AAmID,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,UAAU,EAAE,cAAc,EAAE,GAC3B,KAAK,GAAG,IAAI,CAmFd;AA+BD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,KAAK,EAAE,EACrB,SAAS,CAAC,EAAE,KAAK;;;;;;EAuFlB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,OAyNtE;AAID,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAY1E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,OA+C5C"}
@@ -403,8 +403,7 @@ export function convertGroupBy(ast, schemaTables, prevPivot) {
403
403
  const existingCol = columnAlreadyExists(prevPivot.columnField);
404
404
  newColumns.push(existingCol ?? generateColumnExpr(prevPivot.columnField));
405
405
  }
406
- ast.columns = newColumns;
407
- return { pivot: prevPivot, ast };
406
+ return { pivot: prevPivot, ast: { ...ast, columns: newColumns } };
408
407
  }
409
408
  pivot = convertASTToPivotData(ast, columns);
410
409
  if (pivot && Object.keys(pivot).length === 0) {
@@ -2,6 +2,8 @@ import { ReactNode } from 'react';
2
2
  import { SidebarComponentProps, ContainerComponentProps } from '../UiComponents';
3
3
  import { Filter } from '../../models/Filter';
4
4
  import { ColumnInternal } from '../../models/Columns';
5
+ import { FilterTreeNode } from '../../utils/astFilterProcessing';
6
+ import { Client } from '../../models/Client';
5
7
  /**
6
8
  * This file is a collection of basic UI components that conform to the shape
7
9
  * expected by the Report Builder. Where possible, we use our existing
@@ -108,6 +110,12 @@ export interface FilterPopoverWrapperProps {
108
110
  FilterTagComponent: any;
109
111
  FilterModal: any;
110
112
  fieldValuesMap: any;
113
+ priorFilters?: FilterTreeNode[];
114
+ columns?: ColumnInternal[];
115
+ client?: Client;
116
+ customFields?: any;
117
+ baseAst?: any;
118
+ endpoint?: string;
111
119
  customOperatorOptions?: any;
112
120
  ButtonComponent: any;
113
121
  SecondaryButtonComponent: any;
@@ -118,5 +126,5 @@ export interface FilterPopoverWrapperProps {
118
126
  handleFilterSave: (filter: Filter) => void;
119
127
  containerStyle?: any;
120
128
  }
121
- export declare const FilterPopoverWrapper: ({ schema, filter, filterLabel, index, FilterTagComponent, FilterModal, fieldValuesMap, customOperatorOptions, ButtonComponent, SecondaryButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, handleFilterDelete, handleFilterSave, containerStyle, }: FilterPopoverWrapperProps) => import("react/jsx-runtime").JSX.Element;
129
+ export declare const FilterPopoverWrapper: ({ schema, filter, filterLabel, index, FilterTagComponent, FilterModal, fieldValuesMap, priorFilters, columns, client, customFields, baseAst, endpoint, customOperatorOptions, ButtonComponent, SecondaryButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, handleFilterDelete, handleFilterSave, containerStyle, }: FilterPopoverWrapperProps) => import("react/jsx-runtime").JSX.Element;
122
130
  //# sourceMappingURL=ui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/ui.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAmC,MAAM,OAAO,CAAC;AAC/E,OAAO,EAGL,qBAAqB,EACrB,uBAAuB,EAExB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;;;GAKG;AAEH,eAAO,MAAM,WAAW,2BAA4B,GAAG,4CA0BtD,CAAC;AAEF,eAAO,MAAM,oBAAoB,2BAA4B,GAAG,4CA0B/D,CAAC;AAGF,eAAO,MAAM,uBAAuB,uCAKjC,GAAG,4CAiBL,CAAC;AAEF,eAAO,MAAM,QAAQ,sGA0EpB,CAAC;AAEF,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,eAAO,MAAM,mBAAmB,eAE7B,4BAA4B,4CAiB9B,CAAC;AAGF,eAAO,MAAM,YAAY,iBAAkB,qBAAqB,4CAiB/D,CAAC;AAGF,eAAO,MAAM,eAAe,iBAAkB,uBAAuB,4CAqBpE,CAAC;AAGF,eAAO,MAAM,iBAAiB,+CAsE7B,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;CAC5E;AAED,eAAO,MAAM,iBAAiB,oDAK3B,0BAA0B,4CA4B5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;CAC5E;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,qCAI9B,6BAA6B,4CAiD/B,CAAC;AAGF,eAAO,MAAM,uBAAuB,+CAMnC,CAAC;AAGF,eAAO,MAAM,sBAAsB,+CAMlC,CAAC;AAEF,eAAO,MAAM,WAAW,+EAOrB,GAAG,4CA+BL,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CAC3D;AAED,eAAO,MAAM,kBAAkB,sFAO5B,2BAA2B,4CAmB7B,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,SAAS,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CAC3D;AAED,eAAO,MAAM,gBAAgB,oFAO1B,yBAAyB,4CAkB3B,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CAC3D;AAED,eAAO,MAAM,iBAAiB,qFAO3B,0BAA0B,4CAkB5B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC;IACd,cAAc,EAAE,GAAG,CAAC;IACpB,iBAAiB,EAAE,GAAG,CAAC;IACvB,iBAAiB,EAAE,GAAG,CAAC;IACvB,aAAa,EAAE,GAAG,CAAC;IACnB,cAAc,EAAE,GAAG,CAAC;IACpB,YAAY,EAAE,GAAG,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,YAAY,EAAE,GAAG,CAAC;IAClB,aAAa,EAAE,GAAG,CAAC;IACnB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,GAAG,CAAC,OAAO,CAAC;IACnE,QAAQ,EAAE,GAAG,CAAC;IACd,WAAW,EAAE,GAAG,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC;IACZ,eAAe,EAAE,GAAG,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC;CACf;AAED,eAAO,MAAM,UAAU,wTAuBpB,eAAe,4CAwGjB,CAAC;AAEF,eAAO,MAAM,gBAAgB,oDAK1B,GAAG,4CAsBL,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,GAAG,CAAC;IACxB,WAAW,EAAE,GAAG,CAAC;IACjB,cAAc,EAAE,GAAG,CAAC;IACpB,qBAAqB,CAAC,EAAE,GAAG,CAAC;IAC5B,eAAe,EAAE,GAAG,CAAC;IACrB,wBAAwB,EAAE,GAAG,CAAC;IAC9B,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,GAAG,CAAC;CACtB;AAED,eAAO,MAAM,oBAAoB,gRAiB9B,yBAAyB,4CAoC3B,CAAC"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/ui.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { forwardRef, useContext, useEffect, useState } from 'react';
2
+ import { forwardRef, useContext, useEffect, useRef, useState, } from 'react';
3
3
  import { MemoizedCheckbox, LoadingSpinner, MemoizedPopover, } from '../UiComponents';
4
4
  import MemoizedQuillTable from '../QuillTable';
5
5
  import { ThemeContext } from '../../Context';
6
6
  import { isNodeEmptyCollection, allNumericNodesValidInTree } from './util';
7
7
  import { downloadCSV } from '../../utils/csv';
8
+ import { DEFAULT_PAGINATION } from '../../utils/paginationProcessing';
9
+ import { buildQueryFromFilters, uniqueValuesToStringMap, } from '../../utils/filterProcessing';
10
+ import { getRelevantInfoFromQuery } from '../../utils/tableProcessing';
8
11
  /**
9
12
  * This file is a collection of basic UI components that conform to the shape
10
13
  * expected by the Report Builder. Where possible, we use our existing
@@ -54,7 +57,7 @@ export const QuillSecondaryButton = ({ children, ...props }) => {
54
57
  // TODO: remove this, I think it is unused.
55
58
  export const QuillReportBuilderTable = ({ rows, columns, error, ...props }) => {
56
59
  const reformattedColumns = columns.map((c) => ({ label: c, field: c }));
57
- return (_jsx("div", { style: { height: '100%', overflow: 'auto' }, children: _jsx(MemoizedQuillTable, { rows: rows, columns: reformattedColumns, rowsPerPage: 10, hideCSVDownloadButton: rows?.length > 0, downloadCSV: () => downloadCSV({ rows, fields: reformattedColumns, name: 'my_report' }), emptyStateLabel: error || 'No results', ...props }) }));
60
+ return (_jsx("div", { style: { height: '100%', overflow: 'auto' }, children: _jsx(MemoizedQuillTable, { rows: rows, columns: reformattedColumns, rowsPerPage: DEFAULT_PAGINATION.rowsPerPage, hideCSVDownloadButton: rows?.length > 0, downloadCSV: () => downloadCSV({ rows, fields: reformattedColumns, name: 'my_report' }), emptyStateLabel: error || 'No results', ...props }) }));
58
61
  };
59
62
  export const QuillTag = forwardRef(({ label, onClick, children, onClickDelete, hideDelete = false }, forwardedRef) => {
60
63
  const [theme] = useContext(ThemeContext);
@@ -369,12 +372,43 @@ export const AddFilterPopover = ({ onSave, Button, renderNode, activeEditItem, }
369
372
  justifyContent: 'end',
370
373
  }, children: _jsx(Button, { onClick: handleOnClick, label: 'Add filter' }) })] }));
371
374
  };
372
- export const FilterPopoverWrapper = ({ schema, filter, filterLabel, index, FilterTagComponent, FilterModal, fieldValuesMap, customOperatorOptions, ButtonComponent, SecondaryButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, handleFilterDelete, handleFilterSave, containerStyle, }) => {
375
+ export const FilterPopoverWrapper = ({ schema, filter, filterLabel, index, FilterTagComponent, FilterModal, fieldValuesMap, priorFilters, columns, client, customFields, baseAst, endpoint, customOperatorOptions, ButtonComponent, SecondaryButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, handleFilterDelete, handleFilterSave, containerStyle, }) => {
373
376
  const [isOpen, setIsOpen] = useState(false);
377
+ const [uniqueValues, setUniqueValues] = useState(undefined);
378
+ // Use a ref to store the previous value of priorFilters
379
+ const prevFiltersRef = useRef('');
380
+ useEffect(() => {
381
+ const currentFiltersString = JSON.stringify(priorFilters);
382
+ if (currentFiltersString !== prevFiltersRef.current) {
383
+ prevFiltersRef.current = currentFiltersString;
384
+ if (priorFilters) {
385
+ getFieldValuesMapByFilters(priorFilters);
386
+ }
387
+ }
388
+ }, [priorFilters]);
389
+ // This function retrieves the appropriate unique values given a set of filters
390
+ async function getFieldValuesMapByFilters(filters) {
391
+ if (!columns || !client || !endpoint || !baseAst) {
392
+ return;
393
+ }
394
+ else {
395
+ const { query, success, error } = await buildQueryFromFilters(baseAst, filters, endpoint, client);
396
+ if (success && query) {
397
+ const { uniqueStrings } = await getRelevantInfoFromQuery(columns, client, query, customFields);
398
+ const fieldValues = uniqueStrings && Object.keys(uniqueStrings).length !== 0
399
+ ? uniqueValuesToStringMap(uniqueStrings)
400
+ : fieldValuesMap; // Fallback in case Promise comes up empty
401
+ setUniqueValues(fieldValues);
402
+ }
403
+ else if (error) {
404
+ console.error(error);
405
+ }
406
+ }
407
+ }
374
408
  function handleClickDelete() {
375
409
  handleFilterDelete(index);
376
410
  }
377
- return (_jsx("div", { style: containerStyle, children: _jsx(FilterTagComponent, { isOpen: isOpen, popoverTitle: "Edit Filter", filterLabel: filterLabel, onClickDelete: handleClickDelete, setIsOpen: setIsOpen, popoverChildren: _jsx(FilterModal, { schema: schema, filter: filter, fieldValuesMap: fieldValuesMap, customOperatorOptions: customOperatorOptions, onSubmitFilter: (filter) => {
411
+ return (_jsx("div", { style: containerStyle, children: _jsx(FilterTagComponent, { isOpen: isOpen, popoverTitle: "Edit Filter", filterLabel: filterLabel, onClickDelete: handleClickDelete, setIsOpen: setIsOpen, popoverChildren: _jsx(FilterModal, { schema: schema, filter: filter, fieldValuesMap: uniqueValues ?? fieldValuesMap, customOperatorOptions: customOperatorOptions, onSubmitFilter: (filter) => {
378
412
  handleFilterSave(filter);
379
413
  setIsOpen(false);
380
414
  }, onDeleteFilter: handleClickDelete, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, SecondaryButtonComponent: SecondaryButtonComponent ?? undefined, MultiSelectComponent: MultiSelectComponent }) }) }));
@@ -69,7 +69,11 @@ export declare const getDateFilterInfo: (node: any) => {
69
69
  intervalType: any;
70
70
  intervalPaths: any;
71
71
  };
72
- export declare function removeNonSelectedTableReferences(ast: any, table: string, columns: string[]): any;
72
+ export declare function removeNonSelectedTableReferences(ast: any, table: string, columns: string[], uniqueValues: {
73
+ [column: string]: {
74
+ [value: string]: boolean;
75
+ };
76
+ } | null): any;
73
77
  export declare function allNumericNodesValidInTree(node: any): boolean;
74
78
  export declare function isIdColumn(columnName?: string): boolean | "" | undefined;
75
79
  export declare function getCustomSentence(node: any, databaseType: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/util.ts"],"names":[],"mappings":"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"}