@openui5/sap.ui.mdc 1.133.2 → 1.133.3
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/package.json +4 -4
- package/src/sap/ui/mdc/.library +1 -1
- package/src/sap/ui/mdc/ActionToolbar.js +1 -1
- package/src/sap/ui/mdc/Chart.js +1 -1
- package/src/sap/ui/mdc/Control.js +1 -1
- package/src/sap/ui/mdc/DefaultTypeMap.js +1 -1
- package/src/sap/ui/mdc/Element.js +1 -1
- package/src/sap/ui/mdc/Field.js +2 -2
- package/src/sap/ui/mdc/FilterBar.js +1 -1
- package/src/sap/ui/mdc/FilterField.js +2 -2
- package/src/sap/ui/mdc/Link.js +1 -1
- package/src/sap/ui/mdc/MultiValueField.js +1 -1
- package/src/sap/ui/mdc/ValueHelp.js +1 -1
- package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +1 -1
- package/src/sap/ui/mdc/chart/ChartImplementationContainer.js +1 -1
- package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -1
- package/src/sap/ui/mdc/chart/PropertyHelper.js +1 -1
- package/src/sap/ui/mdc/chart/ToolbarControlFactory.js +1 -1
- package/src/sap/ui/mdc/condition/Condition.js +1 -1
- package/src/sap/ui/mdc/condition/ConditionConverter.js +1 -1
- package/src/sap/ui/mdc/condition/ConditionModel.js +1 -1
- package/src/sap/ui/mdc/condition/FilterConverter.js +90 -56
- package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +40 -3
- package/src/sap/ui/mdc/condition/Operator.js +1 -1
- package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +1 -1
- package/src/sap/ui/mdc/condition/RangeOperator.js +1 -1
- package/src/sap/ui/mdc/field/ConditionType.js +1 -1
- package/src/sap/ui/mdc/field/ConditionTypeMixin.js +1 -1
- package/src/sap/ui/mdc/field/ConditionsType.js +1 -1
- package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
- package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +1 -1
- package/src/sap/ui/mdc/field/FieldBase.js +1 -1
- package/src/sap/ui/mdc/field/FieldInfoBase.js +1 -1
- package/src/sap/ui/mdc/field/FieldInput.js +1 -1
- package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
- package/src/sap/ui/mdc/field/FieldMultiInput.js +1 -1
- package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
- package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
- package/src/sap/ui/mdc/field/TokenDisplay.js +1 -1
- package/src/sap/ui/mdc/field/TokenizerDisplay.js +1 -1
- package/src/sap/ui/mdc/filterbar/FilterBarBase.js +1 -1
- package/src/sap/ui/mdc/filterbar/PropertyHelper.js +1 -1
- package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +1 -1
- package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +1 -1
- package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
- package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
- package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
- package/src/sap/ui/mdc/flexibility/actiontoolbar/CombineAction.js +1 -1
- package/src/sap/ui/mdc/flexibility/actiontoolbar/SplitAction.js +1 -1
- package/src/sap/ui/mdc/library.js +2 -2
- package/src/sap/ui/mdc/link/Factory.js +1 -1
- package/src/sap/ui/mdc/link/LinkItem.js +1 -1
- package/src/sap/ui/mdc/link/Panel.js +1 -1
- package/src/sap/ui/mdc/link/PanelItem.js +1 -1
- package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
- package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
- package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
- package/src/sap/ui/mdc/mixin/AdaptationMixin.js +1 -1
- package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -1
- package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -1
- package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
- package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +1 -1
- package/src/sap/ui/mdc/odata/TypeMap.js +1 -1
- package/src/sap/ui/mdc/odata/v4/TypeMap.js +1 -1
- package/src/sap/ui/mdc/p13n/PropertyHelper.js +1 -1
- package/src/sap/ui/mdc/table/ColumnSettings.js +1 -1
- package/src/sap/ui/mdc/table/CreationRow.js +1 -1
- package/src/sap/ui/mdc/table/DragDropConfig.js +1 -1
- package/src/sap/ui/mdc/table/PropertyHelper.js +1 -1
- package/src/sap/ui/mdc/table/ResponsiveColumnSettings.js +1 -1
- package/src/sap/ui/mdc/table/RowActionItem.js +1 -1
- package/src/sap/ui/mdc/table/RowSettings.js +1 -1
- package/src/sap/ui/mdc/table/V4AnalyticsPropertyHelper.js +1 -1
- package/src/sap/ui/mdc/table/utils/Personalization.js +1 -1
- package/src/sap/ui/mdc/ushell/SemanticObjectMapping.js +1 -1
- package/src/sap/ui/mdc/ushell/SemanticObjectMappingItem.js +1 -1
- package/src/sap/ui/mdc/ushell/SemanticObjectUnavailableAction.js +1 -1
- package/src/sap/ui/mdc/util/InfoBar.js +1 -1
- package/src/sap/ui/mdc/util/PromiseCache.js +1 -1
- package/src/sap/ui/mdc/util/PropertyHelper.js +1 -1
- package/src/sap/ui/mdc/util/PropertyHelperUtil.js +1 -1
- package/src/sap/ui/mdc/valuehelp/Dialog.js +1 -1
- package/src/sap/ui/mdc/valuehelp/FilterBar.js +1 -1
- package/src/sap/ui/mdc/valuehelp/Popover.js +1 -1
- package/src/sap/ui/mdc/valuehelp/base/Container.js +1 -1
- package/src/sap/ui/mdc/valuehelp/base/Content.js +1 -1
- package/src/sap/ui/mdc/valuehelp/base/DefineConditionPanel.js +1 -1
- package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +1 -1
- package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +1 -1
- package/src/sap/ui/mdc/valuehelp/base/ListContent.js +1 -1
- package/src/sap/ui/mdc/valuehelp/content/Bool.js +1 -1
- package/src/sap/ui/mdc/valuehelp/content/Conditions.js +1 -1
- package/src/sap/ui/mdc/valuehelp/content/FixedList.js +1 -1
- package/src/sap/ui/mdc/valuehelp/content/FixedListItem.js +1 -1
- package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +1 -1
- package/src/sap/ui/mdc/valuehelp/content/MTable.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openui5/sap.ui.mdc",
|
|
3
|
-
"version": "1.133.
|
|
3
|
+
"version": "1.133.3",
|
|
4
4
|
"description": "OpenUI5 UI Library sap.ui.mdc",
|
|
5
5
|
"author": "SAP SE (https://www.sap.com)",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"url": "https://github.com/SAP/openui5.git"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@openui5/sap.m": "1.133.
|
|
18
|
-
"@openui5/sap.ui.core": "1.133.
|
|
19
|
-
"@openui5/sap.ui.layout": "1.133.
|
|
17
|
+
"@openui5/sap.m": "1.133.3",
|
|
18
|
+
"@openui5/sap.ui.core": "1.133.3",
|
|
19
|
+
"@openui5/sap.ui.layout": "1.133.3"
|
|
20
20
|
}
|
|
21
21
|
}
|
package/src/sap/ui/mdc/.library
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<copyright>OpenUI5
|
|
7
7
|
* (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
|
|
8
8
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
|
|
9
|
-
<version>1.133.
|
|
9
|
+
<version>1.133.3</version>
|
|
10
10
|
|
|
11
11
|
<documentation>UI5 library: sap.ui.mdc</documentation>
|
|
12
12
|
|
package/src/sap/ui/mdc/Chart.js
CHANGED
package/src/sap/ui/mdc/Field.js
CHANGED
|
@@ -54,13 +54,13 @@ sap.ui.define([
|
|
|
54
54
|
* @implements sap.ui.core.IFormContent, sap.ui.core.ISemanticFormContent, sap.m.IOverflowToolbarContent
|
|
55
55
|
*
|
|
56
56
|
* @author SAP SE
|
|
57
|
-
* @version 1.133.
|
|
57
|
+
* @version 1.133.3
|
|
58
58
|
*
|
|
59
59
|
* @constructor
|
|
60
60
|
* @alias sap.ui.mdc.Field
|
|
61
61
|
* @see {@link topic:1dd2aa91115d43409452a271d11be95b sap.ui.mdc}
|
|
62
62
|
* @see {@link topic:5260b9ca249f465ab33769b9edb442aa Field Building Block (OData V4)}
|
|
63
|
-
* @version 1.133.
|
|
63
|
+
* @version 1.133.3
|
|
64
64
|
* @since 1.54.0
|
|
65
65
|
* @public
|
|
66
66
|
*/
|
|
@@ -42,7 +42,7 @@ sap.ui.define([
|
|
|
42
42
|
* The metadata information is provided via the {@link module:sap/ui/mdc/FilterBarDelegate FilterBarDelegate} implementation. This implementation has to be provided by the application.
|
|
43
43
|
* @extends sap.ui.mdc.filterbar.FilterBarBase
|
|
44
44
|
* @author SAP SE
|
|
45
|
-
* @version 1.133.
|
|
45
|
+
* @version 1.133.3
|
|
46
46
|
* @constructor
|
|
47
47
|
* @public
|
|
48
48
|
* @since 1.61.0
|
|
@@ -53,13 +53,13 @@ sap.ui.define([
|
|
|
53
53
|
* @implements sap.ui.core.IFormContent, sap.ui.core.ISemanticFormContent, sap.m.IOverflowToolbarContent
|
|
54
54
|
*
|
|
55
55
|
* @author SAP SE
|
|
56
|
-
* @version 1.133.
|
|
56
|
+
* @version 1.133.3
|
|
57
57
|
*
|
|
58
58
|
* @constructor
|
|
59
59
|
* @alias sap.ui.mdc.FilterField
|
|
60
60
|
* @see {@link topic:1dd2aa91115d43409452a271d11be95b sap.ui.mdc}
|
|
61
61
|
* @see {@link topic:2df783760a8e4540ad19ce5ec3ed91c8 FilterField Building Block (OData V4)}
|
|
62
|
-
* @version 1.133.
|
|
62
|
+
* @version 1.133.3
|
|
63
63
|
* @since 1.48.0
|
|
64
64
|
* @public
|
|
65
65
|
*/
|
package/src/sap/ui/mdc/Link.js
CHANGED
|
@@ -67,7 +67,7 @@ sap.ui.define([
|
|
|
67
67
|
* and {@link sap.ui.mdc.FilterField FilterField} controls using the <code>valueHelp</code> association. One <code>ValueHelp</code> element instance can be
|
|
68
68
|
* assigned to multiple fields (like in different table rows). It should be placed in the control tree on the container holding the fields.
|
|
69
69
|
* @extends sap.ui.mdc.Element
|
|
70
|
-
* @version 1.133.
|
|
70
|
+
* @version 1.133.3
|
|
71
71
|
* @constructor
|
|
72
72
|
* @abstract
|
|
73
73
|
* @public
|
|
@@ -20,7 +20,7 @@ sap.ui.define([
|
|
|
20
20
|
* The action for an {@link sap.ui.mdc.ActionToolbar ActionToolbar} control with given layout information that determines where the wrapped control is displayed on the <code>ActionToolbar</code>.
|
|
21
21
|
* @extends sap.ui.core.Control
|
|
22
22
|
* @author SAP SE
|
|
23
|
-
* @version 1.133.
|
|
23
|
+
* @version 1.133.3
|
|
24
24
|
* @constructor
|
|
25
25
|
* @since 1.58
|
|
26
26
|
* @private
|
|
@@ -21,7 +21,7 @@ sap.ui.define([
|
|
|
21
21
|
* @class The <code>ChartImplementationContainer</code> creates a container for the <code>content</code> (chart) and <code>noDataContent</code>. Based on the <code>showNoDataStruct</code> the <code>content</code> or <code>noDataContent</code> will be shown.
|
|
22
22
|
* @extends sap.ui.core.Control
|
|
23
23
|
* @author SAP SE
|
|
24
|
-
* @version 1.133.
|
|
24
|
+
* @version 1.133.3
|
|
25
25
|
* @constructor
|
|
26
26
|
*
|
|
27
27
|
* @public
|
|
@@ -38,7 +38,7 @@ sap.ui.define([
|
|
|
38
38
|
* @class The <code>ChartSelectionDetails</code> control creates a <code>sap.m.SelectionDetails</code> popover based on metadata and the configuration specified.
|
|
39
39
|
* @extends sap.m.SelectionDetails
|
|
40
40
|
* @author SAP SE
|
|
41
|
-
* @version 1.133.
|
|
41
|
+
* @version 1.133.3
|
|
42
42
|
* @constructor
|
|
43
43
|
* @public
|
|
44
44
|
* @experimental As of version 1.88
|
|
@@ -26,7 +26,7 @@ sap.ui.define([
|
|
|
26
26
|
*
|
|
27
27
|
* @namespace
|
|
28
28
|
* @author SAP SE
|
|
29
|
-
* @version 1.133.
|
|
29
|
+
* @version 1.133.3
|
|
30
30
|
* @since 1.78.0
|
|
31
31
|
* @alias sap.ui.mdc.condition.FilterConverter
|
|
32
32
|
*
|
|
@@ -86,58 +86,102 @@ sap.ui.define([
|
|
|
86
86
|
* @ui5-restricted sap.ui.mdc
|
|
87
87
|
*/
|
|
88
88
|
createFilters: function(oConditions, oConditionTypes, fConvert2FilterCallback, bCaseSensitive) {
|
|
89
|
-
let i, aLocalIncludeFilters, aLocalExcludeFilters, oOperator, oFilter, oNewFilter, oCondition
|
|
89
|
+
let i, aLocalIncludeFilters, aLocalExcludeFilters, oOperator, oFilter, oNewFilter, oCondition;
|
|
90
90
|
const aOverallFilters = [];
|
|
91
91
|
|
|
92
|
-
const convertAnyAllFilter = function(oFilter,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
let
|
|
100
|
-
oFilter.
|
|
101
|
-
|
|
102
|
-
|
|
92
|
+
const convertAnyAllFilter = function(oFilter, sFieldPath, sPropertyPath) {
|
|
93
|
+
if ([FilterOperator.Any,FilterOperator.All].includes(oFilter.getOperator())) {
|
|
94
|
+
// existing Any/All filters are not changed
|
|
95
|
+
return {filter: null, anyAllFilters: [oFilter]};
|
|
96
|
+
} else if (!oFilter.getPath() && oFilter.getFilters()) {
|
|
97
|
+
// in case of nested inner filters call the convertAnyAllFilters for all sub filters.
|
|
98
|
+
const aFilters = [];
|
|
99
|
+
let aAnyAllFilters = [];
|
|
100
|
+
oFilter.getFilters().forEach((oFilter) => {
|
|
101
|
+
// aFilters.push(convertAnyAllFilter(oFilter, sFieldPath, sPropertyPath));
|
|
102
|
+
const oConverted = convertAnyAllFilter(oFilter, sFieldPath, sPropertyPath);
|
|
103
|
+
if (oConverted.filter) {
|
|
104
|
+
aFilters.push(oConverted.filter);
|
|
105
|
+
}
|
|
106
|
+
if (oConverted.anyAllFilters.length > 0) {
|
|
107
|
+
aAnyAllFilters = aAnyAllFilters.concat(oConverted.anyAllFilters);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
103
110
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
// the Any/All filter parameter for all filters of one condition
|
|
111
|
-
return {
|
|
112
|
-
path: sNavPath,
|
|
113
|
-
operator: sOperator,
|
|
114
|
-
variable: sVariable,
|
|
115
|
-
condition: null // this will be set later with the filter statement for all ANY/ALL filters
|
|
116
|
-
};
|
|
117
|
-
} else {
|
|
118
|
-
throw new Error("FilterConverter: not supported binding " + oFilter.sPath);
|
|
111
|
+
let oNewFilter;
|
|
112
|
+
if (aFilters.length === 1) {
|
|
113
|
+
[oNewFilter] = aFilters;
|
|
114
|
+
} else if (aFilters.length > 1){
|
|
115
|
+
oNewFilter = new Filter({filters: aFilters, and: oFilter.isAnd()});
|
|
119
116
|
}
|
|
117
|
+
return {filter: oNewFilter, anyAllFilters: aAnyAllFilters};
|
|
118
|
+
} else if (oFilter.getPath() === sFieldPath) {
|
|
119
|
+
oFilter.sPath = sPropertyPath;
|
|
120
|
+
return {filter: oFilter, anyAllFilters: []};
|
|
120
121
|
}
|
|
121
|
-
return
|
|
122
|
+
return oFilter;
|
|
122
123
|
};
|
|
123
124
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
125
|
+
// Include-filters are combined in an OR-filter put into an All or A-filter
|
|
126
|
+
// Exclude-filters are combined in an AND-filter and put into an All-filter (As the searched entry must be in none of the targets.)
|
|
127
|
+
// Special case "empty", here the filter is created in the operator to allow custom empty-operators.
|
|
128
|
+
const convertToAnyOrAllFilter = function(aFilters, sFieldPath, bExclude) {
|
|
129
|
+
const [sNavPath, sPattern, sPropertyPath, sWrongPart] = sFieldPath.split(/([\*\+]\/)/);
|
|
130
|
+
if (sPattern && aFilters.length > 0) {
|
|
131
|
+
let oFilter;
|
|
132
|
+
|
|
133
|
+
if (aFilters.length === 1) {
|
|
134
|
+
[oFilter] = aFilters;
|
|
135
|
+
} else if (aFilters.length > 1) {
|
|
136
|
+
oFilter = new Filter({ filters: aFilters, and: bExclude });
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (oFilter) {
|
|
140
|
+
const sVariable = "L1";
|
|
141
|
+
|
|
142
|
+
if (!sWrongPart) { // only one occurence of pattern allowed
|
|
143
|
+
const oConverted = convertAnyAllFilter(oFilter, sFieldPath, sVariable + "/" + sPropertyPath);
|
|
144
|
+
let oNewFilter;
|
|
145
|
+
if (oConverted.filter) {
|
|
146
|
+
// the Any/All filter parameter for all filters of one FieldPath
|
|
147
|
+
oNewFilter = new Filter({
|
|
148
|
+
path: sNavPath,
|
|
149
|
+
operator: sPattern === "*/" && !bExclude ? FilterOperator.Any : FilterOperator.All, // exclude filters are All-filters, even in Any case
|
|
150
|
+
variable: sVariable,
|
|
151
|
+
condition: oConverted.filter
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
if (oConverted.anyAllFilters.length > 0) {
|
|
155
|
+
if (oNewFilter) {
|
|
156
|
+
oConverted.anyAllFilters.push(oNewFilter);
|
|
157
|
+
oNewFilter = new Filter({
|
|
158
|
+
filters: oConverted.anyAllFilters,
|
|
159
|
+
and: bExclude
|
|
160
|
+
});
|
|
161
|
+
} else if (oConverted.anyAllFilters.length === 1) {
|
|
162
|
+
[oNewFilter] = oConverted.anyAllFilters;
|
|
163
|
+
} else {
|
|
164
|
+
oNewFilter = new Filter({
|
|
165
|
+
filters: oConverted.anyAllFilters,
|
|
166
|
+
and: bExclude
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return [oNewFilter];
|
|
172
|
+
} else {
|
|
173
|
+
throw new Error("FilterConverter: not supported binding " + sFieldPath);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
132
176
|
}
|
|
133
|
-
};
|
|
134
177
|
|
|
178
|
+
return aFilters; // just use unchanged Filter
|
|
179
|
+
};
|
|
135
180
|
|
|
136
181
|
// OR-combine filters for each property
|
|
137
182
|
for (const sFieldPath in oConditions) {
|
|
138
183
|
aLocalIncludeFilters = [];
|
|
139
184
|
aLocalExcludeFilters = [];
|
|
140
|
-
oAnyOrAllFilterParam = null;
|
|
141
185
|
const aConditions = oConditions[sFieldPath];
|
|
142
186
|
|
|
143
187
|
if (sFieldPath === "$search") {
|
|
@@ -201,19 +245,17 @@ sap.ui.define([
|
|
|
201
245
|
continue;
|
|
202
246
|
}
|
|
203
247
|
|
|
204
|
-
// support for Any/all filters for include operations
|
|
205
|
-
// Any/All condition handling e.g. fieldPath "navPath*/propertyPath" or "navPath+/propertyPath"
|
|
206
|
-
oAnyOrAllFilterParam = convertToAnyOrAllFilter(oFilter);
|
|
207
248
|
aLocalIncludeFilters.push(oFilter);
|
|
208
249
|
} else {
|
|
209
|
-
|
|
210
|
-
// support for Any/All filters for exclude operations
|
|
211
|
-
// Any/All condition handling e.g. fieldPath "navPath*/propertyPath" or "navPath+/propertyPath"
|
|
212
|
-
oAnyOrAllFilterParam = convertToAnyOrAllFilter(oFilter);
|
|
213
250
|
aLocalExcludeFilters.push(oFilter);
|
|
214
251
|
}
|
|
215
252
|
}
|
|
216
253
|
|
|
254
|
+
// support for Any or All filters - update the Any/All Filter in the include and exclude-filters
|
|
255
|
+
// Any/All condition handling e.g. fieldPath "navPath*/propertyPath" or "navPath+/propertyPath"
|
|
256
|
+
aLocalIncludeFilters = convertToAnyOrAllFilter(aLocalIncludeFilters, sFieldPath, false);
|
|
257
|
+
aLocalExcludeFilters = convertToAnyOrAllFilter(aLocalExcludeFilters, sFieldPath, true);
|
|
258
|
+
|
|
217
259
|
// take the single Filter or combine all with OR
|
|
218
260
|
oFilter = undefined;
|
|
219
261
|
if (aLocalIncludeFilters.length === 1) {
|
|
@@ -234,15 +276,6 @@ sap.ui.define([
|
|
|
234
276
|
oNewFilter = new Filter({ filters: aLocalExcludeFilters, and: true }); // to have all filters for differents path AND grouped
|
|
235
277
|
}
|
|
236
278
|
|
|
237
|
-
// support for Any or All filters - update the Any/All Filter in the OverAllFilters array
|
|
238
|
-
if (oAnyOrAllFilterParam) {
|
|
239
|
-
// oAnyOrAllFilterParam.path = NavPath,
|
|
240
|
-
// oAnyOrAllFilterParam.operator = "Any/All",
|
|
241
|
-
// oAnyOrAllFilterParam.variable = "L1"
|
|
242
|
-
oAnyOrAllFilterParam.condition = oNewFilter;
|
|
243
|
-
oNewFilter = new Filter(oAnyOrAllFilterParam);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
279
|
if (oNewFilter) {
|
|
247
280
|
aOverallFilters.push(oNewFilter);
|
|
248
281
|
}
|
|
@@ -280,7 +313,8 @@ sap.ui.define([
|
|
|
280
313
|
return "(" + sRes + ")";
|
|
281
314
|
} else {
|
|
282
315
|
if (oFilter.sOperator === FilterOperator.Any || oFilter.sOperator === FilterOperator.All) {
|
|
283
|
-
sRes = oFilter.sVariable
|
|
316
|
+
sRes = oFilter.sVariable ? oFilter.sVariable + ":" : "";
|
|
317
|
+
sRes = sRes + oFilter.sPath + " " + oFilter.sOperator + " " + FilterConverter.prettyPrintFilters(oFilter.oCondition);
|
|
284
318
|
} else {
|
|
285
319
|
if (oFilter.bCaseSensitive === false) {
|
|
286
320
|
sRes = "tolower(" + oFilter.sPath + ") " + oFilter.sOperator + " tolower('" + oFilter.oValue1 + "')";
|
|
@@ -68,7 +68,7 @@ sap.ui.define([
|
|
|
68
68
|
*
|
|
69
69
|
* @namespace
|
|
70
70
|
* @author SAP SE
|
|
71
|
-
* @version 1.133.
|
|
71
|
+
* @version 1.133.3
|
|
72
72
|
* @since 1.73.0
|
|
73
73
|
* @alias sap.ui.mdc.condition.FilterOperatorUtil
|
|
74
74
|
*
|
|
@@ -531,7 +531,23 @@ sap.ui.define([
|
|
|
531
531
|
tokenText: _getText(OperatorName.Empty, false),
|
|
532
532
|
valueTypes: [],
|
|
533
533
|
getModelFilter: function(oCondition, sFieldPath, oType, bCaseSensitive, sBaseType) {
|
|
534
|
-
|
|
534
|
+
const oAnyAllPath = _getAnyAllPath(sFieldPath);
|
|
535
|
+
if (oAnyAllPath) {
|
|
536
|
+
// Any or All Filter -> Empty needs to filter for non-existance of navigation targets
|
|
537
|
+
// once the NOT-filtering exists this can be changed into NOT-Any (at least for oData V4)
|
|
538
|
+
return new Filter({
|
|
539
|
+
path: oAnyAllPath.navPath,
|
|
540
|
+
operator: ModelOperator.All,
|
|
541
|
+
variable: "L1",
|
|
542
|
+
condition: new Filter({
|
|
543
|
+
filters: [ // create a Filter that cannot bring a result
|
|
544
|
+
new Filter({path: "L1/" + oAnyAllPath.propertyPath, operator: ModelOperator.EQ, value1: null}),
|
|
545
|
+
new Filter({path: "L1/" + oAnyAllPath.propertyPath, operator: ModelOperator.NE, value1: null})
|
|
546
|
+
],
|
|
547
|
+
and: true
|
|
548
|
+
})
|
|
549
|
+
});
|
|
550
|
+
} else if (sBaseType === BaseType.String) { // depending on backend and/or Type configuration filter is "" or null
|
|
535
551
|
let isNullable = false;
|
|
536
552
|
if (oType) {
|
|
537
553
|
const vResult = oType.parseValue("", "string");
|
|
@@ -568,7 +584,14 @@ sap.ui.define([
|
|
|
568
584
|
valueTypes: [],
|
|
569
585
|
exclude: true,
|
|
570
586
|
getModelFilter: function(oCondition, sFieldPath, oType, bCaseSensitive, sBaseType) {
|
|
571
|
-
|
|
587
|
+
const oAnyAllPath = _getAnyAllPath(sFieldPath);
|
|
588
|
+
if (oAnyAllPath) {
|
|
589
|
+
// Any or All Filter -> NotEmpty needs to filter for existance of navigation targets
|
|
590
|
+
return new Filter({
|
|
591
|
+
path: oAnyAllPath.navPath,
|
|
592
|
+
operator: ModelOperator.Any
|
|
593
|
+
});
|
|
594
|
+
} else if (sBaseType === BaseType.String) { // depending on backend and/or Type configuration filter is "" or null
|
|
572
595
|
let isNullable = false;
|
|
573
596
|
if (oType) {
|
|
574
597
|
const vResult = oType.parseValue("", "string");
|
|
@@ -2563,6 +2586,20 @@ sap.ui.define([
|
|
|
2563
2586
|
|
|
2564
2587
|
}
|
|
2565
2588
|
|
|
2589
|
+
function _getAnyAllPath(sFieldPath) {
|
|
2590
|
+
|
|
2591
|
+
const [sNavPath, sPattern, sPropertyPath, sWrongPart] = sFieldPath.split(/([\*\+]\/)/);
|
|
2592
|
+
if (sPattern) {
|
|
2593
|
+
// Any or All Filter -> Empty needs to filter for non-existance of navigation targets
|
|
2594
|
+
if (!sWrongPart) { // only one occurence of pattern allowed
|
|
2595
|
+
return {navPath: sNavPath, propertyPath: sPropertyPath};
|
|
2596
|
+
} else {
|
|
2597
|
+
throw new Error("FilterOperatorUtil: not supported binding " + sFieldPath);
|
|
2598
|
+
}
|
|
2599
|
+
}
|
|
2600
|
+
|
|
2601
|
+
}
|
|
2602
|
+
|
|
2566
2603
|
return FilterOperatorUtil;
|
|
2567
2604
|
|
|
2568
2605
|
}, /* bExport= */
|
|
@@ -136,7 +136,7 @@ sap.ui.define([
|
|
|
136
136
|
* @param {function} [oConfiguration.getTextForCopy] Function to determine the text copied into clipboard
|
|
137
137
|
* @constructor
|
|
138
138
|
* @author SAP SE
|
|
139
|
-
* @version 1.133.
|
|
139
|
+
* @version 1.133.3
|
|
140
140
|
* @public
|
|
141
141
|
* @alias sap.ui.mdc.condition.Operator
|
|
142
142
|
* @since 1.73.0
|
|
@@ -39,7 +39,7 @@ sap.ui.define([
|
|
|
39
39
|
* @param {int[]|function} [oConfiguration.defaultValues] Array of values for the defaults of <code>RangeOperators</code> parameter. This can be a function, which returns the array of values. If not used the default for the values is 1.
|
|
40
40
|
* @constructor
|
|
41
41
|
* @author SAP SE
|
|
42
|
-
* @version 1.133.
|
|
42
|
+
* @version 1.133.3
|
|
43
43
|
* @public
|
|
44
44
|
* @alias sap.ui.mdc.condition.RangeOperator
|
|
45
45
|
* @since 1.74.0
|
|
@@ -16,7 +16,7 @@ sap.ui.define([
|
|
|
16
16
|
* @param {object} [mSettings] Initial settings for the new control
|
|
17
17
|
* @class A field help used in the <code>FieldInfo</code> aggregation in <code>FieldBase</code> controls that allows you to add custom content.
|
|
18
18
|
* @extends sap.ui.mdc.field.FieldInfoBase
|
|
19
|
-
* @version 1.133.
|
|
19
|
+
* @version 1.133.3
|
|
20
20
|
* @constructor
|
|
21
21
|
* @private
|
|
22
22
|
* @ui5-restricted sap.fe
|
|
@@ -99,7 +99,7 @@ sap.ui.define([
|
|
|
99
99
|
* @implements sap.ui.core.IFormContent, sap.ui.core.ISemanticFormContent, sap.m.IOverflowToolbarContent, sap.ui.core.ILabelable
|
|
100
100
|
*
|
|
101
101
|
* @author SAP SE
|
|
102
|
-
* @version 1.133.
|
|
102
|
+
* @version 1.133.3
|
|
103
103
|
*
|
|
104
104
|
* @constructor
|
|
105
105
|
* @alias sap.ui.mdc.field.FieldBase
|
|
@@ -31,7 +31,7 @@ sap.ui.define([
|
|
|
31
31
|
* A <code>FieldInfoBase</code> element is a base class that shows any kind of information related to the <code>Field</code> control, for example, navigation targets or contact details.
|
|
32
32
|
* This is the basis for link-features. If the link is pressed a popover might be opened.
|
|
33
33
|
* @extends sap.ui.mdc.Element
|
|
34
|
-
* @version 1.133.
|
|
34
|
+
* @version 1.133.3
|
|
35
35
|
* @constructor
|
|
36
36
|
* @since 1.54.0
|
|
37
37
|
* @public
|
|
@@ -21,7 +21,7 @@ sap.ui.define([
|
|
|
21
21
|
* The <code>FieldInput</code> control is used to render an input field inside a control based on {@link sap.ui.mdc.field.FieldBase FieldBase}.
|
|
22
22
|
* It enhances the {@link sap.m.Input Input} control to add ARIA attributes and other {@link sap.ui.mdc.field.FieldBase FieldBase}-specific logic.
|
|
23
23
|
* @extends sap.m.Input
|
|
24
|
-
* @version 1.133.
|
|
24
|
+
* @version 1.133.3
|
|
25
25
|
* @constructor
|
|
26
26
|
* @abstract
|
|
27
27
|
* @private
|
|
@@ -16,7 +16,7 @@ sap.ui.define([
|
|
|
16
16
|
* @class Functions uses in <code>FieldInputRenderer</code> and <code>FieldMultiInputRenderer</code> to adjust aria attributes.
|
|
17
17
|
*
|
|
18
18
|
* @author SAP SE
|
|
19
|
-
* @version 1.133.
|
|
19
|
+
* @version 1.133.3
|
|
20
20
|
* @since 1.86.0
|
|
21
21
|
* @alias sap.ui.mdc.field.FieldInputRenderUtil
|
|
22
22
|
*
|
|
@@ -28,7 +28,7 @@ sap.ui.define([
|
|
|
28
28
|
* The <code>FieldMultiInput</code> control is used to render a multi-input field inside a control based on {@link sap.ui.mdc.field.FieldBase FieldBase}.
|
|
29
29
|
* It enhances the {@link sap.m.MultiInput MultiInput} control to add ARIA attributes and other {@link sap.ui.mdc.field.FieldBase FieldBase}-specific logic.
|
|
30
30
|
* @extends sap.m.MultiInput
|
|
31
|
-
* @version 1.133.
|
|
31
|
+
* @version 1.133.3
|
|
32
32
|
* @constructor
|
|
33
33
|
* @abstract
|
|
34
34
|
* @private
|