@quillsql/react 2.12.27 → 2.12.29

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 (155) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +40 -21
  3. package/dist/cjs/ChartBuilder.d.ts +38 -4
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +66 -25
  6. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  7. package/dist/cjs/ChartEditor.js +66 -26
  8. package/dist/cjs/Context.d.ts +1 -19
  9. package/dist/cjs/Context.d.ts.map +1 -1
  10. package/dist/cjs/Context.js +32 -83
  11. package/dist/cjs/Dashboard.d.ts +6 -1
  12. package/dist/cjs/Dashboard.d.ts.map +1 -1
  13. package/dist/cjs/Dashboard.js +79 -50
  14. package/dist/cjs/ReportBuilder.d.ts +10 -1
  15. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  16. package/dist/cjs/ReportBuilder.js +331 -99
  17. package/dist/cjs/SQLEditor.d.ts +10 -1
  18. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  19. package/dist/cjs/SQLEditor.js +122 -29
  20. package/dist/cjs/Table.d.ts.map +1 -1
  21. package/dist/cjs/Table.js +21 -11
  22. package/dist/cjs/components/Chart/ChartTooltip.d.ts.map +1 -1
  23. package/dist/cjs/components/Chart/ChartTooltip.js +5 -4
  24. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  25. package/dist/cjs/components/Dashboard/DataLoader.js +61 -20
  26. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  27. package/dist/cjs/components/Dashboard/MetricComponent.js +7 -1
  28. package/dist/cjs/components/Dashboard/TableComponent.d.ts +16 -2
  29. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  30. package/dist/cjs/components/Dashboard/TableComponent.js +2 -14
  31. package/dist/cjs/components/QuillTable.d.ts +2 -2
  32. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  33. package/dist/cjs/components/QuillTable.js +7 -5
  34. package/dist/cjs/components/UiComponents.d.ts +3 -3
  35. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  36. package/dist/cjs/components/UiComponents.js +4 -4
  37. package/dist/cjs/hooks/useDashboard.d.ts +1 -1
  38. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  39. package/dist/cjs/hooks/useDashboard.js +18 -4
  40. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +16 -1
  41. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  42. package/dist/cjs/internals/ReportBuilder/PivotModal.js +179 -105
  43. package/dist/cjs/utils/columnProcessing.d.ts +1 -0
  44. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  45. package/dist/cjs/utils/columnProcessing.js +8 -1
  46. package/dist/cjs/utils/constants.d.ts +2 -0
  47. package/dist/cjs/utils/constants.d.ts.map +1 -0
  48. package/dist/cjs/utils/constants.js +4 -0
  49. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  50. package/dist/cjs/utils/dashboard.js +26 -96
  51. package/dist/cjs/utils/dataFetcher.d.ts +1 -1
  52. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  53. package/dist/cjs/utils/dataFetcher.js +63 -15
  54. package/dist/cjs/utils/dates.d.ts +9 -0
  55. package/dist/cjs/utils/dates.d.ts.map +1 -1
  56. package/dist/cjs/utils/dates.js +43 -1
  57. package/dist/cjs/utils/logging.d.ts +2 -0
  58. package/dist/cjs/utils/logging.d.ts.map +1 -0
  59. package/dist/cjs/utils/logging.js +10 -0
  60. package/dist/cjs/utils/monacoAutocomplete.d.ts +20 -0
  61. package/dist/cjs/utils/monacoAutocomplete.d.ts.map +1 -0
  62. package/dist/cjs/utils/monacoAutocomplete.js +145 -0
  63. package/dist/cjs/utils/pivotConstructor.d.ts +6 -0
  64. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -0
  65. package/dist/cjs/utils/pivotConstructor.js +140 -0
  66. package/dist/cjs/utils/queryConstructor.d.ts +5 -2
  67. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  68. package/dist/cjs/utils/queryConstructor.js +149 -53
  69. package/dist/cjs/utils/queryConstructor.uspec.d.ts +2 -0
  70. package/dist/cjs/utils/queryConstructor.uspec.d.ts.map +1 -0
  71. package/dist/cjs/utils/queryConstructor.uspec.js +225 -0
  72. package/dist/cjs/utils/tableProcessing.d.ts +23 -0
  73. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  74. package/dist/cjs/utils/tableProcessing.js +125 -2
  75. package/dist/esm/Chart.d.ts.map +1 -1
  76. package/dist/esm/Chart.js +40 -21
  77. package/dist/esm/ChartBuilder.d.ts +38 -4
  78. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  79. package/dist/esm/ChartBuilder.js +64 -24
  80. package/dist/esm/ChartEditor.d.ts.map +1 -1
  81. package/dist/esm/ChartEditor.js +66 -26
  82. package/dist/esm/Context.d.ts +1 -19
  83. package/dist/esm/Context.d.ts.map +1 -1
  84. package/dist/esm/Context.js +32 -82
  85. package/dist/esm/Dashboard.d.ts +6 -1
  86. package/dist/esm/Dashboard.d.ts.map +1 -1
  87. package/dist/esm/Dashboard.js +80 -51
  88. package/dist/esm/ReportBuilder.d.ts +10 -1
  89. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  90. package/dist/esm/ReportBuilder.js +333 -101
  91. package/dist/esm/SQLEditor.d.ts +10 -1
  92. package/dist/esm/SQLEditor.d.ts.map +1 -1
  93. package/dist/esm/SQLEditor.js +123 -30
  94. package/dist/esm/Table.d.ts.map +1 -1
  95. package/dist/esm/Table.js +21 -11
  96. package/dist/esm/components/Chart/ChartTooltip.d.ts.map +1 -1
  97. package/dist/esm/components/Chart/ChartTooltip.js +5 -4
  98. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  99. package/dist/esm/components/Dashboard/DataLoader.js +61 -20
  100. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  101. package/dist/esm/components/Dashboard/MetricComponent.js +7 -1
  102. package/dist/esm/components/Dashboard/TableComponent.d.ts +16 -2
  103. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  104. package/dist/esm/components/Dashboard/TableComponent.js +2 -14
  105. package/dist/esm/components/QuillTable.d.ts +2 -2
  106. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  107. package/dist/esm/components/QuillTable.js +7 -5
  108. package/dist/esm/components/UiComponents.d.ts +3 -3
  109. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  110. package/dist/esm/components/UiComponents.js +4 -4
  111. package/dist/esm/hooks/useDashboard.d.ts +1 -1
  112. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  113. package/dist/esm/hooks/useDashboard.js +19 -5
  114. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +16 -1
  115. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  116. package/dist/esm/internals/ReportBuilder/PivotModal.js +177 -105
  117. package/dist/esm/utils/columnProcessing.d.ts +1 -0
  118. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  119. package/dist/esm/utils/columnProcessing.js +6 -0
  120. package/dist/esm/utils/constants.d.ts +2 -0
  121. package/dist/esm/utils/constants.d.ts.map +1 -0
  122. package/dist/esm/utils/constants.js +1 -0
  123. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  124. package/dist/esm/utils/dashboard.js +27 -97
  125. package/dist/esm/utils/dataFetcher.d.ts +1 -1
  126. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  127. package/dist/esm/utils/dataFetcher.js +63 -15
  128. package/dist/esm/utils/dates.d.ts +9 -0
  129. package/dist/esm/utils/dates.d.ts.map +1 -1
  130. package/dist/esm/utils/dates.js +39 -0
  131. package/dist/esm/utils/logging.d.ts +2 -0
  132. package/dist/esm/utils/logging.d.ts.map +1 -0
  133. package/dist/esm/utils/logging.js +6 -0
  134. package/dist/esm/utils/monacoAutocomplete.d.ts +20 -0
  135. package/dist/esm/utils/monacoAutocomplete.d.ts.map +1 -0
  136. package/dist/esm/utils/monacoAutocomplete.js +140 -0
  137. package/dist/esm/utils/pivotConstructor.d.ts +6 -0
  138. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -0
  139. package/dist/esm/utils/pivotConstructor.js +136 -0
  140. package/dist/esm/utils/queryConstructor.d.ts +5 -2
  141. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  142. package/dist/esm/utils/queryConstructor.js +145 -52
  143. package/dist/esm/utils/queryConstructor.uspec.d.ts +2 -0
  144. package/dist/esm/utils/queryConstructor.uspec.d.ts.map +1 -0
  145. package/dist/esm/utils/queryConstructor.uspec.js +223 -0
  146. package/dist/esm/utils/tableProcessing.d.ts +23 -0
  147. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  148. package/dist/esm/utils/tableProcessing.js +122 -2
  149. package/package.json +1 -1
  150. package/dist/cjs/internals/ReportBuilder/PivotModal.spec.d.ts +0 -2
  151. package/dist/cjs/internals/ReportBuilder/PivotModal.spec.d.ts.map +0 -1
  152. package/dist/cjs/internals/ReportBuilder/PivotModal.spec.js +0 -213
  153. package/dist/esm/internals/ReportBuilder/PivotModal.spec.d.ts +0 -2
  154. package/dist/esm/internals/ReportBuilder/PivotModal.spec.d.ts.map +0 -1
  155. package/dist/esm/internals/ReportBuilder/PivotModal.spec.js +0 -211
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generatePivotTable = exports.isDateField = exports.getDateString = exports.getDateRange = exports.generatePivotTitle = exports.generatePivotTableYAxis = exports.PivotModal = void 0;
3
+ exports.generatePivotTableInMemory = exports.generatePivotTable = exports.isDateField = exports.getDateString = exports.getDateBuckets = exports.getDateRange = exports.generatePivotTitle = exports.generatePivotTableYAxis = exports.PivotModal = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const Context_1 = require("../../Context");
@@ -16,6 +16,8 @@ const QuillCard_1 = require("../../components/QuillCard");
16
16
  const pivotProcessing_1 = require("../../utils/pivotProcessing");
