@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.
- package/dist/cjs/Chart.d.ts +3 -1
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +27 -30
- package/dist/cjs/ChartBuilder.d.ts +1 -2
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +46 -26
- package/dist/cjs/ChartEditor.d.ts +1 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +6 -8
- package/dist/cjs/Context.d.ts +18 -6
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +98 -54
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +67 -17
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +201 -76
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +3 -3
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +1 -2
- package/dist/cjs/components/Chart/GaugeChart.js +1 -1
- package/dist/cjs/components/Chart/LineChart.js +1 -1
- package/dist/cjs/components/Chart/MapChart.js +1 -1
- package/dist/cjs/components/Chart/PieChart.js +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +6 -4
- package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardSection.js +0 -1
- package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardSectionContainer.js +0 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +6 -4
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +108 -139
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +61 -59
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +4 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +59 -63
- package/dist/cjs/components/ReportBuilder/schema.d.ts +7 -0
- package/dist/cjs/components/ReportBuilder/schema.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +11 -3
- package/dist/cjs/hooks/useDashboard.d.ts +23 -2
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +133 -3
- package/dist/cjs/hooks/useExport.js +3 -3
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +8 -7
- package/dist/cjs/hooks/useReport.d.ts.map +1 -1
- package/dist/cjs/hooks/useReport.js +13 -12
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/models/Client.d.ts +1 -0
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Dashboard.d.ts +5 -1
- package/dist/cjs/models/Dashboard.d.ts.map +1 -1
- package/dist/cjs/models/Filter.d.ts.map +1 -1
- package/dist/cjs/models/Filter.js +0 -2
- package/dist/cjs/models/Report.d.ts +1 -2
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +1 -0
- package/dist/cjs/utils/dashboard.js +1 -1
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +2 -2
- package/dist/cjs/utils/reportBuilder.d.ts +11 -2
- package/dist/cjs/utils/reportBuilder.d.ts.map +1 -1
- package/dist/cjs/utils/reportBuilder.js +127 -1
- package/dist/cjs/utils/schema.d.ts +2 -7
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +4 -0
- package/dist/esm/Chart.d.ts +3 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +28 -31
- package/dist/esm/ChartBuilder.d.ts +1 -2
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +47 -27
- package/dist/esm/ChartEditor.d.ts +1 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +7 -9
- package/dist/esm/Context.d.ts +18 -6
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +100 -56
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +67 -17
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +206 -81
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +3 -3
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +1 -2
- package/dist/esm/components/Chart/GaugeChart.js +1 -1
- package/dist/esm/components/Chart/LineChart.js +1 -1
- package/dist/esm/components/Chart/MapChart.js +1 -1
- package/dist/esm/components/Chart/PieChart.js +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +6 -4
- package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardSection.js +0 -1
- package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardSectionContainer.js +0 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts +6 -4
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +109 -140
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +61 -59
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +4 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.js +59 -63
- package/dist/esm/components/ReportBuilder/schema.d.ts +7 -0
- package/dist/esm/components/ReportBuilder/schema.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +11 -3
- package/dist/esm/hooks/useDashboard.d.ts +23 -2
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +131 -3
- package/dist/esm/hooks/useExport.js +4 -4
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +9 -8
- package/dist/esm/hooks/useReport.d.ts.map +1 -1
- package/dist/esm/hooks/useReport.js +14 -13
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/models/Client.d.ts +1 -0
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Dashboard.d.ts +5 -1
- package/dist/esm/models/Dashboard.d.ts.map +1 -1
- package/dist/esm/models/Filter.d.ts.map +1 -1
- package/dist/esm/models/Filter.js +0 -2
- package/dist/esm/models/Report.d.ts +1 -2
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +1 -0
- package/dist/esm/utils/dashboard.js +1 -1
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +2 -2
- package/dist/esm/utils/reportBuilder.d.ts +11 -2
- package/dist/esm/utils/reportBuilder.d.ts.map +1 -1
- package/dist/esm/utils/reportBuilder.js +124 -0
- package/dist/esm/utils/schema.d.ts +2 -7
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +4 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useContext, useEffect, useMemo, useRef, useState, } from 'react';
|
|
3
3
|
import { MemoizedButton, MemoizedDeleteButton, MemoizedHeader, MemoizedLabel, MemoizedSecondaryButton, MemoizedText, MemoizedPopover, QuillTabs, MemoizedModal, QuillChartBuilderInputRowContainer, QuillChartBuilderInputColumnContainer, MemoizedSubHeader, QuillErrorMessageComponent, QuillPivotRowContainer, QuillPivotColumnContainer, QuillColumnSearchEmptyState, QuillChartBuilderFormContainer, QuillLoadingComponent, QuillTableReportBuilderComponent, QuillChartBuilderCheckboxComponent, QuillToolTip, } from './components/UiComponents';
|
|
4
|
-
import { ClientContext,
|
|
4
|
+
import { ClientContext, SchemaDataContext, TenantContext, ThemeContext, } from './Context';
|
|
5
5
|
import { ChartBuilderWithModal } from './ChartBuilder';
|
|
6
6
|
import { QuillTextInput } from './components/UiComponents';
|
|
7
7
|
import { QuillSidebar, CustomContainer, QuillSelectColumn, QuillDraggableColumn, QuillSidebarHeading, QuillFilterPopover, QuillSortPopover, QuillLimitPopover, } from './components/ReportBuilder/ui';
|
|
@@ -12,7 +12,7 @@ import { AddLimitPopover, LimitSentence, } from './components/ReportBuilder/AddL
|
|
|
12
12
|
import { updateFirstChildWidth } from './utils/width';
|
|
13
13
|
import { QuillSelectComponent } from './components/QuillSelect';
|
|
14
14
|
import { QuillCard } from './components/QuillCard';
|
|
15
|
-
import { isValidPivot, pivotFormData
|
|
15
|
+
import { isValidPivot, pivotFormData } from './utils/pivotProcessing';
|
|
16
16
|
import { fetchResultsByQuery, fetchTableByAST, getUniqueStringValuesByTable, } from './utils/tableProcessing';
|
|
17
17
|
import { createSelectStarFromAst, fetchAndProcessASTFromPrompt, fetchASTFromQuillReport, } from './utils/astProcessing';
|
|
18
18
|
import PivotForm from './internals/ReportBuilder/PivotForm';
|
|
@@ -28,9 +28,12 @@ import { cleanDashboardItem } from './utils/dashboard';
|
|
|
28
28
|
import { useDashboards } from './hooks/useDashboard';
|
|
29
29
|
import { EMPTY_REPORT_BUILDER_STATE, } from './models/ReportBuilder';
|
|
30
30
|
import DraggableColumns from './components/ReportBuilder/DraggableColumns';
|
|
31
|
-
import
|
|
32
|
-
import { astToReportBuilderState, formatRows, isValidPivotForReport, reportBuilderStateToAst, setTypesOnPivot, } from './utils/reportBuilder';
|
|
31
|
+
import AddColumnModal from './components/ReportBuilder/AddColumnModal';
|
|
32
|
+
import { astToReportBuilderState, formatRows, isValidPivotForReport, reportBuilderStateToAst, setTypesOnPivot, validatedReportBuilderState, } from './utils/reportBuilder';
|
|
33
33
|
import { fetchSqlQuery } from './utils/dataFetcher';
|
|
34
|
+
import { useDashboardReports } from './hooks/useDashboard';
|
|
35
|
+
import { getSchemaForeignKeyMapping } from './utils/schema';
|
|
36
|
+
import { filterSentence } from './utils/filterProcessing';
|
|
34
37
|
/**
|
|
35
38
|
* Quill Report Builder
|
|
36
39
|
*
|
|
@@ -102,7 +105,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
102
105
|
// isChartBuilderHorizontalView: whether the chart builder is in horizontal view mode
|
|
103
106
|
// onClickChartElement: a callback function triggered when a chart element is clicked
|
|
104
107
|
// Contexts
|
|
105
|
-
const
|
|
108
|
+
const { dashboardReports: dashboard } = useDashboardReports(destinationDashboard);
|
|
106
109
|
const [schemaData] = useContext(SchemaDataContext);
|
|
107
110
|
const { dashboards } = useDashboards();
|
|
108
111
|
const destinationDashboardConfig = useMemo(() => {
|
|
@@ -114,7 +117,10 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
114
117
|
table.ownerTenantFields?.length === 0 ||
|
|
115
118
|
table.ownerTenantFields?.includes(destinationDashboardConfig?.tenantKeys?.[0] ?? ''));
|
|
116
119
|
});
|
|
117
|
-
}, [
|
|
120
|
+
}, [
|
|
121
|
+
schemaData.schemaWithCustomFields,
|
|
122
|
+
destinationDashboardConfig?.tenantKeys,
|
|
123
|
+
]);
|
|
118
124
|
const { tenants } = useContext(TenantContext);
|
|
119
125
|
const [theme] = useContext(ThemeContext);
|
|
120
126
|
const [client] = useContext(ClientContext);
|
|
@@ -137,6 +143,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
137
143
|
const [errorMessage, setErrorMessage] = useState('');
|
|
138
144
|
const [unresolvedReportMessage, setUnresolvedReportMessage] = useState('');
|
|
139
145
|
// Core Report states
|
|
146
|
+
// Table order matters for joins. For now, assumed to have one 'primary' table (the first one)
|
|
140
147
|
const [tables, setTables] = useState([]);
|
|
141
148
|
const [columns, setColumns] = useState([]);
|
|
142
149
|
const [filterStack, setFilterStack] = useState([]);
|
|
@@ -153,10 +160,12 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
153
160
|
limit,
|
|
154
161
|
};
|
|
155
162
|
}, [columns, filterStack, limit, pivot, sort, tables]);
|
|
156
|
-
|
|
163
|
+
// For undo/redo
|
|
157
164
|
const [stateStack, setStateStack] = useState([]);
|
|
165
|
+
const [poppedStateStack, setPoppedStateStack] = useState([]);
|
|
158
166
|
// Other Report states
|
|
159
167
|
const [activeQuery, setActiveQuery] = useState('');
|
|
168
|
+
const [queryOutOfSync, setQueryOutOfSync] = useState(false);
|
|
160
169
|
const [unfilteredUniqueValues, setUnfilteredUniqueValues] = useState({}); // unique values before filtering
|
|
161
170
|
const [unfilteredUniqueValuesIsLoading, setUnfilteredUniqueValuesIsLoading] = useState(false);
|
|
162
171
|
const [filteredUniqueValues, setFilteredUniqueValues] = useState(null); // unique values after filtering
|
|
@@ -219,8 +228,8 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
219
228
|
if (tables.length === 1) {
|
|
220
229
|
// Check if all columns are selected
|
|
221
230
|
const totalColumnLength = tables.reduce((acc, table) => {
|
|
222
|
-
const tableColumns = filteredSchema.find((t) => t.name === table.name)
|
|
223
|
-
|
|
231
|
+
const tableColumns = filteredSchema.find((t) => t.name === table.name)?.columns.length ??
|
|
232
|
+
0;
|
|
224
233
|
return acc + tableColumns;
|
|
225
234
|
}, 0);
|
|
226
235
|
return totalColumnLength === columns.length;
|
|
@@ -239,11 +248,22 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
239
248
|
return 'Please add a limit.';
|
|
240
249
|
}
|
|
241
250
|
}, [client, limit, pivot]);
|
|
251
|
+
const foreignKeyMap = useMemo(() => {
|
|
252
|
+
return getSchemaForeignKeyMapping(filteredSchema);
|
|
253
|
+
}, [filteredSchema]);
|
|
242
254
|
// State changing functions
|
|
243
|
-
const clearAllState = () => {
|
|
255
|
+
const clearAllState = (resetStateStack = true) => {
|
|
244
256
|
setActiveQuery('');
|
|
245
|
-
|
|
246
|
-
|
|
257
|
+
setQueryOutOfSync(false);
|
|
258
|
+
handleMultiStateChange({
|
|
259
|
+
state: EMPTY_REPORT_BUILDER_STATE,
|
|
260
|
+
fetchData: false,
|
|
261
|
+
updateStateStack: true,
|
|
262
|
+
});
|
|
263
|
+
if (resetStateStack) {
|
|
264
|
+
setStateStack([]);
|
|
265
|
+
setPoppedStateStack([]);
|
|
266
|
+
}
|
|
247
267
|
setFilteredUniqueValues(null);
|
|
248
268
|
setUnfilteredUniqueValues({});
|
|
249
269
|
setColumnUniqueValues({});
|
|
@@ -286,54 +306,99 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
286
306
|
...prevStack,
|
|
287
307
|
{ ...reportBuilderState, tables: newTables },
|
|
288
308
|
]);
|
|
309
|
+
setPoppedStateStack([]);
|
|
289
310
|
}
|
|
290
311
|
};
|
|
291
|
-
const handleColumnsChange = (newColumns, fetchData, updateStateStack = true) => {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
if (
|
|
300
|
-
|
|
312
|
+
const handleColumnsChange = (newColumns, fetchData, updateStateStack = true, bypassConfirmation = false) => {
|
|
313
|
+
const validReportBuilderState = bypassConfirmation
|
|
314
|
+
? { ...reportBuilderState, columns: newColumns }
|
|
315
|
+
: validatedReportBuilderState({
|
|
316
|
+
...reportBuilderState,
|
|
317
|
+
columns: newColumns,
|
|
318
|
+
}, foreignKeyMap);
|
|
319
|
+
if (validReportBuilderState.tables.length === 0 && !bypassConfirmation) {
|
|
320
|
+
if (!confirm('Removing all columns will clear all state. Are you sure you want to continue?')) {
|
|
321
|
+
return;
|
|
301
322
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
if (agg.valueField2) {
|
|
308
|
-
referencedColumns.push(agg.valueField2);
|
|
309
|
-
}
|
|
323
|
+
else {
|
|
324
|
+
handleMultiStateChange({
|
|
325
|
+
state: EMPTY_REPORT_BUILDER_STATE,
|
|
326
|
+
fetchData: false,
|
|
327
|
+
updateStateStack: true,
|
|
310
328
|
});
|
|
329
|
+
return;
|
|
311
330
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
331
|
+
}
|
|
332
|
+
const tablesAffected = tables.length - validReportBuilderState.tables.length >= 2;
|
|
333
|
+
const filtersAffected = validReportBuilderState.filterStack.length !== filterStack.length;
|
|
334
|
+
const deletedTables = tables
|
|
335
|
+
.filter((table) => {
|
|
336
|
+
return !validReportBuilderState.tables.some((t) => t.name === table.name);
|
|
337
|
+
})
|
|
338
|
+
.map((table) => table.name);
|
|
339
|
+
const deletedFilters = filterStack
|
|
340
|
+
.filter((filter) => filter.value)
|
|
341
|
+
.filter((filter) => {
|
|
342
|
+
return deletedTables.some((table) => table === filter.value.table);
|
|
343
|
+
})
|
|
344
|
+
.map((filter) => filterSentence(filter.value));
|
|
345
|
+
if (tablesAffected && filtersAffected) {
|
|
346
|
+
if (!confirm(`Removing this column will remove the following table${deletedTables.length > 1 ? 's' : ''}:
|
|
347
|
+
${deletedTables.join(', ')}.
|
|
348
|
+
It will also remove the following filter${deletedFilters.length > 1 ? 's' : ''}:
|
|
349
|
+
${deletedFilters.join(', ')}.
|
|
350
|
+
Are you sure you want to continue?
|
|
351
|
+
`
|
|
352
|
+
.replace(/\s+/g, ' ')
|
|
353
|
+
.trim())) {
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
else if (tablesAffected) {
|
|
358
|
+
if (!confirm(`Removing this column will remove the following table${deletedTables.length > 1 ? 's' : ''}:
|
|
359
|
+
${deletedTables.join(', ')}.
|
|
360
|
+
Are you sure you want to continue?
|
|
361
|
+
`
|
|
362
|
+
.replace(/\s+/g, ' ')
|
|
363
|
+
.trim())) {
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
else if (filtersAffected) {
|
|
368
|
+
if (!confirm(`Removing this column will remove the following filter${deletedFilters.length > 1 ? 's' : ''}:
|
|
369
|
+
${deletedFilters.join(', ')}.
|
|
370
|
+
Are you sure you want to continue?
|
|
371
|
+
`
|
|
372
|
+
.replace(/\s+/g, ' ')
|
|
373
|
+
.trim())) {
|
|
374
|
+
return;
|
|
322
375
|
}
|
|
323
376
|
}
|
|
324
|
-
|
|
377
|
+
if (validReportBuilderState.tables.length !== tables.length) {
|
|
378
|
+
handleTablesChange(validReportBuilderState.tables, false);
|
|
379
|
+
fetchData = true;
|
|
380
|
+
}
|
|
381
|
+
if (validReportBuilderState.filterStack.length !== filterStack.length) {
|
|
382
|
+
handleFilterStackChange(validReportBuilderState.filterStack, false, false);
|
|
383
|
+
fetchData = true;
|
|
384
|
+
}
|
|
385
|
+
if (validReportBuilderState.sort.length !== sort.length) {
|
|
386
|
+
handleSortChange(validReportBuilderState.sort, false, false);
|
|
387
|
+
fetchData = true;
|
|
388
|
+
}
|
|
389
|
+
if (pivot && !validReportBuilderState.pivot) {
|
|
390
|
+
handlePivotChange(validReportBuilderState.pivot, false, false);
|
|
391
|
+
}
|
|
392
|
+
setColumns(validReportBuilderState.columns);
|
|
325
393
|
if (updateStateStack) {
|
|
326
|
-
setStateStack((prevStack) => [
|
|
327
|
-
|
|
328
|
-
{ ...reportBuilderState, columns: newColumns },
|
|
329
|
-
]);
|
|
394
|
+
setStateStack((prevStack) => [...prevStack, validReportBuilderState]);
|
|
395
|
+
setPoppedStateStack([]);
|
|
330
396
|
}
|
|
331
397
|
if (fetchData) {
|
|
332
|
-
fetchDataFromReportBuilderState(
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
});
|
|
398
|
+
fetchDataFromReportBuilderState(validReportBuilderState);
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
setQueryOutOfSync(true);
|
|
337
402
|
}
|
|
338
403
|
};
|
|
339
404
|
const handleFilterInsertion = (newFilter) => {
|
|
@@ -367,6 +432,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
367
432
|
...prevStack,
|
|
368
433
|
{ ...reportBuilderState, filterStack: newFilterStack },
|
|
369
434
|
]);
|
|
435
|
+
setPoppedStateStack([]);
|
|
370
436
|
}
|
|
371
437
|
if (fetchData) {
|
|
372
438
|
fetchDataFromReportBuilderState({
|
|
@@ -403,6 +469,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
403
469
|
limit: resetSortAndLimit ? null : limit,
|
|
404
470
|
},
|
|
405
471
|
]);
|
|
472
|
+
setPoppedStateStack([]);
|
|
406
473
|
}
|
|
407
474
|
if (fetchData) {
|
|
408
475
|
fetchDataFromReportBuilderState({
|
|
@@ -458,6 +525,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
458
525
|
...prevStack,
|
|
459
526
|
{ ...reportBuilderState, sort: newSort },
|
|
460
527
|
]);
|
|
528
|
+
setPoppedStateStack([]);
|
|
461
529
|
}
|
|
462
530
|
if (fetchData) {
|
|
463
531
|
fetchDataFromReportBuilderState({
|
|
@@ -473,6 +541,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
473
541
|
...prevStack,
|
|
474
542
|
{ ...reportBuilderState, limit: newLimit },
|
|
475
543
|
]);
|
|
544
|
+
setPoppedStateStack([]);
|
|
476
545
|
}
|
|
477
546
|
if (fetchData) {
|
|
478
547
|
fetchDataFromReportBuilderState({
|
|
@@ -481,12 +550,12 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
481
550
|
});
|
|
482
551
|
}
|
|
483
552
|
};
|
|
484
|
-
const handleMultiStateChange = (state, fetchData, updateStateStack = true) => {
|
|
553
|
+
const handleMultiStateChange = ({ state, fetchData, updateStateStack = true, report, }) => {
|
|
485
554
|
if (state.tables !== undefined) {
|
|
486
555
|
handleTablesChange(state.tables, false);
|
|
487
556
|
}
|
|
488
557
|
if (state.columns !== undefined) {
|
|
489
|
-
handleColumnsChange(state.columns, false, false);
|
|
558
|
+
handleColumnsChange(state.columns, false, false, true);
|
|
490
559
|
}
|
|
491
560
|
if (state.filterStack !== undefined) {
|
|
492
561
|
handleFilterStackChange(state.filterStack, false, false);
|
|
@@ -505,9 +574,10 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
505
574
|
...prevStack,
|
|
506
575
|
{ ...reportBuilderState, ...state },
|
|
507
576
|
]);
|
|
577
|
+
setPoppedStateStack([]);
|
|
508
578
|
}
|
|
509
579
|
if (fetchData) {
|
|
510
|
-
fetchDataFromReportBuilderState({ ...reportBuilderState, ...state }, !!state.filterStack, !!state.tables);
|
|
580
|
+
fetchDataFromReportBuilderState({ ...reportBuilderState, ...state }, !!state.filterStack, !!state.tables, report);
|
|
511
581
|
}
|
|
512
582
|
};
|
|
513
583
|
const handleUndo = () => {
|
|
@@ -515,10 +585,33 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
515
585
|
return;
|
|
516
586
|
}
|
|
517
587
|
const previousState = stateStack[stateStack.length - 2];
|
|
588
|
+
setPoppedStateStack((prevStack) => [
|
|
589
|
+
...prevStack,
|
|
590
|
+
stateStack[stateStack.length - 1],
|
|
591
|
+
]);
|
|
518
592
|
setStateStack((prevStack) => prevStack.slice(0, -1));
|
|
519
|
-
|
|
593
|
+
// Only fetch data if the previous state has columns
|
|
594
|
+
handleMultiStateChange({
|
|
595
|
+
state: previousState,
|
|
596
|
+
fetchData: previousState.columns.length > 0,
|
|
597
|
+
updateStateStack: false,
|
|
598
|
+
});
|
|
599
|
+
};
|
|
600
|
+
const handleRedo = () => {
|
|
601
|
+
if (poppedStateStack.length === 0) {
|
|
602
|
+
return;
|
|
603
|
+
}
|
|
604
|
+
const lastState = poppedStateStack[poppedStateStack.length - 1];
|
|
605
|
+
setStateStack((prevStack) => [...prevStack, lastState]);
|
|
606
|
+
setPoppedStateStack((prevStack) => prevStack.slice(0, -1));
|
|
607
|
+
// Only fetch data if the last state has columns
|
|
608
|
+
handleMultiStateChange({
|
|
609
|
+
state: lastState,
|
|
610
|
+
fetchData: lastState.columns.length > 0,
|
|
611
|
+
updateStateStack: false,
|
|
612
|
+
});
|
|
520
613
|
};
|
|
521
|
-
const fetchDataFromReportBuilderState = (state, filtersChanged, tablesChanged) => {
|
|
614
|
+
const fetchDataFromReportBuilderState = (state, filtersChanged, tablesChanged, report) => {
|
|
522
615
|
if (!client) {
|
|
523
616
|
return;
|
|
524
617
|
}
|
|
@@ -526,11 +619,12 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
526
619
|
fetchReportFromASTHelper({
|
|
527
620
|
ast,
|
|
528
621
|
pivot: state.pivot,
|
|
622
|
+
previousReport: report,
|
|
529
623
|
requiresNewFilteredUniqueValues: filtersChanged,
|
|
530
624
|
requiresNewUnfilteredUniqueValues: tablesChanged,
|
|
531
625
|
});
|
|
532
626
|
};
|
|
533
|
-
const fetchReportFromASTHelper = async ({ ast, pivot, previousReport, requiresNewFilteredUniqueValues = false, requiresNewUnfilteredUniqueValues = false, }) => {
|
|
627
|
+
const fetchReportFromASTHelper = async ({ ast, pivot, previousReport = tempReport, requiresNewFilteredUniqueValues = false, requiresNewUnfilteredUniqueValues = false, }) => {
|
|
534
628
|
let reportBuilderInfo = undefined;
|
|
535
629
|
setErrorMessage('');
|
|
536
630
|
const schema = filteredSchema;
|
|
@@ -592,6 +686,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
592
686
|
pagination: REPORT_BUILDER_PAGINATION,
|
|
593
687
|
});
|
|
594
688
|
setActiveQuery(reportBuilderInfo.query);
|
|
689
|
+
setQueryOutOfSync(false);
|
|
595
690
|
// table data
|
|
596
691
|
fetchRowCountFromAST(ast, ast.where);
|
|
597
692
|
setReportRows(reportBuilderInfo.rows);
|
|
@@ -734,7 +829,10 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
734
829
|
}
|
|
735
830
|
setAskAILoading(false);
|
|
736
831
|
const newState = astToReportBuilderState(astInfo.ast, client.databaseType || 'postgresql', filteredSchema);
|
|
737
|
-
handleMultiStateChange({
|
|
832
|
+
handleMultiStateChange({
|
|
833
|
+
state: { ...newState, pivot: astInfo.pivot },
|
|
834
|
+
fetchData: true,
|
|
835
|
+
});
|
|
738
836
|
};
|
|
739
837
|
const fetchGlobalUniqueValues = async (columns, tables) => {
|
|
740
838
|
if (!client) {
|
|
@@ -753,6 +851,15 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
753
851
|
setUnfilteredUniqueValues(uniqueStrings);
|
|
754
852
|
setUnfilteredUniqueValuesIsLoading(false);
|
|
755
853
|
};
|
|
854
|
+
const fetchQueryFromReportBuilderState = async (state) => {
|
|
855
|
+
if (!client) {
|
|
856
|
+
return '';
|
|
857
|
+
}
|
|
858
|
+
const ast = reportBuilderStateToAst(state, client.databaseType?.toLowerCase() || 'postgresql');
|
|
859
|
+
const query = await fetchSqlQuery(ast, client);
|
|
860
|
+
setActiveQuery(query.query);
|
|
861
|
+
return query.query;
|
|
862
|
+
};
|
|
756
863
|
const resetProcessing = () => {
|
|
757
864
|
setCurrentProcessing({ page: REPORT_BUILDER_PAGINATION });
|
|
758
865
|
setPreviousPage(0);
|
|
@@ -943,9 +1050,13 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
943
1050
|
const initialState = astToReportBuilderState(newAst, client.databaseType || 'postgresql', filteredSchema);
|
|
944
1051
|
setTempReport(report);
|
|
945
1052
|
handleMultiStateChange({
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
1053
|
+
state: {
|
|
1054
|
+
...initialState,
|
|
1055
|
+
pivot: newPivot ?? null,
|
|
1056
|
+
},
|
|
1057
|
+
fetchData: true,
|
|
1058
|
+
report,
|
|
1059
|
+
});
|
|
949
1060
|
}
|
|
950
1061
|
catch (err) {
|
|
951
1062
|
console.error(err);
|
|
@@ -963,13 +1074,16 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
963
1074
|
})?.columns ?? [];
|
|
964
1075
|
if (tableColumns.length > 0) {
|
|
965
1076
|
handleMultiStateChange({
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
1077
|
+
state: {
|
|
1078
|
+
...EMPTY_REPORT_BUILDER_STATE,
|
|
1079
|
+
tables: [{ name: initialTableName }],
|
|
1080
|
+
columns: tableColumns.map((col) => ({
|
|
1081
|
+
field: col.field,
|
|
1082
|
+
table: initialTableName,
|
|
1083
|
+
})),
|
|
1084
|
+
},
|
|
1085
|
+
fetchData: true,
|
|
1086
|
+
});
|
|
973
1087
|
}
|
|
974
1088
|
}
|
|
975
1089
|
}, [filteredSchema, initialTableName]);
|
|
@@ -997,16 +1111,17 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
997
1111
|
setOpenPopover(null);
|
|
998
1112
|
}, 100);
|
|
999
1113
|
}
|
|
1000
|
-
}, title: "Select columns", children: _jsx(
|
|
1114
|
+
}, title: "Select columns", children: _jsx(AddColumnModal, { onSave: (tables, columns) => {
|
|
1001
1115
|
handleMultiStateChange({
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1116
|
+
state: {
|
|
1117
|
+
...EMPTY_REPORT_BUILDER_STATE,
|
|
1118
|
+
tables,
|
|
1119
|
+
columns,
|
|
1120
|
+
},
|
|
1121
|
+
fetchData: true,
|
|
1122
|
+
});
|
|
1006
1123
|
setOpenPopover(null);
|
|
1007
|
-
},
|
|
1008
|
-
// selectedTables={tables} // Bring back after select table join UI
|
|
1009
|
-
selectedColumns: columns, schema: filteredSchema, schemaLoading: schemaData.isSchemaLoading, TextInputComponent: TextInputComponent, SelectColumn: SelectColumnComponent, SecondaryButton: SecondaryButtonComponent, Button: ButtonComponent, ColumnSearchEmptyState: ColumnSearchEmptyState, LoadingComponent: LoadingComponent }) })] }), _jsxs("div", { style: { width: '100%' }, children: [_jsx(SidebarHeadingComponent, { label: "Filters" }), filterStack.length > 0 && (_jsx("div", { style: {
|
|
1124
|
+
}, selectedTables: tables, selectedColumns: columns, schema: filteredSchema, foreignKeyMap: foreignKeyMap, schemaLoading: schemaData.isSchemaLoading, TextInputComponent: TextInputComponent, SelectColumn: SelectColumnComponent, SecondaryButton: SecondaryButtonComponent, Button: ButtonComponent, ColumnSearchEmptyState: ColumnSearchEmptyState, LoadingComponent: LoadingComponent }) })] }), _jsxs("div", { style: { width: '100%' }, children: [_jsx(SidebarHeadingComponent, { label: "Filters" }), filterStack.length > 0 && (_jsx("div", { style: {
|
|
1010
1125
|
display: 'flex',
|
|
1011
1126
|
flexDirection: 'column',
|
|
1012
1127
|
gap: 8,
|
|
@@ -1128,7 +1243,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
1128
1243
|
if (tables.length <= 1) {
|
|
1129
1244
|
fetchAstFromPromptHelper();
|
|
1130
1245
|
}
|
|
1131
|
-
}, isLoading: askAILoading && columns.length === 0, label: 'Ask AI' }) }), !reportId && (_jsx(SecondaryButtonComponent, { label: 'New report', onClick: clearAllState, disabled: columns.length === 0 || loading }))] }) })), columns.length > 0 && (_jsx(TableComponent, { isLoading: tableLoading || (loading && errorMessage.length === 0), rows: formattedRows, rowCount: pivot ? pivotData?.rowCount : numberOfRows, rowCountIsLoading: rowCountIsLoading, rowsPerPage: 20, columns: pivot
|
|
1246
|
+
}, isLoading: askAILoading && columns.length === 0, label: 'Ask AI' }) }), !reportId && (_jsx(SecondaryButtonComponent, { label: 'New report', onClick: () => clearAllState(false), disabled: columns.length === 0 || loading }))] }) })), columns.length > 0 && (_jsx(TableComponent, { isLoading: tableLoading || (loading && errorMessage.length === 0), rows: formattedRows, rowCount: pivot ? pivotData?.rowCount : numberOfRows, rowCountIsLoading: rowCountIsLoading, rowsPerPage: 20, columns: pivot
|
|
1132
1247
|
? pivotData?.columns || []
|
|
1133
1248
|
: reportColumnsToStateColumns.map((col) => {
|
|
1134
1249
|
return {
|
|
@@ -1155,7 +1270,12 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
1155
1270
|
alignItems: 'center',
|
|
1156
1271
|
}, children: [_jsx(ErrorMessageComponent, { errorMessage: errorMessage || pivotError }), _jsx(SecondaryButtonComponent, { onClick: () => {
|
|
1157
1272
|
fetchAstFromPromptHelper();
|
|
1158
|
-
}, label: 'Retry' }), _jsx(SecondaryButtonComponent, { onClick: clearAllState, label: 'Reset' })] })) : (_jsx("div", { style: { width: '100%' } })),
|
|
1273
|
+
}, label: 'Retry' }), _jsx(SecondaryButtonComponent, { onClick: () => clearAllState(false), label: 'Reset' })] })) : (_jsx("div", { style: { width: '100%' } })), stateStack.length > 0 && (_jsx(SecondaryButtonComponent, { onClick: handleUndo, label: "", icon: _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: _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 && (_jsx(SecondaryButtonComponent, { onClick: handleRedo, label: "", icon: _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: _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 && (_jsxs(_Fragment, { children: [onDiscardChanges && (_jsx(SecondaryButtonComponent, { onClick: onDiscardChanges, label: "Discard changes" })), !hideCopySQL && (_jsx(SecondaryButtonComponent, { label: isCopying ? 'Copied' : 'Copy SQL', onClick: () => copySQLToClipboard() })), !isAdminEnabled ? null : (_jsx(SecondaryButtonComponent, { onClick: async () => {
|
|
1274
|
+
let tempReportQuery = activeQuery;
|
|
1275
|
+
if (queryOutOfSync) {
|
|
1276
|
+
tempReportQuery =
|
|
1277
|
+
await fetchQueryFromReportBuilderState(reportBuilderState);
|
|
1278
|
+
}
|
|
1159
1279
|
const tempReportColumns = columns
|
|
1160
1280
|
.map((column) => {
|
|
1161
1281
|
return reportColumnsToStateColumns.find((col) => col.field === (column.alias || column.field));
|
|
@@ -1193,8 +1313,8 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
1193
1313
|
})
|
|
1194
1314
|
: tempReportColumns,
|
|
1195
1315
|
queryString: isSelectStar
|
|
1196
|
-
? convertQueryToSelectStar(
|
|
1197
|
-
:
|
|
1316
|
+
? convertQueryToSelectStar(tempReportQuery)
|
|
1317
|
+
: tempReportQuery,
|
|
1198
1318
|
includeCustomFields: isSelectStar,
|
|
1199
1319
|
rows: reportRows,
|
|
1200
1320
|
pivotRows: pivotData?.rows,
|
|
@@ -1210,6 +1330,11 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
1210
1330
|
tableLoading ||
|
|
1211
1331
|
loading ||
|
|
1212
1332
|
!!unresolvedReportMessage, label: 'Save query', tooltipText: unresolvedReportMessage })), _jsx(ButtonComponent, { onClick: async () => {
|
|
1333
|
+
let tempReportQuery = activeQuery;
|
|
1334
|
+
if (queryOutOfSync) {
|
|
1335
|
+
tempReportQuery =
|
|
1336
|
+
await fetchQueryFromReportBuilderState(reportBuilderState);
|
|
1337
|
+
}
|
|
1213
1338
|
onSaveChanges && onSaveChanges();
|
|
1214
1339
|
const tempReportColumns = columns
|
|
1215
1340
|
.map((column) => {
|
|
@@ -1248,8 +1373,8 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
|
|
|
1248
1373
|
})
|
|
1249
1374
|
: tempReportColumns,
|
|
1250
1375
|
queryString: isSelectStar
|
|
1251
|
-
? convertQueryToSelectStar(
|
|
1252
|
-
:
|
|
1376
|
+
? convertQueryToSelectStar(tempReportQuery)
|
|
1377
|
+
: tempReportQuery,
|
|
1253
1378
|
includeCustomFields: isSelectStar,
|
|
1254
1379
|
rows: reportRows,
|
|
1255
1380
|
pivotRows: pivotData?.rows,
|
package/dist/esm/Table.d.ts.map
CHANGED
|
@@ -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/esm/Table.js
CHANGED
|
@@ -52,8 +52,8 @@ const Table = ({ TableComponent = QuillTableComponent, ...props }) => {
|
|
|
52
52
|
reportFilters } = useContext(ReportFiltersContext);
|
|
53
53
|
const specificReportFilters = useMemo(() => {
|
|
54
54
|
return Object.values(reportFilters[props.reportId ?? ''] ??
|
|
55
|
-
(dashboard[
|
|
56
|
-
? dashboardFilters[
|
|
55
|
+
(dashboard[report?.dashboardName ?? '']?.[report?.id ?? '']
|
|
56
|
+
? dashboardFilters[report.dashboardName]
|
|
57
57
|
: null) ??
|
|
58
58
|
{}).map((f) => f.filter);
|
|
59
59
|
}, [reportFilters[props.reportId ?? '']]);
|
|
@@ -72,6 +72,6 @@ const Table = ({ TableComponent = QuillTableComponent, ...props }) => {
|
|
|
72
72
|
}
|
|
73
73
|
return (_jsx(DataLoader, { item: report, filters: specificReportFilters, userFilters: userFilters?.map(convertCustomFilter), additionalProcessing: {
|
|
74
74
|
page: DEFAULT_PAGINATION,
|
|
75
|
-
},
|
|
75
|
+
}, children: ({ isLoading, error, onPageChange, onSortChange, data, rowCount, rowCountIsLoading, }) => _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 }) }));
|
|
76
76
|
};
|
|
77
77
|
export 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,
|
|
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"}
|
|
@@ -29,7 +29,6 @@ export default function BarChart({ colors, colorMap, yAxisFields, data, containe
|
|
|
29
29
|
display: 'flex',
|
|
30
30
|
flex: '1 0 auto',
|
|
31
31
|
height: '100%',
|
|
32
|
-
margin: 'auto',
|
|
33
32
|
justifyContent: 'center',
|
|
34
33
|
alignItems: 'center',
|
|
35
34
|
fontSize: 13,
|
|
@@ -40,7 +39,7 @@ export default function BarChart({ colors, colorMap, yAxisFields, data, containe
|
|
|
40
39
|
return (_jsx("div", { style: {
|
|
41
40
|
boxSizing: 'content-box',
|
|
42
41
|
...containerStyle,
|
|
43
|
-
}, className: className, children: _jsx(ResponsiveContainer, { width: "100%", height: "100%", children: _jsxs(ReChartsBarChart, { data: data ?? [], layout: 'horizontal', onClick: (event) => onClickChartElement
|
|
42
|
+
}, className: className, children: _jsx(ResponsiveContainer, { width: "100%", height: "100%", minWidth: 0, minHeight: 0, children: _jsxs(ReChartsBarChart, { data: data ?? [], layout: 'horizontal', onClick: (event) => onClickChartElement
|
|
44
43
|
? onClickChartElement(event?.activePayload
|
|
45
44
|
? event.activePayload[0].payload
|
|
46
45
|
: undefined)
|
|
@@ -102,7 +102,7 @@ function D3Gauge({ percentage, containerStyle, xAxisFormat, colors, isAnimationA
|
|
|
102
102
|
const gaugeHeight = Math.min(ch, cw / 1.2);
|
|
103
103
|
const gaugeWidth = gaugeHeight * 1.2;
|
|
104
104
|
const radius = gaugeHeight / 2;
|
|
105
|
-
const innerRadius = radius * 0.
|
|
105
|
+
const innerRadius = radius * 0.6;
|
|
106
106
|
// const arcWidth = radius - innerRadius;
|
|
107
107
|
// Vertical offset to visually center the 270° arc.
|
|
108
108
|
const verticalOffset = gaugeHeight * 0.05;
|
|
@@ -72,7 +72,7 @@ export default function LineChart({ colors, colorMap = {}, yAxisFields, data, co
|
|
|
72
72
|
return sum + 1;
|
|
73
73
|
return sum;
|
|
74
74
|
}, 0);
|
|
75
|
-
return (_jsx("div", { style: { ...containerStyle }, className: className, children: _jsx(ResponsiveContainer, { width: "100%", height: '100%', children: _jsxs(ComposedChart, { data: formattedData, onClick: (event) => onClickChartElement(event?.activePayload ? event.activePayload[0].payload : undefined), children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: !hideHorizontalCartesianGrid, vertical: !hideVerticalCartesianGrid, stroke: cartesianGridLineColor ?? '#e5e7eb', strokeDasharray: cartesianGridLineStyle === 'dashed' ? '5 5' : undefined })), _jsx(XAxis, { dataKey: xAxisField, hide: hideXAxis, tick: { transform: 'translate(0, 6)' }, style: {
|
|
75
|
+
return (_jsx("div", { style: { ...containerStyle }, className: className, children: _jsx(ResponsiveContainer, { width: "100%", height: '100%', minWidth: 0, minHeight: 0, children: _jsxs(ComposedChart, { data: formattedData, onClick: (event) => onClickChartElement(event?.activePayload ? event.activePayload[0].payload : undefined), children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: !hideHorizontalCartesianGrid, vertical: !hideVerticalCartesianGrid, stroke: cartesianGridLineColor ?? '#e5e7eb', strokeDasharray: cartesianGridLineStyle === 'dashed' ? '5 5' : undefined })), _jsx(XAxis, { dataKey: xAxisField, hide: hideXAxis, tick: { transform: 'translate(0, 6)' }, style: {
|
|
76
76
|
fontSize: '12px',
|
|
77
77
|
fontFamily: theme?.chartLabelFontFamily ||
|
|
78
78
|
theme?.fontFamily ||
|
|
@@ -366,7 +366,7 @@ export function USMap({ theme, data, xAxisField, xAxisFormat, yAxisFields, onCli
|
|
|
366
366
|
return (_jsxs("div", { ref: containerRef, className: className, style: {
|
|
367
367
|
width: "100%",
|
|
368
368
|
height: "auto",
|
|
369
|
-
marginTop: '-5%',
|
|
369
|
+
marginTop: '-6.5%',
|
|
370
370
|
zIndex: 0,
|
|
371
371
|
...containerStyle,
|
|
372
372
|
position: "relative",
|
|
@@ -191,7 +191,7 @@ const PieChartWrapper = React.forwardRef((props, ref) => {
|
|
|
191
191
|
justifyContent: 'center',
|
|
192
192
|
boxSizing: 'content-box',
|
|
193
193
|
...containerStyle,
|
|
194
|
-
}, ...other, children: _jsx(ResponsiveContainer, { width: "100%", height: "100%", children: _jsxs(PieChart, { children: [_jsx(Pie, { data: parseData(data, (colorMap[category] &&
|
|
194
|
+
}, ...other, children: _jsx(ResponsiveContainer, { width: "100%", height: "100%", minWidth: 0, minHeight: 0, children: _jsxs(PieChart, { children: [_jsx(Pie, { data: parseData(data, (colorMap[category] &&
|
|
195
195
|
colorMap[category]['primary'] &&
|
|
196
196
|
generateArrayFromColor(colorMap[category]['primary'], data.length)) ??
|
|
197
197
|
(colors.length >= data.length
|