@openui5/sap.ui.documentation 1.150.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/THIRDPARTY.txt +6 -6
- package/package.json +7 -7
- package/src/sap/ui/documentation/.library +1 -1
- package/src/sap/ui/documentation/library.js +2 -2
- package/src/sap/ui/documentation/messagebundle.properties +6 -0
- package/src/sap/ui/documentation/messagebundle_ar.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_bg.properties +4 -1
- package/src/sap/ui/documentation/messagebundle_ca.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_cnr.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_cs.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_cy.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_da.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_de.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_el.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_en.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_en_GB.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_en_US_sappsd.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_en_US_saprigi.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_en_US_saptrc.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_es.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_es_MX.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_et.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_fi.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_fr.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_fr_CA.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_hi.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_hr.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_hu.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_id.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_it.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_iw.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_ja.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_kk.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_ko.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_lt.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_lv.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_mk.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_ms.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_nl.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_no.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_pl.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_pt.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_pt_PT.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_ro.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_ru.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_sh.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_sk.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_sl.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_sr.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_sv.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_th.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_tr.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_uk.properties +4 -1
- package/src/sap/ui/documentation/messagebundle_vi.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_zh_CN.properties +3 -0
- package/src/sap/ui/documentation/messagebundle_zh_TW.properties +3 -0
- package/src/sap/ui/documentation/sdk/CookieStatement.html +35 -25
- package/src/sap/ui/documentation/sdk/controller/App.controller.js +332 -342
- package/src/sap/ui/documentation/sdk/controller/Code.controller.js +8 -4
- package/src/sap/ui/documentation/sdk/controller/Sample.controller.js +9 -3
- package/src/sap/ui/documentation/sdk/controller/SubApiDetail.controller.js +31 -5
- package/src/sap/ui/documentation/sdk/controller/Welcome.controller.js +1 -1
- package/src/sap/ui/documentation/sdk/controller/util/SearchRenderer.js +167 -0
- package/src/sap/ui/documentation/sdk/controller/util/UsageTracker.js +27 -14
- package/src/sap/ui/documentation/sdk/cookieSettingsDialog/i18n/i18n_en_US_saptrc.properties +3 -0
- package/src/sap/ui/documentation/sdk/thirdparty/highlight.js/highlight.js +3 -3
- package/src/sap/ui/documentation/sdk/view/App.view.xml +202 -192
- package/src/sap/ui/documentation/sdk/view/SubApiDetail.view.xml +63 -14
- package/src/sap/ui/documentation/themes/base/Documentation.less +26 -141
- package/src/sap/ui/documentation/themes/sap_belize_base/Documentation.less +0 -140
- package/src/sap/ui/documentation/sdk/view/GlobalSearchPicker.fragment.xml +0 -73
|
@@ -102,7 +102,7 @@ sap.ui.define(
|
|
|
102
102
|
},
|
|
103
103
|
|
|
104
104
|
onClearButtonPressed: function (oEvent) {
|
|
105
|
-
var oFrame =
|
|
105
|
+
var oFrame = this._getIFrameDomRef(),
|
|
106
106
|
sLocalStorageDKSamples = this._getChangedSamplesLocalStorage(),
|
|
107
107
|
oModelData = this.oModel.getData(),
|
|
108
108
|
sRef = sap.ui.require.toUrl((this._sId).replace(/\./g, "/"));
|
|
@@ -321,10 +321,14 @@ sap.ui.define(
|
|
|
321
321
|
_createHTMLControl: function () {
|
|
322
322
|
return new HTML({
|
|
323
323
|
id : "sampleFrameEdit",
|
|
324
|
-
content : '<iframe
|
|
324
|
+
content : '<iframe frameBorder="0" width="100%" height="100%"></iframe>'
|
|
325
325
|
});
|
|
326
326
|
},
|
|
327
327
|
|
|
328
|
+
_getIFrameDomRef: function () {
|
|
329
|
+
return this._oHtmlControl && this._oHtmlControl.getDomRef();
|
|
330
|
+
},
|
|
331
|
+
|
|
328
332
|
_getPage: function () {
|
|
329
333
|
return this.byId("samplePageEdit");
|
|
330
334
|
},
|
|
@@ -388,9 +392,9 @@ sap.ui.define(
|
|
|
388
392
|
* @param {string} sValue The value of the manifest.json file.
|
|
389
393
|
*/
|
|
390
394
|
_updateSample: function () {
|
|
391
|
-
var oFrame =
|
|
395
|
+
var oFrame = this._getIFrameDomRef();
|
|
392
396
|
|
|
393
|
-
if (oFrame.contentWindow && oFrame.contentWindow.sap) {
|
|
397
|
+
if (oFrame && oFrame.contentWindow && oFrame.contentWindow.sap) {
|
|
394
398
|
oFrame.contentWindow.location.reload();
|
|
395
399
|
}
|
|
396
400
|
},
|
|
@@ -320,8 +320,9 @@ sap.ui.define([
|
|
|
320
320
|
|
|
321
321
|
// Assigning allowed query parameters from Demo Kit URL
|
|
322
322
|
ALLOWLIST_SAMPLES_SEARCH_PARAMS.forEach(function (oParam, index) {
|
|
323
|
-
|
|
324
|
-
|
|
323
|
+
var sValue = new URL(document.location.href).searchParams.get(oParam);
|
|
324
|
+
if (sValue) {
|
|
325
|
+
sSampleSearchParams += (sSampleSearchParams === "" ? "?" : "&") + oParam + "=" + encodeURIComponent(sValue);
|
|
325
326
|
}
|
|
326
327
|
});
|
|
327
328
|
|
|
@@ -662,6 +663,11 @@ sap.ui.define([
|
|
|
662
663
|
_onAfterIframeRendering: function() {
|
|
663
664
|
var oModelData = this.oModel.getData();
|
|
664
665
|
|
|
666
|
+
var oIframeDomRef = this._oHtmlControl && this._oHtmlControl.getDomRef();
|
|
667
|
+
if (oIframeDomRef) {
|
|
668
|
+
oIframeDomRef.src = this.sIFrameUrl;
|
|
669
|
+
}
|
|
670
|
+
|
|
665
671
|
// For external samples, resolve immediately after rendering since they don't use our messaging protocol
|
|
666
672
|
if (this._isExternalSample(oModelData)) {
|
|
667
673
|
setTimeout(function() {
|
|
@@ -675,7 +681,7 @@ sap.ui.define([
|
|
|
675
681
|
_createHTMLControl: function () {
|
|
676
682
|
return new HTML({
|
|
677
683
|
id : "sampleFrame",
|
|
678
|
-
content : '<iframe
|
|
684
|
+
content : '<iframe id="sampleFrame" frameBorder="0"></iframe>'
|
|
679
685
|
});
|
|
680
686
|
},
|
|
681
687
|
|
|
@@ -34,11 +34,13 @@ sap.ui.define([
|
|
|
34
34
|
"sap/uxap/ObjectPageSection",
|
|
35
35
|
"sap/ui/documentation/ObjectPageSubSection",
|
|
36
36
|
"sap/ui/core/HTML",
|
|
37
|
-
"sap/ui/core/Core"
|
|
37
|
+
"sap/ui/core/Core",
|
|
38
|
+
"sap/m/MessageStrip",
|
|
39
|
+
"sap/ui/layout/VerticalLayout"
|
|
38
40
|
], function (jQuery, Log, Fragment, APIInfo, BaseController, ToggleFullScreenHandler,
|
|
39
41
|
formatter, Row, ParamText, JSDocType, JSDocText, Image, Label, Link, Text, HBox, ObjectAttribute, ObjectStatus, Popover,
|
|
40
42
|
library, MessageToast, coreLibrary, CustomListItem, List, includeStylesheet, includeScript,
|
|
41
|
-
ObjectPageSection, ObjectPageSubSection, HTML, Core) {
|
|
43
|
+
ObjectPageSection, ObjectPageSubSection, HTML, Core, MessageStrip, VerticalLayout) {
|
|
42
44
|
"use strict";
|
|
43
45
|
|
|
44
46
|
// shortcut for sap.m.FlexWrap
|
|
@@ -1034,9 +1036,33 @@ sap.ui.define([
|
|
|
1034
1036
|
text: this.formatter.escapeSettingsValue(sDefault),
|
|
1035
1037
|
wrapping: true
|
|
1036
1038
|
}),
|
|
1037
|
-
new
|
|
1038
|
-
|
|
1039
|
-
|
|
1039
|
+
new VerticalLayout({
|
|
1040
|
+
content: [
|
|
1041
|
+
new JSDocText({
|
|
1042
|
+
sanitizeContent: false,
|
|
1043
|
+
text: this.formatter.escapeSettingsValue(oProperty.description)
|
|
1044
|
+
}),
|
|
1045
|
+
new MessageStrip({
|
|
1046
|
+
visible: oProperty.deprecatedText !== undefined,
|
|
1047
|
+
text: oProperty.deprecatedText || "",
|
|
1048
|
+
type: "Error",
|
|
1049
|
+
showIcon: true,
|
|
1050
|
+
showCloseButton: false,
|
|
1051
|
+
enableFormattedText: true
|
|
1052
|
+
}).addStyleClass("sapUiTinyMarginBottom sapUiTinyMarginTop"),
|
|
1053
|
+
new MessageStrip({
|
|
1054
|
+
visible: oProperty.experimentalText !== undefined,
|
|
1055
|
+
text: oProperty.experimentalText || "",
|
|
1056
|
+
type: "Warning",
|
|
1057
|
+
showIcon: true,
|
|
1058
|
+
showCloseButton: false,
|
|
1059
|
+
enableFormattedText: true
|
|
1060
|
+
}).addStyleClass("sapUiTinyMarginBottom sapUiTinyMarginTop"),
|
|
1061
|
+
new ObjectStatus({
|
|
1062
|
+
visible: oProperty.since !== undefined,
|
|
1063
|
+
text: oProperty.since ? "Since: " + oProperty.since : ""
|
|
1064
|
+
})
|
|
1065
|
+
]
|
|
1040
1066
|
})
|
|
1041
1067
|
]
|
|
1042
1068
|
}).addStyleClass("subrow");
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* OpenUI5
|
|
3
|
+
* (c) Copyright 2026 SAP SE or an SAP affiliate company.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
|
+
*/
|
|
6
|
+
sap.ui.define([
|
|
7
|
+
"sap/f/gen/ui5/webcomponents_fiori/dist/SearchItem",
|
|
8
|
+
"sap/f/gen/ui5/webcomponents_fiori/dist/SearchItemGroup"
|
|
9
|
+
], function (SearchItem, SearchItemGroup) {
|
|
10
|
+
"use strict";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Renders search results into a ShellBarSearch control (sap.f wrapper).
|
|
14
|
+
*
|
|
15
|
+
* The controller passes an already-resolved control and a resolved i18n bundle;
|
|
16
|
+
* this module owns the item-tree construction and population of the suggestions.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
var CATEGORY_DEFS = [
|
|
20
|
+
{ key: "apiref", labelKey: "SEARCH_SUGGESTIONS_API_SECTION_TITLE", countKey: "APILength" },
|
|
21
|
+
{ key: "topics", labelKey: "SEARCH_SUGGESTIONS_DOCUMENTATION_SECTION_TITLE", countKey: "DocLength" },
|
|
22
|
+
{ key: "entity", labelKey: "SEARCH_SUGGESTIONS_SAMPLES_SECTION_TITLE", countKey: "SamplesLength" },
|
|
23
|
+
{ key: "external", labelKey: "SEARCH_SUGGESTIONS_EXTERNAL_SECTION_TITLE", countKey: "ExternalLength" }
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Creates a SearchItem whose matched query text is highlighted.
|
|
28
|
+
*
|
|
29
|
+
* The sap.f SearchItem wrapper does not expose the underlying web component's
|
|
30
|
+
* `highlightText` property, so it is applied directly to the custom element after
|
|
31
|
+
* each rendering. The delegate re-applies it on every render (the suggestions
|
|
32
|
+
* popover renders lazily and can re-render), keeping highlighting robust.
|
|
33
|
+
*
|
|
34
|
+
* The delegate is bound to the item instance and is released together with the item
|
|
35
|
+
* when it is destroyed via `destroyAggregation("items")`, so no explicit cleanup is
|
|
36
|
+
* needed. If the item is destroyed or invalidated before rendering completes,
|
|
37
|
+
* highlighting is silently skipped (no error thrown).
|
|
38
|
+
*
|
|
39
|
+
* @param {object} mSettings - SearchItem constructor settings
|
|
40
|
+
* @param {string} [sQuery] - The query text to highlight within the item text (cleared when falsy)
|
|
41
|
+
* @returns {sap.f.gen.ui5.webcomponents_fiori.dist.SearchItem} The created search item
|
|
42
|
+
*/
|
|
43
|
+
function createHighlightedItem(mSettings, sQuery) {
|
|
44
|
+
var oSearchItem = new SearchItem(mSettings);
|
|
45
|
+
oSearchItem.addEventDelegate({
|
|
46
|
+
onAfterRendering: function () {
|
|
47
|
+
var oDomRef = oSearchItem.getDomRef();
|
|
48
|
+
if (oDomRef) {
|
|
49
|
+
oDomRef.highlightText = sQuery || "";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
return oSearchItem;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
/**
|
|
58
|
+
* Populates the ShellBarSearch control with result items and opens it.
|
|
59
|
+
*
|
|
60
|
+
* @param {object} oCtrl - The fiori:ShellBarSearch UI5 control
|
|
61
|
+
* @param {Array} aItems - Top-N result items from SearchUtil
|
|
62
|
+
* @param {object} oCounts - { AllLength, APILength, DocLength, SamplesLength, ExternalLength }
|
|
63
|
+
* @param {object} oBundle - Resolved i18n resource bundle
|
|
64
|
+
* @param {boolean} bPhone - Whether the current viewport is phone-sized
|
|
65
|
+
* @param {object} [oSearchModel] - Optional searchData JSONModel
|
|
66
|
+
*/
|
|
67
|
+
render: function (oCtrl, aItems, oCounts, oBundle, bPhone, oSearchModel) {
|
|
68
|
+
// The i18n bundle loads asynchronously; if a search is rendered before it
|
|
69
|
+
// resolves (App startup race), skip this render — a later keystroke/open
|
|
70
|
+
// re-renders once the bundle is ready.
|
|
71
|
+
if (!oBundle) { return; }
|
|
72
|
+
|
|
73
|
+
oCtrl.destroyAggregation("items");
|
|
74
|
+
|
|
75
|
+
var sQuery = oSearchModel ? (oSearchModel.getProperty("/query") || "") : "";
|
|
76
|
+
|
|
77
|
+
var sResultsHeader = aItems.length > 0
|
|
78
|
+
? oBundle.getText("SEARCH_SUGGESTIONS_TITLE_ALL")
|
|
79
|
+
: oBundle.getText("SEARCH_SUGGESTIONS_NO_RESULTS");
|
|
80
|
+
|
|
81
|
+
// Section 1: top results (or no-data placeholder)
|
|
82
|
+
var oResultsGroup = new SearchItemGroup(bPhone ? { headerText: sResultsHeader } : {});
|
|
83
|
+
|
|
84
|
+
if (aItems.length > 0) {
|
|
85
|
+
aItems.forEach(function (oDataItem) {
|
|
86
|
+
var oSearchItem = createHighlightedItem({
|
|
87
|
+
text: oDataItem.summary ? oDataItem.title + ": " + oDataItem.summary : (oDataItem.title || "")
|
|
88
|
+
}, sQuery);
|
|
89
|
+
oSearchItem.data("_payload", { type: "result", item: oDataItem });
|
|
90
|
+
oResultsGroup.addItem(oSearchItem);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// "All" entry at the bottom of the results, navigating to the full search results page.
|
|
94
|
+
var oAllItem = createHighlightedItem({
|
|
95
|
+
text: oBundle.getText("SEARCH_SUGGESTIONS_ALL_SECTION_TITLE") + " (" + (oCounts.AllLength || 0) + ")"
|
|
96
|
+
});
|
|
97
|
+
oAllItem.data("_payload", { type: "allResults" });
|
|
98
|
+
oResultsGroup.addItem(oAllItem);
|
|
99
|
+
} else {
|
|
100
|
+
var oNoDataItem = createHighlightedItem({ text: oBundle.getText("SEARCH_SUGGESTIONS_NO_RESULTS") });
|
|
101
|
+
oNoDataItem.data("_payload", { type: "noData" });
|
|
102
|
+
oResultsGroup.addItem(oNoDataItem);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
oCtrl.addAggregation("items", oResultsGroup);
|
|
106
|
+
|
|
107
|
+
// Section 2: per-category counts
|
|
108
|
+
var aCategoryDefs = CATEGORY_DEFS
|
|
109
|
+
.map(function (o) { return { key: o.key, labelKey: o.labelKey, count: oCounts[o.countKey] || 0 }; })
|
|
110
|
+
.filter(function (o) { return o.count > 0; });
|
|
111
|
+
|
|
112
|
+
if (aCategoryDefs.length > 0) {
|
|
113
|
+
var oCategoryGroup = new SearchItemGroup({
|
|
114
|
+
headerText: oBundle.getText("SEARCH_SUGGESTIONS_BY_CATEGORY_TITLE")
|
|
115
|
+
});
|
|
116
|
+
oCategoryGroup.addStyleClass("sapUiDemokitSearchCategoryGroup");
|
|
117
|
+
aCategoryDefs.forEach(function (oDef) {
|
|
118
|
+
var oCatItem = createHighlightedItem({
|
|
119
|
+
text: oBundle.getText(oDef.labelKey) + " (" + oDef.count + ")"
|
|
120
|
+
});
|
|
121
|
+
oCatItem.data("_payload", { type: "category", key: oDef.key });
|
|
122
|
+
oCategoryGroup.addItem(oCatItem);
|
|
123
|
+
});
|
|
124
|
+
oCtrl.addAggregation("items", oCategoryGroup);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (oSearchModel && !bPhone) {
|
|
128
|
+
oSearchModel.setProperty("/messageAreaText", sResultsHeader);
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Populates the ShellBarSearch with the category list only (all counts zero).
|
|
134
|
+
* Used on phone when the popup opens before any search has been performed,
|
|
135
|
+
* matching the old GlobalSearchPicker's initial state.
|
|
136
|
+
*
|
|
137
|
+
* @param {object} oCtrl - The fiori:ShellBarSearch UI5 control
|
|
138
|
+
* @param {object} oBundle - Resolved i18n resource bundle
|
|
139
|
+
*/
|
|
140
|
+
renderEmptyState: function (oCtrl, oBundle) {
|
|
141
|
+
if (!oBundle) { return; }
|
|
142
|
+
|
|
143
|
+
oCtrl.destroyAggregation("items");
|
|
144
|
+
|
|
145
|
+
var oCategoryGroup = new SearchItemGroup({
|
|
146
|
+
headerText: oBundle.getText("SEARCH_SUGGESTIONS_BY_CATEGORY_TITLE")
|
|
147
|
+
});
|
|
148
|
+
CATEGORY_DEFS.forEach(function (oDef) {
|
|
149
|
+
var oItem = createHighlightedItem({
|
|
150
|
+
text: oBundle.getText(oDef.labelKey) + " (0)"
|
|
151
|
+
});
|
|
152
|
+
oItem.data("_payload", { type: "category", key: oDef.key });
|
|
153
|
+
oCategoryGroup.addItem(oItem);
|
|
154
|
+
});
|
|
155
|
+
oCtrl.addAggregation("items", oCategoryGroup);
|
|
156
|
+
},
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Removes all items from the ShellBarSearch control.
|
|
160
|
+
*
|
|
161
|
+
* @param {object} oCtrl - The fiori:ShellBarSearch UI5 control
|
|
162
|
+
*/
|
|
163
|
+
clear: function (oCtrl) {
|
|
164
|
+
oCtrl.destroyAggregation("items");
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
});
|
|
@@ -20,22 +20,20 @@ sap.ui.define(
|
|
|
20
20
|
|
|
21
21
|
const aNotFoundViews = ["sap.ui.documentation.sdk.view.NotFound", "sap.ui.documentation.sdk.view.SampleNotFound"];
|
|
22
22
|
|
|
23
|
-
var PageInfo = function(oRouteConfig, oRouter, sURL,
|
|
23
|
+
var PageInfo = function(oRouteConfig, oRouter, sURL, sReferrer) {
|
|
24
24
|
sURL = sURL || window.location.href;
|
|
25
|
-
|
|
25
|
+
sReferrer = sReferrer || document.referrer;
|
|
26
26
|
const oURL = new URL(sURL),
|
|
27
27
|
sSectionTitle = oRouter.getRouteTopLevelTitle(oRouteConfig);
|
|
28
28
|
|
|
29
|
-
var sHash = oURL.hash.replace(/\.html/, '');
|
|
30
|
-
|
|
31
29
|
this.url = sURL;
|
|
32
|
-
this.name = oURL
|
|
30
|
+
this.name = composePageName(oURL);
|
|
33
31
|
this.section = sSectionTitle || "/";
|
|
34
32
|
this.title = undefined;
|
|
35
33
|
this.language = oUserLanguageTag.language;
|
|
36
34
|
this.locale = oUserLanguageTag.toString();
|
|
37
35
|
this.country = "glo";
|
|
38
|
-
this.referrer =
|
|
36
|
+
this.referrer = sReferrer;
|
|
39
37
|
};
|
|
40
38
|
|
|
41
39
|
PageInfo.prototype.toObject = function() {
|
|
@@ -74,6 +72,7 @@ sap.ui.define(
|
|
|
74
72
|
this._oRouter = oComponent.getRouter();
|
|
75
73
|
this._oConfig = oComponent.getConfig();
|
|
76
74
|
this._oLastRouteParameters = null;
|
|
75
|
+
this._sLastLoggedPageUrl = null;
|
|
77
76
|
this._isStarted = false;
|
|
78
77
|
},
|
|
79
78
|
start: function(sVersionName, aRouterEventsToLog) {
|
|
@@ -98,6 +97,7 @@ sap.ui.define(
|
|
|
98
97
|
Localization.detachChange(this._updateLanguageTag);
|
|
99
98
|
this._isStarted = false;
|
|
100
99
|
this._oLastRouteParameters = null;
|
|
100
|
+
this._sLastLoggedPageUrl = null;
|
|
101
101
|
},
|
|
102
102
|
_initRemoteServiceConnector: function(sVersionName) {
|
|
103
103
|
window.adobeDataLayer = window.adobeDataLayer || [];
|
|
@@ -142,6 +142,7 @@ sap.ui.define(
|
|
|
142
142
|
this._oLastRouteParameters = oEventParameters;
|
|
143
143
|
this._getPageInfoFromRoute(oEventParameters, function(oPageInfo) {
|
|
144
144
|
this._logPageVisit(oPageInfo);
|
|
145
|
+
this._sLastLoggedPageUrl = oPageInfo.url;
|
|
145
146
|
this._publishLoggedInfo(true);
|
|
146
147
|
}.bind(this));
|
|
147
148
|
},
|
|
@@ -171,7 +172,7 @@ sap.ui.define(
|
|
|
171
172
|
},
|
|
172
173
|
_getPageInfoFromRoute: function(oEventParameters, fnCallback) {
|
|
173
174
|
var oRouteConfig = oEventParameters.config,
|
|
174
|
-
oPageInfo = new PageInfo(oRouteConfig, this._oRouter);
|
|
175
|
+
oPageInfo = new PageInfo(oRouteConfig, this._oRouter, window.location.href, this._sLastLoggedPageUrl);
|
|
175
176
|
this._getPageTitleFromRoute(oEventParameters, function(sPageTitle) {
|
|
176
177
|
oPageInfo.title = sPageTitle;
|
|
177
178
|
fnCallback(oPageInfo);
|
|
@@ -253,7 +254,7 @@ sap.ui.define(
|
|
|
253
254
|
* Triggered when router does not find the route
|
|
254
255
|
*/
|
|
255
256
|
_logPageNotFound: function (sHash) {
|
|
256
|
-
|
|
257
|
+
const sNormalized = normalizeHash(sHash) || "/";
|
|
257
258
|
this._addToLogs({
|
|
258
259
|
event: "errorPage",
|
|
259
260
|
page: {
|
|
@@ -263,7 +264,7 @@ sap.ui.define(
|
|
|
263
264
|
error: {
|
|
264
265
|
type: 404,
|
|
265
266
|
pageUrl: window.location.href,
|
|
266
|
-
pageName:
|
|
267
|
+
pageName: sNormalized,
|
|
267
268
|
description: "page not found"
|
|
268
269
|
}
|
|
269
270
|
});
|
|
@@ -274,14 +275,13 @@ sap.ui.define(
|
|
|
274
275
|
_logPageDataNotFound: function () {
|
|
275
276
|
var oPageInfo;
|
|
276
277
|
if (this._oLastRouteParameters) {
|
|
277
|
-
|
|
278
|
+
const oRouteConfig = this._oRouter.getRouteConfig(this._oLastRouteParameters.name);
|
|
278
279
|
oPageInfo = new PageInfo(oRouteConfig, this._oRouter);
|
|
279
280
|
} else {
|
|
280
|
-
|
|
281
|
-
var sHash = oURL.hash.replace(/\.html/, '');
|
|
281
|
+
const oURL = new URL(window.location.href);
|
|
282
282
|
oPageInfo = {
|
|
283
|
-
url:
|
|
284
|
-
name: oURL
|
|
283
|
+
url: oURL.href,
|
|
284
|
+
name: composePageName(oURL),
|
|
285
285
|
section: "/"
|
|
286
286
|
};
|
|
287
287
|
}
|
|
@@ -358,6 +358,19 @@ sap.ui.define(
|
|
|
358
358
|
}
|
|
359
359
|
);
|
|
360
360
|
|
|
361
|
+
function normalizeHash(sHash) {
|
|
362
|
+
sHash = sHash.replace(/\.html/, '');
|
|
363
|
+
return sHash === "/" ? "" : sHash;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
function composePageName(oURL) {
|
|
367
|
+
const sHash = normalizeHash(oURL.hash.replace(/^#/, ''));
|
|
368
|
+
if (sHash) {
|
|
369
|
+
return oURL.pathname + "#" + sHash;
|
|
370
|
+
}
|
|
371
|
+
return oURL.pathname;
|
|
372
|
+
}
|
|
373
|
+
|
|
361
374
|
return UsageTracker;
|
|
362
375
|
}
|
|
363
376
|
);
|
|
@@ -3,6 +3,9 @@ COOKIE_SETTINGS_DIALOG_TITLE=VSiHf/ID+8Qa6LMSy2qeOA_Your Cookie Settings
|
|
|
3
3
|
COOKIE_SETTINGS_DIALOG_REQUIRED_COOKIES_TITLE=1QXuYN58UnmqoK7UtwpzHg_Required Cookies
|
|
4
4
|
COOKIE_SETTINGS_DIALOG_REQUIRED_COOKIES_SUMMARY=1mlj9qCqW87sOdOuAR2C4w_These cookies are required to enable core site functionality.
|
|
5
5
|
COOKIE_SETTINGS_DIALOG_REQUIRED_COOKIES_TEXT=zEB+717Bx2XbQHiornUX5g_We use cookies to improve your experience on our site. By continuing to use this site, you consent to use our cookies.
|
|
6
|
+
COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_TITLE=ZXlj7cSXT6P/Ps82CAsL8w_Functional Cookies
|
|
7
|
+
COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_SUMMARY=1H7LvCVhIoMq/dePe1FukA_These cookies are used to keep your preferences for site appearance and display language.
|
|
8
|
+
COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_TEXT=NHRZgyI642RKfviuT6QZtw_To enhance your browsing experience, we use cookies to remember your preferences for the site's appearance (light or dark theme) and display language. These cookies ensure that your chosen settings are applied every time you visit or refresh the page, providing a consistent and personalized experience.
|
|
6
9
|
COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_MORE_INFO=Qpa+hooIo7y9TfuBB8qI3Q_More Info
|
|
7
10
|
COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_ACCEPT_ALL=1fDIhkWCDHFw/wvL6LOsrQ_Accept All
|
|
8
11
|
COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_REJECT_ALL=WQb3PnaP15zVcqEmlUYfLQ_Reject All
|
|
@@ -998,10 +998,10 @@ var hljs = (function () {
|
|
|
998
998
|
* @param {string} message
|
|
999
999
|
*/
|
|
1000
1000
|
const deprecated = (version, message) => {
|
|
1001
|
-
if (seenDeprecations[`1.
|
|
1001
|
+
if (seenDeprecations[`1.152.0/${message}`]) return;
|
|
1002
1002
|
|
|
1003
|
-
console.log(`Deprecated as of 1.
|
|
1004
|
-
seenDeprecations[`1.
|
|
1003
|
+
console.log(`Deprecated as of 1.152.0. ${message}`);
|
|
1004
|
+
seenDeprecations[`1.152.0/${message}`] = true;
|
|
1005
1005
|
};
|
|
1006
1006
|
|
|
1007
1007
|
/* eslint-disable no-throw-literal */
|