@quillsql/react 2.13.26 → 2.13.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 +2 -2
- package/dist/cjs/ChartBuilder.d.ts +20 -2
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +130 -36
- package/dist/cjs/ChartEditor.d.ts +5 -3
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +4 -5
- package/dist/cjs/Context.d.ts +15 -4
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +37 -60
- package/dist/cjs/Dashboard.d.ts +4 -0
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +78 -23
- package/dist/cjs/QuillProvider.d.ts +12 -9
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +2 -2
- package/dist/cjs/ReportBuilder.d.ts +9 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +198 -80
- package/dist/cjs/SQLEditor.d.ts +5 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +81 -18
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +5 -4
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/InternalChart.js +106 -27
- package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/PieChart.js +10 -7
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +3 -2
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +65 -65
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +81 -34
- package/dist/cjs/components/Dashboard/MetricComponent.js +3 -3
- package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/util.js +6 -2
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +17 -18
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +9 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +25 -3
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterStack.js +2 -2
- package/dist/cjs/components/ReportBuilder/convert.d.ts +1 -0
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +54 -4
- package/dist/cjs/components/ReportBuilder/ui.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +3 -2
- package/dist/cjs/components/UiComponents.d.ts +1 -0
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.d.ts +1 -1
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +6 -5
- package/dist/cjs/hooks/useAstToFilterTree.d.ts +2 -1
- package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/cjs/hooks/useAstToFilterTree.js +3 -3
- package/dist/cjs/hooks/useDashboard.d.ts +5 -2
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +21 -7
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +6 -4
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +8 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +59 -30
- package/dist/cjs/models/Client.d.ts +22 -3
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Dashboard.d.ts +1 -0
- package/dist/cjs/models/Dashboard.d.ts.map +1 -1
- package/dist/cjs/models/Report.d.ts +4 -0
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +3 -2
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +3323 -977
- package/dist/cjs/utils/astProcessing.d.ts +1 -1
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +3 -2
- package/dist/cjs/utils/client.d.ts +4 -2
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +47 -1
- package/dist/cjs/utils/columnProcessing.d.ts +3 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +34 -1
- package/dist/cjs/utils/dashboard.d.ts +4 -3
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +10 -91
- package/dist/cjs/utils/dataFetcher.d.ts +3 -1
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +66 -30
- package/dist/cjs/utils/filterProcessing.d.ts +1 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +2 -0
- package/dist/cjs/utils/pivotConstructor.d.ts +4 -1
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +7 -7
- package/dist/cjs/utils/pivotProcessing.d.ts +4 -1
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +27 -20
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +101 -85
- package/dist/cjs/utils/report.d.ts +17 -5
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +23 -23
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +21 -21
- package/dist/cjs/utils/tableProcessing.d.ts +37 -10
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +45 -38
- package/dist/cjs/utils/tenants.d.ts +11 -0
- package/dist/cjs/utils/tenants.d.ts.map +1 -0
- package/dist/cjs/utils/tenants.js +13 -0
- package/dist/cjs/utils/textProcessing.d.ts +1 -0
- package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/textProcessing.js +49 -0
- package/dist/cjs/utils/validation.js +1 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +2 -2
- package/dist/esm/ChartBuilder.d.ts +20 -2
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +131 -40
- package/dist/esm/ChartEditor.d.ts +5 -3
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +5 -6
- package/dist/esm/Context.d.ts +15 -4
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +36 -59
- package/dist/esm/Dashboard.d.ts +4 -0
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +79 -24
- package/dist/esm/QuillProvider.d.ts +12 -9
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +2 -2
- package/dist/esm/ReportBuilder.d.ts +9 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +200 -84
- package/dist/esm/SQLEditor.d.ts +5 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +80 -17
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +6 -5
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/InternalChart.js +107 -28
- package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/PieChart.js +10 -7
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts +3 -2
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +65 -65
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +82 -35
- package/dist/esm/components/Dashboard/MetricComponent.js +3 -3
- package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/util.js +6 -2
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +17 -18
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +9 -1
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +26 -4
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterStack.js +2 -2
- package/dist/esm/components/ReportBuilder/convert.d.ts +1 -0
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +54 -5
- package/dist/esm/components/ReportBuilder/ui.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +4 -3
- package/dist/esm/components/UiComponents.d.ts +1 -0
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.d.ts +1 -1
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +7 -6
- package/dist/esm/hooks/useAstToFilterTree.d.ts +2 -1
- package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/esm/hooks/useAstToFilterTree.js +3 -3
- package/dist/esm/hooks/useDashboard.d.ts +5 -2
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +21 -7
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +7 -5
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +8 -2
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +59 -30
- package/dist/esm/models/Client.d.ts +22 -3
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Dashboard.d.ts +1 -0
- package/dist/esm/models/Dashboard.d.ts.map +1 -1
- package/dist/esm/models/Report.d.ts +4 -0
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +3 -2
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +3323 -977
- package/dist/esm/utils/astProcessing.d.ts +1 -1
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +4 -3
- package/dist/esm/utils/client.d.ts +4 -2
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +47 -1
- package/dist/esm/utils/columnProcessing.d.ts +3 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +31 -1
- package/dist/esm/utils/dashboard.d.ts +4 -3
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +10 -90
- package/dist/esm/utils/dataFetcher.d.ts +3 -1
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +65 -29
- package/dist/esm/utils/filterProcessing.d.ts +1 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +2 -0
- package/dist/esm/utils/pivotConstructor.d.ts +4 -1
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +8 -8
- package/dist/esm/utils/pivotProcessing.d.ts +4 -1
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +27 -20
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +101 -85
- package/dist/esm/utils/report.d.ts +17 -5
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +20 -23
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +21 -21
- package/dist/esm/utils/tableProcessing.d.ts +37 -10
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +46 -39
- package/dist/esm/utils/tenants.d.ts +11 -0
- package/dist/esm/utils/tenants.d.ts.map +1 -0
- package/dist/esm/utils/tenants.js +9 -0
- package/dist/esm/utils/textProcessing.d.ts +1 -0
- package/dist/esm/utils/textProcessing.d.ts.map +1 -1
- package/dist/esm/utils/textProcessing.js +48 -0
- package/dist/esm/utils/validation.js +1 -1
- package/package.json +1 -1
|
@@ -54,7 +54,7 @@ export declare const createBasicSelectASTFromColumns: (columns: ColumnInternal[]
|
|
|
54
54
|
orderby: null;
|
|
55
55
|
limit: null;
|
|
56
56
|
};
|
|
57
|
-
export declare const fetchAndProcessASTFromPrompt: (aiPrompt: string, schema: Table[], client: QuillProviderClient, prevPivot?: Pivot, currentQuery?: string, prevTable?: string) => Promise<{
|
|
57
|
+
export declare const fetchAndProcessASTFromPrompt: (aiPrompt: string, schema: Table[], client: QuillProviderClient, prevPivot?: Pivot, currentQuery?: string, prevTable?: string, dashboardName?: string) => Promise<{
|
|
58
58
|
ast: any;
|
|
59
59
|
pivot: Pivot | null | undefined;
|
|
60
60
|
whereAST: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"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"}
|
|
@@ -343,7 +343,7 @@ const createBasicSelectASTFromColumns = (columns, tableName) => {
|
|
|
343
343
|
};
|
|
344
344
|
};
|
|
345
345
|
exports.createBasicSelectASTFromColumns = createBasicSelectASTFromColumns;
|
|
346
|
-
const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot, currentQuery, prevTable) => {
|
|
346
|
+
const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot, currentQuery, prevTable, dashboardName) => {
|
|
347
347
|
let res, data, ast, newAst, pivot;
|
|
348
348
|
let numRetries = 0;
|
|
349
349
|
let whereAST;
|
|
@@ -396,6 +396,7 @@ const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot,
|
|
|
396
396
|
newAst = (0, util_1.removeTableNameAlias)(newAst);
|
|
397
397
|
newAst = (0, convert_1.convertWildcardColumns)(newAst, schema); // must go before groupby
|
|
398
398
|
({ ast: newAst, pivot } = (0, convert_1.convertGroupBy)(newAst, schema, prevPivot, prevTable));
|
|
399
|
+
newAst = (0, convert_1.convertOrderBy)(newAst, schema);
|
|
399
400
|
newAst = (0, convert_1.convertStringComparison)(newAst, client.databaseType || 'postgresql');
|
|
400
401
|
newAst = (0, convert_1.convertRemoveSimpleParentheses)(newAst);
|
|
401
402
|
const table = (0, ast_1.getTableNames)(newAst)[0];
|
|
@@ -407,7 +408,7 @@ const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot,
|
|
|
407
408
|
if (!tableInfo) {
|
|
408
409
|
throw new Error('Table info not found');
|
|
409
410
|
}
|
|
410
|
-
const uniqueValues = await (0, tableProcessing_1.getUniqueStringValues)(tableInfo.columns, processedName, client);
|
|
411
|
+
const uniqueValues = await (0, tableProcessing_1.getUniqueStringValues)(tableInfo.columns, processedName, client, undefined, undefined, undefined, undefined, dashboardName);
|
|
411
412
|
newAst = (0, convert_1.convertUnaryToBinary)(newAst);
|
|
412
413
|
newAst = (0, util_1.removeNonSelectedTableReferences)(newAst, processedName, tableInfo.columns.map((col) => col.field), uniqueValues);
|
|
413
414
|
if (pivot) {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { Client } from '../models/Client';
|
|
1
|
+
import { Client, QuillDatabaseTenant, QuillTenant } from '../models/Client';
|
|
2
2
|
export declare const EMPTY_CLIENT: Client;
|
|
3
|
-
export declare function fetchClient(publicKey: string, queryEndpoint: string, withCredentials?: boolean, queryHeaders?: HeadersInit): Promise<Client
|
|
3
|
+
export declare function fetchClient(publicKey: string, queryEndpoint: string, withCredentials?: boolean, queryHeaders?: HeadersInit): Promise<Client & {
|
|
4
|
+
allTenantTypes?: (QuillTenant | QuillDatabaseTenant)[];
|
|
5
|
+
}>;
|
|
4
6
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/utils/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/utils/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE5E,eAAO,MAAM,YAAY,EAAE,MAM1B,CAAC;AAEF,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,eAAe,UAAQ,EACvB,YAAY,CAAC,EAAE,WAAW,GACzB,OAAO,CACR,MAAM,GAAG;IAAE,cAAc,CAAC,EAAE,CAAC,WAAW,GAAG,mBAAmB,CAAC,EAAE,CAAA;CAAE,CACpE,CA+EA"}
|
package/dist/cjs/utils/client.js
CHANGED
|
@@ -11,6 +11,7 @@ exports.EMPTY_CLIENT = {
|
|
|
11
11
|
};
|
|
12
12
|
async function fetchClient(publicKey, queryEndpoint, withCredentials = false, queryHeaders) {
|
|
13
13
|
let result = exports.EMPTY_CLIENT;
|
|
14
|
+
let clientTenantIds = [];
|
|
14
15
|
try {
|
|
15
16
|
const response = await fetch(`${queryEndpoint}`, {
|
|
16
17
|
method: 'POST',
|
|
@@ -29,9 +30,54 @@ async function fetchClient(publicKey, queryEndpoint, withCredentials = false, qu
|
|
|
29
30
|
});
|
|
30
31
|
const json = await response.json();
|
|
31
32
|
result = json.data?.data?.client || json.data?.client;
|
|
33
|
+
clientTenantIds = await Promise.all(result.allTenantTypes?.map(async (tenant) => {
|
|
34
|
+
const tenantResponse = await fetch(queryEndpoint, {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
headers: {
|
|
37
|
+
...queryHeaders,
|
|
38
|
+
'Content-Type': 'application/json',
|
|
39
|
+
},
|
|
40
|
+
body: JSON.stringify({
|
|
41
|
+
metadata: {
|
|
42
|
+
tenantId: tenant.id,
|
|
43
|
+
task: 'tenant-query',
|
|
44
|
+
clientId: result.id,
|
|
45
|
+
},
|
|
46
|
+
}),
|
|
47
|
+
});
|
|
48
|
+
const data = await tenantResponse.json();
|
|
49
|
+
if (!data.data?.rows) {
|
|
50
|
+
return {
|
|
51
|
+
id: tenant.id,
|
|
52
|
+
tenantIds: [],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
id: tenant.id,
|
|
57
|
+
tenantIds: data.data.rows.map((row) => ({
|
|
58
|
+
id: row[tenant.tenantField],
|
|
59
|
+
flag: row['quill_flag'],
|
|
60
|
+
label: row['quill_label'],
|
|
61
|
+
})),
|
|
62
|
+
};
|
|
63
|
+
}));
|
|
32
64
|
}
|
|
33
65
|
catch (error) {
|
|
34
66
|
console.error('ERROR:', error);
|
|
35
67
|
}
|
|
36
|
-
return
|
|
68
|
+
return {
|
|
69
|
+
...result,
|
|
70
|
+
allTenantTypes: result.multiTenancyDisabled
|
|
71
|
+
? [
|
|
72
|
+
{
|
|
73
|
+
scope: 'database',
|
|
74
|
+
flags: [],
|
|
75
|
+
tenantField: 'QUILL_SINGLE_TENANT',
|
|
76
|
+
},
|
|
77
|
+
]
|
|
78
|
+
: result.allTenantTypes?.map((tenant) => ({
|
|
79
|
+
...tenant,
|
|
80
|
+
tenantIds: clientTenantIds?.find((clientTenant) => clientTenant.id === tenant.id)?.tenantIds || [],
|
|
81
|
+
})),
|
|
82
|
+
};
|
|
37
83
|
}
|
|
@@ -17,6 +17,9 @@ export declare function convertFieldTypeToJSType(fieldType: string): string;
|
|
|
17
17
|
export declare function convertFormatToJsType(column: Column): string;
|
|
18
18
|
export declare function processColumnName(columnName: string): string;
|
|
19
19
|
export declare function isStringType(fieldType: string): boolean;
|
|
20
|
+
export declare function isDateType(fieldType: string): boolean;
|
|
21
|
+
export declare function isNumberType(fieldType: string): boolean;
|
|
22
|
+
export declare function isBoolType(fieldType: string): boolean;
|
|
20
23
|
export declare const getYAxisFields: (report: QuillReportInternal, dashboardFilters: DashboardFilter[]) => any[];
|
|
21
24
|
export {};
|
|
22
25
|
//# sourceMappingURL=columnProcessing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,UAAU,6CAA6C;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,oCAAoC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,2BAA2B,GAC5B,6CAA6C,GAC7C,oCAAoC,CAAC;AAEzC,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,2BAA2B,GACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,UAAU,6CAA6C;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,oCAAoC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,2BAA2B,GAC5B,6CAA6C,GAC7C,oCAAoC,CAAC;AAEzC,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,2BAA2B,GACjC,cAAc,CAmJhB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AAsED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwDlE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY5D;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CASrD;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAavD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,eAAO,MAAM,cAAc,WACjB,mBAAmB,oBACT,eAAe,EAAE,UAqDpC,CAAC"}
|
|
@@ -7,6 +7,9 @@ exports.convertFieldTypeToJSType = convertFieldTypeToJSType;
|
|
|
7
7
|
exports.convertFormatToJsType = convertFormatToJsType;
|
|
8
8
|
exports.processColumnName = processColumnName;
|
|
9
9
|
exports.isStringType = isStringType;
|
|
10
|
+
exports.isDateType = isDateType;
|
|
11
|
+
exports.isNumberType = isNumberType;
|
|
12
|
+
exports.isBoolType = isBoolType;
|
|
10
13
|
const filterProcessing_1 = require("./filterProcessing");
|
|
11
14
|
const textProcessing_1 = require("./textProcessing");
|
|
12
15
|
function removeBigQuerySpecialChars(columnName) {
|
|
@@ -100,6 +103,9 @@ function convertPostgresColumn(field) {
|
|
|
100
103
|
case 3807: // jsonb[]
|
|
101
104
|
fieldType = 'jsonb[]';
|
|
102
105
|
break;
|
|
106
|
+
case 2277: // anyarray
|
|
107
|
+
fieldType = 'anyarray';
|
|
108
|
+
break;
|
|
103
109
|
case 1043: // varchar
|
|
104
110
|
default:
|
|
105
111
|
fieldType = 'varchar';
|
|
@@ -300,7 +306,34 @@ function processColumnName(columnName) {
|
|
|
300
306
|
return removeBigQuerySpecialChars(columnName);
|
|
301
307
|
}
|
|
302
308
|
function isStringType(fieldType) {
|
|
303
|
-
return ['string', 'varchar', 'text', 'char'].includes(fieldType);
|
|
309
|
+
return ['string', 'varchar', 'text', 'char', 'bpchar', 'citext'].includes(fieldType);
|
|
310
|
+
}
|
|
311
|
+
function isDateType(fieldType) {
|
|
312
|
+
return [
|
|
313
|
+
'date',
|
|
314
|
+
'datetime',
|
|
315
|
+
'time',
|
|
316
|
+
'timestamptz',
|
|
317
|
+
'timestamp',
|
|
318
|
+
'interval',
|
|
319
|
+
].includes(fieldType);
|
|
320
|
+
}
|
|
321
|
+
function isNumberType(fieldType) {
|
|
322
|
+
return [
|
|
323
|
+
'int8',
|
|
324
|
+
'int2',
|
|
325
|
+
'int4',
|
|
326
|
+
'float4',
|
|
327
|
+
'float8',
|
|
328
|
+
'numeric',
|
|
329
|
+
'number',
|
|
330
|
+
'smallint',
|
|
331
|
+
'float2',
|
|
332
|
+
'float16',
|
|
333
|
+
].includes(fieldType);
|
|
334
|
+
}
|
|
335
|
+
function isBoolType(fieldType) {
|
|
336
|
+
return ['bool', 'boolean'].includes(fieldType);
|
|
304
337
|
}
|
|
305
338
|
const getYAxisFields = (report, dashboardFilters) => {
|
|
306
339
|
try {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { QuillReportInternal } from '../models/Report';
|
|
2
2
|
import { QuillProviderClient } from '../models/Client';
|
|
3
|
-
import { DashboardFilter } from '../models/Filter';
|
|
4
3
|
/**
|
|
5
4
|
* Returns a cleaned version of the dashboard item we store in state. We clean
|
|
6
5
|
* the dashboard item so that we aren't exposing unnecessary details to the
|
|
@@ -11,6 +10,8 @@ import { DashboardFilter } from '../models/Filter';
|
|
|
11
10
|
export declare function cleanDashboardItem(item: {
|
|
12
11
|
[key: string]: any;
|
|
13
12
|
} | undefined, dashboardFilters: any, client: QuillProviderClient, dateBucket?: string): Promise<QuillReportInternal>;
|
|
14
|
-
export declare function getDashboard(dashboardName: string, client: QuillProviderClient
|
|
15
|
-
|
|
13
|
+
export declare function getDashboard(dashboardName: string, client: QuillProviderClient, tenants?: {
|
|
14
|
+
tenantField: string;
|
|
15
|
+
tenantIds: (string | number)[];
|
|
16
|
+
}[] | (string | number)[], flags?: string[]): Promise<any>;
|
|
16
17
|
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAuBvD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,EACrB,MAAM,EAAE,mBAAmB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAiE9B;AA4HD,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EACJ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACvB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,CAAC,CA0Bd"}
|
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.cleanDashboardItem = cleanDashboardItem;
|
|
4
4
|
exports.getDashboard = getDashboard;
|
|
5
|
-
exports.getDashboardFilters = getDashboardFilters;
|
|
6
5
|
const PivotModal_1 = require("../internals/ReportBuilder/PivotModal");
|
|
7
6
|
const textProcessing_1 = require("./textProcessing");
|
|
8
7
|
const dataFetcher_1 = require("./dataFetcher");
|
|
9
8
|
const dates_1 = require("./dates");
|
|
10
9
|
const pivotConstructor_1 = require("./pivotConstructor");
|
|
11
|
-
const dateRangePickerUtils_1 = require("../DateRangePicker/dateRangePickerUtils");
|
|
12
10
|
const defaultDashboardItem = {
|
|
13
11
|
id: '',
|
|
14
12
|
name: '',
|
|
@@ -51,7 +49,7 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket) {
|
|
|
51
49
|
let pivotTable;
|
|
52
50
|
let pivotError;
|
|
53
51
|
try {
|
|
54
|
-
pivotTable = await getPivotTable(item, dashboardFilters, client, dateBucket);
|
|
52
|
+
pivotTable = await getPivotTable(item, dashboardFilters, client, dateBucket, item.dashboardName);
|
|
55
53
|
}
|
|
56
54
|
catch (e) {
|
|
57
55
|
pivotTable = undefined;
|
|
@@ -86,6 +84,7 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket) {
|
|
|
86
84
|
order: item.order,
|
|
87
85
|
filtersApplied: item.filtersApplied,
|
|
88
86
|
filterMap: item.filterMap,
|
|
87
|
+
flags: item.flags,
|
|
89
88
|
rowCount: item.rowCount ? parseInt(item.rowCount) : item.rows.length,
|
|
90
89
|
template: item.template,
|
|
91
90
|
sort: item.sort,
|
|
@@ -99,7 +98,7 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket) {
|
|
|
99
98
|
/**
|
|
100
99
|
* Extract and transform the data from itemInfo.
|
|
101
100
|
*/
|
|
102
|
-
async function getPivotTable(report, dashboardFilters, client, dateBucketInitial) {
|
|
101
|
+
async function getPivotTable(report, dashboardFilters, client, dateBucketInitial, dashboardName, tenants) {
|
|
103
102
|
if (!report)
|
|
104
103
|
return undefined;
|
|
105
104
|
const dateFilter = Object.values(dashboardFilters ?? {}).find((filter) => filter.filterType === 'date_range' || filter.operator === 'BETWEEN');
|
|
@@ -147,7 +146,7 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
147
146
|
if (!dateBucket && filterDateRange) {
|
|
148
147
|
dateBucket = (0, dates_1.getDateBucketFromRange)(filterDateRange);
|
|
149
148
|
}
|
|
150
|
-
const pivotTable = await (0, pivotConstructor_1.generatePivotWithSQL)(pivot, report, client, dateBucket, dateFilter, report.distinctStrings);
|
|
149
|
+
const pivotTable = await (0, pivotConstructor_1.generatePivotWithSQL)(pivot, report, client, dateBucket, dateFilter, report.distinctStrings, undefined, dashboardName, tenants);
|
|
151
150
|
return pivotTable;
|
|
152
151
|
}
|
|
153
152
|
catch (e) {
|
|
@@ -160,6 +159,8 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
160
159
|
pivot,
|
|
161
160
|
report,
|
|
162
161
|
client,
|
|
162
|
+
dashboardName,
|
|
163
|
+
tenants,
|
|
163
164
|
})
|
|
164
165
|
: undefined;
|
|
165
166
|
}
|
|
@@ -186,104 +187,22 @@ function extractPivotedYAxis(pivotTable, itemInfo, config = undefined) {
|
|
|
186
187
|
// }
|
|
187
188
|
// return fields;
|
|
188
189
|
}
|
|
189
|
-
async function getDashboard(dashboardName, client) {
|
|
190
|
-
const searchParams = new URLSearchParams({
|
|
191
|
-
publicKey: client.publicKey,
|
|
192
|
-
orgId: client?.organizationId || '*',
|
|
193
|
-
name: dashboardName,
|
|
194
|
-
}).toString();
|
|
190
|
+
async function getDashboard(dashboardName, client, tenants, flags) {
|
|
195
191
|
const hostedBody = {
|
|
196
192
|
metadata: {
|
|
197
193
|
name: dashboardName,
|
|
198
194
|
task: 'dashboard',
|
|
199
195
|
clientId: client.publicKey,
|
|
200
|
-
orgId: client.organizationId || '*',
|
|
201
196
|
databaseType: client.databaseType,
|
|
202
197
|
useNewNodeSql: true,
|
|
198
|
+
tenants,
|
|
199
|
+
flags,
|
|
203
200
|
},
|
|
204
201
|
};
|
|
205
|
-
const resp = await (0, dataFetcher_1.getData)(client, `dashconfig?${searchParams}`, 'omit', hostedBody, null, 'GET');
|
|
206
|
-
return resp;
|
|
207
|
-
}
|
|
208
|
-
async function getDashboardFilters(dashboardName, client) {
|
|
209
202
|
const searchParams = new URLSearchParams({
|
|
210
203
|
publicKey: client.publicKey,
|
|
211
|
-
orgId: client.organizationId || '*',
|
|
212
204
|
name: dashboardName,
|
|
213
205
|
}).toString();
|
|
214
|
-
const hostedBody = {
|
|
215
|
-
metadata: {
|
|
216
|
-
name: dashboardName,
|
|
217
|
-
task: 'dashboard-filters-options',
|
|
218
|
-
clientId: client.publicKey,
|
|
219
|
-
orgId: client.organizationId || '*',
|
|
220
|
-
databaseType: client.databaseType,
|
|
221
|
-
useNewNodeSql: true,
|
|
222
|
-
},
|
|
223
|
-
};
|
|
224
206
|
const resp = await (0, dataFetcher_1.getData)(client, `dashconfig?${searchParams}`, 'omit', hostedBody, null, 'GET');
|
|
225
|
-
|
|
226
|
-
if (resp.dateFilter && Object.keys(resp.dateFilter).length) {
|
|
227
|
-
let presetsOptions = dateRangePickerUtils_1.defaultOptionsV2;
|
|
228
|
-
if (resp.dateFilter.presetRanges) {
|
|
229
|
-
presetsOptions = resp.dateFilter.presetRanges.map((elem) => {
|
|
230
|
-
if (!elem.isStatic) {
|
|
231
|
-
return {
|
|
232
|
-
label: elem.label,
|
|
233
|
-
value: elem.value,
|
|
234
|
-
startDate: (dateRangePickerUtils_1.PRIMARY_RANGE[elem.value] ??
|
|
235
|
-
dateRangePickerUtils_1.PRIMARY_RANGE['LAST_30_DAYS']).startDate,
|
|
236
|
-
endDate: (dateRangePickerUtils_1.PRIMARY_RANGE[elem.value] ??
|
|
237
|
-
dateRangePickerUtils_1.PRIMARY_RANGE['LAST_30_DAYS']).endDate,
|
|
238
|
-
};
|
|
239
|
-
}
|
|
240
|
-
return {
|
|
241
|
-
label: elem.label,
|
|
242
|
-
value: elem.value,
|
|
243
|
-
startDate: new Date(elem.startDate),
|
|
244
|
-
endDate: new Date(elem.endDate),
|
|
245
|
-
};
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
const key = resp.dateFilter?.primaryRange?.value || 'LAST_6_MONTHS';
|
|
249
|
-
const primaryPreset = presetsOptions.find((option) => {
|
|
250
|
-
return option.value === key;
|
|
251
|
-
});
|
|
252
|
-
const filter = {
|
|
253
|
-
startDate: primaryPreset.startDate,
|
|
254
|
-
endDate: primaryPreset.endDate,
|
|
255
|
-
filterType: 'date_range',
|
|
256
|
-
options: presetsOptions.map((elem) => {
|
|
257
|
-
return {
|
|
258
|
-
label: elem.label,
|
|
259
|
-
value: elem.value,
|
|
260
|
-
};
|
|
261
|
-
}),
|
|
262
|
-
field: 'date_range',
|
|
263
|
-
label: resp.dateFilter.label,
|
|
264
|
-
preset: {
|
|
265
|
-
label: primaryPreset.label,
|
|
266
|
-
value: primaryPreset.value,
|
|
267
|
-
},
|
|
268
|
-
dashboardName: dashboardName,
|
|
269
|
-
};
|
|
270
|
-
if (resp.dateFilter.comparison) {
|
|
271
|
-
filter.comparison = true;
|
|
272
|
-
const compKey = resp.dateFilter.defaultComparisonRange ?? 'PREV_PERIOD';
|
|
273
|
-
const range = { startDate: filter.startDate, endDate: filter.endDate };
|
|
274
|
-
filter.comparisonRange = {
|
|
275
|
-
startDate: dateRangePickerUtils_1.COMPARISON_RANGE[compKey](range)?.startDate,
|
|
276
|
-
endDate: dateRangePickerUtils_1.COMPARISON_RANGE[compKey](range)?.endDate,
|
|
277
|
-
value: compKey,
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
else {
|
|
281
|
-
filter.comparison = false;
|
|
282
|
-
}
|
|
283
|
-
filterArray.push(filter);
|
|
284
|
-
}
|
|
285
|
-
filterArray.push(...resp.filters.map((f) => {
|
|
286
|
-
return { ...f, dashboardName: dashboardName };
|
|
287
|
-
}));
|
|
288
|
-
return filterArray;
|
|
207
|
+
return resp;
|
|
289
208
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { QuillProviderClient } from '../models/Client';
|
|
2
2
|
export declare function getData(client: QuillProviderClient, cloudQueryEndpoint: string, noCred: RequestCredentials, hostedRequestBody: any, cloudRequestBody: any, method?: string, queryParam?: string, abortSignal?: AbortSignal): Promise<any>;
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function useQuillCloud(): {
|
|
4
|
+
getDataFromCloud: (client: QuillProviderClient, cloudQueryEndpoint: string, cloudRequestBody: any, method?: string, abortSignal?: AbortSignal) => Promise<any>;
|
|
5
|
+
};
|
|
4
6
|
export declare function fetchSqlQuery(ast: any, client: QuillProviderClient, formData?: any): Promise<{
|
|
5
7
|
query: string;
|
|
6
8
|
error?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgFvD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,WAAW,gBA0K1B;AAED,wBAAgB,aAAa;+BAGjB,mBAAmB,sBACP,MAAM,oBACR,GAAG,iCAEP,WAAW;EAoC5B;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,CAAC,EAAE,GAAG,GACb,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB5C"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getData = getData;
|
|
4
|
-
exports.
|
|
4
|
+
exports.useQuillCloud = useQuillCloud;
|
|
5
5
|
exports.fetchSqlQuery = fetchSqlQuery;
|
|
6
|
+
const react_1 = require("react");
|
|
6
7
|
const constants_1 = require("./constants");
|
|
8
|
+
const Context_1 = require("../Context");
|
|
7
9
|
function fetchQuillData(responseData) {
|
|
8
10
|
if (!responseData) {
|
|
9
11
|
return null;
|
|
@@ -66,6 +68,7 @@ async function testSqlViewState(hostedRequestBody, client, referencedTables) {
|
|
|
66
68
|
}
|
|
67
69
|
// this function gets the data either from the self hosted endpoint or
|
|
68
70
|
// our cloud server
|
|
71
|
+
// Tenants and Flags must be passed in as part of the body explicity
|
|
69
72
|
async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cloudRequestBody, method = 'POST', queryParam, abortSignal) {
|
|
70
73
|
if (!client) {
|
|
71
74
|
return null;
|
|
@@ -176,7 +179,33 @@ async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cl
|
|
|
176
179
|
}
|
|
177
180
|
else {
|
|
178
181
|
// cloud
|
|
179
|
-
|
|
182
|
+
try {
|
|
183
|
+
const url = `${constants_1.QUILL_SERVER}/${cloudQueryEndpoint}`;
|
|
184
|
+
const resp = await fetch(url, {
|
|
185
|
+
method,
|
|
186
|
+
headers: {
|
|
187
|
+
Authorization: 'Bearer ',
|
|
188
|
+
'Content-Type': 'application/json',
|
|
189
|
+
},
|
|
190
|
+
body: method === 'POST'
|
|
191
|
+
? JSON.stringify({
|
|
192
|
+
...cloudRequestBody,
|
|
193
|
+
...{
|
|
194
|
+
publicKey: client?.publicKey,
|
|
195
|
+
},
|
|
196
|
+
})
|
|
197
|
+
: null,
|
|
198
|
+
signal: abortSignal,
|
|
199
|
+
});
|
|
200
|
+
return await resp.json();
|
|
201
|
+
}
|
|
202
|
+
catch (e) {
|
|
203
|
+
if (e instanceof Error && e.name === 'AbortError') {
|
|
204
|
+
throw e;
|
|
205
|
+
}
|
|
206
|
+
console.error('Failed to parse JSON:', e);
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
180
209
|
}
|
|
181
210
|
}
|
|
182
211
|
catch (e) {
|
|
@@ -187,35 +216,42 @@ async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cl
|
|
|
187
216
|
return null;
|
|
188
217
|
}
|
|
189
218
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
throw e;
|
|
219
|
+
function useQuillCloud() {
|
|
220
|
+
const { tenants, flags } = (0, react_1.useContext)(Context_1.TenantContext);
|
|
221
|
+
const getDataFromCloud = async (client, cloudQueryEndpoint, cloudRequestBody, method = 'POST', abortSignal) => {
|
|
222
|
+
try {
|
|
223
|
+
const url = `${constants_1.QUILL_SERVER}/${cloudQueryEndpoint}`;
|
|
224
|
+
const resp = await fetch(url, {
|
|
225
|
+
method,
|
|
226
|
+
headers: {
|
|
227
|
+
Authorization: 'Bearer ',
|
|
228
|
+
'Content-Type': 'application/json',
|
|
229
|
+
},
|
|
230
|
+
body: method === 'POST'
|
|
231
|
+
? JSON.stringify({
|
|
232
|
+
...cloudRequestBody,
|
|
233
|
+
...{
|
|
234
|
+
publicKey: client?.publicKey,
|
|
235
|
+
tenants: tenants,
|
|
236
|
+
flags: flags,
|
|
237
|
+
},
|
|
238
|
+
})
|
|
239
|
+
: null,
|
|
240
|
+
signal: abortSignal,
|
|
241
|
+
});
|
|
242
|
+
return await resp.json();
|
|
215
243
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
244
|
+
catch (e) {
|
|
245
|
+
if (e instanceof Error && e.name === 'AbortError') {
|
|
246
|
+
throw e;
|
|
247
|
+
}
|
|
248
|
+
console.error('Failed to parse JSON:', e);
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
return {
|
|
253
|
+
getDataFromCloud,
|
|
254
|
+
};
|
|
219
255
|
}
|
|
220
256
|
async function fetchSqlQuery(ast, client, formData) {
|
|
221
257
|
try {
|
|
@@ -4,7 +4,7 @@ import { FilterTreeNode } from './astFilterProcessing';
|
|
|
4
4
|
export declare function findAndProcessDateFilter(filters: any[]): any;
|
|
5
5
|
export declare function processFilterFromBackend(filter: any): any;
|
|
6
6
|
export declare function updateFilter(filter: any, value: any, comparison: any, dashboardName: string): any;
|
|
7
|
-
export declare const getType: (t: string) => FieldType
|
|
7
|
+
export declare const getType: (t: string) => FieldType;
|
|
8
8
|
/**
|
|
9
9
|
* Returns a sentence to describe a Filter
|
|
10
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAGxE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,OAkBnD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAU,EACjB,UAAU,EAAE,GAAU,EACtB,aAAa,EAAE,MAAM,OAmGtB;AAGD,eAAO,MAAM,OAAO,MAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAGxE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,OAkBnD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAU,EACjB,UAAU,EAAE,GAAU,EACtB,aAAa,EAAE,MAAM,OAmGtB;AAGD,eAAO,MAAM,OAAO,MAAO,MAAM,cA0DhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAwB7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,GAAG,GAAG,cAAc,EAAE,CAoCrE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,yBAgCnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA2B/D;AAED,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,mBAAmB,GACvC,mBAAmB,CAkKrB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EAAE,EAC1B,aAAa,EAAE,cAAc,EAAE,GAC9B,GAAG,EAAE,CA+CP;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,cAAc,EAAE,EAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,GAC1B,OAAO,CA+BT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE;IACpD,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAChD,GAAG;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzB,CASA;AAED,eAAO,MAAM,uBAAuB,WAC1B,mBAAmB,WAClB,WAAW,EAAE,iBACP,MAAM,KACpB,CAAC,mBAAmB,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,SAqDpD,CAAC"}
|
|
@@ -2,7 +2,10 @@ import { QuillProviderClient } from '../models/Client';
|
|
|
2
2
|
import { ColumnInternal } from '../models/Columns';
|
|
3
3
|
import { Pivot } from '../models/Pivot';
|
|
4
4
|
import { QuillReportInternal } from '../models/Report';
|
|
5
|
-
export declare function generatePivotWithSQL(pivot: Pivot, report: QuillReportInternal, client: QuillProviderClient, dateBucket?: string, dateFilter?: any, distinctStrings?: string[], rowLimit?: number
|
|
5
|
+
export declare function generatePivotWithSQL(pivot: Pivot, report: QuillReportInternal, client: QuillProviderClient, dateBucket?: string, dateFilter?: any, distinctStrings?: string[], rowLimit?: number, dashboardName?: string, tenants?: {
|
|
6
|
+
tenantField: string;
|
|
7
|
+
tenantIds: (string | number)[];
|
|
8
|
+
}[] | (string | number)[]): Promise<{
|
|
6
9
|
rows: any[];
|
|
7
10
|
columns: ColumnInternal[];
|
|
8
11
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AASvD,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,GAAG,EAChB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,QAAQ,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AASvD,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,GAAG,EAChB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EACJ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACtB,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,OAAO,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC,CA8OrD"}
|
|
@@ -9,7 +9,7 @@ const dates_1 = require("./dates");
|
|
|
9
9
|
const queryConstructor_1 = require("./queryConstructor");
|
|
10
10
|
const textProcessing_1 = require("./textProcessing");
|
|
11
11
|
const valueFormatter_1 = require("./valueFormatter");
|
|
12
|
-
async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilter, distinctStrings, rowLimit) {
|
|
12
|
+
async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilter, distinctStrings, rowLimit, dashboardName, tenants) {
|
|
13
13
|
let comparisonInterval = undefined;
|
|
14
14
|
if (dateFilter && dateFilter.comparisonRange) {
|
|
15
15
|
comparisonInterval = (0, dates_1.getComparisonInterval)({
|
|
@@ -34,14 +34,13 @@ async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilte
|
|
|
34
34
|
const filteredDistinctStrings = distinctStrings?.filter((value) => value !== null && value !== undefined);
|
|
35
35
|
const sqlQuery = (0, queryConstructor_1.generatePivotQuery)(pivot, report.itemQuery, client.databaseType || 'postgresql', comparisonInterval, filteredDistinctStrings?.slice(0, constants_1.MAX_PIVOT_UNIQUE_VALUES) ??
|
|
36
36
|
distinctStringValues?.slice(0, constants_1.MAX_PIVOT_UNIQUE_VALUES), dateBucket, rowLimit);
|
|
37
|
-
if (!sqlQuery
|
|
38
|
-
throw '
|
|
37
|
+
if (!sqlQuery) {
|
|
38
|
+
throw 'Error generating pivot query';
|
|
39
39
|
}
|
|
40
40
|
const hostedBody = {
|
|
41
41
|
metadata: {
|
|
42
42
|
preQueries: [sqlQuery],
|
|
43
43
|
task: 'query',
|
|
44
|
-
orgId: client.organizationId || '*',
|
|
45
44
|
clientId: client.publicKey,
|
|
46
45
|
databaseType: client?.databaseType,
|
|
47
46
|
getCustomFields: false,
|
|
@@ -50,6 +49,8 @@ async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilte
|
|
|
50
49
|
convertDatatypes: true,
|
|
51
50
|
},
|
|
52
51
|
useNewNodeSql: true,
|
|
52
|
+
dashboardName: dashboardName && tenants ? dashboardName : undefined,
|
|
53
|
+
tenants: dashboardName && tenants ? tenants : undefined,
|
|
53
54
|
},
|
|
54
55
|
};
|
|
55
56
|
const cloudBody = { ...hostedBody };
|
|
@@ -95,8 +96,7 @@ async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilte
|
|
|
95
96
|
}
|
|
96
97
|
return 0;
|
|
97
98
|
});
|
|
98
|
-
if (pivot.rowField &&
|
|
99
|
-
!['string', 'varchar', 'text', 'char'].includes(pivot.rowFieldType || '')) {
|
|
99
|
+
if (pivot.rowField && !(0, columnProcessing_1.isStringType)(pivot.rowFieldType || '')) {
|
|
100
100
|
rows.forEach((row) => {
|
|
101
101
|
row.__quillRawDate =
|
|
102
102
|
typeof row[pivot.rowField || ''] === 'object' // BigQuery
|
|
@@ -125,7 +125,7 @@ async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilte
|
|
|
125
125
|
// add a row for each date in the range that doesn't have a value
|
|
126
126
|
if (pivot.rowField &&
|
|
127
127
|
pivot.rowFieldType &&
|
|
128
|
-
!
|
|
128
|
+
!(0, columnProcessing_1.isStringType)(pivot.rowFieldType) &&
|
|
129
129
|
dateFilter?.startDate &&
|
|
130
130
|
dateFilter?.endDate) {
|
|
131
131
|
const dateSet = new Set(rows.map((row) => row[pivot.rowField || '']));
|