@quillsql/react 2.11.16 → 2.11.18
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 +109 -42
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +44 -18
- package/dist/cjs/ChartBuilder.d.ts +204 -30
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +124 -63
- package/dist/cjs/ChartEditor.d.ts +123 -19
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +47 -15
- package/dist/cjs/Dashboard.d.ts +148 -91
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +51 -159
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +5 -2
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -1
- package/dist/cjs/QuillProvider.d.ts +105 -2
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +59 -0
- package/dist/cjs/ReportBuilder.d.ts +194 -42
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +563 -416
- package/dist/cjs/SQLEditor.d.ts +160 -23
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +36 -30
- package/dist/cjs/Table.d.ts +119 -15
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +37 -6
- package/dist/cjs/TableChart.d.ts.map +1 -1
- package/dist/cjs/TableChart.js +0 -194
- package/dist/cjs/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
- package/dist/cjs/components/Chart/BarList.d.ts.map +1 -0
- package/dist/cjs/{BarList.js → components/Chart/BarList.js} +1 -1
- package/dist/cjs/components/Chart/LineChart.d.ts +2 -3
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +3 -3
- package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -0
- package/dist/cjs/{PieChart.js → components/Chart/PieChart.js} +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts +2 -1
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.js +6 -7
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +22 -0
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -0
- package/dist/cjs/components/Dashboard/DashboardFilter.js +75 -0
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts +2 -12
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +39 -17
- 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 +6 -9
- package/dist/cjs/components/QuillCard.d.ts +2 -7
- package/dist/cjs/components/QuillCard.d.ts.map +1 -1
- package/dist/cjs/components/QuillCard.js +15 -9
- package/dist/cjs/components/QuillSelect.d.ts +4 -1
- package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelect.js +13 -8
- package/dist/cjs/components/QuillTable.d.ts +16 -2
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +4 -4
- package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts +9 -3
- package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +10 -6
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +13 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +5 -15
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +21 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +15 -17
- package/dist/cjs/components/ReportBuilder/bigDateMap.js +1 -1
- package/dist/cjs/components/ReportBuilder/convert.d.ts +3 -1
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +60 -21
- package/dist/cjs/components/ReportBuilder/operators.d.ts +15 -10
- package/dist/cjs/components/ReportBuilder/operators.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/operators.js +23 -10
- package/dist/cjs/components/ReportBuilder/pivot.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/pivot.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.d.ts +82 -18
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +55 -103
- package/dist/cjs/components/ReportBuilder/util.d.ts +10 -4
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +124 -71
- package/dist/cjs/components/UiComponents.d.ts +81 -87
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +76 -103
- package/dist/cjs/hooks/index.d.ts +1 -0
- package/dist/cjs/hooks/index.d.ts.map +1 -1
- package/dist/cjs/hooks/index.js +3 -1
- package/dist/cjs/hooks/useTheme.d.ts +7 -0
- package/dist/cjs/hooks/useTheme.d.ts.map +1 -0
- package/dist/cjs/hooks/useTheme.js +12 -0
- package/dist/cjs/index.d.ts +10 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotList.d.ts +5 -2
- package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotList.js +21 -21
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +30 -14
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +77 -52
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +2 -0
- package/dist/cjs/utils/parserBigQuery.d.ts +6 -0
- package/dist/cjs/utils/parserBigQuery.d.ts.map +1 -0
- package/dist/cjs/utils/parserBigQuery.js +60 -0
- package/dist/cjs/utils/parserPostgres.d.ts +3 -0
- package/dist/cjs/utils/parserPostgres.d.ts.map +1 -0
- package/dist/cjs/utils/parserPostgres.js +42 -0
- package/dist/esm/Chart.d.ts +109 -42
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +45 -19
- package/dist/esm/ChartBuilder.d.ts +204 -30
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +124 -63
- package/dist/esm/ChartEditor.d.ts +123 -19
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +51 -19
- package/dist/esm/Dashboard.d.ts +148 -91
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +54 -160
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.js +6 -3
- package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
- package/dist/esm/QuillProvider.d.ts +105 -2
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +59 -0
- package/dist/esm/ReportBuilder.d.ts +194 -42
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +566 -419
- package/dist/esm/SQLEditor.d.ts +160 -23
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +36 -30
- package/dist/esm/Table.d.ts +119 -15
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +38 -7
- package/dist/esm/TableChart.d.ts.map +1 -1
- package/dist/esm/TableChart.js +0 -194
- package/dist/esm/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
- package/dist/esm/components/Chart/BarList.d.ts.map +1 -0
- package/dist/esm/{BarList.js → components/Chart/BarList.js} +1 -1
- package/dist/esm/components/Chart/LineChart.d.ts +2 -3
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +3 -3
- package/dist/esm/components/Chart/PieChart.d.ts.map +1 -0
- package/dist/esm/{PieChart.js → components/Chart/PieChart.js} +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts +2 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.js +5 -6
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts +22 -0
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -0
- package/dist/esm/components/Dashboard/DashboardFilter.js +71 -0
- package/dist/esm/components/Dashboard/DataLoader.d.ts +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.d.ts +2 -12
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +39 -17
- 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 +6 -9
- package/dist/esm/components/QuillCard.d.ts +2 -7
- package/dist/esm/components/QuillCard.d.ts.map +1 -1
- package/dist/esm/components/QuillCard.js +15 -9
- package/dist/esm/components/QuillSelect.d.ts +4 -1
- package/dist/esm/components/QuillSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillSelect.js +14 -9
- package/dist/esm/components/QuillTable.d.ts +16 -2
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +4 -4
- package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts +9 -3
- package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnPopover.js +10 -6
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +13 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.js +5 -15
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +21 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +17 -19
- package/dist/esm/components/ReportBuilder/bigDateMap.js +1 -1
- package/dist/esm/components/ReportBuilder/convert.d.ts +3 -1
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +51 -13
- package/dist/esm/components/ReportBuilder/operators.d.ts +15 -10
- package/dist/esm/components/ReportBuilder/operators.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/operators.js +23 -10
- package/dist/esm/components/ReportBuilder/pivot.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/pivot.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.d.ts +82 -18
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +53 -101
- package/dist/esm/components/ReportBuilder/util.d.ts +10 -4
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +114 -67
- package/dist/esm/components/UiComponents.d.ts +81 -87
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +71 -102
- package/dist/esm/hooks/index.d.ts +1 -0
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/useTheme.d.ts +7 -0
- package/dist/esm/hooks/useTheme.d.ts.map +1 -0
- package/dist/esm/hooks/useTheme.js +10 -0
- package/dist/esm/index.d.ts +10 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotList.d.ts +5 -2
- package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotList.js +21 -21
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +30 -14
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +77 -52
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +2 -0
- package/dist/esm/utils/parserBigQuery.d.ts +6 -0
- package/dist/esm/utils/parserBigQuery.d.ts.map +1 -0
- package/dist/esm/utils/parserBigQuery.js +52 -0
- package/dist/esm/utils/parserPostgres.d.ts +3 -0
- package/dist/esm/utils/parserPostgres.d.ts.map +1 -0
- package/dist/esm/utils/parserPostgres.js +37 -0
- package/package.json +1 -1
- package/dist/cjs/BarList.d.ts.map +0 -1
- package/dist/cjs/PieChart.d.ts.map +0 -1
- package/dist/esm/BarList.d.ts.map +0 -1
- package/dist/esm/PieChart.d.ts.map +0 -1
- /package/dist/cjs/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
- /package/dist/esm/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
package/dist/esm/ChartBuilder.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/* eslint-disable no-unused-vars */
|
|
2
3
|
import { useEffect, useRef, useState, useContext, useMemo, } from 'react';
|
|
3
4
|
import { ClientContext, DashboardContext, DashboardFiltersContext, SchemaContext, ThemeContext, } from './Context';
|
|
4
5
|
import { getData, getDataFromCloud } from './utils/dataFetcher';
|
|
@@ -8,8 +9,9 @@ import { PivotCard } from './internals/ReportBuilder/PivotList';
|
|
|
8
9
|
import Chart from './Chart';
|
|
9
10
|
import { MemoizedModal, QuillTextInput, MemoizedButton, MemoizedSecondaryButton, MemoizedHeader, MemoizedLabel, MemoizedDeleteButton, MemoizedText, MemoizedPopover, } from './components/UiComponents';
|
|
10
11
|
import { mergeComparisonRange } from './utils/merge';
|
|
11
|
-
import { QuillSelectComponent } from './components/QuillSelect';
|
|
12
12
|
import { removeDoubleQuotes, snakeCaseToTitleCase, } from './utils/textProcessing';
|
|
13
|
+
import { QuillSelectComponent } from './components/QuillSelect';
|
|
14
|
+
import { QuillCard } from './components/QuillCard';
|
|
13
15
|
const CHART_TYPES = ['column', 'line', 'table', 'metric', 'bar', 'pie'];
|
|
14
16
|
const POSTGRES_DATE_TYPES = [
|
|
15
17
|
'timestamp',
|
|
@@ -137,18 +139,76 @@ const formatOptions = [
|
|
|
137
139
|
{ value: 'percent', label: 'percent' },
|
|
138
140
|
{ value: 'string', label: 'string' },
|
|
139
141
|
];
|
|
142
|
+
/**
|
|
143
|
+
* ### Quill Chart Builder with Modal
|
|
144
|
+
*
|
|
145
|
+
* Renders a ChartBuilder component with a modal.
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```js
|
|
149
|
+
* // Usage without custom components
|
|
150
|
+
* <ChartBuilder />
|
|
151
|
+
* ```
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```js
|
|
155
|
+
* // You can also pass your own components
|
|
156
|
+
* <ChartBuilder
|
|
157
|
+
* ButtonComponent={MyButton}
|
|
158
|
+
* SecondaryButtonComponent={MySecondaryButton}
|
|
159
|
+
* />
|
|
160
|
+
* ```
|
|
161
|
+
*
|
|
162
|
+
* ### Chart Builder API
|
|
163
|
+
* @see https://docs.quillsql.com/components/chart-builder#with-modal
|
|
164
|
+
*/
|
|
140
165
|
export function ChartBuilderWithModal(props) {
|
|
141
|
-
const
|
|
142
|
-
const
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
166
|
+
const parentRef = useRef(null);
|
|
167
|
+
const [modalWidth, setModalWidth] = useState(200);
|
|
168
|
+
const [modalHeight, setModalHeight] = useState(200);
|
|
169
|
+
const { isOpen, setIsOpen, title, isHorizontalView } = props;
|
|
170
|
+
const Modal = props.ModalComponent ?? MemoizedModal;
|
|
171
|
+
useEffect(() => {
|
|
172
|
+
function handleResize() {
|
|
173
|
+
setModalWidth(window.innerWidth - 80);
|
|
174
|
+
setModalHeight(window.innerHeight - 80);
|
|
175
|
+
}
|
|
176
|
+
handleResize();
|
|
177
|
+
window.addEventListener('resize', handleResize);
|
|
178
|
+
return () => {
|
|
179
|
+
window.removeEventListener('resize', handleResize);
|
|
180
|
+
};
|
|
181
|
+
}, []);
|
|
182
|
+
return (_jsx("div", { ref: parentRef, children: _jsx(Modal, { isOpen: isOpen, setIsOpen: setIsOpen, title: title || 'Add to dashboard',
|
|
183
|
+
// For isHorizontalView, use full viewport size minus 80px for padding,
|
|
184
|
+
// otherwise use the default layout method of the modal (contents).
|
|
185
|
+
width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: _jsx(ChartBuilder, { ...props }) }) }));
|
|
150
186
|
}
|
|
151
|
-
|
|
187
|
+
/**
|
|
188
|
+
* ### Quill Chart Builder
|
|
189
|
+
*
|
|
190
|
+
* A simple form that lets users turn a SQL query into a chart, metric, or table
|
|
191
|
+
* and then add that dashboard item into one of their dashboards.
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* ```js
|
|
195
|
+
* // Usage without custom components
|
|
196
|
+
* <ChartBuilder />
|
|
197
|
+
* ```
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```js
|
|
201
|
+
* // You can also pass your own components
|
|
202
|
+
* <ChartBuilder
|
|
203
|
+
* ButtonComponent={MyButton}
|
|
204
|
+
* SecondaryButtonComponent={MySecondaryButton}
|
|
205
|
+
* />
|
|
206
|
+
* ```
|
|
207
|
+
*
|
|
208
|
+
* ### Chart Builder API
|
|
209
|
+
* @see https://docs.quillsql.com/components/chart-builder
|
|
210
|
+
*/
|
|
211
|
+
export default function ChartBuilder({ TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, HeaderComponent = MemoizedHeader, LabelComponent = MemoizedLabel, DeleteButtonComponent = MemoizedDeleteButton, TextComponent = MemoizedText, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, isOpen, isHorizontalView = true, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, fields: fieldsProp, dashboardItem = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton = false, hideSubmitButton = false, }) {
|
|
152
212
|
const dateRange = dr || [null, null, null];
|
|
153
213
|
const [client] = useContext(ClientContext);
|
|
154
214
|
const [theme] = useContext(ThemeContext);
|
|
@@ -368,6 +428,12 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
368
428
|
}
|
|
369
429
|
const result = await getReferencedTables(client, query, schema, true);
|
|
370
430
|
setDateFieldOptions(result);
|
|
431
|
+
if (result[0] && result[0].columns[0]) {
|
|
432
|
+
setDefaultDateField({
|
|
433
|
+
table: result[0].name,
|
|
434
|
+
field: result[0].columns[0].name,
|
|
435
|
+
});
|
|
436
|
+
}
|
|
371
437
|
const allReferencedFields = await getReferencedTables(client, query, schema, false);
|
|
372
438
|
setAllTables(allReferencedFields.map((table) => table.name));
|
|
373
439
|
setTableName(result[0]?.name);
|
|
@@ -571,7 +637,7 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
571
637
|
dashboardDiscrepancyIssues.push(`The ${formData.dashboardName} dashboard is used for comparing date fields. This feature is not applicable to pie charts. We recommend switching to a column or bar chart instead.`);
|
|
572
638
|
}
|
|
573
639
|
if (dashboardHasDateFilter &&
|
|
574
|
-
(!defaultDateField ||
|
|
640
|
+
((!defaultDateField.table && !defaultDateField.field) ||
|
|
575
641
|
(!formData.dateField.field && !formData.dateField.table))) {
|
|
576
642
|
dashboardDiscrepancyIssues.push(`The dashboard "${formData.dashboardName}" has a global date filter but this chart doesn't reference any tables with a date field. It is not recommended to add this chart because the global filter cannot be applied.`);
|
|
577
643
|
}
|
|
@@ -664,79 +730,79 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
664
730
|
display: 'flex',
|
|
665
731
|
padding: modalPadding,
|
|
666
732
|
gap: '20px',
|
|
667
|
-
flexDirection:
|
|
733
|
+
flexDirection: isHorizontalView ? 'row' : 'column',
|
|
668
734
|
boxSizing: 'border-box',
|
|
669
735
|
}, children: [_jsxs("div", { style: {
|
|
670
736
|
display: 'flex',
|
|
671
737
|
flexDirection: 'column',
|
|
672
738
|
gap: '20px',
|
|
673
|
-
...(
|
|
739
|
+
...(isHorizontalView && {
|
|
674
740
|
flexGrow: 1,
|
|
675
741
|
maxWidth: !isOpen ? '100%' : 'calc(100% - 665px - 20px)', // width of left sidebar plus gap
|
|
676
742
|
}),
|
|
677
|
-
}, children: [(!
|
|
743
|
+
}, children: [(!isHorizontalView || formData.chartType !== 'table') && (_jsx(Chart, { colors: theme.chartColors, config: { ...formData, rows }, containerStyle: {
|
|
678
744
|
width: '100%',
|
|
679
745
|
height: formData.chartType === 'metric'
|
|
680
746
|
? 100
|
|
681
|
-
:
|
|
747
|
+
: isHorizontalView
|
|
682
748
|
? '100%'
|
|
683
749
|
: 400,
|
|
684
|
-
...(
|
|
750
|
+
...(isHorizontalView && { flexGrow: 1 }),
|
|
685
751
|
} })),
|
|
686
752
|
// Make sure to display non-pivoted table when using pivot chart
|
|
687
|
-
|
|
753
|
+
isHorizontalView && formData.chartType !== 'table' ? (_jsx(Chart, { config: {
|
|
688
754
|
...formData,
|
|
689
755
|
pivot: undefined,
|
|
690
756
|
chartType: 'table',
|
|
691
757
|
rows,
|
|
692
|
-
rowsPerPage:
|
|
758
|
+
rowsPerPage: 10,
|
|
693
759
|
}, containerStyle: {
|
|
694
760
|
height: '100%',
|
|
695
761
|
width: '100%',
|
|
696
762
|
flexGrow: 1,
|
|
697
|
-
} })) : (
|
|
763
|
+
} })) : (isHorizontalView && (_jsx(Chart, { config: {
|
|
698
764
|
...formData,
|
|
699
765
|
chartType: 'table',
|
|
700
766
|
rows,
|
|
701
|
-
rowsPerPage:
|
|
767
|
+
rowsPerPage: 10,
|
|
702
768
|
}, containerStyle: {
|
|
703
769
|
height: '100%',
|
|
704
770
|
width: '100%',
|
|
705
771
|
flexGrow: 1,
|
|
706
|
-
} })))] }), (isOpen || !
|
|
772
|
+
} })))] }), (isOpen || !isHorizontalView) && (_jsxs("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
|
|
707
773
|
display: 'flex',
|
|
708
774
|
flexDirection: 'column',
|
|
709
775
|
height: '100%',
|
|
710
|
-
...(
|
|
776
|
+
...(isHorizontalView && {
|
|
711
777
|
minWidth: 665,
|
|
712
778
|
maxWidth: 665,
|
|
713
779
|
width: 665,
|
|
714
780
|
gap: 20,
|
|
715
781
|
}),
|
|
716
|
-
}, children: [_jsxs("div", { style: { overflow: 'auto' }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'row', gap: 12 }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(
|
|
717
|
-
|
|
718
|
-
|
|
782
|
+
}, children: [_jsxs("div", { style: { overflow: 'auto' }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'row', gap: 12 }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Name" }), _jsx(TextInputComponent, { id: "chart-builder-name", width: 200, value: formData.name, onChange: (e) => handleChange(e.target.value, 'name'), placeholder: "Name" })] }), showDashboardDropdown && !destinationDashboard && (_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Dashboard" }), _jsx(SelectComponent, { value: formData.dashboardName || '', onChange: async (e) => {
|
|
783
|
+
handleChange(e.target.value, 'dashboardName');
|
|
784
|
+
await updateDashboardFilters(e.target.value);
|
|
719
785
|
}, options: dashboardOptions.map((elem) => ({
|
|
720
786
|
label: elem.label,
|
|
721
787
|
value: elem.label,
|
|
722
|
-
}))
|
|
788
|
+
})) })] })), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Chart type" }), _jsx(SelectComponent, { value: formData.chartType, onChange: (e) => handleChange(e.target.value, 'chartType'),
|
|
723
789
|
// filter out metric for all pivots
|
|
724
790
|
// filter out bar and pie for row and column pivot
|
|
725
|
-
options: getChartTypeOptions(formData)
|
|
791
|
+
options: getChartTypeOptions(formData) })] })] }), _jsx("br", {}), _jsxs("div", { style: {
|
|
726
792
|
display: 'flex',
|
|
727
793
|
flexDirection: 'column',
|
|
728
794
|
gap: 12,
|
|
729
795
|
marginTop: 6,
|
|
730
|
-
}, children: [_jsx(
|
|
796
|
+
}, children: [_jsx(HeaderComponent, { label: "Pivot" }), _jsxs("div", { style: { fontFamily: theme?.fontFamily }, children: [_jsx("div", { style: {
|
|
731
797
|
maxWidth: 200,
|
|
732
798
|
// marginTop: 6,
|
|
733
799
|
display: 'flex',
|
|
734
800
|
flexDirection: 'column',
|
|
735
|
-
}, children: _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent:
|
|
801
|
+
}, children: _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, CardComponent: CardComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: columns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot }) }), formData.pivot && (_jsx("div", { style: {
|
|
736
802
|
// width: 592,
|
|
737
803
|
paddingRight: 42,
|
|
738
804
|
maxWidth: 750,
|
|
739
|
-
}, children: _jsx("div", { style: { width: !
|
|
805
|
+
}, children: _jsx("div", { style: { width: !isHorizontalView ? divWidth : 'auto' }, children: _jsx(PivotCard, { pivotTable: {
|
|
740
806
|
pivot: formData.pivot,
|
|
741
807
|
rows: selectedPivotTable?.rows,
|
|
742
808
|
columns: selectedPivotTable?.columns,
|
|
@@ -748,29 +814,29 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
748
814
|
setPivotValueField(formData.pivot?.valueField);
|
|
749
815
|
setPivotAggregation(formData.pivot?.aggregationType);
|
|
750
816
|
setPivotPopUpTitle('Edit Pivot');
|
|
751
|
-
}, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent:
|
|
817
|
+
}, selectedPivotIndex: -1, onEditPivot: () => { }, CardComponent: CardComponent, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent }) }) }))] })] }), _jsx("br", {}), (formData.pivot || formData.chartType !== 'table') && (_jsxs("div", { children: [CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsx("div", { style: {
|
|
752
818
|
display: 'flex',
|
|
753
819
|
flexDirection: 'column',
|
|
754
820
|
gap: 6,
|
|
755
821
|
marginTop: 6,
|
|
756
|
-
}, children: _jsx(
|
|
822
|
+
}, children: _jsx(HeaderComponent, { label: "Chart" }) })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsxs("div", { children: [_jsx(LabelComponent, { label: CHART_TO_LABELS[formData.chartType]?.xAxisLabel ?? '' }), _jsxs("div", { style: {
|
|
757
823
|
display: 'flex',
|
|
758
824
|
flexDirection: 'row',
|
|
759
825
|
gap: 12,
|
|
760
|
-
}, children: [_jsx(
|
|
826
|
+
}, children: [_jsx(SelectComponent, { value: formData.xAxisField, onChange: (e) => handleChange(e.target.value, 'xAxisField'), options: formData.pivot
|
|
761
827
|
? getPivotMetricOptions(formData.pivot)
|
|
762
828
|
: fieldOptions.map((elem) => ({
|
|
763
829
|
label: elem.field,
|
|
764
830
|
value: elem.field,
|
|
765
|
-
}))
|
|
831
|
+
})) }), _jsx(TextInputComponent, { id: "chart-builder-x-axis-label", width: 200, value: formData.pivot
|
|
766
832
|
? formData.pivot.rowField
|
|
767
|
-
: formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), _jsx(
|
|
833
|
+
: formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), _jsx(SelectComponent, { value: formData.pivot &&
|
|
768
834
|
isDateField(formData.pivot.rowFieldType)
|
|
769
835
|
? 'pivot_date'
|
|
770
|
-
: formData.xAxisFormat, onChange: (e) => handleChange(e, 'xAxisFormat'), options: formData.pivot &&
|
|
836
|
+
: formData.xAxisFormat, onChange: (e) => handleChange(e.target.value, 'xAxisFormat'), options: formData.pivot &&
|
|
771
837
|
isDateField(formData.pivot.rowFieldType)
|
|
772
838
|
? [{ value: 'pivot_date', label: 'date' }]
|
|
773
|
-
: formatOptions
|
|
839
|
+
: formatOptions })] }, 'xAxisField'), _jsx("br", {})] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && (_jsxs("div", { children: [_jsx(LabelComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), _jsx("div", { style: {
|
|
774
840
|
display: 'flex',
|
|
775
841
|
flexDirection: 'column',
|
|
776
842
|
gap: 10,
|
|
@@ -778,9 +844,9 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
778
844
|
display: 'flex',
|
|
779
845
|
flexDirection: 'row',
|
|
780
846
|
gap: 12,
|
|
781
|
-
}, children: [_jsx(
|
|
847
|
+
}, children: [_jsx(SelectComponent, { value: formData.pivot
|
|
782
848
|
? formData.pivot.valueField
|
|
783
|
-
: yAxisField.field, onChange: (e) => handleChange(e, 'yAxisFields.field', index),
|
|
849
|
+
: yAxisField.field, onChange: (e) => handleChange(e.target.value, 'yAxisFields.field', index), options: formData.pivot
|
|
784
850
|
? [
|
|
785
851
|
{
|
|
786
852
|
label: `Pivot Column (${formData.pivot.valueField})`,
|
|
@@ -794,21 +860,21 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
794
860
|
.map((elem) => ({
|
|
795
861
|
label: elem.field,
|
|
796
862
|
value: elem.field,
|
|
797
|
-
})) }), _jsx(
|
|
863
|
+
})) }), _jsx(TextInputComponent, { id: "chart-builder-y-axis-label", width: 200, value: formData.pivot?.valueField || yAxisField.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'yAxisFields.label', index) }), _jsx(SelectComponent, { value: formData.pivot
|
|
798
864
|
? NUMBER_OPTIONS.find((option) => {
|
|
799
865
|
return (option.value === yAxisField.format);
|
|
800
866
|
})
|
|
801
867
|
? // @ts-ignore
|
|
802
868
|
NUMBER_OPTIONS.find((option) => option.value === yAxisField.format).value
|
|
803
869
|
: 'whole_number'
|
|
804
|
-
: yAxisField.format, onChange: (e) => handleChange(e, 'yAxisFields.format', index), options: formData.pivot
|
|
870
|
+
: yAxisField.format, onChange: (e) => handleChange(e.target.value, 'yAxisFields.format', index), options: formData.pivot
|
|
805
871
|
? NUMBER_OPTIONS
|
|
806
|
-
: formatOptions }), formData.pivot === null && (_jsx("div", { ref: deleteRef,
|
|
872
|
+
: formatOptions }), formData.pivot === null && (_jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))) }), formData.pivot === null && (_jsxs(_Fragment, { children: [_jsx("br", {}), _jsx(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" })] }))] })), _jsx("br", {})] })), (showTableFormatOptions || formData.chartType === 'table') && (_jsxs("div", { children: [_jsxs("div", { style: {
|
|
807
873
|
display: 'flex',
|
|
808
874
|
flexDirection: 'column',
|
|
809
875
|
gap: 6,
|
|
810
876
|
marginTop: 6,
|
|
811
|
-
}, children: [_jsx(
|
|
877
|
+
}, children: [_jsx(HeaderComponent, { label: "Table" }), _jsx(LabelComponent, { label: "Columns" })] }), _jsx("div", { style: {
|
|
812
878
|
display: 'flex',
|
|
813
879
|
flexDirection: 'column',
|
|
814
880
|
gap: 10,
|
|
@@ -821,10 +887,10 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
821
887
|
display: 'flex',
|
|
822
888
|
flexDirection: 'row',
|
|
823
889
|
gap: 12,
|
|
824
|
-
}, children: [_jsx(
|
|
890
|
+
}, children: [_jsx(SelectComponent, { value: column.label, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: selectedPivotTable.columns.map((elem) => ({
|
|
825
891
|
label: elem.label,
|
|
826
892
|
value: elem.label,
|
|
827
|
-
})) }), _jsx(
|
|
893
|
+
})) }), _jsx(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), _jsx(SelectComponent, { value:
|
|
828
894
|
// The first index use rowField for the rest of them use value fields
|
|
829
895
|
formData.pivot &&
|
|
830
896
|
column.field === formData.pivot.rowField
|
|
@@ -833,7 +899,7 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
833
899
|
? 'pivot_date'
|
|
834
900
|
: 'string'
|
|
835
901
|
: formData.pivot?.valueFieldType ||
|
|
836
|
-
'whole_number', onChange: (e) => handleChange(e, 'pivotColumn', index), options: formData.pivot && index === 0
|
|
902
|
+
'whole_number', onChange: (e) => handleChange(e.target.value, 'pivotColumn', index), options: formData.pivot && index === 0
|
|
837
903
|
? isDateField(formData.pivot.rowFieldType)
|
|
838
904
|
? [{ label: 'date', value: 'pivot_date' }]
|
|
839
905
|
: [{ label: 'string', value: 'string' }]
|
|
@@ -842,22 +908,22 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
842
908
|
display: 'flex',
|
|
843
909
|
flexDirection: 'row',
|
|
844
910
|
gap: 12,
|
|
845
|
-
}, children: [_jsx(
|
|
911
|
+
}, children: [_jsx(SelectComponent, { value: column.field, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: fields.map((elem) => ({
|
|
846
912
|
label: elem.field,
|
|
847
913
|
value: elem.field,
|
|
848
|
-
})) }), _jsx(
|
|
914
|
+
})) }), _jsx(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), _jsx(SelectComponent, { value: column.format, onChange: (e) => handleChange(e.target.value, 'columns.format', index), options: formatOptions }), _jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))) }), _jsx("br", {}), _jsx(SecondaryButtonComponent, { onClick: () => handleAddField('columns'), label: "Add column +" }), _jsx("br", {}), _jsx("br", {})] })), showDateFieldOptions && formData.dateField && (_jsxs("div", { style: {
|
|
849
915
|
display: 'flex',
|
|
850
916
|
flexDirection: 'column',
|
|
851
917
|
gap: 6,
|
|
852
918
|
marginTop: 6,
|
|
853
|
-
}, children: [_jsx(
|
|
919
|
+
}, children: [_jsx(HeaderComponent, { label: "Date field" }), _jsxs("div", { style: {
|
|
854
920
|
display: 'flex',
|
|
855
921
|
flexDirection: 'row',
|
|
856
922
|
gap: 12,
|
|
857
|
-
}, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(
|
|
923
|
+
}, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Table" }), _jsx(SelectComponent, { value: formData.dateField?.table, onChange: (e) => handleChange(e.target.value, 'dateField.table'), options: dateFieldOptions.map((elem) => ({
|
|
858
924
|
label: elem.name,
|
|
859
925
|
value: elem.name,
|
|
860
|
-
})) })] }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(
|
|
926
|
+
})) })] }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Field" }), _jsx(SelectComponent, { value: removeDoubleQuotes(formData.dateField?.field), onChange: (e) => handleChange(e.target.value, 'dateField.field'), options: dateFieldOptions
|
|
861
927
|
?.find((elem) => elem.name === formData.dateField?.table)
|
|
862
928
|
?.columns?.map((elem) => ({
|
|
863
929
|
label: elem.name,
|
|
@@ -867,17 +933,17 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
867
933
|
flexDirection: 'column',
|
|
868
934
|
gap: 12,
|
|
869
935
|
marginTop: 6,
|
|
870
|
-
}, children: [_jsx(
|
|
936
|
+
}, children: [_jsx(HeaderComponent, { label: "Organization access" }), _jsx(SegmentedControl, { onChange: (e) => handleChange(e, 'template'), value: formData.template, theme: theme, organizationName: organizationName })] }))] }), _jsxs("div", { style: {
|
|
871
937
|
display: 'flex',
|
|
872
938
|
flexDirection: 'row',
|
|
873
939
|
justifyContent: 'flex-end',
|
|
874
940
|
marginTop: 'auto',
|
|
875
941
|
gap: 10,
|
|
876
|
-
}, children: [!
|
|
942
|
+
}, children: [!hideDeleteButton && !isHorizontalView && dashboardItem && (_jsx(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), !hideSubmitButton && (_jsx(ButtonComponent, { onClick: () => editChart(), label: buttonLabel
|
|
877
943
|
? buttonLabel
|
|
878
944
|
: dashboardItem
|
|
879
945
|
? 'Save changes'
|
|
880
|
-
: 'Add to dashboard' })] })] }))] }), _jsx(DashboardFilterModal, { isOpen: showFilterModal, setIsOpen: setShowFilterModal, override: () => editChart(true), theme: theme, issues: filterIssues })] }));
|
|
946
|
+
: 'Add to dashboard' }))] })] }))] }), _jsx(DashboardFilterModal, { isOpen: showFilterModal, setIsOpen: setShowFilterModal, override: () => editChart(true), theme: theme, issues: filterIssues })] }));
|
|
881
947
|
}
|
|
882
948
|
function SegmentedControl({ onChange, value, theme, organizationName, }) {
|
|
883
949
|
return (_jsxs("div", { style: {
|
|
@@ -942,21 +1008,16 @@ function SegmentedControl({ onChange, value, theme, organizationName, }) {
|
|
|
942
1008
|
` }), organizationName] }))] }));
|
|
943
1009
|
}
|
|
944
1010
|
export function DashboardFilterModal({ isOpen, setIsOpen, override, theme, issues, }) {
|
|
945
|
-
return (_jsx(MemoizedModal, { isOpen: isOpen,
|
|
946
|
-
setIsOpen(false);
|
|
947
|
-
}, setIsOpen: setIsOpen, theme: theme, title: 'Chart not compatible with selected dashboard', children: _jsxs("div", { style: {
|
|
1011
|
+
return (_jsx(MemoizedModal, { isOpen: isOpen, setIsOpen: setIsOpen, title: 'Chart not compatible with selected dashboard', children: _jsxs("div", { style: {
|
|
948
1012
|
display: 'flex',
|
|
949
1013
|
flexDirection: 'column',
|
|
950
1014
|
width: '600px',
|
|
951
1015
|
padding: '20px',
|
|
952
1016
|
boxSizing: 'border-box',
|
|
953
|
-
}, children: [issues.map((issue, index) => (_jsx("span", { style: { paddingTop: '10px' }, children: issue }, issue))), _jsx("br", {}),
|
|
1017
|
+
}, children: [issues.map((issue, index) => (_jsx("span", { style: { paddingTop: '10px' }, children: issue }, issue))), _jsx("br", {}), _jsx("div", { style: {
|
|
954
1018
|
display: 'flex',
|
|
955
1019
|
flexDirection: 'row',
|
|
956
1020
|
gap: '12px',
|
|
957
1021
|
justifyContent: 'flex-end',
|
|
958
|
-
}, children:
|
|
959
|
-
override();
|
|
960
|
-
setIsOpen(false);
|
|
961
|
-
} })] })] }) }));
|
|
1022
|
+
}, children: _jsx(MemoizedButton, { label: "Got It", onClick: () => setIsOpen(false) }) })] }) }));
|
|
962
1023
|
}
|
|
@@ -1,29 +1,133 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Props for the Quill ChartEditor component.
|
|
4
|
+
*/
|
|
5
|
+
export interface ChartEditorProps {
|
|
6
|
+
/** Whether the modal is open. */
|
|
4
7
|
isOpen: boolean;
|
|
8
|
+
/** A callback that sets the isOpen state. */
|
|
9
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
10
|
+
/** The id of the chart that is being edited. */
|
|
5
11
|
chartId: string;
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
/** Whether the editor has administrative priveleges. */
|
|
13
|
+
isAdmin?: boolean;
|
|
14
|
+
/** The title of the chart builder form. */
|
|
8
15
|
chartBuilderTitle?: string;
|
|
16
|
+
/** The button label for the chart builder. */
|
|
9
17
|
chartBuilderButtonLabel?: string;
|
|
18
|
+
/**
|
|
19
|
+
* A callback that is fired when the add to dashboard flow has been completed.
|
|
20
|
+
*/
|
|
10
21
|
onAddToDashboardComplete?: () => void;
|
|
22
|
+
/** A callback that is fired when the item is deleted. */
|
|
11
23
|
onDelete?: () => void;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
/** A select component. */
|
|
25
|
+
SelectComponent?: (props: {
|
|
26
|
+
value: string;
|
|
27
|
+
label?: string;
|
|
28
|
+
options: {
|
|
29
|
+
value: string;
|
|
30
|
+
label: string;
|
|
31
|
+
}[];
|
|
32
|
+
onChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;
|
|
33
|
+
}) => JSX.Element;
|
|
34
|
+
/** An input component to get text from your users. */
|
|
35
|
+
TextInputComponent?: (props: {
|
|
36
|
+
id: string;
|
|
37
|
+
width: number;
|
|
38
|
+
value: string;
|
|
39
|
+
placeholder?: string;
|
|
40
|
+
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
41
|
+
}) => JSX.Element;
|
|
42
|
+
/** A button component. */
|
|
43
|
+
ButtonComponent?: (props: {
|
|
44
|
+
onClick: () => void;
|
|
45
|
+
label: string;
|
|
46
|
+
}) => JSX.Element;
|
|
47
|
+
/** A secondary button. */
|
|
48
|
+
SecondaryButtonComponent?: (props: {
|
|
49
|
+
onClick: () => void;
|
|
50
|
+
label: string;
|
|
51
|
+
}) => JSX.Element;
|
|
52
|
+
/**
|
|
53
|
+
* A small delete button used to click out of things. Usually an "X" icon.
|
|
54
|
+
*/
|
|
55
|
+
DeleteButtonComponent?: (props: {
|
|
56
|
+
onClick: () => void;
|
|
57
|
+
}) => JSX.Element;
|
|
58
|
+
/** A header component. */
|
|
59
|
+
HeaderComponent?: (props: {
|
|
60
|
+
label: string;
|
|
61
|
+
}) => JSX.Element;
|
|
62
|
+
/** A label component. */
|
|
63
|
+
LabelComponent?: (props: {
|
|
64
|
+
label: string;
|
|
65
|
+
}) => JSX.Element;
|
|
66
|
+
/** A text component. */
|
|
67
|
+
TextComponent?: (props: {
|
|
68
|
+
label: string;
|
|
69
|
+
}) => JSX.Element;
|
|
70
|
+
/** A card component used as a dismissable container of pivot information. */
|
|
71
|
+
CardComponent?: (props: {
|
|
72
|
+
children: ReactNode;
|
|
73
|
+
onClick?: () => void;
|
|
74
|
+
onDelete?: () => void;
|
|
75
|
+
}) => JSX.Element;
|
|
76
|
+
/**
|
|
77
|
+
* A modal component.
|
|
78
|
+
*/
|
|
79
|
+
ModalComponent?: (props: {
|
|
80
|
+
isOpen: boolean;
|
|
81
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
82
|
+
title?: string | undefined;
|
|
83
|
+
children: ReactNode;
|
|
84
|
+
width?: number | undefined;
|
|
85
|
+
height?: number | undefined;
|
|
86
|
+
}) => JSX.Element;
|
|
87
|
+
/** A popover component. */
|
|
88
|
+
PopoverComponent?: (props: {
|
|
89
|
+
isOpen: boolean;
|
|
90
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
91
|
+
triggerLabel?: string;
|
|
92
|
+
popoverTitle?: string;
|
|
93
|
+
popoverChildren: ReactNode;
|
|
94
|
+
}) => JSX.Element;
|
|
95
|
+
/** The default dashboard to add the item to. */
|
|
23
96
|
destinationDashboard?: string;
|
|
97
|
+
/** The name of the current organization. */
|
|
24
98
|
organizationName?: string;
|
|
25
|
-
|
|
99
|
+
/** Whether the ChartBuilder is in horizontal view mode. */
|
|
100
|
+
isHorizontalView?: boolean;
|
|
101
|
+
/** Whether to hide the delete button. */
|
|
102
|
+
hideDeleteButton?: boolean;
|
|
103
|
+
/** Whether to hide the submit button. */
|
|
104
|
+
hideSubmitButton?: boolean;
|
|
26
105
|
}
|
|
27
|
-
|
|
28
|
-
|
|
106
|
+
/**
|
|
107
|
+
* ### Quill Chart Editor
|
|
108
|
+
*
|
|
109
|
+
* Presents the Quill Chart Builder form as a modal.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```js
|
|
113
|
+
* // Usage without custom components
|
|
114
|
+
* <ChartEditor isOpen={true} chartId="1234" />
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```js
|
|
119
|
+
* // You can also pass your own components
|
|
120
|
+
* <ChartEditor
|
|
121
|
+
* isOpen={isOpen}
|
|
122
|
+
* setIsOpen={setIsOpen}
|
|
123
|
+
* chartId="1234"
|
|
124
|
+
* Button={MyButton}
|
|
125
|
+
* Modal={MyModal}
|
|
126
|
+
* />
|
|
127
|
+
* ```
|
|
128
|
+
*
|
|
129
|
+
* ### Chart Editor API
|
|
130
|
+
* @see https://docs.quillsql.com/components/chart-editor
|
|
131
|
+
*/
|
|
132
|
+
export default function ChartEditor({ isOpen, chartId, isAdmin, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, organizationName, isHorizontalView, onDelete, setIsOpen, SelectComponent, TextInputComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, LabelComponent, TextComponent, DeleteButtonComponent, ModalComponent, CardComponent, PopoverComponent, hideDeleteButton, hideSubmitButton, }: ChartEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
29
133
|
//# sourceMappingURL=ChartEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartEditor.d.ts","sourceRoot":"","sources":["../../src/ChartEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChartEditor.d.ts","sourceRoot":"","sources":["../../src/ChartEditor.tsx"],"names":[],"mappings":"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"}
|