@quillsql/react 2.12.52 → 2.12.53
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.js +1 -1
- package/dist/cjs/ChartBuilder.d.ts +7 -3
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +54 -18
- package/dist/cjs/ChartEditor.d.ts +3 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +42 -7
- package/dist/cjs/Context.d.ts +4 -5
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +22 -34
- package/dist/cjs/Dashboard.d.ts +4 -3
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +24 -29
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +8 -10
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +1 -0
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -1
- package/dist/cjs/QuillProvider.js +1 -1
- package/dist/cjs/ReportBuilder.d.ts +8 -12
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +157 -83
- package/dist/cjs/SQLEditor.d.ts +8 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +80 -28
- package/dist/cjs/Table.js +1 -1
- package/dist/cjs/assets/AdjustmentsIcon.d.ts +5 -0
- package/dist/cjs/assets/AdjustmentsIcon.d.ts.map +1 -0
- package/dist/cjs/assets/AdjustmentsIcon.js +5 -0
- package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/cjs/components/Chart/ChartError.js +2 -2
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +2 -2
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +6 -6
- package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts +2 -2
- package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +5 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +23 -4
- package/dist/cjs/components/Dashboard/TableComponent.d.ts +2 -1
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +2 -2
- package/dist/cjs/components/Dashboard/util.d.ts +2 -2
- package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/util.js +2 -2
- package/dist/cjs/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelect.js +18 -13
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +67 -45
- package/dist/cjs/components/QuillSelect.d.ts +1 -1
- package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelect.js +28 -6
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +45 -24
- package/dist/cjs/components/QuillTable.d.ts +2 -1
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +7 -4
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +2 -2
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -2
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +17 -4
- package/dist/cjs/components/ReportBuilder/ui.d.ts +13 -7
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +14 -11
- package/dist/cjs/components/UiComponents.d.ts +15 -8
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +29 -23
- package/dist/cjs/hooks/useAstToFilterTree.d.ts +2 -2
- package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.d.ts +9 -4
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +61 -38
- package/dist/cjs/hooks/useExport.js +1 -1
- package/dist/cjs/hooks/useQuill.js +2 -2
- package/dist/cjs/hooks/useVirtualTables.d.ts +12 -3
- package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/cjs/hooks/useVirtualTables.js +105 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +3 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +9 -9
- package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotList.js +21 -15
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +3 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +9 -9
- package/dist/cjs/models/Client.d.ts +10 -2
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.d.ts +3 -3
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +2 -7
- package/dist/cjs/utils/dashboard.d.ts +5 -5
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +87 -7
- package/dist/cjs/utils/dataFetcher.d.ts +4 -4
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +1 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +2 -8
- package/dist/cjs/utils/paginationProcessing.js +1 -1
- package/dist/cjs/utils/pivotConstructor.d.ts +2 -2
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +1 -1
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +6 -2
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +12 -9
- package/dist/cjs/utils/report.d.ts +6 -5
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +69 -24
- package/dist/cjs/utils/schema.d.ts +3 -3
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +39 -35
- package/dist/cjs/utils/tableProcessing.d.ts +17 -10
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +42 -23
- package/dist/esm/Chart.js +2 -2
- package/dist/esm/ChartBuilder.d.ts +7 -3
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +51 -18
- package/dist/esm/ChartEditor.d.ts +3 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +43 -8
- package/dist/esm/Context.d.ts +4 -5
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +23 -35
- package/dist/esm/Dashboard.d.ts +4 -3
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +24 -29
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.js +8 -10
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +1 -0
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
- package/dist/esm/QuillProvider.js +1 -1
- package/dist/esm/ReportBuilder.d.ts +8 -12
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +160 -86
- package/dist/esm/SQLEditor.d.ts +8 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +83 -31
- package/dist/esm/Table.js +2 -2
- package/dist/esm/assets/AdjustmentsIcon.d.ts +5 -0
- package/dist/esm/assets/AdjustmentsIcon.d.ts.map +1 -0
- package/dist/esm/assets/AdjustmentsIcon.js +3 -0
- package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/esm/components/Chart/ChartError.js +2 -2
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts +2 -2
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +6 -6
- package/dist/esm/components/Dashboard/DashboardTemplate.d.ts +2 -2
- package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts +5 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +25 -6
- package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -1
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +2 -2
- package/dist/esm/components/Dashboard/util.d.ts +2 -2
- package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/util.js +2 -2
- package/dist/esm/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelect.js +19 -14
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +68 -46
- package/dist/esm/components/QuillSelect.d.ts +1 -1
- package/dist/esm/components/QuillSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillSelect.js +29 -7
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +46 -25
- package/dist/esm/components/QuillTable.d.ts +2 -1
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +7 -4
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -2
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +2 -2
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +17 -4
- package/dist/esm/components/ReportBuilder/ui.d.ts +13 -7
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +14 -11
- package/dist/esm/components/UiComponents.d.ts +15 -8
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +29 -23
- package/dist/esm/hooks/useAstToFilterTree.d.ts +2 -2
- package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.d.ts +9 -4
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +62 -39
- package/dist/esm/hooks/useExport.js +1 -1
- package/dist/esm/hooks/useQuill.js +3 -3
- package/dist/esm/hooks/useVirtualTables.d.ts +12 -3
- package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/esm/hooks/useVirtualTables.js +106 -2
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +3 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +9 -9
- package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotList.js +21 -15
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +3 -2
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +9 -9
- package/dist/esm/models/Client.d.ts +10 -2
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.d.ts +3 -3
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +2 -7
- package/dist/esm/utils/dashboard.d.ts +5 -5
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +87 -7
- package/dist/esm/utils/dataFetcher.d.ts +4 -4
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +1 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +2 -8
- package/dist/esm/utils/paginationProcessing.js +1 -1
- package/dist/esm/utils/pivotConstructor.d.ts +2 -2
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +1 -1
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +6 -2
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +12 -9
- package/dist/esm/utils/report.d.ts +6 -5
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +68 -24
- package/dist/esm/utils/schema.d.ts +3 -3
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +39 -35
- package/dist/esm/utils/tableProcessing.d.ts +17 -10
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +39 -20
- package/package.json +1 -1
package/dist/esm/SQLEditor.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export interface SQLEditorProps {
|
|
|
14
14
|
disabled?: boolean;
|
|
15
15
|
icon?: ReactNode;
|
|
16
16
|
tooltipText?: string;
|
|
17
|
+
loading?: boolean;
|
|
17
18
|
}) => JSX.Element;
|
|
18
19
|
/**
|
|
19
20
|
* A secondary button component.
|
|
@@ -56,12 +57,16 @@ export interface SQLEditorProps {
|
|
|
56
57
|
}[];
|
|
57
58
|
isLoading?: boolean;
|
|
58
59
|
rowCount?: number;
|
|
60
|
+
rowsPerPage?: number;
|
|
61
|
+
rowCountIsLoading?: boolean;
|
|
59
62
|
onPageChange?: (page: number) => void;
|
|
60
63
|
onSortChange?: (sort: {
|
|
61
64
|
field: string;
|
|
62
65
|
direction: string;
|
|
63
66
|
}) => void;
|
|
64
67
|
containerStyle?: React.CSSProperties;
|
|
68
|
+
currentPage?: number;
|
|
69
|
+
setCurrentPage?: (page: number) => void;
|
|
65
70
|
}) => JSX.Element;
|
|
66
71
|
/**
|
|
67
72
|
* A component to show while the query results are loading.
|
|
@@ -164,6 +169,8 @@ export interface SQLEditorProps {
|
|
|
164
169
|
onDiscardChanges?: () => void;
|
|
165
170
|
/** A callback function triggered when changes are saved. */
|
|
166
171
|
onSaveChanges?: () => void;
|
|
172
|
+
/** A callback function triggered when the chart builder is closed. */
|
|
173
|
+
onCloseChartBuilder?: () => void;
|
|
167
174
|
/**
|
|
168
175
|
* A callback that is fired when a report has been added to a dashboard.
|
|
169
176
|
*/
|
|
@@ -268,7 +275,7 @@ export interface SQLEditorProps {
|
|
|
268
275
|
* ### SQLEditor API
|
|
269
276
|
* @see https://docs.quillsql.com/components/sql-editor
|
|
270
277
|
*/
|
|
271
|
-
export default function SQLEditor({ ButtonComponent, SecondaryButtonComponent, DeleteButtonComponent, TextInputComponent, SelectComponent, TableComponent, isNewQueryEnabled, LoadingComponent, ModalComponent, PopoverComponent, CardComponent, LabelComponent, HeaderComponent, SubHeaderComponent, TextComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, ChartBuilderFormContainer, defaultQuery, destinationDashboard, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, onDiscardChanges, onSaveChanges, isChartBuilderEnabled, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, isAdminEnabled, chartBuilderTitle, runQueryOnMount, onAddToDashboardComplete, addToDashboardButtonLabel, report, organizationName, isChartBuilderHorizontalView, containerStyle, className, onClickChartElement, }: SQLEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
278
|
+
export default function SQLEditor({ ButtonComponent, SecondaryButtonComponent, DeleteButtonComponent, TextInputComponent, SelectComponent, TableComponent, isNewQueryEnabled, LoadingComponent, ModalComponent, PopoverComponent, CardComponent, LabelComponent, HeaderComponent, SubHeaderComponent, TextComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, ChartBuilderFormContainer, defaultQuery, destinationDashboard, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, onDiscardChanges, onSaveChanges, onCloseChartBuilder, isChartBuilderEnabled, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, isAdminEnabled, chartBuilderTitle, runQueryOnMount, onAddToDashboardComplete, addToDashboardButtonLabel, report, organizationName, isChartBuilderHorizontalView, containerStyle, className, onClickChartElement, }: SQLEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
272
279
|
export declare const SchemaListComponent: ({ schema, theme, loading, LoadingComponent, width, onClick, style, }: {
|
|
273
280
|
schema: any;
|
|
274
281
|
theme: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAMZ,SAAS,EAEV,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"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"}
|
package/dist/esm/SQLEditor.js
CHANGED
|
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
4
4
|
import { useState, useContext, useEffect, useRef, useMemo, } from 'react';
|
|
5
5
|
import MonacoEditor from '@monaco-editor/react';
|
|
6
|
-
import { ClientContext, SchemaDataContext, ThemeContext } from './Context';
|
|
6
|
+
import { ClientContext, DashboardFiltersContext, SchemaDataContext, ThemeContext, } from './Context';
|
|
7
7
|
import { getDataFromCloud } from './utils/dataFetcher';
|
|
8
8
|
import { ChartBuilderWithModal, createInitialFormData } from './ChartBuilder';
|
|
9
9
|
import { MemoizedButton, MemoizedDeleteButton, MemoizedHeader, MemoizedLabel, MemoizedModal, MemoizedPopover, MemoizedSecondaryButton, MemoizedSubHeader, MemoizedText, OverflowContainer, QuillChartBuilderFormContainer, QuillChartBuilderInputColumnContainer, QuillChartBuilderInputRowContainer, QuillErrorMessageComponent, QuillLoadingComponent, QuillPivotColumnContainer, QuillPivotRowContainer, QuillTableSQLEditorComponent, } from './components/UiComponents';
|
|
@@ -11,11 +11,12 @@ import { QuillTextInput } from './components/UiComponents';
|
|
|
11
11
|
import { updateFirstChildWidth } from './utils/width';
|
|
12
12
|
import { QuillCard } from './components/QuillCard';
|
|
13
13
|
import { QuillSelectComponent } from './components/QuillSelect';
|
|
14
|
-
import {
|
|
14
|
+
import { fetchResultsByQuery, } from './utils/tableProcessing';
|
|
15
15
|
import { processColumnReference } from './utils/queryConstructor';
|
|
16
16
|
import { generateSuggestionsByDatasource, generateSuggestionsBySchema, QUILL_LANGUAGE, } from './utils/monacoConfig';
|
|
17
|
-
import { shouldFetchMore,
|
|
17
|
+
import { shouldFetchMore, shouldSortInMemory, } from './utils/paginationProcessing';
|
|
18
18
|
import { EMPTY_INTERNAL_REPORT, formatRowsFromReport } from './utils/report';
|
|
19
|
+
import { cleanDashboardItem } from './utils/dashboard';
|
|
19
20
|
function defineEditorTheme(monaco, theme) {
|
|
20
21
|
monaco.editor.defineTheme('onedark', {
|
|
21
22
|
base: theme.darkMode ? 'vs-dark' : 'vs',
|
|
@@ -81,7 +82,7 @@ function setEditorTheme(_editor, monaco, schema, databaseType, clientName) {
|
|
|
81
82
|
* ### SQLEditor API
|
|
82
83
|
* @see https://docs.quillsql.com/components/sql-editor
|
|
83
84
|
*/
|
|
84
|
-
export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, DeleteButtonComponent = MemoizedDeleteButton, TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, TableComponent = QuillTableSQLEditorComponent, isNewQueryEnabled = false, LoadingComponent = QuillLoadingComponent, ModalComponent = MemoizedModal, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, LabelComponent = MemoizedLabel, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, TextComponent = MemoizedText, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, ChartBuilderFormContainer = QuillChartBuilderFormContainer, defaultQuery, destinationDashboard, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, onDiscardChanges, onSaveChanges, isChartBuilderEnabled = false, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, isAdminEnabled = false, chartBuilderTitle, runQueryOnMount = false, onAddToDashboardComplete, addToDashboardButtonLabel = 'Add to dashboard', report = undefined, organizationName = undefined, isChartBuilderHorizontalView = true, containerStyle = { height: '100vh' }, className, onClickChartElement, }) {
|
|
85
|
+
export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, DeleteButtonComponent = MemoizedDeleteButton, TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, TableComponent = QuillTableSQLEditorComponent, isNewQueryEnabled = false, LoadingComponent = QuillLoadingComponent, ModalComponent = MemoizedModal, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, LabelComponent = MemoizedLabel, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, TextComponent = MemoizedText, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, ChartBuilderFormContainer = QuillChartBuilderFormContainer, defaultQuery, destinationDashboard, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, onDiscardChanges, onSaveChanges, onCloseChartBuilder, isChartBuilderEnabled = false, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, isAdminEnabled = false, chartBuilderTitle, runQueryOnMount = false, onAddToDashboardComplete, addToDashboardButtonLabel = 'Add to dashboard', report = undefined, organizationName = undefined, isChartBuilderHorizontalView = true, containerStyle = { height: '100vh' }, className, onClickChartElement, }) {
|
|
85
86
|
const [sqlPrompt, setSqlPrompt] = useState('');
|
|
86
87
|
const [client] = useContext(ClientContext);
|
|
87
88
|
const [theme] = useContext(ThemeContext);
|
|
@@ -89,9 +90,11 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
89
90
|
const [rows, setRows] = useState([]);
|
|
90
91
|
const [columns, setColumns] = useState([]);
|
|
91
92
|
const [schemaData] = useContext(SchemaDataContext);
|
|
93
|
+
const { dashboardFilters } = useContext(DashboardFiltersContext);
|
|
92
94
|
const [errorMessage, setErrorMessage] = useState('');
|
|
93
95
|
const [sqlResponseLoading, setSqlResponseLoading] = useState(false);
|
|
94
96
|
const [sqlQueryLoading, setSqlQueryLoading] = useState(false);
|
|
97
|
+
const [isAddLoading, setIsAddLoading] = useState(false);
|
|
95
98
|
const [isChartBuilderOpen, setIsChartBuilderOpen] = useState(false);
|
|
96
99
|
const [displayTable, setDisplayTable] = useState(false);
|
|
97
100
|
const formRef = useRef(null);
|
|
@@ -100,6 +103,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
100
103
|
const [filterBarWidth, setFilterBarWidth] = useState(200);
|
|
101
104
|
const [formattedRows, setFormattedRows] = useState([]);
|
|
102
105
|
const [rowCount, setRowCount] = useState(undefined);
|
|
106
|
+
const [rowCountIsLoading, setRowCountIsLoading] = useState(false);
|
|
103
107
|
const [maxPage, setMaxPage] = useState(1);
|
|
104
108
|
const [tableSearchQuery, setTableSearchQuery] = useState('');
|
|
105
109
|
const [lastSuccessfulQuery, setLastSuccessfulQuery] = useState('');
|
|
@@ -107,9 +111,21 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
107
111
|
...EMPTY_INTERNAL_REPORT,
|
|
108
112
|
...report,
|
|
109
113
|
});
|
|
114
|
+
const DEFAULT_ROWS_PER_PAGE = 10;
|
|
115
|
+
const ROW_HEIGHT = 37;
|
|
116
|
+
const TABLE_TAB_HEIGHT = 75;
|
|
117
|
+
const dynamicHeight = window.innerHeight * 0.8 - 310;
|
|
118
|
+
const rowsPerPage = Math.max(DEFAULT_ROWS_PER_PAGE, Math.floor((dynamicHeight - TABLE_TAB_HEIGHT) / ROW_HEIGHT));
|
|
119
|
+
const calculatedHeight = TABLE_TAB_HEIGHT + rowsPerPage * ROW_HEIGHT; // height needs to be 75 + rows * rowheight <= window.innerHeight * 0.8 - 330
|
|
120
|
+
const pagination = {
|
|
121
|
+
page: 0,
|
|
122
|
+
rowsPerPage,
|
|
123
|
+
rowsPerRequest: rowsPerPage * 2,
|
|
124
|
+
};
|
|
110
125
|
const [currentProcessing, setCurrentProcessing] = useState({
|
|
111
|
-
page:
|
|
126
|
+
page: pagination,
|
|
112
127
|
});
|
|
128
|
+
const [currentPage, setCurrentPage] = useState(0);
|
|
113
129
|
const displayedTableData = useMemo(() => {
|
|
114
130
|
return (schemaData?.schema?.filter((table) => {
|
|
115
131
|
return (table.name
|
|
@@ -140,6 +156,11 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
140
156
|
setDisplayTable(false);
|
|
141
157
|
}
|
|
142
158
|
}, [client?.publicKey]);
|
|
159
|
+
useEffect(() => {
|
|
160
|
+
if (isChartBuilderOpen === false) {
|
|
161
|
+
onCloseChartBuilder && onCloseChartBuilder();
|
|
162
|
+
}
|
|
163
|
+
}, [isChartBuilderOpen]);
|
|
143
164
|
const handleRunSqlPrompt = async () => {
|
|
144
165
|
if (!client) {
|
|
145
166
|
return;
|
|
@@ -155,8 +176,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
155
176
|
setQuery('');
|
|
156
177
|
};
|
|
157
178
|
const onPageChange = (page) => {
|
|
158
|
-
if (currentProcessing.page &&
|
|
159
|
-
shouldFetchMore(DEFAULT_PAGINATION, page, maxPage)) {
|
|
179
|
+
if (currentProcessing.page && shouldFetchMore(pagination, page, maxPage)) {
|
|
160
180
|
const newPagination = { ...currentProcessing.page, page };
|
|
161
181
|
const updatedProcessing = { ...currentProcessing, page: newPagination };
|
|
162
182
|
setCurrentProcessing(updatedProcessing);
|
|
@@ -167,15 +187,29 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
167
187
|
}
|
|
168
188
|
};
|
|
169
189
|
const onSortChange = (sort) => {
|
|
170
|
-
if (tempReport && shouldSortInMemory(
|
|
190
|
+
if (tempReport && shouldSortInMemory(pagination, rowCount, false)) {
|
|
171
191
|
return;
|
|
172
192
|
}
|
|
173
|
-
const updatedProcessing = { page:
|
|
193
|
+
const updatedProcessing = { page: pagination, sort };
|
|
174
194
|
handleRunQuery(updatedProcessing, true);
|
|
175
195
|
setCurrentProcessing(updatedProcessing);
|
|
176
196
|
setMaxPage(0);
|
|
177
197
|
};
|
|
178
|
-
const
|
|
198
|
+
const onFilterPreviewChange = (preview) => {
|
|
199
|
+
handleRunQuery(currentProcessing, true, preview);
|
|
200
|
+
};
|
|
201
|
+
const fetchRowCount = async (processing, includeFilters) => {
|
|
202
|
+
if (!client || !query) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
setRowCountIsLoading(true);
|
|
206
|
+
const tableInfo = await fetchResultsByQuery(query, client, processing, schemaData.customFields, includeFilters ? dashboardFilters : undefined, includeFilters ? tempReport.dateField ?? report?.dateField : undefined, false, true);
|
|
207
|
+
if (tableInfo.rowCount) {
|
|
208
|
+
setRowCount(tableInfo.rowCount);
|
|
209
|
+
}
|
|
210
|
+
setRowCountIsLoading(false);
|
|
211
|
+
};
|
|
212
|
+
const handleRunQuery = async (processing, resetRows = false, includeFilters = false, resetPage = false) => {
|
|
179
213
|
if (!client) {
|
|
180
214
|
return;
|
|
181
215
|
}
|
|
@@ -186,16 +220,21 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
186
220
|
setDisplayTable(true);
|
|
187
221
|
setSqlQueryLoading(true);
|
|
188
222
|
setErrorMessage('');
|
|
189
|
-
|
|
223
|
+
if (resetPage && processing.page) {
|
|
224
|
+
processing.page.page = 0;
|
|
225
|
+
setCurrentPage(0);
|
|
226
|
+
setMaxPage(1);
|
|
227
|
+
}
|
|
228
|
+
const tableInfo = await fetchResultsByQuery(query, client, processing, schemaData.customFields, includeFilters
|
|
229
|
+
? dashboardFilters.filter((f) => f && destinationDashboard === f.dashboardName)
|
|
230
|
+
: undefined, includeFilters ? tempReport.dateField ?? report?.dateField : undefined, true);
|
|
190
231
|
if (!!tableInfo.error) {
|
|
191
232
|
throw new Error(tableInfo.error);
|
|
192
233
|
}
|
|
193
234
|
else if (tableInfo.rows.length === 0) {
|
|
194
235
|
throw new Error('No data found');
|
|
195
236
|
}
|
|
196
|
-
|
|
197
|
-
setRowCount(tableInfo.rowCount);
|
|
198
|
-
}
|
|
237
|
+
fetchRowCount(processing, includeFilters);
|
|
199
238
|
setSqlQueryLoading(false);
|
|
200
239
|
setCurrentProcessing(processing);
|
|
201
240
|
let tempRows = [...rows, ...tableInfo.rows];
|
|
@@ -217,7 +256,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
217
256
|
const formData = report
|
|
218
257
|
? report
|
|
219
258
|
: createInitialFormData(tableInfo.columns);
|
|
220
|
-
|
|
259
|
+
const newReport = {
|
|
221
260
|
...tempReport,
|
|
222
261
|
...formData,
|
|
223
262
|
itemQuery: tableInfo.itemQuery,
|
|
@@ -225,7 +264,9 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
225
264
|
filtersApplied: tempReport.filtersApplied ?? [],
|
|
226
265
|
rows: tempRows,
|
|
227
266
|
columns: tableInfo.columns,
|
|
228
|
-
}
|
|
267
|
+
};
|
|
268
|
+
const cleaned = await cleanDashboardItem(newReport, newReport.filtersApplied, client);
|
|
269
|
+
setTempReport(cleaned);
|
|
229
270
|
setLastSuccessfulQuery(query);
|
|
230
271
|
}
|
|
231
272
|
catch (e) {
|
|
@@ -309,7 +350,9 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
309
350
|
}, children: [_jsx("div", { style: {
|
|
310
351
|
display: 'flex',
|
|
311
352
|
flexDirection: 'column',
|
|
312
|
-
overflow: '
|
|
353
|
+
overflow: addToDashboardButtonLabel === 'Add to dashboard'
|
|
354
|
+
? 'visible'
|
|
355
|
+
: 'auto',
|
|
313
356
|
height: '100%',
|
|
314
357
|
}, children: _jsxs(OverflowContainer, { children: [_jsxs("form", { ref: formRef, onSubmit: (e) => {
|
|
315
358
|
e.preventDefault();
|
|
@@ -321,9 +364,9 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
321
364
|
paddingTop: 16,
|
|
322
365
|
paddingBottom: 16,
|
|
323
366
|
}, children: [_jsx(TextInputComponent, { id: "ai-search", value: sqlPrompt, width: searchBarWidth, onChange: (e) => setSqlPrompt(e.target.value), placeholder: "Ask a question..." }), _jsx(ButtonComponent, { onClick: handleRunSqlPrompt, label: "Ask AI" })] }), _jsx("div", { style: {
|
|
324
|
-
minHeight: 210,
|
|
325
|
-
maxHeight: '
|
|
326
|
-
height:
|
|
367
|
+
minHeight: Math.max(210, window.innerHeight * 0.2),
|
|
368
|
+
maxHeight: '30%',
|
|
369
|
+
height: window.innerHeight * 0.2,
|
|
327
370
|
}, children: _jsx(SQLEditorComponent, { query: query || '', schema: schemaData.schema, databaseType: client?.databaseType ?? 'postgresql', clientName: client?.publicKey || '', setQuery: setQuery, handleRunQuery: () => {
|
|
328
371
|
handleRunQuery(currentProcessing, true);
|
|
329
372
|
}, handleFixWithAI: handleFixWithAI, isNewQueryEnabled: isNewQueryEnabled, runQueryOnMount: runQueryOnMount, handleClearQuery: handleClearQuery, theme: theme, defineEditorTheme: defineEditorTheme, setEditorTheme: setEditorTheme, setEditorMounted: () => { }, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, loading: sqlResponseLoading && schemaData.isSchemaLoading, LoadingComponent: LoadingComponent }) }), _jsx("div", { style: {
|
|
@@ -340,16 +383,19 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
340
383
|
height: 70,
|
|
341
384
|
}, children: _jsxs("div", { style: { display: 'flex', gap: 12 }, children: [addToDashboardButtonLabel ===
|
|
342
385
|
'Add to dashboard' ? (_jsx(SecondaryButtonComponent, { onClick: () => {
|
|
343
|
-
handleRunQuery(currentProcessing, true);
|
|
386
|
+
handleRunQuery(currentProcessing, true, false, true);
|
|
344
387
|
}, label: "Run query" })) : (_jsx(ButtonComponent, { onClick: () => {
|
|
345
|
-
handleRunQuery(currentProcessing, true);
|
|
388
|
+
handleRunQuery(currentProcessing, true, false, true);
|
|
346
389
|
}, label: "Run query" })), isNewQueryEnabled && (_jsx(SecondaryButtonComponent, { onClick: handleClearQuery, label: "Clear query" })), addToDashboardButtonLabel ===
|
|
347
|
-
'Add to dashboard' && (_jsx(ButtonComponent, { onClick: () => {
|
|
390
|
+
'Add to dashboard' && (_jsx(ButtonComponent, { onClick: async () => {
|
|
391
|
+
setIsAddLoading(true);
|
|
392
|
+
await handleRunQuery(currentProcessing, true, true);
|
|
393
|
+
setIsAddLoading(false);
|
|
348
394
|
onSaveChanges && onSaveChanges();
|
|
349
395
|
setIsChartBuilderOpen(true);
|
|
350
396
|
}, label: addToDashboardButtonLabel, disabled: !!errorMessage ||
|
|
351
397
|
!(rows.length > 0 &&
|
|
352
|
-
lastSuccessfulQuery === query), tooltipText: !!errorMessage ||
|
|
398
|
+
lastSuccessfulQuery === query), loading: isAddLoading, tooltipText: !!errorMessage ||
|
|
353
399
|
!(rows.length > 0 &&
|
|
354
400
|
lastSuccessfulQuery === query)
|
|
355
401
|
? 'Please run a query'
|
|
@@ -381,10 +427,10 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
381
427
|
width: '100%',
|
|
382
428
|
alignItems: 'center',
|
|
383
429
|
}, children: [errorMessage, errorMessage !== 'No data found' &&
|
|
384
|
-
errorMessage !== 'No query found' && (_jsx(SecondaryButtonComponent, { onClick: handleFixWithAI, label: "Fix with AI" }))] }) })), errorMessage || !displayTable ? null : (_jsx(TableComponent, { isLoading: sqlQueryLoading, rows: formattedRows, columns: columns, rowCount: rowCount, onPageChange: onPageChange, onSortChange: onSortChange, containerStyle: {
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
} }))] })] }) }), isChartBuilderEnabled && (_jsxs("div", { style: {
|
|
430
|
+
errorMessage !== 'No query found' && (_jsx(SecondaryButtonComponent, { onClick: handleFixWithAI, label: "Fix with AI" }))] }) })), errorMessage || !displayTable ? null : (_jsx(TableComponent, { isLoading: sqlQueryLoading && !isAddLoading, rows: formattedRows, columns: columns, rowCount: rowCount, rowsPerPage: rowsPerPage, rowCountIsLoading: rowCountIsLoading, onPageChange: onPageChange, onSortChange: onSortChange, containerStyle: {
|
|
431
|
+
height: calculatedHeight,
|
|
432
|
+
maxHeight: calculatedHeight,
|
|
433
|
+
}, currentPage: currentPage, setCurrentPage: setCurrentPage }))] })] }) }), isChartBuilderEnabled && (_jsxs("div", { style: {
|
|
388
434
|
display: 'flex',
|
|
389
435
|
flexDirection: 'row',
|
|
390
436
|
alignItems: 'center',
|
|
@@ -393,16 +439,22 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
393
439
|
gap: 12,
|
|
394
440
|
marginTop: 15,
|
|
395
441
|
marginBottom: 5,
|
|
396
|
-
}, children: [onDiscardChanges && (_jsx(SecondaryButtonComponent, { onClick: onDiscardChanges, label: "Discard changes" })), addToDashboardButtonLabel !== 'Add to dashboard' && (_jsx(ButtonComponent, { onClick: () => {
|
|
442
|
+
}, children: [onDiscardChanges && (_jsx(SecondaryButtonComponent, { onClick: onDiscardChanges, label: "Discard changes" })), addToDashboardButtonLabel !== 'Add to dashboard' && (_jsx(ButtonComponent, { onClick: async () => {
|
|
443
|
+
setIsAddLoading(true);
|
|
444
|
+
await handleRunQuery(currentProcessing, true, true);
|
|
445
|
+
setIsAddLoading(false);
|
|
397
446
|
onSaveChanges && onSaveChanges();
|
|
398
447
|
setIsChartBuilderOpen(true);
|
|
399
448
|
}, label: addToDashboardButtonLabel, disabled: !!errorMessage ||
|
|
400
|
-
!(rows.length > 0 && lastSuccessfulQuery === query) }))] }))] })] }) }) })), (!isChartBuilderHorizontalView || isChartBuilderOpen) && (_jsx(ChartBuilderWithModal, { rows: rows, columns: columns, query: query, isHorizontalView: isChartBuilderHorizontalView, isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: onAddToDashboardComplete, showTableFormatOptions: showTableFormatOptions, showDateFieldOptions: showDateFieldOptions, showAccessControlOptions: showAccessControlOptions, isAdmin: isAdminEnabled, destinationDashboard: destinationDashboard, title: chartBuilderTitle, buttonLabel: addToDashboardButtonLabel, report:
|
|
449
|
+
!(rows.length > 0 && lastSuccessfulQuery === query) }))] }))] })] }) }) })), (!isChartBuilderHorizontalView || isChartBuilderOpen) && (_jsx(ChartBuilderWithModal, { rows: rows, columns: columns, query: query, isHorizontalView: isChartBuilderHorizontalView, isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: onAddToDashboardComplete, showTableFormatOptions: showTableFormatOptions, showDateFieldOptions: showDateFieldOptions, showAccessControlOptions: showAccessControlOptions, isAdmin: isAdminEnabled, destinationDashboard: destinationDashboard, title: chartBuilderTitle, buttonLabel: addToDashboardButtonLabel, report: {
|
|
450
|
+
...tempReport,
|
|
451
|
+
filtersApplied: dashboardFilters,
|
|
452
|
+
}, pivot: tempReport?.pivot ?? undefined, pivotData: tempReport?.pivotRows && tempReport?.pivotColumns
|
|
401
453
|
? {
|
|
402
454
|
rows: tempReport.pivotRows,
|
|
403
455
|
columns: tempReport.pivotColumns,
|
|
404
456
|
}
|
|
405
|
-
: undefined, organizationName: organizationName, CardComponent: CardComponent, TableComponent: TableComponent, ModalComponent: ModalComponent, ButtonComponent: ButtonComponent, TextInputComponent: TextInputComponent, SelectComponent: SelectComponent, SecondaryButtonComponent: SecondaryButtonComponent, HeaderComponent: HeaderComponent, SubHeaderComponent: SubHeaderComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, PopoverComponent: PopoverComponent, DeleteButtonComponent: DeleteButtonComponent, LoadingComponent: LoadingComponent, ChartBuilderInputRowContainer: ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer: ChartBuilderInputColumnContainer, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, FormContainer: ChartBuilderFormContainer, hideDateRangeFilter: true, onClickChartElement: onClickChartElement, rowCount: rowCount, onPageChange: onPageChange, onSortChange: onSortChange, isLoading: sqlQueryLoading, isEditingMode: true }))] }));
|
|
457
|
+
: undefined, organizationName: organizationName, CardComponent: CardComponent, TableComponent: TableComponent, ModalComponent: ModalComponent, ButtonComponent: ButtonComponent, TextInputComponent: TextInputComponent, SelectComponent: SelectComponent, SecondaryButtonComponent: SecondaryButtonComponent, HeaderComponent: HeaderComponent, SubHeaderComponent: SubHeaderComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, PopoverComponent: PopoverComponent, DeleteButtonComponent: DeleteButtonComponent, LoadingComponent: LoadingComponent, ChartBuilderInputRowContainer: ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer: ChartBuilderInputColumnContainer, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, FormContainer: ChartBuilderFormContainer, hideDateRangeFilter: true, onClickChartElement: onClickChartElement, rowCount: rowCount, onPageChange: onPageChange, onSortChange: onSortChange, onFilterPreviewChange: onFilterPreviewChange, isLoading: sqlQueryLoading, isEditingMode: true }))] }));
|
|
406
458
|
}
|
|
407
459
|
const SQLEditorComponent = ({ query, schema, databaseType, clientName, setQuery, setEditorMounted, handleRunQuery, defineEditorTheme, setEditorTheme, runQueryOnMount = false, theme, loading, LoadingComponent = QuillLoadingComponent, }) => {
|
|
408
460
|
const [editorKey, setEditorKey] = useState(0);
|
package/dist/esm/Table.js
CHANGED
|
@@ -10,7 +10,7 @@ import { QuillSelectComponent } from './components/QuillSelect';
|
|
|
10
10
|
import { QuillMultiSelectComponent } from './components/QuillMultiSelect';
|
|
11
11
|
import { QuillDateRangePicker } from './DateRangePicker/QuillDateRangePicker';
|
|
12
12
|
import { convertInternalReportToReport, fetchReport, formatRowsFromReport, } from './utils/report';
|
|
13
|
-
import {
|
|
13
|
+
import { fetchResultsByReport, } from './utils/tableProcessing';
|
|
14
14
|
import { shouldFetchMore, DEFAULT_PAGINATION, shouldSortInMemory, } from './utils/paginationProcessing';
|
|
15
15
|
/**
|
|
16
16
|
* ### Quill Table
|
|
@@ -98,7 +98,7 @@ const ChartUpdater = ({ reportId, containerStyle, className, dashboardContext, c
|
|
|
98
98
|
setLoading(true);
|
|
99
99
|
try {
|
|
100
100
|
const updatedProcessing = { ...currentProcessing, ...processing };
|
|
101
|
-
const paginatedRows = await
|
|
101
|
+
const paginatedRows = await fetchResultsByReport(reportId, client, updatedProcessing, tableFilters, schemaData.customFields);
|
|
102
102
|
if (paginatedRows.error) {
|
|
103
103
|
throw new Error('Error fetching chart');
|
|
104
104
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdjustmentsIcon.d.ts","sourceRoot":"","sources":["../../../src/assets/AdjustmentsIcon.tsx"],"names":[],"mappings":"AAAA,QAAA,MAAM,eAAe;;6CAepB,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
const AdjustmentsIcon = ({ ...props }) => (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", ...props, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M10.5 6h9.75M10.5 6a1.5 1.5 0 1 1-3 0m3 0a1.5 1.5 0 1 0-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-9.75 0h9.75" }) }));
|
|
3
|
+
export default AdjustmentsIcon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrowDownHeadIcon.d.ts","sourceRoot":"","sources":["../../../src/assets/ArrowDownHeadIcon.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ArrowDownHeadIcon.d.ts","sourceRoot":"","sources":["../../../src/assets/ArrowDownHeadIcon.tsx"],"names":[],"mappings":"AAAA,QAAA,MAAM,iBAAiB;;6CActB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -12,7 +12,7 @@ export default function ChartError({ errorMessage = 'Failed to fetch data.', con
|
|
|
12
12
|
}, children: _jsx("div", { style: {
|
|
13
13
|
height: containerStyle?.height || '100%',
|
|
14
14
|
width: '100%',
|
|
15
|
-
boxSizing: '
|
|
15
|
+
boxSizing: 'border-box',
|
|
16
16
|
borderRadius: 8,
|
|
17
17
|
border: '1px solid rgb(229, 229, 229)',
|
|
18
18
|
overflow: 'hidden',
|
|
@@ -37,7 +37,7 @@ export function QuillChartErrorWithAction({ className, containerStyle, label = '
|
|
|
37
37
|
}, className: className, children: _jsxs("div", { style: {
|
|
38
38
|
height: containerStyle?.height || '100%',
|
|
39
39
|
width: '100%',
|
|
40
|
-
boxSizing: '
|
|
40
|
+
boxSizing: 'border-box',
|
|
41
41
|
borderRadius: 8,
|
|
42
42
|
border: '1px solid rgb(229, 229, 229)',
|
|
43
43
|
overflow: 'hidden',
|
|
@@ -3,7 +3,7 @@ import { type DateRangePickerComponentProps } from '../../DateRangePicker/QuillD
|
|
|
3
3
|
import { QuillTheme } from '../../QuillProvider';
|
|
4
4
|
import { DashboardFilter as Filters } from '../../models/Filter';
|
|
5
5
|
type SelectComponentType = ({ label, value, options, onChange, width, isLoading, }: {
|
|
6
|
-
value: string;
|
|
6
|
+
value: string | null | undefined;
|
|
7
7
|
label?: string | undefined;
|
|
8
8
|
width: number;
|
|
9
9
|
options: {
|
|
@@ -14,7 +14,7 @@ type SelectComponentType = ({ label, value, options, onChange, width, isLoading,
|
|
|
14
14
|
onChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;
|
|
15
15
|
}) => JSX.Element;
|
|
16
16
|
type MultiSelectComponentType = ({ label, value, options, onChange, width, isLoading, }: {
|
|
17
|
-
value: string[];
|
|
17
|
+
value: (string | null)[];
|
|
18
18
|
label?: string | undefined;
|
|
19
19
|
width: number;
|
|
20
20
|
options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DashboardFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEjE,KAAK,mBAAmB,GAAG,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"DashboardFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DashboardFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEjE,KAAK,mBAAmB,GAAG,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACjE,KAAK,GAAG,CAAC,OAAO,CAAC;AAElB,KAAK,wBAAwB,GAAG,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CACR,KAAK,EACD,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GACpC;QAAE,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,CAAA;KAAE,KAChC,IAAI,CAAC;CACX,KAAK,GAAG,CAAC,OAAO,CAAC;AAElB,KAAK,4BAA4B,GAAG,CAAC,EACnC,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,MAAM,EACN,WAAW,GACZ,EAAE,6BAA6B,KAAK,GAAG,CAAC,OAAO,CAAC;AAEjD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACzC,eAAe,EACX,mBAAmB,GACnB,KAAK,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IACnD,oBAAoB,EAChB,wBAAwB,GACxB,KAAK,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;IACxD,wBAAwB,EACpB,4BAA4B,GAC5B,KAAK,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,CAAC;IAC5D,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,cAAc,EACd,eAAsC,EACtC,oBAAgD,EAChD,wBAA+C,EAC/C,KAAK,EACL,SAAS,GACV,EAAE,oBAAoB,kDAgJtB"}
|
|
@@ -5,14 +5,14 @@ import { QuillDateRangePicker, } from '../../DateRangePicker/QuillDateRangePicke
|
|
|
5
5
|
import { QuillMultiSelectComponent } from '../QuillMultiSelect';
|
|
6
6
|
import { QuillSelectComponent } from '../QuillSelect';
|
|
7
7
|
export function DashboardFilter({ filter, onChangeFilter, SelectComponent = QuillSelectComponent, MultiSelectComponent = QuillMultiSelectComponent, DateRangePickerComponent = QuillDateRangePicker, theme, isLoading, }) {
|
|
8
|
-
const [filterValue, setFilterValue] = useState(
|
|
8
|
+
const [filterValue, setFilterValue] = useState(undefined);
|
|
9
9
|
useEffect(() => {
|
|
10
10
|
if (filter.filterType === 'string') {
|
|
11
11
|
if (filter.stringFilterType === 'multiselect') {
|
|
12
|
-
setFilterValue(filter.values
|
|
12
|
+
setFilterValue(filter.values);
|
|
13
13
|
}
|
|
14
14
|
else {
|
|
15
|
-
setFilterValue(filter.selectedValue
|
|
15
|
+
setFilterValue(filter.selectedValue);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
}, [filter]);
|
|
@@ -42,7 +42,7 @@ export function DashboardFilter({ filter, onChangeFilter, SelectComponent = Quil
|
|
|
42
42
|
: []),
|
|
43
43
|
], width: 200, isLoading: isLoading }));
|
|
44
44
|
}
|
|
45
|
-
return (_jsx(SelectComponent, { label: filter.label, value: filterValue
|
|
45
|
+
return (_jsx(SelectComponent, { label: filter.label, value: filterValue, onChange: (e) => {
|
|
46
46
|
onChangeFilter(filter, e.target.value);
|
|
47
47
|
}, options: [
|
|
48
48
|
...(filter.options
|
|
@@ -58,7 +58,7 @@ export function DashboardFilter({ filter, onChangeFilter, SelectComponent = Quil
|
|
|
58
58
|
display: 'flex',
|
|
59
59
|
flexDirection: 'row',
|
|
60
60
|
alignItems: 'flex-end',
|
|
61
|
-
}, children: [_jsx(DateRangePickerComponent, { label: filter.label, dateRange: { startDate: filter.startDate, endDate: filter.endDate }, preset: filter.preset.
|
|
61
|
+
}, children: [_jsx(DateRangePickerComponent, { label: filter.label, dateRange: { startDate: filter.startDate, endDate: filter.endDate }, preset: filter.preset.value, onChangeDateRange: (value) => {
|
|
62
62
|
onChangeFilter(filter, {
|
|
63
63
|
startDate: value.startDate,
|
|
64
64
|
endDate: value.endDate,
|
|
@@ -66,7 +66,7 @@ export function DashboardFilter({ filter, onChangeFilter, SelectComponent = Quil
|
|
|
66
66
|
}, onChangePreset: (e) => {
|
|
67
67
|
onChangeFilter(filter, { preset: e.target.value });
|
|
68
68
|
}, presetOptions: filter.options.map((option) => {
|
|
69
|
-
return { label: option.label, value: option.
|
|
69
|
+
return { label: option.label, value: option.value };
|
|
70
70
|
}), selectWidth: 200 }), filter.comparison && (_jsxs("div", { style: {
|
|
71
71
|
display: 'flex',
|
|
72
72
|
flexDirection: 'row',
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { QuillProviderClient } from '../../models/Client';
|
|
2
2
|
export default function QuillDashboardTemplate({ name, originDashboard, client, appliedFilters, ModalComponent, TemplateChartComponent, TemplateMetricComponent, TemplateTableComponent, ButtonComponent, }: {
|
|
3
3
|
name: string;
|
|
4
4
|
originDashboard: string;
|
|
5
|
-
client:
|
|
5
|
+
client: QuillProviderClient;
|
|
6
6
|
appliedFilters: any;
|
|
7
7
|
ModalComponent: any;
|
|
8
8
|
TemplateChartComponent: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardTemplate.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DashboardTemplate.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"DashboardTemplate.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DashboardTemplate.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAC7C,IAAI,EACJ,eAAe,EACf,MAAM,EACN,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,GAChB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,cAAc,EAAE,GAAG,CAAC;IACpB,cAAc,EAAE,GAAG,CAAC;IACpB,sBAAsB,EAAE,GAAG,CAAC;IAC5B,uBAAuB,EAAE,GAAG,CAAC;IAC7B,sBAAsB,EAAE,GAAG,CAAC;IAC5B,eAAe,EAAE,GAAG,CAAC;CACtB,kDAyGA"}
|
|
@@ -10,6 +10,8 @@ export type DataLoaderChildProps = {
|
|
|
10
10
|
direction: string;
|
|
11
11
|
}) => void;
|
|
12
12
|
data: QuillReport;
|
|
13
|
+
rowCount?: number;
|
|
14
|
+
rowCountIsLoading?: boolean;
|
|
13
15
|
};
|
|
14
16
|
export default function DataLoader({ item, children, filters, }: {
|
|
15
17
|
item: any;
|
|
@@ -31,6 +33,8 @@ export type ChartDataLoaderChildProps = {
|
|
|
31
33
|
error?: string;
|
|
32
34
|
data: QuillReport;
|
|
33
35
|
dateBucket?: string;
|
|
36
|
+
rowCount?: number;
|
|
37
|
+
rowCountIsLoading?: boolean;
|
|
34
38
|
};
|
|
35
39
|
export declare const ChartDataLoader: ({ item, children, dateBucket, additionalProcessing, filters, }: {
|
|
36
40
|
item: any;
|
|
@@ -38,7 +42,7 @@ export declare const ChartDataLoader: ({ item, children, dateBucket, additionalP
|
|
|
38
42
|
mapColorsToFields?: ((_report: QuillReport, _theme: QuillTheme) => ColorMapType) | undefined;
|
|
39
43
|
additionalProcessing?: any;
|
|
40
44
|
filters: any[] | null;
|
|
41
|
-
children: ({ isLoading, error, data, dateBucket, }: ChartDataLoaderChildProps) => JSX.Element;
|
|
45
|
+
children: ({ isLoading, error, data, dateBucket, rowCount, rowCountIsLoading, }: ChartDataLoaderChildProps) => JSX.Element;
|
|
42
46
|
}) => JSX.Element;
|
|
43
47
|
export {};
|
|
44
48
|
//# sourceMappingURL=DataLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAoCjD,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,OAAO,GACR,EAAE;IACD,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,CAAC,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;CACzC,GAAG,GAAG,CAAC,OAAO,CA+Kd;AAED,KAAK,YAAY,GAAG;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAIF,eAAO,MAAM,eAAe;UAOpB,GAAG;;mCAGE,WAAW,UACZ,UAAU,KACf,YAAY;2BACM,GAAG;aACjB,GAAG,EAAE,GAAG,IAAI;qFAQlB,yBAAyB,KAAK,WAAW;MAC1C,WA4EH,CAAC"}
|
|
@@ -2,9 +2,9 @@ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useContext, useEffect, useState } from 'react';
|
|
3
3
|
import { didFiltersChange } from '../../Chart';
|
|
4
4
|
import { ClientContext, DashboardContext, SchemaDataContext, } from '../../Context';
|
|
5
|
-
import { convertInternalReportToReport, EMPTY_INTERNAL_REPORT, fetchReport, } from '../../utils/report';
|
|
5
|
+
import { convertInternalReportToReport, EMPTY_INTERNAL_REPORT, fetchReport, fetchReportRowCount, } from '../../utils/report';
|
|
6
6
|
import { shouldFetchMore, DEFAULT_PAGINATION, shouldSortInMemory, } from '../../utils/paginationProcessing';
|
|
7
|
-
import {
|
|
7
|
+
import { fetchResultsByReport } from '../../utils/tableProcessing';
|
|
8
8
|
const constructReportFromItem = (item) => {
|
|
9
9
|
return {
|
|
10
10
|
...EMPTY_INTERNAL_REPORT,
|
|
@@ -36,6 +36,22 @@ export default function DataLoader({ item, children, filters, }) {
|
|
|
36
36
|
const [additionalProcessing, setAdditionProcessing] = useState({
|
|
37
37
|
page: DEFAULT_PAGINATION,
|
|
38
38
|
});
|
|
39
|
+
const [rowCount, setRowCount] = useState(dashboard[item._id]?.rowCount ?? 0);
|
|
40
|
+
const [rowCountIsLoading, setRowCountIsLoading] = useState(false);
|
|
41
|
+
const fetchRowCount = async (processing) => {
|
|
42
|
+
if (!client || !filters) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
setRowCountIsLoading(true);
|
|
46
|
+
const rowCount = await fetchReportRowCount(item._id, client, true, filters, processing, schemaData.customFields);
|
|
47
|
+
dispatch({
|
|
48
|
+
type: 'UPDATE_DASHBOARD_ITEM',
|
|
49
|
+
id: item._id,
|
|
50
|
+
data: { rowCount },
|
|
51
|
+
});
|
|
52
|
+
setRowCount(rowCount);
|
|
53
|
+
setRowCountIsLoading(false);
|
|
54
|
+
};
|
|
39
55
|
const onPageChange = (page) => {
|
|
40
56
|
if (additionalProcessing &&
|
|
41
57
|
additionalProcessing.page &&
|
|
@@ -69,7 +85,7 @@ export default function DataLoader({ item, children, filters, }) {
|
|
|
69
85
|
setLoading(true);
|
|
70
86
|
try {
|
|
71
87
|
const updatedProcessing = { ...additionalProcessing, ...processing };
|
|
72
|
-
const paginatedRows = await
|
|
88
|
+
const paginatedRows = await fetchResultsByReport(report.id, client, updatedProcessing, filters, schemaData.customFields);
|
|
73
89
|
if (paginatedRows.error) {
|
|
74
90
|
throw new Error('Error fetching chart');
|
|
75
91
|
}
|
|
@@ -106,13 +122,14 @@ export default function DataLoader({ item, children, filters, }) {
|
|
|
106
122
|
return;
|
|
107
123
|
}
|
|
108
124
|
setLoading(true);
|
|
109
|
-
const { report, error } = await fetchReport(item._id, client, true, filters, processing, undefined, schemaData.customFields);
|
|
125
|
+
const { report: fetchedReport, error } = await fetchReport(item._id, client, true, filters, processing, undefined, schemaData.customFields);
|
|
126
|
+
fetchRowCount(processing);
|
|
110
127
|
dispatch({
|
|
111
128
|
type: 'ADD_DASHBOARD_ITEM',
|
|
112
129
|
id: item._id,
|
|
113
|
-
data: { ...
|
|
130
|
+
data: { ...fetchedReport, triggerReload: false },
|
|
114
131
|
});
|
|
115
|
-
const convertedReport = convertInternalReportToReport(
|
|
132
|
+
const convertedReport = convertInternalReportToReport(fetchedReport);
|
|
116
133
|
setReport(convertedReport);
|
|
117
134
|
setAdditionProcessing(processing);
|
|
118
135
|
setError(error);
|
|
@@ -136,6 +153,8 @@ export default function DataLoader({ item, children, filters, }) {
|
|
|
136
153
|
onPageChange,
|
|
137
154
|
onSortChange,
|
|
138
155
|
data: report,
|
|
156
|
+
rowCount,
|
|
157
|
+
rowCountIsLoading,
|
|
139
158
|
}) }));
|
|
140
159
|
}
|
|
141
160
|
// The same data-loader pattern as above, but with special logic for charts
|