@sapui5/sap.suite.ui.generic.template 1.151.0 → 1.152.0
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 +1 -1
- package/src/sap/suite/ui/generic/template/.library +1 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/control/visualfilterbar/SmartVisualFilterBar.js +4 -3
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/Component.js +4 -2
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sv.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/view/fragments/FullscreenPage.fragment.xml +3 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +3 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartFilterBarWrapper.js +5 -4
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +10 -0
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartVariantManagementWrapper.js +1 -8
- package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +21 -17
- package/src/sap/suite/ui/generic/template/lib/AppComponent.js +3 -1
- package/src/sap/suite/ui/generic/template/lib/Application.js +15 -2
- package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +30 -8
- package/src/sap/suite/ui/generic/template/lib/CommonUtils.js +3 -3
- package/src/sap/suite/ui/generic/template/lib/PageLeaveHandler.js +19 -14
- package/src/sap/suite/ui/generic/template/lib/ShareUtils.js +1 -1
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillAIOrchestrator.js +1 -6
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillApplyHandler.js +25 -44
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillDialogController.js +80 -64
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillFieldCollector.js +442 -259
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillFormRenderer.js +125 -161
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillHandler.js +134 -160
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillTableRenderer.js +55 -189
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/fragments/EasyFillDialog.fragment.xml +67 -85
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +138 -17
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterDataFetcherHelper.js +1 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saptrc.properties +6 -6
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +4 -4
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +1 -1
- package/src/sap/suite/ui/generic/template/lib/insights/InsightsCardHelper.js +16 -4
- package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +3 -2
- package/src/sap/suite/ui/generic/template/library.js +1 -1
- package/src/sap/suite/ui/generic/template/themes/base/ObjectPage.less +1 -1
|
@@ -107,12 +107,36 @@ sap.ui.define([
|
|
|
107
107
|
// Helper to add properties to mFilterProperties, with optional prefix.
|
|
108
108
|
// bOverrideSortable and mOverrideNonSortable allow callers (e.g. nav property processing)
|
|
109
109
|
// to pass entity-set-specific sort restrictions instead of the root entity set's.
|
|
110
|
-
|
|
110
|
+
// oEffectiveEntitySetMeta allows callers to pass the entity-set metadata for
|
|
111
|
+
// Capabilities.FilterRestrictions lookup; falls back to the root entity set's metadata.
|
|
112
|
+
function addPropertiesFromEntityType(entityType, prefix, bOverrideSortable, mOverrideNonSortable, oEffectiveEntitySetMeta) {
|
|
111
113
|
var bEffectiveSortable = (bOverrideSortable !== undefined) ? bOverrideSortable : bEntitySetSortable;
|
|
112
114
|
var mEffectiveNonSortable = mOverrideNonSortable || mNonSortableProperties;
|
|
115
|
+
|
|
116
|
+
// Capabilities.FilterRestrictions takes priority over sap:filterable (matches SFB behaviour).
|
|
117
|
+
var oCapFilterRestrictions = oEffectiveEntitySetMeta &&
|
|
118
|
+
oEffectiveEntitySetMeta["Org.OData.Capabilities.V1.FilterRestrictions"];
|
|
119
|
+
var bEntityNonFilterable = !!oCapFilterRestrictions &&
|
|
120
|
+
oCapFilterRestrictions.Filterable === "false";
|
|
121
|
+
var mCapNonFilterable = {};
|
|
122
|
+
if (oCapFilterRestrictions && oCapFilterRestrictions.NonFilterableProperties) {
|
|
123
|
+
oCapFilterRestrictions.NonFilterableProperties.forEach(function(oEntry) {
|
|
124
|
+
if (oEntry.PropertyPath) {
|
|
125
|
+
mCapNonFilterable[oEntry.PropertyPath] = true;
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
|
|
113
130
|
entityType.property.forEach(function (oProperty) {
|
|
114
131
|
var sTokenType = "ValueHelp";
|
|
115
132
|
var bFilterable = filterHelper.isPropertyFilterable(oProperty);
|
|
133
|
+
|
|
134
|
+
// When Capabilities.FilterRestrictions is present, its answer is authoritative.
|
|
135
|
+
// A property absent from NonFilterableProperties is filterable even if sap:filterable="false".
|
|
136
|
+
if (oCapFilterRestrictions) {
|
|
137
|
+
bFilterable = !bEntityNonFilterable && !mCapNonFilterable[oProperty.name];
|
|
138
|
+
}
|
|
139
|
+
|
|
116
140
|
var bIsCodeListRequired;
|
|
117
141
|
var bIsHidden = false;
|
|
118
142
|
var bIsHiddenFilter = false;
|
|
@@ -167,7 +191,7 @@ sap.ui.define([
|
|
|
167
191
|
}
|
|
168
192
|
|
|
169
193
|
// Add direct properties
|
|
170
|
-
addPropertiesFromEntityType(oEntityType, "");
|
|
194
|
+
addPropertiesFromEntityType(oEntityType, "", undefined, undefined, oEntitySetMeta);
|
|
171
195
|
|
|
172
196
|
// Add 1:1 navigation properties' properties
|
|
173
197
|
if (oEntityType.navigationProperty) {
|
|
@@ -214,7 +238,7 @@ sap.ui.define([
|
|
|
214
238
|
}
|
|
215
239
|
}
|
|
216
240
|
}
|
|
217
|
-
addPropertiesFromEntityType(oTargetEntityType, navProp.name, bNavSortable, mNavNonSortable);
|
|
241
|
+
addPropertiesFromEntityType(oTargetEntityType, navProp.name, bNavSortable, mNavNonSortable, oNavEntitySetMeta);
|
|
218
242
|
}
|
|
219
243
|
}
|
|
220
244
|
}
|
|
@@ -709,22 +733,119 @@ sap.ui.define([
|
|
|
709
733
|
oSmartFilterBarWrapper.setState(oSmartFilterBarVariant);
|
|
710
734
|
// currentVariantSetModified intentionally omitted — pressing Go with the same
|
|
711
735
|
// query must not mark the variant as dirty.
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
736
|
+
|
|
737
|
+
var aSelectOptionsNeedingInjection = fnGetCustomFieldsNeedingInjection(oSmartFilterbar, oVariantDataFromAI.aSelectOptions);
|
|
738
|
+
fnInjectCustomFiltersOnRebind(aSelectOptionsNeedingInjection);
|
|
739
|
+
fnSyncCustomFieldInputValues(aSelectOptionsNeedingInjection, oSmartFilterbar);
|
|
740
|
+
|
|
741
|
+
// Apply sorters/groupLevels bundled with tokens after SFB state is set but
|
|
742
|
+
// before triggering search, to prevent a premature rebind with incomplete filters.
|
|
743
|
+
var aBundledSorters = oEvent.getParameter("sorters");
|
|
744
|
+
var aBundledGroupLevels = oEvent.getParameter("groupLevels");
|
|
745
|
+
if (aBundledSorters !== undefined) {
|
|
746
|
+
fnApplySortersToTable(aBundledSorters);
|
|
747
|
+
}
|
|
748
|
+
if (aBundledGroupLevels !== undefined) {
|
|
749
|
+
fnApplyGroupLevelsToTable(aBundledGroupLevels);
|
|
750
|
+
}
|
|
724
751
|
|
|
725
752
|
oSmartFilterbar.search();
|
|
726
753
|
}
|
|
727
754
|
|
|
755
|
+
/**
|
|
756
|
+
* Returns the subset of aSelectOptions whose property names landed in SFB's _CUSTOM
|
|
757
|
+
* bucket after setState — meaning SFB could not route them through its standard filter
|
|
758
|
+
* pipeline (plain Input fields with no value-list annotation).
|
|
759
|
+
* @param {object} oSmartFilterbar - The SmartFilterBar control instance
|
|
760
|
+
* @param {Array} aSelectOptions - Select options built from AI tokens
|
|
761
|
+
* @returns {Array} Select options that require direct filter injection
|
|
762
|
+
*/
|
|
763
|
+
function fnGetCustomFieldsNeedingInjection(oSmartFilterbar, aSelectOptions) {
|
|
764
|
+
var oFilterData = oSmartFilterbar.getFilterData();
|
|
765
|
+
var oCustomData = oFilterData && oFilterData._CUSTOM;
|
|
766
|
+
return aSelectOptions.filter(function(oSelectOption) {
|
|
767
|
+
return oCustomData && oCustomData.hasOwnProperty(oSelectOption.PropertyName);
|
|
768
|
+
});
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
/**
|
|
772
|
+
* Builds UI5 Filter objects for each _CUSTOM select option and registers a one-shot
|
|
773
|
+
* beforeRebindTable handler on the SmartTable that injects them into bindingParams.filters
|
|
774
|
+
* just before the OData request is built — bypassing SFB's filter pipeline entirely.
|
|
775
|
+
* EQ is remapped to Contains to match Classic SFB substringof behaviour on plain Input fields.
|
|
776
|
+
* @param {Array} aSelectOptionsNeedingInjection - Select options that require direct filter injection
|
|
777
|
+
* @returns {void}
|
|
778
|
+
*/
|
|
779
|
+
function fnInjectCustomFiltersOnRebind(aSelectOptionsNeedingInjection) {
|
|
780
|
+
if (aSelectOptionsNeedingInjection.length === 0 || !oState.oPresentationControlHandler) {
|
|
781
|
+
return;
|
|
782
|
+
}
|
|
783
|
+
var oSmartTable = oState.oPresentationControlHandler.getControl();
|
|
784
|
+
if (!oSmartTable || typeof oSmartTable.attachBeforeRebindTable !== 'function') {
|
|
785
|
+
return;
|
|
786
|
+
}
|
|
787
|
+
var aInjectFilters = [];
|
|
788
|
+
aSelectOptionsNeedingInjection.forEach(function(oSelectOption) {
|
|
789
|
+
oSelectOption.Ranges.forEach(function(oRange) {
|
|
790
|
+
var sOp = oRange.Option;
|
|
791
|
+
var sVal = oRange.Low;
|
|
792
|
+
if (sOp === 'CP') {
|
|
793
|
+
aInjectFilters.push(new Filter(oSelectOption.PropertyName, FilterOperator.Contains, sVal.replace(/^\*|\*$/g, '')));
|
|
794
|
+
} else if (sOp === 'EQ') {
|
|
795
|
+
aInjectFilters.push(new Filter(oSelectOption.PropertyName, FilterOperator.Contains, sVal));
|
|
796
|
+
} else if (sOp === 'BT') {
|
|
797
|
+
aInjectFilters.push(new Filter(oSelectOption.PropertyName, FilterOperator.BT, oRange.Low, oRange.High));
|
|
798
|
+
} else if (sOp === 'NB') {
|
|
799
|
+
aInjectFilters.push(new Filter({path: oSelectOption.PropertyName, operator: FilterOperator.BT, value1: oRange.Low, value2: oRange.High, bExclude: true}));
|
|
800
|
+
} else {
|
|
801
|
+
var sMappedOp = FilterOperator[sOp];
|
|
802
|
+
if (!sMappedOp) {
|
|
803
|
+
oLogger.warning("EasyFilterBarHandler: unsupported select-option operator '" + sOp + "' for property '" + oSelectOption.PropertyName + "' — skipping filter injection");
|
|
804
|
+
return;
|
|
805
|
+
}
|
|
806
|
+
aInjectFilters.push(new Filter(oSelectOption.PropertyName, sMappedOp, sVal));
|
|
807
|
+
}
|
|
808
|
+
});
|
|
809
|
+
});
|
|
810
|
+
var fnOnBeforeRebind = function(oRebindEvent) {
|
|
811
|
+
oSmartTable.detachBeforeRebindTable(fnOnBeforeRebind);
|
|
812
|
+
var oBindingParams = oRebindEvent.getParameter('bindingParams');
|
|
813
|
+
oBindingParams.filters = oBindingParams.filters || [];
|
|
814
|
+
var aBindingFilters = oBindingParams.filters;
|
|
815
|
+
// Remove prior easy-filter entries for the same properties to avoid stacking.
|
|
816
|
+
aInjectFilters.forEach(function(oF) {
|
|
817
|
+
for (var i = aBindingFilters.length - 1; i >= 0; i--) {
|
|
818
|
+
if (aBindingFilters[i] && aBindingFilters[i].sPath === oF.sPath) {
|
|
819
|
+
aBindingFilters.splice(i, 1);
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
aBindingFilters.push(oF);
|
|
823
|
+
});
|
|
824
|
+
};
|
|
825
|
+
oSmartTable.attachBeforeRebindTable(fnOnBeforeRebind);
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
/**
|
|
829
|
+
* Sets the visible value on the SFB Input control for each _CUSTOM field so the Classic
|
|
830
|
+
* filter tab shows the correct value when the user switches filter modes.
|
|
831
|
+
* Uses setValue only — no fireChange — to avoid triggering SFB's async filter rebuild.
|
|
832
|
+
* @param {Array} aSelectOptionsNeedingInjection - Select options that require direct filter injection
|
|
833
|
+
* @param {object} oSmartFilterbar - The SmartFilterBar control instance
|
|
834
|
+
* @returns {void}
|
|
835
|
+
*/
|
|
836
|
+
function fnSyncCustomFieldInputValues(aSelectOptionsNeedingInjection, oSmartFilterbar) {
|
|
837
|
+
aSelectOptionsNeedingInjection.forEach(function(oSelectOption) {
|
|
838
|
+
if (oSelectOption.Ranges.length > 0) {
|
|
839
|
+
var aItems = oSmartFilterbar.getAllFilterItems(true) || [];
|
|
840
|
+
var oItem = aItems.find(function(i) { return i.getName && i.getName() === oSelectOption.PropertyName; });
|
|
841
|
+
var oCtrl = oItem && oItem.getControl && oItem.getControl();
|
|
842
|
+
if (oCtrl && oCtrl.setValue) {
|
|
843
|
+
oCtrl.setValue(oSelectOption.Ranges[0].Low);
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
});
|
|
847
|
+
}
|
|
848
|
+
|
|
728
849
|
/**
|
|
729
850
|
* Event handler for the EasyFilterBarContainer's tokensChangedByUser event.
|
|
730
851
|
* Fired when the user manually deletes or modifies a token (distinct from AI-resolved tokens).
|
|
@@ -819,8 +940,8 @@ sap.ui.define([
|
|
|
819
940
|
/**
|
|
820
941
|
* Event handler for the EasyFilter control's showValueHelp event.
|
|
821
942
|
* Identifies the input field for which the value help is requested and triggers the value help opening from SFB.
|
|
822
|
-
* @param {
|
|
823
|
-
* @param {
|
|
943
|
+
* @param {sap.ui.base.Event} oEvent - The showValueHelp event fired by the EasyFilter control
|
|
944
|
+
* @param {object} oState - The current controller state object
|
|
824
945
|
*/
|
|
825
946
|
function fnShowValueHelp(oEvent) {
|
|
826
947
|
var oSmartFilterbar = oState.oSmartFilterbar;
|
|
@@ -287,7 +287,7 @@ sap.ui.define([
|
|
|
287
287
|
if (!isValueHelpTableAvailable) {
|
|
288
288
|
// When there is no valueList associate, just return the original value in CodeList type
|
|
289
289
|
aFilters.forEach(oFilter => aFinalResponse.push(getkeySpecifiedResultFromFilters(oFilter)));
|
|
290
|
-
resolve(aFinalResponse);
|
|
290
|
+
return resolve(aFinalResponse);
|
|
291
291
|
}
|
|
292
292
|
|
|
293
293
|
// Get value help lists from metadata
|
|
@@ -263,7 +263,7 @@ UNNAMED_OBJECT=/7tWejRWY+/VKNEqKMeUig_Unnamed Object
|
|
|
263
263
|
|
|
264
264
|
NOITEMS_SMARTTABLE=4mF5yAkQczyduvBbpfEiUQ_No items available.
|
|
265
265
|
|
|
266
|
-
NOITEMS_SMARTTABLE_ILLUSTRATION_TITLE=doyvmYFBR/YAir1JRbBrjg_There are no entries yet
|
|
266
|
+
NOITEMS_SMARTTABLE_ILLUSTRATION_TITLE=doyvmYFBR/YAir1JRbBrjg_There are no entries yet
|
|
267
267
|
|
|
268
268
|
NOITEMS_SMARTTABLE_ILLUSTRATION_DESCRIPTION=ILWfzXjlD1V0V2FH3J0ydg_When there are, you\u2019ll see them here.
|
|
269
269
|
|
|
@@ -281,7 +281,7 @@ NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON_ILLUSTRATION_DESCRIPTION=GGyy
|
|
|
281
281
|
|
|
282
282
|
NOITEMS_SMARTCHART=E8PAJqLnlL8D5qjtuHM1PA_No data found.
|
|
283
283
|
|
|
284
|
-
NOITEMS_SMARTCHART_ILLUSTRATION_TITLE=SwZw2xSjtz9Vh+0KWhZtdA_There are no entries yet
|
|
284
|
+
NOITEMS_SMARTCHART_ILLUSTRATION_TITLE=SwZw2xSjtz9Vh+0KWhZtdA_There are no entries yet
|
|
285
285
|
|
|
286
286
|
NOITEMS_SMARTCHART_ILLUSTRATION_DESCRIPTION=bEw0TDVPaEKar/6e6st0jg_When there are, you\u2019ll see them here.
|
|
287
287
|
|
|
@@ -293,7 +293,7 @@ NOITEMS_LR_SMARTCHART_ILLUSTRATION_DESCRIPTION=gBq3I96wPrF1Ewim63QYtA_Try changi
|
|
|
293
293
|
|
|
294
294
|
NOITEMS_SMARTCHART_WITH_FILTER=018xLIIeu5CBFsduDE+3NQ_No data found. Try adjusting the filter parameters.
|
|
295
295
|
|
|
296
|
-
NOITEMS_SMARTCHART_WITH_FILTER_ILLUSTRATION_TITLE=CsqDaNt4K/dfxZsSwIG5pg_No results found
|
|
296
|
+
NOITEMS_SMARTCHART_WITH_FILTER_ILLUSTRATION_TITLE=CsqDaNt4K/dfxZsSwIG5pg_No results found
|
|
297
297
|
|
|
298
298
|
NOITEMS_SMARTCHART_WITH_FILTER_ILLUSTRATION_DESCRIPTION=Y8sxldqS54RjkfbsCOBJhA_Try changing your filter criteria.
|
|
299
299
|
|
|
@@ -305,7 +305,7 @@ SMARTCHART_INITIAL_NODATA_ILLUSTRATION_DESCRIPTION=8HfZHgwhmWenmTsdn39Wqg_Start
|
|
|
305
305
|
|
|
306
306
|
NOITEMS_LR_SMARTTABLE=mzjlT4T4Bwjpy44Z9NjCDA_No data found.
|
|
307
307
|
|
|
308
|
-
NOITEMS_LR_SMARTTABLE_ILLUSTRATION_TITLE=xDgxD4GNBL2TBLA8rDeMBg_There are no entries yet
|
|
308
|
+
NOITEMS_LR_SMARTTABLE_ILLUSTRATION_TITLE=xDgxD4GNBL2TBLA8rDeMBg_There are no entries yet
|
|
309
309
|
|
|
310
310
|
NOITEMS_LR_SMARTTABLE_ILLUSTRATION_DESCRIPTION=8rudXxT/Jqj7Jf4NGwoN+A_When there are, you\u2019ll see them here.
|
|
311
311
|
|
|
@@ -506,7 +506,7 @@ EASY_FILL_SECOND_LABEL_TEXT=6ClfQBkJaEH1PfDiwA5Y/Q_Provide any information that
|
|
|
506
506
|
|
|
507
507
|
EASY_FILL_TEXTAREA_PLACEHOLDER=SM5b7MpHJMd0bpuaOXui/Q_Provide any information that helps AI fill the appropriate fields. Note that AI can only assist with visible fields and rows.
|
|
508
508
|
|
|
509
|
-
EASY_FILL_ILLUSTRATION_TITLE_INITIAL=rJs6dgsnWPZqespMCljKGw_Let\u2019s fill in some fields
|
|
509
|
+
EASY_FILL_ILLUSTRATION_TITLE_INITIAL=rJs6dgsnWPZqespMCljKGw_Let\u2019s fill in some fields
|
|
510
510
|
|
|
511
511
|
EASY_FILL_ILLUSTRATION_DESCRIPTION_INITIAL=vXZZ5PgERzHudzaOWZMclA_You can start by providing the required information to see the proposed results.
|
|
512
512
|
|
|
@@ -514,7 +514,7 @@ EASY_FILL_ILLUSTRATION_TITLE_NO_ENTRIES=r9q+6s8j3XyumHEvE3wWMQ_No fields filled
|
|
|
514
514
|
|
|
515
515
|
EASY_FILL_ILLUSTRATION_DESCRIPTION_NO_ENTRIES=Dtc9imG1YicZJWol2mAedQ_We couldn\u2019t match your query to any of the existing fields.
|
|
516
516
|
|
|
517
|
-
EASY_FILL_ILLUSTRATION_TITLE_ERROR=3MAHZSkGTXtr7nB3SvlsjA_Unable to fill in the fields
|
|
517
|
+
EASY_FILL_ILLUSTRATION_TITLE_ERROR=3MAHZSkGTXtr7nB3SvlsjA_Unable to fill in the fields
|
|
518
518
|
|
|
519
519
|
EASY_FILL_ILLUSTRATION_DESCRIPTION_ERROR=/yhJuCWe50MguIjZv+mJGA_It looks like an error occurred. Try again and if that doesn\u2019t help, check with your administrator.
|
|
520
520
|
|
|
@@ -267,13 +267,13 @@ NOITEMS_SMARTTABLE_ILLUSTRATION_TITLE=Merkint\u00F6j\u00E4 ei viel\u00E4 ole
|
|
|
267
267
|
|
|
268
268
|
NOITEMS_SMARTTABLE_ILLUSTRATION_DESCRIPTION=Kun niit\u00E4 on, n\u00E4et ne t\u00E4ss\u00E4.
|
|
269
269
|
|
|
270
|
-
NOITEMS_SMARTTABLE_WITH_FILTER=
|
|
270
|
+
NOITEMS_SMARTTABLE_WITH_FILTER=Ei elementtej\u00E4. Yrit\u00E4 mukauttaa haku- tai suodatusperusteita.
|
|
271
271
|
|
|
272
272
|
NOITEMS_SMARTTABLE_WITH_FILTER_ILLUSTRATION_TITLE=Tuloksia ei l\u00F6ytynyt
|
|
273
273
|
|
|
274
274
|
NOITEMS_SMARTTABLE_WITH_FILTER_ILLUSTRATION_DESCRIPTION=Kokeile muuttaa suodatusperusteita.
|
|
275
275
|
|
|
276
|
-
NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON=
|
|
276
|
+
NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON=Elementtej\u00E4 ei l\u00F6ytynyt valittujen suodatusperusteiden ja valitun taulukkon\u00E4kym\u00E4n osalta.
|
|
277
277
|
|
|
278
278
|
NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON_ILLUSTRATION_TITLE=Tuloksia ei l\u00F6ytynyt
|
|
279
279
|
|
|
@@ -285,7 +285,7 @@ NOITEMS_SMARTCHART_ILLUSTRATION_TITLE=Merkint\u00F6j\u00E4 ei viel\u00E4 ole
|
|
|
285
285
|
|
|
286
286
|
NOITEMS_SMARTCHART_ILLUSTRATION_DESCRIPTION=Kun niit\u00E4 on, n\u00E4et ne t\u00E4ss\u00E4.
|
|
287
287
|
|
|
288
|
-
NOITEMS_LR_SMARTCHART=
|
|
288
|
+
NOITEMS_LR_SMARTCHART=Tietoja ei l\u00F6ytynyt valittujen suodatusperusteiden ja valitun kaavion\u00E4kym\u00E4n osalta.
|
|
289
289
|
|
|
290
290
|
NOITEMS_LR_SMARTCHART_ILLUSTRATION_TITLE=Tuloksia ei l\u00F6ytynyt
|
|
291
291
|
|
|
@@ -315,7 +315,7 @@ NOITEMS_LR_SMARTTABLE_WITH_FILTER_ILLUSTRATION_TITLE=Tuloksia ei l\u00F6ytynyt
|
|
|
315
315
|
|
|
316
316
|
NOITEMS_LR_SMARTTABLE_WITH_FILTER_ILLUSTRATION_DESCRIPTION=Kokeile muuttaa suodatusperusteita.
|
|
317
317
|
|
|
318
|
-
NOITEMS_MULTIVIEW_LR_SMARTTABLE_WITH_FILTER=
|
|
318
|
+
NOITEMS_MULTIVIEW_LR_SMARTTABLE_WITH_FILTER=Tietoja ei l\u00F6ytynyt valittujen suodatusperusteiden ja valitun taulukkon\u00E4kym\u00E4n osalta.
|
|
319
319
|
|
|
320
320
|
NOITEMS_MULTIVIEW_LR_SMARTTABLE_WITH_FILTER_ILLUSTRATION_TITLE=Tuloksia ei l\u00F6ytynyt
|
|
321
321
|
|
|
@@ -182,7 +182,7 @@ ST_GENERIC_ERROR_NAVIGATION_PROPERTY_NOT_CORRECT=Lastnost navigacije {0} v pripo
|
|
|
182
182
|
|
|
183
183
|
ST_GENERIC_FCL_FULLSCREEN=Celotni ekran
|
|
184
184
|
|
|
185
|
-
ST_GENERIC_FCL_EXIT_FULLSCREEN=Izhod iz
|
|
185
|
+
ST_GENERIC_FCL_EXIT_FULLSCREEN=Izhod iz celozaslonskega na\u010Dina
|
|
186
186
|
|
|
187
187
|
ST_GENERIC_FCL_CLOSE_COLUMN=Zapri
|
|
188
188
|
|
|
@@ -820,11 +820,17 @@ sap.ui.define(["sap/suite/ui/generic/template/genericUtilities/metadataAnalyser"
|
|
|
820
820
|
oCriticalityAnnotation = oAnnotation;
|
|
821
821
|
return (oAnnotation.Criticality && oAnnotation.Value && oAnnotation.Value.Path) === oProperty.name;
|
|
822
822
|
});
|
|
823
|
+
|
|
824
|
+
// sColumnValue stays a PLAIN concatenated path (unchanged behavior from before).
|
|
825
|
+
// Currency/Unit paths are tracked separately so formatting can be applied later,
|
|
826
|
+
// only where it's safe to do so (i.e. no Text-arrangement wrapping follows).
|
|
827
|
+
var sCurrencyPath, sUnitPath;
|
|
823
828
|
if (oProperty["Org.OData.Measures.V1.ISOCurrency"] && oProperty["Org.OData.Measures.V1.ISOCurrency"].Path) {
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
if (oProperty["Org.OData.Measures.V1.Unit"] && oProperty["Org.OData.Measures.V1.Unit"].Path) {
|
|
827
|
-
|
|
829
|
+
sCurrencyPath = sNavigation + oProperty["Org.OData.Measures.V1.ISOCurrency"].Path;
|
|
830
|
+
sColumnValue = sColumnValue.concat(" " + "{" + sCurrencyPath + "}");
|
|
831
|
+
} else if (oProperty["Org.OData.Measures.V1.Unit"] && oProperty["Org.OData.Measures.V1.Unit"].Path) {
|
|
832
|
+
sUnitPath = sNavigation + oProperty["Org.OData.Measures.V1.Unit"].Path;
|
|
833
|
+
sColumnValue = sColumnValue.concat(" " + "{" + sUnitPath + "}");
|
|
828
834
|
}
|
|
829
835
|
|
|
830
836
|
if (oProperty['com.sap.vocabularies.Common.v1.Text'] && oProperty['com.sap.vocabularies.Common.v1.Text'].Path) {
|
|
@@ -861,6 +867,12 @@ sap.ui.define(["sap/suite/ui/generic/template/genericUtilities/metadataAnalyser"
|
|
|
861
867
|
if (bIsPropertySemanticKey) {
|
|
862
868
|
oColumnObject.identifier = bIsPropertySemanticKey;
|
|
863
869
|
}
|
|
870
|
+
// Safe to format here: no outer expression wrapping will happen for this column.
|
|
871
|
+
if (oProperty.type === 'Edm.Decimal' && sCurrencyPath) {
|
|
872
|
+
oColumnObject['value'] = "{= format.currency(${" + oProperty.name + "}, ${" + sCurrencyPath + "})}";
|
|
873
|
+
} else if (oProperty.type === 'Edm.Decimal' && sUnitPath) {
|
|
874
|
+
oColumnObject['value'] = "{= format.unit(${" + oProperty.name + "}, ${" + sUnitPath + "})}";
|
|
875
|
+
}
|
|
864
876
|
}
|
|
865
877
|
if (bIsCriticality) {
|
|
866
878
|
oColumnObject.state = fnBuildExpressionForCriticalityColor(oCriticalityAnnotation);
|
|
@@ -2242,6 +2242,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2242
2242
|
var sRoute = oRegistryEntry.route;
|
|
2243
2243
|
var iCurrentActivity = oActivationInfo.componentsDisplayed[sRoute];
|
|
2244
2244
|
var bIsComponentCurrentlyActive = iCurrentActivity === 1;
|
|
2245
|
+
var bIsBackwards = isBackwards();
|
|
2245
2246
|
var fnPerformActivation = function(sBindingPath){
|
|
2246
2247
|
oRegistryEntry.sCurrentBindingPath = sBindingPath;
|
|
2247
2248
|
var fnActivate = function() {
|
|
@@ -2249,7 +2250,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2249
2250
|
var bindComponentPromise = oRegistryEntry.utils.bindComponent(oRegistryEntry.sCurrentBindingPath, bIsComponentCurrentlyActive);
|
|
2250
2251
|
return bindComponentPromise
|
|
2251
2252
|
.then(function(){
|
|
2252
|
-
(oRegistryEntry.methods.onActivate || Function.prototype)(sBindingPath, bIsComponentCurrentlyActive);
|
|
2253
|
+
(oRegistryEntry.methods.onActivate || Function.prototype)(sBindingPath, bIsComponentCurrentlyActive, bIsBackwards);
|
|
2253
2254
|
})
|
|
2254
2255
|
.then(function(){
|
|
2255
2256
|
if (sComponentId === oCurrentIdentity.treeNode.componentId){
|
|
@@ -3222,7 +3223,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
3222
3223
|
* @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
|
|
3223
3224
|
* @public
|
|
3224
3225
|
* @extends sap.ui.base.Object
|
|
3225
|
-
* @version 1.
|
|
3226
|
+
* @version 1.152.0
|
|
3226
3227
|
* @since 1.30.0
|
|
3227
3228
|
* @alias sap.suite.ui.generic.template.lib.NavigationController
|
|
3228
3229
|
*/
|
|
@@ -416,7 +416,7 @@ html[dir='rtl'] .sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageSubSect
|
|
|
416
416
|
height: 100%;
|
|
417
417
|
|
|
418
418
|
.sapUiFormCL .sapUiFormCLElement .sapEasyFillPreviouslyLabel {
|
|
419
|
-
|
|
419
|
+
color: var(--sapContent_LabelColor);
|
|
420
420
|
}
|
|
421
421
|
|
|
422
422
|
.sapUxAPBlockContainer {
|