@sapui5/sap.suite.ui.generic.template 1.129.1 → 1.130.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -3
- package/src/sap/suite/ui/generic/template/.library +5 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/Component.js +1 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/VisualFilterDialogController.js +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/Component.js +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +22 -11
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_bg.properties +3 -3
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hu.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_th.properties +2 -2
- package/src/sap/suite/ui/generic/template/ListReport/manifest.json +5 -2
- package/src/sap/suite/ui/generic/template/ListReport/view/fragments/DefaultVariant.fragment.xml +7 -8
- package/src/sap/suite/ui/generic/template/ListReport/view/fragments/MultipleViewsSingleTableMode.fragment.xml +4 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/Component.js +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +21 -9
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es.properties +2 -2
- package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/templateSpecificPreparationHelper.js +90 -42
- package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/MultipleViewsSingleTableMode.fragment.xml +3 -0
- package/src/sap/suite/ui/generic/template/QuickCreate/i18n/i18n_fr_CA.properties +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/designtime/controls/SmartTable.designtime.js +379 -0
- package/src/sap/suite/ui/generic/template/designtime/{AnalyticalListPage.designtime.js → floorplans/AnalyticalListPage.designtime.js} +4 -4
- package/src/sap/suite/ui/generic/template/designtime/{ListReport.designtime.js → floorplans/ListReport.designtime.js} +4 -4
- package/src/sap/suite/ui/generic/template/designtime/{ObjectPage.designtime.js → floorplans/ObjectPage.designtime.js} +4 -5
- package/src/sap/suite/ui/generic/template/designtime/utils/designtimeHelper.js +119 -96
- package/src/sap/suite/ui/generic/template/designtime/utils/designtimeUtils.js +395 -0
- package/src/sap/suite/ui/generic/template/detailTemplates/i18n/i18n_es.properties +1 -1
- package/src/sap/suite/ui/generic/template/fragments/EasyFilter.fragment.xml +12 -17
- package/src/sap/suite/ui/generic/template/fragments/MessagePage.controller.js +16 -0
- package/src/sap/suite/ui/generic/template/fragments/MessagePopover.fragment.xml +16 -2
- package/src/sap/suite/ui/generic/template/fragments/SmartFormDataField.fragment.xml +2 -0
- package/src/sap/suite/ui/generic/template/genericUtilities/Link.js +9 -2
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +1 -1
- package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +8 -4
- package/src/sap/suite/ui/generic/template/lib/AppComponent.js +10 -3
- package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +0 -42
- package/src/sap/suite/ui/generic/template/lib/CommonUtils.js +6 -1
- package/src/sap/suite/ui/generic/template/lib/MessageButtonHelper.js +11 -7
- package/src/sap/suite/ui/generic/template/lib/RetryAfterHandler.js +249 -0
- package/src/sap/suite/ui/generic/template/lib/ShareUtils.js +1 -1
- package/src/sap/suite/ui/generic/template/lib/SideEffectUtil.js +64 -3
- package/src/sap/suite/ui/generic/template/lib/StableIdDefinition.js +7 -0
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +206 -74
- package/src/sap/suite/ui/generic/template/lib/ai/ErrorExplanationHelper.js +47 -0
- package/src/sap/suite/ui/generic/template/lib/ai/FioriAIHandler.js +10 -3
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +31 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +22 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +23 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +23 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +22 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +23 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +21 -0
- package/src/sap/suite/ui/generic/template/lib/insights/InsightsCardHelper.js +39 -23
- package/src/sap/suite/ui/generic/template/lib/multipleViews/MultipleTablesModeHelper.js +2 -1
- package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +5 -3
- package/src/sap/suite/ui/generic/template/library.js +3 -1
- package/src/sap/suite/ui/generic/template/listTemplates/fragments/MultipleViewsSingleTableMode.fragment.xml +6 -2
- package/src/sap/suite/ui/generic/template/manifestMerger/ChangePageConfiguration.js +28 -23
- package/src/sap/suite/ui/generic/template/manifestMerger/MergerUtil.js +6 -6
- package/src/sap/suite/ui/generic/template/themes/base/base.less +0 -4
- package/ui5.yaml +1 -0
|
@@ -2,20 +2,26 @@ sap.ui.define([
|
|
|
2
2
|
"sap/ui/base/Object",
|
|
3
3
|
"sap/base/util/extend",
|
|
4
4
|
"sap/suite/ui/generic/template/lib/filterHelper",
|
|
5
|
-
"sap/ui/
|
|
6
|
-
], function(BaseObject, extend, filterHelper,
|
|
5
|
+
"sap/suite/ui/generic/template/genericUtilities/FeLogger"
|
|
6
|
+
], function(BaseObject, extend, filterHelper, FeLogger) {
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
9
|
/*
|
|
10
10
|
* This is a handler class for EasyFilterBar.
|
|
11
|
-
* It gets initialized when the Fiori AI is enabled
|
|
11
|
+
* It gets initialized when the Fiori AI filtering intent is enabled
|
|
12
|
+
* Preparation of the easy filter metadata is done from the smart filter bar metadata
|
|
13
|
+
* Event handlers for the easy filter bar are also defined here
|
|
12
14
|
*
|
|
13
15
|
*/
|
|
14
16
|
var oEasyFilterMetadata;
|
|
17
|
+
var oLogger = new FeLogger("lib.ai.EasyFilterBarHandler").getLogger();
|
|
15
18
|
|
|
16
19
|
function getMethods(oState, oController, oTemplateUtils) {
|
|
17
|
-
var ValueState = SapCoreLibrary.ValueState;
|
|
18
20
|
var mCodeList = {};
|
|
21
|
+
// used for busyHandling between query triggered and query resolved.
|
|
22
|
+
var oQueryPromise, oQueryPromiseResolve;
|
|
23
|
+
var fnValueHelpPromiseResolve;
|
|
24
|
+
// fnValueHelpPromiseReject;
|
|
19
25
|
|
|
20
26
|
/**
|
|
21
27
|
* This method prepares the metadata calculation after the smart filter bar is initialized
|
|
@@ -55,6 +61,7 @@ sap.ui.define([
|
|
|
55
61
|
var oSFBMetaModel = oSFBModel.getMetaModel();
|
|
56
62
|
var oEditStateFilterItem;
|
|
57
63
|
var sEntitySet = oController.getOwnerComponent().getEntitySet();
|
|
64
|
+
var sTokenType = "ValueHelp"; // Other values are "Calendar" | "Time" | "MenuWithCheckBox"
|
|
58
65
|
|
|
59
66
|
var mFilterProperties = {}; // todo : Add the properties from navigation entites
|
|
60
67
|
var oEntityType = oTemplateUtils.oCommonUtils.getMetaModelEntityType(sEntitySet);
|
|
@@ -63,6 +70,7 @@ sap.ui.define([
|
|
|
63
70
|
var bIsCodeListRequired = "";
|
|
64
71
|
oProperty.extensions && oProperty.extensions.forEach(function(oExtension) {
|
|
65
72
|
if (oExtension.name === "value-list" && oExtension.value === "fixed-values") {
|
|
73
|
+
sTokenType = "MenuWithCheckBox";
|
|
66
74
|
bIsCodeListRequired = true;
|
|
67
75
|
}
|
|
68
76
|
});
|
|
@@ -72,8 +80,10 @@ sap.ui.define([
|
|
|
72
80
|
dataType: oProperty.type,
|
|
73
81
|
filterable: true,
|
|
74
82
|
sortable: false,
|
|
75
|
-
codeList : bIsCodeListRequired
|
|
76
|
-
|
|
83
|
+
codeList : bIsCodeListRequired,
|
|
84
|
+
type: sTokenType,
|
|
85
|
+
unit: oProperty["sap:unit"] || "",
|
|
86
|
+
required: oProperty["sap:required-in-filter"] ? true : false
|
|
77
87
|
};
|
|
78
88
|
}
|
|
79
89
|
});
|
|
@@ -118,6 +128,7 @@ sap.ui.define([
|
|
|
118
128
|
if (oTemplateUtils.oComponentUtils.isDraftEnabled()) {
|
|
119
129
|
var oEditStateControl = oController.byId("editStateFilter");
|
|
120
130
|
if (oEditStateControl) {
|
|
131
|
+
sTokenType = "MenuWithCheckBox";
|
|
121
132
|
var oEditingStatusCodeList = oEditStateControl.getItems().map(function(oItem) {
|
|
122
133
|
return {
|
|
123
134
|
value : oItem.getKey(),
|
|
@@ -131,6 +142,7 @@ sap.ui.define([
|
|
|
131
142
|
filterable: true,
|
|
132
143
|
required: false,
|
|
133
144
|
sortable: false,
|
|
145
|
+
type: sTokenType,
|
|
134
146
|
codeList : oEditingStatusCodeList
|
|
135
147
|
};
|
|
136
148
|
oEasyFilterMetadata.fields.push(oEditStateFilterMetadata);
|
|
@@ -142,51 +154,6 @@ sap.ui.define([
|
|
|
142
154
|
});
|
|
143
155
|
}
|
|
144
156
|
|
|
145
|
-
/**
|
|
146
|
-
* This method is used to trigger the EasyFilter search of the fiori AI reuse library
|
|
147
|
-
* @param {*} oEasyFilterControl EasyFilter control of the floorplan
|
|
148
|
-
* @returns Promise which resolves to AI filters
|
|
149
|
-
*/
|
|
150
|
-
function fnTriggerEasyFilterQuery(oEasyFilterControl) {
|
|
151
|
-
|
|
152
|
-
var sEasyFilterQuery = oEasyFilterControl.getValue();
|
|
153
|
-
if (sEasyFilterQuery.length === 0) {
|
|
154
|
-
// Resolving with an empty array will reset the SFB filters and trigger a fresh GET call
|
|
155
|
-
return Promise.resolve([]);
|
|
156
|
-
} else {
|
|
157
|
-
var oEasyFilterMetadataPromise = fnGetEasyFilterSearchMetadata();
|
|
158
|
-
var oResultPromise = new Promise(function(fnResolve, fnReject) {
|
|
159
|
-
oEasyFilterMetadataPromise.then(function(oEasyFilterMetadata) {
|
|
160
|
-
var oFioriAIFilterQueryPromise = oTemplateUtils.oServices.oFioriAIHandler.fioriaiLib.EasyFilter.easyFilter(sEasyFilterQuery, oEasyFilterMetadata);
|
|
161
|
-
oFioriAIFilterQueryPromise.then(function(oResponse) {
|
|
162
|
-
if (oResponse.success) {
|
|
163
|
-
if (oResponse.data.version === 1) {
|
|
164
|
-
// In cases where user filters with some random string and the no valuable filter is availabel then simply reject
|
|
165
|
-
if (oResponse.data.unclear || !oResponse.data.filter) {
|
|
166
|
-
var sUnclearInputMessage = oResponse.data.unclear ? "Unclear input: " + oResponse.data.unclear : "Unclear input";
|
|
167
|
-
oEasyFilterControl.setValueStateText(sUnclearInputMessage);
|
|
168
|
-
oEasyFilterControl.setValueState(ValueState.Warning);
|
|
169
|
-
fnReject(oResponse);
|
|
170
|
-
} else if (oResponse.data.filter) {
|
|
171
|
-
// Commenting out for v4 parity
|
|
172
|
-
//oEasyFilterControl.setValueState(ValueState.Success);
|
|
173
|
-
fnResolve(oResponse.data.filter);
|
|
174
|
-
}
|
|
175
|
-
} else if (oResponse.data.version === 2) {
|
|
176
|
-
// to-do for version 2
|
|
177
|
-
}
|
|
178
|
-
} else {
|
|
179
|
-
oEasyFilterControl.setValueStateText(oResponse.message);
|
|
180
|
-
oEasyFilterControl.setValueState(ValueState.Warning);
|
|
181
|
-
fnReject(oResponse);
|
|
182
|
-
}
|
|
183
|
-
},fnReject);
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
return oResultPromise;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
157
|
/**
|
|
191
158
|
* This method reads the values of the valuehelp entity from the backend and fills the code list of each property.
|
|
192
159
|
* Once the values are filled then the fioriAI uses it for getting the ID of the user entered description in the search field
|
|
@@ -251,7 +218,7 @@ sap.ui.define([
|
|
|
251
218
|
* This method is used to convert the AI filters to the selectOptions for the SmartFilterBar
|
|
252
219
|
* It also identifies the values of edit state filter in case of draft
|
|
253
220
|
* @param {*} oAIFilters
|
|
254
|
-
* @returns
|
|
221
|
+
* @returns map which contains selectOptions and editStateFilter
|
|
255
222
|
*/
|
|
256
223
|
function fnGetSFBVariantData(oAIFilters) {
|
|
257
224
|
|
|
@@ -265,9 +232,14 @@ sap.ui.define([
|
|
|
265
232
|
// ------- Converted to selectOptions [ {Property = P1, Ranges = [ a, b ] } ] .
|
|
266
233
|
// ------- FE filters as "a or b".
|
|
267
234
|
// Case 1.b : AI Query "Show P1 between a and b"
|
|
268
|
-
// ------- AI response
|
|
269
|
-
//
|
|
270
|
-
//
|
|
235
|
+
// ------- AI response
|
|
236
|
+
// ------------ a. " [P1 = Ranges [a] GE, P1 = Ranges [b]] LT ".
|
|
237
|
+
// ------------ Converted to selectOptions [ {Property = P1, Ranges = [ a ] } , {Property = P2, Ranges = [ b ] } ] .
|
|
238
|
+
// ------------ FE filters as "a or b" and this is wrong AI should respond with operator BT/NB like below.
|
|
239
|
+
|
|
240
|
+
// ------------ b. " P1 = Ranges[a,b] OP = BT/ NB ".
|
|
241
|
+
// ------------ Converted to selectOptions [ {Property = P1, Ranges = [ a,b ], OP = BT/NB } ] .
|
|
242
|
+
// ------------ FE filters as "Greater than a and less than b" or "Not between a and b".
|
|
271
243
|
// Case 2 : AI Query "Show P1 = a and P2 = b"
|
|
272
244
|
// ------- AI response "[P1 = Ranges [a] , P2 = Ranges [b]]"
|
|
273
245
|
// ------- Convert to selectOptions [ {Property = P1, Ranges = [ a ] } , {Property = P2, Ranges = [ b ] } ].
|
|
@@ -277,28 +249,39 @@ sap.ui.define([
|
|
|
277
249
|
var oEditStateFilter = 0;
|
|
278
250
|
oAIFilters.forEach(function(oFilterItem) {
|
|
279
251
|
|
|
280
|
-
if ( oFilterItem.
|
|
281
|
-
oEditStateFilter = oFilterItem.
|
|
252
|
+
if ( oFilterItem.key === "EditState") {
|
|
253
|
+
oEditStateFilter = oFilterItem.keySpecificSelectedValues[0].selectedValues[0]; // Edit state generally should not have more than one filter value
|
|
282
254
|
} else {
|
|
283
255
|
var oFilter = {
|
|
284
|
-
PropertyName : oFilterItem.
|
|
256
|
+
PropertyName : oFilterItem.key,
|
|
285
257
|
Ranges : []
|
|
286
258
|
};
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
259
|
+
// keySpecificSelectedValues will have one selectedValues object for each operator
|
|
260
|
+
// ex : [{operator: "EQ", selectedValues: ["HT-1010","HT-10001","1097"]}, {operator: "Contains", selectedValues: ["HT-100"]}]
|
|
261
|
+
oFilterItem.keySpecificSelectedValues.forEach(function(oSelectedValues) {
|
|
262
|
+
oSelectedValues.selectedValues.forEach(function (oValue) {
|
|
263
|
+
var oRange = {
|
|
264
|
+
Sign : "I", // currently not considering "E"
|
|
265
|
+
High : ""
|
|
266
|
+
};
|
|
267
|
+
if (oSelectedValues.operator === "Contains") { // need to check for other operators if special handling is required
|
|
268
|
+
oRange.Option = "CP";
|
|
269
|
+
oRange.Low = oValue;
|
|
270
|
+
} else if (oSelectedValues.operator === "BT" || oSelectedValues.operator === "NB") {
|
|
271
|
+
// For "BT" and "NB" High is required
|
|
272
|
+
// AI reuse responds with array of values for BT and BN (between and not between)
|
|
273
|
+
// But in few cases it can also respond with two separate filters (LT and GT)
|
|
274
|
+
// FE DOES NOT do the auto merging and results in two separate selectOptions (results in OR condition)
|
|
275
|
+
oRange.Low = oValue[0];
|
|
276
|
+
oRange.High = oValue[1];
|
|
277
|
+
} else {
|
|
278
|
+
oRange.Option = oSelectedValues.operator;
|
|
279
|
+
oRange.Low = oValue;
|
|
280
|
+
}
|
|
281
|
+
oFilter.Ranges.push(oRange);
|
|
282
|
+
});
|
|
301
283
|
});
|
|
284
|
+
// one oFilter will have multiple ranges if multiple filters are selected for the same property
|
|
302
285
|
aSelectOptions.push(oFilter);
|
|
303
286
|
}
|
|
304
287
|
});
|
|
@@ -307,10 +290,159 @@ sap.ui.define([
|
|
|
307
290
|
oEditStateFilter : oEditStateFilter
|
|
308
291
|
};
|
|
309
292
|
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* This method is used to get the EasyFilter control from the floorplan
|
|
296
|
+
* @returns EasyFilter control
|
|
297
|
+
*/
|
|
298
|
+
function fnGetEasyFilterBar() {
|
|
299
|
+
return oController.byId("template::easyFilterContainer");
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* This method is used to initialise the EasyFilter control with the metadata from the smart filter bar
|
|
304
|
+
*/
|
|
305
|
+
function fnInitialiseEasyFilterBar() {
|
|
306
|
+
var oEasyFilter = fnGetEasyFilterBar();
|
|
307
|
+
var oEasyFilterMetadataPromise = fnGetEasyFilterSearchMetadata();
|
|
308
|
+
var sEntitySet = oController.getOwnerComponent().getEntitySet();
|
|
309
|
+
oEasyFilterMetadataPromise.then((oEasyFilterMetadata) => {
|
|
310
|
+
oEasyFilter.setContextPath(sEntitySet);
|
|
311
|
+
oEasyFilter.setAppId(oController.getOwnerComponent().getAppComponent().getManifestEntry("sap.app")).id;
|
|
312
|
+
oEasyFilter.setFilterBarMetadata(oEasyFilterMetadata.fields);
|
|
313
|
+
oEasyFilter.easyfilter = oTemplateUtils.oServices.oFioriAIHandler.fioriaiLib.EasyFilter;
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
function fnExecuteSearch(oEvent) {
|
|
318
|
+
var oSmartFilterbar = oState.oSmartFilterbar;
|
|
319
|
+
oSmartFilterbar.search();
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
function fnClearFilters(oEvent) {
|
|
323
|
+
var oSmartFilterbar = oState.oSmartFilterbar;
|
|
324
|
+
oSmartFilterbar.search();
|
|
325
|
+
// Do not clear the SFB as this is applicable only for the EasyFilter
|
|
326
|
+
//oSmartFilterbar.clear();
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
function fnAfterQueryProcessing(oEvent) {
|
|
330
|
+
oQueryPromiseResolve();
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
function fnBeforeQueryProcessing(oEvent) {
|
|
334
|
+
oQueryPromise = new Promise(function(resolve) {
|
|
335
|
+
oQueryPromiseResolve = resolve;
|
|
336
|
+
});
|
|
337
|
+
oTemplateUtils.oComponentUtils.getBusyHelper().setBusy(oQueryPromise);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
function fnTokensChanged(oEvent) {
|
|
341
|
+
var oSmartFilterbar = oState.oSmartFilterbar;
|
|
342
|
+
var oFiltersFromAI = oEvent.getParameter("tokens");
|
|
343
|
+
var sSmartFilterBarId = oSmartFilterbar.getId();
|
|
344
|
+
var oSmartFilterBarWrapper = oTemplateUtils.oCommonUtils.getControlStateWrapperById(sSmartFilterBarId, "SmartFilterBar");
|
|
345
|
+
var oSmartFilterBarVariant = oSmartFilterBarWrapper.getState();
|
|
346
|
+
var oVariantDataFromAI = fnGetSFBVariantData(oFiltersFromAI);
|
|
347
|
+
|
|
348
|
+
// restore the custom filters to the initial state for now
|
|
349
|
+
// To check if other objects in oSmartFilterBarVariant needs to be modified
|
|
350
|
+
var aAppExtension = Object.keys(oSmartFilterBarVariant.customFilters.appExtension);
|
|
351
|
+
if ( aAppExtension.length > 0 ) {
|
|
352
|
+
aAppExtension.forEach(function(sKey) {
|
|
353
|
+
oSmartFilterBarVariant.customFilters.appExtension[sKey] = "";
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
oSmartFilterBarVariant.selectOptions = oVariantDataFromAI.aSelectOptions;
|
|
357
|
+
if (oTemplateUtils.oComponentUtils.isDraftEnabled()) {
|
|
358
|
+
oSmartFilterBarVariant.customFilters.editState = oVariantDataFromAI.oEditStateFilter;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
oSmartFilterBarWrapper.setState(oSmartFilterBarVariant);
|
|
362
|
+
oSmartFilterbar.getSmartVariant() && oSmartFilterbar.getSmartVariant().currentVariantSetModified(true);
|
|
363
|
+
oSmartFilterbar.search();
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Event handler for the EasyFilter control's showValueHelp event.
|
|
368
|
+
* Identifies the input field for which the value help is requested and triggers the value help opening from SFB.
|
|
369
|
+
* @param {*} oEvent
|
|
370
|
+
* @param {*} oState
|
|
371
|
+
*/
|
|
372
|
+
function fnShowValueHelp(oEvent) {
|
|
373
|
+
var oSmartFilterbar = oState.oSmartFilterbar;
|
|
374
|
+
fnValueHelpPromiseResolve = oEvent.getParameter("resolve");
|
|
375
|
+
oSmartFilterbar.associateValueLists();
|
|
376
|
+
try {
|
|
377
|
+
oSmartFilterbar.openValueHelpRequestForFilterItem(oEvent.getParameter("key"));
|
|
378
|
+
} catch (error) {
|
|
379
|
+
oLogger.error("Value help cannot be triggered for the field " + oEvent.getParameter("key"));
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
function fnQueryChanged() {
|
|
384
|
+
// todo : check if any action is required
|
|
385
|
+
}
|
|
386
|
+
// function fnUpdateEasyFilterBarTokens() {
|
|
387
|
+
// // todo : update the easy filter bar tokens with new values from the SFB VHD
|
|
388
|
+
// }
|
|
389
|
+
function fnOnFilterChange(oEvent) {
|
|
390
|
+
// afterFilterDataUpdate
|
|
391
|
+
var mChangeParameters = oEvent.getParameters("mParameters");
|
|
392
|
+
var aEasyFilterTokens = [];
|
|
393
|
+
var sFilterChangeProperty;
|
|
394
|
+
// filter change will be triggered for each filter change even if the value help is opened from SFB
|
|
395
|
+
// fnValueHelpPromiseResolve will be set only if the valeu help is opened from EasyFilter
|
|
396
|
+
if (mChangeParameters.sId === "change" && fnValueHelpPromiseResolve) {
|
|
397
|
+
sFilterChangeProperty = mChangeParameters.getParameter("filterChangeReason");
|
|
398
|
+
// find an efficient way to get the filters from SFB to update the EasyFilter token
|
|
399
|
+
oEvent.getSource().getFilters().forEach(function(aFilters) {
|
|
400
|
+
aFilters.aFilters && aFilters.aFilters.forEach(function(oPropertyFilterItem) {
|
|
401
|
+
// aFilters is available if there are more than 1 filter for the property in the EasyFilter
|
|
402
|
+
// In case of one filter aFilters is not available and the values are directly available in the oPropertyFilterItem
|
|
403
|
+
oPropertyFilterItem = oPropertyFilterItem.aFilters ? oPropertyFilterItem.aFilters : [oPropertyFilterItem];
|
|
404
|
+
oPropertyFilterItem.forEach(function(oFilterItem) {
|
|
405
|
+
if (oFilterItem.sPath === sFilterChangeProperty) {
|
|
406
|
+
var oPropertyToken = {
|
|
407
|
+
operator : "",
|
|
408
|
+
selectedValues : []
|
|
409
|
+
};
|
|
410
|
+
var bOperatorAvailable = aEasyFilterTokens.find(function(oToken) {
|
|
411
|
+
return oToken.operator === oFilterItem.sOperator;
|
|
412
|
+
});
|
|
413
|
+
if (bOperatorAvailable) {
|
|
414
|
+
aEasyFilterTokens.forEach(function(oToken) {
|
|
415
|
+
if (oToken.operator === oFilterItem.sOperator) {
|
|
416
|
+
oToken.selectedValues.push(oFilterItem.oValue1);
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
} else {
|
|
420
|
+
oPropertyToken.operator = oFilterItem.sOperator;
|
|
421
|
+
oPropertyToken.selectedValues.push(oFilterItem.oValue1);
|
|
422
|
+
aEasyFilterTokens.push(oPropertyToken);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
});
|
|
427
|
+
});
|
|
428
|
+
// ex : [{ operator:eq, selectedValues:["HT-1010","HT-10001","1097"]}, { operator:Contains, selectedValues:["HT-100"]}]
|
|
429
|
+
fnValueHelpPromiseResolve(aEasyFilterTokens); // Assuming that the tokens for only the value help field has to be sent back
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
310
433
|
return {
|
|
311
|
-
|
|
434
|
+
getEasyFilterBar : fnGetEasyFilterBar,
|
|
435
|
+
initialiseEasyFilterBar : fnInitialiseEasyFilterBar,
|
|
312
436
|
getSFBVariantData : fnGetSFBVariantData,
|
|
313
|
-
getEasyFilterSearchMetadata : fnGetEasyFilterSearchMetadata
|
|
437
|
+
getEasyFilterSearchMetadata : fnGetEasyFilterSearchMetadata,
|
|
438
|
+
onExecuteSearch: fnExecuteSearch,
|
|
439
|
+
onClearFilters: fnClearFilters,
|
|
440
|
+
onAfterQueryProcessing: fnAfterQueryProcessing,
|
|
441
|
+
onBeforeQueryProcessing: fnBeforeQueryProcessing,
|
|
442
|
+
onQueryChanged : fnQueryChanged,
|
|
443
|
+
onTokensChanged: fnTokensChanged,
|
|
444
|
+
onShowValueHelp: fnShowValueHelp,
|
|
445
|
+
onFilterChange : fnOnFilterChange
|
|
314
446
|
};
|
|
315
447
|
}
|
|
316
448
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
sap.ui.define([
|
|
2
|
+
"sap/suite/ui/generic/template/genericUtilities/FeLogger",
|
|
3
|
+
"sap/ui/performance/trace/FESRHelper"
|
|
4
|
+
], function(FeLogger, FESRHelper) {
|
|
5
|
+
'use strict';
|
|
6
|
+
var oLogger = new FeLogger("lib.ai.ErrorExplanationHelper").getLogger();
|
|
7
|
+
|
|
8
|
+
function generateErrorExplanation(oEvent, oController, oTemplateUtils) {
|
|
9
|
+
var oErrorExplanationMetadata, oErrorExplanationData;
|
|
10
|
+
var oSource = oEvent.getSource();
|
|
11
|
+
|
|
12
|
+
var oOwnerComponent = oController.getOwnerComponent();
|
|
13
|
+
var oAppComponent = oOwnerComponent.getAppComponent();
|
|
14
|
+
var aRegistrationIds = oAppComponent.getManifestEntry("sap.fiori").registrationIds;
|
|
15
|
+
var sRegistrationIdsString = aRegistrationIds && aRegistrationIds.length > 0 ? aRegistrationIds.join(",") : "";
|
|
16
|
+
|
|
17
|
+
oErrorExplanationMetadata = {
|
|
18
|
+
version : 1,
|
|
19
|
+
fioriId: sRegistrationIdsString,
|
|
20
|
+
appName: oAppComponent.getManifestEntry("sap.app").title || null,
|
|
21
|
+
componentName: oAppComponent.getManifestEntry("sap.app").id || null
|
|
22
|
+
};
|
|
23
|
+
oErrorExplanationData = {
|
|
24
|
+
version : 1,
|
|
25
|
+
message : oSource.data("message"),
|
|
26
|
+
code: oSource.data("code"),
|
|
27
|
+
description: oSource.data("description"),
|
|
28
|
+
descriptionUrl: oSource.data("descriptionUrl")
|
|
29
|
+
};
|
|
30
|
+
try {
|
|
31
|
+
oTemplateUtils.oServices.oFioriAIHandler.fioriaiLib.ErrorExplanation.explain(oErrorExplanationMetadata, oErrorExplanationData);
|
|
32
|
+
} catch (oError) {
|
|
33
|
+
oLogger.warning(oError);
|
|
34
|
+
}
|
|
35
|
+
FESRHelper.setSemanticStepname(oSource, "press", "fe:ee:explain");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function isErrorExplanationEnabled(oTemplateUtils) {
|
|
39
|
+
var oTemplatePrivateGlobalModel = oTemplateUtils.oComponentUtils.getTemplatePrivateGlobalModel();
|
|
40
|
+
return oTemplatePrivateGlobalModel.getProperty("/generic/fioriAI/isErrorExplanationEnabled");
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return {
|
|
44
|
+
generateErrorExplanation: generateErrorExplanation,
|
|
45
|
+
isErrorExplanationEnabled: isErrorExplanationEnabled
|
|
46
|
+
};
|
|
47
|
+
});
|
|
@@ -8,7 +8,7 @@ sap.ui.define([
|
|
|
8
8
|
var sAIIntent = "#IntelligentPrompt-summarize"; // For now the intent is common for all the AI scenarios
|
|
9
9
|
var sFioriAILibrary = "ux.eng.fioriai.reuse";
|
|
10
10
|
var UShellContainer = sap.ui.require("sap/ushell/Container");
|
|
11
|
-
var oLogger = new FeLogger("
|
|
11
|
+
var oLogger = new FeLogger("lib.ai.FioriAIHandler").getLogger();
|
|
12
12
|
/*
|
|
13
13
|
* This is a handler class for Fiori AI. It is used to load the Fiori AI library and provide it to the template for template consumption.
|
|
14
14
|
*
|
|
@@ -32,14 +32,20 @@ sap.ui.define([
|
|
|
32
32
|
oNavigationService.resolveIntent(sAIIntent).then(function(sUrl) {
|
|
33
33
|
Lib.load({name: sFioriAILibrary, url: sUrl}).then(function() {
|
|
34
34
|
// To-Do : load the summarize from reuse/summary
|
|
35
|
-
sap.ui.require(["ux/eng/fioriai/reuse/library",
|
|
35
|
+
sap.ui.require(["ux/eng/fioriai/reuse/library",
|
|
36
|
+
"ux/eng/fioriai/reuse/easyfilter/EasyFilter",
|
|
37
|
+
"ux/eng/fioriai/reuse/errorexplanation/ErrorExplanation"
|
|
38
|
+
], function(fioriaiLib, EasyFilter, ErrorExplanation) {
|
|
36
39
|
that.fioriaiLib.summarize = fioriaiLib.summarize;
|
|
37
40
|
that.fioriaiLib.EasyFilter = EasyFilter;
|
|
41
|
+
that.fioriaiLib.ErrorExplanation = ErrorExplanation;
|
|
42
|
+
|
|
38
43
|
that.isFioriAIEnabled = true;
|
|
39
44
|
// Each AI capability will be enabled separately. Currently there is no separation for beta , but in future it will be
|
|
40
45
|
oTemplateContract.oTemplatePrivateGlobalModel.setProperty("/generic/fioriAI/isSummarizationEnabled", !!sUrl);
|
|
41
46
|
// isEasyFilterEnabled property controls the visibility of the filter bar switch from which the easyfilter can be accessed
|
|
42
47
|
oTemplateContract.oTemplatePrivateGlobalModel.setProperty("/generic/fioriAI/isEasyFilterEnabled", !!sUrl);
|
|
48
|
+
oTemplateContract.oTemplatePrivateGlobalModel.setProperty("/generic/fioriAI/isErrorExplanationEnabled", !!sUrl);
|
|
43
49
|
fnResolveInit();
|
|
44
50
|
});
|
|
45
51
|
});
|
|
@@ -68,7 +74,8 @@ sap.ui.define([
|
|
|
68
74
|
// If the AI intent is available then later the library will be loaded
|
|
69
75
|
this.fioriaiLib = {
|
|
70
76
|
summarize: null,
|
|
71
|
-
EasyFilter: null
|
|
77
|
+
EasyFilter: null,
|
|
78
|
+
ErrorExplanation: null
|
|
72
79
|
};
|
|
73
80
|
this.isFioriAIEnabled = false;
|
|
74
81
|
extend(this, getMethods(oTemplateContract));
|
|
@@ -318,6 +318,8 @@ ST_EASY_FILTER_GO_BUTTON_TEXT=Go
|
|
|
318
318
|
|
|
319
319
|
#------------End of: Easy filter related text-----------------------
|
|
320
320
|
|
|
321
|
+
ST_AI_EE_BUTTON_LABEL=Generate Explanation
|
|
322
|
+
|
|
321
323
|
#---Final block: texts to be redefined by the application ----------------------------------------------
|
|
322
324
|
|
|
323
325
|
#--- a) Texts that are only relevant for the object page of the root object
|
|
@@ -484,4 +486,33 @@ DIALOG_TITLE_NEW_ACTION_FOR_CREATE=Create Object
|
|
|
484
486
|
#XTIT: Dialog action button text for new action for create
|
|
485
487
|
DIALOG_ACTION_BUTTON_NEW_ACTION_FOR_CREATE=Continue
|
|
486
488
|
|
|
489
|
+
# XTIT, 30: Invisible Text for multiple view drop down menu
|
|
490
|
+
CONTENT_SWITCH=Content Switch
|
|
491
|
+
|
|
492
|
+
#--- e) Texts that are relevant for retry after scenario
|
|
493
|
+
|
|
494
|
+
# XMSG: Message for 503 error
|
|
495
|
+
ST_GENERIC_503_SERVICE_UNAVAILABLE=Sorry, this service is temporarily unavailable.
|
|
496
|
+
|
|
497
|
+
# XMSG: Automatic retry message with seconds
|
|
498
|
+
ST_GENERIC_503_AUTO_RETRY_MSG=Automatic retry in {0} seconds
|
|
499
|
+
|
|
500
|
+
#XMSG: Confirmation message for cancelling retry
|
|
501
|
+
ST_GENERIC_503_CANCEL_RETRY=Sorry, this service is still unavailable. Do you want to retry or cancel the action?
|
|
502
|
+
|
|
503
|
+
#XBUT: Retry button on dialog
|
|
504
|
+
RETRY=Retry
|
|
505
|
+
|
|
506
|
+
# XMSG: Description of the 503 Error Message Page (Same day)
|
|
507
|
+
ST_GENERIC_503_RETRY_MSG_SAME_DAY=We expect it to be available again at {0}.
|
|
508
|
+
|
|
509
|
+
# XMSG: Description of the 503 Error Message Page (Some other day)
|
|
510
|
+
ST_GENERIC_503_RETRY_MSG_OTHER_DAY=We expect it to be available again on {0} at {1}.
|
|
511
|
+
|
|
512
|
+
# XMSG: Description of the 503 Error Message Page (Unknown time)
|
|
513
|
+
ST_GENERIC_503_RETRY_MSG_TIME_UNKNWON=Please try again later.
|
|
514
|
+
|
|
515
|
+
#XMSG: Label for the error message provided by server
|
|
516
|
+
ST_GENERIC_503_SOURCE_MESSAGE=Source message:
|
|
517
|
+
|
|
487
518
|
#---End of final block: texts to be redefined by the application ----------------------------------------
|
|
@@ -205,6 +205,8 @@ ST_EASY_FILTER_INPUT_PLACEHOLDER=\u0623\u062F\u062E\u0644 \u0627\u0633\u062A\u06
|
|
|
205
205
|
ST_EASY_FILTER_GO_BUTTON_TEXT=\u0627\u0646\u062A\u0642\u0627\u0644
|
|
206
206
|
|
|
207
207
|
|
|
208
|
+
ST_AI_EE_BUTTON_LABEL=\u0625\u0646\u0634\u0627\u0621 \u062A\u0648\u0636\u064A\u062D
|
|
209
|
+
|
|
208
210
|
|
|
209
211
|
|
|
210
212
|
ST_GENERIC_DRAFT_LOCKED_BY_USER=\u0642\u0627\u0645 \u0645\u0633\u062A\u062E\u062F\u0645 \u0622\u062E\u0631 \u0628\u062A\u062D\u0631\u064A\u0631 \u0647\u0630\u0627 \u0627\u0644\u0643\u0627\u0626\u0646 \u0628\u062F\u0648\u0646 \u062D\u0641\u0638 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A\: \n{1} \n\u0641\u064A \u062D\u0627\u0644\u0629 \u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629\u060C \u0641\u0633\u064A\u062A\u0645 \u0641\u0642\u062F\u0627\u0646 \u0623\u064A \u062A\u063A\u064A\u064A\u0631\u0627\u062A.
|
|
@@ -314,3 +316,22 @@ DIALOG_TITLE_NEW_ACTION_FOR_CREATE=\u0625\u0646\u0634\u0627\u0621 \u0643\u0627\u
|
|
|
314
316
|
|
|
315
317
|
DIALOG_ACTION_BUTTON_NEW_ACTION_FOR_CREATE=\u0645\u062A\u0627\u0628\u0639\u0629
|
|
316
318
|
|
|
319
|
+
CONTENT_SWITCH=\u0645\u0641\u062A\u0627\u062D \u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0645\u062D\u062A\u0648\u0649
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
ST_GENERIC_503_SERVICE_UNAVAILABLE=\u0639\u0630\u0631\u064B\u0627\u060C \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 \u063A\u064A\u0631 \u0645\u062A\u0648\u0641\u0631\u0629 \u0645\u0624\u0642\u062A\u064B\u0627.
|
|
323
|
+
|
|
324
|
+
ST_GENERIC_503_AUTO_RETRY_MSG=\u0623\u0639\u062F \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627 \u062E\u0644\u0627\u0644 {0} \u0645\u0646 \u0627\u0644\u062B\u0648\u0627\u0646\u064A.
|
|
325
|
+
|
|
326
|
+
ST_GENERIC_503_CANCEL_RETRY=\u0639\u0630\u0631\u064B\u0627\u060C \u0644\u0627 \u062A\u0632\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 \u063A\u064A\u0631 \u0645\u062A\u0648\u0641\u0631\u0629. \u0647\u0644 \u062A\u0631\u064A\u062F \u0625\u0639\u0627\u062F\u0629 \u0645\u062D\u0627\u0648\u0644\u0629 \u0627\u0644\u0625\u062C\u0631\u0627\u0621 \u0623\u0648 \u0625\u0644\u063A\u0627\u0624\u0647\u061F
|
|
327
|
+
|
|
328
|
+
RETRY=\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629
|
|
329
|
+
|
|
330
|
+
ST_GENERIC_503_RETRY_MSG_SAME_DAY=\u0646\u062A\u0648\u0642\u0639 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u062A\u0648\u0641\u0631\u064B\u0627 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0641\u064A {0}.
|
|
331
|
+
|
|
332
|
+
ST_GENERIC_503_RETRY_MSG_OTHER_DAY=\u0646\u062A\u0648\u0642\u0639 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u062A\u0648\u0641\u0631\u064B\u0627 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0641\u064A {0} \u0641\u064A {1}.
|
|
333
|
+
|
|
334
|
+
ST_GENERIC_503_RETRY_MSG_TIME_UNKNWON=\u0627\u0644\u0631\u062C\u0627\u0621 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0627\u062D\u0642\u064B\u0627.
|
|
335
|
+
|
|
336
|
+
ST_GENERIC_503_SOURCE_MESSAGE=\u0631\u0633\u0627\u0644\u0629 \u0627\u0644\u0645\u0635\u062F\u0631\:
|
|
337
|
+
|
|
@@ -205,6 +205,8 @@ ST_EASY_FILTER_INPUT_PLACEHOLDER=\u0412\u044A\u0432\u0435\u0434\u0435\u0442\u043
|
|
|
205
205
|
ST_EASY_FILTER_GO_BUTTON_TEXT=\u0421\u0442\u0430\u0440\u0442
|
|
206
206
|
|
|
207
207
|
|
|
208
|
+
ST_AI_EE_BUTTON_LABEL=\u0413\u0435\u043D\u0435\u0440\u0438\u0440\u0430\u043D\u0435 \u043D\u0430 \u043E\u0431\u044F\u0441\u043D\u0435\u043D\u0438\u0435
|
|
209
|
+
|
|
208
210
|
|
|
209
211
|
|
|
210
212
|
ST_GENERIC_DRAFT_LOCKED_BY_USER=\u0414\u0440\u0443\u0433 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B \u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0430\u043B \u043E\u0431\u0435\u043A\u0442\u0430, \u0431\u0435\u0437 \u0434\u0430 \u0437\u0430\u043F\u0430\u0437\u0438 \u043F\u0440\u043E\u043C\u0435\u043D\u0438\u0442\u0435\:\n{1} \n\u0410\u043A\u043E \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435, \u043F\u0440\u043E\u043C\u0435\u043D\u0438\u0442\u0435 \u0449\u0435 \u0431\u044A\u0434\u0430\u0442 \u0438\u0437\u0433\u0443\u0431\u0435\u043D\u0438.
|
|
@@ -314,3 +316,22 @@ DIALOG_TITLE_NEW_ACTION_FOR_CREATE=\u0421\u044A\u0437\u0434\u0430\u0432\u0430\u0
|
|
|
314
316
|
|
|
315
317
|
DIALOG_ACTION_BUTTON_NEW_ACTION_FOR_CREATE=\u041F\u0440\u043E\u0434\u044A\u043B\u0436\u0430\u0432\u0430\u043D\u0435
|
|
316
318
|
|
|
319
|
+
CONTENT_SWITCH=\u041F\u0440\u0435\u0432\u043A\u043B\u044E\u0447\u0432\u0430\u0442\u0435\u043B \u043D\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\u043D\u0438\u0435
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
ST_GENERIC_503_SERVICE_UNAVAILABLE=\u0417\u0430 \u0441\u044A\u0436\u0430\u043B\u0435\u043D\u0438\u0435 \u0443\u0441\u043B\u0443\u0433\u0430\u0442\u0430 \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0435 \u0434\u043E\u0441\u0442\u044A\u043F\u043D\u0430.
|
|
323
|
+
|
|
324
|
+
ST_GENERIC_503_AUTO_RETRY_MSG=\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u043D \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D \u043E\u043F\u0438\u0442 \u0441\u043B\u0435\u0434 {0} \u0441\u0435\u043A\u0443\u043D\u0434\u0438.
|
|
325
|
+
|
|
326
|
+
ST_GENERIC_503_CANCEL_RETRY=\u0417\u0430 \u0441\u044A\u0436\u0430\u043B\u0435\u043D\u0438\u0435 \u0443\u0441\u043B\u0443\u0433\u0430\u0442\u0430 \u0432\u0441\u0435 \u043E\u0449\u0435 \u043D\u0435 \u0435 \u0434\u043E\u0441\u0442\u044A\u043F\u043D\u0430. \u0418\u0441\u043A\u0430\u0442\u0435 \u043B\u0438 \u0434\u0430 \u043E\u043F\u0438\u0442\u0430\u0442\u0435 \u043E\u0442\u043D\u043E\u0432\u043E \u0438\u043B\u0438 \u0434\u0430 \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u0442\u043E?
|
|
327
|
+
|
|
328
|
+
RETRY=\u041F\u043E\u0432\u0442\u043E\u0440\u0435\u043D \u043E\u043F\u0438\u0442
|
|
329
|
+
|
|
330
|
+
ST_GENERIC_503_RETRY_MSG_SAME_DAY=\u041E\u0447\u0430\u043A\u0432\u0430\u043C\u0435 \u0434\u0430 \u0431\u044A\u0434\u0435 \u0434\u043E\u0441\u0442\u044A\u043F\u043D\u043E \u043E\u0442\u043D\u043E\u0432\u043E \u0432 {0}.
|
|
331
|
+
|
|
332
|
+
ST_GENERIC_503_RETRY_MSG_OTHER_DAY=\u041E\u0447\u0430\u043A\u0432\u0430\u043C\u0435 \u0434\u0430 \u0431\u044A\u0434\u0435 \u0434\u043E\u0441\u0442\u044A\u043F\u043D\u043E \u043E\u0442\u043D\u043E\u0432\u043E \u043D\u0430 {0} \u0432 {1}.
|
|
333
|
+
|
|
334
|
+
ST_GENERIC_503_RETRY_MSG_TIME_UNKNWON=\u041C\u043E\u043B\u044F, \u043E\u043F\u0438\u0442\u0430\u0439\u0442\u0435 \u043F\u043E-\u043A\u044A\u0441\u043D\u043E.
|
|
335
|
+
|
|
336
|
+
ST_GENERIC_503_SOURCE_MESSAGE=\u0418\u0437\u0445\u043E\u0434\u043D\u043E \u0441\u044A\u043E\u0431\u0449\u0435\u043D\u0438\u0435\:
|
|
337
|
+
|
|
@@ -205,6 +205,8 @@ ST_EASY_FILTER_INPUT_PLACEHOLDER=Introdu\u00EFu una consulta en llenguatge natur
|
|
|
205
205
|
ST_EASY_FILTER_GO_BUTTON_TEXT=Anar
|
|
206
206
|
|
|
207
207
|
|
|
208
|
+
ST_AI_EE_BUTTON_LABEL=Generar explicaci\u00F3
|
|
209
|
+
|
|
208
210
|
|
|
209
211
|
|
|
210
212
|
ST_GENERIC_DRAFT_LOCKED_BY_USER=Alt.usuar.han edit.aq.obj.sense desar les mod.\: \n{1} \nSi transferiu l''obj., totes modif.es perdran.
|
|
@@ -314,3 +316,22 @@ DIALOG_TITLE_NEW_ACTION_FOR_CREATE=Crear objecte
|
|
|
314
316
|
|
|
315
317
|
DIALOG_ACTION_BUTTON_NEW_ACTION_FOR_CREATE=Continuar
|
|
316
318
|
|
|
319
|
+
CONTENT_SWITCH=Canvi de contingut
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
ST_GENERIC_503_SERVICE_UNAVAILABLE=Aquest servei no est\u00E0 disponible temporalment.
|
|
323
|
+
|
|
324
|
+
ST_GENERIC_503_AUTO_RETRY_MSG=Es tornar\u00E0 a intentar autom\u00E0ticament d''aqu\u00ED a {0} segons.
|
|
325
|
+
|
|
326
|
+
ST_GENERIC_503_CANCEL_RETRY=Aquest servei encara no est\u00E0 disponible. Voleu tornar a provar-ho o voleu cancel\u00B7lar l'acci\u00F3?
|
|
327
|
+
|
|
328
|
+
RETRY=Tornar a provar-ho
|
|
329
|
+
|
|
330
|
+
ST_GENERIC_503_RETRY_MSG_SAME_DAY=Esperem que estigui disponible a les {0}.
|
|
331
|
+
|
|
332
|
+
ST_GENERIC_503_RETRY_MSG_OTHER_DAY=Esperem que estigui disponible el {0} a les {1}.
|
|
333
|
+
|
|
334
|
+
ST_GENERIC_503_RETRY_MSG_TIME_UNKNWON=Torneu-ho a provar m\u00E9s tard.
|
|
335
|
+
|
|
336
|
+
ST_GENERIC_503_SOURCE_MESSAGE=Missatge d'origen\:
|
|
337
|
+
|
|
@@ -205,6 +205,8 @@ ST_EASY_FILTER_INPUT_PLACEHOLDER=Unesite svoj upit na prirodnom jeziku da biste
|
|
|
205
205
|
ST_EASY_FILTER_GO_BUTTON_TEXT=Idi
|
|
206
206
|
|
|
207
207
|
|
|
208
|
+
ST_AI_EE_BUTTON_LABEL=Generi\u0161i obja\u0161njenje
|
|
209
|
+
|
|
208
210
|
|
|
209
211
|
|
|
210
212
|
ST_GENERIC_DRAFT_LOCKED_BY_USER=Dr.korisnik je uredio ovaj obj.bez snim.prom.\: \n{1} \nAko vi preuzmete, sve prom.\u0107e biti izgubljene.
|
|
@@ -314,3 +316,22 @@ DIALOG_TITLE_NEW_ACTION_FOR_CREATE=Kreiraj objekat
|
|
|
314
316
|
|
|
315
317
|
DIALOG_ACTION_BUTTON_NEW_ACTION_FOR_CREATE=Nastavi
|
|
316
318
|
|
|
319
|
+
CONTENT_SWITCH=Promjena sadr\u017Eaja
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
ST_GENERIC_503_SERVICE_UNAVAILABLE=Na\u017Ealost, ova usluga je privremeno nedostupna.
|
|
323
|
+
|
|
324
|
+
ST_GENERIC_503_AUTO_RETRY_MSG=Automatski ponovni poku\u0161aj za {0} sekunde(i).
|
|
325
|
+
|
|
326
|
+
ST_GENERIC_503_CANCEL_RETRY=Na\u017Ealost, ova usluga je i dalje nedostupna. Da li \u017Eelite da poku\u0161ate ponovo ili da otka\u017Eete radnju?
|
|
327
|
+
|
|
328
|
+
RETRY=Poku\u0161aj ponovo
|
|
329
|
+
|
|
330
|
+
ST_GENERIC_503_RETRY_MSG_SAME_DAY=O\u010Dekujemo da \u0107e biti ponovo dostupno u {0}.
|
|
331
|
+
|
|
332
|
+
ST_GENERIC_503_RETRY_MSG_OTHER_DAY=O\u010Dekujemo da \u0107e biti ponovo dostupno u {0} u {1}.
|
|
333
|
+
|
|
334
|
+
ST_GENERIC_503_RETRY_MSG_TIME_UNKNWON=Poku\u0161ajte ponovo kasnije.
|
|
335
|
+
|
|
336
|
+
ST_GENERIC_503_SOURCE_MESSAGE=Izvorna poruka\:
|
|
337
|
+
|