| 
									
										
										
										
											2017-09-05 05:26:50 +00:00
										 |  |  | /* xlsx.js (C) 2013-present  SheetJS -- http://sheetjs.com */ | 
					
						
							| 
									
										
										
										
											2017-05-24 22:52:35 +00:00
										 |  |  | import { Meteor } from 'meteor/meteor'; | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | import { check } from 'meteor/check'; | 
					
						
							|  |  |  | import XLSX from 'xlsx'; | 
					
						
							| 
									
										
										
										
											2017-05-24 22:52:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Meteor.methods({ | 
					
						
							| 
									
										
										
										
											2018-02-03 20:46:32 +00:00
										 |  |  |   /* read the data and return the workbook object to the frontend */ | 
					
						
							|  |  |  |   uploadS: (bstr, name) => { | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  |     check(bstr, String); | 
					
						
							|  |  |  |     check(name, String); | 
					
						
							|  |  |  |     return XLSX.read(bstr, { type: 'binary' }); | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2018-02-03 20:46:32 +00:00
										 |  |  |   uploadU: (ab, name) => { | 
					
						
							|  |  |  |     check(ab, Uint8Array); | 
					
						
							|  |  |  |     check(name, String); | 
					
						
							|  |  |  |     return XLSX.read(ab, { type: 'array' }); | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  |   download: (html) => { | 
					
						
							|  |  |  |     check(html, String); | 
					
						
							|  |  |  |     let wb; | 
					
						
							|  |  |  |     if (html.length > 3) { | 
					
						
							|  |  |  |       /* parse workbook if html is available */ | 
					
						
							|  |  |  |       wb = XLSX.read(html, { type: 'binary' }); | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |       /* generate a workbook object otherwise */ | 
					
						
							|  |  |  |       const data = [['a', 'b', 'c'], [1, 2, 3]]; | 
					
						
							|  |  |  |       const ws = XLSX.utils.aoa_to_sheet(data); | 
					
						
							|  |  |  |       wb = XLSX.utils.book_new(); | 
					
						
							|  |  |  |       XLSX.utils.book_append_sheet(wb, ws, 'SheetJS'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return wb; | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2017-05-24 22:52:35 +00:00
										 |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Meteor.startup(() => { }); |