@quillsql/react 2.13.48 → 2.13.50
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 -2
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +31 -43
- package/dist/cjs/ChartBuilder.d.ts +2 -2
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +172 -147
- package/dist/cjs/ChartEditor.d.ts +2 -2
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +3 -1
- package/dist/cjs/Context.d.ts +10 -3
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +328 -250
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +12 -25
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +32 -14
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +24 -10
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +472 -96
- package/dist/cjs/QuillProvider.d.ts +7 -1
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +6 -5
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +23 -11
- package/dist/cjs/SQLEditor.d.ts +1 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +52 -18
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +20 -7
- package/dist/cjs/assets/ExclamationFilledIcon.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +4 -2
- package/dist/cjs/components/Chart/BarList.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarList.js +2 -1
- package/dist/cjs/components/Chart/CustomReferenceLine.d.ts +1 -1
- package/dist/cjs/components/Chart/CustomReferenceLine.d.ts.map +1 -1
- package/dist/cjs/components/Chart/CustomReferenceLine.js +7 -6
- package/dist/cjs/components/Chart/GaugeChart.d.ts +1 -1
- package/dist/cjs/components/Chart/GaugeChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/GaugeChart.js +62 -35
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/InternalChart.js +32 -34
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +5 -2
- package/dist/cjs/components/Chart/MapChart.d.ts +3 -3
- package/dist/cjs/components/Chart/MapChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/MapChart.js +62 -34
- package/dist/cjs/components/Chart/PieChart.d.ts +3 -1
- package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/PieChart.js +82 -40
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +4 -20
- package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardTemplate.js +2 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +4 -4
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +31 -14
- package/dist/cjs/components/Dashboard/MetricComponent.js +4 -3
- package/dist/cjs/components/Dashboard/util.d.ts +1 -1
- package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/util.js +7 -6
- package/dist/cjs/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelect.js +15 -9
- package/dist/cjs/components/QuillMultiSelectSectionList.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectSectionList.js +52 -34
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +204 -171
- package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelect.js +93 -82
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +101 -99
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +1 -0
- 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 +3 -4
- package/dist/cjs/components/ReportBuilder/ui.d.ts +2 -2
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +5 -7
- package/dist/cjs/components/UiComponents.d.ts +7 -0
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +92 -5
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +5 -1
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +96 -58
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +23 -13
- package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +8 -10
- package/dist/cjs/hooks/useReport.d.ts.map +1 -1
- package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/cjs/hooks/useVirtualTables.js +16 -22
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +2 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +19 -7
- package/dist/cjs/models/Client.d.ts +0 -1
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Data.d.ts +20 -0
- package/dist/cjs/models/Data.d.ts.map +1 -0
- package/dist/cjs/models/Data.js +2 -0
- package/dist/cjs/models/Filter.d.ts +42 -4
- package/dist/cjs/models/Filter.d.ts.map +1 -1
- package/dist/cjs/models/Pivot.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.d.ts +3 -2
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +28 -37
- package/dist/cjs/utils/client.d.ts +3 -2
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +38 -39
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +14 -3
- package/dist/cjs/utils/constants.d.ts +1 -0
- package/dist/cjs/utils/constants.d.ts.map +1 -1
- package/dist/cjs/utils/constants.js +2 -1
- package/dist/cjs/utils/dashboard.d.ts +3 -2
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +30 -12
- package/dist/cjs/utils/dataFetcher.d.ts +8 -5
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +188 -65
- package/dist/cjs/utils/filterProcessing.d.ts +2 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +24 -38
- package/dist/cjs/utils/getDomain.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.d.ts +2 -1
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +15 -11
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +3 -5
- package/dist/cjs/utils/queryConstructor.js +1 -1
- package/dist/cjs/utils/report.d.ts +10 -7
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +52 -60
- package/dist/cjs/utils/schema.d.ts +4 -3
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +30 -44
- package/dist/cjs/utils/tableProcessing.d.ts +16 -10
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +91 -90
- package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/textProcessing.js +2 -1
- package/dist/cjs/utils/ui.d.ts.map +1 -1
- package/dist/esm/Chart.d.ts +2 -2
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +33 -45
- package/dist/esm/ChartBuilder.d.ts +2 -2
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +173 -148
- package/dist/esm/ChartEditor.d.ts +2 -2
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +4 -2
- package/dist/esm/Context.d.ts +10 -3
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +330 -252
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +14 -27
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.js +32 -14
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +24 -10
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/dateRangePickerUtils.js +471 -95
- package/dist/esm/QuillProvider.d.ts +7 -1
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +6 -5
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +25 -13
- package/dist/esm/SQLEditor.d.ts +1 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +55 -21
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +21 -8
- package/dist/esm/assets/ExclamationFilledIcon.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +4 -2
- package/dist/esm/components/Chart/BarList.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarList.js +2 -1
- package/dist/esm/components/Chart/CustomReferenceLine.d.ts +1 -1
- package/dist/esm/components/Chart/CustomReferenceLine.d.ts.map +1 -1
- package/dist/esm/components/Chart/CustomReferenceLine.js +8 -7
- package/dist/esm/components/Chart/GaugeChart.d.ts +1 -1
- package/dist/esm/components/Chart/GaugeChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/GaugeChart.js +64 -37
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/InternalChart.js +34 -36
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +5 -2
- package/dist/esm/components/Chart/MapChart.d.ts +3 -3
- package/dist/esm/components/Chart/MapChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/MapChart.js +67 -39
- package/dist/esm/components/Chart/PieChart.d.ts +3 -1
- package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/PieChart.js +82 -40
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +5 -21
- package/dist/esm/components/Dashboard/DashboardSection.js +2 -2
- package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardTemplate.js +3 -2
- package/dist/esm/components/Dashboard/DataLoader.d.ts +4 -4
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +32 -15
- package/dist/esm/components/Dashboard/MetricComponent.js +4 -3
- package/dist/esm/components/Dashboard/util.d.ts +1 -1
- package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/util.js +8 -7
- package/dist/esm/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelect.js +15 -9
- package/dist/esm/components/QuillMultiSelectSectionList.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectSectionList.js +52 -34
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +205 -172
- package/dist/esm/components/QuillSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillSelect.js +95 -84
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +102 -100
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +1 -0
- 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 +3 -4
- package/dist/esm/components/ReportBuilder/ui.d.ts +2 -2
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +5 -7
- package/dist/esm/components/UiComponents.d.ts +7 -0
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +90 -4
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +6 -2
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +98 -60
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +25 -15
- package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +9 -11
- package/dist/esm/hooks/useReport.d.ts.map +1 -1
- package/dist/esm/hooks/useReport.js +1 -1
- package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/esm/hooks/useVirtualTables.js +17 -23
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +2 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +20 -8
- package/dist/esm/models/Client.d.ts +0 -1
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Data.d.ts +20 -0
- package/dist/esm/models/Data.d.ts.map +1 -0
- package/dist/esm/models/Data.js +1 -0
- package/dist/esm/models/Filter.d.ts +42 -4
- package/dist/esm/models/Filter.d.ts.map +1 -1
- package/dist/esm/models/Pivot.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.d.ts +3 -2
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +28 -37
- package/dist/esm/utils/client.d.ts +3 -2
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +38 -39
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +14 -3
- package/dist/esm/utils/constants.d.ts +1 -0
- package/dist/esm/utils/constants.d.ts.map +1 -1
- package/dist/esm/utils/constants.js +1 -0
- package/dist/esm/utils/dashboard.d.ts +3 -2
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +31 -13
- package/dist/esm/utils/dataFetcher.d.ts +8 -5
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +186 -65
- package/dist/esm/utils/filterProcessing.d.ts +2 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +25 -39
- package/dist/esm/utils/getDomain.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.d.ts +2 -1
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +16 -12
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +5 -7
- package/dist/esm/utils/queryConstructor.js +1 -1
- package/dist/esm/utils/report.d.ts +10 -7
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +53 -61
- package/dist/esm/utils/schema.d.ts +4 -3
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +30 -44
- package/dist/esm/utils/tableProcessing.d.ts +16 -10
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +93 -92
- package/dist/esm/utils/textProcessing.d.ts.map +1 -1
- package/dist/esm/utils/textProcessing.js +2 -1
- package/dist/esm/utils/ui.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseFetchResponse = exports.quillFetch = void 0;
|
|
3
4
|
exports.getData = getData;
|
|
4
|
-
exports.useQuillCloud = useQuillCloud;
|
|
5
5
|
exports.fetchSqlQuery = fetchSqlQuery;
|
|
6
|
-
const react_1 = require("react");
|
|
7
6
|
const constants_1 = require("./constants");
|
|
8
|
-
const Context_1 = require("../Context");
|
|
9
7
|
function fetchQuillData(responseData) {
|
|
10
8
|
if (!responseData) {
|
|
11
9
|
return null;
|
|
@@ -37,39 +35,160 @@ function parseData(rows, queryType) {
|
|
|
37
35
|
return rows;
|
|
38
36
|
}
|
|
39
37
|
}
|
|
40
|
-
async function testSqlViewState(
|
|
38
|
+
async function testSqlViewState(client, referencedTables, getToken) {
|
|
41
39
|
let errorMessage = null;
|
|
42
40
|
await Promise.all(referencedTables.map(async (table) => {
|
|
43
41
|
if (!table) {
|
|
44
42
|
return;
|
|
45
43
|
}
|
|
46
|
-
const
|
|
44
|
+
const { data: resp } = await (0, exports.quillFetch)({
|
|
45
|
+
client,
|
|
46
|
+
task: 'test-view',
|
|
47
47
|
metadata: {
|
|
48
48
|
tables: [table],
|
|
49
|
-
|
|
50
|
-
clientId: hostedRequestBody.metadata.clientId,
|
|
49
|
+
clientId: client.clientId,
|
|
51
50
|
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const resp = await getData(client, 'test-view', 'same-origin', hostedBody, cloudBody);
|
|
51
|
+
getToken,
|
|
52
|
+
});
|
|
55
53
|
if (resp.success === false) {
|
|
56
54
|
const brokenBody = {
|
|
57
55
|
metadata: {
|
|
58
56
|
table: table,
|
|
59
57
|
task: 'set-broken-view',
|
|
60
|
-
clientId:
|
|
58
|
+
clientId: client.clientId,
|
|
61
59
|
},
|
|
62
60
|
};
|
|
63
|
-
|
|
61
|
+
(0, exports.quillFetch)({
|
|
62
|
+
client,
|
|
63
|
+
task: 'set-broken-view',
|
|
64
|
+
metadata: brokenBody,
|
|
65
|
+
credentials: 'same-origin',
|
|
66
|
+
getToken,
|
|
67
|
+
});
|
|
64
68
|
errorMessage = `Virtual Table Error: '${table}' is out of sync with datasource.`;
|
|
65
69
|
}
|
|
66
70
|
}));
|
|
67
71
|
return errorMessage;
|
|
68
72
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
const quillFetch = async ({ client, task, method = 'POST', metadata, abortSignal, credentials = 'omit', urlParameters, getToken, }) => {
|
|
74
|
+
const token = await getToken();
|
|
75
|
+
const queryString = urlParameters ?? `task=${task}`;
|
|
76
|
+
const endpoint = client.queryEndpoint
|
|
77
|
+
? `${client.queryEndpoint}?${queryString}`
|
|
78
|
+
: `${constants_1.QUILL_SERVER}${constants_1.QUILL_QUERY_ENDPOINT}?${queryString}`;
|
|
79
|
+
try {
|
|
80
|
+
const response = await fetch(endpoint, {
|
|
81
|
+
method,
|
|
82
|
+
headers: {
|
|
83
|
+
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
|
84
|
+
...client.queryHeaders,
|
|
85
|
+
'Content-Type': 'application/json',
|
|
86
|
+
},
|
|
87
|
+
body: JSON.stringify({
|
|
88
|
+
metadata: {
|
|
89
|
+
task,
|
|
90
|
+
clientId: client.clientId,
|
|
91
|
+
...metadata,
|
|
92
|
+
},
|
|
93
|
+
}),
|
|
94
|
+
credentials: client.withCredentials ? 'include' : credentials,
|
|
95
|
+
signal: abortSignal,
|
|
96
|
+
});
|
|
97
|
+
if (!response.ok) {
|
|
98
|
+
throw new Error('API request failed');
|
|
99
|
+
}
|
|
100
|
+
let result = await response.json();
|
|
101
|
+
// Not sure if this is required, but putting it here just in case
|
|
102
|
+
// based on other lines of code I've seen
|
|
103
|
+
// Probably happens if self-hosted endpoint was not set up correctly and
|
|
104
|
+
// the response was wrapped in an additional data object
|
|
105
|
+
if (result.data?.data &&
|
|
106
|
+
(result.data.queries || result.data.status || result.data.error)) {
|
|
107
|
+
result = result.data;
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
data: result.data,
|
|
111
|
+
queries: result.queries,
|
|
112
|
+
status: result.status,
|
|
113
|
+
error: result.error,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
if (e instanceof Error && e.name === 'AbortError') {
|
|
118
|
+
throw e;
|
|
119
|
+
}
|
|
120
|
+
console.error('Failed to fetch:', e);
|
|
121
|
+
return { error: 'Failed to fetch data' };
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
exports.quillFetch = quillFetch;
|
|
125
|
+
// This function parses the response from the fetch call,
|
|
126
|
+
// which is what getData used to do after fetching data
|
|
127
|
+
const parseFetchResponse = async (client, task, response, getToken) => {
|
|
128
|
+
try {
|
|
129
|
+
if (response.status === 'error' || response.data?.error) {
|
|
130
|
+
let errorPrefix = 'Error: ';
|
|
131
|
+
let errorMessage = 'Failed to fetch report: ' + (response.error || response.data?.error);
|
|
132
|
+
if (task === 'query' || task === 'patterns') {
|
|
133
|
+
errorPrefix = response.error?.includes('Query Parsing Error')
|
|
134
|
+
? ''
|
|
135
|
+
: 'SQL Error: ';
|
|
136
|
+
errorMessage = errorPrefix + response.error;
|
|
137
|
+
}
|
|
138
|
+
else if (response.error?.includes('Virtual Table Error')) {
|
|
139
|
+
errorMessage = response.error;
|
|
140
|
+
}
|
|
141
|
+
let adminErrorMessage = undefined;
|
|
142
|
+
if (response?.data?.referencedTables) {
|
|
143
|
+
adminErrorMessage =
|
|
144
|
+
(await testSqlViewState(client, response.data.referencedTables, getToken)) ?? undefined;
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
success: false,
|
|
148
|
+
errorMessage,
|
|
149
|
+
adminErrorMessage,
|
|
150
|
+
data: response,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
if (response.error) {
|
|
154
|
+
return {
|
|
155
|
+
success: false,
|
|
156
|
+
errorMessage: response.error,
|
|
157
|
+
...response,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
const result = {
|
|
161
|
+
...response.data,
|
|
162
|
+
};
|
|
163
|
+
const fields = response.queries?.queryResults[0]?.fields;
|
|
164
|
+
const rows = response.queries?.queryResults[0]?.rows;
|
|
165
|
+
const compareRows = response.queries?.queryResults[1]?.rows;
|
|
166
|
+
if (fields) {
|
|
167
|
+
result.fields = fields;
|
|
168
|
+
}
|
|
169
|
+
if (rows) {
|
|
170
|
+
result.rows = rows;
|
|
171
|
+
}
|
|
172
|
+
if (compareRows && task !== 'report') {
|
|
173
|
+
result.compareRows = compareRows;
|
|
174
|
+
}
|
|
175
|
+
if (response.data?.queryOrder) {
|
|
176
|
+
response.data.queryOrder.forEach((queryKey, index) => {
|
|
177
|
+
result[queryKey] = parseData(response.queries?.queryResults?.[index]?.rows, queryKey);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
return result;
|
|
181
|
+
}
|
|
182
|
+
catch (e) {
|
|
183
|
+
console.error('Failed to parse response:', e);
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
exports.parseFetchResponse = parseFetchResponse;
|
|
188
|
+
/**
|
|
189
|
+
* @deprecated Use quillFetch instead. If post fetch parsing is required, use parseFetchResponse.
|
|
190
|
+
*/
|
|
191
|
+
async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cloudRequestBody, method = 'POST', getToken, queryParam, abortSignal) {
|
|
73
192
|
if (!client) {
|
|
74
193
|
return null;
|
|
75
194
|
}
|
|
@@ -110,7 +229,7 @@ async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cl
|
|
|
110
229
|
processedData.data &&
|
|
111
230
|
processedData.data.referencedTables) {
|
|
112
231
|
adminErrorMessage =
|
|
113
|
-
(await testSqlViewState(
|
|
232
|
+
(await testSqlViewState(client, processedData.data.referencedTables, getToken)) ?? undefined;
|
|
114
233
|
}
|
|
115
234
|
return {
|
|
116
235
|
success: false,
|
|
@@ -219,58 +338,62 @@ async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cl
|
|
|
219
338
|
return null;
|
|
220
339
|
}
|
|
221
340
|
}
|
|
222
|
-
function useQuillCloud() {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
341
|
+
// export function useQuillCloud() {
|
|
342
|
+
// const { tenants, flags } = useContext(TenantContext);
|
|
343
|
+
// const getDataFromCloud = async (
|
|
344
|
+
// client: QuillProviderClient,
|
|
345
|
+
// cloudQueryEndpoint: string,
|
|
346
|
+
// cloudRequestBody: any,
|
|
347
|
+
// method = 'POST',
|
|
348
|
+
// abortSignal?: AbortSignal,
|
|
349
|
+
// ) => {
|
|
350
|
+
// try {
|
|
351
|
+
// const url = `${QUILL_SERVER}/${cloudQueryEndpoint}`;
|
|
352
|
+
// const resp = await fetch(url, {
|
|
353
|
+
// method,
|
|
354
|
+
// headers: {
|
|
355
|
+
// Authorization: 'Bearer ',
|
|
356
|
+
// 'Content-Type': 'application/json',
|
|
357
|
+
// },
|
|
358
|
+
// body:
|
|
359
|
+
// method === 'POST'
|
|
360
|
+
// ? JSON.stringify({
|
|
361
|
+
// ...cloudRequestBody,
|
|
362
|
+
// ...{
|
|
363
|
+
// publicKey: client?.publicKey,
|
|
364
|
+
// tenants: tenants,
|
|
365
|
+
// flags: flags,
|
|
366
|
+
// },
|
|
367
|
+
// })
|
|
368
|
+
// : null,
|
|
369
|
+
// signal: abortSignal,
|
|
370
|
+
// });
|
|
371
|
+
// return await resp.json();
|
|
372
|
+
// } catch (e) {
|
|
373
|
+
// if (e instanceof Error && e.name === 'AbortError') {
|
|
374
|
+
// throw e;
|
|
375
|
+
// }
|
|
376
|
+
// console.error('Failed to parse JSON:', e);
|
|
377
|
+
// return null;
|
|
378
|
+
// }
|
|
379
|
+
// };
|
|
380
|
+
// return {
|
|
381
|
+
// getDataFromCloud,
|
|
382
|
+
// };
|
|
383
|
+
// }
|
|
384
|
+
async function fetchSqlQuery(ast, client, getToken, formData) {
|
|
260
385
|
try {
|
|
261
386
|
const where = formData ? formData : ast?.where || null;
|
|
262
|
-
const
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
387
|
+
const { data } = await (0, exports.quillFetch)({
|
|
388
|
+
client,
|
|
389
|
+
task: 'sqlify',
|
|
390
|
+
metadata: {
|
|
391
|
+
clientId: client.clientId,
|
|
392
|
+
useNewNodeSql: true,
|
|
268
393
|
ast: { ...ast, where },
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}),
|
|
394
|
+
},
|
|
395
|
+
getToken,
|
|
272
396
|
});
|
|
273
|
-
const data = await response.json();
|
|
274
397
|
return { query: data.query };
|
|
275
398
|
}
|
|
276
399
|
catch (error) {
|
|
@@ -2,6 +2,7 @@ import { FieldType, InternalFilter, DashboardDateFilter, Filter, DashboardFilter
|
|
|
2
2
|
import { QuillReport } from '../models/Report';
|
|
3
3
|
import { FilterTreeNode } from './astFilterProcessing';
|
|
4
4
|
import { ReportBuilderState } from '../models/ReportBuilder';
|
|
5
|
+
import { QuillProviderClient } from '../models/Client';
|
|
5
6
|
export declare function findAndProcessDateFilter(filters: any[]): any;
|
|
6
7
|
export declare function processFilterFromBackend(filter: any): any;
|
|
7
8
|
export declare function updateFilter(filter: any, value: any | undefined, comparison: any | undefined, dashboardName: string): any;
|
|
@@ -22,7 +23,7 @@ export declare function filterStackToFilterTree(stack: any[]): FilterTreeNode |
|
|
|
22
23
|
/**
|
|
23
24
|
* This function uses the baseAst and forms a SQL query using the a filters array
|
|
24
25
|
*/
|
|
25
|
-
export declare function buildQueryFromFilters(reportBuilderState: ReportBuilderState, filters: FilterTreeNode[],
|
|
26
|
+
export declare function buildQueryFromFilters(reportBuilderState: ReportBuilderState, filters: FilterTreeNode[], client: QuillProviderClient, getToken: () => Promise<string>): Promise<{
|
|
26
27
|
success: boolean;
|
|
27
28
|
query?: string;
|
|
28
29
|
error?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,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,GAAG,YAAO,EACjB,UAAU,EAAE,GAAG,YAAO,EACtB,aAAa,EAAE,MAAM,OAqFtB;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,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,EAAE,cAAc,EAAE,EACzB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiC/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,CAgDP;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,cAAc,EAAE,EAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,GAC1B,OAAO,CA+BT;AAED,eAAO,MAAM,uBAAuB,WAC1B,mBAAmB,WAClB,WAAW,EAAE,iBACP,MAAM,KACpB,CAAC,mBAAmB,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,SAkDpD,CAAC"}
|
|
@@ -17,6 +17,7 @@ const Filter_1 = require("../models/Filter");
|
|
|
17
17
|
const astFilterProcessing_1 = require("./astFilterProcessing");
|
|
18
18
|
const textProcessing_1 = require("./textProcessing");
|
|
19
19
|
const reportBuilder_1 = require("./reportBuilder");
|
|
20
|
+
const dataFetcher_1 = require("./dataFetcher");
|
|
20
21
|
function findAndProcessDateFilter(filters) {
|
|
21
22
|
let dateFilter = filters.find((filter) => filter.filterType === 'date_range');
|
|
22
23
|
if (dateFilter) {
|
|
@@ -83,25 +84,8 @@ function updateFilter(filter, value = null, comparison = null, dashboardName) {
|
|
|
83
84
|
}
|
|
84
85
|
if (filter.filterType === 'date' || filter.filterType === 'date_range') {
|
|
85
86
|
let presetsOptions = dateRangePickerUtils_1.defaultOptionsV2;
|
|
86
|
-
if (filter.
|
|
87
|
-
presetsOptions = filter.
|
|
88
|
-
if (!elem.isStatic) {
|
|
89
|
-
return {
|
|
90
|
-
label: elem.label,
|
|
91
|
-
value: elem.value,
|
|
92
|
-
startDate: (dateRangePickerUtils_1.PRIMARY_RANGE[elem.value] ??
|
|
93
|
-
dateRangePickerUtils_1.PRIMARY_RANGE['LAST_30_DAYS']).startDate,
|
|
94
|
-
endDate: (dateRangePickerUtils_1.PRIMARY_RANGE[elem.value] ??
|
|
95
|
-
dateRangePickerUtils_1.PRIMARY_RANGE['LAST_30_DAYS']).endDate,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
return {
|
|
99
|
-
label: elem.label,
|
|
100
|
-
value: elem.value,
|
|
101
|
-
startDate: new Date(elem.startDate),
|
|
102
|
-
endDate: new Date(elem.endDate),
|
|
103
|
-
};
|
|
104
|
-
});
|
|
87
|
+
if (filter.presetOptions || filter.defaultPresetRanges) {
|
|
88
|
+
presetsOptions = (0, dateRangePickerUtils_1.convertPresetOptionsToSelectableList)(filter.presetOptions ?? [], filter.defaultPresetRanges ?? []);
|
|
105
89
|
}
|
|
106
90
|
if (comparison ||
|
|
107
91
|
(filter.comparison && filter.comparisonRange.value !== 'NO_COMPARISON')) {
|
|
@@ -321,29 +305,26 @@ function filterStackToFilterTree(stack) {
|
|
|
321
305
|
/**
|
|
322
306
|
* This function uses the baseAst and forms a SQL query using the a filters array
|
|
323
307
|
*/
|
|
324
|
-
async function buildQueryFromFilters(reportBuilderState, filters,
|
|
308
|
+
async function buildQueryFromFilters(reportBuilderState, filters, client, getToken) {
|
|
325
309
|
const subTree = filterStackToFilterTree(filters);
|
|
326
310
|
let whereNode = null;
|
|
327
311
|
if (subTree) {
|
|
328
|
-
whereNode = (0, astFilterProcessing_1.filterTreeToAst)(subTree, client.databaseType
|
|
312
|
+
whereNode = (0, astFilterProcessing_1.filterTreeToAst)(subTree, client.databaseType?.toLowerCase() || 'postgresql');
|
|
329
313
|
}
|
|
330
|
-
const ast = (0, reportBuilder_1.reportBuilderStateToAst)({ ...reportBuilderState, filterStack: filters }, client.databaseType
|
|
314
|
+
const ast = (0, reportBuilder_1.reportBuilderStateToAst)({ ...reportBuilderState, filterStack: filters }, client.databaseType?.toLowerCase() || 'postgresql');
|
|
331
315
|
const queryAst = { ...ast, where: whereNode };
|
|
332
316
|
try {
|
|
333
|
-
const
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
body: JSON.stringify({
|
|
339
|
-
ast: queryAst,
|
|
340
|
-
publicKey: client.publicKey,
|
|
317
|
+
const { data } = await (0, dataFetcher_1.quillFetch)({
|
|
318
|
+
client,
|
|
319
|
+
task: 'sqlify',
|
|
320
|
+
metadata: {
|
|
321
|
+
clientId: client.clientId,
|
|
341
322
|
useNewNodeSql: true,
|
|
342
|
-
|
|
343
|
-
|
|
323
|
+
ast: queryAst,
|
|
324
|
+
},
|
|
325
|
+
getToken,
|
|
344
326
|
});
|
|
345
|
-
const
|
|
346
|
-
const query = data.query;
|
|
327
|
+
const query = data?.query;
|
|
347
328
|
return { success: true, query };
|
|
348
329
|
}
|
|
349
330
|
catch (error) {
|
|
@@ -520,7 +501,8 @@ function mergeCustomFilters(filters, customFilters) {
|
|
|
520
501
|
value: 'LAST_30_DAYS',
|
|
521
502
|
},
|
|
522
503
|
dashboardName: 'none',
|
|
523
|
-
|
|
504
|
+
presetOptions: [],
|
|
505
|
+
defaultPresetRanges: [],
|
|
524
506
|
preset: {
|
|
525
507
|
label: 'Last 30 Days',
|
|
526
508
|
value: 'LAST_30_DAYS',
|
|
@@ -558,8 +540,7 @@ function filtersAreEquivalent(filters1, filters2) {
|
|
|
558
540
|
const createDefaultDateFilter = (filter, reports, dashboardName) => {
|
|
559
541
|
const comparisonRangeStart = getComparisonRange(filter, 'startDate');
|
|
560
542
|
const comparisonRangeEnd = getComparisonRange(filter, 'endDate');
|
|
561
|
-
const range =
|
|
562
|
-
dateRangePickerUtils_1.PRIMARY_RANGE[filter.primaryRange?.value ?? 'LAST_30_DAYS'] ??
|
|
543
|
+
const range = dateRangePickerUtils_1.PRIMARY_RANGE[filter.primaryRange?.value ?? 'LAST_30_DAYS'] ??
|
|
563
544
|
dateRangePickerUtils_1.PRIMARY_RANGE['LAST_30_DAYS'];
|
|
564
545
|
return filter
|
|
565
546
|
? {
|
|
@@ -594,7 +575,12 @@ const createDefaultDateFilter = (filter, reports, dashboardName) => {
|
|
|
594
575
|
};
|
|
595
576
|
exports.createDefaultDateFilter = createDefaultDateFilter;
|
|
596
577
|
const getComparisonRange = (dateFilter, rangeType) => {
|
|
597
|
-
const range = dateFilter?.
|
|
578
|
+
const range = (0, dateRangePickerUtils_1.convertPresetOptionsToSelectableList)(dateFilter?.presetOptions ?? [], dateFilter?.defaultPresetRanges ?? []).find((option) => option.value === dateFilter?.primaryRange?.value) ??
|
|
579
|
+
dateRangePickerUtils_1.PRIMARY_RANGE[dateFilter?.primaryRange?.value ?? 'LAST_30_DAYS'] ??
|
|
580
|
+
dateRangePickerUtils_1.PRIMARY_RANGE['LAST_30_DAYS'];
|
|
581
|
+
if (!range.startDate || !range.endDate) {
|
|
582
|
+
return undefined;
|
|
583
|
+
}
|
|
598
584
|
return (dateFilter?.comparisonRange?.[rangeType] ??
|
|
599
585
|
dateRangePickerUtils_1.COMPARISON_RANGE[dateFilter?.defaultComparisonRange ??
|
|
600
586
|
'NO_COMPARISON']({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDomain.d.ts","sourceRoot":"","sources":["../../../src/utils/getDomain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,
|
|
1
|
+
{"version":3,"file":"getDomain.d.ts","sourceRoot":"","sources":["../../../src/utils/getDomain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,IAAI,EAAE,GAAG,EAAE,EACX,MAAM,EAAE,GAAG,EAAE,EACb,cAAc,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,GAAG,SAAS,GAC/D,MAAM,EAAE,CA6CV"}
|
|
@@ -2,7 +2,7 @@ import { QuillProviderClient } from '../models/Client';
|
|
|
2
2
|
import { Pivot, PivotData } from '../models/Pivot';
|
|
3
3
|
import { QuillReportInternal } from '../models/Report';
|
|
4
4
|
import { AdditionalProcessing } from './tableProcessing';
|
|
5
|
-
export declare function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount, caller, }: {
|
|
5
|
+
export declare function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount, caller, getToken, }: {
|
|
6
6
|
pivot: Pivot;
|
|
7
7
|
report?: QuillReportInternal;
|
|
8
8
|
client: QuillProviderClient;
|
|
@@ -19,6 +19,7 @@ export declare function generatePivotWithSQL({ pivot, report, client, dateBucket
|
|
|
19
19
|
comparisonPivotQuery?: string;
|
|
20
20
|
getPivotRowCount?: boolean;
|
|
21
21
|
caller?: string;
|
|
22
|
+
getToken: () => Promise<string>;
|
|
22
23
|
}): Promise<PivotData>;
|
|
23
24
|
export declare function disambiguatedValueField(pivot: Pivot): string | undefined;
|
|
24
25
|
//# sourceMappingURL=pivotConstructor.d.ts.map
|
|
@@ -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,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAYvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,gBAAuB,EACvB,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,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAYvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,gBAAuB,EACvB,MAAM,EACN,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EACJ;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC,GAAG,OAAO,CAAC,SAAS,CAAC,CA6WrB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,sBAYnD"}
|
|
@@ -11,7 +11,7 @@ const dates_1 = require("./dates");
|
|
|
11
11
|
const merge_1 = require("./merge");
|
|
12
12
|
const queryConstructor_1 = require("./queryConstructor");
|
|
13
13
|
const textProcessing_1 = require("./textProcessing");
|
|
14
|
-
async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount = true, caller, }) {
|
|
14
|
+
async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount = true, caller, getToken, }) {
|
|
15
15
|
let sqlQuery = pivotQuery;
|
|
16
16
|
let comparisonPivotSql = comparisonPivotQuery;
|
|
17
17
|
const databaseType = client.databaseType || 'postgresql';
|
|
@@ -86,10 +86,11 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
86
86
|
if (paginatedComparisonQuery) {
|
|
87
87
|
preQueries.push(paginatedComparisonQuery);
|
|
88
88
|
}
|
|
89
|
-
const
|
|
89
|
+
const { data: resp } = await (0, dataFetcher_1.quillFetch)({
|
|
90
|
+
client,
|
|
91
|
+
task: 'query',
|
|
90
92
|
metadata: {
|
|
91
93
|
preQueries,
|
|
92
|
-
task: 'query',
|
|
93
94
|
clientId: client.publicKey,
|
|
94
95
|
databaseType: databaseType,
|
|
95
96
|
runQueryConfig: {
|
|
@@ -100,9 +101,10 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
100
101
|
dashboardName: dashboardName && tenants ? dashboardName : undefined,
|
|
101
102
|
tenants: dashboardName && tenants ? tenants : undefined,
|
|
102
103
|
},
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
urlParameters: `caller=generatePivot&task=query`,
|
|
105
|
+
credentials: 'same-origin',
|
|
106
|
+
getToken,
|
|
107
|
+
});
|
|
106
108
|
if (resp.success === false) {
|
|
107
109
|
throw resp.errorMessage;
|
|
108
110
|
}
|
|
@@ -150,11 +152,13 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
150
152
|
label: (0, textProcessing_1.snakeCaseToTitleCase)((0, columnProcessing_1.processColumnName)(field.name.replace('comparison_', 'comparison '))),
|
|
151
153
|
format: field.name === pivot.rowField
|
|
152
154
|
? 'string'
|
|
153
|
-
// This scary equation is calculating which aggregation a column is associated with.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
155
|
+
: // This scary equation is calculating which aggregation a column is associated with.
|
|
156
|
+
// Eg you have 7 columns and 2 aggregations, you can assume column 0 is the row field, 1-3 is aggregation 0, and 4-6 is aggregation 1.
|
|
157
|
+
pivot.aggregations?.[Math.floor((index - 1) /
|
|
158
|
+
Math.floor((responseFields.length - 1) /
|
|
159
|
+
(pivot.aggregations?.length ?? 1)))]?.aggregationType === 'percentage'
|
|
160
|
+
? 'percent'
|
|
161
|
+
: 'whole_number',
|
|
158
162
|
fieldType: field.fieldType,
|
|
159
163
|
jsType: field.jsType,
|
|
160
164
|
dataTypeID: field.dataTypeID,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAWxD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAuB7E;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,EAAE,oBAAoB;;;;EAqDnC;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE;IACf,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC;CAClB,GACA,KAAK,CAsCP;AAED,eAAO,MAAM,eAAe,WAAY,GAAG,SAAS,KAAK,YA8BxD,CAAC;AAEF,eAAO,MAAM,aAAa,UACjB,KAAK,WACH,cAAc,EAAE,WAChB,mBAAmB,kBACZ,MAAM,cACV,SAAS;;;;;;;;;;;CAuDtB,CAAC"}
|
|
@@ -37,7 +37,7 @@ function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
37
37
|
const valueFields = [];
|
|
38
38
|
for (const column of columns) {
|
|
39
39
|
// row fields can be dates or strings
|
|
40
|
-
if (
|
|
40
|
+
if ((0, columnProcessing_1.isDateType)(column.fieldType)) {
|
|
41
41
|
rowFields.push(column.field);
|
|
42
42
|
}
|
|
43
43
|
// include ID fields as rowField pivot option
|
|
@@ -45,7 +45,7 @@ function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
45
45
|
// rowFields.push(column.field);
|
|
46
46
|
// }
|
|
47
47
|
// column fields can be strings
|
|
48
|
-
if (column.
|
|
48
|
+
if ((0, columnProcessing_1.isStringType)(column.fieldType)) {
|
|
49
49
|
const possibleValues = uniqueValues?.[column.field] ?? [];
|
|
50
50
|
const isNullValuesOnly = !possibleValues ||
|
|
51
51
|
(Object.keys(possibleValues).length === 1 &&
|
|
@@ -62,9 +62,7 @@ function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
// value fields can be numbers or bools
|
|
65
|
-
|
|
66
|
-
if (valueFormatter_1.NUMBER_FORMAT_TYPES.includes(column.format) ||
|
|
67
|
-
column.jsType === 'bool') {
|
|
65
|
+
if ((0, columnProcessing_1.isNumberType)(column.fieldType) || (0, columnProcessing_1.isBoolType)(column.fieldType)) {
|
|
68
66
|
if (!(0, util_1.isIdColumn)(column.field)) {
|
|
69
67
|
valueFields.push(column.field);
|
|
70
68
|
}
|
|
@@ -877,7 +877,7 @@ function additionalProcessingOnPivotQuery(pivot, query, additionalProcessing, da
|
|
|
877
877
|
}
|
|
878
878
|
const additionalProcessingQuery = `
|
|
879
879
|
SELECT *
|
|
880
|
-
FROM quill_base_pivot ${sortQuery}${databaseType === 'mssql' ? ` OFFSET ${offset} ROWS FETCH NEXT ${limit} ROWS ONLY` : ` LIMIT ${limit} OFFSET ${offset}`}
|
|
880
|
+
FROM quill_base_pivot ${sortQuery}${databaseType.toLowerCase() === 'mssql' ? ` OFFSET ${offset} ROWS FETCH NEXT ${limit} ROWS ONLY` : ` LIMIT ${limit} OFFSET ${offset}`}
|
|
881
881
|
`
|
|
882
882
|
.replace(/\s+/g, ' ')
|
|
883
883
|
.trim();
|
|
@@ -27,7 +27,7 @@ export type ReportBuilderInfo = {
|
|
|
27
27
|
};
|
|
28
28
|
export declare const EMPTY_REPORT: QuillReport;
|
|
29
29
|
export declare const EMPTY_INTERNAL_REPORT: QuillReportInternal;
|
|
30
|
-
export declare function fetchReport({ reportId, client, tenants, flags, useReportTask, filters, additionalProcessing, dateBucket, customFields, rowsOnly, rowCountOnly, abortSignal,
|
|
30
|
+
export declare function fetchReport({ reportId, client, tenants, flags, useReportTask, filters, additionalProcessing, dateBucket, customFields, rowsOnly, rowCountOnly, abortSignal, getToken, }: {
|
|
31
31
|
reportId: string;
|
|
32
32
|
client: QuillProviderClient;
|
|
33
33
|
tenants?: {
|
|
@@ -43,12 +43,12 @@ export declare function fetchReport({ reportId, client, tenants, flags, useRepor
|
|
|
43
43
|
rowsOnly?: boolean;
|
|
44
44
|
rowCountOnly?: boolean;
|
|
45
45
|
abortSignal?: AbortSignal;
|
|
46
|
-
|
|
46
|
+
getToken: () => Promise<string>;
|
|
47
47
|
}): Promise<{
|
|
48
48
|
report: QuillReportInternal;
|
|
49
49
|
error?: string;
|
|
50
50
|
}>;
|
|
51
|
-
export declare function processReportResponse({ resp, client, filters, dateBucket, additionalProcessing, customFields, }: {
|
|
51
|
+
export declare function processReportResponse({ resp, client, filters, dateBucket, additionalProcessing, customFields, getToken, }: {
|
|
52
52
|
resp: any;
|
|
53
53
|
client: QuillProviderClient;
|
|
54
54
|
filters?: (DashboardFilter | InternalFilter)[];
|
|
@@ -57,26 +57,28 @@ export declare function processReportResponse({ resp, client, filters, dateBucke
|
|
|
57
57
|
customFields?: {
|
|
58
58
|
[tableName: string]: CustomField[];
|
|
59
59
|
} | null;
|
|
60
|
+
getToken: () => Promise<string>;
|
|
60
61
|
}): Promise<QuillReportInternal>;
|
|
61
|
-
export declare function fetchReportInfo(reportId: string, client: QuillProviderClient, tenants?: {
|
|
62
|
+
export declare function fetchReportInfo(reportId: string, client: QuillProviderClient, getToken: () => Promise<string>, tenants?: {
|
|
62
63
|
tenantField: string;
|
|
63
64
|
tenantIds: (string | number)[];
|
|
64
65
|
}[] | (string | number)[]): Promise<{
|
|
65
66
|
report: any;
|
|
66
67
|
filters: any;
|
|
67
68
|
}>;
|
|
68
|
-
export declare function fetchReportRowCount(reportId: string, client: QuillProviderClient, tenants?: {
|
|
69
|
+
export declare function fetchReportRowCount(reportId: string, client: QuillProviderClient, getToken: () => Promise<string>, tenants?: {
|
|
69
70
|
tenantField: string;
|
|
70
71
|
tenantIds: (string | number)[];
|
|
71
72
|
}[] | (string | number)[], flags?: string[], useReportTask?: boolean, filters?: any[], additionalProcessing?: AdditionalProcessing, customFields?: any, abortSignal?: AbortSignal): Promise<number | undefined>;
|
|
72
|
-
export declare function saveReport({ report, dashboardItemId, client, }: {
|
|
73
|
+
export declare function saveReport({ report, dashboardItemId, client, getToken, }: {
|
|
73
74
|
report: any;
|
|
74
75
|
dashboardItemId?: string;
|
|
75
76
|
client: QuillProviderClient;
|
|
77
|
+
getToken: () => Promise<string>;
|
|
76
78
|
}): Promise<any>;
|
|
77
79
|
export declare const formatRowsFromReport: (report: any, xAxisField?: string, xAxisFormat?: string) => any;
|
|
78
80
|
export declare function convertInternalReportToReport(report: QuillReportInternal, dashboardFilters: DashboardFilter[], initiator?: string): QuillReport;
|
|
79
|
-
export declare const fetchReportBuilderDataFromAST: ({ baseAst, schema, client, tenants, pivot, previousRelevant, requiresNewFilteredUniqueValues, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName, }: {
|
|
81
|
+
export declare const fetchReportBuilderDataFromAST: ({ baseAst, schema, client, tenants, pivot, previousRelevant, requiresNewFilteredUniqueValues, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName, getToken, }: {
|
|
80
82
|
baseAst: any;
|
|
81
83
|
schema: Table[];
|
|
82
84
|
client: QuillProviderClient;
|
|
@@ -97,5 +99,6 @@ export declare const fetchReportBuilderDataFromAST: ({ baseAst, schema, client,
|
|
|
97
99
|
skipRowCount?: boolean;
|
|
98
100
|
processing?: AdditionalProcessing;
|
|
99
101
|
dashboardName: string;
|
|
102
|
+
getToken: () => Promise<string>;
|
|
100
103
|
}) => Promise<ReportBuilderInfo>;
|
|
101
104
|
//# sourceMappingURL=report.d.ts.map
|