@quillsql/react 2.11.16 → 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 +194 -30
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +122 -62
- 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 -91
- 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 -42
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +466 -394
- package/dist/cjs/SQLEditor.d.ts +158 -23
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +35 -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/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 +8 -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 +4 -14
- 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 +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 -18
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +52 -100
- package/dist/cjs/components/ReportBuilder/util.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +16 -9
- package/dist/cjs/components/UiComponents.d.ts +86 -86
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +118 -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.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/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 +194 -30
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +122 -62
- 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 -91
- 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 -42
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +468 -396
- package/dist/esm/SQLEditor.d.ts +158 -23
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +35 -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/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 +8 -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 +4 -14
- 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 +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 -18
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +50 -98
- package/dist/esm/components/ReportBuilder/util.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +14 -8
- package/dist/esm/components/UiComponents.d.ts +86 -86
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +111 -101
- 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/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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { extractColumnish, isSelect, isLogicalBinaryExpr, isBigQuery, isNumericColumnType, } from './ast';
|
|
2
|
-
import { generateColumnExpr, isColumnDateish } from './util';
|
|
2
|
+
import { generateColumnExpr, isColumnDateish, isIdColumn } from './util';
|
|
3
3
|
// Helper functions that preprocess the AST.
|
|
4
4
|
// Find and replace certain pre-set date comparison queries with their
|
|
5
5
|
// more stable counterparts.
|
|
@@ -175,6 +175,9 @@ export function convertGroupBy(ast, prevPivot = null, schemaTables) {
|
|
|
175
175
|
}
|
|
176
176
|
if (column.expr.type === 'aggr_func' && !isIdColumn(columnName)) {
|
|
177
177
|
pivot.aggregationType = column.expr.name.toLowerCase();
|
|
178
|
+
if (pivot.aggregationType === 'avg') {
|
|
179
|
+
pivot.aggregationType = 'average';
|
|
180
|
+
}
|
|
178
181
|
pivot.valueField =
|
|
179
182
|
column.expr.args?.expr?.value || column.expr.args?.expr?.column;
|
|
180
183
|
if (column.expr.args.expr.type === 'column_ref') {
|
|
@@ -190,15 +193,23 @@ export function convertGroupBy(ast, prevPivot = null, schemaTables) {
|
|
|
190
193
|
}
|
|
191
194
|
}
|
|
192
195
|
if (columnName === '*') {
|
|
193
|
-
//
|
|
196
|
+
// Use the first numeric column found, if none found, use the first column
|
|
197
|
+
let columnForValueField = columns.find((c) => {
|
|
198
|
+
return isNumericColumnType(c.fieldType) && !isIdColumn(c.field);
|
|
199
|
+
});
|
|
200
|
+
if (!columnForValueField) {
|
|
201
|
+
columnForValueField = columns[0];
|
|
202
|
+
}
|
|
194
203
|
for (let i = 0; i < columns.length; i++) {
|
|
195
204
|
if (!isIdColumn(columns[i]?.field) &&
|
|
196
205
|
isNumericColumnType(columns[i]?.fieldType)) {
|
|
197
|
-
|
|
198
|
-
columnName = columns[i].field;
|
|
206
|
+
columnForValueField = columns[i];
|
|
199
207
|
break;
|
|
200
208
|
}
|
|
201
209
|
}
|
|
210
|
+
pivot.valueField = columnForValueField.field;
|
|
211
|
+
pivot.valueFieldType = 'number';
|
|
212
|
+
columnName = columnForValueField.field;
|
|
202
213
|
}
|
|
203
214
|
newColumns.push({
|
|
204
215
|
type: 'expr',
|
|
@@ -230,6 +241,9 @@ export function convertGroupBy(ast, prevPivot = null, schemaTables) {
|
|
|
230
241
|
if (!isIdColumn(columnName)) {
|
|
231
242
|
pivot.valueField = columnName;
|
|
232
243
|
pivot.aggregationType = column?.expr?.name?.toLowerCase();
|
|
244
|
+
if (pivot.aggregationType === 'avg') {
|
|
245
|
+
pivot.aggregationType = 'average';
|
|
246
|
+
}
|
|
233
247
|
}
|
|
234
248
|
const findByName = (x) => [x.expr?.value, x.expr?.column].includes(columnName);
|
|
235
249
|
if (!newColumns.find(findByName)) {
|
|
@@ -276,19 +290,27 @@ export function convertGroupBy(ast, prevPivot = null, schemaTables) {
|
|
|
276
290
|
const columnName = columnNode?.value || columnNode?.column;
|
|
277
291
|
// if count(*), make the value field an actual column
|
|
278
292
|
if (columnName === '*') {
|
|
279
|
-
|
|
293
|
+
let columnForValueField = columns.find((c) => {
|
|
280
294
|
return isNumericColumnType(c.fieldType) && !isIdColumn(c.field);
|
|
281
295
|
});
|
|
282
|
-
|
|
296
|
+
// if there aren't any numeric columns use the first column
|
|
297
|
+
if (!column) {
|
|
298
|
+
columnForValueField = columns[0];
|
|
299
|
+
}
|
|
300
|
+
pivot.valueField = columnForValueField?.field;
|
|
301
|
+
pivot.valueFieldType = 'number';
|
|
283
302
|
pivot.aggregationType = column?.expr?.name.toLowerCase();
|
|
284
|
-
|
|
303
|
+
if (pivot.aggregationType === 'avg') {
|
|
304
|
+
pivot.aggregationType = 'average';
|
|
305
|
+
}
|
|
306
|
+
const findByName = (x) => [x.expr?.value, x.expr?.column].includes(columnForValueField.field);
|
|
285
307
|
if (!newColumns.find(findByName)) {
|
|
286
308
|
newColumns.push({
|
|
287
309
|
type: 'expr',
|
|
288
310
|
expr: {
|
|
289
311
|
type: 'column_ref',
|
|
290
312
|
table: null,
|
|
291
|
-
column:
|
|
313
|
+
column: columnForValueField?.field || '',
|
|
292
314
|
},
|
|
293
315
|
as: null,
|
|
294
316
|
});
|
|
@@ -300,6 +322,9 @@ export function convertGroupBy(ast, prevPivot = null, schemaTables) {
|
|
|
300
322
|
!isIdColumn(columnName)) {
|
|
301
323
|
pivot.valueField = columnName;
|
|
302
324
|
pivot.aggregationType = column?.expr?.name.toLowerCase();
|
|
325
|
+
if (pivot.aggregationType === 'avg') {
|
|
326
|
+
pivot.aggregationType = 'average';
|
|
327
|
+
}
|
|
303
328
|
}
|
|
304
329
|
const findByName = (x) => [x.expr?.value, x.expr?.column].includes(columnName);
|
|
305
330
|
if (!newColumns.find(findByName)) {
|
|
@@ -771,8 +796,3 @@ export function convertRemoveSimpleParentheses(ast) {
|
|
|
771
796
|
}
|
|
772
797
|
return { ...ast, where: node };
|
|
773
798
|
}
|
|
774
|
-
function isIdColumn(columnName) {
|
|
775
|
-
return (columnName &&
|
|
776
|
-
(columnName.toLowerCase() === 'id' ||
|
|
777
|
-
columnName.toLowerCase().endsWith('_id')));
|
|
778
|
-
}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Represents the metadata of a pivot table.
|
|
3
3
|
*/
|
|
4
4
|
export type Pivot = {
|
|
5
|
-
aggregationType: 'sum' | 'average' | 'min' | 'max' | 'count';
|
|
5
|
+
aggregationType: 'sum' | 'average' | 'min' | 'max' | 'count' | 'avg';
|
|
6
6
|
valueField: string;
|
|
7
|
+
valueFieldType?: string;
|
|
7
8
|
rowField?: string;
|
|
8
9
|
rowFieldType?: string;
|
|
9
10
|
columnField?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivot.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/pivot.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,eAAe,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"pivot.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/pivot.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,eAAe,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,KAAK,GAAG,MAAM,CAAC;CAC/B,GAAG,IAAI,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { SidebarComponentProps, ContainerComponentProps } from '../UiComponents';
|
|
2
3
|
/**
|
|
3
4
|
* This file is a collection of basic UI components that conform to the shape
|
|
4
5
|
* expected by the Report Builder. Where possible, we use our existing
|
|
@@ -9,26 +10,90 @@ export declare const QuillButton: ({ children, ...props }: any) => import("react
|
|
|
9
10
|
export declare const QuillSecondaryButton: ({ children, ...props }: any) => import("react/jsx-runtime").JSX.Element;
|
|
10
11
|
export declare const QuillReportBuilderTable: ({ rows, columns, error, ...props }: any) => import("react/jsx-runtime").JSX.Element;
|
|
11
12
|
export declare const QuillTag: import("react").ForwardRefExoticComponent<Omit<any, "ref"> & import("react").RefAttributes<unknown>>;
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export declare const
|
|
16
|
-
export declare const
|
|
17
|
-
export declare
|
|
18
|
-
export declare const QuillPopover: import("react").ForwardRefExoticComponent<Omit<any, "ref"> & import("react").RefAttributes<unknown>>;
|
|
13
|
+
export interface SidebarHeadingComponentProps {
|
|
14
|
+
label: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const QuillSidebarHeading: ({ label, }: SidebarHeadingComponentProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare const QuillSidebar: ({ children }: SidebarComponentProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare const CustomContainer: ({ children }: ContainerComponentProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
19
|
export declare const QuillHandleButton: () => import("react/jsx-runtime").JSX.Element;
|
|
20
|
-
export
|
|
21
|
-
|
|
20
|
+
export interface SelectColumnComponentProps {
|
|
21
|
+
label: string;
|
|
22
|
+
isSelected: boolean;
|
|
23
|
+
setSelected: () => void;
|
|
24
|
+
DragHandle: ({ dragIcon }: {
|
|
25
|
+
dragIcon: () => JSX.Element;
|
|
26
|
+
}) => JSX.Element;
|
|
27
|
+
}
|
|
28
|
+
export declare const QuillSelectColumn: ({ label, isSelected, setSelected, DragHandle, }: SelectColumnComponentProps) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
/**
|
|
30
|
+
* Props for a draggable card with a grab-handle and a column name.
|
|
31
|
+
*/
|
|
32
|
+
export interface DraggableColumnComponentProps {
|
|
33
|
+
label: string;
|
|
34
|
+
onDelete: () => void;
|
|
35
|
+
DragHandle: ({ dragIcon }: {
|
|
36
|
+
dragIcon: () => JSX.Element;
|
|
37
|
+
}) => JSX.Element;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A draggable card with a grab-handle and a column name
|
|
41
|
+
*/
|
|
42
|
+
export declare const QuillDraggableColumn: ({ label, onDelete, DragHandle, }: DraggableColumnComponentProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
43
|
export declare const QuillButtonLoadingState: () => import("react/jsx-runtime").JSX.Element;
|
|
23
44
|
export declare const QuillTableLoadingState: () => import("react/jsx-runtime").JSX.Element;
|
|
24
|
-
export declare const DEFAULT_TAB_OPTIONS: {
|
|
25
|
-
label: string;
|
|
26
|
-
value: string;
|
|
27
|
-
}[];
|
|
28
|
-
export declare const QuillTabs: import("react").ForwardRefExoticComponent<Omit<any, "ref"> & import("react").RefAttributes<unknown>>;
|
|
29
45
|
export declare const EditPopover: ({ onSave, onDelete, Button, renderNode, activeEditItem, }: any) => import("react/jsx-runtime").JSX.Element;
|
|
30
|
-
export
|
|
31
|
-
|
|
32
|
-
|
|
46
|
+
export interface FilterPopoverComponentProps {
|
|
47
|
+
isOpen: boolean;
|
|
48
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
49
|
+
popoverTitle?: string;
|
|
50
|
+
popoverChildren: ReactNode;
|
|
51
|
+
filterLabel: string;
|
|
52
|
+
onClickDelete: (e: React.MouseEvent<HTMLElement>) => void;
|
|
53
|
+
}
|
|
54
|
+
export declare const QuillFilterPopover: ({ filterLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }: FilterPopoverComponentProps) => import("react/jsx-runtime").JSX.Element;
|
|
55
|
+
export interface SortPopoverComponentProps {
|
|
56
|
+
isOpen: boolean;
|
|
57
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
58
|
+
popoverTitle?: string;
|
|
59
|
+
popoverChildren: ReactNode;
|
|
60
|
+
sortLabel: string;
|
|
61
|
+
onClickDelete: (e: React.MouseEvent<HTMLElement>) => void;
|
|
62
|
+
}
|
|
63
|
+
export declare const QuillSortPopover: ({ sortLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }: SortPopoverComponentProps) => import("react/jsx-runtime").JSX.Element;
|
|
64
|
+
export interface LimitPopoverComponentProps {
|
|
65
|
+
isOpen: boolean;
|
|
66
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
67
|
+
popoverTitle?: string;
|
|
68
|
+
popoverChildren: ReactNode;
|
|
69
|
+
limitLabel: string;
|
|
70
|
+
onClickDelete: (e: React.MouseEvent<HTMLElement>) => void;
|
|
71
|
+
}
|
|
72
|
+
export declare const QuillLimitPopover: ({ limitLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }: LimitPopoverComponentProps) => import("react/jsx-runtime").JSX.Element;
|
|
73
|
+
export interface TagWrapperProps {
|
|
74
|
+
isCard: boolean;
|
|
75
|
+
isRow: boolean;
|
|
76
|
+
editPopoverKey: string;
|
|
77
|
+
keyPrefix: string;
|
|
78
|
+
formData: any;
|
|
79
|
+
activeEditItem: any;
|
|
80
|
+
setEditPopoverKey: any;
|
|
81
|
+
setActiveEditItem: any;
|
|
82
|
+
setActivePath: any;
|
|
83
|
+
setOpenPopover: any;
|
|
84
|
+
setIsPending: any;
|
|
85
|
+
clearCheckboxes: any;
|
|
86
|
+
fetchSqlQuery: any;
|
|
87
|
+
handleDelete: any;
|
|
88
|
+
setCheckboxes: any;
|
|
89
|
+
handleReplaceSubtree: any;
|
|
90
|
+
FilterPopover: (props: FilterPopoverComponentProps) => JSX.Element;
|
|
91
|
+
getByKey: any;
|
|
92
|
+
EditPopover: any;
|
|
93
|
+
Button: any;
|
|
94
|
+
renderNode: any;
|
|
95
|
+
children: any;
|
|
96
|
+
}
|
|
97
|
+
export declare const TagWrapper: ({ isCard, isRow, editPopoverKey, keyPrefix, formData, activeEditItem, setEditPopoverKey, setActiveEditItem, setActivePath, setOpenPopover, setIsPending, clearCheckboxes, fetchSqlQuery, handleDelete, setCheckboxes, handleReplaceSubtree, FilterPopover, getByKey, EditPopover, Button, renderNode, children, }: TagWrapperProps) => import("react/jsx-runtime").JSX.Element;
|
|
33
98
|
export declare const AddFilterPopover: ({ onSave, Button, renderNode, activeEditItem, }: any) => import("react/jsx-runtime").JSX.Element;
|
|
34
99
|
//# sourceMappingURL=ui.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/ui.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/ui.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef, useContext, useEffect,
|
|
3
|
-
import {
|
|
2
|
+
import { forwardRef, useContext, useEffect, useState } from 'react';
|
|
3
|
+
import { MemoizedCheckbox, MemoizedHeader, LoadingSpinner, MemoizedSecondaryButton, MemoizedPopover, } from '../UiComponents';
|
|
4
4
|
import MemoizedQuillTable from '../QuillTable';
|
|
5
5
|
import { ThemeContext } from '../../Context';
|
|
6
6
|
import { isNodeEmptyCollection, allNumericNodesValidInTree } from './util';
|
|
@@ -52,6 +52,7 @@ export const QuillSecondaryButton = ({ children, ...props }) => {
|
|
|
52
52
|
...props.style,
|
|
53
53
|
}, children: children }));
|
|
54
54
|
};
|
|
55
|
+
// TODO: remove this, I think it is unused.
|
|
55
56
|
export const QuillReportBuilderTable = ({ rows, columns, error, ...props }) => {
|
|
56
57
|
const reformattedColumns = columns.map((c) => ({ label: c, field: c }));
|
|
57
58
|
return (_jsx("div", { style: { height: '100%', overflow: 'auto' }, children: _jsx(MemoizedQuillTable, { rows: rows, columns: reformattedColumns, rowsPerPage: 10, showDownloadCSVButton: rows?.length > 0, downloadCSV: () => downloadCSV({ rows, fields: reformattedColumns, name: 'my_report' }), emptyStateLabel: error || 'No results', ...props }) }));
|
|
@@ -96,20 +97,18 @@ export const QuillTag = forwardRef(({ label, onClick, children, onClickDelete, h
|
|
|
96
97
|
}, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: theme?.secondaryButtonColor || 'currentColor', style: { width: 16, height: 16 }, children: _jsx("path", { d: "M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z" }) }) }) }))] }));
|
|
97
98
|
});
|
|
98
99
|
// A heading element in the sidebar (eg. "Filters")
|
|
99
|
-
export const QuillSidebarHeading = ({ label }) =>
|
|
100
|
-
// A sub-heading element in the sidebar (eg. "Filters")
|
|
101
|
-
export const QuillSidebarSubHeading = ({ label }) => (_jsx(MemoizedLabel, { children: label }));
|
|
100
|
+
export const QuillSidebarHeading = ({ label, }) => _jsx(MemoizedHeader, { label: label });
|
|
102
101
|
// The gray thing on the left.
|
|
103
|
-
export const QuillSidebar =
|
|
102
|
+
export const QuillSidebar = ({ children }) => (_jsx("div", { style: {
|
|
104
103
|
overflowX: 'visible',
|
|
105
104
|
padding: '12px',
|
|
106
105
|
width: '25%',
|
|
107
106
|
height: '100%',
|
|
108
107
|
maxWidth: '300px',
|
|
109
108
|
boxSizing: 'border-box',
|
|
110
|
-
},
|
|
109
|
+
}, children: children }));
|
|
111
110
|
// A big wrapper around the main content (ie. Input, Button, and Table)
|
|
112
|
-
export const CustomContainer =
|
|
111
|
+
export const CustomContainer = ({ children }) => (_jsx("div", { style: {
|
|
113
112
|
position: 'sticky',
|
|
114
113
|
top: 0,
|
|
115
114
|
display: 'flex',
|
|
@@ -122,59 +121,7 @@ export const CustomContainer = forwardRef(({ children, ...props }, forwardedRef)
|
|
|
122
121
|
width: '75%',
|
|
123
122
|
height: '100%',
|
|
124
123
|
boxSizing: 'border-box',
|
|
125
|
-
},
|
|
126
|
-
export const QuillSelect = ({ onChange, ...props }) => {
|
|
127
|
-
const handleOnChange = (value) => {
|
|
128
|
-
if (!onChange)
|
|
129
|
-
return;
|
|
130
|
-
const option = props.options.find((opt) => opt.value === value);
|
|
131
|
-
if (option) {
|
|
132
|
-
onChange(option.value);
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
return _jsx(MemoizedSelect, { ...props, onChange: handleOnChange });
|
|
136
|
-
};
|
|
137
|
-
export function MemoizedPopover({ onClose, children, style = {}, trigger, isOpen, }) {
|
|
138
|
-
const modalRef = useRef(null);
|
|
139
|
-
const [theme] = useContext(ThemeContext);
|
|
140
|
-
useEffect(() => {
|
|
141
|
-
const listener = (event) => {
|
|
142
|
-
if (modalRef?.current && !modalRef?.current?.contains(event.target)) {
|
|
143
|
-
onClose(event);
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
document.addEventListener('mousedown', listener);
|
|
147
|
-
return () => {
|
|
148
|
-
document.removeEventListener('mousedown', listener);
|
|
149
|
-
};
|
|
150
|
-
}, [modalRef, onClose]);
|
|
151
|
-
return (_jsxs("div", { children: [trigger, isOpen && (_jsx("div", { id: "quill-popover-modal", ref: modalRef, style: { position: 'relative' }, children: _jsx("div", { style: {
|
|
152
|
-
background: theme?.backgroundColor || 'white',
|
|
153
|
-
position: 'absolute',
|
|
154
|
-
boxShadow: '0px 1px 12px 0px rgba(56, 65, 81, 0.1)',
|
|
155
|
-
border: theme
|
|
156
|
-
? `${theme.borderWidth || 1}px solid ${theme.borderColor || '#e7e7e7'}`
|
|
157
|
-
: '1px solid #e7e7e7',
|
|
158
|
-
boxSizing: 'content-box',
|
|
159
|
-
zIndex: 999,
|
|
160
|
-
top: 12,
|
|
161
|
-
borderRadius: 6,
|
|
162
|
-
padding: 20,
|
|
163
|
-
...style,
|
|
164
|
-
}, children: children }) }))] }));
|
|
165
|
-
}
|
|
166
|
-
export const QuillPopover = forwardRef(({ children, trigger, isOpen, onClose = () => { }, title = undefined }, ref) => {
|
|
167
|
-
const [theme] = useContext(ThemeContext);
|
|
168
|
-
return (_jsxs(MemoizedPopover, { isOpen: isOpen, onClose: onClose, trigger: trigger, parentRef: ref, ref: ref, children: [title && (_jsx("h1", { style: {
|
|
169
|
-
fontWeight: '600',
|
|
170
|
-
fontSize: 18,
|
|
171
|
-
margin: 0,
|
|
172
|
-
textAlign: 'left',
|
|
173
|
-
marginBottom: 5,
|
|
174
|
-
color: theme?.primaryTextColor,
|
|
175
|
-
fontFamily: theme?.fontFamily,
|
|
176
|
-
}, children: title })), children] }));
|
|
177
|
-
});
|
|
124
|
+
}, children: children }));
|
|
178
125
|
// The six-dot grab-handle icon.
|
|
179
126
|
export const QuillHandleButton = () => {
|
|
180
127
|
const [theme] = useContext(ThemeContext);
|
|
@@ -219,7 +166,7 @@ export const QuillHandleButton = () => {
|
|
|
219
166
|
background: '#9CA0A7',
|
|
220
167
|
} })] })] }));
|
|
221
168
|
};
|
|
222
|
-
export const QuillSelectColumn = ({ label,
|
|
169
|
+
export const QuillSelectColumn = ({ label, isSelected, setSelected, DragHandle, }) => {
|
|
223
170
|
const [theme] = useContext(ThemeContext);
|
|
224
171
|
return (_jsxs("div", { title: label, style: {
|
|
225
172
|
boxShadow: '0px 1px 4px #e2e8f005',
|
|
@@ -231,13 +178,13 @@ export const QuillSelectColumn = ({ label, selected, setSelected, children, }) =
|
|
|
231
178
|
display: 'flex',
|
|
232
179
|
alignItems: 'center',
|
|
233
180
|
backgroundColor: theme?.backgroundColor || 'white',
|
|
234
|
-
}, children: [_jsx(
|
|
181
|
+
}, children: [_jsx(DragHandle, { dragIcon: QuillHandleButton }), _jsxs("label", { style: {
|
|
235
182
|
display: 'flex',
|
|
236
183
|
gap: 2,
|
|
237
184
|
whiteSpace: 'nowrap',
|
|
238
185
|
textOverflow: 'ellipsis',
|
|
239
186
|
overflow: 'hidden',
|
|
240
|
-
}, children: [_jsx(MemoizedCheckbox, {
|
|
187
|
+
}, children: [_jsx(MemoizedCheckbox, { isChecked: isSelected, onChange: () => setSelected() }), _jsx("span", { style: {
|
|
241
188
|
marginLeft: 6,
|
|
242
189
|
display: 'block',
|
|
243
190
|
whiteSpace: 'nowrap',
|
|
@@ -247,8 +194,10 @@ export const QuillSelectColumn = ({ label, selected, setSelected, children, }) =
|
|
|
247
194
|
color: theme?.primaryTextColor,
|
|
248
195
|
}, children: snakeCaseToTitleCase(label) })] })] }));
|
|
249
196
|
};
|
|
250
|
-
|
|
251
|
-
|
|
197
|
+
/**
|
|
198
|
+
* A draggable card with a grab-handle and a column name
|
|
199
|
+
*/
|
|
200
|
+
export const QuillDraggableColumn = ({ label, onDelete, DragHandle, }) => {
|
|
252
201
|
const [theme] = useContext(ThemeContext);
|
|
253
202
|
return (_jsxs("div", { style: {
|
|
254
203
|
boxShadow: '0px 1px 4px #e2e8f005',
|
|
@@ -257,13 +206,14 @@ export const QuillDraggableColumn = ({ label, children, onDelete }) => {
|
|
|
257
206
|
display: 'flex',
|
|
258
207
|
alignItems: 'center',
|
|
259
208
|
backgroundColor: theme?.backgroundColor || 'white',
|
|
260
|
-
}, children: [_jsx(
|
|
209
|
+
}, children: [_jsx(DragHandle, { dragIcon: QuillHandleButton }), _jsx("div", { style: {
|
|
261
210
|
marginLeft: 2,
|
|
262
211
|
marginRight: 'auto',
|
|
263
212
|
fontSize: 14,
|
|
264
213
|
display: 'block',
|
|
265
214
|
whiteSpace: 'nowrap',
|
|
266
215
|
textOverflow: 'ellipsis',
|
|
216
|
+
overflow: 'hidden',
|
|
267
217
|
fontFamily: theme?.fontFamily,
|
|
268
218
|
}, children: label }), _jsx("button", { onClick: onDelete, style: {
|
|
269
219
|
paddingRight: 4,
|
|
@@ -281,11 +231,6 @@ export const QuillButtonLoadingState = () => {
|
|
|
281
231
|
export const QuillTableLoadingState = () => {
|
|
282
232
|
return (_jsx("div", { style: { display: 'flex', flexDirection: 'column', margin: 'auto' }, children: _jsx(LoadingSpinner, {}) }));
|
|
283
233
|
};
|
|
284
|
-
export const DEFAULT_TAB_OPTIONS = [
|
|
285
|
-
{ label: 'or', value: 'OR' },
|
|
286
|
-
{ label: 'and', value: 'AND' },
|
|
287
|
-
];
|
|
288
|
-
export const QuillTabs = forwardRef(({ options = DEFAULT_TAB_OPTIONS, ...props }, ref) => (_jsx(MemoizedTabs, { ref: ref, options: options, ...props })));
|
|
289
234
|
export const EditPopover = ({ onSave, onDelete, Button, renderNode, activeEditItem, }) => {
|
|
290
235
|
const handleOnClick = () => {
|
|
291
236
|
if (!allNumericNodesValidInTree(activeEditItem)) {
|
|
@@ -306,39 +251,45 @@ export const EditPopover = ({ onSave, onDelete, Button, renderNode, activeEditIt
|
|
|
306
251
|
width: '100%',
|
|
307
252
|
}, children: [_jsx(MemoizedSecondaryButton, { onClick: onDelete, label: "Delete" }), _jsx(Button, { onClick: handleOnClick, label: "Save" })] })] }));
|
|
308
253
|
};
|
|
309
|
-
export const QuillFilterPopover = ({ filterLabel,
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
254
|
+
export const QuillFilterPopover = ({ filterLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }) => {
|
|
255
|
+
const handleSetIsOpen = (isOpen) => {
|
|
256
|
+
setIsOpen(isOpen);
|
|
257
|
+
};
|
|
258
|
+
return (_jsxs(_Fragment, { children: [_jsx(QuillTag, { label: filterLabel, onClickDelete: onClickDelete, onClick: () => setIsOpen(!isOpen) }), _jsx(MemoizedPopover, { isOpen: isOpen, setIsOpen: handleSetIsOpen, popoverTitle: popoverTitle, popoverChildren: popoverChildren })] }));
|
|
259
|
+
};
|
|
260
|
+
export const QuillSortPopover = ({ sortLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }) => {
|
|
261
|
+
return (_jsxs(_Fragment, { children: [_jsx(QuillTag, { label: sortLabel, onClickDelete: onClickDelete, onClick: () => {
|
|
262
|
+
setIsOpen(!isOpen);
|
|
263
|
+
} }), _jsx(MemoizedPopover, { isOpen: isOpen, popoverTitle: popoverTitle, setIsOpen: setIsOpen, popoverChildren: popoverChildren })] }));
|
|
315
264
|
};
|
|
316
|
-
export const
|
|
317
|
-
return (
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
setIsOpen(false);
|
|
321
|
-
}, children: popoverChildren }));
|
|
265
|
+
export const QuillLimitPopover = ({ limitLabel, onClickDelete, popoverTitle, popoverChildren, isOpen, setIsOpen, }) => {
|
|
266
|
+
return (_jsxs(_Fragment, { children: [_jsx(QuillTag, { label: limitLabel, onClickDelete: onClickDelete, onClick: () => {
|
|
267
|
+
setIsOpen(!isOpen);
|
|
268
|
+
} }), _jsx(MemoizedPopover, { isOpen: isOpen, popoverTitle: popoverTitle, setIsOpen: setIsOpen, popoverChildren: popoverChildren })] }));
|
|
322
269
|
};
|
|
323
270
|
export const TagWrapper = ({ isCard, isRow, editPopoverKey, keyPrefix, formData, activeEditItem, setEditPopoverKey, setActiveEditItem, setActivePath, setOpenPopover, setIsPending, clearCheckboxes, fetchSqlQuery, handleDelete, setCheckboxes, handleReplaceSubtree, FilterPopover, getByKey, EditPopover, Button, renderNode, children, }) => {
|
|
324
271
|
const [isOpen, setIsOpen] = useState(false);
|
|
272
|
+
const onOpen = () => {
|
|
273
|
+
setActiveEditItem(getByKey(formData, keyPrefix));
|
|
274
|
+
setActivePath(keyPrefix);
|
|
275
|
+
setIsPending(true);
|
|
276
|
+
setEditPopoverKey(keyPrefix);
|
|
277
|
+
setCheckboxes(getByKey(formData, keyPrefix));
|
|
278
|
+
};
|
|
279
|
+
const onClose = () => {
|
|
280
|
+
setEditPopoverKey(null);
|
|
281
|
+
setIsPending(false);
|
|
282
|
+
setActiveEditItem(null);
|
|
283
|
+
setActivePath(null);
|
|
284
|
+
setOpenPopover(null);
|
|
285
|
+
clearCheckboxes();
|
|
286
|
+
};
|
|
325
287
|
useEffect(() => {
|
|
326
288
|
if (isOpen) {
|
|
327
|
-
|
|
328
|
-
setActiveEditItem(getByKey(formData, keyPrefix));
|
|
329
|
-
setActivePath(keyPrefix);
|
|
330
|
-
setIsPending(true);
|
|
331
|
-
setEditPopoverKey(keyPrefix);
|
|
332
|
-
setCheckboxes(getByKey(formData, keyPrefix));
|
|
289
|
+
onOpen();
|
|
333
290
|
}
|
|
334
291
|
else {
|
|
335
|
-
|
|
336
|
-
setEditPopoverKey(null);
|
|
337
|
-
setIsPending(false);
|
|
338
|
-
setActiveEditItem(null);
|
|
339
|
-
setActivePath(null);
|
|
340
|
-
setOpenPopover(null);
|
|
341
|
-
clearCheckboxes();
|
|
292
|
+
onClose();
|
|
342
293
|
}
|
|
343
294
|
}, [isOpen]);
|
|
344
295
|
if (isCard && isRow) {
|
|
@@ -350,9 +301,10 @@ export const TagWrapper = ({ isCard, isRow, editPopoverKey, keyPrefix, formData,
|
|
|
350
301
|
setActivePath(null);
|
|
351
302
|
setOpenPopover(null);
|
|
352
303
|
setEditPopoverKey(null);
|
|
304
|
+
fetchSqlQuery();
|
|
353
305
|
clearCheckboxes();
|
|
354
306
|
};
|
|
355
|
-
return (_jsx("div", { style: { width: '100%' }, children: _jsx(FilterPopover, { isOpen: editPopoverKey === keyPrefix, popoverTitle: "Edit Filter", filterLabel: children,
|
|
307
|
+
return (_jsx("div", { style: { width: '100%' }, children: _jsx(FilterPopover, { isOpen: editPopoverKey === keyPrefix, popoverTitle: "Edit Filter", filterLabel: children, onClickDelete: handleClickDelete, setIsOpen: setIsOpen, popoverChildren: _jsx(EditPopover, { Button: Button, renderNode: renderNode, activeEditItem: activeEditItem, onSave: () => {
|
|
356
308
|
if (isNodeEmptyCollection(activeEditItem)) {
|
|
357
309
|
setIsPending(false);
|
|
358
310
|
setActiveEditItem(null);
|
|
@@ -73,6 +73,7 @@ export declare const getDateFilterInfo: (node: any) => {
|
|
|
73
73
|
intervalType: any;
|
|
74
74
|
intervalPaths: any;
|
|
75
75
|
};
|
|
76
|
-
export declare function removeNonSelectedTableReferences(ast: any, table: string): any;
|
|
76
|
+
export declare function removeNonSelectedTableReferences(ast: any, table: string, columns: string[]): any;
|
|
77
77
|
export declare function allNumericNodesValidInTree(node: any): boolean;
|
|
78
|
+
export declare function isIdColumn(columnName?: string): boolean | "" | undefined;
|
|
78
79
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/util.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,qBAAqB,SAAU,GAAG,YAW9C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,WAa1C;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,WAK5C;AAGD,eAAO,MAAM,WAAW,SAAU,GAAG,YAuBpC,CAAC;AAKF,eAAO,MAAM,oBAAoB,SAAU,GAAG,QAE7C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG;;;;;;;;EAU3C;AAKD,eAAO,MAAM,eAAe,QAAS,GAAG,QAMvC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,WAiBvD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,GAAG,iBAQjD;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAOf;AAQD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAWf;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAOf;AAMD,eAAO,MAAM,mBAAmB,SAAU,GAAG,gBAAgB,MAAM,YA4BlE,CAAC;AAIF,eAAO,MAAM,2BAA2B,SAAU,GAAG,YAUpD,CAAC;AAIF,eAAO,MAAM,oBAAoB,SACzB,GAAG,gBACK,MAAM,KACnB,OAoBF,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,GAAG,gBAAgB,MAAM,QAYpE,CAAC;AAEF,eAAO,MAAM,4BAA4B,SAAU,GAAG,KAAG,OAUxD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,SAAU,GAAG,QA4B3C,CAAC;AAGF,eAAO,MAAM,UAAU,eAAgB,MAAM,SAe5C,CAAC;AAmBF;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,UAsBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,UAgB9C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,sBAmBtE;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,SAAU,GAAG,YAU1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,SAAU,GAAG,YAOxC,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,WAehD;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,GACV,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAyB1C;AAED,eAAO,MAAM,QAAQ,QAAS,GAAG,QAAoC,CAAC;AAEtE,eAAO,MAAM,QAAQ,MAAO,MAAM,WAA2C,CAAC;AA4L9E,eAAO,MAAM,iBAAiB,SAAU,GAAG;;;;;;;CAc1C,CAAC;
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/util.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,qBAAqB,SAAU,GAAG,YAW9C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,WAa1C;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,WAK5C;AAGD,eAAO,MAAM,WAAW,SAAU,GAAG,YAuBpC,CAAC;AAKF,eAAO,MAAM,oBAAoB,SAAU,GAAG,QAE7C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG;;;;;;;;EAU3C;AAKD,eAAO,MAAM,eAAe,QAAS,GAAG,QAMvC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,WAiBvD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,GAAG,iBAQjD;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAOf;AAQD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAWf;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAOf;AAMD,eAAO,MAAM,mBAAmB,SAAU,GAAG,gBAAgB,MAAM,YA4BlE,CAAC;AAIF,eAAO,MAAM,2BAA2B,SAAU,GAAG,YAUpD,CAAC;AAIF,eAAO,MAAM,oBAAoB,SACzB,GAAG,gBACK,MAAM,KACnB,OAoBF,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,GAAG,gBAAgB,MAAM,QAYpE,CAAC;AAEF,eAAO,MAAM,4BAA4B,SAAU,GAAG,KAAG,OAUxD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,SAAU,GAAG,QA4B3C,CAAC;AAGF,eAAO,MAAM,UAAU,eAAgB,MAAM,SAe5C,CAAC;AAmBF;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,UAsBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,UAgB9C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,sBAmBtE;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,SAAU,GAAG,YAU1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,SAAU,GAAG,YAOxC,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,WAehD;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,GACV,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAyB1C;AAED,eAAO,MAAM,QAAQ,QAAS,GAAG,QAAoC,CAAC;AAEtE,eAAO,MAAM,QAAQ,MAAO,MAAM,WAA2C,CAAC;AA4L9E,eAAO,MAAM,iBAAiB,SAAU,GAAG;;;;;;;CAc1C,CAAC;AA6CF,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,OAQlB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAc7D;AAED,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,4BAO7C"}
|
|
@@ -627,18 +627,20 @@ function getNodeTable(node) {
|
|
|
627
627
|
return null;
|
|
628
628
|
}
|
|
629
629
|
// Recursively remove filters that don't apply to the given table
|
|
630
|
-
function removeNonSelectedTableFilters(node, table) {
|
|
630
|
+
function removeNonSelectedTableFilters(node, table, columns) {
|
|
631
631
|
if (node.left.type !== 'binary_expr') {
|
|
632
632
|
const referencedTable = getNodeTable(node.left);
|
|
633
|
-
|
|
633
|
+
const referencedColumn = node.left.column || node.left.value;
|
|
634
|
+
if ((referencedTable && referencedTable !== table) ||
|
|
635
|
+
!columns.includes(referencedColumn)) {
|
|
634
636
|
return null;
|
|
635
637
|
}
|
|
636
638
|
else {
|
|
637
639
|
return node;
|
|
638
640
|
}
|
|
639
641
|
}
|
|
640
|
-
node.left = removeNonSelectedTableFilters(node.left, table);
|
|
641
|
-
node.right = removeNonSelectedTableFilters(node.right, table);
|
|
642
|
+
node.left = removeNonSelectedTableFilters(node.left, table, columns);
|
|
643
|
+
node.right = removeNonSelectedTableFilters(node.right, table, columns);
|
|
642
644
|
if (node.left && node.right) {
|
|
643
645
|
return node;
|
|
644
646
|
}
|
|
@@ -652,14 +654,13 @@ function removeNonSelectedTableFilters(node, table) {
|
|
|
652
654
|
return null;
|
|
653
655
|
}
|
|
654
656
|
}
|
|
655
|
-
export function removeNonSelectedTableReferences(ast, table) {
|
|
657
|
+
export function removeNonSelectedTableReferences(ast, table, columns) {
|
|
656
658
|
ast.columns = ast.columns.filter((col) => {
|
|
657
659
|
return col.table === table || col.expr.table === table || !col.expr.table;
|
|
658
660
|
});
|
|
659
661
|
if (!ast.where)
|
|
660
662
|
return ast;
|
|
661
|
-
ast.where = removeNonSelectedTableFilters(ast.where, table);
|
|
662
|
-
console.log(ast);
|
|
663
|
+
ast.where = removeNonSelectedTableFilters(ast.where, table, columns);
|
|
663
664
|
return ast;
|
|
664
665
|
}
|
|
665
666
|
export function allNumericNodesValidInTree(node) {
|
|
@@ -667,7 +668,6 @@ export function allNumericNodesValidInTree(node) {
|
|
|
667
668
|
return true;
|
|
668
669
|
if (node.type === 'number') {
|
|
669
670
|
const value = parseFloat(node.value);
|
|
670
|
-
console.log(node.value, value);
|
|
671
671
|
if (Number.isNaN(value)) {
|
|
672
672
|
return false;
|
|
673
673
|
}
|
|
@@ -680,3 +680,9 @@ export function allNumericNodesValidInTree(node) {
|
|
|
680
680
|
const isRightValid = allNumericNodesValidInTree(node.right);
|
|
681
681
|
return isLeftValid && isRightValid;
|
|
682
682
|
}
|
|
683
|
+
export function isIdColumn(columnName) {
|
|
684
|
+
return (columnName &&
|
|
685
|
+
(columnName.toLowerCase() === 'id' ||
|
|
686
|
+
columnName.toLowerCase().endsWith('_id') ||
|
|
687
|
+
columnName.endsWith('Id')));
|
|
688
|
+
}
|