@quillsql/react 2.12.19 → 2.12.20

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 (118) hide show
  1. package/dist/cjs/Chart.d.ts +2 -1
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +117 -105
  4. package/dist/cjs/ChartBuilder.d.ts +4 -2
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +26 -11
  7. package/dist/cjs/ChartEditor.d.ts +1 -1
  8. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  9. package/dist/cjs/ChartEditor.js +20 -12
  10. package/dist/cjs/Context.d.ts +0 -9
  11. package/dist/cjs/Context.d.ts.map +1 -1
  12. package/dist/cjs/Context.js +15 -43
  13. package/dist/cjs/Dashboard.d.ts +16 -3
  14. package/dist/cjs/Dashboard.d.ts.map +1 -1
  15. package/dist/cjs/Dashboard.js +64 -65
  16. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  17. package/dist/cjs/Table.d.ts.map +1 -1
  18. package/dist/cjs/Table.js +11 -4
  19. package/dist/cjs/components/Chart/BarChart.d.ts +2 -1
  20. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  21. package/dist/cjs/components/Chart/BarChart.js +2 -2
  22. package/dist/cjs/components/Chart/ChartTooltip.d.ts +1 -0
  23. package/dist/cjs/components/Chart/ChartTooltip.d.ts.map +1 -1
  24. package/dist/cjs/components/Chart/ChartTooltip.js +3 -4
  25. package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
  26. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  27. package/dist/cjs/components/Chart/LineChart.js +2 -2
  28. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +1 -1
  29. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
  30. package/dist/cjs/components/Dashboard/ChartComponent.js +10 -4
  31. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  32. package/dist/cjs/components/Dashboard/DashboardFilter.js +3 -18
  33. package/dist/cjs/components/Dashboard/DataLoader.d.ts +6 -4
  34. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  35. package/dist/cjs/components/Dashboard/DataLoader.js +46 -32
  36. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  37. package/dist/cjs/components/Dashboard/MetricComponent.js +27 -43
  38. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  39. package/dist/cjs/components/Dashboard/TableComponent.js +25 -52
  40. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  41. package/dist/cjs/hooks/useDashboard.js +3 -2
  42. package/dist/cjs/hooks/useQuill.d.ts +7 -0
  43. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  44. package/dist/cjs/hooks/useQuill.js +43 -4
  45. package/dist/cjs/index.d.ts +1 -1
  46. package/dist/cjs/index.d.ts.map +1 -1
  47. package/dist/cjs/index.js +2 -1
  48. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  49. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +8 -3
  50. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  51. package/dist/cjs/internals/ReportBuilder/PivotModal.js +24 -12
  52. package/dist/cjs/utils/aggregate.d.ts.map +1 -1
  53. package/dist/cjs/utils/aggregate.js +0 -4
  54. package/dist/cjs/utils/dashboard.d.ts +2 -2
  55. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  56. package/dist/cjs/utils/dashboard.js +16 -11
  57. package/dist/cjs/utils/dates.d.ts.map +1 -1
  58. package/dist/cjs/utils/dates.js +7 -4
  59. package/dist/esm/Chart.d.ts +2 -1
  60. package/dist/esm/Chart.d.ts.map +1 -1
  61. package/dist/esm/Chart.js +116 -105
  62. package/dist/esm/ChartBuilder.d.ts +4 -2
  63. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  64. package/dist/esm/ChartBuilder.js +27 -12
  65. package/dist/esm/ChartEditor.d.ts +1 -1
  66. package/dist/esm/ChartEditor.d.ts.map +1 -1
  67. package/dist/esm/ChartEditor.js +21 -13
  68. package/dist/esm/Context.d.ts +0 -9
  69. package/dist/esm/Context.d.ts.map +1 -1
  70. package/dist/esm/Context.js +14 -40
  71. package/dist/esm/Dashboard.d.ts +16 -3
  72. package/dist/esm/Dashboard.d.ts.map +1 -1
  73. package/dist/esm/Dashboard.js +66 -67
  74. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  75. package/dist/esm/Table.d.ts.map +1 -1
  76. package/dist/esm/Table.js +12 -5
  77. package/dist/esm/components/Chart/BarChart.d.ts +2 -1
  78. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  79. package/dist/esm/components/Chart/BarChart.js +2 -2
  80. package/dist/esm/components/Chart/ChartTooltip.d.ts +1 -0
  81. package/dist/esm/components/Chart/ChartTooltip.d.ts.map +1 -1
  82. package/dist/esm/components/Chart/ChartTooltip.js +3 -4
  83. package/dist/esm/components/Chart/LineChart.d.ts +2 -1
  84. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  85. package/dist/esm/components/Chart/LineChart.js +2 -2
  86. package/dist/esm/components/Dashboard/ChartComponent.d.ts +1 -1
  87. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  88. package/dist/esm/components/Dashboard/ChartComponent.js +7 -4
  89. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  90. package/dist/esm/components/Dashboard/DashboardFilter.js +3 -18
  91. package/dist/esm/components/Dashboard/DataLoader.d.ts +6 -4
  92. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  93. package/dist/esm/components/Dashboard/DataLoader.js +47 -33
  94. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  95. package/dist/esm/components/Dashboard/MetricComponent.js +28 -44
  96. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  97. package/dist/esm/components/Dashboard/TableComponent.js +26 -53
  98. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  99. package/dist/esm/hooks/useDashboard.js +3 -2
  100. package/dist/esm/hooks/useQuill.d.ts +7 -0
  101. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  102. package/dist/esm/hooks/useQuill.js +41 -3
  103. package/dist/esm/index.d.ts +1 -1
  104. package/dist/esm/index.d.ts.map +1 -1
  105. package/dist/esm/index.js +1 -1
  106. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  107. package/dist/esm/internals/ReportBuilder/PivotList.js +1 -1
  108. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +8 -3
  109. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  110. package/dist/esm/internals/ReportBuilder/PivotModal.js +24 -12
  111. package/dist/esm/utils/aggregate.d.ts.map +1 -1
  112. package/dist/esm/utils/aggregate.js +0 -4
  113. package/dist/esm/utils/dashboard.d.ts +2 -2
  114. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  115. package/dist/esm/utils/dashboard.js +16 -11
  116. package/dist/esm/utils/dates.d.ts.map +1 -1
  117. package/dist/esm/utils/dates.js +7 -4
  118. package/package.json +1 -1
