@quillsql/react 2.13.35 → 2.13.36

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 (185) hide show
  1. package/dist/cjs/Chart.d.ts +0 -1
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +17 -14
  4. package/dist/cjs/ChartBuilder.d.ts +1 -0
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +178 -96
  7. package/dist/cjs/Context.d.ts.map +1 -1
  8. package/dist/cjs/Context.js +6 -8
  9. package/dist/cjs/Dashboard.js +17 -7
  10. package/dist/cjs/ReportBuilder.d.ts +2 -0
  11. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  12. package/dist/cjs/ReportBuilder.js +398 -271
  13. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  14. package/dist/cjs/SQLEditor.js +33 -11
  15. package/dist/cjs/Table.d.ts.map +1 -1
  16. package/dist/cjs/Table.js +17 -1
  17. package/dist/cjs/components/Chart/InternalChart.d.ts +0 -1
  18. package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
  19. package/dist/cjs/components/Chart/InternalChart.js +6 -7
  20. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  21. package/dist/cjs/components/Dashboard/DataLoader.js +75 -30
  22. package/dist/cjs/components/QuillMultiSelectSectionList.d.ts.map +1 -1
  23. package/dist/cjs/components/QuillMultiSelectSectionList.js +21 -16
  24. package/dist/cjs/components/QuillMultiSelectWithCombo.js +18 -8
  25. package/dist/cjs/components/QuillSelectWithCombo.js +17 -7
  26. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +1 -1
  27. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  28. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +2 -2
  29. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +16 -4
  30. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  31. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +9 -18
  32. package/dist/cjs/components/UiComponents.d.ts +2 -1
  33. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  34. package/dist/cjs/components/UiComponents.js +44 -28
  35. package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
  36. package/dist/cjs/hooks/useAskQuill.js +28 -4
  37. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  38. package/dist/cjs/hooks/useQuill.js +9 -1
  39. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
  40. package/dist/cjs/hooks/useVirtualTables.js +11 -35
  41. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  42. package/dist/cjs/internals/ReportBuilder/PivotForm.js +14 -2
  43. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +12 -11
  44. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  45. package/dist/cjs/internals/ReportBuilder/PivotModal.js +63 -18
  46. package/dist/cjs/models/Client.d.ts +4 -5
  47. package/dist/cjs/models/Client.d.ts.map +1 -1
  48. package/dist/cjs/models/Pivot.d.ts +10 -0
  49. package/dist/cjs/models/Pivot.d.ts.map +1 -1
  50. package/dist/cjs/models/Report.d.ts +13 -1
  51. package/dist/cjs/models/Report.d.ts.map +1 -1
  52. package/dist/cjs/utils/astFilterProcessing.d.ts +1 -1
  53. package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
  54. package/dist/cjs/utils/astFilterProcessing.js +799 -64
  55. package/dist/cjs/utils/astProcessing.d.ts +4 -1
  56. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  57. package/dist/cjs/utils/astProcessing.js +2 -2
  58. package/dist/cjs/utils/client.d.ts.map +1 -1
  59. package/dist/cjs/utils/client.js +6 -3
  60. package/dist/cjs/utils/columnProcessing.d.ts +1 -0
  61. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  62. package/dist/cjs/utils/columnProcessing.js +1 -0
  63. package/dist/cjs/utils/dashboard.d.ts +2 -1
  64. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  65. package/dist/cjs/utils/dashboard.js +38 -10
  66. package/dist/cjs/utils/filterProcessing.d.ts +1 -1
  67. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  68. package/dist/cjs/utils/merge.d.ts +16 -0
  69. package/dist/cjs/utils/merge.d.ts.map +1 -1
  70. package/dist/cjs/utils/merge.js +210 -0
  71. package/dist/cjs/utils/paginationProcessing.d.ts +1 -1
  72. package/dist/cjs/utils/paginationProcessing.d.ts.map +1 -1
  73. package/dist/cjs/utils/paginationProcessing.js +3 -2
  74. package/dist/cjs/utils/pivotConstructor.d.ts +19 -9
  75. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  76. package/dist/cjs/utils/pivotConstructor.js +90 -34
  77. package/dist/cjs/utils/queryConstructor.d.ts +8 -1
  78. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  79. package/dist/cjs/utils/queryConstructor.js +276 -310
  80. package/dist/cjs/utils/report.d.ts +25 -12
  81. package/dist/cjs/utils/report.d.ts.map +1 -1
  82. package/dist/cjs/utils/report.js +13 -7
  83. package/dist/cjs/utils/schema.d.ts +1 -1
  84. package/dist/cjs/utils/schema.d.ts.map +1 -1
  85. package/dist/cjs/utils/schema.js +3 -32
  86. package/dist/cjs/utils/tableProcessing.d.ts +43 -13
  87. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  88. package/dist/cjs/utils/tableProcessing.js +140 -75
  89. package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
  90. package/dist/cjs/utils/textProcessing.js +10 -1
  91. package/dist/cjs/utils/valueFormatter.d.ts +2 -1
  92. package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
  93. package/dist/cjs/utils/valueFormatter.js +18 -14
  94. package/dist/esm/Chart.d.ts +0 -1
  95. package/dist/esm/Chart.d.ts.map +1 -1
  96. package/dist/esm/Chart.js +0 -6
  97. package/dist/esm/ChartBuilder.d.ts +1 -0
  98. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  99. package/dist/esm/ChartBuilder.js +179 -97
  100. package/dist/esm/Context.d.ts.map +1 -1
  101. package/dist/esm/Context.js +7 -9
  102. package/dist/esm/ReportBuilder.d.ts +2 -0
  103. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  104. package/dist/esm/ReportBuilder.js +399 -272
  105. package/dist/esm/SQLEditor.d.ts.map +1 -1
  106. package/dist/esm/SQLEditor.js +33 -11
  107. package/dist/esm/Table.d.ts.map +1 -1
  108. package/dist/esm/Table.js +17 -1
  109. package/dist/esm/components/Chart/InternalChart.d.ts +0 -1
  110. package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
  111. package/dist/esm/components/Chart/InternalChart.js +6 -6
  112. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  113. package/dist/esm/components/Dashboard/DataLoader.js +75 -30
  114. package/dist/esm/components/QuillMultiSelectSectionList.d.ts.map +1 -1
  115. package/dist/esm/components/QuillMultiSelectSectionList.js +5 -12
  116. package/dist/esm/components/QuillMultiSelectWithCombo.js +1 -1
  117. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +1 -1
  118. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  119. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -2
  120. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +16 -4
  121. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  122. package/dist/esm/components/ReportBuilder/AddSortPopover.js +9 -18
  123. package/dist/esm/components/UiComponents.d.ts +2 -1
  124. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  125. package/dist/esm/components/UiComponents.js +27 -21
  126. package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
  127. package/dist/esm/hooks/useAskQuill.js +28 -4
  128. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  129. package/dist/esm/hooks/useQuill.js +10 -2
  130. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  131. package/dist/esm/hooks/useVirtualTables.js +12 -36
  132. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  133. package/dist/esm/internals/ReportBuilder/PivotForm.js +14 -2
  134. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +12 -11
  135. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  136. package/dist/esm/internals/ReportBuilder/PivotModal.js +63 -18
  137. package/dist/esm/models/Client.d.ts +4 -5
  138. package/dist/esm/models/Client.d.ts.map +1 -1
  139. package/dist/esm/models/Pivot.d.ts +10 -0
  140. package/dist/esm/models/Pivot.d.ts.map +1 -1
  141. package/dist/esm/models/Report.d.ts +13 -1
  142. package/dist/esm/models/Report.d.ts.map +1 -1
  143. package/dist/esm/utils/astFilterProcessing.d.ts +1 -1
  144. package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
  145. package/dist/esm/utils/astFilterProcessing.js +799 -64
  146. package/dist/esm/utils/astProcessing.d.ts +4 -1
  147. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  148. package/dist/esm/utils/astProcessing.js +2 -2
  149. package/dist/esm/utils/client.d.ts.map +1 -1
  150. package/dist/esm/utils/client.js +6 -3
  151. package/dist/esm/utils/columnProcessing.d.ts +1 -0
  152. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  153. package/dist/esm/utils/columnProcessing.js +1 -1
  154. package/dist/esm/utils/dashboard.d.ts +2 -1
  155. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  156. package/dist/esm/utils/dashboard.js +39 -11
  157. package/dist/esm/utils/filterProcessing.d.ts +1 -1
  158. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  159. package/dist/esm/utils/merge.d.ts +16 -0
  160. package/dist/esm/utils/merge.d.ts.map +1 -1
  161. package/dist/esm/utils/merge.js +207 -0
  162. package/dist/esm/utils/paginationProcessing.d.ts +1 -1
  163. package/dist/esm/utils/paginationProcessing.d.ts.map +1 -1
  164. package/dist/esm/utils/paginationProcessing.js +3 -2
  165. package/dist/esm/utils/pivotConstructor.d.ts +19 -9
  166. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  167. package/dist/esm/utils/pivotConstructor.js +91 -35
  168. package/dist/esm/utils/queryConstructor.d.ts +8 -1
  169. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  170. package/dist/esm/utils/queryConstructor.js +274 -314
  171. package/dist/esm/utils/report.d.ts +25 -12
  172. package/dist/esm/utils/report.d.ts.map +1 -1
  173. package/dist/esm/utils/report.js +13 -7
  174. package/dist/esm/utils/schema.d.ts +1 -1
  175. package/dist/esm/utils/schema.d.ts.map +1 -1
  176. package/dist/esm/utils/schema.js +1 -30
  177. package/dist/esm/utils/tableProcessing.d.ts +43 -13
  178. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  179. package/dist/esm/utils/tableProcessing.js +140 -75
  180. package/dist/esm/utils/textProcessing.d.ts.map +1 -1
  181. package/dist/esm/utils/textProcessing.js +10 -1
  182. package/dist/esm/utils/valueFormatter.d.ts +2 -1
  183. package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
  184. package/dist/esm/utils/valueFormatter.js +18 -14
  185. package/package.json +1 -1
