@quillsql/react 2.12.39 → 2.12.41

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 (201) hide show
  1. package/dist/cjs/Chart.js +1 -1
  2. package/dist/cjs/ChartBuilder.d.ts +1 -1
  3. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  4. package/dist/cjs/ChartBuilder.js +6 -6
  5. package/dist/cjs/Dashboard.d.ts +35 -3
  6. package/dist/cjs/Dashboard.d.ts.map +1 -1
  7. package/dist/cjs/Dashboard.js +72 -74
  8. package/dist/cjs/ReportBuilder.d.ts +1 -1
  9. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  10. package/dist/cjs/ReportBuilder.js +111 -1588
  11. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  12. package/dist/cjs/components/Chart/BarChart.js +0 -9
  13. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  14. package/dist/cjs/components/Chart/LineChart.js +1 -11
  15. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
  16. package/dist/cjs/components/Dashboard/ChartComponent.js +1 -0
  17. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts +12 -0
  18. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -0
  19. package/dist/cjs/components/Dashboard/DashboardTemplate.js +69 -0
  20. package/dist/cjs/components/Dashboard/DataLoader.js +1 -1
  21. package/dist/cjs/components/Dashboard/TemplateChartComponent.d.ts +4 -0
  22. package/dist/cjs/components/Dashboard/TemplateChartComponent.d.ts.map +1 -0
  23. package/dist/cjs/components/Dashboard/TemplateChartComponent.js +23 -0
  24. package/dist/cjs/components/Dashboard/TemplateMetricComponent.d.ts +4 -0
  25. package/dist/cjs/components/Dashboard/TemplateMetricComponent.d.ts.map +1 -0
  26. package/dist/cjs/components/Dashboard/TemplateMetricComponent.js +23 -0
  27. package/dist/cjs/components/Dashboard/TemplateTableComponent.d.ts +15 -0
  28. package/dist/cjs/components/Dashboard/TemplateTableComponent.d.ts.map +1 -0
  29. package/dist/cjs/components/Dashboard/TemplateTableComponent.js +23 -0
  30. package/dist/cjs/components/Dashboard/util.d.ts +6 -0
  31. package/dist/cjs/components/Dashboard/util.d.ts.map +1 -0
  32. package/dist/cjs/components/Dashboard/util.js +85 -0
  33. package/dist/cjs/components/ReportBuilder/FilterModal.js +32 -32
  34. package/dist/cjs/components/ReportBuilder/convert.d.ts +5 -31
  35. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  36. package/dist/cjs/components/ReportBuilder/convert.js +1 -1
  37. package/dist/cjs/components/UiComponents.d.ts +1 -23
  38. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  39. package/dist/cjs/components/UiComponents.js +67 -25
  40. package/dist/cjs/hooks/useAskQuill.d.ts +27 -0
  41. package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -0
  42. package/dist/cjs/hooks/useAskQuill.js +177 -0
  43. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  44. package/dist/cjs/hooks/useDashboard.js +7 -5
  45. package/dist/cjs/index.d.ts +1 -0
  46. package/dist/cjs/index.d.ts.map +1 -1
  47. package/dist/cjs/index.js +3 -1
  48. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +3 -3
  49. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  50. package/dist/cjs/internals/ReportBuilder/PivotForm.js +4 -2
  51. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +1 -15
  52. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  53. package/dist/cjs/internals/ReportBuilder/PivotModal.js +24 -24
  54. package/dist/cjs/models/Filter.d.ts +25 -19
  55. package/dist/cjs/models/Filter.d.ts.map +1 -1
  56. package/dist/cjs/models/Filter.js +2 -2
  57. package/dist/cjs/{components/ReportBuilder/pivot.d.ts → models/Pivot.d.ts} +13 -4
  58. package/dist/cjs/models/Pivot.d.ts.map +1 -0
  59. package/dist/cjs/models/Report.d.ts +5 -1
  60. package/dist/cjs/models/Report.d.ts.map +1 -1
  61. package/dist/cjs/models/Tables.d.ts +16 -0
  62. package/dist/cjs/models/Tables.d.ts.map +1 -1
  63. package/dist/cjs/utils/astFilterProcessing.js +27 -27
  64. package/dist/cjs/utils/astProcessing.d.ts +42 -0
  65. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  66. package/dist/cjs/utils/astProcessing.js +210 -1
  67. package/dist/cjs/utils/constants.d.ts +1 -0
  68. package/dist/cjs/utils/constants.d.ts.map +1 -1
  69. package/dist/cjs/utils/constants.js +2 -1
  70. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  71. package/dist/cjs/utils/dashboard.js +2 -0
  72. package/dist/cjs/utils/dataFetcher.d.ts +4 -0
  73. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  74. package/dist/cjs/utils/dataFetcher.js +24 -1
  75. package/dist/cjs/utils/dates.d.ts +1 -1
  76. package/dist/cjs/utils/filterProcessing.d.ts +2 -2
  77. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  78. package/dist/cjs/utils/filterProcessing.js +6 -6
  79. package/dist/cjs/utils/pivotConstructor.d.ts +1 -1
  80. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  81. package/dist/cjs/utils/pivotConstructor.js +7 -4
  82. package/dist/cjs/utils/pivotProcessing.d.ts +4 -4
  83. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  84. package/dist/cjs/utils/pivotProcessing.js +21 -2
  85. package/dist/cjs/utils/queryConstructor.d.ts +1 -1
  86. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  87. package/dist/cjs/utils/queryConstructor.js +3 -3
  88. package/dist/cjs/utils/report.d.ts +25 -0
  89. package/dist/cjs/utils/report.d.ts.map +1 -1
  90. package/dist/cjs/utils/report.js +114 -2
  91. package/dist/cjs/utils/schema.d.ts.map +1 -1
  92. package/dist/cjs/utils/schema.js +1 -1
  93. package/dist/cjs/utils/tableProcessing.d.ts +18 -0
  94. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  95. package/dist/cjs/utils/tableProcessing.js +94 -1
  96. package/dist/esm/Chart.js +1 -1
  97. package/dist/esm/ChartBuilder.d.ts +1 -1
  98. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  99. package/dist/esm/ChartBuilder.js +6 -6
  100. package/dist/esm/Dashboard.d.ts +35 -3
  101. package/dist/esm/Dashboard.d.ts.map +1 -1
  102. package/dist/esm/Dashboard.js +73 -75
  103. package/dist/esm/ReportBuilder.d.ts +1 -1
  104. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  105. package/dist/esm/ReportBuilder.js +121 -1598
  106. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  107. package/dist/esm/components/Chart/BarChart.js +0 -9
  108. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  109. package/dist/esm/components/Chart/LineChart.js +1 -11
  110. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  111. package/dist/esm/components/Dashboard/ChartComponent.js +1 -0
  112. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts +12 -0
  113. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -0
  114. package/dist/esm/components/Dashboard/DashboardTemplate.js +63 -0
  115. package/dist/esm/components/Dashboard/DataLoader.js +1 -1
  116. package/dist/esm/components/Dashboard/TemplateChartComponent.d.ts +4 -0
  117. package/dist/esm/components/Dashboard/TemplateChartComponent.d.ts.map +1 -0
  118. package/dist/esm/components/Dashboard/TemplateChartComponent.js +17 -0
  119. package/dist/esm/components/Dashboard/TemplateMetricComponent.d.ts +4 -0
  120. package/dist/esm/components/Dashboard/TemplateMetricComponent.d.ts.map +1 -0
  121. package/dist/esm/components/Dashboard/TemplateMetricComponent.js +17 -0
  122. package/dist/esm/components/Dashboard/TemplateTableComponent.d.ts +15 -0
  123. package/dist/esm/components/Dashboard/TemplateTableComponent.d.ts.map +1 -0
  124. package/dist/esm/components/Dashboard/TemplateTableComponent.js +17 -0
  125. package/dist/esm/components/Dashboard/util.d.ts +6 -0
  126. package/dist/esm/components/Dashboard/util.d.ts.map +1 -0
  127. package/dist/esm/components/Dashboard/util.js +80 -0
  128. package/dist/esm/components/ReportBuilder/FilterModal.js +32 -32
  129. package/dist/esm/components/ReportBuilder/convert.d.ts +5 -31
  130. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  131. package/dist/esm/components/ReportBuilder/convert.js +1 -1
  132. package/dist/esm/components/UiComponents.d.ts +1 -23
  133. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  134. package/dist/esm/components/UiComponents.js +65 -23
  135. package/dist/esm/hooks/useAskQuill.d.ts +27 -0
  136. package/dist/esm/hooks/useAskQuill.d.ts.map +1 -0
  137. package/dist/esm/hooks/useAskQuill.js +173 -0
  138. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  139. package/dist/esm/hooks/useDashboard.js +7 -5
  140. package/dist/esm/index.d.ts +1 -0
  141. package/dist/esm/index.d.ts.map +1 -1
  142. package/dist/esm/index.js +1 -0
  143. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +3 -3
  144. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  145. package/dist/esm/internals/ReportBuilder/PivotForm.js +4 -2
  146. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +1 -15
  147. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  148. package/dist/esm/internals/ReportBuilder/PivotModal.js +24 -24
  149. package/dist/esm/models/Filter.d.ts +25 -19
  150. package/dist/esm/models/Filter.d.ts.map +1 -1
  151. package/dist/esm/models/Filter.js +2 -2
  152. package/dist/esm/{components/ReportBuilder/pivot.d.ts → models/Pivot.d.ts} +13 -4
  153. package/dist/esm/models/Pivot.d.ts.map +1 -0
  154. package/dist/esm/models/Report.d.ts +5 -1
  155. package/dist/esm/models/Report.d.ts.map +1 -1
  156. package/dist/esm/models/Tables.d.ts +16 -0
  157. package/dist/esm/models/Tables.d.ts.map +1 -1
  158. package/dist/esm/utils/astFilterProcessing.js +27 -27
  159. package/dist/esm/utils/astProcessing.d.ts +42 -0
  160. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  161. package/dist/esm/utils/astProcessing.js +204 -0
  162. package/dist/esm/utils/constants.d.ts +1 -0
  163. package/dist/esm/utils/constants.d.ts.map +1 -1
  164. package/dist/esm/utils/constants.js +1 -0
  165. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  166. package/dist/esm/utils/dashboard.js +2 -0
  167. package/dist/esm/utils/dataFetcher.d.ts +4 -0
  168. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  169. package/dist/esm/utils/dataFetcher.js +22 -0
  170. package/dist/esm/utils/dates.d.ts +1 -1
  171. package/dist/esm/utils/filterProcessing.d.ts +2 -2
  172. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  173. package/dist/esm/utils/filterProcessing.js +7 -7
  174. package/dist/esm/utils/pivotConstructor.d.ts +1 -1
  175. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  176. package/dist/esm/utils/pivotConstructor.js +7 -4
  177. package/dist/esm/utils/pivotProcessing.d.ts +4 -4
  178. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  179. package/dist/esm/utils/pivotProcessing.js +19 -1
  180. package/dist/esm/utils/queryConstructor.d.ts +1 -1
  181. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  182. package/dist/esm/utils/queryConstructor.js +3 -3
  183. package/dist/esm/utils/report.d.ts +25 -0
  184. package/dist/esm/utils/report.d.ts.map +1 -1
  185. package/dist/esm/utils/report.js +114 -3
  186. package/dist/esm/utils/schema.d.ts.map +1 -1
  187. package/dist/esm/utils/schema.js +1 -1
  188. package/dist/esm/utils/tableProcessing.d.ts +18 -0
  189. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  190. package/dist/esm/utils/tableProcessing.js +91 -1
  191. package/package.json +1 -1
  192. package/dist/cjs/components/ReportBuilder/pivot.d.ts.map +0 -1
  193. package/dist/cjs/models/Pivots.d.ts +0 -2
  194. package/dist/cjs/models/Pivots.d.ts.map +0 -1
  195. package/dist/cjs/models/Pivots.js +0 -2
  196. package/dist/esm/components/ReportBuilder/pivot.d.ts.map +0 -1
  197. package/dist/esm/models/Pivots.d.ts +0 -2
  198. package/dist/esm/models/Pivots.d.ts.map +0 -1
  199. package/dist/esm/models/Pivots.js +0 -1
  200. /package/dist/cjs/{components/ReportBuilder/pivot.js → models/Pivot.js} +0 -0
  201. /package/dist/esm/{components/ReportBuilder/pivot.js → models/Pivot.js} +0 -0
