tabulator-tables 5.4.2 → 5.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/.babelrc.json +3 -3
  2. package/.editorconfig +6 -6
  3. package/.eslintignore +3 -3
  4. package/.eslintrc.js +28 -28
  5. package/.github/ISSUE_TEMPLATE/bug_report.md +58 -58
  6. package/.github/ISSUE_TEMPLATE/documentation.md +14 -14
  7. package/.github/ISSUE_TEMPLATE/feature_request.md +24 -24
  8. package/.github/ISSUE_TEMPLATE/question.md +12 -12
  9. package/.github/workflows/bad-files-check.yml +39 -39
  10. package/.github/workflows/lint-and-test.yml +30 -30
  11. package/CODE_OF_CONDUCT.md +46 -46
  12. package/CONTRIBUTING.md +22 -22
  13. package/LICENSE +20 -20
  14. package/README.md +76 -76
  15. package/bower.json +40 -40
  16. package/build/Bundler.js +185 -185
  17. package/build/rollup.js +6 -6
  18. package/dist/css/tabulator.css +1 -5
  19. package/dist/css/tabulator.css.map +1 -1
  20. package/dist/css/tabulator.min.css +1 -1
  21. package/dist/css/tabulator.min.css.map +1 -1
  22. package/dist/css/tabulator_bootstrap3.css +1 -5
  23. package/dist/css/tabulator_bootstrap3.css.map +1 -1
  24. package/dist/css/tabulator_bootstrap3.min.css +1 -1
  25. package/dist/css/tabulator_bootstrap3.min.css.map +1 -1
  26. package/dist/css/tabulator_bootstrap4.css +1 -5
  27. package/dist/css/tabulator_bootstrap4.css.map +1 -1
  28. package/dist/css/tabulator_bootstrap4.min.css +1 -1
  29. package/dist/css/tabulator_bootstrap4.min.css.map +1 -1
  30. package/dist/css/tabulator_bootstrap5.css +1 -5
  31. package/dist/css/tabulator_bootstrap5.css.map +1 -1
  32. package/dist/css/tabulator_bootstrap5.min.css +1 -1
  33. package/dist/css/tabulator_bootstrap5.min.css.map +1 -1
  34. package/dist/css/tabulator_bulma.css +1 -5
  35. package/dist/css/tabulator_bulma.css.map +1 -1
  36. package/dist/css/tabulator_bulma.min.css +1 -1
  37. package/dist/css/tabulator_bulma.min.css.map +1 -1
  38. package/dist/css/tabulator_materialize.css +1 -5
  39. package/dist/css/tabulator_materialize.css.map +1 -1
  40. package/dist/css/tabulator_materialize.min.css +1 -1
  41. package/dist/css/tabulator_materialize.min.css.map +1 -1
  42. package/dist/css/tabulator_midnight.css +1 -5
  43. package/dist/css/tabulator_midnight.css.map +1 -1
  44. package/dist/css/tabulator_midnight.min.css +1 -1
  45. package/dist/css/tabulator_midnight.min.css.map +1 -1
  46. package/dist/css/tabulator_modern.css +1 -5
  47. package/dist/css/tabulator_modern.css.map +1 -1
  48. package/dist/css/tabulator_modern.min.css +1 -1
  49. package/dist/css/tabulator_modern.min.css.map +1 -1
  50. package/dist/css/tabulator_semanticui.css +103 -107
  51. package/dist/css/tabulator_semanticui.css.map +1 -1
  52. package/dist/css/tabulator_semanticui.min.css +1 -1
  53. package/dist/css/tabulator_semanticui.min.css.map +1 -1
  54. package/dist/css/tabulator_simple.css +1 -5
  55. package/dist/css/tabulator_simple.css.map +1 -1
  56. package/dist/css/tabulator_simple.min.css +1 -1
  57. package/dist/css/tabulator_simple.min.css.map +1 -1
  58. package/dist/css/tabulator_site.css +1 -5
  59. package/dist/css/tabulator_site.css.map +1 -1
  60. package/dist/css/tabulator_site.min.css +1 -1
  61. package/dist/css/tabulator_site.min.css.map +1 -1
  62. package/dist/js/jquery_wrapper.js +55 -55
  63. package/dist/js/tabulator.js +25847 -25653
  64. package/dist/js/tabulator.js.map +1 -1
  65. package/dist/js/tabulator.min.js +2 -2
  66. package/dist/js/tabulator.min.js.map +1 -1
  67. package/dist/js/tabulator_esm.js +25926 -25732
  68. package/dist/js/tabulator_esm.js.map +1 -1
  69. package/dist/js/tabulator_esm.min.js +2 -2
  70. package/dist/js/tabulator_esm.min.js.map +1 -1
  71. package/package.json +65 -65
  72. package/src/js/builds/esm.js +14 -14
  73. package/src/js/builds/jquery_wrapper.js +55 -55
  74. package/src/js/core/ColumnManager.js +730 -730
  75. package/src/js/core/CoreFeature.js +138 -138
  76. package/src/js/core/FooterManager.js +101 -101
  77. package/src/js/core/Module.js +141 -141
  78. package/src/js/core/RowManager.js +1112 -1082
  79. package/src/js/core/Tabulator.js +895 -893
  80. package/src/js/core/TabulatorFull.js +10 -10
  81. package/src/js/core/cell/Cell.js +295 -295
  82. package/src/js/core/cell/CellComponent.js +76 -76
  83. package/src/js/core/column/Column.js +949 -949
  84. package/src/js/core/column/ColumnComponent.js +152 -152
  85. package/src/js/core/column/defaults/options.js +17 -17
  86. package/src/js/core/defaults/options.js +65 -65
  87. package/src/js/core/modules/core.js +2 -2
  88. package/src/js/core/modules/optional.js +34 -34
  89. package/src/js/core/rendering/Renderer.js +203 -203
  90. package/src/js/core/rendering/renderers/BasicHorizontal.js +19 -19
  91. package/src/js/core/rendering/renderers/BasicVertical.js +79 -78
  92. package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +577 -577
  93. package/src/js/core/rendering/renderers/VirtualDomVertical.js +579 -579
  94. package/src/js/core/row/PseudoRow.js +44 -44
  95. package/src/js/core/row/Row.js +457 -457
  96. package/src/js/core/row/RowComponent.js +93 -93
  97. package/src/js/core/tools/Alert.js +61 -61
  98. package/src/js/core/tools/ComponentFunctionBinder.js +32 -32
  99. package/src/js/core/tools/DataLoader.js +119 -119
  100. package/src/js/core/tools/DeprecationAdvisor.js +46 -46
  101. package/src/js/core/tools/ExternalEventBus.js +104 -104
  102. package/src/js/core/tools/Helpers.js +46 -46
  103. package/src/js/core/tools/InteractionMonitor.js +321 -321
  104. package/src/js/core/tools/InternalEventBus.js +161 -161
  105. package/src/js/core/tools/ModuleBinder.js +104 -104
  106. package/src/js/core/tools/OptionsList.js +44 -40
  107. package/src/js/core/tools/Popup.js +304 -304
  108. package/src/js/core/tools/TableRegistry.js +61 -61
  109. package/src/js/modules/Accessor/Accessor.js +115 -115
  110. package/src/js/modules/Ajax/Ajax.js +143 -143
  111. package/src/js/modules/Ajax/defaults/config.js +2 -2
  112. package/src/js/modules/Ajax/defaults/contentTypeFormatters.js +44 -44
  113. package/src/js/modules/Ajax/defaults/loaderPromise.js +86 -86
  114. package/src/js/modules/Ajax/defaults/urlGenerator.js +43 -43
  115. package/src/js/modules/Clipboard/Clipboard.js +279 -279
  116. package/src/js/modules/Clipboard/defaults/pasteActions.js +10 -10
  117. package/src/js/modules/Clipboard/defaults/pasteParsers.js +74 -74
  118. package/src/js/modules/ColumnCalcs/CalcComponent.js +47 -47
  119. package/src/js/modules/ColumnCalcs/ColumnCalcs.js +581 -568
  120. package/src/js/modules/ColumnCalcs/defaults/calculations.js +85 -85
  121. package/src/js/modules/Comms/Comms.js +51 -51
  122. package/src/js/modules/DataTree/DataTree.js +603 -603
  123. package/src/js/modules/Download/Download.js +148 -148
  124. package/src/js/modules/Download/defaults/downloaders/csv.js +61 -61
  125. package/src/js/modules/Download/defaults/downloaders/html.js +4 -4
  126. package/src/js/modules/Download/defaults/downloaders/json.js +33 -33
  127. package/src/js/modules/Download/defaults/downloaders/jsonLines.js +31 -31
  128. package/src/js/modules/Download/defaults/downloaders/pdf.js +111 -111
  129. package/src/js/modules/Download/defaults/downloaders/xlsx.js +98 -98
  130. package/src/js/modules/Download/defaults/downloaders.js +14 -14
  131. package/src/js/modules/Edit/Edit.js +735 -736
  132. package/src/js/modules/Edit/List.js +1037 -1033
  133. package/src/js/modules/Edit/defaults/editors/autocomplete.js +11 -11
  134. package/src/js/modules/Edit/defaults/editors/date.js +138 -110
  135. package/src/js/modules/Edit/defaults/editors/datetime.js +125 -97
  136. package/src/js/modules/Edit/defaults/editors/input.js +76 -74
  137. package/src/js/modules/Edit/defaults/editors/list.js +6 -6
  138. package/src/js/modules/Edit/defaults/editors/number.js +109 -107
  139. package/src/js/modules/Edit/defaults/editors/progress.js +126 -126
  140. package/src/js/modules/Edit/defaults/editors/range.js +80 -78
  141. package/src/js/modules/Edit/defaults/editors/select.js +9 -9
  142. package/src/js/modules/Edit/defaults/editors/star.js +145 -145
  143. package/src/js/modules/Edit/defaults/editors/textarea.js +122 -120
  144. package/src/js/modules/Edit/defaults/editors/tickCross.js +94 -96
  145. package/src/js/modules/Edit/defaults/editors/time.js +126 -98
  146. package/src/js/modules/Edit/defaults/editors.js +28 -28
  147. package/src/js/modules/Edit/inputMask.js +73 -73
  148. package/src/js/modules/Export/Export.js +623 -617
  149. package/src/js/modules/Export/ExportColumn.js +10 -10
  150. package/src/js/modules/Export/ExportRow.js +9 -9
  151. package/src/js/modules/Filter/Filter.js +892 -889
  152. package/src/js/modules/Filter/defaults/filters.js +107 -107
  153. package/src/js/modules/Format/Format.js +212 -212
  154. package/src/js/modules/Format/defaults/formatters/buttonCross.js +2 -2
  155. package/src/js/modules/Format/defaults/formatters/buttonTick.js +2 -2
  156. package/src/js/modules/Format/defaults/formatters/color.js +3 -3
  157. package/src/js/modules/Format/defaults/formatters/datetime.js +36 -36
  158. package/src/js/modules/Format/defaults/formatters/datetimediff.js +40 -40
  159. package/src/js/modules/Format/defaults/formatters/handle.js +3 -3
  160. package/src/js/modules/Format/defaults/formatters/html.js +2 -2
  161. package/src/js/modules/Format/defaults/formatters/image.js +39 -39
  162. package/src/js/modules/Format/defaults/formatters/link.js +77 -77
  163. package/src/js/modules/Format/defaults/formatters/lookup.js +9 -9
  164. package/src/js/modules/Format/defaults/formatters/money.js +36 -36
  165. package/src/js/modules/Format/defaults/formatters/plaintext.js +2 -2
  166. package/src/js/modules/Format/defaults/formatters/progress.js +132 -132
  167. package/src/js/modules/Format/defaults/formatters/responsiveCollapse.js +43 -43
  168. package/src/js/modules/Format/defaults/formatters/rowSelection.js +59 -59
  169. package/src/js/modules/Format/defaults/formatters/rownum.js +9 -9
  170. package/src/js/modules/Format/defaults/formatters/star.js +37 -37
  171. package/src/js/modules/Format/defaults/formatters/textarea.js +3 -3
  172. package/src/js/modules/Format/defaults/formatters/tickCross.js +21 -21
  173. package/src/js/modules/Format/defaults/formatters/traffic.js +46 -46
  174. package/src/js/modules/Format/defaults/formatters.js +42 -42
  175. package/src/js/modules/FrozenColumns/FrozenColumns.js +299 -299
  176. package/src/js/modules/FrozenRows/FrozenRows.js +169 -159
  177. package/src/js/modules/GroupRows/Group.js +597 -595
  178. package/src/js/modules/GroupRows/GroupComponent.js +66 -66
  179. package/src/js/modules/GroupRows/GroupRows.js +639 -623
  180. package/src/js/modules/History/History.js +171 -171
  181. package/src/js/modules/History/defaults/redoers.js +24 -24
  182. package/src/js/modules/History/defaults/undoers.js +24 -24
  183. package/src/js/modules/HtmlTableImport/HtmlTableImport.js +181 -181
  184. package/src/js/modules/Import/Import.js +193 -193
  185. package/src/js/modules/Import/defaults/importers/array.js +4 -4
  186. package/src/js/modules/Import/defaults/importers/csv.js +62 -62
  187. package/src/js/modules/Import/defaults/importers/json.js +7 -7
  188. package/src/js/modules/Import/defaults/importers.js +8 -8
  189. package/src/js/modules/Interaction/Interaction.js +325 -325
  190. package/src/js/modules/Keybindings/Keybindings.js +172 -172
  191. package/src/js/modules/Keybindings/defaults/actions.js +118 -118
  192. package/src/js/modules/Keybindings/defaults/bindings.js +12 -12
  193. package/src/js/modules/Layout/Layout.js +49 -49
  194. package/src/js/modules/Layout/defaults/modes/fitColumns.js +171 -171
  195. package/src/js/modules/Layout/defaults/modes/fitData.js +9 -9
  196. package/src/js/modules/Layout/defaults/modes/fitDataGeneral.js +9 -9
  197. package/src/js/modules/Layout/defaults/modes/fitDataStretch.js +39 -39
  198. package/src/js/modules/Layout/defaults/modes.js +11 -11
  199. package/src/js/modules/Localize/Localize.js +185 -194
  200. package/src/js/modules/Localize/defaults/langs.js +36 -36
  201. package/src/js/modules/Menu/Menu.js +302 -302
  202. package/src/js/modules/MoveColumns/MoveColumns.js +299 -299
  203. package/src/js/modules/MoveRows/MoveRows.js +635 -635
  204. package/src/js/modules/Mutator/Mutator.js +161 -161
  205. package/src/js/modules/Page/Page.js +881 -881
  206. package/src/js/modules/Page/defaults/pageCounters/pages.js +32 -32
  207. package/src/js/modules/Page/defaults/pageCounters/rows.js +39 -39
  208. package/src/js/modules/Page/defaults/pageCounters.js +7 -7
  209. package/src/js/modules/Persistence/Persistence.js +458 -458
  210. package/src/js/modules/Persistence/defaults/readers.js +29 -29
  211. package/src/js/modules/Persistence/defaults/writers.js +12 -12
  212. package/src/js/modules/Popup/Popup.js +231 -231
  213. package/src/js/modules/Print/Print.js +137 -124
  214. package/src/js/modules/ReactiveData/ReactiveData.js +408 -408
  215. package/src/js/modules/ResizeColumns/ResizeColumns.js +309 -309
  216. package/src/js/modules/ResizeRows/ResizeRows.js +111 -111
  217. package/src/js/modules/ResizeTable/ResizeTable.js +159 -159
  218. package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +345 -345
  219. package/src/js/modules/SelectRow/SelectRow.js +446 -436
  220. package/src/js/modules/Sort/Sort.js +470 -470
  221. package/src/js/modules/Sort/defaults/sorters/alphanum.js +43 -43
  222. package/src/js/modules/Sort/defaults/sorters/array.js +53 -53
  223. package/src/js/modules/Sort/defaults/sorters/boolean.js +6 -6
  224. package/src/js/modules/Sort/defaults/sorters/date.js +9 -9
  225. package/src/js/modules/Sort/defaults/sorters/datetime.js +43 -43
  226. package/src/js/modules/Sort/defaults/sorters/exists.js +6 -6
  227. package/src/js/modules/Sort/defaults/sorters/number.js +39 -39
  228. package/src/js/modules/Sort/defaults/sorters/string.js +33 -33
  229. package/src/js/modules/Sort/defaults/sorters/time.js +9 -9
  230. package/src/js/modules/Sort/defaults/sorters.js +20 -20
  231. package/src/js/modules/Tooltip/Tooltip.js +130 -130
  232. package/src/js/modules/Validate/Validate.js +305 -305
  233. package/src/js/modules/Validate/defaults/validators.js +138 -138
  234. package/src/scss/tabulator.scss +1464 -1466
  235. package/src/scss/themes/bootstrap/functions4.scss +118 -118
  236. package/src/scss/themes/bootstrap/functions5.scss +302 -302
  237. package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +284 -284
  238. package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +544 -544
  239. package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +574 -574
  240. package/src/scss/themes/bootstrap/variables3.scss +870 -870
  241. package/src/scss/themes/bootstrap/variables4.scss +930 -930
  242. package/src/scss/themes/bootstrap/variables5.scss +1641 -1641
  243. package/src/scss/themes/bulma/tabulator_bulma.scss +252 -252
  244. package/src/scss/themes/bulma/variables.scss +197 -197
  245. package/src/scss/themes/materialize/tabulator_materialize.scss +265 -265
  246. package/src/scss/themes/materialize/variables.scss +70 -70
  247. package/src/scss/themes/semanticui/tabulator_semanticui.scss +561 -561
  248. package/src/scss/themes/semanticui/variables.scss +839 -839
  249. package/src/scss/themes/semanticui/variables_table.scss +247 -247
  250. package/src/scss/themes/tabulator_midnight.scss +158 -158
  251. package/src/scss/themes/tabulator_modern.scss +231 -231
  252. package/src/scss/themes/tabulator_simple.scss +102 -102
  253. package/src/scss/themes/tabulator_site.scss +189 -189
