@quillsql/react 2.13.27 → 2.13.29
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 +2 -1
- 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 +140 -45
- 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 +43 -61
- package/dist/cjs/Dashboard.d.ts +4 -0
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +49 -9
- package/dist/cjs/QuillProvider.d.ts +7 -46
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +2 -4
- 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 +3 -2
- package/dist/cjs/components/Chart/InternalChart.d.ts +2 -1
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/InternalChart.js +110 -28
- 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 +66 -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/TableComponent.d.ts +2 -1
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.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 +3 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +29 -20
- 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 +6 -2
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +34 -10
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +6 -4
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -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 +2 -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 +4 -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 +48 -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/constants.d.ts +2 -0
- package/dist/cjs/utils/constants.d.ts.map +1 -1
- package/dist/cjs/utils/constants.js +3 -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 +13 -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 +3 -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 +104 -88
- 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 +46 -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 +2 -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 +144 -50
- 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 +42 -60
- package/dist/esm/Dashboard.d.ts +4 -0
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +50 -10
- package/dist/esm/QuillProvider.d.ts +7 -46
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +2 -4
- 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 +4 -3
- package/dist/esm/components/Chart/InternalChart.d.ts +2 -1
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/InternalChart.js +111 -29
- 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 +66 -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/TableComponent.d.ts +2 -1
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.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 +3 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +29 -20
- 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 +6 -2
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +34 -10
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +7 -5
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- 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 +2 -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 +5 -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 +48 -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/constants.d.ts +2 -0
- package/dist/esm/utils/constants.d.ts.map +1 -1
- package/dist/esm/utils/constants.js +2 -0
- 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 +13 -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 +3 -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 +104 -88
- 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 +47 -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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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getTableNames } from '../components/ReportBuilder/ast';
|
|
2
|
-
import { convertBigQuery, convertGroupBy, convertRemoveSimpleParentheses, convertStringComparison, convertUnaryToBinary, convertWildcardColumns, } from '../components/ReportBuilder/convert';
|
|
2
|
+
import { convertBigQuery, convertGroupBy, convertOrderBy, convertRemoveSimpleParentheses, convertStringComparison, convertUnaryToBinary, convertWildcardColumns, } from '../components/ReportBuilder/convert';
|
|
3
3
|
import { deepCopy, removeNonSelectedTableReferences, removeTableNameAlias, } from '../components/ReportBuilder/util';
|
|
4
4
|
import { QUILL_SERVER } from './constants';
|
|
5
5
|
import { getUniqueStringValues } from './tableProcessing';
|
|
@@ -326,7 +326,8 @@ export const createBasicSelectASTFromColumns = (columns, tableName) => {
|
|
|
326
326
|
limit: null,
|
|
327
327
|
};
|
|
328
328
|
};
|
|
329
|
-
|
|
329
|
+
//TODO: Move all fetches to a /sdk route
|
|
330
|
+
export const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot, currentQuery, prevTable, dashboardName) => {
|
|
330
331
|
let res, data, ast, newAst, pivot;
|
|
331
332
|
let numRetries = 0;
|
|
332
333
|
let whereAST;
|
|
@@ -379,6 +380,7 @@ export const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, pre
|
|
|
379
380
|
newAst = removeTableNameAlias(newAst);
|
|
380
381
|
newAst = convertWildcardColumns(newAst, schema); // must go before groupby
|
|
381
382
|
({ ast: newAst, pivot } = convertGroupBy(newAst, schema, prevPivot, prevTable));
|
|
383
|
+
newAst = convertOrderBy(newAst, schema);
|
|
382
384
|
newAst = convertStringComparison(newAst, client.databaseType || 'postgresql');
|
|
383
385
|
newAst = convertRemoveSimpleParentheses(newAst);
|
|
384
386
|
const table = getTableNames(newAst)[0];
|
|
@@ -390,7 +392,7 @@ export const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, pre
|
|
|
390
392
|
if (!tableInfo) {
|
|
391
393
|
throw new Error('Table info not found');
|
|
392
394
|
}
|
|
393
|
-
const uniqueValues = await getUniqueStringValues(tableInfo.columns, processedName, client);
|
|
395
|
+
const uniqueValues = await getUniqueStringValues(tableInfo.columns, processedName, client, undefined, undefined, undefined, undefined, dashboardName);
|
|
394
396
|
newAst = convertUnaryToBinary(newAst);
|
|
395
397
|
newAst = removeNonSelectedTableReferences(newAst, processedName, tableInfo.columns.map((col) => col.field), uniqueValues);
|
|
396
398
|
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,CAgFA"}
|
package/dist/esm/utils/client.js
CHANGED
|
@@ -7,6 +7,7 @@ export const EMPTY_CLIENT = {
|
|
|
7
7
|
};
|
|
8
8
|
export async function fetchClient(publicKey, queryEndpoint, withCredentials = false, queryHeaders) {
|
|
9
9
|
let result = EMPTY_CLIENT;
|
|
10
|
+
let clientTenantIds = [];
|
|
10
11
|
try {
|
|
11
12
|
const response = await fetch(`${queryEndpoint}`, {
|
|
12
13
|
method: 'POST',
|
|
@@ -25,9 +26,55 @@ export async function fetchClient(publicKey, queryEndpoint, withCredentials = fa
|
|
|
25
26
|
});
|
|
26
27
|
const json = await response.json();
|
|
27
28
|
result = json.data?.data?.client || json.data?.client;
|
|
29
|
+
clientTenantIds = await Promise.all(result.allTenantTypes?.map(async (tenant) => {
|
|
30
|
+
const tenantResponse = await fetch(queryEndpoint, {
|
|
31
|
+
method: 'POST',
|
|
32
|
+
headers: {
|
|
33
|
+
...queryHeaders,
|
|
34
|
+
'Content-Type': 'application/json',
|
|
35
|
+
},
|
|
36
|
+
body: JSON.stringify({
|
|
37
|
+
metadata: {
|
|
38
|
+
tenantId: tenant.id,
|
|
39
|
+
task: 'tenant-query',
|
|
40
|
+
clientId: result.id,
|
|
41
|
+
},
|
|
42
|
+
}),
|
|
43
|
+
credentials: withCredentials ? 'include' : 'omit',
|
|
44
|
+
});
|
|
45
|
+
const data = await tenantResponse.json();
|
|
46
|
+
if (!data.data?.rows) {
|
|
47
|
+
return {
|
|
48
|
+
id: tenant.id,
|
|
49
|
+
tenantIds: [],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
id: tenant.id,
|
|
54
|
+
tenantIds: data.data.rows.map((row) => ({
|
|
55
|
+
id: row[tenant.tenantField],
|
|
56
|
+
flag: row['quill_flag'],
|
|
57
|
+
label: row['quill_label'],
|
|
58
|
+
})),
|
|
59
|
+
};
|
|
60
|
+
}));
|
|
28
61
|
}
|
|
29
62
|
catch (error) {
|
|
30
63
|
console.error('ERROR:', error);
|
|
31
64
|
}
|
|
32
|
-
return
|
|
65
|
+
return {
|
|
66
|
+
...result,
|
|
67
|
+
allTenantTypes: result.multiTenancyDisabled
|
|
68
|
+
? [
|
|
69
|
+
{
|
|
70
|
+
scope: 'database',
|
|
71
|
+
flags: [],
|
|
72
|
+
tenantField: 'QUILL_SINGLE_TENANT',
|
|
73
|
+
},
|
|
74
|
+
]
|
|
75
|
+
: result.allTenantTypes?.map((tenant) => ({
|
|
76
|
+
...tenant,
|
|
77
|
+
tenantIds: clientTenantIds?.find((clientTenant) => clientTenant.id === tenant.id)?.tenantIds || [],
|
|
78
|
+
})),
|
|
79
|
+
};
|
|
33
80
|
}
|
|
@@ -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"}
|
|
@@ -91,6 +91,9 @@ export function convertPostgresColumn(field) {
|
|
|
91
91
|
case 3807: // jsonb[]
|
|
92
92
|
fieldType = 'jsonb[]';
|
|
93
93
|
break;
|
|
94
|
+
case 2277: // anyarray
|
|
95
|
+
fieldType = 'anyarray';
|
|
96
|
+
break;
|
|
94
97
|
case 1043: // varchar
|
|
95
98
|
default:
|
|
96
99
|
fieldType = 'varchar';
|
|
@@ -291,7 +294,34 @@ export function processColumnName(columnName) {
|
|
|
291
294
|
return removeBigQuerySpecialChars(columnName);
|
|
292
295
|
}
|
|
293
296
|
export function isStringType(fieldType) {
|
|
294
|
-
return ['string', 'varchar', 'text', 'char'].includes(fieldType);
|
|
297
|
+
return ['string', 'varchar', 'text', 'char', 'bpchar', 'citext'].includes(fieldType);
|
|
298
|
+
}
|
|
299
|
+
export function isDateType(fieldType) {
|
|
300
|
+
return [
|
|
301
|
+
'date',
|
|
302
|
+
'datetime',
|
|
303
|
+
'time',
|
|
304
|
+
'timestamptz',
|
|
305
|
+
'timestamp',
|
|
306
|
+
'interval',
|
|
307
|
+
].includes(fieldType);
|
|
308
|
+
}
|
|
309
|
+
export function isNumberType(fieldType) {
|
|
310
|
+
return [
|
|
311
|
+
'int8',
|
|
312
|
+
'int2',
|
|
313
|
+
'int4',
|
|
314
|
+
'float4',
|
|
315
|
+
'float8',
|
|
316
|
+
'numeric',
|
|
317
|
+
'number',
|
|
318
|
+
'smallint',
|
|
319
|
+
'float2',
|
|
320
|
+
'float16',
|
|
321
|
+
].includes(fieldType);
|
|
322
|
+
}
|
|
323
|
+
export function isBoolType(fieldType) {
|
|
324
|
+
return ['bool', 'boolean'].includes(fieldType);
|
|
295
325
|
}
|
|
296
326
|
export const getYAxisFields = (report, dashboardFilters) => {
|
|
297
327
|
try {
|
|
@@ -2,4 +2,6 @@ export declare const MAX_COLUMN_ROWS_LIMIT = 500;
|
|
|
2
2
|
export declare const MAX_PIVOT_UNIQUE_VALUES = 250;
|
|
3
3
|
export declare const QUILL_SERVER: string;
|
|
4
4
|
export declare const QUILL_QUERY_ENDPOINT: string;
|
|
5
|
+
export declare const ALL_TENANTS = "QUILL_ALL_TENANTS";
|
|
6
|
+
export declare const SINGLE_TENANT = "QUILL_SINGLE_TENANT";
|
|
5
7
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,YAAY,QAGoB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,QAGnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,YAAY,QAGoB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,QAGnB,CAAC;AACf,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,aAAa,wBAAwB,CAAC"}
|
|
@@ -6,3 +6,5 @@ export const QUILL_SERVER = typeof process !== 'undefined' && process.env
|
|
|
6
6
|
export const QUILL_QUERY_ENDPOINT = typeof process !== 'undefined' && process.env
|
|
7
7
|
? (process.env.QUILL_QUERY_ENDPOINT ?? '/cloud')
|
|
8
8
|
: '/cloud';
|
|
9
|
+
export const ALL_TENANTS = 'QUILL_ALL_TENANTS';
|
|
10
|
+
export const SINGLE_TENANT = 'QUILL_SINGLE_TENANT';
|
|
@@ -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,CA6Bd"}
|
|
@@ -3,7 +3,6 @@ import { snakeAndCamelCaseToTitleCase } from './textProcessing';
|
|
|
3
3
|
import { getData } from './dataFetcher';
|
|
4
4
|
import { getDateBucketFromRange } from './dates';
|
|
5
5
|
import { generatePivotWithSQL } from './pivotConstructor';
|
|
6
|
-
import { COMPARISON_RANGE, defaultOptionsV2, PRIMARY_RANGE, } from '../DateRangePicker/dateRangePickerUtils';
|
|
7
6
|
const defaultDashboardItem = {
|
|
8
7
|
id: '',
|
|
9
8
|
name: '',
|
|
@@ -46,7 +45,7 @@ export async function cleanDashboardItem(item, dashboardFilters, client, dateBuc
|
|
|
46
45
|
let pivotTable;
|
|
47
46
|
let pivotError;
|
|
48
47
|
try {
|
|
49
|
-
pivotTable = await getPivotTable(item, dashboardFilters, client, dateBucket);
|
|
48
|
+
pivotTable = await getPivotTable(item, dashboardFilters, client, dateBucket, item.dashboardName);
|
|
50
49
|
}
|
|
51
50
|
catch (e) {
|
|
52
51
|
pivotTable = undefined;
|
|
@@ -81,6 +80,7 @@ export async function cleanDashboardItem(item, dashboardFilters, client, dateBuc
|
|
|
81
80
|
order: item.order,
|
|
82
81
|
filtersApplied: item.filtersApplied,
|
|
83
82
|
filterMap: item.filterMap,
|
|
83
|
+
flags: item.flags,
|
|
84
84
|
rowCount: item.rowCount ? parseInt(item.rowCount) : item.rows.length,
|
|
85
85
|
template: item.template,
|
|
86
86
|
sort: item.sort,
|
|
@@ -94,7 +94,7 @@ export async function cleanDashboardItem(item, dashboardFilters, client, dateBuc
|
|
|
94
94
|
/**
|
|
95
95
|
* Extract and transform the data from itemInfo.
|
|
96
96
|
*/
|
|
97
|
-
async function getPivotTable(report, dashboardFilters, client, dateBucketInitial) {
|
|
97
|
+
async function getPivotTable(report, dashboardFilters, client, dateBucketInitial, dashboardName, tenants) {
|
|
98
98
|
if (!report)
|
|
99
99
|
return undefined;
|
|
100
100
|
const dateFilter = Object.values(dashboardFilters ?? {}).find((filter) => filter.filterType === 'date_range' || filter.operator === 'BETWEEN');
|
|
@@ -142,7 +142,7 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
142
142
|
if (!dateBucket && filterDateRange) {
|
|
143
143
|
dateBucket = getDateBucketFromRange(filterDateRange);
|
|
144
144
|
}
|
|
145
|
-
const pivotTable = await generatePivotWithSQL(pivot, report, client, dateBucket, dateFilter, report.distinctStrings);
|
|
145
|
+
const pivotTable = await generatePivotWithSQL(pivot, report, client, dateBucket, dateFilter, report.distinctStrings, undefined, dashboardName, tenants);
|
|
146
146
|
return pivotTable;
|
|
147
147
|
}
|
|
148
148
|
catch (e) {
|
|
@@ -155,6 +155,8 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
155
155
|
pivot,
|
|
156
156
|
report,
|
|
157
157
|
client,
|
|
158
|
+
dashboardName,
|
|
159
|
+
tenants,
|
|
158
160
|
})
|
|
159
161
|
: undefined;
|
|
160
162
|
}
|
|
@@ -181,104 +183,25 @@ function extractPivotedYAxis(pivotTable, itemInfo, config = undefined) {
|
|
|
181
183
|
// }
|
|
182
184
|
// return fields;
|
|
183
185
|
}
|
|
184
|
-
export async function getDashboard(dashboardName, client) {
|
|
185
|
-
const searchParams = new URLSearchParams({
|
|
186
|
-
publicKey: client.publicKey,
|
|
187
|
-
orgId: client?.organizationId || '*',
|
|
188
|
-
name: dashboardName,
|
|
189
|
-
}).toString();
|
|
186
|
+
export async function getDashboard(dashboardName, client, tenants, flags) {
|
|
190
187
|
const hostedBody = {
|
|
191
188
|
metadata: {
|
|
192
189
|
name: dashboardName,
|
|
193
190
|
task: 'dashboard',
|
|
194
191
|
clientId: client.publicKey,
|
|
195
|
-
orgId: client.organizationId || '*',
|
|
196
192
|
databaseType: client.databaseType,
|
|
197
193
|
useNewNodeSql: true,
|
|
194
|
+
tenants,
|
|
195
|
+
flags,
|
|
198
196
|
},
|
|
199
197
|
};
|
|
200
|
-
const resp = await getData(client, `dashconfig?${searchParams}`, 'omit', hostedBody, null, 'GET');
|
|
201
|
-
return resp;
|
|
202
|
-
}
|
|
203
|
-
export async function getDashboardFilters(dashboardName, client) {
|
|
204
198
|
const searchParams = new URLSearchParams({
|
|
205
199
|
publicKey: client.publicKey,
|
|
206
|
-
orgId: client.organizationId || '*',
|
|
207
200
|
name: dashboardName,
|
|
208
201
|
}).toString();
|
|
209
|
-
const hostedBody = {
|
|
210
|
-
metadata: {
|
|
211
|
-
name: dashboardName,
|
|
212
|
-
task: 'dashboard-filters-options',
|
|
213
|
-
clientId: client.publicKey,
|
|
214
|
-
orgId: client.organizationId || '*',
|
|
215
|
-
databaseType: client.databaseType,
|
|
216
|
-
useNewNodeSql: true,
|
|
217
|
-
},
|
|
218
|
-
};
|
|
219
202
|
const resp = await getData(client, `dashconfig?${searchParams}`, 'omit', hostedBody, null, 'GET');
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
presetsOptions = resp.dateFilter.presetRanges.map((elem) => {
|
|
225
|
-
if (!elem.isStatic) {
|
|
226
|
-
return {
|
|
227
|
-
label: elem.label,
|
|
228
|
-
value: elem.value,
|
|
229
|
-
startDate: (PRIMARY_RANGE[elem.value] ??
|
|
230
|
-
PRIMARY_RANGE['LAST_30_DAYS']).startDate,
|
|
231
|
-
endDate: (PRIMARY_RANGE[elem.value] ??
|
|
232
|
-
PRIMARY_RANGE['LAST_30_DAYS']).endDate,
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
return {
|
|
236
|
-
label: elem.label,
|
|
237
|
-
value: elem.value,
|
|
238
|
-
startDate: new Date(elem.startDate),
|
|
239
|
-
endDate: new Date(elem.endDate),
|
|
240
|
-
};
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
const key = resp.dateFilter?.primaryRange?.value || 'LAST_6_MONTHS';
|
|
244
|
-
const primaryPreset = presetsOptions.find((option) => {
|
|
245
|
-
return option.value === key;
|
|
246
|
-
});
|
|
247
|
-
const filter = {
|
|
248
|
-
startDate: primaryPreset.startDate,
|
|
249
|
-
endDate: primaryPreset.endDate,
|
|
250
|
-
filterType: 'date_range',
|
|
251
|
-
options: presetsOptions.map((elem) => {
|
|
252
|
-
return {
|
|
253
|
-
label: elem.label,
|
|
254
|
-
value: elem.value,
|
|
255
|
-
};
|
|
256
|
-
}),
|
|
257
|
-
field: 'date_range',
|
|
258
|
-
label: resp.dateFilter.label,
|
|
259
|
-
preset: {
|
|
260
|
-
label: primaryPreset.label,
|
|
261
|
-
value: primaryPreset.value,
|
|
262
|
-
},
|
|
263
|
-
dashboardName: dashboardName,
|
|
264
|
-
};
|
|
265
|
-
if (resp.dateFilter.comparison) {
|
|
266
|
-
filter.comparison = true;
|
|
267
|
-
const compKey = resp.dateFilter.defaultComparisonRange ?? 'PREV_PERIOD';
|
|
268
|
-
const range = { startDate: filter.startDate, endDate: filter.endDate };
|
|
269
|
-
filter.comparisonRange = {
|
|
270
|
-
startDate: COMPARISON_RANGE[compKey](range)?.startDate,
|
|
271
|
-
endDate: COMPARISON_RANGE[compKey](range)?.endDate,
|
|
272
|
-
value: compKey,
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
filter.comparison = false;
|
|
277
|
-
}
|
|
278
|
-
filterArray.push(filter);
|
|
279
|
-
}
|
|
280
|
-
filterArray.push(...resp.filters.map((f) => {
|
|
281
|
-
return { ...f, dashboardName: dashboardName };
|
|
282
|
-
}));
|
|
283
|
-
return filterArray;
|
|
203
|
+
return {
|
|
204
|
+
...resp,
|
|
205
|
+
createdAt: resp.createdAt && new Date(resp.createdAt),
|
|
206
|
+
};
|
|
284
207
|
}
|
|
@@ -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,4 +1,6 @@
|
|
|
1
|
+
import { useContext } from 'react';
|
|
1
2
|
import { QUILL_SERVER } from './constants';
|
|
3
|
+
import { TenantContext } from '../Context';
|
|
2
4
|
function fetchQuillData(responseData) {
|
|
3
5
|
if (!responseData) {
|
|
4
6
|
return null;
|
|
@@ -61,6 +63,7 @@ async function testSqlViewState(hostedRequestBody, client, referencedTables) {
|
|
|
61
63
|
}
|
|
62
64
|
// this function gets the data either from the self hosted endpoint or
|
|
63
65
|
// our cloud server
|
|
66
|
+
// Tenants and Flags must be passed in as part of the body explicity
|
|
64
67
|
export async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cloudRequestBody, method = 'POST', queryParam, abortSignal) {
|
|
65
68
|
if (!client) {
|
|
66
69
|
return null;
|
|
@@ -171,7 +174,33 @@ export async function getData(client, cloudQueryEndpoint, noCred, hostedRequestB
|
|
|
171
174
|
}
|
|
172
175
|
else {
|
|
173
176
|
// cloud
|
|
174
|
-
|
|
177
|
+
try {
|
|
178
|
+
const url = `${QUILL_SERVER}/${cloudQueryEndpoint}`;
|
|
179
|
+
const resp = await fetch(url, {
|
|
180
|
+
method,
|
|
181
|
+
headers: {
|
|
182
|
+
Authorization: 'Bearer ',
|
|
183
|
+
'Content-Type': 'application/json',
|
|
184
|
+
},
|
|
185
|
+
body: method === 'POST'
|
|
186
|
+
? JSON.stringify({
|
|
187
|
+
...cloudRequestBody,
|
|
188
|
+
...{
|
|
189
|
+
publicKey: client?.publicKey,
|
|
190
|
+
},
|
|
191
|
+
})
|
|
192
|
+
: null,
|
|
193
|
+
signal: abortSignal,
|
|
194
|
+
});
|
|
195
|
+
return await resp.json();
|
|
196
|
+
}
|
|
197
|
+
catch (e) {
|
|
198
|
+
if (e instanceof Error && e.name === 'AbortError') {
|
|
199
|
+
throw e;
|
|
200
|
+
}
|
|
201
|
+
console.error('Failed to parse JSON:', e);
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
175
204
|
}
|
|
176
205
|
}
|
|
177
206
|
catch (e) {
|
|
@@ -182,35 +211,42 @@ export async function getData(client, cloudQueryEndpoint, noCred, hostedRequestB
|
|
|
182
211
|
return null;
|
|
183
212
|
}
|
|
184
213
|
}
|
|
185
|
-
export
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
throw e;
|
|
214
|
+
export function useQuillCloud() {
|
|
215
|
+
const { tenants, flags } = useContext(TenantContext);
|
|
216
|
+
const getDataFromCloud = async (client, cloudQueryEndpoint, cloudRequestBody, method = 'POST', abortSignal) => {
|
|
217
|
+
try {
|
|
218
|
+
const url = `${QUILL_SERVER}/${cloudQueryEndpoint}`;
|
|
219
|
+
const resp = await fetch(url, {
|
|
220
|
+
method,
|
|
221
|
+
headers: {
|
|
222
|
+
Authorization: 'Bearer ',
|
|
223
|
+
'Content-Type': 'application/json',
|
|
224
|
+
},
|
|
225
|
+
body: method === 'POST'
|
|
226
|
+
? JSON.stringify({
|
|
227
|
+
...cloudRequestBody,
|
|
228
|
+
...{
|
|
229
|
+
publicKey: client?.publicKey,
|
|
230
|
+
tenants: tenants,
|
|
231
|
+
flags: flags,
|
|
232
|
+
},
|
|
233
|
+
})
|
|
234
|
+
: null,
|
|
235
|
+
signal: abortSignal,
|
|
236
|
+
});
|
|
237
|
+
return await resp.json();
|
|
210
238
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
239
|
+
catch (e) {
|
|
240
|
+
if (e instanceof Error && e.name === 'AbortError') {
|
|
241
|
+
throw e;
|
|
242
|
+
}
|
|
243
|
+
console.error('Failed to parse JSON:', e);
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
return {
|
|
248
|
+
getDataFromCloud,
|
|
249
|
+
};
|
|
214
250
|
}
|
|
215
251
|
export async function fetchSqlQuery(ast, client, formData) {
|
|
216
252
|
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,CA4B/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"}
|
|
@@ -192,6 +192,8 @@ export const getType = (t) => {
|
|
|
192
192
|
case 'bool':
|
|
193
193
|
case 'boolean':
|
|
194
194
|
return FieldType.Boolean;
|
|
195
|
+
case 'anyarray':
|
|
196
|
+
return FieldType.Null;
|
|
195
197
|
default:
|
|
196
198
|
return FieldType.String;
|
|
197
199
|
}
|
|
@@ -322,6 +324,7 @@ export async function buildQueryFromFilters(baseAst, filters, endpoint, client)
|
|
|
322
324
|
publicKey: client.publicKey,
|
|
323
325
|
useNewNodeSql: true,
|
|
324
326
|
}),
|
|
327
|
+
credentials: client.withCredentials ? 'include' : 'omit',
|
|
325
328
|
});
|
|
326
329
|
const data = await response.json();
|
|
327
330
|
const query = data.query;
|
|
@@ -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"}
|