@quillsql/react 2.12.27 → 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.map +1 -1
- package/dist/cjs/Chart.js +34 -17
- 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.map +1 -1
- 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.map +1 -1
- package/dist/cjs/Table.js +17 -7
- 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/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.map +1 -1
- package/dist/cjs/utils/dashboard.js +26 -96
- 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/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.map +1 -1
- package/dist/esm/Chart.js +34 -17
- 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.map +1 -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.map +1 -1
- package/dist/esm/Table.js +17 -7
- 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/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.map +1 -1
- package/dist/esm/utils/dashboard.js +27 -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/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
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;
|
|
@@ -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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":"AACA,OAAO,EAA4C,SAAS,EAAE,MAAM,OAAO,CAAC;AAa5E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":"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"}
|
package/dist/esm/Chart.js
CHANGED
|
@@ -25,7 +25,8 @@ import { DashboardFilter } from './components/Dashboard/DashboardFilter';
|
|
|
25
25
|
import { QuillSelectComponent } from './components/QuillSelect';
|
|
26
26
|
import { QuillMultiSelectComponent } from './components/QuillMultiSelect';
|
|
27
27
|
import { QuillDateRangePicker, } from './DateRangePicker/QuillDateRangePicker';
|
|
28
|
-
|
|
28
|
+
import { MAX_COLUMN_ROWS_LIMIT } from './utils/constants';
|
|
29
|
+
const MAX_ROWS_FOR_GENERIC_TABLE = 500;
|
|
29
30
|
// @ts-ignore
|
|
30
31
|
function sumByKey(arr, key) {
|
|
31
32
|
// @ts-ignore
|
|
@@ -174,12 +175,13 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
|
|
|
174
175
|
const [chartFilters, setChartFilters] = useState([]);
|
|
175
176
|
const [previousPage, setPreviousPage] = useState(0);
|
|
176
177
|
const [filterUpdateIndex, setFilterUpdateIndex] = useState(-1);
|
|
178
|
+
const [useReport, setUseReport] = useState(true);
|
|
177
179
|
const theme = useTheme();
|
|
178
180
|
const onPageChange = (page) => {
|
|
179
181
|
if ((previousPage < page.currentPage &&
|
|
180
|
-
(page.currentPage * page.rowsPerPage) %
|
|
182
|
+
(page.currentPage * page.rowsPerPage) % MAX_COLUMN_ROWS_LIMIT === 0) ||
|
|
181
183
|
(previousPage > page.currentPage &&
|
|
182
|
-
(previousPage * page.rowsPerPage) %
|
|
184
|
+
(previousPage * page.rowsPerPage) % MAX_COLUMN_ROWS_LIMIT === 0)) {
|
|
183
185
|
getChartDataPaginate({ page });
|
|
184
186
|
}
|
|
185
187
|
setPreviousPage(page.currentPage);
|
|
@@ -264,19 +266,24 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
|
|
|
264
266
|
setPaginating(false);
|
|
265
267
|
}
|
|
266
268
|
};
|
|
267
|
-
const getChartData = async (reportFilterInfo) => {
|
|
269
|
+
const getChartData = async (useReportTask = true, reportFilterInfo) => {
|
|
268
270
|
try {
|
|
269
271
|
if (filterUpdateIndex === reportFilterInfo.updateIndex) {
|
|
270
272
|
return;
|
|
271
273
|
}
|
|
272
274
|
const filters = reportFilterInfo.filters;
|
|
273
275
|
setLoading(true);
|
|
276
|
+
if (!client.databaseType ||
|
|
277
|
+
client.databaseType.toLowerCase() !== 'postgresql') {
|
|
278
|
+
useReportTask = false;
|
|
279
|
+
}
|
|
274
280
|
const hostedBody = {
|
|
275
281
|
metadata: {
|
|
282
|
+
reportId,
|
|
276
283
|
dashboardItemId: reportId,
|
|
277
284
|
orgId: client.customerId || '*',
|
|
278
285
|
clientId: client.publicKey,
|
|
279
|
-
task: 'item',
|
|
286
|
+
task: useReportTask ? 'report' : 'item',
|
|
280
287
|
getDefaultDashboardFilters: filters ? false : true,
|
|
281
288
|
databaseType: client?.databaseType,
|
|
282
289
|
customFields,
|
|
@@ -301,9 +308,11 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
|
|
|
301
308
|
let filterArray = filters;
|
|
302
309
|
// THIS SHOULD ONLY BE UNDEFINED ON INITIAL LOAD
|
|
303
310
|
if (!filterArray) {
|
|
304
|
-
filterArray = resp.filters
|
|
305
|
-
|
|
306
|
-
|
|
311
|
+
filterArray = resp.filters
|
|
312
|
+
? resp.filters.map((filter) => {
|
|
313
|
+
return processFilterFromBackend(filter, resp.rows);
|
|
314
|
+
})
|
|
315
|
+
: [];
|
|
307
316
|
reportFiltersDispatch({
|
|
308
317
|
type: 'UPDATE_REPORT_FILTER',
|
|
309
318
|
id: reportId,
|
|
@@ -329,8 +338,13 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
|
|
|
329
338
|
setLoading(false);
|
|
330
339
|
}
|
|
331
340
|
catch (e) {
|
|
332
|
-
|
|
333
|
-
|
|
341
|
+
if (useReportTask) {
|
|
342
|
+
getChartData(false, reportFilterInfo);
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
console.log('Error fetching chart: ', e);
|
|
346
|
+
setLoading(false);
|
|
347
|
+
}
|
|
334
348
|
}
|
|
335
349
|
};
|
|
336
350
|
useEffect(() => {
|
|
@@ -343,7 +357,7 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
|
|
|
343
357
|
let parsedReportFilters = reportFilters[reportId]
|
|
344
358
|
? reportFilters[reportId]
|
|
345
359
|
: { updateIndex: 0 };
|
|
346
|
-
getChartData(parsedReportFilters);
|
|
360
|
+
getChartData(true, parsedReportFilters);
|
|
347
361
|
}, [client.customerId, reportId, reportFilters[reportId]?.updateIndex]);
|
|
348
362
|
useEffect(() => {
|
|
349
363
|
if (!dashboard || !dashboard[reportId]) {
|
|
@@ -373,7 +387,7 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
|
|
|
373
387
|
return f;
|
|
374
388
|
});
|
|
375
389
|
setChartFilters(updatedFilters);
|
|
376
|
-
getChartData({
|
|
390
|
+
getChartData(true, {
|
|
377
391
|
filters: updatedFilters,
|
|
378
392
|
updateIndex: filterUpdateIndex + 1,
|
|
379
393
|
});
|
|
@@ -413,14 +427,17 @@ export const ChartDisplay = ({ reportId, config, colors, className, containerSty
|
|
|
413
427
|
};
|
|
414
428
|
const [dateFilter, setDateFilter] = useState(initialDateFilter ?? getDateFilter());
|
|
415
429
|
const getYAxisFields = (curDateFilter) => {
|
|
416
|
-
if (config &&
|
|
430
|
+
if (config &&
|
|
431
|
+
config.pivot &&
|
|
432
|
+
config.pivotColumns &&
|
|
433
|
+
config.pivot.columnField) {
|
|
417
434
|
return (config?.pivotColumns
|
|
418
435
|
.slice(1)
|
|
419
436
|
.map((column) => {
|
|
420
437
|
return { ...column, format: config?.yAxisFields[0].format };
|
|
421
438
|
}) ?? []);
|
|
422
439
|
}
|
|
423
|
-
else if (config && config.pivot) {
|
|
440
|
+
else if (config && config.pivot && config.pivotColumns) {
|
|
424
441
|
return (config?.pivotColumns
|
|
425
442
|
.slice(1)
|
|
426
443
|
.map((column) => {
|
|
@@ -462,8 +479,8 @@ export const ChartDisplay = ({ reportId, config, colors, className, containerSty
|
|
|
462
479
|
!config.pivot &&
|
|
463
480
|
config?.chartType !== 'metric' &&
|
|
464
481
|
config?.chartType !== 'table' &&
|
|
465
|
-
|
|
466
|
-
|
|
482
|
+
(config.rowCount > MAX_ROWS_FOR_GENERIC_TABLE ||
|
|
483
|
+
(rows && rows.length > MAX_ROWS_FOR_GENERIC_TABLE))) {
|
|
467
484
|
return (_jsx(ChartError, { className: className, containerStyle: containerStyle, label: `Charts can only display ${MAX_ROWS_FOR_GENERIC_TABLE} rows. Please add a pivot or modify the query.` }));
|
|
468
485
|
}
|
|
469
486
|
else if (!config || loading) {
|
|
@@ -520,7 +537,7 @@ export const ChartDisplay = ({ reportId, config, colors, className, containerSty
|
|
|
520
537
|
numberOfRows = parseInt(config.compareRows[0].count);
|
|
521
538
|
}
|
|
522
539
|
}
|
|
523
|
-
return (_jsx(QuillTable, { rows: formattedRows ?? [],
|
|
540
|
+
return (_jsx(QuillTable, { rows: formattedRows ?? [], rowCount: numberOfRows, columns: columns ?? yAxisFields, currentPage: config.page, sort: config.sort, rowsPerPage: config?.rowsPerPage || 10, containerStyle: {
|
|
524
541
|
width: containerStyle?.width || '100%',
|
|
525
542
|
height: containerStyle?.height || '400px',
|
|
526
543
|
...containerStyle,
|
|
@@ -110,7 +110,7 @@ export interface ChartBuilderProps {
|
|
|
110
110
|
field: string;
|
|
111
111
|
direction: string;
|
|
112
112
|
}) => void;
|
|
113
|
-
|
|
113
|
+
rowCount?: number;
|
|
114
114
|
}) => JSX.Element;
|
|
115
115
|
/**
|
|
116
116
|
* A component that displays error messages.
|
|
@@ -257,7 +257,7 @@ export interface ChartBuilderProps {
|
|
|
257
257
|
direction: string;
|
|
258
258
|
}) => void;
|
|
259
259
|
/** A number used to determine the number of pages in a table for SQL pagination */
|
|
260
|
-
|
|
260
|
+
rowCount?: number;
|
|
261
261
|
/** Loading prop used by the table component */
|
|
262
262
|
isLoading?: boolean;
|
|
263
263
|
/** A callback function triggered when a chart element is clicked */
|
|
@@ -313,7 +313,7 @@ export declare function ChartBuilderWithModal(props: ChartBuilderProps): import(
|
|
|
313
313
|
* ### Chart Builder API
|
|
314
314
|
* @see https://docs.quillsql.com/components/chart-builder
|
|
315
315
|
*/
|
|
316
|
-
export default function ChartBuilder({ TextInputComponent, SelectComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, SubHeaderComponent, LabelComponent, DeleteButtonComponent, TextComponent, PopoverComponent, CardComponent, TableComponent, ModalComponent, LoadingComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, FormContainer, isOpen, isHorizontalView, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, showDashboardDropdown, onAddToDashboardComplete, onDelete, report, recommendedPivots: rp, createdPivots: cp, destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton, hideSubmitButton, hideDateRangeFilter, initialUniqueValues, pivotRecommendationsEnabled, onSortChange, onPageChange,
|
|
316
|
+
export default function ChartBuilder({ TextInputComponent, SelectComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, SubHeaderComponent, LabelComponent, DeleteButtonComponent, TextComponent, PopoverComponent, CardComponent, TableComponent, ModalComponent, LoadingComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, FormContainer, isOpen, isHorizontalView, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, showDashboardDropdown, onAddToDashboardComplete, onDelete, report, recommendedPivots: rp, createdPivots: cp, destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton, hideSubmitButton, hideDateRangeFilter, initialUniqueValues, pivotRecommendationsEnabled, onSortChange, onPageChange, rowCount, isLoading, isComparison, onClickChartElement, }: ChartBuilderProps): import("react/jsx-runtime").JSX.Element | null;
|
|
317
317
|
export declare function DashboardFilterModal({ isOpen, setIsOpen, issues, ModalComponent, ButtonComponent, }: {
|
|
318
318
|
isOpen: boolean;
|
|
319
319
|
setIsOpen: (e: boolean) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartBuilder.d.ts","sourceRoot":"","sources":["../../src/ChartBuilder.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAOZ,SAAS,EACV,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChartBuilder.d.ts","sourceRoot":"","sources":["../../src/ChartBuilder.tsx"],"names":[],"mappings":"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"}
|