@quillsql/react 2.12.45 → 2.12.47
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 +16 -7
- package/dist/cjs/ChartBuilder.d.ts +10 -11
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +78 -81
- package/dist/cjs/ChartEditor.d.ts +3 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +26 -10
- package/dist/cjs/Context.d.ts +2 -3
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +42 -28
- package/dist/cjs/Dashboard.d.ts +12 -12
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +61 -69
- package/dist/cjs/QuillProvider.d.ts +2 -0
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +1 -15
- package/dist/cjs/ReportBuilder.d.ts +9 -9
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +116 -179
- package/dist/cjs/SQLEditor.d.ts +20 -11
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +157 -90
- package/dist/cjs/Table.js +3 -3
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +6 -25
- package/dist/cjs/components/Chart/BarList.js +1 -1
- package/dist/cjs/components/Chart/ChartError.d.ts +5 -2
- package/dist/cjs/components/Chart/ChartError.d.ts.map +1 -1
- package/dist/cjs/components/Chart/ChartError.js +7 -10
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +16 -1
- package/dist/cjs/components/Chart/PieChart.js +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.js +46 -47
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +2 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +2 -2
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +19 -13
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +16 -26
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +16 -25
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +31 -1
- package/dist/cjs/components/QuillSelect.js +1 -1
- package/dist/cjs/components/QuillTable.d.ts +1 -1
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +115 -105
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +3 -3
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +2 -2
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +2 -2
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +28 -9
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +178 -114
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +1 -2
- package/dist/cjs/components/ReportBuilder/ui.d.ts +9 -1
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +37 -3
- package/dist/cjs/components/ReportBuilder/util.d.ts +5 -1
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +26 -12
- package/dist/cjs/components/UiComponents.d.ts +17 -3
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +160 -29
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +7 -7
- package/dist/cjs/hooks/useAstToFilterTree.d.ts +4 -1
- package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/cjs/hooks/useAstToFilterTree.js +4 -1
- package/dist/cjs/hooks/useDashboard.d.ts +5 -1
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +28 -4
- package/dist/cjs/hooks/useOnClickOutside.js +2 -2
- package/dist/cjs/hooks/useQuill.js +4 -4
- package/dist/cjs/hooks/useVirtualTables.d.ts +10 -0
- package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -0
- package/dist/cjs/hooks/useVirtualTables.js +29 -0
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +45 -21
- package/dist/cjs/models/Client.d.ts +3 -0
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Report.d.ts +2 -0
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/models/Schema.d.ts +7 -0
- package/dist/cjs/models/Schema.d.ts.map +1 -0
- package/dist/cjs/models/Schema.js +2 -0
- package/dist/cjs/models/Tables.d.ts +2 -0
- package/dist/cjs/models/Tables.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +4 -0
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +47 -44
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +8 -8
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +1 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +88 -5
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +7 -3
- package/dist/cjs/utils/filterProcessing.d.ts +25 -0
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +121 -1
- package/dist/cjs/utils/paginationProcessing.js +2 -2
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +10 -6
- package/dist/cjs/utils/queryConstructor.d.ts +1 -0
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +37 -11
- package/dist/cjs/utils/report.d.ts +5 -0
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +63 -9
- package/dist/cjs/utils/schema.js +22 -20
- package/dist/cjs/utils/tableProcessing.d.ts +1 -0
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +22 -1
- package/dist/cjs/utils/validation.d.ts.map +1 -1
- package/dist/cjs/utils/validation.js +4 -0
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +17 -8
- package/dist/esm/ChartBuilder.d.ts +10 -11
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +81 -84
- package/dist/esm/ChartEditor.d.ts +3 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +27 -11
- package/dist/esm/Context.d.ts +2 -3
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +42 -28
- package/dist/esm/Dashboard.d.ts +12 -12
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +63 -71
- package/dist/esm/QuillProvider.d.ts +2 -0
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +2 -16
- package/dist/esm/ReportBuilder.d.ts +9 -9
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +122 -185
- package/dist/esm/SQLEditor.d.ts +20 -11
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +160 -93
- package/dist/esm/Table.js +4 -4
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +7 -26
- package/dist/esm/components/Chart/BarList.js +1 -1
- package/dist/esm/components/Chart/ChartError.d.ts +5 -2
- package/dist/esm/components/Chart/ChartError.d.ts.map +1 -1
- package/dist/esm/components/Chart/ChartError.js +7 -10
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +16 -1
- package/dist/esm/components/Chart/PieChart.js +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.js +46 -47
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +2 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts +2 -2
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +20 -14
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +16 -26
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +16 -25
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +31 -1
- package/dist/esm/components/QuillSelect.js +1 -1
- package/dist/esm/components/QuillTable.d.ts +1 -1
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +115 -105
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +3 -3
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.js +2 -2
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +2 -2
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.js +28 -9
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +178 -114
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +1 -2
- package/dist/esm/components/ReportBuilder/ui.d.ts +9 -1
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +38 -4
- package/dist/esm/components/ReportBuilder/util.d.ts +5 -1
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +26 -12
- package/dist/esm/components/UiComponents.d.ts +17 -3
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +158 -28
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +8 -8
- package/dist/esm/hooks/useAstToFilterTree.d.ts +4 -1
- package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/esm/hooks/useAstToFilterTree.js +4 -1
- package/dist/esm/hooks/useDashboard.d.ts +5 -1
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +28 -5
- package/dist/esm/hooks/useOnClickOutside.js +2 -2
- package/dist/esm/hooks/useQuill.js +5 -5
- package/dist/esm/hooks/useVirtualTables.d.ts +10 -0
- package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -0
- package/dist/esm/hooks/useVirtualTables.js +25 -0
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +44 -23
- package/dist/esm/models/Client.d.ts +3 -0
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Report.d.ts +2 -0
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/models/Schema.d.ts +7 -0
- package/dist/esm/models/Schema.d.ts.map +1 -0
- package/dist/esm/models/Schema.js +1 -0
- package/dist/esm/models/Tables.d.ts +2 -0
- package/dist/esm/models/Tables.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +4 -0
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +45 -43
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +8 -8
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +1 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +88 -5
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +7 -3
- package/dist/esm/utils/filterProcessing.d.ts +25 -0
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +116 -0
- package/dist/esm/utils/paginationProcessing.js +2 -2
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +10 -6
- package/dist/esm/utils/queryConstructor.d.ts +1 -0
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +35 -10
- package/dist/esm/utils/report.d.ts +5 -0
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +61 -8
- package/dist/esm/utils/schema.js +22 -20
- package/dist/esm/utils/tableProcessing.d.ts +1 -0
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +21 -1
- package/dist/esm/utils/validation.d.ts.map +1 -1
- package/dist/esm/utils/validation.js +4 -0
- package/package.json +3 -1
|
@@ -13,32 +13,20 @@ const filterProcessing_1 = require("../../utils/filterProcessing");
|
|
|
13
13
|
* Modal for adding, editing, and deleting Filters
|
|
14
14
|
*/
|
|
15
15
|
function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, onSubmitFilter, onDeleteFilter, ButtonComponent, SelectComponent, TextInputComponent, SecondaryButtonComponent, MultiSelectComponent, }) {
|
|
16
|
-
const [field, setField] = (0, react_1.useState)(
|
|
16
|
+
const [field, setField] = (0, react_1.useState)('');
|
|
17
17
|
const [fieldOptions, setFieldOptions] = (0, react_1.useState)([]);
|
|
18
18
|
const [fieldValues, setFieldValues] = (0, react_1.useState)([]);
|
|
19
|
-
const [type, setType] = (0, react_1.useState)(
|
|
20
|
-
const [value, setValue] = (0, react_1.useState)(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
: filter.value
|
|
24
|
-
: undefined);
|
|
25
|
-
const [selectedOptions, setSelectedOptions] = (0, react_1.useState)(filter && filter.filterType === 'string-in-filter'
|
|
26
|
-
? filter.value.map((val) => {
|
|
27
|
-
return { label: val, value: val };
|
|
28
|
-
})
|
|
29
|
-
: []);
|
|
30
|
-
const [operator, setOperator] = (0, react_1.useState)(filter ? filter.operator : '');
|
|
19
|
+
const [type, setType] = (0, react_1.useState)('');
|
|
20
|
+
const [value, setValue] = (0, react_1.useState)(undefined);
|
|
21
|
+
const [selectedOptions, setSelectedOptions] = (0, react_1.useState)([]);
|
|
22
|
+
const [operator, setOperator] = (0, react_1.useState)('');
|
|
31
23
|
const [operatorOptions, setOperatorOptions] = (0, react_1.useState)([]);
|
|
32
|
-
const [unit, setUnit] = (0, react_1.useState)(
|
|
24
|
+
const [unit, setUnit] = (0, react_1.useState)('');
|
|
33
25
|
const [unitOptions, setUnitOptions] = (0, react_1.useState)([]);
|
|
34
|
-
const [startDate, setStartDate] = (0, react_1.useState)(
|
|
35
|
-
|
|
36
|
-
: (0, date_fns_1.startOfToday)().toISOString().substring(0, 10));
|
|
37
|
-
const [endDate, setEndDate] = (0, react_1.useState)(filter && filter.value?.endDate
|
|
38
|
-
? filter.value.endDate.substring(0, 10)
|
|
39
|
-
: (0, date_fns_1.startOfToday)().toISOString().substring(0, 10));
|
|
26
|
+
const [startDate, setStartDate] = (0, react_1.useState)((0, date_fns_1.startOfToday)().toISOString().substring(0, 10));
|
|
27
|
+
const [endDate, setEndDate] = (0, react_1.useState)((0, date_fns_1.startOfToday)().toISOString().substring(0, 10));
|
|
40
28
|
const [filterInitialized, setFilterInitialized] = (0, react_1.useState)(false);
|
|
41
|
-
const [table, setTable] = (0, react_1.useState)(
|
|
29
|
+
const [table, setTable] = (0, react_1.useState)(undefined);
|
|
42
30
|
// Define all supported operator options for each field type
|
|
43
31
|
const allOperatorOptions = {
|
|
44
32
|
[Filter_1.FieldTypes.Number]: [
|
|
@@ -82,6 +70,20 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
82
70
|
// Effect hook to initialize or update fieldValues based on selected field
|
|
83
71
|
(0, react_1.useEffect)(() => {
|
|
84
72
|
if (filter) {
|
|
73
|
+
setField(filter.field);
|
|
74
|
+
onFieldChange(filter.field, fieldOptions);
|
|
75
|
+
setType(filter.filterType);
|
|
76
|
+
onTypeChange(filter.filterType);
|
|
77
|
+
setValue(filter.filterType === 'date-filter' ? filter.value.value : filter.value);
|
|
78
|
+
setOperator(filter.operator);
|
|
79
|
+
onOperatorChange(filter.operator);
|
|
80
|
+
setUnit(filter.filterType === 'date-filter' ? filter.value.unit : '');
|
|
81
|
+
setStartDate(filter.value?.startDate
|
|
82
|
+
? filter.value.startDate.substring(0, 10)
|
|
83
|
+
: (0, date_fns_1.startOfToday)().toISOString().substring(0, 10));
|
|
84
|
+
setEndDate(filter.value?.endDate
|
|
85
|
+
? filter.value.endDate.substring(0, 10)
|
|
86
|
+
: (0, date_fns_1.startOfToday)().toISOString().substring(0, 10));
|
|
85
87
|
if (filter.filterType === 'string-in-filter') {
|
|
86
88
|
setSelectedOptions(filter.value.map((val) => {
|
|
87
89
|
return { label: val, value: val };
|
|
@@ -102,33 +104,14 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
102
104
|
setFieldOptions(fo);
|
|
103
105
|
if (!filter && fo.length > 0 && fo[0]) {
|
|
104
106
|
setField(fo[0].name);
|
|
107
|
+
onFieldChange(fo[0].name, fo);
|
|
105
108
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
// Effect hook to update UI when field selection changes
|
|
109
|
-
(0, react_1.useEffect)(() => {
|
|
110
|
-
if (field !== '') {
|
|
111
|
-
const selectedOption = fieldOptions.find((option) => option.name === field);
|
|
112
|
-
if (selectedOption) {
|
|
113
|
-
const fv = getFieldValues(selectedOption.name, selectedOption.table);
|
|
114
|
-
setFieldValues(fv);
|
|
115
|
-
if (!selectedOptions.every((item) => fv
|
|
116
|
-
.map((v) => v.toLowerCase())
|
|
117
|
-
.includes(item.value.toLowerCase()))) {
|
|
118
|
-
setSelectedOptions([]);
|
|
119
|
-
}
|
|
120
|
-
setType((0, filterProcessing_1.getType)(selectedOption.type));
|
|
121
|
-
setTable(selectedOption.table);
|
|
109
|
+
else {
|
|
110
|
+
onFieldChange(field !== '' ? field : filter?.field ?? '', fo);
|
|
122
111
|
}
|
|
123
112
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
setFieldValues([]);
|
|
127
|
-
setSelectedOptions([]);
|
|
128
|
-
}
|
|
129
|
-
}, [field, fieldOptions]);
|
|
130
|
-
// Effect hook to update operator options based on selected field type
|
|
131
|
-
(0, react_1.useEffect)(() => {
|
|
113
|
+
}, [schema]);
|
|
114
|
+
function onTypeChange(type) {
|
|
132
115
|
if (type) {
|
|
133
116
|
const options = customOperatorOptions?.[type] ?? allOperatorOptions[type];
|
|
134
117
|
if (options) {
|
|
@@ -137,18 +120,22 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
137
120
|
switch (type) {
|
|
138
121
|
case 'string':
|
|
139
122
|
setOperator(Filter_1.StringOperator.Is);
|
|
123
|
+
onOperatorChange(Filter_1.StringOperator.Is);
|
|
140
124
|
setValue('');
|
|
141
125
|
break;
|
|
142
126
|
case 'date':
|
|
143
127
|
setOperator(Filter_1.DateOperator.InTheLast);
|
|
128
|
+
onOperatorChange(Filter_1.DateOperator.InTheLast);
|
|
144
129
|
setValue('90');
|
|
145
130
|
break;
|
|
146
131
|
case 'number':
|
|
147
132
|
setOperator(Filter_1.NumberOperator.EqualTo);
|
|
133
|
+
onOperatorChange(Filter_1.NumberOperator.EqualTo);
|
|
148
134
|
setValue('0');
|
|
149
135
|
break;
|
|
150
136
|
case 'boolean':
|
|
151
137
|
setOperator(Filter_1.BoolOperator.EqualTo);
|
|
138
|
+
onOperatorChange(Filter_1.BoolOperator.EqualTo);
|
|
152
139
|
setValue(true);
|
|
153
140
|
break;
|
|
154
141
|
}
|
|
@@ -161,31 +148,94 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
161
148
|
else {
|
|
162
149
|
setOperatorOptions([]);
|
|
163
150
|
setOperator('');
|
|
164
|
-
|
|
151
|
+
onOperatorChange('');
|
|
165
152
|
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
(0, react_1.useEffect)(() => {
|
|
153
|
+
}
|
|
154
|
+
function onOperatorChange(operator) {
|
|
169
155
|
if (operator === '') {
|
|
170
156
|
setValue('');
|
|
171
157
|
}
|
|
172
158
|
if (typeof value !== 'string' &&
|
|
173
159
|
typeof value !== 'number' &&
|
|
174
160
|
typeof value !== 'boolean' &&
|
|
175
|
-
operator !== Filter_1.DateOperator.Custom
|
|
161
|
+
operator !== Filter_1.DateOperator.Custom &&
|
|
162
|
+
(filterInitialized || !filter)) {
|
|
176
163
|
setValue('');
|
|
177
164
|
}
|
|
165
|
+
else if (type === Filter_1.FieldTypes.Date &&
|
|
166
|
+
[
|
|
167
|
+
Filter_1.DateOperator.GreaterThan,
|
|
168
|
+
Filter_1.DateOperator.GreaterThanOrEqualTo,
|
|
169
|
+
Filter_1.DateOperator.EqualTo,
|
|
170
|
+
Filter_1.DateOperator.LessThan,
|
|
171
|
+
Filter_1.DateOperator.LessThanOrEqualTo,
|
|
172
|
+
Filter_1.DateOperator.NotEqualTo,
|
|
173
|
+
].includes(operator) &&
|
|
174
|
+
!(0, date_fns_1.isValid)((0, date_fns_1.parse)(value, 'yyyy-mm-dd', new Date())) &&
|
|
175
|
+
(filterInitialized || !filter)) {
|
|
176
|
+
setValue((0, date_fns_1.startOfToday)().toISOString().substring(0, 10));
|
|
177
|
+
}
|
|
178
|
+
else if (type === Filter_1.FieldTypes.Date &&
|
|
179
|
+
[
|
|
180
|
+
Filter_1.DateOperator.InTheLast,
|
|
181
|
+
Filter_1.DateOperator.InTheCurrent,
|
|
182
|
+
Filter_1.DateOperator.InThePrevious,
|
|
183
|
+
].includes(operator) &&
|
|
184
|
+
(value === '' || (typeof value !== 'number' && isNaN(Number(value)))) &&
|
|
185
|
+
(filterInitialized || !filter)) {
|
|
186
|
+
setValue('90');
|
|
187
|
+
}
|
|
178
188
|
const options = getUnits(operator);
|
|
179
189
|
setUnitOptions(options);
|
|
180
|
-
if (
|
|
190
|
+
if (unit === '' && options.length > 0) {
|
|
191
|
+
setUnit(Filter_1.TimeUnit.Day);
|
|
192
|
+
}
|
|
193
|
+
else if (!options || !options.includes(unit)) {
|
|
181
194
|
setUnit('');
|
|
182
195
|
}
|
|
183
|
-
}
|
|
184
|
-
(
|
|
185
|
-
if (
|
|
186
|
-
|
|
196
|
+
}
|
|
197
|
+
function onFieldChange(field, fieldOptions) {
|
|
198
|
+
if (field !== '') {
|
|
199
|
+
const selectedOption = fieldOptions.find((option) => option.name === field);
|
|
200
|
+
if (selectedOption) {
|
|
201
|
+
const fieldValues = getFieldValues(selectedOption.name, selectedOption.table);
|
|
202
|
+
if (filterInitialized || !filter) {
|
|
203
|
+
if (!selectedOptions.every((item) => fieldValues
|
|
204
|
+
.map((v) => v.toLowerCase())
|
|
205
|
+
.includes(item.value.toLowerCase()))) {
|
|
206
|
+
setSelectedOptions([]);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const preSelected = Array.isArray(filter.value)
|
|
211
|
+
? filter.value.map((val) => {
|
|
212
|
+
return { label: val, value: val };
|
|
213
|
+
})
|
|
214
|
+
: [];
|
|
215
|
+
// if a filter comes with invalid choices, include them anyway
|
|
216
|
+
const valuesSet = new Set(fieldValues.map((v) => v.toLowerCase()));
|
|
217
|
+
preSelected.forEach((option) => {
|
|
218
|
+
if (!valuesSet.has(option.value.toLowerCase())) {
|
|
219
|
+
valuesSet.add(option.value.toLowerCase());
|
|
220
|
+
fieldValues.push(option.value);
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
setFieldValues(fieldValues);
|
|
225
|
+
setType((0, filterProcessing_1.getType)(selectedOption.type));
|
|
226
|
+
onTypeChange((0, filterProcessing_1.getType)(selectedOption.type));
|
|
227
|
+
if (selectedOption.table !== '') {
|
|
228
|
+
setTable(selectedOption.table);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
187
231
|
}
|
|
188
|
-
|
|
232
|
+
else {
|
|
233
|
+
setType('');
|
|
234
|
+
onTypeChange('');
|
|
235
|
+
setFieldValues([]);
|
|
236
|
+
setSelectedOptions([]);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
189
239
|
// Function that returns the list of units used for certain DateOperators
|
|
190
240
|
const getUnits = (operator) => {
|
|
191
241
|
switch (operator) {
|
|
@@ -230,7 +280,17 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
230
280
|
// Handler for operator selection change
|
|
231
281
|
const handleOperatorChange = (event) => {
|
|
232
282
|
const newOp = event.target.value;
|
|
233
|
-
|
|
283
|
+
if (typeof newOp === 'string') {
|
|
284
|
+
setOperator(newOp);
|
|
285
|
+
onOperatorChange(newOp);
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
const handleFieldChange = (event) => {
|
|
289
|
+
const newField = event.target.value;
|
|
290
|
+
if (typeof newField === 'string' && newField !== field) {
|
|
291
|
+
setField(newField);
|
|
292
|
+
onFieldChange(newField, fieldOptions);
|
|
293
|
+
}
|
|
234
294
|
};
|
|
235
295
|
// Handler for date range selection
|
|
236
296
|
const handleDateRangeSelect = (date) => {
|
|
@@ -243,6 +303,7 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
243
303
|
}
|
|
244
304
|
}
|
|
245
305
|
setOperator(Filter_1.DateOperator.Custom);
|
|
306
|
+
onOperatorChange(Filter_1.DateOperator.Custom);
|
|
246
307
|
};
|
|
247
308
|
// Handler for form submission
|
|
248
309
|
const handleSubmit = () => {
|
|
@@ -260,7 +321,9 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
260
321
|
switch (operator) {
|
|
261
322
|
case Filter_1.DateOperator.InTheLast:
|
|
262
323
|
case Filter_1.DateOperator.InThePrevious:
|
|
263
|
-
if (
|
|
324
|
+
if (value === undefined ||
|
|
325
|
+
value === '' ||
|
|
326
|
+
(typeof value !== 'number' && isNaN(Number(value)))) {
|
|
264
327
|
alert('Please specify a valid number');
|
|
265
328
|
return;
|
|
266
329
|
}
|
|
@@ -368,7 +431,7 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
368
431
|
});
|
|
369
432
|
break;
|
|
370
433
|
default:
|
|
371
|
-
if (typeof value !== 'string') {
|
|
434
|
+
if (typeof value !== 'string' || value === '') {
|
|
372
435
|
alert('Please specify a valid string');
|
|
373
436
|
return;
|
|
374
437
|
}
|
|
@@ -446,6 +509,9 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
446
509
|
const handleDelete = () => {
|
|
447
510
|
onDeleteFilter();
|
|
448
511
|
};
|
|
512
|
+
if (filter && !filterInitialized) {
|
|
513
|
+
return null; // prevent flashing
|
|
514
|
+
}
|
|
449
515
|
return ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
450
516
|
display: 'flex',
|
|
451
517
|
flexDirection: 'column',
|
|
@@ -461,7 +527,7 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
461
527
|
gap: '20px',
|
|
462
528
|
flexDirection: 'row',
|
|
463
529
|
width: '100%',
|
|
464
|
-
}, children: [(0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', gap: 20 }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { value: field, width: 200, onChange:
|
|
530
|
+
}, children: [(0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', gap: 20 }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { value: field, width: 200, onChange: handleFieldChange, options: [
|
|
465
531
|
...fieldOptions.map((option) => ({
|
|
466
532
|
value: option.name,
|
|
467
533
|
label: option.table !== ''
|
|
@@ -476,33 +542,33 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
476
542
|
? `${operator} one of`
|
|
477
543
|
: operator,
|
|
478
544
|
})),
|
|
479
|
-
] }) })), (
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
545
|
+
] }) })), (() => {
|
|
546
|
+
switch (operator) {
|
|
547
|
+
case Filter_1.BoolOperator.EqualTo:
|
|
548
|
+
case Filter_1.BoolOperator.NotEqualTo:
|
|
549
|
+
case Filter_1.StringOperator.IsExactly:
|
|
550
|
+
case Filter_1.StringOperator.IsNotExactly:
|
|
551
|
+
case Filter_1.StringOperator.Contains:
|
|
552
|
+
case Filter_1.NumberOperator.EqualTo:
|
|
553
|
+
case Filter_1.NumberOperator.NotEqualTo:
|
|
554
|
+
case Filter_1.NumberOperator.GreaterThan:
|
|
555
|
+
case Filter_1.NumberOperator.LessThan:
|
|
556
|
+
case Filter_1.NumberOperator.GreaterThanOrEqualTo:
|
|
557
|
+
case Filter_1.NumberOperator.LessThanOrEqualTo:
|
|
558
|
+
if (type === 'boolean') {
|
|
559
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', gap: 20 }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { value: value, width: 200, onChange: (event) => setValue(event.target.value), options: [
|
|
494
560
|
{ value: true, label: 'true' },
|
|
495
561
|
{ value: false, label: 'false' },
|
|
496
|
-
] }));
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
562
|
+
] }) }));
|
|
563
|
+
}
|
|
564
|
+
else {
|
|
565
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', gap: 20 }, children: (0, jsx_runtime_1.jsx)(TextInputComponent, { value: value, width: 120, onChange: (event) => {
|
|
500
566
|
setValue(event.target.value);
|
|
501
|
-
} }));
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
567
|
+
} }) }));
|
|
568
|
+
}
|
|
569
|
+
case Filter_1.StringOperator.Is:
|
|
570
|
+
case Filter_1.StringOperator.IsNot:
|
|
571
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', gap: 20 }, children: (0, jsx_runtime_1.jsx)(MultiSelectComponent, { options: fieldValues.map((v) => {
|
|
506
572
|
return { value: v.toLowerCase(), label: v };
|
|
507
573
|
}), width: 200, value: selectedOptions.map((val) => val.value.toLowerCase()), onChange: (e) => {
|
|
508
574
|
if (e.target.value === '') {
|
|
@@ -520,9 +586,9 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
520
586
|
};
|
|
521
587
|
});
|
|
522
588
|
setSelectedOptions(jsonValue);
|
|
523
|
-
} }));
|
|
524
|
-
|
|
525
|
-
|
|
589
|
+
} }) }));
|
|
590
|
+
case Filter_1.DateOperator.Custom:
|
|
591
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', gap: 20 }, children: (0, jsx_runtime_1.jsx)(QuillDateRangePicker_1.QuillDateRangePicker, { dateRange: {
|
|
526
592
|
startDate: startDate
|
|
527
593
|
? new Date(startDate + 'T00:00:00')
|
|
528
594
|
: (0, date_fns_1.startOfToday)(),
|
|
@@ -534,37 +600,35 @@ function FilterModal({ schema, filter, fieldValuesMap, customOperatorOptions, on
|
|
|
534
600
|
from: value.startDate,
|
|
535
601
|
to: value.endDate,
|
|
536
602
|
});
|
|
537
|
-
} }));
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
// { value: 'Select', label: 'Select' },
|
|
544
|
-
...unitOptions.map((unit) => ({
|
|
545
|
-
value: unit,
|
|
546
|
-
label: `${unit}${value && value !== '1' && value !== 1
|
|
547
|
-
? 's'
|
|
548
|
-
: ''}`,
|
|
549
|
-
})),
|
|
550
|
-
] }) }))] }));
|
|
551
|
-
case Filter_1.DateOperator.InTheCurrent:
|
|
552
|
-
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: unitOptions.length > 0 && ((0, jsx_runtime_1.jsx)("div", { style: { marginLeft: '10px', marginRight: '10px' }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { value: unit, width: 200, onChange: (event) => setUnit(event.target.value), options: [
|
|
603
|
+
} }) }));
|
|
604
|
+
case Filter_1.DateOperator.InTheLast:
|
|
605
|
+
case Filter_1.DateOperator.InThePrevious:
|
|
606
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'row' }, children: [(0, jsx_runtime_1.jsx)(TextInputComponent, { value: value, width: 120, onChange: (event) => {
|
|
607
|
+
setValue(event.target.value);
|
|
608
|
+
} }), unitOptions.length > 0 && ((0, jsx_runtime_1.jsx)("div", { style: { marginLeft: '10px' }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { value: unit, width: 200, onChange: (event) => setUnit(event.target.value), options: [
|
|
553
609
|
// { value: 'Select', label: 'Select' },
|
|
554
610
|
...unitOptions.map((unit) => ({
|
|
555
611
|
value: unit,
|
|
556
|
-
label: `${unit}${
|
|
557
|
-
value &&
|
|
558
|
-
value !== '1' &&
|
|
559
|
-
value !== 1
|
|
560
|
-
? 's'
|
|
561
|
-
: ''}`,
|
|
612
|
+
label: `${unit}${value && value !== '1' && value !== 1 ? 's' : ''}`,
|
|
562
613
|
})),
|
|
563
|
-
] }) })) }));
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
614
|
+
] }) }))] }));
|
|
615
|
+
case Filter_1.DateOperator.InTheCurrent:
|
|
616
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', gap: 20 }, children: unitOptions.length > 0 && ((0, jsx_runtime_1.jsx)(SelectComponent, { value: unit, width: 200, onChange: (event) => setUnit(event.target.value), options: [
|
|
617
|
+
// { value: 'Select', label: 'Select' },
|
|
618
|
+
...unitOptions.map((unit) => ({
|
|
619
|
+
value: unit,
|
|
620
|
+
label: `${unit}${operator !== Filter_1.DateOperator.InTheCurrent &&
|
|
621
|
+
value &&
|
|
622
|
+
value !== '1' &&
|
|
623
|
+
value !== 1
|
|
624
|
+
? 's'
|
|
625
|
+
: ''}`,
|
|
626
|
+
})),
|
|
627
|
+
] })) }));
|
|
628
|
+
default:
|
|
629
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
|
|
630
|
+
}
|
|
631
|
+
})()] }) }), (0, jsx_runtime_1.jsx)("div", { style: {
|
|
568
632
|
display: 'flex',
|
|
569
633
|
flexDirection: 'row',
|
|
570
634
|
justifyContent: 'flex-end',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/convert.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,IAAI,GAAG,EACpB,GAAG,EAOJ,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAQ5C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAuBlE;AAGD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,QAahB;AAGD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,QAalB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAoDpD;AAUD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,YAAY,EAAE,KAAK,EAAE,GACpB,GAAG,CAAC,MAAM,CA8BZ;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAkBrE;AAmID,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,UAAU,EAAE,cAAc,EAAE,GAC3B,KAAK,GAAG,IAAI,CAmFd;AA+BD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,KAAK,EAAE,EACrB,SAAS,CAAC,EAAE,KAAK;;;;;;
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/convert.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,IAAI,GAAG,EACpB,GAAG,EAOJ,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAQ5C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAuBlE;AAGD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,QAahB;AAGD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,QAalB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAoDpD;AAUD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,YAAY,EAAE,KAAK,EAAE,GACpB,GAAG,CAAC,MAAM,CA8BZ;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAkBrE;AAmID,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,UAAU,EAAE,cAAc,EAAE,GAC3B,KAAK,GAAG,IAAI,CAmFd;AA+BD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,KAAK,EAAE,EACrB,SAAS,CAAC,EAAE,KAAK;;;;;;EAuFlB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,OAyNtE;AAID,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAY1E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,OA+C5C"}
|
|
@@ -413,8 +413,7 @@ function convertGroupBy(ast, schemaTables, prevPivot) {
|
|
|
413
413
|
const existingCol = columnAlreadyExists(prevPivot.columnField);
|
|
414
414
|
newColumns.push(existingCol ?? (0, util_1.generateColumnExpr)(prevPivot.columnField));
|
|
415
415
|
}
|
|
416
|
-
ast
|
|
417
|
-
return { pivot: prevPivot, ast };
|
|
416
|
+
return { pivot: prevPivot, ast: { ...ast, columns: newColumns } };
|
|
418
417
|
}
|
|
419
418
|
pivot = convertASTToPivotData(ast, columns);
|
|
420
419
|
if (pivot && Object.keys(pivot).length === 0) {
|
|
@@ -2,6 +2,8 @@ import { ReactNode } from 'react';
|
|
|
2
2
|
import { SidebarComponentProps, ContainerComponentProps } from '../UiComponents';
|
|
3
3
|
import { Filter } from '../../models/Filter';
|
|
4
4
|
import { ColumnInternal } from '../../models/Columns';
|
|
5
|
+
import { FilterTreeNode } from '../../utils/astFilterProcessing';
|
|
6
|
+
import { Client } from '../../models/Client';
|
|
5
7
|
/**
|
|
6
8
|
* This file is a collection of basic UI components that conform to the shape
|
|
7
9
|
* expected by the Report Builder. Where possible, we use our existing
|
|
@@ -108,6 +110,12 @@ export interface FilterPopoverWrapperProps {
|
|
|
108
110
|
FilterTagComponent: any;
|
|
109
111
|
FilterModal: any;
|
|
110
112
|
fieldValuesMap: any;
|
|
113
|
+
priorFilters?: FilterTreeNode[];
|
|
114
|
+
columns?: ColumnInternal[];
|
|
115
|
+
client?: Client;
|
|
116
|
+
customFields?: any;
|
|
117
|
+
baseAst?: any;
|
|
118
|
+
endpoint?: string;
|
|
111
119
|
customOperatorOptions?: any;
|
|
112
120
|
ButtonComponent: any;
|
|
113
121
|
SecondaryButtonComponent: any;
|
|
@@ -118,5 +126,5 @@ export interface FilterPopoverWrapperProps {
|
|
|
118
126
|
handleFilterSave: (filter: Filter) => void;
|
|
119
127
|
containerStyle?: any;
|
|
120
128
|
}
|
|
121
|
-
export declare const FilterPopoverWrapper: ({ schema, filter, filterLabel, index, FilterTagComponent, FilterModal, fieldValuesMap, customOperatorOptions, ButtonComponent, SecondaryButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, handleFilterDelete, handleFilterSave, containerStyle, }: FilterPopoverWrapperProps) => import("react/jsx-runtime").JSX.Element;
|
|
129
|
+
export declare const FilterPopoverWrapper: ({ schema, filter, filterLabel, index, FilterTagComponent, FilterModal, fieldValuesMap, priorFilters, columns, client, customFields, baseAst, endpoint, customOperatorOptions, ButtonComponent, SecondaryButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, handleFilterDelete, handleFilterSave, containerStyle, }: FilterPopoverWrapperProps) => import("react/jsx-runtime").JSX.Element;
|
|
122
130
|
//# sourceMappingURL=ui.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/ui.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/ui.tsx"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,9 @@ const QuillTable_1 = __importDefault(require("../QuillTable"));
|
|
|
11
11
|
const Context_1 = require("../../Context");
|
|
12
12
|
const util_1 = require("./util");
|
|
13
13
|
const csv_1 = require("../../utils/csv");
|
|
14
|
+
const paginationProcessing_1 = require("../../utils/paginationProcessing");
|
|
15
|
+
const filterProcessing_1 = require("../../utils/filterProcessing");
|
|
16
|
+
const tableProcessing_1 = require("../../utils/tableProcessing");
|
|
14
17
|
/**
|
|
15
18
|
* This file is a collection of basic UI components that conform to the shape
|
|
16
19
|
* expected by the Report Builder. Where possible, we use our existing
|
|
@@ -62,7 +65,7 @@ exports.QuillSecondaryButton = QuillSecondaryButton;
|
|
|
62
65
|
// TODO: remove this, I think it is unused.
|
|
63
66
|
const QuillReportBuilderTable = ({ rows, columns, error, ...props }) => {
|
|
64
67
|
const reformattedColumns = columns.map((c) => ({ label: c, field: c }));
|
|
65
|
-
return ((0, jsx_runtime_1.jsx)("div", { style: { height: '100%', overflow: 'auto' }, children: (0, jsx_runtime_1.jsx)(QuillTable_1.default, { rows: rows, columns: reformattedColumns, rowsPerPage:
|
|
68
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { height: '100%', overflow: 'auto' }, children: (0, jsx_runtime_1.jsx)(QuillTable_1.default, { rows: rows, columns: reformattedColumns, rowsPerPage: paginationProcessing_1.DEFAULT_PAGINATION.rowsPerPage, hideCSVDownloadButton: rows?.length > 0, downloadCSV: () => (0, csv_1.downloadCSV)({ rows, fields: reformattedColumns, name: 'my_report' }), emptyStateLabel: error || 'No results', ...props }) }));
|
|
66
69
|
};
|
|
67
70
|
exports.QuillReportBuilderTable = QuillReportBuilderTable;
|
|
68
71
|
exports.QuillTag = (0, react_1.forwardRef)(({ label, onClick, children, onClickDelete, hideDelete = false }, forwardedRef) => {
|
|
@@ -392,12 +395,43 @@ const AddFilterPopover = ({ onSave, Button, renderNode, activeEditItem, }) => {
|
|
|
392
395
|
}, children: (0, jsx_runtime_1.jsx)(Button, { onClick: handleOnClick, label: 'Add filter' }) })] }));
|
|
393
396
|
};
|
|
394
397
|
exports.AddFilterPopover = AddFilterPopover;
|
|
395
|
-
const FilterPopoverWrapper = ({ schema, filter, filterLabel, index, FilterTagComponent, FilterModal, fieldValuesMap, customOperatorOptions, ButtonComponent, SecondaryButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, handleFilterDelete, handleFilterSave, containerStyle, }) => {
|
|
398
|
+
const FilterPopoverWrapper = ({ schema, filter, filterLabel, index, FilterTagComponent, FilterModal, fieldValuesMap, priorFilters, columns, client, customFields, baseAst, endpoint, customOperatorOptions, ButtonComponent, SecondaryButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, handleFilterDelete, handleFilterSave, containerStyle, }) => {
|
|
396
399
|
const [isOpen, setIsOpen] = (0, react_1.useState)(false);
|
|
400
|
+
const [uniqueValues, setUniqueValues] = (0, react_1.useState)(undefined);
|
|
401
|
+
// Use a ref to store the previous value of priorFilters
|
|
402
|
+
const prevFiltersRef = (0, react_1.useRef)('');
|
|
403
|
+
(0, react_1.useEffect)(() => {
|
|
404
|
+
const currentFiltersString = JSON.stringify(priorFilters);
|
|
405
|
+
if (currentFiltersString !== prevFiltersRef.current) {
|
|
406
|
+
prevFiltersRef.current = currentFiltersString;
|
|
407
|
+
if (priorFilters) {
|
|
408
|
+
getFieldValuesMapByFilters(priorFilters);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}, [priorFilters]);
|
|
412
|
+
// This function retrieves the appropriate unique values given a set of filters
|
|
413
|
+
async function getFieldValuesMapByFilters(filters) {
|
|
414
|
+
if (!columns || !client || !endpoint || !baseAst) {
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
const { query, success, error } = await (0, filterProcessing_1.buildQueryFromFilters)(baseAst, filters, endpoint, client);
|
|
419
|
+
if (success && query) {
|
|
420
|
+
const { uniqueStrings } = await (0, tableProcessing_1.getRelevantInfoFromQuery)(columns, client, query, customFields);
|
|
421
|
+
const fieldValues = uniqueStrings && Object.keys(uniqueStrings).length !== 0
|
|
422
|
+
? (0, filterProcessing_1.uniqueValuesToStringMap)(uniqueStrings)
|
|
423
|
+
: fieldValuesMap; // Fallback in case Promise comes up empty
|
|
424
|
+
setUniqueValues(fieldValues);
|
|
425
|
+
}
|
|
426
|
+
else if (error) {
|
|
427
|
+
console.error(error);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
397
431
|
function handleClickDelete() {
|
|
398
432
|
handleFilterDelete(index);
|
|
399
433
|
}
|
|
400
|
-
return ((0, jsx_runtime_1.jsx)("div", { style: containerStyle, children: (0, jsx_runtime_1.jsx)(FilterTagComponent, { isOpen: isOpen, popoverTitle: "Edit Filter", filterLabel: filterLabel, onClickDelete: handleClickDelete, setIsOpen: setIsOpen, popoverChildren: (0, jsx_runtime_1.jsx)(FilterModal, { schema: schema, filter: filter, fieldValuesMap: fieldValuesMap, customOperatorOptions: customOperatorOptions, onSubmitFilter: (filter) => {
|
|
434
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: containerStyle, children: (0, jsx_runtime_1.jsx)(FilterTagComponent, { isOpen: isOpen, popoverTitle: "Edit Filter", filterLabel: filterLabel, onClickDelete: handleClickDelete, setIsOpen: setIsOpen, popoverChildren: (0, jsx_runtime_1.jsx)(FilterModal, { schema: schema, filter: filter, fieldValuesMap: uniqueValues ?? fieldValuesMap, customOperatorOptions: customOperatorOptions, onSubmitFilter: (filter) => {
|
|
401
435
|
handleFilterSave(filter);
|
|
402
436
|
setIsOpen(false);
|
|
403
437
|
}, onDeleteFilter: handleClickDelete, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, SecondaryButtonComponent: SecondaryButtonComponent ?? undefined, MultiSelectComponent: MultiSelectComponent }) }) }));
|
|
@@ -69,7 +69,11 @@ export declare const getDateFilterInfo: (node: any) => {
|
|
|
69
69
|
intervalType: any;
|
|
70
70
|
intervalPaths: any;
|
|
71
71
|
};
|
|
72
|
-
export declare function removeNonSelectedTableReferences(ast: any, table: string, columns: string[]
|
|
72
|
+
export declare function removeNonSelectedTableReferences(ast: any, table: string, columns: string[], uniqueValues: {
|
|
73
|
+
[column: string]: {
|
|
74
|
+
[value: string]: boolean;
|
|
75
|
+
};
|
|
76
|
+
} | null): any;
|
|
73
77
|
export declare function allNumericNodesValidInTree(node: any): boolean;
|
|
74
78
|
export declare function isIdColumn(columnName?: string): boolean | "" | undefined;
|
|
75
79
|
export declare function getCustomSentence(node: any, databaseType: string): string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/util.ts"],"names":[],"mappings":"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"}
|