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