@quillsql/react 2.13.34 → 2.13.36
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 +0 -1
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +17 -14
- package/dist/cjs/ChartBuilder.d.ts +4 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +182 -106
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +6 -8
- package/dist/cjs/Dashboard.js +17 -7
- package/dist/cjs/ReportBuilder.d.ts +2 -0
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +399 -272
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +34 -12
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +17 -1
- package/dist/cjs/components/Chart/InternalChart.d.ts +0 -1
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/InternalChart.js +6 -7
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +75 -30
- package/dist/cjs/components/QuillMultiSelectSectionList.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectSectionList.js +21 -16
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +18 -8
- package/dist/cjs/components/QuillSelectWithCombo.js +17 -7
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +2 -2
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +16 -4
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +9 -18
- package/dist/cjs/components/UiComponents.d.ts +2 -1
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +44 -28
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +28 -4
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +9 -1
- package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/cjs/hooks/useVirtualTables.js +11 -35
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +14 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +12 -11
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +63 -18
- package/dist/cjs/models/Client.d.ts +4 -5
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Pivot.d.ts +10 -0
- package/dist/cjs/models/Pivot.d.ts.map +1 -1
- package/dist/cjs/models/Report.d.ts +13 -1
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +799 -64
- package/dist/cjs/utils/astProcessing.d.ts +4 -1
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +2 -2
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +6 -3
- package/dist/cjs/utils/columnProcessing.d.ts +1 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +1 -0
- package/dist/cjs/utils/dashboard.d.ts +2 -1
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +38 -10
- package/dist/cjs/utils/filterProcessing.d.ts +1 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/merge.d.ts +16 -0
- package/dist/cjs/utils/merge.d.ts.map +1 -1
- package/dist/cjs/utils/merge.js +210 -0
- package/dist/cjs/utils/paginationProcessing.d.ts +1 -1
- package/dist/cjs/utils/paginationProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/paginationProcessing.js +3 -2
- package/dist/cjs/utils/pivotConstructor.d.ts +19 -9
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +90 -34
- package/dist/cjs/utils/queryConstructor.d.ts +8 -1
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +276 -310
- package/dist/cjs/utils/report.d.ts +25 -12
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +13 -7
- package/dist/cjs/utils/schema.d.ts +1 -1
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +3 -32
- package/dist/cjs/utils/tableProcessing.d.ts +43 -13
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +140 -75
- package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/textProcessing.js +10 -1
- package/dist/cjs/utils/valueFormatter.d.ts +2 -1
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +18 -14
- package/dist/esm/Chart.d.ts +0 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +0 -6
- package/dist/esm/ChartBuilder.d.ts +4 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +183 -107
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +7 -9
- package/dist/esm/ReportBuilder.d.ts +2 -0
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +400 -273
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +34 -12
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +17 -1
- package/dist/esm/components/Chart/InternalChart.d.ts +0 -1
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/InternalChart.js +6 -6
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +75 -30
- package/dist/esm/components/QuillMultiSelectSectionList.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectSectionList.js +5 -12
- package/dist/esm/components/QuillMultiSelectWithCombo.js +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -2
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +16 -4
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +9 -18
- package/dist/esm/components/UiComponents.d.ts +2 -1
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +27 -21
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +28 -4
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +10 -2
- package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/esm/hooks/useVirtualTables.js +12 -36
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +14 -2
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +12 -11
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +63 -18
- package/dist/esm/models/Client.d.ts +4 -5
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Pivot.d.ts +10 -0
- package/dist/esm/models/Pivot.d.ts.map +1 -1
- package/dist/esm/models/Report.d.ts +13 -1
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +799 -64
- package/dist/esm/utils/astProcessing.d.ts +4 -1
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +2 -2
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +6 -3
- package/dist/esm/utils/columnProcessing.d.ts +1 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +1 -1
- package/dist/esm/utils/dashboard.d.ts +2 -1
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +39 -11
- package/dist/esm/utils/filterProcessing.d.ts +1 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/merge.d.ts +16 -0
- package/dist/esm/utils/merge.d.ts.map +1 -1
- package/dist/esm/utils/merge.js +207 -0
- package/dist/esm/utils/paginationProcessing.d.ts +1 -1
- package/dist/esm/utils/paginationProcessing.d.ts.map +1 -1
- package/dist/esm/utils/paginationProcessing.js +3 -2
- package/dist/esm/utils/pivotConstructor.d.ts +19 -9
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +91 -35
- package/dist/esm/utils/queryConstructor.d.ts +8 -1
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +274 -314
- package/dist/esm/utils/report.d.ts +25 -12
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +13 -7
- package/dist/esm/utils/schema.d.ts +1 -1
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +1 -30
- package/dist/esm/utils/tableProcessing.d.ts +43 -13
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +140 -75
- package/dist/esm/utils/textProcessing.d.ts.map +1 -1
- package/dist/esm/utils/textProcessing.js +10 -1
- package/dist/esm/utils/valueFormatter.d.ts +2 -1
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +18 -14
- package/package.json +1 -1
|
@@ -2,11 +2,21 @@ import { getDateString } from '../internals/ReportBuilder/PivotModal';
|
|
|
2
2
|
import { isStringType, processColumnName } from './columnProcessing';
|
|
3
3
|
import { MAX_PIVOT_UNIQUE_VALUES } from './constants';
|
|
4
4
|
import { getData } from './dataFetcher';
|
|
5
|
+
import { parseValueFromBigQueryDates } from './dataProcessing';
|
|
5
6
|
import { getComparisonInterval } from './dates';
|
|
6
|
-
import {
|
|
7
|
+
import { mergeComparisonPivotColumns, mergeComparisonPivotRows } from './merge';
|
|
8
|
+
import { additionalProcessingOnPivotQuery, generatePivotQuery, generateRowCountQuery, } from './queryConstructor';
|
|
7
9
|
import { snakeCaseToTitleCase } from './textProcessing';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
export async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount = true, }) {
|
|
11
|
+
let sqlQuery = pivotQuery;
|
|
12
|
+
let comparisonPivotSql = comparisonPivotQuery;
|
|
13
|
+
const databaseType = client.databaseType || 'postgresql';
|
|
14
|
+
if (!pivotQuery &&
|
|
15
|
+
pivot.columnField &&
|
|
16
|
+
!pivot.columnValues &&
|
|
17
|
+
!distinctStrings) {
|
|
18
|
+
throw 'No distinct strings provided for column field';
|
|
19
|
+
}
|
|
10
20
|
let comparisonInterval = undefined;
|
|
11
21
|
if (dateFilter && dateFilter.comparisonRange) {
|
|
12
22
|
comparisonInterval = getComparisonInterval({
|
|
@@ -15,31 +25,48 @@ export async function generatePivotWithSQL(pivot, report, client, dateBucket, da
|
|
|
15
25
|
}, dateBucket);
|
|
16
26
|
}
|
|
17
27
|
if (pivot.rowField && !pivot.rowFieldType) {
|
|
18
|
-
const rowColumn = report
|
|
28
|
+
const rowColumn = report?.columns.find((column) => column.field === pivot.rowField);
|
|
19
29
|
pivot.rowFieldType = rowColumn?.format || 'string';
|
|
20
30
|
}
|
|
21
|
-
let distinctStringValues = undefined;
|
|
22
|
-
if (!distinctStrings && report.rows && pivot.columnField) {
|
|
23
|
-
const distinctValues = Array.from(new Set(report.rows.map((row) => row[pivot.columnField])));
|
|
24
|
-
distinctStringValues = distinctValues
|
|
25
|
-
.filter((value) => value !== null && value !== undefined)
|
|
26
|
-
.map((value) => value.toString());
|
|
27
|
-
}
|
|
28
|
-
if (!report.itemQuery) {
|
|
29
|
-
throw Error('No item query found in report');
|
|
30
|
-
}
|
|
31
31
|
const filteredDistinctStrings = distinctStrings?.filter((value) => value !== null && value !== undefined);
|
|
32
|
-
const
|
|
33
|
-
|
|
32
|
+
const pivotColumnFields = filteredDistinctStrings?.slice(0, MAX_PIVOT_UNIQUE_VALUES);
|
|
33
|
+
if (!pivotQuery && report) {
|
|
34
|
+
if (!report.itemQuery) {
|
|
35
|
+
throw Error('No item query found in report');
|
|
36
|
+
}
|
|
37
|
+
const itemQuery = report.itemQuery[0];
|
|
38
|
+
const comparisonQuery = report.itemQuery[1];
|
|
39
|
+
if (!itemQuery) {
|
|
40
|
+
throw Error('No item query found in report');
|
|
41
|
+
}
|
|
42
|
+
sqlQuery =
|
|
43
|
+
pivotQuery ??
|
|
44
|
+
generatePivotQuery(pivot, itemQuery, databaseType, pivotColumnFields, dateBucket);
|
|
45
|
+
comparisonPivotSql = comparisonQuery
|
|
46
|
+
? generatePivotQuery(pivot, comparisonQuery, databaseType, pivotColumnFields, dateBucket)
|
|
47
|
+
: '';
|
|
48
|
+
}
|
|
34
49
|
if (!sqlQuery) {
|
|
35
50
|
throw 'Error generating pivot query';
|
|
36
51
|
}
|
|
52
|
+
const paginatedSqlQuery = additionalProcessingOnPivotQuery(pivot, sqlQuery, additionalProcessing, client.databaseType);
|
|
53
|
+
const paginatedComparisonQuery = comparisonPivotSql
|
|
54
|
+
? additionalProcessingOnPivotQuery(pivot, comparisonPivotSql, additionalProcessing, client.databaseType)
|
|
55
|
+
: '';
|
|
56
|
+
const preQueries = [paginatedSqlQuery];
|
|
57
|
+
if (getPivotRowCount && report?.chartType === 'table') {
|
|
58
|
+
const pivotRowCountQuery = generateRowCountQuery(sqlQuery, client.databaseType);
|
|
59
|
+
preQueries.push(pivotRowCountQuery);
|
|
60
|
+
}
|
|
61
|
+
if (paginatedComparisonQuery) {
|
|
62
|
+
preQueries.push(paginatedComparisonQuery);
|
|
63
|
+
}
|
|
37
64
|
const hostedBody = {
|
|
38
65
|
metadata: {
|
|
39
|
-
preQueries
|
|
66
|
+
preQueries,
|
|
40
67
|
task: 'query',
|
|
41
68
|
clientId: client.publicKey,
|
|
42
|
-
databaseType:
|
|
69
|
+
databaseType: databaseType,
|
|
43
70
|
getCustomFields: false,
|
|
44
71
|
runQueryConfig: {
|
|
45
72
|
overridePost: true,
|
|
@@ -55,10 +82,33 @@ export async function generatePivotWithSQL(pivot, report, client, dateBucket, da
|
|
|
55
82
|
if (resp.success === false) {
|
|
56
83
|
throw resp.errorMessage;
|
|
57
84
|
}
|
|
58
|
-
|
|
85
|
+
const queryResponseRows = resp?.queryResults?.[0]?.rows || [];
|
|
86
|
+
const queryResponseFields = resp?.queryResults?.[0]?.fields || [];
|
|
87
|
+
const queryComparisonResponseRows = (getPivotRowCount
|
|
88
|
+
? resp?.queryResults?.[2]?.rows
|
|
89
|
+
: resp?.queryResults?.[1]?.rows) || [];
|
|
90
|
+
const queryComparisonResponseFields = (getPivotRowCount
|
|
91
|
+
? resp?.queryResults?.[2]?.fields
|
|
92
|
+
: resp?.queryResults?.[1]?.fields) || [];
|
|
93
|
+
parseValueFromBigQueryDates(queryResponseRows, queryResponseFields);
|
|
94
|
+
parseValueFromBigQueryDates(queryComparisonResponseRows, queryComparisonResponseFields);
|
|
95
|
+
const responseRows = mergeComparisonPivotRows({
|
|
96
|
+
pivot,
|
|
97
|
+
rows: queryResponseRows,
|
|
98
|
+
compRows: queryComparisonResponseRows,
|
|
99
|
+
databaseType,
|
|
100
|
+
dateBucket,
|
|
101
|
+
comparisonInterval,
|
|
102
|
+
columnFieldValues: pivotColumnFields,
|
|
103
|
+
});
|
|
104
|
+
const responseFields = mergeComparisonPivotColumns({
|
|
105
|
+
pivot,
|
|
106
|
+
rows: queryResponseFields,
|
|
107
|
+
compRows: queryComparisonResponseFields,
|
|
108
|
+
});
|
|
59
109
|
const rows = pivot.rowField
|
|
60
|
-
?
|
|
61
|
-
:
|
|
110
|
+
? responseRows.map((row) => !row[pivot.rowField] ? { ...row, [pivot.rowField]: '-' } : row)
|
|
111
|
+
: responseRows;
|
|
62
112
|
if (pivot.columnField && client.databaseType?.toLowerCase() === 'bigquery') {
|
|
63
113
|
rows.forEach((row) => {
|
|
64
114
|
Object.keys(row).forEach((key) => {
|
|
@@ -70,14 +120,14 @@ export async function generatePivotWithSQL(pivot, report, client, dateBucket, da
|
|
|
70
120
|
});
|
|
71
121
|
});
|
|
72
122
|
}
|
|
73
|
-
const columns =
|
|
123
|
+
const columns = responseFields
|
|
74
124
|
?.map((field) => ({
|
|
75
125
|
field: processColumnName(field.name),
|
|
76
126
|
label: snakeCaseToTitleCase(processColumnName(field.name.replace('comparison_', 'comparison '))),
|
|
77
127
|
format: field.name === pivot.rowField
|
|
78
128
|
? 'string'
|
|
79
129
|
: (pivot.valueFieldType ?? pivot.aggregationType === 'percentage')
|
|
80
|
-
? '
|
|
130
|
+
? 'percent'
|
|
81
131
|
: 'whole_number',
|
|
82
132
|
fieldType: field.fieldType,
|
|
83
133
|
jsType: field.jsType,
|
|
@@ -116,7 +166,7 @@ export async function generatePivotWithSQL(pivot, report, client, dateBucket, da
|
|
|
116
166
|
}
|
|
117
167
|
const dateString = getDateString(value, dateFilter?.startDate && dateFilter?.endDate
|
|
118
168
|
? { start: dateFilter.startDate, end: dateFilter.endDate }
|
|
119
|
-
: undefined, dateBucket);
|
|
169
|
+
: undefined, dateBucket, databaseType);
|
|
120
170
|
row[pivot.rowField || ''] = dateString;
|
|
121
171
|
});
|
|
122
172
|
// add a row for each date in the range that doesn't have a value
|
|
@@ -128,7 +178,7 @@ export async function generatePivotWithSQL(pivot, report, client, dateBucket, da
|
|
|
128
178
|
const dateSet = new Set(rows.map((row) => row[pivot.rowField || '']));
|
|
129
179
|
// create a loop that will go through each formatted date and add a row if it doesn't exist going to the current date
|
|
130
180
|
for (let date = dateFilter.startDate; date <= dateFilter.endDate; date = new Date(date.getTime() + 24 * 60 * 60 * 1000)) {
|
|
131
|
-
const formattedDate = getDateString(date.toISOString(), { start: dateFilter.startDate, end: dateFilter.endDate }, dateBucket);
|
|
181
|
+
const formattedDate = getDateString(date.toISOString(), { start: dateFilter.startDate, end: dateFilter.endDate }, dateBucket, databaseType);
|
|
132
182
|
if (!dateSet.has(formattedDate)) {
|
|
133
183
|
const newRow = {};
|
|
134
184
|
newRow[pivot.rowField] = formattedDate;
|
|
@@ -153,16 +203,16 @@ export async function generatePivotWithSQL(pivot, report, client, dateBucket, da
|
|
|
153
203
|
// delete row.__quillRawDate;
|
|
154
204
|
// });
|
|
155
205
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}
|
|
206
|
+
// should be doing this in the query
|
|
207
|
+
// if (pivot.sort) {
|
|
208
|
+
// rows.sort((a: any, b: any) => {
|
|
209
|
+
// if (pivot.sortDirection === 'ASC') {
|
|
210
|
+
// return compareValues(a, b, pivot.sortField || '');
|
|
211
|
+
// } else {
|
|
212
|
+
// return compareValues(b, a, pivot.sortField || '');
|
|
213
|
+
// }
|
|
214
|
+
// });
|
|
215
|
+
// }
|
|
166
216
|
// for the case of count agg on no value field
|
|
167
217
|
columns?.forEach((column) => {
|
|
168
218
|
if (column.label &&
|
|
@@ -182,5 +232,11 @@ export async function generatePivotWithSQL(pivot, report, client, dateBucket, da
|
|
|
182
232
|
return {
|
|
183
233
|
rows: rows,
|
|
184
234
|
columns: columns ?? [],
|
|
235
|
+
rowCount: getPivotRowCount
|
|
236
|
+
? (Number(resp?.queryResults?.[1]?.rows?.[0]?.['row_count']) ??
|
|
237
|
+
rows.length)
|
|
238
|
+
: 0,
|
|
239
|
+
pivotQuery: sqlQuery,
|
|
240
|
+
comparisonPivotQuery: comparisonPivotSql,
|
|
185
241
|
};
|
|
186
242
|
}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { Pivot } from '../models/Pivot';
|
|
2
|
+
import { AdditionalProcessing } from './tableProcessing';
|
|
3
|
+
export declare function processSingleQuotes(value: string, databaseType: string): string;
|
|
4
|
+
export declare function processAggType(aggType: string, hasColumnField?: boolean): string;
|
|
2
5
|
export declare function processColumnReference(column: string, databaseType: string, fallbackOnNull?: string, isPivotColumnFieldAlias?: boolean, isPivotValueFieldAlias?: boolean): string;
|
|
3
6
|
export declare function replaceSpacesWithUnderscores(column: string): string;
|
|
7
|
+
export declare function processDateTrunc(dateBucket: string, rowField: string, databaseType: string, comparisonInterval?: string): string;
|
|
8
|
+
export declare function processValueField(aggType: string, databaseType: string, valueField: string): string;
|
|
4
9
|
export declare function generateCountQuery(fields: string[], query: string, databaseType: string): string;
|
|
5
10
|
export declare function generateDistinctQuery(stringFields: string[], query: string, databaseType: string): string;
|
|
6
11
|
export declare function generateMinMaxDateRangeQueries(columnFields: string[], query: string, databaseType: string): string;
|
|
7
|
-
export declare function generatePivotQuery(pivot: Pivot,
|
|
12
|
+
export declare function generatePivotQuery(pivot: Pivot, itemQuery: string, databaseType: string, distinctStrings?: string[], dateBucket?: string): string | undefined;
|
|
13
|
+
export declare function additionalProcessingOnPivotQuery(pivot: Pivot, query?: string, additionalProcessing?: AdditionalProcessing, databaseType?: string): string | undefined;
|
|
14
|
+
export declare function generateRowCountQuery(query?: string, databaseType?: string): string | undefined;
|
|
8
15
|
//# sourceMappingURL=queryConstructor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAStE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,UAAQ,UAGrE;AAMD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,uBAAuB,CAAC,EAAE,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO,UAkGjC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAmBD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,UA8B5B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,UAYnB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAcrB;AAmFD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAkBrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAkBpB;AA6aD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,KAAK,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,YAAY,SAAe,sBAmD5B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,sBAqB1E"}
|