@@ -117,7 +117,8 @@ function createReportFromForm(formData, report, selectedPivotTable, rows = [], f
117
117
  filtersApplied: report?.filtersApplied || [],
118
118
  queryString: '',
119
119
  rows: rows,
120
- rowCount: report?.rowCount ||
120
+ rowCount: selectedPivotTable?.rowCount ||
121
+ report?.rowCount ||
121
122
  selectedPivotTable?.rows?.length ||
122
123
  rows.length ||
123
124
  0,
@@ -343,6 +344,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
343
344
  }, [isOpen]);
344
345
  const [dashboardOptions, setDashboardOptions] = (0, react_1.useState)([]);
345
346
  const { reportFilters, reportFiltersDispatch, loadFiltersForReport } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
347
+ const { reportsDispatch } = (0, react_1.useContext)(Context_1.ReportsContext);
346
348
  (0, react_1.useEffect)(() => {
347
349
  loadFiltersForReport(report?.id ?? Report_1.TEMP_REPORT_ID, 'ChartBuilder', specificDashboardFilters, undefined, undefined, canonicalFilterMap, report?.dashboardName);
348
350
  return () => {
@@ -350,16 +352,6 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
350
352
  type: 'CLEAR_REPORT_FILTERS',
351
353
  id: report?.id ?? tempReport?.id ?? Report_1.TEMP_REPORT_ID,
352
354
  });
353
- // TODO: Currently the behavior of Chart Builder is dependent on whether there is a TEMP_REPORT_ID in context or not
354
- /* The Chart Builder can essentially be in three states
355
- 1. Creating a new report, all we have is an ephemeral temp report
356
- 2. Editing an existing report, we have a report id and the report is in the dashboard context
357
- 3. Editing the query of an existing report, we have a report id and the new-query report is in context under TEMP_REPORT_ID
358
- One can imagine this going wrong: somehow the temp report gets set by SQLEditor or ReportBuilder but never cleared
359
- and now its going to start popping up during state 2 rather than the real report.
360
- For now we're going on faith that unmounting will always clear the temp report
361
- but we may want to fiddle with the props to make this more robust
362
- */
363
355
  };
364
356
  }, []);