@@ -204,7 +204,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
204
204
  setIsOpen(false);
205
205
  };
206
206
  const onSelectCreatedPivot = (pivot) => {
207
- selectPivot(pivot, pivot.columnField ? uniqueValues : undefined, dateRanges[pivot.rowField]?.dateRange, samplePivotTable);
207
+ selectPivot(pivot, pivot.columnField ? uniqueValues : undefined, dateRanges[pivot.rowField || '']?.dateRange, samplePivotTable);
208
208
  setSelectedPivotType('created');
209
209
  setIsOpen(false);
210
210
  setPopUpTitle('Add pivot');
@@ -283,7 +283,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
283
283
  }
284
284
  return {
285
285
  ...pivot,
286
- rowFieldType: columnsToShow[pivot.rowField],
286
+ rowFieldType: columnsToShow[pivot.rowField || ''],
287
287
  columnFieldType: pivot.columnField
288
288
  ? columnsToShow[pivot.columnField]
289
289
  : undefined,
@@ -802,7 +802,7 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
802
802
  // Handle edge-case for BigQuery objects.
803
803
  data = fixBigQueryData(data);
804
804
  if (!dateRange) {
805
- if (isDateField(pivot.rowFieldType)) {
805
+ if (isDateField(pivot.rowFieldType || '')) {
806
806
  dateRange = getDateRange(dateRange, pivot.rowField, data);
807
807
  }
808
808
  }
@@ -812,9 +812,9 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
812
812
  compRange = undefined;
813
813
  }
814
814
  const pivotRows = [];
815
- const uniqueRows = (isDateField(pivot.rowFieldType)
815
+ const uniqueRows = (isDateField(pivot.rowFieldType || '')
816
816
  ? getDateBuckets(dateRange, pivot.rowField, data, dateBucket)
817
- : [...new Set(data.map((item) => item[pivot.rowField]))]).filter((row) => Boolean(row));
817
+ : [...new Set(data.map((item) => item[pivot.rowField || '']))]).filter((row) => Boolean(row));
818
818
  const rowDateRange = getDateRange(dateRange, pivot.rowField, data);
819
819
  const compRowDateRange = getDateRange(compRange ?? dateRange, pivot.rowField, data);
820
820
  // If columnField is not provided, we will not be using uniqueColumns
@@ -834,7 +834,7 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
834
834
  const col = pivot.columnField;
835
835
  const row = pivot.rowField;
836
836
  const isDateCol = isDateField(pivot.columnFieldType || '');
837
- const isDateRow = isDateField(pivot.rowFieldType);
837
+ const isDateRow = isDateField(pivot.rowFieldType || '');
838
838
  data.forEach((item) => {
839
839
  if (isDateCol) {
840
840
  const key = getDateString(item[col], dateRange);
@@ -854,9 +854,9 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
854
854
  uniqueColumns.push(`comparison_${primaryKey}`);
855
855
  }
856
856
  }
857
- compUniqueRows = (isDateField(pivot.rowFieldType)
857
+ compUniqueRows = (isDateField(pivot.rowFieldType || '')
858
858
  ? getCompDateBuckets(dateRange, compRange ?? dateRange, pivot.rowField, data)
859
- : [...new Set(data.map((item) => item[pivot.rowField]))]).filter((row) => Boolean(row));
859
+ : [...new Set(data.map((item) => item[pivot.rowField || '']))]).filter((row) => Boolean(row));
860
860
  }
861
861
  // Special corner case for count with only rowField pivot
862
862
  if (!pivot.valueField &&
@@ -872,7 +872,7 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
872
872
  : uniqueRows;
873
873
  rowsToGenerate.forEach((rowValue, rowIndex) => {
874
874
  const row = {
875
- [pivot.rowField]: isDateField(pivot.rowFieldType)
875
+ [pivot.rowField || '']: isDateField(pivot.rowFieldType || '')
876
876
  ? getDateString(rowValue, dateRange, dateBucket)
877
877
  : rowValue === null
878
878
  ? 'Null'
@@ -887,12 +887,12 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
887
887
  let filteredData = [];
888
888
  let comparisonValue;
889
889
  let value;
890
- const nextRowValue = isDateField(pivot.rowFieldType)
890
+ const nextRowValue = isDateField(pivot.rowFieldType || '')
891
891
  ? // @ts-ignore
892
892
  uniqueRows[rowIndex + 1] ?? endOfDay(rowDateRange.end)
893
893
  : null;
894
894
  const compRowValue = compUniqueRows[rowIndex];
895
- const compNextRowValue = isDateField(pivot.rowFieldType)
895
+ const compNextRowValue = isDateField(pivot.rowFieldType || '')
896
896
  ? compUniqueRows[rowIndex + 1] ?? endOfDay(compRowDateRange.end)
897
897
  : null;
898
898
  if (pivot.columnField) {
@@ -902,9 +902,9 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
902
902
  : null;
903
903
  // If columnField is provided, filter by both rowField and columnField
904
904
  if (isDateField(pivot.columnFieldType || '') &&
905
- isDateField(pivot.rowFieldType)) {
905
+ isDateField(pivot.rowFieldType || '')) {
906
906
  filteredData = data.filter((item) => {
907
- return (isWithinInterval(new Date(item[pivot.rowField]), {
907
+ return (isWithinInterval(new Date(item[pivot.rowField || '']), {
908
908
  start: rowValue,
909
909
  end: subMilliseconds(nextRowValue, 1),
910
910
  }) &&
@@ -915,7 +915,7 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
915
915
  });
916
916
  if (isComparison) {
917
917
  comparisonFilteredData = data.filter((item) => {
918
- return (isWithinInterval(new Date(item[pivot.rowField]), {
918
+ return (isWithinInterval(new Date(item[pivot.rowField || '']), {
919
919
  start: rowValue,
920
920
  end: subMilliseconds(nextRowValue, 1),
921
921
  }) &&
@@ -927,9 +927,9 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
927
927
  }
928
928
  }
929
929
  else if (isDateField(pivot.columnFieldType || '') &&
930
- !isDateField(pivot.rowFieldType)) {
930
+ !isDateField(pivot.rowFieldType || '')) {
931
931
  filteredData = data.filter((item) => {
932
- return (item[pivot.rowField] === rowValue &&
932
+ return (item[pivot.rowField || ''] === rowValue &&
933
933
  isWithinInterval(new Date(item[pivot.columnField]), {
934
934
  start: colValue,
935
935
  end: subMilliseconds(nextColumnValue, 1),
@@ -946,16 +946,16 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
946
946
  }
947
947
  }
948
948
  else if (!isDateField(pivot.columnFieldType || '') &&
949
- isDateField(pivot.rowFieldType)) {
949
+ isDateField(pivot.rowFieldType || '')) {
950
950
  filteredData = data.filter((item) => {
951
- return (isWithinInterval(new Date(item[pivot.rowField]), {
951
+ return (isWithinInterval(new Date(item[pivot.rowField || '']), {
952
952
  start: rowValue,
953
953
  end: subMilliseconds(nextRowValue, 1),
954
954
  }) && item[pivot.columnField || ''] === colValue);
955
955
  });
956
956
  if (isComparison) {
957
957
  comparisonFilteredData = data.filter((item) => {
958
- return (isWithinInterval(new Date(item[pivot.rowField]), {
958
+ return (isWithinInterval(new Date(item[pivot.rowField || '']), {
959
959
  start: rowValue,
960
960
  end: subMilliseconds(nextRowValue, 1),
961
961
  }) &&
@@ -965,7 +965,7 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
965
965
  }
966
966
  else {
967
967
  filteredData = data.filter((item) => {
968
- return (item[pivot.rowField] === rowValue &&
968
+ return (item[pivot.rowField || ''] === rowValue &&
969
969
  item[pivot.columnField || ''] === colValue);
970
970
  });
971
971
  if (isComparison) {
@@ -981,7 +981,7 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
981
981
  // so there is no need to filter for comparisonFilteredData here.
982
982
  // If columnField is not provided, filter by rowField only
983
983
  if (colValue.startsWith('comparison_')) {
984
- filteredData = isDateField(pivot.rowFieldType)
984
+ filteredData = isDateField(pivot.rowFieldType || '')
985
985
  ? data.filter((item) => {
986
986
  return (compRowValue &&
987
987
  isWithinInterval(new Date(item[`comparison_${pivot.rowField}`]), {
@@ -992,14 +992,14 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
992
992
  : data.filter((item) => item[`comparison_${pivot.rowField}`] === compRowValue);
993
993
  }
994
994
  else {
995
- filteredData = isDateField(pivot.rowFieldType)
995
+ filteredData = isDateField(pivot.rowFieldType || '')
996
996
  ? data.filter((item) => {
997
- return isWithinInterval(new Date(item[pivot.rowField]), {
997
+ return isWithinInterval(new Date(item[pivot.rowField || '']), {
998
998
  start: rowValue,
999
999
  end: subMilliseconds(nextRowValue, 1),
1000
1000
  });
1001
1001
  })
1002
- : data.filter((item) => item[pivot.rowField] === rowValue);
1002
+ : data.filter((item) => item[pivot.rowField || ''] === rowValue);
1003
1003
  }
1004
1004
  }
1005
1005
  // Aggregation logic remains the same
@@ -43,7 +43,7 @@ export declare enum TimeUnit {
43
43
  }
44
44
  export declare enum FieldTypes {
45
45
  String = "string",
46
- Numeric = "numeric",
46
+ Number = "number",
47
47
  Date = "date",
48
48
  Null = "null",
49
49
  Boolean = "boolean"
@@ -61,58 +61,64 @@ export declare enum FilterNames {
61
61
  export type Operator = StringOperator | DateOperator | NumberOperator | NullOperator | BoolOperator;
62
62
  export type Unit = TimeUnit;
63
63
  export interface BaseFilter {
64
- name: FilterNames;
65
- type: FieldTypes;
64
+ filterType: FilterNames;
65
+ fieldType: FieldTypes;
66
66
  operator: Operator;
67
67
  field: string;
68
68
  value: any;
69
69
  table?: string;
70
70
  }
71
71
  export interface StringFilter extends BaseFilter {
72
- name: FilterNames.StringFilter;
73
- type: FieldTypes.String | FieldTypes.Null;
72
+ filterType: FilterNames.StringFilter;
73
+ fieldType: FieldTypes.String | FieldTypes.Null;
74
74
  value: string;
75
75
  }
76
76
  export interface StringInFilter extends BaseFilter {
77
- name: FilterNames.StringInFilter;
78
- type: FieldTypes.String;
77
+ filterType: FilterNames.StringInFilter;
78
+ fieldType: FieldTypes.String;
79
79
  value: string[];
80
80
  }
81
81
  export interface NumericFilter extends BaseFilter {
82
- name: FilterNames.NumericFilter;
83
- type: FieldTypes.Numeric | FieldTypes.Null;
82
+ filterType: FilterNames.NumericFilter;
83
+ fieldType: FieldTypes.Number | FieldTypes.Null;
84
84
  value: number;
85
85
  }
86
86
  export interface DateFilter extends BaseFilter {
87
- name: FilterNames.DateFilter;
88
- type: FieldTypes.Date;
87
+ filterType: FilterNames.DateFilter;
88
+ fieldType: FieldTypes.Date;
89
89
  value: {
90
90
  value: number;
91
91
  unit: string;
92
92
  };
93
93
  }
94
94
  export interface DateCustomFilter extends BaseFilter {
95
- name: FilterNames.DateCustomFilter;
96
- type: FieldTypes.Date;
95
+ filterType: FilterNames.DateCustomFilter;
96
+ fieldType: FieldTypes.Date;
97
97
  value: {
98
98
  startDate: string;
99
99
  endDate: string;
100
100
  };
101
101
  }
102
102
  export interface DateComparisonFilter extends BaseFilter {
103
- name: FilterNames.DateComparisonFilter;
104
- type: FieldTypes.Date;
103
+ filterType: FilterNames.DateComparisonFilter;
104
+ fieldType: FieldTypes.Date;
105
105
  value: string;
106
106
  }
107
107
  export interface BooleanFilter extends BaseFilter {
108
- name: FilterNames.BooleanFilter;
109
- type: FieldTypes.Boolean;
108
+ filterType: FilterNames.BooleanFilter;
109
+ fieldType: FieldTypes.Boolean;
110
110
  value: boolean;
111
111
  }
112
112
  export interface NullFilter extends BaseFilter {
113
- name: FilterNames.NullFilter;
114
- type: FieldTypes.Null;
113
+ filterType: FilterNames.NullFilter;
114
+ fieldType: FieldTypes.Null;
115
115
  value: null;
116
116
  }
117
117
  export type Filter = BaseFilter | StringFilter | StringInFilter | NumericFilter | DateFilter | DateCustomFilter | DateComparisonFilter | BooleanFilter | NullFilter;
118
+ export type FilterInfo = {
119
+ filter?: Filter;
120
+ conditional?: string;
121
+ };
122
+ export type BooleanOperator = 'AND' | 'OR';
123
+ export type Filters = [Filter] | [Filter, BooleanOperator, ...Array<[Filter, BooleanOperator]>, Filter];
118
124
  //# sourceMappingURL=Filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../src/models/Filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../src/models/Filter.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ const MONTH = 'month';
22
22
  const WEEK = 'week';
23
23
  const DAY = 'day';
24
24
  const HOUR = 'hour';
25
- const NUMERIC = 'numeric';
25
+ const NUMBER = 'number';
26
26
  const STRING = 'string';
27
27
  const DATE = 'date';
28
28
  const NULL = 'null';
@@ -80,7 +80,7 @@ export var TimeUnit;
80
80
  export var FieldTypes;
81
81
  (function (FieldTypes) {
82
82
  FieldTypes["String"] = "string";
83
- FieldTypes["Numeric"] = "numeric";
83
+ FieldTypes["Number"] = "number";
84
84
  FieldTypes["Date"] = "date";
85
85
  FieldTypes["Null"] = "null";
86
86
  FieldTypes["Boolean"] = "boolean";
@@ -8,9 +8,18 @@ export type Pivot = {
8
8
  rowField?: string;
9
9
  rowFieldType?: string;
10
10
  columnField?: string;
11
- sort: boolean;
12
- sortDirection: 'ASC' | 'DESC';
11
+ columnFieldType?: string;
12
+ sort?: boolean;
13
+ sortDirection?: 'ASC' | 'DESC';
13
14
  sortField?: string;
14
15
  sortFieldType?: string;
15
- } | null;
16
- //# sourceMappingURL=pivot.d.ts.map
16
+ title?: string;
17
+ triggerButtonText?: string;
18
+ };
19
+ export type PivotInfo = {
20
+ pivot: Pivot;
21
+ possibleRowFields: string[];
22
+ possibleColumnFields: string[];
23
+ possibleValueFields: string[];
24
+ };
25
+ //# sourceMappingURL=Pivot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pivot.d.ts","sourceRoot":"","sources":["../../../src/models/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,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { AxisFormat } from '../Dashboard';
2
- import { Pivot } from '../internals/ReportBuilder/PivotModal';
3
2
  import { Column } from './Columns';
4
3
  import { Pagination } from './Pagination';
4
+ import { Pivot } from './Pivot';
5
5
  /**
6
6
  * ## QuillReport
7
7
  * Represents an individual item on a dashboard.
@@ -93,6 +93,10 @@ export interface QuillReportInternal extends QuillReport {
93
93
  itemQuery?: string[];
94
94
  /** An array of tables referenced by the report used */
95
95
  referencedTables?: string[];
96
+ /** An mapping of table to the columns referenced in the table. */
97
+ referencedColumns?: {
98
+ [table: string]: string[];
99
+ };
96
100
  /** An error message used for internal purposes */
97
101
  error?: string;
98
102
  /** An admin error message used for internal purposes */
@@ -1 +1 @@
1
- {"version":3,"file":"Report.d.ts","sourceRoot":"","sources":["../../../src/models/Report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IAEX,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IAEtB,0DAA0D;IAC1D,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;IAElC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAElB,uEAAuE;IACvE,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAEnD,4CAA4C;IAC5C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IAEnB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IAEnB,0CAA0C;IAC1C,WAAW,EAAE,UAAU,CAAC;IAExB;;OAEG;IACH,WAAW,EAAE;QACX,gCAAgC;QAChC,KAAK,EAAE,MAAM,CAAC;QAEd,uCAAuC;QACvC,KAAK,EAAE,MAAM,CAAC;QAEd,4CAA4C;QAC5C,MAAM,EAAE,UAAU,CAAC;KACpB,EAAE,CAAC;IAEJ;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;IAEzC,6DAA6D;IAC7D,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAGvC,UAAU,CAAC,EAAE,UAAU,CAAC;IAGxB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAG5C,QAAQ,EAAE,MAAM,CAAC;IAGjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,0BAA0B;IAC1B,SAAS,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;IAExC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
1
+ {"version":3,"file":"Report.d.ts","sourceRoot":"","sources":["../../../src/models/Report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IAEX,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IAEtB,0DAA0D;IAC1D,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;IAElC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAElB,uEAAuE;IACvE,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAEnD,4CAA4C;IAC5C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IAEnB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IAEnB,0CAA0C;IAC1C,WAAW,EAAE,UAAU,CAAC;IAExB;;OAEG;IACH,WAAW,EAAE;QACX,gCAAgC;QAChC,KAAK,EAAE,MAAM,CAAC;QAEd,uCAAuC;QACvC,KAAK,EAAE,MAAM,CAAC;QAEd,4CAA4C;QAC5C,MAAM,EAAE,UAAU,CAAC;KACpB,EAAE,CAAC;IAEJ;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;IAEzC,6DAA6D;IAC7D,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAGvC,UAAU,CAAC,EAAE,UAAU,CAAC;IAGxB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAG5C,QAAQ,EAAE,MAAM,CAAC;IAGjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,0BAA0B;IAC1B,SAAS,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;IAExC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,kEAAkE;IAClE,iBAAiB,CAAC,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IAElD,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
@@ -5,4 +5,20 @@ export interface YAxisField {
5
5
  label: string;
6
6
  format: string;
7
7
  }
8
+ export interface UniqueValuesByColumn {
9
+ [column: string]: {
10
+ [value: string]: boolean;
11
+ };
12
+ }
13
+ export interface UniqueValuesByTable {
14
+ [table: string]: UniqueValuesByColumn;
15
+ }
16
+ export interface DateRangesByColumn {
17
+ [column: string]: {
18
+ dateRange: {
19
+ start: Date;
20
+ end: Date;
21
+ };
22
+ };
23
+ }
8
24
  //# sourceMappingURL=Tables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tables.d.ts","sourceRoot":"","sources":["../../../src/models/Tables.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;CAAG;AAEzB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"Tables.d.ts","sourceRoot":"","sources":["../../../src/models/Tables.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;CAAG;AAEzB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAChD;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,MAAM,EAAE,MAAM,GAAG;QAChB,SAAS,EAAE;YACT,KAAK,EAAE,IAAI,CAAC;YACZ,GAAG,EAAE,IAAI,CAAC;SACX,CAAC;KACH,CAAC;CACH"}
@@ -60,7 +60,7 @@ const reverseOperatorMap = (operator, fieldType) => {
60
60
  return (Object.keys(stringOperatorMap).find((key) => stringOperatorMap[key].includes(operator)) ?? null);
61
61
  case FieldTypes.Date:
62
62
  return (Object.keys(dateOperatorMap).find((key) => dateOperatorMap[key].includes(operator)) ?? null);
63
- case FieldTypes.Numeric:
63
+ case FieldTypes.Number:
64
64
  return (Object.keys(numberOperatorMap).find((key) => numberOperatorMap[key].includes(operator)) ?? null);
65
65
  case FieldTypes.Null:
66
66
  return (Object.keys(nullOperatorMap).find((key) => nullOperatorMap[key].includes(operator)) ?? null);
@@ -116,7 +116,7 @@ function mapOperatorToFilterName(operator, fieldType) {
116
116
  default:
117
117
  return FilterNames.StringFilter;
118
118
  }
119
- case FieldTypes.Numeric:
119
+ case FieldTypes.Number:
120
120
  return FilterNames.NumericFilter;
121
121
  case FieldTypes.Null:
122
122
  return FilterNames.NullFilter;
@@ -4292,7 +4292,7 @@ export const astToFilter = (ast, db) => {
4292
4292
  fieldType = FieldTypes.Null;
4293
4293
  break;
4294
4294
  case 'number':
4295
- fieldType = FieldTypes.Numeric;
4295
+ fieldType = FieldTypes.Number;
4296
4296
  break;
4297
4297
  case 'single_quote_string':
4298
4298
  case 'double_quote_string':
@@ -4410,32 +4410,32 @@ export const astToFilter = (ast, db) => {
4410
4410
  case FilterNames.StringFilter:
4411
4411
  return {
4412
4412
  field: lowerFunctionToField(field, db).replaceAll('%', ''),
4413
- name: filterName,
4414
- type: FieldTypes.String,
4413
+ filterType: filterName,
4414
+ fieldType: FieldTypes.String,
4415
4415
  operator: mappedOperator,
4416
4416
  value: lowerFunctionToField(right, db).replaceAll('%', ''),
4417
4417
  };
4418
4418
  case FilterNames.StringInFilter:
4419
4419
  return {
4420
4420
  field: lowerFunctionToField(field, db).replaceAll('%', ''),
4421
- name: filterName,
4422
- type: FieldTypes.String,
4421
+ filterType: filterName,
4422
+ fieldType: FieldTypes.String,
4423
4423
  operator: mappedOperator,
4424
4424
  value: right.value.map((v) => lowerFunctionToField(v, db).replaceAll('%', '')),
4425
4425
  };
4426
4426
  case FilterNames.NumericFilter:
4427
4427
  return {
4428
4428
  field: field,
4429
- name: filterName,
4430
- type: FieldTypes.Numeric,
4429
+ filterType: filterName,
4430
+ fieldType: FieldTypes.Number,
4431
4431
  operator: mappedOperator,
4432
4432
  value: Number(right.value),
4433
4433
  };
4434
4434
  case FilterNames.NullFilter:
4435
4435
  return {
4436
4436
  field: field,
4437
- name: filterName,
4438
- type: FieldTypes.Null,
4437
+ filterType: filterName,
4438
+ fieldType: FieldTypes.Null,
4439
4439
  operator: mappedOperator,
4440
4440
  value: null,
4441
4441
  };
@@ -4448,13 +4448,13 @@ export const astToFilter = (ast, db) => {
4448
4448
  }
4449
4449
  return {
4450
4450
  field: field,
4451
- name: filterName,
4452
- type: FieldTypes.Date,
4451
+ filterType: filterName,
4452
+ fieldType: FieldTypes.Date,
4453
4453
  operator: DateOperator.Custom,
4454
4454
  value: values,
4455
4455
  };
4456
4456
  case FilterNames.DateComparisonFilter:
4457
- const numericDateComparison = reverseOperatorMap(operator, FieldTypes.Numeric);
4457
+ const numericDateComparison = reverseOperatorMap(operator, FieldTypes.Number);
4458
4458
  if (numericDateComparison) {
4459
4459
  if (!right.value ||
4460
4460
  (typeof right.value !== 'number' && typeof right.value !== 'string')) {
@@ -4465,16 +4465,16 @@ export const astToFilter = (ast, db) => {
4465
4465
  if (numericDateComparison === NumberOperator.EqualTo) {
4466
4466
  return {
4467
4467
  field: field,
4468
- name: FilterNames.DateCustomFilter,
4469
- type: FieldTypes.Date,
4468
+ filterType: FilterNames.DateCustomFilter,
4469
+ fieldType: FieldTypes.Date,
4470
4470
  operator: DateOperator.Custom,
4471
4471
  value: { startDate: right.value, endDate: right.value },
4472
4472
  };
4473
4473
  }
4474
4474
  return {
4475
4475
  field: field,
4476
- name: FilterNames.DateComparisonFilter,
4477
- type: FieldTypes.Date,
4476
+ filterType: FilterNames.DateComparisonFilter,
4477
+ fieldType: FieldTypes.Date,
4478
4478
  operator: numericDateComparison,
4479
4479
  value: right.value,
4480
4480
  };
@@ -4488,8 +4488,8 @@ export const astToFilter = (ast, db) => {
4488
4488
  if (!isNaN(value.value)) {
4489
4489
  return {
4490
4490
  field: field,
4491
- name: filterName,
4492
- type: FieldTypes.Date,
4491
+ filterType: filterName,
4492
+ fieldType: FieldTypes.Date,
4493
4493
  operator: dateOperator,
4494
4494
  value,
4495
4495
  };
@@ -4497,8 +4497,8 @@ export const astToFilter = (ast, db) => {
4497
4497
  else {
4498
4498
  return {
4499
4499
  field: field,
4500
- name: FilterNames.DateCustomFilter,
4501
- type: FieldTypes.Date,
4500
+ filterType: FilterNames.DateCustomFilter,
4501
+ fieldType: FieldTypes.Date,
4502
4502
  operator: DateOperator.Custom,
4503
4503
  value: value.value,
4504
4504
  };
@@ -4506,8 +4506,8 @@ export const astToFilter = (ast, db) => {
4506
4506
  case FilterNames.BooleanFilter:
4507
4507
  return {
4508
4508
  field: field,
4509
- name: filterName,
4510
- type: FieldTypes.Boolean,
4509
+ filterType: filterName,
4510
+ fieldType: FieldTypes.Boolean,
4511
4511
  operator: mappedOperator,
4512
4512
  value: Boolean(right.value),
4513
4513
  };
@@ -4553,7 +4553,7 @@ export const filterToAst = (filter, db) => {
4553
4553
  const { field, operator, value } = filter;
4554
4554
  const mappedOperator = operatorMap[operator][0];
4555
4555
  // Generate SQL AST based on the filter type
4556
- switch (filter.type) {
4556
+ switch (filter.fieldType) {
4557
4557
  case FieldTypes.String:
4558
4558
  if (!value) {
4559
4559
  return null;
@@ -4604,7 +4604,7 @@ export const filterToAst = (filter, db) => {
4604
4604
  right: fieldColumnToLowerCaseAst(value, db, false),
4605
4605
  };
4606
4606
  }
4607
- case FieldTypes.Numeric:
4607
+ case FieldTypes.Number:
4608
4608
  switch (mappedOperator) {
4609
4609
  default:
4610
4610
  return {
@@ -4615,7 +4615,7 @@ export const filterToAst = (filter, db) => {
4615
4615
  };
4616
4616
  }
4617
4617
  case FieldTypes.Date:
4618
- switch (filter.name) {
4618
+ switch (filter.filterType) {
4619
4619
  case FilterNames.DateCustomFilter:
4620
4620
  return {
4621
4621
  type: 'binary_expr',
@@ -1,4 +1,7 @@
1
+ import { ColumnInfo, TableInfo } from '../components/ReportBuilder/schema';
1
2
  import { Column } from '../models/Columns';
3
+ import { Pivot } from '../models/Pivot';
4
+ import { QuillReportInternal } from '../models/Report';
2
5
  export declare function getSelectFromAST(ast: any): any;
3
6
  export declare function processStarColumn(ast: any, columns: Column[]): any;
4
7
  export declare function recursiveSearchByKey(node: any, searchKey: string): any;
@@ -23,4 +26,43 @@ export declare function getColumnAndTableInfo(tableAliasMap: {
23
26
  export declare function getColumnsByTableFromASTAndSchema(ast: any, tables: any, tableAliasMap: any): {
24
27
  [table: string]: string[];
25
28
  };
29
+ export declare const isSubquery: (node: any) => boolean;
30
+ export declare const getAllPossibleColumns: (baseAst: any, schema: TableInfo[]) => (ColumnInfo & {
31
+ table: string;
32
+ })[];
33
+ export declare const createBasicSelectASTFromColumns: (columns: ColumnInfo[], tableName: string) => {
34
+ type: string;
35
+ options: null;
36
+ distinct: null;
37
+ columns: {
38
+ expr: {
39
+ type: string;
40
+ table: string;
41
+ column: any;
42
+ };
43
+ as: null;
44
+ }[];
45
+ from: {
46
+ db: null;
47
+ table: string;
48
+ as: null;
49
+ }[];
50
+ where: null;
51
+ groupby: null;
52
+ having: null;
53
+ orderby: null;
54
+ limit: null;
55
+ };
56
+ export declare const fetchAndProcessASTFromPrompt: (aiPrompt: string, schema: TableInfo[], client: any, prevPivot?: Pivot, currentQuery?: string) => Promise<{
57
+ ast: any;
58
+ pivot: Pivot | null | undefined;
59
+ whereAST: any;
60
+ error?: string | undefined;
61
+ }>;
62
+ export declare const fetchASTFromQuillReport: (report: QuillReportInternal, client: any, schema: any) => Promise<{
63
+ ast: any;
64
+ pivot: Pivot | undefined | null;
65
+ schema?: TableInfo[] | undefined;
66
+ error?: string | undefined;
67
+ }>;
26
68
  //# sourceMappingURL=astProcessing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,OAQxC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAe5D;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAgBtE;AAGD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CAgB1E;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG;;EA4BtD;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAahD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CActE;AAED,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,GAAG,EACT,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,GAAG,EAAE,GACb,GAAG,CAYL;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAC1C,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,GAAG,GACd;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAqCvD;AAED,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,GAAG,EACX,aAAa,EAAE,GAAG,GACjB;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAqG/B"}
1
+ {"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAK3E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,OAQxC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAe5D;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAgBtE;AAGD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CAgB1E;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG;;EA4BtD;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAahD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CActE;AAED,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,GAAG,EACT,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,GAAG,EAAE,GACb,GAAG,CAYL;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAC1C,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,GAAG,GACd;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAqCvD;AAED,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,GAAG,EACX,aAAa,EAAE,GAAG,GACjB;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAqG/B;AAED,eAAO,MAAM,UAAU,SAAU,GAAG,YAWnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,YACvB,GAAG,UACJ,SAAS,EAAE,KAClB,CAAC,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAmClC,CAAC;AAEF,eAAO,MAAM,+BAA+B,YACjC,UAAU,EAAE,aACV,MAAM;;;;;;;;;;;;;;;;;;;;;;CAsBlB,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAC7B,MAAM,UACR,SAAS,EAAE,UACX,GAAG,cACC,KAAK,iBACF,MAAM;SAEhB,GAAG;WACD,KAAK,GAAG,IAAI,GAAG,SAAS;cACrB,GAAG;;EA6Fd,CAAC;AAEF,eAAO,MAAM,uBAAuB,WAC1B,mBAAmB,UACnB,GAAG,UACH,GAAG;SAEN,GAAG;WACD,KAAK,GAAG,SAAS,GAAG,IAAI;;;EAmDhC,CAAC"}