@quillsql/react 2.13.24 → 2.13.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 +0 -1
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +28 -16
- package/dist/cjs/ChartBuilder.d.ts +8 -37
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +402 -189
- package/dist/cjs/ChartEditor.d.ts +1 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +31 -167
- package/dist/cjs/Context.d.ts +13 -2
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +32 -12
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +3 -6
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +2 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +7 -3
- package/dist/cjs/ReportBuilder.d.ts +1 -3
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +120 -137
- package/dist/cjs/SQLEditor.d.ts +2 -2
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +47 -24
- package/dist/cjs/components/Chart/BarChart.js +1 -1
- package/dist/cjs/components/Chart/InternalChart.d.ts +25 -0
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -0
- package/dist/cjs/components/Chart/InternalChart.js +385 -0
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +3 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +7 -4
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +8 -5
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +3 -3
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +23 -9
- package/dist/cjs/components/Dashboard/MetricComponent.js +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +1 -1
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +54 -8
- package/dist/cjs/components/ReportBuilder/util.d.ts +1 -0
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +48 -0
- package/dist/cjs/components/UiComponents.d.ts +3 -1
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +4 -4
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +13 -0
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +6 -1
- package/dist/cjs/hooks/useQuill.js +9 -9
- package/dist/cjs/internals/ReportBuilder/PivotList.js +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +3 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +3 -8
- package/dist/cjs/models/Report.d.ts +9 -2
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/models/Report.js +2 -0
- package/dist/cjs/models/Tables.d.ts +5 -6
- package/dist/cjs/models/Tables.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +1 -0
- package/dist/cjs/utils/columnProcessing.d.ts +1 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +4 -0
- package/dist/cjs/utils/constants.d.ts.map +1 -1
- package/dist/cjs/utils/constants.js +6 -2
- package/dist/cjs/utils/dashboard.d.ts +1 -1
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +13 -18
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +2 -2
- package/dist/cjs/utils/filterProcessing.d.ts +5 -2
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +5 -2
- package/dist/cjs/utils/merge.d.ts.map +1 -1
- package/dist/cjs/utils/merge.js +0 -4
- package/dist/cjs/utils/paginationProcessing.d.ts +1 -1
- package/dist/cjs/utils/paginationProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/paginationProcessing.js +1 -4
- package/dist/cjs/utils/pivotConstructor.d.ts +3 -2
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +20 -8
- package/dist/cjs/utils/pivotProcessing.d.ts +5 -2
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.d.ts +1 -1
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +4 -4
- package/dist/cjs/utils/report.d.ts +2 -1
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +23 -24
- package/dist/cjs/utils/tableProcessing.d.ts +18 -5
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +14 -7
- package/dist/cjs/utils/validation.js +1 -1
- package/dist/esm/Chart.d.ts +0 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +28 -16
- package/dist/esm/ChartBuilder.d.ts +8 -37
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +408 -192
- package/dist/esm/ChartEditor.d.ts +1 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +33 -169
- package/dist/esm/Context.d.ts +13 -2
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +32 -12
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +5 -8
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +2 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.js +7 -3
- package/dist/esm/ReportBuilder.d.ts +1 -3
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +120 -137
- package/dist/esm/SQLEditor.d.ts +2 -2
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +48 -25
- package/dist/esm/components/Chart/BarChart.js +1 -1
- package/dist/esm/components/Chart/InternalChart.d.ts +25 -0
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -0
- package/dist/esm/components/Chart/InternalChart.js +379 -0
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +4 -2
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts +7 -4
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +8 -5
- package/dist/esm/components/Dashboard/DataLoader.d.ts +3 -3
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +23 -9
- package/dist/esm/components/Dashboard/MetricComponent.js +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +1 -1
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +54 -8
- package/dist/esm/components/ReportBuilder/util.d.ts +1 -0
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +47 -0
- package/dist/esm/components/UiComponents.d.ts +3 -1
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +4 -4
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +14 -1
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +6 -1
- package/dist/esm/hooks/useQuill.js +9 -9
- package/dist/esm/internals/ReportBuilder/PivotList.js +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +3 -2
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +3 -8
- package/dist/esm/models/Report.d.ts +9 -2
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/models/Report.js +1 -1
- package/dist/esm/models/Tables.d.ts +5 -6
- package/dist/esm/models/Tables.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +2 -1
- package/dist/esm/utils/columnProcessing.d.ts +1 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +3 -0
- package/dist/esm/utils/constants.d.ts.map +1 -1
- package/dist/esm/utils/constants.js +6 -2
- package/dist/esm/utils/dashboard.d.ts +1 -1
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +13 -18
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +2 -2
- package/dist/esm/utils/filterProcessing.d.ts +5 -2
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +5 -2
- package/dist/esm/utils/merge.d.ts.map +1 -1
- package/dist/esm/utils/merge.js +0 -4
- package/dist/esm/utils/paginationProcessing.d.ts +1 -1
- package/dist/esm/utils/paginationProcessing.d.ts.map +1 -1
- package/dist/esm/utils/paginationProcessing.js +1 -4
- package/dist/esm/utils/pivotConstructor.d.ts +3 -2
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +20 -8
- package/dist/esm/utils/pivotProcessing.d.ts +5 -2
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.d.ts +1 -1
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +3 -3
- package/dist/esm/utils/report.d.ts +2 -1
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +24 -25
- package/dist/esm/utils/tableProcessing.d.ts +18 -5
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +15 -8
- package/dist/esm/utils/validation.js +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,6 @@ export declare function processColumnReference(column: string, databaseType: str
|
|
|
3
3
|
export declare function replaceSpacesWithUnderscores(column: string): string;
|
|
4
4
|
export declare function generateCountQuery(fields: string[], query: string, databaseType: string): string;
|
|
5
5
|
export declare function generateDistinctQuery(stringFields: string[], query: string, databaseType: string): string;
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function generateMinMaxDateRangeQueries(columnFields: string[], query: string, databaseType: string): string;
|
|
7
7
|
export declare function generatePivotQuery(pivot: Pivot, itemQueries: string[], databaseType: string, comparisonInterval?: string, distinctStrings?: string[], dateBucket?: string, rowLimit?: number): string | undefined;
|
|
8
8
|
//# sourceMappingURL=queryConstructor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAoBxC,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,uBAAuB,CAAC,EAAE,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO,UAqEjC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAwDD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAYrB;AAiDD,wBAAgB,
|
|
1
|
+
{"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAoBxC,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,uBAAuB,CAAC,EAAE,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO,UAqEjC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAwDD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAYrB;AAiDD,wBAAgB,8BAA8B,CAC5C,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,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAgCpB"}
|
|
@@ -4,7 +4,7 @@ exports.processColumnReference = processColumnReference;
|
|
|
4
4
|
exports.replaceSpacesWithUnderscores = replaceSpacesWithUnderscores;
|
|
5
5
|
exports.generateCountQuery = generateCountQuery;
|
|
6
6
|
exports.generateDistinctQuery = generateDistinctQuery;
|
|
7
|
-
exports.
|
|
7
|
+
exports.generateMinMaxDateRangeQueries = generateMinMaxDateRangeQueries;
|
|
8
8
|
exports.generatePivotQuery = generatePivotQuery;
|
|
9
9
|
const constants_1 = require("./constants");
|
|
10
10
|
const pivotProcessing_1 = require("./pivotProcessing");
|
|
@@ -189,9 +189,9 @@ function generateDistinctQuerySnowflake(stringFields, query) {
|
|
|
189
189
|
const distinctQuery = distinctQueries.join(' UNION ALL ');
|
|
190
190
|
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
191
191
|
}
|
|
192
|
-
function
|
|
193
|
-
const max =
|
|
194
|
-
const min =
|
|
192
|
+
function generateMinMaxDateRangeQueries(columnFields, query, databaseType) {
|
|
193
|
+
const max = 'MAX';
|
|
194
|
+
const min = 'MIN';
|
|
195
195
|
const distinctQueries = columnFields.map((field) => {
|
|
196
196
|
const wrappedField = ['postgresql'].includes(databaseType.toLowerCase())
|
|
197
197
|
? `"${field}"`
|
|
@@ -21,6 +21,7 @@ export type ReportBuilderInfo = {
|
|
|
21
21
|
dateRanges: DateRangesByColumn;
|
|
22
22
|
query: string;
|
|
23
23
|
error?: string;
|
|
24
|
+
itemQuery?: string[];
|
|
24
25
|
};
|
|
25
26
|
export declare const EMPTY_REPORT: QuillReport;
|
|
26
27
|
export declare const EMPTY_INTERNAL_REPORT: QuillReportInternal;
|
|
@@ -45,7 +46,7 @@ export declare function saveReport({ report, dashboardItemId, client, }: {
|
|
|
45
46
|
dashboardItemId?: string;
|
|
46
47
|
client: QuillProviderClient;
|
|
47
48
|
}): Promise<any>;
|
|
48
|
-
export declare const formatRowsFromReport: (report: any) => any;
|
|
49
|
+
export declare const formatRowsFromReport: (report: any, xAxisField?: string, xAxisFormat?: string) => any;
|
|
49
50
|
export declare function convertInternalReportToReport(report: QuillReportInternal, dashboardFilters: DashboardFilter[], initiator?: string): QuillReport;
|
|
50
51
|
export declare const fetchReportBuilderDataFromAST: (baseAst: any, formData: any, schema: Table[], client: QuillProviderClient, pivot?: Pivot, previousFormData?: any, currentTable?: string, previousRelevant?: {
|
|
51
52
|
uniqueStrings: UniqueValuesByTable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,kBAAkB,EAClB,KAAK,EACL,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/utils/report.js
CHANGED
|
@@ -18,7 +18,6 @@ const dataFetcher_1 = require("./dataFetcher");
|
|
|
18
18
|
const dataProcessing_1 = require("./dataProcessing");
|
|
19
19
|
const dates_1 = require("./dates");
|
|
20
20
|
const error_1 = require("./error");
|
|
21
|
-
const logging_1 = require("./logging");
|
|
22
21
|
const paginationProcessing_1 = require("./paginationProcessing");
|
|
23
22
|
const pivotProcessing_1 = require("./pivotProcessing");
|
|
24
23
|
const tableProcessing_1 = require("./tableProcessing");
|
|
@@ -31,7 +30,6 @@ exports.EMPTY_REPORT = {
|
|
|
31
30
|
rows: [],
|
|
32
31
|
columns: [],
|
|
33
32
|
chartType: '',
|
|
34
|
-
dateField: null,
|
|
35
33
|
pivot: null,
|
|
36
34
|
xAxisLabel: '',
|
|
37
35
|
xAxisField: '',
|
|
@@ -111,26 +109,18 @@ async function fetchReport(reportId, client, useReportTask = true, filters = [],
|
|
|
111
109
|
throw error;
|
|
112
110
|
}
|
|
113
111
|
if (error instanceof error_1.DataLoadError) {
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
reportInfo = report;
|
|
118
|
-
errorMessage = error;
|
|
112
|
+
if (!error.data.data) {
|
|
113
|
+
errorMessage = error.message ?? 'Failed to fetch chart';
|
|
114
|
+
reportInfo = exports.EMPTY_INTERNAL_REPORT;
|
|
119
115
|
}
|
|
120
116
|
else {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
id: error.data.data._id,
|
|
129
|
-
error: error.message,
|
|
130
|
-
adminError: error.data.adminErrorMessage,
|
|
131
|
-
};
|
|
132
|
-
errorMessage = error.message;
|
|
133
|
-
}
|
|
117
|
+
reportInfo = {
|
|
118
|
+
...error.data.data,
|
|
119
|
+
id: error.data.data._id,
|
|
120
|
+
error: error.message,
|
|
121
|
+
adminError: error.data.adminErrorMessage,
|
|
122
|
+
};
|
|
123
|
+
errorMessage = error.message;
|
|
134
124
|
}
|
|
135
125
|
}
|
|
136
126
|
else {
|
|
@@ -265,7 +255,7 @@ async function saveReport({ report, dashboardItemId, client, }) {
|
|
|
265
255
|
: { clientId: publicKey }).toString();
|
|
266
256
|
return await (0, dataFetcher_1.getData)(client, `dashedit2?${searchParams}`, 'same-origin', hostedBody, cloudBody);
|
|
267
257
|
}
|
|
268
|
-
const formatRowsFromReport = (report) => {
|
|
258
|
+
const formatRowsFromReport = (report, xAxisField, xAxisFormat) => {
|
|
269
259
|
if (!report.rows || !report.columns) {
|
|
270
260
|
return [];
|
|
271
261
|
}
|
|
@@ -274,7 +264,9 @@ const formatRowsFromReport = (report) => {
|
|
|
274
264
|
// Apply the format function to each field in the row
|
|
275
265
|
const formattedValue = (0, valueFormatter_1.quillFormat)({
|
|
276
266
|
value: row[column.field],
|
|
277
|
-
format: column.
|
|
267
|
+
format: column.field === xAxisField && xAxisFormat
|
|
268
|
+
? xAxisFormat
|
|
269
|
+
: column.format,
|
|
278
270
|
});
|
|
279
271
|
formattedRow[column.field] = formattedValue;
|
|
280
272
|
return formattedRow;
|
|
@@ -284,7 +276,7 @@ const formatRowsFromReport = (report) => {
|
|
|
284
276
|
exports.formatRowsFromReport = formatRowsFromReport;
|
|
285
277
|
function convertInternalReportToReport(report, dashboardFilters, initiator) {
|
|
286
278
|
try {
|
|
287
|
-
if (!report
|
|
279
|
+
if (!report) {
|
|
288
280
|
return exports.EMPTY_REPORT;
|
|
289
281
|
}
|
|
290
282
|
const formattedReport = {
|
|
@@ -327,7 +319,10 @@ function convertInternalReportToReport(report, dashboardFilters, initiator) {
|
|
|
327
319
|
};
|
|
328
320
|
}
|
|
329
321
|
let rows = report.rows;
|
|
330
|
-
if (report.chartType === 'metric'
|
|
322
|
+
if (report.chartType === 'metric') {
|
|
323
|
+
rows = (0, exports.formatRowsFromReport)(report, report.xAxisField, report.xAxisFormat);
|
|
324
|
+
}
|
|
325
|
+
else if (report.chartType === 'table') {
|
|
331
326
|
rows = (0, exports.formatRowsFromReport)(report);
|
|
332
327
|
}
|
|
333
328
|
return {
|
|
@@ -425,6 +420,9 @@ const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, client,
|
|
|
425
420
|
if (rowFieldDateRange) {
|
|
426
421
|
dateBucket = (0, dates_1.getDateBucketFromRange)(rowFieldDateRange.dateRange);
|
|
427
422
|
}
|
|
423
|
+
if (!Object.values(relevantInfo.uniqueStrings[table] ?? {}).length) {
|
|
424
|
+
relevantInfo.uniqueStrings[table] = await (0, tableProcessing_1.getUniqueStringValues)(tableInfo.columns.filter((column) => column.field === pivot?.columnField), table, client, customFields, undefined, undefined, report?.queryString ?? '');
|
|
425
|
+
}
|
|
428
426
|
newPivotData = await (0, PivotModal_1.generatePivotTable)({
|
|
429
427
|
pivot,
|
|
430
428
|
dateBucket,
|
|
@@ -474,6 +472,7 @@ const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, client,
|
|
|
474
472
|
dateRanges: relevantInfo.dateRanges,
|
|
475
473
|
query,
|
|
476
474
|
error: error,
|
|
475
|
+
itemQuery: curReport?.itemQuery,
|
|
477
476
|
};
|
|
478
477
|
};
|
|
479
478
|
exports.fetchReportBuilderDataFromAST = fetchReportBuilderDataFromAST;
|
|
@@ -3,7 +3,7 @@ import { QuillProviderClient } from '../models/Client';
|
|
|
3
3
|
import { Column, ColumnInternal } from '../models/Columns';
|
|
4
4
|
import { DashboardFilter } from '../models/Filter';
|
|
5
5
|
import { Pagination } from '../models/Pagination';
|
|
6
|
-
import { DateRangesByColumn
|
|
6
|
+
import { DateRangesByColumn } from '../models/Tables';
|
|
7
7
|
export interface AdditionalProcessing {
|
|
8
8
|
sort?: {
|
|
9
9
|
field: string;
|
|
@@ -13,14 +13,18 @@ export interface AdditionalProcessing {
|
|
|
13
13
|
last?: number;
|
|
14
14
|
}
|
|
15
15
|
export declare const hasColumnAlias: (columns: Column[], referencedColumns: string[]) => boolean;
|
|
16
|
-
export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: QuillProviderClient, customFields: any[]) => Promise<{
|
|
16
|
+
export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: QuillProviderClient, customFields: any[], filters?: DashboardFilter[]) => Promise<{
|
|
17
17
|
[column: string]: {
|
|
18
18
|
[value: string]: boolean;
|
|
19
19
|
};
|
|
20
20
|
} | null>;
|
|
21
21
|
export declare const getUniqueStringValues: (columns: ColumnInternal[], tableName: string, client: any, customFields?: any, previousUniqueValues?: any, withExceededColumns?: boolean, query?: string) => Promise<any>;
|
|
22
22
|
export declare const getRelevantInfoFromQuery: (columns: ColumnInternal[], client: QuillProviderClient, query: string, customFields?: any) => Promise<{
|
|
23
|
-
uniqueStrings?:
|
|
23
|
+
uniqueStrings?: {
|
|
24
|
+
[column: string]: {
|
|
25
|
+
[value: string]: boolean;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
24
28
|
dateRanges?: DateRangesByColumn;
|
|
25
29
|
error?: string;
|
|
26
30
|
}>;
|
|
@@ -45,7 +49,12 @@ export declare const getPaginatedRows: (client: QuillProviderClient, query?: str
|
|
|
45
49
|
export declare const fetchResultsByQuery: (query: string, client: QuillProviderClient, processing?: AdditionalProcessing, customFields?: any, filters?: DashboardFilter[], dateField?: {
|
|
46
50
|
field: string;
|
|
47
51
|
table: string;
|
|
48
|
-
} | null, rowsOnly?: boolean, rowCountOnly?: boolean
|
|
52
|
+
} | null, rowsOnly?: boolean, rowCountOnly?: boolean, filterMap?: {
|
|
53
|
+
[key: string]: {
|
|
54
|
+
field: string;
|
|
55
|
+
table: string;
|
|
56
|
+
};
|
|
57
|
+
}) => Promise<{
|
|
49
58
|
columns: ColumnInternal[];
|
|
50
59
|
rows: any[];
|
|
51
60
|
rowCount?: number;
|
|
@@ -65,7 +74,11 @@ export declare const fetchTableByAST: (ast: NodeSQLParser.Select, client: QuillP
|
|
|
65
74
|
error?: string;
|
|
66
75
|
itemQuery?: string[];
|
|
67
76
|
}>;
|
|
68
|
-
export declare const convertUniqueValuesByColumnToUniqueValueStrings: (uniqueValuesByColumns:
|
|
77
|
+
export declare const convertUniqueValuesByColumnToUniqueValueStrings: (uniqueValuesByColumns: {
|
|
78
|
+
[column: string]: {
|
|
79
|
+
[value: string]: boolean;
|
|
80
|
+
};
|
|
81
|
+
}) => {
|
|
69
82
|
[columnName: string]: string[];
|
|
70
83
|
};
|
|
71
84
|
//# sourceMappingURL=tableProcessing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACd,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACd,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAmBtD,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;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,mBAAmB,gBACb,GAAG,EAAE,YACT,eAAe,EAAE,KAC1B,OAAO,CAAC;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;CAAE,GAAG,IAAI,CA2EnE,CAAC;AAEF,eAAO,MAAM,qBAAqB,YACvB,cAAc,EAAE,aACd,MAAM,UACT,GAAG,iBACI,GAAG,yBACK,GAAG,wBACJ,OAAO,UACrB,MAAM,iBAgDf,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAC1B,cAAc,EAAE,UACjB,mBAAmB,SACpB,MAAM,iBACE,GAAG,KACjB,OAAO,CAAC;IACT,aAAa,CAAC,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG;YAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC;IACnE,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAwDA,CAAC;AAEF,eAAO,MAAM,kBAAkB,YACpB,MAAM,EAAE,SACV,MAAM,UACL,mBAAmB,gBACb,GAAG,EAAE,KAClB,OAAO,CAAC;IACT,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACvC,CAqDA,CAAC;AA8DF,eAAO,MAAM,0BAA0B,YAC5B,MAAM,EAAE,SACV,MAAM,UACL,mBAAmB,gBACb,GAAG,EAAE,KAClB,OAAO,CAAC;IACT,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE;YAAE,KAAK,EAAE,IAAI,CAAC;YAAC,GAAG,EAAE,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;CAC7D,GAAG,IAAI,CAgBP,CAAC;AAsDF,eAAO,MAAM,gBAAgB,WACnB,mBAAmB,UACnB,MAAM,aACH,MAAM,eACJ,oBAAoB,YACvB,GAAG,iBACE,GAAG,KACjB,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAaA,CAAC;AAEF,eAAO,MAAM,mBAAmB,UACvB,MAAM,UACL,mBAAmB,eACd,oBAAoB,iBAClB,GAAG,YACR,eAAe,EAAE,cACf;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,aACxC,OAAO,iBACH,OAAO,cACV;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,KAC9D,OAAO,CAAC;IACT,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAgGA,CAAC;AAEF,eAAO,MAAM,oBAAoB,aACrB,MAAM,UACR,mBAAmB,eACd,oBAAoB,YACvB,GAAG,iBACE,GAAG,aACP,OAAO,iBACH,OAAO,gBACR,WAAW,KACxB,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAiFA,CAAC;AAEF,eAAO,MAAM,eAAe,QACrB,aAAa,CAAC,MAAM,UACjB,mBAAmB,eACd,oBAAoB,iBAClB,GAAG,aACP,OAAO,iBACH,OAAO,KACrB,OAAO,CAAC;IACT,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAqDA,CAAC;AAEF,eAAO,MAAM,+CAA+C,0BAClC;IACtB,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAChD;;CASA,CAAC"}
|
|
@@ -23,9 +23,10 @@ const hasColumnAlias = (columns, referencedColumns) => {
|
|
|
23
23
|
return false;
|
|
24
24
|
};
|
|
25
25
|
exports.hasColumnAlias = hasColumnAlias;
|
|
26
|
-
const getUniqueValuesByColumns = async (columns, query, rows, client, customFields) => {
|
|
26
|
+
const getUniqueValuesByColumns = async (columns, query, rows, client, customFields, filters) => {
|
|
27
27
|
const stringNames = columns.map((column) => column.field);
|
|
28
28
|
const uniqueValues = {};
|
|
29
|
+
//TODO: this bigquery case is wack, we should be able to generate a distinct query for bigquery
|
|
29
30
|
if (!client.databaseType ||
|
|
30
31
|
client.databaseType.toLowerCase() === 'bigquery') {
|
|
31
32
|
if (rows.length === 0) {
|
|
@@ -38,6 +39,8 @@ const getUniqueValuesByColumns = async (columns, query, rows, client, customFiel
|
|
|
38
39
|
databaseType: client?.databaseType,
|
|
39
40
|
customFieldsByTable: customFields,
|
|
40
41
|
useNewNodeSql: true,
|
|
42
|
+
dateField: filters?.find((filter) => filter.filterType === 'date_range')?.dateField,
|
|
43
|
+
filters,
|
|
41
44
|
},
|
|
42
45
|
};
|
|
43
46
|
const cloudBody = { query };
|
|
@@ -60,7 +63,7 @@ const getUniqueValuesByColumns = async (columns, query, rows, client, customFiel
|
|
|
60
63
|
}
|
|
61
64
|
else {
|
|
62
65
|
const distinctValueQuery = (0, queryConstructor_1.generateDistinctQuery)(stringNames, query, client.databaseType);
|
|
63
|
-
const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client, customFields);
|
|
66
|
+
const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client, customFields, filters);
|
|
64
67
|
if (!distinctStrings) {
|
|
65
68
|
return {};
|
|
66
69
|
}
|
|
@@ -178,7 +181,7 @@ const getCountsByColumns = async (columns, query, client, customFields) => {
|
|
|
178
181
|
}
|
|
179
182
|
};
|
|
180
183
|
exports.getCountsByColumns = getCountsByColumns;
|
|
181
|
-
const fetchDistinctStrings = async (query, client, customFields) => {
|
|
184
|
+
const fetchDistinctStrings = async (query, client, customFields, filters) => {
|
|
182
185
|
try {
|
|
183
186
|
const hostedBody = {
|
|
184
187
|
metadata: {
|
|
@@ -189,6 +192,9 @@ const fetchDistinctStrings = async (query, client, customFields) => {
|
|
|
189
192
|
databaseType: client?.databaseType,
|
|
190
193
|
customFieldsByTable: customFields,
|
|
191
194
|
useNewNodeSql: true,
|
|
195
|
+
filters,
|
|
196
|
+
// @ts-ignore
|
|
197
|
+
dateField: filters?.find((filter) => filter.filterType === 'date_range')?.dateField,
|
|
192
198
|
},
|
|
193
199
|
};
|
|
194
200
|
const cloudBody = { query };
|
|
@@ -206,7 +212,7 @@ const fetchDistinctStrings = async (query, client, customFields) => {
|
|
|
206
212
|
// out null values.
|
|
207
213
|
const values = columnInfo.string_values.reduce((result, value) => {
|
|
208
214
|
if (value !== null && value !== undefined) {
|
|
209
|
-
//
|
|
215
|
+
// TODO: handle null values rather than filtering out
|
|
210
216
|
result[value] = false;
|
|
211
217
|
}
|
|
212
218
|
return result;
|
|
@@ -223,7 +229,7 @@ const getQueryDateRangeByColumns = async (columns, query, client, customFields)
|
|
|
223
229
|
const columnNames = columns.map(
|
|
224
230
|
// @ts-ignore
|
|
225
231
|
(column) => column.field || column.name);
|
|
226
|
-
const distinctValueQuery = (0, queryConstructor_1.
|
|
232
|
+
const distinctValueQuery = (0, queryConstructor_1.generateMinMaxDateRangeQueries)(columnNames, query, client.databaseType || 'postgresql');
|
|
227
233
|
const dateRanges = await fetchQueryDateRanges(distinctValueQuery, client, customFields);
|
|
228
234
|
return dateRanges;
|
|
229
235
|
};
|
|
@@ -268,7 +274,7 @@ const getPaginatedRows = async (client, query, reportId, processing, filters, cu
|
|
|
268
274
|
return { rows: [], columns: [] };
|
|
269
275
|
};
|
|
270
276
|
exports.getPaginatedRows = getPaginatedRows;
|
|
271
|
-
const fetchResultsByQuery = async (query, client, processing, customFields, filters, dateField, rowsOnly, rowCountOnly) => {
|
|
277
|
+
const fetchResultsByQuery = async (query, client, processing, customFields, filters, dateField, rowsOnly, rowCountOnly, filterMap) => {
|
|
272
278
|
let rows = [];
|
|
273
279
|
let columns = [];
|
|
274
280
|
let error = undefined;
|
|
@@ -279,6 +285,7 @@ const fetchResultsByQuery = async (query, client, processing, customFields, filt
|
|
|
279
285
|
metadata: {
|
|
280
286
|
query,
|
|
281
287
|
task: 'query',
|
|
288
|
+
filterMap,
|
|
282
289
|
orgId: client.organizationId || '*',
|
|
283
290
|
clientId: client.publicKey,
|
|
284
291
|
databaseType: client?.databaseType,
|
|
@@ -289,7 +296,7 @@ const fetchResultsByQuery = async (query, client, processing, customFields, filt
|
|
|
289
296
|
additionalProcessing: processing,
|
|
290
297
|
useUpdatedDataGathering: processing ? true : false,
|
|
291
298
|
useNewNodeSql: true,
|
|
292
|
-
filters,
|
|
299
|
+
filters: filters?.map((filter) => ({ ...filter, options: undefined })),
|
|
293
300
|
dateField: dateField ?? undefined,
|
|
294
301
|
rowsOnly,
|
|
295
302
|
rowCountOnly,
|
|
@@ -13,7 +13,7 @@ const validateReport = (formData, dashboardData, defaultDateFilter, allTables) =
|
|
|
13
13
|
}
|
|
14
14
|
if (dateFilter &&
|
|
15
15
|
((!defaultDateFilter.table && !defaultDateFilter.field) ||
|
|
16
|
-
(!formData.dateField
|
|
16
|
+
(!formData.dateField?.field && !formData.dateField?.table))) {
|
|
17
17
|
issues.push(`Delete the date filter "${formData.dashboardName}" or add to another dashboard.`);
|
|
18
18
|
}
|
|
19
19
|
filters.forEach((filter) => {
|
package/dist/esm/Chart.d.ts
CHANGED
package/dist/esm/Chart.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACT,WAAW,EAEZ,MAAM,OAAO,CAAC;AAcf,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAIL,MAAM,EAEN,cAAc,EACf,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EACL,yBAAyB,EAEzB,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAwBnC,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,sBAAsB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC5C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzC,iBAAiB,CAAC,EAAE,CAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,KACf,YAAY,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC3C;AAED,UAAU,UAAW,SAAQ,cAAc;IACzC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAiBD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,WAiH5D;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,WAKlE;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAOF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB
|
|
1
|
+
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":"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"}
|
package/dist/esm/Chart.js
CHANGED
|
@@ -137,8 +137,7 @@ export default function Chart({ colors, reportId, className, containerStyle, isA
|
|
|
137
137
|
const { dashboardFilters } = useContext(DashboardFiltersContext);
|
|
138
138
|
const { reload } = useReport(reportId);
|
|
139
139
|
const { reports, reportsDispatch, fetchIndividualReport } = useContext(ReportsContext);
|
|
140
|
-
|
|
141
|
-
const { reportFiltersDispatch, reportFilters, loadFiltersForReport } = useContext(ReportFiltersContext);
|
|
140
|
+
const { reportFiltersDispatch, reportFilters } = useContext(ReportFiltersContext);
|
|
142
141
|
const specificReportFilters = useMemo(() => {
|
|
143
142
|
return Object.values(reportFilters[reportId] ??
|
|
144
143
|
(dashboard[reportId]
|
|
@@ -201,12 +200,9 @@ export default function Chart({ colors, reportId, className, containerStyle, isA
|
|
|
201
200
|
useEffect(() => {
|
|
202
201
|
if (reportDateFilter) {
|
|
203
202
|
// Filter for custom date filter that applies to the report's dateField
|
|
204
|
-
const customDateFilter = previousFilters.current?.find((f) => f.filterType === FilterType.DateCustomFilter
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
// FIXME: this is the correct way to do it but the demo has a hardcoded filter field
|
|
208
|
-
// && f.field === report?.dateField?.field && f.table === report?.dateField?.table,
|
|
209
|
-
);
|
|
203
|
+
const customDateFilter = previousFilters.current?.find((f) => f.filterType === FilterType.DateCustomFilter ||
|
|
204
|
+
f.filterType === FilterType.DateFilter ||
|
|
205
|
+
f.filterType === FilterType.DateComparisonFilter);
|
|
210
206
|
if (!customDateFilter) {
|
|
211
207
|
return;
|
|
212
208
|
}
|
|
@@ -332,6 +328,13 @@ export default function Chart({ colors, reportId, className, containerStyle, isA
|
|
|
332
328
|
setLoading(false);
|
|
333
329
|
}
|
|
334
330
|
};
|
|
331
|
+
useEffect(() => {
|
|
332
|
+
return () => {
|
|
333
|
+
// Clear all data out of the report store when the component unmounts
|
|
334
|
+
reportsDispatch({ type: 'REMOVE_REPORT', id: reportId });
|
|
335
|
+
reportFiltersDispatch({ type: 'CLEAR_REPORT_FILTERS', id: reportId });
|
|
336
|
+
};
|
|
337
|
+
}, []);
|
|
335
338
|
useEffect(() => {
|
|
336
339
|
if (reportId === undefined || reportId === '' || clientLoading) {
|
|
337
340
|
return;
|
|
@@ -365,17 +368,24 @@ export default function Chart({ colors, reportId, className, containerStyle, isA
|
|
|
365
368
|
if (report?.error || error) {
|
|
366
369
|
return (_jsx("div", { style: containerStyle, className: className, children: _jsx(ChartError, { errorMessage: report?.error ?? error }) }));
|
|
367
370
|
}
|
|
368
|
-
return (_jsxs("div", {
|
|
371
|
+
return (_jsxs("div", { style: {
|
|
372
|
+
display: 'flex',
|
|
373
|
+
flexDirection: 'column',
|
|
374
|
+
...containerStyle,
|
|
375
|
+
}, className: className, children: [!hideFilters && (_jsx(FilterContainerComponent, { children: specificReportFilters.map((filter, index) => (_jsx(DashboardFilter, { filter: {
|
|
369
376
|
...filter,
|
|
370
377
|
...(filter.filterType === 'date_range' && {
|
|
371
378
|
options: presetOptions,
|
|
372
379
|
}),
|
|
373
380
|
...filterValues[filter.label],
|
|
374
|
-
}, isLoading: reportFilters[reportId]?.[filter.label]?.loading, onChangeFilter: updateFilter, theme: theme, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, DateRangePickerComponent: DateRangePickerComponent }, index))) })), loading || !report ? (_jsx(
|
|
381
|
+
}, isLoading: reportFilters[reportId]?.[filter.label]?.loading, onChangeFilter: updateFilter, theme: theme, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, DateRangePickerComponent: DateRangePickerComponent }, index))) })), loading || !report ? (_jsx(LoadingComponent, {})) : (_jsxs(_Fragment, { children: [('table' === report.chartType || 'metric' === report.chartType) && (_jsx(DataLoader, { item: report, filters: specificReportFilters, userFilters: userFilters?.map(convertCustomFilter), additionalProcessing: {
|
|
375
382
|
page: DEFAULT_PAGINATION,
|
|
376
383
|
}, reportMode: true, children: ({ isLoading, error, onPageChange, onSortChange, data, rowCount, rowCountIsLoading, }) => 'metric' === report.chartType ? (_jsx(MetricComponent, { error: error, isLoading: isLoading, report: data })) : (_jsx(TableComponent, { report: data, isLoading: isLoading, error: error, rowCount: rowCount ?? data?.rowCount ?? data?.rows?.length ?? 0, rowCountIsLoading: rowCountIsLoading, onPageChange: (page) => onPageChange(page), onSortChange: (sort) => onSortChange(sort) })) })), report.chartType !== 'table' && report.chartType !== 'metric' && (_jsx(ChartDataLoader, { item: report, dateBucket: dateBucket, userFilters: userFilters?.map(convertCustomFilter), additionalProcessing: {
|
|
377
384
|
page: DEFAULT_PAGINATION,
|
|
378
|
-
}, filters: specificReportFilters, reportMode: true, children: ({ isLoading, data, error }) => error ? (_jsx(
|
|
385
|
+
}, filters: specificReportFilters, reportMode: true, children: ({ isLoading, data, error }) => error ? (_jsx(ChartError, { errorMessage: error })) : (_jsx(ChartDisplay, { config: data, containerStyle: {
|
|
386
|
+
width: '100%',
|
|
387
|
+
height: '100%',
|
|
388
|
+
}, reportId: reportId, colors: colors, className: className, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle, cartesianGridLineColor: cartesianGridLineColor, hideDateRangeFilter: hideDateRangeFilter, comparisonLineStyle: comparisonLineStyle, isAnimationActive: isAnimationActive, loading: isLoading, scrollable: true, colorMap: colorMap, LoadingComponent: LoadingComponent, onClickChartElement: onClickChartElement })) }))] }))] }));
|
|
379
389
|
}
|
|
380
390
|
export const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hideXAxis, hideYAxis, hideCartesianGrid, hideDateRangeFilter = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', cartesianGridLineColor, comparisonLineStyle, isAnimationActive, scrollable = false, loading = false, ErrorComponent = ChartError, colorMap, LoadingComponent = QuillLoadingSkeleton, onPageChange, onSortChange, onClickChartElement, overrideTheme, }) => {
|
|
381
391
|
const { downloadCSV } = useExport(reportId);
|
|
@@ -445,7 +455,7 @@ export const ChartDisplay = ({ reportId, config, colors, className, containerSty
|
|
|
445
455
|
// @ts-ignore
|
|
446
456
|
sumByKey(config?.rows, config?.yAxisFields[0]?.field),
|
|
447
457
|
};
|
|
448
|
-
}) || [], category: config?.yAxisFields[0]?.field, index: config?.xAxisField, colors: chartColors, theme: overrideTheme ?? theme, colorMap: colorMap, onClickChartElement: onClickChartElement }));
|
|
458
|
+
}) || [], category: config?.yAxisFields?.[0]?.field, index: config?.xAxisField, colors: chartColors, theme: overrideTheme ?? theme, colorMap: colorMap, onClickChartElement: onClickChartElement }));
|
|
449
459
|
}
|
|
450
460
|
if (chartTypes.includes('table')) {
|
|
451
461
|
return (_jsx(QuillTable, { rows: config?.rows ?? [], rowCount: config?.rowCount, columns: config?.columns ?? config?.yAxisFields ?? [], currentPage: config?.pagination?.page ?? page, sort: config?.sort, rowsPerPage: config?.pagination?.rowsPerPage || DEFAULT_PAGINATION.rowsPerPage, containerStyle: {
|
|
@@ -461,12 +471,14 @@ export const ChartDisplay = ({ reportId, config, colors, className, containerSty
|
|
|
461
471
|
} }));
|
|
462
472
|
}
|
|
463
473
|
if (chartTypes.includes('bar')) {
|
|
464
|
-
return (_jsx(BarList, { data: config?.rows
|
|
474
|
+
return (_jsx(BarList, { data: config?.rows ?? [], theme: overrideTheme ?? theme, yAxisFields: config?.yAxisFields ?? [], colors: chartColors, xAxisField: config?.xAxisField ?? '', xAxisFormat: config?.xAxisFormat ?? 'string', containerStyle: containerStyle, className: className, colorMap: colorMap, onClickChartElement: onClickChartElement, scrollable: scrollable }));
|
|
465
475
|
}
|
|
466
476
|
if (chartTypes.includes('column')) {
|
|
467
477
|
return (_jsx(BarChart, { colors: chartColors, theme: overrideTheme ?? theme, isStacked: !!config?.pivot &&
|
|
468
|
-
config?.yAxisFields
|
|
469
|
-
|
|
478
|
+
config?.yAxisFields.length >
|
|
479
|
+
(!hideDateRangeFilter && dateFilter?.comparison ? 2 : 1), yAxisFields: config?.yAxisFields ?? [], data: config?.rows ?? [], xAxisField: config?.xAxisField ?? '', xAxisLabel: config?.xAxisLabel ?? '', xAxisFormat: config?.xAxisFormat ?? 'string', containerStyle: containerStyle, className: className, comparison: !hideDateRangeFilter &&
|
|
480
|
+
!!dateFilter?.comparison &&
|
|
481
|
+
dateFilter.comparisonRange?.value !== 'NO_COMPARISON', isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, colorMap: colorMap, onClickChartElement: onClickChartElement, dateFilter: !hideDateRangeFilter ? dateFilter : undefined }));
|
|
470
482
|
}
|
|
471
483
|
if (chartTypes.includes('metric')) {
|
|
472
484
|
if (!config?.rows ||
|
|
@@ -506,7 +518,7 @@ export const ChartDisplay = ({ reportId, config, colors, className, containerSty
|
|
|
506
518
|
...containerStyle,
|
|
507
519
|
}, className: className, children: _jsx(QuillMetricComponent, { report: config ?? EMPTY_REPORT }) }));
|
|
508
520
|
}
|
|
509
|
-
return (_jsx(LineChart, { colors: chartColors, colorMap: colorMap, yAxisFields: config?.yAxisFields.sort(sortComparisonFirst) || [], data: config?.rows || [], xAxisField: config?.xAxisField || '', xAxisLabel: config?.xAxisLabel || '', xAxisFormat: config?.xAxisFormat || 'string', containerStyle: containerStyle, className: className, theme: overrideTheme ?? theme, comparison: dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle ?? 'solid', comparisonLineStyle: comparisonLineStyle ?? 'solid', cartesianGridLineColor: cartesianGridLineColor, onClickChartElement: onClickChartElement, dateFilter: dateFilter }));
|
|
521
|
+
return (_jsx(LineChart, { colors: chartColors, colorMap: colorMap, yAxisFields: config?.yAxisFields.sort(sortComparisonFirst) || [], data: config?.rows || [], xAxisField: config?.xAxisField || '', xAxisLabel: config?.xAxisLabel || '', xAxisFormat: config?.xAxisFormat || 'string', containerStyle: containerStyle, className: className, theme: overrideTheme ?? theme, comparison: !hideDateRangeFilter && dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle ?? 'solid', comparisonLineStyle: comparisonLineStyle ?? 'solid', cartesianGridLineColor: cartesianGridLineColor, onClickChartElement: onClickChartElement, dateFilter: !hideDateRangeFilter ? dateFilter : undefined }));
|
|
510
522
|
};
|
|
511
523
|
// Sort to put comparison first (ie. underneath) primary.
|
|
512
524
|
const sortComparisonFirst = (a, b) => {
|
|
@@ -9,7 +9,7 @@ export interface ChartBuilderData {
|
|
|
9
9
|
dashboardName?: string;
|
|
10
10
|
columns: Column[];
|
|
11
11
|
chartType: string;
|
|
12
|
-
dateField
|
|
12
|
+
dateField?: {
|
|
13
13
|
table: string;
|
|
14
14
|
field: string;
|
|
15
15
|
};
|
|
@@ -183,25 +183,11 @@ export interface ChartBuilderProps {
|
|
|
183
183
|
onClick?: (element: any) => void;
|
|
184
184
|
ButtonComponent?: React.ComponentType<any>;
|
|
185
185
|
}) => JSX.Element;
|
|
186
|
-
/** The rows of the query response for this query. */
|
|
187
|
-
rows: {
|
|
188
|
-
[key: string]: any;
|
|
189
|
-
}[];
|
|
190
|
-
/**
|
|
191
|
-
* Columns of this query response.
|
|
192
|
-
*/
|
|
193
|
-
columns: ColumnInternal[];
|
|
194
186
|
/** The SQL query for this dashboard item. */
|
|
195
|
-
query?: string;
|
|
196
187
|
/** Whether the ChartBuilder is in horizontal view mode. */
|
|
197
188
|
isHorizontalView?: boolean;
|
|
198
|
-
/**
|
|
199
|
-
showTableFormatOptions?: boolean;
|
|
189
|
+
/** Whether the consumer is an admin. */
|
|
200
190
|
isAdmin?: boolean;
|
|
201
|
-
/** Whether to show the date field options. */
|
|
202
|
-
showDateFieldOptions?: boolean;
|
|
203
|
-
/** Whether to show the access control options. */
|
|
204
|
-
showAccessControlOptions?: boolean;
|
|
205
191
|
/** Whether to show the dashboard dropdown. */
|
|
206
192
|
showDashboardDropdown?: boolean;
|
|
207
193
|
/** A callback fired when the add to dashboard flow has been completed. */
|
|
@@ -211,27 +197,20 @@ export interface ChartBuilderProps {
|
|
|
211
197
|
/** A callback fired when changes are discarded. */
|
|
212
198
|
onDiscardChanges?: () => void;
|
|
213
199
|
/** The pivot info applied to this data. */
|
|
214
|
-
pivot?: Pivot;
|
|
215
200
|
/** The data extracted from the pivot info. */
|
|
216
|
-
pivotData?: {
|
|
217
|
-
rows: any[];
|
|
218
|
-
columns: Column[];
|
|
219
|
-
};
|
|
220
201
|
/** The date range applied to this ChartBuilder. */
|
|
221
202
|
dateRange?: {
|
|
222
203
|
start: Date;
|
|
223
204
|
end: Date;
|
|
224
205
|
} | undefined;
|
|
225
|
-
/** The report for this ChartBuilder. */
|
|
226
|
-
|
|
206
|
+
/** The report id for this ChartBuilder. */
|
|
207
|
+
reportId?: string;
|
|
227
208
|
/** A list of generated pivots that were recommended as useful for this query. */
|
|
228
209
|
recommendedPivots?: Pivot[];
|
|
229
210
|
/** A list of generated pivots based on this query. */
|
|
230
211
|
createdPivots?: Pivot[];
|
|
231
212
|
/** Query without a date column */
|
|
232
213
|
queryNoDateColumn?: string;
|
|
233
|
-
/** The default dashboard to add the item to. */
|
|
234
|
-
destinationDashboard?: string;
|
|
235
214
|
/** The title of the ChartBuilder. */
|
|
236
215
|
title?: string;
|
|
237
216
|
/** The button label for the ChartBuilder. */
|
|
@@ -253,20 +232,12 @@ export interface ChartBuilderProps {
|
|
|
253
232
|
/** Whether the PivotModal's AI features are enabled. */
|
|
254
233
|
pivotRecommendationsEnabled?: boolean;
|
|
255
234
|
/** A callback function used when the table page is changed */
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
onSortChange?: (sort: {
|
|
259
|
-
field: string;
|
|
260
|
-
direction: string;
|
|
261
|
-
}, isFilteredRows?: boolean) => void;
|
|
235
|
+
/** A flag represented whether filters are enabled for this report */
|
|
236
|
+
filtersEnabled: boolean;
|
|
262
237
|
/** A callback function used when the filter preview is toggled */
|
|
263
|
-
|
|
264
|
-
/** A number used to determine the number of pages in a table for SQL pagination */
|
|
265
|
-
rowCount?: number;
|
|
238
|
+
onFiltersEnabledChanged: (preview: boolean) => void;
|
|
266
239
|
/** Loading prop used by the table component */
|
|
267
|
-
isLoading?: boolean;
|
|
268
240
|
/** A flag to determine whether row count in a table is still loading */
|
|
269
|
-
rowCountIsLoading?: boolean;
|
|
270
241
|
/** A callback function triggered when a chart element is clicked */
|
|
271
242
|
onClickChartElement?: (data: any) => void;
|
|
272
243
|
/** A callback when clicking the chart error component */
|
|
@@ -326,7 +297,7 @@ export declare function ChartBuilderWithModal(props: ChartBuilderProps): import(
|
|
|
326
297
|
* ### Chart Builder API
|
|
327
298
|
* @see https://docs.quillsql.com/components/chart-builder
|
|
328
299
|
*/
|
|
329
|
-
export default function ChartBuilder({ TextInputComponent, SelectComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, SubHeaderComponent, LabelComponent, DeleteButtonComponent, TextComponent, PopoverComponent, CardComponent, TableComponent, ModalComponent, LoadingComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, FormContainer, ErrorComponent, onClickChartError, isOpen, isHorizontalView,
|
|
300
|
+
export default function ChartBuilder({ TextInputComponent, SelectComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, SubHeaderComponent, LabelComponent, DeleteButtonComponent, TextComponent, PopoverComponent, CardComponent, TableComponent, ModalComponent, LoadingComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, FormContainer, ErrorComponent, onClickChartError, isOpen, isHorizontalView, setIsOpen, queryNoDateColumn, dateRange, isAdmin, showDashboardDropdown, onAddToDashboardComplete, onDelete, onDiscardChanges, reportId, recommendedPivots: rp, createdPivots: cp, dateColumn, buttonLabel, organizationName, hideDeleteButton, hideSubmitButton, hideDateRangeFilter, initialUniqueValues, initialUniqueValuesIsLoading, pivotRecommendationsEnabled, filtersEnabled, onFiltersEnabledChanged, onClickChartElement, isEditingMode, disableSort, }: ChartBuilderProps): import("react/jsx-runtime").JSX.Element;
|
|
330
301
|
export declare function DashboardFilterModal({ isOpen, setIsOpen, issues, ModalComponent, ButtonComponent, }: {
|
|
331
302
|
isOpen: boolean;
|
|
332
303
|
setIsOpen: (e: boolean) => void;
|