365
357
  const currentDashboardFilters = (0, react_1.useMemo)(() => {
@@ -376,7 +368,13 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
376
368
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
377
369
  const [pivotError, setPivotError] = (0, react_1.useState)(undefined);
378
370
  const pivotData = report?.pivotRows && report?.pivotColumns
379
- ? { rows: report.pivotRows, columns: report.pivotColumns }
371
+ ? {
372
+ rows: report.pivotRows,
373
+ columns: report.pivotColumns,
374
+ rowCount: report.pivotRowCount ?? report.pivotRows.length,
375
+ pivotQuery: report.pivotQuery ?? '',
376
+ comparisonPivotQuery: report.comparisonPivotQuery,
377
+ }
380
378
  : undefined;
381
379
  const columns = report?.columnInternal ?? [];
382
380
  const destinationDashboard = report?.dashboardName;
@@ -468,7 +466,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
468
466
  if (!client) {
469
467
  return;
470
468
  }
471
- const { queryEndpoint, queryHeaders, publicKey, withCredentials, } = client;
469
+ const { queryEndpoint, queryHeaders, publicKey, withCredentials } = client;
472
470
  if (queryEndpoint) {
473
471
  const response = await fetch(queryEndpoint, {
474
472
  method: 'POST',
@@ -567,7 +565,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
567
565
  }, [dashboardConfig, formData.dashboardName, report?.dashboardName]);
568
566
  const currentDashboardTenants = (0, react_1.useMemo)(() => {
569
567
  return (currentDashboard?.tenantKeys?.map((tenantKey) => client?.allTenantTypes?.find((t) => t.tenantField === tenantKey)) ?? []);
570
- }, [tenants]);
568
+ }, [client?.allTenantTypes, currentDashboard?.tenantKeys]);
571
569
  const dashboardOwner = currentDashboardTenants?.[0];
572
570
  const invalidColumns = (0, react_1.useMemo)(() => {
573
571
  if (!rows || !rows.length) {
@@ -679,21 +677,23 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
679
677
  getFormData();
680
678
  }, []);
681
679
  const allTenantMap = (0, react_1.useMemo)(() => {
682
- return client?.allTenantTypes?.reduce((acc, tenantType) => {
680
+ return (client?.allTenantTypes?.reduce((acc, tenantType) => {
683
681
  if (tenantType.scope === 'database') {
684
- acc[tenantType.tenantField] = tenantType.flags?.map((t) => ({
685
- label: t,
686
- value: t,
687
- })) ?? [];
682
+ acc[tenantType.tenantField] =
683
+ tenantType.flags?.map((t) => ({
684
+ label: t,
685
+ value: t,
686
+ })) ?? [];
688
687
  }
689
688
  else {
690
- acc[tenantType.tenantField] = tenantType.tenantIds?.map((t) => ({
691
- label: t.label,
692
- value: t.flag,
693
- })) ?? [];
689
+ acc[tenantType.tenantField] =
690
+ tenantType.tenantIds?.map((t) => ({
691
+ label: t.label,
692
+ value: t.flag,
693
+ })) ?? [];
694
694
  }
695
695
  return acc;
696
- }, {}) ?? {};
696
+ }, {}) ?? {});
697
697
  }, [client?.allTenantTypes]);
698
698
  const [selectedPivotTable, setSelectedPivotTable] = (0, react_1.useState)(pivotData);
699
699
  const pivotCardTable = (0, react_1.useMemo)(() => {
@@ -716,8 +716,9 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
716
716
  : undefined;
717
717
  if (pivot) {
718
718
  let dateBucket = undefined;
719
+ let dateFilter = undefined;
719
720
  if (filtersEnabled) {
720
- const dateFilter = dashboardFilters?.find((f) => f.filterType === 'date_range');
721
+ dateFilter = dashboardFilters?.find((f) => f.filterType === 'date_range');
721
722
  dateBucket =
722
723
  dateFilter?.startDate && dateFilter?.endDate
723
724
  ? (0, dates_1.getDateBucketFromRange)({
@@ -730,11 +731,15 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
730
731
  const pivotTable = await (0, PivotModal_1.generatePivotTable)({
731
732
  pivot,
732
733
  dateBucket,
733
- report: { ...report, ...(tableInfo ?? { itemQuery }) },
734
+ dateFilter,
735
+ report: report
736
+ ? { ...report, ...(tableInfo ?? { itemQuery }) }
737
+ : undefined,
734
738
  client,
735
739
  uniqueValues,
736
740
  dashboardName: destinationDashboard,
737
741
  tenants,
742
+ additionalProcessing: baseProcessing,
738
743
  });
739
744
  setSelectedPivotTable(pivotTable);
740
745
  }
@@ -801,7 +806,21 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
801
806
  return;
802
807
  }
803
808
  setRowCountIsLoading(true);
804
- const tableInfo = await (0, tableProcessing_1.fetchResultsByQuery)(query, client, tenants, processing, schemaData.customFields, filtersEnabled ? overrideFilters : undefined, filtersEnabled ? (report?.dateField ?? formData.dateField) : undefined, false, true, canonicalFilterMap);
809
+ const tableInfo = await (0, tableProcessing_1.fetchResultsByQuery)({
810
+ query,
811
+ client,
812
+ tenants,
813
+ processing,
814
+ customFields: schemaData.customFields,
815
+ filters: filtersEnabled ? overrideFilters : undefined,
816
+ dateField: filtersEnabled
817
+ ? (report?.dateField ?? formData.dateField)
818
+ : undefined,
819
+ rowsOnly: false,
820
+ rowCountOnly: true,
821
+ filterMap: canonicalFilterMap,
822
+ dashboardName: destinationDashboard,
823
+ });
805
824
  if (tableInfo.rowCount !== undefined) {
806
825
  setRowCount(tableInfo.rowCount);
807
826
  }
@@ -839,7 +858,21 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
839
858
  }
840
859
  try {
841
860
  setIsLoading(true);
842
- const tableInfo = await (0, tableProcessing_1.fetchResultsByQuery)(query, client, tenants, processing, schemaData.customFields, filtersEnabled ? overrideFilters : undefined, filtersEnabled ? (report?.dateField ?? formData.dateField) : undefined, true, false, canonicalFilterMap, destinationDashboard);
861
+ const tableInfo = await (0, tableProcessing_1.fetchResultsByQuery)({
862
+ query,
863
+ client,
864
+ tenants,
865
+ processing,
866
+ customFields: schemaData.customFields,
867
+ filters: filtersEnabled ? overrideFilters : undefined,
868
+ dateField: filtersEnabled
869
+ ? (report?.dateField ?? formData.dateField)
870
+ : undefined,
871
+ rowsOnly: true,
872
+ rowCountOnly: false,
873
+ filterMap: canonicalFilterMap,
874
+ dashboardName: destinationDashboard,
875
+ });
843
876
  setCurrentProcessing(processing);
844
877
  setRows(tableInfo.rows);
845
878
  setProcessedColumns(processColumns(tableInfo.columns));
@@ -861,7 +894,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
861
894
  console.log(e);
862
895
  }
863
896
  };
864
- const onPageChange = (page) => {
897
+ const onPageChange = (page, isPivotTable) => {
865
898
  // only fetch if report is valid, else use query task
866
899
  if (currentProcessing.page &&
867
900
  (0, paginationProcessing_1.shouldFetchMore)(currentProcessing.page, page, maxPage)) {
@@ -874,23 +907,23 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
874
907
  page: newPagination,
875
908
  };
876
909
  setCurrentProcessing(updatedProcessing);
877
- updateTableRows(updatedProcessing);
910
+ updateTableRows(updatedProcessing, false, isPivotTable);
878
911
  }
879
912
  if (page > maxPage) {
880
913
  setMaxPage(page);
881
914
  }
882
915
  };
883
- const onSortChange = (sort) => {
916
+ const onSortChange = (sort, isPivotTable) => {
884
917
  // if (shouldSortInMemory(baseProcessing.page, rowCount)) {
885
918
  // return;
886
919
  // }
887
920
  const updatedProcessing = { ...baseProcessing, sort };
888
- updateTableRows(updatedProcessing, true);
921
+ updateTableRows(updatedProcessing, true, isPivotTable);
889
922
  setCurrentProcessing(updatedProcessing);
890
923
  setCurrentPage(0);
891
924
  setMaxPage(0);
892
925
  };
893
- const updateTableRows = async (processing, resetRows = false) => {
926
+ const updateTableRows = async (processing, resetRows = false, isPivotTable = false) => {
894
927
  if (!client) {
895
928
  return;
896
929
  }
@@ -898,17 +931,40 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
898
931
  setIsLoading(true);
899
932
  try {
900
933
  const updatedProcessing = { ...currentProcessing, ...processing };
901
- const paginatedRows = await (0, tableProcessing_1.fetchResultsByQuery)(query, client, tenants, updatedProcessing, schemaData.customFields, filtersEnabled ? currentDashboardFilters : undefined, filtersEnabled
902
- ? (report?.dateField ?? formData.dateField)
903
- : undefined, false, false, canonicalFilterMap, destinationDashboard);
934
+ const paginatedRows = await (0, tableProcessing_1.fetchResultsByQuery)({
935
+ query: isPivotTable && report.pivotQuery ? report.pivotQuery : query,
936
+ comparisonQuery: isPivotTable && report.comparisonPivotQuery
937
+ ? report.comparisonPivotQuery
938
+ : undefined,
939
+ client,
940
+ tenants,
941
+ processing: updatedProcessing,
942
+ customFields: schemaData.customFields,
943
+ filters: filtersEnabled ? currentDashboardFilters : undefined,
944
+ dateField: filtersEnabled
945
+ ? (report?.dateField ?? formData.dateField)
946
+ : undefined,
947
+ rowsOnly: false,
948
+ rowCountOnly: false,
949
+ filterMap: canonicalFilterMap,
950
+ dashboardName: destinationDashboard,
951
+ pivot: isPivotTable ? report.pivot : undefined,
952
+ getPivotRowCount: false,
953
+ });
904
954
  if (paginatedRows.error) {
905
955
  throw new Error('Error fetching chart');
906
956
  }
907
- let tempRows = [...rows, ...paginatedRows.rows];
957
+ const prevRows = isPivotTable && selectedPivotTable ? selectedPivotTable.rows : rows;
958
+ let updatedRows = [...prevRows, ...paginatedRows.rows];
908
959
  if (resetRows) {
909
- tempRows = paginatedRows.rows;
960
+ updatedRows = paginatedRows.rows;
961
+ }
962
+ if (isPivotTable && selectedPivotTable) {
963
+ setSelectedPivotTable({ ...selectedPivotTable, rows: updatedRows });
964
+ }
965
+ else {
966
+ setRows(updatedRows);
910
967
  }
911
- setRows(tempRows);
912
968
  setCurrentProcessing(updatedProcessing);
913
969
  }
914
970
  catch (e) {
@@ -1021,6 +1077,9 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1021
1077
  setSelectedPivotTable({
1022
1078
  rows: pivotData.rows,
1023
1079
  columns: pivotData.columns,
1080
+ rowCount: pivotData.rowCount,
1081
+ pivotQuery: pivotData.pivotQuery,
1082
+ comparisonPivotQuery: pivotData.comparisonPivotQuery,
1024
1083
  });
1025
1084
  }
1026
1085
  else {
@@ -1048,7 +1107,6 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1048
1107
  setSelectedPivotTable(undefined);
1049
1108
  setChartTypes(getChartTypeOptions({ ...formEmptyState, pivot: null }, dashboardConfig[formData.dashboardName || '']));
1050
1109
  };
1051
- console.log('isAdmin', isAdmin);
1052
1110
  const handleAddField = (fieldName) => {
1053
1111
  if (fieldName === 'columns') {
1054
1112
  setFormData({
@@ -1063,7 +1121,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1063
1121
  yAxisFields: [
1064
1122
  ...formData.yAxisFields,
1065
1123
  // @ts-ignore
1066
- { label: '', field: '', chartType: '', format: '' },
1124
+ { label: '', field: '', chartType: '', format: 'whole_number' },
1067
1125
  ],
1068
1126
  });
1069
1127
  }
@@ -1140,30 +1198,44 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1140
1198
  : report && !isAdmin && formData.template
1141
1199
  ? false
1142
1200
  : formData.template,
1143
- reportFlags: formFlags ? Object.fromEntries(Object.entries(formFlags)
1144
- .filter(([, value]) => value.length > 0)
1145
- .map(([key, value]) => {
1146
- return [key, Object.keys(allTenantMap).length > 1 && allTenantMap[key]?.length === value.length ? constants_1.ALL_TENANTS : value];
1147
- })) : undefined,
1201
+ reportFlags: formFlags
1202
+ ? Object.fromEntries(Object.entries(formFlags)
1203
+ .filter(([, value]) => value.length > 0)
1204
+ .map(([key, value]) => {
1205
+ return [
1206
+ key,
1207
+ Object.keys(allTenantMap).length > 1 &&
1208
+ allTenantMap[key]?.length === value.length
1209
+ ? constants_1.ALL_TENANTS
1210
+ : value,
1211
+ ];
1212
+ }))
1213
+ : undefined,
1148
1214
  };
1149
1215
  const resp = await (0, report_1.saveReport)({
1150
- report: newReport,
1216
+ report: { ...newReport, rows: undefined, pivotRows: undefined }, // stop including rows in request
1151
1217
  dashboardItemId,
1152
1218
  client,
1153
1219
  });
1154
1220
  if (resp && resp.name !== 'error') {
1221
+ const data = {
1222
+ ...resp,
1223
+ rows,
1224
+ columns: formData.columns.filter((col) => !invalidColumns.includes(col)),
1225
+ pivotRows: selectedPivotTable?.rows || undefined,
1226
+ pivotColumns: selectedPivotTable?.columns || undefined,
1227
+ triggerReload: true,
1228
+ error: undefined,
1229
+ };
1155
1230
  dispatch({
1156
1231
  type: 'ADD_DASHBOARD_ITEM',
1157
1232
  id: resp.id,
1158
- data: {
1159
- ...resp,
1160
- rows,
1161
- columns: formData.columns.filter((col) => !invalidColumns.includes(col)),
1162
- pivotRows: selectedPivotTable?.rows || undefined,
1163
- pivotColumns: selectedPivotTable?.columns || undefined,
1164
- triggerReload: true,
1165
- error: undefined,
1166
- },
1233
+ data,
1234
+ });
1235
+ reportsDispatch({
1236
+ type: 'ADD_REPORT',
1237
+ id: resp.id,
1238
+ data,
1167
1239
  });
1168
1240
  }
1169
1241
  setIsOpen(false);
@@ -1234,11 +1306,11 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1234
1306
  }, currentPage: currentPage, rowCount: rowCount, isLoading: isLoading, rowCountIsLoading: rowCountIsLoading, disableSort: disableSort })) : ((0, jsx_runtime_1.jsx)(TableComponent, { rows: formattedRows, columns: selectedPivotTable
1235
1307
  ? selectedPivotTable.columns
1236
1308
  : formData.columns, onPageChange: (page) => {
1237
- onPageChange(page);
1309
+ onPageChange(page, true);
1238
1310
  setCurrentPage(page);
1239
1311
  }, onSortChange: (sort) => {
1240
- onSortChange && onSortChange(sort);
1241
- }, currentPage: currentPage, rowCount: selectedPivotTable ? formattedRows.length : rowCount, rowCountIsLoading: rowCountIsLoading, isLoading: isLoading, disableSort: disableSort })) }))] }), isOpen && ((0, jsx_runtime_1.jsxs)("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
1312
+ onSortChange && onSortChange(sort, true);
1313
+ }, currentPage: currentPage, rowCount: selectedPivotTable ? pivotData?.rowCount : rowCount, rowCountIsLoading: rowCountIsLoading, isLoading: isLoading, disableSort: disableSort })) }))] }), isOpen && ((0, jsx_runtime_1.jsxs)("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
1242
1314
  display: 'flex',
1243
1315
  flexDirection: 'column',
1244
1316
  gap: 20,
@@ -1253,15 +1325,15 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1253
1325
  paddingTop: modalPadding,
1254
1326
  paddingBottom: modalPadding,
1255
1327
  }),
