@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
@@ -15,6 +15,7 @@ import { quillFormat } from './utils/valueFormatter';
15
15
  import { convertColumnInfoToColumnInternal, convertFieldTypeToJSType, } from './utils/columnProcessing';
16
16
  import { createTableNameToTableAliasMap, getColumnsByTableFromASTAndSchema, getSelectFromAST, } from './utils/astProcessing';
17
17
  import { getSchemaInfoWithCustomFields } from './utils/schema';
18
+ import { getDateBucketFromRange } from './utils/dates';
18
19
  const CHART_TYPES = ['column', 'line', 'table', 'metric', 'bar', 'pie'];
19
20
  const POSTGRES_DATE_TYPES = [
20
21
  'timestamp',
@@ -49,6 +50,30 @@ function getPivotMetricOptions(pivot) {
49
50
  ];
50
51
  }
51
52
  }
53
+ export function createInitialFormData(columns) {
54
+ const firstNumberColumn = columns?.find((col) => numberFormatOptions.includes(col.format));
55
+ const formEmptyState = {
56
+ name: 'My Chart',
57
+ columns: columns.map((col) => {
58
+ return { ...col, label: snakeAndCamelCaseToTitleCase(col.label) };
59
+ }),
60
+ xAxisField: columns?.[0]?.field || '',
61
+ xAxisFormat: columns?.[0]?.format || '',
62
+ yAxisFields: [
63
+ {
64
+ field: firstNumberColumn?.field || columns?.[0]?.field || '',
65
+ label: '',
66
+ format: firstNumberColumn?.format || columns?.[0]?.field || '',
67
+ },
68
+ ],
69
+ xAxisLabel: '',
70
+ chartType: firstNumberColumn ? 'line' : 'table',
71
+ pivot: null,
72
+ dateField: { table: '', field: '' },
73
+ template: false,
74
+ };
75
+ return formEmptyState;
76
+ }
52
77
  function getChartTypeOptions(formData) {
53
78
  if (formData.pivot && !formData.pivot.rowField) {
54
79
  return CHART_TYPES.filter((elem) => elem === 'metric' || elem === 'table').map((elem) => ({
@@ -235,7 +260,7 @@ export function ChartBuilderWithModal(props) {
235
260
  * ### Chart Builder API
236
261
  * @see https://docs.quillsql.com/components/chart-builder
237
262
  */
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, }) {
263
+ 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, rowCount, isLoading, isComparison, onClickChartElement, }) {
239
264
  const dateRange = dr;
240
265
  const [client] = useContext(ClientContext);
241
266
  const [theme] = useContext(ThemeContext);
@@ -336,6 +361,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
336
361
  const [dashboardOptions, setDashboardOptions] = useState([]);
337
362
  const [defaultDashboardName, setDefaultDashboardName] = useState(destinationDashboard || report?.dashboardName || '');
338
363
  const { dashboardFilters } = useContext(DashboardFiltersContext);
364
+ const [chartRows, setChartRows] = useState(rows);
339
365
  const specificDashboardFilter = useMemo(() => {
340
366
  return dashboardFilters.filter((f) => f && defaultDashboardName === f.dashboardName);
341
367
  }, [dashboardFilters]);
@@ -539,7 +565,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
539
565
  }
540
566
  setFormData({
541
567
  ...curFormData,
542
- dashboardName: report
568
+ dashboardName: report && report.dashboardName
543
569
  ? report?.dashboardName
544
570
  : dashboardOptions[0]?.label,
545
571
  template: isTemplate,
@@ -548,26 +574,29 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
548
574
  }
549
575
  getFormData();
550
576
  }, []);
551
- const selectedPivotTable = useMemo(() => {
552
- if (formData.pivot && rows) {
553
- if (intialLoad &&
554
- pivotData &&
555
- pivotData.rows &&
556
- pivotData.rows.length > 0) {
557
- setInitialLoad(false);
558
- return pivotData;
559
- }
560
- else {
561
- setInitialLoad(false);
562
- return generatePivotTable(formData.pivot, rows, dateRange, isComparison ?? false);
577
+ const [selectedPivotTable, setSelectedPivotTable] = useState(pivotData || undefined);
578
+ const fetchPivotData = async (pivot, uniqueValues, overrideDateRange) => {
579
+ if (pivot && rows) {
580
+ setInitialLoad(false);
581
+ const dateFilter = report
582
+ ? report.filtersApplied.find((filter) => {
583
+ return filter.filterType === 'date_range';
584
+ })
585
+ : undefined;
586
+ let dateBucket = undefined;
587
+ if (overrideDateRange) {
588
+ dateBucket = getDateBucketFromRange(overrideDateRange);
563
589
  }
590
+ setSelectedPivotTable(await generatePivotTable(pivot, rows, overrideDateRange ?? dateRange, isComparison ?? false, -1, dateFilter ? dateFilter.comparisonRange : undefined, dateBucket, report, client, uniqueValues));
564
591
  }
565
592
  else {
566
- return undefined;
593
+ setSelectedPivotTable(undefined);
567
594
  }
568
- }, [formData.pivot, rows]);
595
+ };
569
596
  const formattedRows = useMemo(() => {
570
- if (selectedPivotTable && formData.chartType === 'table') {
597
+ if (selectedPivotTable &&
598
+ selectedPivotTable.columns &&
599
+ formData.chartType === 'table') {
571
600
  const columns = selectedPivotTable.columns;
572
601
  columns.forEach((col, index) => {
573
602
  // ADD THE RIGHT FIELD TYPE FOR THE VALUE COLUMNS
@@ -687,7 +716,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
687
716
  setFormData({ ...formData, [fieldName]: value });
688
717
  }
689
718
  };
690
- const handleAddPivot = (pivot) => {
719
+ const handleAddPivot = async (pivot, uniqueValues, dateRange, pivotData) => {
691
720
  const newPivotFormData = pivotFormData(pivot);
692
721
  // Only keep the old chart type if the shapes of the pivots are the same
693
722
  // since the valid chart types for some pivots might have changed (eg. going
@@ -697,6 +726,15 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
697
726
  Boolean(formData.pivot?.columnField) === Boolean(pivot.columnField);
698
727
  const isNewChartType = formData.chartType !== newPivotFormData.chartType;
699
728
  const keepOldChartType = isNewChartType && isPivotSameShape;
729
+ if (pivotData) {
730
+ setSelectedPivotTable({
731
+ rows: pivotData.rows,
732
+ columns: pivotData.columns,
733
+ });
734
+ }
735
+ else {
736
+ await fetchPivotData(pivot, uniqueValues, dateRange);
737
+ }
700
738
  setFormData((formData) => ({
701
739
  ...formData,
702
740
  ...newPivotFormData,
@@ -712,6 +750,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
712
750
  dashboardName: formData.dashboardName,
713
751
  pivot: null,
714
752
  });
753
+ setSelectedPivotTable(undefined);
715
754
  };
716
755
  const handleAddField = (fieldName) => {
717
756
  if (fieldName === 'columns') {
@@ -930,9 +969,10 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
930
969
  }, children: [((!isHorizontalView && windowWidth >= 1200) ||
931
970
  formData.chartType !== 'table') && (_jsx(Chart, { colors: theme.chartColors, config: {
932
971
  ...formData,
933
- rows: rows,
972
+ rows: chartRows,
934
973
  pivotRows: selectedPivotTable?.rows || undefined,
935
974
  pivotColumns: selectedPivotTable?.columns || undefined,
975
+ rowCount,
936
976
  }, hideDateRangeFilter: hideDateRangeFilter, containerStyle: {
937
977
  width: '100%',
938
978
  height: formData.chartType === 'metric'
@@ -954,13 +994,13 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
954
994
  onPageChange && onPageChange(page);
955
995
  }, onSortChange: (sort) => {
956
996
  onSortChange && onSortChange(sort);
957
- }, numberOfRows: numberOfRows, isLoading: isLoading })) : (_jsx(TableComponent, { rows: formattedRows, columns: selectedPivotTable
997
+ }, rowCount: rowCount, isLoading: isLoading })) : (_jsx(TableComponent, { rows: formattedRows, columns: selectedPivotTable
958
998
  ? selectedPivotTable.columns
959
999
  : formData.columns, onPageChange: (page) => {
960
1000
  onPageChange && onPageChange(page);
961
1001
  }, onSortChange: (sort) => {
962
1002
  onSortChange && onSortChange(sort);
963
- }, numberOfRows: numberOfRows, isLoading: isLoading })) }))] }), isOpen && (_jsxs("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
1003
+ }, rowCount: rowCount, isLoading: isLoading })) }))] }), isOpen && (_jsxs("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
964
1004
  display: 'flex',
965
1005
  flexDirection: 'column',
966
1006
  gap: 20,
@@ -993,7 +1033,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
993
1033
  // marginTop: 6,
994
1034
  display: 'flex',
995
1035
  flexDirection: 'column',
996
- }, children: _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, CardComponent: CardComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, LoadingComponent: LoadingComponent, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: processedColumns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot, query: query, pivotCountRequest: 4, initialUniqueValues: initialUniqueValues, initialSelectedPivotTable: selectedPivotTable, pivotRecommendationsEnabled: pivotRecommendationsEnabled }) }), formData.pivot && (_jsx("div", { children: _jsx("div", { style: { width: pivotCardWidth }, children: _jsx(PivotCard, { pivotTable: {
1036
+ }, children: _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, CardComponent: CardComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, LoadingComponent: LoadingComponent, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: processedColumns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot, query: query, pivotCountRequest: 4, initialUniqueValues: initialUniqueValues, initialSelectedPivotTable: selectedPivotTable, pivotRecommendationsEnabled: pivotRecommendationsEnabled, report: report }) }), formData.pivot && selectedPivotTable && (_jsx("div", { children: _jsx("div", { style: { width: pivotCardWidth }, children: _jsx(PivotCard, { pivotTable: {
997
1037
  pivot: formData.pivot,
998
1038
  rows: selectedPivotTable?.rows,
999
1039
  columns: selectedPivotTable?.columns,
@@ -1053,13 +1093,13 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
1053
1093
  onPageChange && onPageChange(page);
1054
1094
  }, onSortChange: (sort) => {
1055
1095
  onSortChange && onSortChange(sort);
1056
- }, numberOfRows: numberOfRows, isLoading: isLoading })) : (_jsx(TableComponent, { rows: formattedRows, columns: selectedPivotTable
1096
+ }, rowCount: rowCount, isLoading: isLoading })) : (_jsx(TableComponent, { rows: formattedRows, columns: selectedPivotTable
1057
1097
  ? selectedPivotTable.columns
1058
1098
  : formData.columns, onPageChange: (page) => {
1059
1099
  onPageChange && onPageChange(page);
1060
1100
  }, onSortChange: (sort) => {
1061
1101
  onSortChange && onSortChange(sort);
1062
- }, numberOfRows: numberOfRows, isLoading: isLoading })) })), showTableFormatOptions && (_jsxs("div", { children: [_jsxs("div", { style: {
1102
+ }, rowCount: rowCount, isLoading: isLoading })) })), showTableFormatOptions && (_jsxs("div", { children: [_jsxs("div", { style: {
1063
1103
  display: 'flex',
1064
1104
  flexDirection: 'column',
1065
1105
  }, children: [_jsx(HeaderComponent, { label: "Table" }), _jsx(SubHeaderComponent, { label: "Columns" })] }), _jsxs(ChartBuilderInputColumnContainer, { children: [formData.pivot &&
@@ -1 +1 @@
1
- {"version":3,"file":"ChartEditor.d.ts","sourceRoot":"","sources":["../../src/ChartEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChartEditor.d.ts","sourceRoot":"","sources":["../../src/ChartEditor.tsx"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ import { mergeComparisonRange } from './utils/merge';
9
9
  import { QuillCard } from './components/QuillCard';
10
10
  import { processFilterErrorList } from './utils/errorProcessing';
11
11
  import { cleanDashboardItem } from './utils/dashboard';
12
+ import { getPaginatedRows } from './utils/tableProcessing';
13
+ import { MAX_COLUMN_ROWS_LIMIT } from './utils/constants';
12
14
  /**
13
15
  * ### Quill Chart Editor
14
16
  *
@@ -47,10 +49,10 @@ export default function ChartEditor({ isOpen, reportId, isAdmin = false, destina
47
49
  dashboard?.[reportId].dashboardName === f.dashboardName);
48
50
  }, [dashboardFilters]);
49
51
  const [client, _] = useContext(ClientContext);
50
- const [dashboardItem, setDashboardItem] = useState(dashboard?.[reportId]);
52
+ const [report, setReport] = useState(dashboard?.[reportId]);
51
53
  const [isLoading, setIsLoading] = useState(false);
52
54
  const [additionalProcessing, setAdditionalProcessing] = useState({});
53
- const [numberOfRows, setNumberOfRows] = useState(undefined);
55
+ const [rowCount, setRowCount] = useState(undefined);
54
56
  const [previousPage, setPreviousPage] = useState(0);
55
57
  const [customFields] = useContext(CustomFieldContext);
56
58
  const dateFilter = Object.values(specificDashboardFilter).find((filter) => filter.filterType == 'date_range');
@@ -75,24 +77,57 @@ export default function ChartEditor({ isOpen, reportId, isAdmin = false, destina
75
77
  };
76
78
  }, []);
77
79
  const onPageChange = (page) => {
78
- if (((previousPage < page.currentPage &&
79
- (page.currentPage * page.rowsPerPage) % 100 === 0) ||
80
- (previousPage > page.currentPage &&
81
- (previousPage * page.rowsPerPage) % 100 === 0)) &&
82
- dashboardItem.chartType === 'table' &&
83
- !dashboardItem.pivot) {
84
- getChartOptions({ page });
80
+ if (report?.rowCount) {
81
+ if ((previousPage < page.currentPage &&
82
+ (page.currentPage * page.rowsPerPage) % MAX_COLUMN_ROWS_LIMIT ===
83
+ 0) ||
84
+ (previousPage > page.currentPage &&
85
+ (previousPage * page.rowsPerPage) % MAX_COLUMN_ROWS_LIMIT === 0)) {
86
+ updateTableRows({ page });
87
+ }
88
+ }
89
+ else {
90
+ if ((previousPage < page.currentPage &&
91
+ (page.currentPage * page.rowsPerPage) % MAX_COLUMN_ROWS_LIMIT ===
92
+ 0) ||
93
+ (previousPage > page.currentPage &&
94
+ (previousPage * page.rowsPerPage) % MAX_COLUMN_ROWS_LIMIT === 0)) {
95
+ getChartOptions({ page });
96
+ }
85
97
  }
86
98
  setPreviousPage(page.currentPage);
87
99
  };
88
100
  const onSortChange = (sort) => {
89
- if (dashboardItem &&
90
- dashboardItem.chartType === 'table' &&
91
- !dashboardItem.pivot) {
92
- getChartOptions({ sort });
101
+ if (report.chartType === 'table' && report.pivot) {
102
+ return;
103
+ }
104
+ if (report?.rowCount) {
105
+ setPreviousPage(0);
106
+ updateTableRows({ sort, page: { currentPage: 0, rowsPerPage: 20 } });
107
+ }
108
+ else {
109
+ getChartOptions({ sort, page: { currentPage: 0, rowsPerPage: 20 } });
93
110
  setPreviousPage(0);
94
111
  }
95
112
  };
113
+ const updateTableRows = async (processing) => {
114
+ if (!isLoading) {
115
+ setIsLoading(true);
116
+ try {
117
+ const updatedProcessing = { ...additionalProcessing, ...processing };
118
+ let paginatedRows = await getPaginatedRows(report, client, updatedProcessing, specificDashboardFilter, customFields);
119
+ setReport({ ...report, rows: paginatedRows });
120
+ setTimeout(() => {
121
+ setIsLoading(false);
122
+ }, 200);
123
+ setAdditionalProcessing(updatedProcessing);
124
+ }
125
+ catch (e) {
126
+ console.log('Error fetching chart: ', e);
127
+ setIsLoading(false);
128
+ }
129
+ }
130
+ };
96
131
  const getChartOptions = async (processing) => {
97
132
  if (!isLoading) {
98
133
  setIsLoading(true);
@@ -139,10 +174,10 @@ export default function ChartEditor({ isOpen, reportId, isAdmin = false, destina
139
174
  mergeComparisonRange(resp);
140
175
  if (resp.chartType === 'table' && resp.compareRows[0]) {
141
176
  if (resp.compareRows[0]?.count) {
142
- setNumberOfRows(resp.compareRows[0]?.count);
177
+ setRowCount(resp.compareRows[0]?.count);
143
178
  }
144
179
  else if (resp.compareRows[0]?.COUNT) {
145
- setNumberOfRows(resp.compareRows[0]?.COUNT);
180
+ setRowCount(resp.compareRows[0]?.COUNT);
146
181
  }
147
182
  }
148
183
  }
@@ -151,11 +186,11 @@ export default function ChartEditor({ isOpen, reportId, isAdmin = false, destina
151
186
  filtersApplied: specificDashboardFilter,
152
187
  };
153
188
  const cleanedReport = await cleanDashboardItem(curDashboardItem, specificDashboardFilter);
154
- setDashboardItem({ ...dashboardItem, ...cleanedReport });
189
+ setReport({ ...report, ...cleanedReport });
155
190
  dispatch({
156
191
  type: 'UPDATE_DASHBOARD_ITEM',
157
192
  id: reportId,
158
- data: { ...dashboardItem, ...cleanedReport },
193
+ data: { ...report, ...cleanedReport },
159
194
  });
160
195
  }
161
196
  setTimeout(() => {
@@ -171,27 +206,32 @@ export default function ChartEditor({ isOpen, reportId, isAdmin = false, destina
171
206
  };
172
207
  useEffect(() => {
173
208
  let isSubscribed = true;
174
- if (!dashboardItem) {
209
+ if (!report) {
175
210
  getChartOptions();
176
211
  }
177
212
  else {
178
- if (dashboardItem.chartType === 'table' && !dashboardItem.pivot) {
179
- getChartOptions({ page: { currentPage: 0, rowsPerPage: 10 } });
180
- setNumberOfRows(1);
213
+ if (report.chartType === 'table' && report.pivot) {
214
+ // USE PIVOT ROW COUNT WHEN TABLE AND PIVOT
215
+ setRowCount(undefined);
216
+ }
217
+ else {
218
+ setRowCount(report.rowCount ?? report.rows.length);
181
219
  }
182
220
  }
183
221
  return () => {
184
222
  isSubscribed = false;
185
223
  };
186
224
  }, [client, reportId]);
187
- if (!dashboardItem) {
225
+ if (!report) {
188
226
  return _jsx("div", {});
189
227
  }
190
228
  return (_jsx("div", { ref: parentRef, style: { height: '100%' }, children: _jsx(ModalComponent, { isOpen: isOpen, setIsOpen: setIsOpen, title: chartBuilderTitle || 'Add to dashboard',
191
229
  // For isHorizontalView, use full viewport size minus 80px for padding,
192
230
  // otherwise use the default layout method of the modal (contents).
193
- width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: _jsx(ChartBuilder, { report: dashboardItem, rows: dashboardItem.rows, columns: dashboardItem.columns, query: dashboardItem.queryString, pivot: dashboardItem.pivot, isOpen: isOpen, isComparison: dateFilter?.comparisonRange, isLoading: isLoading, setIsOpen: setIsOpen, showTableFormatOptions: isAdmin, showDateFieldOptions: isAdmin, showAccessControlOptions: isAdmin, showDashboardDropdown: isAdmin, destinationDashboard: destinationDashboard, onAddToDashboardComplete: onAddToDashboardComplete, dateRange: dateRange, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, HeaderComponent: HeaderComponent, SubHeaderComponent: SubHeaderComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, DeleteButtonComponent: DeleteButtonComponent, CardComponent: CardComponent, ModalComponent: ModalComponent, isHorizontalView: isHorizontalView, PopoverComponent: PopoverComponent, TableComponent: TableComponent, ChartBuilderInputRowContainer: ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer: ChartBuilderInputColumnContainer, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, ErrorMessageComponent: ErrorMessageComponent, LoadingComponent: LoadingComponent, onDelete: onDelete, title: chartBuilderTitle, buttonLabel: chartBuilderButtonLabel, organizationName: organizationName, hideSubmitButton: hideSubmitButton, hideDeleteButton: hideDeleteButton, FormContainer: ChartBuilderFormContainer, onPageChange: onPageChange, onSortChange: onSortChange, numberOfRows: numberOfRows, onClickChartElement: onClickChartElement, pivotData: {
194
- rows: dashboardItem.pivotRows,
195
- columns: dashboardItem.pivotColumns,
196
- } }) }) }));
231
+ width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: _jsx(ChartBuilder, { report: report, rows: report.rows, columns: report.columns, query: report.queryString, pivot: report.pivot, isOpen: isOpen, isComparison: dateFilter?.comparisonRange, isLoading: isLoading, setIsOpen: setIsOpen, showTableFormatOptions: isAdmin, showDateFieldOptions: isAdmin, showAccessControlOptions: isAdmin, showDashboardDropdown: isAdmin, destinationDashboard: destinationDashboard, onAddToDashboardComplete: onAddToDashboardComplete, dateRange: dateRange, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, HeaderComponent: HeaderComponent, SubHeaderComponent: SubHeaderComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, DeleteButtonComponent: DeleteButtonComponent, CardComponent: CardComponent, ModalComponent: ModalComponent, isHorizontalView: isHorizontalView, PopoverComponent: PopoverComponent, TableComponent: TableComponent, ChartBuilderInputRowContainer: ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer: ChartBuilderInputColumnContainer, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, ErrorMessageComponent: ErrorMessageComponent, LoadingComponent: LoadingComponent, onDelete: onDelete, title: chartBuilderTitle, buttonLabel: chartBuilderButtonLabel, organizationName: organizationName, hideSubmitButton: hideSubmitButton, hideDeleteButton: hideDeleteButton, FormContainer: ChartBuilderFormContainer, onPageChange: onPageChange, onSortChange: onSortChange, rowCount: rowCount, onClickChartElement: onClickChartElement, pivotData: report.pivotColumns
232
+ ? {
233
+ rows: report.pivotRows || [],
234
+ columns: report.pivotColumns,
235
+ }
236
+ : undefined }) }) }));
197
237
  }
@@ -1,29 +1,11 @@
1
1
  import React from 'react';
2
- export declare const DateFilterContext: React.Context<any>;
3
2
  export declare const SchemaContext: React.Context<any>;
4
3
  export declare const CustomFieldContext: React.Context<any>;
5
- export declare const ColumnsContext: React.Context<any>;
6
- export declare const RowsContext: React.Context<any>;
7
- export declare const SelectedSidebarIndexContext: React.Context<any>;
8
- export declare const HistoryContext: React.Context<any>;
9
- export declare const SavedQueriesContext: React.Context<any>;
10
- export declare const SaveQueryModalStatusContext: React.Context<any>;
11
- export declare const EditorQueryContext: React.Context<any>;
12
4
  export declare const ThemeContext: React.Context<any>;
13
5
  export declare const ClientContext: React.Context<any>;
14
- export declare const CreateVisualizationModalVisibleContext: React.Context<any>;
15
- export declare const ActiveVisualizationContext: React.Context<any>;
16
- export declare const QueryResultsLoadingContext: React.Context<any>;
17
- export declare const EditVisualizationModalVisibleContext: React.Context<any>;
18
- export declare const ReportBuilderQueryContext: React.Context<any>;
19
- export declare const SavedReportsQueryContext: React.Context<any>;
6
+ export declare const DashboardDataContext: React.Context<any>;
20
7
  export declare const DashboardContext: React.Context<any>;
21
8
  export declare const DashboardFiltersContext: React.Context<any>;
22
9
  export declare const ReportFiltersContext: React.Context<any>;
23
- export declare const ChartDateFiltersContext: React.Context<any>;
24
- export declare const useChartDateFilters: () => {
25
- getChartDateFilterById: (id: string) => any;
26
- setChartDateFilter: (id: string, dateFilter: any) => void;
27
- };
28
10
  export declare const ContextProvider: ({ children, initialTheme, publicKey, environment, authToken, customerId, userId, queryEndpoint, queryHeaders, withCredentials, }: any) => import("react/jsx-runtime").JSX.Element | null;
29
11
  //# sourceMappingURL=Context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../src/Context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAMf,eAAO,MAAM,iBAAiB,oBAAwC,CAAC;AACvE,eAAO,MAAM,aAAa,oBAAwC,CAAC;AACnE,eAAO,MAAM,kBAAkB,oBAAwC,CAAC;AACxE,eAAO,MAAM,cAAc,oBAA0C,CAAC;AACtE,eAAO,MAAM,WAAW,oBAA0C,CAAC;AACnE,eAAO,MAAM,2BAA2B,oBAAuC,CAAC;AAChF,eAAO,MAAM,cAAc,oBAAwC,CAAC;AACpE,eAAO,MAAM,mBAAmB,oBAAwC,CAAC;AACzE,eAAO,MAAM,2BAA2B,oBAGtC,CAAC;AACH,eAAO,MAAM,kBAAkB,oBAAwC,CAAC;AACxE,eAAO,MAAM,YAAY,oBAA0C,CAAC;AACpE,eAAO,MAAM,aAAa,oBAA0C,CAAC;AACrE,eAAO,MAAM,sCAAsC,oBAGjD,CAAC;AACH,eAAO,MAAM,0BAA0B,oBAGrC,CAAC;AACH,eAAO,MAAM,0BAA0B,oBAGrC,CAAC;AACH,eAAO,MAAM,oCAAoC,oBAG/C,CAAC;AACH,eAAO,MAAM,yBAAyB,oBAAwC,CAAC;AAC/E,eAAO,MAAM,wBAAwB,oBAAwC,CAAC;AAC9E,eAAO,MAAM,gBAAgB,oBAAwC,CAAC;AACtE,eAAO,MAAM,uBAAuB,oBAAwC,CAAC;AAC7E,eAAO,MAAM,oBAAoB,oBAAwC,CAAC;AAC1E,eAAO,MAAM,uBAAuB,oBAAwC,CAAC;AAE7E,eAAO,MAAM,mBAAmB;iCAKM,MAAM;6BACV,MAAM,cAAc,GAAG;CAQxD,CAAC;AA6DF,eAAO,MAAM,eAAe,qIAWzB,GAAG,mDAkQL,CAAC"}
1
+ {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../src/Context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAK9E,eAAO,MAAM,aAAa,oBAAwC,CAAC;AACnE,eAAO,MAAM,kBAAkB,oBAAwC,CAAC;AACxE,eAAO,MAAM,YAAY,oBAA0C,CAAC;AACpE,eAAO,MAAM,aAAa,oBAA0C,CAAC;AACrE,eAAO,MAAM,oBAAoB,oBAAwC,CAAC;AAC1E,eAAO,MAAM,gBAAgB,oBAAwC,CAAC;AACtE,eAAO,MAAM,uBAAuB,oBAAwC,CAAC;AAC7E,eAAO,MAAM,oBAAoB,oBAAwC,CAAC;AAmF1E,eAAO,MAAM,eAAe,qIAWzB,GAAG,mDAwLL,CAAC"}
@@ -1,55 +1,15 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useState, createContext, useEffect, useReducer, useContext, } from 'react';
2
+ import { useState, createContext, useEffect, useReducer } from 'react';
3
3
  import { getCustomFieldInfo } from './utils/schema';
4
4
  const dummySetter = () => { };
5
- export const DateFilterContext = createContext([[], dummySetter]);
6
5
  export const SchemaContext = createContext([[], dummySetter]);
7
6
  export const CustomFieldContext = createContext([[], dummySetter]);
8
- export const ColumnsContext = createContext([null, dummySetter]);
9
- export const RowsContext = createContext([null, dummySetter]);
10
- export const SelectedSidebarIndexContext = createContext([0, dummySetter]);
11
- export const HistoryContext = createContext([[], dummySetter]);
12
- export const SavedQueriesContext = createContext([[], dummySetter]);
13
- export const SaveQueryModalStatusContext = createContext([
14
- 'HIDDEN',
15
- dummySetter,
16
- ]);
17
- export const EditorQueryContext = createContext(['', dummySetter]);
18
7
  export const ThemeContext = createContext([null, dummySetter]);
19
8
  export const ClientContext = createContext([null, dummySetter]);
20
- export const CreateVisualizationModalVisibleContext = createContext([
21
- false,
22
- dummySetter,
23
- ]);
24
- export const ActiveVisualizationContext = createContext([
25
- null,
26
- dummySetter,
27
- ]);
28
- export const QueryResultsLoadingContext = createContext([
29
- false,
30
- dummySetter,
31
- ]);
32
- export const EditVisualizationModalVisibleContext = createContext([
33
- false,
34
- dummySetter,
35
- ]);
36
- export const ReportBuilderQueryContext = createContext(['', dummySetter]);
37
- export const SavedReportsQueryContext = createContext(['', dummySetter]);
9
+ export const DashboardDataContext = createContext([{}, dummySetter]);
38
10
  export const DashboardContext = createContext([{}, dummySetter]);
39
11
  export const DashboardFiltersContext = createContext([[], dummySetter]);
40
12
  export const ReportFiltersContext = createContext([{}, dummySetter]);
41
- export const ChartDateFiltersContext = createContext([{}, dummySetter]);
42
- export const useChartDateFilters = () => {
43
- const { chartDateFilters, setChartDateFilters } = useContext(ChartDateFiltersContext);
44
- const getChartDateFilterById = (id) => chartDateFilters[id];
45
- const setChartDateFilter = (id, dateFilter) => {
46
- setChartDateFilters((prev) => ({ ...prev, [id]: dateFilter }));
47
- };
48
- return {
49
- getChartDateFilterById,
50
- setChartDateFilter,
51
- };
52
- };
53
13
  const dashboardReducer = (state, action) => {
54
14
  switch (action.type) {
55
15
  case 'UPDATE_DASHBOARD_ITEM':
@@ -71,6 +31,27 @@ const dashboardReducer = (state, action) => {
71
31
  return state;
72
32
  }
73
33
  };
34
+ const dashboardDataReducer = (state, action) => {
35
+ switch (action.type) {
36
+ case 'UPDATE_DASHBOARD':
37
+ return {
38
+ ...state,
39
+ [action.id]: {
40
+ ...state[action.id],
41
+ ...action.data,
42
+ },
43
+ };
44
+ case 'ADD_DASHBOARD':
45
+ return {
46
+ ...state,
47
+ [action.id]: action.data,
48
+ };
49
+ case 'CLEAR_DASHBOARD':
50
+ return {};
51
+ default:
52
+ return state;
53
+ }
54
+ };
74
55
  const reportFiltersReducer = (state, action) => {
75
56
  switch (action.type) {
76
57
  case 'UPDATE_REPORT_FILTER':
@@ -105,23 +86,10 @@ const dashboardFiltersReducer = (state, action) => {
105
86
  export const ContextProvider = ({ children, initialTheme, publicKey, environment, authToken, customerId, userId, queryEndpoint, queryHeaders, withCredentials, }) => {
106
87
  const [client, setClient] = useState(null);
107
88
  const [theme, setTheme] = useState(null);
108
- const [columns, setColumns] = useState(null);
109
- const [rows, setRows] = useState(null);
110
89
  const [schema, setSchema] = useState([]);
111
90
  const [customFields, setCustomFields] = useState(null);
112
- const [selectedSidebarIndex, setSelectedSidebarIndex] = useState(0);
113
- const [history, setHistory] = useState([]);
114
- const [savedQueries, setSavedQueries] = useState([]);
115
- // REPORT_BUILDER, SQL_EDITOR, HIDDEN
116
- const [saveQueryModalStatus, setSaveQueryModalStatus] = useState('HIDDEN');
117
- const [editorQuery, setEditorQuery] = useState('');
118
- const [savedReportsQuery, setSavedReportsQuery] = useState('');
119
- const [reportBuilderQuery, setReportBuilderQuery] = useState('');
120
- const [createVisualizationModalVisible, setCreateVisualizationModalVisible] = useState(false);
121
- const [activeVisualization, setActiveVisualization] = useState(null);
122
- const [queryResultsLoading, setQueryResultsLoading] = useState(false);
123
- const [editVisualizationModalVisible, setEditVisualizationModalVisible] = useState(false);
124
91
  const [dashboard, dispatch] = useReducer(dashboardReducer, {});
92
+ const [dashboardData, dashboardDataDispatch] = useReducer(dashboardDataReducer, {});
125
93
  const [dashboardFilters, dashboardFiltersDispatch] = useReducer(dashboardFiltersReducer, []);
126
94
  const [reportFilters, reportFiltersDispatch] = useReducer(reportFiltersReducer, {});
127
95
  const customFieldHelper = async (client) => {
@@ -242,32 +210,14 @@ export const ContextProvider = ({ children, initialTheme, publicKey, environment
242
210
  dispatch({ type: 'CLEAR_DASHBOARD' });
243
211
  }
244
212
  }, [customerId, environment]);
245
- if (!theme || !client || !customFields) {
213
+ if (!theme) {
246
214
  return null;
247
215
  }
248
- return (_jsx(ClientContext.Provider, { value: [client, setClient], children: _jsx(ThemeContext.Provider, { value: [theme, setTheme], children: _jsx(SchemaContext.Provider, { value: [schema, setSchema], children: _jsx(CustomFieldContext.Provider, { value: [customFields, setCustomFields], children: _jsx(ColumnsContext.Provider, { value: [columns, setColumns], children: _jsx(RowsContext.Provider, { value: [rows, setRows], children: _jsx(SelectedSidebarIndexContext.Provider, { value: [selectedSidebarIndex, setSelectedSidebarIndex], children: _jsx(HistoryContext.Provider, { value: [history, setHistory], children: _jsx(SavedQueriesContext.Provider, { value: [savedQueries, setSavedQueries], children: _jsx(SaveQueryModalStatusContext.Provider, { value: [saveQueryModalStatus, setSaveQueryModalStatus], children: _jsx(CreateVisualizationModalVisibleContext.Provider, { value: [
249
- createVisualizationModalVisible,
250
- setCreateVisualizationModalVisible,
251
- ], children: _jsx(EditorQueryContext.Provider, { value: [editorQuery, setEditorQuery], children: _jsx(ActiveVisualizationContext.Provider, { value: [
252
- activeVisualization,
253
- setActiveVisualization,
254
- ], children: _jsx(QueryResultsLoadingContext.Provider, { value: [
255
- queryResultsLoading,
256
- setQueryResultsLoading,
257
- ], children: _jsx(EditVisualizationModalVisibleContext.Provider, { value: [
258
- editVisualizationModalVisible,
259
- setEditVisualizationModalVisible,
260
- ], children: _jsx(ReportBuilderQueryContext.Provider, { value: [
261
- reportBuilderQuery,
262
- setReportBuilderQuery,
263
- ], children: _jsx(SavedReportsQueryContext.Provider, { value: [
264
- savedReportsQuery,
265
- setSavedReportsQuery,
266
- ], children: _jsx(DashboardContext.Provider, { value: { dashboard, dispatch }, children: _jsx(DashboardFiltersContext.Provider, { value: {
267
- dashboardFilters,
268
- dashboardFiltersDispatch,
269
- }, children: _jsx(ReportFiltersContext.Provider, { value: {
270
- reportFilters,
271
- reportFiltersDispatch,
272
- }, children: children }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }));
216
+ return (_jsx(ClientContext.Provider, { value: [client, setClient], children: _jsx(ThemeContext.Provider, { value: [theme, setTheme], children: _jsx(SchemaContext.Provider, { value: [schema, setSchema], children: _jsx(CustomFieldContext.Provider, { value: [customFields, setCustomFields], children: _jsx(DashboardContext.Provider, { value: { dashboard, dispatch }, children: _jsx(DashboardDataContext.Provider, { value: { dashboardData, dashboardDataDispatch }, children: _jsx(DashboardFiltersContext.Provider, { value: {
217
+ dashboardFilters,
218
+ dashboardFiltersDispatch,
219
+ }, children: _jsx(ReportFiltersContext.Provider, { value: {
220
+ reportFilters,
221
+ reportFiltersDispatch,
222
+ }, children: children }) }) }) }) }) }) }) }));
273
223
  };
@@ -131,6 +131,10 @@ export interface QuillReportInternal extends QuillReport {
131
131
  /** The label to use for this yAxis. */
132
132
  label: string;
133
133
  }[];
134
+ /** Table row count */
135
+ rowCount?: number;
136
+ /** An array of queries that are used to construct the unprocessed report */
137
+ itemQuery?: string[];
134
138
  }
135
139
  /**
136
140
  * Props for the Quill Dashboard component.
@@ -159,11 +163,12 @@ export interface DashboardProps {
159
163
  onClickChartElement?: (data: any) => void;
160
164
  }) => JSX.Element;
161
165
  /** A component that wraps a dashboard item for 'table' chart types. */
162
- TableComponent?: ({ report, onClick, isLoading, error, onPageChange, onSortChange, }: {
166
+ TableComponent?: ({ report, onClick, isLoading, error, rowCount, onPageChange, onSortChange, }: {
163
167
  report: QuillReport;
164
168
  onClick?: (report: QuillReport) => void;
165
169
  isLoading?: boolean;
166
170
  error?: string;
171
+ rowCount?: number;
167
172
  onPageChange?: (page: {
168
173
  currentPage: number;
169
174
  rowsPerPage: number;