@sapui5/sap.fe.templates 1.106.0 → 1.107.1
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/fe/templates/.library +1 -1
- package/src/sap/fe/templates/ListReport/ListReport.view.xml +1 -1
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +5 -2
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +5 -1
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +2 -2
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +1 -1
- package/src/sap/fe/templates/ListReport/overrides/Share.js +1 -12
- package/src/sap/fe/templates/ListReport/overrides/Share.ts +1 -14
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +132 -3
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +88 -1
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +3 -26
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +40 -14
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +38 -13
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +2 -2
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.ts +2 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Share.js +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingContent.fragment.xml +30 -0
- package/src/sap/fe/templates/library.js +1 -1
|
@@ -31,13 +31,7 @@ function getCountUrl(oController: ListReportController) {
|
|
|
31
31
|
}
|
|
32
32
|
return baseUrl + aSupportedParams.join("&");
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
const sHash = HashChanger.getInstance().getHash();
|
|
36
|
-
const sBasePath = (HashChanger.getInstance() as any).hrefForAppSpecificHash
|
|
37
|
-
? (HashChanger.getInstance() as any).hrefForAppSpecificHash("")
|
|
38
|
-
: "";
|
|
39
|
-
return sHash ? sBasePath + sHash : window.location.hash;
|
|
40
|
-
}
|
|
34
|
+
|
|
41
35
|
function getShareEmailUrl() {
|
|
42
36
|
const oUShellContainer = sap.ushell && sap.ushell.Container;
|
|
43
37
|
if (oUShellContainer) {
|
|
@@ -109,13 +103,6 @@ const ShareOverride = {
|
|
|
109
103
|
Log.error(error);
|
|
110
104
|
});
|
|
111
105
|
|
|
112
|
-
Promise.resolve(getShareUrl())
|
|
113
|
-
.then(function (sUrl: any) {
|
|
114
|
-
oShareMetadata.url = sUrl;
|
|
115
|
-
})
|
|
116
|
-
.catch(function (error: any) {
|
|
117
|
-
Log.error(error);
|
|
118
|
-
});
|
|
119
106
|
return Promise.resolve(getShareEmailUrl()).then(function (sFLPUrl: any) {
|
|
120
107
|
oShareMetadata.email.url = sFLPUrl;
|
|
121
108
|
return oShareMetadata;
|
|
@@ -2,14 +2,29 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "sap/fe/core/ExtensionAPI", "sap/fe/core/helpers/ClassSupport"], function (CommonUtils, ID, ExtensionAPI, ClassSupport) {
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "sap/fe/core/ExtensionAPI", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/library", "sap/ui/core/message/Message"], function (Log, CommonUtils, ID, ExtensionAPI, ClassSupport, library, Message) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _class;
|
|
9
9
|
|
|
10
|
+
var MessageType = library.MessageType;
|
|
10
11
|
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
11
12
|
var getSideContentLayoutID = ID.getSideContentLayoutID;
|
|
12
13
|
|
|
14
|
+
function _catch(body, recover) {
|
|
15
|
+
try {
|
|
16
|
+
var result = body();
|
|
17
|
+
} catch (e) {
|
|
18
|
+
return recover(e);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (result && result.then) {
|
|
22
|
+
return result.then(void 0, recover);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
|
|
13
28
|
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
14
29
|
|
|
15
30
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
@@ -116,7 +131,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "
|
|
|
116
131
|
return oTable && oTable.isA("sap.ui.mdc.Table") && oTable.getSelectedContexts() || [];
|
|
117
132
|
}
|
|
118
133
|
/**
|
|
119
|
-
* Displays or hides the side content of an object page
|
|
134
|
+
* Displays or hides the side content of an object page.
|
|
120
135
|
*
|
|
121
136
|
* @alias sap.fe.templates.ObjectPage.ExtensionAPI#showSideContent
|
|
122
137
|
* @param sSubSectionKey Key of the side content fragment as defined in the manifest.json
|
|
@@ -143,10 +158,124 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "
|
|
|
143
158
|
|
|
144
159
|
_proto.getBindingContext = function getBindingContext() {
|
|
145
160
|
return this._view.getBindingContext();
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Build a message to be displayed below the anchor bar.
|
|
164
|
+
*
|
|
165
|
+
* @alias sap.fe.templates.ObjectPage.ExtensionAPI#_buildOPMessage
|
|
166
|
+
* @param {sap.ui.core.message.Message[]} messages Array of messages used to generated the message
|
|
167
|
+
* @returns {Promise<Message>} Promise containing the generated message
|
|
168
|
+
* @private
|
|
169
|
+
*/
|
|
170
|
+
;
|
|
171
|
+
|
|
172
|
+
_proto._buildOPMessage = function _buildOPMessage(messages) {
|
|
173
|
+
try {
|
|
174
|
+
var _this2 = this;
|
|
175
|
+
|
|
176
|
+
var view = _this2._view;
|
|
177
|
+
return Promise.resolve(view.getModel("sap.fe.i18n").getResourceBundle()).then(function (resourceBundle) {
|
|
178
|
+
var message = null;
|
|
179
|
+
|
|
180
|
+
switch (messages.length) {
|
|
181
|
+
case 0:
|
|
182
|
+
break;
|
|
183
|
+
|
|
184
|
+
case 1:
|
|
185
|
+
message = messages[0];
|
|
186
|
+
break;
|
|
187
|
+
|
|
188
|
+
default:
|
|
189
|
+
var messageStats = {
|
|
190
|
+
"Error": {
|
|
191
|
+
id: 2,
|
|
192
|
+
count: 0
|
|
193
|
+
},
|
|
194
|
+
"Warning": {
|
|
195
|
+
id: 1,
|
|
196
|
+
count: 0
|
|
197
|
+
},
|
|
198
|
+
"Information": {
|
|
199
|
+
id: 0,
|
|
200
|
+
count: 0
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
message = messages.reduce(function (acc, currentValue) {
|
|
204
|
+
var currentType = currentValue.getType();
|
|
205
|
+
acc.setType(messageStats[currentType].id > messageStats[acc.getType()].id ? currentType : acc.getType());
|
|
206
|
+
messageStats[currentType].count++;
|
|
207
|
+
return acc;
|
|
208
|
+
}, new Message({
|
|
209
|
+
type: MessageType.Information
|
|
210
|
+
}));
|
|
211
|
+
|
|
212
|
+
if (messageStats.Error.count === 0 && messageStats.Warning.count === 0 && messageStats.Information.count > 0) {
|
|
213
|
+
message.setMessage(resourceBundle.getText("OBJECTPAGESTATE_INFORMATION"));
|
|
214
|
+
} else if (messageStats.Error.count > 0 && messageStats.Warning.count > 0 || messageStats.Information.count > 0) {
|
|
215
|
+
message.setMessage(resourceBundle.getText("OBJECTPAGESTATE_ISSUE"));
|
|
216
|
+
} else {
|
|
217
|
+
message.setMessage(resourceBundle.getText(message.getType() === MessageType.Error ? "OBJECTPAGESTATE_ERROR" : "OBJECTPAGESTATE_WARNING"));
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
return message;
|
|
223
|
+
});
|
|
224
|
+
} catch (e) {
|
|
225
|
+
return Promise.reject(e);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Displays the message strip below the anchor bar.
|
|
230
|
+
*
|
|
231
|
+
* @alias sap.fe.templates.ObjectPage.ExtensionAPI#showMessages
|
|
232
|
+
* @param {sap.ui.core.message.Message} messages The message to be displayed
|
|
233
|
+
* @public
|
|
234
|
+
*/
|
|
235
|
+
;
|
|
236
|
+
|
|
237
|
+
_proto.showMessages = function showMessages(messages) {
|
|
238
|
+
try {
|
|
239
|
+
var _this4 = this;
|
|
240
|
+
|
|
241
|
+
var view = _this4._view;
|
|
242
|
+
var internalModelContext = view.getBindingContext("internal");
|
|
243
|
+
|
|
244
|
+
var _temp2 = _catch(function () {
|
|
245
|
+
return Promise.resolve(_this4._buildOPMessage(messages)).then(function (message) {
|
|
246
|
+
if (message) {
|
|
247
|
+
internalModelContext === null || internalModelContext === void 0 ? void 0 : internalModelContext.setProperty("OPMessageStripVisibility", true);
|
|
248
|
+
internalModelContext === null || internalModelContext === void 0 ? void 0 : internalModelContext.setProperty("OPMessageStripText", message.getMessage());
|
|
249
|
+
internalModelContext === null || internalModelContext === void 0 ? void 0 : internalModelContext.setProperty("OPMessageStripType", message.getType());
|
|
250
|
+
} else {
|
|
251
|
+
_this4.hideMessage();
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
}, function () {
|
|
255
|
+
Log.error("Cannot display ObjectPage message");
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
|
|
259
|
+
} catch (e) {
|
|
260
|
+
return Promise.reject(e);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Hides the message strip below the anchor bar.
|
|
265
|
+
*
|
|
266
|
+
* @alias sap.fe.templates.ObjectPage.ExtensionAPI#hideMessage
|
|
267
|
+
* @public
|
|
268
|
+
*/
|
|
269
|
+
;
|
|
270
|
+
|
|
271
|
+
_proto.hideMessage = function hideMessage() {
|
|
272
|
+
var view = this._view;
|
|
273
|
+
var internalModelContext = view.getBindingContext("internal");
|
|
274
|
+
internalModelContext === null || internalModelContext === void 0 ? void 0 : internalModelContext.setProperty("OPMessageStripVisibility", false);
|
|
146
275
|
};
|
|
147
276
|
|
|
148
277
|
return ObjectPageExtensionAPI;
|
|
149
278
|
}(ExtensionAPI)) || _class);
|
|
150
279
|
return ObjectPageExtensionAPI;
|
|
151
280
|
}, false);
|
|
152
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3RQYWdlRXh0ZW5zaW9uQVBJIiwiZGVmaW5lVUk1Q2xhc3MiLCJyZWZyZXNoIiwidlBhdGgiLCJvQmluZGluZ0NvbnRleHQiLCJfdmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJvU2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwib1NpZGVFZmZlY3RzIiwiVGFyZ2V0UHJvcGVydGllcyIsIlRhcmdldEVudGl0aWVzIiwiYVBhdGhzIiwic1BhdGgiLCJzQmFzZUVudGl0eVNldCIsInNLaW5kIiwidW5kZWZpbmVkIiwicHVzaCIsIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiQXJyYXkiLCJpc0FycmF5IiwiX2NvbnRyb2xsZXIiLCJnZXRPd25lckNvbXBvbmVudCIsImdldEVudGl0eVNldCIsImkiLCJsZW5ndGgiLCIkUHJvcGVydHlQYXRoIiwiZ2V0T2JqZWN0IiwicmVqZWN0IiwicmVxdWVzdFNpZGVFZmZlY3RzIiwiY29uY2F0IiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsInNUYWJsZUlkIiwib1RhYmxlIiwiYnlJZCIsImlzQSIsImdldENvbnRlbnQiLCJzaG93U2lkZUNvbnRlbnQiLCJzU3ViU2VjdGlvbktleSIsImJTaG93Iiwic0Jsb2NrSUQiLCJnZXRTaWRlQ29udGVudExheW91dElEIiwib0Jsb2NrIiwiYkJsb2NrU3RhdGUiLCJnZXRTaG93U2lkZUNvbnRlbnQiLCJzZXRTaG93U2lkZUNvbnRlbnQiLCJFeHRlbnNpb25BUEkiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkV4dGVuc2lvbkFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgeyBnZXRTaWRlQ29udGVudExheW91dElEIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9JRFwiO1xuaW1wb3J0IEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVBUElcIjtcbmltcG9ydCB0eXBlIER5bmFtaWNTaWRlQ29udGVudCBmcm9tIFwic2FwL3VpL2xheW91dC9EeW5hbWljU2lkZUNvbnRlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbi8qKlxuICogRXh0ZW5zaW9uIEFQSSBmb3Igb2JqZWN0IHBhZ2VzIG9uIFNBUCBGaW9yaSBlbGVtZW50cyBmb3IgT0RhdGEgVjQuXG4gKlxuICogQGFsaWFzIHNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5FeHRlbnNpb25BUElcbiAqIEBwdWJsaWNcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBmaW5hbFxuICogQHNpbmNlIDEuNzkuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuRXh0ZW5zaW9uQVBJXCIpXG5jbGFzcyBPYmplY3RQYWdlRXh0ZW5zaW9uQVBJIGV4dGVuZHMgRXh0ZW5zaW9uQVBJIHtcblx0LyoqXG5cdCAqIFJlZnJlc2hlcyBlaXRoZXIgdGhlIHdob2xlIG9iamVjdCBwYWdlIG9yIG9ubHkgcGFydHMgb2YgaXQuXG5cdCAqXG5cdCAqIEBhbGlhcyBzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuRXh0ZW5zaW9uQVBJI3JlZnJlc2hcblx0ICogQHBhcmFtIFt2UGF0aF0gUGF0aCBvciBhcnJheSBvZiBwYXRocyByZWZlcnJpbmcgdG8gZW50aXRpZXMgb3IgcHJvcGVydGllcyB0byBiZSByZWZyZXNoZWQuXG5cdCAqIElmIG9taXR0ZWQsIHRoZSB3aG9sZSBvYmplY3QgcGFnZSBpcyByZWZyZXNoZWQuIFRoZSBwYXRoIFwiXCIgcmVmcmVzaGVzIHRoZSBlbnRpdHkgYXNzaWduZWQgdG8gdGhlIG9iamVjdCBwYWdlXG5cdCAqIHdpdGhvdXQgbmF2aWdhdGlvbnNcblx0ICogQHJldHVybnMgUmVzb2x2ZWQgb25jZSB0aGUgZGF0YSBpcyByZWZyZXNoZWQgb3IgcmVqZWN0ZWQgaWYgdGhlIHJlcXVlc3QgZmFpbGVkXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlZnJlc2godlBhdGg6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG5cdFx0Y29uc3Qgb0JpbmRpbmdDb250ZXh0ID0gdGhpcy5fdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0aWYgKCFvQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdC8vIG5vdGhpbmcgdG8gYmUgcmVmcmVzaGVkIC0gZG8gbm90IGJsb2NrIHRoZSBhcHAhXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldyksXG5cdFx0XHRvU2lkZUVmZmVjdHNTZXJ2aWNlID0gb0FwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKSxcblx0XHRcdG9NZXRhTW9kZWwgPSBvQmluZGluZ0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCxcblx0XHRcdG9TaWRlRWZmZWN0czogYW55ID0ge1xuXHRcdFx0XHRUYXJnZXRQcm9wZXJ0aWVzOiBbXSxcblx0XHRcdFx0VGFyZ2V0RW50aXRpZXM6IFtdXG5cdFx0XHR9O1xuXHRcdGxldCBhUGF0aHMsIHNQYXRoLCBzQmFzZUVudGl0eVNldCwgc0tpbmQ7XG5cblx0XHRpZiAodlBhdGggPT09IHVuZGVmaW5lZCB8fCB2UGF0aCA9PT0gbnVsbCkge1xuXHRcdFx0Ly8gd2UganVzdCBhZGQgYW4gZW1wdHkgcGF0aCB3aGljaCBzaG91bGQgcmVmcmVzaCB0aGUgcGFnZSB3aXRoIGFsbCBkZXBlbmRlbnQgYmluZGluZ3Ncblx0XHRcdG9TaWRlRWZmZWN0cy5UYXJnZXRFbnRpdGllcy5wdXNoKHtcblx0XHRcdFx0JE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IFwiXCJcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhUGF0aHMgPSBBcnJheS5pc0FycmF5KHZQYXRoKSA/IHZQYXRoIDogW3ZQYXRoXTtcblx0XHRcdHNCYXNlRW50aXR5U2V0ID0gKHRoaXMuX2NvbnRyb2xsZXIuZ2V0T3duZXJDb21wb25lbnQoKSBhcyBhbnkpLmdldEVudGl0eVNldCgpO1xuXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFQYXRocy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRzUGF0aCA9IGFQYXRoc1tpXTtcblx0XHRcdFx0aWYgKHNQYXRoID09PSBcIlwiKSB7XG5cdFx0XHRcdFx0Ly8gYW4gZW1wdHkgcGF0aCBzaGFsbCByZWZyZXNoIHRoZSBlbnRpdHkgd2l0aG91dCBkZXBlbmRlbmNpZXMgd2hpY2ggbWVhbnMgKiBmb3IgdGhlIG1vZGVsXG5cdFx0XHRcdFx0b1NpZGVFZmZlY3RzLlRhcmdldFByb3BlcnRpZXMucHVzaCh7XG5cdFx0XHRcdFx0XHQkUHJvcGVydHlQYXRoOiBcIipcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNLaW5kID0gb01ldGFNb2RlbC5nZXRPYmplY3QoYC8ke3NCYXNlRW50aXR5U2V0fS8ke3NQYXRofS8ka2luZGApO1xuXG5cdFx0XHRcdFx0aWYgKHNLaW5kID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiKSB7XG5cdFx0XHRcdFx0XHRvU2lkZUVmZmVjdHMuVGFyZ2V0RW50aXRpZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdCROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBzUGF0aFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChzS2luZCkge1xuXHRcdFx0XHRcdFx0b1NpZGVFZmZlY3RzLlRhcmdldFByb3BlcnRpZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdCRQcm9wZXJ0eVBhdGg6IHNQYXRoXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGAke3NQYXRofSBpcyBub3QgYSB2YWxpZCBwYXRoIHRvIGJlIHJlZnJlc2hlZGApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb1NpZGVFZmZlY3RzU2VydmljZS5yZXF1ZXN0U2lkZUVmZmVjdHMob1NpZGVFZmZlY3RzLlRhcmdldEVudGl0aWVzLmNvbmNhdChvU2lkZUVmZmVjdHMuVGFyZ2V0UHJvcGVydGllcyksIG9CaW5kaW5nQ29udGV4dCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgbGlzdCBlbnRyaWVzIGN1cnJlbnRseSBzZWxlY3RlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkV4dGVuc2lvbkFQSSNnZXRTZWxlY3RlZENvbnRleHRzXG5cdCAqIEBwYXJhbSBzVGFibGVJZCBUaGUgSUQgaWRlbnRpZnlpbmcgdGhlIHRhYmxlIHRoZSBzZWxlY3RlZCBjb250ZXh0IGlzIHJlcXVlc3RlZCBmb3Jcblx0ICogQHJldHVybnMgQXJyYXkgY29udGFpbmluZyB0aGUgc2VsZWN0ZWQgY29udGV4dHNcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0U2VsZWN0ZWRDb250ZXh0cyhzVGFibGVJZDogc3RyaW5nKSB7XG5cdFx0bGV0IG9UYWJsZSA9IHRoaXMuX3ZpZXcuYnlJZChzVGFibGVJZCk7XG5cdFx0aWYgKG9UYWJsZSAmJiBvVGFibGUuaXNBKFwic2FwLmZlLm1hY3Jvcy50YWJsZS5UYWJsZUFQSVwiKSkge1xuXHRcdFx0b1RhYmxlID0gKG9UYWJsZSBhcyBFbmhhbmNlV2l0aFVJNTxUYWJsZUFQST4pLmdldENvbnRlbnQoKTtcblx0XHR9XG5cdFx0cmV0dXJuIChvVGFibGUgJiYgb1RhYmxlLmlzQShcInNhcC51aS5tZGMuVGFibGVcIikgJiYgKG9UYWJsZSBhcyBhbnkpLmdldFNlbGVjdGVkQ29udGV4dHMoKSkgfHwgW107XG5cdH1cblxuXHQvKipcblx0ICogRGlzcGxheXMgb3IgaGlkZXMgdGhlIHNpZGUgY29udGVudCBvZiBhbiBvYmplY3QgcGFnZSBibG9jay5cblx0ICpcblx0ICogQGFsaWFzIHNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5FeHRlbnNpb25BUEkjc2hvd1NpZGVDb250ZW50XG5cdCAqIEBwYXJhbSBzU3ViU2VjdGlvbktleSBLZXkgb2YgdGhlIHNpZGUgY29udGVudCBmcmFnbWVudCBhcyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5qc29uXG5cdCAqIEBwYXJhbSBbYlNob3ddIE9wdGlvbmFsIEJvb2xlYW4gZmxhZyB0byBzaG93IG9yIGhpZGUgdGhlIHNpZGUgY29udGVudFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRzaG93U2lkZUNvbnRlbnQoc1N1YlNlY3Rpb25LZXk6IHN0cmluZywgYlNob3c6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBzQmxvY2tJRCA9IGdldFNpZGVDb250ZW50TGF5b3V0SUQoc1N1YlNlY3Rpb25LZXkpLFxuXHRcdFx0b0Jsb2NrID0gdGhpcy5fdmlldy5ieUlkKHNCbG9ja0lEKSxcblx0XHRcdGJCbG9ja1N0YXRlID0gYlNob3cgPT09IHVuZGVmaW5lZCA/ICEob0Jsb2NrIGFzIER5bmFtaWNTaWRlQ29udGVudCkuZ2V0U2hvd1NpZGVDb250ZW50KCkgOiBiU2hvdztcblx0XHQob0Jsb2NrIGFzIER5bmFtaWNTaWRlQ29udGVudCkuc2V0U2hvd1NpZGVDb250ZW50KGJCbG9ja1N0YXRlLCBmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgYm91bmQgY29udGV4dCBvZiB0aGUgY3VycmVudCBvYmplY3QgcGFnZS5cblx0ICpcblx0ICogQGFsaWFzIHNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5FeHRlbnNpb25BUEkjZ2V0QmluZGluZ0NvbnRleHRcblx0ICogQHJldHVybnMgQ29udGV4dCBib3VuZCB0byB0aGUgb2JqZWN0IHBhZ2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0QmluZGluZ0NvbnRleHQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBPYmplY3RQYWdlRXh0ZW5zaW9uQVBJO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0VBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BRU1BLHNCLFdBRExDLGNBQWMsQ0FBQywwQ0FBRCxDOzs7Ozs7Ozs7SUFFZDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtXQUNDQyxPLEdBQUEsaUJBQVFDLEtBQVIsRUFBOEM7TUFDN0MsSUFBTUMsZUFBZSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0MsaUJBQVgsRUFBeEI7O01BQ0EsSUFBSSxDQUFDRixlQUFMLEVBQXNCO1FBQ3JCO1FBQ0EsT0FBT0csT0FBTyxDQUFDQyxPQUFSLEVBQVA7TUFDQTs7TUFDRCxJQUFNQyxhQUFhLEdBQUdDLFdBQVcsQ0FBQ0MsZUFBWixDQUE0QixLQUFLTixLQUFqQyxDQUF0QjtNQUFBLElBQ0NPLG1CQUFtQixHQUFHSCxhQUFhLENBQUNJLHFCQUFkLEVBRHZCO01BQUEsSUFFQ0MsVUFBVSxHQUFHVixlQUFlLENBQUNXLFFBQWhCLEdBQTJCQyxZQUEzQixFQUZkO01BQUEsSUFHQ0MsWUFBaUIsR0FBRztRQUNuQkMsZ0JBQWdCLEVBQUUsRUFEQztRQUVuQkMsY0FBYyxFQUFFO01BRkcsQ0FIckI7TUFPQSxJQUFJQyxNQUFKLEVBQVlDLEtBQVosRUFBbUJDLGNBQW5CLEVBQW1DQyxLQUFuQzs7TUFFQSxJQUFJcEIsS0FBSyxLQUFLcUIsU0FBVixJQUF1QnJCLEtBQUssS0FBSyxJQUFyQyxFQUEyQztRQUMxQztRQUNBYyxZQUFZLENBQUNFLGNBQWIsQ0FBNEJNLElBQTVCLENBQWlDO1VBQ2hDQyx1QkFBdUIsRUFBRTtRQURPLENBQWpDO01BR0EsQ0FMRCxNQUtPO1FBQ05OLE1BQU0sR0FBR08sS0FBSyxDQUFDQyxPQUFOLENBQWN6QixLQUFkLElBQXVCQSxLQUF2QixHQUErQixDQUFDQSxLQUFELENBQXhDO1FBQ0FtQixjQUFjLEdBQUksS0FBS08sV0FBTCxDQUFpQkMsaUJBQWpCLEVBQUQsQ0FBOENDLFlBQTlDLEVBQWpCOztRQUVBLEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR1osTUFBTSxDQUFDYSxNQUEzQixFQUFtQ0QsQ0FBQyxFQUFwQyxFQUF3QztVQUN2Q1gsS0FBSyxHQUFHRCxNQUFNLENBQUNZLENBQUQsQ0FBZDs7VUFDQSxJQUFJWCxLQUFLLEtBQUssRUFBZCxFQUFrQjtZQUNqQjtZQUNBSixZQUFZLENBQUNDLGdCQUFiLENBQThCTyxJQUE5QixDQUFtQztjQUNsQ1MsYUFBYSxFQUFFO1lBRG1CLENBQW5DO1VBR0EsQ0FMRCxNQUtPO1lBQ05YLEtBQUssR0FBR1QsVUFBVSxDQUFDcUIsU0FBWCxZQUF5QmIsY0FBekIsY0FBMkNELEtBQTNDLFlBQVI7O1lBRUEsSUFBSUUsS0FBSyxLQUFLLG9CQUFkLEVBQW9DO2NBQ25DTixZQUFZLENBQUNFLGNBQWIsQ0FBNEJNLElBQTVCLENBQWlDO2dCQUNoQ0MsdUJBQXVCLEVBQUVMO2NBRE8sQ0FBakM7WUFHQSxDQUpELE1BSU8sSUFBSUUsS0FBSixFQUFXO2NBQ2pCTixZQUFZLENBQUNDLGdCQUFiLENBQThCTyxJQUE5QixDQUFtQztnQkFDbENTLGFBQWEsRUFBRWI7Y0FEbUIsQ0FBbkM7WUFHQSxDQUpNLE1BSUE7Y0FDTixPQUFPZCxPQUFPLENBQUM2QixNQUFSLFdBQWtCZixLQUFsQiwwQ0FBUDtZQUNBO1VBQ0Q7UUFDRDtNQUNEOztNQUNELE9BQU9ULG1CQUFtQixDQUFDeUIsa0JBQXBCLENBQXVDcEIsWUFBWSxDQUFDRSxjQUFiLENBQTRCbUIsTUFBNUIsQ0FBbUNyQixZQUFZLENBQUNDLGdCQUFoRCxDQUF2QyxFQUEwR2QsZUFBMUcsQ0FBUDtJQUNBO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NtQyxtQixHQUFBLDZCQUFvQkMsUUFBcEIsRUFBc0M7TUFDckMsSUFBSUMsTUFBTSxHQUFHLEtBQUtwQyxLQUFMLENBQVdxQyxJQUFYLENBQWdCRixRQUFoQixDQUFiOztNQUNBLElBQUlDLE1BQU0sSUFBSUEsTUFBTSxDQUFDRSxHQUFQLENBQVcsOEJBQVgsQ0FBZCxFQUEwRDtRQUN6REYsTUFBTSxHQUFJQSxNQUFELENBQXFDRyxVQUFyQyxFQUFUO01BQ0E7O01BQ0QsT0FBUUgsTUFBTSxJQUFJQSxNQUFNLENBQUNFLEdBQVAsQ0FBVyxrQkFBWCxDQUFWLElBQTZDRixNQUFELENBQWdCRixtQkFBaEIsRUFBN0MsSUFBdUYsRUFBOUY7SUFDQTtJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDTSxlLEdBQUEseUJBQWdCQyxjQUFoQixFQUF3Q0MsS0FBeEMsRUFBb0U7TUFDbkUsSUFBTUMsUUFBUSxHQUFHQyxzQkFBc0IsQ0FBQ0gsY0FBRCxDQUF2QztNQUFBLElBQ0NJLE1BQU0sR0FBRyxLQUFLN0MsS0FBTCxDQUFXcUMsSUFBWCxDQUFnQk0sUUFBaEIsQ0FEVjtNQUFBLElBRUNHLFdBQVcsR0FBR0osS0FBSyxLQUFLdkIsU0FBVixHQUFzQixDQUFFMEIsTUFBRCxDQUErQkUsa0JBQS9CLEVBQXZCLEdBQTZFTCxLQUY1Rjs7TUFHQ0csTUFBRCxDQUErQkcsa0JBQS9CLENBQWtERixXQUFsRCxFQUErRCxLQUEvRDtJQUNBO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDN0MsaUIsR0FBQSw2QkFBb0I7TUFDbkIsT0FBTyxLQUFLRCxLQUFMLENBQVdDLGlCQUFYLEVBQVA7SUFDQSxDOzs7SUF0R21DZ0QsWTtTQXlHdEJ0RCxzQiJ9
|
|
281
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJib2R5IiwicmVjb3ZlciIsInJlc3VsdCIsImUiLCJ0aGVuIiwiT2JqZWN0UGFnZUV4dGVuc2lvbkFQSSIsImRlZmluZVVJNUNsYXNzIiwicmVmcmVzaCIsInZQYXRoIiwib0JpbmRpbmdDb250ZXh0IiwiX3ZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50Iiwib1NpZGVFZmZlY3RzU2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsIm9NZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsIm9TaWRlRWZmZWN0cyIsIlRhcmdldFByb3BlcnRpZXMiLCJUYXJnZXRFbnRpdGllcyIsImFQYXRocyIsInNQYXRoIiwic0Jhc2VFbnRpdHlTZXQiLCJzS2luZCIsInVuZGVmaW5lZCIsInB1c2giLCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsIkFycmF5IiwiaXNBcnJheSIsIl9jb250cm9sbGVyIiwiZ2V0T3duZXJDb21wb25lbnQiLCJnZXRFbnRpdHlTZXQiLCJpIiwibGVuZ3RoIiwiJFByb3BlcnR5UGF0aCIsImdldE9iamVjdCIsInJlamVjdCIsInJlcXVlc3RTaWRlRWZmZWN0cyIsImNvbmNhdCIsImdldFNlbGVjdGVkQ29udGV4dHMiLCJzVGFibGVJZCIsIm9UYWJsZSIsImJ5SWQiLCJpc0EiLCJnZXRDb250ZW50Iiwic2hvd1NpZGVDb250ZW50Iiwic1N1YlNlY3Rpb25LZXkiLCJiU2hvdyIsInNCbG9ja0lEIiwiZ2V0U2lkZUNvbnRlbnRMYXlvdXRJRCIsIm9CbG9jayIsImJCbG9ja1N0YXRlIiwiZ2V0U2hvd1NpZGVDb250ZW50Iiwic2V0U2hvd1NpZGVDb250ZW50IiwiX2J1aWxkT1BNZXNzYWdlIiwibWVzc2FnZXMiLCJ2aWV3IiwiZ2V0UmVzb3VyY2VCdW5kbGUiLCJyZXNvdXJjZUJ1bmRsZSIsIm1lc3NhZ2UiLCJtZXNzYWdlU3RhdHMiLCJpZCIsImNvdW50IiwicmVkdWNlIiwiYWNjIiwiY3VycmVudFZhbHVlIiwiY3VycmVudFR5cGUiLCJnZXRUeXBlIiwic2V0VHlwZSIsIk1lc3NhZ2UiLCJ0eXBlIiwiTWVzc2FnZVR5cGUiLCJJbmZvcm1hdGlvbiIsIkVycm9yIiwiV2FybmluZyIsInNldE1lc3NhZ2UiLCJnZXRUZXh0Iiwic2hvd01lc3NhZ2VzIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJzZXRQcm9wZXJ0eSIsImdldE1lc3NhZ2UiLCJoaWRlTWVzc2FnZSIsIkxvZyIsImVycm9yIiwiRXh0ZW5zaW9uQVBJIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFeHRlbnNpb25BUEkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgeyBnZXRTaWRlQ29udGVudExheW91dElEIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9JRFwiO1xuaW1wb3J0IEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVBUElcIjtcbmltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCB0eXBlIER5bmFtaWNTaWRlQ29udGVudCBmcm9tIFwic2FwL3VpL2xheW91dC9EeW5hbWljU2lkZUNvbnRlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL3Jlc291cmNlL1Jlc291cmNlTW9kZWxcIjtcblxuLyoqXG4gKiBFeHRlbnNpb24gQVBJIGZvciBvYmplY3QgcGFnZXMgb24gU0FQIEZpb3JpIGVsZW1lbnRzIGZvciBPRGF0YSBWNC5cbiAqXG4gKiBAYWxpYXMgc2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkV4dGVuc2lvbkFQSVxuICogQHB1YmxpY1xuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQGZpbmFsXG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5FeHRlbnNpb25BUElcIilcbmNsYXNzIE9iamVjdFBhZ2VFeHRlbnNpb25BUEkgZXh0ZW5kcyBFeHRlbnNpb25BUEkge1xuXHQvKipcblx0ICogUmVmcmVzaGVzIGVpdGhlciB0aGUgd2hvbGUgb2JqZWN0IHBhZ2Ugb3Igb25seSBwYXJ0cyBvZiBpdC5cblx0ICpcblx0ICogQGFsaWFzIHNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5FeHRlbnNpb25BUEkjcmVmcmVzaFxuXHQgKiBAcGFyYW0gW3ZQYXRoXSBQYXRoIG9yIGFycmF5IG9mIHBhdGhzIHJlZmVycmluZyB0byBlbnRpdGllcyBvciBwcm9wZXJ0aWVzIHRvIGJlIHJlZnJlc2hlZC5cblx0ICogSWYgb21pdHRlZCwgdGhlIHdob2xlIG9iamVjdCBwYWdlIGlzIHJlZnJlc2hlZC4gVGhlIHBhdGggXCJcIiByZWZyZXNoZXMgdGhlIGVudGl0eSBhc3NpZ25lZCB0byB0aGUgb2JqZWN0IHBhZ2Vcblx0ICogd2l0aG91dCBuYXZpZ2F0aW9uc1xuXHQgKiBAcmV0dXJucyBSZXNvbHZlZCBvbmNlIHRoZSBkYXRhIGlzIHJlZnJlc2hlZCBvciByZWplY3RlZCBpZiB0aGUgcmVxdWVzdCBmYWlsZWRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cmVmcmVzaCh2UGF0aDogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBvQmluZGluZ0NvbnRleHQgPSB0aGlzLl92aWV3LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dDtcblx0XHRpZiAoIW9CaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0Ly8gbm90aGluZyB0byBiZSByZWZyZXNoZWQgLSBkbyBub3QgYmxvY2sgdGhlIGFwcCFcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLl92aWV3KSxcblx0XHRcdG9TaWRlRWZmZWN0c1NlcnZpY2UgPSBvQXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLFxuXHRcdFx0b01ldGFNb2RlbCA9IG9CaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsLFxuXHRcdFx0b1NpZGVFZmZlY3RzOiBhbnkgPSB7XG5cdFx0XHRcdFRhcmdldFByb3BlcnRpZXM6IFtdLFxuXHRcdFx0XHRUYXJnZXRFbnRpdGllczogW11cblx0XHRcdH07XG5cdFx0bGV0IGFQYXRocywgc1BhdGgsIHNCYXNlRW50aXR5U2V0LCBzS2luZDtcblxuXHRcdGlmICh2UGF0aCA9PT0gdW5kZWZpbmVkIHx8IHZQYXRoID09PSBudWxsKSB7XG5cdFx0XHQvLyB3ZSBqdXN0IGFkZCBhbiBlbXB0eSBwYXRoIHdoaWNoIHNob3VsZCByZWZyZXNoIHRoZSBwYWdlIHdpdGggYWxsIGRlcGVuZGVudCBiaW5kaW5nc1xuXHRcdFx0b1NpZGVFZmZlY3RzLlRhcmdldEVudGl0aWVzLnB1c2goe1xuXHRcdFx0XHQkTmF2aWdhdGlvblByb3BlcnR5UGF0aDogXCJcIlxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFQYXRocyA9IEFycmF5LmlzQXJyYXkodlBhdGgpID8gdlBhdGggOiBbdlBhdGhdO1xuXHRcdFx0c0Jhc2VFbnRpdHlTZXQgPSAodGhpcy5fY29udHJvbGxlci5nZXRPd25lckNvbXBvbmVudCgpIGFzIGFueSkuZ2V0RW50aXR5U2V0KCk7XG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYVBhdGhzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHNQYXRoID0gYVBhdGhzW2ldO1xuXHRcdFx0XHRpZiAoc1BhdGggPT09IFwiXCIpIHtcblx0XHRcdFx0XHQvLyBhbiBlbXB0eSBwYXRoIHNoYWxsIHJlZnJlc2ggdGhlIGVudGl0eSB3aXRob3V0IGRlcGVuZGVuY2llcyB3aGljaCBtZWFucyAqIGZvciB0aGUgbW9kZWxcblx0XHRcdFx0XHRvU2lkZUVmZmVjdHMuVGFyZ2V0UHJvcGVydGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdCRQcm9wZXJ0eVBhdGg6IFwiKlwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c0tpbmQgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7c0Jhc2VFbnRpdHlTZXR9LyR7c1BhdGh9LyRraW5kYCk7XG5cblx0XHRcdFx0XHRpZiAoc0tpbmQgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIpIHtcblx0XHRcdFx0XHRcdG9TaWRlRWZmZWN0cy5UYXJnZXRFbnRpdGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0JE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IHNQYXRoXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHNLaW5kKSB7XG5cdFx0XHRcdFx0XHRvU2lkZUVmZmVjdHMuVGFyZ2V0UHJvcGVydGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0JFByb3BlcnR5UGF0aDogc1BhdGhcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoYCR7c1BhdGh9IGlzIG5vdCBhIHZhbGlkIHBhdGggdG8gYmUgcmVmcmVzaGVkYCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvU2lkZUVmZmVjdHNTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhvU2lkZUVmZmVjdHMuVGFyZ2V0RW50aXRpZXMuY29uY2F0KG9TaWRlRWZmZWN0cy5UYXJnZXRQcm9wZXJ0aWVzKSwgb0JpbmRpbmdDb250ZXh0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBsaXN0IGVudHJpZXMgY3VycmVudGx5IHNlbGVjdGVkIGZvciB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIEBhbGlhcyBzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuRXh0ZW5zaW9uQVBJI2dldFNlbGVjdGVkQ29udGV4dHNcblx0ICogQHBhcmFtIHNUYWJsZUlkIFRoZSBJRCBpZGVudGlmeWluZyB0aGUgdGFibGUgdGhlIHNlbGVjdGVkIGNvbnRleHQgaXMgcmVxdWVzdGVkIGZvclxuXHQgKiBAcmV0dXJucyBBcnJheSBjb250YWluaW5nIHRoZSBzZWxlY3RlZCBjb250ZXh0c1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKHNUYWJsZUlkOiBzdHJpbmcpIHtcblx0XHRsZXQgb1RhYmxlID0gdGhpcy5fdmlldy5ieUlkKHNUYWJsZUlkKTtcblx0XHRpZiAob1RhYmxlICYmIG9UYWJsZS5pc0EoXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXCIpKSB7XG5cdFx0XHRvVGFibGUgPSAob1RhYmxlIGFzIEVuaGFuY2VXaXRoVUk1PFRhYmxlQVBJPikuZ2V0Q29udGVudCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gKG9UYWJsZSAmJiBvVGFibGUuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSAmJiAob1RhYmxlIGFzIGFueSkuZ2V0U2VsZWN0ZWRDb250ZXh0cygpKSB8fCBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyBvciBoaWRlcyB0aGUgc2lkZSBjb250ZW50IG9mIGFuIG9iamVjdCBwYWdlLlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkV4dGVuc2lvbkFQSSNzaG93U2lkZUNvbnRlbnRcblx0ICogQHBhcmFtIHNTdWJTZWN0aW9uS2V5IEtleSBvZiB0aGUgc2lkZSBjb250ZW50IGZyYWdtZW50IGFzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0Lmpzb25cblx0ICogQHBhcmFtIFtiU2hvd10gT3B0aW9uYWwgQm9vbGVhbiBmbGFnIHRvIHNob3cgb3IgaGlkZSB0aGUgc2lkZSBjb250ZW50XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNob3dTaWRlQ29udGVudChzU3ViU2VjdGlvbktleTogc3RyaW5nLCBiU2hvdzogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IHNCbG9ja0lEID0gZ2V0U2lkZUNvbnRlbnRMYXlvdXRJRChzU3ViU2VjdGlvbktleSksXG5cdFx0XHRvQmxvY2sgPSB0aGlzLl92aWV3LmJ5SWQoc0Jsb2NrSUQpLFxuXHRcdFx0YkJsb2NrU3RhdGUgPSBiU2hvdyA9PT0gdW5kZWZpbmVkID8gIShvQmxvY2sgYXMgRHluYW1pY1NpZGVDb250ZW50KS5nZXRTaG93U2lkZUNvbnRlbnQoKSA6IGJTaG93O1xuXHRcdChvQmxvY2sgYXMgRHluYW1pY1NpZGVDb250ZW50KS5zZXRTaG93U2lkZUNvbnRlbnQoYkJsb2NrU3RhdGUsIGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBib3VuZCBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9iamVjdCBwYWdlLlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkV4dGVuc2lvbkFQSSNnZXRCaW5kaW5nQ29udGV4dFxuXHQgKiBAcmV0dXJucyBDb250ZXh0IGJvdW5kIHRvIHRoZSBvYmplY3QgcGFnZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRCaW5kaW5nQ29udGV4dCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkIGEgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgYmVsb3cgdGhlIGFuY2hvciBiYXIuXG5cdCAqXG5cdCAqIEBhbGlhcyBzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuRXh0ZW5zaW9uQVBJI19idWlsZE9QTWVzc2FnZVxuXHQgKiBAcGFyYW0ge3NhcC51aS5jb3JlLm1lc3NhZ2UuTWVzc2FnZVtdfSBtZXNzYWdlcyBBcnJheSBvZiBtZXNzYWdlcyB1c2VkIHRvIGdlbmVyYXRlZCB0aGUgbWVzc2FnZVxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxNZXNzYWdlPn0gUHJvbWlzZSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgbWVzc2FnZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0YXN5bmMgX2J1aWxkT1BNZXNzYWdlKG1lc3NhZ2VzOiBNZXNzYWdlW10pOiBQcm9taXNlPE1lc3NhZ2UgfCBudWxsPiB7XG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuX3ZpZXc7XG5cdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBhd2FpdCAodmlldy5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpIGFzIFJlc291cmNlTW9kZWwpLmdldFJlc291cmNlQnVuZGxlKCk7XG5cdFx0bGV0IG1lc3NhZ2U6IE1lc3NhZ2UgfCBudWxsID0gbnVsbDtcblx0XHRzd2l0Y2ggKG1lc3NhZ2VzLmxlbmd0aCkge1xuXHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMTpcblx0XHRcdFx0bWVzc2FnZSA9IG1lc3NhZ2VzWzBdO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VTdGF0czogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHtcblx0XHRcdFx0XHRcIkVycm9yXCI6IHsgaWQ6IDIsIGNvdW50OiAwIH0sXG5cdFx0XHRcdFx0XCJXYXJuaW5nXCI6IHsgaWQ6IDEsIGNvdW50OiAwIH0sXG5cdFx0XHRcdFx0XCJJbmZvcm1hdGlvblwiOiB7IGlkOiAwLCBjb3VudDogMCB9XG5cdFx0XHRcdH07XG5cdFx0XHRcdG1lc3NhZ2UgPSBtZXNzYWdlcy5yZWR1Y2UoKGFjYywgY3VycmVudFZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY3VycmVudFR5cGUgPSBjdXJyZW50VmFsdWUuZ2V0VHlwZSgpO1xuXHRcdFx0XHRcdGFjYy5zZXRUeXBlKG1lc3NhZ2VTdGF0c1tjdXJyZW50VHlwZV0uaWQgPiBtZXNzYWdlU3RhdHNbYWNjLmdldFR5cGUoKV0uaWQgPyBjdXJyZW50VHlwZSA6IGFjYy5nZXRUeXBlKCkpO1xuXHRcdFx0XHRcdG1lc3NhZ2VTdGF0c1tjdXJyZW50VHlwZV0uY291bnQrKztcblx0XHRcdFx0XHRyZXR1cm4gYWNjO1xuXHRcdFx0XHR9LCBuZXcgTWVzc2FnZSh7IHR5cGU6IE1lc3NhZ2VUeXBlLkluZm9ybWF0aW9uIH0pKTtcblxuXHRcdFx0XHRpZiAobWVzc2FnZVN0YXRzLkVycm9yLmNvdW50ID09PSAwICYmIG1lc3NhZ2VTdGF0cy5XYXJuaW5nLmNvdW50ID09PSAwICYmIG1lc3NhZ2VTdGF0cy5JbmZvcm1hdGlvbi5jb3VudCA+IDApIHtcblx0XHRcdFx0XHRtZXNzYWdlLnNldE1lc3NhZ2UocmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk9CSkVDVFBBR0VTVEFURV9JTkZPUk1BVElPTlwiKSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoKG1lc3NhZ2VTdGF0cy5FcnJvci5jb3VudCA+IDAgJiYgbWVzc2FnZVN0YXRzLldhcm5pbmcuY291bnQgPiAwKSB8fCBtZXNzYWdlU3RhdHMuSW5mb3JtYXRpb24uY291bnQgPiAwKSB7XG5cdFx0XHRcdFx0bWVzc2FnZS5zZXRNZXNzYWdlKHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJPQkpFQ1RQQUdFU1RBVEVfSVNTVUVcIikpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdG1lc3NhZ2Uuc2V0TWVzc2FnZShcblx0XHRcdFx0XHRcdHJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2UuZ2V0VHlwZSgpID09PSBNZXNzYWdlVHlwZS5FcnJvciA/IFwiT0JKRUNUUEFHRVNUQVRFX0VSUk9SXCIgOiBcIk9CSkVDVFBBR0VTVEFURV9XQVJOSU5HXCJcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBtZXNzYWdlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERpc3BsYXlzIHRoZSBtZXNzYWdlIHN0cmlwIGJlbG93IHRoZSBhbmNob3IgYmFyLlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkV4dGVuc2lvbkFQSSNzaG93TWVzc2FnZXNcblx0ICogQHBhcmFtIHtzYXAudWkuY29yZS5tZXNzYWdlLk1lc3NhZ2V9IG1lc3NhZ2VzIFRoZSBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXG5cdGFzeW5jIHNob3dNZXNzYWdlcyhtZXNzYWdlczogTWVzc2FnZVtdKSB7XG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuX3ZpZXc7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB2aWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIik7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLl9idWlsZE9QTWVzc2FnZShtZXNzYWdlcyk7XG5cdFx0XHRpZiAobWVzc2FnZSkge1xuXHRcdFx0XHQoaW50ZXJuYWxNb2RlbENvbnRleHQgYXMgYW55KT8uc2V0UHJvcGVydHkoXCJPUE1lc3NhZ2VTdHJpcFZpc2liaWxpdHlcIiwgdHJ1ZSk7XG5cdFx0XHRcdChpbnRlcm5hbE1vZGVsQ29udGV4dCBhcyBhbnkpPy5zZXRQcm9wZXJ0eShcIk9QTWVzc2FnZVN0cmlwVGV4dFwiLCBtZXNzYWdlLmdldE1lc3NhZ2UoKSk7XG5cdFx0XHRcdChpbnRlcm5hbE1vZGVsQ29udGV4dCBhcyBhbnkpPy5zZXRQcm9wZXJ0eShcIk9QTWVzc2FnZVN0cmlwVHlwZVwiLCBtZXNzYWdlLmdldFR5cGUoKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmhpZGVNZXNzYWdlKCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJDYW5ub3QgZGlzcGxheSBPYmplY3RQYWdlIG1lc3NhZ2VcIik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhpZGVzIHRoZSBtZXNzYWdlIHN0cmlwIGJlbG93IHRoZSBhbmNob3IgYmFyLlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkV4dGVuc2lvbkFQSSNoaWRlTWVzc2FnZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRoaWRlTWVzc2FnZSgpIHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5fdmlldztcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKTtcblx0XHQoaW50ZXJuYWxNb2RlbENvbnRleHQgYXMgYW55KT8uc2V0UHJvcGVydHkoXCJPUE1lc3NhZ2VTdHJpcFZpc2liaWxpdHlcIiwgZmFsc2UpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9iamVjdFBhZ2VFeHRlbnNpb25BUEk7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7RUFrakJPLGdCQUFnQkEsSUFBaEIsRUFBc0JDLE9BQXRCLEVBQStCO0lB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
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
import Log from "sap/base/Log";
|
|
1
2
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
2
3
|
import { getSideContentLayoutID } from "sap/fe/core/converters/helpers/ID";
|
|
3
4
|
import ExtensionAPI from "sap/fe/core/ExtensionAPI";
|
|
4
5
|
import type { EnhanceWithUI5 } from "sap/fe/core/helpers/ClassSupport";
|
|
5
6
|
import { defineUI5Class } from "sap/fe/core/helpers/ClassSupport";
|
|
6
7
|
import type TableAPI from "sap/fe/macros/table/TableAPI";
|
|
8
|
+
import { MessageType } from "sap/ui/core/library";
|
|
9
|
+
import Message from "sap/ui/core/message/Message";
|
|
7
10
|
import type DynamicSideContent from "sap/ui/layout/DynamicSideContent";
|
|
8
11
|
import type Context from "sap/ui/model/odata/v4/Context";
|
|
9
12
|
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
13
|
+
import ResourceModel from "sap/ui/model/resource/ResourceModel";
|
|
10
14
|
|
|
11
15
|
/**
|
|
12
16
|
* Extension API for object pages on SAP Fiori elements for OData V4.
|
|
@@ -97,7 +101,7 @@ class ObjectPageExtensionAPI extends ExtensionAPI {
|
|
|
97
101
|
}
|
|
98
102
|
|
|
99
103
|
/**
|
|
100
|
-
* Displays or hides the side content of an object page
|
|
104
|
+
* Displays or hides the side content of an object page.
|
|
101
105
|
*
|
|
102
106
|
* @alias sap.fe.templates.ObjectPage.ExtensionAPI#showSideContent
|
|
103
107
|
* @param sSubSectionKey Key of the side content fragment as defined in the manifest.json
|
|
@@ -121,6 +125,89 @@ class ObjectPageExtensionAPI extends ExtensionAPI {
|
|
|
121
125
|
getBindingContext() {
|
|
122
126
|
return this._view.getBindingContext();
|
|
123
127
|
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Build a message to be displayed below the anchor bar.
|
|
131
|
+
*
|
|
132
|
+
* @alias sap.fe.templates.ObjectPage.ExtensionAPI#_buildOPMessage
|
|
133
|
+
* @param {sap.ui.core.message.Message[]} messages Array of messages used to generated the message
|
|
134
|
+
* @returns {Promise<Message>} Promise containing the generated message
|
|
135
|
+
* @private
|
|
136
|
+
*/
|
|
137
|
+
async _buildOPMessage(messages: Message[]): Promise<Message | null> {
|
|
138
|
+
const view = this._view;
|
|
139
|
+
const resourceBundle = await (view.getModel("sap.fe.i18n") as ResourceModel).getResourceBundle();
|
|
140
|
+
let message: Message | null = null;
|
|
141
|
+
switch (messages.length) {
|
|
142
|
+
case 0:
|
|
143
|
+
break;
|
|
144
|
+
case 1:
|
|
145
|
+
message = messages[0];
|
|
146
|
+
break;
|
|
147
|
+
default:
|
|
148
|
+
const messageStats: { [key: string]: any } = {
|
|
149
|
+
"Error": { id: 2, count: 0 },
|
|
150
|
+
"Warning": { id: 1, count: 0 },
|
|
151
|
+
"Information": { id: 0, count: 0 }
|
|
152
|
+
};
|
|
153
|
+
message = messages.reduce((acc, currentValue) => {
|
|
154
|
+
const currentType = currentValue.getType();
|
|
155
|
+
acc.setType(messageStats[currentType].id > messageStats[acc.getType()].id ? currentType : acc.getType());
|
|
156
|
+
messageStats[currentType].count++;
|
|
157
|
+
return acc;
|
|
158
|
+
}, new Message({ type: MessageType.Information }));
|
|
159
|
+
|
|
160
|
+
if (messageStats.Error.count === 0 && messageStats.Warning.count === 0 && messageStats.Information.count > 0) {
|
|
161
|
+
message.setMessage(resourceBundle.getText("OBJECTPAGESTATE_INFORMATION"));
|
|
162
|
+
} else if ((messageStats.Error.count > 0 && messageStats.Warning.count > 0) || messageStats.Information.count > 0) {
|
|
163
|
+
message.setMessage(resourceBundle.getText("OBJECTPAGESTATE_ISSUE"));
|
|
164
|
+
} else {
|
|
165
|
+
message.setMessage(
|
|
166
|
+
resourceBundle.getText(
|
|
167
|
+
message.getType() === MessageType.Error ? "OBJECTPAGESTATE_ERROR" : "OBJECTPAGESTATE_WARNING"
|
|
168
|
+
)
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return message;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Displays the message strip below the anchor bar.
|
|
177
|
+
*
|
|
178
|
+
* @alias sap.fe.templates.ObjectPage.ExtensionAPI#showMessages
|
|
179
|
+
* @param {sap.ui.core.message.Message} messages The message to be displayed
|
|
180
|
+
* @public
|
|
181
|
+
*/
|
|
182
|
+
|
|
183
|
+
async showMessages(messages: Message[]) {
|
|
184
|
+
const view = this._view;
|
|
185
|
+
const internalModelContext = view.getBindingContext("internal");
|
|
186
|
+
try {
|
|
187
|
+
const message = await this._buildOPMessage(messages);
|
|
188
|
+
if (message) {
|
|
189
|
+
(internalModelContext as any)?.setProperty("OPMessageStripVisibility", true);
|
|
190
|
+
(internalModelContext as any)?.setProperty("OPMessageStripText", message.getMessage());
|
|
191
|
+
(internalModelContext as any)?.setProperty("OPMessageStripType", message.getType());
|
|
192
|
+
} else {
|
|
193
|
+
this.hideMessage();
|
|
194
|
+
}
|
|
195
|
+
} catch (err) {
|
|
196
|
+
Log.error("Cannot display ObjectPage message");
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Hides the message strip below the anchor bar.
|
|
202
|
+
*
|
|
203
|
+
* @alias sap.fe.templates.ObjectPage.ExtensionAPI#hideMessage
|
|
204
|
+
* @public
|
|
205
|
+
*/
|
|
206
|
+
hideMessage() {
|
|
207
|
+
const view = this._view;
|
|
208
|
+
const internalModelContext = view.getBindingContext("internal");
|
|
209
|
+
(internalModelContext as any)?.setProperty("OPMessageStripVisibility", false);
|
|
210
|
+
}
|
|
124
211
|
}
|
|
125
212
|
|
|
126
213
|
export default ObjectPageExtensionAPI;
|
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
CONTACT: 'sap/fe/macros/contact/ContactHelper',
|
|
19
19
|
UI: 'sap/fe/core/templating/UIFormatters',
|
|
20
20
|
COMMON: 'sap/fe/macros/CommonHelper',
|
|
21
|
-
COMMONFORMATTERS: 'sap/fe/core/templating/CommonFormatters'
|
|
22
|
-
DATAFIELDHELPER : 'sap/fe/core/converters/helpers/DataFieldHelper'
|
|
21
|
+
COMMONFORMATTERS: 'sap/fe/core/templating/CommonFormatters'
|
|
23
22
|
}"
|
|
24
23
|
>
|
|
25
24
|
<template:with path="entitySet>./" var="entityType">
|
|
@@ -127,32 +126,10 @@
|
|
|
127
126
|
<uxap:ObjectPageDynamicHeaderTitle primaryArea="Begin" areaShrinkRatio="1:0:1.6">
|
|
128
127
|
<core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.Heading" type="XML" />
|
|
129
128
|
<uxap:expandedContent>
|
|
130
|
-
<
|
|
131
|
-
<template:if test="{entityType>@com.sap.vocabularies.UI.v1.HeaderInfo/Description}">
|
|
132
|
-
<template:if
|
|
133
|
-
test="{= !DATAFIELDHELPER.isHeaderStaticallyHidden(${headerInfo>Description@@UI.getDataModelObjectPath})}"
|
|
134
|
-
>
|
|
135
|
-
<Label
|
|
136
|
-
text="{= OP.getExpressionForDescription(${headerInfo>@@UI.getConverterContext}, ${fullContextPath>@@UI.getDataModelObjectPath})}"
|
|
137
|
-
wrapping="true"
|
|
138
|
-
/>
|
|
139
|
-
</template:if>
|
|
140
|
-
</template:if>
|
|
141
|
-
</FlexBox>
|
|
129
|
+
<core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.HeadingContent" type="XML" />
|
|
142
130
|
</uxap:expandedContent>
|
|
143
131
|
<uxap:snappedContent>
|
|
144
|
-
<
|
|
145
|
-
<template:if test="{entityType>@com.sap.vocabularies.UI.v1.HeaderInfo/Description}">
|
|
146
|
-
<template:if
|
|
147
|
-
test="{= !DATAFIELDHELPER.isHeaderStaticallyHidden(${headerInfo>Description@@UI.getDataModelObjectPath})}"
|
|
148
|
-
>
|
|
149
|
-
<Label
|
|
150
|
-
text="{= OP.getExpressionForDescription(${headerInfo>@@UI.getConverterContext}, ${fullContextPath>@@UI.getDataModelObjectPath})}"
|
|
151
|
-
wrapping="true"
|
|
152
|
-
/>
|
|
153
|
-
</template:if>
|
|
154
|
-
</template:if>
|
|
155
|
-
</FlexBox>
|
|
132
|
+
<core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.HeadingContent" type="XML" />
|
|
156
133
|
</uxap:snappedContent>
|
|
157
134
|
<uxap:content>
|
|
158
135
|
<template:if test="{entitySet>@com.sap.vocabularies.Common.v1.DraftRoot}">
|