1256
- }, children: [(0, jsx_runtime_1.jsxs)(FormContainer, { children: [(formData.pivot || formData.chartType !== 'table') && windowWidth < 1200 &&
1257
- (0, jsx_runtime_1.jsx)(InternalChart_1.default, { report: chartData, filtersEnabled: filtersEnabled, setFiltersEnabled: (hide) => {
1258
- onFiltersEnabledChanged(hide);
1259
- }, colors: theme?.chartColors, loading: false, hideDateRangeFilter: hideDateRangeFilter, isAdmin: isAdmin, containerStyle: {
1260
- width: '100%',
1261
- height: 500,
1262
- flexGrow: 1,
1263
- marginBottom: 20,
1264
- }, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen }), (0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)("div", { ref: inputRef, style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsx)(TextInputComponent
1328
+ }, children: [(0, jsx_runtime_1.jsxs)(FormContainer, { children: [(formData.pivot || formData.chartType !== 'table') &&
1329
+ windowWidth < 1200 && ((0, jsx_runtime_1.jsx)(InternalChart_1.default, { report: chartData, filtersEnabled: filtersEnabled, setFiltersEnabled: (hide) => {
1330
+ onFiltersEnabledChanged(hide);
1331
+ }, colors: theme?.chartColors, loading: false, hideDateRangeFilter: hideDateRangeFilter, isAdmin: isAdmin, containerStyle: {
1332
+ width: '100%',
1333
+ height: 500,
1334
+ flexGrow: 1,
1335
+ marginBottom: 20,
1336
+ }, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen })), (0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)("div", { ref: inputRef, style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsx)(TextInputComponent
1265
1337
  // {...autofocusRefProp}
1266
1338
  , {
1267
1339
  // {...autofocusRefProp}
@@ -1283,7 +1355,9 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1283
1355
  // marginTop: 6,
1284
1356
  display: 'flex',
1285
1357
  flexDirection: 'column',
1286
- }, children: (0, jsx_runtime_1.jsx)(PivotModal_1.PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotValueField2: pivotValueField2, setPivotValueField2: setPivotValueField2, 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, uniqueValuesIsLoading: initialUniqueValuesIsLoading, initialSelectedPivotTable: selectedPivotTable, pivotRecommendationsEnabled: pivotRecommendationsEnabled, report: report, dashboardName: destinationDashboard }) }), formData.pivot && ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", { style: { width: pivotCardWidth }, children: (0, jsx_runtime_1.jsx)(PivotList_1.PivotCard, { pivotTable: pivotCardTable, theme: theme, index: 0, onSelectPivot: () => {
1358
+ }, children: (0, jsx_runtime_1.jsx)(PivotModal_1.PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotValueField2: pivotValueField2, setPivotValueField2: setPivotValueField2, 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, uniqueValuesIsLoading: initialUniqueValuesIsLoading, initialSelectedPivotTable: selectedPivotTable, pivotRecommendationsEnabled: pivotRecommendationsEnabled, report: report, dashboardName: destinationDashboard, dateFilter: filtersEnabled
1359
+ ? currentDashboardFilters?.find((f) => f.filterType === 'date_range')
1360
+ : undefined }) }), formData.pivot && ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", { style: { width: pivotCardWidth }, children: (0, jsx_runtime_1.jsx)(PivotList_1.PivotCard, { pivotTable: pivotCardTable, theme: theme, index: 0, onSelectPivot: () => {
1287
1361
  setIsEdittingPivot(true);
1288
1362
  setShowPivotPopover(true);
1289
1363
  setPivotRowField(formData.pivot?.rowField);
@@ -1301,12 +1375,12 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1301
1375
  label: elem.field,
1302
1376
  value: elem.field,
1303
1377
  })), width: 200 }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: "chart-builder-x-axis-label", width: 200, value: formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot &&