17
17
  const crypto_1 = require("../../utils/crypto");
18
18
  const tableProcessing_1 = require("../../utils/tableProcessing");
19
+ const pivotConstructor_1 = require("../../utils/pivotConstructor");
20
+ const dates_1 = require("../../utils/dates");
19
21
  const QuillHover = () => {
20
22
  return ((0, jsx_runtime_1.jsx)("style", { children: `
21
23
  .quill-hover {
@@ -29,7 +31,7 @@ const QuillHover = () => {
29
31
  }
30
32
  ` }));
31
33
  };
32
- const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivotColumnField, pivotValueField, setPivotValueField, pivotAggregation, setPivotAggregation, popUpTitle, setPopUpTitle, selectedTable, SelectComponent, ButtonComponent, SecondaryButtonComponent, PopoverComponent, ErrorMessageComponent = UiComponents_1.QuillErrorMessageComponent, PivotRowContainer = UiComponents_1.QuillPivotRowContainer, PivotColumnContainer = UiComponents_1.QuillPivotColumnContainer, LoadingComponent = UiComponents_1.QuillLoadingComponent, CardComponent = QuillCard_1.QuillCard, HeaderComponent, LabelComponent, TextComponent, selectedPivotIndex, setSelectedPivotIndex, removePivot, selectPivot, showUpdatePivot, setShowUpdatePivot, data, columns, theme, isOpen, setIsOpen, dateRange, createdPivots, setCreatedPivots, recommendedPivots, setRecommendedPivots, triggerButtonText = 'Pivot', showPivotEditButton = false, showEditOnPivotClick = true, selectPivotOnEdit = false, showTrigger = true, rightAlign = false, parentRef, pivotCountRequest = 6, query, initialUniqueValues, initialSelectedPivotTable, disabled = false, pivotRecommendationsEnabled = true, }) => {
34
+ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivotColumnField, pivotValueField, setPivotValueField, pivotAggregation, setPivotAggregation, popUpTitle, setPopUpTitle, selectedTable, SelectComponent, ButtonComponent, SecondaryButtonComponent, PopoverComponent, ErrorMessageComponent = UiComponents_1.QuillErrorMessageComponent, PivotRowContainer = UiComponents_1.QuillPivotRowContainer, PivotColumnContainer = UiComponents_1.QuillPivotColumnContainer, LoadingComponent = UiComponents_1.QuillLoadingComponent, CardComponent = QuillCard_1.QuillCard, HeaderComponent, LabelComponent, TextComponent, selectedPivotIndex, setSelectedPivotIndex, removePivot, selectPivot, showUpdatePivot, setShowUpdatePivot, data, columns, theme, isOpen, setIsOpen, dateRange, createdPivots, setCreatedPivots, recommendedPivots, setRecommendedPivots, triggerButtonText = 'Pivot', showPivotEditButton = false, showEditOnPivotClick = true, selectPivotOnEdit = false, showTrigger = true, rightAlign = false, parentRef, pivotCountRequest = 6, query, initialUniqueValues, initialSelectedPivotTable, disabled = false, pivotRecommendationsEnabled = true, report, }) => {
33
35
  const [isLoading, setIsLoading] = (0, react_1.useState)(false);
34
36
  const [selectedPivotType, setSelectedPivotType] = (0, react_1.useState)('recommended');
35
37
  const [errors, setErrors] = (0, react_1.useState)([]);
@@ -44,6 +46,7 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
44
46
  const [allowedRowFields, setAllowedRowFields] = (0, react_1.useState)([]);
45
47
  const [allowedValueFields, setAllowedValueFields] = (0, react_1.useState)([]);
46
48
  const [uniqueValues, setUniqueValues] = (0, react_1.useState)(initialUniqueValues);
49
+ const [dateRanges, setDateRanges] = (0, react_1.useState)({});
47
50
  const getDistinctValues = async () => {
48
51
  if (columns) {
49
52
  const stringColumns = columns.filter((column) => {
@@ -54,9 +57,10 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
54
57
  setAllowedRowFields(possibleColumns.rowFields);
55
58
  setAllowedColumnFields(possibleColumns.columnFields);
56
59
  setAllowedValueFields(possibleColumns.valueFields);
57
- return possibleColumns;
60
+ return { possibleColumns, uniqueValues: {} };
58
61
  }
59
- const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(stringColumns, query || '', data.rows || [], client, customFields);
62
+ const smallStringColumns = await (0, tableProcessing_1.getCountsByColumns)(stringColumns, query || '', client, customFields);
63
+ const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(smallStringColumns, query || '', data.rows || [], client, customFields);
60
64
  if (!uniqueValues ||
61
65
  (0, crypto_1.hashCode)(uniqueValues) !== (0, crypto_1.hashCode)(newUniqueValues)) {
62
66
  const possibleColumns = (0, pivotProcessing_1.getPossiblePivotFieldOptions)(columns, newUniqueValues || {});
@@ -64,10 +68,26 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
64
68
  setAllowedColumnFields(possibleColumns.columnFields);
65
69
  setAllowedValueFields(possibleColumns.valueFields);
66
70
  setUniqueValues(newUniqueValues);
67
- return possibleColumns;
71
+ return { possibleColumns, uniqueValues: newUniqueValues };
68
72
  }
69
73
  }
70
- return { rowFields: [], columnFields: [], valueFields: [] };
74
+ return {
75
+ possibleColumns: { rowFields: [], columnFields: [], valueFields: [] },
76
+ uniqueValues: {},
77
+ };
78
+ };
79
+ const getAllDateRangesByColumn = async () => {
80
+ // Don't reprocess dateRanges if they are already gathered
81
+ if (columns) {
82
+ const dateColumns = columns.filter((column) => {
83
+ return column.jsType === 'date';
84
+ });
85
+ if (dateColumns.length === 0) {
86
+ return [];
87
+ }
88
+ const dateRangeByColumn = await (0, tableProcessing_1.getDateRangeByColumns)(dateColumns, query || '', client, customFields);
89
+ setDateRanges(dateRangeByColumn || {});
90
+ }
71
91
  };
72
92
  (0, react_1.useEffect)(() => {
73
93
  const calculatePivotCardSize = () => {
@@ -94,76 +114,62 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
94
114
  }
95
115
  }, [showUpdatePivot, isOpen]);
96
116
  (0, react_1.useEffect)(() => {
97
- if (pivotRowField && data && columns) {
98
- const pivot = {
99
- rowField: pivotRowField || '',
100
- rowFieldType: columnsToShow[pivotRowField || ''],
101
- columnField: pivotColumnField,
102
- columnFieldType: columnsToShow[pivotColumnField || ''],
103
- valueField: pivotValueField || '',
104
- aggregationType: pivotAggregation || '',
105
- };
106
- const { rows, columns } = generatePivotTable(pivot, data, dateRange, false);
107
- setSamplePivotTable({ pivot: pivot, rows, columns });
108
- }
109
- if ((pivotRowField && data && columns) || initialSelectedPivotTable) {
110
- getDistinctValues();
111
- }
112
- if (initialUniqueValues) {
113
- const possibleColumns = (0, pivotProcessing_1.getPossiblePivotFieldOptions)(columns, initialUniqueValues);
114
- setAllowedRowFields(possibleColumns.rowFields);
115
- setAllowedColumnFields(possibleColumns.columnFields);
116
- setAllowedValueFields(possibleColumns.valueFields);
117
- setUniqueValues(initialUniqueValues);
118
- }
119
- if (pivotRowField && data && columns) {
120
- const pivot = {
121
- rowField: pivotRowField || '',
122
- rowFieldType: columnsToShow[pivotRowField || ''],
123
- columnField: pivotColumnField,
124
- columnFieldType: columnsToShow[pivotColumnField || ''],
125
- valueField: pivotValueField || '',
126
- aggregationType: pivotAggregation || '',
127
- };
128
- if (initialSelectedPivotTable) {
129
- setSamplePivotTable({
130
- pivot: pivot,
131
- rows: initialSelectedPivotTable.rows,
132
- columns: initialSelectedPivotTable.columns,
133
- });
134
- }
135
- else {
136
- const { rows, columns } = generatePivotTable(pivot, data, dateRange, false);
117
+ const fetchPivotData = async () => {
118
+ if (pivotRowField && data && columns) {
119
+ const pivot = {
120
+ rowField: pivotRowField || '',
121
+ rowFieldType: columnsToShow[pivotRowField || ''],
122
+ columnField: pivotColumnField,
123
+ columnFieldType: columnsToShow[pivotColumnField || ''],
124
+ valueField: pivotValueField || '',
125
+ aggregationType: pivotAggregation || '',
126
+ };
127
+ const { rows, columns } = await generatePivotTable(pivot, data, dateRange, false, -1, undefined, undefined, report, client, uniqueValues);
137
128
  setSamplePivotTable({ pivot: pivot, rows, columns });
138
129
  }
139
- }
130
+ if ((pivotRowField && data && columns) || initialSelectedPivotTable) {
131
+ getDistinctValues();
132
+ }
133
+ if (initialUniqueValues) {
134
+ const possibleColumns = (0, pivotProcessing_1.getPossiblePivotFieldOptions)(columns, initialUniqueValues);
135
+ setAllowedRowFields(possibleColumns.rowFields);
136
+ setAllowedColumnFields(possibleColumns.columnFields);
137
+ setAllowedValueFields(possibleColumns.valueFields);
138
+ setUniqueValues(initialUniqueValues);
139
+ }
140
+ if (pivotRowField && data && columns) {
141
+ const pivot = {
142
+ rowField: pivotRowField || '',
143
+ rowFieldType: columnsToShow[pivotRowField || ''],
144
+ columnField: pivotColumnField,
145
+ columnFieldType: columnsToShow[pivotColumnField || ''],
146
+ valueField: pivotValueField || '',
147
+ aggregationType: pivotAggregation || '',
148
+ };
149
+ if (initialSelectedPivotTable) {
150
+ setSamplePivotTable({
151
+ pivot: pivot,
152
+ rows: initialSelectedPivotTable.rows,
153
+ columns: initialSelectedPivotTable.columns,
154
+ });
155
+ }
156
+ else {
157
+ const { rows, columns } = await generatePivotTable(pivot, data, dateRange, false, -1, undefined, undefined, report, client, uniqueValues);
158
+ setSamplePivotTable({ pivot: pivot, rows, columns });
159
+ }
160
+ }
161
+ };
162
+ fetchPivotData();
140
163
  }, []);
141
164
  (0, react_1.useEffect)(() => {
142
- if ((pivotRowField && data && columns) || initialSelectedPivotTable) {
165
+ if (pivotRowField && data && columns) {
143
166
  getDistinctValues();
167
+ getAllDateRangesByColumn();
144
168
  }
145
- }, [initialSelectedPivotTable, columns, data, pivotRowField]);
146
- (0, react_1.useEffect)(() => {
147
- const pivot = {
148
- rowField: pivotRowField || '',
149
- rowFieldType: columnsToShow[pivotRowField || ''],
150
- columnField: pivotColumnField,
151
- columnFieldType: columnsToShow[pivotColumnField || ''],
152
- valueField: pivotValueField || '',
153
- aggregationType: pivotAggregation || '',
154
- };
155
- if ((0, pivotProcessing_1.isValidPivot)(pivot) && data && columns) {
156
- const { rows, columns } = generatePivotTable(pivot, data, dateRange, false);
157
- setSamplePivotTable({ pivot: pivot, rows, columns });
169
+ else if (initialSelectedPivotTable) {
170
+ getDistinctValues();
158
171
  }
159
- }, [
160
- data,
161
- columns,
162
- pivotRowField,
163
- pivotColumnField,
164
- pivotValueField,
165
- pivotAggregation,
166
- ]);
172
+ }, [initialSelectedPivotTable, columns, data, pivotRowField]);
167
173
  (0, react_1.useEffect)(() => {
168
174
  if (!initialUniqueValues) {
169
175
  return;
@@ -184,21 +190,25 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
184
190
  return map;
185
191
  }, {});
186
192
  }, [columns]);
187
- const selectedPivotTable = (0, react_1.useMemo)(() => {
188
- if (selectedPivotIndex === -1) {
189
- return null;
190
- }
191
- const pivot = createdPivots[selectedPivotIndex];
192
- const { rows, columns } = generatePivotTable(pivot, data, dateRange, false);
193
- return {
194
- pivot: pivot,
195
- rows: rows,
196
- columns: columns,
193
+ const [selectedPivotTable, setSelectedPivotTable] = (0, react_1.useState)(null);
194
+ (0, react_1.useEffect)(() => {
195
+ const fetchPivotTables = async () => {
196
+ if (selectedPivotIndex === -1) {
197
+ return null;
198
+ }
199
+ const pivot = createdPivots[selectedPivotIndex];
200
+ const { rows, columns } = await generatePivotTable(pivot, data, dateRange, false, -1, undefined, undefined, report, client, uniqueValues);
201
+ setSelectedPivotTable({
202
+ pivot: pivot,
203
+ rows: rows,
204
+ columns: columns,
205
+ });
197
206
  };
207
+ fetchPivotTables();
198
208
  }, [selectedPivotIndex, data, dateRange, createdPivots]);
199
209
  const onSelectRecommendedPivot = (pivot, index) => {
200
210
  if (showEditOnPivotClick) {
201
- onEditPivot(pivot, index);
211
+ onEditPivot(pivot, index, 'recommended');
202
212
  return;
203
213
  }
204
214
  if (index === selectedPivotIndex && selectedPivotType === 'recommended') {
@@ -211,20 +221,30 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
211
221
  setIsOpen(false);
212
222
  };
213
223
  const onSelectCreatedPivot = (pivot, index) => {
214
- selectPivot(pivot);
224
+ selectPivot(pivot, pivot.columnField ? uniqueValues : undefined, dateRanges[pivot.rowField]?.dateRange, samplePivotTable);
215
225
  setSelectedPivotType('created');
216
226
  setIsOpen(false);
217
227
  setPopUpTitle('Add pivot');
218
228
  };
219
- const onEditPivot = (pivot, index) => {
229
+ const onEditPivot = async (pivot, index, pivotType) => {
220
230
  setIsLoading(false);
221
231
  setPivotRowField(pivot.rowField);
222
232
  setPivotColumnField(pivot.columnField);
223
233
  setPivotValueField(pivot.valueField);
224
234
  setPivotAggregation(pivot.aggregationType);
225
235
  setShowUpdatePivot(true);
236
+ if (pivotType === 'recommended' &&
237
+ index !== null &&
238
+ recommendedPivotTables[index]) {
239
+ setSamplePivotTable(recommendedPivotTables[index]);
240
+ return;
241
+ }
226
242
  if ((0, pivotProcessing_1.isValidPivot)(pivot)) {
227
- const { rows, columns } = generatePivotTable(pivot, data, dateRange, false);
243
+ let dateBucket = undefined;
244
+ if (pivotRowField && dateRanges[pivotRowField]) {
245
+ dateBucket = (0, dates_1.getDateBucketFromRange)(dateRanges[pivotRowField].dateRange);
246
+ }
247
+ const { rows, columns } = await generatePivotTable(pivot, data, dateRange, false, -1, undefined, dateBucket, report, client, uniqueValues);
228
248
  setSamplePivotTable({ pivot, rows, columns });
229
249
  return;
230
250
  }
@@ -240,6 +260,7 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
240
260
  return;
241
261
  }
242
262
  setIsLoading(true);
263
+ let tempUniqueValues = uniqueValues;
243
264
  let possibleColumns = {
244
265
  rowFields: allowedRowFields,
245
266
  columnFields: allowedColumnFields,
@@ -249,7 +270,9 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
249
270
  allowedColumnFields.length === 0 &&
250
271
  allowedValueFields.length === 0) ||
251
272
  !uniqueValues) {
252
- possibleColumns = await getDistinctValues();
273
+ const distinctValues = await getDistinctValues();
274
+ possibleColumns = distinctValues.possibleColumns;
275
+ tempUniqueValues = distinctValues.uniqueValues;
253
276
  }
254
277
  const cloudBody = {
255
278
  pivotCountRequest,
@@ -269,9 +292,8 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
269
292
  try {
270
293
  const resp = await (0, dataFetcher_1.getDataFromCloud)(client, 'pivotai', cloudBody);
271
294
  const recommendedPivots = resp?.data?.pivotTables.map((pivot) => (0, pivotProcessing_1.cleanPivot)(pivot, possibleColumns)) || [];
272
- setRecommendedPivots(recommendedPivots.map((pivot) => {
273
- if (pivot.columnField &&
274
- columnsToShow[pivot.columnField] === 'date') {
295
+ const cleanedPivots = recommendedPivots.map((pivot) => {
296
+ if (pivot.columnField && columnsToShow[pivot.columnField] === 'date') {
275
297
  const columnField = pivot.columnField;
276
298
  pivot.columnField = pivot.rowField;
277
299
  pivot.rowField = columnField;
@@ -284,7 +306,13 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
284
306
  : undefined,
285
307
  title: generatePivotTitle(pivot),
286
308
  };
309
+ });
310
+ setRecommendedPivots(cleanedPivots);
311
+ const pts = await Promise.all(cleanedPivots.map(async (p) => {
312
+ const { rows, columns } = await generatePivotTable(p, data, dateRange, false, 6, undefined, undefined, report, client, tempUniqueValues);
313
+ return { pivot: p, rows, columns };
287
314
  }));
315
+ setRecommendedPivotTables(pts);
288
316
  setSelectedPivotIndex(-1);
289
317
  }
290
318
  catch (e) {
@@ -326,26 +354,51 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
326
354
  setSamplePivotTable(null);
327
355
  return;
328
356
  }
329
- setTimeout(() => {
330
- const { rows, columns } = generatePivotTable(pivot, data, dateRange, false);
357
+ let dateBucket = undefined;
358
+ if (pivotRowField && dateRanges[pivotRowField]) {
359
+ dateBucket = (0, dates_1.getDateBucketFromRange)(dateRanges[pivotRowField].dateRange);
360
+ }
361
+ setTimeout(async () => {
362
+ const { rows, columns } = await generatePivotTable(pivot, data, dateRange, false, -1, undefined, dateBucket, report, client, uniqueValues);
331
363
  setSamplePivotTable({ pivot, rows, columns });
332
364
  setIsLoading(false);
333
365
  }, 500);
334
366
  };
335
- const recommendedPivotTables = (0, react_1.useMemo)(() => {
336
- const pts = recommendedPivots.map((p) => {
337
- const { rows, columns } = generatePivotTable(p, data, dateRange, false, 6);
338
- return { pivot: p, rows, columns };
339
- });
340
- return pts;
341
- }, [recommendedPivots, data]);
342
- const createdPivotTables = (0, react_1.useMemo)(() => {
343
- const pts = createdPivots.map((p) => {
344
- const { rows, columns } = generatePivotTable(p, data, dateRange, false, 6);
345
- return { pivot: p, rows, columns };
346
- });
347
- return pts;
348
- }, [createdPivots, data]);
367
+ const [recommendedPivotTables, setRecommendedPivotTables] = (0, react_1.useState)([]);
368
+ // useEffect(() => {
369
+ // const fetchPivotTables = async () => {
370
+ // const pts = await Promise.all(
371
+ // recommendedPivots.map(async (p: Pivot) => {
372
+ // const { rows, columns } = await generatePivotTable(
373
+ // p,
374
+ // data,
375
+ // dateRange,
376
+ // false,
377
+ // 6,
378
+ // undefined,
379
+ // undefined,
380
+ // report,
381
+ // client,
382
+ // uniqueValues,
383
+ // );
384
+ // return { pivot: p, rows, columns };
385
+ // }),
386
+ // );
387
+ // setRecommendedPivotTables(pts);
388
+ // };
389
+ // fetchPivotTables();
390
+ // }, [recommendedPivots, dateRange]);
391
+ const [createdPivotTables, setCreatedPivotTables] = (0, react_1.useState)([]);
392
+ (0, react_1.useEffect)(() => {
393
+ const fetchPivotTables = async () => {
394
+ const pts = await Promise.all(createdPivots.map(async (p) => {
395
+ const { rows, columns } = await generatePivotTable(p, data, dateRange, false, 6, undefined, undefined, report, client, uniqueValues);
396
+ return { pivot: p, rows, columns };
397
+ }));
398
+ setCreatedPivotTables(pts);
399
+ };
400
+ fetchPivotTables();
401
+ }, [createdPivots, dateRange]);
349
402
  return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsxs)("div", { style: {
350
403
  position: 'relative',
351
404
  display: 'inline-block',
@@ -639,6 +692,7 @@ function getDateBuckets(dateRange, column, data, dateBucket) {
639
692
  const dayDifference = (0, date_fns_1.differenceInDays)(dateRange.end, dateRange.start);
640
693
  return dayDifferenceToInterval(dayDifference, dateRange);
641
694
  }
695
+ exports.getDateBuckets = getDateBuckets;
642
696
  function getCompDateBuckets(dateRange, compDateRange, column, data) {
643
697
  if (!dateRange) {
644
698
  return (0, date_fns_1.eachMonthOfInterval)(getDateRange(undefined, column, data));
@@ -745,7 +799,27 @@ const fixBigQueryData = (data = []) => {
745
799
  }
746
800
  return newData;
747
801
  };
748
- function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1, compRange = undefined, dateBucket) {
802
+ async function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1, compRange = undefined, dateBucket, report, client, uniqueValues) {
803
+ try {
804
+ if (report && report.rowCount && report.rowCount !== data.length) {
805
+ let dateFilter = report
806
+ ? report.filtersApplied.find((f) => f.filterType === 'date_range')
807
+ : undefined;
808
+ const pivotTable = await (0, pivotConstructor_1.generatePivotWithSQL)(pivot, report, client, dateBucket, dateFilter, pivot.columnField && uniqueValues
809
+ ? Object.keys(uniqueValues[pivot.columnField])
810
+ : undefined);
811
+ if (pivotTable) {
812
+ return pivotTable;
813
+ }
814
+ }
815
+ }
816
+ catch (e) {
817
+ console.error('Error generating pivot table with SQL, using in memory process', e);
818
+ }
819
+ return generatePivotTableInMemory(pivot, data, dateRange, isComparison, rowLimit, compRange);
820
+ }
821
+ exports.generatePivotTable = generatePivotTable;
822
+ function generatePivotTableInMemory(pivot, data, dateRange, isComparison, rowLimit = -1, compRange = undefined, dateBucket) {
749
823
  // If there is no rowField, aggregate on the valueField
750
824
  if (!pivot.rowField) {
751
825
  return valueFieldAggregation(data, pivot.valueField, pivot.aggregationType, isComparison);
@@ -1095,7 +1169,7 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
1095
1169
  }
1096
1170
  return { rows: pivotRows, columns };
1097
1171
  }
1098
- exports.generatePivotTable = generatePivotTable;
1172
+ exports.generatePivotTableInMemory = generatePivotTableInMemory;
1099
1173
  function valueFieldAggregation(data, valueField, aggregationType, isComparison) {
1100
1174
  if (!data || data.length === 0) {
1101
1175
  return {
@@ -7,4 +7,5 @@ export declare function convertPostgresColumn(field: {
7
7
  export declare function convertColumnInfoToColumnInternal(columnInfo: ColumnInfo): ColumnInternal;
8
8
  export declare function convertFieldTypeToJSType(fieldType: string): string;
9
9
  export declare function convertFormatToJsType(column: Column): string;
10
+ export declare function processColumnName(columnName: string): string;
10
11
  //# sourceMappingURL=columnProcessing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,cAAc,CAyGjB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AA0DD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAsBlE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY5D"}
1
+ {"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAM3D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,cAAc,CAyGjB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AA0DD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAsBlE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY5D;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertFormatToJsType = exports.convertFieldTypeToJSType = exports.convertColumnInfoToColumnInternal = exports.convertPostgresColumn = void 0;
3
+ exports.processColumnName = exports.convertFormatToJsType = exports.convertFieldTypeToJSType = exports.convertColumnInfoToColumnInternal = exports.convertPostgresColumn = void 0;
4
+ function removeBigQuerySpecialChars(columnName) {
5
+ return columnName.replaceAll('quill_forward_slash', '/');
6
+ }
4
7
  function convertPostgresColumn(field) {
5
8
  let format;
6
9
  let fieldType;
@@ -207,3 +210,7 @@ function convertFormatToJsType(column) {
207
210
  }
208
211
  }
209
212
  exports.convertFormatToJsType = convertFormatToJsType;
213
+ function processColumnName(columnName) {
214
+ return removeBigQuerySpecialChars(columnName);
215
+ }
216
+ exports.processColumnName = processColumnName;
@@ -0,0 +1,2 @@
1
+ export declare const MAX_COLUMN_ROWS_LIMIT = 500;
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,MAAM,CAAC"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_COLUMN_ROWS_LIMIT = void 0;
4
+ exports.MAX_COLUMN_ROWS_LIMIT = 500;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAkC5E;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,EACrB,MAAM,CAAC,EAAE,GAAG,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CA+C9B;AAwQD,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAI,OAAO,CAAC,GAAG,CAAC,CA0BpF"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAoC5E;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,EACrB,MAAM,CAAC,EAAE,GAAG,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAiD9B;AA0KD,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC,GAAG,CAAC,CA0Bd"}
@@ -4,9 +4,9 @@ exports.getDashboard = exports.cleanDashboardItem = void 0;
4
4
  const valueFormatter_1 = require("./valueFormatter");
5
5
  const PivotModal_1 = require("../internals/ReportBuilder/PivotModal");
6
6
  const textProcessing_1 = require("./textProcessing");
7
- const queryConstructor_1 = require("./queryConstructor");
8
7
  const dataFetcher_1 = require("./dataFetcher");
9
- const date_fns_1 = require("date-fns");
8
+ const dates_1 = require("./dates");
9
+ const pivotConstructor_1 = require("./pivotConstructor");
10
10
  const defaultDashboardItem = {
11
11
  id: '',
12
12
  name: '',
@@ -70,8 +70,10 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket) {
70
70
  xAxisFormat: item.xAxisFormat,
71
71
  order: item.order,
72
72
  filtersApplied: item.filtersApplied,
73
+ rowCount: parseInt(item.rowCount),
73
74
  sort: item.sort,
74
75
  page: item.page,
76
+ itemQuery: item.itemQuery,
75
77
  };
76
78
  }
77
79
  exports.cleanDashboardItem = cleanDashboardItem;
@@ -122,106 +124,34 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
122
124
  }
123
125
  const pivot = report?.pivot;
124
126
  const data = report || {};
125
- if (client && client.databaseType.toLowerCase() === 'postgresql') {
127
+ if (pivot && client) {
128
+ if (report.rowCount === 0) {
129
+ return { rows: [], columns: [] };
130
+ }
126
131
  try {
127
- let dateRange = undefined;
128
- let comparisonInterval = undefined;
129
132
  let dateBucket = dateBucketInitial;
130
- if (!dateBucket && pivot.rowFieldType !== 'string' && pivot.rowField) {
131
- let filterDateRange = undefined;
132
- if (dateFilter) {
133
- filterDateRange = {
134
- start: dateFilter.startDate,
135
- end: dateFilter.endDate,
136
- };
137
- }
138
- dateRange = (0, PivotModal_1.getDateRange)(filterDateRange, pivot.rowField, data.rows);
139
- const difference = (0, date_fns_1.differenceInDays)(dateRange.end, dateRange.start);
140
- if (difference < 14) {
141
- dateBucket = 'day';
142
- }
143
- else if (difference < 60) {
144
- dateBucket = 'week';
145
- }
146
- else if (difference < 365 * 3) {
147
- dateBucket = 'month';
148
- }
149
- else {
150
- dateBucket = 'year';
151
- }
133
+ let filterDateRange = undefined;
134
+ if (dateFilter) {
135
+ filterDateRange = {
136
+ start: dateFilter.startDate,
137
+ end: dateFilter.endDate,
138
+ };
152
139
  }
153
- if (dateFilter && dateFilter && dateFilter.comparisonRange) {
154
- const comparisonRange = (0, date_fns_1.differenceInDays)(dateFilter?.comparisonRange.endDate, dateFilter?.comparisonRange.startDate);
155
- if (!isNaN(comparisonRange)) {
156
- if (dateBucket === 'month') {
157
- comparisonInterval = comparisonRange / 30 + ' month';
158
- }
159
- else if (dateBucket === 'year') {
160
- comparisonInterval = comparisonRange / 365 + ' year';
161
- }
162
- else {
163
- comparisonInterval = comparisonRange + ' day';
164
- }
165
- }
140
+ else if (report.dateRange) {
141
+ filterDateRange = report.dateRange;
166
142
  }
167
- const sqlQuery = (0, queryConstructor_1.generatePivotQuery)(pivot, report.itemQuery, report.rows, dateBucket, comparisonInterval);
168
- if (sqlQuery && report.rows.length > 0) {
169
- const hostedBody = {
170
- metadata: {
171
- preQueries: [sqlQuery],
172
- task: 'query',
173
- orgId: client.customerId || '*',
174
- clientId: client.publicKey,
175
- databaseType: client?.databaseType,
176
- getCustomFields: false,
177
- runQueryConfig: {
178
- overridePost: true,
179
- convertDatatypes: true,
180
- },
181
- },
182
- };
183
- const cloudBody = { ...hostedBody };
184
- const resp = await (0, dataFetcher_1.getData)(client, 'query', 'same-origin', hostedBody, cloudBody);
185
- // With our current design we have to remove the second row field but leave the first for comparison purposes.
186
- const rows = resp.queryResults[0].rows;
187
- const columns = resp.queryResults[0].fields
188
- .map((field) => ({
189
- field: field.name,
190
- label: field.name.replace('comparison_', 'comparison '),
191
- }))
192
- .filter((field, index) => field.field !== 'comparison_' + pivot.rowField || index === 0);
193
- if (pivot.rowFieldType !== 'string') {
194
- rows.forEach((row) => {
195
- row[pivot.rowField] = (0, PivotModal_1.getDateString)(row[pivot.rowField], undefined, dateBucket);
196
- });
197
- // add a row for each date in the range that doesn't have a value
198
- if (pivot.rowFieldType !== 'string') {
199
- const dateSet = new Set(rows.map((row) => row[pivot.rowField]));
200
- // create a loop that will go through each formatted date and add a row if it doesn't exist going to the current date
201
- for (let date = dateFilter.startDate; date <= dateFilter.endDate; date = new Date(date.getTime() + 24 * 60 * 60 * 1000)) {
202
- const formattedDate = (0, PivotModal_1.getDateString)(date.toDateString(), undefined, dateBucket);
203
- if (!dateSet.has(formattedDate)) {
204
- const newRow = {};
205
- newRow[pivot.rowField] = formattedDate;
206
- rows.push(newRow);
207
- dateSet.add(formattedDate);
208
- }
209
- // order the rows by the date field
210
- rows.sort((a, b) => {
211
- return new Date(a[pivot.rowField]) < new Date(b[pivot.rowField])
212
- ? -1
213
- : 1;
214
- });
215
- }
216
- }
217
- }
218
- return {
219
- rows: rows,
220
- columns: columns,
221
- };
143
+ if (!dateBucket && filterDateRange) {
144
+ dateBucket = (0, dates_1.getDateBucketFromRange)(filterDateRange);
145
+ }
146
+ const pivotTable = await (0, pivotConstructor_1.generatePivotWithSQL)(pivot, report, client, dateBucket, dateFilter, report.distinctStrings);
147
+ if (pivotTable) {
148
+ return pivotTable;
222
149
  }
150
+ throw new Error('Error generating pivot table');
151
+ }
152
+ catch (e) {
153
+ throw new Error('Error generating pivot table: ' + e);
223
154
  }
224
- catch (e) { }
225
155
  }
226
156
  return pivot && data.rows
227
157
  ? (0, PivotModal_1.generatePivotTable)(pivot, JSON.parse(JSON.stringify(data.rows)), // deep copy
@@ -1,3 +1,3 @@
1
- export declare function getData(client: any, cloudQueryEndpoint: string, noCred: RequestCredentials, hostedRequestBody: any, cloudRequestBody: any, method?: string): Promise<any>;
1
+ export declare function getData(client: any, cloudQueryEndpoint: string, noCred: RequestCredentials, hostedRequestBody: any, cloudRequestBody: any, method?: string, queryParam?: string): Promise<any>;
2
2
  export declare function getDataFromCloud(client: any, cloudQueryEndpoint: string, cloudRequestBody: any, method?: string): Promise<any>;
3
3
  //# sourceMappingURL=dataFetcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AAEA,wBAAsB,OAAO,CAC3B,MAAM,EAAE,GAAG,EACX,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,gBAgEhB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,GAAG,EACX,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,gBAgChB"}
1
+ {"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AAqBA,wBAAsB,OAAO,CAC3B,MAAM,EAAE,GAAG,EACX,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,EACf,UAAU,CAAC,EAAE,MAAM,gBAwGpB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,GAAG,EACX,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,gBAgChB"}