@sapui5/sap.ui.export 1.136.2 → 1.138.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/package.json +1 -1
- package/src/sap/ui/export/.library +1 -1
- package/src/sap/ui/export/ExportBase.js +1 -1
- package/src/sap/ui/export/ExportHandler.js +1 -1
- package/src/sap/ui/export/ExportUtils.js +26 -10
- package/src/sap/ui/export/PortableDocument.js +1 -1
- package/src/sap/ui/export/Spreadsheet.js +55 -157
- package/src/sap/ui/export/SpreadsheetExport.js +1 -1
- package/src/sap/ui/export/fragments/SettingsDialog.fragment.xml +2 -3
- package/src/sap/ui/export/library.js +70 -2
- package/src/sap/ui/export/provider/DataProviderBase.js +1 -1
- package/src/sap/ui/export/util/Filter.js +1 -1
package/package.json
CHANGED
|
@@ -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.
|
|
30
|
+
* @version 1.138.0
|
|
31
31
|
*
|
|
32
32
|
* @since 1.96
|
|
33
33
|
* @alias sap.ui.export.ExportBase
|
|
@@ -28,7 +28,7 @@ sap.ui.define([
|
|
|
28
28
|
* @class The <code>sap.ui.export.ExportHandler</code> class allows you to export table data from an SAPUI5 application.
|
|
29
29
|
*
|
|
30
30
|
* @author SAP SE
|
|
31
|
-
* @version 1.
|
|
31
|
+
* @version 1.138.0
|
|
32
32
|
*
|
|
33
33
|
* @since 1.102
|
|
34
34
|
* @alias sap.ui.export.ExportHandler
|
|
@@ -144,7 +144,7 @@ sap.ui.define([
|
|
|
144
144
|
* @class Utilities related to export to enable reuse in integration scenarios (e.g. tables).
|
|
145
145
|
*
|
|
146
146
|
* @author SAP SE
|
|
147
|
-
* @version 1.
|
|
147
|
+
* @version 1.138.0
|
|
148
148
|
*
|
|
149
149
|
* @since 1.59
|
|
150
150
|
* @alias sap.ui.export.ExportUtils
|
|
@@ -295,6 +295,9 @@ sap.ui.define([
|
|
|
295
295
|
name: "sap.ui.export.fragments.SettingsDialog",
|
|
296
296
|
type: "XML",
|
|
297
297
|
controller: {
|
|
298
|
+
isSupported: function(sFileType, bFeatureEnabled) {
|
|
299
|
+
return sFileType !== FileType.PDF || bFeatureEnabled;
|
|
300
|
+
},
|
|
298
301
|
isPDF: function(sValue, bFeatureEnabled) {
|
|
299
302
|
return sValue === FileType.PDF && bFeatureEnabled !== false;
|
|
300
303
|
},
|
|
@@ -350,9 +353,12 @@ sap.ui.define([
|
|
|
350
353
|
return;
|
|
351
354
|
}
|
|
352
355
|
|
|
353
|
-
|
|
356
|
+
const sKey = oSelectedItem.getKey();
|
|
357
|
+
switch (sKey) {
|
|
354
358
|
case FileType.PDF:
|
|
355
|
-
|
|
359
|
+
if (!oExportCapabilities?.PDF?.CoverPage) {
|
|
360
|
+
oExportConfigModel.setProperty("/includeFilterSettings", false);
|
|
361
|
+
}
|
|
356
362
|
fnSetSemanticStepName(oExportConfigModel, oExportSettingsDialog.getBeginButton());
|
|
357
363
|
break;
|
|
358
364
|
case FileType.GSHEET:
|
|
@@ -364,6 +370,7 @@ sap.ui.define([
|
|
|
364
370
|
Element.getElementById("exportSettingsDialog-signatureReasonLabel").setVisible(false);
|
|
365
371
|
fnSetSemanticStepName(oExportConfigModel, oExportSettingsDialog.getBeginButton());
|
|
366
372
|
}
|
|
373
|
+
oExportConfigModel.setProperty("/fileType", sKey);
|
|
367
374
|
},
|
|
368
375
|
onDestinationChange: function (oEvent) {
|
|
369
376
|
if (!oEvent.getParameter("selectedItem")) {
|
|
@@ -1208,7 +1215,7 @@ sap.ui.define([
|
|
|
1208
1215
|
*
|
|
1209
1216
|
* @param {object} oContext Context object
|
|
1210
1217
|
* @param {string} [oContext.application] Name of the application (default: "SAP UI5")
|
|
1211
|
-
* @param {string} [oContext.version] Application version (default: "1.
|
|
1218
|
+
* @param {string} [oContext.version] Application version (default: "1.138.0")
|
|
1212
1219
|
* @param {string} [oContext.title] Title that will be written to the file (NOT the filename)
|
|
1213
1220
|
* @param {string} [oContext.modifiedBy] Optional user context that will be written to the file
|
|
1214
1221
|
* @param {string} [oContext.sheetName] Name of the data sheet - Maximum length of 31 characters
|
|
@@ -1561,23 +1568,32 @@ sap.ui.define([
|
|
|
1561
1568
|
|
|
1562
1569
|
/**
|
|
1563
1570
|
* Provides Office Open XML compliant default format settings
|
|
1564
|
-
* based on the UI5
|
|
1571
|
+
* based on the UI5 LocaleData facade.
|
|
1565
1572
|
*
|
|
1573
|
+
* @param {"full"|"long"|"medium"|"short"} [sDateStyle="short"] Date style to be used for the date pattern
|
|
1574
|
+
* @param {"full"|"long"|"medium"|"short"} [sTimeStyle="medium"] Time style to be used for the time pattern
|
|
1566
1575
|
* @returns {Object} Format settings
|
|
1567
1576
|
*
|
|
1568
1577
|
* @static
|
|
1569
1578
|
* @private
|
|
1570
1579
|
*/
|
|
1571
|
-
getFormatSettings: function() {
|
|
1580
|
+
getFormatSettings: function(sDateStyle = "short", sTimeStyle = "medium") {
|
|
1581
|
+
const aValidStyles = ["full", "long", "medium", "short"];
|
|
1582
|
+
if (aValidStyles.includes(sDateStyle) === false || aValidStyles.includes(sTimeStyle) === false) {
|
|
1583
|
+
throw new Error(`Invalid date or time style provided. Valid styles are: ${aValidStyles.join(", ")}`);
|
|
1584
|
+
}
|
|
1585
|
+
|
|
1572
1586
|
if (!oDefaultFormatSettings) {
|
|
1573
1587
|
const oSettings = {};
|
|
1588
|
+
const oLocale = new Locale(Localization.getLanguageTag());
|
|
1589
|
+
const oLocaleData = LocaleData.getInstance(oLocale);
|
|
1574
1590
|
|
|
1575
1591
|
/*
|
|
1576
1592
|
* Load default format settings from UI5 Formatting facade
|
|
1577
1593
|
*/
|
|
1578
1594
|
oSettings.calendar = Formatting.getCalendarType();
|
|
1579
|
-
oSettings.datePattern =
|
|
1580
|
-
oSettings.timePattern =
|
|
1595
|
+
oSettings.datePattern = oLocaleData.getDatePattern(sDateStyle, oSettings.calendar);
|
|
1596
|
+
oSettings.timePattern = oLocaleData.getTimePattern(sTimeStyle, oSettings.calendar);
|
|
1581
1597
|
oSettings.delimiter = !!Formatting.getNumberSymbol("group");
|
|
1582
1598
|
|
|
1583
1599
|
/* Post processing: lower case, pattern specific replacement */
|
|
@@ -1590,11 +1606,11 @@ sap.ui.define([
|
|
|
1590
1606
|
* https://unicode.org/reports/tr35/tr35-dates.html#dfst-period
|
|
1591
1607
|
*/
|
|
1592
1608
|
if (typeof oSettings.timePattern === "string") {
|
|
1593
|
-
oSettings.timePattern = oSettings.timePattern.toLowerCase().replace(
|
|
1609
|
+
oSettings.timePattern = oSettings.timePattern.toLowerCase().replace(/\Wa/, " AM/PM");
|
|
1594
1610
|
}
|
|
1595
1611
|
|
|
1596
1612
|
if (oSettings.datePattern && oSettings.timePattern) {
|
|
1597
|
-
oSettings.dateTimePattern =
|
|
1613
|
+
oSettings.dateTimePattern = oLocaleData.getCombinedDateTimePattern(sDateStyle, sTimeStyle, oSettings.calendar).toLowerCase().replace(/\Wa/, " AM/PM");
|
|
1598
1614
|
}
|
|
1599
1615
|
|
|
1600
1616
|
oDefaultFormatSettings = oSettings;
|
|
@@ -28,7 +28,7 @@ sap.ui.define([
|
|
|
28
28
|
* @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.
|
|
29
29
|
*
|
|
30
30
|
* @author SAP SE
|
|
31
|
-
* @version 1.
|
|
31
|
+
* @version 1.138.0
|
|
32
32
|
*
|
|
33
33
|
* @since 1.96
|
|
34
34
|
* @alias sap.ui.export.PortableDocument
|
|
@@ -4,22 +4,23 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
sap.ui.define([
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
"sap/base/i18n/
|
|
14
|
-
|
|
7
|
+
"./library",
|
|
8
|
+
"./ExportBase",
|
|
9
|
+
"./ExportDialog",
|
|
10
|
+
"./ExportUtils",
|
|
11
|
+
"./SpreadsheetExport",
|
|
12
|
+
"sap/base/Log",
|
|
13
|
+
"sap/base/i18n/Localization",
|
|
14
|
+
"sap/ui/Device",
|
|
15
|
+
"sap/ui/core/LocaleData"
|
|
15
16
|
],
|
|
16
|
-
function(Library, ExportBase, ExportDialog, ExportUtils, SpreadsheetExport, Log,
|
|
17
|
-
|
|
17
|
+
function(Library, ExportBase, ExportDialog, ExportUtils, SpreadsheetExport, Log, Localization, Device, LocaleData) {
|
|
18
|
+
"use strict";
|
|
18
19
|
|
|
19
20
|
// eslint-disable-next-line
|
|
20
21
|
/* global Blob */
|
|
21
22
|
|
|
22
|
-
const CLASS_NAME =
|
|
23
|
+
const CLASS_NAME = "sap.ui.export.Spreadsheet";
|
|
23
24
|
const Status = Library.Status;
|
|
24
25
|
|
|
25
26
|
/**
|
|
@@ -45,85 +46,6 @@ sap.ui.define([
|
|
|
45
46
|
* <li>Configure the exported file name.</li>
|
|
46
47
|
* </ul>
|
|
47
48
|
*
|
|
48
|
-
*
|
|
49
|
-
* <h3>Export settings object</h3>
|
|
50
|
-
* Export settings should be provided in the constructor as an <code>mSettings</code> property map with the following fields:
|
|
51
|
-
* <ul>
|
|
52
|
-
* <li><code>workbook</code> - Spreadsheet properties object
|
|
53
|
-
* <ul>
|
|
54
|
-
* <li><code>workbook.columns</code> - Array of column configurations. Each column configuration is an object with the following fields:
|
|
55
|
-
* <ul>
|
|
56
|
-
* <li><code>label</code> (string) - Column header text</li>
|
|
57
|
-
* <li><code>property</code> (string) - Field name or Array of field names in the data source feed</li>
|
|
58
|
-
* <li><code>type</code> (string) - Optional data type of the field. See {@link sap.ui.export.EdmType} for the list of supported types.
|
|
59
|
-
* If this property is omitted, the property is processed as a string field.</li>
|
|
60
|
-
* <li><code>width</code> (number) - Optional width of the column in characters. There is no 1:1 correspondence between
|
|
61
|
-
* character widths in the exported spreadsheet and CSS units.The width of one character
|
|
62
|
-
* is approximately 0.5em in CSS units, depending on the fonts that are
|
|
63
|
-
* used in the table and in the resulting spreadsheet. The default value is 10 characters.</li>
|
|
64
|
-
* <li><code>textAlign</code> (string) - Horizontal alignment of cell contents. The following values of the CSS <code>text-align</code>
|
|
65
|
-
* property are accepted: <code>[left, right, center, begin, end]</code>. If not specified, the columns are
|
|
66
|
-
* horizontally aligned based on the property type.</li>
|
|
67
|
-
* <li><code>scale</code> (number) - Number of digits after decimal point for numeric values</li>
|
|
68
|
-
* <li><code>autoScale</code> (boolean) - Allows automatic scale assignment based on unit of measure</li>
|
|
69
|
-
* <li><code>delimiter</code> (boolean) - Set to <code>true</code> to display thousands separators in numeric values.
|
|
70
|
-
* The default value is <code>false</code>.</li>
|
|
71
|
-
* <li><code>unit</code> (string) - Text to display as the unit of measurement or currency next to the numeric value.
|
|
72
|
-
* It is treated as a string and has no influence on the value itself. For example, a value of 150 with the unit "%" is still 150
|
|
73
|
-
* and not 1.5, as a user may expect.</li>
|
|
74
|
-
* <li><code>unitProperty</code> (string) - Name of the data source field that contains the unit/currency text</li>
|
|
75
|
-
* <li><code>displayUnit</code> (boolean) - The property applies to currency values only and defines if the currency is shown in the column.
|
|
76
|
-
* The default value is <code>true</code>.</li>
|
|
77
|
-
* <li><code>trueValue</code> (string) - Textual representation of a boolean type that has the value <code>true</code></li>
|
|
78
|
-
* <li><code>falseValue</code> (string) - Textual representation of a boolean type that has the value <code>false</code></li>
|
|
79
|
-
* <li><code>template</code> (string) - Formatting template that supports indexed placeholders within curly brackets</li>
|
|
80
|
-
* <li><code>format</code> (string) - Output format for columns of type Date/DateTime/Time</li>
|
|
81
|
-
* <li><code>inputFormat</code> (string) - Formatting template for string formatted dates</li>
|
|
82
|
-
* <li><code>utc</code> (boolean) - Defines whether the <code>DateTime</code> is displayed as UTC or local time</li>
|
|
83
|
-
* <li><code>timezone</code> (string) - Defines a fixed IANA time zone</li>
|
|
84
|
-
* <li><code>timezoneProperty</code> (string) - References an OData property that contains the specific IANA time zone</li>
|
|
85
|
-
* <li><code>displayTimezone</code> (boolean) - Defines whether the IANA time zone is displayed within a cell</li>
|
|
86
|
-
* <li><code>valueMap</code> (string) - Mapping object or Map containing the values that should be mapped to a particular key</li>
|
|
87
|
-
* <li><code>wrap</code> (boolean) - Indicates if wrapping is enabled for this particular column</li>
|
|
88
|
-
* </ul>
|
|
89
|
-
* </li>
|
|
90
|
-
* <li><code>workbook.context</code> - Context object that will be applied to the generated file. It may contain the following fields:</li>
|
|
91
|
-
* <ul>
|
|
92
|
-
* <li><code>application</code> (string) - The application that creates the XLSX document (default: "SAP UI5")</li>
|
|
93
|
-
* <li><code>version</code> (string) - Application version that creates the XLSX document (default: "1.136.2")</li>
|
|
94
|
-
* <li><code>title</code> (string) - Title of the XLSX document (NOT the filename)</li>
|
|
95
|
-
* <li><code>modifiedBy</code> (string) - User context for the XLSX document</li>
|
|
96
|
-
* <li><code>sheetName</code> (string) - The label of the data sheet</li>
|
|
97
|
-
* <li><code>metaSheetName</code> (string) - The label of the metadata sheet. The sheet will not be shown unless metadata entries are provided</li>
|
|
98
|
-
* <li><code>metainfo</code> (Array) - An Array of metadata groups. Each group has a name property and an items Array which contains key/value pairs</li>
|
|
99
|
-
* </ul>
|
|
100
|
-
* <li><code>workbook.hierarchyLevel</code> - Name of the property that contains the hierarchy level information of each line item</li>
|
|
101
|
-
* </ul>
|
|
102
|
-
* <li><code>dataSource</code> - Source of spreadsheet data. It can be a JSON array with row data,
|
|
103
|
-
* an URL or an OData properties object with the following fields:
|
|
104
|
-
* <ul>
|
|
105
|
-
* <li><code>type</code> (string) - Type of the data source. Currently, only OData is supported and the value have to be set to <code>"odata"</code>.</li>
|
|
106
|
-
* <li><code>dataUrl</code> (string) - URL to table data on the server, including all select, filter, and search query parameters</li>
|
|
107
|
-
* <li><code>serviceUrl</code> (string) - URL to the OData service. The parameter is required for OData batch requests.</li>
|
|
108
|
-
* <li><code>count</code> (number) - Count of available records on the server</li>
|
|
109
|
-
* <li><code>useBatch</code> (boolean) - Set to <code>true</code> if OData batch requests are used to fetch the spreadsheet data.
|
|
110
|
-
* In this case, <code>serviceUrl</code> and <code>headers</code> have to be specified, too.</li>
|
|
111
|
-
* <li><code>headers</code> (object) - Map of HTTP request header properties. They should correspond to the HTTP request headers that are
|
|
112
|
-
* used to obtain table data for display in the browser.</li>
|
|
113
|
-
* <li><code>sizeLimit</code> (number) - Maximum allowed number of records that can be obtained from the service in a single request</li>
|
|
114
|
-
* <li><code>downloadLimit</code> (number) - Maximum allowed number of rows that can be exported. If not specified, all rows are exported.</li>
|
|
115
|
-
* </ul>
|
|
116
|
-
* </li>
|
|
117
|
-
* <li><code>count</code> (number) - The maximal number of records to export. If not specified, all data from the data source is fetched.</li>
|
|
118
|
-
* <li><code>worker</code> (boolean) - Run export process in a worker thread. Set to <code>false</code> to disable worker and run export
|
|
119
|
-
* in a main thread. This is needed, for example, if a mock server is used to provide spreadsheet data.<br>
|
|
120
|
-
* <b>Note:</b> In case of a strict content security policy, it is not always possible to create an export worker.
|
|
121
|
-
* In this case, export runs in a main thread disregarding the <code>worker</code> value.</li>
|
|
122
|
-
* <li><code>fileName</code> (string) - Optional file name for the exported file. If not specified, the spreadsheet is exported as <code>export.xlsx</code>.</li>
|
|
123
|
-
* <li><code>showProgress</code> (boolean) - Set to <code>false</code> to suppress the progress dialog</li>
|
|
124
|
-
* </ul>
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
49
|
* <h3>Usage</h3>
|
|
128
50
|
* To start export, create a new <code>sap.ui.export.Spreadsheet</code> object and call the <code>build</code> method.
|
|
129
51
|
* Column configuration, data source, and export settings must be provided in the constructor.
|
|
@@ -174,7 +96,7 @@ sap.ui.define([
|
|
|
174
96
|
* columns: aColumns,
|
|
175
97
|
* context: {
|
|
176
98
|
* application: 'Debug Test Application',
|
|
177
|
-
* version: '1.
|
|
99
|
+
* version: '1.138.0',
|
|
178
100
|
* title: 'Some random title',
|
|
179
101
|
* modifiedBy: 'John Doe',
|
|
180
102
|
* metaSheetName: 'Custom metadata',
|
|
@@ -256,37 +178,12 @@ sap.ui.define([
|
|
|
256
178
|
* object are limited to 31 characters each. If their value exceeds
|
|
257
179
|
* this maximum length, the value will be truncated.
|
|
258
180
|
*
|
|
259
|
-
* @param {
|
|
260
|
-
* @param {object} mSettings.workbook - Spreadsheet properties
|
|
261
|
-
* @param {Array} mSettings.workbook.columns - Column configuration
|
|
262
|
-
* @param {object} [mSettings.workbook.context] - Export context that will be applied to the exported file
|
|
263
|
-
* @param {string} [mSettings.workbook.context.application] - Application that created this XLSX
|
|
264
|
-
* @param {string} [mSettings.workbook.context.version] - Application version that was used to create this XLSX
|
|
265
|
-
* @param {string} [mSettings.workbook.context.title] - Title of the XLSX document (NOT the file name)
|
|
266
|
-
* @param {string} [mSettings.workbook.context.modifiedBy] - User context for the exported document
|
|
267
|
-
* @param {string} [mSettings.workbook.context.sheetName] - The name of the data sheet that will be shown in Excel
|
|
268
|
-
* @param {string} [mSettings.workbook.context.metaSheetName] - The name of the metadata sheet that will be shown in Excel
|
|
269
|
-
* @param {Array} [mSettings.workbook.context.metainfo] - Optional Metadata that will be displayed in the additional Metadata Sheet
|
|
270
|
-
* @param {string} [mSettings.workbook.hierarchyLevel] - Optional name of the property that contains hierarchy level information
|
|
271
|
-
* @param {string | Object | Array | sap.ui.model.ListBinding | sap.ui.model.TreeBinding} mSettings.dataSource - Source of spreadsheet data.
|
|
272
|
-
* A JSON array, data source properties map, <code>sap.ui.model.ListBinding</code>, <code>sap.ui.model.TreeBinding</code> or
|
|
273
|
-
* URL to an OData source can be provided. For example, <code>"someUrl"</code> is an equivalent to
|
|
274
|
-
* <code>{dataUrl:"someUrl", type:"OData"}</code>. An instance of <code>sap.ui.model.ListBinding</code> or
|
|
275
|
-
* <code>sap.ui.model.TreeBinding</code> either has to implement a <code>#getDownloadUrl</code> function or needs to be a ClientListBinding.
|
|
276
|
-
* <b>Note:</b> <code>sap.ui.model.ClientTreeBinding</code> is not supported.
|
|
277
|
-
* @param {int} mSettings.dataSource.sizeLimit - Maximal allowed number of records that can be obtained from the service in a single request
|
|
278
|
-
* @param {int} [mSettings.count] - The maximal number of records to export
|
|
279
|
-
* @param {boolean} [mSettings.worker=true] - Run export process in a worker thread. Set to <code>false</code> to disable worker and run export
|
|
280
|
-
* in a main thread. This is needed, for example, if a mock server is used to provide spreadsheet data.<br>
|
|
281
|
-
* <b>Note:</b> In case of a strict content security policy, it is not always possible to create an export worker.
|
|
282
|
-
* In this case, export runs in a main thread disregarding the <code>worker</code> value.
|
|
283
|
-
* @param {string} [mSettings.fileName="export.xlsx"] - Optional file name for the exported file
|
|
284
|
-
* @param {boolean} [mSettings.showProgress=true] - Set to <code>false</code> to suppress the progress dialog
|
|
181
|
+
* @param {sap.ui.export.SpreadsheetSettings} mSettings - Export settings
|
|
285
182
|
*
|
|
286
183
|
* @class The <code>sap.ui.export.Spreadsheet</code> class allows you to export table data from a UI5 application to a spreadsheet file.
|
|
287
184
|
*
|
|
288
185
|
* @author SAP SE
|
|
289
|
-
* @version 1.
|
|
186
|
+
* @version 1.138.0
|
|
290
187
|
*
|
|
291
188
|
* @since 1.50
|
|
292
189
|
* @alias sap.ui.export.Spreadsheet
|
|
@@ -306,8 +203,8 @@ sap.ui.define([
|
|
|
306
203
|
|
|
307
204
|
/* Only apply supported properties */
|
|
308
205
|
// IMPORTANT: keep count before dataSource to ensure that the expected count can be used for dataSource string
|
|
309
|
-
[
|
|
310
|
-
if (typeof mSettings[sProperty] !==
|
|
206
|
+
["showProgress", "worker"].forEach(function(sProperty) {
|
|
207
|
+
if (typeof mSettings[sProperty] !== "undefined") {
|
|
311
208
|
this._mSettings[sProperty] = mSettings[sProperty];
|
|
312
209
|
}
|
|
313
210
|
}.bind(this));
|
|
@@ -321,8 +218,8 @@ sap.ui.define([
|
|
|
321
218
|
mCurrencies[sCurrencyCode] = {};
|
|
322
219
|
}
|
|
323
220
|
|
|
324
|
-
if (!isNaN(oCurrency
|
|
325
|
-
mCurrencies[sCurrencyCode].scale = oCurrency
|
|
221
|
+
if (!isNaN(oCurrency)) {
|
|
222
|
+
mCurrencies[sCurrencyCode].scale = oCurrency;
|
|
326
223
|
}
|
|
327
224
|
|
|
328
225
|
if (!isNaN(oCurrency.UnitSpecificScale)) {
|
|
@@ -359,21 +256,22 @@ sap.ui.define([
|
|
|
359
256
|
oWorkbookContext = mParameters.workbook.context = {};
|
|
360
257
|
}
|
|
361
258
|
if (!oWorkbookContext.title) {
|
|
362
|
-
oWorkbookContext.title = oResourceBundle.getText(
|
|
259
|
+
oWorkbookContext.title = oResourceBundle.getText("XLSX_DEFAULT_TITLE");
|
|
363
260
|
}
|
|
364
261
|
if (!oWorkbookContext.sheetName) {
|
|
365
|
-
oWorkbookContext.sheetName = oResourceBundle.getText(
|
|
262
|
+
oWorkbookContext.sheetName = oResourceBundle.getText("XLSX_DEFAULT_SHEETNAME");
|
|
366
263
|
}
|
|
367
264
|
|
|
368
265
|
/* Initialize currency customizing for currencies and units of measure */
|
|
369
266
|
const mCurrencySettings = mParameters.customizing.currency = {};
|
|
370
267
|
const mUnitSettings = mParameters.customizing.unit = {};
|
|
371
|
-
const
|
|
268
|
+
const oLocaleData = LocaleData.getInstance(Localization.getLanguageTag());
|
|
269
|
+
const oLocaleDataCurrencies = oLocaleData.getAllCurrencyDigits();
|
|
372
270
|
|
|
373
271
|
/* Attach custom currency configuration */
|
|
374
|
-
if (
|
|
375
|
-
for (const sCurrencyCode in
|
|
376
|
-
addUnit(sCurrencyCode,
|
|
272
|
+
if (oLocaleDataCurrencies) {
|
|
273
|
+
for (const sCurrencyCode in oLocaleDataCurrencies) {
|
|
274
|
+
addUnit(sCurrencyCode, oLocaleDataCurrencies[sCurrencyCode], mCurrencySettings);
|
|
377
275
|
}
|
|
378
276
|
}
|
|
379
277
|
|
|
@@ -401,7 +299,7 @@ sap.ui.define([
|
|
|
401
299
|
* @private
|
|
402
300
|
*/
|
|
403
301
|
Spreadsheet.requestCodeLists = function(oMetaModel) {
|
|
404
|
-
if (!oMetaModel.isA([
|
|
302
|
+
if (!oMetaModel.isA(["sap.ui.model.odata.ODataMetaModel", "sap.ui.model.odata.v4.ODataMetaModel"])) {
|
|
405
303
|
return Promise.resolve([null, null]);
|
|
406
304
|
}
|
|
407
305
|
|
|
@@ -409,7 +307,7 @@ sap.ui.define([
|
|
|
409
307
|
oMetaModel.requestCurrencyCodes(),
|
|
410
308
|
oMetaModel.requestUnitsOfMeasure()
|
|
411
309
|
]).catch(function(oError) {
|
|
412
|
-
Log.warning(CLASS_NAME +
|
|
310
|
+
Log.warning(CLASS_NAME + ": Code lists cannot be processed due to the following error - " + oError);
|
|
413
311
|
return Promise.resolve([null, null]);
|
|
414
312
|
});
|
|
415
313
|
};
|
|
@@ -449,7 +347,7 @@ sap.ui.define([
|
|
|
449
347
|
* @public
|
|
450
348
|
*/
|
|
451
349
|
Spreadsheet.prototype.attachBeforeSave = function(oData, fnHandler, oListener) {
|
|
452
|
-
return this.attachEvent(
|
|
350
|
+
return this.attachEvent("beforeSave", oData, fnHandler, oListener);
|
|
453
351
|
};
|
|
454
352
|
|
|
455
353
|
/**
|
|
@@ -465,7 +363,7 @@ sap.ui.define([
|
|
|
465
363
|
* @public
|
|
466
364
|
*/
|
|
467
365
|
Spreadsheet.prototype.detachBeforeSave = function(fnHandler, oListener) {
|
|
468
|
-
return this.detachEvent(
|
|
366
|
+
return this.detachEvent("beforeSave", fnHandler, oListener);
|
|
469
367
|
};
|
|
470
368
|
|
|
471
369
|
/**
|
|
@@ -494,7 +392,7 @@ sap.ui.define([
|
|
|
494
392
|
* @public
|
|
495
393
|
*/
|
|
496
394
|
Spreadsheet.prototype.getMimeType = function() {
|
|
497
|
-
return
|
|
395
|
+
return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
498
396
|
};
|
|
499
397
|
|
|
500
398
|
/**
|
|
@@ -511,7 +409,7 @@ sap.ui.define([
|
|
|
511
409
|
}
|
|
512
410
|
|
|
513
411
|
const iProgress = Math.round(iFetched / iTotal * 100);
|
|
514
|
-
Log.debug(
|
|
412
|
+
Log.debug(`Spreadsheet export: ${iProgress}% loaded.`);
|
|
515
413
|
};
|
|
516
414
|
|
|
517
415
|
/**
|
|
@@ -532,7 +430,7 @@ sap.ui.define([
|
|
|
532
430
|
/**
|
|
533
431
|
* If <code>ClientListBinding</code>, we use the binding path to receive the data from the underlying model
|
|
534
432
|
*/
|
|
535
|
-
if (oBinding.isA(
|
|
433
|
+
if (oBinding.isA("sap.ui.model.ClientListBinding")) {
|
|
536
434
|
const aData = [];
|
|
537
435
|
|
|
538
436
|
oBinding.getAllCurrentContexts().forEach(function(oContext) {
|
|
@@ -541,30 +439,30 @@ sap.ui.define([
|
|
|
541
439
|
|
|
542
440
|
oDataSource = {
|
|
543
441
|
data: aData,
|
|
544
|
-
type:
|
|
442
|
+
type: "array"
|
|
545
443
|
};
|
|
546
444
|
}
|
|
547
445
|
|
|
548
|
-
if (oBinding.isA(
|
|
549
|
-
Log.error(
|
|
446
|
+
if (oBinding.isA("sap.ui.model.ClientTreeBinding")) {
|
|
447
|
+
Log.error("Unable to create dataSource configuration due to not supported Binding: " + oBinding.getMetadata().getName());
|
|
550
448
|
}
|
|
551
449
|
|
|
552
450
|
/**
|
|
553
451
|
* All other <code>Bindings</code> need to provide a downloadUrl
|
|
554
452
|
*/
|
|
555
|
-
if (typeof oBinding.getDownloadUrl ===
|
|
453
|
+
if (typeof oBinding.getDownloadUrl === "function") {
|
|
556
454
|
const oModel = oBinding.getModel();
|
|
557
|
-
const bV4ODataModel = oModel.isA(
|
|
558
|
-
let sDataUrl = oBinding.getDownloadUrl(
|
|
455
|
+
const bV4ODataModel = oModel.isA("sap.ui.model.odata.v4.ODataModel");
|
|
456
|
+
let sDataUrl = oBinding.getDownloadUrl("json");
|
|
559
457
|
let sServiceUrl = oModel.sServiceUrl;
|
|
560
458
|
|
|
561
459
|
sDataUrl = ExportUtils.interceptUrl(sDataUrl);
|
|
562
460
|
sServiceUrl = ExportUtils.interceptUrl(sServiceUrl);
|
|
563
461
|
|
|
564
|
-
const bIgnoreCount = sDataUrl.split(/[?&]/g).some((sQuery) => sQuery?.includes(
|
|
462
|
+
const bIgnoreCount = sDataUrl.split(/[?&]/g).some((sQuery) => sQuery?.includes("$apply") && sQuery?.includes("com.sap.vocabularies.Hierarchy.v1.TopLevels"));
|
|
565
463
|
|
|
566
464
|
oDataSource = {
|
|
567
|
-
type:
|
|
465
|
+
type: "odata",
|
|
568
466
|
dataUrl: sDataUrl,
|
|
569
467
|
serviceUrl: sServiceUrl,
|
|
570
468
|
headers: bV4ODataModel ? oModel.getHttpHeaders(true) : oModel.getHeaders(),
|
|
@@ -575,8 +473,8 @@ sap.ui.define([
|
|
|
575
473
|
|
|
576
474
|
/* Obtain CodeLists from ODataMetaModel */
|
|
577
475
|
if (oModel.getMetaModel()
|
|
578
|
-
&& typeof oModel.getMetaModel().requestCurrencyCodes ===
|
|
579
|
-
&& typeof oModel.getMetaModel().requestUnitsOfMeasure ===
|
|
476
|
+
&& typeof oModel.getMetaModel().requestCurrencyCodes === "function"
|
|
477
|
+
&& typeof oModel.getMetaModel().requestUnitsOfMeasure === "function") {
|
|
580
478
|
|
|
581
479
|
this.codeListsPromise = Spreadsheet.requestCodeLists(oModel.getMetaModel(), this._mSettings);
|
|
582
480
|
}
|
|
@@ -605,30 +503,30 @@ sap.ui.define([
|
|
|
605
503
|
return null;
|
|
606
504
|
}
|
|
607
505
|
|
|
608
|
-
if (sDataSourceType ==
|
|
506
|
+
if (sDataSourceType == "string") {
|
|
609
507
|
return {
|
|
610
508
|
count: this._mSettings.count,
|
|
611
509
|
dataUrl: oDataSource,
|
|
612
|
-
type:
|
|
510
|
+
type: "odata",
|
|
613
511
|
useBatch: false
|
|
614
512
|
};
|
|
615
513
|
}
|
|
616
514
|
|
|
617
|
-
if (sDataSourceType !=
|
|
618
|
-
Log.error(
|
|
515
|
+
if (sDataSourceType != "object") {
|
|
516
|
+
Log.error("Spreadsheet#processDataSource: Unable to apply data source of type " + sDataSourceType);
|
|
619
517
|
|
|
620
518
|
return null;
|
|
621
519
|
}
|
|
622
520
|
|
|
623
521
|
if (oDataSource instanceof Array ) {
|
|
624
|
-
mDataSource = {data: oDataSource, type:
|
|
522
|
+
mDataSource = {data: oDataSource, type: "array"};
|
|
625
523
|
}
|
|
626
524
|
|
|
627
525
|
if (oDataSource.dataUrl) {
|
|
628
526
|
mDataSource = oDataSource;
|
|
629
527
|
}
|
|
630
528
|
|
|
631
|
-
if (oDataSource.isA && oDataSource.isA([
|
|
529
|
+
if (oDataSource.isA && oDataSource.isA(["sap.ui.model.ListBinding", "sap.ui.model.TreeBinding"])) {
|
|
632
530
|
mDataSource = this.createDataSourceFromBinding(oDataSource);
|
|
633
531
|
}
|
|
634
532
|
|
|
@@ -653,7 +551,7 @@ sap.ui.define([
|
|
|
653
551
|
const iCount = mParameters.dataSource.count;
|
|
654
552
|
const iDownloadLimit = mParameters.dataSource.downloadLimit;
|
|
655
553
|
const nSizeLimit = Device.system.desktop ? 2_000_000 : 100_000; // 2.000.000 cells on desktop and 100.000 otherwise
|
|
656
|
-
const nRows = mParameters.dataSource.type ==
|
|
554
|
+
const nRows = mParameters.dataSource.type == "array" ? mParameters.dataSource.data.length : iDownloadLimit || iCount;
|
|
657
555
|
const nColumns = mParameters.workbook.columns.length;
|
|
658
556
|
|
|
659
557
|
function onmessage(oMessage) {
|
|
@@ -677,7 +575,7 @@ sap.ui.define([
|
|
|
677
575
|
return;
|
|
678
576
|
}
|
|
679
577
|
|
|
680
|
-
const executeDefaultAction = that.fireEvent(
|
|
578
|
+
const executeDefaultAction = that.fireEvent("beforeSave", {
|
|
681
579
|
data: oMessage.spreadsheet,
|
|
682
580
|
exportDialog: progressDialog
|
|
683
581
|
}, true, false);
|
|
@@ -700,7 +598,7 @@ sap.ui.define([
|
|
|
700
598
|
fnResolve();
|
|
701
599
|
}
|
|
702
600
|
|
|
703
|
-
if (typeof oMessage.error !=
|
|
601
|
+
if (typeof oMessage.error != "undefined") {
|
|
704
602
|
const sError = oMessage.error.message || oMessage.error;
|
|
705
603
|
that.process = null;
|
|
706
604
|
|
|
@@ -721,7 +619,7 @@ sap.ui.define([
|
|
|
721
619
|
function startExport() {
|
|
722
620
|
if (!mParameters.showProgress) {
|
|
723
621
|
if (that.process) {
|
|
724
|
-
fnReject(
|
|
622
|
+
fnReject("Cannot start export: the process is already running");
|
|
725
623
|
return;
|
|
726
624
|
}
|
|
727
625
|
|
|
@@ -734,7 +632,7 @@ sap.ui.define([
|
|
|
734
632
|
progressDialog = oDialogResolve;
|
|
735
633
|
|
|
736
634
|
if (that.process) {
|
|
737
|
-
fnReject(
|
|
635
|
+
fnReject("Cannot start export: the process is already running");
|
|
738
636
|
return;
|
|
739
637
|
}
|
|
740
638
|
|
|
@@ -755,7 +653,7 @@ sap.ui.define([
|
|
|
755
653
|
// When there are no columns --> don't trigger the export
|
|
756
654
|
if (nColumns <= 0) {
|
|
757
655
|
// Consider showing a dialog to the end users instead of just this error!
|
|
758
|
-
fnReject(
|
|
656
|
+
fnReject("No columns to export.");
|
|
759
657
|
} else if (nRows * nColumns > nSizeLimit || !nRows || nRows >= MAX_ROWS || isDownloadLimitLessThanCount(nRows, iCount)) { // Amount of rows need to be less than maximum amount because of column header
|
|
760
658
|
const oDialogSettings = {
|
|
761
659
|
rows: nRows,
|
|
@@ -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.
|
|
24
|
+
* @version 1.138.0
|
|
25
25
|
*
|
|
26
26
|
* @alias sap.ui.export.SpreadsheetExport
|
|
27
27
|
* @private
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<Input id="exportSettingsDialog-fileName" value="{/fileName}" liveChange=".onFileNameChange" class="sapUiTinyMarginBottom"/>
|
|
6
6
|
|
|
7
7
|
<Label text="{i18n>SELECT_FORMAT}" labelFor="exportSettingsDialog-fileType"/>
|
|
8
|
-
<Select id="exportSettingsDialog-fileType" selectedKey="{/fileType}" items="{/fileTypeCollection}" change=".onFileTypeChange" width="100%" class="sapUiTinyMarginBottom">
|
|
8
|
+
<Select id="exportSettingsDialog-fileType" selectedKey="{path: '/fileType', mode: 'OneWay' }" items="{/fileTypeCollection}" change=".onFileTypeChange" width="100%" class="sapUiTinyMarginBottom">
|
|
9
9
|
<items>
|
|
10
10
|
<core:Item key="{key}" text="{text}"/>
|
|
11
11
|
</items>
|
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
</items>
|
|
19
19
|
</Select>
|
|
20
20
|
|
|
21
|
-
<CheckBox id="exportSettingsDialog-includeFilterSettings" selected="{/includeFilterSettings}" text="{i18n>INCLUDE_FILTER_SETTINGS}" visible="{
|
|
22
|
-
<CheckBox id="exportSettingsDialog-includeFilterSettings-PDF" selected="{/includeFilterSettings}" text="{i18n>INCLUDE_FILTER_SETTINGS}" visible="{parts:['/fileType', '/capabilities/PDF/CoverPage'], formatter: '.isPDF'}" tooltip="{i18n>TOOLTIP_FILTER_SETTINGS}"/>
|
|
21
|
+
<CheckBox id="exportSettingsDialog-includeFilterSettings" selected="{/includeFilterSettings}" text="{i18n>INCLUDE_FILTER_SETTINGS}" visible="{parts:['/fileType', '/capabilities/PDF/CoverPage'], formatter: '.isSupported'}" tooltip="{i18n>TOOLTIP_FILTER_SETTINGS}"/>
|
|
23
22
|
<CheckBox id="exportSettingsDialog-pdfArchive" selected="{/pdfArchive}" text="{i18n>ARCHIVE_FORMAT}" visible="{parts:['/fileType', '/capabilities/PDF/ArchiveFormat'], formatter: '.isPDF'}" tooltip="{i18n>TOOLTIP_ARCHIVE_FORMAT}"/>
|
|
24
23
|
<CheckBox id="exportSettingsDialog-splitCells" selected="{/splitCells}" text="{i18n>SPLIT_CELLS}" visible="{path:'/fileType', formatter: '.isSpreadsheet'}"/> <!-- Will be hidden in case of PDF because it needs to be always true and is applied implicitly -->
|
|
25
24
|
<CheckBox id="exportSettingsDialog-addDateTime" selected="{/addDateTime}" text="{i18n>ADD_DATE_TIME}" visible="false"/>
|
|
@@ -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.
|
|
18
|
+
* @version 1.138.0
|
|
19
19
|
* @public
|
|
20
20
|
*/
|
|
21
21
|
|
|
@@ -34,7 +34,7 @@ sap.ui.define(["sap/ui/core/Lib"], function(Library) {
|
|
|
34
34
|
interfaces: [],
|
|
35
35
|
controls: [],
|
|
36
36
|
elements: [],
|
|
37
|
-
version: "1.
|
|
37
|
+
version: "1.138.0"
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
/**
|
|
@@ -229,5 +229,73 @@ sap.ui.define(["sap/ui/core/Lib"], function(Library) {
|
|
|
229
229
|
}
|
|
230
230
|
});
|
|
231
231
|
|
|
232
|
+
/**
|
|
233
|
+
* @typedef {object} sap.ui.export.SpreadsheetSettings
|
|
234
|
+
* @property {object} workbook - Spreadsheet properties object.
|
|
235
|
+
* @property {sap.ui.export.Column[]} workbook.columns - Column configurations.
|
|
236
|
+
* @property {object} [workbook.context] - Export context that will be applied to the exported file.
|
|
237
|
+
* @property {string} [workbook.context.application="SAP UI5"] - The application that creates the XLSX document.
|
|
238
|
+
* @property {string} [workbook.context.version="1.138.0"] - Application version that creates the XLSX document.
|
|
239
|
+
* @property {string} [workbook.context.title] - Title of the XLSX document (NOT the file name).
|
|
240
|
+
* @property {string} [workbook.context.modifiedBy] - User context for the XLSX document.
|
|
241
|
+
* @property {string} [workbook.context.sheetName] - The label of the data sheet.
|
|
242
|
+
* @property {string} [workbook.context.metaSheetName] - The label of the metadata sheet. The sheet will not be shown unless metadata entries are provided
|
|
243
|
+
* @property {Array.<{name: string, items: Array.<{key: string, value: string}>}>} [workbook.context.metainfo] - Metadata groups with key/value pairs.
|
|
244
|
+
* @property {string} [workbook.hierarchyLevel] - Name of the property that contains hierarchy level information.
|
|
245
|
+
* @property {string|object|Array|sap.ui.model.ListBinding|sap.ui.model.TreeBinding} dataSource
|
|
246
|
+
* Source of spreadsheet data. Can be an array with row data, an URL, a binding instance, or an OData properties object.
|
|
247
|
+
* @property {"odata"} dataSource.type - Type of the data source. Currently, only OData is supported and the value has to be set to "odata".
|
|
248
|
+
* @property {string} dataSource.dataUrl - URL to table data on the server, including all select, filter, and search query parameters.
|
|
249
|
+
* @property {string} [dataSource.serviceUrl] - URL to the OData service. Required for OData batch requests.
|
|
250
|
+
* @property {number} [dataSource.count] - Count of available records on the server.
|
|
251
|
+
* @property {boolean} [dataSource.useBatch]
|
|
252
|
+
* Whether batch requests are used to fetch the spreadsheet data. In this case, <code>serviceUrl</code> and <code>headers</code> have to be
|
|
253
|
+
* specified, too.
|
|
254
|
+
* @property {Object.<string, string>} [dataSource.headers] - Map of HTTP request header properties.
|
|
255
|
+
* @property {number} [dataSource.sizeLimit] - Maximum allowed number of records that can be obtained from the service in a single request.
|
|
256
|
+
* @property {number} [dataSource.downloadLimit] - Maximum allowed number of rows that can be exported. If not specified, all rows are exported.
|
|
257
|
+
* @property {number} [count] - The maximal number of records to export. If not specified, all data from the data source is fetched.
|
|
258
|
+
* @property {boolean} [worker=true] - Whether to run the export process in a worker or the main thread.
|
|
259
|
+
* @property {string} [fileName="export.xlsx"] - File name for the exported file.
|
|
260
|
+
* @property {boolean} [showProgress=true] - Whether to show the progress dialog.
|
|
261
|
+
*
|
|
262
|
+
* @public
|
|
263
|
+
*/
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* @typedef {object} sap.ui.export.Column
|
|
267
|
+
* @property {string} [label] - Column header text.
|
|
268
|
+
* @property {string|string[]} [property] - Field name or array of field names in the data source feed.
|
|
269
|
+
* @property {sap.ui.export.EdmType} [type=sap.ui.export.EdmType.String] - Data type of the field.
|
|
270
|
+
* @property {number} [width=10]
|
|
271
|
+
* Width of the column in characters. There is no 1:1 correspondence between character widths in the exported spreadsheet and CSS units. The
|
|
272
|
+
* width of one character is approximately 0.5em in CSS units, depending on the fonts that are used in the table and in the resulting
|
|
273
|
+
* spreadsheet.
|
|
274
|
+
* @property {string} [textAlign]
|
|
275
|
+
* Horizontal alignment of cell contents. Accepted values: `left`, `right`, `center`, `begin`, `end`. If not specified, the columns are
|
|
276
|
+
* aligned based on the type.</li>
|
|
277
|
+
* @property {number} [scale] - Number of digits after the decimal point for numeric values.
|
|
278
|
+
* @property {boolean} [autoScale] - Allows automatic scale assignment based on unit of measure.
|
|
279
|
+
* @property {boolean} [delimiter=false] - Whether to display thousands separators in numeric values.
|
|
280
|
+
* @property {string} [unit]
|
|
281
|
+
* Text to display as the unit of measurement or currency next to the numeric value. It is treated as a string and has no influence on the
|
|
282
|
+
* value itself. For example, a value of 150 with the unit "%" is still 150 and not 1.5, as a user may expect.
|
|
283
|
+
* @property {string} [unitProperty] - Name of the data source field that contains the unit/currency text.
|
|
284
|
+
* @property {boolean} [displayUnit=true] - Defines if the currency is shown in the column (applies to currency values only).
|
|
285
|
+
* @property {string} [trueValue] - Textual representation of a boolean type that has the value <code>true</code>.
|
|
286
|
+
* @property {string} [falseValue] - Textual representation of a boolean type that has the value <code>false</code>.
|
|
287
|
+
* @property {string} [template] - Formatting template that supports indexed placeholders within curly brackets.
|
|
288
|
+
* @property {string} [format] - Output format for columns of type Date/DateTime/Time.
|
|
289
|
+
* @property {string} [inputFormat] - Formatting template for string-formatted dates.
|
|
290
|
+
* @property {boolean} [utc] - Whether the <code>DateTime</code> is displayed as UTC or local time.
|
|
291
|
+
* @property {string} [timezone] - Defines a fixed IANA time zone.
|
|
292
|
+
* @property {string} [timezoneProperty] - References an OData property that contains the specific IANA time zone.
|
|
293
|
+
* @property {boolean} [displayTimezone] - Whether the IANA time zone is displayed within a cell.
|
|
294
|
+
* @property {object} [valueMap] - Mapping object or Map containing the values that should be mapped to a particular key.
|
|
295
|
+
* @property {boolean} [wrap] - Indicates if wrapping is enabled for this particular column.
|
|
296
|
+
*
|
|
297
|
+
* @public
|
|
298
|
+
*/
|
|
299
|
+
|
|
232
300
|
return thisLib;
|
|
233
301
|
});
|
|
@@ -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.
|
|
23
|
+
* @version 1.138.0
|
|
24
24
|
*
|
|
25
25
|
* @since 1.110
|
|
26
26
|
* @alias sap.ui.export.util.Filter
|