@quillsql/react 2.12.52 → 2.13.0
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.map +1 -1
- package/dist/cjs/Chart.js +5 -3
- package/dist/cjs/ChartBuilder.d.ts +10 -3
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +62 -26
- package/dist/cjs/ChartEditor.d.ts +3 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +74 -16
- package/dist/cjs/Context.d.ts +17 -6
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +138 -73
- package/dist/cjs/Dashboard.d.ts +8 -4
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +146 -367
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +20 -14
- 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 +163 -83
- package/dist/cjs/SQLEditor.d.ts +8 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +81 -28
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +6 -3
- 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 +4 -3
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +12 -12
- 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 +11 -5
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +91 -32
- 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 +10 -3
- 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 +29 -7
- package/dist/cjs/components/QuillSelectWithCombo.d.ts +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +47 -26
- package/dist/cjs/components/QuillTable.d.ts +3 -2
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +32 -19
- 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 -8
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +15 -24
- package/dist/cjs/components/UiComponents.d.ts +17 -9
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +30 -24
- 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 +13 -5
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +158 -70
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +9 -3
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +15 -15
- 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 +16 -2
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Dashboard.d.ts +1 -1
- package/dist/cjs/models/Dashboard.d.ts.map +1 -1
- package/dist/cjs/models/Filter.d.ts +4 -3
- package/dist/cjs/models/Filter.d.ts.map +1 -1
- package/dist/cjs/models/Filter.js +38 -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 +90 -9
- 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 +71 -25
- 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 +18 -11
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +44 -23
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +6 -4
- package/dist/esm/ChartBuilder.d.ts +10 -3
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +59 -26
- package/dist/esm/ChartEditor.d.ts +3 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +76 -18
- package/dist/esm/Context.d.ts +17 -6
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +139 -74
- package/dist/esm/Dashboard.d.ts +8 -4
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +146 -367
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.js +21 -15
- 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 +167 -87
- package/dist/esm/SQLEditor.d.ts +8 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +84 -31
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +7 -4
- 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 +4 -3
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +12 -12
- 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 +11 -5
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +94 -35
- 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 +10 -3
- 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 +30 -8
- package/dist/esm/components/QuillSelectWithCombo.d.ts +1 -1
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +48 -27
- package/dist/esm/components/QuillTable.d.ts +3 -2
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +32 -19
- 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 -8
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +14 -19
- package/dist/esm/components/UiComponents.d.ts +17 -9
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +30 -24
- 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 +13 -5
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +158 -73
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +10 -4
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +17 -17
- 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 +16 -2
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Dashboard.d.ts +1 -1
- package/dist/esm/models/Dashboard.d.ts.map +1 -1
- package/dist/esm/models/Filter.d.ts +4 -3
- package/dist/esm/models/Filter.d.ts.map +1 -1
- package/dist/esm/models/Filter.js +36 -0
- 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 +90 -9
- 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 +70 -25
- 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 +18 -11
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +41 -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,14 @@ 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);
|
|
94
|
+
const specificDashboardFilters = useMemo(() => {
|
|
95
|
+
return Object.values(dashboardFilters[destinationDashboard ?? ''] ?? {}).map((f) => f.filter);
|
|
96
|
+
}, [dashboardFilters, destinationDashboard]);
|
|
92
97
|
const [errorMessage, setErrorMessage] = useState('');
|
|
93
98
|
const [sqlResponseLoading, setSqlResponseLoading] = useState(false);
|
|
94
99
|
const [sqlQueryLoading, setSqlQueryLoading] = useState(false);
|
|
100
|
+
const [isAddLoading, setIsAddLoading] = useState(false);
|
|
95
101
|
const [isChartBuilderOpen, setIsChartBuilderOpen] = useState(false);
|
|
96
102
|
const [displayTable, setDisplayTable] = useState(false);
|
|
97
103
|
const formRef = useRef(null);
|
|
@@ -100,6 +106,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
100
106
|
const [filterBarWidth, setFilterBarWidth] = useState(200);
|
|
101
107
|
const [formattedRows, setFormattedRows] = useState([]);
|
|
102
108
|
const [rowCount, setRowCount] = useState(undefined);
|
|
109
|
+
const [rowCountIsLoading, setRowCountIsLoading] = useState(false);
|
|
103
110
|
const [maxPage, setMaxPage] = useState(1);
|
|
104
111
|
const [tableSearchQuery, setTableSearchQuery] = useState('');
|
|
105
112
|
const [lastSuccessfulQuery, setLastSuccessfulQuery] = useState('');
|
|
@@ -107,9 +114,21 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
107
114
|
...EMPTY_INTERNAL_REPORT,
|
|
108
115
|
...report,
|
|
109
116
|
});
|
|
117
|
+
const DEFAULT_ROWS_PER_PAGE = 10;
|
|
118
|
+
const ROW_HEIGHT = 37;
|
|
119
|
+
const TABLE_TAB_HEIGHT = 75;
|
|
120
|
+
const dynamicHeight = window.innerHeight * 0.8 - 310;
|
|
121
|
+
const rowsPerPage = Math.max(DEFAULT_ROWS_PER_PAGE, Math.floor((dynamicHeight - TABLE_TAB_HEIGHT) / ROW_HEIGHT));
|
|
122
|
+
const calculatedHeight = TABLE_TAB_HEIGHT + rowsPerPage * ROW_HEIGHT; // height needs to be 75 + rows * rowheight <= window.innerHeight * 0.8 - 330
|
|
123
|
+
const pagination = {
|
|
124
|
+
page: 0,
|
|
125
|
+
rowsPerPage,
|
|
126
|
+
rowsPerRequest: Math.max(rowsPerPage * Math.floor(1000 / rowsPerPage), rowsPerPage * 10),
|
|
127
|
+
};
|
|
110
128
|
const [currentProcessing, setCurrentProcessing] = useState({
|
|
111
|
-
page:
|
|
129
|
+
page: pagination,
|
|
112
130
|
});
|
|
131
|
+
const [currentPage, setCurrentPage] = useState(0);
|
|
113
132
|
const displayedTableData = useMemo(() => {
|
|
114
133
|
return (schemaData?.schema?.filter((table) => {
|
|
115
134
|
return (table.name
|
|
@@ -140,6 +159,11 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
140
159
|
setDisplayTable(false);
|
|
141
160
|
}
|
|
142
161
|
}, [client?.publicKey]);
|
|
162
|
+
useEffect(() => {
|
|
163
|
+
if (isChartBuilderOpen === false) {
|
|
164
|
+
onCloseChartBuilder && onCloseChartBuilder();
|
|
165
|
+
}
|
|
166
|
+
}, [isChartBuilderOpen]);
|
|
143
167
|
const handleRunSqlPrompt = async () => {
|
|
144
168
|
if (!client) {
|
|
145
169
|
return;
|
|
@@ -155,8 +179,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
155
179
|
setQuery('');
|
|
156
180
|
};
|
|
157
181
|
const onPageChange = (page) => {
|
|
158
|
-
if (currentProcessing.page &&
|
|
159
|
-
shouldFetchMore(DEFAULT_PAGINATION, page, maxPage)) {
|
|
182
|
+
if (currentProcessing.page && shouldFetchMore(pagination, page, maxPage)) {
|
|
160
183
|
const newPagination = { ...currentProcessing.page, page };
|
|
161
184
|
const updatedProcessing = { ...currentProcessing, page: newPagination };
|
|
162
185
|
setCurrentProcessing(updatedProcessing);
|
|
@@ -167,15 +190,29 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
167
190
|
}
|
|
168
191
|
};
|
|
169
192
|
const onSortChange = (sort) => {
|
|
170
|
-
if (tempReport && shouldSortInMemory(
|
|
193
|
+
if (tempReport && shouldSortInMemory(pagination, rowCount, false)) {
|
|
171
194
|
return;
|
|
172
195
|
}
|
|
173
|
-
const updatedProcessing = { page:
|
|
196
|
+
const updatedProcessing = { page: pagination, sort };
|
|
174
197
|
handleRunQuery(updatedProcessing, true);
|
|
175
198
|
setCurrentProcessing(updatedProcessing);
|
|
176
199
|
setMaxPage(0);
|
|
177
200
|
};
|
|
178
|
-
const
|
|
201
|
+
const onFilterPreviewChange = (preview) => {
|
|
202
|
+
handleRunQuery(currentProcessing, true, preview);
|
|
203
|
+
};
|
|
204
|
+
const fetchRowCount = async (processing, includeFilters) => {
|
|
205
|
+
if (!client || !query) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
setRowCountIsLoading(true);
|
|
209
|
+
const tableInfo = await fetchResultsByQuery(query, client, processing, schemaData.customFields, includeFilters ? specificDashboardFilters : undefined, includeFilters ? tempReport.dateField ?? report?.dateField : undefined, false, true);
|
|
210
|
+
if (tableInfo.rowCount) {
|
|
211
|
+
setRowCount(tableInfo.rowCount);
|
|
212
|
+
}
|
|
213
|
+
setRowCountIsLoading(false);
|
|
214
|
+
};
|
|
215
|
+
const handleRunQuery = async (processing, resetRows = false, includeFilters = false, resetPage = false) => {
|
|
179
216
|
if (!client) {
|
|
180
217
|
return;
|
|
181
218
|
}
|
|
@@ -186,16 +223,19 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
186
223
|
setDisplayTable(true);
|
|
187
224
|
setSqlQueryLoading(true);
|
|
188
225
|
setErrorMessage('');
|
|
189
|
-
|
|
226
|
+
if (resetPage && processing.page) {
|
|
227
|
+
processing.page.page = 0;
|
|
228
|
+
setCurrentPage(0);
|
|
229
|
+
setMaxPage(1);
|
|
230
|
+
}
|
|
231
|
+
const tableInfo = await fetchResultsByQuery(query, client, processing, schemaData.customFields, includeFilters ? specificDashboardFilters : undefined, includeFilters ? tempReport.dateField ?? report?.dateField : undefined, true);
|
|
190
232
|
if (!!tableInfo.error) {
|
|
191
233
|
throw new Error(tableInfo.error);
|
|
192
234
|
}
|
|
193
235
|
else if (tableInfo.rows.length === 0) {
|
|
194
236
|
throw new Error('No data found');
|
|
195
237
|
}
|
|
196
|
-
|
|
197
|
-
setRowCount(tableInfo.rowCount);
|
|
198
|
-
}
|
|
238
|
+
fetchRowCount(processing, includeFilters);
|
|
199
239
|
setSqlQueryLoading(false);
|
|
200
240
|
setCurrentProcessing(processing);
|
|
201
241
|
let tempRows = [...rows, ...tableInfo.rows];
|
|
@@ -217,7 +257,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
217
257
|
const formData = report
|
|
218
258
|
? report
|
|
219
259
|
: createInitialFormData(tableInfo.columns);
|
|
220
|
-
|
|
260
|
+
const newReport = {
|
|
221
261
|
...tempReport,
|
|
222
262
|
...formData,
|
|
223
263
|
itemQuery: tableInfo.itemQuery,
|
|
@@ -225,7 +265,9 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
225
265
|
filtersApplied: tempReport.filtersApplied ?? [],
|
|
226
266
|
rows: tempRows,
|
|
227
267
|
columns: tableInfo.columns,
|
|
228
|
-
}
|
|
268
|
+
};
|
|
269
|
+
const cleaned = await cleanDashboardItem(newReport, newReport.filtersApplied, client);
|
|
270
|
+
setTempReport(cleaned);
|
|
229
271
|
setLastSuccessfulQuery(query);
|
|
230
272
|
}
|
|
231
273
|
catch (e) {
|
|
@@ -309,7 +351,9 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
309
351
|
}, children: [_jsx("div", { style: {
|
|
310
352
|
display: 'flex',
|
|
311
353
|
flexDirection: 'column',
|
|
312
|
-
overflow: '
|
|
354
|
+
overflow: addToDashboardButtonLabel === 'Add to dashboard'
|
|
355
|
+
? 'visible'
|
|
356
|
+
: 'auto',
|
|
313
357
|
height: '100%',
|
|
314
358
|
}, children: _jsxs(OverflowContainer, { children: [_jsxs("form", { ref: formRef, onSubmit: (e) => {
|
|
315
359
|
e.preventDefault();
|
|
@@ -321,9 +365,9 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
321
365
|
paddingTop: 16,
|
|
322
366
|
paddingBottom: 16,
|
|
323
367
|
}, 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:
|
|
368
|
+
minHeight: Math.max(210, window.innerHeight * 0.2),
|
|
369
|
+
maxHeight: '30%',
|
|
370
|
+
height: window.innerHeight * 0.2,
|
|
327
371
|
}, children: _jsx(SQLEditorComponent, { query: query || '', schema: schemaData.schema, databaseType: client?.databaseType ?? 'postgresql', clientName: client?.publicKey || '', setQuery: setQuery, handleRunQuery: () => {
|
|
328
372
|
handleRunQuery(currentProcessing, true);
|
|
329
373
|
}, 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 +384,19 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
340
384
|
height: 70,
|
|
341
385
|
}, children: _jsxs("div", { style: { display: 'flex', gap: 12 }, children: [addToDashboardButtonLabel ===
|
|
342
386
|
'Add to dashboard' ? (_jsx(SecondaryButtonComponent, { onClick: () => {
|
|
343
|
-
handleRunQuery(currentProcessing, true);
|
|
387
|
+
handleRunQuery(currentProcessing, true, false, true);
|
|
344
388
|
}, label: "Run query" })) : (_jsx(ButtonComponent, { onClick: () => {
|
|
345
|
-
handleRunQuery(currentProcessing, true);
|
|
389
|
+
handleRunQuery(currentProcessing, true, false, true);
|
|
346
390
|
}, label: "Run query" })), isNewQueryEnabled && (_jsx(SecondaryButtonComponent, { onClick: handleClearQuery, label: "Clear query" })), addToDashboardButtonLabel ===
|
|
347
|
-
'Add to dashboard' && (_jsx(ButtonComponent, { onClick: () => {
|
|
391
|
+
'Add to dashboard' && (_jsx(ButtonComponent, { onClick: async () => {
|
|
392
|
+
setIsAddLoading(true);
|
|
393
|
+
await handleRunQuery(currentProcessing, true, true);
|
|
394
|
+
setIsAddLoading(false);
|
|
348
395
|
onSaveChanges && onSaveChanges();
|
|
349
396
|
setIsChartBuilderOpen(true);
|
|
350
397
|
}, label: addToDashboardButtonLabel, disabled: !!errorMessage ||
|
|
351
398
|
!(rows.length > 0 &&
|
|
352
|
-
lastSuccessfulQuery === query), tooltipText: !!errorMessage ||
|
|
399
|
+
lastSuccessfulQuery === query), loading: isAddLoading, tooltipText: !!errorMessage ||
|
|
353
400
|
!(rows.length > 0 &&
|
|
354
401
|
lastSuccessfulQuery === query)
|
|
355
402
|
? 'Please run a query'
|
|
@@ -381,10 +428,10 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
381
428
|
width: '100%',
|
|
382
429
|
alignItems: 'center',
|
|
383
430
|
}, 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: {
|
|
431
|
+
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: {
|
|
432
|
+
height: calculatedHeight,
|
|
433
|
+
maxHeight: calculatedHeight,
|
|
434
|
+
}, currentPage: currentPage, setCurrentPage: setCurrentPage }))] })] }) }), isChartBuilderEnabled && (_jsxs("div", { style: {
|
|
388
435
|
display: 'flex',
|
|
389
436
|
flexDirection: 'row',
|
|
390
437
|
alignItems: 'center',
|
|
@@ -393,16 +440,22 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
393
440
|
gap: 12,
|
|
394
441
|
marginTop: 15,
|
|
395
442
|
marginBottom: 5,
|
|
396
|
-
}, children: [onDiscardChanges && (_jsx(SecondaryButtonComponent, { onClick: onDiscardChanges, label: "Discard changes" })), addToDashboardButtonLabel !== 'Add to dashboard' && (_jsx(ButtonComponent, { onClick: () => {
|
|
443
|
+
}, children: [onDiscardChanges && (_jsx(SecondaryButtonComponent, { onClick: onDiscardChanges, label: "Discard changes" })), addToDashboardButtonLabel !== 'Add to dashboard' && (_jsx(ButtonComponent, { onClick: async () => {
|
|
444
|
+
setIsAddLoading(true);
|
|
445
|
+
await handleRunQuery(currentProcessing, true, true);
|
|
446
|
+
setIsAddLoading(false);
|
|
397
447
|
onSaveChanges && onSaveChanges();
|
|
398
448
|
setIsChartBuilderOpen(true);
|
|
399
449
|
}, 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:
|
|
450
|
+
!(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: {
|
|
451
|
+
...tempReport,
|
|
452
|
+
filtersApplied: dashboardFilters,
|
|
453
|
+
}, pivot: tempReport?.pivot ?? undefined, pivotData: tempReport?.pivotRows && tempReport?.pivotColumns
|
|
401
454
|
? {
|
|
402
455
|
rows: tempReport.pivotRows,
|
|
403
456
|
columns: tempReport.pivotColumns,
|
|
404
457
|
}
|
|
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 }))] }));
|
|
458
|
+
: 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
459
|
}
|
|
407
460
|
const SQLEditorComponent = ({ query, schema, databaseType, clientName, setQuery, setEditorMounted, handleRunQuery, defineEditorTheme, setEditorTheme, runQueryOnMount = false, theme, loading, LoadingComponent = QuillLoadingComponent, }) => {
|
|
408
461
|
const [editorKey, setEditorKey] = useState(0);
|
package/dist/esm/Table.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,WAAW,EACX,SAAS,EAIV,MAAM,OAAO,CAAC;AAcf,OAAO,EACL,yBAAyB,EAEzB,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAuBnC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAwDD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IAEJ;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC,oDAAoD;IACpD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAE/D,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,GAAG,CAAC,OAAO,CAAC;IAEzE,+DAA+D;IAC/D,wBAAwB,CAAC,EAAE,CAAC,EAC1B,SAAS,EACT,KAAK,EACL,aAAa,EACb,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,cAAc,GACf,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE;YAAE,SAAS,EAAE,IAAI,CAAC;YAAC,OAAO,EAAE,IAAI,CAAA;SAAE,CAAC;QAC9C,aAAa,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAClD,iBAAiB,EAAE,CAAC,EAClB,SAAS,EACT,OAAO,GACR,EAAE;YACD,SAAS,EAAE,IAAI,CAAC;YAChB,OAAO,EAAE,IAAI,CAAC;SACf,KAAK,IAAI,CAAC;QACX,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;KACjE,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,wEAAwE;IACxE,wBAAwB,CAAC,EAAE,CAAC,EAC1B,QAAQ,GACT,EAAE;QACD,QAAQ,EAAE,SAAS,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,QAAA,MAAM,KAAK,UAAW,UAAU,
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,WAAW,EACX,SAAS,EAIV,MAAM,OAAO,CAAC;AAcf,OAAO,EACL,yBAAyB,EAEzB,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAuBnC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAwDD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IAEJ;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC,oDAAoD;IACpD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAE/D,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,GAAG,CAAC,OAAO,CAAC;IAEzE,+DAA+D;IAC/D,wBAAwB,CAAC,EAAE,CAAC,EAC1B,SAAS,EACT,KAAK,EACL,aAAa,EACb,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,cAAc,GACf,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE;YAAE,SAAS,EAAE,IAAI,CAAC;YAAC,OAAO,EAAE,IAAI,CAAA;SAAE,CAAC;QAC9C,aAAa,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAClD,iBAAiB,EAAE,CAAC,EAClB,SAAS,EACT,OAAO,GACR,EAAE;YACD,SAAS,EAAE,IAAI,CAAC;YAChB,OAAO,EAAE,IAAI,CAAC;SACf,KAAK,IAAI,CAAC;QACX,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;KACjE,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,wEAAwE;IACxE,wBAAwB,CAAC,EAAE,CAAC,EAC1B,QAAQ,GACT,EAAE;QACD,QAAQ,EAAE,SAAS,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,QAAA,MAAM,KAAK,UAAW,UAAU,mDAyC/B,CAAC;AAsSF,eAAe,KAAK,CAAC"}
|
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
|
|
@@ -47,8 +47,9 @@ const Table = (props) => {
|
|
|
47
47
|
const data = props;
|
|
48
48
|
const [dashboard] = useContext(DashboardContext);
|
|
49
49
|
const [client] = useContext(ClientContext);
|
|
50
|
+
const [page, setPage] = useState(0);
|
|
50
51
|
if ('rows' in data && 'columns' in data) {
|
|
51
|
-
return (_jsx(QuillTable, { hideCSVDownloadButton: data.hideCSVDownloadButton, columns: data.columns, rows: data.rows, className: data.className, containerStyle: data.containerStyle, LoadingComponent: data.LoadingComponent, isLoading: data.isLoading, downloadCSV: data.downloadCSV }));
|
|
52
|
+
return (_jsx(QuillTable, { hideCSVDownloadButton: data.hideCSVDownloadButton, columns: data.columns, rows: data.rows, className: data.className, containerStyle: data.containerStyle, LoadingComponent: data.LoadingComponent, isLoading: data.isLoading, downloadCSV: data.downloadCSV, currentPage: page, onPageChange: setPage }));
|
|
52
53
|
}
|
|
53
54
|
if (!client) {
|
|
54
55
|
return null;
|
|
@@ -66,12 +67,14 @@ const ChartUpdater = ({ reportId, containerStyle, className, dashboardContext, c
|
|
|
66
67
|
const [filterUpdateIndex, setFilterUpdateIndex] = useState(0);
|
|
67
68
|
const [previousPage, setPreviousPage] = useState(1);
|
|
68
69
|
const [rowCount, setRowCount] = useState(0);
|
|
70
|
+
const [currentPage, setCurrentPage] = useState(0);
|
|
69
71
|
const { reportFiltersDispatch, reportFilters } = useContext(ReportFiltersContext);
|
|
70
72
|
const [currentProcessing, setCurrentProcessing] = useState({
|
|
71
73
|
page: pagination,
|
|
72
74
|
});
|
|
73
75
|
const [theme] = useContext(ThemeContext);
|
|
74
76
|
const onPageChange = (page) => {
|
|
77
|
+
setCurrentPage(page);
|
|
75
78
|
if (currentProcessing.page &&
|
|
76
79
|
page > previousPage &&
|
|
77
80
|
shouldFetchMore(DEFAULT_PAGINATION, page, previousPage)) {
|
|
@@ -98,7 +101,7 @@ const ChartUpdater = ({ reportId, containerStyle, className, dashboardContext, c
|
|
|
98
101
|
setLoading(true);
|
|
99
102
|
try {
|
|
100
103
|
const updatedProcessing = { ...currentProcessing, ...processing };
|
|
101
|
-
const paginatedRows = await
|
|
104
|
+
const paginatedRows = await fetchResultsByReport(reportId, client, updatedProcessing, tableFilters, schemaData.customFields);
|
|
102
105
|
if (paginatedRows.error) {
|
|
103
106
|
throw new Error('Error fetching chart');
|
|
104
107
|
}
|
|
@@ -212,6 +215,6 @@ const ChartUpdater = ({ reportId, containerStyle, className, dashboardContext, c
|
|
|
212
215
|
updateIndex: filterUpdateIndex + 1,
|
|
213
216
|
},
|
|
214
217
|
});
|
|
215
|
-
}, theme: theme, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, DateRangePickerComponent: DateRangePickerComponent }, index))) })), _jsx(QuillTable, { hideCSVDownloadButton: hideCSVDownloadButton, columns: columns ?? [], rows: rows ?? [], containerStyle: containerStyle, className: className, LoadingComponent: LoadingComponent, sort: currentProcessing.sort, isLoading: loading || initialLoad, downloadCSV: downloadCSV, onPageChange: onPageChange, onSortChange: onSortChange, rowCount: rowCount })] }));
|
|
218
|
+
}, theme: theme, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, DateRangePickerComponent: DateRangePickerComponent }, index))) })), _jsx(QuillTable, { hideCSVDownloadButton: hideCSVDownloadButton, columns: columns ?? [], rows: rows ?? [], containerStyle: containerStyle, className: className, LoadingComponent: LoadingComponent, sort: currentProcessing.sort, isLoading: loading || initialLoad, downloadCSV: downloadCSV, onPageChange: onPageChange, onSortChange: onSortChange, rowCount: rowCount, currentPage: currentPage })] }));
|
|
216
219
|
};
|
|
217
220
|
export default Table;
|
|
@@ -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',
|
|
@@ -2,8 +2,8 @@ import React from 'react';
|
|
|
2
2
|
import { type DateRangePickerComponentProps } from '../../DateRangePicker/QuillDateRangePicker';
|
|
3
3
|
import { QuillTheme } from '../../QuillProvider';
|
|
4
4
|
import { DashboardFilter as Filters } from '../../models/Filter';
|
|
5
|
-
type SelectComponentType = ({ label, value, options, onChange, width, isLoading, }: {
|
|
6
|
-
value: string;
|
|
5
|
+
type SelectComponentType = ({ label, value, options, onChange, width, isLoading, hideEmptyOption, }: {
|
|
6
|
+
value: string | null | undefined;
|
|
7
7
|
label?: string | undefined;
|
|
8
8
|
width: number;
|
|
9
9
|
options: {
|
|
@@ -11,10 +11,11 @@ type SelectComponentType = ({ label, value, options, onChange, width, isLoading,
|
|
|
11
11
|
label: string;
|
|
12
12
|
}[];
|
|
13
13
|
isLoading?: boolean;
|
|
14
|
+
hideEmptyOption?: boolean;
|
|
14
15
|
onChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;
|
|
15
16
|
}) => JSX.Element;
|
|
16
17
|
type MultiSelectComponentType = ({ label, value, options, onChange, width, isLoading, }: {
|
|
17
|
-
value: string[];
|
|
18
|
+
value: (string | null)[];
|
|
18
19
|
label?: string | undefined;
|
|
19
20
|
width: number;
|
|
20
21
|
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,
|
|
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,EACT,eAAe,GAChB,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,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,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,kDAmJtB"}
|
|
@@ -5,18 +5,18 @@ 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]);
|
|
19
|
-
if (
|
|
19
|
+
if (!filter.options && !isLoading) {
|
|
20
20
|
return null;
|
|
21
21
|
}
|
|
22
22
|
if (filter.filterType === 'string') {
|
|
@@ -24,7 +24,7 @@ export function DashboardFilter({ filter, onChangeFilter, SelectComponent = Quil
|
|
|
24
24
|
return (_jsx(MultiSelectComponent, { label: filter.label, value: filterValue ? filterValue : [], onChange: (e) => {
|
|
25
25
|
if (e.target.value === '') {
|
|
26
26
|
setFilterValue(null);
|
|
27
|
-
onChangeFilter(filter,
|
|
27
|
+
onChangeFilter(filter, undefined);
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
30
|
let jsonValue = e.target.value;
|
|
@@ -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,16 +58,16 @@ 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,
|
|
65
65
|
});
|
|
66
66
|
}, onChangePreset: (e) => {
|
|
67
67
|
onChangeFilter(filter, { preset: e.target.value });
|
|
68
|
-
}, presetOptions: filter.options
|
|
69
|
-
return { label: option.label, value: option.
|
|
70
|
-
}), selectWidth: 200 }), filter.comparison && (_jsxs("div", { style: {
|
|
68
|
+
}, presetOptions: filter.options?.map((option) => {
|
|
69
|
+
return { label: option.label, value: option.value };
|
|
70
|
+
}) ?? [], selectWidth: 200 }), filter.comparison && (_jsxs("div", { style: {
|
|
71
71
|
display: 'flex',
|
|
72
72
|
flexDirection: 'row',
|
|
73
73
|
alignItems: 'center',
|
|
@@ -83,12 +83,12 @@ export function DashboardFilter({ filter, onChangeFilter, SelectComponent = Quil
|
|
|
83
83
|
whiteSpace: 'nowrap',
|
|
84
84
|
minWidth: 80,
|
|
85
85
|
justifyContent: 'center',
|
|
86
|
-
}, children: "compared to" }), _jsx(SelectComponent, { value: filter.comparisonRange
|
|
86
|
+
}, children: "compared to" }), _jsx(SelectComponent, { value: filter.comparisonRange?.value, onChange: (e) => {
|
|
87
87
|
onChangeFilter(filter, null, COMPARISON_OPTIONS.find((option) => option.value === e.target.value));
|
|
88
88
|
}, options: COMPARISON_OPTIONS.map((compareOption) => ({
|
|
89
89
|
value: compareOption.value,
|
|
90
90
|
label: compareOption.text,
|
|
91
|
-
})), width: 200 })] }))] }));
|
|
91
|
+
})), width: 200, hideEmptyOption: true })] }))] }));
|
|
92
92
|
}
|
|
93
93
|
return null;
|
|
94
94
|
}
|
|
@@ -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"}
|