@sapui5/sap.ui.export 1.124.7 → 1.124.9

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.ui.export",
3
- "version": "1.124.7",
3
+ "version": "1.124.9",
4
4
  "description": "SAPUI5 Library sap.ui.export",
5
5
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
6
6
  "author": "SAP SE (https://www.sap.com)",
@@ -5,7 +5,7 @@
5
5
  <vendor>SAP SE</vendor>
6
6
  <copyright>SAPUI5
7
7
  * (c) Copyright 2009-2024 SAP SE. All rights reserved.</copyright>
8
- <version>1.124.7</version>
8
+ <version>1.124.9</version>
9
9
 
10
10
  <documentation>UI5 library: sap.ui.export</documentation>
11
11
 
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @class The <code>sap.ui.export.ExportBase</code> class allows you to export table data from a UI5 application to certain formats. This class is an abstract class that requires specific implementations for each file format.
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.124.7
30
+ * @version 1.124.9
31
31
  *
32
32
  * @since 1.96
33
33
  * @alias sap.ui.export.ExportBase
@@ -18,7 +18,7 @@ sap.ui.define(['./library', './ExportUtils', './ExportDialog', './util/PDFCapabi
18
18
  * @class The <code>sap.ui.export.ExportHandler</code> class allows you to export table data from an SAPUI5 application.
19
19
  *
20
20
  * @author SAP SE
21
- * @version 1.124.7
21
+ * @version 1.124.9
22
22
  *
23
23
  * @since 1.102
24
24
  * @alias sap.ui.export.ExportHandler
@@ -147,7 +147,7 @@ sap.ui.define([
147
147
  * @class Utilities related to export to enable reuse in integration scenarios (e.g. tables).
148
148
  *
149
149
  * @author SAP SE
150
- * @version 1.124.7
150
+ * @version 1.124.9
151
151
  *
152
152
  * @since 1.59
153
153
  * @alias sap.ui.export.ExportUtils
@@ -1228,7 +1228,7 @@ sap.ui.define([
1228
1228
  *
1229
1229
  * @param {object} oContext Context object
1230
1230
  * @param {string} [oContext.application] Name of the application (default: "SAP UI5")
1231
- * @param {string} [oContext.version] Application version (default: "1.124.7")
1231
+ * @param {string} [oContext.version] Application version (default: "1.124.9")
1232
1232
  * @param {string} [oContext.title] Title that will be written to the file (NOT the filename)
1233
1233
  * @param {string} [oContext.modifiedBy] Optional user context that will be written to the file
1234
1234
  * @param {string} [oContext.sheetName] Name of the data sheet - Maximum length of 31 characters
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @class The <code>sap.ui.export.PortableDocument</code> class allows you to export table data from a UI5 application to a Portable Document Format (*.PDF) file.
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.124.7
27
+ * @version 1.124.9
28
28
  *
29
29
  * @since 1.96
30
30
  * @alias sap.ui.export.PortableDocument
@@ -201,17 +201,32 @@ sap.ui.define([
201
201
  oDocumentDescription["CoverPage"] = [];
202
202
 
203
203
  if (oMetaInfo instanceof Array) {
204
- oMetaInfo.forEach(function(oGroup) {
204
+ oMetaInfo.forEach((oGroup) => {
205
205
  if (iODataVersion === 2) {
206
- const truncateString = (sValue) => {
207
- return sValue.length > 256 ? sValue.substring(0, 253) + '...' : sValue;
208
- };
206
+ let fnTruncateString = (sValue) => sValue;
207
+
208
+ const oMetaModel = this._oModel?.getMetaModel();
209
+ const sEntityTypeName = oMetaModel?.getODataEntitySet("SAP__CoverPageSet")?.entityType;
210
+ const oEntityType = oMetaModel?.getODataEntityType(sEntityTypeName);
211
+
212
+ if (oEntityType) {
213
+ const oProperty = oEntityType.property.find(function(oProperty) {
214
+ return oProperty.name === 'Value';
215
+ });
216
+
217
+ if (oProperty && oProperty.maxLength) {
218
+ var iMaxLength = oProperty.maxLength;
219
+ fnTruncateString = (sValue) => {
220
+ return sValue.length > iMaxLength ? sValue.substring(0, iMaxLength - 3) + '...' : sValue;
221
+ };
222
+ }
223
+ }
209
224
 
210
225
  oGroup.items.forEach(function(oItem) {
211
226
  const oCoverPageGroup = {
212
227
  "Title": oGroup.name,
213
228
  "Name": oItem.key,
214
- "Value": truncateString(oItem.value)
229
+ "Value": fnTruncateString(oItem.value)
215
230
  };
216
231
  oDocumentDescription["CoverPage"].push(oCoverPageGroup);
217
232
  });
@@ -85,7 +85,7 @@ sap.ui.define([
85
85
  * <li><code>workbook.context</code> - Context object that will be applied to the generated file. It may contain the following fields:</li>
86
86
  * <ul>
87
87
  * <li><code>application</code> (string) - The application that creates the XLSX document (default: "SAP UI5")</li>
88
- * <li><code>version</code> (string) - Application version that creates the XLSX document (default: "1.124.7")</li>
88
+ * <li><code>version</code> (string) - Application version that creates the XLSX document (default: "1.124.9")</li>
89
89
  * <li><code>title</code> (string) - Title of the XLSX document (NOT the filename)</li>
90
90
  * <li><code>modifiedBy</code> (string) - User context for the XLSX document</li>
91
91
  * <li><code>sheetName</code> (string) - The label of the data sheet</li>
@@ -169,7 +169,7 @@ sap.ui.define([
169
169
  * columns: aColumns,
170
170
  * context: {
171
171
  * application: 'Debug Test Application',
172
- * version: '1.124.7',
172
+ * version: '1.124.9',
173
173
  * title: 'Some random title',
174
174
  * modifiedBy: 'John Doe',
175
175
  * metaSheetName: 'Custom metadata',
@@ -281,7 +281,7 @@ sap.ui.define([
281
281
  * @class The <code>sap.ui.export.Spreadsheet</code> class allows you to export table data from a UI5 application to a spreadsheet file.
282
282
  *
283
283
  * @author SAP SE
284
- * @version 1.124.7
284
+ * @version 1.124.9
285
285
  *
286
286
  * @since 1.50
287
287
  * @alias sap.ui.export.Spreadsheet
@@ -21,7 +21,7 @@ sap.ui.define(['sap/base/Log', 'sap/ui/export/ExportUtils'], function(Log, Expor
21
21
  * Utility class to perform spreadsheet export.
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.124.7
24
+ * @version 1.124.9
25
25
  *
26
26
  * @alias sap.ui.export.SpreadsheetExport
27
27
  * @private
@@ -15,7 +15,7 @@ sap.ui.define(["sap/ui/core/Lib"], function(Library) {
15
15
  * @namespace
16
16
  * @alias sap.ui.export
17
17
  * @author SAP SE
18
- * @version 1.124.7
18
+ * @version 1.124.9
19
19
  * @public
20
20
  */
21
21
 
@@ -33,7 +33,7 @@ sap.ui.define(["sap/ui/core/Lib"], function(Library) {
33
33
  interfaces: [],
34
34
  controls: [],
35
35
  elements: [],
36
- version: "1.124.7"
36
+ version: "1.124.9"
37
37
  });
38
38
 
39
39
  /**
@@ -24,7 +24,7 @@
24
24
  * @param {object} mSettings Data service related part of the export configuration
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.124.7
27
+ * @version 1.124.9
28
28
  *
29
29
  * @constructor
30
30
  * @class DataProviderBase
@@ -39,6 +39,7 @@
39
39
  this.iAvailableRows = 0;
40
40
  this.mRequest = null;
41
41
  this.iCount = Math.min(mSettings.dataSource.count || DataProviderBase.MAX_ROWS, DataProviderBase.MAX_ROWS);
42
+ this.fnConvertData = DataProviderBase.getDataConverter(this.mSettings);
42
43
 
43
44
  if (this.mSettings.dataSource.downloadLimit) {
44
45
  this.iTotalRows = this.mSettings.dataSource.downloadLimit;
@@ -195,7 +196,6 @@
195
196
  DataProviderBase.prototype.requestData = function(fnProcessCallback) {
196
197
  var mDataSource = this.mSettings.dataSource;
197
198
 
198
- this.fnConvertData = DataProviderBase.getDataConverter(this.mSettings);
199
199
  this.fnProcessCallback = fnProcessCallback;
200
200
 
201
201
  // Execution
@@ -231,7 +231,7 @@
231
231
  * @private
232
232
  */
233
233
  DataProviderBase.prototype.fnOnDataReceived = function(oResult) {
234
- var aData, sNextUrl, iFetchedRows, iRemainingRows;
234
+ var aData, sNextUrl, iFetchedRows, iRemainingRows, bWasServerSidePaging;
235
235
  var mCallbackParams = {};
236
236
  this.oPendingXHR = null;
237
237
  if (this.bCanceled) {
@@ -241,6 +241,7 @@
241
241
  /* Check for OData V4 result, if not present check for OData V2 result or apply default */
242
242
  aData = (oResult && oResult.value || (oResult.d && (oResult.d.results || oResult.d))) || oResult;
243
243
  aData = (Array.isArray(aData)) ? aData : [];
244
+ bWasServerSidePaging = this.mRequest?.dataUrl.includes("$skiptoken");
244
245
  iFetchedRows = aData.length;
245
246
 
246
247
  this.iAvailableRows += iFetchedRows;
@@ -250,7 +251,7 @@
250
251
 
251
252
  iRemainingRows = this.iTotalRows - this.iAvailableRows;
252
253
 
253
- mCallbackParams.finished = this._isFinished(iFetchedRows, sNextUrl, iRemainingRows);
254
+ mCallbackParams.finished = this._isFinished(iFetchedRows, sNextUrl, iRemainingRows, bWasServerSidePaging);
254
255
  mCallbackParams.progress = this.iTotalRows;
255
256
  mCallbackParams.total = this.iTotalRows < this.iCount ? this.iTotalRows : this.iCount;
256
257
  mCallbackParams.fetched = this.iAvailableRows;
@@ -275,17 +276,36 @@
275
276
  * The function returns array of columns that need special conversion for values.
276
277
  * E.g. handling data from association/navigationProperty
277
278
  *
278
- * @param {number} iFetchedRows - Number of rows fetched
279
- * @param {string} sNextUrl - Next url to fetch data
280
- * @param {number} iRemainingRows - Remaining rows to fetch
281
- * @returns {boolean} - True if the finish condition is met
279
+ * @param {number} iFetchedRows Number of rows fetched
280
+ * @param {string} sNextUrl Next url to fetch data
281
+ * @param {number} iRemainingRows Remaining rows to fetch
282
+ * @param {boolean} bWasServerSidePaging Flag if server side paging was used
282
283
  *
283
- * @static
284
+ * @returns {boolean} True if the finish condition is met
284
285
  * @private
285
286
  */
286
- DataProviderBase.prototype._isFinished = function(iFetchedRows, sNextUrl, iRemainingRows) {
287
- const bFetchedRows = !sNextUrl && ((iFetchedRows < this.iBatchSize) || iFetchedRows > this.iBatchSize);
288
- return iFetchedRows === 0 || iRemainingRows <= 0 || bFetchedRows;
287
+ DataProviderBase.prototype._isFinished = function(iFetchedRows, sNextUrl, iRemainingRows, bWasServerSidePaging) {
288
+ if (iFetchedRows === 0 || iRemainingRows <= 0) {
289
+ return true;
290
+ }
291
+
292
+ if (sNextUrl) {
293
+ return false;
294
+ }
295
+
296
+ if (iFetchedRows > this.iBatchSize) {
297
+ return true;
298
+ }
299
+
300
+ if (iFetchedRows < this.iBatchSize && bWasServerSidePaging) {
301
+ return false;
302
+ }
303
+
304
+ if (iFetchedRows === this.iBatchSize) {
305
+ return false;
306
+ }
307
+
308
+ return true;
289
309
  };
290
310
 
291
311
  /**
@@ -20,7 +20,7 @@ sap.ui.define(['sap/ui/base/Object'], function(BaseObject) {
20
20
  * convenience functions like <code>sap.ui.export.util.Filter#setType</code> to improve the result.
21
21
  *
22
22
  * @author SAP SE
23
- * @version 1.124.7
23
+ * @version 1.124.9
24
24
  *
25
25
  * @since 1.110
26
26
  * @alias sap.ui.export.util.Filter