@quillsql/react 2.13.45 → 2.13.46

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 (143) hide show
  1. package/dist/cjs/Chart.d.ts +3 -1
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +27 -30
  4. package/dist/cjs/ChartBuilder.d.ts +1 -2
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +46 -26
  7. package/dist/cjs/ChartEditor.d.ts +1 -1
  8. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  9. package/dist/cjs/ChartEditor.js +6 -8
  10. package/dist/cjs/Context.d.ts +18 -6
  11. package/dist/cjs/Context.d.ts.map +1 -1
  12. package/dist/cjs/Context.js +98 -54
  13. package/dist/cjs/Dashboard.d.ts.map +1 -1
  14. package/dist/cjs/Dashboard.js +67 -17
  15. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  16. package/dist/cjs/ReportBuilder.js +201 -76
  17. package/dist/cjs/Table.d.ts.map +1 -1
  18. package/dist/cjs/Table.js +3 -3
  19. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  20. package/dist/cjs/components/Chart/BarChart.js +1 -2
  21. package/dist/cjs/components/Chart/GaugeChart.js +1 -1
  22. package/dist/cjs/components/Chart/LineChart.js +1 -1
  23. package/dist/cjs/components/Chart/MapChart.js +1 -1
  24. package/dist/cjs/components/Chart/PieChart.js +1 -1
  25. package/dist/cjs/components/Dashboard/DashboardFilter.js +6 -4
  26. package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +1 -1
  27. package/dist/cjs/components/Dashboard/DashboardSection.js +0 -1
  28. package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
  29. package/dist/cjs/components/Dashboard/DashboardSectionContainer.js +0 -1
  30. package/dist/cjs/components/Dashboard/DataLoader.d.ts +6 -4
  31. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  32. package/dist/cjs/components/Dashboard/DataLoader.js +108 -139
  33. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  34. package/dist/cjs/components/QuillTable.js +61 -59
  35. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +4 -1
  36. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  37. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +59 -63
  38. package/dist/cjs/components/ReportBuilder/schema.d.ts +7 -0
  39. package/dist/cjs/components/ReportBuilder/schema.d.ts.map +1 -1
  40. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  41. package/dist/cjs/components/UiComponents.js +11 -3
  42. package/dist/cjs/hooks/useDashboard.d.ts +23 -2
  43. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  44. package/dist/cjs/hooks/useDashboard.js +133 -3
  45. package/dist/cjs/hooks/useExport.js +3 -3
  46. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  47. package/dist/cjs/hooks/useQuill.js +8 -7
  48. package/dist/cjs/hooks/useReport.d.ts.map +1 -1
  49. package/dist/cjs/hooks/useReport.js +13 -12
  50. package/dist/cjs/index.d.ts +1 -1
  51. package/dist/cjs/index.d.ts.map +1 -1
  52. package/dist/cjs/index.js +2 -1
  53. package/dist/cjs/models/Client.d.ts +1 -0
  54. package/dist/cjs/models/Client.d.ts.map +1 -1
  55. package/dist/cjs/models/Dashboard.d.ts +5 -1
  56. package/dist/cjs/models/Dashboard.d.ts.map +1 -1
  57. package/dist/cjs/models/Filter.d.ts.map +1 -1
  58. package/dist/cjs/models/Filter.js +0 -2
  59. package/dist/cjs/models/Report.d.ts +1 -2
  60. package/dist/cjs/models/Report.d.ts.map +1 -1
  61. package/dist/cjs/utils/client.d.ts.map +1 -1
  62. package/dist/cjs/utils/client.js +1 -0
  63. package/dist/cjs/utils/dashboard.js +1 -1
  64. package/dist/cjs/utils/report.d.ts.map +1 -1
  65. package/dist/cjs/utils/report.js +2 -2
  66. package/dist/cjs/utils/reportBuilder.d.ts +11 -2
  67. package/dist/cjs/utils/reportBuilder.d.ts.map +1 -1
  68. package/dist/cjs/utils/reportBuilder.js +127 -1
  69. package/dist/cjs/utils/schema.d.ts +2 -7
  70. package/dist/cjs/utils/schema.d.ts.map +1 -1
  71. package/dist/cjs/utils/schema.js +4 -0
  72. package/dist/esm/Chart.d.ts +3 -1
  73. package/dist/esm/Chart.d.ts.map +1 -1
  74. package/dist/esm/Chart.js +28 -31
  75. package/dist/esm/ChartBuilder.d.ts +1 -2
  76. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  77. package/dist/esm/ChartBuilder.js +47 -27
  78. package/dist/esm/ChartEditor.d.ts +1 -1
  79. package/dist/esm/ChartEditor.d.ts.map +1 -1
  80. package/dist/esm/ChartEditor.js +7 -9
  81. package/dist/esm/Context.d.ts +18 -6
  82. package/dist/esm/Context.d.ts.map +1 -1
  83. package/dist/esm/Context.js +100 -56
  84. package/dist/esm/Dashboard.d.ts.map +1 -1
  85. package/dist/esm/Dashboard.js +67 -17
  86. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  87. package/dist/esm/ReportBuilder.js +206 -81
  88. package/dist/esm/Table.d.ts.map +1 -1
  89. package/dist/esm/Table.js +3 -3
  90. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  91. package/dist/esm/components/Chart/BarChart.js +1 -2
  92. package/dist/esm/components/Chart/GaugeChart.js +1 -1
  93. package/dist/esm/components/Chart/LineChart.js +1 -1
  94. package/dist/esm/components/Chart/MapChart.js +1 -1
  95. package/dist/esm/components/Chart/PieChart.js +1 -1
  96. package/dist/esm/components/Dashboard/DashboardFilter.js +6 -4
  97. package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +1 -1
  98. package/dist/esm/components/Dashboard/DashboardSection.js +0 -1
  99. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
  100. package/dist/esm/components/Dashboard/DashboardSectionContainer.js +0 -1
  101. package/dist/esm/components/Dashboard/DataLoader.d.ts +6 -4
  102. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  103. package/dist/esm/components/Dashboard/DataLoader.js +109 -140
  104. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  105. package/dist/esm/components/QuillTable.js +61 -59
  106. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +4 -1
  107. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  108. package/dist/esm/components/ReportBuilder/AddColumnModal.js +59 -63
  109. package/dist/esm/components/ReportBuilder/schema.d.ts +7 -0
  110. package/dist/esm/components/ReportBuilder/schema.d.ts.map +1 -1
  111. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  112. package/dist/esm/components/UiComponents.js +11 -3
  113. package/dist/esm/hooks/useDashboard.d.ts +23 -2
  114. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  115. package/dist/esm/hooks/useDashboard.js +131 -3
  116. package/dist/esm/hooks/useExport.js +4 -4
  117. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  118. package/dist/esm/hooks/useQuill.js +9 -8
  119. package/dist/esm/hooks/useReport.d.ts.map +1 -1
  120. package/dist/esm/hooks/useReport.js +14 -13
  121. package/dist/esm/index.d.ts +1 -1
  122. package/dist/esm/index.d.ts.map +1 -1
  123. package/dist/esm/index.js +1 -1
  124. package/dist/esm/models/Client.d.ts +1 -0
  125. package/dist/esm/models/Client.d.ts.map +1 -1
  126. package/dist/esm/models/Dashboard.d.ts +5 -1
  127. package/dist/esm/models/Dashboard.d.ts.map +1 -1
  128. package/dist/esm/models/Filter.d.ts.map +1 -1
  129. package/dist/esm/models/Filter.js +0 -2
  130. package/dist/esm/models/Report.d.ts +1 -2
  131. package/dist/esm/models/Report.d.ts.map +1 -1
  132. package/dist/esm/utils/client.d.ts.map +1 -1
  133. package/dist/esm/utils/client.js +1 -0
  134. package/dist/esm/utils/dashboard.js +1 -1
  135. package/dist/esm/utils/report.d.ts.map +1 -1
  136. package/dist/esm/utils/report.js +2 -2
  137. package/dist/esm/utils/reportBuilder.d.ts +11 -2
  138. package/dist/esm/utils/reportBuilder.d.ts.map +1 -1
  139. package/dist/esm/utils/reportBuilder.js +124 -0
  140. package/dist/esm/utils/schema.d.ts +2 -7
  141. package/dist/esm/utils/schema.d.ts.map +1 -1
  142. package/dist/esm/utils/schema.js +4 -0
  143. package/package.json +1 -1
