| 
									
										
										
										
											2017-09-05 05:26:50 +00:00
										 |  |  | /* xlsx.js (C) 2013-present  SheetJS -- http://sheetjs.com */ | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | import XLSX from 'xlsx'; | 
					
						
							|  |  |  | /* note: saveAs is made available via the smart package */ | 
					
						
							|  |  |  | /* global saveAs */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { Meteor } from 'meteor/meteor'; | 
					
						
							| 
									
										
										
										
											2017-05-24 22:52:35 +00:00
										 |  |  | import { Template } from 'meteor/templating'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import './main.html'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | Template.sheetjs.events({ | 
					
						
							|  |  |  |   'change input' (event) { | 
					
						
							|  |  |  |     /* "Browser file upload form element" from SheetJS README */ | 
					
						
							|  |  |  |     const file = event.currentTarget.files[0]; | 
					
						
							|  |  |  |     const reader = new FileReader(); | 
					
						
							|  |  |  |     reader.onload = function(e) { | 
					
						
							|  |  |  |       const data = e.target.result; | 
					
						
							|  |  |  |       const name = file.name; | 
					
						
							|  |  |  |       /* Meteor magic */ | 
					
						
							|  |  |  |       Meteor.call('upload', data, name, function(err, wb) { | 
					
						
							|  |  |  |         if (err) throw err; | 
					
						
							|  |  |  |         /* load the first worksheet */ | 
					
						
							|  |  |  |         const ws = wb.Sheets[wb.SheetNames[0]]; | 
					
						
							|  |  |  |         /* generate HTML table and enable export */ | 
					
						
							|  |  |  |         const html = XLSX.utils.sheet_to_html(ws, { editable: true }); | 
					
						
							|  |  |  |         document.getElementById('out').innerHTML = html; | 
					
						
							|  |  |  |         document.getElementById('dnload').disabled = false; | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     reader.readAsBinaryString(file); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   'click button' () { | 
					
						
							|  |  |  |     const html = document.getElementById('out').innerHTML; | 
					
						
							|  |  |  |     Meteor.call('download', html, function(err, wb) { | 
					
						
							|  |  |  |       if (err) throw err; | 
					
						
							|  |  |  |       /* "Browser download file" from SheetJS README */ | 
					
						
							| 
									
										
										
										
											2017-12-30 05:40:35 +00:00
										 |  |  |       const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'array' }); | 
					
						
							|  |  |  |       saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'sheetjs.xlsx'); | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  |     }); | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2017-05-24 22:52:35 +00:00
										 |  |  | }); | 
					
						
							|  |  |  | 
 |