1304
- (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType || '')
1378
+ (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType ?? '')
1305
1379
  ? 'pivot_date'
1306
1380
  : formData.xAxisFormat, onChange: (e) => handleChange(e.target.value, 'xAxisFormat'), options: formData.pivot &&
1307
- (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType || '')
1381
+ (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType ?? '')
1308
1382
  ? [{ value: 'pivot_date', label: 'date' }]
1309
- : formatOptions, width: 200 })] })] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), (0, jsx_runtime_1.jsxs)(ChartBuilderInputColumnContainer, { children: [formData.yAxisFields.map((yAxisField, index) => ((0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot
1383
+ : formatOptions, width: 200, hideEmptyOption: true })] })] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), (0, jsx_runtime_1.jsxs)(ChartBuilderInputColumnContainer, { children: [formData.yAxisFields.map((yAxisField, index) => ((0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot
1310
1384
  ? formData.pivot.valueField || 'count'
1311
1385
  : yAxisField.field, onChange: (e) => handleChange(e.target.value, 'yAxisFields.field', index), options: formData.pivot
1312
1386
  ? [
@@ -1326,13 +1400,10 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1326
1400
  })), width: 200 }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: "chart-builder-y-axis-label", width: 200, value: yAxisField.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'yAxisFields.label', index) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot
1327
1401
  ? NUMBER_OPTIONS.find((option) => {
1328
1402
  return (option.value === yAxisField.format);
1329
- })
1330
- ? // @ts-ignore
1331
- NUMBER_OPTIONS.find((option) => option.value === yAxisField.format).value
1332
- : ''
1403
+ })?.value ?? NUMBER_OPTIONS[0].value
1333
1404
  : yAxisField.format, onChange: (e) => handleChange(e.target.value, 'yAxisFields.format', index), options: formData.pivot
