@quillsql/react 2.12.26 → 2.12.28
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 +17 -2
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +137 -90
- package/dist/cjs/ChartBuilder.d.ts +3 -3
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +30 -23
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +66 -26
- package/dist/cjs/Context.d.ts +1 -0
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +17 -2
- package/dist/cjs/Dashboard.d.ts +6 -1
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +3 -1
- package/dist/cjs/ReportBuilder.d.ts +1 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +12 -10
- package/dist/cjs/SQLEditor.d.ts +10 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +27 -3
- package/dist/cjs/Table.d.ts +15 -1
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +143 -59
- package/dist/cjs/components/Chart/ChartTooltip.d.ts.map +1 -1
- package/dist/cjs/components/Chart/ChartTooltip.js +5 -4
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +52 -15
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +7 -1
- package/dist/cjs/components/Dashboard/TableComponent.d.ts +16 -2
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +2 -14
- package/dist/cjs/components/QuillTable.d.ts +2 -2
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +7 -5
- package/dist/cjs/components/UiComponents.d.ts +3 -3
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +4 -4
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +16 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +155 -80
- package/dist/cjs/utils/constants.d.ts +2 -0
- package/dist/cjs/utils/constants.d.ts.map +1 -0
- package/dist/cjs/utils/constants.js +4 -0
- package/dist/cjs/utils/dashboard.d.ts +1 -0
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +46 -97
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +56 -13
- package/dist/cjs/utils/dates.d.ts +8 -0
- package/dist/cjs/utils/dates.d.ts.map +1 -1
- package/dist/cjs/utils/dates.js +34 -1
- package/dist/cjs/utils/filterProcessing.d.ts +2 -0
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +129 -1
- package/dist/cjs/utils/logging.d.ts +2 -0
- package/dist/cjs/utils/logging.d.ts.map +1 -0
- package/dist/cjs/utils/logging.js +10 -0
- package/dist/cjs/utils/pivotConstructor.d.ts +6 -0
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -0
- package/dist/cjs/utils/pivotConstructor.js +87 -0
- package/dist/cjs/utils/queryConstructor.d.ts +2 -1
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +46 -11
- package/dist/cjs/utils/tableProcessing.d.ts +22 -0
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +87 -1
- package/dist/esm/Chart.d.ts +17 -2
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +140 -93
- package/dist/esm/ChartBuilder.d.ts +3 -3
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +30 -23
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +66 -26
- package/dist/esm/Context.d.ts +1 -0
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +16 -1
- package/dist/esm/Dashboard.d.ts +6 -1
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +3 -1
- package/dist/esm/ReportBuilder.d.ts +1 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +13 -11
- package/dist/esm/SQLEditor.d.ts +10 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +27 -3
- package/dist/esm/Table.d.ts +15 -1
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +146 -62
- package/dist/esm/components/Chart/ChartTooltip.d.ts.map +1 -1
- package/dist/esm/components/Chart/ChartTooltip.js +5 -4
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +52 -15
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +7 -1
- package/dist/esm/components/Dashboard/TableComponent.d.ts +16 -2
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +2 -14
- package/dist/esm/components/QuillTable.d.ts +2 -2
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +7 -5
- package/dist/esm/components/UiComponents.d.ts +3 -3
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +4 -4
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +16 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +153 -80
- package/dist/esm/utils/constants.d.ts +2 -0
- package/dist/esm/utils/constants.d.ts.map +1 -0
- package/dist/esm/utils/constants.js +1 -0
- package/dist/esm/utils/dashboard.d.ts +1 -0
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +45 -97
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +56 -13
- package/dist/esm/utils/dates.d.ts +8 -0
- package/dist/esm/utils/dates.d.ts.map +1 -1
- package/dist/esm/utils/dates.js +31 -0
- package/dist/esm/utils/filterProcessing.d.ts +2 -0
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +126 -0
- package/dist/esm/utils/logging.d.ts +2 -0
- package/dist/esm/utils/logging.d.ts.map +1 -0
- package/dist/esm/utils/logging.js +6 -0
- package/dist/esm/utils/pivotConstructor.d.ts +6 -0
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -0
- package/dist/esm/utils/pivotConstructor.js +83 -0
- package/dist/esm/utils/queryConstructor.d.ts +2 -1
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +44 -10
- package/dist/esm/utils/tableProcessing.d.ts +22 -0
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +85 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../../src/utils/dates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../../src/utils/dates.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,UAYxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,WAa/C;AAED,wBAAgB,qBAAqB,CACnC,eAAe,EAAE;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;CACf,EACD,UAAU,CAAC,EAAE,MAAM,sBAepB;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,qCAW3E"}
|
package/dist/cjs/utils/dates.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isDateFormat = exports.convertComparisonRange = void 0;
|
|
3
|
+
exports.getDateBucketFromRange = exports.getComparisonInterval = exports.isDateFormat = exports.convertComparisonRange = void 0;
|
|
4
|
+
const date_fns_1 = require("date-fns");
|
|
4
5
|
const dateRangePickerUtils_1 = require("../DateRangePicker/dateRangePickerUtils");
|
|
5
6
|
/**
|
|
6
7
|
* Converts the comparison range label to match the date filter range if the
|
|
@@ -27,6 +28,7 @@ exports.convertComparisonRange = convertComparisonRange;
|
|
|
27
28
|
function isDateFormat(xAxisFormat) {
|
|
28
29
|
const DATE_FORMATS = [
|
|
29
30
|
'yyyy',
|
|
31
|
+
'MMM_dd',
|
|
30
32
|
'MMM_yyyy',
|
|
31
33
|
'MMM_dd_yyyy',
|
|
32
34
|
'hh_ap_pm',
|
|
@@ -38,3 +40,34 @@ function isDateFormat(xAxisFormat) {
|
|
|
38
40
|
return isDate;
|
|
39
41
|
}
|
|
40
42
|
exports.isDateFormat = isDateFormat;
|
|
43
|
+
function getComparisonInterval(comparisonRange, dateBucket) {
|
|
44
|
+
const dayCount = (0, date_fns_1.differenceInDays)(comparisonRange.endDate, comparisonRange.startDate);
|
|
45
|
+
if (!isNaN(dayCount)) {
|
|
46
|
+
if (dateBucket === 'month') {
|
|
47
|
+
return dayCount / 30 + ' month';
|
|
48
|
+
}
|
|
49
|
+
else if (dateBucket === 'year') {
|
|
50
|
+
return dayCount / 365 + ' year';
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return dayCount + ' day';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.getComparisonInterval = getComparisonInterval;
|
|
58
|
+
function getDateBucketFromRange(dateRange) {
|
|
59
|
+
const difference = (0, date_fns_1.differenceInDays)(dateRange.end, dateRange.start);
|
|
60
|
+
if (difference < 14) {
|
|
61
|
+
return 'day';
|
|
62
|
+
}
|
|
63
|
+
else if (difference < 60) {
|
|
64
|
+
return 'week';
|
|
65
|
+
}
|
|
66
|
+
else if (difference < 365 * 3) {
|
|
67
|
+
return 'month';
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return 'year';
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.getDateBucketFromRange = getDateBucketFromRange;
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export declare function findAndProcessDateFilter(filters: any[]): any;
|
|
2
|
+
export declare function processFilterFromBackend(filter: any, rows: any[]): any;
|
|
3
|
+
export declare function updateFilter(filter: any, value?: any, comparison?: any): any;
|
|
2
4
|
//# sourceMappingURL=filterProcessing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OA4BhE;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,KAAK,GAAE,GAAU,EACjB,UAAU,GAAE,GAAU,OAuGvB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findAndProcessDateFilter = void 0;
|
|
3
|
+
exports.updateFilter = exports.processFilterFromBackend = exports.findAndProcessDateFilter = void 0;
|
|
4
|
+
const dateRangePickerUtils_1 = require("../DateRangePicker/dateRangePickerUtils");
|
|
4
5
|
function findAndProcessDateFilter(filters) {
|
|
5
6
|
let dateFilter = filters.find((filter) => filter.filterType === 'date_range');
|
|
6
7
|
if (dateFilter) {
|
|
@@ -23,3 +24,130 @@ exports.findAndProcessDateFilter = findAndProcessDateFilter;
|
|
|
23
24
|
function isValidDate(date) {
|
|
24
25
|
return !isNaN(Date.parse(date));
|
|
25
26
|
}
|
|
27
|
+
function processFilterFromBackend(filter, rows) {
|
|
28
|
+
if (filter.filterType === 'date_range') {
|
|
29
|
+
return {
|
|
30
|
+
...filter,
|
|
31
|
+
startDate: new Date(filter.startDate),
|
|
32
|
+
endDate: new Date(filter.endDate),
|
|
33
|
+
options: dateRangePickerUtils_1.defaultOptionsV2,
|
|
34
|
+
comparisonRange: {
|
|
35
|
+
...filter.comparisonRange,
|
|
36
|
+
value: filter.defaultComparisonRange,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (filter.filterType === 'string') {
|
|
41
|
+
const options = rows.map((row) => row[filter.field]);
|
|
42
|
+
const distinctOptions = Array.from(new Set(options)).filter((value) => value !== undefined && value !== null);
|
|
43
|
+
return {
|
|
44
|
+
...filter,
|
|
45
|
+
options: distinctOptions.map((option) => ({
|
|
46
|
+
label: option,
|
|
47
|
+
value: option,
|
|
48
|
+
})),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return filter;
|
|
52
|
+
}
|
|
53
|
+
exports.processFilterFromBackend = processFilterFromBackend;
|
|
54
|
+
function updateFilter(filter, value = null, comparison = null) {
|
|
55
|
+
//for dateObjects only, since values are arrays for dateObjects
|
|
56
|
+
const { selectedValue: _, operator, ...filterWithoutSelectedValue } = filter; // _ is a throwaway variable
|
|
57
|
+
if (filter.filterType === 'string') {
|
|
58
|
+
let selectedValue = {};
|
|
59
|
+
if (value) {
|
|
60
|
+
if (filter.stringFilterType === 'multiselect') {
|
|
61
|
+
const parsedValue = JSON.parse(value);
|
|
62
|
+
if (parsedValue.length === 0) {
|
|
63
|
+
selectedValue = { values: [] };
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
selectedValue = { values: parsedValue, operator: 'IN' };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
selectedValue = { selectedValue: value };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
...filterWithoutSelectedValue,
|
|
75
|
+
...selectedValue,
|
|
76
|
+
dashboardName: name,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (filter.filterType === 'date' || filter.filterType === 'date_range') {
|
|
80
|
+
let presetsOptions = dateRangePickerUtils_1.defaultOptionsV2;
|
|
81
|
+
if (filter.presetRanges) {
|
|
82
|
+
presetsOptions = filter.presetRanges.map((elem) => {
|
|
83
|
+
if (!elem.isStatic) {
|
|
84
|
+
return {
|
|
85
|
+
label: elem.label,
|
|
86
|
+
value: elem.value,
|
|
87
|
+
startDate: dateRangePickerUtils_1.PRIMARY_RANGE[elem.value].start,
|
|
88
|
+
endDate: dateRangePickerUtils_1.PRIMARY_RANGE[elem.value].end,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
label: elem.label,
|
|
93
|
+
value: elem.value,
|
|
94
|
+
startDate: new Date(elem.startDate),
|
|
95
|
+
endDate: new Date(elem.endDate),
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (comparison ||
|
|
100
|
+
(filter.comparison && filter.comparisonRange.value !== 'NO_COMPARISON')) {
|
|
101
|
+
let preset = '';
|
|
102
|
+
if (comparison) {
|
|
103
|
+
preset = filter.preset.label;
|
|
104
|
+
}
|
|
105
|
+
const key = comparison?.value || filter.comparisonRange.value;
|
|
106
|
+
let primaryRange = {
|
|
107
|
+
start: value ? value.startDate : filter.startDate,
|
|
108
|
+
end: value ? value.endDate : filter.endDate,
|
|
109
|
+
};
|
|
110
|
+
if (value && value.preset) {
|
|
111
|
+
preset = value.preset;
|
|
112
|
+
primaryRange = (0, dateRangePickerUtils_1.getRangeFromPresetOptions)(value.preset, presetsOptions);
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
startDate: primaryRange.start,
|
|
116
|
+
endDate: primaryRange.end,
|
|
117
|
+
filterType: 'date_range',
|
|
118
|
+
label: 'Date',
|
|
119
|
+
field: 'date_range',
|
|
120
|
+
preset: { label: preset },
|
|
121
|
+
options: filter.options,
|
|
122
|
+
comparison: true,
|
|
123
|
+
comparisonRange: {
|
|
124
|
+
startDate: dateRangePickerUtils_1.COMPARISON_RANGE[key](primaryRange)?.start,
|
|
125
|
+
endDate: dateRangePickerUtils_1.COMPARISON_RANGE[key](primaryRange)?.end,
|
|
126
|
+
value: key,
|
|
127
|
+
},
|
|
128
|
+
dashboardName: name,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
const primaryRange = value && value.preset
|
|
133
|
+
? (0, dateRangePickerUtils_1.getRangeFromPresetOptions)(value.preset, presetsOptions)
|
|
134
|
+
: {
|
|
135
|
+
start: value?.startDate || filter.startDate,
|
|
136
|
+
end: value?.endDate || filter.endDate,
|
|
137
|
+
};
|
|
138
|
+
const preset = value?.preset ? value.preset : '';
|
|
139
|
+
return {
|
|
140
|
+
...filter,
|
|
141
|
+
preset: { label: preset },
|
|
142
|
+
startDate: primaryRange.start,
|
|
143
|
+
endDate: primaryRange.end,
|
|
144
|
+
filterType: 'date_range',
|
|
145
|
+
field: 'date_range',
|
|
146
|
+
options: filter.options,
|
|
147
|
+
label: 'Date',
|
|
148
|
+
dashboardName: name,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
exports.updateFilter = updateFilter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../src/utils/logging.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,QAKpE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.internalLog = void 0;
|
|
4
|
+
function internalLog(message, ...optionalParams) {
|
|
5
|
+
if (process.env.QUILL_ENV === 'development') {
|
|
6
|
+
const completeMessage = `Quill: ${message}: ${optionalParams.join('\n')}`;
|
|
7
|
+
console.log(completeMessage);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.internalLog = internalLog;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Pivot } from '../internals/ReportBuilder/PivotModal';
|
|
2
|
+
export declare function generatePivotWithSQL(pivot: Pivot, report: any, client: any, dateBucket?: string, dateFilter?: any, distinctStrings?: any): Promise<{
|
|
3
|
+
rows: any;
|
|
4
|
+
columns: any;
|
|
5
|
+
} | undefined>;
|
|
6
|
+
//# sourceMappingURL=pivotConstructor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAiB,MAAM,uCAAuC,CAAC;AAK7E,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,GAAG,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,GAAG,EAChB,eAAe,CAAC,EAAE,GAAG;;;eAkHtB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generatePivotWithSQL = void 0;
|
|
4
|
+
const PivotModal_1 = require("../internals/ReportBuilder/PivotModal");
|
|
5
|
+
const dataFetcher_1 = require("./dataFetcher");
|
|
6
|
+
const dates_1 = require("./dates");
|
|
7
|
+
const queryConstructor_1 = require("./queryConstructor");
|
|
8
|
+
async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilter, distinctStrings) {
|
|
9
|
+
if (dateFilter && dateFilter.startDate) {
|
|
10
|
+
dateFilter.start = dateFilter.startDate;
|
|
11
|
+
dateFilter.end = dateFilter.endDate;
|
|
12
|
+
if (dateFilter.comparisonRange && dateFilter.comparisonRange.startDate) {
|
|
13
|
+
dateFilter.comparisonRange.start = dateFilter.comparisonRange.startDate;
|
|
14
|
+
dateFilter.comparisonRange.end = dateFilter.comparisonRange.endDate;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
let comparisonInterval = undefined;
|
|
18
|
+
if (dateFilter && dateFilter.comparisonRange) {
|
|
19
|
+
comparisonInterval = (0, dates_1.getComparisonInterval)({
|
|
20
|
+
startDate: dateFilter.comparisonRange.start,
|
|
21
|
+
endDate: dateFilter.comparisonRange.end,
|
|
22
|
+
}, dateBucket);
|
|
23
|
+
}
|
|
24
|
+
if (pivot.rowField && !pivot.rowFieldType) {
|
|
25
|
+
const rowColumn = report.columns.find((column) => column.field === pivot.rowField);
|
|
26
|
+
pivot.rowFieldType = rowColumn.format;
|
|
27
|
+
}
|
|
28
|
+
const sqlQuery = (0, queryConstructor_1.generatePivotQuery)(pivot, report.itemQuery, report.rows, dateBucket, comparisonInterval, distinctStrings);
|
|
29
|
+
if (sqlQuery && report.rows.length > 0) {
|
|
30
|
+
const hostedBody = {
|
|
31
|
+
metadata: {
|
|
32
|
+
preQueries: [sqlQuery],
|
|
33
|
+
task: 'query',
|
|
34
|
+
orgId: client.customerId || '*',
|
|
35
|
+
clientId: client.publicKey,
|
|
36
|
+
databaseType: client?.databaseType,
|
|
37
|
+
getCustomFields: false,
|
|
38
|
+
runQueryConfig: {
|
|
39
|
+
overridePost: true,
|
|
40
|
+
convertDatatypes: true,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
const cloudBody = { ...hostedBody };
|
|
45
|
+
const resp = await (0, dataFetcher_1.getData)(client, 'query', 'same-origin', hostedBody, cloudBody);
|
|
46
|
+
// With our current design we have to remove the second row field but leave the first for comparison purposes.
|
|
47
|
+
const rows = resp.queryResults[0].rows;
|
|
48
|
+
const columns = resp.queryResults[0].fields
|
|
49
|
+
.map((field) => ({
|
|
50
|
+
field: field.name,
|
|
51
|
+
label: field.name.replace('comparison_', 'comparison '),
|
|
52
|
+
}))
|
|
53
|
+
.filter((field, index) => field.field !== 'comparison_' + pivot.rowField || index === 0);
|
|
54
|
+
if (pivot.rowField && !['string', 'varchar'].includes(pivot.rowFieldType)) {
|
|
55
|
+
rows.forEach((row) => {
|
|
56
|
+
row[pivot.rowField] = (0, PivotModal_1.getDateString)(row[pivot.rowField], undefined, dateBucket);
|
|
57
|
+
});
|
|
58
|
+
// add a row for each date in the range that doesn't have a value
|
|
59
|
+
if (pivot.rowField &&
|
|
60
|
+
!['string', 'varchar'].includes(pivot.rowFieldType) &&
|
|
61
|
+
dateFilter) {
|
|
62
|
+
const dateSet = new Set(rows.map((row) => row[pivot.rowField]));
|
|
63
|
+
// create a loop that will go through each formatted date and add a row if it doesn't exist going to the current date
|
|
64
|
+
for (let date = dateFilter.start ?? dateFilter.startDate; date <= dateFilter.end; date = new Date(date.getTime() + 24 * 60 * 60 * 1000)) {
|
|
65
|
+
const formattedDate = (0, PivotModal_1.getDateString)(date.toDateString(), undefined, dateBucket);
|
|
66
|
+
if (!dateSet.has(formattedDate)) {
|
|
67
|
+
const newRow = {};
|
|
68
|
+
newRow[pivot.rowField] = formattedDate;
|
|
69
|
+
rows.push(newRow);
|
|
70
|
+
dateSet.add(formattedDate);
|
|
71
|
+
}
|
|
72
|
+
// order the rows by the date field
|
|
73
|
+
rows.sort((a, b) => {
|
|
74
|
+
return new Date(a[pivot.rowField]) < new Date(b[pivot.rowField])
|
|
75
|
+
? -1
|
|
76
|
+
: 1;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
rows: rows,
|
|
83
|
+
columns: columns,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.generatePivotWithSQL = generatePivotWithSQL;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Pivot } from '../internals/ReportBuilder/PivotModal';
|
|
2
2
|
export declare function generateDistinctQuery(stringFields: string[], query: string): string;
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function generateMinMaxRangeQueries(columnFields: string[], query: string, databaseType: string): string;
|
|
4
|
+
export declare function generatePivotQuery(pivot: Pivot, itemQueries: string[], rows: any[], dateBucket?: string, comparisonInterval?: string, distinctStrings?: string[]): string | undefined;
|
|
4
5
|
//# 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,uCAAuC,CAAC;AAe9D,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,UAQ1E;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,IAAI,EAAE,GAAG,EAAE,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,kBAAkB,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAe9D,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,UAQ1E;AAED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAcrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,IAAI,EAAE,GAAG,EAAE,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,MAAM,GAAG,SAAS,CAuBpB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generatePivotQuery = exports.generateDistinctQuery = void 0;
|
|
3
|
+
exports.generatePivotQuery = exports.generateMinMaxRangeQueries = exports.generateDistinctQuery = void 0;
|
|
4
4
|
const pivotProcessing_1 = require("./pivotProcessing");
|
|
5
5
|
function processAggType(aggType) {
|
|
6
6
|
if (aggType === 'count')
|
|
@@ -22,30 +22,44 @@ function generateDistinctQuery(stringFields, query) {
|
|
|
22
22
|
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
23
23
|
}
|
|
24
24
|
exports.generateDistinctQuery = generateDistinctQuery;
|
|
25
|
-
function
|
|
25
|
+
function generateMinMaxRangeQueries(columnFields, query, databaseType) {
|
|
26
|
+
const distinctQueries = columnFields.map((field) => {
|
|
27
|
+
const wrappedField = ['postgresql', 'snowflake'].includes(databaseType.toLowerCase())
|
|
28
|
+
? `"${field}"`
|
|
29
|
+
: field;
|
|
30
|
+
return `SELECT '${field}' AS field, MIN(${wrappedField}) AS min_range, MAX(${wrappedField}) AS max_range FROM querytable`;
|
|
31
|
+
});
|
|
32
|
+
const distinctQuery = distinctQueries.join(' UNION ALL ');
|
|
33
|
+
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
34
|
+
}
|
|
35
|
+
exports.generateMinMaxRangeQueries = generateMinMaxRangeQueries;
|
|
36
|
+
function generatePivotQuery(pivot, itemQueries, rows, dateBucket, comparisonInterval, distinctStrings) {
|
|
26
37
|
if (!(0, pivotProcessing_1.isValidPivot)(pivot)) {
|
|
27
38
|
return undefined;
|
|
28
39
|
}
|
|
29
|
-
if (!pivot.rowField) {
|
|
30
|
-
return undefined;
|
|
31
|
-
}
|
|
32
40
|
if (pivot.columnField) {
|
|
33
|
-
return create2DPivotQuery(pivot, itemQueries, rows, dateBucket, comparisonInterval);
|
|
41
|
+
return create2DPivotQuery(pivot, itemQueries, rows, dateBucket, comparisonInterval, distinctStrings);
|
|
34
42
|
}
|
|
35
|
-
|
|
43
|
+
if (pivot.rowField) {
|
|
44
|
+
return create1DPivotQuery(pivot, itemQueries, dateBucket, comparisonInterval);
|
|
45
|
+
}
|
|
46
|
+
return createAggregationValuePivot(pivot, itemQueries);
|
|
36
47
|
}
|
|
37
48
|
exports.generatePivotQuery = generatePivotQuery;
|
|
38
|
-
function create2DPivotQuery(pivot, itemQueries, rows, dateBucket, comparisonInterval) {
|
|
49
|
+
function create2DPivotQuery(pivot, itemQueries, rows, dateBucket, comparisonInterval, distinctStrings) {
|
|
39
50
|
if (!pivot || !pivot.columnField) {
|
|
40
51
|
return undefined;
|
|
41
52
|
}
|
|
42
53
|
// @ts-ignore
|
|
43
54
|
const columnValues = rows.map((row) => row[pivot.columnField]);
|
|
44
|
-
const distinctColumnValues =
|
|
55
|
+
const distinctColumnValues = distinctStrings
|
|
56
|
+
? distinctStrings
|
|
57
|
+
: Array.from(new Set(columnValues)).filter((value) => value !== undefined && value !== null);
|
|
45
58
|
if (distinctColumnValues.length === 0) {
|
|
46
59
|
return undefined;
|
|
47
60
|
}
|
|
48
|
-
if (pivot.rowFieldType
|
|
61
|
+
if (['string', 'varchar'].includes(pivot.rowFieldType) ||
|
|
62
|
+
!pivot.rowFieldType) {
|
|
49
63
|
return create2DStringPivotQuery(pivot, itemQueries, distinctColumnValues);
|
|
50
64
|
}
|
|
51
65
|
return create2DDatePivotQuery(pivot, itemQueries, distinctColumnValues, dateBucket, comparisonInterval);
|
|
@@ -95,7 +109,8 @@ function create2DDatePivotQuery(pivot, itemQueries, distinctColumnValues, dateBu
|
|
|
95
109
|
${joinQuery} ORDER BY qt."${pivot.rowField}"`;
|
|
96
110
|
}
|
|
97
111
|
function create1DPivotQuery(pivot, itemQueries, dateBucket = 'month', comparisonInterval) {
|
|
98
|
-
if (pivot.rowFieldType
|
|
112
|
+
if (['string', 'varchar'].includes(pivot.rowFieldType) ||
|
|
113
|
+
!pivot.rowFieldType) {
|
|
99
114
|
return create1DStringPivotQuery(pivot, itemQueries);
|
|
100
115
|
}
|
|
101
116
|
return create1DDatePivotQuery(pivot, itemQueries, dateBucket, comparisonInterval);
|
|
@@ -132,3 +147,23 @@ function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', compar
|
|
|
132
147
|
SELECT * FROM quill_qt_agg qt
|
|
133
148
|
${joinQuery} ORDER BY qt."${pivot.rowField}"`;
|
|
134
149
|
}
|
|
150
|
+
function createAggregationValuePivot(pivot, itemQueries) {
|
|
151
|
+
let aggregationType = processAggType(pivot.aggregationType);
|
|
152
|
+
if (pivot.aggregationType === 'count') {
|
|
153
|
+
aggregationType = 'COUNT';
|
|
154
|
+
}
|
|
155
|
+
if (!pivot.valueField)
|
|
156
|
+
return undefined;
|
|
157
|
+
const compareCTE = itemQueries[1]
|
|
158
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
159
|
+
: '';
|
|
160
|
+
const compareAggregation = itemQueries[1]
|
|
161
|
+
? `, quill_ct_cw as (SELECT ${aggregationType}(${pivot.valueField}) as comparison_${pivot.valueField} FROM quill_ct)`
|
|
162
|
+
: '';
|
|
163
|
+
const joinQuery = itemQueries[1] ? `CROSS JOIN quill_ct_cw ct` : '';
|
|
164
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
165
|
+
quill_qt_agg AS (SELECT ${aggregationType}(${pivot.valueField}) as ${pivot.valueField} FROM quill_qt)
|
|
166
|
+
${compareCTE} ${compareAggregation}
|
|
167
|
+
SELECT * FROM quill_qt_agg qt
|
|
168
|
+
${joinQuery}`;
|
|
169
|
+
}
|
|
@@ -1,8 +1,30 @@
|
|
|
1
|
+
import { QuillReport } from '../Dashboard';
|
|
1
2
|
import { Column } from '../models/Columns';
|
|
3
|
+
export interface AdditionalProcessing {
|
|
4
|
+
sort?: {
|
|
5
|
+
field: string;
|
|
6
|
+
direction: string;
|
|
7
|
+
};
|
|
8
|
+
page?: {
|
|
9
|
+
currentPage: number;
|
|
10
|
+
rowsPerPage: number;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
2
13
|
export declare const hasColumnAlias: (columns: Column[], referencedColumns: string[]) => boolean;
|
|
3
14
|
export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: any, customFields: any[]) => Promise<{
|
|
4
15
|
[column: string]: {
|
|
5
16
|
[value: string]: boolean;
|
|
6
17
|
};
|
|
7
18
|
} | null>;
|
|
19
|
+
export declare const getDateRangeByColumns: (columns: Column[], query: string, client: any, customFields: any[]) => Promise<{
|
|
20
|
+
[column: string]: {
|
|
21
|
+
dateRange: {
|
|
22
|
+
start: Date;
|
|
23
|
+
end: Date;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
} | null>;
|
|
27
|
+
export declare const getPaginatedRows: (report: QuillReport, client: any, processing?: any, filters?: any, customFields?: any) => Promise<{
|
|
28
|
+
[field: string]: any;
|
|
29
|
+
}>;
|
|
8
30
|
//# sourceMappingURL=tableProcessing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAS3C,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,IAAI,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD;AAED,eAAO,MAAM,cAAc,YAChB,MAAM,EAAE,qBACE,MAAM,EAAE,KAC1B,OAUF,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAC1B,MAAM,EAAE,SACV,MAAM,QACP,GAAG,UACD,GAAG,gBACG,GAAG,EAAE;;;;SA6DpB,CAAC;AAkDF,eAAO,MAAM,qBAAqB,YACvB,MAAM,EAAE,SACV,MAAM,UACL,GAAG,gBACG,GAAG,EAAE;;mBAEY;YAAE,KAAK,EAAE,IAAI,CAAC;YAAC,GAAG,EAAE,IAAI,CAAA;SAAE;;SAc1D,CAAC;AAqDF,eAAO,MAAM,gBAAgB,WACnB,WAAW,UACX,GAAG,eACE,GAAG,YACN,GAAG,iBACE,GAAG;;EA4CnB,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUniqueValuesByColumns = exports.hasColumnAlias = void 0;
|
|
3
|
+
exports.getPaginatedRows = exports.getDateRangeByColumns = exports.getUniqueValuesByColumns = exports.hasColumnAlias = void 0;
|
|
4
4
|
const dataFetcher_1 = require("./dataFetcher");
|
|
5
|
+
const errorProcessing_1 = require("./errorProcessing");
|
|
6
|
+
const merge_1 = require("./merge");
|
|
5
7
|
const queryConstructor_1 = require("./queryConstructor");
|
|
6
8
|
const hasColumnAlias = (columns, referencedColumns) => {
|
|
7
9
|
if (!referencedColumns) {
|
|
@@ -97,3 +99,87 @@ const fetchDistinctStrings = async (query, client, customFields) => {
|
|
|
97
99
|
return null;
|
|
98
100
|
}
|
|
99
101
|
};
|
|
102
|
+
const getDateRangeByColumns = async (columns, query, client, customFields) => {
|
|
103
|
+
const columnNames = columns.map((column) => column.field);
|
|
104
|
+
const distinctValueQuery = (0, queryConstructor_1.generateMinMaxRangeQueries)(columnNames, query, client.databaseType);
|
|
105
|
+
const dateRanges = await fetchDateRanges(distinctValueQuery, client, customFields);
|
|
106
|
+
return dateRanges;
|
|
107
|
+
};
|
|
108
|
+
exports.getDateRangeByColumns = getDateRangeByColumns;
|
|
109
|
+
const fetchDateRanges = async (query, client, customFields) => {
|
|
110
|
+
try {
|
|
111
|
+
const hostedBody = {
|
|
112
|
+
metadata: {
|
|
113
|
+
query,
|
|
114
|
+
task: 'query',
|
|
115
|
+
orgId: client.customerId || '*',
|
|
116
|
+
clientId: client.publicKey,
|
|
117
|
+
databaseType: client?.databaseType,
|
|
118
|
+
customFieldsByTable: customFields,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
const cloudBody = { query };
|
|
122
|
+
const data = await (0, dataFetcher_1.getData)(client, 'dashquery', 'same-origin', hostedBody, cloudBody);
|
|
123
|
+
if (data.errorMessage) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
const results = data.rows.reduce((acc, currentValue) => {
|
|
127
|
+
acc[currentValue.field] = {
|
|
128
|
+
dateRange: {
|
|
129
|
+
start: new Date(currentValue.min_range),
|
|
130
|
+
end: new Date(currentValue.max_range),
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
return acc;
|
|
134
|
+
}, {});
|
|
135
|
+
return results;
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
console.error(e);
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
const getPaginatedRows = async (report, client, processing, filters, customFields) => {
|
|
143
|
+
let updatedProcessing = { ...processing };
|
|
144
|
+
if (processing && processing.sort && !updatedProcessing.page) {
|
|
145
|
+
updatedProcessing.page = {};
|
|
146
|
+
updatedProcessing.page.currentPage = 0;
|
|
147
|
+
}
|
|
148
|
+
const minimalFilters = Object.values(filters).length
|
|
149
|
+
? Object.values(filters).map((filter) => {
|
|
150
|
+
const newFilter = { ...filter };
|
|
151
|
+
if (newFilter.filterType === 'date_range') {
|
|
152
|
+
delete newFilter['field'];
|
|
153
|
+
delete newFilter['options'];
|
|
154
|
+
delete newFilter['selectedValue'];
|
|
155
|
+
}
|
|
156
|
+
return newFilter;
|
|
157
|
+
})
|
|
158
|
+
: [];
|
|
159
|
+
const hostedBody = {
|
|
160
|
+
metadata: {
|
|
161
|
+
dashboardItemId: report.id,
|
|
162
|
+
orgId: client?.customerId || '*',
|
|
163
|
+
task: 'item',
|
|
164
|
+
filters: minimalFilters,
|
|
165
|
+
clientId: client?.publicKey,
|
|
166
|
+
databaseType: client?.databaseType,
|
|
167
|
+
additionalProcessing: updatedProcessing,
|
|
168
|
+
forcePagination: true,
|
|
169
|
+
customFields,
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
const cloudBody = {
|
|
173
|
+
id: report.id,
|
|
174
|
+
filters: [],
|
|
175
|
+
};
|
|
176
|
+
const resp = await (0, dataFetcher_1.getData)(client, 'itempost', 'omit', hostedBody, cloudBody);
|
|
177
|
+
(0, errorProcessing_1.processFilterErrorList)(resp);
|
|
178
|
+
if (resp && resp.name !== 'error') {
|
|
179
|
+
if (resp.compareRows) {
|
|
180
|
+
(0, merge_1.mergeComparisonRange)(resp);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return resp.rows;
|
|
184
|
+
};
|
|
185
|
+
exports.getPaginatedRows = getPaginatedRows;
|
package/dist/esm/Chart.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
2
|
import { QuillTheme } from './QuillProvider';
|
|
3
3
|
import { type QuillReport } from './Dashboard';
|
|
4
4
|
import { Filter } from './models/Filter';
|
|
5
|
+
import { MultiSelectComponentProps, SelectComponentProps } from './components/UiComponents';
|
|
6
|
+
import { DateRangePickerComponentProps } from './DateRangePicker/QuillDateRangePicker';
|
|
5
7
|
interface BaseChartProps {
|
|
6
8
|
colors?: string[];
|
|
7
9
|
containerStyle?: React.CSSProperties;
|
|
@@ -99,6 +101,8 @@ export interface ChartProps {
|
|
|
99
101
|
* Whether the date range filter has been disabled.
|
|
100
102
|
*/
|
|
101
103
|
hideDateRangeFilter?: boolean;
|
|
104
|
+
/** Whether to hide the table filters component, deafulted to true */
|
|
105
|
+
hideFilters?: boolean;
|
|
102
106
|
/**
|
|
103
107
|
* Whether the comparison range shows as dashed for date comparison line
|
|
104
108
|
* charts (as opposed to the default solid line).
|
|
@@ -143,6 +147,16 @@ export interface ChartProps {
|
|
|
143
147
|
* A loading component to show when the chart is loading.
|
|
144
148
|
*/
|
|
145
149
|
LoadingComponent?: () => JSX.Element;
|
|
150
|
+
/** A select component prop for the table filters */
|
|
151
|
+
SelectComponent?: (props: SelectComponentProps) => JSX.Element;
|
|
152
|
+
/** A multi select component prop for the table filters */
|
|
153
|
+
MultiSelectComponent?: (props: MultiSelectComponentProps) => JSX.Element;
|
|
154
|
+
/** A date range picker component prop for the table filters */
|
|
155
|
+
DateRangePickerComponent?: (props: DateRangePickerComponentProps) => JSX.Element;
|
|
156
|
+
/** A filter container component component prop for the table filters */
|
|
157
|
+
FilterContainerComponent?: ({ children, }: {
|
|
158
|
+
children: ReactNode;
|
|
159
|
+
}) => JSX.Element;
|
|
146
160
|
/**
|
|
147
161
|
* Styles the top-level container of the Chart.
|
|
148
162
|
*
|
|
@@ -199,7 +213,8 @@ interface ChartDisplayProps extends WithConfig {
|
|
|
199
213
|
onClickChartElement?: (data: any) => void;
|
|
200
214
|
dateBucket?: string;
|
|
201
215
|
overrideTheme?: QuillTheme;
|
|
216
|
+
initialDateFilter?: any;
|
|
202
217
|
}
|
|
203
|
-
export declare const ChartDisplay: ({ reportId, config, colors, className, containerStyle, hideXAxis, hideYAxis, hideCartesianGrid, hideDateRangeFilter, hideHorizontalCartesianGrid, hideVerticalCartesianGrid, hideSubsequentXAxisTicks, cartesianGridLineStyle, cartesianGridLineColor, comparisonLineStyle, isAnimationActive, loading, paginating, error, isComparison, colorMap, LoadingComponent, onPageChange, onSortChange, onClickChartElement, dateBucket, overrideTheme, }: ChartDisplayProps) => import("react/jsx-runtime").JSX.Element;
|
|
218
|
+
export declare const ChartDisplay: ({ reportId, config, colors, className, containerStyle, hideXAxis, hideYAxis, hideCartesianGrid, hideDateRangeFilter, hideHorizontalCartesianGrid, hideVerticalCartesianGrid, hideSubsequentXAxisTicks, cartesianGridLineStyle, cartesianGridLineColor, comparisonLineStyle, isAnimationActive, loading, paginating, error, isComparison, colorMap, LoadingComponent, onPageChange, onSortChange, onClickChartElement, dateBucket, overrideTheme, initialDateFilter, }: ChartDisplayProps) => import("react/jsx-runtime").JSX.Element;
|
|
204
219
|
export default Chart;
|
|
205
220
|
//# sourceMappingURL=Chart.d.ts.map
|
package/dist/esm/Chart.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":"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"}
|