@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
|
@@ -32,14 +32,14 @@ function replaceBigQuerySpecialCharacters(column) {
|
|
|
32
32
|
}
|
|
33
33
|
function processColumnReference(column, databaseType, fallbackOnNull,
|
|
34
34
|
// for mysql, we only want to use double quotes for pivot column field aliases
|
|
35
|
-
|
|
35
|
+
isColumnFieldAlias, isValueFieldAlias) {
|
|
36
36
|
switch (databaseType.toLowerCase()) {
|
|
37
37
|
case 'postgresql':
|
|
38
38
|
case 'clickhouse': {
|
|
39
39
|
if (column === '') {
|
|
40
40
|
return fallbackOnNull ? `"${fallbackOnNull}"` : `"_"`;
|
|
41
41
|
}
|
|
42
|
-
if (
|
|
42
|
+
if (isColumnFieldAlias) {
|
|
43
43
|
return `"${column.replaceAll('"', '')}"`;
|
|
44
44
|
}
|
|
45
45
|
const columnParts = column.split('.');
|
|
@@ -54,7 +54,7 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
|
|
|
54
54
|
if (column === '') {
|
|
55
55
|
return fallbackOnNull ? `${fallbackOnNull}` : '_';
|
|
56
56
|
}
|
|
57
|
-
if (
|
|
57
|
+
if (isColumnFieldAlias) {
|
|
58
58
|
return `\`${column.replaceAll(`\``, '').replaceAll(`"`, '')}\``;
|
|
59
59
|
}
|
|
60
60
|
const columnParts = column.split('.');
|
|
@@ -70,10 +70,10 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
|
|
|
70
70
|
if (column === '') {
|
|
71
71
|
return fallbackOnNull ? `${fallbackOnNull}` : '_';
|
|
72
72
|
}
|
|
73
|
-
if (
|
|
73
|
+
if (isColumnFieldAlias) {
|
|
74
74
|
return `"${column.replaceAll('"', '')}"`;
|
|
75
75
|
}
|
|
76
|
-
if (
|
|
76
|
+
if (isValueFieldAlias) {
|
|
77
77
|
const cleanedColumn = column.replaceAll(')', '').replaceAll('(', '_');
|
|
78
78
|
return `${cleanedColumn}`;
|
|
79
79
|
}
|
|
@@ -87,7 +87,7 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
|
|
|
87
87
|
if (column === '') {
|
|
88
88
|
return fallbackOnNull ? `\`${fallbackOnNull}\`` : '`_`';
|
|
89
89
|
}
|
|
90
|
-
if (
|
|
90
|
+
if (isColumnFieldAlias) {
|
|
91
91
|
return `\`${replaceBigQuerySpecialCharacters(column.replaceAll('`', ''))}\``;
|
|
92
92
|
}
|
|
93
93
|
const columnParts = column.split('.');
|
|
@@ -102,7 +102,7 @@ isPivotColumnFieldAlias, isPivotValueFieldAlias) {
|
|
|
102
102
|
if (column === '') {
|
|
103
103
|
return fallbackOnNull ? `[${fallbackOnNull}]` : `[_]`;
|
|
104
104
|
}
|
|
105
|
-
if (
|
|
105
|
+
if (isColumnFieldAlias) {
|
|
106
106
|
return `[${column.replaceAll(']', '').replaceAll('[', '')}]`;
|
|
107
107
|
}
|
|
108
108
|
const columnParts = column.split('.');
|
|
@@ -179,7 +179,7 @@ function generateCountQuery(fields, query, databaseType) {
|
|
|
179
179
|
switch (databaseType.toLowerCase()) {
|
|
180
180
|
case 'mysql':
|
|
181
181
|
cte = fields.map((field, index) => {
|
|
182
|
-
return `, distinct_cte_${index} AS (SELECT DISTINCT ${processColumnReference(field, databaseType)} FROM querytable LIMIT ${constants_1.MAX_PIVOT_UNIQUE_VALUES + 1})`;
|
|
182
|
+
return `, distinct_cte_${index} AS (SELECT DISTINCT ${processColumnReference(field, databaseType, undefined, true)} FROM querytable LIMIT ${constants_1.MAX_PIVOT_UNIQUE_VALUES + 1})`;
|
|
183
183
|
});
|
|
184
184
|
countQuery = fields.map((field, index) => {
|
|
185
185
|
return `SELECT '${field}' AS ${processColumnReference('field', databaseType)}, COUNT(*) AS ${processColumnReference('count', databaseType)} FROM distinct_cte_${index}`;
|
|
@@ -188,7 +188,7 @@ function generateCountQuery(fields, query, databaseType) {
|
|
|
188
188
|
break;
|
|
189
189
|
default:
|
|
190
190
|
countQuery = fields.map((field) => {
|
|
191
|
-
return `SELECT '${field}' AS ${processColumnReference('field', databaseType)}, COUNT(DISTINCT ${processColumnReference(field, databaseType)}) AS ${processColumnReference('count', databaseType)} FROM querytable`;
|
|
191
|
+
return `SELECT '${field}' AS ${processColumnReference('field', databaseType)}, COUNT(DISTINCT ${processColumnReference(field, databaseType, undefined, true)}) AS ${processColumnReference('count', databaseType)} FROM querytable`;
|
|
192
192
|
});
|
|
193
193
|
}
|
|
194
194
|
return cteQuery + countQuery.join(' UNION ALL ');
|
|
@@ -307,7 +307,10 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
|
|
|
307
307
|
if (!isValidBaseQuery || !pivot.columnField || !pivot.rowField)
|
|
308
308
|
return undefined;
|
|
309
309
|
const rowField = pivot.rowField;
|
|
310
|
-
if (!pivot.aggregations?.[0]?.valueField &&
|
|
310
|
+
if (!pivot.aggregations?.[0]?.valueField &&
|
|
311
|
+
pivot.aggregations?.[0]?.aggregationType !== 'count' &&
|
|
312
|
+
!pivot.valueField &&
|
|
313
|
+
pivot.aggregationType !== 'count')
|
|
311
314
|
throw new Error('No value field provided for pivot');
|
|
312
315
|
if (!pivot.aggregations?.[0]?.aggregationType && !pivot.aggregationType)
|
|
313
316
|
throw new Error('No aggregation type provided for pivot');
|
|
@@ -331,7 +334,7 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
|
|
|
331
334
|
let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString();
|
|
332
335
|
if (disambiguationIndex === '1')
|
|
333
336
|
disambiguationIndex = '';
|
|
334
|
-
const valueFieldAlias = processColumnReference(
|
|
337
|
+
const valueFieldAlias = processColumnReference(currentAgg.valueField || rowField || 'count', databaseType, undefined, false, true);
|
|
335
338
|
const valueAliasSubstring = currentAgg.valueField
|
|
336
339
|
? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
337
340
|
: '';
|
|
@@ -354,7 +357,8 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
|
|
|
354
357
|
const value2Expr = (currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool'
|
|
355
358
|
? `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`
|
|
356
359
|
: valueField2Alias;
|
|
357
|
-
if (currentAgg.valueField === currentAgg.valueField2 ||
|
|
360
|
+
if (currentAgg.valueField === currentAgg.valueField2 ||
|
|
361
|
+
!currentAgg.valueField2) {
|
|
358
362
|
caseWhens = columnFieldValues.map((column) => {
|
|
359
363
|
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${valueExpr} END) / GREATEST(sum(${value2Expr}), 1) AS ${processColumnReference(column + disambiguation, databaseType, '_', true)}`;
|
|
360
364
|
});
|
|
@@ -386,7 +390,7 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
|
|
|
386
390
|
];
|
|
387
391
|
valueAliases = Array.from(new Set(valueAliases));
|
|
388
392
|
const sortQuery = pivot.sort && pivot.sortField && pivot.rowLimit
|
|
389
|
-
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
|
|
393
|
+
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
|
|
390
394
|
: '';
|
|
391
395
|
const pivotQuery = `
|
|
392
396
|
,quill_alias AS (
|
|
@@ -415,7 +419,10 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
|
|
|
415
419
|
if (!isValidBaseQuery || !pivot.columnField || !pivot.rowField) {
|
|
416
420
|
return undefined;
|
|
417
421
|
}
|
|
418
|
-
if (!pivot.aggregations?.[0]?.valueField &&
|
|
422
|
+
if (!pivot.aggregations?.[0]?.valueField &&
|
|
423
|
+
pivot.aggregations?.[0]?.aggregationType !== 'count' &&
|
|
424
|
+
!pivot.valueField &&
|
|
425
|
+
pivot.aggregationType !== 'count')
|
|
419
426
|
throw new Error('No value field provided for pivot');
|
|
420
427
|
if (!pivot.aggregations?.[0]?.aggregationType && !pivot.aggregationType)
|
|
421
428
|
throw new Error('No aggregation type provided for pivot');
|
|
@@ -441,12 +448,14 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
|
|
|
441
448
|
let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString();
|
|
442
449
|
if (disambiguationIndex === '1')
|
|
443
450
|
disambiguationIndex = '';
|
|
444
|
-
const valueFieldAlias = processColumnReference(
|
|
451
|
+
const valueFieldAlias = processColumnReference(currentAgg.valueField ?? rowField, databaseType, undefined, false, true);
|
|
445
452
|
const valueAliasSubstring = currentAgg.valueField
|
|
446
453
|
? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
447
454
|
: '';
|
|
448
455
|
let value2AliasSubstring = '';
|
|
449
|
-
const disambiguationField = Object.values(seenAggs[currentAgg.aggregationType ?? ''] ?? {}).reduce((acc, v) => acc + v) > 1
|
|
456
|
+
const disambiguationField = Object.values(seenAggs[currentAgg.aggregationType ?? ''] ?? {}).reduce((acc, v) => acc + v) > 1
|
|
457
|
+
? `_${currentAgg.valueField}${disambiguationIndex}`
|
|
458
|
+
: '';
|
|
450
459
|
const disambiguation = pivot.aggregations?.length > 1
|
|
451
460
|
? `${disambiguationField}_${disambiguationField ? (0, textProcessing_1.matchCasing)(currentAgg.aggregationType, currentAgg.valueField) : currentAgg.aggregationType}`
|
|
452
461
|
: '';
|
|
@@ -463,7 +472,8 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
|
|
|
463
472
|
? `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`
|
|
464
473
|
: valueField2Alias;
|
|
465
474
|
// edge case. if the user picks amount and amount, we assume they want a pie chart like breakdown of amount. so the summation of valueField2 has to be moved outside of the case whe
|
|
466
|
-
if (currentAgg.valueField === currentAgg.valueField2 ||
|
|
475
|
+
if (currentAgg.valueField === currentAgg.valueField2 ||
|
|
476
|
+
!currentAgg.valueField2) {
|
|
467
477
|
caseWhens = [
|
|
468
478
|
...caseWhens,
|
|
469
479
|
...columnFieldValues.map((column) => {
|
|
@@ -501,7 +511,7 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
|
|
|
501
511
|
];
|
|
502
512
|
valueFieldAliases = Array.from(new Set(valueFieldAliases));
|
|
503
513
|
// pivot sort matters in the base query when there is a rowLimit. In mssql, an orderby must be accompanied by a limit in a subquery and not allowed in a cte
|
|
504
|
-
const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} ` : ''}`;
|
|
514
|
+
const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} ` : ''}`;
|
|
505
515
|
const pivotQuery = `
|
|
506
516
|
, quill_alias AS (SELECT ${valueFieldAliases.length > 0 ? `${valueFieldAliases.join(', ')}` : ''} FROM quill_base_table),
|
|
507
517
|
quill_qt_agg AS (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)}),
|
|
@@ -548,7 +558,7 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
|
|
|
548
558
|
if (disambiguationIndex === '1')
|
|
549
559
|
disambiguationIndex = '';
|
|
550
560
|
// This is the alias (from quill_alias CTE) for the field
|
|
551
|
-
const valueFieldAlias = processColumnReference(
|
|
561
|
+
const valueFieldAlias = processColumnReference(currentAgg.valueField || rowField || 'count', databaseType, undefined, false, true);
|
|
552
562
|
// In the base query, we select the raw column.
|
|
553
563
|
const valueAliasSubstring = currentAgg.valueField
|
|
554
564
|
? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
@@ -571,10 +581,13 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
|
|
|
571
581
|
if ((currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool') {
|
|
572
582
|
value2Expr = `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`;
|
|
573
583
|
}
|
|
574
|
-
value2AliasSubstring =
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
584
|
+
value2AliasSubstring =
|
|
585
|
+
currentAgg.valueField2 &&
|
|
586
|
+
currentAgg.valueField !== currentAgg.valueField2
|
|
587
|
+
? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
|
|
588
|
+
: '';
|
|
589
|
+
const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
|
|
590
|
+
!currentAgg.valueField2
|
|
578
591
|
? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
|
|
579
592
|
: `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
|
|
580
593
|
quillAggSelects = [
|
|
@@ -595,7 +608,7 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
|
|
|
595
608
|
});
|
|
596
609
|
valueFieldAliases = Array.from(new Set(valueFieldAliases));
|
|
597
610
|
const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit
|
|
598
|
-
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
|
|
611
|
+
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
|
|
599
612
|
: ''}`;
|
|
600
613
|
const pivotQuery = `, quill_alias AS (
|
|
601
614
|
SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowAlias}${valueFieldAliases.length > 0 ? `, ${valueFieldAliases.join(', ')}` : ''}
|
|
@@ -620,7 +633,9 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
|
|
|
620
633
|
}
|
|
621
634
|
const rowField = pivot.rowField || '';
|
|
622
635
|
const rowFieldAlias = processColumnReference(rowField, databaseType, undefined);
|
|
623
|
-
let quillAggSelects = [
|
|
636
|
+
let quillAggSelects = [
|
|
637
|
+
`${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(rowField, databaseType)}`,
|
|
638
|
+
];
|
|
624
639
|
let valueFieldAliases = [];
|
|
625
640
|
const seenAggs = {};
|
|
626
641
|
pivot.aggregations?.forEach((currentAgg) => {
|
|
@@ -639,7 +654,7 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
|
|
|
639
654
|
let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString() ?? '';
|
|
640
655
|
if (disambiguationIndex === '1')
|
|
641
656
|
disambiguationIndex = '';
|
|
642
|
-
const valueFieldAlias = processColumnReference(
|
|
657
|
+
const valueFieldAlias = processColumnReference(currentAgg.valueField || rowField || 'count', databaseType, undefined, false, true);
|
|
643
658
|
const valueAliasSubstring = currentAgg.valueField
|
|
644
659
|
? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
645
660
|
: '';
|
|
@@ -657,14 +672,17 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
|
|
|
657
672
|
throw new Error('No value field provided for percentage aggregation');
|
|
658
673
|
}
|
|
659
674
|
const valueField2Alias = processColumnReference(currentAgg.valueField2 ?? currentAgg.valueField, databaseType, undefined, false, true);
|
|
660
|
-
value2AliasSubstring =
|
|
661
|
-
|
|
662
|
-
|
|
675
|
+
value2AliasSubstring =
|
|
676
|
+
currentAgg.valueField2 &&
|
|
677
|
+
currentAgg.valueField !== currentAgg.valueField2
|
|
678
|
+
? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
|
|
679
|
+
: '';
|
|
663
680
|
let value2Expr = valueField2Alias;
|
|
664
681
|
if ((currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool') {
|
|
665
682
|
value2Expr = `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`;
|
|
666
683
|
}
|
|
667
|
-
const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
|
|
684
|
+
const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
|
|
685
|
+
!currentAgg.valueField2
|
|
668
686
|
? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
|
|
669
687
|
: `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
|
|
670
688
|
quillAggSelects = [
|
|
@@ -685,7 +703,7 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
|
|
|
685
703
|
});
|
|
686
704
|
valueFieldAliases = Array.from(new Set(valueFieldAliases));
|
|
687
705
|
// pivot sort matters in the base query when there is a rowLimit. In mssql, an orderby must be accompanied by a limit in a subquery and not allowed in a cte
|
|
688
|
-
const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} ` : ''}`;
|
|
706
|
+
const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} ` : ''}`;
|
|
689
707
|
const pivotQuery = `, quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueFieldAliases.length > 0 ? `, ${valueFieldAliases.join(', ')}` : ''}
|
|
690
708
|
FROM quill_base_table),
|
|
691
709
|
quill_qt_agg AS (SELECT ${quillAggSelects.join(', ')}
|
|
@@ -721,7 +739,7 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
|
|
|
721
739
|
let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString() ?? '';
|
|
722
740
|
if (disambiguationIndex === '1')
|
|
723
741
|
disambiguationIndex = '';
|
|
724
|
-
const valueFieldAlias = processColumnReference(
|
|
742
|
+
const valueFieldAlias = processColumnReference(currentAgg.valueField || 'count', databaseType, undefined, false, true);
|
|
725
743
|
const valueAliasSubstring = currentAgg.valueField
|
|
726
744
|
? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
727
745
|
: '';
|
|
@@ -731,9 +749,10 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
|
|
|
731
749
|
: '';
|
|
732
750
|
// If the field type is bool, wrap it in a CASE WHEN
|
|
733
751
|
let valueExpr = !currentAgg.valueField ? '*' : valueFieldAlias;
|
|
734
|
-
valueExpr =
|
|
735
|
-
|
|
736
|
-
|
|
752
|
+
valueExpr =
|
|
753
|
+
currentAgg.valueFieldType === 'bool'
|
|
754
|
+
? `CASE WHEN ${valueFieldAlias} THEN 1 ELSE 0 END`
|
|
755
|
+
: valueExpr;
|
|
737
756
|
if (currentAgg.aggregationType === 'percentage') {
|
|
738
757
|
if (!currentAgg.valueField) {
|
|
739
758
|
throw new Error('No value field provided for percentage aggregation');
|
|
@@ -742,10 +761,13 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
|
|
|
742
761
|
const value2Expr = (currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool'
|
|
743
762
|
? `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`
|
|
744
763
|
: valueField2Alias;
|
|
745
|
-
value2AliasSubstring =
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
764
|
+
value2AliasSubstring =
|
|
765
|
+
currentAgg.valueField2 &&
|
|
766
|
+
currentAgg.valueField !== currentAgg.valueField2
|
|
767
|
+
? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
|
|
768
|
+
: '';
|
|
769
|
+
const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
|
|
770
|
+
!currentAgg.valueField2
|
|
749
771
|
? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
|
|
750
772
|
: `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
|
|
751
773
|
quillAggSelects = [
|
|
@@ -766,7 +788,7 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
|
|
|
766
788
|
});
|
|
767
789
|
valueFieldAliases = Array.from(new Set(valueFieldAliases));
|
|
768
790
|
const sortQuery = pivot.sort && pivot.sortField && pivot.rowLimit
|
|
769
|
-
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
|
|
791
|
+
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
|
|
770
792
|
: '';
|
|
771
793
|
const pivotQuery = `, quill_alias AS (
|
|
772
794
|
SELECT ${valueFieldAliases.join(', ')} FROM quill_base_table
|
|
@@ -796,7 +818,13 @@ function additionalProcessingOnPivotQuery(pivot, query, additionalProcessing, da
|
|
|
796
818
|
}
|
|
797
819
|
if (!pivot.aggregations || pivot.aggregations.length === 0) {
|
|
798
820
|
if (pivot.aggregationType) {
|
|
799
|
-
pivot.aggregations = [
|
|
821
|
+
pivot.aggregations = [
|
|
822
|
+
{
|
|
823
|
+
aggregationType: pivot.aggregationType,
|
|
824
|
+
valueField: pivot.valueField,
|
|
825
|
+
valueField2: pivot.valueField2,
|
|
826
|
+
},
|
|
827
|
+
];
|
|
800
828
|
}
|
|
801
829
|
else {
|
|
802
830
|
throw new Error('No aggregations provided for pivot');
|
|
@@ -820,13 +848,13 @@ function additionalProcessingOnPivotQuery(pivot, query, additionalProcessing, da
|
|
|
820
848
|
? `_${(0, textProcessing_1.matchCasing)(pivot.aggregations?.[0]?.aggregationType, pivot.aggregations?.[0]?.valueField)}`
|
|
821
849
|
: '';
|
|
822
850
|
if (additionalProcessing.sort) {
|
|
823
|
-
sortQuery = `ORDER BY ${processColumnReference(additionalProcessing.sort.field, databaseType)} ${additionalProcessing.sort.direction || ''}`;
|
|
851
|
+
sortQuery = `ORDER BY ${processColumnReference(additionalProcessing.sort.field, databaseType, undefined, true)} ${additionalProcessing.sort.direction || ''}`;
|
|
824
852
|
}
|
|
825
853
|
else {
|
|
826
854
|
const valueFieldAlias = processColumnReference((pivot.aggregations?.[0]?.valueField ?? '') + disambiguation, databaseType, undefined, false, true);
|
|
827
855
|
const defaultSortField = pivot.sortField || pivot.rowField || valueFieldAlias;
|
|
828
856
|
const defaultSortDirection = pivot.sortDirection || '';
|
|
829
|
-
sortQuery = `ORDER BY ${processColumnReference(defaultSortField, databaseType)} ${defaultSortDirection}`;
|
|
857
|
+
sortQuery = `ORDER BY ${processColumnReference(defaultSortField, databaseType, undefined, true)} ${defaultSortDirection}`;
|
|
830
858
|
}
|
|
831
859
|
const additionalProcessingQuery = `
|
|
832
860
|
SELECT *
|
|
@@ -5,6 +5,7 @@ import { Pivot, PivotData } from '../models/Pivot';
|
|
|
5
5
|
import { QuillReport, QuillReportInternal } from '../models/Report';
|
|
6
6
|
import { DateRangesByColumn, Table, UniqueValuesByTable } from '../models/Tables';
|
|
7
7
|
import { AdditionalProcessing } from './tableProcessing';
|
|
8
|
+
import { CustomField } from '../models/Schema';
|
|
8
9
|
export type ReportBuilderInfo = {
|
|
9
10
|
rows: any[];
|
|
10
11
|
columns: ColumnInternal[];
|
|
@@ -22,19 +23,36 @@ export type ReportBuilderInfo = {
|
|
|
22
23
|
};
|
|
23
24
|
export declare const EMPTY_REPORT: QuillReport;
|
|
24
25
|
export declare const EMPTY_INTERNAL_REPORT: QuillReportInternal;
|
|
25
|
-
export declare function fetchReport(reportId
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
export declare function fetchReport({ reportId, client, tenants, flags, useReportTask, filters, additionalProcessing, dateBucket, customFields, rowsOnly, rowCountOnly, abortSignal, getDefaultDashboardFilters, }: {
|
|
27
|
+
reportId: string;
|
|
28
|
+
client: QuillProviderClient;
|
|
29
|
+
tenants?: {
|
|
30
|
+
tenantField: string;
|
|
31
|
+
tenantIds: (string | number)[];
|
|
32
|
+
}[] | (string | number)[];
|
|
33
|
+
flags?: string[];
|
|
34
|
+
useReportTask?: boolean;
|
|
35
|
+
filters?: any[];
|
|
36
|
+
additionalProcessing?: AdditionalProcessing;
|
|
37
|
+
dateBucket?: string;
|
|
38
|
+
customFields?: any;
|
|
39
|
+
rowsOnly?: boolean;
|
|
40
|
+
rowCountOnly?: boolean;
|
|
41
|
+
abortSignal?: AbortSignal;
|
|
42
|
+
getDefaultDashboardFilters?: boolean;
|
|
43
|
+
}): Promise<{
|
|
29
44
|
report: QuillReportInternal;
|
|
30
45
|
error?: string;
|
|
31
46
|
}>;
|
|
32
|
-
export declare function processReportResponse({ resp, client, filters, dateBucket, additionalProcessing, }: {
|
|
47
|
+
export declare function processReportResponse({ resp, client, filters, dateBucket, additionalProcessing, customFields, }: {
|
|
33
48
|
resp: any;
|
|
34
49
|
client: QuillProviderClient;
|
|
35
50
|
filters?: (DashboardFilter | InternalFilter)[];
|
|
36
51
|
dateBucket?: string;
|
|
37
52
|
additionalProcessing?: AdditionalProcessing;
|
|
53
|
+
customFields?: {
|
|
54
|
+
[tableName: string]: CustomField[];
|
|
55
|
+
} | null;
|
|
38
56
|
}): Promise<QuillReportInternal>;
|
|
39
57
|
export declare function fetchReportInfo(reportId: string, client: QuillProviderClient, tenants?: {
|
|
40
58
|
tenantField: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/utils/report.js
CHANGED
|
@@ -69,10 +69,14 @@ function extractAllReportValuesFromQuillInternalReport(reportInternal) {
|
|
|
69
69
|
queryString: reportInternal.queryString,
|
|
70
70
|
rowCount: reportInternal.rowCount,
|
|
71
71
|
template: reportInternal.template,
|
|
72
|
+
referenceLineYValues: reportInternal.referenceLineYValues,
|
|
73
|
+
referenceLines: reportInternal.referenceLines,
|
|
74
|
+
includeCustomFields: reportInternal.includeCustomFields,
|
|
75
|
+
columnsWithCustomFields: reportInternal.columnsWithCustomFields,
|
|
72
76
|
};
|
|
73
77
|
}
|
|
74
78
|
// TODO: Convert this to take an object rather than a bunch of arguments
|
|
75
|
-
async function fetchReport(reportId, client, tenants, flags, useReportTask = true, filters = [], additionalProcessing, dateBucket, customFields, rowsOnly, rowCountOnly, abortSignal, getDefaultDashboardFilters) {
|
|
79
|
+
async function fetchReport({ reportId, client, tenants, flags, useReportTask = true, filters = [], additionalProcessing, dateBucket, customFields, rowsOnly, rowCountOnly, abortSignal, getDefaultDashboardFilters, }) {
|
|
76
80
|
let reportInfo = undefined;
|
|
77
81
|
let errorMessage = undefined;
|
|
78
82
|
try {
|
|
@@ -107,6 +111,7 @@ async function fetchReport(reportId, client, tenants, flags, useReportTask = tru
|
|
|
107
111
|
filters,
|
|
108
112
|
dateBucket,
|
|
109
113
|
additionalProcessing,
|
|
114
|
+
customFields,
|
|
110
115
|
});
|
|
111
116
|
}
|
|
112
117
|
catch (error) {
|
|
@@ -135,10 +140,10 @@ async function fetchReport(reportId, client, tenants, flags, useReportTask = tru
|
|
|
135
140
|
}
|
|
136
141
|
return { report: reportInfo || exports.EMPTY_INTERNAL_REPORT, error: errorMessage };
|
|
137
142
|
}
|
|
138
|
-
async function processReportResponse({ resp, client, filters, dateBucket, additionalProcessing, }) {
|
|
143
|
+
async function processReportResponse({ resp, client, filters, dateBucket, additionalProcessing, customFields, }) {
|
|
139
144
|
const dashboardItem = {
|
|
140
145
|
...resp,
|
|
141
|
-
filtersApplied: filters?.filter((filter) => filter.filterType in Filter_1.
|
|
146
|
+
filtersApplied: filters?.filter((filter) => filter.filterType in Filter_1.InternalFilterType),
|
|
142
147
|
};
|
|
143
148
|
if (resp.errorMessage) {
|
|
144
149
|
throw new error_1.DataLoadError(resp?.errorMessage, {
|
|
@@ -155,7 +160,14 @@ async function processReportResponse({ resp, client, filters, dateBucket, additi
|
|
|
155
160
|
(0, dataProcessing_1.parseValueFromBigQueryDates)(dashboardItem.compareRows, resp.fields);
|
|
156
161
|
}
|
|
157
162
|
}
|
|
158
|
-
const reportInfo = await (0, dashboard_1.cleanDashboardItem)(
|
|
163
|
+
const reportInfo = await (0, dashboard_1.cleanDashboardItem)({
|
|
164
|
+
item: dashboardItem,
|
|
165
|
+
dashboardFilters: filters,
|
|
166
|
+
client,
|
|
167
|
+
dateBucket,
|
|
168
|
+
additionalProcessing,
|
|
169
|
+
customFields,
|
|
170
|
+
});
|
|
159
171
|
if (additionalProcessing) {
|
|
160
172
|
reportInfo.pagination = additionalProcessing.page;
|
|
161
173
|
reportInfo.sort = additionalProcessing.sort;
|
|
@@ -257,8 +269,13 @@ const formatRowsFromReport = (report, xAxisField, xAxisFormat) => {
|
|
|
257
269
|
if (!report.rows || !report.columns) {
|
|
258
270
|
return [];
|
|
259
271
|
}
|
|
272
|
+
const columns = report.includeCustomFields &&
|
|
273
|
+
report.columnsWithCustomFields &&
|
|
274
|
+
!report.pivot
|
|
275
|
+
? report.columnsWithCustomFields
|
|
276
|
+
: report.columns;
|
|
260
277
|
return report.rows.map((row) => {
|
|
261
|
-
return
|
|
278
|
+
return columns.reduce((formattedRow, column) => {
|
|
262
279
|
// Apply the format function to each field in the row
|
|
263
280
|
const formattedValue = (0, valueFormatter_1.quillFormat)({
|
|
264
281
|
value: row[column.field],
|
|
@@ -282,7 +299,8 @@ function convertInternalReportToReport(report, dashboardFilters, initiator) {
|
|
|
282
299
|
};
|
|
283
300
|
if (formattedReport.pivot &&
|
|
284
301
|
(0, pivotProcessing_1.isValidPivot)(formattedReport.pivot).valid &&
|
|
285
|
-
initiator !== 'useQuill'
|
|
302
|
+
initiator !== 'useQuill' &&
|
|
303
|
+
initiator !== 'Table') {
|
|
286
304
|
let columns = report.pivotColumns ?? report.columns;
|
|
287
305
|
let rows = report.pivotRows ?? report.rows;
|
|
288
306
|
if (report.chartType === 'table') {
|
|
@@ -356,7 +374,7 @@ const fetchReportBuilderDataFromAST = async ({ baseAst, formData, schema, client
|
|
|
356
374
|
if (!table || !tableInfo) {
|
|
357
375
|
throw new Error('No table found');
|
|
358
376
|
}
|
|
359
|
-
const tableData = await (0, tableProcessing_1.fetchTableByAST)({ ...baseAst, where: formData }, client, tenants, processing ?? { page: paginationProcessing_1.DEFAULT_PAGINATION },
|
|
377
|
+
const tableData = await (0, tableProcessing_1.fetchTableByAST)({ ...baseAst, where: formData }, client, tenants, processing ?? { page: paginationProcessing_1.DEFAULT_PAGINATION }, customFields, skipRowCount, undefined, dashboardName);
|
|
360
378
|
if (tableData.error) {
|
|
361
379
|
throw new Error(tableData.error);
|
|
362
380
|
}
|
|
@@ -384,6 +402,8 @@ const fetchReportBuilderDataFromAST = async ({ baseAst, formData, schema, client
|
|
|
384
402
|
};
|
|
385
403
|
}),
|
|
386
404
|
columnInternal: tableData.columns,
|
|
405
|
+
referenceLines: report?.referenceLines,
|
|
406
|
+
referenceLineYValues: report?.referenceLineYValues,
|
|
387
407
|
};
|
|
388
408
|
if (table !== currentTable || previousFormData !== formData) {
|
|
389
409
|
const queryResult = await (0, dataFetcher_1.fetchSqlQuery)({
|
|
@@ -424,7 +444,7 @@ const fetchReportBuilderDataFromAST = async ({ baseAst, formData, schema, client
|
|
|
424
444
|
}
|
|
425
445
|
if (!Object.values(relevantInfo.uniqueStrings[table] ?? {}).length ||
|
|
426
446
|
!(0, fast_deep_equal_1.default)(formData, previousFormData)) {
|
|
427
|
-
relevantInfo.uniqueStrings[table] = await (0, tableProcessing_1.getUniqueStringValues)(tableInfo.columns.filter((column) => column.field === pivot?.columnField), table, client, tenants, customFields, undefined, undefined, query ? query : (report?.queryString ?? ''));
|
|
447
|
+
relevantInfo.uniqueStrings[table] = await (0, tableProcessing_1.getUniqueStringValues)(tableInfo.columns.filter((column) => column.field === pivot?.columnField), table, client, tenants, customFields, undefined, undefined, query ? query : (report?.queryString ?? ''), report?.dashboardName);
|
|
428
448
|
}
|
|
429
449
|
newPivotData = await (0, PivotModal_1.generatePivotTable)({
|
|
430
450
|
pivot,
|
|
@@ -1,8 +1,31 @@
|
|
|
1
1
|
import { QuillProviderClient } from '../models/Client';
|
|
2
|
+
import { ColumnInternal } from '../models/Columns';
|
|
3
|
+
import { CustomField } from '../models/Schema';
|
|
2
4
|
import { Table } from '../models/Tables';
|
|
3
|
-
export declare const getCustomFieldInfo: (client
|
|
4
|
-
|
|
5
|
+
export declare const getCustomFieldInfo: ({ client, tenants, caller, }: {
|
|
6
|
+
client: QuillProviderClient;
|
|
7
|
+
tenants: {
|
|
8
|
+
tenantField: string;
|
|
9
|
+
tenantIds: (string | number)[];
|
|
10
|
+
}[] | (string | number)[];
|
|
11
|
+
caller?: string;
|
|
12
|
+
}) => Promise<{
|
|
13
|
+
[tableName: string]: CustomField[];
|
|
14
|
+
} | null>;
|
|
15
|
+
export declare const getSchemaInfo: ({ client, caller, tenants, tableIds, }: {
|
|
16
|
+
client: QuillProviderClient;
|
|
17
|
+
tenants?: {
|
|
18
|
+
tenantField: string;
|
|
19
|
+
tenantIds: (string | number)[];
|
|
20
|
+
}[] | (string | number)[];
|
|
21
|
+
caller?: string;
|
|
22
|
+
tableIds?: string[];
|
|
23
|
+
}) => Promise<{
|
|
5
24
|
schemaData: Table[];
|
|
6
|
-
customFieldsByTable:
|
|
25
|
+
customFieldsByTable: {
|
|
26
|
+
[tableName: string]: CustomField[];
|
|
27
|
+
} | null;
|
|
28
|
+
schemaWithCustomFields: Table[];
|
|
7
29
|
}>;
|
|
30
|
+
export declare const customFieldToColumnInternal: (customField: CustomField) => ColumnInternal;
|
|
8
31
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AA8BzC,eAAO,MAAM,kBAAkB,iCAI5B;IACD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EACH;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAG,OAAO,CAAC;IAAE,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;CAAE,GAAG,IAAI,CAkFxD,CAAC;AAEF,eAAO,MAAM,aAAa,2CAKvB;IACD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,CAAC,EACJ;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,KAAG,OAAO,CAAC;IACV,UAAU,EAAE,KAAK,EAAE,CAAC;IACpB,mBAAmB,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACnE,sBAAsB,EAAE,KAAK,EAAE,CAAC;CACjC,CA6DA,CAAC;AA0BF,eAAO,MAAM,2BAA2B,gBACzB,WAAW,KACvB,cAaF,CAAC"}
|