1334
1405
  ? NUMBER_OPTIONS
1335
- : formatOptions, width: 200 }), formData.pivot === null && ((0, jsx_runtime_1.jsx)("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: (0, jsx_runtime_1.jsx)(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))), formData.pivot === null && ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" }) }))] })] }))] })), windowWidth < 1200 && ((0, jsx_runtime_1.jsx)("div", { style: {
1406
+ : formatOptions, width: 200, hideEmptyOption: true }), !formData.pivot && ((0, jsx_runtime_1.jsx)("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: (0, jsx_runtime_1.jsx)(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))), !formData.pivot && ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" }) }))] })] }))] })), windowWidth < 1200 && ((0, jsx_runtime_1.jsx)("div", { style: {
1336
1407
  width: '100%',
1337
1408
  height: isHorizontalView || !isOpen ? 'calc(50% - 10px)' : 400,
1338
1409
  flexGrow: 1,
@@ -1344,11 +1415,11 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1344
1415
  }, currentPage: currentPage, rowCount: rowCount, rowCountIsLoading: rowCountIsLoading, isLoading: isLoading, disableSort: disableSort })) : ((0, jsx_runtime_1.jsx)(TableComponent, { rows: formattedRows, columns: selectedPivotTable
1345
1416
  ? selectedPivotTable.columns
1346
1417
  : formData.columns, onPageChange: (page) => {
1347
- onPageChange(page);
1418
+ onPageChange(page, true);
1348
1419
  setCurrentPage(page);
1349
1420
  }, onSortChange: (sort) => {
1350
- onSortChange && onSortChange(sort);
1351
- }, currentPage: currentPage, rowCount: selectedPivotTable ? formattedRows.length : rowCount, rowCountIsLoading: rowCountIsLoading, isLoading: isLoading, disableSort: disableSort })) })), (showTableFormatOptions || isAdmin) && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { style: {
1421
+ onSortChange && onSortChange(sort, true);
1422
+ }, currentPage: currentPage, rowCount: selectedPivotTable ? pivotData?.rowCount : rowCount, rowCountIsLoading: rowCountIsLoading, isLoading: isLoading, disableSort: disableSort })) })), (showTableFormatOptions || isAdmin) && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { style: {
1352
1423
  display: 'flex',
1353
1424
  flexDirection: 'column',
1354
1425
  }, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Table" }), (0, jsx_runtime_1.jsx)(SubHeaderComponent, { label: "Columns" })] }), (0, jsx_runtime_1.jsxs)(ChartBuilderInputColumnContainer, { children: [formData.pivot &&
@@ -1368,7 +1439,10 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1368
1439
  ? 'pivot_date'
1369
1440
  : 'string'
1370
1441
  : formData.pivot?.valueFieldType ||
1371
- 'two_decimal_places', onChange: (e) => handleChange(e.target.value, 'pivotColumn', index), options: formData.pivot && index === 0
1442
+ (formData.pivot?.aggregationType ===
1443
+ 'percentage'
1444
+ ? 'percent'
1445
+ : 'two_decimal_places'), onChange: (e) => handleChange(e.target.value, 'pivotColumn', index), options: formData.pivot && index === 0
1372
1446
  ? (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType || '')
1373
1447
  ? [{ label: 'date', value: 'pivot_date' }]
1374
1448
  : [{ label: 'string', value: 'string' }]
@@ -1449,7 +1523,8 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1449
1523
  userSelect: 'none',
1450
1524
  }, children: "Custom" })] }), client?.allTenantTypes?.length === 1 ? ((0, jsx_runtime_1.jsx)(QuillMultiSelectWithCombo_1.QuillMultiSelectComponentWithCombo, { value: formFlags?.[dashboardOwner.tenantField] ?? [], onChange: (e) => setFormFlags({
1451
1525
  ...formFlags,
1452
- [dashboardOwner.tenantField]: e.target.value,
1526
+ [dashboardOwner.tenantField]: e.target
1527
+ .value,
1453
1528
  }), options: dashboardOwner.scope === 'database'
1454
1529
  ? (dashboardOwner.flags?.map((f) => ({
1455
1530
  label: f,
@@ -1462,18 +1537,26 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1462
1537
  value: t.flag,
1463
1538
  })) ?? []), width: 200, emptyLabel: dashboardOwner.scope === 'database'
1464
1539
  ? 'No flags supplied'
1465
- : undefined, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: { display: customTenantAccess ? 'inline' : 'none', marginTop: -1, marginBottom: -4 } })) : ((0, jsx_runtime_1.jsx)(QuillMultiSelectSectionList_1.QuillMultiSelectSectionList, { value: formFlags ?? {}, onChange: (e) => setFormFlags(e.target.value), options: allTenantMap, sectionHeaderMap: client?.allTenantTypes?.reduce((acc, tenantType) => {
1540
+ : undefined, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: {
1541
+ display: customTenantAccess ? 'inline' : 'none',
1542
+ marginTop: -1,
1543
+ marginBottom: -4,
1544
+ } })) : ((0, jsx_runtime_1.jsx)(QuillMultiSelectSectionList_1.QuillMultiSelectSectionList, { value: formFlags ?? {}, onChange: (e) => setFormFlags(e.target.value), options: allTenantMap, sectionHeaderMap: client?.allTenantTypes?.reduce((acc, tenantType) => {
1466
1545
  if (tenantType.scope === 'database') {
1467
1546
  acc[constants_1.SINGLE_TENANT] = 'Database';
1468
1547
  return acc;
1469
1548
  }
1470
1549
  acc[tenantType.tenantField] = tenantType.name;
1471
1550
  return acc;
1472
- }, {}) ?? {}, width: 200, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: { display: customTenantAccess ? 'inline' : 'none', marginTop: -1, marginBottom: -4 }, owner: dashboardOwner.tenantField }))] }) })] })), (specificDashboardFilters.length > 0 &&
1473
- (isAdmin &&
1474
- formData.dateField &&
1475
- dashboardConfig[formData.dashboardName ?? '']?.config
1476
- .dateFilter?.label)) && ((0, jsx_runtime_1.jsxs)("div", { style: {
1551
+ }, {}) ?? {}, width: 200, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: {
1552
+ display: customTenantAccess ? 'inline' : 'none',
1553
+ marginTop: -1,
1554
+ marginBottom: -4,
1555
+ }, owner: dashboardOwner.tenantField }))] }) })] })), specificDashboardFilters.length > 0 &&
1556
+ isAdmin &&
1557
+ formData.dateField &&
1558
+ dashboardConfig[formData.dashboardName ?? '']?.config.dateFilter
1559
+ ?.label && ((0, jsx_runtime_1.jsxs)("div", { style: {
1477
1560
  display: 'flex',
1478
1561
  flexDirection: 'column',
1479
1562
  gap: 6,
@@ -1504,14 +1587,12 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1504
1587
  .map((filter, index) => ((0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(TextInputComponent, { id: 'filterMap.' + filter.label, value: filter.label, width: 200, onChange: () => { }, label: index === 0 &&
1505
1588
  !(isAdmin &&
1506
1589
  formData.dateField &&
1507
- dashboardConfig[formData.dashboardName ?? '']
1508
- ?.config.dateFilter?.label)
1590
+ dashboardConfig[formData.dashboardName ?? '']?.config.dateFilter?.label)
1509
1591
  ? 'Filter'
1510
1592
  : '', disabled: true }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: index === 0 &&
1511
1593
  !(isAdmin &&
1512
1594
  formData.dateField &&
1513
- dashboardConfig[formData.dashboardName ?? '']
1514
- ?.config.dateFilter?.label)
1595
+ dashboardConfig[formData.dashboardName ?? '']?.config.dateFilter?.label)
1515
1596
  ? 'Virtual Table'
1516
1597
  : '', value: filterMap[filter.label]?.table ?? filter.table, onChange: (e) => setFilterMap({
1517
1598
  ...filterMap,
@@ -1529,8 +1610,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1529
1610
  })), width: 200 }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: index === 0 &&
1530
1611
  !(isAdmin &&
1531
1612
  formData.dateField &&
1532
- dashboardConfig[formData.dashboardName ?? '']
1533
- ?.config.dateFilter?.label)
1613
+ dashboardConfig[formData.dashboardName ?? '']?.config.dateFilter?.label)
1534
1614
  ? 'Field'
1535
1615
  : '', value: filterMap[filter.label]?.field ?? filter.field, onChange: (e) => setFilterMap({
1536
1616
  ...filterMap,
@@ -1558,8 +1638,10 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1558
1638
  display: 'flex',
1559
1639
  flexDirection: 'row',
1560
1640
  justifyContent: 'flex-end',
1561
- marginTop: 'auto',
1562
1641
  gap: 10,
1642
+ position: 'absolute',
1643
+ bottom: 16,
1644
+ right: 16,
1563
1645
  }, children: [!hideDeleteButton && !isHorizontalView && report && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), !hideSubmitButton && ((0, jsx_runtime_1.jsxs)("div", { style: {
1564
1646
  display: 'flex',
1565
1647
  flexDirection: 'row',
@@ -1567,7 +1649,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
1567
1649
  justifyContent: 'space-between',
1568
1650
  alignItems: 'center',
1569
1651
  gap: 6,
1570
- }, children: [filterIssues.length === 0 ? ((0, jsx_runtime_1.jsx)("div", {})) : ((0, jsx_runtime_1.jsx)(ErrorMessageComponent, { errorMessage: filterIssues[0] || 'Dashbord - Report issues', containerStyle: { height: '100%' } })), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'row', gap: 10 }, children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
1652
+ }, children: [filterIssues.length === 0 ? ((0, jsx_runtime_1.jsx)("div", {})) : ((0, jsx_runtime_1.jsx)(ErrorMessageComponent, { errorMessage: filterIssues[0] || 'Dashbord - Report issues', containerStyle: { height: '100%' } })), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'row', gap: 10, backgroundColor: 'white' }, children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
1571
1653
  setIsOpen(false);
1572
1654
  onDiscardChanges && onDiscardChanges();
1573
1655
  }, label: 'Discard changes' }), (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../src/Context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAO9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAU/D,eAAO,MAAM,iBAAiB,qCACP,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,IAAI,EAQ9D,CAAC;AACH,eAAO,MAAM,YAAY,4CACK,KAAK,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,EACxD,CAAC;AACvB,eAAO,MAAM,aAAa,8DAId,KAAK,CAAC,cAAc,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,EAExC,CAAC;AAO9B,KAAK,mBAAmB,GACpB,uBAAuB,GACvB,oBAAoB,GACpB,uBAAuB,GACvB,iBAAiB,CAAC;AACtB,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC;CAC3D,CAAC;AAuCF,eAAO,MAAM,gBAAgB;;oCAET,CAAC;AAErB,KAAK,oBAAoB,GAAG;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAC9D,CAAC;AACF,KAAK,yBAAyB,GAC1B,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,GACf,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,uBAAuB,CAAC;AAC5B,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,yBAAyB,CAAC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EACD;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAC7C,eAAe,GACf,oBAAoB,GACpB,eAAe,EAAE,GACjB,OAAO,GACP,SAAS,CAAC;CACf,CAAC;AAyFF,eAAO,MAAM,sBAAsB;qBAChB,oBAAoB;eAC1B,OAAO;6BACO,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC;mBAC/C,CACb,aAAa,EAAE,MAAM,EACrB,eAAe,CAAC,EAAE,OAAO,EACzB,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,WAAW,GAAG;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QACrC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;KAC7B,KACE,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;EAMzC,CAAC;AAEH,KAAK,WAAW,GAAG;IAAE,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAAE,CAAC;AA6CzD,eAAO,MAAM,cAAc;aAChB,WAAW;qBACH,GAAG;2BACG,CACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,EAC7C,SAAS,CAAC,EAAE,OAAO,EACnB,gBAAgB,CAAC,EAAE,eAAe,EAAE,EACpC,aAAa,CAAC,EAAE,cAAc,EAAE,EAChC,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,UAAU,CAAC,EAAE,MAAM,EACnB,qBAAqB,CAAC,EAAE,eAAe,KACpC,OAAO,CAAC,IAAI,CAAC;EAKlB,CAAC;AAEH,KAAK,kBAAkB,GAAG;IACxB,CAAC,EAAE,EAAE,MAAM,GAAG;QACZ,CAAC,UAAU,EAAE,MAAM,GAAG;YAAE,MAAM,EAAE,eAAe,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;KACrE,CAAC;CACH,CAAC;AACF,KAAK,uBAAuB,GACxB,oBAAoB,GACpB,sBAAsB,GACtB,sBAAsB,CAAC;AAC3B,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EACD;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAC7C;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CACrD,CAAC;AA2DF,eAAO,MAAM,oBAAoB;mBAChB,kBAAkB;2BACV,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC;0BACpC,CACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,EAC9D,OAAO,EAAE,eAAe,EAAE,EAC1B,kBAAkB,CAAC,EAAE,MAAM,EAC3B,aAAa,CAAC,EAAE,cAAc,EAAE,EAChC,SAAS,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAC/D,aAAa,CAAC,EAAE,MAAM,KACnB,OAAO,CAAC,IAAI,CAAC;EAKlB,CAAC;AAEH,KAAK,qBAAqB,GAAG;IAC3B,CAAC,aAAa,EAAE,MAAM,GAAG;QACvB,CAAC,UAAU,EAAE,MAAM,GAAG;YAAE,MAAM,EAAE,eAAe,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;KACrE,CAAC;CACH,CAAC;AACF,KAAK,0BAA0B,GAC3B,+BAA+B,GAC/B,yBAAyB,GACzB,uBAAuB,GACvB,0BAA0B,GAC1B,yBAAyB,CAAC;AAC9B,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,0BAA0B,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EACD;QACE,MAAM,EAAE,eAAe,CAAC;QACxB,OAAO,EAAE,OAAO,CAAC;KAClB,GACD;QACE,CAAC,UAAU,EAAE,MAAM,GAAG;YACpB,MAAM,EAAE,eAAe,CAAC;YACxB,OAAO,EAAE,OAAO,CAAC;SAClB,CAAC;KACH,GACD,eAAe,GACf,qBAAqB,GACrB,SAAS,CAAC;CACf,CAAC;AAkDF,eAAO,MAAM,uBAAuB;sBAChB,qBAAqB;cAC7B,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC;6BACvB,CACvB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,eAAe,EAAE,EAC1B,kBAAkB,CAAC,EAAE,MAAM,EAC3B,aAAa,CAAC,EAAE,cAAc,EAAE,KAC7B,OAAO,CAAC,IAAI,CAAC;EAKlB,CAAC;AAEH,eAAO,MAAM,aAAa;cAEpB;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE;YACf,MAAM,EAAE;EACZ,CAAC;AAGP,eAAO,MAAM,eAAe,yGASzB;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,EAAE,UAAU,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EACJ;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACnB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,mDA41BA,CAAC"}
1
+ {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../src/Context.tsx"],"names":[],"mappings":"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"}