@@ -37,6 +37,9 @@ const DraggableColumns_1 = __importDefault(require("./components/ReportBuilder/D
37
37
  const AddColumnModal_1 = __importDefault(require("./components/ReportBuilder/AddColumnModal"));
38
38
  const reportBuilder_1 = require("./utils/reportBuilder");
39
39
  const dataFetcher_1 = require("./utils/dataFetcher");
40
+ const useDashboard_2 = require("./hooks/useDashboard");
41
+ const schema_1 = require("./utils/schema");
42
+ const filterProcessing_1 = require("./utils/filterProcessing");
40
43
  /**
41
44
  * Quill Report Builder
42
45
  *
@@ -108,7 +111,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
108
111
  // isChartBuilderHorizontalView: whether the chart builder is in horizontal view mode
109
112
  // onClickChartElement: a callback function triggered when a chart element is clicked
110
113
  // Contexts
111
- const [dashboard] = (0, react_1.useContext)(Context_1.DashboardContext);
114
+ const { dashboardReports: dashboard } = (0, useDashboard_2.useDashboardReports)(destinationDashboard);
112
115
  const [schemaData] = (0, react_1.useContext)(Context_1.SchemaDataContext);
113
116
  const { dashboards } = (0, useDashboard_1.useDashboards)();
114
117
  const destinationDashboardConfig = (0, react_1.useMemo)(() => {
@@ -120,7 +123,10 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
120
123
  table.ownerTenantFields?.length === 0 ||
121
124
  table.ownerTenantFields?.includes(destinationDashboardConfig?.tenantKeys?.[0] ?? ''));
122
125
  });
123
- }, [schemaData.schemaWithCustomFields, destinationDashboardConfig?.tenantKeys]);
126
+ }, [
127
+ schemaData.schemaWithCustomFields,
128
+ destinationDashboardConfig?.tenantKeys,
129
+ ]);
124
130
  const { tenants } = (0, react_1.useContext)(Context_1.TenantContext);
125
131
  const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
126
132
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
@@ -143,6 +149,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
143
149
  const [errorMessage, setErrorMessage] = (0, react_1.useState)('');
144
150
  const [unresolvedReportMessage, setUnresolvedReportMessage] = (0, react_1.useState)('');
145
151
  // Core Report states
152
+ // Table order matters for joins. For now, assumed to have one 'primary' table (the first one)
146
153
  const [tables, setTables] = (0, react_1.useState)([]);
147
154
  const [columns, setColumns] = (0, react_1.useState)([]);
148
155
  const [filterStack, setFilterStack] = (0, react_1.useState)([]);
@@ -159,10 +166,12 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
159
166
  limit,
160
167
  };
161
168
  }, [columns, filterStack, limit, pivot, sort, tables]);
162
- const undoButtonEnabled = false; // TODO: enable
169
+ // For undo/redo
163
170
  const [stateStack, setStateStack] = (0, react_1.useState)([]);
171
+ const [poppedStateStack, setPoppedStateStack] = (0, react_1.useState)([]);
164
172
  // Other Report states
165
173
  const [activeQuery, setActiveQuery] = (0, react_1.useState)('');
174
+ const [queryOutOfSync, setQueryOutOfSync] = (0, react_1.useState)(false);
166
175
  const [unfilteredUniqueValues, setUnfilteredUniqueValues] = (0, react_1.useState)({}); // unique values before filtering
167
176
  const [unfilteredUniqueValuesIsLoading, setUnfilteredUniqueValuesIsLoading] = (0, react_1.useState)(false);
168
177
  const [filteredUniqueValues, setFilteredUniqueValues] = (0, react_1.useState)(null); // unique values after filtering
@@ -225,8 +234,8 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
225
234
  if (tables.length === 1) {
226
235
  // Check if all columns are selected
227
236
  const totalColumnLength = tables.reduce((acc, table) => {
228
- const tableColumns = filteredSchema.find((t) => t.name === table.name)
229
- ?.columns.length ?? 0;
237
+ const tableColumns = filteredSchema.find((t) => t.name === table.name)?.columns.length ??
238
+ 0;
230
239
  return acc + tableColumns;
231
240
  }, 0);
232
241
  return totalColumnLength === columns.length;
@@ -245,11 +254,22 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
245
254
  return 'Please add a limit.';
246
255
  }
247
256
  }, [client, limit, pivot]);
257
+ const foreignKeyMap = (0, react_1.useMemo)(() => {
258
+ return (0, schema_1.getSchemaForeignKeyMapping)(filteredSchema);
259
+ }, [filteredSchema]);
248
260
  // State changing functions
249
- const clearAllState = () => {
261
+ const clearAllState = (resetStateStack = true) => {
250
262
  setActiveQuery('');
251
- handleMultiStateChange(ReportBuilder_1.EMPTY_REPORT_BUILDER_STATE);
252
- setStateStack([]);
263
+ setQueryOutOfSync(false);
264
+ handleMultiStateChange({
265
+ state: ReportBuilder_1.EMPTY_REPORT_BUILDER_STATE,
266
+ fetchData: false,
267
+ updateStateStack: true,
268
+ });
269
+ if (resetStateStack) {
270
+ setStateStack([]);
271
+ setPoppedStateStack([]);
272
+ }
253
273
  setFilteredUniqueValues(null);
254
274
  setUnfilteredUniqueValues({});
255
275
  setColumnUniqueValues({});
@@ -292,54 +312,99 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
292
312
  ...prevStack,
293
313
  { ...reportBuilderState, tables: newTables },
294
314
  ]);
315
+ setPoppedStateStack([]);
295
316
  }
296
317
  };
297
- const handleColumnsChange = (newColumns, fetchData, updateStateStack = true) => {
298
- // If pivot is using removed columns, remove pivot
299
- let removePivot = false;
300
- if (pivot) {
301
- const referencedColumns = [];
302
- if (pivot.rowField) {
303
- referencedColumns.push(pivot.rowField);
304
- }
305
- if (pivot.columnField) {
306
- referencedColumns.push(pivot.columnField);
318
+ const handleColumnsChange = (newColumns, fetchData, updateStateStack = true, bypassConfirmation = false) => {
319
+ const validReportBuilderState = bypassConfirmation
320
+ ? { ...reportBuilderState, columns: newColumns }
321
+ : (0, reportBuilder_1.validatedReportBuilderState)({
322
+ ...reportBuilderState,
323
+ columns: newColumns,
324
+ }, foreignKeyMap);
325
+ if (validReportBuilderState.tables.length === 0 && !bypassConfirmation) {
326
+ if (!confirm('Removing all columns will clear all state. Are you sure you want to continue?')) {
327
+ return;
307
328
  }
308
- if (pivot.aggregations) {
309
- pivot.aggregations.forEach((agg) => {
310
- if (agg.valueField) {
311
- referencedColumns.push(agg.valueField);
312
- }
313
- if (agg.valueField2) {
314
- referencedColumns.push(agg.valueField2);
315
- }
329
+ else {
330
+ handleMultiStateChange({
331
+ state: ReportBuilder_1.EMPTY_REPORT_BUILDER_STATE,
332
+ fetchData: false,
333
+ updateStateStack: true,
316
334
  });
335
+ return;
317
336
  }
318
- const columnMapping = referencedColumns
319
- .map((col) => {
320
- const column = columns.find((c) => (c.alias || c.field) === col);
321
- return column;
322
- })
323
- .filter((c) => c !== undefined);
324
- removePivot = !columnMapping.every((col) => newColumns.some((c) => (c.alias || c.field) === (col.alias || col.field) &&
325
- c.table === col.table));
326
- if (removePivot) {
327
- handlePivotChange(null);
337
+ }
338
+ const tablesAffected = tables.length - validReportBuilderState.tables.length >= 2;
339
+ const filtersAffected = validReportBuilderState.filterStack.length !== filterStack.length;
340
+ const deletedTables = tables
341
+ .filter((table) => {
342
+ return !validReportBuilderState.tables.some((t) => t.name === table.name);
343
+ })
344
+ .map((table) => table.name);
345
+ const deletedFilters = filterStack
346
+ .filter((filter) => filter.value)
347
+ .filter((filter) => {
348
+ return deletedTables.some((table) => table === filter.value.table);
349
+ })
350
+ .map((filter) => (0, filterProcessing_1.filterSentence)(filter.value));
351
+ if (tablesAffected && filtersAffected) {
352
+ if (!confirm(`Removing this column will remove the following table${deletedTables.length > 1 ? 's' : ''}:
353
+ ${deletedTables.join(', ')}.
354
+ It will also remove the following filter${deletedFilters.length > 1 ? 's' : ''}:
355
+ ${deletedFilters.join(', ')}.
356
+ Are you sure you want to continue?
357
+ `
358
+ .replace(/\s+/g, ' ')
359
+ .trim())) {
360
+ return;
361
+ }
362
+ }
363
+ else if (tablesAffected) {
364
+ if (!confirm(`Removing this column will remove the following table${deletedTables.length > 1 ? 's' : ''}:
365
+ ${deletedTables.join(', ')}.
366
+ Are you sure you want to continue?
367
+ `
368
+ .replace(/\s+/g, ' ')
369
+ .trim())) {
370
+ return;
371
+ }
372
+ }
373
+ else if (filtersAffected) {
374
+ if (!confirm(`Removing this column will remove the following filter${deletedFilters.length > 1 ? 's' : ''}:
375
+ ${deletedFilters.join(', ')}.
376
+ Are you sure you want to continue?
377
+ `
378
+ .replace(/\s+/g, ' ')
379
+ .trim())) {
380
+ return;
328
381
  }
329
382
  }
330
- setColumns(newColumns);
383
+ if (validReportBuilderState.tables.length !== tables.length) {
384
+ handleTablesChange(validReportBuilderState.tables, false);
385
+ fetchData = true;
386
+ }
387
+ if (validReportBuilderState.filterStack.length !== filterStack.length) {
388
+ handleFilterStackChange(validReportBuilderState.filterStack, false, false);
389
+ fetchData = true;
390
+ }
391
+ if (validReportBuilderState.sort.length !== sort.length) {
392
+ handleSortChange(validReportBuilderState.sort, false, false);
393
+ fetchData = true;
394
+ }
395
+ if (pivot && !validReportBuilderState.pivot) {
396
+ handlePivotChange(validReportBuilderState.pivot, false, false);
397
+ }
398
+ setColumns(validReportBuilderState.columns);
331
399
  if (updateStateStack) {
332
- setStateStack((prevStack) => [
333
- ...prevStack,
334
- { ...reportBuilderState, columns: newColumns },
335
- ]);
400
+ setStateStack((prevStack) => [...prevStack, validReportBuilderState]);
401
+ setPoppedStateStack([]);
336
402
  }
337
403
  if (fetchData) {
338
- fetchDataFromReportBuilderState({
339
- ...reportBuilderState,
340
- columns: newColumns,
341
- pivot: removePivot ? null : pivot,
342
- });
404
+ fetchDataFromReportBuilderState(validReportBuilderState);
405
+ }
406
+ else {
407
+ setQueryOutOfSync(true);
343
408
  }
344
409
  };
345
410
  const handleFilterInsertion = (newFilter) => {
@@ -373,6 +438,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
373
438
  ...prevStack,
374
439
  { ...reportBuilderState, filterStack: newFilterStack },
375
440
  ]);
441
+ setPoppedStateStack([]);
376
442
  }
377
443
  if (fetchData) {
378
444
  fetchDataFromReportBuilderState({
@@ -409,6 +475,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
409
475
  limit: resetSortAndLimit ? null : limit,
410
476
  },
411
477
  ]);
478
+ setPoppedStateStack([]);
412
479
  }
413
480
  if (fetchData) {
414
481
  fetchDataFromReportBuilderState({
@@ -464,6 +531,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
464
531
  ...prevStack,
465
532
  { ...reportBuilderState, sort: newSort },
466
533
  ]);
534
+ setPoppedStateStack([]);
467
535
  }
468
536
  if (fetchData) {
469
537
  fetchDataFromReportBuilderState({
@@ -479,6 +547,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
479
547
  ...prevStack,
480
548
  { ...reportBuilderState, limit: newLimit },
481
549
  ]);
550
+ setPoppedStateStack([]);
482
551
  }
483
552
  if (fetchData) {
484
553
  fetchDataFromReportBuilderState({
@@ -487,12 +556,12 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
487
556
  });
488
557
  }
489
558
  };
490
- const handleMultiStateChange = (state, fetchData, updateStateStack = true) => {
559
+ const handleMultiStateChange = ({ state, fetchData, updateStateStack = true, report, }) => {
491
560
  if (state.tables !== undefined) {
492
561
  handleTablesChange(state.tables, false);
493
562
  }
494
563
  if (state.columns !== undefined) {
495
- handleColumnsChange(state.columns, false, false);
564
+ handleColumnsChange(state.columns, false, false, true);
496
565
  }
497
566
  if (state.filterStack !== undefined) {
498
567
  handleFilterStackChange(state.filterStack, false, false);
@@ -511,9 +580,10 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
511
580
  ...prevStack,
512
581
  { ...reportBuilderState, ...state },
513
582
  ]);
583
+ setPoppedStateStack([]);
514
584
  }
515
585
  if (fetchData) {
516
- fetchDataFromReportBuilderState({ ...reportBuilderState, ...state }, !!state.filterStack, !!state.tables);
586
+ fetchDataFromReportBuilderState({ ...reportBuilderState, ...state }, !!state.filterStack, !!state.tables, report);
517
587
  }
518
588
  };
519
589
  const handleUndo = () => {
@@ -521,10 +591,33 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
521
591
  return;
522
592
  }
523
593
  const previousState = stateStack[stateStack.length - 2];
594
+ setPoppedStateStack((prevStack) => [
595
+ ...prevStack,
596
+ stateStack[stateStack.length - 1],
597
+ ]);
524
598
  setStateStack((prevStack) => prevStack.slice(0, -1));
525
- handleMultiStateChange(previousState, true, false);
599
+ // Only fetch data if the previous state has columns
600
+ handleMultiStateChange({
601
+ state: previousState,
602
+ fetchData: previousState.columns.length > 0,
603
+ updateStateStack: false,
604
+ });
605
+ };
606
+ const handleRedo = () => {
607
+ if (poppedStateStack.length === 0) {
608
+ return;
609
+ }
610
+ const lastState = poppedStateStack[poppedStateStack.length - 1];
611
+ setStateStack((prevStack) => [...prevStack, lastState]);
612
+ setPoppedStateStack((prevStack) => prevStack.slice(0, -1));
613
+ // Only fetch data if the last state has columns
614
+ handleMultiStateChange({
615
+ state: lastState,
616
+ fetchData: lastState.columns.length > 0,
617
+ updateStateStack: false,
618
+ });
526
619
  };
527
- const fetchDataFromReportBuilderState = (state, filtersChanged, tablesChanged) => {
620
+ const fetchDataFromReportBuilderState = (state, filtersChanged, tablesChanged, report) => {
528
621
  if (!client) {
529
622
  return;
530
623
  }
@@ -532,11 +625,12 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
532
625
  fetchReportFromASTHelper({
533
626
  ast,
534
627
  pivot: state.pivot,
628
+ previousReport: report,
535
629
  requiresNewFilteredUniqueValues: filtersChanged,
536
630
  requiresNewUnfilteredUniqueValues: tablesChanged,
537
631
  });
538
632
  };
539
- const fetchReportFromASTHelper = async ({ ast, pivot, previousReport, requiresNewFilteredUniqueValues = false, requiresNewUnfilteredUniqueValues = false, }) => {
633
+ const fetchReportFromASTHelper = async ({ ast, pivot, previousReport = tempReport, requiresNewFilteredUniqueValues = false, requiresNewUnfilteredUniqueValues = false, }) => {
540
634
  let reportBuilderInfo = undefined;
541
635
  setErrorMessage('');
542
636
  const schema = filteredSchema;
@@ -598,6 +692,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
598
692
  pagination: REPORT_BUILDER_PAGINATION,
599
693
  });
600
694
  setActiveQuery(reportBuilderInfo.query);
695
+ setQueryOutOfSync(false);
601
696
  // table data
602
697
  fetchRowCountFromAST(ast, ast.where);
603
698
  setReportRows(reportBuilderInfo.rows);
@@ -740,7 +835,10 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
740
835
  }
741
836
  setAskAILoading(false);
742
837
  const newState = (0, reportBuilder_1.astToReportBuilderState)(astInfo.ast, client.databaseType || 'postgresql', filteredSchema);
743
- handleMultiStateChange({ ...newState, pivot: astInfo.pivot }, true);
838
+ handleMultiStateChange({
839
+ state: { ...newState, pivot: astInfo.pivot },
840
+ fetchData: true,
841
+ });
744
842
  };
745
843
  const fetchGlobalUniqueValues = async (columns, tables) => {
746
844
  if (!client) {
@@ -759,6 +857,15 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
759
857
  setUnfilteredUniqueValues(uniqueStrings);
760
858
  setUnfilteredUniqueValuesIsLoading(false);
761
859
  };
860
+ const fetchQueryFromReportBuilderState = async (state) => {
861
+ if (!client) {
862
+ return '';
863
+ }
864
+ const ast = (0, reportBuilder_1.reportBuilderStateToAst)(state, client.databaseType?.toLowerCase() || 'postgresql');
865
+ const query = await (0, dataFetcher_1.fetchSqlQuery)(ast, client);
866
+ setActiveQuery(query.query);
867
+ return query.query;
868
+ };
762
869
  const resetProcessing = () => {
763
870
  setCurrentProcessing({ page: REPORT_BUILDER_PAGINATION });
764
871
  setPreviousPage(0);
@@ -949,9 +1056,13 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
949
1056
  const initialState = (0, reportBuilder_1.astToReportBuilderState)(newAst, client.databaseType || 'postgresql', filteredSchema);
950
1057
  setTempReport(report);
951
1058
  handleMultiStateChange({
952
- ...initialState,
953
- pivot: newPivot ?? null,
954
- }, true);
1059
+ state: {
1060
+ ...initialState,
1061
+ pivot: newPivot ?? null,
1062
+ },
1063
+ fetchData: true,
1064
+ report,
1065
+ });
955
1066
  }
956
1067
  catch (err) {
957
1068
  console.error(err);
@@ -969,13 +1080,16 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
969
1080
  })?.columns ?? [];
970
1081
  if (tableColumns.length > 0) {
971
1082
  handleMultiStateChange({
972
- ...ReportBuilder_1.EMPTY_REPORT_BUILDER_STATE,
973
- tables: [{ name: initialTableName }],
974
- columns: tableColumns.map((col) => ({
975
- field: col.field,
976
- table: initialTableName,
977
- })),
978
- }, true);
1083
+ state: {
1084
+ ...ReportBuilder_1.EMPTY_REPORT_BUILDER_STATE,
1085
+ tables: [{ name: initialTableName }],
1086
+ columns: tableColumns.map((col) => ({
1087
+ field: col.field,
1088
+ table: initialTableName,
1089
+ })),
1090
+ },
1091
+ fetchData: true,
1092
+ });
979
1093
  }
980
1094
  }
981
1095
  }, [filteredSchema, initialTableName]);
@@ -1005,14 +1119,15 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
1005
1119
  }
1006
1120
  }, title: "Select columns", children: (0, jsx_runtime_1.jsx)(AddColumnModal_1.default, { onSave: (tables, columns) => {
1007
1121
  handleMultiStateChange({
1008
- ...ReportBuilder_1.EMPTY_REPORT_BUILDER_STATE,
1009
- tables,
1010
- columns,
1011
- }, true);
1122
+ state: {
1123
+ ...ReportBuilder_1.EMPTY_REPORT_BUILDER_STATE,
1124
+ tables,
1125
+ columns,
1126
+ },
1127
+ fetchData: true,
1128
+ });
1012
1129
  setOpenPopover(null);
1013
- },
1014
- // selectedTables={tables} // Bring back after select table join UI
1015
- selectedColumns: columns, schema: filteredSchema, schemaLoading: schemaData.isSchemaLoading, TextInputComponent: TextInputComponent, SelectColumn: SelectColumnComponent, SecondaryButton: SecondaryButtonComponent, Button: ButtonComponent, ColumnSearchEmptyState: ColumnSearchEmptyState, LoadingComponent: LoadingComponent }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Filters" }), filterStack.length > 0 && ((0, jsx_runtime_1.jsx)("div", { style: {
1130
+ }, selectedTables: tables, selectedColumns: columns, schema: filteredSchema, foreignKeyMap: foreignKeyMap, schemaLoading: schemaData.isSchemaLoading, TextInputComponent: TextInputComponent, SelectColumn: SelectColumnComponent, SecondaryButton: SecondaryButtonComponent, Button: ButtonComponent, ColumnSearchEmptyState: ColumnSearchEmptyState, LoadingComponent: LoadingComponent }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Filters" }), filterStack.length > 0 && ((0, jsx_runtime_1.jsx)("div", { style: {
1016
1131
  display: 'flex',
1017
1132
  flexDirection: 'column',
1018
1133
  gap: 8,
@@ -1134,7 +1249,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
1134
1249
  if (tables.length <= 1) {
1135
1250
  fetchAstFromPromptHelper();
1136
1251
  }
1137
- }, isLoading: askAILoading && columns.length === 0, label: 'Ask AI' }) }), !reportId && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { label: 'New report', onClick: clearAllState, disabled: columns.length === 0 || loading }))] }) })), columns.length > 0 && ((0, jsx_runtime_1.jsx)(TableComponent, { isLoading: tableLoading || (loading && errorMessage.length === 0), rows: formattedRows, rowCount: pivot ? pivotData?.rowCount : numberOfRows, rowCountIsLoading: rowCountIsLoading, rowsPerPage: 20, columns: pivot
1252
+ }, isLoading: askAILoading && columns.length === 0, label: 'Ask AI' }) }), !reportId && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { label: 'New report', onClick: () => clearAllState(false), disabled: columns.length === 0 || loading }))] }) })), columns.length > 0 && ((0, jsx_runtime_1.jsx)(TableComponent, { isLoading: tableLoading || (loading && errorMessage.length === 0), rows: formattedRows, rowCount: pivot ? pivotData?.rowCount : numberOfRows, rowCountIsLoading: rowCountIsLoading, rowsPerPage: 20, columns: pivot
1138
1253
  ? pivotData?.columns || []
1139
1254
  : reportColumnsToStateColumns.map((col) => {
1140
1255
  return {
@@ -1161,7 +1276,12 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
1161
1276
  alignItems: 'center',
1162
1277
  }, children: [(0, jsx_runtime_1.jsx)(ErrorMessageComponent, { errorMessage: errorMessage || pivotError }), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
1163
1278
  fetchAstFromPromptHelper();
1164
- }, label: 'Retry' }), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: clearAllState, label: 'Reset' })] })) : ((0, jsx_runtime_1.jsx)("div", { style: { width: '100%' } })), columns.length > 0 && activeQuery && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [undoButtonEnabled && stateStack.length > 1 && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: handleUndo, label: "Undo", disabled: stateStack.length <= 1 || loading })), onDiscardChanges && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: onDiscardChanges, label: "Discard changes" })), !hideCopySQL && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { label: isCopying ? 'Copied' : 'Copy SQL', onClick: () => copySQLToClipboard() })), !isAdminEnabled ? null : ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: async () => {
1279
+ }, label: 'Retry' }), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => clearAllState(false), label: 'Reset' })] })) : ((0, jsx_runtime_1.jsx)("div", { style: { width: '100%' } })), stateStack.length > 0 && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: handleUndo, label: "", icon: (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", className: "size-6", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 15 3 9m0 0 6-6M3 9h12a6 6 0 0 1 0 12h-3" }) }), disabled: stateStack.length <= 1 || loading })), stateStack.length > 0 && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: handleRedo, label: "", icon: (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", className: "size-6", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "m15 15 6-6m0 0-6-6m6 6H9a6 6 0 0 0 0 12h3" }) }), disabled: poppedStateStack.length < 1 || loading })), columns.length > 0 && activeQuery && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [onDiscardChanges && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: onDiscardChanges, label: "Discard changes" })), !hideCopySQL && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { label: isCopying ? 'Copied' : 'Copy SQL', onClick: () => copySQLToClipboard() })), !isAdminEnabled ? null : ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: async () => {
1280
+ let tempReportQuery = activeQuery;
1281
+ if (queryOutOfSync) {
1282
+ tempReportQuery =
1283
+ await fetchQueryFromReportBuilderState(reportBuilderState);
1284
+ }
1165
1285
  const tempReportColumns = columns
1166
1286
  .map((column) => {
1167
1287
  return reportColumnsToStateColumns.find((col) => col.field === (column.alias || column.field));
@@ -1199,8 +1319,8 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
1199
1319
  })
1200
1320
  : tempReportColumns,
1201
1321
  queryString: isSelectStar
1202
- ? (0, convert_1.convertQueryToSelectStar)(activeQuery)
1203
- : activeQuery,
1322
+ ? (0, convert_1.convertQueryToSelectStar)(tempReportQuery)
1323
+ : tempReportQuery,
1204
1324
  includeCustomFields: isSelectStar,
1205
1325
  rows: reportRows,
1206
1326
  pivotRows: pivotData?.rows,
@@ -1216,6 +1336,11 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
1216
1336
  tableLoading ||
1217
1337
  loading ||
1218
1338
  !!unresolvedReportMessage, label: 'Save query', tooltipText: unresolvedReportMessage })), (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: async () => {
1339
+ let tempReportQuery = activeQuery;
1340
+ if (queryOutOfSync) {
1341
+ tempReportQuery =
1342
+ await fetchQueryFromReportBuilderState(reportBuilderState);
1343
+ }
1219
1344
  onSaveChanges && onSaveChanges();
1220
1345
  const tempReportColumns = columns
1221
1346
  .map((column) => {
@@ -1254,8 +1379,8 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void
1254
1379
  })
1255
1380
  : tempReportColumns,
1256
1381
  queryString: isSelectStar
1257
- ? (0, convert_1.convertQueryToSelectStar)(activeQuery)
1258
- : activeQuery,
1382
+ ? (0, convert_1.convertQueryToSelectStar)(tempReportQuery)
1383
+ : tempReportQuery,
1259
1384
  includeCustomFields: isSelectStar,
1260
1385
  rows: reportRows,
1261
1386
  pivotRows: pivotData?.rows,
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.tsx"],"names":[],"mappings":"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"}
package/dist/cjs/Table.js CHANGED
@@ -57,8 +57,8 @@ const Table = ({ TableComponent = TableComponent_1.default, ...props }) => {
57
57
  reportFilters } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
58
58
  const specificReportFilters = (0, react_1.useMemo)(() => {
59
59
  return Object.values(reportFilters[props.reportId ?? ''] ??
60
- (dashboard[props.reportId ?? '']
61
- ? dashboardFilters[dashboard[props.reportId ?? '']?.dashboardName ?? '']
60
+ (dashboard[report?.dashboardName ?? '']?.[report?.id ?? '']
61
+ ? dashboardFilters[report.dashboardName]
62
62
  : null) ??
63
63
  {}).map((f) => f.filter);
64
64
  }, [reportFilters[props.reportId ?? '']]);
@@ -77,6 +77,6 @@ const Table = ({ TableComponent = TableComponent_1.default, ...props }) => {
77
77
  }
78
78
  return ((0, jsx_runtime_1.jsx)(DataLoader_1.default, { item: report, filters: specificReportFilters, userFilters: userFilters?.map(Filter_1.convertCustomFilter), additionalProcessing: {
79
79
  page: paginationProcessing_1.DEFAULT_PAGINATION,
80
- }, reportMode: true, children: ({ isLoading, error, onPageChange, onSortChange, data, rowCount, rowCountIsLoading, }) => (0, jsx_runtime_1.jsx)(TableComponent, { report: data, isLoading: isLoading, error: error, rowCount: rowCount ?? data?.rowCount ?? data?.rows?.length ?? 0, rowCountIsLoading: rowCountIsLoading, onPageChange: (page) => onPageChange(page), onSortChange: (sort) => onSortChange(sort), hideName: true }) }));
80
+ }, children: ({ isLoading, error, onPageChange, onSortChange, data, rowCount, rowCountIsLoading, }) => (0, jsx_runtime_1.jsx)(TableComponent, { report: data, isLoading: isLoading, error: error, rowCount: rowCount ?? data?.rowCount ?? data?.rows?.length ?? 0, rowCountIsLoading: rowCountIsLoading, onPageChange: (page) => onPageChange(page), onSortChange: (sort) => onSortChange(sort), hideName: true }) }));
81
81
  };
82
82
  exports.default = Table;
@@ -1 +1 @@
1
- {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/BarChart.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,KAAK,EACL,UAAU,EACV,SAAS,EACT,iBAAwB,EACxB,SAAiB,EACjB,SAAiB,EACjB,iBAAyB,EACzB,mBAAmB,EACnB,UAAU,EACV,cAAc,GACf,EAAE;IACD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,cAAc,CAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAC,EAAE,CAAC;CACrD,2CAkNA"}
1
+ {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/BarChart.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,KAAK,EACL,UAAU,EACV,SAAS,EACT,iBAAwB,EACxB,SAAiB,EACjB,SAAiB,EACjB,iBAAyB,EACzB,mBAAmB,EACnB,UAAU,EACV,cAAc,GACf,EAAE;IACD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,cAAc,CAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAC,EAAE,CAAC;CACrD,2CAiNA"}
@@ -35,7 +35,6 @@ function BarChart({ colors, colorMap, yAxisFields, data, containerStyle, classNa
35
35
  display: 'flex',
36
36
  flex: '1 0 auto',
37
37
  height: '100%',
38
- margin: 'auto',
39
38
  justifyContent: 'center',
40
39
  alignItems: 'center',
41
40
  fontSize: 13,
@@ -46,7 +45,7 @@ function BarChart({ colors, colorMap, yAxisFields, data, containerStyle, classNa
46
45
  return ((0, jsx_runtime_1.jsx)("div", { style: {
47
46
  boxSizing: 'content-box',
48
47
  ...containerStyle,
49
- }, className: className, children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: "100%", children: (0, jsx_runtime_1.jsxs)(recharts_1.BarChart, { data: data ?? [], layout: 'horizontal', onClick: (event) => onClickChartElement
48
+ }, className: className, children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: "100%", minWidth: 0, minHeight: 0, children: (0, jsx_runtime_1.jsxs)(recharts_1.BarChart, { data: data ?? [], layout: 'horizontal', onClick: (event) => onClickChartElement
50
49
  ? onClickChartElement(event?.activePayload
51
50
  ? event.activePayload[0].payload
52
51
  : undefined)
@@ -138,7 +138,7 @@ function D3Gauge({ percentage, containerStyle, xAxisFormat, colors, isAnimationA
138
138
  const gaugeHeight = Math.min(ch, cw / 1.2);
139
139
  const gaugeWidth = gaugeHeight * 1.2;
140
140
  const radius = gaugeHeight / 2;
141
- const innerRadius = radius * 0.65;
141
+ const innerRadius = radius * 0.6;
142
142
  // const arcWidth = radius - innerRadius;
143
143
  // Vertical offset to visually center the 270° arc.
144
144
  const verticalOffset = gaugeHeight * 0.05;
@@ -78,7 +78,7 @@ function LineChart({ colors, colorMap = {}, yAxisFields, data, containerStyle, c
78
78
  return sum + 1;
79
79
  return sum;
80
80
  }, 0);
81
- return ((0, jsx_runtime_1.jsx)("div", { style: { ...containerStyle }, className: className, children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: '100%', children: (0, jsx_runtime_1.jsxs)(recharts_1.ComposedChart, { data: formattedData, onClick: (event) => onClickChartElement(event?.activePayload ? event.activePayload[0].payload : undefined), children: [!hideCartesianGrid && ((0, jsx_runtime_1.jsx)(recharts_1.CartesianGrid, { horizontal: !hideHorizontalCartesianGrid, vertical: !hideVerticalCartesianGrid, stroke: cartesianGridLineColor ?? '#e5e7eb', strokeDasharray: cartesianGridLineStyle === 'dashed' ? '5 5' : undefined })), (0, jsx_runtime_1.jsx)(recharts_1.XAxis, { dataKey: xAxisField, hide: hideXAxis, tick: { transform: 'translate(0, 6)' }, style: {
81
+ return ((0, jsx_runtime_1.jsx)("div", { style: { ...containerStyle }, className: className, children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: '100%', minWidth: 0, minHeight: 0, children: (0, jsx_runtime_1.jsxs)(recharts_1.ComposedChart, { data: formattedData, onClick: (event) => onClickChartElement(event?.activePayload ? event.activePayload[0].payload : undefined), children: [!hideCartesianGrid && ((0, jsx_runtime_1.jsx)(recharts_1.CartesianGrid, { horizontal: !hideHorizontalCartesianGrid, vertical: !hideVerticalCartesianGrid, stroke: cartesianGridLineColor ?? '#e5e7eb', strokeDasharray: cartesianGridLineStyle === 'dashed' ? '5 5' : undefined })), (0, jsx_runtime_1.jsx)(recharts_1.XAxis, { dataKey: xAxisField, hide: hideXAxis, tick: { transform: 'translate(0, 6)' }, style: {
82
82
  fontSize: '12px',
83
83
  fontFamily: theme?.chartLabelFontFamily ||
84
84
  theme?.fontFamily ||
@@ -406,7 +406,7 @@ function USMap({ theme, data, xAxisField, xAxisFormat, yAxisFields, onClickChart
406
406
  return ((0, jsx_runtime_1.jsxs)("div", { ref: containerRef, className: className, style: {
407
407
  width: "100%",
408
408
  height: "auto",
409
- marginTop: '-5%',
409
+ marginTop: '-6.5%',
410
410
  zIndex: 0,
411
411
  ...containerStyle,
412
412
  position: "relative",
@@ -204,7 +204,7 @@ const PieChartWrapper = react_1.default.forwardRef((props, ref) => {
204
204
  justifyContent: 'center',
205
205
  boxSizing: 'content-box',
206
206
  ...containerStyle,
207
- }, ...other, children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: "100%", children: (0, jsx_runtime_1.jsxs)(recharts_1.PieChart, { children: [(0, jsx_runtime_1.jsx)(recharts_1.Pie, { data: (0, exports.parseData)(data, (colorMap[category] &&
207
+ }, ...other, children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: "100%", minWidth: 0, minHeight: 0, children: (0, jsx_runtime_1.jsxs)(recharts_1.PieChart, { children: [(0, jsx_runtime_1.jsx)(recharts_1.Pie, { data: (0, exports.parseData)(data, (colorMap[category] &&
208
208
  colorMap[category]['primary'] &&
209
209
  (0, color_1.generateArrayFromColor)(colorMap[category]['primary'], data.length)) ??
210
210
  (colors.length >= data.length
@@ -19,10 +19,12 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent = QuillSelect
19
19
  const presetRange = filter.presetRanges?.find((range) => range.value === (filter.preset?.value ?? filter.primaryRange.value)) ?? dateRangePickerUtils_1.PRIMARY_RANGE[filter.preset?.value ?? filter.primaryRange.value];
20
20
  if (!presetRange)
21
21
  return filter.preset?.value ?? filter.primaryRange.value;
22
- if (presetRange.startDate !== filter.startDate ||
23
- presetRange.endDate !== filter.endDate) {
24
- return '';
25
- }
22
+ // if (
23
+ // presetRange.startDate !== filter.startDate ||
24
+ // presetRange.endDate !== filter.endDate
25
+ // ) {
26
+ // return '';
27
+ // }
26
28
  return filter.preset?.value ?? filter.primaryRange.value;
27
29
  }
28
30
  return '';
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardSection.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DashboardSection.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,OAAO,EACP,QAAQ,GACT,EAAE,8BAA8B,GAAG,GAAG,CAAC,OAAO,CAoC9C"}
1
+ {"version":3,"file":"DashboardSection.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DashboardSection.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,OAAO,EACP,QAAQ,GACT,EAAE,8BAA8B,GAAG,GAAG,CAAC,OAAO,CAmC9C"}
@@ -12,7 +12,6 @@ function DashboardSection({ section, children, }) {
12
12
  fontFamily: theme?.fontFamily,
13
13
  fontWeight: 'bold',
14
14
  marginTop: 20,
15
- marginBottom: -20,
16
15
  textAlign: 'left',
17
16
  }, children: section }) })), (0, jsx_runtime_1.jsx)("div", { style: {
18
17
  boxSizing: 'content-box',