@quillsql/react 2.13.48 → 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 +28 -41
- package/dist/cjs/ChartBuilder.d.ts +2 -2
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +157 -134
- 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 +324 -249
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +10 -23
- 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 +19 -10
- package/dist/cjs/SQLEditor.d.ts +1 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +50 -16
- 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 +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 +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 +31 -14
- 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/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/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 +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/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 +30 -43
- package/dist/esm/ChartBuilder.d.ts +2 -2
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +158 -135
- 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 +326 -251
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +12 -25
- 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 +21 -12
- package/dist/esm/SQLEditor.d.ts +1 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +53 -19
- 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 +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 +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 +32 -15
- 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/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/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 +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/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
|
@@ -8,4 +8,5 @@ export const QUILL_QUERY_ENDPOINT = typeof process !== 'undefined' && process.en
|
|
|
8
8
|
: '/cloud';
|
|
9
9
|
export const ALL_TENANTS = 'QUILL_ALL_TENANTS';
|
|
10
10
|
export const SINGLE_TENANT = 'QUILL_SINGLE_TENANT';
|
|
11
|
+
export const SAVED_QUERIES_DASHBOARD = 'quill-saved-queries';
|
|
11
12
|
export const REFERENCE_LINE = 'QUILL_REFERENCE_LINE';
|
|
@@ -9,11 +9,12 @@ import { CustomField } from '../models/Schema';
|
|
|
9
9
|
* interface to build amazing dashboards on top of.
|
|
10
10
|
* @param item
|
|
11
11
|
*/
|
|
12
|
-
export declare function cleanDashboardItem({ item, dashboardFilters, client, dateBucket, additionalProcessing, customFields, skipPivotFetch, }: {
|
|
12
|
+
export declare function cleanDashboardItem({ item, dashboardFilters, getToken, client, dateBucket, additionalProcessing, customFields, skipPivotFetch, }: {
|
|
13
13
|
item: {
|
|
14
14
|
[key: string]: any;
|
|
15
15
|
} | undefined;
|
|
16
16
|
dashboardFilters: any;
|
|
17
|
+
getToken: () => Promise<string>;
|
|
17
18
|
client: QuillProviderClient;
|
|
18
19
|
dateBucket?: string;
|
|
19
20
|
additionalProcessing?: AdditionalProcessing;
|
|
@@ -22,7 +23,7 @@ export declare function cleanDashboardItem({ item, dashboardFilters, client, dat
|
|
|
22
23
|
} | null;
|
|
23
24
|
skipPivotFetch?: boolean;
|
|
24
25
|
}): Promise<QuillReportInternal>;
|
|
25
|
-
export declare function getDashboard(dashboardName: string, client: QuillProviderClient, tenants?: {
|
|
26
|
+
export declare function getDashboard(dashboardName: string, client: QuillProviderClient, getToken: () => Promise<string>, tenants?: {
|
|
26
27
|
tenantField: string;
|
|
27
28
|
tenantIds: (string | number)[];
|
|
28
29
|
}[] | (string | number)[], flags?: string[]): Promise<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAcvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAOzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAcvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAOzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuB/C;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,IAAI,EACJ,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACN,UAAU,EACV,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACf,EAAE;IACD,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,SAAS,CAAC;IACzC,gBAAgB,EAAE,GAAG,CAAC;IACtB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,YAAY,CAAC,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuL/B;AA8ID,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,OAAO,CAAC,EACJ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACvB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,CAAC,CA6Cd"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { generatePivotTable, generatePivotTableYAxis, } from '../internals/ReportBuilder/PivotModal';
|
|
2
2
|
import { snakeAndCamelCaseToTitleCase, snakeCaseToTitleCase, } from './textProcessing';
|
|
3
|
-
import {
|
|
3
|
+
import { quillFetch } from './dataFetcher';
|
|
4
4
|
import { getDateBucketFromRange } from './dates';
|
|
5
5
|
import { generatePivotWithSQL } from './pivotConstructor';
|
|
6
6
|
import { convertFieldTypeToJSType, convertPostgresColumn, fieldTypeToDataTypeID, processColumnName, } from './columnProcessing';
|
|
@@ -30,7 +30,7 @@ const defaultDashboardItem = {
|
|
|
30
30
|
* interface to build amazing dashboards on top of.
|
|
31
31
|
* @param item
|
|
32
32
|
*/
|
|
33
|
-
export async function cleanDashboardItem({ item, dashboardFilters, client, dateBucket, additionalProcessing, customFields, skipPivotFetch, }) {
|
|
33
|
+
export async function cleanDashboardItem({ item, dashboardFilters, getToken, client, dateBucket, additionalProcessing, customFields, skipPivotFetch, }) {
|
|
34
34
|
if (!item)
|
|
35
35
|
return defaultDashboardItem;
|
|
36
36
|
if (!item.rows) {
|
|
@@ -98,7 +98,7 @@ export async function cleanDashboardItem({ item, dashboardFilters, client, dateB
|
|
|
98
98
|
],
|
|
99
99
|
}
|
|
100
100
|
: undefined,
|
|
101
|
-
}, dashboardFilters, client, dateBucket, additionalProcessing, item.dashboardName);
|
|
101
|
+
}, dashboardFilters, getToken, client, dateBucket, additionalProcessing, item.dashboardName);
|
|
102
102
|
}
|
|
103
103
|
catch (e) {
|
|
104
104
|
pivotTable = undefined;
|
|
@@ -201,7 +201,7 @@ export async function cleanDashboardItem({ item, dashboardFilters, client, dateB
|
|
|
201
201
|
/**
|
|
202
202
|
* Extract and transform the data from itemInfo.
|
|
203
203
|
*/
|
|
204
|
-
async function getPivotTable(report, dashboardFilters, client, dateBucketInitial, additionalProcessing, dashboardName, tenants) {
|
|
204
|
+
async function getPivotTable(report, dashboardFilters, getToken, client, dateBucketInitial, additionalProcessing, dashboardName, tenants) {
|
|
205
205
|
if (!report)
|
|
206
206
|
return undefined;
|
|
207
207
|
const dateFilter = Object.values(dashboardFilters ?? {}).find((filter) => filter.filterType === 'date_range' || filter.operator === 'BETWEEN');
|
|
@@ -270,6 +270,7 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
270
270
|
dashboardName,
|
|
271
271
|
tenants,
|
|
272
272
|
additionalProcessing,
|
|
273
|
+
getToken,
|
|
273
274
|
});
|
|
274
275
|
return pivotTable;
|
|
275
276
|
}
|
|
@@ -288,6 +289,7 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
288
289
|
tenants,
|
|
289
290
|
dateFilter,
|
|
290
291
|
additionalProcessing,
|
|
292
|
+
getToken,
|
|
291
293
|
})
|
|
292
294
|
: undefined;
|
|
293
295
|
}
|
|
@@ -314,25 +316,41 @@ function extractPivotedYAxis(pivotTable, itemInfo, config = undefined) {
|
|
|
314
316
|
// }
|
|
315
317
|
// return fields;
|
|
316
318
|
}
|
|
317
|
-
export async function getDashboard(dashboardName, client, tenants, flags) {
|
|
318
|
-
const
|
|
319
|
+
export async function getDashboard(dashboardName, client, getToken, tenants, flags) {
|
|
320
|
+
const { data: resp } = await quillFetch({
|
|
321
|
+
client,
|
|
322
|
+
task: 'dashboard',
|
|
319
323
|
metadata: {
|
|
320
324
|
name: dashboardName,
|
|
321
|
-
task: 'dashboard',
|
|
322
325
|
clientId: client.publicKey,
|
|
323
326
|
databaseType: client.databaseType,
|
|
324
327
|
useNewNodeSql: true,
|
|
325
328
|
tenants,
|
|
326
329
|
flags,
|
|
327
330
|
},
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
publicKey: client.publicKey,
|
|
331
|
-
name: dashboardName,
|
|
332
|
-
}).toString();
|
|
333
|
-
const resp = await getData(client, `dashconfig?${searchParams}`, 'omit', hostedBody, null, 'GET');
|
|
331
|
+
getToken,
|
|
332
|
+
});
|
|
334
333
|
return {
|
|
335
334
|
...resp,
|
|
336
335
|
createdAt: resp.createdAt && new Date(resp.createdAt),
|
|
336
|
+
dateFilter: resp.dateFilter
|
|
337
|
+
? {
|
|
338
|
+
...resp.dateFilter,
|
|
339
|
+
presetOptions: resp.dateFilter.presetOptions?.map((preset) => ({
|
|
340
|
+
...preset,
|
|
341
|
+
loopStart: preset.loopStart
|
|
342
|
+
? new Date(preset.loopStart)
|
|
343
|
+
: undefined,
|
|
344
|
+
loopEnd: preset.loopEnd ? new Date(preset.loopEnd) : undefined,
|
|
345
|
+
})),
|
|
346
|
+
defaultPresetRanges: resp.dateFilter.defaultPresetRanges?.map((preset) => ({
|
|
347
|
+
...preset,
|
|
348
|
+
loopStart: preset.loopStart
|
|
349
|
+
? new Date(preset.loopStart)
|
|
350
|
+
: undefined,
|
|
351
|
+
loopEnd: preset.loopEnd ? new Date(preset.loopEnd) : undefined,
|
|
352
|
+
})),
|
|
353
|
+
}
|
|
354
|
+
: undefined,
|
|
337
355
|
};
|
|
338
356
|
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { QuillProviderClient } from '../models/Client';
|
|
2
|
-
|
|
3
|
-
export declare
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { QuillFetchOptions, QuillResults } from '../models/Data';
|
|
3
|
+
export declare const quillFetch: ({ client, task, method, metadata, abortSignal, credentials, urlParameters, getToken, }: QuillFetchOptions) => Promise<QuillResults>;
|
|
4
|
+
export declare const parseFetchResponse: (client: QuillProviderClient, task: string, response: QuillResults, getToken: () => Promise<string>) => Promise<any>;
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated Use quillFetch instead. If post fetch parsing is required, use parseFetchResponse.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getData(client: QuillProviderClient, cloudQueryEndpoint: string, noCred: RequestCredentials, hostedRequestBody: any, cloudRequestBody: any, method: string | undefined, getToken: () => Promise<string>, queryParam?: string, abortSignal?: AbortSignal): Promise<any>;
|
|
9
|
+
export declare function fetchSqlQuery(ast: any, client: QuillProviderClient, getToken: () => Promise<string>, formData?: any): Promise<{
|
|
7
10
|
query: string;
|
|
8
11
|
error?: string;
|
|
9
12
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA6EjE,eAAO,MAAM,UAAU,2FASpB,iBAAiB,KAAG,OAAO,CAAC,YAAY,CAuD1C,CAAC;AAIF,eAAO,MAAM,kBAAkB,WACrB,mBAAmB,QACrB,MAAM,YACF,YAAY,YACZ,MAAM,OAAO,CAAC,MAAM,CAAC,iBA0EhC,CAAC;AAEF;;GAEG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,MAAM,oBAAS,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,WAAW,gBAgL1B;AA+CD,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,QAAQ,CAAC,EAAE,GAAG,GACb,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB5C"}
|
|
@@ -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"}
|
|
@@ -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"}
|