@quillsql/react 2.11.24 → 2.11.26
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 +16 -0
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +20 -17
- package/dist/cjs/ChartBuilder.d.ts +7 -20
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +37 -34
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +3 -3
- package/dist/cjs/Dashboard.d.ts +2 -1
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.d.ts +6 -4
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +208 -133
- package/dist/cjs/SQLEditor.d.ts +4 -11
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +31 -97
- 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 +3 -3
- package/dist/cjs/components/Dashboard/DashboardFilter.js +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +9 -12
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +12 -10
- package/dist/cjs/components/QuillTable.d.ts +4 -1
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +1 -1
- package/dist/cjs/components/ReportBuilder/convert.d.ts +2 -2
- package/dist/cjs/internals/ReportBuilder/PivotList.d.ts +27 -24
- package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotList.js +9 -7
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +9 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +53 -43
- package/dist/cjs/models/Columns.d.ts +11 -0
- package/dist/cjs/models/Columns.d.ts.map +1 -0
- package/dist/cjs/models/Columns.js +2 -0
- package/dist/cjs/models/Tables.d.ts +0 -8
- package/dist/cjs/models/Tables.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.d.ts +3 -0
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -0
- package/dist/cjs/utils/astProcessing.js +20 -0
- package/dist/cjs/utils/columnProcessing.d.ts +9 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -0
- package/dist/cjs/utils/columnProcessing.js +207 -0
- package/dist/cjs/utils/dashboard.js +9 -9
- package/dist/cjs/utils/pivotProcessing.d.ts +2 -1
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +3 -8
- package/dist/cjs/utils/tableProcessing.d.ts +2 -2
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +1 -3
- 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 +12 -1
- package/dist/esm/Chart.d.ts +16 -0
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +20 -17
- package/dist/esm/ChartBuilder.d.ts +7 -20
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +37 -34
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +3 -3
- package/dist/esm/Dashboard.d.ts +2 -1
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.d.ts +6 -4
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +204 -129
- package/dist/esm/SQLEditor.d.ts +4 -11
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +30 -95
- 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 +3 -3
- package/dist/esm/components/Dashboard/DashboardFilter.js +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +9 -12
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +12 -10
- package/dist/esm/components/QuillTable.d.ts +4 -1
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +1 -1
- package/dist/esm/components/ReportBuilder/convert.d.ts +2 -2
- package/dist/esm/internals/ReportBuilder/PivotList.d.ts +27 -24
- package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotList.js +9 -7
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +9 -2
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +55 -45
- package/dist/esm/models/Columns.d.ts +11 -0
- package/dist/esm/models/Columns.d.ts.map +1 -0
- package/dist/esm/models/Columns.js +1 -0
- package/dist/esm/models/Tables.d.ts +0 -8
- package/dist/esm/models/Tables.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.d.ts +3 -0
- package/dist/esm/utils/astProcessing.d.ts.map +1 -0
- package/dist/esm/utils/astProcessing.js +16 -0
- package/dist/esm/utils/columnProcessing.d.ts +9 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -0
- package/dist/esm/utils/columnProcessing.js +201 -0
- package/dist/esm/utils/dashboard.js +9 -9
- package/dist/esm/utils/pivotProcessing.d.ts +2 -1
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +3 -8
- package/dist/esm/utils/tableProcessing.d.ts +2 -2
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +1 -3
- 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 +11 -0
- package/package.json +1 -1
- package/dist/cjs/utils/types.d.ts +0 -4
- package/dist/cjs/utils/types.d.ts.map +0 -1
- package/dist/cjs/utils/types.js +0 -52
- package/dist/cjs/utils/valueFormatterCSV.d.ts +0 -17
- package/dist/cjs/utils/valueFormatterCSV.d.ts.map +0 -1
- package/dist/cjs/utils/valueFormatterCSV.js +0 -99
- package/dist/esm/utils/types.d.ts +0 -4
- package/dist/esm/utils/types.d.ts.map +0 -1
- package/dist/esm/utils/types.js +0 -48
- package/dist/esm/utils/valueFormatterCSV.d.ts +0 -17
- package/dist/esm/utils/valueFormatterCSV.d.ts.map +0 -1
- package/dist/esm/utils/valueFormatterCSV.js +0 -95
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { ButtonComponentProps } from '../../components/UiComponents';
|
|
3
|
+
import { Column } from '../../models/Columns';
|
|
3
4
|
export interface Pivot {
|
|
4
5
|
rowField: string;
|
|
5
6
|
rowFieldType: string;
|
|
@@ -62,7 +63,7 @@ export interface PivotModalProps {
|
|
|
62
63
|
showUpdatePivot: any;
|
|
63
64
|
setShowUpdatePivot: any;
|
|
64
65
|
data: any;
|
|
65
|
-
columns:
|
|
66
|
+
columns: Column[];
|
|
66
67
|
theme: any;
|
|
67
68
|
isOpen: any;
|
|
68
69
|
setIsOpen: any;
|
|
@@ -96,7 +97,13 @@ export declare function generatePivotTableYAxis(pivot: Pivot, cols: {
|
|
|
96
97
|
}[];
|
|
97
98
|
export declare function generatePivotTitle(pivot: Pivot): string;
|
|
98
99
|
export declare function isDateField(fieldType: string): boolean;
|
|
99
|
-
export declare function generatePivotTable(pivot: Pivot, data: any, dateRange:
|
|
100
|
+
export declare function generatePivotTable(pivot: Pivot, data: any, dateRange: {
|
|
101
|
+
start: Date;
|
|
102
|
+
end: Date;
|
|
103
|
+
} | undefined, isComparison: boolean, rowLimit?: number, compRange?: {
|
|
104
|
+
start: Date;
|
|
105
|
+
end: Date;
|
|
106
|
+
} | undefined): {
|
|
100
107
|
rows: any[];
|
|
101
108
|
columns: {
|
|
102
109
|
label: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"AAAA,OAAc,EAOZ,SAAS,EACV,MAAM,OAAO,CAAC;AAoBf,OAAO,EACL,oBAAoB,EAIrB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,12 @@ import { useCallback, useContext, useMemo, useState, useEffect, useRef, } from '
|
|
|
3
3
|
import { ClientContext } from '../../Context';
|
|
4
4
|
import { getDataFromCloud } from '../../utils/dataFetcher';
|
|
5
5
|
import { PivotList, PivotCard } from './PivotList';
|
|
6
|
-
import { differenceInDays, eachDayOfInterval, eachMonthOfInterval, eachWeekOfInterval, eachYearOfInterval, endOfDay, isWithinInterval, subMilliseconds,
|
|
6
|
+
import { differenceInDays, eachDayOfInterval, eachMonthOfInterval, eachWeekOfInterval, eachYearOfInterval, endOfDay, isWithinInterval, subMilliseconds, } from 'date-fns';
|
|
7
7
|
import { valueFormatter } from '../../utils/valueFormatter';
|
|
8
8
|
import { numberFormatOptions, dateFormatOptions } from '../../ChartBuilder';
|
|
9
9
|
import { snakeCaseToTitleCase } from '../../utils/textProcessing';
|
|
10
10
|
import { QuillErrorMessageComponent, QuillPivotColumnContainer, QuillPivotRowContainer, } from '../../components/UiComponents';
|
|
11
|
-
import { isNumericColumnType,
|
|
11
|
+
import { isNumericColumnType, } from '../../components/ReportBuilder/ast';
|
|
12
12
|
import { QuillCard } from '../../components/QuillCard';
|
|
13
13
|
import { cleanPivot, getPossiblePivotFieldOptions, isValidPivot, } from '../../utils/pivotProcessing';
|
|
14
14
|
import { hashCode } from '../../utils/crypto';
|
|
@@ -43,7 +43,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
|
|
|
43
43
|
const getDistinctValues = async () => {
|
|
44
44
|
if (columns) {
|
|
45
45
|
const stringColumns = columns.filter((column) => {
|
|
46
|
-
return
|
|
46
|
+
return column.format === 'string';
|
|
47
47
|
});
|
|
48
48
|
if (stringColumns.length === 0) {
|
|
49
49
|
const possibleColumns = getPossiblePivotFieldOptions(columns, {});
|
|
@@ -78,9 +78,14 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
|
|
|
78
78
|
setPivotCardWidth(width);
|
|
79
79
|
}
|
|
80
80
|
};
|
|
81
|
-
|
|
81
|
+
if (rowFieldRef.current && colFieldRef.current) {
|
|
82
82
|
calculatePivotCardSize();
|
|
83
|
-
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
setTimeout(() => {
|
|
86
|
+
calculatePivotCardSize();
|
|
87
|
+
}, 500);
|
|
88
|
+
}
|
|
84
89
|
}, [showUpdatePivot, isOpen]);
|
|
85
90
|
useEffect(() => {
|
|
86
91
|
if (pivotRowField && data && columns) {
|
|
@@ -148,15 +153,6 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
|
|
|
148
153
|
pivotValueField,
|
|
149
154
|
pivotAggregation,
|
|
150
155
|
]);
|
|
151
|
-
useEffect(() => {
|
|
152
|
-
setSelectedPivotIndex(-1);
|
|
153
|
-
setSelectedPivotType('');
|
|
154
|
-
setPivotRowField(undefined);
|
|
155
|
-
setPivotColumnField(undefined);
|
|
156
|
-
setPivotValueField(undefined);
|
|
157
|
-
setPivotAggregation(undefined);
|
|
158
|
-
setErrors([]);
|
|
159
|
-
}, [selectedTable]);
|
|
160
156
|
useEffect(() => {
|
|
161
157
|
if (!initialUniqueValues) {
|
|
162
158
|
return;
|
|
@@ -437,7 +433,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
|
|
|
437
433
|
}), width: 200 }), _jsx(SelectComponent, { id: "pivot-row-field", label: "Aggregation type", value: pivotAggregation, onChange: (e) => {
|
|
438
434
|
if (e.target.value !== 'count' &&
|
|
439
435
|
pivotValueField &&
|
|
440
|
-
!numberFormatOptions.includes(columns.find((col) => col.field === pivotValueField)
|
|
436
|
+
!numberFormatOptions.includes(columns.find((col) => col.field === pivotValueField).format)) {
|
|
441
437
|
setPivotValueField(null);
|
|
442
438
|
}
|
|
443
439
|
pivotFieldChange('aggregationType', e.target.value);
|
|
@@ -558,7 +554,7 @@ function castValueToDate(value) {
|
|
|
558
554
|
}
|
|
559
555
|
return new Date(value);
|
|
560
556
|
}
|
|
561
|
-
function
|
|
557
|
+
function getLatestDate(a, b) {
|
|
562
558
|
return a > b ? a : b;
|
|
563
559
|
}
|
|
564
560
|
function getEarliestDate(a, b) {
|
|
@@ -569,7 +565,7 @@ function getDateRange(dateRange, column, data) {
|
|
|
569
565
|
const ONE_CENTURY_IN_MILLISECONDS = 100 * 365 * 24 * 60 * 60 * 1000;
|
|
570
566
|
const maxDate = new Date(currentTime + ONE_CENTURY_IN_MILLISECONDS);
|
|
571
567
|
const minDate = new Date(0);
|
|
572
|
-
if (!dateRange
|
|
568
|
+
if (!dateRange) {
|
|
573
569
|
if (data.length == 0 || !data[0][column]) {
|
|
574
570
|
return { start: new Date(), end: new Date() };
|
|
575
571
|
}
|
|
@@ -580,22 +576,30 @@ function getDateRange(dateRange, column, data) {
|
|
|
580
576
|
end: firstDate || new Date(),
|
|
581
577
|
};
|
|
582
578
|
}
|
|
583
|
-
let earliestDate =
|
|
584
|
-
let
|
|
579
|
+
let earliestDate = undefined;
|
|
580
|
+
let latestDate = undefined;
|
|
581
|
+
for (let i = 0; i < data.length; i++) {
|
|
582
|
+
if (earliestDate && latestDate) {
|
|
583
|
+
break;
|
|
584
|
+
}
|
|
585
|
+
const value = castValueToDate(data[i][column]);
|
|
586
|
+
earliestDate = value && value > minDate ? value : null;
|
|
587
|
+
latestDate = value && value < maxDate ? value : null;
|
|
588
|
+
}
|
|
589
|
+
if (!earliestDate || !latestDate) {
|
|
590
|
+
return {
|
|
591
|
+
start: earliestDate || new Date(),
|
|
592
|
+
end: latestDate || new Date(),
|
|
593
|
+
};
|
|
594
|
+
}
|
|
585
595
|
for (let i = 0; i < data.length; i++) {
|
|
586
596
|
if (data[i][column]) {
|
|
587
597
|
const value = castValueToDate(data[i][column]);
|
|
588
|
-
if (lastestDate && lastestDate > minDate) {
|
|
589
|
-
lastestDate = value;
|
|
590
|
-
}
|
|
591
598
|
if (value && value < maxDate) {
|
|
592
|
-
|
|
593
|
-
|
|
599
|
+
latestDate =
|
|
600
|
+
latestDate === null ? value : getLatestDate(latestDate, value);
|
|
594
601
|
}
|
|
595
602
|
if (value && value > minDate) {
|
|
596
|
-
if (earliestDate && earliestDate < minDate) {
|
|
597
|
-
earliestDate = value;
|
|
598
|
-
}
|
|
599
603
|
earliestDate =
|
|
600
604
|
earliestDate === null
|
|
601
605
|
? value
|
|
@@ -604,40 +608,40 @@ function getDateRange(dateRange, column, data) {
|
|
|
604
608
|
}
|
|
605
609
|
}
|
|
606
610
|
return {
|
|
607
|
-
start: earliestDate,
|
|
608
|
-
end:
|
|
611
|
+
start: earliestDate || new Date(),
|
|
612
|
+
end: latestDate || new Date(),
|
|
609
613
|
};
|
|
610
614
|
}
|
|
611
615
|
else {
|
|
612
|
-
return
|
|
616
|
+
return dateRange;
|
|
613
617
|
}
|
|
614
618
|
}
|
|
615
619
|
function getDateBuckets(dateRange, column, data) {
|
|
616
|
-
if (!dateRange
|
|
620
|
+
if (!dateRange) {
|
|
617
621
|
return eachMonthOfInterval(getDateRange(dateRange, column, data));
|
|
618
622
|
}
|
|
619
|
-
const dayDifference = differenceInDays(
|
|
623
|
+
const dayDifference = differenceInDays(dateRange.end, dateRange.start);
|
|
620
624
|
return dayDifferenceToInterval(dayDifference, dateRange);
|
|
621
625
|
}
|
|
622
626
|
function getCompDateBuckets(dateRange, compDateRange, column, data) {
|
|
623
|
-
if (!dateRange
|
|
624
|
-
return eachMonthOfInterval(getDateRange(
|
|
627
|
+
if (!dateRange) {
|
|
628
|
+
return eachMonthOfInterval(getDateRange(undefined, column, data));
|
|
625
629
|
}
|
|
626
|
-
const dayDifference = differenceInDays(
|
|
630
|
+
const dayDifference = differenceInDays(dateRange.end, dateRange.start);
|
|
627
631
|
return dayDifferenceToInterval(dayDifference, compDateRange);
|
|
628
632
|
}
|
|
629
633
|
function dayDifferenceToInterval(dayDifference, dateRange) {
|
|
630
634
|
if (dayDifference < 14) {
|
|
631
|
-
return eachDayOfInterval(
|
|
635
|
+
return eachDayOfInterval(dateRange);
|
|
632
636
|
}
|
|
633
637
|
else if (dayDifference < 60) {
|
|
634
|
-
return eachWeekOfInterval(
|
|
638
|
+
return eachWeekOfInterval(dateRange, { weekStartsOn: 1 });
|
|
635
639
|
}
|
|
636
640
|
else if (dayDifference < 365 * 3) {
|
|
637
|
-
return eachMonthOfInterval(
|
|
641
|
+
return eachMonthOfInterval(dateRange);
|
|
638
642
|
}
|
|
639
643
|
else {
|
|
640
|
-
return eachYearOfInterval(
|
|
644
|
+
return eachYearOfInterval(dateRange);
|
|
641
645
|
}
|
|
642
646
|
}
|
|
643
647
|
function getDateString(value, dateRange) {
|
|
@@ -702,23 +706,22 @@ const fixBigQueryData = (data = []) => {
|
|
|
702
706
|
}
|
|
703
707
|
return newData;
|
|
704
708
|
};
|
|
705
|
-
export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1, compRange =
|
|
709
|
+
export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1, compRange = undefined) {
|
|
706
710
|
// If there is no rowField, aggregate on the valueField
|
|
707
711
|
if (!pivot.rowField) {
|
|
708
712
|
return valueFieldAggregation(data, pivot.valueField, pivot.aggregationType, isComparison);
|
|
709
713
|
}
|
|
710
714
|
// Handle edge-case for BigQuery objects.
|
|
711
715
|
data = fixBigQueryData(data);
|
|
712
|
-
if (dateRange
|
|
713
|
-
dateRange = [new Date(0), add(new Date(), { years: 5 })];
|
|
716
|
+
if (!dateRange) {
|
|
714
717
|
if (isDateField(pivot.rowFieldType)) {
|
|
715
718
|
dateRange = getDateRange(dateRange, pivot.rowField, data);
|
|
716
719
|
}
|
|
717
720
|
}
|
|
718
721
|
if (!compRange ||
|
|
719
|
-
isNullUndefinedOrInvalidDate(compRange
|
|
720
|
-
isNullUndefinedOrInvalidDate(compRange
|
|
721
|
-
compRange =
|
|
722
|
+
isNullUndefinedOrInvalidDate(compRange.start) ||
|
|
723
|
+
isNullUndefinedOrInvalidDate(compRange.end)) {
|
|
724
|
+
compRange = undefined;
|
|
722
725
|
}
|
|
723
726
|
const pivotRows = [];
|
|
724
727
|
const uniqueRows = (isDateField(pivot.rowFieldType)
|
|
@@ -975,6 +978,13 @@ export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimi
|
|
|
975
978
|
}
|
|
976
979
|
}
|
|
977
980
|
});
|
|
981
|
+
if (pivot.aggregationType === 'max' || pivot.aggregationType === 'min') {
|
|
982
|
+
for (const [key, value] of Object.entries(row)) {
|
|
983
|
+
if (value === '-Infinity' || value === 'Infinity') {
|
|
984
|
+
row[key] = null;
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
}
|
|
978
988
|
pivotRows.push(row);
|
|
979
989
|
});
|
|
980
990
|
const columns = [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Columns.d.ts","sourceRoot":"","sources":["../../../src/models/Columns.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tables.d.ts","sourceRoot":"","sources":["../../../src/models/Tables.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"Tables.d.ts","sourceRoot":"","sources":["../../../src/models/Tables.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;CAAG;AAEzB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAe5D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function processStarColumn(ast, columns) {
|
|
2
|
+
if (ast.columns === '*') {
|
|
3
|
+
ast.columns = columns.map((column) => {
|
|
4
|
+
return {
|
|
5
|
+
type: 'expr',
|
|
6
|
+
expr: {
|
|
7
|
+
type: 'column_ref',
|
|
8
|
+
table: null,
|
|
9
|
+
column: column.field,
|
|
10
|
+
},
|
|
11
|
+
as: null,
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return ast;
|
|
16
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ColumnInfo } from '../components/ReportBuilder/schema';
|
|
2
|
+
import { Column, ColumnInternal } from '../models/Columns';
|
|
3
|
+
export declare function convertPostgresColumn(field: {
|
|
4
|
+
name: string;
|
|
5
|
+
dataTypeID: number;
|
|
6
|
+
}): ColumnInternal;
|
|
7
|
+
export declare function convertColumnInfoToColumnInternal(columnInfo: ColumnInfo): ColumnInternal;
|
|
8
|
+
export declare function convertFormatToJsType(column: Column): string;
|
|
9
|
+
//# sourceMappingURL=columnProcessing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,cAAc,CAyGjB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AAiFD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY5D"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
export function convertPostgresColumn(field) {
|
|
2
|
+
let format;
|
|
3
|
+
let fieldType;
|
|
4
|
+
let jsType;
|
|
5
|
+
switch (field.dataTypeID) {
|
|
6
|
+
case 16: // bool
|
|
7
|
+
format = 'string';
|
|
8
|
+
break;
|
|
9
|
+
case 20: // int8
|
|
10
|
+
case 21: // int2
|
|
11
|
+
case 23: // int4
|
|
12
|
+
format = 'whole_number';
|
|
13
|
+
break;
|
|
14
|
+
case 700: // float4
|
|
15
|
+
case 701: // float8
|
|
16
|
+
case 1700: // numeric
|
|
17
|
+
format = 'two_decimal_places';
|
|
18
|
+
break;
|
|
19
|
+
case 1082: // date
|
|
20
|
+
case 1083: // time
|
|
21
|
+
case 1184: // timestamptz
|
|
22
|
+
case 1114: // timestamp
|
|
23
|
+
format = 'MMM_dd_yyyy';
|
|
24
|
+
break;
|
|
25
|
+
case 1186: // interval
|
|
26
|
+
case 1043: // varchar
|
|
27
|
+
default:
|
|
28
|
+
format = 'string';
|
|
29
|
+
}
|
|
30
|
+
switch (field.dataTypeID) {
|
|
31
|
+
case 16: // boolean
|
|
32
|
+
fieldType = 'bool';
|
|
33
|
+
break;
|
|
34
|
+
case 20: // int8
|
|
35
|
+
fieldType = 'int8';
|
|
36
|
+
break;
|
|
37
|
+
case 21: // int2
|
|
38
|
+
fieldType = 'int2';
|
|
39
|
+
break;
|
|
40
|
+
case 23: // int4
|
|
41
|
+
fieldType = 'int4';
|
|
42
|
+
break;
|
|
43
|
+
case 700: // float4
|
|
44
|
+
fieldType = 'float4';
|
|
45
|
+
break;
|
|
46
|
+
case 701: // float8
|
|
47
|
+
fieldType = 'float8';
|
|
48
|
+
break;
|
|
49
|
+
case 1700: // numeric
|
|
50
|
+
fieldType = 'numeric';
|
|
51
|
+
break;
|
|
52
|
+
case 1082: // date
|
|
53
|
+
fieldType = 'date';
|
|
54
|
+
break;
|
|
55
|
+
case 1083: // time
|
|
56
|
+
fieldType = 'time';
|
|
57
|
+
break;
|
|
58
|
+
case 1184: // timestamptz
|
|
59
|
+
fieldType = 'timestamptz';
|
|
60
|
+
break;
|
|
61
|
+
case 1186: // interval
|
|
62
|
+
fieldType = 'interval';
|
|
63
|
+
break;
|
|
64
|
+
case 1114: // timestamp
|
|
65
|
+
fieldType = 'timestamp';
|
|
66
|
+
break;
|
|
67
|
+
case 1043: // varchar
|
|
68
|
+
default:
|
|
69
|
+
fieldType = 'varchar';
|
|
70
|
+
}
|
|
71
|
+
switch (field.dataTypeID) {
|
|
72
|
+
case 16: // boolean
|
|
73
|
+
jsType = 'bool';
|
|
74
|
+
break;
|
|
75
|
+
case 20: // int8
|
|
76
|
+
case 21: // int2
|
|
77
|
+
case 23: // int4
|
|
78
|
+
case 700: // float4
|
|
79
|
+
case 701: // float8
|
|
80
|
+
case 1700: // numeric
|
|
81
|
+
jsType = 'number';
|
|
82
|
+
break;
|
|
83
|
+
case 1082: // date
|
|
84
|
+
case 1083: // time
|
|
85
|
+
case 1184: // timestamptz
|
|
86
|
+
case 1186: // interval
|
|
87
|
+
case 1114: // timestamp
|
|
88
|
+
jsType = 'date';
|
|
89
|
+
break;
|
|
90
|
+
case 1043: // varchar
|
|
91
|
+
default:
|
|
92
|
+
jsType = 'string';
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
label: field.name,
|
|
96
|
+
field: field.name,
|
|
97
|
+
format,
|
|
98
|
+
fieldType,
|
|
99
|
+
dataTypeID: field.dataTypeID,
|
|
100
|
+
jsType: jsType,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export function convertColumnInfoToColumnInternal(columnInfo) {
|
|
104
|
+
return {
|
|
105
|
+
label: columnInfo.name,
|
|
106
|
+
field: columnInfo.name,
|
|
107
|
+
format: fieldTypeToFormat(columnInfo.fieldType),
|
|
108
|
+
fieldType: columnInfo.fieldType,
|
|
109
|
+
dataTypeID: fieldTypeToDataTypeID(columnInfo.fieldType),
|
|
110
|
+
jsType: convertFieldTypeToJSType(columnInfo.fieldType),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function fieldTypeToFormat(fieldType) {
|
|
114
|
+
switch (fieldType) {
|
|
115
|
+
case 'bool':
|
|
116
|
+
return 'string';
|
|
117
|
+
case 'int8':
|
|
118
|
+
case 'int2':
|
|
119
|
+
case 'int4':
|
|
120
|
+
return 'whole_number';
|
|
121
|
+
case 'float4':
|
|
122
|
+
case 'float8':
|
|
123
|
+
case 'numeric':
|
|
124
|
+
return 'two_decimal_places';
|
|
125
|
+
case 'date':
|
|
126
|
+
case 'time':
|
|
127
|
+
case 'timestamptz':
|
|
128
|
+
case 'timestamp':
|
|
129
|
+
return 'MMM_dd_yyyy';
|
|
130
|
+
case 'interval':
|
|
131
|
+
case 'varchar':
|
|
132
|
+
default:
|
|
133
|
+
return 'string';
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function fieldTypeToDataTypeID(fieldType) {
|
|
137
|
+
switch (fieldType) {
|
|
138
|
+
case 'bool':
|
|
139
|
+
return 16;
|
|
140
|
+
case 'int8':
|
|
141
|
+
return 20;
|
|
142
|
+
case 'int2':
|
|
143
|
+
return 21;
|
|
144
|
+
case 'int4':
|
|
145
|
+
return 23;
|
|
146
|
+
case 'float4':
|
|
147
|
+
return 700;
|
|
148
|
+
case 'float8':
|
|
149
|
+
return 701;
|
|
150
|
+
case 'numeric':
|
|
151
|
+
return 1700;
|
|
152
|
+
case 'date':
|
|
153
|
+
return 1082;
|
|
154
|
+
case 'time':
|
|
155
|
+
return 1083;
|
|
156
|
+
case 'timestamptz':
|
|
157
|
+
return 1184;
|
|
158
|
+
case 'timestamp':
|
|
159
|
+
return 1114;
|
|
160
|
+
case 'interval':
|
|
161
|
+
return 1186;
|
|
162
|
+
case 'varchar':
|
|
163
|
+
default:
|
|
164
|
+
return 1043;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function convertFieldTypeToJSType(fieldType) {
|
|
168
|
+
switch (fieldType) {
|
|
169
|
+
case 'bool':
|
|
170
|
+
return 'bool';
|
|
171
|
+
case 'int8':
|
|
172
|
+
case 'int2':
|
|
173
|
+
case 'int4':
|
|
174
|
+
case 'float4':
|
|
175
|
+
case 'float8':
|
|
176
|
+
case 'numeric':
|
|
177
|
+
return 'number';
|
|
178
|
+
case 'date':
|
|
179
|
+
case 'time':
|
|
180
|
+
case 'timestamptz':
|
|
181
|
+
case 'timestamp':
|
|
182
|
+
return 'date';
|
|
183
|
+
case 'interval':
|
|
184
|
+
case 'varchar':
|
|
185
|
+
default:
|
|
186
|
+
return 'string';
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
export function convertFormatToJsType(column) {
|
|
190
|
+
switch (column.format) {
|
|
191
|
+
case 'string':
|
|
192
|
+
return 'string';
|
|
193
|
+
case 'whole_number':
|
|
194
|
+
case 'two_decimal_places':
|
|
195
|
+
return 'number';
|
|
196
|
+
case 'MMM_dd_yyyy':
|
|
197
|
+
return 'date';
|
|
198
|
+
default:
|
|
199
|
+
return 'string';
|
|
200
|
+
}
|
|
201
|
+
}
|
|
@@ -117,15 +117,15 @@ function getPivotTable(itemInfo, dashboardFilters, config = undefined) {
|
|
|
117
117
|
const data = itemInfo ? itemInfo : config;
|
|
118
118
|
return pivot && data?.rows
|
|
119
119
|
? generatePivotTable(pivot, JSON.parse(JSON.stringify(data.rows)), // deep copy
|
|
120
|
-
dateFilter?.startDate
|
|
121
|
-
?
|
|
122
|
-
:
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
dateFilter
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
:
|
|
120
|
+
dateFilter?.startDate && dateFilter?.endDate
|
|
121
|
+
? { start: dateFilter.startDate, end: dateFilter.endDate }
|
|
122
|
+
: undefined, Boolean(dateFilter?.comparisonRange?.startDate), -1, dateFilter?.comparisonRange?.startDate &&
|
|
123
|
+
dateFilter?.comparisonRange?.endDate
|
|
124
|
+
? {
|
|
125
|
+
start: dateFilter.comparisonRange.startDate,
|
|
126
|
+
end: dateFilter.comparisonRange.endDate,
|
|
127
|
+
}
|
|
128
|
+
: undefined)
|
|
129
129
|
: null;
|
|
130
130
|
}
|
|
131
131
|
/**
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Pivot } from '../internals/ReportBuilder/PivotModal';
|
|
2
|
+
import { Column } from '../models/Columns';
|
|
2
3
|
export declare function pivotToSql(pivot: Pivot, query: string, client: any): {
|
|
3
4
|
query: string;
|
|
4
5
|
preQueries?: string[];
|
|
5
6
|
runQueryConfig?: any;
|
|
6
7
|
} | undefined;
|
|
7
8
|
export declare function isValidPivot(pivot: Pivot): boolean;
|
|
8
|
-
export declare function getPossiblePivotFieldOptions(columns:
|
|
9
|
+
export declare function getPossiblePivotFieldOptions(columns: Column[], uniqueValues: {
|
|
9
10
|
[field: string]: any;
|
|
10
11
|
}): {
|
|
11
12
|
rowFields: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAkB,MAAM,mBAAmB,CAAC;AAG3D,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,GAAG,GACV;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,SAAS,CAgD5E;AAmDD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,WAgBxC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;;;;EAsCvC;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE;IACf,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC;CAClB,GACA,KAAK,CAqCP"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { dateFormatOptions, numberFormatOptions } from '../ChartBuilder';
|
|
2
|
-
import { isNumericColumnType } from '../components/ReportBuilder/ast';
|
|
3
1
|
import { isIdColumn } from '../components/ReportBuilder/util';
|
|
2
|
+
import { DATE_FORMAT_TYPES, NUMBER_FORMAT_TYPES } from './valueFormatter';
|
|
4
3
|
export function pivotToSql(pivot, query, client) {
|
|
5
4
|
const processedAggType = pivot.aggregationType?.toLowerCase() === 'average'
|
|
6
5
|
? 'avg'
|
|
@@ -105,9 +104,7 @@ export function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
105
104
|
let valueFields = [];
|
|
106
105
|
for (let column of columns) {
|
|
107
106
|
// row fields can be dates or strings
|
|
108
|
-
if (column.format
|
|
109
|
-
column.fieldType === 'date' ||
|
|
110
|
-
dateFormatOptions.includes(column.format)) {
|
|
107
|
+
if (DATE_FORMAT_TYPES.includes(column.format)) {
|
|
111
108
|
rowFields.push(column.field);
|
|
112
109
|
}
|
|
113
110
|
// column fields can be strings
|
|
@@ -124,9 +121,7 @@ export function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
124
121
|
}
|
|
125
122
|
}
|
|
126
123
|
// value fields can be numbers
|
|
127
|
-
if (column.format
|
|
128
|
-
numberFormatOptions.includes(column.format) ||
|
|
129
|
-
isNumericColumnType(column.fieldType)) {
|
|
124
|
+
if (NUMBER_FORMAT_TYPES.includes(column.format)) {
|
|
130
125
|
if (!isIdColumn(column.field)) {
|
|
131
126
|
valueFields.push(column.field);
|
|
132
127
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const getUniqueValuesByColumns: (columns:
|
|
1
|
+
import { Column } from '../models/Columns';
|
|
2
|
+
export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: any) => Promise<{
|
|
3
3
|
[column: string]: {
|
|
4
4
|
[value: string]: boolean;
|
|
5
5
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,eAAO,MAAM,wBAAwB,YAC1B,MAAM,EAAE,SACV,MAAM,QACP,GAAG,UACD,GAAG;;;;SAwDZ,CAAC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { getData } from './dataFetcher';
|
|
2
2
|
import { generateDistinctQuery } from './queryConstructor';
|
|
3
3
|
export const getUniqueValuesByColumns = async (columns, query, rows, client) => {
|
|
4
|
-
const stringNames = columns.map(
|
|
5
|
-
// @ts-ignore
|
|
6
|
-
(column) => column.name || column.field);
|
|
4
|
+
const stringNames = columns.map((column) => column.field);
|
|
7
5
|
const uniqueValues = {};
|
|
8
6
|
if (!client.databaseType ||
|
|
9
7
|
client.databaseType.toLowerCase() === 'bigquery') {
|