@quillsql/react 2.13.43 → 2.13.45
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.map +1 -1
- package/dist/cjs/Chart.js +2 -2
- package/dist/cjs/ChartBuilder.d.ts +1 -0
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +48 -14
- package/dist/cjs/ChartEditor.d.ts +1 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +2 -2
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +37 -26
- package/dist/cjs/Dashboard.d.ts +8 -2
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +117 -101
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +871 -1574
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +23 -4
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/components/Chart/CustomReferenceLine.js +1 -1
- package/dist/cjs/components/Chart/GaugeChart.js +0 -6
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +3 -3
- package/dist/cjs/components/Dashboard/DashboardSection.d.ts +1 -1
- package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardSection.js +20 -19
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +1 -0
- 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 +58 -8
- package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelect.js +91 -14
- package/dist/cjs/components/QuillSelectWithCombo.js +6 -6
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +6 -16
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +172 -75
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +1 -5
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -9
- package/dist/cjs/components/ReportBuilder/DraggableColumns.d.ts +17 -0
- package/dist/cjs/components/ReportBuilder/DraggableColumns.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/DraggableColumns.js +52 -0
- package/dist/cjs/components/ReportBuilder/DraggableItem.d.ts +17 -0
- package/dist/cjs/components/ReportBuilder/DraggableItem.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/DraggableItem.js +17 -0
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +6 -12
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +29 -20
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +8 -17
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterStack.js +20 -86
- package/dist/cjs/components/ReportBuilder/convert.js +6 -6
- package/dist/cjs/components/ReportBuilder/ui.d.ts +8 -9
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +30 -8
- package/dist/cjs/components/ReportBuilder/util.d.ts +2 -5
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +1 -1
- package/dist/cjs/components/UiComponents.d.ts +3 -2
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +13 -13
- package/dist/cjs/hooks/useAskQuill.d.ts +1 -1
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +14 -12
- package/dist/cjs/hooks/useDashboard.d.ts +5 -3
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +8 -6
- package/dist/cjs/hooks/useOnClickOutside.d.ts +1 -0
- package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/cjs/hooks/useOnClickOutside.js +33 -0
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +2 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +22 -15
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +7 -5
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +100 -48
- package/dist/cjs/models/Client.d.ts +4 -0
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Dashboard.d.ts +1 -0
- package/dist/cjs/models/Dashboard.d.ts.map +1 -1
- package/dist/cjs/models/Report.d.ts +2 -0
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/models/ReportBuilder.d.ts +46 -0
- package/dist/cjs/models/ReportBuilder.d.ts.map +1 -0
- package/dist/cjs/models/ReportBuilder.js +19 -0
- package/dist/cjs/models/Tables.d.ts +5 -5
- package/dist/cjs/models/Tables.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +4 -0
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +301 -97
- package/dist/cjs/utils/astProcessing.d.ts +14 -4
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +38 -4
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +18 -3
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +4 -3
- package/dist/cjs/utils/filterProcessing.d.ts +2 -11
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +4 -16
- package/dist/cjs/utils/pivotConstructor.d.ts +2 -1
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +4 -2
- package/dist/cjs/utils/pivotProcessing.d.ts +17 -7
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +60 -51
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +15 -2
- package/dist/cjs/utils/report.d.ts +12 -9
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +114 -47
- package/dist/cjs/utils/reportBuilder.d.ts +88 -0
- package/dist/cjs/utils/reportBuilder.d.ts.map +1 -0
- package/dist/cjs/utils/reportBuilder.js +395 -0
- package/dist/cjs/utils/schema.d.ts +7 -0
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +36 -2
- package/dist/cjs/utils/tableProcessing.d.ts +59 -29
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +75 -90
- package/dist/cjs/utils/ui.d.ts +2 -0
- package/dist/cjs/utils/ui.d.ts.map +1 -0
- package/dist/cjs/utils/ui.js +18 -0
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +2 -2
- package/dist/esm/ChartBuilder.d.ts +1 -0
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +49 -15
- package/dist/esm/ChartEditor.d.ts +1 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +2 -2
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +37 -26
- package/dist/esm/Dashboard.d.ts +8 -2
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +121 -105
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +878 -1581
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +23 -4
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/components/Chart/CustomReferenceLine.js +1 -1
- package/dist/esm/components/Chart/GaugeChart.js +0 -6
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +3 -3
- package/dist/esm/components/Dashboard/DashboardSection.d.ts +1 -1
- package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardSection.js +21 -20
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +1 -0
- 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 +57 -7
- package/dist/esm/components/QuillSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillSelect.js +58 -14
- package/dist/esm/components/QuillSelectWithCombo.js +6 -6
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +6 -16
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.js +173 -76
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +1 -5
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +2 -9
- package/dist/esm/components/ReportBuilder/DraggableColumns.d.ts +17 -0
- package/dist/esm/components/ReportBuilder/DraggableColumns.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/DraggableColumns.js +46 -0
- package/dist/esm/components/ReportBuilder/DraggableItem.d.ts +17 -0
- package/dist/esm/components/ReportBuilder/DraggableItem.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/DraggableItem.js +14 -0
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts +6 -12
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +29 -20
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts +8 -17
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterStack.js +21 -87
- package/dist/esm/components/ReportBuilder/convert.js +6 -6
- package/dist/esm/components/ReportBuilder/ui.d.ts +8 -9
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +33 -11
- package/dist/esm/components/ReportBuilder/util.d.ts +2 -5
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +1 -1
- package/dist/esm/components/UiComponents.d.ts +3 -2
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +13 -13
- package/dist/esm/hooks/useAskQuill.d.ts +1 -1
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +14 -12
- package/dist/esm/hooks/useDashboard.d.ts +5 -3
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +8 -6
- package/dist/esm/hooks/useOnClickOutside.d.ts +1 -0
- package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/esm/hooks/useOnClickOutside.js +31 -0
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +2 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +23 -16
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +7 -5
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +101 -49
- package/dist/esm/models/Client.d.ts +4 -0
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Dashboard.d.ts +1 -0
- package/dist/esm/models/Dashboard.d.ts.map +1 -1
- package/dist/esm/models/Report.d.ts +2 -0
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/models/ReportBuilder.d.ts +46 -0
- package/dist/esm/models/ReportBuilder.d.ts.map +1 -0
- package/dist/esm/models/ReportBuilder.js +16 -0
- package/dist/esm/models/Tables.d.ts +5 -5
- package/dist/esm/models/Tables.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +4 -0
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +300 -97
- package/dist/esm/utils/astProcessing.d.ts +14 -4
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +38 -5
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +18 -3
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +4 -3
- package/dist/esm/utils/filterProcessing.d.ts +2 -11
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +4 -15
- package/dist/esm/utils/pivotConstructor.d.ts +2 -1
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +4 -2
- package/dist/esm/utils/pivotProcessing.d.ts +17 -7
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +58 -49
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +15 -2
- package/dist/esm/utils/report.d.ts +12 -9
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +116 -46
- package/dist/esm/utils/reportBuilder.d.ts +88 -0
- package/dist/esm/utils/reportBuilder.d.ts.map +1 -0
- package/dist/esm/utils/reportBuilder.js +386 -0
- package/dist/esm/utils/schema.d.ts +7 -0
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +34 -1
- package/dist/esm/utils/tableProcessing.d.ts +59 -29
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +71 -86
- package/dist/esm/utils/ui.d.ts +2 -0
- package/dist/esm/utils/ui.d.ts.map +1 -0
- package/dist/esm/utils/ui.js +14 -0
- package/package.json +1 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { deepCopy } from '../components/ReportBuilder/util';
|
|
2
1
|
import { convertPostgresColumn, isStringType } from './columnProcessing';
|
|
3
2
|
import { MAX_PIVOT_UNIQUE_VALUES, QUILL_QUERY_ENDPOINT, QUILL_SERVER, } from './constants';
|
|
4
3
|
import { getData } from './dataFetcher';
|
|
@@ -19,61 +18,23 @@ export const hasColumnAlias = (columns, referencedColumns) => {
|
|
|
19
18
|
}
|
|
20
19
|
return false;
|
|
21
20
|
};
|
|
22
|
-
export const
|
|
21
|
+
export const getUniqueValuesByQuery = async ({ columns, query, client, tenants, customFields, filters, dashboardName, }) => {
|
|
23
22
|
const stringNames = columns.map((column) => column.field);
|
|
24
23
|
const uniqueValues = {};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
client.databaseType.toLowerCase() === 'bigquery') {
|
|
28
|
-
if (rows.length === 0) {
|
|
29
|
-
const hostedBody = {
|
|
30
|
-
metadata: {
|
|
31
|
-
query: query,
|
|
32
|
-
task: 'query',
|
|
33
|
-
clientId: client.publicKey,
|
|
34
|
-
databaseType: client?.databaseType,
|
|
35
|
-
customFieldsByTable: customFields,
|
|
36
|
-
useNewNodeSql: true,
|
|
37
|
-
dateField: filters?.find((filter) => filter.filterType === 'date_range')?.dateField,
|
|
38
|
-
filters,
|
|
39
|
-
dashboardName: dashboardName && tenants ? dashboardName : undefined,
|
|
40
|
-
tenants: dashboardName && tenants ? tenants : undefined,
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
const cloudBody = { query };
|
|
44
|
-
const data = await getData(client, 'dashquery', 'same-origin', hostedBody, cloudBody);
|
|
45
|
-
if (!data || data.errorMessage) {
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
rows = data.rows;
|
|
49
|
-
}
|
|
50
|
-
for (const column of columns) {
|
|
51
|
-
const values = Array.from(new Set(rows
|
|
52
|
-
.map((row) => row[column.name || column.field])
|
|
53
|
-
.filter((value) => value !== null && value !== undefined)));
|
|
54
|
-
// @ts-ignore
|
|
55
|
-
uniqueValues[column.name || column.field] = values.reduce((result, value) => {
|
|
56
|
-
result[value] = false;
|
|
57
|
-
return result;
|
|
58
|
-
}, {});
|
|
59
|
-
}
|
|
24
|
+
if (stringNames.length === 0) {
|
|
25
|
+
return {};
|
|
60
26
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return {};
|
|
69
|
-
}
|
|
70
|
-
for (const column of distinctStrings) {
|
|
71
|
-
uniqueValues[column.column] = column.values;
|
|
72
|
-
}
|
|
27
|
+
const distinctValueQuery = generateDistinctQuery(stringNames, query, client.databaseType || 'postgresql');
|
|
28
|
+
const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client, tenants, customFields, filters, dashboardName);
|
|
29
|
+
if (!distinctStrings) {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
for (const column of distinctStrings) {
|
|
33
|
+
uniqueValues[column.column] = column.values;
|
|
73
34
|
}
|
|
74
35
|
return uniqueValues;
|
|
75
36
|
};
|
|
76
|
-
export const
|
|
37
|
+
export const getUniqueStringValuesByColumn = async ({ columns, tableName, client, tenants, customFields, withExceededColumns, query, dashboardName, }) => {
|
|
77
38
|
const convertedStringColumns = columns.filter((column) => {
|
|
78
39
|
return isStringType(column.fieldType);
|
|
79
40
|
});
|
|
@@ -83,9 +44,15 @@ export const getUniqueStringValues = async (columns, tableName, client, tenants,
|
|
|
83
44
|
: { filteredColumns: [], exceededColumns: undefined };
|
|
84
45
|
const smallStringNames = smallStringColumns.map((column) => processColumnReference(column.field, client.databaseType, undefined, true));
|
|
85
46
|
const newUniqueValues = query || smallStringColumns.length > 0
|
|
86
|
-
? await
|
|
87
|
-
|
|
88
|
-
|
|
47
|
+
? await getUniqueValuesByQuery({
|
|
48
|
+
// returns null if data error
|
|
49
|
+
columns: smallStringColumns,
|
|
50
|
+
query: query || `Select ${smallStringNames.join(', ')} from ${tableName}`,
|
|
51
|
+
client,
|
|
52
|
+
tenants,
|
|
53
|
+
customFields: customFields ?? [],
|
|
54
|
+
dashboardName,
|
|
55
|
+
})
|
|
89
56
|
: null;
|
|
90
57
|
if (!newUniqueValues) {
|
|
91
58
|
return {};
|
|
@@ -93,35 +60,59 @@ export const getUniqueStringValues = async (columns, tableName, client, tenants,
|
|
|
93
60
|
if (withExceededColumns) {
|
|
94
61
|
exceededColumns?.forEach((column) => {
|
|
95
62
|
if (newUniqueValues) {
|
|
96
|
-
newUniqueValues[column.field] =
|
|
63
|
+
newUniqueValues[column.field] = ['EXCEEDS_LIMIT'];
|
|
97
64
|
}
|
|
98
65
|
});
|
|
99
66
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
67
|
+
return newUniqueValues;
|
|
68
|
+
};
|
|
69
|
+
export const getUniqueStringValuesByTable = async ({ tables, columns, client, tenants, dashboardName, customFields, withExceededColumns, queryTemplate, }) => {
|
|
70
|
+
const uniqueValues = {};
|
|
71
|
+
await Promise.all(tables.map(async (tableName) => {
|
|
72
|
+
const tableColumns = columns.filter((column) => {
|
|
73
|
+
return column.table === tableName;
|
|
74
|
+
});
|
|
75
|
+
const tableColumnString = tableColumns
|
|
76
|
+
.map((col) => `${col.table ? `${col.table}.` : ''}${col.field}`)
|
|
77
|
+
.join(', ');
|
|
78
|
+
const query = queryTemplate
|
|
79
|
+
? queryTemplate.replace('*', tableColumnString)
|
|
80
|
+
: `SELECT ${tableColumnString} FROM ${tableName}`;
|
|
81
|
+
const newUniqueValues = await getUniqueStringValuesByColumn({
|
|
82
|
+
columns: tableColumns,
|
|
83
|
+
tableName,
|
|
84
|
+
client,
|
|
85
|
+
tenants,
|
|
86
|
+
dashboardName,
|
|
87
|
+
customFields,
|
|
88
|
+
withExceededColumns,
|
|
89
|
+
query,
|
|
90
|
+
});
|
|
91
|
+
uniqueValues[tableName] = newUniqueValues;
|
|
92
|
+
}));
|
|
93
|
+
return uniqueValues;
|
|
110
94
|
};
|
|
111
|
-
export const getRelevantInfoFromQuery = async (columns, client, tenants, query, customFields, dashboardName) => {
|
|
95
|
+
export const getRelevantInfoFromQuery = async ({ tables, columns, aliasedColumns, reportBuilderColumns, client, tenants, query, queryTemplate, customFields, dashboardName, }) => {
|
|
112
96
|
let dateRanges = {};
|
|
113
|
-
let uniqueStrings =
|
|
97
|
+
let uniqueStrings = null;
|
|
98
|
+
const columnUniqueValues = {};
|
|
114
99
|
let error = undefined;
|
|
115
100
|
try {
|
|
116
|
-
|
|
117
|
-
|
|
101
|
+
uniqueStrings = await getUniqueStringValuesByTable({
|
|
102
|
+
tables,
|
|
103
|
+
columns,
|
|
104
|
+
client,
|
|
105
|
+
tenants,
|
|
106
|
+
dashboardName,
|
|
107
|
+
customFields,
|
|
108
|
+
withExceededColumns: true,
|
|
109
|
+
queryTemplate,
|
|
118
110
|
});
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const dateColumns = columns.filter((column) => {
|
|
111
|
+
reportBuilderColumns.forEach((column) => {
|
|
112
|
+
columnUniqueValues[column.alias || column.field] =
|
|
113
|
+
uniqueStrings?.[column.table || '']?.[column.field] ?? [];
|
|
114
|
+
});
|
|
115
|
+
const dateColumns = aliasedColumns.filter((column) => {
|
|
125
116
|
return column.fieldType === 'date';
|
|
126
117
|
});
|
|
127
118
|
if (dateColumns.length > 0) {
|
|
@@ -136,6 +127,7 @@ export const getRelevantInfoFromQuery = async (columns, client, tenants, query,
|
|
|
136
127
|
}
|
|
137
128
|
return {
|
|
138
129
|
uniqueStrings: uniqueStrings ?? undefined,
|
|
130
|
+
columnUniqueValues: columnUniqueValues,
|
|
139
131
|
dateRanges: dateRanges ?? undefined,
|
|
140
132
|
error,
|
|
141
133
|
};
|
|
@@ -207,7 +199,7 @@ const fetchDistinctStrings = async (query, client, tenants, customFields, filter
|
|
|
207
199
|
const results = data.rows.map((columnInfo) => {
|
|
208
200
|
const column = columnInfo.field || columnInfo.FIELD;
|
|
209
201
|
if (!columnInfo.string_values) {
|
|
210
|
-
return { column, values:
|
|
202
|
+
return { column, values: [] };
|
|
211
203
|
}
|
|
212
204
|
// This function is used in ReportBuilder and PivotModal to fetch distinct values. However, neither PivotModal or FilterModal
|
|
213
205
|
// are currently built to handle null values (FilterModal uses SQL IN, which doesn't handle null values). For now, filtering
|
|
@@ -219,17 +211,17 @@ const fetchDistinctStrings = async (query, client, tenants, customFields, filter
|
|
|
219
211
|
.reduce((result, value) => {
|
|
220
212
|
if (value !== null && value !== undefined) {
|
|
221
213
|
// TODO: handle null values rather than filtering out
|
|
222
|
-
result
|
|
214
|
+
result.push(value);
|
|
223
215
|
}
|
|
224
216
|
return result;
|
|
225
|
-
},
|
|
217
|
+
}, [])
|
|
226
218
|
: columnInfo.string_values.reduce((result, value) => {
|
|
227
219
|
if (value !== null && value !== undefined) {
|
|
228
220
|
// TODO: handle null values rather than filtering out
|
|
229
|
-
result
|
|
221
|
+
result.push(value);
|
|
230
222
|
}
|
|
231
223
|
return result;
|
|
232
|
-
},
|
|
224
|
+
}, []);
|
|
233
225
|
return { column, values };
|
|
234
226
|
});
|
|
235
227
|
return results;
|
|
@@ -574,10 +566,3 @@ export const fetchTableByAST = async (ast, client, tenants, processing, customFi
|
|
|
574
566
|
}
|
|
575
567
|
return { rows, columns, rowCount, error, itemQuery, referencedTables };
|
|
576
568
|
};
|
|
577
|
-
export const convertUniqueValuesByColumnToUniqueValueStrings = (uniqueValuesByColumns) => {
|
|
578
|
-
return Object.keys(uniqueValuesByColumns).reduce((acc, column) => {
|
|
579
|
-
const uniqueValues = uniqueValuesByColumns[column] ?? [];
|
|
580
|
-
acc[column] = Object.keys(uniqueValues);
|
|
581
|
-
return acc;
|
|
582
|
-
}, {});
|
|
583
|
-
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/utils/ui.ts"],"names":[],"mappings":"AACC,eAAO,MAAM,mBAAmB,YAAa,WAAW,GAAG,IAAI,+CAU/D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Utility to find the nearest scrollable ancestor
|
|
2
|
+
export const getScrollableParent = (element) => {
|
|
3
|
+
if (!element)
|
|
4
|
+
return document.body;
|
|
5
|
+
let parent = element.parentElement;
|
|
6
|
+
while (parent) {
|
|
7
|
+
const style = getComputedStyle(parent);
|
|
8
|
+
const isScrollable = /(auto|scroll)/.test(style.overflowY + style.overflowX);
|
|
9
|
+
if (isScrollable)
|
|
10
|
+
return parent;
|
|
11
|
+
parent = parent.parentElement;
|
|
12
|
+
}
|
|
13
|
+
return window;
|
|
14
|
+
};
|