@sapui5/sap.ui.export 1.120.35 → 1.120.36
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 +2 -2
- package/src/sap/ui/export/PortableDocument.js +1 -1
- package/src/sap/ui/export/Spreadsheet.js +3 -3
- package/src/sap/ui/export/SpreadsheetExport.js +59 -48
- package/src/sap/ui/export/js/SpreadsheetWorker.js +4 -0
- package/src/sap/ui/export/library.js +2 -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.120.
|
|
30
|
+
* @version 1.120.36
|
|
31
31
|
*
|
|
32
32
|
* @since 1.96
|
|
33
33
|
* @alias sap.ui.export.ExportBase
|
|
@@ -16,7 +16,7 @@ sap.ui.define(['./library', './ExportUtils', './ExportDialog', './util/PDFCapabi
|
|
|
16
16
|
* @class The <code>sap.ui.export.ExportHandler</code> class allows you to export table data from an SAPUI5 application.
|
|
17
17
|
*
|
|
18
18
|
* @author SAP SE
|
|
19
|
-
* @version 1.120.
|
|
19
|
+
* @version 1.120.36
|
|
20
20
|
*
|
|
21
21
|
* @since 1.102
|
|
22
22
|
* @alias sap.ui.export.ExportHandler
|
|
@@ -136,7 +136,7 @@ sap.ui.define([
|
|
|
136
136
|
* @class Utilities related to export to enable reuse in integration scenarios (e.g. tables).
|
|
137
137
|
*
|
|
138
138
|
* @author SAP SE
|
|
139
|
-
* @version 1.120.
|
|
139
|
+
* @version 1.120.36
|
|
140
140
|
*
|
|
141
141
|
* @since 1.59
|
|
142
142
|
* @alias sap.ui.export.ExportUtils
|
|
@@ -1219,7 +1219,7 @@ sap.ui.define([
|
|
|
1219
1219
|
*
|
|
1220
1220
|
* @param {object} oContext Context object
|
|
1221
1221
|
* @param {string} [oContext.application] Name of the application (default: "SAP UI5")
|
|
1222
|
-
* @param {string} [oContext.version] Application version (default: "1.120.
|
|
1222
|
+
* @param {string} [oContext.version] Application version (default: "1.120.36")
|
|
1223
1223
|
* @param {string} [oContext.title] Title that will be written to the file (NOT the filename)
|
|
1224
1224
|
* @param {string} [oContext.modifiedBy] Optional user context that will be written to the file
|
|
1225
1225
|
* @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.120.
|
|
27
|
+
* @version 1.120.36
|
|
28
28
|
*
|
|
29
29
|
* @since 1.96
|
|
30
30
|
* @alias sap.ui.export.PortableDocument
|
|
@@ -84,7 +84,7 @@ sap.ui.define([
|
|
|
84
84
|
* <li><code>workbook.context</code> - Context object that will be applied to the generated file. It may contain the following fields:</li>
|
|
85
85
|
* <ul>
|
|
86
86
|
* <li><code>application</code> (string) - The application that creates the XLSX document (default: "SAP UI5")</li>
|
|
87
|
-
* <li><code>version</code> (string) - Application version that creates the XLSX document (default: "1.120.
|
|
87
|
+
* <li><code>version</code> (string) - Application version that creates the XLSX document (default: "1.120.36")</li>
|
|
88
88
|
* <li><code>title</code> (string) - Title of the XLSX document (NOT the filename)</li>
|
|
89
89
|
* <li><code>modifiedBy</code> (string) - User context for the XLSX document</li>
|
|
90
90
|
* <li><code>sheetName</code> (string) - The label of the data sheet</li>
|
|
@@ -167,7 +167,7 @@ sap.ui.define([
|
|
|
167
167
|
* columns: aColumns,
|
|
168
168
|
* context: {
|
|
169
169
|
* application: 'Debug Test Application',
|
|
170
|
-
* version: '1.120.
|
|
170
|
+
* version: '1.120.36',
|
|
171
171
|
* title: 'Some random title',
|
|
172
172
|
* modifiedBy: 'John Doe',
|
|
173
173
|
* metaSheetName: 'Custom metadata',
|
|
@@ -279,7 +279,7 @@ sap.ui.define([
|
|
|
279
279
|
* @class The <code>sap.ui.export.Spreadsheet</code> class allows you to export table data from a UI5 application to a spreadsheet file.
|
|
280
280
|
*
|
|
281
281
|
* @author SAP SE
|
|
282
|
-
* @version 1.120.
|
|
282
|
+
* @version 1.120.36
|
|
283
283
|
*
|
|
284
284
|
* @since 1.50
|
|
285
285
|
* @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.120.
|
|
24
|
+
* @version 1.120.36
|
|
25
25
|
*
|
|
26
26
|
* @alias sap.ui.export.SpreadsheetExport
|
|
27
27
|
* @private
|
|
@@ -51,8 +51,8 @@ sap.ui.define(['sap/base/Log', 'sap/ui/export/ExportUtils'], function(Log, Expor
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
function onError(
|
|
55
|
-
postMessage({ error:
|
|
54
|
+
function onError(oError) {
|
|
55
|
+
postMessage({ error: oError.message || oError });
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
function onFinish(oArrayBuffer) {
|
|
@@ -62,8 +62,8 @@ sap.ui.define(['sap/base/Log', 'sap/ui/export/ExportUtils'], function(Log, Expor
|
|
|
62
62
|
// Export directly from an array in memory.
|
|
63
63
|
// TBD: convert dates as in exportUtils
|
|
64
64
|
function exportArray() {
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
let oSpreadsheet;
|
|
66
|
+
let fnConvertData;
|
|
67
67
|
|
|
68
68
|
function start(DataProvider, XLSXBuilder) {
|
|
69
69
|
fnConvertData = DataProvider.getDataConverter(mParams);
|
|
@@ -85,7 +85,7 @@ sap.ui.define(['sap/base/Log', 'sap/ui/export/ExportUtils'], function(Log, Expor
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
function exportInProcess() {
|
|
88
|
-
|
|
88
|
+
let oSpreadsheet, oRequest;
|
|
89
89
|
|
|
90
90
|
function start(DataProvider, XLSXBuilder) {
|
|
91
91
|
var provider = new DataProvider(mParams);
|
|
@@ -122,42 +122,64 @@ sap.ui.define(['sap/base/Log', 'sap/ui/export/ExportUtils'], function(Log, Expor
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
function exportInWorker() {
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
let oSpreadsheetWorker;
|
|
126
|
+
const mWorkerParams = {};
|
|
127
127
|
|
|
128
128
|
var fnCancel = function() {
|
|
129
|
-
|
|
129
|
+
oSpreadsheetWorker.postMessage({ cancel: true });
|
|
130
130
|
onFinish();
|
|
131
131
|
};
|
|
132
132
|
|
|
133
|
-
function createWorker(
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
133
|
+
function createWorker(sUrl) {
|
|
134
|
+
const {promise: oPromise, resolve: fnResolve, reject: fnReject} = Promise.withResolvers();
|
|
135
|
+
const oWorker = new Worker(sUrl);
|
|
136
|
+
const errorHandler = (oEvent) => {
|
|
137
|
+
oWorker.terminate();
|
|
138
|
+
fnReject(oEvent);
|
|
139
|
+
};
|
|
140
|
+
const messageHandler = (oEvent) => {
|
|
141
|
+
if (oEvent.data.initialized) {
|
|
142
|
+
oWorker.removeEventListener("message", messageHandler);
|
|
143
|
+
oWorker.removeEventListener("error", errorHandler);
|
|
144
|
+
|
|
145
|
+
oWorker.addEventListener("message", postMessage);
|
|
146
|
+
oWorker.addEventListener("error", onError);
|
|
147
|
+
fnResolve(oWorker);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
141
150
|
|
|
142
|
-
|
|
151
|
+
oWorker.addEventListener("message", messageHandler);
|
|
152
|
+
oWorker.addEventListener("error", errorHandler);
|
|
143
153
|
|
|
144
|
-
return
|
|
154
|
+
return oPromise;
|
|
145
155
|
}
|
|
146
156
|
|
|
147
|
-
function
|
|
148
|
-
|
|
149
|
-
|| /^[^/]+\/[^/].*$|^\/[^/].*$/i.test(url); //check for relative address
|
|
150
|
-
}
|
|
157
|
+
function createBlobWorker() {
|
|
158
|
+
Log.warning('Direct worker is not allowed. Load the worker via Blob.');
|
|
151
159
|
|
|
152
|
-
|
|
153
|
-
|
|
160
|
+
const sBlobCode = `self.origin = "${mWorkerParams.base}"; importScripts("${mWorkerParams.src}");`;
|
|
161
|
+
const oBlobURL = window.URL.createObjectURL(new Blob([sBlobCode]));
|
|
154
162
|
|
|
155
|
-
|
|
163
|
+
return createWorker(oBlobURL);
|
|
164
|
+
}
|
|
156
165
|
|
|
157
|
-
|
|
158
|
-
|
|
166
|
+
/**
|
|
167
|
+
* Returns a worker instance. First tries to create a direct worker, if this fails, e.g. due to
|
|
168
|
+
* cross-origin or CSP restrictions, a blob worker is created. When no worker can be created, the
|
|
169
|
+
* Promise is rejected.
|
|
170
|
+
*
|
|
171
|
+
* @returns {Promise<Worker>} Worker instance
|
|
172
|
+
*/
|
|
173
|
+
async function getWorker() {
|
|
174
|
+
let oWorker;
|
|
159
175
|
|
|
160
|
-
|
|
176
|
+
try {
|
|
177
|
+
oWorker = await createWorker(mWorkerParams.src);
|
|
178
|
+
} catch (oError) {
|
|
179
|
+
oWorker = await createBlobWorker();
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return oWorker;
|
|
161
183
|
}
|
|
162
184
|
|
|
163
185
|
function noWorker() {
|
|
@@ -165,34 +187,23 @@ sap.ui.define(['sap/base/Log', 'sap/ui/export/ExportUtils'], function(Log, Expor
|
|
|
165
187
|
fnCancel = exportInProcess(mParams).cancel;
|
|
166
188
|
}
|
|
167
189
|
|
|
168
|
-
function start() {
|
|
190
|
+
async function start() {
|
|
169
191
|
try {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
noWorker();
|
|
175
|
-
e.preventDefault();
|
|
176
|
-
});
|
|
177
|
-
e.preventDefault();
|
|
178
|
-
});
|
|
179
|
-
} catch (err1) {
|
|
180
|
-
try {
|
|
181
|
-
spreadsheetWorker = blobWorker();
|
|
182
|
-
} catch (err2) {
|
|
183
|
-
noWorker();
|
|
184
|
-
}
|
|
192
|
+
oSpreadsheetWorker = await getWorker();
|
|
193
|
+
oSpreadsheetWorker.postMessage(mParams);
|
|
194
|
+
} catch (oError) {
|
|
195
|
+
noWorker();
|
|
185
196
|
}
|
|
186
197
|
}
|
|
187
198
|
|
|
188
199
|
// worker settings
|
|
189
|
-
|
|
190
|
-
|
|
200
|
+
mWorkerParams.base = ExportUtils.normalizeUrl(sap.ui.require.toUrl('sap/ui/export/js/'));
|
|
201
|
+
mWorkerParams.src = `${mWorkerParams.base}SpreadsheetWorker.js`;
|
|
191
202
|
|
|
192
203
|
start();
|
|
193
204
|
|
|
194
205
|
// fnCancel may be overwritten asynchronously after return, therefore it should be wrapped into a closure
|
|
195
|
-
return {cancel:
|
|
206
|
+
return {cancel: () => { fnCancel(); }};
|
|
196
207
|
}
|
|
197
208
|
|
|
198
209
|
if (mParams.dataSource.type === 'array') {
|
|
@@ -12,6 +12,10 @@ importScripts(origin + 'XLSXBuilder.js');
|
|
|
12
12
|
importScripts(origin + '../provider/DataProviderBase.js');
|
|
13
13
|
importScripts(origin + 'libs/JSZip3.js');
|
|
14
14
|
|
|
15
|
+
postMessage({
|
|
16
|
+
initialized: true
|
|
17
|
+
});
|
|
18
|
+
|
|
15
19
|
self.onmessage = function(oMessage) {
|
|
16
20
|
'use strict';
|
|
17
21
|
|
|
@@ -15,7 +15,7 @@ sap.ui.define(['sap/ui/core/library'], function(library1) {
|
|
|
15
15
|
* @namespace
|
|
16
16
|
* @alias sap.ui.export
|
|
17
17
|
* @author SAP SE
|
|
18
|
-
* @version 1.120.
|
|
18
|
+
* @version 1.120.36
|
|
19
19
|
* @public
|
|
20
20
|
*/
|
|
21
21
|
|
|
@@ -31,7 +31,7 @@ sap.ui.define(['sap/ui/core/library'], function(library1) {
|
|
|
31
31
|
interfaces: [],
|
|
32
32
|
controls: [],
|
|
33
33
|
elements: [],
|
|
34
|
-
version: "1.120.
|
|
34
|
+
version: "1.120.36"
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
|
|
@@ -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.120.
|
|
23
|
+
* @version 1.120.36
|
|
24
24
|
*
|
|
25
25
|
* @since 1.110
|
|
26
26
|
* @alias sap.ui.export.util.Filter
|