@sapui5/sap.suite.ui.generic.template 1.130.7 → 1.130.10
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 +2 -2
- package/src/sap/suite/ui/generic/template/.library +1 -1
- 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/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartFilterBar.fragment.xml +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +49 -7
- package/src/sap/suite/ui/generic/template/ObjectPage/controllerFrameworkExtensions.js +21 -4
- 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/fragments/DraftAdminDataPopover.fragment.xml +1 -0
- package/src/sap/suite/ui/generic/template/fragments/HeaderFormDataField.fragment.xml +10 -4
- package/src/sap/suite/ui/generic/template/genericUtilities/controlHelper.js +10 -9
- package/src/sap/suite/ui/generic/template/genericUtilities/filterHelper.js +3 -1
- package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
- package/src/sap/suite/ui/generic/template/lib/CommonUtils.js +74 -74
- package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +1 -1
- package/src/sap/suite/ui/generic/template/library.js +1 -1
- package/src/sap/suite/ui/generic/template/themes/base/ObjectPage.less +0 -4
- package/src/sap/suite/ui/generic/template/themes/sap_belize_base/ObjectPage.less +0 -4
- package/src/sap/suite/ui/generic/template/themes/sap_bluecrystal_base/ObjectPage.less +0 -4
- package/src/sap/suite/ui/generic/template/themes/sap_hcb/base_ObjectPage.less +0 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sapui5/sap.suite.ui.generic.template",
|
|
3
|
-
"version": "1.130.
|
|
3
|
+
"version": "1.130.10",
|
|
4
4
|
"description": "SAPUI5 Library sap.suite.ui.generic.template",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sapui5",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"testsuite-qunit" : "ui5 serve --config ./ui5-local.yaml --open \"/test-resources/sap/suite/ui/generic/template/qunit/testsuite.qunit.html\""
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"sonarqube-scanner": "
|
|
19
|
+
"sonarqube-scanner": "3.5.0",
|
|
20
20
|
"@sap/ux-ui5-tooling": "latest"
|
|
21
21
|
}
|
|
22
22
|
}
|
package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartFilterBar.fragment.xml
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
label="{i18n>EDITING_STATUS}"
|
|
36
36
|
groupId="_BASIC">
|
|
37
37
|
<smartfilterbar:customControl>
|
|
38
|
-
<Select selectedKey="{_templPriv>/listReport/vDraftState}" id="editStateFilter">
|
|
38
|
+
<Select selectedKey="{_templPriv>/listReport/vDraftState}" id="editStateFilter" wrapItemsText="true">
|
|
39
39
|
<items>
|
|
40
40
|
<core:Item key="0" text="{i18n>ALL_OBJECTS}"/>
|
|
41
41
|
<core:Item key="5" text="{i18n>ALL_OBJECTS_HIDING_DRAFT}"/>
|
|
@@ -45,7 +45,10 @@ sap.ui.define([
|
|
|
45
45
|
) {
|
|
46
46
|
"use strict";
|
|
47
47
|
var sClassName = "ObjectPage.controller.ControllerImplementation";
|
|
48
|
-
var
|
|
48
|
+
var oFeLogger = new FeLogger(sClassName);
|
|
49
|
+
var oLogger = oFeLogger.getLogger();
|
|
50
|
+
var oLevel = oFeLogger.Level;
|
|
51
|
+
oLogger.setLevel(oLevel.ALL);
|
|
49
52
|
var DEFAULT_GROWING_THRESHOLD = 20;
|
|
50
53
|
|
|
51
54
|
// Scroll the specified object page to top
|
|
@@ -1450,15 +1453,54 @@ sap.ui.define([
|
|
|
1450
1453
|
}); // Normalize the return value such that it always is a Promise
|
|
1451
1454
|
}
|
|
1452
1455
|
|
|
1453
|
-
function fnFocusForEdit(bFocusAtTop){
|
|
1454
|
-
setTimeout(function(){
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1456
|
+
function fnFocusForEdit(bFocusAtTop) {
|
|
1457
|
+
setTimeout(function () {
|
|
1458
|
+
// check if extension is found
|
|
1459
|
+
var bhasExtensionFound = oController.hasOwnProperty("focusOnEditExtension");
|
|
1460
|
+
var oFocusControl;
|
|
1461
|
+
if (bhasExtensionFound) {
|
|
1462
|
+
var sSelectedSection = oObjectPage.getSelectedSection();
|
|
1463
|
+
// call the extension method and get the control passed by application
|
|
1464
|
+
oFocusControl = oController.focusOnEditExtension(sSelectedSection);
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
// Check if the passed control is defined, focusable, and visible within the viewport.
|
|
1468
|
+
if (oFocusControl && oFocusControl.focus && oFocusControl.getDomRef()) {
|
|
1469
|
+
//set the focus on the control passed by application
|
|
1470
|
+
if (controlHelper.isSmartField(oFocusControl)) {
|
|
1471
|
+
// check whether the SmartField is the correct target for focussing
|
|
1472
|
+
controlHelper.getSmartFieldIsFocussableForInputPromise(oFocusControl).then(function (bIsFocusable) {
|
|
1473
|
+
if (bIsFocusable) {
|
|
1474
|
+
controlHelper.focusUI5Control(oFocusControl);
|
|
1475
|
+
} else {
|
|
1476
|
+
oLogger.info("Provided control is not focusable or visible in the viewport, hence fall back to the standard focus handling");
|
|
1477
|
+
fnStandardFocusHandlingOnEdit(bFocusAtTop);
|
|
1478
|
+
}
|
|
1479
|
+
});
|
|
1480
|
+
} else {
|
|
1481
|
+
//if the passed control is not a smart field, check and set the focus on
|
|
1482
|
+
controlHelper.focusUI5Control(oFocusControl);
|
|
1483
|
+
}
|
|
1484
|
+
} else {
|
|
1485
|
+
// If no extension is defined, proceed with the standard execution flow.
|
|
1486
|
+
// If the control passed via the extension does not meet the required conditions,
|
|
1487
|
+
// fall back to the standard focus handling mechanism.
|
|
1488
|
+
if (bhasExtensionFound) {
|
|
1489
|
+
oLogger.info("Provided control is not focusable or visible in the viewport, hence fall back to the standard focus handling");
|
|
1490
|
+
}
|
|
1491
|
+
fnStandardFocusHandlingOnEdit(bFocusAtTop);
|
|
1492
|
+
}
|
|
1459
1493
|
}, 0);
|
|
1460
1494
|
}
|
|
1461
1495
|
|
|
1496
|
+
function fnStandardFocusHandlingOnEdit(bFocusAtTop) {
|
|
1497
|
+
var oFocusControlPromise = getFocusForEditPromise(bFocusAtTop);
|
|
1498
|
+
oFocusControlPromise.then(function (oFocusControl) {
|
|
1499
|
+
controlHelper.focusUI5Control(oFocusControl);
|
|
1500
|
+
});
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1503
|
+
|
|
1462
1504
|
/* Begin: Functions dealing with the search field on tables */
|
|
1463
1505
|
|
|
1464
1506
|
// a search field in one of the tables is used to trigger a search.
|
|
@@ -28,7 +28,8 @@ sap.ui.define([
|
|
|
28
28
|
onChildOpenedExtension: { "public": true, "final": false, overrideExecution: OverrideExecution.After},
|
|
29
29
|
onSubSectionEnteredExtension: { "public": true, "final": false, overrideExecution: OverrideExecution.After},
|
|
30
30
|
beforeSmartLinkPopoverOpensExtension: { "public": true, "final": false, overrideExecution: OverrideExecution.After},
|
|
31
|
-
onBeforeExportTableExtension: { "public": true, "final": false, overrideExecution: OverrideExecution.After}
|
|
31
|
+
onBeforeExportTableExtension: { "public": true, "final": false, overrideExecution: OverrideExecution.After},
|
|
32
|
+
focusOnEditExtension:{ "public": true, "final": false, overrideExecution: OverrideExecution.After}
|
|
32
33
|
}
|
|
33
34
|
},
|
|
34
35
|
|
|
@@ -262,6 +263,22 @@ sap.ui.define([
|
|
|
262
263
|
*/
|
|
263
264
|
getContext: function(oContext) {
|
|
264
265
|
return oContext;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
|
|
266
|
+
},
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Extension point for the application to specify the control to focus on in the object page upon edit.
|
|
270
|
+
*
|
|
271
|
+
* @param {String} sSelectedSection - The ID of the selected section.
|
|
272
|
+
* @returns {sap.ui.core.Control} - The control that needs to be focused.
|
|
273
|
+
*
|
|
274
|
+
* The returned control must meet the following criteria:
|
|
275
|
+
* - Be focusable and have a "focus" property.
|
|
276
|
+
* - Be visible within the viewport.
|
|
277
|
+
*
|
|
278
|
+
* If the returned control does not satisfy these conditions, the standard focus handling logic is executed.
|
|
279
|
+
*/
|
|
280
|
+
focusOnEditExtension: function (sSelectedSection) {
|
|
281
|
+
return {};
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
});
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
ariaLabelledBy="objectNoDataText unsavedPopoverText lockedPopoverText objectChangedText"
|
|
5
5
|
contentWidth="15.625rem"
|
|
6
6
|
verticalScrolling="false"
|
|
7
|
+
placement="Auto"
|
|
7
8
|
class="sapSmartTemplatesListReportPopover sapUiContentPadding">
|
|
8
9
|
<endButton>
|
|
9
10
|
<Button icon="sap-icon://decline" tooltip="{i18n>CLOSE}" press="closeDraftAdminPopover" />
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
<Label id="header::{path: 'headerFacet>', formatter: 'AH.getStableIdPartFromFacet'}::{path: 'dataField>', formatter: 'AH.getStableIdPartFromDataField'}::Label"
|
|
18
18
|
labelFor="header::{path: 'headerFacet>', formatter: 'AH.getStableIdPartFromFacet'}::{path: 'dataField>', formatter: 'AH.getStableIdPartFromDataField'}::Field"
|
|
19
19
|
text="{path: 'dataField>Label', formatter: 'AHModel.format'}"
|
|
20
|
-
class="sapSmartTemplatesObjectPageHeaderFormLabel sapUiTinyMarginEnd"
|
|
20
|
+
class="sapSmartTemplatesObjectPageHeaderFormLabel sapUiTinyMarginEnd"
|
|
21
|
+
showColon="true"
|
|
22
|
+
/>
|
|
21
23
|
<fe:Link id="header::{path: 'headerFacet>', formatter: 'AH.getStableIdPartFromFacet'}::{path: 'dataField>', formatter: 'AH.getStableIdPartFromDataField'}::Field"
|
|
22
24
|
press="._templateEventHandlers.onContactDetails"
|
|
23
25
|
ariaLabelledBy="{:= ${parameter>/stableId}.getStableId({type: 'ObjectPageHeader', subType: 'HeaderTitle', sFacet: ${facetId>id}})} header::{path: 'headerFacet>', formatter: 'AH.getStableIdPartFromFacet'}::{path: 'dataField>', formatter: 'AH.getStableIdPartFromDataField'}::Label"
|
|
@@ -37,9 +39,11 @@
|
|
|
37
39
|
<HBox binding="{parts: [{path: 'headerFacet>Target'}, {path: 'entitySet>'}], formatter: 'AH.getNavigationPathWithExpand'}"
|
|
38
40
|
visible="{path: 'dataField>', formatter: 'AH.getBindingForHiddenPath'}">
|
|
39
41
|
<Label
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
id="header::{path: 'headerFacet>', formatter: 'AH.getStableIdPartFromFacet'}::{path: 'dataField>', formatter: 'AH.getStableIdPartFromDataField'}::Label"
|
|
43
|
+
text="{parts: [{path: 'dataField>'}, {path: 'entitySet>'}], formatter: 'AH.getLabelForDFwithIBN'}"
|
|
44
|
+
class="sapSmartTemplatesObjectPageHeaderFormLabel sapUiTinyMarginEnd"
|
|
45
|
+
showColon="true"
|
|
46
|
+
/>
|
|
43
47
|
<fe:Link
|
|
44
48
|
id="header::{path: 'headerFacet>', formatter: 'AH.getStableIdPartFromFacet'}::{path: 'dataField>', formatter: 'AH.getStableIdPartFromDataField'}::Field"
|
|
45
49
|
text="{parts: [{path: 'dataField>'}, {path: 'entitySet>'}], formatter: 'AH.getLinkTextForDFwithIBN'}"
|
|
@@ -61,6 +65,7 @@
|
|
|
61
65
|
binding="{parts: [{path: 'headerFacet>Target'}, {path: 'entitySet>'}], formatter: 'AH.getNavigationPathWithExpand'}"
|
|
62
66
|
visible="{path: 'dataField>', formatter: 'AH.getBindingForHiddenPath'}" >
|
|
63
67
|
<sfi:SmartLabel
|
|
68
|
+
showColon="true"
|
|
64
69
|
labelFor="header::{path: 'headerFacet>', formatter: 'AH.getStableIdPartFromFacet'}::{path: 'dataField>', formatter: 'AH.getStableIdPartFromDataField'}::Field"
|
|
65
70
|
class="sapSmartTemplatesObjectPageHeaderFormLabel sapUiTinyMarginEnd" />
|
|
66
71
|
|
|
@@ -88,6 +93,7 @@
|
|
|
88
93
|
<sfi:SmartLabel
|
|
89
94
|
id="header::{path: 'headerFacet>', formatter: 'AH.getStableIdPartFromFacet'}::{path: 'dataField>', formatter: 'AH.getStableIdPartFromDataField'}::Label"
|
|
90
95
|
labelFor="header::{path: 'headerFacet>', formatter: 'AH.getStableIdPartFromFacet'}::{path: 'dataField>', formatter: 'AH.getStableIdPartFromDataField'}::Field"
|
|
96
|
+
showColon="true"
|
|
91
97
|
class="{= ${dataField>Criticality} ? 'sapSmartTemplatesObjectPageHeaderFormLabel': 'sapSmartTemplatesObjectPageHeaderFormLabelNCriticcal' } sapUiTinyMarginEnd"/>
|
|
92
98
|
<!-- TODO: Should also work with ...format -->
|
|
93
99
|
<template:with path="headerFacet>Target" helper="AHModel.gotoEntitySet" var="annotation">
|
|
@@ -64,16 +64,17 @@ sap.ui.define([
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
// returns a Promise that resolves to the boolean information whether the SmartField is a possible focus target for input.
|
|
67
|
-
function getSmartFieldIsFocussableForInputPromise(oSmartField){
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
67
|
+
function getSmartFieldIsFocussableForInputPromise(oSmartField) {
|
|
68
|
+
return oSmartField._getComputedMetadata().then(function () {
|
|
69
|
+
return (oSmartField.getMode() === "edit") && (oSmartField._getICRenderedPromise() || Promise.resolve());
|
|
70
|
+
}).then(function () {
|
|
71
|
+
var oFirstFocusableInput = !oSmartField._bEdmBoolDetected && getFirstEditableInput(oSmartField.getDomRef());
|
|
72
|
+
return !(!oFirstFocusableInput || oFirstFocusableInput.type === "checkbox");
|
|
73
|
+
}).catch(function () {
|
|
74
|
+
return false;
|
|
74
75
|
});
|
|
75
|
-
}
|
|
76
|
-
|
|
76
|
+
}
|
|
77
|
+
|
|
77
78
|
// returns the UI5 control which currently has the focus, if there is one. Otherwise returns a faulty value.
|
|
78
79
|
// Implementation as recommended by UI5 until the provide an own abstraction.
|
|
79
80
|
function getControlWithFocus(){
|
|
@@ -204,10 +204,12 @@ sap.ui.define([
|
|
|
204
204
|
}
|
|
205
205
|
var sRet = aFiltersForProperty.map(function (oFilter) {
|
|
206
206
|
var bCaseSensitive = true;
|
|
207
|
+
// Define the date range operations that need date formatting
|
|
208
|
+
var dateRangeOperations = ["DATE", "DATERANGE", "DATETIMERANGE", "FROM", "TO"];
|
|
207
209
|
if (oFilter.bCaseSensitive === undefined) {
|
|
208
210
|
bCaseSensitive = true;
|
|
209
211
|
}
|
|
210
|
-
if ((oProperty.type === "Edm.DateTime" || oProperty.type === "Edm.DateTimeOffset") && oParams.oFilterData[sPropertyForFilterData].conditionTypeInfo && oParams.oFilterData[sPropertyForFilterData].conditionTypeInfo.data.operation
|
|
212
|
+
if ((oProperty.type === "Edm.DateTime" || oProperty.type === "Edm.DateTimeOffset") && oParams.oFilterData[sPropertyForFilterData].conditionTypeInfo && !dateRangeOperations.includes(oParams.oFilterData[sPropertyForFilterData].conditionTypeInfo.data.operation)) {
|
|
211
213
|
if (!DynamicDateUtil.getAllOptionKeys().includes(oParams.oFilterData[sPropertyForFilterData].conditionTypeInfo.data.operation)) {
|
|
212
214
|
oParams.bIsStatic = true;
|
|
213
215
|
return;
|
|
@@ -938,7 +938,7 @@ sap.ui.define([
|
|
|
938
938
|
* @public
|
|
939
939
|
* @extends sap.ui.core.UIComponent
|
|
940
940
|
* @author SAP SE
|
|
941
|
-
* @version 1.130.
|
|
941
|
+
* @version 1.130.10
|
|
942
942
|
* @name sap.suite.ui.generic.template.lib.AppComponent
|
|
943
943
|
*/
|
|
944
944
|
var oAppComponent = UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
|
|
@@ -243,7 +243,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
243
243
|
var iEntitySetName = sSmartControlId.indexOf("::" + oComponent.getEntitySet() + "--") + 2; //Ensure only Entity set is picked up for processing
|
|
244
244
|
var sI18nKey = sSmartControlId.substring(iEntitySetName, sSmartControlId.lastIndexOf("::")),
|
|
245
245
|
sI18nKey = sI18nKey.replace(/--/g, "|").replace(/::/g, "|"); //sId = "STTA_C_MP_Product|to_ProductText|com.sap.vocabularies.UI.v1.LineItem"
|
|
246
|
-
|
|
246
|
+
|
|
247
247
|
return sI18nKey;
|
|
248
248
|
}
|
|
249
249
|
|
|
@@ -291,9 +291,9 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
291
291
|
|
|
292
292
|
/*
|
|
293
293
|
* Sets the enabled value for Toolbar buttons
|
|
294
|
-
*
|
|
295
|
-
* Currently, the property applicablePath (resp. sap:applicable-path) is only evaluated for buttons in header and
|
|
296
|
-
* footer (influencing the visibility) and for toolbar buttons which require a context (influencing the enablement).
|
|
294
|
+
*
|
|
295
|
+
* Currently, the property applicablePath (resp. sap:applicable-path) is only evaluated for buttons in header and
|
|
296
|
+
* footer (influencing the visibility) and for toolbar buttons which require a context (influencing the enablement).
|
|
297
297
|
* For static toolbar buttons (i.e. toolbar buttons that do not require a selection) the property is ignored.
|
|
298
298
|
* TO DO : make sure the properties applicablePath/sap:applicable-path influence the visibility of static toolbar buttons as well
|
|
299
299
|
*
|
|
@@ -348,11 +348,11 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
348
348
|
oComponentUtils.getTemplatePrivateModel().setProperty("/listReport/multiEditEnabled", aContexts.filter(fnIsContextEditable).length > 0);
|
|
349
349
|
}
|
|
350
350
|
if (oEnabledPromise){
|
|
351
|
-
// check if "enabled" is bound to the path '/generic/controlProperties/' in the model - otherwise it's bound to another path or has a hard coded true/false
|
|
351
|
+
// check if "enabled" is bound to the path '/generic/controlProperties/' in the model - otherwise it's bound to another path or has a hard coded true/false
|
|
352
352
|
if (oEnabledPromise && !/generic\/controlProperties/.test(oButton.getBindingPath("enabled"))) {
|
|
353
353
|
oEnabledPromise = null;
|
|
354
354
|
bEnabled = oButton.getEnabled();
|
|
355
|
-
}
|
|
355
|
+
}
|
|
356
356
|
}
|
|
357
357
|
return {
|
|
358
358
|
enabledPromise: oEnabledPromise,
|
|
@@ -548,21 +548,21 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
548
548
|
// This method is invoked twice in ALP. Once for smart table and once again for smart chart.
|
|
549
549
|
// In the first iteration (smart table actions), the calculated enablement value is stored on "mBreakoutActionEnabled".
|
|
550
550
|
// In the second iteration (smart chart actions), the enablement should be calculated only for the chart actions (oBreakoutAction.filter = "chart").
|
|
551
|
-
// As the previously calculated value for the table actions should be retained, the value stored on "mBreakoutActionEnabled" is used as the default value.
|
|
551
|
+
// As the previously calculated value for the table actions should be retained, the value stored on "mBreakoutActionEnabled" is used as the default value.
|
|
552
552
|
var bDefaultValue = !bIsAnalyticalListPage || !!mBreakOutActionEnabled[sControlId].enabled;
|
|
553
553
|
var bEnabled = fnIsBreakoutActionEnabled(oBreakoutAction, aContexts, oModel, oControl, bDefaultValue, bIsAnalyticalListPage);
|
|
554
|
-
|
|
554
|
+
|
|
555
555
|
mBreakOutActionEnabled[sControlId] = {
|
|
556
556
|
enabled: bEnabled
|
|
557
|
-
};
|
|
557
|
+
};
|
|
558
558
|
}
|
|
559
|
-
|
|
559
|
+
|
|
560
560
|
/**
|
|
561
561
|
* This method analyzes the applicable contexts and tells whether the breakout action should be enabled.
|
|
562
|
-
*
|
|
563
|
-
* If the context based analysis is not required (i.e the action doesn't require selection),
|
|
562
|
+
*
|
|
563
|
+
* If the context based analysis is not required (i.e the action doesn't require selection),
|
|
564
564
|
* it will simply return the default value <code>bDefaultValue</code>.
|
|
565
|
-
*
|
|
565
|
+
*
|
|
566
566
|
* @param {object} oBreakoutAction Manifest information about the breakout action
|
|
567
567
|
* @param {Array<sap.ui.model.Context>} aContexts Applicable contexts
|
|
568
568
|
* @param {sap.ui.model.Model} oModel Model of the smart control
|
|
@@ -583,14 +583,14 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
583
583
|
// check if applicablePath is true for this context
|
|
584
584
|
var oObject = oModel.getObject(oContext.getPath() + oApplicablePathInfo.navigationPath);
|
|
585
585
|
return oObject[oApplicablePathInfo.property] === true;
|
|
586
|
-
});
|
|
586
|
+
});
|
|
587
587
|
} else {
|
|
588
588
|
bEnabled = bEnabled || (bFilterIsChart ? controlHelper.isSmartChart(oControl) : controlHelper.isSmartTable(oControl));
|
|
589
589
|
}
|
|
590
590
|
} else if (controlHelper.isSmartChart(oControl)) {
|
|
591
591
|
//table button chart ondata received
|
|
592
592
|
// For LR/OP, directly evaluate the drill stack filters and enable the action accordingly.
|
|
593
|
-
// For ALP, evaluate the drill stack filters only when oBreakoutAction.filter is "chart" and skip the evaluation for table based actions.
|
|
593
|
+
// For ALP, evaluate the drill stack filters only when oBreakoutAction.filter is "chart" and skip the evaluation for table based actions.
|
|
594
594
|
if (!bIsAnalyticalListPage || bFilterIsChart) {
|
|
595
595
|
// If enabled Selection is made on the chart but drilldown is performed later.
|
|
596
596
|
bEnabled = oControl.getDrillStackFilters().length > 0;
|
|
@@ -601,7 +601,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
601
601
|
}
|
|
602
602
|
}
|
|
603
603
|
return bEnabled;
|
|
604
|
-
|
|
604
|
+
|
|
605
605
|
}
|
|
606
606
|
|
|
607
607
|
function fnUpdateBreakoutEnablement(mBreakOutActionEnabled, mBreakoutActions, aContexts, oModel, sSelectedTabKey, oControl) {
|
|
@@ -828,13 +828,13 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
828
828
|
|
|
829
829
|
/**
|
|
830
830
|
* Provides the Navigation Context about the smart link clicked by the user
|
|
831
|
-
*
|
|
831
|
+
*
|
|
832
832
|
* @param {Array} aKeys - Array of Navigation Key Properties Object
|
|
833
833
|
* @param {object} oResponse - response of oDataModel's GET request
|
|
834
834
|
* @returns {string} route string for Context Navigation
|
|
835
835
|
* @private
|
|
836
836
|
*/
|
|
837
|
-
|
|
837
|
+
|
|
838
838
|
function fnMergeNavigationKeyPropertiesWithValues(aKeys, oResponse) {
|
|
839
839
|
var sKeySeparator, sRoute;
|
|
840
840
|
for (var i = 0, ilength = aKeys.length; i < ilength; i++) {
|
|
@@ -904,7 +904,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
904
904
|
|
|
905
905
|
/**
|
|
906
906
|
* Provides the information about the smart link clicked by user
|
|
907
|
-
*
|
|
907
|
+
*
|
|
908
908
|
* @param {*} oEvent beforePopoverOpens event
|
|
909
909
|
* @returns {object} oSourceInfo - object contains the smart link info
|
|
910
910
|
* oSourceInfo.smartLink - The clicked smart link
|
|
@@ -916,9 +916,9 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
916
916
|
oSmartLink = sap.ui.getCore().byId(sSmartLinkId),
|
|
917
917
|
oOwnerControl = getOwnerControl(oSmartLink, true),
|
|
918
918
|
oSourceInfo = Object.create(null);
|
|
919
|
-
|
|
919
|
+
|
|
920
920
|
oSourceInfo.smartLink = oSmartLink;
|
|
921
|
-
|
|
921
|
+
|
|
922
922
|
if (controlHelper.isSmartTable(oOwnerControl)) {
|
|
923
923
|
var oSmartTableHandler = oServices.oPresentationControlHandlerFactory.getPresentationControlHandler(oOwnerControl);
|
|
924
924
|
oSourceInfo.smartTable = oOwnerControl;
|
|
@@ -1001,7 +1001,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1001
1001
|
// call extension
|
|
1002
1002
|
oController.adaptNavigationParameterExtension(oSelectionVariant, oObjectInfo);
|
|
1003
1003
|
sSelectionVariantPrepared = oSelectionVariant.toJSONString();
|
|
1004
|
-
}
|
|
1004
|
+
}
|
|
1005
1005
|
delete oEventParameters.semanticAttributes;
|
|
1006
1006
|
oNavigationHandler.processBeforeSmartLinkPopoverOpens(oEventParameters, sSelectionVariantPrepared);
|
|
1007
1007
|
}
|
|
@@ -1025,7 +1025,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1025
1025
|
var sOwnerComponentEntitySet = oController.getOwnerComponent().getEntitySet();
|
|
1026
1026
|
if (controlHelper.isSemanticObjectController(oControl) || controlHelper.isSmartTable(oControl)) {
|
|
1027
1027
|
sControlEntitySet = oControl.getEntitySet();
|
|
1028
|
-
} else {
|
|
1028
|
+
} else {
|
|
1029
1029
|
// When navigation from table is triggered from an OP Table, oControl is not a smart table but a link or a button in the table.
|
|
1030
1030
|
var oOwnerControl = getOwnerControl(oControl);
|
|
1031
1031
|
var oParentControl = oOwnerControl && oOwnerControl.getParent();
|
|
@@ -1087,7 +1087,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1087
1087
|
fnHandleMandatoryField("HasActiveEntity");
|
|
1088
1088
|
}
|
|
1089
1089
|
}
|
|
1090
|
-
|
|
1090
|
+
|
|
1091
1091
|
function isMultiViewMultiEntity() {
|
|
1092
1092
|
return !!(oComponentUtils && oComponentUtils.getSettings() && oComponentUtils.getSettings().quickVariantSelectionX);
|
|
1093
1093
|
}
|
|
@@ -1369,7 +1369,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1369
1369
|
var aLinksToCheck = [], aInternalLinks = [];
|
|
1370
1370
|
var oAppComponent = oComponent.getAppComponent();
|
|
1371
1371
|
var UshellContainer = sap.ui.require("sap/ushell/Container");
|
|
1372
|
-
var
|
|
1372
|
+
var oXAppNavigation = UshellContainer && UshellContainer.getServiceAsync("Navigation");
|
|
1373
1373
|
var oSupportedIntents = oTemplatePrivateModel.getProperty("/generic/supportedIntents/");
|
|
1374
1374
|
var aToolbarContent = oToolbar.getContent();
|
|
1375
1375
|
var iButtonsNumber = aToolbarContent.length;
|
|
@@ -1390,51 +1390,51 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1390
1390
|
}
|
|
1391
1391
|
}
|
|
1392
1392
|
|
|
1393
|
-
if (aLinksToCheck.length
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1393
|
+
if (!aLinksToCheck.length || !oXAppNavigation) {
|
|
1394
|
+
return;
|
|
1395
|
+
}
|
|
1396
|
+
oXAppNavigation.then(function(oCrossAppNavigator) {
|
|
1397
|
+
var oDeferredLinks = oCrossAppNavigator.getLinks(aLinksToCheck);
|
|
1398
|
+
oDeferredLinks.then(function(aLinks) {
|
|
1399
|
+
oSupportedIntents = oTemplatePrivateModel.getProperty("/generic/supportedIntents/");
|
|
1400
|
+
var iLinksNumber = aLinks.length;
|
|
1401
|
+
// Entries in aLinks should correspond to aInternalLinks: if a link is not supported an empty object is returned by the method getLinks
|
|
1402
|
+
var aHrefPromises = [],
|
|
1403
|
+
aHrefLinks = [];
|
|
1404
|
+
for (var i = 0; i < iLinksNumber; i++) {
|
|
1405
|
+
if (aLinks[i].length > 0) {
|
|
1406
|
+
var sHref = oCrossAppNavigator.getHref({ target: { shellHash: aLinks[i][0].intent } }, oAppComponent);
|
|
1407
|
+
aHrefPromises.push(sHref);
|
|
1408
|
+
// Store value in separate array. Count in aHrefLinks and in aInternalLinks may differs
|
|
1409
|
+
aHrefLinks.push(aInternalLinks[i]);
|
|
1410
|
+
}
|
|
1411
|
+
}
|
|
1412
|
+
Promise.all(aHrefPromises).then(function(aResponses) {
|
|
1413
|
+
for (var j = 0; j < aResponses.length; j++) {
|
|
1414
|
+
if (aResponses[j]) {
|
|
1415
|
+
aHrefLinks[j].bLinkIsSupported = true;
|
|
1405
1416
|
}
|
|
1406
1417
|
}
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
};
|
|
1422
|
-
} else if (!oSemObjProp[sAction]) { // no action in the model yet
|
|
1423
|
-
oSemObjProp[sAction] =
|
|
1424
|
-
{
|
|
1425
|
-
"visible" :aInternalLinks[j].bLinkIsSupported
|
|
1426
|
-
};
|
|
1427
|
-
} else {
|
|
1428
|
-
oSemObjProp[sAction]["visible"] = aInternalLinks[i].bLinkIsSupported;
|
|
1429
|
-
}
|
|
1418
|
+
}).then(function() {
|
|
1419
|
+
aInternalLinks.forEach(function(entry) {
|
|
1420
|
+
// add the value to the model
|
|
1421
|
+
var sSemObj = entry.semanticObject,
|
|
1422
|
+
sAction = entry.action,
|
|
1423
|
+
oSemObjProp = oTemplatePrivateModel.getProperty("/generic/supportedIntents/" + sSemObj);
|
|
1424
|
+
|
|
1425
|
+
if (!oSemObjProp) { // no semantic object in the model yet
|
|
1426
|
+
oSupportedIntents[sSemObj] = {};
|
|
1427
|
+
oSupportedIntents[sSemObj][sAction] = { "visible" :entry.bLinkIsSupported };
|
|
1428
|
+
} else if (!oSemObjProp[sAction]) { // no action in the model yet
|
|
1429
|
+
oSemObjProp[sAction] = { "visible" :entry.bLinkIsSupported };
|
|
1430
|
+
} else {
|
|
1431
|
+
oSemObjProp[sAction]["visible"] = entry.bLinkIsSupported;
|
|
1430
1432
|
}
|
|
1431
|
-
}).then(function() {
|
|
1432
|
-
oTemplatePrivateModel.updateBindings();
|
|
1433
1433
|
});
|
|
1434
|
+
oTemplatePrivateModel.updateBindings();
|
|
1434
1435
|
});
|
|
1435
1436
|
});
|
|
1436
|
-
|
|
1437
|
-
}
|
|
1437
|
+
});
|
|
1438
1438
|
}
|
|
1439
1439
|
|
|
1440
1440
|
// This function executes the given handler fnHandler if preconditions are given
|
|
@@ -1607,10 +1607,10 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1607
1607
|
}
|
|
1608
1608
|
|
|
1609
1609
|
/**
|
|
1610
|
-
* While exporting data from a table, this function removes the technical properties
|
|
1611
|
-
* (like "IsActiveEntity", "HasActiveEntity") and adds the actual value of "Editing Status" select box
|
|
1612
|
-
* into the exported file.
|
|
1613
|
-
*
|
|
1610
|
+
* While exporting data from a table, this function removes the technical properties
|
|
1611
|
+
* (like "IsActiveEntity", "HasActiveEntity") and adds the actual value of "Editing Status" select box
|
|
1612
|
+
* into the exported file.
|
|
1613
|
+
*
|
|
1614
1614
|
* @param {sap.ui.export.util.Filter[]} aFilterSettings Filters in the exported file
|
|
1615
1615
|
*/
|
|
1616
1616
|
function fnTransformTechnicalPropsOnExportedFile (aFilterSettings) {
|
|
@@ -1625,7 +1625,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1625
1625
|
// Find the technical props for the selected draft state value
|
|
1626
1626
|
var sDraftStateValue = oEditStateControl.getSelectedKey(),
|
|
1627
1627
|
aTechnicalProps = oDraftStateToTechnicalProps[sDraftStateValue];
|
|
1628
|
-
|
|
1628
|
+
|
|
1629
1629
|
aTechnicalProps.forEach(function (oTechnicalProp){
|
|
1630
1630
|
// Find the index of filter settings to be removed
|
|
1631
1631
|
var iIndexOfFilterSettingsToBeRemoved = aFilterSettings.findIndex(function (oFilterSettings){
|
|
@@ -1639,7 +1639,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1639
1639
|
aFilterSettings.splice(iIndexOfFilterSettingsToBeRemoved, 1);
|
|
1640
1640
|
}
|
|
1641
1641
|
});
|
|
1642
|
-
|
|
1642
|
+
|
|
1643
1643
|
//Create a new filter with the value retrieved from "editStateFilter" select control
|
|
1644
1644
|
var sEditStateLabel = oEditStateControl.getLabels().at(0).getText(),
|
|
1645
1645
|
sEditStateValue = oEditStateControl.getSelectedItem().getText(),
|
|
@@ -1651,9 +1651,9 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1651
1651
|
}
|
|
1652
1652
|
|
|
1653
1653
|
/**
|
|
1654
|
-
* This method reads the values of analytical parameters from the smart filter bar
|
|
1654
|
+
* This method reads the values of analytical parameters from the smart filter bar
|
|
1655
1655
|
* and adds them to the list of filters in the exported file
|
|
1656
|
-
*
|
|
1656
|
+
*
|
|
1657
1657
|
* @param {sap.ui.comp.smarttable.SmartTable} oSmartTable The smart table which has the data to be exported
|
|
1658
1658
|
* @param {sap.ui.export.util.Filter[]} aFilterSettings Current filters in the exported file
|
|
1659
1659
|
*/
|
|
@@ -1755,7 +1755,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1755
1755
|
}, fnReject);
|
|
1756
1756
|
});
|
|
1757
1757
|
};
|
|
1758
|
-
|
|
1758
|
+
|
|
1759
1759
|
var fnIsFieldModified = function(oSourceControl) {
|
|
1760
1760
|
var oInnerControl = oSourceControl.getFirstInnerControl && oSourceControl.getFirstInnerControl();
|
|
1761
1761
|
if (oInnerControl.getValue() !== oInnerControl.getLastValue()) {
|
|
@@ -1780,7 +1780,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1780
1780
|
if (!fnIsFieldModified(oSourceControl)) {
|
|
1781
1781
|
mAdditionalParameters.callPreparationOnly = true;
|
|
1782
1782
|
}
|
|
1783
|
-
fnCallExecuteSideEffect();
|
|
1783
|
+
fnCallExecuteSideEffect();
|
|
1784
1784
|
// Resolve the promise and exit the loop for Inactive transient row
|
|
1785
1785
|
return fnResolve();
|
|
1786
1786
|
}
|
|
@@ -3181,7 +3181,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
3181
3181
|
* @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
|
|
3182
3182
|
* @public
|
|
3183
3183
|
* @extends sap.ui.base.Object
|
|
3184
|
-
* @version 1.130.
|
|
3184
|
+
* @version 1.130.10
|
|
3185
3185
|
* @since 1.30.0
|
|
3186
3186
|
* @alias sap.suite.ui.generic.template.lib.NavigationController
|
|
3187
3187
|
*/
|
|
@@ -217,10 +217,6 @@ html[dir="rtl"] .sapSmartTemplatesObjectPage .sapUxAPObjectPageHeaderContent .sa
|
|
|
217
217
|
float: right;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm.sapMLabel:after, .sapSmartTemplatesObjectPageHeaderFormLabelNCriticcal.sapMLabel:after, .sapSmartTemplatesObjectPageHeaderFormLabel.sapMLabel:after, .sapSmartTemplatesObjectPageDataPointLabel.sapMLabel:after {
|
|
221
|
-
content: ":";
|
|
222
|
-
}
|
|
223
|
-
|
|
224
220
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField .sapMText,
|
|
225
221
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField .sapMLnk,
|
|
226
222
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField.sapMLnk,
|
|
@@ -217,10 +217,6 @@ html[dir="rtl"] .sapSmartTemplatesObjectPage .sapUxAPObjectPageHeaderContent .sa
|
|
|
217
217
|
float: right;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm.sapMLabel:after, .sapSmartTemplatesObjectPageHeaderFormLabelNCriticcal.sapMLabel:after, .sapSmartTemplatesObjectPageHeaderFormLabel.sapMLabel:after, .sapSmartTemplatesObjectPageDataPointLabel.sapMLabel:after {
|
|
221
|
-
content: ":";
|
|
222
|
-
}
|
|
223
|
-
|
|
224
220
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField .sapMText,
|
|
225
221
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField .sapMLnk,
|
|
226
222
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField.sapMLnk,
|
|
@@ -217,10 +217,6 @@ html[dir="rtl"] .sapSmartTemplatesObjectPage .sapUxAPObjectPageHeaderContent .sa
|
|
|
217
217
|
float: right;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm.sapMLabel:after, .sapSmartTemplatesObjectPageHeaderFormLabelNCriticcal.sapMLabel:after, .sapSmartTemplatesObjectPageHeaderFormLabel.sapMLabel:after, .sapSmartTemplatesObjectPageDataPointLabel.sapMLabel:after {
|
|
221
|
-
content: ":";
|
|
222
|
-
}
|
|
223
|
-
|
|
224
220
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField .sapMText,
|
|
225
221
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField .sapMLnk,
|
|
226
222
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField.sapMLnk,
|
|
@@ -217,10 +217,6 @@ html[dir="rtl"] .sapSmartTemplatesObjectPage .sapUxAPObjectPageHeaderContent .sa
|
|
|
217
217
|
float: right;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm.sapMLabel:after, .sapSmartTemplatesObjectPageHeaderFormLabelNCriticcal.sapMLabel:after, .sapSmartTemplatesObjectPageHeaderFormLabel.sapMLabel:after, .sapSmartTemplatesObjectPageDataPointLabel.sapMLabel:after {
|
|
221
|
-
content: ":";
|
|
222
|
-
}
|
|
223
|
-
|
|
224
220
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField .sapMText,
|
|
225
221
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField .sapMLnk,
|
|
226
222
|
.sapSmartTemplatesObjectPage .sapSmartTemplatesObjectPageHeaderForm .sapSmartTemplatesObjectPageHeaderFormField.sapMLnk,
|