You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
2.9 KiB

/* 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 <a href="mailto:dev@sheetjs.com?subject=I+broke+your+stuff">dev@sheetjs.com</a> 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 <a href="/js-xlsx/">raw parser</a>. If there are issues with the file processor, please send this file to <a href="mailto:dev@sheetjs.com?subject=I+broke+your+stuff">dev@sheetjs.com</a> 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'
}
})