@@ -1,111 +1,111 @@
1
- export default function(list, options = {}, setFileContents){
2
- var header = [],
3
- body = [],
4
- autoTableParams = {},
5
- rowGroupStyles = options.rowGroupStyles || {
6
- fontStyle: "bold",
7
- fontSize: 12,
8
- cellPadding: 6,
9
- fillColor: 220,
10
- },
11
- rowCalcStyles = options.rowCalcStyles || {
12
- fontStyle: "bold",
13
- fontSize: 10,
14
- cellPadding: 4,
15
- fillColor: 232,
16
- },
17
- jsPDFParams = options.jsPDF || {},
18
- title = options.title ? options.title : "";
19
-
20
- if(!jsPDFParams.orientation){
21
- jsPDFParams.orientation = options.orientation || "landscape";
22
- }
23
-
24
- if(!jsPDFParams.unit){
25
- jsPDFParams.unit = "pt";
26
- }
27
-
28
- //parse row list
29
- list.forEach((row) => {
30
- switch(row.type){
31
- case "header":
32
- header.push(parseRow(row));
33
- break;
34
-
35
- case "group":
36
- body.push(parseRow(row, rowGroupStyles));
37
- break;
38
-
39
- case "calc":
40
- body.push(parseRow(row, rowCalcStyles));
41
- break;
42
-
43
- case "row":
44
- body.push(parseRow(row));
45
- break;
46
- }
47
- });
48
-
49
- function parseRow(row, styles){
50
- var rowData = [];
51
-
52
- row.columns.forEach((col) =>{
53
- var cell;
54
-
55
- if(col){
56
- switch(typeof col.value){
57
- case "object":
58
- col.value = col.value !== null ? JSON.stringify(col.value) : "";
59
- break;
60
-
61
- case "undefined":
62
- col.value = "";
63
- break;
64
- }
65
-
66
- cell = {
67
- content:col.value,
68
- colSpan:col.width,
69
- rowSpan:col.height,
70
- };
71
-
72
- if(styles){
73
- cell.styles = styles;
74
- }
75
-
76
- rowData.push(cell);
77
- }
78
- });
79
-
80
- return rowData;
81
- }
82
-
83
-
84
- //configure PDF
85
- var doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables
86
-
87
- if(options.autoTable){
88
- if(typeof options.autoTable === "function"){
89
- autoTableParams = options.autoTable(doc) || {};
90
- }else{
91
- autoTableParams = options.autoTable;
92
- }
93
- }
94
-
95
- if(title){
96
- autoTableParams.didDrawPage = function(data) {
97
- doc.text(title, 40, 30);
98
- };
99
- }
100
-
101
- autoTableParams.head = header;
102
- autoTableParams.body = body;
103
-
104
- doc.autoTable(autoTableParams);
105
-
106
- if(options.documentProcessing){
107
- options.documentProcessing(doc);
108
- }
109
-
110
- setFileContents(doc.output("arraybuffer"), "application/pdf");
111
- }
1
+ export default function(list, options = {}, setFileContents){
2
+ var header = [],
3
+ body = [],
4
+ autoTableParams = {},
5
+ rowGroupStyles = options.rowGroupStyles || {
6
+ fontStyle: "bold",
7
+ fontSize: 12,
8
+ cellPadding: 6,
9
+ fillColor: 220,
10
+ },
11
+ rowCalcStyles = options.rowCalcStyles || {
12
+ fontStyle: "bold",
13
+ fontSize: 10,
14
+ cellPadding: 4,
15
+ fillColor: 232,
16
+ },
17
+ jsPDFParams = options.jsPDF || {},
18
+ title = options.title ? options.title : "";
19
+
20
+ if(!jsPDFParams.orientation){
21
+ jsPDFParams.orientation = options.orientation || "landscape";
22
+ }
23
+
24
+ if(!jsPDFParams.unit){
25
+ jsPDFParams.unit = "pt";
26
+ }
27
+
28
+ //parse row list
29
+ list.forEach((row) => {
30
+ switch(row.type){
31
+ case "header":
32
+ header.push(parseRow(row));
33
+ break;
34
+
35
+ case "group":
36
+ body.push(parseRow(row, rowGroupStyles));
37
+ break;
38
+
39
+ case "calc":
40
+ body.push(parseRow(row, rowCalcStyles));
41
+ break;
42
+
43
+ case "row":
44
+ body.push(parseRow(row));
45
+ break;
46
+ }
47
+ });
48
+
49
+ function parseRow(row, styles){
50
+ var rowData = [];
51
+
52
+ row.columns.forEach((col) =>{
53
+ var cell;
54
+
55
+ if(col){
56
+ switch(typeof col.value){
57
+ case "object":
58
+ col.value = col.value !== null ? JSON.stringify(col.value) : "";
59
+ break;
60
+
61
+ case "undefined":
62
+ col.value = "";
63
+ break;
64
+ }
65
+
66
+ cell = {
67
+ content:col.value,
68
+ colSpan:col.width,
69
+ rowSpan:col.height,
70
+ };
71
+
72
+ if(styles){
73
+ cell.styles = styles;
74
+ }
75
+
76
+ rowData.push(cell);
77
+ }
78
+ });
79
+
80
+ return rowData;
81
+ }
82
+
83
+
84
+ //configure PDF
85
+ var doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables
86
+
87
+ if(options.autoTable){
88
+ if(typeof options.autoTable === "function"){
89
+ autoTableParams = options.autoTable(doc) || {};
90
+ }else{
91
+ autoTableParams = options.autoTable;
92
+ }
93
+ }
94
+
95
+ if(title){
96
+ autoTableParams.didDrawPage = function(data) {
97
+ doc.text(title, 40, 30);
98
+ };
99
+ }
100
+
101
+ autoTableParams.head = header;
102
+ autoTableParams.body = body;
103
+
104
+ doc.autoTable(autoTableParams);
105
+
106
+ if(options.documentProcessing){
107
+ options.documentProcessing(doc);
108
+ }
109
+
110
+ setFileContents(doc.output("arraybuffer"), "application/pdf");
111
+ }
@@ -1,99 +1,99 @@
1
- import CoreFeature from '../../../../core/CoreFeature.js';
2
-
3
- export default function(list, options, setFileContents){
4
- var self = this,
5
- sheetName = options.sheetName || "Sheet1",
6
- workbook = XLSX.utils.book_new(),
7
- tableFeatures = new CoreFeature(this),
8
- compression = 'compress' in options ? options.compress : true,
9
- output;
10
-
11
- workbook.SheetNames = [];
12
- workbook.Sheets = {};
13
-
14
- function generateSheet(){
15
- var rows = [],
16
- merges = [],
17
- worksheet = {},
18
- range = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};
19
-
20
- //parse row list
21
- list.forEach((row, i) => {
22
- var rowData = [];
23
-
24
- row.columns.forEach(function(col, j){
25
-
26
- if(col){
27
- rowData.push(!(col.value instanceof Date) && typeof col.value === "object" ? JSON.stringify(col.value) : col.value);
28
-
29
- if(col.width > 1 || col.height > -1){
30
- if(col.height > 1 || col.width > 1){
31
- merges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});
32
- }
33
- }
34
- }else{
35
- rowData.push("");
36
- }
37
- });
38
-
39
- rows.push(rowData);
40
- });
41
-
42
- //convert rows to worksheet
43
- XLSX.utils.sheet_add_aoa(worksheet, rows);
44
-
45
- worksheet['!ref'] = XLSX.utils.encode_range(range);
46
-
47
- if(merges.length){
48
- worksheet["!merges"] = merges;
49
- }
50
-
51
- return worksheet;
52
- }
53
-
54
- if(options.sheetOnly){
55
- setFileContents(generateSheet());
56
- return;
57
- }
58
-
59
- if(options.sheets){
60
- for(var sheet in options.sheets){
61
-
62
- if(options.sheets[sheet] === true){
63
- workbook.SheetNames.push(sheet);
64
- workbook.Sheets[sheet] = generateSheet();
65
- }else{
66
-
67
- workbook.SheetNames.push(sheet);
68
-
69
- tableFeatures.commsSend(options.sheets[sheet], "download", "intercept",{
70
- type:"xlsx",
71
- options:{sheetOnly:true},
72
- active:self.active,
73
- intercept:function(data){
74
- workbook.Sheets[sheet] = data;
75
- }
76
- });
77
- }
78
- }
79
- }else{
80
- workbook.SheetNames.push(sheetName);
81
- workbook.Sheets[sheetName] = generateSheet();
82
- }
83
-
84
- if(options.documentProcessing){
85
- workbook = options.documentProcessing(workbook);
86
- }
87
-
88
- //convert workbook to binary array
89
- function s2ab(s) {
90
- var buf = new ArrayBuffer(s.length);
91
- var view = new Uint8Array(buf);
92
- for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
93
- return buf;
94
- }
95
-
96
- output = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary', compression });
97
-
98
- setFileContents(s2ab(output), "application/octet-stream");
1
+ import CoreFeature from '../../../../core/CoreFeature.js';
2
+
3
+ export default function(list, options, setFileContents){
4
+ var self = this,
5
+ sheetName = options.sheetName || "Sheet1",
6
+ workbook = XLSX.utils.book_new(),
7
+ tableFeatures = new CoreFeature(this),
8
+ compression = 'compress' in options ? options.compress : true,
9
+ output;
10
+
11
+ workbook.SheetNames = [];
12
+ workbook.Sheets = {};
13
+
14
+ function generateSheet(){
15
+ var rows = [],
16
+ merges = [],
17
+ worksheet = {},
18
+ range = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};
19
+
20
+ //parse row list
21
+ list.forEach((row, i) => {
22
+ var rowData = [];
23
+
24
+ row.columns.forEach(function(col, j){
25
+
26
+ if(col){
27
+ rowData.push(!(col.value instanceof Date) && typeof col.value === "object" ? JSON.stringify(col.value) : col.value);
28
+
29
+ if(col.width > 1 || col.height > -1){
30
+ if(col.height > 1 || col.width > 1){
31
+ merges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});
32
+ }
33
+ }
34
+ }else{
35
+ rowData.push("");
36
+ }
37
+ });
38
+
39
+ rows.push(rowData);
40
+ });
41
+
42
+ //convert rows to worksheet
43
+ XLSX.utils.sheet_add_aoa(worksheet, rows);
44
+
45
+ worksheet['!ref'] = XLSX.utils.encode_range(range);
46
+
47
+ if(merges.length){
48
+ worksheet["!merges"] = merges;
49
+ }
50
+
51
+ return worksheet;
52
+ }
53
+
54
+ if(options.sheetOnly){
55
+ setFileContents(generateSheet());
56
+ return;
57
+ }
58
+
59
+ if(options.sheets){
60
+ for(var sheet in options.sheets){
61
+
62
+ if(options.sheets[sheet] === true){
63
+ workbook.SheetNames.push(sheet);
64
+ workbook.Sheets[sheet] = generateSheet();
65
+ }else{
66
+
67
+ workbook.SheetNames.push(sheet);
68
+
69
+ tableFeatures.commsSend(options.sheets[sheet], "download", "intercept",{
70
+ type:"xlsx",
71
+ options:{sheetOnly:true},
72
+ active:self.active,
73
+ intercept:function(data){
74
+ workbook.Sheets[sheet] = data;
75
+ }
76
+ });
77
+ }
78
+ }
79
+ }else{
80
+ workbook.SheetNames.push(sheetName);
81
+ workbook.Sheets[sheetName] = generateSheet();
82
+ }
83
+
84
+ if(options.documentProcessing){
85
+ workbook = options.documentProcessing(workbook);
86
+ }
87
+
88
+ //convert workbook to binary array
89
+ function s2ab(s) {
90
+ var buf = new ArrayBuffer(s.length);
91
+ var view = new Uint8Array(buf);
92
+ for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
93
+ return buf;
94
+ }
95
+
96
+ output = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary', compression });
97
+
98
+ setFileContents(s2ab(output), "application/octet-stream");
99
99
  }
@@ -1,15 +1,15 @@
1
- import csv from './downloaders/csv.js';
2
- import json from './downloaders/json.js';
3
- import pdf from './downloaders/pdf.js';
4
- import xlsx from './downloaders/xlsx.js';
5
- import html from './downloaders/html.js';
6
- import jsonLines from './downloaders/jsonLines.js';
7
-
8
- export default {
9
- csv:csv,
10
- json:json,
11
- jsonLines:jsonLines,
12
- pdf:pdf,
13
- xlsx:xlsx,
14
- html:html,
1
+ import csv from './downloaders/csv.js';
2
+ import json from './downloaders/json.js';
3
+ import pdf from './downloaders/pdf.js';
4
+ import xlsx from './downloaders/xlsx.js';
5
+ import html from './downloaders/html.js';
6
+ import jsonLines from './downloaders/jsonLines.js';
7
+
8
+ export default {
9
+ csv:csv,
10
+ json:json,
11
+ jsonLines:jsonLines,
12
+ pdf:pdf,
13
+ xlsx:xlsx,
14
+ html:html,
15
15
  };