www-thermferm/jqwidgets/jqxexport.js

Mon, 25 Mar 2024 17:14:56 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 25 Mar 2024 17:14:56 +0100
changeset 650
0b215e4b814e
parent 617
b216f9d4b917
permissions
-rw-r--r--

Brought the retry attempts to read the DHT11 sensors to the main devices loop. The actual read function is now very simple. Called every 30 seconds when all is well, or 2 seconds if something is wrong.

617
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /* tslint:disable */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2 /* eslint-disable */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 (function ($) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 window.jqxToDash = function(value) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 return value.split(/(?=[A-Z])/).join('-').toLowerCase();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 class DataExporter {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 constructor(exportDetails, groupBy, filterBy, conditionalFormatting) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 if (!exportDetails) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 exportDetails = {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 /*
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 * "style" object definition (all properties are optional):
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18 *
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19 * «any valid CSS property» - applied to whole table
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 * header (Object)
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 * «any valid CSS property» - applied to header cells
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22 * «any column name» (Object)
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23 * «any valid CSS property» - applied to particular column header cell
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24 * columns (Object)
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25 * «any valid CSS property» - applied to column cells
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 * «any column name» (Object)
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27 * «any valid CSS property» - applied to the cells of particular column
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28 * format - applicable to numeric and date columns
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29 * «n» (Object), where «n» is a row index (related to use of "ConditionalFormatting" object)
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30 * background
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31 * border
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32 * color
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33 * rows (Object)
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34 * «any valid CSS property» - applied to rows
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 * alternationCount
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36 * alternationStart
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 * alternationEnd
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38 * alternationIndex«n»Color, where «n» is an integer
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 * alternationIndex«n»BorderColor, where «n» is an integer
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40 * alternationIndex«n»BackgroundColor, where «n» is an integer
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 * «n» (Object), where «n» is a row index
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 * «any valid CSS property» - applied to particular row
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44 that.style = exportDetails.style;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 that.header = exportDetails.header;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 that.exportHeader = exportDetails.exportHeader || true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48 that.hierarchical = exportDetails.hierarchical;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49 that.expandChar = exportDetails.expandChar || '+';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50 that.collapseChar = exportDetails.collapseChar || '-';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 that.pageOrientation = exportDetails.pageOrientation;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53 if (!that.hierarchical && groupBy && groupBy.length > 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54 that.groupBy = groupBy;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 that.mergedCells = exportDetails.mergedCells;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60 if (!that.groupBy && filterBy && Object.keys(filterBy).length > 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61 that.filterBy = filterBy;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64 if (conditionalFormatting) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65 that.conditionalFormatting = conditionalFormatting;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
68 that.timeBetween1900And1970 = new Date(1970, 0, 1).getTime() - new Date(1900, 0, 1).getTime();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72 * Generates and downloads a file.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
74 downloadFile(data, type, fileName) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75 let file;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 if (!fileName) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78 return data;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
81 if (data instanceof Blob) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
82 file = data;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
83 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
84 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
85 file = new Blob([data], { type: type });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
86 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
87
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
88 if (window.navigator.msSaveOrOpenBlob) { // Edge
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
89 window.navigator.msSaveOrOpenBlob(file, fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
90 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
91 else { // Chrome, Firefox, Safari
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
92 const a = document.createElement('a'),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
93 url = URL.createObjectURL(file);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
94
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
95 a.href = url;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
96 a.download = fileName;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
97 a.style.position = 'absolute';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
98 a.style.visibility = 'hidden';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
99
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
100 document.body.appendChild(a);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
101
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
102 a.click();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
103
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
104 setTimeout(function () {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
105 document.body.removeChild(a);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
106 window.URL.revokeObjectURL(url);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
107 }, 0);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
108 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
109 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
110
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
111 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
112 * Exports data.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
113 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
114 exportData(data, format, fileName, callback) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
115 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
116
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
117 that.actualHierarchy = that.hierarchical;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
118 format = format.toLowerCase();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
119
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
120 if (that.exportHeader) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
121 if (that.header) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
122 data = data.slice(0);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
123
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
124 if (data.length === 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
125 that.actualHierarchy = false;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
126 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
127
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
128 that.processComplexHeader(that.header, data, format);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
129 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
130 else if (data.length === 1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
131 that.actualHierarchy = false;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
132 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
133 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
134
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
135 if (data.length === 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
136 // eslint-disable-next-line
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
137 console.warn('No data to export.');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
138 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
139 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
140
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
141 if (format === 'xlsx') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
142 that.xlsxStartIndex = that.complexHeader ? that.complexHeader.length : +that.exportHeader;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
143 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
144
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
145 if (that.actualHierarchy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
146 data = that.processHierarchicalData(data, format);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
147 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
148
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
149 that.getDatafields(data);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
150
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
151 if (fileName && fileName.slice(fileName.length - format.length - 1, fileName.length) !== '.' + format) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
152 fileName += '.' + format;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
153 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
154
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
155 let output = null;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
156 switch (format) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
157 case 'csv':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
158 output = that.exportToCSVAndTSV(data, { delimiter: ', ', MIME: 'text/csv', toRemove: 2 }, fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
159 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
160 case 'html':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
161 output = that.exportToHTML(data, fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
162 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
163 case 'jpeg':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
164 case 'png':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
165 that.exportToImage(data, fileName, format, callback);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
166 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
167 case 'json':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
168 output = that.exportToJSON(data, fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
169 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
170 case 'pdf':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
171 output = that.exportToPDF(data, fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
172 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
173 case 'tsv':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
174 output = that.exportToCSVAndTSV(data, { delimiter: '\t', MIME: 'text/tab-separated-values', toRemove: 1 }, fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
175 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
176 case 'xlsx':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
177 output = that.exportToXLSX(data, fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
178 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
179 case 'xml':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
180 output = that.exportToXML(data, fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
181 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
182 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
183
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
184 if (callback && output) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
185 callback(output);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
186 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
187
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
188 delete that.complexHeader;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
189
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
190 return output;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
191 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
192
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
193 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
194 * Exports to CSV and TSV.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
195 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
196 exportToCSVAndTSV(data, formatOptions, fileName) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
197 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
198 datafields = that.datafields;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
199 let stringResult = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
200
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
201 for (let i = 0; i < data.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
202 const currentRecord = data[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
203 let stringifiedCurrentRecord = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
204
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
205 for (let j = 0; j < datafields.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
206 if (that.actualHierarchy && j === 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
207 stringifiedCurrentRecord += ('""' + formatOptions.delimiter).repeat(currentRecord._level - 1) +
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
208 '"' + currentRecord[datafields[j]] + '"' + formatOptions.delimiter +
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
209 ('""' + formatOptions.delimiter).repeat(that.maxLevel - currentRecord._level);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
210 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
211 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
212
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
213 stringifiedCurrentRecord += '"' + currentRecord[datafields[j]] + '"' + formatOptions.delimiter;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
214 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
215
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
216 stringifiedCurrentRecord = stringifiedCurrentRecord.slice(0, stringifiedCurrentRecord.length - formatOptions.toRemove) + '\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
217 stringResult += stringifiedCurrentRecord;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
218 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
219
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
220 return this.downloadFile(stringResult, formatOptions.MIME, fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
221 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
222
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
223 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
224 * Exports to HTML.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
225 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
226 exportToHTML(data, fileName) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
227 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
228 datafields = that.datafields,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
229 style = that.style;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
230 let header = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
231 startIndex = 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
232 html2canvas = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
233
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
234 data = that.processGroupingInformation(data);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
235 that.data = data;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
236
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
237 if (that.exportHeader) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
238 header = that.getHTMLHeader(datafields, data);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
239 startIndex = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
240 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
241
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
242 if (arguments[2]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
243 const scripts = Array.from(document.getElementsByTagName('script')),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
244 html2canvasScript = scripts.find(script => script.src.indexOf('html2canvas') !== -1);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
245 html2canvas = `<script type="text/javascript" src="${html2canvasScript.src}"></script>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
246 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
247
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
248 let htmlContent = `<!DOCTYPE html>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
249 <html>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
250 <head>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
251 <meta charset="UTF-8">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
252 <style type="text/css">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
253 ${that.getRowStyle()}${that.getColumnStyle()}
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
254 </style>${html2canvas}${that.toggleableFunctionality()}
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
255 </head>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
256 <body>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
257 <table${that.getTableStyle()}>${header}
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
258 <tbody>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
259
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
260 const mergedMainCells = {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
261 mergedSecondaryCells = {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
262 groupsHandled = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
263
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
264 that.getMergedCellsInfo(mergedMainCells, mergedSecondaryCells);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
265
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
266 mainLoop:
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
267 for (let i = startIndex; i < data.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
268 const currentRecord = data[i],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
269 row = i - startIndex;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
270 let n = that.getAlternationIndex(row, ' rowN'),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
271 toCollapse = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
272 level = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
273 groupId = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
274 outlineLevel = 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
275
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
276 if (that.actualHierarchy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
277 if (currentRecord._collapsed) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
278 toCollapse = ' collapsed';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
279 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
280
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
281 level = ` level="${currentRecord._level}"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
282 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
283 else if (that.groupBy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
284 for (let k = 0; k < that.groupBy.length; k++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
285 const datafield = that.groupBy[k],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
286 currentGroup = currentRecord[datafield],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
287 currentGroupLabel = that.groups[datafield][currentGroup];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
288
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
289 groupId += currentGroup;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
290
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
291 if (groupsHandled.indexOf(groupId) === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
292 htmlContent += ` <tr class="row">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
293 <td class="column group" style="padding-left: ${outlineLevel * 25}px;" colspan="${that.datafields.length}">${currentGroupLabel}</td>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
294 </tr>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
295 groupsHandled.push(groupId);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
296 i--;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
297 continue mainLoop;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
298 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
299
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
300 outlineLevel++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
301 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
302 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
303
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
304 let currentContent = ` <tr class="row row${row}${n}${toCollapse}"${level}`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
305
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
306 if (!fileName) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
307 currentContent += ' style="page-break-inside: avoid;"'
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
308 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
309
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
310 currentContent += '>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
311
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
312 for (let j = 0; j < datafields.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
313 const cellCode = j + ',' + (row);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
314 let colspan = 1, rowspan = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
315
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
316 if (mergedMainCells[cellCode]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
317 colspan = mergedMainCells[cellCode].colspan;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
318 rowspan = mergedMainCells[cellCode].rowspan;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
319 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
320 else if (mergedSecondaryCells[cellCode]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
321 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
322 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
323
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
324 const datafield = datafields[j];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
325 let value = currentRecord[datafield],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
326 indent = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
327
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
328 if (that.actualHierarchy && j === 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
329 let sign = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
330
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
331 if (currentRecord._expanded) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
332 sign = that.collapseChar;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
333 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
334 else if (currentRecord._expanded === false) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
335 sign = that.expandChar;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
336 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
337
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
338 indent = `<div class="toggle-element" style="margin-left: ${25 * (currentRecord._level - 1) + 5}px;" expanded>${sign}</div>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
339 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
340
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
341 value = that.getFormattedValue(value, datafield);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
342
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
343 let css = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
344
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
345 if (style && style.columns && style.columns[datafield] && style.columns[datafield][row]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
346 const uniqueStyle = style.columns[datafield][row];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
347
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
348 css += `border-color: ${uniqueStyle.border}; background-color: ${uniqueStyle.background}; color: ${uniqueStyle.color};"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
349 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
350
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
351 if (j === 0 && outlineLevel > 1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
352 css += `padding-left: ${(outlineLevel - 1) * 25}px;"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
353 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
354
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
355 if (css) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
356 css = ` style="${css}"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
357 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
358
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
359 currentContent += ` <td class="column column${datafield}"${css} colspan="${colspan}" rowspan="${rowspan}">${indent + value}</td>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
360 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
361
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
362 htmlContent += currentContent + ' </tr>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
363 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
364
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
365 htmlContent += ` </tbody>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
366 </table>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
367 </body>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
368 </html>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
369
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
370 if (arguments[2]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
371 return htmlContent;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
372 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
373
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
374 return this.downloadFile(htmlContent, 'text/html', fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
375 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
376
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
377 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
378 * Exports to an image (PNG/JPEG).
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
379 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
380 exportToImage(data, fileName, fileExtension, callback) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
381 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
382
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
383 try {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
384 html2canvas;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
385 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
386 catch (error) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
387 throw new Error('jqx-grid: Missing reference to \'html2canvas.min.js\'.');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
388 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
389
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
390 let imageData = null;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
391
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
392 const htmlContent = that.exportToHTML(data, fileName, true),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
393 iframe = document.createElement('iframe');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
394
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
395 iframe.style.position = 'absolute';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
396 iframe.style.top = 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
397 iframe.style.left = 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
398 iframe.style.border = 'none';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
399 iframe.style.width = '100%';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
400 iframe.style.height = '100%';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
401 iframe.style.opacity = 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
402
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
403 document.body.appendChild(iframe);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
404
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
405 iframe.contentDocument.write(htmlContent);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
406
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
407 function checkIframePopulated() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
408 if (!iframe.contentDocument.body || !iframe.contentDocument.body.firstElementChild) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
409 requestAnimationFrame(checkIframePopulated);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
410 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
411 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
412 iframe.contentWindow.html2canvas(iframe.contentDocument.body.firstElementChild).then(canvas => {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
413 const draw = $.jqxDraw(document.createElement('div'));
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
414
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
415 imageData = canvas.toDataURL('image/png');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
416
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
417 if (callback) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
418 callback(imageData);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
419 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
420 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
421 document.body.appendChild(canvas);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
422 draw.exportImage(undefined, canvas, fileExtension, fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
423 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
424
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
425 iframe.remove();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
426 canvas.remove();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
427 });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
428 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
429 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
430
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
431 checkIframePopulated();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
432
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
433 return imageData;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
434 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
435
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
436 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
437 * Gets merged cells information (for use in HTML and PDF export).
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
438 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
439 getMergedCellsInfo(mergedMainCells, mergedSecondaryCells, mapping) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
440 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
441
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
442 if (!that.mergedCells) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
443 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
444 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
445
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
446 const multipleTables = mapping && mapping[that.datafields.length - 1] !== 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
447
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
448 that.mergedCellsPDF = that.mergedCells.slice(0);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
449
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
450 for (let i = 0; i < that.mergedCellsPDF.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
451 const cellDefinition = that.mergedCellsPDF[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
452 let colspan = cellDefinition.colspan,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
453 rowspan = cellDefinition.rowspan;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
454
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
455 if (rowspan < 2 && colspan < 2) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
456 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
457 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
458
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
459 const row = cellDefinition.cell[1];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
460 let col = cellDefinition.cell[0];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
461
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
462 if (multipleTables && colspan > 1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
463 const startTable = mapping[col],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
464 endTable = mapping[col + colspan - 1],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
465 splitCells = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
466
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
467 if (endTable > startTable) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
468 let currentTable = startTable,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
469 currentColumn = col,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
470 overal = 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
471
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
472 mainLoop:
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
473 for (let i = startTable; i <= endTable; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
474 let start = currentColumn,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
475 span = 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
476
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
477 while (mapping[currentColumn] === currentTable) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
478 currentColumn++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
479 overal++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
480 span++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
481
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
482 if (overal === colspan) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
483 splitCells.push({ start: start, span: span });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
484 break mainLoop;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
485 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
486 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
487
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
488 splitCells.push({ start: start, span: span });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
489 currentTable = mapping[currentColumn];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
490 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
491
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
492 colspan = splitCells[0].span;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
493
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
494 for (let i = 1; i < splitCells.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
495 that.mergedCellsPDF.push({ cell: [splitCells[i].start, row], colspan: splitCells[i].span, rowspan: rowspan, originalCell: col });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
496 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
497 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
498 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
499
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
500 for (let j = col; j < col + colspan; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
501 for (let k = row; k < row + rowspan; k++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
502 const code = j + ',' + k;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
503
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
504 if (j === col && k === row) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
505 mergedMainCells[code] = { colspan: colspan, rowspan: rowspan, originalCell: cellDefinition.originalCell };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
506 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
507 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
508
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
509 mergedSecondaryCells[code] = true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
510 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
511 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
512 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
513 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
514
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
515 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
516 * Gets alternation index.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
517 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
518 getAlternationIndex(row, prefix) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
519 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
520
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
521 if (!that.style) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
522 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
523 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
524
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
525 const rowsDefinition = that.style.rows,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
526 alternationCount = rowsDefinition && rowsDefinition.alternationCount;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
527
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
528 if (alternationCount &&
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
529 (((rowsDefinition.alternationStart === undefined || row >= rowsDefinition.alternationStart) &&
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
530 (rowsDefinition.alternationEnd === undefined || row <= rowsDefinition.alternationEnd)) ||
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
531 rowsDefinition.alternationStart === rowsDefinition.alternationEnd)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
532 return prefix + (row % rowsDefinition.alternationCount);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
533 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
534
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
535 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
536 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
537
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
538 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
539 * Gets formatted numeric or date value (for use in HTML and PDF export).
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
540 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
541 getFormattedValue(value, datafield) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
542 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
543 style = that.style;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
544
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
545 if (datafield && style && style.columns &&
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
546 style.columns[datafield] && style.columns[datafield].format) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
547 if (typeof value === 'number') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
548 return that.formatNumber(value, style.columns[datafield].format);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
549 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
550 else if (value instanceof Date) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
551 return that.formatDate(value, style.columns[datafield].format);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
552 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
553 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
554 else if (value instanceof Date) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
555 return that.formatDate(value, 'd');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
556 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
557
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
558 return value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
559 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
560
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
561 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
562 * Exports to JSON.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
563 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
564 exportToJSON(data, fileName) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
565 return this.downloadFile(JSON.stringify(data, this.datafields.concat('rows')), 'application/json', fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
566 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
567
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
568 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
569 * Exports to PDF.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
570 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
571 exportToPDF(data, fileName) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
572 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
573 datafields = that.datafields,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
574 startIndex = +that.exportHeader,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
575 groupsHandled = [],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
576 mergedMainCells = {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
577 mergedSecondaryCells = {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
578 mapping = {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
579 headerRows = startIndex ? that.complexHeader ? that.complexHeader.length : 1 : 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
580 docDefinition = {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
581 pageOrientation: that.pageOrientation || 'portrait'
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
582 };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
583 let header = [], content = [], tables;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
584
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
585 function createTableRow() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
586 let tableRow = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
587
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
588 for (let i = 0; i < tables.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
589 tableRow.push([]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
590 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
591
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
592 return tableRow;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
593 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
594
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
595 data = that.processGroupingInformation(data);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
596 that.data = data;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
597 that.headerRows = headerRows;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
598 that.getPDFStyle();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
599
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
600 const styleInfo = that.styleInfo;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
601
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
602 tables = styleInfo ? that.wrapPDFColumns(docDefinition, mapping) : [{ body: header, datafields: datafields }];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
603
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
604 if (startIndex) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
605 header = that.getPDFHeader(datafields, tables, mapping);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
606 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
607
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
608 that.getMergedCellsInfo(mergedMainCells, mergedSecondaryCells, mapping);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
609
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
610 mainLoop:
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
611 for (let i = startIndex; i < data.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
612 const currentRecord = data[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
613 let groupId = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
614 outlineLevel = 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
615
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
616 if (that.groupBy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
617 for (let k = 0; k < that.groupBy.length; k++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
618 const datafield = that.groupBy[k],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
619 currentGroup = currentRecord[datafield],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
620 currentGroupLabel = that.groups[datafield][currentGroup];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
621
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
622 groupId += currentGroup;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
623
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
624 if (groupsHandled.indexOf(groupId) === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
625 that.createGroupHeaderRow(tables, { text: currentGroupLabel, style: ['row', 'cell', 'group'], marginLeft: outlineLevel * 7.5 });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
626 groupsHandled.push(groupId);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
627 i--;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
628 continue mainLoop;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
629 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
630
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
631 outlineLevel++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
632 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
633 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
634
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
635 const tableRow = createTableRow(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
636 row = i - startIndex;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
637 let n = that.getAlternationIndex(row, '');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
638
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
639 for (let j = 0; j < datafields.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
640 const datafield = datafields[j],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
641 entry = { style: ['row', 'row' + row, 'cell', 'cell' + datafield] },
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
642 tableIndex = mapping[j] || 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
643
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
644 if (n !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
645 entry.style.splice(1, 0, 'rowN' + n);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
646 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
647
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
648 if (that.mergedCellsPDF) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
649 const cellCode = j + ',' + row,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
650 mergeInfo = mergedMainCells[cellCode];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
651
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
652 if (mergeInfo) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
653 entry.colSpan = mergeInfo.colspan;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
654 entry.rowSpan = mergeInfo.rowspan;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
655
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
656 if (mergeInfo.originalCell !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
657 entry.text = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
658 entry.style[entry.style.length - 1] = 'cell' + datafields[mergeInfo.originalCell];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
659 tableRow[tableIndex].push(entry);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
660 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
661 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
662 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
663 else if (mergedSecondaryCells[cellCode]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
664 tableRow[tableIndex].push({});
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
665 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
666 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
667 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
668
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
669 const value = that.getFormattedValue(currentRecord[datafield], datafield);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
670
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
671 entry.text = value.toString();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
672 that.getUniqueStylePDF(entry, datafield, row);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
673 that.setIndentation(entry, { j: j, currentRecord: currentRecord, value: value, outlineLevel: outlineLevel });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
674 tableRow[tableIndex].push(entry);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
675 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
676
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
677 for (let k = 0; k < tables.length; k++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
678 tables[k].body.push(tableRow[k]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
679 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
680 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
681
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
682 if (styleInfo) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
683 for (let i = 0; i < tables.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
684 const body = tables[i].body;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
685
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
686 for (let j = headerRows - 1; j >= 0; j--) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
687 body.unshift(header[i][j]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
688 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
689
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
690 content.push({
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
691 table: {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
692 headerRows: headerRows,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
693 widths: tables[i].widths,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
694 heights: function (row) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
695 if (styleInfo.heights[row]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
696 return styleInfo.heights[row];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
697 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
698
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
699 if (styleInfo.defaultHeight) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
700 return styleInfo.defaultHeight;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
701 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
702 },
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
703 body: body
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
704 },
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
705 pageBreak: 'after'
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
706 });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
707 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
708
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
709 delete content[tables.length - 1].pageBreak;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
710 docDefinition.styles = styleInfo.styles;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
711 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
712 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
713 const body = tables[0].body;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
714
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
715 for (let j = headerRows - 1; j >= 0; j--) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
716 body.unshift(header[0][j]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
717 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
718
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
719 content = [{ table: { headerRows: headerRows, body: body } }];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
720 docDefinition.styles = { header: { bold: true }, group: { bold: true } };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
721 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
722
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
723 docDefinition.content = content;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
724 pdfMake.createPdf(docDefinition).download(fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
725
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
726 delete that.mergedCellsPDF;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
727 delete that.styleInfo;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
728 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
729
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
730 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
731 * Gets the header content when exporting to PDF.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
732 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
733 getPDFStyle() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
734 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
735 style = that.style;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
736
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
737 if (!style) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
738 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
739 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
740
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
741 const sampleRecord = that.data[0],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
742 headerDefinition = style.header,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
743 columnsDefinition = style.columns,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
744 rowsDefinition = style.rows,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
745 styleInfo = {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
746 heights: [],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
747 widths: Array(that.datafields.length).fill('*'),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
748 styles: {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
749 header: {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
750 row: {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
751 cell: {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
752 group: { fillColor: '#FFFFFF', color: '#000000', bold: true }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
753 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
754 };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
755
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
756 that.styleInfo = styleInfo;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
757
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
758 function processStyleDefinition(definition, type) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
759 if (!definition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
760 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
761 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
762
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
763 for (let prop in definition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
764 if (!definition.hasOwnProperty(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
765 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
766 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
767
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
768 if (sampleRecord[prop] === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
769 if (prop === 'height' && type === 'header') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
770 for (let i = 0; i < that.headerRows; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
771 styleInfo.heights[i] = (parseInt(definition[prop], 10) / that.headerRows) / 1.57;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
772 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
773 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
774 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
775 that.storePDFStyle({ prop: prop, value: definition[prop], toUpdate: type });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
776 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
777 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
778 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
779 for (let columnProp in definition[prop]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
780 if (!isNaN(columnProp) || !definition[prop].hasOwnProperty(columnProp)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
781 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
782 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
783
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
784 const value = definition[prop][columnProp],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
785 index = that.datafields.indexOf(prop);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
786
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
787 if (columnProp === 'width' && styleInfo.widths[index] === '*') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
788 styleInfo.widths[index] = parseFloat(value);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
789 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
790 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
791 that.storePDFStyle({ prop: columnProp, value: value, toUpdate: type + prop });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
792 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
793 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
794 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
795 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
796 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
797
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
798 processStyleDefinition(headerDefinition, 'header');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
799 processStyleDefinition(columnsDefinition, 'cell');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
800
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
801 if (!rowsDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
802 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
803 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
804
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
805 for (let prop in rowsDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
806 if (!rowsDefinition.hasOwnProperty(prop) || prop.indexOf('alt') !== -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
807 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
808 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
809
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
810 const value = rowsDefinition[prop];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
811
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
812 if (!isNaN(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
813 for (let rowProp in value) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
814 if (value.hasOwnProperty(rowProp)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
815 if (rowProp === 'height') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
816 styleInfo.heights[parseFloat(prop) + that.headerRows] = parseFloat(value[rowProp]) / 1.57;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
817 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
818 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
819 that.storePDFStyle({ prop: rowProp, value: value[rowProp], toUpdate: 'row' + prop });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
820 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
821 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
822 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
823
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
824 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
825 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
826
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
827 if (prop === 'height') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
828 styleInfo.defaultHeight = parseFloat(value) / 1.57;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
829 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
830 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
831 that.storePDFStyle({ prop: prop, value: value, toUpdate: 'row' });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
832 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
833 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
834
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
835 if (!rowsDefinition.alternationCount) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
836 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
837 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
838
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
839 for (let i = 0; i < rowsDefinition.alternationCount; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
840 const styleN = {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
841
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
842 if (rowsDefinition[`alternationIndex${i}Color`]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
843 styleN.color = rowsDefinition[`alternationIndex${i}Color`];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
844 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
845
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
846 if (rowsDefinition[`alternationIndex${i}BackgroundColor`]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
847 styleN.fillColor = rowsDefinition[`alternationIndex${i}BackgroundColor`];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
848 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
849
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
850 styleInfo.styles['rowN' + i] = styleN;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
851 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
852 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
853
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
854 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
855 * Stores style in object to be applied to generated PDF.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
856 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
857 storePDFStyle(details) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
858 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
859 let objectToUpdate = that.styleInfo.styles[details.toUpdate];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
860
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
861 if (!objectToUpdate) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
862 objectToUpdate = {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
863 that.styleInfo.styles[details.toUpdate] = objectToUpdate;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
864 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
865
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
866 let value = details.value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
867
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
868 switch (details.prop) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
869 case 'backgroundColor':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
870 objectToUpdate.fillColor = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
871 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
872 case 'color':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
873 objectToUpdate.color = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
874 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
875 case 'fontSize':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
876 objectToUpdate.fontSize = parseFloat(value);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
877 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
878 case 'fontStyle':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
879 if (value === 'italic') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
880 objectToUpdate.italics = true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
881 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
882
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
883 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
884 case 'fontWeight':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
885 if (value === 'bold') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
886 objectToUpdate.bold = true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
887 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
888
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
889 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
890 case 'textAlign':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
891 objectToUpdate.alignment = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
892 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
893 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
894 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
895
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
896 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
897 * Enables column wrapping when exporting to PDF.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
898 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
899 wrapPDFColumns(docDefinition, mapping) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
900 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
901 styleInfo = this.styleInfo,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
902 maxPerPage = docDefinition.pageOrientation === 'portrait' ? 775 : 1155, // maximum of 775px (portrait) or 1155px (landscape) per A4 page
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
903 tables = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
904 let currentPage = 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
905
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
906 for (let i = 0; i < styleInfo.widths.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
907 let currentWidth = styleInfo.widths[i],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
908 numericWidth = currentWidth;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
909
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
910 if (currentWidth === '*') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
911 numericWidth = 150;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
912 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
913 else if (currentWidth >= maxPerPage) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
914 numericWidth = maxPerPage
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
915 currentWidth = '*';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
916 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
917 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
918 currentWidth /= 1.57;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
919 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
920
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
921 if (tables[currentPage] === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
922 const body = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
923
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
924 tables[currentPage] = {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
925 body: body,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
926 width: numericWidth,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
927 widths: [currentWidth],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
928 datafields: [that.datafields[i]]
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
929 };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
930 mapping[i] = currentPage;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
931 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
932 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
933
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
934 const table = tables[currentPage];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
935
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
936 if (table.width + numericWidth > maxPerPage) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
937 currentPage++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
938 i--;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
939 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
940 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
941
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
942 mapping[i] = currentPage;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
943 table.width += numericWidth;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
944 table.widths.push(currentWidth);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
945 table.datafields.push(that.datafields[i]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
946 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
947
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
948 return tables;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
949 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
950
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
951 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
952 * Gets the header content when exporting to PDF.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
953 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
954 getPDFHeader(datafields, tables, mapping) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
955 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
956 headerArray = [],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
957 headerRows = that.headerRows,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
958 headerStructure = that.complexHeader ? that.complexHeader : [Object.values(that.data[0])],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
959 headers = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
960 let result = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
961
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
962 for (let i = 0; i < headerRows; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
963 const row = headerStructure[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
964
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
965 for (let k = 0; k < row.length; k++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
966 let tableIndex = mapping[k] || 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
967
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
968 if (!headers[tableIndex]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
969 headers[tableIndex] = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
970 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
971
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
972 if (!headers[tableIndex][i]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
973 headers[tableIndex][i] = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
974 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
975
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
976 headers[tableIndex][i].push(row[k]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
977 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
978 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
979
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
980 function processHeader(header, result, table) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
981 for (let j = 0; j < headerRows; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
982 const row = header[j];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
983 const tableRow = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
984
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
985 for (let k = 0; k < row.length; k++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
986 const currentLabel = row[k];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
987 let colspan = 1, rowspan = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
988
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
989 if ((row[k - 1] && row[k - 1] === currentLabel) ||
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
990 (header[j - 1] && (header[j - 1][k] === currentLabel))) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
991 tableRow.push({});
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
992 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
993 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
994
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
995 let iterator = k + 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
996
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
997 while (row[iterator] && row[iterator] === row[iterator - 1]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
998 colspan++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
999 iterator++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1000 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1001
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1002 iterator = j + 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1003
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1004 while (header[iterator] && header[iterator][k] === currentLabel) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1005 rowspan++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1006 iterator++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1007 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1008
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1009 const datafield = j === headerRows - 1 || rowspan + j === headerRows ?
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1010 table.datafields[k] : null,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1011 entry = {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1012 text: currentLabel, colSpan: colspan, rowSpan: rowspan
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1013 };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1014
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1015 if (!datafield) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1016 entry.alignment = 'center';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1017 entry.style = 'header';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1018 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1019 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1020 entry.style = ['header', 'header' + datafield];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1021 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1022
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1023 tableRow.push(entry);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1024 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1025
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1026 result.push(tableRow);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1027 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1028 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1029
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1030 for (let i = 0; i < tables.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1031 result = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1032 processHeader(headers[i], result, tables[i]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1033 headerArray.push(result);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1034 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1035
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1036 return headerArray;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1037 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1038
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1039 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1040 * Creates group header rows when exporting to PDF.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1041 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1042 createGroupHeaderRow(tables, entryTemplate) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1043 for (let i = 0; i < tables.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1044 const entry = Object.assign({}, entryTemplate),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1045 colspan = tables[i].datafields.length,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1046 tableRow = [entry];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1047
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1048 entry.colSpan = colspan;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1049 tableRow.length = colspan;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1050 tableRow.fill({}, 1, colspan - 1);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1051
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1052 tables[i].body.push(tableRow);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1053 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1054 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1055
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1056 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1057 * Gets unique cell style when exporting to PDF.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1058 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1059 getUniqueStylePDF(entry, datafield, row) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1060 const style = this.style;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1061
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1062 function toHex(background) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1063 const parts = /rgba\((\d+),(\d+),(\d+)\,(\d*.\d+|\d+)\)/gi.exec(background.replace(/\s/g, '')),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1064 r = parseFloat(parts[1]).toString(16).toUpperCase(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1065 g = parseFloat(parts[2]).toString(16).toUpperCase(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1066 b = parseFloat(parts[3]).toString(16).toUpperCase();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1067
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1068 return '#' + ('0').repeat(2 - r.length) + r +
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1069 ('0').repeat(2 - g.length) + g +
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1070 ('0').repeat(2 - b.length) + b;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1071 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1072
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1073 if (!style || !style.columns || !style.columns[datafield]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1074 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1075 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1076
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1077 const uniqueStyle = style.columns[datafield][row];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1078
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1079 if (!uniqueStyle) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1080 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1081 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1082
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1083 entry.fillColor = toHex(uniqueStyle.background);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1084 entry.color = uniqueStyle.color.toLowerCase();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1085 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1086
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1087 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1088 * Sets the indentation of a PDF cell.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1089 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1090 setIndentation(entry, details) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1091 if (details.j !== 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1092 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1093 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1094
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1095 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1096
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1097 if (that.actualHierarchy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1098 const currentRecord = details.currentRecord;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1099
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1100 if (currentRecord._expanded !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1101 entry.marginLeft = 25 * (currentRecord._level - 1);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1102 entry.text = that.collapseChar + ' ' + details.value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1103 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1104 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1105 entry.marginLeft = 25 * (currentRecord._level - 1) + 6;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1106 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1107 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1108 else if (details.outlineLevel > 1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1109 entry.marginLeft = (details.outlineLevel - 1) * 7.5;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1110 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1111 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1112
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1113 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1114 * Exports to XLSX.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1115 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1116 exportToXLSX(data, fileName) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1117 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1118 let style = that.style;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1119
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1120 data = that.processGroupingInformation(data, true);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1121 that.data = data;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1122 that.getColumnsArray();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1123
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1124 that.complexHeaderMergedCells = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1125
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1126 if (that.complexHeaderMergeInfo) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1127 for (let cell in that.complexHeaderMergeInfo) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1128 if (that.complexHeaderMergeInfo.hasOwnProperty(cell)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1129 const currentEntry = that.complexHeaderMergeInfo[cell];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1130
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1131 if (currentEntry.from[0] === currentEntry.to[0] &&
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1132 currentEntry.from[1] === currentEntry.to[1]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1133 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1134 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1135
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1136 that.complexHeaderMergedCells.push({
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1137 from: that.columnsArray[currentEntry.from[1]] + (currentEntry.from[0] + 1),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1138 to: that.columnsArray[currentEntry.to[1]] + (currentEntry.to[0] + 1)
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1139 });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1140 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1141 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1142 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1143
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1144 that.getConditionalFormatting();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1145
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1146 if (!style) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1147 style = that.generateDefaultStyle(data);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1148 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1149
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1150 const sharedStrings = that.generateSharedStrings(data),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1151 sharedStringsCollection = sharedStrings.collection,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1152 sharedStringsXML = sharedStrings.xml,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1153 stylesXML = that.generateStyles(style),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1154 sheet1XML = that.groupBy ? that.generateSheet1WithGrouping(data, sharedStringsCollection) :
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1155 that.generateSheet1(data, sharedStringsCollection),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1156 auxiliaryFiles = that.generateAuxiliaryFiles(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1157
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1158 // eslint-disable-next-line
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1159 zip = new JSZip(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1160 _rels = zip.folder('_rels'),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1161 docProps = zip.folder('docProps'),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1162 xl = zip.folder('xl'),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1163 xl_rels = xl.folder('_rels'),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1164 theme = xl.folder('theme'),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1165 worksheets = xl.folder('worksheets');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1166
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1167 _rels.file('.rels', auxiliaryFiles._relsRels);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1168 docProps.file('app.xml', auxiliaryFiles.docPropsAppXml);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1169 docProps.file('core.xml', auxiliaryFiles.docPropsCoreXml);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1170 xl_rels.file('workbook.xml.rels', auxiliaryFiles.xl_relsWorkbookXmlRels);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1171 theme.file('theme1.xml', auxiliaryFiles.xlThemeTheme1Xml);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1172 worksheets.file('sheet1.xml', sheet1XML);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1173 xl.file('sharedStrings.xml', sharedStringsXML);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1174 xl.file('styles.xml', stylesXML);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1175 xl.file('workbook.xml', auxiliaryFiles.xlWorkbookXml);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1176 zip.file('[Content_Types].xml', auxiliaryFiles.Content_TypesXml);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1177
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1178 zip.generateAsync({
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1179 type: 'blob',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1180 mimeType:
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1181 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1182 })
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1183 .then(function (content) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1184 return that.downloadFile(content, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1185 });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1186
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1187 delete that.conditionalFormattingXLSX;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1188 delete that.complexHeaderMergeInfo;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1189 delete that.defaultRowHeight;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1190 delete that.rowHeight;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1191 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1192
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1193 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1194 * Processes grouping information.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1195 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1196 processGroupingInformation(data, xlsx) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1197 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1198
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1199 if (!that.groupBy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1200 return data;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1201 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1202
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1203 let header;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1204
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1205 data = data.slice(0);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1206
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1207 if (that.exportHeader) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1208 if (xlsx && that.complexHeader) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1209 header = data.slice(0, that.complexHeader.length);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1210 data.splice(0, that.complexHeader.length);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1211 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1212 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1213 header = [data[0]];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1214 data.splice(0, 1);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1215 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1216 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1217
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1218 if (data.length > 1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1219 const getCompareFunction = function (a, knownDataType) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1220 // gets data type of column (not necessary if the Grid provides this information)
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1221 const dataType = knownDataType || typeof a;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1222 let compareFunction;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1223
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1224 switch (dataType) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1225 case 'string':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1226 compareFunction = new Intl.Collator().compare;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1227 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1228 case 'number':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1229 compareFunction = function (a, b) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1230 return a - b;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1231 };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1232 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1233 case 'boolean':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1234 case 'bool':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1235 compareFunction = function (a, b) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1236 if (a === b) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1237 return 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1238 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1239 else if (a === false) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1240 return -1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1241 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1242 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1243 return 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1244 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1245 };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1246 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1247 case 'date':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1248 case 'time':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1249 case 'dateTime':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1250 if (a instanceof Date) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1251 compareFunction = function (a, b) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1252 return a.compare(b);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1253 };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1254 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1255 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1256 case 'object':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1257 if (a instanceof Date) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1258 compareFunction = function (a, b) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1259 return a.getTime() - b.getTime();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1260 };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1261 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1262
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1263
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1264 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1265 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1266
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1267 return compareFunction;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1268 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1269
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1270 const sortByMultipleColumns = function (dataSource, sortColumns, directions, customSortingCallback) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1271 if (!dataSource || !(Array.isArray(dataSource)) || dataSource.length === 0 ||
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1272 !sortColumns || Array.isArray(sortColumns) && sortColumns.length === 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1273 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1274 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1275
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1276 if (typeof sortColumns === 'string') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1277 sortColumns = [sortColumns];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1278 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1279
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1280 const directionCoefficients = [],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1281 compareFunctions = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1282
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1283 if (directions === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1284 directions = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1285 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1286
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1287 for (let i = 0; i < sortColumns.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1288 if (directions[i] === undefined || directions[i] === 'asc' || directions[i] === 'ascending') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1289 directionCoefficients[i] = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1290 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1291 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1292 directionCoefficients[i] = -1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1293 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1294
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1295 compareFunctions[i] = getCompareFunction(dataSource[0][sortColumns[i]]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1296 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1297
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1298 if (customSortingCallback) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1299 customSortingCallback(dataSource, sortColumns, directions, compareFunctions);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1300 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1301 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1302
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1303 dataSource.sort(function (a, b) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1304 for (let i = 0; i < sortColumns.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1305 const result = compareFunctions[i](a[sortColumns[i]], b[sortColumns[i]]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1306
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1307 if (result === 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1308 if (sortColumns[i + 1]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1309 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1310 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1311 else if (a._index !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1312 // makes sorting stable
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1313 return (a._index - b._index) * directionCoefficients[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1314 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1315
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1316 return 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1317 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1318
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1319 return result * directionCoefficients[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1320 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1321 });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1322 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1323
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1324 sortByMultipleColumns(data, that.groupBy);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1325 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1326
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1327 if (header) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1328 data = header.concat(data);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1329 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1330
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1331 that.getGroupLabels(data);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1332
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1333 return data;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1334 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1335
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1336 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1337 * Exports to XML.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1338 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1339 exportToXML(data, fileName) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1340 const datafields = this.datafields.slice(0);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1341 let xmlContent = '<?xml version="1.0" encoding="UTF-8" ?>\n<table>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1342
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1343 if (datafields.indexOf('rows') === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1344 datafields.push('rows');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1345 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1346
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1347 function recursion(records, indent) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1348 let content = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1349
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1350 for (let i = 0; i < records.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1351 const currentRecord = records[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1352
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1353 content += indent + '<row>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1354
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1355 for (let j = 0; j < datafields.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1356 const datafield = datafields[j];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1357
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1358 if (datafield === 'rows') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1359 if (!currentRecord.rows) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1360 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1361 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1362
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1363 content += `${indent} <rows>\n${recursion(currentRecord.rows, indent + ' ')}${indent} </rows>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1364 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1365 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1366
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1367 content += indent + ` <${datafield}>${currentRecord[datafield]}</${datafield}>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1368 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1369
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1370 content += indent + '</row>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1371 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1372
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1373 return content;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1374 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1375
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1376 xmlContent += recursion(data, ' ') + '</table>';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1377
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1378 return this.downloadFile(xmlContent, 'application/xml', fileName);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1379 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1380
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1381 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1382 * Formats a date.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1383 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1384 formatDate(value, format) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1385 var date = $.jqx.formatDate(value, format);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1386
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1387 return date;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1388 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1389
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1390 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1391 * Formats a number.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1392 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1393 formatNumber(value, format) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1394 var number = $.jqx.formatNumber(value, format);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1395
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1396 return number;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1397 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1398
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1399 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1400 * Generates auxiliary files necessary for XLSX.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1401 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1402 generateAuxiliaryFiles() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1403 // _rels\.rels
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1404 const _relsRels = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1405 <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1406
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1407 // docProps\app.xml
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1408 const docPropsAppXml = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1409 <Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><Application>Microsoft Excel</Application><DocSecurity>0</DocSecurity><ScaleCrop>false</ScaleCrop><HeadingPairs><vt:vector size="2" baseType="variant"><vt:variant><vt:lpstr>Worksheets</vt:lpstr></vt:variant><vt:variant><vt:i4>1</vt:i4></vt:variant></vt:vector></HeadingPairs><TitlesOfParts><vt:vector size="1" baseType="lpstr"><vt:lpstr>Sheet1</vt:lpstr></vt:vector></TitlesOfParts><Company></Company><LinksUpToDate>false</LinksUpToDate><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>16.0300</AppVersion></Properties>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1410
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1411 // docProps\core.xml
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1412 const now = new Date().toISOString(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1413 docPropsCoreXml = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1414 <cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dc:creator>Smart HTML Elements</dc:creator><cp:lastModifiedBy>Smart HTML Elements</cp:lastModifiedBy><dcterms:created xsi:type="dcterms:W3CDTF">${now}</dcterms:created><dcterms:modified xsi:type="dcterms:W3CDTF">${now}</dcterms:modified></cp:coreProperties>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1415
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1416 // xl\_rels\workbook.xml.rels
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1417 const xl_relsWorkbookXmlRels = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1418 <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml"/></Relationships>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1419
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1420 // xl\theme\theme1.xml
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1421 const xlThemeTheme1Xml = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1422 <a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="44546A"/></a:dk2><a:lt2><a:srgbClr val="E7E6E6"/></a:lt2><a:accent1><a:srgbClr val="4472C4"/></a:accent1><a:accent2><a:srgbClr val="ED7D31"/></a:accent2><a:accent3><a:srgbClr val="A5A5A5"/></a:accent3><a:accent4><a:srgbClr val="FFC000"/></a:accent4><a:accent5><a:srgbClr val="5B9BD5"/></a:accent5><a:accent6><a:srgbClr val="70AD47"/></a:accent6><a:hlink><a:srgbClr val="0563C1"/></a:hlink><a:folHlink><a:srgbClr val="954F72"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Calibri Light" panose="020F0302020204030204"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="游ゴシック Light"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="等线 Light"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/><a:font script="Armn" typeface="Arial"/><a:font script="Bugi" typeface="Leelawadee UI"/><a:font script="Bopo" typeface="Microsoft JhengHei"/><a:font script="Java" typeface="Javanese Text"/><a:font script="Lisu" typeface="Segoe UI"/><a:font script="Mymr" typeface="Myanmar Text"/><a:font script="Nkoo" typeface="Ebrima"/><a:font script="Olck" typeface="Nirmala UI"/><a:font script="Osma" typeface="Ebrima"/><a:font script="Phag" typeface="Phagspa"/><a:font script="Syrn" typeface="Estrangelo Edessa"/><a:font script="Syrj" typeface="Estrangelo Edessa"/><a:font script="Syre" typeface="Estrangelo Edessa"/><a:font script="Sora" typeface="Nirmala UI"/><a:font script="Tale" typeface="Microsoft Tai Le"/><a:font script="Talu" typeface="Microsoft New Tai Lue"/><a:font script="Tfng" typeface="Ebrima"/></a:majorFont><a:minorFont><a:latin typeface="Calibri" panose="020F0502020204030204"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="游ゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="等线"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/><a:font script="Armn" typeface="Arial"/><a:font script="Bugi" typeface="Leelawadee UI"/><a:font script="Bopo" typeface="Microsoft JhengHei"/><a:font script="Java" typeface="Javanese Text"/><a:font script="Lisu" typeface="Segoe UI"/><a:font script="Mymr" typeface="Myanmar Text"/><a:font script="Nkoo" typeface="Ebrima"/><a:font script="Olck" typeface="Nirmala UI"/><a:font script="Osma" typeface="Ebrima"/><a:font script="Phag" typeface="Phagspa"/><a:font script="Syrn" typeface="Estrangelo Edessa"/><a:font script="Syrj" typeface="Estrangelo Edessa"/><a:font script="Syre" typeface="Estrangelo Edessa"/><a:font script="Sora" typeface="Nirmala UI"/><a:font script="Tale" typeface="Microsoft Tai Le"/><a:font script="Talu" typeface="Microsoft New Tai Lue"/><a:font script="Tfng" typeface="Ebrima"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:lumMod val="110000"/><a:satMod val="105000"/><a:tint val="67000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="103000"/><a:tint val="73000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="109000"/><a:tint val="81000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:satMod val="103000"/><a:lumMod val="102000"/><a:tint val="94000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:satMod val="110000"/><a:lumMod val="100000"/><a:shade val="100000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="99000"/><a:satMod val="120000"/><a:shade val="78000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="6350" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="12700" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="19050" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="57150" dist="19050" dir="5400000" algn="ctr" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="63000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:solidFill><a:schemeClr val="phClr"><a:tint val="95000"/><a:satMod val="170000"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="93000"/><a:satMod val="150000"/><a:shade val="98000"/><a:lumMod val="102000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:tint val="98000"/><a:satMod val="130000"/><a:shade val="90000"/><a:lumMod val="103000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="63000"/><a:satMod val="120000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/><a:extLst><a:ext uri="{05A4C25C-085E-4340-85A3-A5531E510DB2}"><thm15:themeFamily xmlns:thm15="http://schemas.microsoft.com/office/thememl/2012/main" name="Office Theme" id="{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}" vid="{4A3C46E8-61CC-4603-A589-7422A47A8E4A}"/></a:ext></a:extLst></a:theme>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1423
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1424 // xl\workbook.xml
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1425 const xlWorkbookXml = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1426 <workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x15 xr xr6 xr10 xr2" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision" xmlns:xr6="http://schemas.microsoft.com/office/spreadsheetml/2016/revision6" xmlns:xr10="http://schemas.microsoft.com/office/spreadsheetml/2016/revision10" xmlns:xr2="http://schemas.microsoft.com/office/spreadsheetml/2015/revision2"><fileVersion appName="xl" lastEdited="7" lowestEdited="7" rupBuild="20325"/><workbookPr defaultThemeVersion="166925"/><mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"><mc:Choice Requires="x15"><x15ac:absPath url="C:\Users\jqwidgets\Desktop\" xmlns:x15ac="http://schemas.microsoft.com/office/spreadsheetml/2010/11/ac"/></mc:Choice></mc:AlternateContent><xr:revisionPtr revIDLastSave="0" documentId="13_ncr:1_{0DEDCB6D-5403-4CD8-AAA5-59B6D238A8B6}" xr6:coauthVersionLast="34" xr6:coauthVersionMax="34" xr10:uidLastSave="{00000000-0000-0000-0000-000000000000}"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="19200" windowHeight="6950" xr2:uid="{0CB664E6-3800-4A88-B158-B46A682E7484}"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><calcPr calcId="179021"/><extLst><ext uri="{140A7094-0E35-4892-8432-C4D2E57EDEB5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:workbookPr chartTrackingRefBase="1"/></ext></extLst></workbook>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1427
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1428 // [Content_Types].xml
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1429 const Content_TypesXml = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1430 <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="bin" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings"/><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/><Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/><Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/><Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/><Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/></Types>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1431
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1432 return {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1433 _relsRels: _relsRels,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1434 docPropsAppXml: docPropsAppXml,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1435 docPropsCoreXml: docPropsCoreXml,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1436 xl_relsWorkbookXmlRels: xl_relsWorkbookXmlRels,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1437 xlThemeTheme1Xml: xlThemeTheme1Xml,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1438 xlWorkbookXml: xlWorkbookXml,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1439 Content_TypesXml: Content_TypesXml
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1440 };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1441 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1442
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1443 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1444 * Generates default style object (for use in XLSX export).
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1445 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1446 generateDefaultStyle(data) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1447 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1448 defaultStyle = {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1449 datafields = that.datafields,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1450 firstRecord = that.complexHeader ? data[that.complexHeader.length] : data[+that.exportHeader];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1451
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1452 if (!firstRecord) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1453 return defaultStyle;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1454 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1455
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1456 for (let i = 0; i < datafields.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1457 const sampleValue = firstRecord[datafields[i]];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1458
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1459 if (sampleValue instanceof Date) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1460 if (!defaultStyle.columns) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1461 defaultStyle.columns = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1462 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1463
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1464 defaultStyle.columns[datafields[i]] = { format: 'd' };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1465 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1466 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1467
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1468 return defaultStyle;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1469 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1470
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1471 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1472 * Generates group row.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1473 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1474 generateGroupRow(details) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1475 const rowNumber = details.rowNumber,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1476 from = 'A' + rowNumber,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1477 recordXML = ` <row r="${rowNumber}" outlineLevel="${details.outlineLevel}" spans="1:${details.numberOfColumns}"${this.getCustomRowHeight(rowNumber - 1)} x14ac:dyDescent="0.45">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1478 <c r="${from}" t="s" s="0">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1479 <v>${details.sharedStringIndex}</v>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1480 </c>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1481 </row>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1482
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1483 details.mergedCells.push({ from: from, to: this.columnsArray[details.numberOfColumns - 1] + rowNumber });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1484
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1485 return recordXML;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1486 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1487
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1488 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1489 * Generates sharedStrings.xml.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1490 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1491 generateSharedStrings(data) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1492 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1493 datafields = that.datafields,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1494 collection = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1495 let xml = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1496 count = 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1497 uniqueCount = 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1498
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1499 function addSharedString(currentValue) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1500 count++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1501
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1502 if (collection.indexOf(currentValue) === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1503 uniqueCount++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1504 collection.push(currentValue);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1505
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1506 currentValue = currentValue.replace(/&(?!amp;)/g, '&amp;');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1507 currentValue = currentValue.replace(/'/g, '&apos;');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1508 currentValue = currentValue.replace(/"/g, '&quot;');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1509 currentValue = currentValue.replace(/>/g, '&gt;');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1510 currentValue = currentValue.replace(/</g, '&lt;');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1511
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1512 xml += `<si><t>${currentValue}</t></si>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1513 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1514 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1515
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1516 for (let i = 0; i < data.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1517 const currentRecord = data[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1518
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1519 for (let j = 0; j < datafields.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1520 let currentValue = currentRecord[datafields[j]];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1521
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1522 if (typeof currentValue !== 'string') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1523 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1524 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1525
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1526 addSharedString(currentValue);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1527 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1528 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1529
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1530 if (that.groupLabels) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1531 for (let i = 0; i < that.groupLabels.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1532 addSharedString(that.groupLabels[i]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1533 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1534 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1535
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1536 xml = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1537 <sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="${count}" uniqueCount="${uniqueCount}">${xml}</sst>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1538
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1539 return { collection: collection, xml: xml };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1540 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1541
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1542 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1543 * Generates sheet1.xml.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1544 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1545 generateSheet1(data, sharedStrings) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1546 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1547 numberOfColumns = that.columnsArray.length,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1548 numberOfRows = data.length,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1549 dimensionEnd = that.columnsArray[numberOfColumns - 1] + numberOfRows,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1550 datafields = that.datafields,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1551 autoFilter = that.getFilters(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1552 mergedCells = [].concat(that.complexHeaderMergedCells);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1553
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1554 let xmlContent = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1555 <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac xr xr2 xr3" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision" xmlns:xr2="http://schemas.microsoft.com/office/spreadsheetml/2015/revision2" xmlns:xr3="http://schemas.microsoft.com/office/spreadsheetml/2016/revision3" xr:uid="{7F25248B-C640-4C64-AD47-C0EA0E5D90D0}">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1556 <sheetPr filterMode="${autoFilter !== ''}" />
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1557 <dimension ref="A1:${dimensionEnd}" />
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1558 <sheetViews>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1559 <sheetView tabSelected="1" workbookViewId="0" />
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1560 </sheetViews>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1561 <sheetFormatPr defaultRowHeight="14.5" x14ac:dyDescent="0.35" />${that.getCustomColumnWidths()}
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1562 <sheetData>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1563
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1564 function r(col, row) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1565 return that.columnsArray[col] + row;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1566 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1567
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1568 for (let i = 0; i <= data.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1569 const currentRecord = data[i],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1570 rowNumber = i + 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1571 let collapsed = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1572
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1573 if (that.actualHierarchy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1574 const previousRecord = data[i - 1];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1575
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1576 if (previousRecord && previousRecord._collapsed &&
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1577 (!currentRecord || previousRecord._level > currentRecord._level)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1578 collapsed = ' collapsed="true"';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1579 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1580 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1581
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1582 if (i === data.length) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1583 if (collapsed) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1584 xmlContent += ` <row r="${rowNumber}" outlineLevel="${Math.max(data[i - 1]._level - 2, 0)}" hidden="false" collapsed="true" />\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1585 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1586
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1587 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1588 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1589
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1590 let recordXML = ` <row r="${rowNumber}"${that.getOutlineLevel(currentRecord)} hidden="${currentRecord._hidden || currentRecord._collapsed || false}"${collapsed} spans="1:${numberOfColumns}"${that.getCustomRowHeight(rowNumber - 1)} x14ac:dyDescent="0.45">\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1591
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1592 for (let j = 0; j < datafields.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1593 const s = that.getXLSXCellStyle(r(j, rowNumber));
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1594
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1595 recordXML += that.getActualCellData(currentRecord[datafields[j]], { r: r(j, rowNumber), s: s }, sharedStrings);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1596 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1597
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1598 recordXML += ' </row>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1599 xmlContent += recordXML;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1600 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1601
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1602 xmlContent += ` </sheetData>${that.conditionalFormattingXLSX.conditions}${autoFilter}${that.getMergedCells(mergedCells)}
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1603 <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3" />
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1604 <pageSetup paperSize="9" orientation="portrait" r:id="rId1" />
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1605 </worksheet>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1606
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1607 return xmlContent;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1608 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1609
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1610 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1611 * Generates sheet1.xml with grouping.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1612 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1613 generateSheet1WithGrouping(data, sharedStrings) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1614 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1615 numberOfColumns = that.columnsArray.length,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1616 numberOfRows = data.length,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1617 dimensionEnd = that.columnsArray[numberOfColumns - 1] + numberOfRows,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1618 datafields = that.datafields,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1619 mergedCells = [].concat(that.complexHeaderMergedCells);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1620
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1621 let xmlContent = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1622 <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac xr xr2 xr3" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision" xmlns:xr2="http://schemas.microsoft.com/office/spreadsheetml/2015/revision2" xmlns:xr3="http://schemas.microsoft.com/office/spreadsheetml/2016/revision3" xr:uid="{7F25248B-C640-4C64-AD47-C0EA0E5D90D0}">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1623 <dimension ref="A1:${dimensionEnd}" />
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1624 <sheetViews>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1625 <sheetView tabSelected="1" workbookViewId="0" />
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1626 </sheetViews>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1627 <sheetFormatPr defaultRowHeight="14.5" x14ac:dyDescent="0.35" />${that.getCustomColumnWidths()}
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1628 <sheetData>\n`,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1629 rowNumberCorrection = 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1630 groupsHandled = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1631
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1632 function r(col, row) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1633 return that.columnsArray[col] + row;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1634 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1635
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1636 mainLoop:
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1637 for (let i = 0; i < data.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1638 const currentRecord = data[i],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1639 rowNumber = i + 1 + rowNumberCorrection;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1640 let outlineLevel = 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1641 outlineXML = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1642
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1643 if (!that.exportHeader ||
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1644 (!that.complexHeader && i !== 0) ||
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1645 (that.complexHeader && i >= that.complexHeader.length)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1646 let groupId = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1647
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1648 for (let k = 0; k < that.groupBy.length; k++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1649 const datafield = that.groupBy[k],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1650 currentGroup = currentRecord[datafield],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1651 currentGroupLabel = that.groups[datafield][currentGroup];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1652
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1653 groupId += currentGroup;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1654
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1655 if (groupsHandled.indexOf(groupId) === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1656 let sharedStringIndex = sharedStrings.indexOf(currentGroupLabel);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1657
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1658 xmlContent += that.generateGroupRow({
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1659 rowNumber: rowNumber,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1660 outlineLevel: outlineLevel,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1661 numberOfColumns: numberOfColumns,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1662 sharedStringIndex: sharedStringIndex,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1663 mergedCells: mergedCells
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1664 });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1665 groupsHandled.push(groupId);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1666 i--;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1667 rowNumberCorrection++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1668 continue mainLoop;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1669 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1670
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1671 outlineLevel++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1672 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1673
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1674 outlineXML = ` outlineLevel="${outlineLevel}"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1675 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1676
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1677 let recordXML = ` <row r="${rowNumber}"${outlineXML} spans="1:${numberOfColumns}"${that.getCustomRowHeight(rowNumber - 1)} x14ac:dyDescent="0.45">\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1678
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1679 for (let j = 0; j < datafields.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1680 const s = that.getXLSXCellStyle(r(j, i + 1));
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1681
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1682 recordXML += that.getActualCellData(currentRecord[datafields[j]], { r: r(j, rowNumber), s: s }, sharedStrings);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1683 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1684
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1685 recordXML += ' </row>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1686 xmlContent += recordXML;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1687 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1688
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1689 xmlContent += ` </sheetData>${that.getMergedCells(mergedCells)}
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1690 <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3" />
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1691 <pageSetup paperSize="9" orientation="portrait" r:id="rId1" />
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1692 </worksheet>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1693
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1694 return xmlContent;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1695 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1696
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1697 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1698 * Gets actual spreadsheet cell data.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1699 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1700 getActualCellData(currentValue, details, sharedStrings) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1701 const r = details.r,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1702 s = details.s || ' s="0"';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1703
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1704 if (typeof currentValue === 'string') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1705 return ` <c r="${r}" t="s"${s}>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1706 <v>${sharedStrings.indexOf(currentValue)}</v>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1707 </c>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1708 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1709
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1710 if (typeof currentValue === 'boolean') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1711 return ` <c r="${r}" t="b"${s}>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1712 <v>${+currentValue}</v>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1713 </c>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1714 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1715
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1716 if (currentValue instanceof Date) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1717 const excelDate = (currentValue.getTime() + this.timeBetween1900And1970) / 86400000 + 2;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1718
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1719 return ` <c r="${r}"${s}>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1720 <v>${excelDate}</v>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1721 </c>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1722 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1723
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1724 // numeric cells
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1725 return ` <c r="${r}"${s}>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1726 <v>${currentValue}</v>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1727 </c>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1728 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1729
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1730 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1731 * Gets column labels.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1732 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1733 getColumnsArray() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1734 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1735 numberOfColumns = that.datafields.length,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1736 columnsCollection = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1737
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1738 function getIterator(i) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1739 if (i < 26) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1740 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1741 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1742
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1743 return String.fromCharCode(64 + Math.floor(i / 26));
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1744 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1745
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1746 for (let i = 0; i < numberOfColumns; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1747 columnsCollection.push(getIterator(i) + String.fromCharCode(65 + (i < 26 ? i : i % 26)));
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1748 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1749
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1750 that.columnsArray = columnsCollection;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1751 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1752
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1753 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1754 * Gets column style.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1755 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1756 getColumnStyle() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1757 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1758 style = that.style;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1759
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1760 if (!style) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1761 return ` .header { border: 1px solid black; padding: 5px; }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1762 .column { border: 1px solid black; padding: 5px; }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1763 .group { background-color: #FFFFFF; color: #000000; font-weight: bold; }`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1764 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1765
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1766 const styles = {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1767 header: 'border: 1px solid black; padding: 5px; ',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1768 column: 'white-space: nowrap; overflow: hidden; border: 1px solid black; padding: 5px; ',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1769 group: 'background-color: #FFFFFF; color: #000000; font-weight: bold; '
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1770 },
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1771 sampleRecord = that.data[0];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1772 let generatedStyle = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1773
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1774 const headerDefinition = style.header || {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1775
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1776 for (let prop in headerDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1777 if (!headerDefinition.hasOwnProperty(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1778 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1779 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1780
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1781 const value = headerDefinition[prop];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1782
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1783 if (sampleRecord[prop]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1784 if (!styles['header' + prop]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1785 styles['header' + prop] = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1786 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1787
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1788 for (let columnProp in value) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1789 if (value.hasOwnProperty(columnProp)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1790 const css = window.jqxToDash(columnProp) + ': ' + value[columnProp] + '; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1791
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1792 styles['header' + prop] += css;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1793
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1794 if (columnProp === 'width') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1795 if (!styles['column' + prop]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1796 styles['column' + prop] = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1797 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1798
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1799 styles['column' + prop] += css;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1800 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1801 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1802 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1803
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1804 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1805 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1806
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1807 if (prop === 'height' && that.complexHeader) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1808 styles.header += 'height: ' + parseInt(headerDefinition[prop], 10) / that.complexHeader.length + 'px; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1809 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1810 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1811 styles.header += window.jqxToDash(prop) + ': ' + headerDefinition[prop] + '; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1812 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1813 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1814
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1815 const columnsDefinition = style.columns || {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1816
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1817 for (let prop in columnsDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1818 if (!columnsDefinition.hasOwnProperty(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1819 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1820 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1821
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1822 const value = columnsDefinition[prop];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1823
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1824 if (sampleRecord[prop]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1825 if (!styles['column' + prop]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1826 styles['column' + prop] = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1827 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1828
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1829 for (let columnProp in value) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1830 if (isNaN(columnProp) && value.hasOwnProperty(columnProp) && columnProp !== 'format') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1831 styles['column' + prop] += window.jqxToDash(columnProp) + ': ' + value[columnProp] + '; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1832 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1833 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1834
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1835 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1836 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1837
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1838 styles.column += window.jqxToDash(prop) + ': ' + value + '; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1839 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1840
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1841 for (let prop in styles) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1842 if (styles.hasOwnProperty(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1843 generatedStyle += ` .${prop} { ${styles[prop]}}\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1844 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1845 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1846
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1847 return generatedStyle;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1848 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1849
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1850 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1851 * Gets custom column widths.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1852 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1853 getCustomColumnWidths() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1854 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1855
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1856 if (!that.style || !that.columnWidth || that.columnWidth.length === 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1857 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1858 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1859
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1860 let xml = '\n <cols>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1861
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1862 for (let i = 0; i < that.columnWidth.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1863 let width = that.columnWidth[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1864
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1865 if (width !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1866 width = Math.round(parseFloat(width)) / 11;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1867 xml += ` <col min="${i + 1}" max="${i + 1}" width="${width}" customWidth="1" />\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1868 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1869 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1870
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1871 xml += ' </cols>';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1872
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1873 return xml;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1874 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1875
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1876 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1877 * Returns customFilter tag.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1878 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1879 getCustomFilter(value, condition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1880 let operator = 'equal',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1881 val;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1882
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1883 if (value instanceof Date) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1884 value = (value.getTime() + this.timeBetween1900And1970) / 86400000 + 2;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1885 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1886
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1887 condition = condition.toUpperCase();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1888
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1889 switch (condition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1890 case 'EMPTY':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1891 val = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1892 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1893 case 'NOT_EMPTY':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1894 val = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1895 operator = 'notEqual';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1896 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1897 case 'CONTAINS':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1898 case 'CONTAINS_CASE_SENSITIVE':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1899 val = `*${value}*`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1900 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1901 case 'DOES_NOT_CONTAIN':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1902 case 'DOES_NOT_CONTAIN_CASE_SENSITIVE':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1903 val = `*${value}*`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1904 operator = 'notEqual';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1905 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1906 case 'STARTS_WITH':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1907 case 'STARTS_WITH_CASE_SENSITIVE':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1908 val = `${value}*`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1909 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1910 case 'ENDS_WITH':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1911 case 'ENDS_WITH_CASE_SENSITIVE':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1912 val = `*${value}`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1913 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1914 case 'EQUAL':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1915 case 'EQUAL_CASE_SENSITIVE':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1916 val = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1917 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1918 case 'NULL':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1919 val = null;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1920 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1921 case 'NOT_NULL':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1922 val = null;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1923 operator = 'notEqual';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1924 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1925 case 'NOT_EQUAL':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1926 val = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1927 operator = 'notEqual';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1928 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1929 case 'LESS_THAN':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1930 val = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1931 operator = 'lessThan';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1932 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1933 case 'LESS_THAN_OR_EQUAL':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1934 val = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1935 operator = 'lessThanOrEqual';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1936 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1937 case 'GREATER_THAN':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1938 val = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1939 operator = 'greaterThan';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1940 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1941 case 'GREATER_THAN_OR_EQUAL':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1942 val = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1943 operator = 'greaterThanOrEqual';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1944 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1945 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1946
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1947 return ` <customFilter val="${val}" operator="${operator}"/>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1948 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1949
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1950 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1951 * Gets custom row height.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1952 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1953 getCustomRowHeight(row) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1954 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1955
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1956 if (that.style) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1957 return that.rowHeight[row] || that.defaultRowHeight || '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1958 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1959
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1960 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1961 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1962
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1963 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1964 * Gets datafields.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1965 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1966 getDatafields(data) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1967 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1968 sampleRecord = data[0],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1969 datafields = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1970
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1971 for (let prop in sampleRecord) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1972 if (sampleRecord.hasOwnProperty(prop) && prop.charAt(0) !== '_') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1973 datafields.push(prop);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1974 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1975 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1976
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1977 that.datafields = datafields;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1978 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1979
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1980 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1981 * Returns autoFilter XML.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1982 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1983 getFilters() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1984 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1985 filterBy = that.filterBy;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1986
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1987 if (!filterBy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1988 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1989 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1990
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1991 let xml = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1992
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1993 for (let datafield in filterBy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1994 if (filterBy.hasOwnProperty(datafield)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1995 const colId = that.datafields.indexOf(datafield);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1996
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1997 if (colId === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1998 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1999 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2000
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2001 const filterDetails = filterBy[datafield],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2002 filters = filterDetails.filters;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2003
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2004 xml += ` <filterColumn colId="${colId}">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2005 <customFilters and="${!filterDetails.operator}">\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2006
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2007 for (let i = 0; i < filters.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2008 xml += that.getCustomFilter(filters[i].value, filters[i].condition);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2009 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2010
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2011 xml += ` </customFilters>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2012 </filterColumn>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2013 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2014 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2015
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2016 if (!xml) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2017 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2018 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2019
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2020 xml = `\n <autoFilter ref="A1:${that.columnsArray[that.columnsArray.length - 1] + that.data.length}">\n${xml}\n </autoFilter>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2021 return xml;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2022 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2023
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2024 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2025 * Gets group labels based on data.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2026 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2027 getGroupLabels(data) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2028 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2029 startIndex = that.xlsxStartIndex !== undefined ? that.xlsxStartIndex : +that.exportHeader,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2030 groups = {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2031 groupLabels = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2032
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2033 for (let i = startIndex; i < data.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2034 const currentRecord = data[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2035
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2036 for (let j = 0; j < that.groupBy.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2037 const datafield = that.groupBy[j],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2038 currentValue = currentRecord[datafield];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2039 let group = groups[datafield];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2040
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2041 if (group === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2042 groups[datafield] = {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2043 group = groups[datafield];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2044 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2045
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2046 if (group[currentValue] === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2047 group[currentValue] = (that.exportHeader ? data[startIndex - 1][datafield] : datafield) + ': ' + currentValue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2048 groupLabels.push(group[currentValue]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2049 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2050 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2051 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2052
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2053 that.groups = groups;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2054 that.groupLabels = groupLabels;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2055 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2056
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2057 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2058 * Gets the header content when exporting to HTML.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2059 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2060 getHTMLHeader(datafields, data) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2061 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2062 let header = '\n <thead>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2063
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2064 if (!that.complexHeader) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2065 header += ' <tr>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2066
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2067 for (let j = 0; j < datafields.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2068 const datafield = datafields[j];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2069
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2070 header += ` <th class="header header${datafield}">${data[0][datafield]}</th>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2071 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2072
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2073 header += ' </tr>\n </thead>';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2074 return header;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2075 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2076
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2077 for (let j = 0; j < that.complexHeader.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2078 const row = that.complexHeader[j];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2079
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2080 header += ' <tr>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2081
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2082 for (let k = 0; k < row.length; k++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2083 const currentLabel = row[k];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2084 let colspan = 1, rowspan = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2085
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2086 if ((row[k - 1] && row[k - 1] === currentLabel) ||
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2087 (that.complexHeader[j - 1] && (that.complexHeader[j - 1][k] === currentLabel))) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2088 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2089 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2090
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2091 let iterator = k + 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2092
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2093 while (row[iterator] && row[iterator] === row[iterator - 1]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2094 colspan++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2095 iterator++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2096 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2097
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2098 iterator = j + 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2099
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2100 while (that.complexHeader[iterator] && that.complexHeader[iterator][k] === currentLabel) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2101 rowspan++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2102 iterator++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2103 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2104
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2105 const datafield = j === that.complexHeader.length - 1 || rowspan + j === that.complexHeader.length ?
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2106 ' header' + datafields[k] : '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2107
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2108 header += ` <th class="header${datafield}" colspan="${colspan}" rowspan="${rowspan}">${currentLabel}</th>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2109 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2110
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2111 header += ' </tr>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2112 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2113
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2114 header += ' </thead>';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2115 return header;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2116 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2117
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2118 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2119 * Gets conditional formatting XML.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2120 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2121 getConditionalFormatting() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2122 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2123 conditionalFormatting = that.conditionalFormatting;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2124
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2125 if (!conditionalFormatting) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2126 that.conditionalFormattingXLSX = { conditions: '', styles: '' };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2127 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2128 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2129
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2130 const dxfCodes = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2131 let conditionsXml = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2132 stylesXml = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2133
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2134 for (let i = conditionalFormatting.length - 1; i >= 0; i--) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2135 const columnFormat = conditionalFormatting[i],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2136 columnLetter = that.columnsArray[that.datafields.indexOf(columnFormat.column)],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2137 startCell = columnLetter + (that.xlsxStartIndex + 1),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2138 sqref = startCell + ':' + columnLetter + (that.data.length),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2139 dxfCode = columnFormat.background + columnFormat.color,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2140 attr = that.getConditionalAttributes(columnFormat, startCell);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2141 let dxfId = dxfCodes.indexOf(dxfCode);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2142
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2143 if (dxfId === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2144 const newDxf = ` <dxf>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2145 <font>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2146 <b val="0"/>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2147 <i val="0"/>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2148 <color rgb="${columnFormat.color === 'White' ? 'FFFFFFFF' : 'FF000000'}"/>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2149 <sz val="10"/>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2150 </font>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2151 <fill>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2152 <patternFill>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2153 <bgColor rgb="${that.toARGB(columnFormat.background)}"/>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2154 </patternFill>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2155 </fill>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2156 </dxf>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2157
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2158 stylesXml += newDxf;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2159 dxfId = dxfCodes.length;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2160 dxfCodes.push(dxfCode);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2161 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2162
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2163 conditionsXml += ` <conditionalFormatting sqref="${sqref}">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2164 <cfRule dxfId="${dxfId}" text="${attr.text}" rank="${attr.rank}" percent="${attr.percent}" bottom="${attr.bottom}" equalAverage="${attr.equalAverage}" aboveAverage="${attr.aboveAverage}"${attr.operator}${attr.timePeriod} priority="${i + 2}" type="${attr.type}">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2165 ${attr.formula} </cfRule>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2166 </conditionalFormatting>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2167 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2168
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2169 stylesXml = ` <dxfs count="${dxfCodes.length}">\n${stylesXml} </dxfs>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2170
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2171 that.conditionalFormattingXLSX = { conditions: conditionsXml, styles: stylesXml };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2172 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2173
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2174 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2175 * Gets conditional formatting XML attributes.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2176 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2177 getConditionalAttributes(columnFormat, startCell) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2178 let condition = columnFormat.condition,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2179 comparator = columnFormat.comparator,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2180 text = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2181 rank = 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2182 percent = 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2183 bottom = 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2184 equalAverage = 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2185 aboveAverage = 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2186 operator = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2187 timePeriod = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2188 type = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2189 formula = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2190
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2191 switch (condition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2192 case 'equal':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2193 operator = 'equal';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2194 type = 'cellIs';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2195 formula = ` <formula>${comparator}</formula>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2196 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2197 case 'lessThan':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2198 operator = 'lessThan';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2199 type = 'cellIs';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2200 formula = ` <formula>${comparator}</formula>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2201 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2202 case 'greaterThan':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2203 operator = 'greaterThan';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2204 type = 'cellIs';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2205 formula = ` <formula>${comparator}</formula>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2206 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2207 case 'notEqual':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2208 operator = 'notEqual';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2209 type = 'cellIs';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2210 formula = ` <formula>${comparator}</formula>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2211 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2212 case 'between':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2213 operator = 'between';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2214 type = 'cellIs';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2215 formula = ` <formula>${columnFormat.min}</formula>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2216 <formula>${columnFormat.max}</formula>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2217 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2218 case 'duplicate':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2219 type = 'duplicateValues';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2220 formula = ' <formula>0</formula>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2221 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2222 case 'topNItems':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2223 rank = comparator;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2224 type = 'top10';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2225 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2226 case 'bottomNItems':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2227 rank = comparator;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2228 bottom = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2229 type = 'top10';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2230 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2231 case 'topNPercent':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2232 rank = comparator;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2233 percent = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2234 type = 'top10';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2235 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2236 case 'bottomNPercent':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2237 rank = comparator;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2238 percent = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2239 bottom = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2240 type = 'top10';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2241 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2242 case 'aboveAverage':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2243 aboveAverage = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2244 type = 'aboveAverage';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2245 formula = ' <formula>0</formula>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2246 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2247 case 'belowAverage':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2248 type = 'aboveAverage';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2249 formula = ' <formula>0</formula>\n';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2250 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2251 case 'contains':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2252 text = comparator;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2253 operator = 'containsText';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2254 type = 'containsText';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2255 formula = ` <formula>NOT(ISERROR(SEARCH("${comparator}",${startCell})))</formula>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2256 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2257 case 'doesNotContain':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2258 text = comparator;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2259 operator = 'notContains';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2260 type = 'notContainsText';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2261 formula = ` <formula>ISERROR(SEARCH("${comparator}",${startCell}))</formula>\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2262 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2263 case 'dateOccur':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2264 timePeriod = ` timePeriod="${comparator}"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2265 type = 'timePeriod';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2266 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2267 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2268
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2269 if (operator) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2270 operator = ` operator="${operator}" `;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2271 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2272
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2273 return {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2274 text: text,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2275 rank: rank,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2276 percent: percent,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2277 bottom: bottom,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2278 equalAverage: equalAverage,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2279 aboveAverage: aboveAverage,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2280 operator: operator,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2281 timePeriod: timePeriod,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2282 type: type,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2283 formula: formula
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2284 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2285 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2286
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2287 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2288 * Gets merged cells XML.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2289 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2290 getMergedCells(mergedCells) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2291 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2292
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2293 let mergeCellsXml = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2294
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2295 for (let i = 0; i < mergedCells.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2296 if (mergedCells[i].from === mergedCells[i].to) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2297 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2298 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2299
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2300 mergeCellsXml += `\n <mergeCell ref="${mergedCells[i].from}:${mergedCells[i].to}" />\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2301 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2302
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2303 if (that.mergedCells) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2304 for (let i = 0; i < that.mergedCells.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2305 const cellDefinition = that.mergedCells[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2306
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2307 if (cellDefinition.rowspan < 2 && cellDefinition.colspan < 2) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2308 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2309 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2310
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2311 const from = that.columnsArray[cellDefinition.cell[0]] + (cellDefinition.cell[1] + that.xlsxStartIndex + 1),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2312 to = that.columnsArray[cellDefinition.cell[0] + cellDefinition.colspan - 1] + (cellDefinition.cell[1] + that.xlsxStartIndex + cellDefinition.rowspan);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2313
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2314 mergeCellsXml += `\n <mergeCell ref="${from}:${to}" />\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2315 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2316 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2317
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2318 if (mergeCellsXml) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2319 mergeCellsXml = `\n <mergeCells count="${mergedCells.length}">${mergeCellsXml} </mergeCells>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2320 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2321
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2322 return mergeCellsXml;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2323 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2324
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2325 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2326 * Gets numFmt index.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2327 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2328 getNumFmtIndex(format, numFmts) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2329 let index = numFmts.collection.indexOf(format);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2330
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2331 if (index === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2332 index = numFmts.collection.length + 100;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2333 numFmts.collection.push(format);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2334 numFmts.xml += `<numFmt numFmtId="${index}" formatCode="${format}"/>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2335 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2336 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2337 index += 100;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2338 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2339
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2340 return index;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2341 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2342
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2343 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2344 * Returns outlineLevel.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2345 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2346 getOutlineLevel(record) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2347 if (!this.actualHierarchy || record._level === 1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2348 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2349 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2350
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2351 return ` outlineLevel="${record._level - 1}"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2352 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2353
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2354 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2355 * Gets row style.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2356 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2357 getRowStyle() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2358 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2359 style = that.style;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2360
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2361 if (!style) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2362 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2363 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2364
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2365 const rowsDefinition = style.rows;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2366
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2367 if (!rowsDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2368 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2369 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2370
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2371 const styles = {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2372 row: ''
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2373 };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2374 let generatedStyle = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2375
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2376 for (let prop in rowsDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2377 if (!rowsDefinition.hasOwnProperty(prop) ||
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2378 prop === 'alternationCount' ||
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2379 prop === 'alternationStart' ||
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2380 prop === 'alternationEnd') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2381 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2382 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2383
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2384 const value = rowsDefinition[prop];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2385
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2386 if (prop.indexOf('alt') !== -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2387 const i = prop.slice(16, 17),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2388 property = prop.slice(17);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2389
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2390 if (!styles['rowN' + i]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2391 styles['rowN' + i] = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2392 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2393
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2394 if (property === 'Color') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2395 styles['rowN' + i] += 'color : ' + value + '; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2396 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2397 else if (property === 'BorderColor') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2398 styles['rowN' + i] += 'border-color : ' + value + '; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2399 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2400 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2401 styles['rowN' + i] += 'background-color : ' + value + '; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2402 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2403
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2404 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2405 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2406
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2407 if (!isNaN(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2408 if (!styles['row' + prop]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2409 styles['row' + prop] = '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2410 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2411
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2412 for (let rowProp in value) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2413 if (value.hasOwnProperty(rowProp)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2414 styles['row' + prop] += window.jqxToDash(rowProp) + ': ' + value[rowProp] + '; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2415 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2416 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2417
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2418 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2419 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2420
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2421 styles.row += window.jqxToDash(prop) + ': ' + rowsDefinition[prop] + '; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2422 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2423
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2424 let keys = Object.keys(styles);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2425
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2426 keys.sort(function (a, b) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2427 if (a === 'row') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2428 return -1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2429 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2430
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2431 if (b === 'row') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2432 return 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2433 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2434
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2435 const aIsNum = !isNaN(a.slice(3)),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2436 bIsNum = !isNaN(b.slice(3));
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2437
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2438 if (aIsNum && !bIsNum) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2439 return 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2440 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2441
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2442 if (!aIsNum && bIsNum) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2443 return -1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2444 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2445
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2446 return +(a < b);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2447 });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2448
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2449 for (let i = 0; i < keys.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2450 generatedStyle += ` .${keys[i]} { ${styles[keys[i]]}}\n`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2451 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2452
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2453 return generatedStyle;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2454 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2455
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2456 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2457 * Gets table style.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2458 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2459 getTableStyle() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2460 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2461 style = that.style;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2462
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2463 if (!style) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2464 return ' style="table-layout: fixed; border: 1px solid black; border-collapse: collapse;"';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2465 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2466
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2467 let generatedStyle = 'table-layout: fixed; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2468
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2469 for (let prop in style) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2470 if (style.hasOwnProperty(prop) && ['header', 'columns', 'rows'].indexOf(prop) === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2471 generatedStyle += window.jqxToDash(prop) + ': ' + style[prop] + '; ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2472 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2473 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2474
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2475 if (generatedStyle) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2476 generatedStyle = ' style="' + generatedStyle + '"';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2477 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2478
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2479 return generatedStyle;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2480 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2481
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2482 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2483 * Gets the "s" (style) attribute of an XLSX cell.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2484 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2485 getXLSXCellStyle(r) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2486 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2487
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2488 if (that.cellStyleMapping[r] !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2489 return ` s="${that.cellStyleMapping[r]}"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2490 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2491
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2492 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2493 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2494
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2495 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2496 * Gets the "s" (style) attribute of an XLSX cell.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2497 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2498 getXLSXFormat(format, cellValue) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2499 if (typeof cellValue === 'number') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2500 let precision = parseFloat(format.slice(1)) || 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2501 precisionCode = precision > 0 ? '.' + ('0').repeat(precision) : '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2502
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2503 format = format.slice(0, 1);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2504
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2505 switch (format) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2506 case 'C':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2507 case 'c':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2508 return '\$#,0' + precisionCode;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2509 case 'D':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2510 case 'd':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2511 if (precision) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2512 return ('0').repeat(precision);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2513 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2514
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2515 return '0';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2516 case 'E':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2517 case 'e':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2518 return '0' + precisionCode + format + '000';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2519 case 'F':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2520 case 'f':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2521 return '0' + precisionCode;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2522 case 'N':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2523 case 'n':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2524 return '#,0' + precisionCode;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2525 case 'P':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2526 case 'p':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2527 return '#,0' + precisionCode + ' %';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2528 default:
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2529 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2530 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2531 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2532 else if (cellValue instanceof Date) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2533 switch (format) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2534 case 'd':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2535 return 'm/d/yyyy';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2536 case 'D':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2537 return 'nnnnmmmm dd, yyyy';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2538 case 't':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2539 return 'h:m AM/PM';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2540 case 'T':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2541 return 'h:mm:ss AM/PM';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2542 case 'f':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2543 return 'nnnnmmmm dd, yyyy h:m AM/PM';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2544 case 'F':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2545 return 'nnnnmmmm dd, yyyy h:mm:ss AM/PM';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2546 case 'M':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2547 return 'mmmm d';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2548 case 'Y':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2549 return 'yyyy mmmm';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2550 case 'FP':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2551 case 'PP':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2552 return 'yyyy-mm-dd hh:mm:ss';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2553 case 'FT':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2554 case 'PT':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2555 return 'hh:mm:ss';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2556 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2557
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2558 format = format.replace(/f|u|n|p|e|a|x|o/gi, '');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2559 format = format.replace(/tt/gi, 'AM/PM');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2560 format = format.replace(/:{2,}|:\s|:$|\.$/g, '');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2561 format = format.trim();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2562 return format;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2563 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2564 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2565
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2566 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2567 * Processes column styles.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2568 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2569 processColumnStyle(style) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2570 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2571 headerDefinition = style.header,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2572 columnsDefinition = style.columns,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2573 sampleRecord = that.data[0],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2574 startIndex = that.xlsxStartIndex;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2575
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2576 that.columnWidth = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2577
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2578 if (startIndex && headerDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2579 for (let i = 0; i < that.columnsArray.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2580 const columnLetter = that.columnsArray[i],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2581 cell = columnLetter + startIndex,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2582 columnSpecific = headerDefinition[that.datafields[i]];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2583
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2584 for (let prop in headerDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2585 if (headerDefinition.hasOwnProperty(prop) && sampleRecord[prop] === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2586 if (that.complexHeader) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2587 for (let j = 0; j < that.complexHeader.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2588 if (prop === 'height') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2589 that.rowHeight[j] = ` ht="${(parseFloat(headerDefinition.height) / that.complexHeader.length) / 2}"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2590 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2591 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2592 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2593 that.storeCellStyle(columnLetter + (j + 1), prop, headerDefinition[prop]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2594 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2595 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2596 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2597 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2598 if (prop === 'height') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2599 that.rowHeight[0] = ` ht="${parseFloat(headerDefinition.height) / 2}"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2600 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2601 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2602
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2603 that.storeCellStyle(cell, prop, headerDefinition[prop]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2604 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2605 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2606 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2607
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2608 if (!columnSpecific) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2609 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2610 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2611
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2612 for (let prop in columnSpecific) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2613 if (columnSpecific.hasOwnProperty(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2614 if (prop === 'width') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2615 that.columnWidth[i] = columnSpecific.width;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2616 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2617 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2618
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2619 that.storeCellStyle(cell, prop, columnSpecific[prop]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2620 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2621 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2622 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2623 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2624 else if (headerDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2625 for (let i = 0; i < that.columnsArray.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2626 const columnSpecific = headerDefinition[that.datafields[i]];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2627
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2628 if (columnSpecific && columnSpecific.width !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2629 that.columnWidth[i] = columnSpecific.width;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2630 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2631 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2632 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2633
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2634 if (!columnsDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2635 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2636 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2637
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2638 for (let i = startIndex; i < that.data.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2639 for (let j = 0; j < that.columnsArray.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2640 const columnLetter = that.columnsArray[j],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2641 cell = columnLetter + (i + 1),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2642 datafield = that.datafields[j],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2643 columnSpecific = columnsDefinition[datafield];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2644
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2645 for (let prop in columnsDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2646 if (columnsDefinition.hasOwnProperty(prop) && sampleRecord[prop] === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2647 that.storeCellStyle(cell, prop, columnsDefinition[prop]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2648 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2649 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2650
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2651 if (!columnSpecific) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2652 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2653 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2654
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2655 for (let prop in columnSpecific) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2656 if (!isNaN(prop) || !columnSpecific.hasOwnProperty(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2657 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2658 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2659
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2660 that.storeCellStyle(cell, prop, columnSpecific[prop], that.data[i][datafield]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2661 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2662 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2663 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2664 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2665
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2666 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2667 * Processes complex header object.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2668 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2669 processComplexHeader(header, data, format) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2670 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2671 flatHeader = {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2672 processGrouping = ['html', 'jpeg', 'pdf', 'png', 'xlsx'].indexOf(format) !== -1 && header.columngroups,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2673 datafieldMapping = [],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2674 columnGroupHierarchy = {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2675 complexHeader = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2676 let headerDepth = 0;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2677
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2678 function getColumnGroup(columnGroup) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2679 for (let i = 0; i < header.columngroups.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2680 const currentGroupDefinition = header.columngroups[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2681
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2682 if (currentGroupDefinition.name === columnGroup) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2683 return currentGroupDefinition;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2684 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2685 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2686 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2687
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2688 function getColumnGroupHierarchy(groupDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2689 const columnGroups = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2690
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2691 while (groupDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2692 columnGroups.unshift(groupDefinition.label);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2693
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2694 if (groupDefinition.parentGroup) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2695 groupDefinition = getColumnGroup(groupDefinition.parentGroup);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2696 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2697 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2698 return columnGroups;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2699 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2700 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2701 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2702
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2703 if (processGrouping) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2704 for (let i = 0; i < header.columngroups.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2705 const currentGroupDefinition = header.columngroups[i],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2706 groupHierarchy = getColumnGroupHierarchy(currentGroupDefinition);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2707
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2708 columnGroupHierarchy[currentGroupDefinition.name] = groupHierarchy;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2709 headerDepth = Math.max(headerDepth, groupHierarchy.length);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2710 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2711
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2712 headerDepth++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2713
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2714 for (let i = 0; i < headerDepth; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2715 complexHeader[i] = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2716 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2717 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2718
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2719 for (let i = 0; i < header.columns.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2720 const currentColumn = header.columns[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2721
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2722 flatHeader[currentColumn.dataField] = currentColumn.label;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2723
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2724 if (!processGrouping) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2725 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2726 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2727
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2728 datafieldMapping[i] = currentColumn.dataField;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2729 complexHeader[headerDepth - 1][i] = currentColumn.label;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2730
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2731 if (!currentColumn.columnGroup) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2732 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2733 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2734
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2735 const columnGroups = columnGroupHierarchy[currentColumn.columnGroup];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2736
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2737 for (let j = 0; j < columnGroups.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2738 complexHeader[j][i] = columnGroups[j];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2739 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2740 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2741
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2742 if (complexHeader.length > 1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2743 const numberOfDatafields = Object.keys(flatHeader).length;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2744
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2745 for (let i = 0; i < headerDepth - 1; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2746 const entry = {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2747
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2748 for (let j = 0; j < numberOfDatafields; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2749 if (complexHeader[i][j] === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2750 let iterator = i + 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2751
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2752 while (complexHeader[iterator][j] === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2753 iterator++;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2754 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2755
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2756 complexHeader[i][j] = complexHeader[iterator][j];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2757 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2758
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2759 entry[datafieldMapping[j]] = complexHeader[i][j];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2760 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2761
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2762 if (format === 'xlsx') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2763 data.splice(i, 0, entry);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2764 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2765 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2766
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2767 that.complexHeader = complexHeader;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2768
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2769 if (format !== 'xlsx') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2770 data.unshift(flatHeader);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2771 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2772 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2773 data.splice(headerDepth - 1, 0, flatHeader);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2774
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2775 const toMerge = {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2776
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2777 for (let i = 0; i < headerDepth; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2778 for (let j = 0; j < numberOfDatafields; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2779 const label = complexHeader[i][j];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2780
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2781 if (!toMerge[label]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2782 toMerge[label] = { from: [i, j] };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2783 toMerge[label].to = toMerge[label].from;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2784 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2785 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2786 toMerge[label].to = [i, j];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2787 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2788 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2789 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2790
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2791 that.complexHeaderMergeInfo = toMerge;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2792 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2793 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2794 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2795 data.unshift(flatHeader);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2796 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2797 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2798
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2799 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2800 * Processes hierarchical data.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2801 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2802 processHierarchicalData(data, format) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2803 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2804 startIndex = format !== 'xlsx' ? +that.exportHeader : that.xlsxStartIndex,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2805 siblingGroups = {},
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2806 processedData = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2807 let maxLevel = 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2808 actualHierarchy = false;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2809
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2810 function process(parentKey, level, collapsed) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2811 const group = siblingGroups[parentKey];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2812
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2813 maxLevel = Math.max(maxLevel, level);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2814
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2815 if (group === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2816 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2817 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2818
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2819 for (let i = 0; i < group.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2820 const currentRecord = group[i],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2821 keyDataField = currentRecord._keyDataField;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2822
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2823 currentRecord._collapsed = collapsed;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2824 currentRecord._level = level;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2825 processedData.push(currentRecord);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2826
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2827 if (siblingGroups[keyDataField]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2828 actualHierarchy = true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2829 currentRecord._expanded = currentRecord._expanded !== undefined ? currentRecord._expanded : true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2830 process(keyDataField, level + 1, collapsed || !currentRecord._expanded);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2831 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2832 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2833 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2834
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2835 function processJSONXML(parentKey, level, parent) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2836 const group = siblingGroups[parentKey];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2837
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2838 maxLevel = Math.max(maxLevel, level);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2839
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2840 if (group === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2841 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2842 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2843
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2844 for (let i = 0; i < group.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2845 const currentRecord = group[i],
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2846 keyDataField = currentRecord._keyDataField;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2847 let cleanedRecord;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2848
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2849 if (format === 'json') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2850 cleanedRecord = {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2851
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2852 for (let prop in currentRecord) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2853 if (currentRecord.hasOwnProperty(prop) && prop.charAt(0) !== '_') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2854 cleanedRecord[prop] = currentRecord[prop];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2855 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2856 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2857 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2858 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2859 cleanedRecord = Object.assign({}, currentRecord);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2860 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2861
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2862 parent.push(cleanedRecord);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2863
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2864 if (siblingGroups[keyDataField]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2865 actualHierarchy = true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2866 cleanedRecord.rows = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2867 processJSONXML(keyDataField, level + 1, cleanedRecord.rows);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2868 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2869 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2870 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2871
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2872 if (data[startIndex]._keyDataField === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2873 return that.processNestedData(data, format, startIndex);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2874 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2875
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2876 for (let i = startIndex; i < data.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2877 const currentRecord = Object.assign({}, data[i]),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2878 parentKey = currentRecord._parentDataField;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2879
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2880 if (siblingGroups[parentKey] === undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2881 siblingGroups[parentKey] = [currentRecord];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2882 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2883 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2884 siblingGroups[parentKey].push(currentRecord);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2885 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2886 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2887
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2888 if (startIndex) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2889 for (let i = 0; i < startIndex; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2890 processedData.push(Object.assign({}, data[i]));
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2891
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2892 if (['json', 'pdf', 'xml'].indexOf(format) === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2893 processedData[i]._level = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2894 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2895 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2896 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2897
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2898 if (format !== 'json' && format !== 'xml') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2899 process(null, 1, false);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2900 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2901 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2902 processJSONXML(null, 1, processedData);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2903 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2904
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2905 if (!actualHierarchy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2906 that.actualHierarchy = false;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2907 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2908
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2909 that.maxLevel = maxLevel;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2910 return processedData;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2911 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2912
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2913 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2914 * Processes nested hierarchical data.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2915 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2916 processNestedData(data, format, startIndex) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2917 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2918 processedData = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2919 let maxLevel = 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2920 actualHierarchy = false;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2921
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2922 function process(start, children, level, collapsed) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2923 maxLevel = Math.max(maxLevel, level);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2924
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2925 for (let i = start; i < children.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2926 const currentRecord = Object.assign({}, children[i]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2927
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2928 currentRecord._collapsed = collapsed;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2929 currentRecord._level = level;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2930 processedData.push(currentRecord);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2931
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2932 if (currentRecord.children && currentRecord.children.length > 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2933 actualHierarchy = true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2934 currentRecord._expanded = currentRecord._expanded !== undefined ? currentRecord._expanded : true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2935 process(0, currentRecord.children, level + 1, collapsed || !currentRecord._expanded);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2936 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2937
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2938 delete currentRecord.children;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2939 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2940 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2941
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2942 function processJSONXML(start, children, rows, level) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2943 maxLevel = Math.max(maxLevel, level);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2944
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2945 for (let i = start; i < children.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2946 const currentRecord = Object.assign({}, children[i]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2947
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2948 if (level === 1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2949 processedData[i] = currentRecord;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2950 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2951 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2952 rows[i] = currentRecord;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2953 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2954
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2955 if (currentRecord.children && currentRecord.children.length > 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2956 actualHierarchy = true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2957 currentRecord.rows = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2958 processJSONXML(0, currentRecord.children, currentRecord.rows, level + 1);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2959 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2960
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2961 delete currentRecord.children;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2962 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2963 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2964
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2965 if (startIndex) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2966 for (let i = 0; i < startIndex; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2967 processedData.push(Object.assign({}, data[i]));
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2968
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2969 if (['json', 'pdf', 'xml'].indexOf(format) === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2970 processedData[i]._level = 1;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2971 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2972 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2973 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2974
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2975 if (format !== 'json' && format !== 'xml') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2976 process(startIndex, data, 1, false);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2977 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2978 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2979 processJSONXML(startIndex, data, undefined, 1);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2980 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2981
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2982 if (!actualHierarchy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2983 that.actualHierarchy = false;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2984 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2985
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2986 that.maxLevel = maxLevel;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2987 return processedData;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2988 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2989
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2990 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2991 * Processes row styles.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2992 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2993 processRowStyle(style) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2994 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2995 rowsDefinition = style.rows;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2996
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2997 that.rowHeight = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2998
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2999 if (!rowsDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3000 return;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3001 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3002
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3003 const startIndex = that.xlsxStartIndex;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3004
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3005 function applyToRowCells(row, prop, value) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3006 for (let j = 0; j < that.columnsArray.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3007 const currentCell = that.columnsArray[j] + (row + 1 + startIndex);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3008
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3009 that.storeCellStyle(currentCell, prop, value);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3010 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3011 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3012
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3013 if (rowsDefinition.height) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3014 that.defaultRowHeight = ` ht="${parseFloat(rowsDefinition.height) / 2}"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3015 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3016
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3017 for (let i = startIndex; i < that.data.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3018 const row = i - startIndex;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3019
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3020 for (let prop in rowsDefinition) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3021 if (rowsDefinition.hasOwnProperty(prop) &&
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3022 prop.indexOf('alt') === -1 &&
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3023 isNaN(prop) &&
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3024 prop !== 'height') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3025 applyToRowCells(row, prop, rowsDefinition[prop]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3026 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3027 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3028
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3029 if (rowsDefinition.alternationCount &&
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3030 (((rowsDefinition.alternationStart === undefined || row >= rowsDefinition.alternationStart) &&
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3031 (rowsDefinition.alternationEnd === undefined || row <= rowsDefinition.alternationEnd)) ||
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3032 rowsDefinition.alternationStart === rowsDefinition.alternationEnd)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3033 const start = rowsDefinition.alternationStart || 0,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3034 i = (row - start) % rowsDefinition.alternationCount;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3035
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3036 if (rowsDefinition[`alternationIndex${i}Color`]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3037 applyToRowCells(row, 'color', rowsDefinition[`alternationIndex${i}Color`]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3038 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3039
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3040 if (rowsDefinition[`alternationIndex${i}BorderColor`]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3041 applyToRowCells(row, 'borderColor', rowsDefinition[`alternationIndex${i}BorderColor`]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3042 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3043
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3044 if (rowsDefinition[`alternationIndex${i}BackgroundColor`]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3045 applyToRowCells(row, 'backgroundColor', rowsDefinition[`alternationIndex${i}BackgroundColor`]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3046 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3047 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3048
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3049 if (rowsDefinition[row]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3050 for (let prop in rowsDefinition[row]) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3051 if (rowsDefinition[row].hasOwnProperty(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3052 if (prop === 'height') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3053 that.rowHeight[i] = ` ht="${parseFloat(rowsDefinition[row].height) / 2}"`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3054 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3055 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3056
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3057 applyToRowCells(row, prop, rowsDefinition[row][prop]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3058 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3059 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3060 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3061 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3062 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3063
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3064 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3065 * Stores cell style in "styleMap" object.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3066 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3067 storeCellStyle(cell, prop, value) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3068 const that = this,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3069 cellMap = that.styleMap[cell];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3070
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3071 switch (prop) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3072 case 'backgroundColor':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3073 cellMap.fills.fgColor = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3074 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3075 case 'color':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3076 cellMap.fonts.color = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3077 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3078 case 'fontFamily':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3079 cellMap.fonts.name = value.replace(/"/g, '\'');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3080 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3081 case 'fontSize':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3082 cellMap.fonts.sz = parseFloat(value);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3083 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3084 case 'fontStyle':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3085 if (value === 'italic') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3086 cellMap.fonts.i = true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3087 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3088 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3089 delete cellMap.fonts.i;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3090 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3091
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3092 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3093 case 'fontWeight':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3094 if (value === 'bold') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3095 cellMap.fonts.b = true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3096 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3097 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3098 delete cellMap.fonts.b;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3099 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3100
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3101 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3102 case 'numFmt': {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3103 cellMap.numFmt = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3104 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3105 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3106 case 'textAlign':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3107 cellMap.alignment.horizontal = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3108 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3109 case 'textDecoration':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3110 if (value === 'underline') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3111 cellMap.fonts.u = true;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3112 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3113 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3114 delete cellMap.fonts.u;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3115 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3116
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3117 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3118 case 'verticalAlign':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3119 if (value === 'middle') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3120 value = 'center';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3121 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3122
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3123 cellMap.alignment.vertical = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3124 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3125 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3126 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3127
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3128 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3129 * Returns an Alpha Red Green Blue color value.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3130 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3131 toARGB(color) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3132 color = color.replace(/\s/g, '');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3133
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3134 const rgbResult = /rgb\((\d+),(\d+),(\d+)\)/gi.exec(color);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3135
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3136 if (rgbResult !== null) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3137 const r = parseFloat(rgbResult[1]).toString(16).toUpperCase(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3138 g = parseFloat(rgbResult[2]).toString(16).toUpperCase(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3139 b = parseFloat(rgbResult[3]).toString(16).toUpperCase();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3140
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3141 return 'FF' + ('0').repeat(2 - r.length) + r +
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3142 ('0').repeat(2 - g.length) + g +
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3143 ('0').repeat(2 - b.length) + b;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3144 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3145
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3146 const rgbaResult = /rgba\((\d+),(\d+),(\d+)\,(\d*.\d+|\d+)\)/gi.exec(color);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3147
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3148 if (rgbaResult !== null) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3149 const a = Math.round(parseFloat(rgbaResult[4]) * 255).toString(16).toUpperCase(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3150 r = parseFloat(rgbaResult[1]).toString(16).toUpperCase(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3151 g = parseFloat(rgbaResult[2]).toString(16).toUpperCase(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3152 b = parseFloat(rgbaResult[3]).toString(16).toUpperCase();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3153
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3154 return ('0').repeat(2 - a.length) + a +
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3155 ('0').repeat(2 - r.length) + r +
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3156 ('0').repeat(2 - g.length) + g +
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3157 ('0').repeat(2 - b.length) + b;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3158 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3159
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3160 const shortHexResult = /^#(.)(.)(.)$/gi.exec(color);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3161
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3162 if (shortHexResult !== null) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3163 const r = shortHexResult[1].toUpperCase(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3164 g = shortHexResult[2].toUpperCase(),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3165 b = shortHexResult[3].toUpperCase();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3166
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3167 return 'FF' + r + r + g + g + b + b;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3168 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3169
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3170 return 'FF' + color.toUpperCase().slice(1);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3171 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3172
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3173 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3174 * Adds toggleable functionality.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3175 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3176 toggleableFunctionality() {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3177 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3178
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3179 if (!that.actualHierarchy) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3180 return '';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3181 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3182
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3183 return `\n <style type="text/css">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3184 .toggle-element {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3185 width: 5px;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3186 height: 1px;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3187 padding-right: 5px;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3188 float: left;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3189 text-align: right;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3190 cursor: pointer;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3191 user-select: none;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3192 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3193
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3194 .collapsed {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3195 display: none;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3196 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3197 </style>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3198 <script type="text/javascript">
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3199 window.onload = function () {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3200 var expandChar = '${that.expandChar}',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3201 collapseChar = '${that.collapseChar}',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3202 toggleElements = document.getElementsByClassName('toggle-element');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3203
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3204 function getParent(child) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3205 var prevSibling = child.previousElementSibling;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3206
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3207 while (prevSibling) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3208 if (child.getAttribute('level') > prevSibling.getAttribute('level')) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3209 return prevSibling;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3210 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3211
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3212 prevSibling = prevSibling.previousElementSibling;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3213 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3214
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3215 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3216
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3217 function getFirstCollapsedAncestor(child) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3218 var parent = getParent(child);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3219
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3220 while (parent) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3221 if (parent.firstElementChild.firstElementChild.innerHTML === expandChar) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3222 return parent;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3223 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3224
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3225 parent = getParent(parent);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3226 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3227 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3228
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3229 for (var i = 0; i < toggleElements.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3230 toggleElements[i].addEventListener('click', function (event) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3231 var expanded = this.innerHTML === collapseChar,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3232 row = this.parentElement.parentElement,
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3233 sibling = row.nextElementSibling;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3234
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3235 if (expanded) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3236 this.innerHTML = expandChar;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3237 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3238 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3239 this.innerHTML = collapseChar;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3240 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3241
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3242 while (sibling && row.getAttribute('level') < sibling.getAttribute('level')) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3243 if (expanded) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3244 sibling.style.display = 'none';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3245 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3246 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3247 var firstCollapsedAncestor = getFirstCollapsedAncestor(sibling);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3248
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3249 if (!firstCollapsedAncestor || firstCollapsedAncestor === row) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3250 sibling.classList.remove('collapsed');
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3251 sibling.style.display = null;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3252 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3253
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3254 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3255
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3256 sibling = sibling.nextElementSibling;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3257 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3258 });
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3259 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3260 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3261 </script>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3262 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3263
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3264 /**
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3265 * Generates styles.xml.
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3266 */
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3267 generateStyles(style) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3268 const that = this;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3269
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3270 that.cellStyleMapping = {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3271
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3272 if (Object.keys(style).length === 0 && !that.complexHeader) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3273 // default style
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3274 return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3275 <styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac x16r2 xr" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:x16r2="http://schemas.microsoft.com/office/spreadsheetml/2015/02/main" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision"><fonts count="1" x14ac:knownFonts="1"><font><sz val="11"/><color theme="1"/><name val="Calibri"/><family val="2"/><charset val="204"/><scheme val="minor"/></font></fonts><fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles>${that.conditionalFormattingXLSX.styles || '<dxfs count="0"/>'}<tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleLight16"/><extLst><ext uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}" xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"><x14:slicerStyles defaultSlicerStyle="SlicerStyleLight1"/></ext><ext uri="{9260A510-F301-46a8-8635-F512D64BE5F5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:timelineStyles defaultTimelineStyle="TimeSlicerStyleLight1"/></ext></extLst></styleSheet>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3276 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3277
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3278 that.styleMap = {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3279
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3280 for (let i = 0; i < that.data.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3281 for (let j = 0; j < that.columnsArray.length; j++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3282 that.styleMap[that.columnsArray[j] + (i + 1)] = {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3283 numFmts: {}, fonts: {}, fills: {}, borders: {}, alignment: {}
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3284 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3285 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3286 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3287
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3288 if (style && style.columns) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3289 for (let i = 0; i < that.columnsArray.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3290 const datafield = that.datafields[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3291
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3292 if (!style.columns[datafield] || !style.columns[datafield].format) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3293 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3294 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3295
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3296 const XLSXFormat = that.getXLSXFormat(style.columns[datafield].format, that.data[that.data.length - 1][datafield]);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3297
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3298 if (XLSXFormat) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3299 style.columns[datafield].numFmt = XLSXFormat;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3300 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3301 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3302 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3303
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3304 that.processRowStyle(style);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3305 that.processColumnStyle(style);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3306
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3307 const cellAliases = {};
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3308
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3309 for (let i = 0; i < that.complexHeaderMergedCells.length; i++) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3310 const currentCell = that.complexHeaderMergedCells[i];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3311
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3312 if (parseFloat(currentCell.to[1]) === that.complexHeader.length) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3313 cellAliases[currentCell.to] = currentCell.from;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3314 continue;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3315 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3316
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3317 that.styleMap[currentCell.from].alignment.horizontal = 'center';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3318 that.styleMap[currentCell.from].alignment.vertical = 'center';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3319 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3320
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3321 const fonts = {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3322 xml: '<font><sz val="11" /><color theme="1" /><name val="Calibri" /><family val="2" /><charset val="204" /><scheme val="minor" /></font>',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3323 collection: ['default']
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3324 },
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3325 fills = {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3326 xml: '<fill><patternFill patternType="none" /></fill><fill><patternFill patternType="gray125" /></fill>',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3327 collection: ['default', 'gray125']
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3328 },
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3329 numFmts = {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3330 xml: '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3331 collection: []
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3332 },
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3333 cellXfs = {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3334 xml: '<xf fontId="0" fillId="0" borderId="1"/>',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3335 collection: ['default']
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3336 };
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3337
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3338 for (let i = 0; i < that.data.length; i++) { // iterate rows
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3339 for (let j = 0; j < that.columnsArray.length; j++) { // iterate columns
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3340 const currentCell = that.columnsArray[j] + (i + 1),
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3341 currentCellStyle = that.styleMap[currentCell];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3342 let currentFont = '', currentFill = '', currentAlignment = '',
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3343 currentFontCode = [], currentFillCode = [], currentAlignmentCode = [], xf = [];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3344
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3345 for (let prop in currentCellStyle.fonts) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3346 if (currentCellStyle.fonts.hasOwnProperty(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3347 const value = currentCellStyle.fonts[prop];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3348
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3349 switch (prop) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3350 case 'color':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3351 currentFontCode[0] = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3352 currentFont += `<color rgb="${that.toARGB(value)}" />`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3353 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3354 case 'name':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3355 currentFontCode[1] = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3356 currentFont += `<name val="${value}" />`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3357 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3358 case 'sz':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3359 currentFontCode[2] = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3360 currentFont += `<sz val="${value}" />`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3361 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3362 case 'i':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3363 currentFontCode[3] = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3364 currentFont += '<i />';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3365 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3366 case 'b':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3367 currentFontCode[4] = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3368 currentFont += '<b />';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3369 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3370 case 'u':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3371 currentFontCode[5] = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3372 currentFont += '<u />';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3373 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3374 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3375 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3376 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3377
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3378 for (let prop in currentCellStyle.fills) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3379 if (currentCellStyle.fills.hasOwnProperty(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3380 const value = currentCellStyle.fills[prop];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3381
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3382 switch (prop) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3383 case 'fgColor':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3384 currentFillCode[0] = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3385 currentFill += `<fgColor rgb="${that.toARGB(value)}" />`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3386 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3387 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3388 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3389 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3390
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3391 for (let prop in currentCellStyle.alignment) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3392 if (currentCellStyle.alignment.hasOwnProperty(prop)) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3393 const value = currentCellStyle.alignment[prop];
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3394
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3395 switch (prop) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3396 case 'horizontal':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3397 currentAlignmentCode[0] = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3398 currentAlignment += `horizontal="${value}" `;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3399 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3400 case 'vertical':
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3401 currentAlignmentCode[1] = value;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3402 currentAlignment += `vertical="${value}" `;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3403 break;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3404 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3405 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3406 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3407
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3408 currentFontCode = currentFontCode.toString();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3409 currentFillCode = currentFillCode.toString();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3410
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3411 if (currentFont !== '') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3412 let fontIndex = fonts.collection.indexOf(currentFontCode);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3413
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3414 if (fontIndex === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3415 fontIndex = fonts.collection.length;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3416
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3417 fonts.xml += '<font>' + currentFont + '</font>';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3418 fonts.collection.push(currentFontCode);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3419 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3420
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3421 xf[0] = fontIndex;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3422 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3423
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3424 if (currentFill !== '') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3425 let fillIndex = fills.collection.indexOf(currentFillCode);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3426
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3427 if (fillIndex === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3428 fillIndex = fills.collection.length;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3429
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3430 fills.xml += '<fill><patternFill patternType="solid">' + currentFill + '</patternFill></fill>';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3431 fills.collection.push(currentFillCode);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3432 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3433
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3434 xf[1] = fillIndex;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3435 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3436
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3437 if (currentAlignmentCode.length > 0) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3438 xf[2] = currentAlignment;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3439 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3440
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3441 if (currentCellStyle.numFmt !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3442 xf[3] = that.getNumFmtIndex(currentCellStyle.numFmt, numFmts);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3443 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3444
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3445 const xfCode = xf.toString();
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3446
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3447 if (xfCode !== '') {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3448 let xfIndex = cellXfs.collection.indexOf(xfCode);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3449
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3450 if (xfIndex === -1) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3451 let newXfXML = '<xf ';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3452
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3453 xfIndex = cellXfs.collection.length;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3454
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3455 if (xf[0] !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3456 newXfXML += `fontId="${xf[0]}" `;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3457 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3458
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3459 if (xf[1] !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3460 newXfXML += `fillId="${xf[1]}" `;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3461 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3462
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3463 if (xf[3] !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3464 newXfXML += `numFmtId="${xf[3]}" `;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3465 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3466
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3467 if (xf[2] !== undefined) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3468 newXfXML += `applyAlignment="1" borderId="1"><alignment ${currentAlignment}/></xf>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3469 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3470 else {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3471 newXfXML += ' borderId="1"/>';
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3472 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3473
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3474 cellXfs.xml += newXfXML;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3475 cellXfs.collection.push(xfCode);
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3476 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3477
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3478 that.cellStyleMapping[cellAliases[currentCell] || currentCell] = xfIndex;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3479 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3480 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3481 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3482
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3483 if (numFmts.collection.length) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3484 numFmts.xml = `<numFmts count="${numFmts.collection.length}">${numFmts.xml}</numFmts>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3485 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3486
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3487 return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3488 <styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac x16r2 xr" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:x16r2="http://schemas.microsoft.com/office/spreadsheetml/2015/02/main" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision">${numFmts.xml}<fonts count="${fonts.collection.length}" x14ac:knownFonts="1">${fonts.xml}</fonts><fills count="${fills.collection.length}">${fills.xml}</fills><borders count="2"><border><left/><right/><top/><bottom/></border><border><left style="hair"/><right style="hair"/><top style="hair"/><bottom style="hair"/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="${cellXfs.collection.length}">${cellXfs.xml}</cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles>${that.conditionalFormattingXLSX.styles}<dxfs count="0"/><tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleLight16"/><extLst><ext uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}" xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"><x14:slicerStyles defaultSlicerStyle="SlicerStyleLight1"/></ext><ext uri="{9260A510-F301-46a8-8635-F512D64BE5F5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:timelineStyles defaultTimelineStyle="TimeSlicerStyleLight1"/></ext></extLst></styleSheet>`;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3489 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3490 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3491
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3492 if ($.jqx && $.jqx.dataAdapter) {
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3493 $.jqx.dataAdapter.DataExporter = DataExporter;
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3494 }
b216f9d4b917 Upgraded jqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3495 })(jqxBaseFramework);

mercurial