@quillsql/react 2.13.47 → 2.13.49
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 +56 -49
- package/dist/cjs/ChartBuilder.d.ts +3 -2
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +172 -138
- package/dist/cjs/ChartEditor.d.ts +2 -2
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +5 -2
- package/dist/cjs/Context.d.ts +121 -41
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +449 -261
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +26 -25
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +0 -3
- 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 +3 -1
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +2 -2
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +25 -14
- package/dist/cjs/SQLEditor.d.ts +1 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +51 -16
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +85 -14
- 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 +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 +63 -36
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/InternalChart.js +30 -33
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +3 -1
- 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 +80 -39
- 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 +101 -65
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +2 -2
- 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/QuillMultiSelectSectionList.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectSectionList.js +32 -22
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +186 -159
- package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelect.js +83 -75
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +18 -11
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +59 -61
- 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 +4 -7
- package/dist/cjs/components/UiComponents.d.ts +1 -1
- 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 +2 -2
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +160 -69
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +29 -15
- package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.d.ts +1 -0
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +22 -12
- package/dist/cjs/hooks/useReport.d.ts +2 -2
- package/dist/cjs/hooks/useReport.d.ts.map +1 -1
- package/dist/cjs/hooks/useReport.js +3 -4
- 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 +189 -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/paginationProcessing.d.ts +1 -0
- package/dist/cjs/utils/paginationProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/paginationProcessing.js +6 -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 -9
- 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 +92 -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 +60 -53
- package/dist/esm/ChartBuilder.d.ts +3 -2
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +173 -139
- package/dist/esm/ChartEditor.d.ts +2 -2
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +6 -3
- package/dist/esm/Context.d.ts +121 -41
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +450 -262
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +28 -27
- package/dist/esm/DateRangePicker/QuillDateRangePicker.js +0 -3
- 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 +3 -1
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +2 -2
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +28 -17
- package/dist/esm/SQLEditor.d.ts +1 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +54 -19
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +88 -17
- 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 +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 +65 -38
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/InternalChart.js +32 -35
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +3 -1
- 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 +80 -39
- 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 +102 -66
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +2 -2
- 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/QuillMultiSelectSectionList.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectSectionList.js +32 -22
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +187 -160
- package/dist/esm/components/QuillSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillSelect.js +85 -77
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +18 -11
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +59 -61
- 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 +4 -7
- package/dist/esm/components/UiComponents.d.ts +1 -1
- 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 +2 -2
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +162 -71
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +31 -17
- package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.d.ts +1 -0
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +23 -13
- package/dist/esm/hooks/useReport.d.ts +2 -2
- package/dist/esm/hooks/useReport.d.ts.map +1 -1
- package/dist/esm/hooks/useReport.js +4 -5
- 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 +187 -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/paginationProcessing.d.ts +1 -0
- package/dist/esm/utils/paginationProcessing.d.ts.map +1 -1
- package/dist/esm/utils/paginationProcessing.js +5 -0
- 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 -10
- 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 +94 -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,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { QUILL_SERVER } from './constants';
|
|
3
|
-
import { TenantContext } from '../Context';
|
|
1
|
+
import { QUILL_QUERY_ENDPOINT, QUILL_SERVER } from './constants';
|
|
4
2
|
function fetchQuillData(responseData) {
|
|
5
3
|
if (!responseData) {
|
|
6
4
|
return null;
|
|
@@ -32,39 +30,159 @@ function parseData(rows, queryType) {
|
|
|
32
30
|
return rows;
|
|
33
31
|
}
|
|
34
32
|
}
|
|
35
|
-
async function testSqlViewState(
|
|
33
|
+
async function testSqlViewState(client, referencedTables, getToken) {
|
|
36
34
|
let errorMessage = null;
|
|
37
35
|
await Promise.all(referencedTables.map(async (table) => {
|
|
38
36
|
if (!table) {
|
|
39
37
|
return;
|
|
40
38
|
}
|
|
41
|
-
const
|
|
39
|
+
const { data: resp } = await quillFetch({
|
|
40
|
+
client,
|
|
41
|
+
task: 'test-view',
|
|
42
42
|
metadata: {
|
|
43
43
|
tables: [table],
|
|
44
|
-
|
|
45
|
-
clientId: hostedRequestBody.metadata.clientId,
|
|
44
|
+
clientId: client.clientId,
|
|
46
45
|
},
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const resp = await getData(client, 'test-view', 'same-origin', hostedBody, cloudBody);
|
|
46
|
+
getToken,
|
|
47
|
+
});
|
|
50
48
|
if (resp.success === false) {
|
|
51
49
|
const brokenBody = {
|
|
52
50
|
metadata: {
|
|
53
51
|
table: table,
|
|
54
52
|
task: 'set-broken-view',
|
|
55
|
-
clientId:
|
|
53
|
+
clientId: client.clientId,
|
|
56
54
|
},
|
|
57
55
|
};
|
|
58
|
-
|
|
56
|
+
quillFetch({
|
|
57
|
+
client,
|
|
58
|
+
task: 'set-broken-view',
|
|
59
|
+
metadata: brokenBody,
|
|
60
|
+
credentials: 'same-origin',
|
|
61
|
+
getToken,
|
|
62
|
+
});
|
|
59
63
|
errorMessage = `Virtual Table Error: '${table}' is out of sync with datasource.`;
|
|
60
64
|
}
|
|
61
65
|
}));
|
|
62
66
|
return errorMessage;
|
|
63
67
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
export const quillFetch = async ({ client, task, method = 'POST', metadata, abortSignal, credentials = 'omit', urlParameters, getToken, }) => {
|
|
69
|
+
const token = await getToken();
|
|
70
|
+
const queryString = urlParameters ?? `task=${task}`;
|
|
71
|
+
const endpoint = client.queryEndpoint
|
|
72
|
+
? `${client.queryEndpoint}?${queryString}`
|
|
73
|
+
: `${QUILL_SERVER}${QUILL_QUERY_ENDPOINT}?${queryString}`;
|
|
74
|
+
try {
|
|
75
|
+
const response = await fetch(endpoint, {
|
|
76
|
+
method,
|
|
77
|
+
headers: {
|
|
78
|
+
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
|
79
|
+
...client.queryHeaders,
|
|
80
|
+
'Content-Type': 'application/json',
|
|
81
|
+
'Vercel-Env': process.env.NEXT_PUBLIC_VERCEL_ENV ?? 'production',
|
|
82
|
+
},
|
|
83
|
+
body: JSON.stringify({
|
|
84
|
+
metadata: {
|
|
85
|
+
task,
|
|
86
|
+
clientId: client.clientId,
|
|
87
|
+
...metadata,
|
|
88
|
+
},
|
|
89
|
+
}),
|
|
90
|
+
credentials: client.withCredentials ? 'include' : credentials,
|
|
91
|
+
signal: abortSignal,
|
|
92
|
+
});
|
|
93
|
+
if (!response.ok) {
|
|
94
|
+
throw new Error('API request failed');
|
|
95
|
+
}
|
|
96
|
+
let result = await response.json();
|
|
97
|
+
// Not sure if this is required, but putting it here just in case
|
|
98
|
+
// based on other lines of code I've seen
|
|
99
|
+
// Probably happens if self-hosted endpoint was not set up correctly and
|
|
100
|
+
// the response was wrapped in an additional data object
|
|
101
|
+
if (result.data?.data &&
|
|
102
|
+
(result.data.queries || result.data.status || result.data.error)) {
|
|
103
|
+
result = result.data;
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
data: result.data,
|
|
107
|
+
queries: result.queries,
|
|
108
|
+
status: result.status,
|
|
109
|
+
error: result.error,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
if (e instanceof Error && e.name === 'AbortError') {
|
|
114
|
+
throw e;
|
|
115
|
+
}
|
|
116
|
+
console.error('Failed to fetch:', e);
|
|
117
|
+
return { error: 'Failed to fetch data' };
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
// This function parses the response from the fetch call,
|
|
121
|
+
// which is what getData used to do after fetching data
|
|
122
|
+
export const parseFetchResponse = async (client, task, response, getToken) => {
|
|
123
|
+
try {
|
|
124
|
+
if (response.status === 'error' || response.data?.error) {
|
|
125
|
+
let errorPrefix = 'Error: ';
|
|
126
|
+
let errorMessage = 'Failed to fetch report: ' + (response.error || response.data?.error);
|
|
127
|
+
if (task === 'query' || task === 'patterns') {
|
|
128
|
+
errorPrefix = response.error?.includes('Query Parsing Error')
|
|
129
|
+
? ''
|
|
130
|
+
: 'SQL Error: ';
|
|
131
|
+
errorMessage = errorPrefix + response.error;
|
|
132
|
+
}
|
|
133
|
+
else if (response.error?.includes('Virtual Table Error')) {
|
|
134
|
+
errorMessage = response.error;
|
|
135
|
+
}
|
|
136
|
+
let adminErrorMessage = undefined;
|
|
137
|
+
if (response?.data?.referencedTables) {
|
|
138
|
+
adminErrorMessage =
|
|
139
|
+
(await testSqlViewState(client, response.data.referencedTables, getToken)) ?? undefined;
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
success: false,
|
|
143
|
+
errorMessage,
|
|
144
|
+
adminErrorMessage,
|
|
145
|
+
data: response,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
if (response.error) {
|
|
149
|
+
return {
|
|
150
|
+
success: false,
|
|
151
|
+
errorMessage: response.error,
|
|
152
|
+
...response,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
const result = {
|
|
156
|
+
...response.data,
|
|
157
|
+
};
|
|
158
|
+
const fields = response.queries?.queryResults[0]?.fields;
|
|
159
|
+
const rows = response.queries?.queryResults[0]?.rows;
|
|
160
|
+
const compareRows = response.queries?.queryResults[1]?.rows;
|
|
161
|
+
if (fields) {
|
|
162
|
+
result.fields = fields;
|
|
163
|
+
}
|
|
164
|
+
if (rows) {
|
|
165
|
+
result.rows = rows;
|
|
166
|
+
}
|
|
167
|
+
if (compareRows && task !== 'report') {
|
|
168
|
+
result.compareRows = compareRows;
|
|
169
|
+
}
|
|
170
|
+
if (response.data?.queryOrder) {
|
|
171
|
+
response.data.queryOrder.forEach((queryKey, index) => {
|
|
172
|
+
result[queryKey] = parseData(response.queries?.queryResults?.[index]?.rows, queryKey);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
console.error('Failed to parse response:', e);
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* @deprecated Use quillFetch instead. If post fetch parsing is required, use parseFetchResponse.
|
|
184
|
+
*/
|
|
185
|
+
export async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cloudRequestBody, method = 'POST', getToken, queryParam, abortSignal) {
|
|
68
186
|
if (!client) {
|
|
69
187
|
return null;
|
|
70
188
|
}
|
|
@@ -105,7 +223,7 @@ export async function getData(client, cloudQueryEndpoint, noCred, hostedRequestB
|
|
|
105
223
|
processedData.data &&
|
|
106
224
|
processedData.data.referencedTables) {
|
|
107
225
|
adminErrorMessage =
|
|
108
|
-
(await testSqlViewState(
|
|
226
|
+
(await testSqlViewState(client, processedData.data.referencedTables, getToken)) ?? undefined;
|
|
109
227
|
}
|
|
110
228
|
return {
|
|
111
229
|
success: false,
|
|
@@ -214,58 +332,62 @@ export async function getData(client, cloudQueryEndpoint, noCred, hostedRequestB
|
|
|
214
332
|
return null;
|
|
215
333
|
}
|
|
216
334
|
}
|
|
217
|
-
export function useQuillCloud() {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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
|
-
|
|
335
|
+
// export function useQuillCloud() {
|
|
336
|
+
// const { tenants, flags } = useContext(TenantContext);
|
|
337
|
+
// const getDataFromCloud = async (
|
|
338
|
+
// client: QuillProviderClient,
|
|
339
|
+
// cloudQueryEndpoint: string,
|
|
340
|
+
// cloudRequestBody: any,
|
|
341
|
+
// method = 'POST',
|
|
342
|
+
// abortSignal?: AbortSignal,
|
|
343
|
+
// ) => {
|
|
344
|
+
// try {
|
|
345
|
+
// const url = `${QUILL_SERVER}/${cloudQueryEndpoint}`;
|
|
346
|
+
// const resp = await fetch(url, {
|
|
347
|
+
// method,
|
|
348
|
+
// headers: {
|
|
349
|
+
// Authorization: 'Bearer ',
|
|
350
|
+
// 'Content-Type': 'application/json',
|
|
351
|
+
// },
|
|
352
|
+
// body:
|
|
353
|
+
// method === 'POST'
|
|
354
|
+
// ? JSON.stringify({
|
|
355
|
+
// ...cloudRequestBody,
|
|
356
|
+
// ...{
|
|
357
|
+
// publicKey: client?.publicKey,
|
|
358
|
+
// tenants: tenants,
|
|
359
|
+
// flags: flags,
|
|
360
|
+
// },
|
|
361
|
+
// })
|
|
362
|
+
// : null,
|
|
363
|
+
// signal: abortSignal,
|
|
364
|
+
// });
|
|
365
|
+
// return await resp.json();
|
|
366
|
+
// } catch (e) {
|
|
367
|
+
// if (e instanceof Error && e.name === 'AbortError') {
|
|
368
|
+
// throw e;
|
|
369
|
+
// }
|
|
370
|
+
// console.error('Failed to parse JSON:', e);
|
|
371
|
+
// return null;
|
|
372
|
+
// }
|
|
373
|
+
// };
|
|
374
|
+
// return {
|
|
375
|
+
// getDataFromCloud,
|
|
376
|
+
// };
|
|
377
|
+
// }
|
|
378
|
+
export async function fetchSqlQuery(ast, client, getToken, formData) {
|
|
255
379
|
try {
|
|
256
380
|
const where = formData ? formData : ast?.where || null;
|
|
257
|
-
const
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
381
|
+
const { data } = await quillFetch({
|
|
382
|
+
client,
|
|
383
|
+
task: 'sqlify',
|
|
384
|
+
metadata: {
|
|
385
|
+
clientId: client.clientId,
|
|
386
|
+
useNewNodeSql: true,
|
|
263
387
|
ast: { ...ast, where },
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
}),
|
|
388
|
+
},
|
|
389
|
+
getToken,
|
|
267
390
|
});
|
|
268
|
-
const data = await response.json();
|
|
269
391
|
return { query: data.query };
|
|
270
392
|
}
|
|
271
393
|
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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { endOfDay, parse, startOfDay, sub } from 'date-fns';
|
|
2
|
-
import { COMPARISON_RANGE, PRIMARY_RANGE, defaultOptionsV2, getRangeFromPresetOptions, } from '../DateRangePicker/dateRangePickerUtils';
|
|
2
|
+
import { COMPARISON_RANGE, PRIMARY_RANGE, convertPresetOptionsToSelectableList, defaultOptionsV2, getRangeFromPresetOptions, } from '../DateRangePicker/dateRangePickerUtils';
|
|
3
3
|
import { DateOperator, FieldType, InternalFilterType, DashboardFilterType, TimeUnit, FilterType, } from '../models/Filter';
|
|
4
4
|
import { filterTreeToAst } from './astFilterProcessing';
|
|
5
5
|
import { snakeAndCamelCaseToTitleCase } from './textProcessing';
|
|
6
6
|
import { reportBuilderStateToAst } from './reportBuilder';
|
|
7
|
+
import { quillFetch } from './dataFetcher';
|
|
7
8
|
export function findAndProcessDateFilter(filters) {
|
|
8
9
|
let dateFilter = filters.find((filter) => filter.filterType === 'date_range');
|
|
9
10
|
if (dateFilter) {
|
|
@@ -70,25 +71,8 @@ export function updateFilter(filter, value = null, comparison = null, dashboardN
|
|
|
70
71
|
}
|
|
71
72
|
if (filter.filterType === 'date' || filter.filterType === 'date_range') {
|
|
72
73
|
let presetsOptions = defaultOptionsV2;
|
|
73
|
-
if (filter.
|
|
74
|
-
presetsOptions = filter.
|
|
75
|
-
if (!elem.isStatic) {
|
|
76
|
-
return {
|
|
77
|
-
label: elem.label,
|
|
78
|
-
value: elem.value,
|
|
79
|
-
startDate: (PRIMARY_RANGE[elem.value] ??
|
|
80
|
-
PRIMARY_RANGE['LAST_30_DAYS']).startDate,
|
|
81
|
-
endDate: (PRIMARY_RANGE[elem.value] ??
|
|
82
|
-
PRIMARY_RANGE['LAST_30_DAYS']).endDate,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
return {
|
|
86
|
-
label: elem.label,
|
|
87
|
-
value: elem.value,
|
|
88
|
-
startDate: new Date(elem.startDate),
|
|
89
|
-
endDate: new Date(elem.endDate),
|
|
90
|
-
};
|
|
91
|
-
});
|
|
74
|
+
if (filter.presetOptions || filter.defaultPresetRanges) {
|
|
75
|
+
presetsOptions = convertPresetOptionsToSelectableList(filter.presetOptions ?? [], filter.defaultPresetRanges ?? []);
|
|
92
76
|
}
|
|
93
77
|
if (comparison ||
|
|
94
78
|
(filter.comparison && filter.comparisonRange.value !== 'NO_COMPARISON')) {
|
|
@@ -307,29 +291,26 @@ export function filterStackToFilterTree(stack) {
|
|
|
307
291
|
/**
|
|
308
292
|
* This function uses the baseAst and forms a SQL query using the a filters array
|
|
309
293
|
*/
|
|
310
|
-
export async function buildQueryFromFilters(reportBuilderState, filters,
|
|
294
|
+
export async function buildQueryFromFilters(reportBuilderState, filters, client, getToken) {
|
|
311
295
|
const subTree = filterStackToFilterTree(filters);
|
|
312
296
|
let whereNode = null;
|
|
313
297
|
if (subTree) {
|
|
314
|
-
whereNode = filterTreeToAst(subTree, client.databaseType
|
|
298
|
+
whereNode = filterTreeToAst(subTree, client.databaseType?.toLowerCase() || 'postgresql');
|
|
315
299
|
}
|
|
316
|
-
const ast = reportBuilderStateToAst({ ...reportBuilderState, filterStack: filters }, client.databaseType
|
|
300
|
+
const ast = reportBuilderStateToAst({ ...reportBuilderState, filterStack: filters }, client.databaseType?.toLowerCase() || 'postgresql');
|
|
317
301
|
const queryAst = { ...ast, where: whereNode };
|
|
318
302
|
try {
|
|
319
|
-
const
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
body: JSON.stringify({
|
|
325
|
-
ast: queryAst,
|
|
326
|
-
publicKey: client.publicKey,
|
|
303
|
+
const { data } = await quillFetch({
|
|
304
|
+
client,
|
|
305
|
+
task: 'sqlify',
|
|
306
|
+
metadata: {
|
|
307
|
+
clientId: client.clientId,
|
|
327
308
|
useNewNodeSql: true,
|
|
328
|
-
|
|
329
|
-
|
|
309
|
+
ast: queryAst,
|
|
310
|
+
},
|
|
311
|
+
getToken,
|
|
330
312
|
});
|
|
331
|
-
const
|
|
332
|
-
const query = data.query;
|
|
313
|
+
const query = data?.query;
|
|
333
314
|
return { success: true, query };
|
|
334
315
|
}
|
|
335
316
|
catch (error) {
|
|
@@ -506,7 +487,8 @@ export function mergeCustomFilters(filters, customFilters) {
|
|
|
506
487
|
value: 'LAST_30_DAYS',
|
|
507
488
|
},
|
|
508
489
|
dashboardName: 'none',
|
|
509
|
-
|
|
490
|
+
presetOptions: [],
|
|
491
|
+
defaultPresetRanges: [],
|
|
510
492
|
preset: {
|
|
511
493
|
label: 'Last 30 Days',
|
|
512
494
|
value: 'LAST_30_DAYS',
|
|
@@ -544,8 +526,7 @@ export function filtersAreEquivalent(filters1, filters2) {
|
|
|
544
526
|
export const createDefaultDateFilter = (filter, reports, dashboardName) => {
|
|
545
527
|
const comparisonRangeStart = getComparisonRange(filter, 'startDate');
|
|
546
528
|
const comparisonRangeEnd = getComparisonRange(filter, 'endDate');
|
|
547
|
-
const range = filter
|
|
548
|
-
PRIMARY_RANGE[filter.primaryRange?.value ?? 'LAST_30_DAYS'] ??
|
|
529
|
+
const range = PRIMARY_RANGE[filter.primaryRange?.value ?? 'LAST_30_DAYS'] ??
|
|
549
530
|
PRIMARY_RANGE['LAST_30_DAYS'];
|
|
550
531
|
return filter
|
|
551
532
|
? {
|
|
@@ -579,7 +560,12 @@ export const createDefaultDateFilter = (filter, reports, dashboardName) => {
|
|
|
579
560
|
: undefined;
|
|
580
561
|
};
|
|
581
562
|
const getComparisonRange = (dateFilter, rangeType) => {
|
|
582
|
-
const range = dateFilter?.
|
|
563
|
+
const range = convertPresetOptionsToSelectableList(dateFilter?.presetOptions ?? [], dateFilter?.defaultPresetRanges ?? []).find((option) => option.value === dateFilter?.primaryRange?.value) ??
|
|
564
|
+
PRIMARY_RANGE[dateFilter?.primaryRange?.value ?? 'LAST_30_DAYS'] ??
|
|
565
|
+
PRIMARY_RANGE['LAST_30_DAYS'];
|
|
566
|
+
if (!range.startDate || !range.endDate) {
|
|
567
|
+
return undefined;
|
|
568
|
+
}
|
|
583
569
|
return (dateFilter?.comparisonRange?.[rangeType] ??
|
|
584
570
|
COMPARISON_RANGE[dateFilter?.defaultComparisonRange ??
|
|
585
571
|
'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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Pagination } from '../models/Pagination';
|
|
2
2
|
export declare const DEFAULT_PAGINATION: Pagination;
|
|
3
|
+
export declare const DEFAULT_TABLE_PAGINATION: Pagination;
|
|
3
4
|
export declare function shouldFetchMore(pagination: Pagination, page: number, maxPage: number, currentRowCount?: number): boolean;
|
|
4
5
|
export declare function shouldSortInMemory(pagination: Pagination, rowCount?: number): boolean;
|
|
5
6
|
//# sourceMappingURL=paginationProcessing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paginationProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/paginationProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,eAAO,MAAM,kBAAkB,EAAE,UAIhC,CAAC;AAEF,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,WAkBzB;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,WAK3E"}
|
|
1
|
+
{"version":3,"file":"paginationProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/paginationProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,eAAO,MAAM,kBAAkB,EAAE,UAIhC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,UAItC,CAAC;AAEF,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,WAkBzB;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,WAK3E"}
|
|
@@ -3,6 +3,11 @@ export const DEFAULT_PAGINATION = {
|
|
|
3
3
|
rowsPerPage: 10,
|
|
4
4
|
rowsPerRequest: 600,
|
|
5
5
|
};
|
|
6
|
+
export const DEFAULT_TABLE_PAGINATION = {
|
|
7
|
+
page: 0,
|
|
8
|
+
rowsPerPage: 10,
|
|
9
|
+
rowsPerRequest: 50,
|
|
10
|
+
};
|
|
6
11
|
export function shouldFetchMore(pagination, page, maxPage, currentRowCount) {
|
|
7
12
|
if (!pagination ||
|
|
8
13
|
(currentRowCount && currentRowCount >= pagination.rowsPerPage * (page + 1))) {
|
|
@@ -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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { getDateString } from '../internals/ReportBuilder/PivotModal';
|
|
2
2
|
import { isStringType, processColumnName } from './columnProcessing';
|
|
3
3
|
import { MAX_PIVOT_UNIQUE_VALUES } from './constants';
|
|
4
|
-
import {
|
|
4
|
+
import { quillFetch } from './dataFetcher';
|
|
5
5
|
import { parseValueFromBigQueryDates } from './dataProcessing';
|
|
6
6
|
import { getComparisonInterval } from './dates';
|
|
7
7
|
import { mergeComparisonPivotColumns, mergeComparisonPivotRows } from './merge';
|
|
8
8
|
import { additionalProcessingOnPivotQuery, generatePivotQuery, generateRowCountQuery, } from './queryConstructor';
|
|
9
9
|
import { matchCasing, snakeCaseToTitleCase } from './textProcessing';
|
|
10
|
-
export async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount = true, caller, }) {
|
|
10
|
+
export async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount = true, caller, getToken, }) {
|
|
11
11
|
let sqlQuery = pivotQuery;
|
|
12
12
|
let comparisonPivotSql = comparisonPivotQuery;
|
|
13
13
|
const databaseType = client.databaseType || 'postgresql';
|
|
@@ -82,10 +82,11 @@ export async function generatePivotWithSQL({ pivot, report, client, dateBucket,
|
|
|
82
82
|
if (paginatedComparisonQuery) {
|
|
83
83
|
preQueries.push(paginatedComparisonQuery);
|
|
84
84
|
}
|
|
85
|
-
const
|
|
85
|
+
const { data: resp } = await quillFetch({
|
|
86
|
+
client,
|
|
87
|
+
task: 'query',
|
|
86
88
|
metadata: {
|
|
87
89
|
preQueries,
|
|
88
|
-
task: 'query',
|
|
89
90
|
clientId: client.publicKey,
|
|
90
91
|
databaseType: databaseType,
|
|
91
92
|
runQueryConfig: {
|
|
@@ -96,9 +97,10 @@ export async function generatePivotWithSQL({ pivot, report, client, dateBucket,
|
|
|
96
97
|
dashboardName: dashboardName && tenants ? dashboardName : undefined,
|
|
97
98
|
tenants: dashboardName && tenants ? tenants : undefined,
|
|
98
99
|
},
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
urlParameters: `caller=generatePivot&task=query`,
|
|
101
|
+
credentials: 'same-origin',
|
|
102
|
+
getToken,
|
|
103
|
+
});
|
|
102
104
|
if (resp.success === false) {
|
|
103
105
|
throw resp.errorMessage;
|
|
104
106
|
}
|
|
@@ -146,9 +148,13 @@ export async function generatePivotWithSQL({ pivot, report, client, dateBucket,
|
|
|
146
148
|
label: snakeCaseToTitleCase(processColumnName(field.name.replace('comparison_', 'comparison '))),
|
|
147
149
|
format: field.name === pivot.rowField
|
|
148
150
|
? 'string'
|
|
149
|
-
:
|
|
150
|
-
|
|
151
|
-
|
|
151
|
+
: // This scary equation is calculating which aggregation a column is associated with.
|
|
152
|
+
// 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.
|
|
153
|
+
pivot.aggregations?.[Math.floor((index - 1) /
|
|
154
|
+
Math.floor((responseFields.length - 1) /
|
|
155
|
+
(pivot.aggregations?.length ?? 1)))]?.aggregationType === 'percentage'
|
|
156
|
+
? 'percent'
|
|
157
|
+
: 'whole_number',
|
|
152
158
|
fieldType: field.fieldType,
|
|
153
159
|
jsType: field.jsType,
|
|
154
160
|
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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { isIdColumn } from '../components/ReportBuilder/util';
|
|
2
2
|
import { isDateField } from '../internals/ReportBuilder/PivotModal';
|
|
3
|
-
import { isDateType, isNumberType } from './columnProcessing';
|
|
3
|
+
import { isBoolType, isDateType, isNumberType, isStringType, } from './columnProcessing';
|
|
4
4
|
import { MAX_PIVOT_UNIQUE_VALUES } from './constants';
|
|
5
5
|
import { disambiguatedValueField } from './pivotConstructor';
|
|
6
|
-
import {
|
|
6
|
+
import { NUMBER_FORMAT_TYPES } from './valueFormatter';
|
|
7
7
|
export function isValidPivot(pivot) {
|
|
8
8
|
if (!pivot.rowField && !pivot.aggregations?.[0]?.valueField) {
|
|
9
9
|
return {
|
|
@@ -31,7 +31,7 @@ export function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
31
31
|
const valueFields = [];
|
|
32
32
|
for (const column of columns) {
|
|
33
33
|
// row fields can be dates or strings
|
|
34
|
-
if (
|
|
34
|
+
if (isDateType(column.fieldType)) {
|
|
35
35
|
rowFields.push(column.field);
|
|
36
36
|
}
|
|
37
37
|
// include ID fields as rowField pivot option
|
|
@@ -39,7 +39,7 @@ export function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
39
39
|
// rowFields.push(column.field);
|
|
40
40
|
// }
|
|
41
41
|
// column fields can be strings
|
|
42
|
-
if (column.
|
|
42
|
+
if (isStringType(column.fieldType)) {
|
|
43
43
|
const possibleValues = uniqueValues?.[column.field] ?? [];
|
|
44
44
|
const isNullValuesOnly = !possibleValues ||
|
|
45
45
|
(Object.keys(possibleValues).length === 1 &&
|
|
@@ -56,9 +56,7 @@ export function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
// value fields can be numbers or bools
|
|
59
|
-
|
|
60
|
-
if (NUMBER_FORMAT_TYPES.includes(column.format) ||
|
|
61
|
-
column.jsType === 'bool') {
|
|
59
|
+
if (isNumberType(column.fieldType) || isBoolType(column.fieldType)) {
|
|
62
60
|
if (!isIdColumn(column.field)) {
|
|
63
61
|
valueFields.push(column.field);
|
|
64
62
|
}
|
|
@@ -863,7 +863,7 @@ export function additionalProcessingOnPivotQuery(pivot, query, additionalProcess
|
|
|
863
863
|
}
|
|
864
864
|
const additionalProcessingQuery = `
|
|
865
865
|
SELECT *
|
|
866
|
-
FROM quill_base_pivot ${sortQuery}${databaseType === 'mssql' ? ` OFFSET ${offset} ROWS FETCH NEXT ${limit} ROWS ONLY` : ` LIMIT ${limit} OFFSET ${offset}`}
|
|
866
|
+
FROM quill_base_pivot ${sortQuery}${databaseType.toLowerCase() === 'mssql' ? ` OFFSET ${offset} ROWS FETCH NEXT ${limit} ROWS ONLY` : ` LIMIT ${limit} OFFSET ${offset}`}
|
|
867
867
|
`
|
|
868
868
|
.replace(/\s+/g, ' ')
|
|
869
869
|
.trim();
|