@quillsql/react 2.13.2 → 2.13.4
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 +3 -13
- package/dist/cjs/ChartBuilder.d.ts +1 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +2 -2
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +1 -3
- package/dist/cjs/Context.d.ts +51 -15
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +44 -24
- package/dist/cjs/Dashboard.d.ts +1 -1
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +39 -39
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +1 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +179 -114
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +18 -11
- package/dist/cjs/Table.js +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +109 -43
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +14 -3
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +6 -2
- package/dist/cjs/components/QuillSelect.js +3 -3
- 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 +14 -4
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +33 -0
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/FilterStack.js +121 -0
- package/dist/cjs/components/UiComponents.d.ts +1 -0
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +41 -46
- package/dist/cjs/hooks/useExport.d.ts +14 -1
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +120 -38
- package/dist/cjs/models/Client.d.ts +2 -0
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Filter.d.ts +1 -1
- package/dist/cjs/models/Filter.d.ts.map +1 -1
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +1 -0
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +3 -1
- package/dist/cjs/utils/dataFetcher.d.ts +2 -2
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +30 -22
- package/dist/cjs/utils/filterProcessing.d.ts +1 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +3 -3
- package/dist/cjs/utils/report.d.ts +2 -2
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +7 -4
- package/dist/cjs/utils/tableProcessing.d.ts +1 -1
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +6 -2
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +3 -13
- package/dist/esm/ChartBuilder.d.ts +1 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +2 -2
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +1 -3
- package/dist/esm/Context.d.ts +51 -15
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +44 -24
- package/dist/esm/Dashboard.d.ts +1 -1
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +41 -41
- package/dist/esm/DateRangePicker/QuillDateRangePicker.js +1 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +182 -117
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +18 -11
- package/dist/esm/Table.js +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +109 -43
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +14 -3
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +6 -2
- package/dist/esm/components/QuillSelect.js +3 -3
- 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 +14 -4
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts +33 -0
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/FilterStack.js +118 -0
- package/dist/esm/components/UiComponents.d.ts +1 -0
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +41 -46
- package/dist/esm/hooks/useExport.d.ts +14 -1
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +122 -40
- package/dist/esm/models/Client.d.ts +2 -0
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Filter.d.ts +1 -1
- package/dist/esm/models/Filter.d.ts.map +1 -1
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +1 -0
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +3 -1
- package/dist/esm/utils/dataFetcher.d.ts +2 -2
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +30 -22
- package/dist/esm/utils/filterProcessing.d.ts +1 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +3 -3
- package/dist/esm/utils/report.d.ts +2 -2
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +7 -4
- package/dist/esm/utils/tableProcessing.d.ts +1 -1
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +6 -2
- package/package.json +3 -3
package/dist/esm/SQLEditor.js
CHANGED
|
@@ -100,11 +100,12 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
100
100
|
const [isAddLoading, setIsAddLoading] = useState(false);
|
|
101
101
|
const [isChartBuilderOpen, setIsChartBuilderOpen] = useState(false);
|
|
102
102
|
const [displayTable, setDisplayTable] = useState(false);
|
|
103
|
+
const [formattedRows, setFormattedRows] = useState([]);
|
|
103
104
|
const formRef = useRef(null);
|
|
104
105
|
const sidebarRef = useRef(null);
|
|
105
106
|
const [searchBarWidth, setSearchBarWidth] = useState(200);
|
|
107
|
+
const [showSearchBar, setShowSearchBar] = useState(false);
|
|
106
108
|
const [filterBarWidth, setFilterBarWidth] = useState(200);
|
|
107
|
-
const [formattedRows, setFormattedRows] = useState([]);
|
|
108
109
|
const [rowCount, setRowCount] = useState(undefined);
|
|
109
110
|
const [rowCountIsLoading, setRowCountIsLoading] = useState(false);
|
|
110
111
|
const [maxPage, setMaxPage] = useState(1);
|
|
@@ -114,12 +115,12 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
114
115
|
...EMPTY_INTERNAL_REPORT,
|
|
115
116
|
...report,
|
|
116
117
|
});
|
|
117
|
-
const
|
|
118
|
+
const tableRef = useRef(null);
|
|
119
|
+
const DEFAULT_ROWS_PER_PAGE = 5;
|
|
118
120
|
const ROW_HEIGHT = 37;
|
|
119
121
|
const TABLE_TAB_HEIGHT = 75;
|
|
120
|
-
const dynamicHeight =
|
|
121
|
-
const rowsPerPage = Math.max(DEFAULT_ROWS_PER_PAGE, Math.
|
|
122
|
-
const calculatedHeight = TABLE_TAB_HEIGHT + rowsPerPage * ROW_HEIGHT; // height needs to be 75 + rows * rowheight <= window.innerHeight * 0.8 - 330
|
|
122
|
+
const dynamicHeight = tableRef.current ? tableRef.current.clientHeight : 0;
|
|
123
|
+
const rowsPerPage = Math.max(DEFAULT_ROWS_PER_PAGE, Math.ceil((dynamicHeight - TABLE_TAB_HEIGHT) / ROW_HEIGHT));
|
|
123
124
|
const pagination = {
|
|
124
125
|
page: 0,
|
|
125
126
|
rowsPerPage,
|
|
@@ -145,6 +146,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
145
146
|
function handleResize() {
|
|
146
147
|
updateFirstChildWidth(formRef, setSearchBarWidth, { gap: 12 });
|
|
147
148
|
updateFirstChildWidth(sidebarRef, setFilterBarWidth, { gap: 12 });
|
|
149
|
+
setShowSearchBar(true);
|
|
148
150
|
}
|
|
149
151
|
handleResize();
|
|
150
152
|
window.addEventListener('resize', handleResize);
|
|
@@ -313,6 +315,9 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
313
315
|
onChangeQuery(query || '');
|
|
314
316
|
}
|
|
315
317
|
}, [query]);
|
|
318
|
+
if (schemaData.isSchemaLoading) {
|
|
319
|
+
return _jsx(LoadingComponent, {});
|
|
320
|
+
}
|
|
316
321
|
return (_jsxs("div", { style: { backgroundColor: theme?.backgroundColor, ...containerStyle }, className: className, children: [(!isChartBuilderHorizontalView ||
|
|
317
322
|
(isChartBuilderHorizontalView && !isChartBuilderOpen)) &&
|
|
318
323
|
!schemaData.isSchemaLoading && (_jsx("div", { style: {
|
|
@@ -360,14 +365,15 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
360
365
|
handleRunSqlPrompt();
|
|
361
366
|
}, style: {
|
|
362
367
|
display: 'flex',
|
|
368
|
+
visibility: showSearchBar ? 'visible' : 'hidden',
|
|
363
369
|
flexDirection: 'row',
|
|
364
370
|
gap: 12,
|
|
365
371
|
paddingTop: 16,
|
|
366
372
|
paddingBottom: 16,
|
|
367
373
|
}, 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: {
|
|
368
|
-
minHeight:
|
|
374
|
+
minHeight: 'max(210px, 20vh)',
|
|
369
375
|
maxHeight: '30%',
|
|
370
|
-
height:
|
|
376
|
+
height: '20vh',
|
|
371
377
|
}, children: _jsx(SQLEditorComponent, { query: query || '', schema: schemaData.schema, databaseType: client?.databaseType ?? 'postgresql', clientName: client?.publicKey || '', setQuery: setQuery, handleRunQuery: () => {
|
|
372
378
|
handleRunQuery(currentProcessing, true);
|
|
373
379
|
}, 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: {
|
|
@@ -428,10 +434,11 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
428
434
|
width: '100%',
|
|
429
435
|
alignItems: 'center',
|
|
430
436
|
}, children: [errorMessage, errorMessage !== 'No data found' &&
|
|
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
|
-
|
|
433
|
-
|
|
434
|
-
|
|
437
|
+
errorMessage !== 'No query found' && (_jsx(SecondaryButtonComponent, { onClick: handleFixWithAI, label: "Fix with AI" }))] }) })), errorMessage || !displayTable ? null : (_jsx("div", { ref: tableRef, children: _jsx(TableComponent, { isLoading: sqlQueryLoading && !isAddLoading, rows: formattedRows, columns: columns, rowCount: rowCount, rowsPerPage: rowsPerPage, rowCountIsLoading: rowCountIsLoading, onPageChange: onPageChange, onSortChange: onSortChange, containerStyle: {
|
|
438
|
+
height: 'calc(100vh - max(210px, 20vh) - 310px)',
|
|
439
|
+
minHeight: `calc(${DEFAULT_ROWS_PER_PAGE} * ${ROW_HEIGHT}px + ${TABLE_TAB_HEIGHT}px)`, // at least 10 rows tall
|
|
440
|
+
maxHeight: 'calc(100vh - max(210px, 20vh) - 310px)',
|
|
441
|
+
}, currentPage: currentPage, setCurrentPage: setCurrentPage }) }))] })] }) }), isChartBuilderEnabled && (_jsxs("div", { style: {
|
|
435
442
|
display: 'flex',
|
|
436
443
|
flexDirection: 'row',
|
|
437
444
|
alignItems: 'center',
|
package/dist/esm/Table.js
CHANGED
|
@@ -197,7 +197,7 @@ const ChartUpdater = ({ reportId, containerStyle, className, dashboardContext, c
|
|
|
197
197
|
if (f.field === filter.field ||
|
|
198
198
|
(f.filterType === 'date_range' &&
|
|
199
199
|
filter.filterType === 'date_range')) {
|
|
200
|
-
return updateFilter(f, value, comparison);
|
|
200
|
+
return updateFilter(f, value, comparison, f.dashboardName);
|
|
201
201
|
}
|
|
202
202
|
return f;
|
|
203
203
|
});
|
|
@@ -83,7 +83,7 @@ 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?.value, onChange: (e) => {
|
|
86
|
+
}, children: "compared to" }), _jsx(SelectComponent, { value: filter.comparisonRange?.value ?? 'NO_COMPARISON', 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,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAajD,OAAO,EACL,oBAAoB,EAErB,MAAM,6BAA6B,CAAC;AAuBrC,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAajD,OAAO,EACL,oBAAoB,EAErB,MAAM,6BAA6B,CAAC;AAuBrC,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAoCF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,oBAAoB,EAAE,2BAA2B,GAClD,EAAE;IACD,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACtB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,EAAE,CAAC,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;CACzC,GAAG,GAAG,CAAC,OAAO,CAiPd;AAED,KAAK,YAAY,GAAG;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAIF,eAAO,MAAM,eAAe;UAOpB,WAAW;;mCAGN,WAAW,UACZ,UAAU,KACf,YAAY;0BACK,oBAAoB;aACjC,GAAG,EAAE,GAAG,IAAI;qFAQlB,yBAAyB,KAAK,WAAW;MAC1C,WAmGH,CAAC"}
|
|
@@ -48,7 +48,9 @@ function filterValuesEquivalent(filters1, filters2) {
|
|
|
48
48
|
mappedFilters1[key].table !== mappedFilters2[key]?.table ||
|
|
49
49
|
mappedFilters1[key].filterType !== mappedFilters2[key]?.filterType ||
|
|
50
50
|
mappedFilters1[key].startDate !== mappedFilters2[key]?.startDate ||
|
|
51
|
-
mappedFilters1[key].endDate !== mappedFilters2[key]?.endDate
|
|
51
|
+
mappedFilters1[key].endDate !== mappedFilters2[key]?.endDate ||
|
|
52
|
+
mappedFilters1[key].comparisonRange !==
|
|
53
|
+
mappedFilters2[key]?.comparisonRange) {
|
|
52
54
|
return false;
|
|
53
55
|
}
|
|
54
56
|
}
|
|
@@ -66,21 +68,44 @@ export default function DataLoader({ item, children, filters, additionalProcessi
|
|
|
66
68
|
const previousFilters = useRef(null);
|
|
67
69
|
const [rowCount, setRowCount] = useState(dashboard[item.id]?.rowCount ?? 0);
|
|
68
70
|
const [rowCountIsLoading, setRowCountIsLoading] = useState(false);
|
|
71
|
+
const rowsRequestId = useRef(0);
|
|
72
|
+
const rowsAbortController = useRef(null);
|
|
73
|
+
const rowCountRequestId = useRef(0);
|
|
74
|
+
const rowCountAbortController = useRef(null);
|
|
75
|
+
const updateTableRowsRequestId = useRef(0);
|
|
76
|
+
const updateTableRowsAbortController = useRef(null);
|
|
69
77
|
const fetchRowCount = async (processing) => {
|
|
70
78
|
if (!client || !filters) {
|
|
71
79
|
return;
|
|
72
80
|
}
|
|
81
|
+
const fetchReportRowCountRequestId = rowCountRequestId.current + 1;
|
|
82
|
+
rowCountRequestId.current = fetchReportRowCountRequestId;
|
|
73
83
|
setRowCountIsLoading(true);
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
rowCountAbortController.current?.abort();
|
|
85
|
+
rowCountAbortController.current = new AbortController();
|
|
86
|
+
try {
|
|
87
|
+
const rowCount = await fetchReportRowCount(item.id, client, true, filters, processing, schemaData.customFields, rowCountAbortController.current.signal);
|
|
88
|
+
rowCountAbortController.current = null;
|
|
89
|
+
if (rowCount) {
|
|
90
|
+
dispatch({
|
|
91
|
+
type: 'UPDATE_DASHBOARD_ITEM',
|
|
92
|
+
id: item.id,
|
|
93
|
+
data: { rowCount },
|
|
94
|
+
});
|
|
95
|
+
setRowCount(rowCount);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
if (e instanceof Error && e.name === 'AbortError') {
|
|
100
|
+
// console.log('Aborted fetching row count');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
if (fetchReportRowCountRequestId === rowCountRequestId.current) {
|
|
106
|
+
setRowCountIsLoading(false);
|
|
107
|
+
}
|
|
82
108
|
}
|
|
83
|
-
setRowCountIsLoading(false);
|
|
84
109
|
};
|
|
85
110
|
const onPageChange = (page) => {
|
|
86
111
|
if (additionalProcessing &&
|
|
@@ -99,10 +124,10 @@ export default function DataLoader({ item, children, filters, additionalProcessi
|
|
|
99
124
|
}
|
|
100
125
|
};
|
|
101
126
|
const onSortChange = (sort) => {
|
|
102
|
-
if (shouldSortInMemory(DEFAULT_PAGINATION, report.rowCount, !!report.pivot)) {
|
|
127
|
+
if (shouldSortInMemory(additionalProcessing.page ?? DEFAULT_PAGINATION, report.rowCount, !!report.pivot)) {
|
|
103
128
|
return;
|
|
104
129
|
}
|
|
105
|
-
const updatedProcessing = { page:
|
|
130
|
+
const updatedProcessing = { page: additionalProcessing.page, sort };
|
|
106
131
|
fetchReportHelper(additionalProcessing);
|
|
107
132
|
updateTableRows(updatedProcessing, true);
|
|
108
133
|
setPreviousPage(0);
|
|
@@ -112,10 +137,15 @@ export default function DataLoader({ item, children, filters, additionalProcessi
|
|
|
112
137
|
return;
|
|
113
138
|
}
|
|
114
139
|
if (!loading) {
|
|
140
|
+
const fetchUpdateTableRowsRequestId = updateTableRowsRequestId.current + 1;
|
|
141
|
+
updateTableRowsRequestId.current = fetchUpdateTableRowsRequestId;
|
|
115
142
|
setLoading(true);
|
|
116
143
|
try {
|
|
144
|
+
updateTableRowsAbortController.current?.abort();
|
|
145
|
+
updateTableRowsAbortController.current = new AbortController();
|
|
117
146
|
const updatedProcessing = { ...additionalProcessing, ...processing };
|
|
118
|
-
const paginatedRows = await fetchResultsByReport(report.id, client, updatedProcessing, filters, schemaData.customFields, true);
|
|
147
|
+
const paginatedRows = await fetchResultsByReport(report.id, client, updatedProcessing, filters, schemaData.customFields, true, undefined, updateTableRowsAbortController.current.signal);
|
|
148
|
+
updateTableRowsAbortController.current = null;
|
|
119
149
|
if (paginatedRows.error) {
|
|
120
150
|
throw new Error('Error fetching chart');
|
|
121
151
|
}
|
|
@@ -125,11 +155,14 @@ export default function DataLoader({ item, children, filters, additionalProcessi
|
|
|
125
155
|
}
|
|
126
156
|
setReport({ ...report, rows: tempRows });
|
|
127
157
|
setAdditionProcessing(updatedProcessing);
|
|
128
|
-
setLoading(false);
|
|
129
158
|
}
|
|
130
159
|
catch (e) {
|
|
131
160
|
console.log(e);
|
|
132
|
-
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
if (fetchUpdateTableRowsRequestId === updateTableRowsRequestId.current) {
|
|
164
|
+
setLoading(false);
|
|
165
|
+
}
|
|
133
166
|
}
|
|
134
167
|
}
|
|
135
168
|
};
|
|
@@ -149,19 +182,38 @@ export default function DataLoader({ item, children, filters, additionalProcessi
|
|
|
149
182
|
setReport(convertedReport);
|
|
150
183
|
return;
|
|
151
184
|
}
|
|
185
|
+
const fetchRowsRequestId = rowsRequestId.current + 1;
|
|
186
|
+
rowsRequestId.current = fetchRowsRequestId;
|
|
152
187
|
setLoading(true);
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
188
|
+
console.log('fetching', item.id, filters);
|
|
189
|
+
rowsAbortController.current?.abort();
|
|
190
|
+
rowsAbortController.current = new AbortController();
|
|
191
|
+
try {
|
|
192
|
+
const { report: fetchedReport, error } = await fetchReport(item.id, client, true, filters, processing, undefined, schemaData.customFields, true, false, rowsAbortController.current.signal);
|
|
193
|
+
rowsAbortController.current = null;
|
|
194
|
+
dispatch({
|
|
195
|
+
type: 'ADD_DASHBOARD_ITEM',
|
|
196
|
+
id: item.id,
|
|
197
|
+
data: { ...fetchedReport, triggerReload: false, rowCount: 0 }, // rowCount 0 indicates it's still loading if row length is nonzero
|
|
198
|
+
});
|
|
199
|
+
fetchRowCount(processing);
|
|
200
|
+
const convertedReport = convertInternalReportToReport(fetchedReport);
|
|
201
|
+
setReport(convertedReport);
|
|
202
|
+
setAdditionProcessing(processing);
|
|
203
|
+
setError(error);
|
|
204
|
+
}
|
|
205
|
+
catch (e) {
|
|
206
|
+
if (e instanceof Error && e.name === 'AbortError') {
|
|
207
|
+
// console.log('Aborted fetching rows');
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
throw e;
|
|
211
|
+
}
|
|
212
|
+
finally {
|
|
213
|
+
if (fetchRowsRequestId === rowsRequestId.current) {
|
|
214
|
+
setLoading(false);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
165
217
|
};
|
|
166
218
|
useEffect(() => {
|
|
167
219
|
if (!filters) {
|
|
@@ -176,8 +228,7 @@ export default function DataLoader({ item, children, filters, additionalProcessi
|
|
|
176
228
|
fetchReportHelper(additionalProcessing);
|
|
177
229
|
}, [filters, item.id]);
|
|
178
230
|
useEffect(() => {
|
|
179
|
-
|
|
180
|
-
if (dashboard[item.id] && dashboard[item.id].triggerReload) {
|
|
231
|
+
if (dashboard[item.id]?.triggerReload) {
|
|
181
232
|
fetchReportHelper(additionalProcessing);
|
|
182
233
|
}
|
|
183
234
|
}, [dashboard[item.id]]);
|
|
@@ -203,6 +254,7 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
|
|
|
203
254
|
const [client] = useContext(ClientContext);
|
|
204
255
|
const [schemaData] = useContext(SchemaDataContext);
|
|
205
256
|
const previousFilters = useRef(null);
|
|
257
|
+
const fetchReportAbortController = useRef(null);
|
|
206
258
|
const fetchReportHelper = async (useReportTask = true) => {
|
|
207
259
|
if (!client || !filters) {
|
|
208
260
|
return;
|
|
@@ -218,20 +270,34 @@ export const ChartDataLoader = ({ item, children, dateBucket, additionalProcessi
|
|
|
218
270
|
return;
|
|
219
271
|
}
|
|
220
272
|
setLoading(true);
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
273
|
+
fetchReportAbortController.current?.abort();
|
|
274
|
+
fetchReportAbortController.current = new AbortController();
|
|
275
|
+
try {
|
|
276
|
+
const { report, error } = await fetchReport(item.id, client, useReportTask, filters, {
|
|
277
|
+
...additionalProcessing,
|
|
278
|
+
...(item.pivot ? {} : { page: DEFAULT_PAGINATION }),
|
|
279
|
+
}, dateBucket, schemaData.customFields, undefined, undefined, fetchReportAbortController.current.signal);
|
|
280
|
+
fetchReportAbortController.current = null;
|
|
281
|
+
dispatch({
|
|
282
|
+
type: 'ADD_DASHBOARD_ITEM',
|
|
283
|
+
id: item.id,
|
|
284
|
+
data: { ...report, triggerReload: false },
|
|
285
|
+
});
|
|
286
|
+
const convertedReport = convertInternalReportToReport(report);
|
|
287
|
+
setReport(convertedReport);
|
|
288
|
+
setLocalDateBucket(dateBucket);
|
|
289
|
+
setError(error);
|
|
290
|
+
}
|
|
291
|
+
catch (e) {
|
|
292
|
+
if (e instanceof Error && e.name === 'AbortError') {
|
|
293
|
+
// console.log('Aborted fetching rows for chart');
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
throw e;
|
|
297
|
+
}
|
|
298
|
+
finally {
|
|
299
|
+
setLoading(false);
|
|
300
|
+
}
|
|
235
301
|
};
|
|
236
302
|
useEffect(() => {
|
|
237
303
|
if (!filters) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/MetricComponent.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,GACV,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"MetricComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/MetricComponent.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,GACV,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA2NhC"}
|
|
@@ -10,8 +10,8 @@ export default function QuillMetricComponent({ report, onClick, error, isLoading
|
|
|
10
10
|
const primaryMetricLabel = report?.filtersApplied?.date_range?.preset?.label;
|
|
11
11
|
const comparisonKey = report?.filtersApplied?.date_range?.comparisonRange?.value;
|
|
12
12
|
const comparisonLabel = COMPARISON_OPTIONS.find((opt) => opt.value === comparisonKey)?.text;
|
|
13
|
-
return (_jsx("div", { onClick: () => onClick &&
|
|
14
|
-
cursor:
|
|
13
|
+
return (_jsx("div", { onClick: () => onClick && onClick(report), style: {
|
|
14
|
+
cursor: !onClick ? 'default' : 'pointer',
|
|
15
15
|
boxSizing: 'content-box',
|
|
16
16
|
borderRadius: 8,
|
|
17
17
|
paddingBottom: isLoading ? 0 : 30,
|
|
@@ -51,7 +51,18 @@ export default function QuillMetricComponent({ report, onClick, error, isLoading
|
|
|
51
51
|
}, children: report?.name })) }), isLoading ? (_jsx(ChartSkeleton, { containerStyle: {
|
|
52
52
|
maxHeight: '78px',
|
|
53
53
|
height: '100%',
|
|
54
|
-
} })) : error ? (_jsx(
|
|
54
|
+
} })) : error ? (_jsx(ChartError, { errorMessage: error, containerStyle: {
|
|
55
|
+
display: 'flex',
|
|
56
|
+
flex: '1 0 auto',
|
|
57
|
+
height: '80%',
|
|
58
|
+
margin: 'auto',
|
|
59
|
+
justifyContent: 'center',
|
|
60
|
+
alignItems: 'center',
|
|
61
|
+
fontSize: 13,
|
|
62
|
+
color: theme?.secondaryTextColor,
|
|
63
|
+
maxWidth: '100%',
|
|
64
|
+
width: '100%',
|
|
65
|
+
} })) : report.rows?.length === 0 ||
|
|
55
66
|
report.rows[0][report.xAxisField] === null ? (_jsx("div", { style: {
|
|
56
67
|
display: 'flex',
|
|
57
68
|
flex: '1 0 auto',
|
|
@@ -2,7 +2,7 @@ import { MultiSelectComponentProps } from './UiComponents';
|
|
|
2
2
|
/**
|
|
3
3
|
* A robust select component that implements the new minimal Select interface.
|
|
4
4
|
*/
|
|
5
|
-
export declare function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, isLoading, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, isLoading, disabled, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
export declare const ListboxTextInput: ({ value, onChange, placeholder, }: {
|
|
7
7
|
value: string;
|
|
8
8
|
onChange: (e: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAiC3E;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,
|
|
1
|
+
{"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAiC3E;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE,yBAAyB,2CAiV3B;AAED,eAAO,MAAM,gBAAgB;WAKpB,MAAM;kBACC,MAAM,KAAK,IAAI;iBAChB,MAAM;6CAwDpB,CAAC"}
|
|
@@ -21,7 +21,7 @@ function displaySelectedOptionLabels({ options, value, }) {
|
|
|
21
21
|
/**
|
|
22
22
|
* A robust select component that implements the new minimal Select interface.
|
|
23
23
|
*/
|
|
24
|
-
export function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, isLoading, }) {
|
|
24
|
+
export function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, isLoading, disabled, }) {
|
|
25
25
|
const [theme] = useContext(ThemeContext);
|
|
26
26
|
const [selectedOptions, setSelectedOptions] = useState([]);
|
|
27
27
|
const [showModal, setShowModal] = useState(false);
|
|
@@ -124,8 +124,12 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
|
|
|
124
124
|
height: 40,
|
|
125
125
|
minHeight: 40,
|
|
126
126
|
maxHeight: 40,
|
|
127
|
-
}, className:
|
|
127
|
+
}, className: 'quill-select-button', onClick: () => setShowModal((showModal) => !showModal), disabled: disabled, children: [_jsx("style", { children: ` .quill-select-button { background: ${theme?.backgroundColor}; }
|
|
128
128
|
.quill-select-button:hover { background: ${theme?.hoverBackgroundColor}; }
|
|
129
|
+
.quill-select-button:disabled {
|
|
130
|
+
cursor: not-allowed;
|
|
131
|
+
background: ${theme?.hoverBackgroundColor};
|
|
132
|
+
}
|
|
129
133
|
` }), _jsx("span", { style: {
|
|
130
134
|
textOverflow: 'ellipsis',
|
|
131
135
|
whiteSpace: 'nowrap',
|
|
@@ -63,8 +63,8 @@ export function QuillSelectComponent({ options, value, width, onChange, label, i
|
|
|
63
63
|
}, className: "quill-select-button", onClick: () => setShowModal((showModal) => !showModal), disabled: disabled, children: [_jsx("style", { children: `
|
|
64
64
|
.quill-select-button { background: ${theme?.backgroundColor}; }
|
|
65
65
|
.quill-select-button:hover { background: ${theme?.hoverBackgroundColor}; }
|
|
66
|
-
.quill-select-button:disabled {
|
|
67
|
-
|
|
66
|
+
.quill-select-button:disabled, {
|
|
67
|
+
background: ${theme?.hoverBackgroundColor};
|
|
68
68
|
cursor: not-allowed;
|
|
69
69
|
}
|
|
70
70
|
` }), _jsx("span", { style: {
|
|
@@ -91,7 +91,7 @@ export function QuillSelectComponent({ options, value, width, onChange, label, i
|
|
|
91
91
|
fontFamily: theme?.fontFamily,
|
|
92
92
|
maxHeight: '50vh',
|
|
93
93
|
overflow: 'scroll',
|
|
94
|
-
}, children: [!isLoading && !hideEmptyOption && (_jsxs("button", { style: {
|
|
94
|
+
}, children: [!isLoading && (!hideEmptyOption || !options.length) && (_jsxs("button", { style: {
|
|
95
95
|
display: 'flex',
|
|
96
96
|
alignItems: 'center',
|
|
97
97
|
justifyContent: 'space-between',
|
|
@@ -2,5 +2,5 @@ import { SelectComponentProps } from './UiComponents';
|
|
|
2
2
|
/**
|
|
3
3
|
* A robust select component that implements the new minimal Select interface.
|
|
4
4
|
*/
|
|
5
|
-
export declare function QuillSelectComponentWithCombo({ options, value, width, onChange, label, isLoading, hideEmptyOption, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function QuillSelectComponentWithCombo({ options, value, width, onChange, label, isLoading, hideEmptyOption, disabled, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
//# sourceMappingURL=QuillSelectWithCombo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAWtE;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,eAAe,
|
|
1
|
+
{"version":3,"file":"QuillSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAWtE;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE,oBAAoB,2CA2RtB"}
|
|
@@ -7,7 +7,7 @@ import { ListboxTextInput } from './QuillMultiSelectWithCombo';
|
|
|
7
7
|
/**
|
|
8
8
|
* A robust select component that implements the new minimal Select interface.
|
|
9
9
|
*/
|
|
10
|
-
export function QuillSelectComponentWithCombo({ options, value, width, onChange, label, isLoading, hideEmptyOption, }) {
|
|
10
|
+
export function QuillSelectComponentWithCombo({ options, value, width, onChange, label, isLoading, hideEmptyOption, disabled, }) {
|
|
11
11
|
const [theme] = useContext(ThemeContext);
|
|
12
12
|
const [showModal, setShowModal] = useState(false);
|
|
13
13
|
const modalRef = useRef(null);
|
|
@@ -90,7 +90,15 @@ export function QuillSelectComponentWithCombo({ options, value, width, onChange,
|
|
|
90
90
|
height: 40,
|
|
91
91
|
minHeight: 40,
|
|
92
92
|
maxHeight: 40,
|
|
93
|
-
}, className:
|
|
93
|
+
}, className: 'quill-select-button', onClick: () => setShowModal((showModal) => !showModal), disabled: disabled, children: [_jsx("style", { children: `
|
|
94
|
+
.quill-select-button { background: ${theme?.backgroundColor}; }
|
|
95
|
+
.quill-select-button:hover { background: ${theme?.hoverBackgroundColor}; }
|
|
96
|
+
.quill-select-button:disabled {
|
|
97
|
+
cursor: not-allowed;
|
|
98
|
+
background: ${theme?.hoverBackgroundColor};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
` }), _jsx("span", { style: {
|
|
94
102
|
textOverflow: 'ellipsis',
|
|
95
103
|
whiteSpace: 'nowrap',
|
|
96
104
|
overflow: 'hidden',
|
|
@@ -117,7 +125,9 @@ export function QuillSelectComponentWithCombo({ options, value, width, onChange,
|
|
|
117
125
|
fontSize: 14,
|
|
118
126
|
}, children: [options && options.length > 20 && !isLoading && (_jsx(ListboxTextInput, { value: searchQuery, placeholder: "Search", onChange: (value) => {
|
|
119
127
|
setSearchQuery(value);
|
|
120
|
-
} })), searchQuery === '' &&
|
|
128
|
+
} })), searchQuery === '' &&
|
|
129
|
+
!isLoading &&
|
|
130
|
+
(!hideEmptyOption || !options.length) && (_jsxs("button", { style: {
|
|
121
131
|
display: 'flex',
|
|
122
132
|
alignItems: 'center',
|
|
123
133
|
justifyContent: 'space-between',
|
|
@@ -137,7 +147,7 @@ export function QuillSelectComponentWithCombo({ options, value, width, onChange,
|
|
|
137
147
|
minHeight: 34,
|
|
138
148
|
}, className: "quill-option", onClick: () => {
|
|
139
149
|
// Manually create a synthetic ChangeEvent and pass it to callback
|
|
140
|
-
const changeEvent = { target: { value:
|
|
150
|
+
const changeEvent = { target: { value: undefined } };
|
|
141
151
|
onChange(changeEvent);
|
|
142
152
|
setShowModal(false);
|
|
143
153
|
}, children: [_jsx("style", { children: `
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { FilterTreeNode } from '../../utils/astFilterProcessing';
|
|
2
|
+
interface FilterStackProps {
|
|
3
|
+
client: any;
|
|
4
|
+
filterStack: FilterTreeNode[];
|
|
5
|
+
filterTree: FilterTreeNode | null;
|
|
6
|
+
defaultAST: any;
|
|
7
|
+
baseAst: any;
|
|
8
|
+
setBaseAst: any;
|
|
9
|
+
setFormData: any;
|
|
10
|
+
fetchSqlQuery: any;
|
|
11
|
+
schemaData: any;
|
|
12
|
+
defaultColumn: any;
|
|
13
|
+
defaultTable: any;
|
|
14
|
+
currentTable: any;
|
|
15
|
+
initialTableName: string;
|
|
16
|
+
globalUniqueValues: any;
|
|
17
|
+
globalUniqueValuesIsLoading: boolean;
|
|
18
|
+
columns: any;
|
|
19
|
+
removingFilter: any;
|
|
20
|
+
setRemovingFilter: any;
|
|
21
|
+
TabsComponent: any;
|
|
22
|
+
FilterPopoverComponent: any;
|
|
23
|
+
FilterModal: any;
|
|
24
|
+
ButtonComponent: any;
|
|
25
|
+
SecondaryButtonComponent: any;
|
|
26
|
+
SelectComponent: any;
|
|
27
|
+
TextInputComponent: any;
|
|
28
|
+
MultiSelectComponent: any;
|
|
29
|
+
actionsEnabled: boolean;
|
|
30
|
+
}
|
|
31
|
+
export default function FilterStack({ client, filterStack, filterTree, defaultAST, baseAst, setBaseAst, setFormData, fetchSqlQuery, schemaData, defaultColumn, defaultTable, currentTable, initialTableName, globalUniqueValues, globalUniqueValuesIsLoading, columns, removingFilter, setRemovingFilter, TabsComponent, FilterPopoverComponent, FilterModal, ButtonComponent, SecondaryButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, actionsEnabled, }: FilterStackProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=FilterStack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterStack.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/FilterStack.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EAEf,MAAM,iCAAiC,CAAC;AAUzC,UAAU,gBAAgB;IACxB,MAAM,EAAE,GAAG,CAAC;IACZ,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,WAAW,EAAE,GAAG,CAAC;IACjB,aAAa,EAAE,GAAG,CAAC;IACnB,UAAU,EAAE,GAAG,CAAC;IAChB,aAAa,EAAE,GAAG,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC;IAClB,YAAY,EAAE,GAAG,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,GAAG,CAAC;IACxB,2BAA2B,EAAE,OAAO,CAAC;IACrC,OAAO,EAAE,GAAG,CAAC;IACb,cAAc,EAAE,GAAG,CAAC;IACpB,iBAAiB,EAAE,GAAG,CAAC;IACvB,aAAa,EAAE,GAAG,CAAC;IACnB,sBAAsB,EAAE,GAAG,CAAC;IAC5B,WAAW,EAAE,GAAG,CAAC;IACjB,eAAe,EAAE,GAAG,CAAC;IACrB,wBAAwB,EAAE,GAAG,CAAC;IAC9B,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,WAAW,EACX,UAAU,EACV,UAAU,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,OAAO,EACP,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,cAAqB,GACtB,EAAE,gBAAgB,2CAgLlB"}
|