package/dist/esm/Chart.js CHANGED
@@ -8,7 +8,6 @@ import PieChart from './components/Chart/PieChart';
8
8
  import { ClientContext, CustomFieldContext, DashboardContext, DashboardFiltersContext, } from './Context';
9
9
  import QuillTable from './components/QuillTable';
10
10
  import { getData } from './utils/dataFetcher';
11
- import { generatePivotTable, generatePivotTableYAxis, } from './internals/ReportBuilder/PivotModal';
12
11
  import { DATE_FORMAT_TYPES, valueFormatter } from './utils/valueFormatter';
13
12
  import LineChart from './components/Chart/LineChart';
14
13
  import BarChart from './components/Chart/BarChart';
@@ -20,6 +19,7 @@ import { quillFormat } from './utils/valueFormatter';
20
19
  import useTheme from './hooks/useTheme';
21
20
  import { processFilterErrorList } from './utils/errorProcessing';
22
21
  import { findAndProcessDateFilter } from './utils/filterProcessing';
22
+ import { cleanDashboardItem } from './utils/dashboard';
23
23
  const MAX_ROWS_FOR_GENERIC_TABLE = 300;
24
24
  // @ts-ignore
25
25
  function sumByKey(arr, key) {
@@ -32,23 +32,36 @@ function sumByKey(arr, key) {
32
32
  function areDatesNearby(date1, date2) {
33
33
  return Math.abs(differenceInHours(date1, date2)) < 24;
34
34
  }
35
- function isEquivalent(filters1, filters2) {
36
- if (Object.keys(filters2).length !== Object.keys(filters1).length) {
35
+ export function isEquivalent(filters1, filters2) {
36
+ if (filters2.length !== filters1.length) {
37
37
  return false;
38
38
  }
39
- const filterKeys = Object.keys(filters2);
40
- for (let i = 0; i < filterKeys.length; i++) {
41
- const currentKeyWereLookingAt = filterKeys[i];
42
- if (!currentKeyWereLookingAt) {
43
- return false;
44
- }
45
- const filter1 = filters1[currentKeyWereLookingAt];
39
+ // const filterKeys = Object.keys(filters2);
40
+ for (let i = 0; i < filters1.length; i++) {
41
+ const filter1 = filters1[i];
46
42
  if (!filter1) {
47
43
  return false;
48
44
  }
49
- const filter2 = filters2[currentKeyWereLookingAt];
45
+ const filter2 = filters2[i];
50
46
  const filterType = filter2.filterType;
51
47
  if (filterType === 'string') {
48
+ if (filter1.stringFilterType === 'multiselect') {
49
+ if (filter1.values &&
50
+ filter2.values &&
51
+ filter1.values.length !== filter2.values.length) {
52
+ return false;
53
+ }
54
+ if ((filter1.values && !filter2.values) ||
55
+ (filter2.values && !filter1.values)) {
56
+ return false;
57
+ }
58
+ // make sure that filter1.values is equivalent to filter2.values ignoring order
59
+ const sortedValues1 = filter1.values?.slice().sort() || [];
60
+ const sortedValues2 = filter2.values?.slice().sort() || [];
61
+ if (!sortedValues1.every((value, index) => value === sortedValues2[index])) {
62
+ return false;
63
+ }
64
+ }
52
65
  if (filter1.selectedValue !== filter2.selectedValue) {
53
66
  return false;
54
67
  }
@@ -72,9 +85,6 @@ export function didFiltersChange(dashboardItem, filters) {
72
85
  if (!dashboardItem?.filtersApplied || !filters) {
73
86
  return true;
74
87
  }
75
- if (dashboardItem?.filtersApplied.comparison !== !filters.comparison) {
76
- return true;
77
- }
78
88
  return !isEquivalent(dashboardItem.filtersApplied, filters);
79
89
  }
80
90
  function fallbackMapColorsToFields(_report, _theme) {
@@ -116,11 +126,17 @@ const Chart = (props) => {
116
126
  ? theme.chartColors
117
127
  : ['#4E80EE', '#E14F62', '#55B5A6', '#E9A23B', '#6466E9', '#55B685'];
118
128
  }, [data.colors]);
119
- return (_jsx(ChartUpdater, { reportId: data.reportId, className: data.className, containerStyle: data.containerStyle, colors: chartColors, isAnimationActive: data.isAnimationActive, hideXAxis: data.hideXAxis, hideYAxis: data.hideYAxis, hideCartesianGrid: data.hideCartesianGrid, hideHorizontalCartesianGrid: data.hideHorizontalCartesianGrid, hideVerticalCartesianGrid: data.hideVerticalCartesianGrid, hideSubsequentXAxisTicks: data.hideSubsequentXAxisTicks, hideDateRangeFilter: data.hideDateRangeFilter, cartesianGridLineStyle: data.cartesianGridLineStyle, cartesianGridLineColor: data.cartesianGridLineColor, comparisonLineStyle: data.comparisonLineStyle, mapColorsToFields: data.mapColorsToFields ?? fallbackMapColorsToFields, LoadingComponent: data.LoadingComponent, filters: data.filters }));
129
+ return (_jsx(ChartUpdater, { reportId: data.reportId, className: data.className, containerStyle: data.containerStyle, colors: chartColors, isAnimationActive: data.isAnimationActive, hideXAxis: data.hideXAxis, hideYAxis: data.hideYAxis, hideCartesianGrid: data.hideCartesianGrid, hideHorizontalCartesianGrid: data.hideHorizontalCartesianGrid, hideVerticalCartesianGrid: data.hideVerticalCartesianGrid, hideSubsequentXAxisTicks: data.hideSubsequentXAxisTicks, hideDateRangeFilter: data.hideDateRangeFilter, cartesianGridLineStyle: data.cartesianGridLineStyle, cartesianGridLineColor: data.cartesianGridLineColor, comparisonLineStyle: data.comparisonLineStyle, mapColorsToFields: data.mapColorsToFields ?? fallbackMapColorsToFields, LoadingComponent: data.LoadingComponent, filters: data.filters, onClickChartElement: props.onClickChartElement }));
120
130
  };
121
131
  const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', cartesianGridLineColor, comparisonLineStyle, hideDateRangeFilter = false, mapColorsToFields, LoadingComponent = QuillLoadingSkeleton, filters, onClickChartElement, }) => {
122
132
  const { dispatch, dashboard } = useContext(DashboardContext);
123
133
  const { dashboardFilters } = useContext(DashboardFiltersContext);
134
+ const specificDashboardFilter = useMemo(() => {
135
+ return dashboardFilters.filter((f) => dashboard &&
136
+ dashboard[reportId] &&
137
+ f &&
138
+ f.dashboardName === dashboard[reportId].dashboardName);
139
+ }, [dashboardFilters, dashboard]);
124
140
  const [initialLoad, setInitialLoad] = useState(true);
125
141
  const [loading, setLoading] = useState(true);
126
142
  const [paginating, setPaginating] = useState(false);
@@ -132,6 +148,7 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
132
148
  const [additionalProcessing, setAdditionProcessing] = useState({
133
149
  page: 0,
134
150
  });
151
+ const [report, setReport] = useState(undefined);
135
152
  const [previousPage, setPreviousPage] = useState(0);
136
153
  const theme = useTheme();
137
154
  const onPageChange = (page) => {
@@ -149,7 +166,7 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
149
166
  };
150
167
  const getChartDataPaginate = async (processing) => {
151
168
  setPaginating(true);
152
- if (!didFiltersChange(dashboard[reportId], dashboardFilters)) {
169
+ if (!didFiltersChange(dashboard[reportId], specificDashboardFilter)) {
153
170
  setPaginating(false);
154
171
  return;
155
172
  }
@@ -163,8 +180,8 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
163
180
  }
164
181
  // Remove extra fields on each filter so we don't confuse the backend.
165
182
  const allowDateRange = !hideDateRangeFilter;
166
- const minimalFilters = Object.values(dashboardFilters).length
167
- ? Object.values(dashboardFilters)
183
+ const minimalFilters = Object.values(specificDashboardFilter).length
184
+ ? Object.values(specificDashboardFilter)
168
185
  .filter((f) => allowDateRange || f.filterType !== 'date_range')
169
186
  .map((filter) => {
170
187
  const newFilter = { ...filter };
@@ -208,13 +225,15 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
208
225
  ...resp,
209
226
  filtersApplied: minimalFilters.filter((f) => f.dashboardName === dashboard[reportId].dashboardName),
210
227
  };
228
+ const cleanedReport = cleanDashboardItem(dashboardItem, filters);
229
+ setReport(cleanedReport);
211
230
  dispatch({
212
231
  type: 'UPDATE_DASHBOARD_ITEM',
213
232
  id: reportId,
214
- data: dashboardItem,
233
+ data: cleanedReport,
215
234
  });
216
235
  if (mapColorsToFields) {
217
- setColorMap(mapColorsToFields(dashboardItem, theme));
236
+ setColorMap(mapColorsToFields(cleanedReport, theme));
218
237
  }
219
238
  }
220
239
  else {
@@ -232,7 +251,7 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
232
251
  };
233
252
  const getChartData = async (processing) => {
234
253
  setLoading(true);
235
- if (!didFiltersChange(dashboard[reportId], dashboardFilters)) {
254
+ if (!didFiltersChange(dashboard[reportId], specificDashboardFilter)) {
236
255
  setLoading(false);
237
256
  return;
238
257
  }
@@ -246,8 +265,8 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
246
265
  }
247
266
  // Remove extra fields on each filter so we don't confuse the backend.
248
267
  const allowDateRange = !hideDateRangeFilter;
249
- const minimalFilters = Object.values(dashboardFilters).length
250
- ? Object.values(dashboardFilters)
268
+ const minimalFilters = Object.values(specificDashboardFilter).length
269
+ ? Object.values(specificDashboardFilter)
251
270
  .filter((f) => allowDateRange || f.filterType !== 'date_range')
252
271
  .map((filter) => {
253
272
  const newFilter = { ...filter };
@@ -291,6 +310,11 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
291
310
  ...resp,
292
311
  filtersApplied: minimalFilters.filter((f) => f.dashboardName === dashboard[reportId].dashboardName),
293
312
  };
313
+ const cleanedReport = cleanDashboardItem(dashboardItem, filters);
314
+ if (cleanedReport.chartType === 'table' && cleanedReport.pivot) {
315
+ cleanedReport.columns = cleanedReport.yAxisFields;
316
+ }
317
+ setReport(cleanedReport);
294
318
  dispatch({
295
319
  type: 'UPDATE_DASHBOARD_ITEM',
296
320
  id: reportId,
@@ -314,11 +338,14 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
314
338
  useEffect(() => {
315
339
  setInitialLoad(false);
316
340
  getChartData();
317
- }, [dashboardFilters, client, reportId]);
318
- return (_jsx(ChartDisplay, { config: dashboard[reportId], reportId: reportId, colors: colors, className: className, containerStyle: containerStyle, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle, cartesianGridLineColor: cartesianGridLineColor, hideDateRangeFilter: hideDateRangeFilter, comparisonLineStyle: comparisonLineStyle, isAnimationActive: isAnimationActive, isComparison: isComparison, loading: loading || initialLoad, paginating: paginating, error: error, colorMap: colorMap, LoadingComponent: LoadingComponent, onPageChange: onPageChange, onSortChange: onSortChange, onClickChartElement: onClickChartElement }));
341
+ }, [specificDashboardFilter, client, reportId]);
342
+ return (_jsx(ChartDisplay, { config: report, reportId: reportId, colors: colors, className: className, containerStyle: containerStyle, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle, cartesianGridLineColor: cartesianGridLineColor, hideDateRangeFilter: hideDateRangeFilter, comparisonLineStyle: comparisonLineStyle, isAnimationActive: isAnimationActive, isComparison: isComparison, loading: loading || initialLoad, paginating: paginating, error: error, colorMap: colorMap, LoadingComponent: LoadingComponent, onPageChange: onPageChange, onSortChange: onSortChange, onClickChartElement: onClickChartElement }));
319
343
  };
320
344
  const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hideXAxis, hideYAxis, hideCartesianGrid, hideDateRangeFilter = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', cartesianGridLineColor, comparisonLineStyle, isAnimationActive, loading = false, paginating = false, error = undefined, isComparison = false, colorMap, LoadingComponent = QuillLoadingSkeleton, onPageChange, onSortChange, onClickChartElement, dateBucket, }) => {
321
345
  const { dashboardFilters } = useContext(DashboardFiltersContext);
346
+ const specificDashboardFilter = useMemo(() => {
347
+ return dashboardFilters.filter((f) => f && config && config.dashboardName === f.dashboardName);
348
+ }, [dashboardFilters]);
322
349
  const { downloadCSV } = useExport(reportId);
323
350
  const theme = useTheme();
324
351
  const chartColors = useMemo(() => {
@@ -328,44 +355,42 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
328
355
  ? theme.chartColors
329
356
  : ['#4E80EE', '#E14F62', '#55B5A6', '#E9A23B', '#6466E9', '#55B685'];
330
357
  }, [colors]);
331
- const dateFilter = !hideDateRangeFilter &&
332
- findAndProcessDateFilter(Object.values(dashboardFilters ?? []));
333
- const isPivot = config?.pivot;
334
- const pivotTable = useMemo(() => {
335
- const pivot = config?.pivot;
336
- const data = config;
337
- return pivot && data?.rows
338
- ? generatePivotTable(pivot, JSON.parse(JSON.stringify(data.rows)), // deep copy
339
- dateFilter && dateFilter.startDate && dateFilter.endDate
340
- ? { start: dateFilter.startDate, end: dateFilter.endDate }
341
- : undefined, Boolean(dateFilter?.comparisonRange?.startDate), -1, dateFilter?.comparisonRange?.startDate &&
342
- dateFilter?.comparisonRange.endDate
343
- ? {
344
- start: dateFilter.comparisonRange.startDate,
345
- end: dateFilter.comparisonRange.endDate,
346
- }
347
- : undefined, dateBucket)
348
- : null;
349
- }, [config?.pivot, dateBucket]);
350
- const pivotTableYAxis = useMemo(() => {
351
- if (!pivotTable) {
352
- return null;
358
+ const rows = config?.pivotRows ?? config?.rows ?? [];
359
+ const getYAxisFields = () => {
360
+ if (config && config.pivot && config.pivot.columnField) {
361
+ return (config?.pivotColumns
362
+ .slice(1)
363
+ .map((column) => {
364
+ return { ...column, format: config?.yAxisFields[0].format };
365
+ }) ?? []);
353
366
  }
354
- const pivot = config?.pivot;
355
- const yAxisFields = config.yAxisFields;
356
- return yAxisFields
357
- ? generatePivotTableYAxis(pivot, pivotTable.columns, yAxisFields?.[0]?.format)
358
- : null;
359
- }, [pivotTable, config?.yAxisFields]);
367
+ else if (config && config.pivot) {
368
+ return (config?.pivotColumns
369
+ .slice(1)
370
+ .map((column) => {
371
+ return {
372
+ ...column,
373
+ label: config?.yAxisFields[0].label,
374
+ format: config?.yAxisFields[0].format,
375
+ };
376
+ }) ?? []);
377
+ }
378
+ else {
379
+ return config?.pivotColumns ?? config?.yAxisFields ?? [];
380
+ }
381
+ };
382
+ const yAxisFields = getYAxisFields();
383
+ const dateFilter = !hideDateRangeFilter &&
384
+ findAndProcessDateFilter(Object.values(specificDashboardFilter ?? []));
360
385
  if (error) {
361
386
  return _jsx(ChartError, { className: className, containerStyle: containerStyle });
362
387
  }
363
- else if (!pivotTable &&
364
- config &&
388
+ else if (config &&
389
+ !config.pivot &&
365
390
  config?.chartType !== 'metric' &&
366
391
  config?.chartType !== 'table' &&
367
- config.rows &&
368
- config.rows.length > MAX_ROWS_FOR_GENERIC_TABLE) {
392
+ rows &&
393
+ rows.length > MAX_ROWS_FOR_GENERIC_TABLE) {
369
394
  return (_jsx(ChartError, { className: className, containerStyle: containerStyle, label: "Charts can only display 300 rows. Please add a pivot or modify the query." }));
370
395
  }
371
396
  else if (!config || loading) {
@@ -373,8 +398,6 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
373
398
  }
374
399
  const chartTypes = [config?.chartType];
375
400
  if (chartTypes.includes('pie')) {
376
- const rows = pivotTable ? pivotTable.rows : config.rows;
377
- const yAxisFields = pivotTableYAxis ? pivotTableYAxis : config.yAxisFields;
378
401
  const xAxisField = config.xAxisField;
379
402
  return (_jsx(PieChart, { className: className, containerStyle: containerStyle, data: rows.map((row) => {
380
403
  return {
@@ -385,9 +408,7 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
385
408
  }), category: yAxisFields[0].field, index: xAxisField, colors: chartColors, theme: theme, colorMap: colorMap, onClickChartElement: onClickChartElement }));
386
409
  }
387
410
  if (chartTypes.includes('table')) {
388
- const data = config;
389
- const columns = pivotTable?.columns ?? data.columns ?? data.yAxisFields;
390
- const rows = pivotTable?.rows ?? data.rows ?? [];
411
+ const columns = yAxisFields;
391
412
  // FOR PIVOTS - ADD THE RIGHT FIELD TYPE FOR THE VALUE COLUMNS
392
413
  const valueFieldType = config?.pivot?.valueFieldType || undefined;
393
414
  // Walk through data.columns and pick off the labels from yAxisFields
@@ -398,9 +419,9 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
398
419
  index !== 0) {
399
420
  col.format = valueFieldType || 'two_decimal_places';
400
421
  }
401
- if (!data.yAxisFields)
422
+ if (!yAxisFields)
402
423
  return;
403
- const matchingCol = data.yAxisFields.find((c) => c.field === col.field);
424
+ const matchingCol = yAxisFields.find((c) => c.field === col.field);
404
425
  if (!col.label && matchingCol) {
405
426
  col.label = matchingCol.label;
406
427
  col.format = matchingCol.format;
@@ -418,15 +439,15 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
418
439
  }, {});
419
440
  });
420
441
  let numberOfRows = undefined;
421
- if (data.compareRows && data.compareRows[0]) {
422
- if (data.compareRows[0].COUNT) {
423
- numberOfRows = parseInt(data.compareRows[0].COUNT);
442
+ if (config.compareRows && config.compareRows[0]) {
443
+ if (config.compareRows[0].COUNT) {
444
+ numberOfRows = parseInt(config.compareRows[0].COUNT);
424
445
  }
425
- else if (data.compareRows[0].count) {
426
- numberOfRows = parseInt(data.compareRows[0].count);
446
+ else if (config.compareRows[0].count) {
447
+ numberOfRows = parseInt(config.compareRows[0].count);
427
448
  }
428
449
  }
429
- return (_jsx(QuillTable, { rows: formattedRows ?? [], numberOfRows: numberOfRows, columns: columns ?? data.yAxisFields, currentPage: data.page, sort: data.sort, rowsPerPage: config?.rowsPerPage || 10, containerStyle: {
450
+ return (_jsx(QuillTable, { rows: formattedRows ?? [], numberOfRows: numberOfRows, columns: columns ?? yAxisFields, currentPage: config.page, sort: config.sort, rowsPerPage: config?.rowsPerPage || 10, containerStyle: {
430
451
  width: containerStyle?.width || '100%',
431
452
  height: containerStyle?.height || '400px',
432
453
  ...containerStyle,
@@ -439,14 +460,11 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
439
460
  }, isLoading: paginating }));
440
461
  }
441
462
  if (chartTypes.includes('bar')) {
442
- return (_jsx(BarList, { data: pivotTable ? pivotTable.rows : config.rows, theme: theme, yAxisFields: pivotTableYAxis ? pivotTableYAxis : config.yAxisFields, colors: chartColors, xAxisField: config.xAxisField, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, colorMap: colorMap, onClickChartElement: onClickChartElement }));
463
+ return (_jsx(BarList, { data: rows, theme: theme, yAxisFields: yAxisFields, colors: chartColors, xAxisField: config.xAxisField, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, colorMap: colorMap, onClickChartElement: onClickChartElement }));
443
464
  }
444
- const yAxisFields = pivotTableYAxis
445
- ? pivotTableYAxis
446
- : config.yAxisFields;
447
465
  if (yAxisFields.length === 1) {
448
- if (yAxisFields[0].label === '' && config.yAxisFields.length === 1) {
449
- yAxisFields[0].label = config.yAxisFields[0].label;
466
+ if (yAxisFields[0].label === '' && yAxisFields.length === 1) {
467
+ yAxisFields[0].label = yAxisFields[0].label;
450
468
  }
451
469
  if (dateFilter?.comparison) {
452
470
  const sampleField = yAxisFields[0];
@@ -457,15 +475,10 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
457
475
  };
458
476
  }
459
477
  }
460
- const data = (pivotTable ? pivotTable.rows : config.rows)
461
- // filter out any rows with a comparison key but no corresponding primary
462
- ?.filter((row) => Object.keys(row).every((key) => !key.startsWith('comparison_') ||
463
- (key.startsWith('comparison_') &&
464
- row[key.replace('comparison_', '')] !== undefined)));
465
478
  if (chartTypes.includes('column')) {
466
479
  // Autofill the column chart with an empty column if there are no rows
467
- let barChartData = data;
468
- if (dateFilter && (!data || data.length === 0)) {
480
+ let barChartData = rows;
481
+ if (dateFilter && (!barChartData || barChartData.length === 0)) {
469
482
  const xAxis = config.xAxisField;
470
483
  const yAxis = yAxisFields[0]?.field;
471
484
  barChartData = [{ [xAxis]: '', [yAxis]: '0' }];
@@ -487,17 +500,15 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
487
500
  break;
488
501
  }
489
502
  }
490
- return (_jsx(BarChart, { colors: chartColors, theme: theme, isStacked: isPivot && yAxisFields.length > (dateFilter?.comparison ? 2 : 1), yAxisFields: yAxisFields, data: barChartData, xAxisField: config.xAxisField, xAxisLabel: config.xAxisLabel, xAxisFormat: xAxisFormat, containerStyle: containerStyle, className: className, comparison: dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, colorMap: colorMap, onClickChartElement: onClickChartElement }));
503
+ return (_jsx(BarChart, { colors: chartColors, theme: theme, isStacked: config.pivot && yAxisFields.length > (dateFilter?.comparison ? 2 : 1), yAxisFields: yAxisFields, data: barChartData, xAxisField: config.xAxisField, xAxisLabel: config.xAxisLabel, xAxisFormat: xAxisFormat, containerStyle: containerStyle, className: className, comparison: dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, colorMap: colorMap, onClickChartElement: onClickChartElement, dateFilter: dateFilter }));
491
504
  }
492
505
  if (chartTypes.includes('metric')) {
493
- const data = config;
494
- const rows = pivotTable?.rows ?? data.rows ?? [];
495
506
  const isComparison = rows?.length > 0 &&
496
- Object.keys(rows[0]).includes(`comparison_${data.xAxisField}`);
497
- const primaryMetricLabel = data?.filtersApplied?.date_range?.preset?.label;
498
- const comparisonKey = data?.filtersApplied?.date_range?.comparisonRange?.value;
507
+ Object.keys(rows[0]).includes(`comparison_${config.xAxisField}`);
508
+ const primaryMetricLabel = config?.filtersApplied?.date_range?.preset?.label;
509
+ const comparisonKey = config?.filtersApplied?.date_range?.comparisonRange?.value;
499
510
  const comparisonLabel = COMPARISON_OPTIONS.find((opt) => opt.value === comparisonKey)?.text;
500
- if (rows?.length === 0 || rows[0][data.xAxisField] === null) {
511
+ if (rows?.length === 0 || rows[0][config.xAxisField] === null) {
501
512
  return (_jsx("div", { style: {
502
513
  display: 'flex',
503
514
  flex: '1 0 auto',
@@ -536,14 +547,14 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
536
547
  marginRight: 'auto',
537
548
  }, children: [_jsx("span", { children: rows?.length > 0 &&
538
549
  valueFormatter({
539
- value: rows[0][data.xAxisField] ?? 0,
540
- field: data.xAxisField,
550
+ value: rows[0][config.xAxisField] ?? 0,
551
+ field: config.xAxisField,
541
552
  fields: [
542
553
  {
543
- field: data.xAxisField,
544
- format: data.xAxisFormat,
545
- label: data.xAxisLabel,
546
- _id: data._id || 'dummy',
554
+ field: config.xAxisField,
555
+ format: config.xAxisFormat,
556
+ label: config.xAxisLabel,
557
+ _id: config._id || 'dummy',
547
558
  },
548
559
  ],
549
560
  }) }), isComparison && (_jsx("span", { style: {
@@ -567,14 +578,14 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
567
578
  color: theme?.secondaryTextColor,
568
579
  }, children: rows?.length > 0 &&
569
580
  valueFormatter({
570
- value: rows[0][`comparison_${data.xAxisField}`] ?? 0,
571
- field: data.xAxisField,
581
+ value: rows[0][`comparison_${config.xAxisField}`] ?? 0,
582
+ field: config.xAxisField,
572
583
  fields: [
573
584
  {
574
- field: data.xAxisField,
575
- format: data.xAxisFormat,
576
- label: data.xAxisLabel,
577
- _id: data._id || 'dummy',
585
+ field: config.xAxisField,
586
+ format: config.xAxisFormat,
587
+ label: config.xAxisLabel,
588
+ _id: config._id || 'dummy',
578
589
  },
579
590
  ],
580
591
  }) }), _jsx("span", { style: {
@@ -589,11 +600,11 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
589
600
  }
590
601
  // Autofill the line chart with two zero values, so they form a line at 0.0
591
602
  // when there are no rows on the config.
592
- let lineChartData = data;
603
+ let lineChartData = rows;
593
604
  const xAxisFieldFormat = config.columns.find((col) => col.field === config.xAxisField)?.format;
594
605
  if (dateFilter &&
595
606
  DATE_FORMAT_TYPES.includes(xAxisFieldFormat) &&
596
- (!data || data.length === 0)) {
607
+ (!lineChartData || lineChartData.length === 0)) {
597
608
  const xAxis = config.xAxisField;
598
609
  const yAxis = yAxisFields[0]?.field;
599
610
  const format = config.pivot
@@ -606,7 +617,7 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
606
617
  { [xAxis]: endDate, [yAxis]: '0' },
607
618
  ];
608
619
  }
609
- return (_jsx(LineChart, { colors: chartColors, colorMap: colorMap, yAxisFields: yAxisFields.sort(sortComparisonFirst), data: lineChartData, xAxisField: config.xAxisField, xAxisLabel: config.xAxisLabel, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, theme: theme, comparison: dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle ?? 'solid', comparisonLineStyle: comparisonLineStyle ?? 'solid', cartesianGridLineColor: cartesianGridLineColor, onClickChartElement: onClickChartElement }));
620
+ return (_jsx(LineChart, { colors: chartColors, colorMap: colorMap, yAxisFields: yAxisFields.sort(sortComparisonFirst), data: lineChartData, xAxisField: config.xAxisField, xAxisLabel: config.xAxisLabel, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, theme: theme, comparison: dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle ?? 'solid', comparisonLineStyle: comparisonLineStyle ?? 'solid', cartesianGridLineColor: cartesianGridLineColor, onClickChartElement: onClickChartElement, dateFilter: dateFilter }));
610
621
  };
611
622
  // Sort to put comparison first (ie. underneath) primary.
612
623
  const sortComparisonFirst = (a, b) => {
@@ -191,8 +191,8 @@ export interface ChartBuilderProps {
191
191
  pivotData?: {
192
192
  rows: any[];
193
193
  columns: {
194
- label: string;
195
194
  field: string;
195
+ label: string;
196
196
  }[];
197
197
  };
198
198
  /** The date range applied to this ChartBuilder. */
@@ -262,6 +262,8 @@ export interface ChartBuilderProps {
262
262
  isLoading?: boolean;
263
263
  /** A callback function triggered when a chart element is clicked */
264
264
  onClickChartElement?: (data: any) => void;
265
+ /** Used to generate a comparison pivot or not */
266
+ isComparison?: boolean;
265
267
  }
266
268
  /**
267
269
  * ### Quill Chart Builder with Modal
@@ -311,7 +313,7 @@ export declare function ChartBuilderWithModal(props: ChartBuilderProps): import(
311
313
  * ### Chart Builder API
312
314
  * @see https://docs.quillsql.com/components/chart-builder
313
315
  */
314
- export default function ChartBuilder({ TextInputComponent, SelectComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, SubHeaderComponent, LabelComponent, DeleteButtonComponent, TextComponent, PopoverComponent, CardComponent, TableComponent, ModalComponent, LoadingComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, FormContainer, isOpen, isHorizontalView, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, showDashboardDropdown, onAddToDashboardComplete, onDelete, report, recommendedPivots: rp, createdPivots: cp, destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton, hideSubmitButton, hideDateRangeFilter, initialUniqueValues, pivotRecommendationsEnabled, onSortChange, onPageChange, numberOfRows, isLoading, onClickChartElement }: ChartBuilderProps): import("react/jsx-runtime").JSX.Element | null;
316
+ export default function ChartBuilder({ TextInputComponent, SelectComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, SubHeaderComponent, LabelComponent, DeleteButtonComponent, TextComponent, PopoverComponent, CardComponent, TableComponent, ModalComponent, LoadingComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, FormContainer, isOpen, isHorizontalView, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, showDashboardDropdown, onAddToDashboardComplete, onDelete, report, recommendedPivots: rp, createdPivots: cp, destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton, hideSubmitButton, hideDateRangeFilter, initialUniqueValues, pivotRecommendationsEnabled, onSortChange, onPageChange, numberOfRows, isLoading, isComparison, onClickChartElement, }: ChartBuilderProps): import("react/jsx-runtime").JSX.Element | null;
315
317
  export declare function DashboardFilterModal({ isOpen, setIsOpen, issues, ModalComponent, ButtonComponent, }: {
316
318
  isOpen: boolean;
317
319
  setIsOpen: (e: boolean) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilder.d.ts","sourceRoot":"","sources":["../../src/ChartBuilder.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAOZ,SAAS,EACV,MAAM,OAAO,CAAC;AAyCf,OAAO,EAAU,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQ1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAwM1C,eAAO,MAAM,mBAAmB,UAM/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAO7B,CAAC;AA8BF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;IAEhB,6CAA6C;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAErC,0BAA0B;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE;YACP,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;QACJ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;KACjE,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC3B,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;KAChE,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,SAAS,CAAC;KAClB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,0BAA0B;IAC1B,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QACjC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,SAAS,CAAC;KAClB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAExE,0BAA0B;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE5D,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE/D,yBAAyB;IACzB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE3D,wBAAwB;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE1D,6EAA6E;IAC7E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,QAAQ,EAAE,SAAS,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;KACvB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,SAAS,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,2BAA2B;IAC3B,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,SAAS,CAAC;KAC5B,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,yBAAyB;IACzB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,IAAI,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,EAAE,CAAC;QAC/B,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAC;QAC5E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAC;QACpE,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAEzE;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC;;OAEG;IACH,6BAA6B,CAAC,EAAE,CAAC,KAAK,EAAE;QACtC,QAAQ,EAAE,SAAS,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,gCAAgC,CAAC,EAAE,CAAC,KAAK,EAAE;QACzC,QAAQ,EAAE,SAAS,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAEpE;;OAEG;IACH,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAEvE;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAEhE,qDAAqD;IACrD,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;IAE/B;;OAEG;IACH,OAAO,EAAE,cAAc,EAAE,CAAC;IAE1B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,gDAAgD;IAChD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,8CAA8C;IAC9C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,kDAAkD;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC,8CAA8C;IAC9C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,0EAA0E;IAC1E,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAEzD,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,2CAA2C;IAC3C,KAAK,CAAC,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IAEF,8CAA8C;IAC9C,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;IAEzE,mDAAmD;IACnD,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC;IAEnD,wCAAwC;IACxC,MAAM,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAE3B,iFAAiF;IACjF,iBAAiB,CAAC,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,EAAE,CAAC;IAEJ,sDAAsD;IACtD,aAAa,CAAC,EAAE;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,EAAE,CAAC;IAEJ,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,0CAA0C;IAC1C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,GAAG,CAAC;IAE1B,wDAAwD;IACxD,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAEtC,iEAAiE;IACjE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAE5E,iEAAiE;IACjE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAEpE,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,2CAwC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,kBAAmC,EACnC,eAAsC,EACtC,eAAgC,EAChC,wBAAkD,EAClD,eAAgC,EAChC,kBAAsC,EACtC,cAA8B,EAC9B,qBAA4C,EAC5C,aAA4B,EAC5B,gBAAkC,EAClC,aAAyB,EACzB,cAAoC,EACpC,cAAc,EACd,gBAAwC,EACxC,qBAAkD,EAClD,6BAAkE,EAClE,gCAAwE,EACxE,iBAA0C,EAC1C,oBAAgD,EAChD,aAA8C,EAC9C,MAAM,EACN,gBAAuB,EACvB,KAAK,EACL,SAAS,EACT,IAAI,EACJ,OAAO,EACP,KAAK,EACL,iBAAiB,EACjB,SAAS,EAAE,EAAE,EACb,sBAA8B,EAC9B,oBAA4B,EAC5B,wBAAgC,EAChC,qBAA4B,EAC5B,wBAAwB,EACxB,QAAQ,EACR,MAAkB,EAClB,iBAAiB,EAAE,EAAO,EAC1B,aAAa,EAAE,EAAO,EACtB,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,gBAAwB,EACxB,gBAAwB,EACxB,mBAA2B,EAC3B,mBAAmB,EACnB,2BAAkC,EAClC,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,mBAAmB,EACpB,EAAE,iBAAiB,kDAyjDnB;AAgHD,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,SAAS,EACT,MAAM,EACN,cAA8B,EAC9B,eAAgC,GACjC,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,SAAS,CAAC;KAClB,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,SAAS,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,KAAK,GAAG,CAAC,OAAO,CAAC;CACnB,kDAuCA"}
1
+ {"version":3,"file":"ChartBuilder.d.ts","sourceRoot":"","sources":["../../src/ChartBuilder.tsx"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import { PivotCard } from './internals/ReportBuilder/PivotList';
8
8
  import Chart from './Chart';
9
9
  import { MemoizedModal, QuillTextInput, MemoizedButton, MemoizedSecondaryButton, MemoizedHeader, MemoizedLabel, MemoizedDeleteButton, MemoizedText, MemoizedPopover, QuillTableComponent, QuillChartBuilderInputRowContainer, QuillChartBuilderInputColumnContainer, MemoizedSubHeader, QuillErrorMessageComponent, QuillPivotRowContainer, QuillPivotColumnContainer, QuillChartBuilderFormContainer, QuillLoadingComponent, } from './components/UiComponents';
10
10
  import { mergeComparisonRange } from './utils/merge';
11
- import { removeDoubleQuotes, snakeAndCamelCaseToTitleCase } from './utils/textProcessing';
11
+ import { removeDoubleQuotes, snakeAndCamelCaseToTitleCase, } from './utils/textProcessing';
12
12
  import { QuillSelectComponent } from './components/QuillSelect';
13
13
  import { QuillCard } from './components/QuillCard';
14
14
  import { quillFormat } from './utils/valueFormatter';
@@ -235,7 +235,7 @@ export function ChartBuilderWithModal(props) {
235
235
  * ### Chart Builder API
236
236
  * @see https://docs.quillsql.com/components/chart-builder
237
237
  */
238
- export default function ChartBuilder({ TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, LabelComponent = MemoizedLabel, DeleteButtonComponent = MemoizedDeleteButton, TextComponent = MemoizedText, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, TableComponent = QuillTableComponent, ModalComponent, LoadingComponent = QuillLoadingComponent, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, FormContainer = QuillChartBuilderFormContainer, isOpen, isHorizontalView = true, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, report = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton = false, hideSubmitButton = false, hideDateRangeFilter = false, initialUniqueValues, pivotRecommendationsEnabled = true, onSortChange, onPageChange, numberOfRows, isLoading, onClickChartElement }) {
238
+ export default function ChartBuilder({ TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, LabelComponent = MemoizedLabel, DeleteButtonComponent = MemoizedDeleteButton, TextComponent = MemoizedText, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, TableComponent = QuillTableComponent, ModalComponent, LoadingComponent = QuillLoadingComponent, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, FormContainer = QuillChartBuilderFormContainer, isOpen, isHorizontalView = true, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, report = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton = false, hideSubmitButton = false, hideDateRangeFilter = false, initialUniqueValues, pivotRecommendationsEnabled = true, onSortChange, onPageChange, numberOfRows, isLoading, isComparison, onClickChartElement, }) {
239
239
  const dateRange = dr;
240
240
  const [client] = useContext(ClientContext);
241
241
  const [theme] = useContext(ThemeContext);
@@ -336,6 +336,9 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
336
336
  const [dashboardOptions, setDashboardOptions] = useState([]);
337
337
  const [defaultDashboardName, setDefaultDashboardName] = useState(destinationDashboard || report?.dashboardName || '');
338
338
  const { dashboardFilters } = useContext(DashboardFiltersContext);
339
+ const specificDashboardFilter = useMemo(() => {
340
+ return dashboardFilters.filter((f) => f && defaultDashboardName === f.dashboardName);
341
+ }, [dashboardFilters]);
339
342
  const [dashboardFilters2, setDashboardFilters] = useState([]);
340
343
  const [dashboardHasDateFilter, setDashboardHasDateFilter] = useState(false);
341
344
  const [dashboardHasDateComparison, setDashboardHasDateComparison] = useState(false);
@@ -361,7 +364,6 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
361
364
  const [allTables, setAllTables] = useState([]);
362
365
  const [customFieldTableRef, setCustomFieldTableRef] = useState(false);
363
366
  const [referencedColumns, setReferencedColumns] = useState({});
364
- const [uniqueValues, setUniqueValues] = useState(undefined);
365
367
  const [defaultDateField, setDefaultDateField] = useState({
366
368
  table: dateFieldOptions[0]?.name || '',
367
369
  field: dateFieldOptions[0]?.columns[0]?.name || '',
@@ -409,9 +411,11 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
409
411
  credentials: 'omit', // If withCredentials is true, set to 'include'. Otherwise, set to 'omit'.
410
412
  });
411
413
  const responseData = (await response.json()).data;
412
- setDashboardFilters(responseData.filters);
413
- setDashboardHasDateFilter(!!responseData.dateFilter);
414
- setDashboardHasDateComparison(responseData.dateFilter?.comparison || false);
414
+ if (responseData) {
415
+ setDashboardFilters(responseData.filters);
416
+ setDashboardHasDateFilter(!!responseData.dateFilter);
417
+ setDashboardHasDateComparison(responseData.dateFilter?.comparison || false);
418
+ }
415
419
  }
416
420
  };
417
421
  const pivotFormData = (pivot) => {
@@ -420,7 +424,6 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
420
424
  ? report.yAxisFields[0].label
421
425
  : pivot.valueField;
422
426
  // date labels for pivots should be treated like strings since they are
423
- // formatted in generatePivotTable
424
427
  const yAxisIsDate = pivot.columnField
425
428
  ? isDateField(pivot.columnFieldType || '')
426
429
  : false;
@@ -494,6 +497,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
494
497
  setSchema(curSchemaData);
495
498
  }
496
499
  if (!query) {
500
+ setLoadingFormData(false);
497
501
  return;
498
502
  }
499
503
  const result = await getReferencedTables(client, query, curSchemaData);
@@ -546,13 +550,16 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
546
550
  }, []);
547
551
  const selectedPivotTable = useMemo(() => {
548
552
  if (formData.pivot && rows) {
549
- if (intialLoad && pivotData) {
553
+ if (intialLoad &&
554
+ pivotData &&
555
+ pivotData.rows &&
556
+ pivotData.rows.length > 0) {
550
557
  setInitialLoad(false);
551
558
  return pivotData;
552
559
  }
553
560
  else {
554
561
  setInitialLoad(false);
555
- return generatePivotTable(formData.pivot, rows, dateRange, false);
562
+ return generatePivotTable(formData.pivot, rows, dateRange, isComparison ?? false);
556
563
  }
557
564
  }
558
565
  else {
@@ -871,7 +878,10 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
871
878
  ...resp,
872
879
  rows,
873
880
  columns,
874
- filtersApplied: dashboardFilters,
881
+ pivotRows: selectedPivotTable?.rows || undefined,
882
+ pivotColumns: selectedPivotTable?.columns || undefined,
883
+ filtersApplied: specificDashboardFilter,
884
+ triggerReload: true,
875
885
  },
876
886
  });
877
887
  }
@@ -883,7 +893,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
883
893
  ...resp,
884
894
  rows,
885
895
  columns,
886
- filtersApplied: dashboardFilters,
896
+ filtersApplied: specificDashboardFilter,
887
897
  });
888
898
  }
889
899
  };
@@ -918,7 +928,12 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
918
928
  }),
919
929
  ...(!isHorizontalView && isOpen && { width: formWidth }),
920
930
  }, children: [((!isHorizontalView && windowWidth >= 1200) ||
921
- formData.chartType !== 'table') && (_jsx(Chart, { colors: theme.chartColors, config: { ...formData, rows }, hideDateRangeFilter: hideDateRangeFilter, containerStyle: {
931
+ formData.chartType !== 'table') && (_jsx(Chart, { colors: theme.chartColors, config: {
932
+ ...formData,
933
+ rows: rows,
934
+ pivotRows: selectedPivotTable?.rows || undefined,
935
+ pivotColumns: selectedPivotTable?.columns || undefined,
936
+ }, hideDateRangeFilter: hideDateRangeFilter, containerStyle: {
922
937
  width: '100%',
923
938
  height: formData.chartType === 'metric'
924
939
  ? 100