@quillsql/react 2.13.40 → 2.13.42
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 +30 -3
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +483 -182
- 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 +95 -46
- package/dist/cjs/Dashboard.d.ts +6 -3
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +69 -28
- package/dist/cjs/QuillProvider.d.ts +4 -8
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.d.ts +2 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +190 -48
- package/dist/cjs/SQLEditor.d.ts +8 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +94 -10
- 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 +5 -2
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +34 -7
- 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/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +7 -8
- package/dist/cjs/models/Columns.d.ts +1 -0
- package/dist/cjs/models/Columns.d.ts.map +1 -1
- 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 +14 -3
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +79 -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 +9 -6
- 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 +83 -49
- 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 +36 -14
- package/dist/cjs/utils/schema.d.ts +28 -3
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +79 -43
- package/dist/cjs/utils/tableProcessing.d.ts +12 -3
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +36 -8
- package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/textProcessing.js +0 -1
- package/dist/cjs/utils/valueFormatter.d.ts +1 -0
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +55 -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 +30 -3
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +487 -187
- 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 +97 -48
- package/dist/esm/Dashboard.d.ts +6 -3
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +70 -29
- package/dist/esm/QuillProvider.d.ts +4 -8
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.d.ts +2 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +192 -50
- package/dist/esm/SQLEditor.d.ts +8 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +95 -11
- 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 +5 -2
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +32 -6
- 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/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +7 -8
- package/dist/esm/models/Columns.d.ts +1 -0
- package/dist/esm/models/Columns.d.ts.map +1 -1
- 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 +14 -3
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +80 -17
- 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 +9 -6
- 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 +83 -49
- 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 +38 -16
- package/dist/esm/utils/schema.d.ts +28 -3
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +78 -43
- package/dist/esm/utils/tableProcessing.d.ts +12 -3
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +36 -8
- package/dist/esm/utils/textProcessing.d.ts.map +1 -1
- package/dist/esm/utils/textProcessing.js +0 -1
- package/dist/esm/utils/valueFormatter.d.ts +1 -0
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +53 -0
- package/package.json +10 -3
|
@@ -218,7 +218,7 @@ exports.getType = getType;
|
|
|
218
218
|
*/
|
|
219
219
|
function filterSentence(filter) {
|
|
220
220
|
let value = '';
|
|
221
|
-
if (filter.filterType == Filter_1.
|
|
221
|
+
if (filter.filterType == Filter_1.InternalFilterType.NullFilter) {
|
|
222
222
|
return `${(0, textProcessing_1.snakeAndCamelCaseToTitleCase)(filter.field)} ${filter.operator}`;
|
|
223
223
|
}
|
|
224
224
|
else if (filter.value === null || filter.value === undefined) {
|
|
@@ -350,7 +350,7 @@ async function buildQueryFromFilters(baseAst, filters, endpoint, client) {
|
|
|
350
350
|
}
|
|
351
351
|
}
|
|
352
352
|
function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDateFilter) {
|
|
353
|
-
if (customDateFilter.filterType === Filter_1.FilterType.
|
|
353
|
+
if (customDateFilter.filterType === Filter_1.FilterType.Date &&
|
|
354
354
|
customDateFilter.value &&
|
|
355
355
|
typeof customDateFilter.value === 'object' &&
|
|
356
356
|
'startDate' in customDateFilter.value &&
|
|
@@ -363,14 +363,14 @@ function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDateFilter
|
|
|
363
363
|
endDate: new Date(endDate),
|
|
364
364
|
};
|
|
365
365
|
}
|
|
366
|
-
else if (customDateFilter.filterType === Filter_1.FilterType.
|
|
366
|
+
else if (customDateFilter.filterType === Filter_1.FilterType.Date &&
|
|
367
367
|
customDateFilter.value &&
|
|
368
368
|
typeof customDateFilter.value === 'object' &&
|
|
369
369
|
'value' in customDateFilter.value &&
|
|
370
370
|
'unit' in customDateFilter.value) {
|
|
371
371
|
const { value, unit } = customDateFilter.value;
|
|
372
372
|
let processedUnit;
|
|
373
|
-
let processedValue = value;
|
|
373
|
+
let processedValue = value || 1;
|
|
374
374
|
switch (unit) {
|
|
375
375
|
case Filter_1.TimeUnit.Day:
|
|
376
376
|
processedUnit = 'days';
|
|
@@ -453,7 +453,7 @@ function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDateFilter
|
|
|
453
453
|
return dashboardDateFilter;
|
|
454
454
|
}
|
|
455
455
|
}
|
|
456
|
-
else if (customDateFilter.filterType === Filter_1.FilterType.
|
|
456
|
+
else if (customDateFilter.filterType === Filter_1.FilterType.Date &&
|
|
457
457
|
customDateFilter.value &&
|
|
458
458
|
typeof customDateFilter.value === 'string') {
|
|
459
459
|
const parsedDate = (0, date_fns_1.parse)(customDateFilter.value, 'yyyy-mm-dd', new Date());
|
|
@@ -495,14 +495,14 @@ function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDateFilter
|
|
|
495
495
|
return dashboardDateFilter;
|
|
496
496
|
}
|
|
497
497
|
function mergeCustomFilters(filters, customFilters) {
|
|
498
|
-
const customDateFilters = customFilters.filter((filter) => filter.filterType === Filter_1.
|
|
499
|
-
filter.filterType === Filter_1.
|
|
500
|
-
filter.filterType === Filter_1.
|
|
498
|
+
const customDateFilters = customFilters.filter((filter) => filter.filterType === Filter_1.InternalFilterType.DateCustomFilter ||
|
|
499
|
+
filter.filterType === Filter_1.InternalFilterType.DateFilter ||
|
|
500
|
+
filter.filterType === Filter_1.InternalFilterType.DateComparisonFilter);
|
|
501
501
|
if (customDateFilters.length === 0) {
|
|
502
502
|
return filters.concat(customFilters);
|
|
503
503
|
}
|
|
504
504
|
const withoutDate = filters.filter((filter) => filter.filterType !== Filter_1.DashboardFilterType.Date);
|
|
505
|
-
const customWithoutDate = customFilters.filter((filter) => filter.filterType !== Filter_1.
|
|
505
|
+
const customWithoutDate = customFilters.filter((filter) => filter.filterType !== Filter_1.InternalFilterType.DateCustomFilter);
|
|
506
506
|
const withDate = filters.find((filter) => filter.filterType === Filter_1.DashboardFilterType.Date);
|
|
507
507
|
return withoutDate
|
|
508
508
|
.concat([
|
|
@@ -4,5 +4,8 @@
|
|
|
4
4
|
* @param fields - The fields to consider for domain calculation.
|
|
5
5
|
* @returns - An array representing the adjusted domain [min, max].
|
|
6
6
|
*/
|
|
7
|
-
export default function getDomain(data: any[], fields: any[]
|
|
7
|
+
export default function getDomain(data: any[], fields: any[], referenceLines: {
|
|
8
|
+
label: string;
|
|
9
|
+
query: number[];
|
|
10
|
+
}[] | undefined): number[];
|
|
8
11
|
//# sourceMappingURL=getDomain.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDomain.d.ts","sourceRoot":"","sources":["../../../src/utils/getDomain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"getDomain.d.ts","sourceRoot":"","sources":["../../../src/utils/getDomain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAC,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CA6CtI"}
|
|
@@ -7,7 +7,7 @@ exports.default = getDomain;
|
|
|
7
7
|
* @param fields - The fields to consider for domain calculation.
|
|
8
8
|
* @returns - An array representing the adjusted domain [min, max].
|
|
9
9
|
*/
|
|
10
|
-
function getDomain(data, fields) {
|
|
10
|
+
function getDomain(data, fields, referenceLines) {
|
|
11
11
|
const fieldsArray = fields.map((elem) => elem.field);
|
|
12
12
|
const numericValues = [];
|
|
13
13
|
data.forEach((item) => {
|
|
@@ -23,6 +23,16 @@ function getDomain(data, fields) {
|
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
25
|
});
|
|
26
|
+
if (referenceLines) {
|
|
27
|
+
referenceLines.forEach((line) => {
|
|
28
|
+
if (typeof line.query[0] === 'number') {
|
|
29
|
+
numericValues.push(line.query[0]);
|
|
30
|
+
}
|
|
31
|
+
if (typeof line.query[line.query.length - 1] === 'number') {
|
|
32
|
+
numericValues.push(line.query[line.query.length - 1]);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
26
36
|
const [minValue, maxValue] = numericValues.reduce(([min, max], value) => [Math.min(min, value), Math.max(max, value)], [Infinity, -Infinity]);
|
|
27
37
|
if (minValue === 0 && maxValue === 0) {
|
|
28
38
|
return [0, 1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAYvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,gBAAuB,GACxB,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,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,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAYvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,gBAAuB,GACxB,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,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,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,SAAS,CAAC,CAuWrB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,sBAYnD"}
|
|
@@ -29,13 +29,15 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
if (!pivot.aggregations?.length && pivot.aggregationType) {
|
|
32
|
-
pivot.aggregations = [
|
|
32
|
+
pivot.aggregations = [
|
|
33
|
+
{
|
|
33
34
|
aggregationType: pivot.aggregationType,
|
|
34
35
|
valueField: pivot.valueField,
|
|
35
36
|
valueFieldType: pivot.valueFieldType,
|
|
36
37
|
valueField2: pivot.valueField2,
|
|
37
38
|
valueField2Type: pivot.valueField2Type,
|
|
38
|
-
}
|
|
39
|
+
},
|
|
40
|
+
];
|
|
39
41
|
}
|
|
40
42
|
let comparisonInterval = undefined;
|
|
41
43
|
if (dateFilter && dateFilter.comparisonRange) {
|
|
@@ -88,7 +90,6 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
88
90
|
task: 'query',
|
|
89
91
|
clientId: client.publicKey,
|
|
90
92
|
databaseType: databaseType,
|
|
91
|
-
getCustomFields: false,
|
|
92
93
|
runQueryConfig: {
|
|
93
94
|
overridePost: true,
|
|
94
95
|
convertDatatypes: true,
|
|
@@ -147,7 +148,7 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
147
148
|
label: (0, textProcessing_1.snakeCaseToTitleCase)((0, columnProcessing_1.processColumnName)(field.name.replace('comparison_', 'comparison '))),
|
|
148
149
|
format: field.name === pivot.rowField
|
|
149
150
|
? 'string'
|
|
150
|
-
:
|
|
151
|
+
: pivot.aggregations?.[index]?.aggregationType === 'percentage'
|
|
151
152
|
? 'percent'
|
|
152
153
|
: 'whole_number',
|
|
153
154
|
fieldType: field.fieldType,
|
|
@@ -263,8 +264,10 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
263
264
|
};
|
|
264
265
|
}
|
|
265
266
|
function disambiguatedValueField(pivot) {
|
|
266
|
-
// console.log(pivot);
|
|
267
267
|
if (pivot.aggregations && pivot.aggregations.length > 0) {
|
|
268
|
+
if (!pivot.aggregations[0]?.valueField && !pivot.valueField) {
|
|
269
|
+
return undefined; // avoid returning empty string
|
|
270
|
+
}
|
|
268
271
|
if (pivot.aggregations.length === 1) {
|
|
269
272
|
return pivot.aggregations[0]?.valueField ?? pivot.valueField;
|
|
270
273
|
}
|
|
@@ -272,5 +275,5 @@ function disambiguatedValueField(pivot) {
|
|
|
272
275
|
return `${pivot.aggregations[0].valueField}_${(0, textProcessing_1.matchCasing)(pivot.aggregations[0].aggregationType, pivot.aggregations[0].valueField)}`;
|
|
273
276
|
}
|
|
274
277
|
}
|
|
275
|
-
return pivot.valueField;
|
|
278
|
+
return pivot.valueField ? pivot.valueField : undefined; // avoid returning empty string
|
|
276
279
|
}
|
|
@@ -2,7 +2,7 @@ import { Pivot } from '../models/Pivot';
|
|
|
2
2
|
import { AdditionalProcessing } from './tableProcessing';
|
|
3
3
|
export declare function processSingleQuotes(value: string, databaseType: string): string;
|
|
4
4
|
export declare function processAggType(aggType: string, hasColumnField?: boolean): string;
|
|
5
|
-
export declare function processColumnReference(column: string, databaseType: string, fallbackOnNull?: string,
|
|
5
|
+
export declare function processColumnReference(column: string, databaseType: string, fallbackOnNull?: string, isColumnFieldAlias?: boolean, isValueFieldAlias?: boolean): string;
|
|
6
6
|
export declare function replaceSpacesWithUnderscores(column: string): string;
|
|
7
7
|
export declare function processDateTrunc(dateBucket: string, rowField: string, databaseType: string, comparisonInterval?: string): string;
|
|
8
8
|
export declare function processValueField(aggType: string, databaseType: string, valueField: string): string;
|
|
@@ -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;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,
|
|
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,kBAAkB,CAAC,EAAE,OAAO,EAC5B,iBAAiB,CAAC,EAAE,OAAO,UAkG5B;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;AA82BD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,KAAK,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,YAAY,SAAe,sBAuE5B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,sBAqB1E"}
|
|
@@ -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,16 +357,23 @@ 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 ||
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
360
|
+
if (currentAgg.valueField === currentAgg.valueField2 ||
|
|
361
|
+
!currentAgg.valueField2) {
|
|
362
|
+
caseWhens = [
|
|
363
|
+
...caseWhens,
|
|
364
|
+
...columnFieldValues.map((column) => {
|
|
365
|
+
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${valueExpr} END) / GREATEST(sum(${value2Expr}), 1) AS ${processColumnReference(column + disambiguation, databaseType, '_', true)}`;
|
|
366
|
+
})
|
|
367
|
+
];
|
|
361
368
|
}
|
|
362
369
|
else {
|
|
363
370
|
value2AliasSubstring = `${processColumnReference(currentAgg.valueField2 ?? currentAgg.valueField, databaseType, undefined, true)} AS ${valueField2Alias}`;
|
|
364
|
-
caseWhens =
|
|
365
|
-
|
|
366
|
-
|
|
371
|
+
caseWhens = [
|
|
372
|
+
...caseWhens,
|
|
373
|
+
...columnFieldValues.map((column) => {
|
|
374
|
+
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${valueExpr} END) / GREATEST(sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${value2Expr} END), 1) AS ${processColumnReference(column + disambiguation, databaseType, '_', true)}`;
|
|
375
|
+
})
|
|
376
|
+
];
|
|
367
377
|
}
|
|
368
378
|
}
|
|
369
379
|
else {
|
|
@@ -386,7 +396,7 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
|
|
|
386
396
|
];
|
|
387
397
|
valueAliases = Array.from(new Set(valueAliases));
|
|
388
398
|
const sortQuery = pivot.sort && pivot.sortField && pivot.rowLimit
|
|
389
|
-
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
|
|
399
|
+
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
|
|
390
400
|
: '';
|
|
391
401
|
const pivotQuery = `
|
|
392
402
|
,quill_alias AS (
|
|
@@ -415,7 +425,10 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
|
|
|
415
425
|
if (!isValidBaseQuery || !pivot.columnField || !pivot.rowField) {
|
|
416
426
|
return undefined;
|
|
417
427
|
}
|
|
418
|
-
if (!pivot.aggregations?.[0]?.valueField &&
|
|
428
|
+
if (!pivot.aggregations?.[0]?.valueField &&
|
|
429
|
+
pivot.aggregations?.[0]?.aggregationType !== 'count' &&
|
|
430
|
+
!pivot.valueField &&
|
|
431
|
+
pivot.aggregationType !== 'count')
|
|
419
432
|
throw new Error('No value field provided for pivot');
|
|
420
433
|
if (!pivot.aggregations?.[0]?.aggregationType && !pivot.aggregationType)
|
|
421
434
|
throw new Error('No aggregation type provided for pivot');
|
|
@@ -441,12 +454,14 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
|
|
|
441
454
|
let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString();
|
|
442
455
|
if (disambiguationIndex === '1')
|
|
443
456
|
disambiguationIndex = '';
|
|
444
|
-
const valueFieldAlias = processColumnReference(
|
|
457
|
+
const valueFieldAlias = processColumnReference(currentAgg.valueField ?? rowField, databaseType, undefined, false, true);
|
|
445
458
|
const valueAliasSubstring = currentAgg.valueField
|
|
446
459
|
? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
447
460
|
: '';
|
|
448
461
|
let value2AliasSubstring = '';
|
|
449
|
-
const disambiguationField = Object.values(seenAggs[currentAgg.aggregationType ?? ''] ?? {}).reduce((acc, v) => acc + v) > 1
|
|
462
|
+
const disambiguationField = Object.values(seenAggs[currentAgg.aggregationType ?? ''] ?? {}).reduce((acc, v) => acc + v) > 1
|
|
463
|
+
? `_${currentAgg.valueField}${disambiguationIndex}`
|
|
464
|
+
: '';
|
|
450
465
|
const disambiguation = pivot.aggregations?.length > 1
|
|
451
466
|
? `${disambiguationField}_${disambiguationField ? (0, textProcessing_1.matchCasing)(currentAgg.aggregationType, currentAgg.valueField) : currentAgg.aggregationType}`
|
|
452
467
|
: '';
|
|
@@ -463,7 +478,8 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
|
|
|
463
478
|
? `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`
|
|
464
479
|
: valueField2Alias;
|
|
465
480
|
// 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 ||
|
|
481
|
+
if (currentAgg.valueField === currentAgg.valueField2 ||
|
|
482
|
+
!currentAgg.valueField2) {
|
|
467
483
|
caseWhens = [
|
|
468
484
|
...caseWhens,
|
|
469
485
|
...columnFieldValues.map((column) => {
|
|
@@ -501,7 +517,7 @@ function create2DDatePivotQuery(pivot, itemQuery, columnFieldValues, databaseTyp
|
|
|
501
517
|
];
|
|
502
518
|
valueFieldAliases = Array.from(new Set(valueFieldAliases));
|
|
503
519
|
// 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 || ''} ` : ''}`;
|
|
520
|
+
const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} ` : ''}`;
|
|
505
521
|
const pivotQuery = `
|
|
506
522
|
, quill_alias AS (SELECT ${valueFieldAliases.length > 0 ? `${valueFieldAliases.join(', ')}` : ''} FROM quill_base_table),
|
|
507
523
|
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 +564,7 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
|
|
|
548
564
|
if (disambiguationIndex === '1')
|
|
549
565
|
disambiguationIndex = '';
|
|
550
566
|
// This is the alias (from quill_alias CTE) for the field
|
|
551
|
-
const valueFieldAlias = processColumnReference(
|
|
567
|
+
const valueFieldAlias = processColumnReference(currentAgg.valueField || rowField || 'count', databaseType, undefined, false, true);
|
|
552
568
|
// In the base query, we select the raw column.
|
|
553
569
|
const valueAliasSubstring = currentAgg.valueField
|
|
554
570
|
? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
@@ -571,10 +587,13 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
|
|
|
571
587
|
if ((currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool') {
|
|
572
588
|
value2Expr = `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`;
|
|
573
589
|
}
|
|
574
|
-
value2AliasSubstring =
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
590
|
+
value2AliasSubstring =
|
|
591
|
+
currentAgg.valueField2 &&
|
|
592
|
+
currentAgg.valueField !== currentAgg.valueField2
|
|
593
|
+
? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
|
|
594
|
+
: '';
|
|
595
|
+
const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
|
|
596
|
+
!currentAgg.valueField2
|
|
578
597
|
? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
|
|
579
598
|
: `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
|
|
580
599
|
quillAggSelects = [
|
|
@@ -595,7 +614,7 @@ function create1DStringPivotQuery(pivot, itemQuery, databaseType) {
|
|
|
595
614
|
});
|
|
596
615
|
valueFieldAliases = Array.from(new Set(valueFieldAliases));
|
|
597
616
|
const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit
|
|
598
|
-
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
|
|
617
|
+
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
|
|
599
618
|
: ''}`;
|
|
600
619
|
const pivotQuery = `, quill_alias AS (
|
|
601
620
|
SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowAlias}${valueFieldAliases.length > 0 ? `, ${valueFieldAliases.join(', ')}` : ''}
|
|
@@ -620,7 +639,9 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
|
|
|
620
639
|
}
|
|
621
640
|
const rowField = pivot.rowField || '';
|
|
622
641
|
const rowFieldAlias = processColumnReference(rowField, databaseType, undefined);
|
|
623
|
-
let quillAggSelects = [
|
|
642
|
+
let quillAggSelects = [
|
|
643
|
+
`${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(rowField, databaseType)}`,
|
|
644
|
+
];
|
|
624
645
|
let valueFieldAliases = [];
|
|
625
646
|
const seenAggs = {};
|
|
626
647
|
pivot.aggregations?.forEach((currentAgg) => {
|
|
@@ -639,7 +660,7 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
|
|
|
639
660
|
let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString() ?? '';
|
|
640
661
|
if (disambiguationIndex === '1')
|
|
641
662
|
disambiguationIndex = '';
|
|
642
|
-
const valueFieldAlias = processColumnReference(
|
|
663
|
+
const valueFieldAlias = processColumnReference(currentAgg.valueField || rowField || 'count', databaseType, undefined, false, true);
|
|
643
664
|
const valueAliasSubstring = currentAgg.valueField
|
|
644
665
|
? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
645
666
|
: '';
|
|
@@ -657,14 +678,17 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
|
|
|
657
678
|
throw new Error('No value field provided for percentage aggregation');
|
|
658
679
|
}
|
|
659
680
|
const valueField2Alias = processColumnReference(currentAgg.valueField2 ?? currentAgg.valueField, databaseType, undefined, false, true);
|
|
660
|
-
value2AliasSubstring =
|
|
661
|
-
|
|
662
|
-
|
|
681
|
+
value2AliasSubstring =
|
|
682
|
+
currentAgg.valueField2 &&
|
|
683
|
+
currentAgg.valueField !== currentAgg.valueField2
|
|
684
|
+
? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
|
|
685
|
+
: '';
|
|
663
686
|
let value2Expr = valueField2Alias;
|
|
664
687
|
if ((currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool') {
|
|
665
688
|
value2Expr = `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`;
|
|
666
689
|
}
|
|
667
|
-
const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
|
|
690
|
+
const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
|
|
691
|
+
!currentAgg.valueField2
|
|
668
692
|
? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
|
|
669
693
|
: `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
|
|
670
694
|
quillAggSelects = [
|
|
@@ -685,7 +709,7 @@ function create1DDatePivotQuery(pivot, itemQuery, dateBucket = 'month', database
|
|
|
685
709
|
});
|
|
686
710
|
valueFieldAliases = Array.from(new Set(valueFieldAliases));
|
|
687
711
|
// 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 || ''} ` : ''}`;
|
|
712
|
+
const sortQuery = `${pivot.sort && pivot.sortField && pivot.rowLimit ? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} ` : ''}`;
|
|
689
713
|
const pivotQuery = `, quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueFieldAliases.length > 0 ? `, ${valueFieldAliases.join(', ')}` : ''}
|
|
690
714
|
FROM quill_base_table),
|
|
691
715
|
quill_qt_agg AS (SELECT ${quillAggSelects.join(', ')}
|
|
@@ -721,7 +745,7 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
|
|
|
721
745
|
let disambiguationIndex = seenAggs[currentAgg.aggregationType ?? '']?.[currentAgg.valueField ?? '']?.toString() ?? '';
|
|
722
746
|
if (disambiguationIndex === '1')
|
|
723
747
|
disambiguationIndex = '';
|
|
724
|
-
const valueFieldAlias = processColumnReference(
|
|
748
|
+
const valueFieldAlias = processColumnReference(currentAgg.valueField || 'count', databaseType, undefined, false, true);
|
|
725
749
|
const valueAliasSubstring = currentAgg.valueField
|
|
726
750
|
? `${processColumnReference(currentAgg.valueField, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
727
751
|
: '';
|
|
@@ -731,9 +755,10 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
|
|
|
731
755
|
: '';
|
|
732
756
|
// If the field type is bool, wrap it in a CASE WHEN
|
|
733
757
|
let valueExpr = !currentAgg.valueField ? '*' : valueFieldAlias;
|
|
734
|
-
valueExpr =
|
|
735
|
-
|
|
736
|
-
|
|
758
|
+
valueExpr =
|
|
759
|
+
currentAgg.valueFieldType === 'bool'
|
|
760
|
+
? `CASE WHEN ${valueFieldAlias} THEN 1 ELSE 0 END`
|
|
761
|
+
: valueExpr;
|
|
737
762
|
if (currentAgg.aggregationType === 'percentage') {
|
|
738
763
|
if (!currentAgg.valueField) {
|
|
739
764
|
throw new Error('No value field provided for percentage aggregation');
|
|
@@ -742,10 +767,13 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
|
|
|
742
767
|
const value2Expr = (currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool'
|
|
743
768
|
? `CASE WHEN ${valueField2Alias} THEN 1 ELSE 0 END`
|
|
744
769
|
: valueField2Alias;
|
|
745
|
-
value2AliasSubstring =
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
770
|
+
value2AliasSubstring =
|
|
771
|
+
currentAgg.valueField2 &&
|
|
772
|
+
currentAgg.valueField !== currentAgg.valueField2
|
|
773
|
+
? `${processColumnReference(currentAgg.valueField2, databaseType, undefined, true)} AS ${valueField2Alias}`
|
|
774
|
+
: '';
|
|
775
|
+
const percentageExpr = currentAgg.valueField === currentAgg.valueField2 ||
|
|
776
|
+
!currentAgg.valueField2
|
|
749
777
|
? `sum(${valueExpr}) / ${(currentAgg.valueField2Type ?? currentAgg.valueFieldType) === 'bool' ? 'COUNT(*)' : 'SUM(sum(' + valueExpr + ')) OVER ()'}`
|
|
750
778
|
: `sum(${valueExpr}) / GREATEST(sum(${value2Expr}), 1)`;
|
|
751
779
|
quillAggSelects = [
|
|
@@ -766,7 +794,7 @@ function createAggregationValuePivot(pivot, itemQuery, databaseType) {
|
|
|
766
794
|
});
|
|
767
795
|
valueFieldAliases = Array.from(new Set(valueFieldAliases));
|
|
768
796
|
const sortQuery = pivot.sort && pivot.sortField && pivot.rowLimit
|
|
769
|
-
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType)} ${pivot.sortDirection || ''} `
|
|
797
|
+
? ` ORDER BY ${processColumnReference(pivot.sortField, databaseType, undefined, true)} ${pivot.sortDirection || ''} `
|
|
770
798
|
: '';
|
|
771
799
|
const pivotQuery = `, quill_alias AS (
|
|
772
800
|
SELECT ${valueFieldAliases.join(', ')} FROM quill_base_table
|
|
@@ -796,7 +824,13 @@ function additionalProcessingOnPivotQuery(pivot, query, additionalProcessing, da
|
|
|
796
824
|
}
|
|
797
825
|
if (!pivot.aggregations || pivot.aggregations.length === 0) {
|
|
798
826
|
if (pivot.aggregationType) {
|
|
799
|
-
pivot.aggregations = [
|
|
827
|
+
pivot.aggregations = [
|
|
828
|
+
{
|
|
829
|
+
aggregationType: pivot.aggregationType,
|
|
830
|
+
valueField: pivot.valueField,
|
|
831
|
+
valueField2: pivot.valueField2,
|
|
832
|
+
},
|
|
833
|
+
];
|
|
800
834
|
}
|
|
801
835
|
else {
|
|
802
836
|
throw new Error('No aggregations provided for pivot');
|
|
@@ -820,13 +854,13 @@ function additionalProcessingOnPivotQuery(pivot, query, additionalProcessing, da
|
|
|
820
854
|
? `_${(0, textProcessing_1.matchCasing)(pivot.aggregations?.[0]?.aggregationType, pivot.aggregations?.[0]?.valueField)}`
|
|
821
855
|
: '';
|
|
822
856
|
if (additionalProcessing.sort) {
|
|
823
|
-
sortQuery = `ORDER BY ${processColumnReference(additionalProcessing.sort.field, databaseType)} ${additionalProcessing.sort.direction || ''}`;
|
|
857
|
+
sortQuery = `ORDER BY ${processColumnReference(additionalProcessing.sort.field, databaseType, undefined, true)} ${additionalProcessing.sort.direction || ''}`;
|
|
824
858
|
}
|
|
825
859
|
else {
|
|
826
860
|
const valueFieldAlias = processColumnReference((pivot.aggregations?.[0]?.valueField ?? '') + disambiguation, databaseType, undefined, false, true);
|
|
827
861
|
const defaultSortField = pivot.sortField || pivot.rowField || valueFieldAlias;
|
|
828
862
|
const defaultSortDirection = pivot.sortDirection || '';
|
|
829
|
-
sortQuery = `ORDER BY ${processColumnReference(defaultSortField, databaseType)} ${defaultSortDirection}`;
|
|
863
|
+
sortQuery = `ORDER BY ${processColumnReference(defaultSortField, databaseType, undefined, true)} ${defaultSortDirection}`;
|
|
830
864
|
}
|
|
831
865
|
const additionalProcessingQuery = `
|
|
832
866
|
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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"}
|