@quillsql/react 2.13.40 → 2.13.41
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 +5 -1
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +51 -28
- package/dist/cjs/ChartBuilder.d.ts +13 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +342 -138
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +11 -1
- package/dist/cjs/Context.d.ts +16 -4
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +57 -38
- package/dist/cjs/Dashboard.d.ts +6 -3
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +70 -28
- package/dist/cjs/QuillProvider.d.ts +4 -8
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.d.ts +1 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +117 -45
- package/dist/cjs/SQLEditor.d.ts +7 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +53 -9
- package/dist/cjs/Table.d.ts +21 -1
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +30 -192
- package/dist/cjs/components/Chart/BarChart.d.ts +5 -1
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +4 -3
- package/dist/cjs/components/Chart/CustomReferenceLine.d.ts +2 -0
- package/dist/cjs/components/Chart/CustomReferenceLine.d.ts.map +1 -0
- package/dist/cjs/components/Chart/CustomReferenceLine.js +26 -0
- package/dist/cjs/components/Chart/GaugeChart.d.ts +11 -0
- package/dist/cjs/components/Chart/GaugeChart.d.ts.map +1 -0
- package/dist/cjs/components/Chart/GaugeChart.js +198 -0
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/InternalChart.js +14 -11
- package/dist/cjs/components/Chart/LineChart.d.ts +5 -1
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +4 -3
- package/dist/cjs/components/Chart/MapChart.d.ts +36 -0
- package/dist/cjs/components/Chart/MapChart.d.ts.map +1 -0
- package/dist/cjs/components/Chart/MapChart.js +548 -0
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +114 -42
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +57 -54
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +5 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +5 -4
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +12 -11
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +2 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +13 -13
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterStack.js +4 -4
- package/dist/cjs/components/ReportBuilder/convert.d.ts +2 -0
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +28 -7
- package/dist/cjs/components/ReportBuilder/util.d.ts +1 -1
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +15 -2
- package/dist/cjs/components/UiComponents.d.ts +4 -1
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +31 -5
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +11 -9
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +18 -4
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +16 -3
- package/dist/cjs/hooks/useReport.d.ts.map +1 -1
- package/dist/cjs/hooks/useReport.js +1 -7
- package/dist/cjs/hooks/useVirtualTables.d.ts +6 -2
- package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/cjs/hooks/useVirtualTables.js +5 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +6 -7
- package/dist/cjs/models/Filter.d.ts +20 -13
- package/dist/cjs/models/Filter.d.ts.map +1 -1
- package/dist/cjs/models/Filter.js +161 -87
- package/dist/cjs/models/Report.d.ts +12 -1
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/models/Schema.d.ts +12 -1
- package/dist/cjs/models/Schema.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +22 -22
- package/dist/cjs/utils/astProcessing.d.ts +2 -2
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +25 -6
- package/dist/cjs/utils/axisFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/axisFormatter.js +25 -0
- package/dist/cjs/utils/color.d.ts +159 -0
- package/dist/cjs/utils/color.d.ts.map +1 -1
- package/dist/cjs/utils/color.js +14 -5
- package/dist/cjs/utils/columnProcessing.js +3 -3
- package/dist/cjs/utils/constants.d.ts +1 -0
- package/dist/cjs/utils/constants.d.ts.map +1 -1
- package/dist/cjs/utils/constants.js +2 -1
- package/dist/cjs/utils/dashboard.d.ts +13 -3
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +73 -16
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +3 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +9 -9
- package/dist/cjs/utils/getDomain.d.ts +4 -1
- package/dist/cjs/utils/getDomain.d.ts.map +1 -1
- package/dist/cjs/utils/getDomain.js +11 -1
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +5 -5
- package/dist/cjs/utils/queryConstructor.d.ts +1 -1
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +71 -43
- package/dist/cjs/utils/report.d.ts +23 -5
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +28 -8
- package/dist/cjs/utils/schema.d.ts +26 -3
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +75 -43
- package/dist/cjs/utils/tableProcessing.d.ts +10 -3
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +4 -6
- package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/textProcessing.js +0 -1
- package/dist/esm/Chart.d.ts +5 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +52 -29
- package/dist/esm/ChartBuilder.d.ts +13 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +347 -143
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +11 -1
- package/dist/esm/Context.d.ts +16 -4
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +59 -40
- package/dist/esm/Dashboard.d.ts +6 -3
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +71 -29
- package/dist/esm/QuillProvider.d.ts +4 -8
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.d.ts +1 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +119 -47
- package/dist/esm/SQLEditor.d.ts +7 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +54 -10
- package/dist/esm/Table.d.ts +21 -1
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +34 -196
- package/dist/esm/components/Chart/BarChart.d.ts +5 -1
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +5 -4
- package/dist/esm/components/Chart/CustomReferenceLine.d.ts +2 -0
- package/dist/esm/components/Chart/CustomReferenceLine.d.ts.map +1 -0
- package/dist/esm/components/Chart/CustomReferenceLine.js +23 -0
- package/dist/esm/components/Chart/GaugeChart.d.ts +11 -0
- package/dist/esm/components/Chart/GaugeChart.d.ts.map +1 -0
- package/dist/esm/components/Chart/GaugeChart.js +195 -0
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/InternalChart.js +14 -11
- package/dist/esm/components/Chart/LineChart.d.ts +5 -1
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +5 -4
- package/dist/esm/components/Chart/MapChart.d.ts +36 -0
- package/dist/esm/components/Chart/MapChart.d.ts.map +1 -0
- package/dist/esm/components/Chart/MapChart.js +541 -0
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +114 -42
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +57 -54
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +5 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +5 -4
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +12 -11
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.js +2 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +14 -14
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterStack.js +4 -4
- package/dist/esm/components/ReportBuilder/convert.d.ts +2 -0
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +26 -7
- package/dist/esm/components/ReportBuilder/util.d.ts +1 -1
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +15 -2
- package/dist/esm/components/UiComponents.d.ts +4 -1
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +29 -4
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +11 -9
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +19 -5
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +16 -3
- package/dist/esm/hooks/useReport.d.ts.map +1 -1
- package/dist/esm/hooks/useReport.js +1 -7
- package/dist/esm/hooks/useVirtualTables.d.ts +6 -2
- package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/esm/hooks/useVirtualTables.js +6 -3
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +6 -7
- package/dist/esm/models/Filter.d.ts +20 -13
- package/dist/esm/models/Filter.d.ts.map +1 -1
- package/dist/esm/models/Filter.js +160 -86
- package/dist/esm/models/Report.d.ts +12 -1
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/models/Schema.d.ts +12 -1
- package/dist/esm/models/Schema.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +23 -23
- package/dist/esm/utils/astProcessing.d.ts +2 -2
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +25 -6
- package/dist/esm/utils/axisFormatter.d.ts.map +1 -1
- package/dist/esm/utils/axisFormatter.js +25 -0
- package/dist/esm/utils/color.d.ts +159 -0
- package/dist/esm/utils/color.d.ts.map +1 -1
- package/dist/esm/utils/color.js +8 -2
- package/dist/esm/utils/columnProcessing.js +3 -3
- package/dist/esm/utils/constants.d.ts +1 -0
- package/dist/esm/utils/constants.d.ts.map +1 -1
- package/dist/esm/utils/constants.js +1 -0
- package/dist/esm/utils/dashboard.d.ts +13 -3
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +73 -16
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +3 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +10 -10
- package/dist/esm/utils/getDomain.d.ts +4 -1
- package/dist/esm/utils/getDomain.d.ts.map +1 -1
- package/dist/esm/utils/getDomain.js +11 -1
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +5 -5
- package/dist/esm/utils/queryConstructor.d.ts +1 -1
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +71 -43
- package/dist/esm/utils/report.d.ts +23 -5
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +29 -9
- package/dist/esm/utils/schema.d.ts +26 -3
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +74 -43
- package/dist/esm/utils/tableProcessing.d.ts +10 -3
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +4 -6
- package/dist/esm/utils/textProcessing.d.ts.map +1 -1
- package/dist/esm/utils/textProcessing.js +0 -1
- package/package.json +8 -3
|
@@ -29,7 +29,16 @@ const constructReportFromItem = (item) => {
|
|
|
29
29
|
};
|
|
30
30
|
function filterValuesEquivalent(filters1, filters2) {
|
|
31
31
|
if (filters1.length !== filters2.length) {
|
|
32
|
-
return false
|
|
32
|
+
// Find the odd filters out and return false ONLY if they have a selected value
|
|
33
|
+
const filters1Labels = filters1.map((f) => f.label);
|
|
34
|
+
const filters2Labels = filters2.map((f) => f.label);
|
|
35
|
+
const oddFilters = filters1Labels.filter((label) => !filters2Labels.includes(label));
|
|
36
|
+
for (const filter of oddFilters) {
|
|
37
|
+
const filter1 = filters1.find((f) => f.label === filter);
|
|
38
|
+
if (filter1?.selectedValue) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
33
42
|
}
|
|
34
43
|
// The two filters arrays aren't necessarily in the same order
|
|
35
44
|
// we can build two dictionaries of [label, filter] and compare them
|
|
@@ -123,6 +132,9 @@ function tenantsEquivalent(tenants1, tenants2) {
|
|
|
123
132
|
}
|
|
124
133
|
return true;
|
|
125
134
|
}
|
|
135
|
+
function customFieldsEquivalent(customFields1, customFields2) {
|
|
136
|
+
return equal(customFields1, customFields2);
|
|
137
|
+
}
|
|
126
138
|
export default function DataLoader({ item, children, filters, userFilters, additionalProcessing: defaultAdditionalProcessing, reportMode = false, }) {
|
|
127
139
|
const [client] = useContext(ClientContext);
|
|
128
140
|
const [dashboard, dispatch] = useContext(DashboardContext);
|
|
@@ -153,9 +165,10 @@ export default function DataLoader({ item, children, filters, userFilters, addit
|
|
|
153
165
|
reportFilters,
|
|
154
166
|
dashboardFilters,
|
|
155
167
|
]);
|
|
156
|
-
const
|
|
157
|
-
const
|
|
158
|
-
const
|
|
168
|
+
const previousFilters = useRef(filters);
|
|
169
|
+
const previousUserFilters = useRef(userFilters);
|
|
170
|
+
const previousTenants = useRef(tenants);
|
|
171
|
+
const previousCustomFields = useRef(schemaData.customFields);
|
|
159
172
|
const [rowCountIsLoading, setRowCountIsLoading] = useState(false);
|
|
160
173
|
const rowsRequestId = useRef(0);
|
|
161
174
|
const rowsAbortController = useRef(null);
|
|
@@ -348,13 +361,22 @@ export default function DataLoader({ item, children, filters, userFilters, addit
|
|
|
348
361
|
setLoading(true);
|
|
349
362
|
const fetchRowsRequestId = rowsRequestId.current + 1;
|
|
350
363
|
rowsRequestId.current = fetchRowsRequestId;
|
|
351
|
-
previousUserFilters.current = userFilters
|
|
364
|
+
previousUserFilters.current = userFilters;
|
|
352
365
|
rowsAbortController.current?.abort();
|
|
353
366
|
rowsAbortController.current = new AbortController();
|
|
354
367
|
try {
|
|
355
368
|
if (reportMode) {
|
|
356
369
|
try {
|
|
357
|
-
await fetchIndividualReport(
|
|
370
|
+
await fetchIndividualReport({
|
|
371
|
+
reportId: item.id,
|
|
372
|
+
initiator: 'Chart',
|
|
373
|
+
fetchRows: true,
|
|
374
|
+
dashboardFilters: filters,
|
|
375
|
+
customFilters: userFilters,
|
|
376
|
+
additionalProcessing: processing,
|
|
377
|
+
reportAbortController: rowsAbortController.current,
|
|
378
|
+
customFields: schemaData.customFields,
|
|
379
|
+
});
|
|
358
380
|
rowsAbortController.current = null;
|
|
359
381
|
setError(undefined);
|
|
360
382
|
}
|
|
@@ -363,7 +385,19 @@ export default function DataLoader({ item, children, filters, userFilters, addit
|
|
|
363
385
|
}
|
|
364
386
|
}
|
|
365
387
|
else {
|
|
366
|
-
const { report: fetchedReport, error } = await fetchReport(
|
|
388
|
+
const { report: fetchedReport, error } = await fetchReport({
|
|
389
|
+
reportId: item.id,
|
|
390
|
+
client,
|
|
391
|
+
tenants,
|
|
392
|
+
flags,
|
|
393
|
+
useReportTask: true,
|
|
394
|
+
filters: filters.concat(userFilters ?? []),
|
|
395
|
+
additionalProcessing: processing,
|
|
396
|
+
customFields: schemaData.customFields,
|
|
397
|
+
rowsOnly: true,
|
|
398
|
+
rowCountOnly: false,
|
|
399
|
+
abortSignal: rowsAbortController.current.signal,
|
|
400
|
+
});
|
|
367
401
|
dispatch({
|
|
368
402
|
type: 'ADD_DASHBOARD_ITEM',
|
|
369
403
|
id: item.id,
|
|
@@ -398,23 +432,30 @@ export default function DataLoader({ item, children, filters, userFilters, addit
|
|
|
398
432
|
// TODO: this is getting ridiculous
|
|
399
433
|
// we should be fetching this data directly when mutating filters/tenants rather than using a magical effect
|
|
400
434
|
useEffect(() => {
|
|
401
|
-
if (
|
|
402
|
-
(
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
if (!rowsAbortController.current)
|
|
435
|
+
if (schemaData.isSchemaLoading ||
|
|
436
|
+
(filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
|
|
437
|
+
userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
|
|
438
|
+
tenantsEquivalent(previousTenants.current ?? [], tenants ?? []) &&
|
|
439
|
+
customFieldsEquivalent(previousCustomFields.current, schemaData.customFields) &&
|
|
440
|
+
((reportMode ? reports : dashboard)[item.id]?.rows?.length || rowsAbortController.current))) {
|
|
441
|
+
if (!rowsAbortController.current && !schemaData.isSchemaLoading)
|
|
408
442
|
setLoading(false);
|
|
409
|
-
previousFilters.current = filters;
|
|
410
443
|
return;
|
|
411
444
|
}
|
|
412
445
|
previousFilters.current = filters;
|
|
413
446
|
previousUserFilters.current = userFilters ?? [];
|
|
414
|
-
previousTenants.current = tenants
|
|
447
|
+
previousTenants.current = tenants;
|
|
448
|
+
previousCustomFields.current = schemaData.customFields;
|
|
415
449
|
setPreviousPage(0);
|
|
416
450
|
fetchReportHelper(additionalProcessing);
|
|
417
|
-
}, [
|
|
451
|
+
}, [
|
|
452
|
+
filters,
|
|
453
|
+
userFilters,
|
|
454
|
+
item.id,
|
|
455
|
+
tenants,
|
|
456
|
+
schemaData.customFields,
|
|
457
|
+
schemaData.isSchemaLoading,
|
|
458
|
+
]);
|
|
418
459
|
useEffect(() => {
|
|
419
460
|
const tempReport = (reportMode ? reports : dashboard)[item.id];
|
|
420
461
|
if (tempReport?.triggerReload) {
|
|
@@ -423,7 +464,7 @@ export default function DataLoader({ item, children, filters, userFilters, addit
|
|
|
423
464
|
else if (tempReport?.error) {
|
|
424
465
|
setError(tempReport.error);
|
|
425
466
|
}
|
|
426
|
-
}, [(reportMode ? reports : dashboard)[item.id]]);
|
|
467
|
+
}, [(reportMode ? reports : dashboard)[item.id]?.triggerReload, (reportMode ? reports : dashboard)[item.id]?.error]);
|
|
427
468
|
return (_jsx(_Fragment, { children: children({
|
|
428
469
|
isLoading: loading,
|
|
429
470
|
error,
|
|
@@ -451,10 +492,11 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
|
|
|
451
492
|
const [error, setError] = useState(undefined);
|
|
452
493
|
const [client] = useContext(ClientContext);
|
|
453
494
|
const [schemaData] = useContext(SchemaDataContext);
|
|
454
|
-
const previousFilters = useRef(
|
|
455
|
-
const previousUserFilters = useRef(
|
|
456
|
-
const previousDateBucket = useRef(
|
|
457
|
-
const previousTenants = useRef(
|
|
495
|
+
const previousFilters = useRef(filters);
|
|
496
|
+
const previousUserFilters = useRef(userFilters);
|
|
497
|
+
const previousDateBucket = useRef(dateBucket);
|
|
498
|
+
const previousTenants = useRef(tenants);
|
|
499
|
+
const previousCustomFields = useRef(schemaData.customFields);
|
|
458
500
|
const fetchReportAbortController = useRef(null);
|
|
459
501
|
const rowsRequestId = useRef(0);
|
|
460
502
|
const chartReport = useMemo(() => {
|
|
@@ -476,7 +518,7 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
|
|
|
476
518
|
}
|
|
477
519
|
const fetchRowsRequestId = rowsRequestId.current + 1;
|
|
478
520
|
rowsRequestId.current = fetchRowsRequestId;
|
|
479
|
-
previousUserFilters.current = userFilters
|
|
521
|
+
previousUserFilters.current = userFilters;
|
|
480
522
|
previousDateBucket.current = dateBucket;
|
|
481
523
|
setLoading(true);
|
|
482
524
|
fetchReportAbortController.current?.abort();
|
|
@@ -484,10 +526,20 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
|
|
|
484
526
|
try {
|
|
485
527
|
if (reportMode) {
|
|
486
528
|
try {
|
|
487
|
-
await fetchIndividualReport(
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
529
|
+
await fetchIndividualReport({
|
|
530
|
+
reportId: item.id,
|
|
531
|
+
initiator: 'Chart',
|
|
532
|
+
fetchRows: true,
|
|
533
|
+
dashboardFilters: filters,
|
|
534
|
+
customFilters: userFilters,
|
|
535
|
+
additionalProcessing: {
|
|
536
|
+
...additionalProcessing,
|
|
537
|
+
...{ page: DEFAULT_PAGINATION },
|
|
538
|
+
},
|
|
539
|
+
dateBucket,
|
|
540
|
+
reportAbortController: fetchReportAbortController.current,
|
|
541
|
+
customFields: schemaData.customFields,
|
|
542
|
+
});
|
|
491
543
|
setError(undefined);
|
|
492
544
|
}
|
|
493
545
|
catch (e) {
|
|
@@ -495,10 +547,21 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
|
|
|
495
547
|
}
|
|
496
548
|
}
|
|
497
549
|
else {
|
|
498
|
-
const { report, error } = await fetchReport(
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
550
|
+
const { report, error } = await fetchReport({
|
|
551
|
+
reportId: item.id,
|
|
552
|
+
client,
|
|
553
|
+
tenants,
|
|
554
|
+
flags,
|
|
555
|
+
useReportTask,
|
|
556
|
+
filters: filters.concat(userFilters ?? []),
|
|
557
|
+
additionalProcessing: {
|
|
558
|
+
...additionalProcessing,
|
|
559
|
+
...{ page: DEFAULT_PAGINATION },
|
|
560
|
+
},
|
|
561
|
+
dateBucket,
|
|
562
|
+
customFields: schemaData.customFields,
|
|
563
|
+
abortSignal: fetchReportAbortController.current.signal,
|
|
564
|
+
});
|
|
502
565
|
dispatch({
|
|
503
566
|
type: 'ADD_DASHBOARD_ITEM',
|
|
504
567
|
id: item.id,
|
|
@@ -529,23 +592,32 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
|
|
|
529
592
|
if (!filters) {
|
|
530
593
|
return;
|
|
531
594
|
}
|
|
532
|
-
if (
|
|
533
|
-
(
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
if (!fetchReportAbortController.current)
|
|
595
|
+
if (schemaData.isSchemaLoading ||
|
|
596
|
+
(filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
|
|
597
|
+
userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
|
|
598
|
+
tenantsEquivalent(tenants ?? [], previousTenants.current ?? []) &&
|
|
599
|
+
previousDateBucket.current === dateBucket &&
|
|
600
|
+
customFieldsEquivalent(previousCustomFields.current, schemaData.customFields) &&
|
|
601
|
+
((reportMode ? reports : dashboard)[item.id]?.rows?.length || fetchReportAbortController.current))) {
|
|
602
|
+
if (!fetchReportAbortController.current && !schemaData.isSchemaLoading)
|
|
540
603
|
setLoading(false);
|
|
541
604
|
return;
|
|
542
605
|
}
|
|
543
606
|
previousDateBucket.current = dateBucket;
|
|
544
607
|
previousUserFilters.current = userFilters ?? [];
|
|
545
|
-
previousTenants.current = tenants
|
|
608
|
+
previousTenants.current = tenants;
|
|
546
609
|
previousFilters.current = filters;
|
|
610
|
+
previousCustomFields.current = schemaData.customFields;
|
|
547
611
|
fetchReportHelper();
|
|
548
|
-
}, [
|
|
612
|
+
}, [
|
|
613
|
+
filters,
|
|
614
|
+
userFilters,
|
|
615
|
+
item.id,
|
|
616
|
+
dateBucket,
|
|
617
|
+
tenants,
|
|
618
|
+
schemaData.customFields,
|
|
619
|
+
schemaData.isSchemaLoading,
|
|
620
|
+
]);
|
|
549
621
|
useEffect(() => {
|
|
550
622
|
const tempReport = (reportMode ? reports : dashboard)[item.id];
|
|
551
623
|
if (tempReport && tempReport.triggerReload) {
|
|
@@ -554,7 +626,7 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
|
|
|
554
626
|
else if (tempReport?.error) {
|
|
555
627
|
setError(tempReport.error);
|
|
556
628
|
}
|
|
557
|
-
}, [(reportMode ? reports : dashboard)[item.id]]);
|
|
629
|
+
}, [(reportMode ? reports : dashboard)[item.id]?.triggerReload, (reportMode ? reports : dashboard)[item.id]?.error]);
|
|
558
630
|
return children({
|
|
559
631
|
isLoading: !chartReport || loading,
|
|
560
632
|
data: chartReport,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/MetricComponent.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"MetricComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/MetricComponent.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA4HhC"}
|
|
@@ -14,7 +14,7 @@ export default function QuillMetricComponent({ report, onClick, error, isLoading
|
|
|
14
14
|
cursor: !onClick ? 'default' : 'pointer',
|
|
15
15
|
boxSizing: 'content-box',
|
|
16
16
|
borderRadius: 8,
|
|
17
|
-
paddingBottom:
|
|
17
|
+
paddingBottom: 0,
|
|
18
18
|
width: '100%',
|
|
19
19
|
}, children: _jsx("div", { style: {
|
|
20
20
|
width: '100%',
|
|
@@ -70,58 +70,61 @@ export default function QuillMetricComponent({ report, onClick, error, isLoading
|
|
|
70
70
|
color: theme?.secondaryTextColor,
|
|
71
71
|
maxWidth: '100%',
|
|
72
72
|
width: '100%',
|
|
73
|
-
}, children: "No results" })) : (_jsx(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
}, children: "No results" })) : (_jsx(MetricDisplay, { dateFilter: dateFilter, primaryMetricLabel: primaryMetricLabel, comparisonLabel: comparisonLabel, theme: theme, children: children }))] }) }) }, report?.name));
|
|
74
|
+
}
|
|
75
|
+
const MetricDisplay = ({ children, dateFilter, primaryMetricLabel, comparisonLabel, theme, }) => {
|
|
76
|
+
return _jsx("div", { style: {
|
|
77
|
+
padding: 0,
|
|
78
|
+
height: '100%',
|
|
79
|
+
width: '100%',
|
|
80
|
+
boxSizing: 'content-box',
|
|
81
|
+
}, children: _jsxs("div", { style: {
|
|
82
|
+
fontFamily: theme?.fontFamily,
|
|
83
|
+
fontSize: 32,
|
|
84
|
+
color: theme?.primaryTextColor,
|
|
85
|
+
fontWeight: '600',
|
|
86
|
+
textOverflow: 'ellipsis',
|
|
87
|
+
margin: 0,
|
|
88
|
+
whiteSpace: 'nowrap',
|
|
89
|
+
boxSizing: 'content-box',
|
|
90
|
+
maxWidth: '100%',
|
|
91
|
+
textAlign: 'left',
|
|
92
|
+
overflow: 'hidden',
|
|
93
|
+
height: '100%',
|
|
94
|
+
display: 'flex',
|
|
95
|
+
width: '100%',
|
|
96
|
+
flexDirection: 'row',
|
|
97
|
+
}, children: [_jsxs("div", { style: {
|
|
98
|
+
display: 'flex',
|
|
99
|
+
gap: 4,
|
|
100
|
+
alignItems: 'baseline',
|
|
101
|
+
marginRight: 'auto',
|
|
102
|
+
}, children: [_jsx("span", { children: children }), dateFilter?.comparison && (_jsx("span", { style: {
|
|
103
|
+
fontSize: 13,
|
|
104
|
+
fontWeight: '500',
|
|
79
105
|
fontFamily: theme?.fontFamily,
|
|
80
|
-
fontSize: 32,
|
|
81
106
|
color: theme?.primaryTextColor,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
? `in ${primaryMetricLabel.toLowerCase()}`
|
|
107
|
-
: 'this period' }))] }), dateFilter?.comparison && (_jsxs("div", { style: {
|
|
108
|
-
display: 'flex',
|
|
109
|
-
gap: 4,
|
|
110
|
-
alignItems: 'baseline',
|
|
111
|
-
paddingTop: 4,
|
|
112
|
-
color: theme?.secondaryTextColor,
|
|
113
|
-
}, children: [_jsx("span", { style: {
|
|
114
|
-
fontSize: 28,
|
|
115
|
-
fontWeight: '500',
|
|
116
|
-
fontFamily: theme?.fontFamily,
|
|
117
|
-
color: theme?.secondaryTextColor,
|
|
118
|
-
}, children: children }), _jsx("span", { style: {
|
|
119
|
-
fontSize: 13,
|
|
120
|
-
fontWeight: '500',
|
|
121
|
-
fontFamily: theme?.fontFamily,
|
|
122
|
-
color: theme?.secondaryTextColor,
|
|
123
|
-
marginLeft: 2,
|
|
124
|
-
}, children: comparisonLabel
|
|
125
|
-
? 'in ' + comparisonLabel.toLowerCase()
|
|
126
|
-
: 'previous period' })] }))] }) }))] }) }) }, report?.name));
|
|
127
|
-
}
|
|
107
|
+
marginLeft: 2,
|
|
108
|
+
}, children: primaryMetricLabel
|
|
109
|
+
? `in ${primaryMetricLabel.toLowerCase()}`
|
|
110
|
+
: 'this period' }))] }), dateFilter?.comparison && (_jsxs("div", { style: {
|
|
111
|
+
display: 'flex',
|
|
112
|
+
gap: 4,
|
|
113
|
+
alignItems: 'baseline',
|
|
114
|
+
paddingTop: 4,
|
|
115
|
+
color: theme?.secondaryTextColor,
|
|
116
|
+
}, children: [_jsx("span", { style: {
|
|
117
|
+
fontSize: 28,
|
|
118
|
+
fontWeight: '500',
|
|
119
|
+
fontFamily: theme?.fontFamily,
|
|
120
|
+
color: theme?.secondaryTextColor,
|
|
121
|
+
}, children: children }), _jsx("span", { style: {
|
|
122
|
+
fontSize: 13,
|
|
123
|
+
fontWeight: '500',
|
|
124
|
+
fontFamily: theme?.fontFamily,
|
|
125
|
+
color: theme?.secondaryTextColor,
|
|
126
|
+
marginLeft: 2,
|
|
127
|
+
}, children: comparisonLabel
|
|
128
|
+
? 'in ' + comparisonLabel.toLowerCase()
|
|
129
|
+
: 'previous period' })] }))] }) });
|
|
130
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,MAAM,EACN,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,MAAM,EACN,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,GAAG,CAAC,OAAO,CA0Gd"}
|
|
@@ -46,7 +46,11 @@ export default function QuillTableComponent({ report, onClick, isLoading, error,
|
|
|
46
46
|
} })) : error ? (_jsx("div", { style: {
|
|
47
47
|
width: '100%',
|
|
48
48
|
height: '400px',
|
|
49
|
-
}, children: _jsx(ChartError, { errorMessage: error }) })) : (_jsx(QuillTable, { isLoading: isLoading, rows: report.rows ?? [], rowCount: rowCount, rowCountIsLoading: rowCountIsLoading, columns: report.
|
|
49
|
+
}, children: _jsx(ChartError, { errorMessage: error }) })) : (_jsx(QuillTable, { isLoading: isLoading, rows: report.rows ?? [], rowCount: rowCount, rowCountIsLoading: rowCountIsLoading, columns: report.includeCustomFields &&
|
|
50
|
+
report.columnsWithCustomFields &&
|
|
51
|
+
!report.pivot
|
|
52
|
+
? report.columnsWithCustomFields
|
|
53
|
+
: report.columns, rowsPerPage: report.pagination?.rowsPerPage ?? DEFAULT_PAGINATION.rowsPerPage, containerStyle: {
|
|
50
54
|
width: '100%',
|
|
51
55
|
height: '400px',
|
|
52
56
|
}, downloadCSV: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAc,EAEZ,aAAa,EAMd,MAAM,OAAO,CAAC;AAGf;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,KAAK,GACN,EAAE,yBAAyB,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAc,EAEZ,aAAa,EAMd,MAAM,OAAO,CAAC;AAGf;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,KAAK,GACN,EAAE,yBAAyB,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,2CA6flF;AAED,eAAO,MAAM,gBAAgB,sCAI1B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,4CAwDA,CAAC"}
|
|
@@ -93,9 +93,6 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
|
|
|
93
93
|
// FIXME: Hacked this to display selected options that have been filtered out, which is good
|
|
94
94
|
// But they don't have their proper labels, since we haven't stored/passed in the label
|
|
95
95
|
const filteredItems = React.useMemo(() => {
|
|
96
|
-
const uuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
|
|
97
|
-
const isUuid = potentialOptions?.[0]?.value?.toString()?.match(uuidRegex);
|
|
98
|
-
const isNumber = !isNaN(parseInt(potentialOptions?.[0]?.value ?? ''));
|
|
99
96
|
// Sort null to top
|
|
100
97
|
if (searchQuery === '') {
|
|
101
98
|
return potentialOptions
|
|
@@ -110,16 +107,20 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
|
|
|
110
107
|
})
|
|
111
108
|
.slice(0, 20);
|
|
112
109
|
}
|
|
110
|
+
const uuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
|
|
111
|
+
const isUuid = potentialOptions?.[0]?.value?.toString()?.match(uuidRegex);
|
|
112
|
+
const isNumber = typeof potentialOptions?.[0]?.value === 'number';
|
|
113
113
|
return potentialOptions
|
|
114
114
|
.filter((option) => {
|
|
115
115
|
if (!option) {
|
|
116
116
|
return false;
|
|
117
117
|
}
|
|
118
118
|
return option.label
|
|
119
|
+
.toString()
|
|
119
120
|
.toLowerCase()
|
|
120
121
|
.replace(/\s+/g, '')
|
|
121
122
|
.includes(searchQuery.toLowerCase().replace(/\s+/g, ''))
|
|
122
|
-
|| (isNumber || isUuid ? option.value
|
|
123
|
+
|| (isNumber || isUuid ? option.value.toString()
|
|
123
124
|
.toLowerCase()
|
|
124
125
|
.replace(/\s+/g, '')
|
|
125
126
|
.includes(searchQuery.toLowerCase().replace(/\s+/g, '')) : false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAWtE;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"QuillSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAWtE;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE,oBAAoB,2CA+StB"}
|
|
@@ -16,13 +16,9 @@ export function QuillSelectComponentWithCombo({ options, value, width, onChange,
|
|
|
16
16
|
// FIXME: Hacked this to display the option that has been filtered out, which is good
|
|
17
17
|
// But it doesn't have its proper label, since we haven't stored/passed in the label
|
|
18
18
|
const filteredItems = React.useMemo(() => {
|
|
19
|
-
const optionValues = new Set(options.map((opt) => opt.value));
|
|
20
19
|
// Sort null to top
|
|
21
20
|
if (searchQuery === '') {
|
|
22
|
-
return
|
|
23
|
-
? []
|
|
24
|
-
: [{ label: value === '' ? '-' : (value ?? '-'), value: value ?? '' }])
|
|
25
|
-
.concat(options)
|
|
21
|
+
return options
|
|
26
22
|
.sort((a, b) => {
|
|
27
23
|
if (a.value === null) {
|
|
28
24
|
return -1;
|
|
@@ -34,18 +30,23 @@ export function QuillSelectComponentWithCombo({ options, value, width, onChange,
|
|
|
34
30
|
})
|
|
35
31
|
.slice(0, 20);
|
|
36
32
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
const uuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
|
|
34
|
+
const isUuid = options?.[0]?.value?.toString()?.match(uuidRegex);
|
|
35
|
+
const isNumber = typeof options?.[0]?.value === 'number';
|
|
36
|
+
return options
|
|
41
37
|
.filter((option) => {
|
|
42
38
|
if (!option) {
|
|
43
39
|
return false;
|
|
44
40
|
}
|
|
45
|
-
return option.
|
|
41
|
+
return option.label
|
|
42
|
+
.toString()
|
|
46
43
|
.toLowerCase()
|
|
47
44
|
.replace(/\s+/g, '')
|
|
48
|
-
.includes(searchQuery.toLowerCase().replace(/\s+/g, ''))
|
|
45
|
+
.includes(searchQuery.toLowerCase().replace(/\s+/g, ''))
|
|
46
|
+
|| (isNumber || isUuid ? option.value.toString()
|
|
47
|
+
.toLowerCase()
|
|
48
|
+
.replace(/\s+/g, '')
|
|
49
|
+
.includes(searchQuery.toLowerCase().replace(/\s+/g, '')) : false);
|
|
49
50
|
})
|
|
50
51
|
.sort((a, b) => {
|
|
51
52
|
if (a.value === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddColumnModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAiB3D,OAAO,EAGL,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,MAAM,EACN,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,sBAAoD,EACpD,gBAAwC,GACzC,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,kBAAkB,EAAE,GAAG,CAAC;IACxB,qBAAqB,EAAE,GAAG,CAAC;IAC3B,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;IACX,gBAAgB,EAAE,GAAG,CAAC;IACtB,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,EACd,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC,GACjD,KAAK,CAAC,yBAAyB,CAC7B,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAChE,CAAC;IACN,YAAY,EAAE,CAAC,KAAK,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;SAAE,KAAK,GAAG,CAAC,OAAO,CAAC;KAC5E,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;IACZ,sBAAsB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAC1C,gBAAgB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;CACrC,
|
|
1
|
+
{"version":3,"file":"AddColumnModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAiB3D,OAAO,EAGL,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,MAAM,EACN,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,sBAAoD,EACpD,gBAAwC,GACzC,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,kBAAkB,EAAE,GAAG,CAAC;IACxB,qBAAqB,EAAE,GAAG,CAAC;IAC3B,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;IACX,gBAAgB,EAAE,GAAG,CAAC;IACtB,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,EACd,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC,GACjD,KAAK,CAAC,yBAAyB,CAC7B,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAChE,CAAC;IACN,YAAY,EAAE,CAAC,KAAK,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;SAAE,KAAK,GAAG,CAAC,OAAO,CAAC;KAC5E,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;IACZ,sBAAsB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAC1C,gBAAgB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;CACrC,2CAsNA"}
|
|
@@ -86,7 +86,8 @@ export default function AddColumnModal({ onSave, orderedColumnNames, setOrderedC
|
|
|
86
86
|
let tableName = initialTableName;
|
|
87
87
|
const orderedSelectedColumns = [];
|
|
88
88
|
for (const value of orderedColumnNames) {
|
|
89
|
-
const [table,
|
|
89
|
+
const [table, ...rest] = value.split('.');
|
|
90
|
+
const column = rest.join('.');
|
|
90
91
|
if (selectedColumns.includes(value)) {
|
|
91
92
|
tableName = table;
|
|
92
93
|
orderedSelectedColumns.push(column);
|