/* oss.sheetjs.com (C) 2014-present SheetJS -- http://sheetjs.com */ /* vim: set ts=2: */ /** drop target **/ var _target = document.getElementById('drop'); var _file = document.getElementById('file'); var _grid = document.getElementById('grid'); /** Spinner **/ var spinner; var _workstart = function() { spinner = new Spinner().spin(_target); } var _workend = function() { spinner.stop(); } /** Alerts **/ var _badfile = function() { alertify.alert('This file does not appear to be a valid Excel file. If we made a mistake, please send this file to dev@sheetjs.com so we can take a look.', function(){}); }; var _pending = function() { alertify.alert('Please wait until the current file is processed.', function(){}); }; var _large = function(len, cb) { alertify.confirm("This file is " + len + " bytes and may take a few moments. Your browser may lock up during this process. Shall we play?", cb); }; var _failed = function(e) { console.log(e, e.stack); alertify.alert('We unfortunately dropped the ball here. Please test the file using the raw parser. If there are issues with the file processor, please send this file to dev@sheetjs.com so we can make things right.', function(){}); }; /* make the buttons for the sheets */ var make_buttons = function(sheetnames, cb) { var buttons = document.getElementById('buttons'); buttons.innerHTML = ""; sheetnames.forEach(function(s,idx) { var btn = document.createElement('button'); btn.type = 'button'; btn.name = 'btn' + idx; btn.text = s; var txt = document.createElement('h3'); txt.innerText = s; btn.appendChild(txt); btn.addEventListener('click', function() { cb(idx); }, false); buttons.appendChild(btn); buttons.appendChild(document.createElement('br')); }); }; var cdg = canvasDatagrid({ parentNode: _grid }); cdg.style.height = '100%'; cdg.style.width = '100%'; function _resize() { _grid.style.height = (window.innerHeight - 200) + "px"; _grid.style.width = (window.innerWidth - 200) + "px"; } window.addEventListener('resize', _resize); var _onsheet = function(json, sheetnames, select_sheet_cb) { document.getElementById('footnote').style.display = "none"; make_buttons(sheetnames, select_sheet_cb); /* show grid */ _grid.style.display = "block"; _resize(); /* set up table headers */ var L = 0; json.forEach(function(r) { if(L < r.length) L = r.length; }); console.log(L); for(var i = json[0].length; i < L; ++i) { json[0][i] = ""; } /* load data */ cdg.data = json; }; /** Drop it like it's hot **/ DropSheet({ file: _file, drop: _target, on: { workstart: _workstart, workend: _workend, sheet: _onsheet, foo: 'bar' }, errors: { badfile: _badfile, pending: _pending, failed: _failed, large: _large, foo: 'bar' } })