Skip to content

Commit fc35598

Browse files
committed
cdg schema
1 parent b7bb01c commit fc35598

File tree

3 files changed

+215
-210
lines changed

3 files changed

+215
-210
lines changed

assets/js/dropsheet.js

Lines changed: 135 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -1,152 +1,152 @@
1-
/* dropsheet.js (C) 2014-present SheetJS -- http://sheetjs.com */
1+
/* oss.sheetjs.com (C) 2014-present SheetJS -- http://sheetjs.com */
22
/* vim: set ts=2: */
33

44
var DropSheet = function DropSheet(opts) {
5-
if(!opts) opts = {};
6-
var nullfunc = function(){};
7-
if(!opts.errors) opts.errors = {};
8-
if(!opts.errors.badfile) opts.errors.badfile = nullfunc;
9-
if(!opts.errors.pending) opts.errors.pending = nullfunc;
10-
if(!opts.errors.failed) opts.errors.failed = nullfunc;
11-
if(!opts.errors.large) opts.errors.large = nullfunc;
12-
if(!opts.on) opts.on = {};
13-
if(!opts.on.workstart) opts.on.workstart = nullfunc;
14-
if(!opts.on.workend) opts.on.workend = nullfunc;
15-
if(!opts.on.sheet) opts.on.sheet = nullfunc;
16-
if(!opts.on.wb) opts.on.wb = nullfunc;
5+
if(!opts) opts = {};
6+
var nullfunc = function(){};
7+
if(!opts.errors) opts.errors = {};
8+
if(!opts.errors.badfile) opts.errors.badfile = nullfunc;
9+
if(!opts.errors.pending) opts.errors.pending = nullfunc;
10+
if(!opts.errors.failed) opts.errors.failed = nullfunc;
11+
if(!opts.errors.large) opts.errors.large = nullfunc;
12+
if(!opts.on) opts.on = {};
13+
if(!opts.on.workstart) opts.on.workstart = nullfunc;
14+
if(!opts.on.workend) opts.on.workend = nullfunc;
15+
if(!opts.on.sheet) opts.on.sheet = nullfunc;
16+
if(!opts.on.wb) opts.on.wb = nullfunc;
1717

18-
var rABS = typeof FileReader !== 'undefined' && FileReader.prototype && FileReader.prototype.readAsBinaryString;
19-
var useworker = typeof Worker !== 'undefined';
20-
var pending = false;
21-
function fixdata(data) {
22-
var o = "", l = 0, w = 10240;
23-
for(; l<data.byteLength/w; ++l)
24-
o+=String.fromCharCode.apply(null,new Uint8Array(data.slice(l*w,l*w+w)));
25-
o+=String.fromCharCode.apply(null, new Uint8Array(data.slice(o.length)));
26-
return o;
27-
}
18+
var rABS = typeof FileReader !== 'undefined' && FileReader.prototype && FileReader.prototype.readAsBinaryString;
19+
var useworker = typeof Worker !== 'undefined';
20+
var pending = false;
21+
function fixdata(data) {
22+
var o = "", l = 0, w = 10240;
23+
for(; l<data.byteLength/w; ++l)
24+
o+=String.fromCharCode.apply(null,new Uint8Array(data.slice(l*w,l*w+w)));
25+
o+=String.fromCharCode.apply(null, new Uint8Array(data.slice(o.length)));
26+
return o;
27+
}
2828

29-
function sheetjsw(data, cb, readtype) {
30-
pending = true;
31-
opts.on.workstart();
32-
var scripts = document.getElementsByTagName('script');
33-
var dropsheetPath;
34-
for (var i = 0; i < scripts.length; i++) {
35-
if (scripts[i].src.indexOf('dropsheet') != -1) {
36-
dropsheetPath = scripts[i].src.split('dropsheet.js')[0];
37-
}
38-
}
39-
var worker = new Worker(dropsheetPath + 'sheetjsw.js');
40-
worker.onmessage = function(e) {
41-
switch(e.data.t) {
42-
case 'ready': break;
43-
case 'e': pending = false; console.error(e.data.d); break;
44-
case 'xlsx':
45-
pending = false;
46-
opts.on.workend();
47-
cb(JSON.parse(e.data.d)); break;
48-
}
49-
};
50-
worker.postMessage({d:data,b:readtype,t:'xlsx'});
51-
}
29+
function sheetjsw(data, cb, readtype) {
30+
pending = true;
31+
opts.on.workstart();
32+
var scripts = document.getElementsByTagName('script');
33+
var dropsheetPath;
34+
for (var i = 0; i < scripts.length; i++) {
35+
if (scripts[i].src.indexOf('dropsheet') != -1) {
36+
dropsheetPath = scripts[i].src.split('dropsheet.js')[0];
37+
}
38+
}
39+
var worker = new Worker(dropsheetPath + 'sheetjsw.js');
40+
worker.onmessage = function(e) {
41+
switch(e.data.t) {
42+
case 'ready': break;
43+
case 'e': pending = false; console.error(e.data.d); break;
44+
case 'xlsx':
45+
pending = false;
46+
opts.on.workend();
47+
cb(JSON.parse(e.data.d)); break;
48+
}
49+
};
50+
worker.postMessage({d:data,b:readtype,t:'xlsx'});
51+
}
5252

53-
var last_wb;
53+
var last_wb;
5454

55-
function to_json(workbook) {
56-
if(useworker && workbook.SSF) XLSX.SSF.load_table(workbook.SSF);
57-
var result = {};
58-
workbook.SheetNames.forEach(function(sheetName) {
59-
var roa = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], {header:1});
60-
if(roa.length > 0) result[sheetName] = roa;
61-
});
62-
return result;
63-
}
55+
function to_json(workbook) {
56+
if(useworker && workbook.SSF) XLSX.SSF.load_table(workbook.SSF);
57+
var result = {};
58+
workbook.SheetNames.forEach(function(sheetName) {
59+
var roa = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], {header:1});
60+
if(roa.length > 0) result[sheetName] = roa;
61+
});
62+
return result;
63+
}
6464

65-
function choose_sheet(sheetidx) { process_wb(last_wb, sheetidx); }
65+
function choose_sheet(sheetidx) { process_wb(last_wb, sheetidx); }
6666

67-
function process_wb(wb, sheetidx) {
68-
last_wb = wb;
69-
opts.on.wb(wb, sheetidx);
70-
var sheet = wb.SheetNames[sheetidx||0];
71-
var json = to_json(wb)[sheet];
72-
opts.on.sheet(json, wb.SheetNames, choose_sheet);
73-
}
67+
function process_wb(wb, sheetidx) {
68+
last_wb = wb;
69+
opts.on.wb(wb, sheetidx);
70+
var sheet = wb.SheetNames[sheetidx||0];
71+
var json = to_json(wb)[sheet];
72+
opts.on.sheet(json, wb.SheetNames, choose_sheet);
73+
}
7474

75-
function handleDrop(e) {
76-
e.stopPropagation();
77-
e.preventDefault();
78-
if(pending) return opts.errors.pending();
79-
var files = e.dataTransfer.files;
80-
var i,f;
81-
for (i = 0, f = files[i]; i != files.length; ++i) {
82-
var reader = new FileReader();
83-
var name = f.name;
84-
reader.onload = function(e) {
85-
var data = e.target.result;
86-
var wb, arr;
87-
var readtype = {type: rABS ? 'binary' : 'base64' };
88-
if(!rABS) {
89-
arr = fixdata(data);
90-
data = btoa(arr);
91-
}
92-
function doit() {
93-
try {
94-
if(useworker) { sheetjsw(data, process_wb, readtype); return; }
95-
wb = XLSX.read(data, readtype);
96-
process_wb(wb);
97-
} catch(e) { console.log(e); opts.errors.failed(e); }
98-
}
75+
function handleDrop(e) {
76+
e.stopPropagation();
77+
e.preventDefault();
78+
if(pending) return opts.errors.pending();
79+
var files = e.dataTransfer.files;
80+
var i,f;
81+
for (i = 0, f = files[i]; i != files.length; ++i) {
82+
var reader = new FileReader();
83+
var name = f.name;
84+
reader.onload = function(e) {
85+
var data = e.target.result;
86+
var wb, arr;
87+
var readtype = {type: rABS ? 'binary' : 'base64' };
88+
if(!rABS) {
89+
arr = fixdata(data);
90+
data = btoa(arr);
91+
}
92+
function doit() {
93+
try {
94+
if(useworker) { sheetjsw(data, process_wb, readtype); return; }
95+
wb = XLSX.read(data, readtype);
96+
process_wb(wb);
97+
} catch(e) { console.log(e); opts.errors.failed(e); }
98+
}
9999

100-
if(e.target.result.length > 1e6) opts.errors.large(e.target.result.length, function(e) { if(e) doit(); });
101-
else { doit(); }
102-
};
103-
if(rABS) reader.readAsBinaryString(f);
104-
else reader.readAsArrayBuffer(f);
105-
}
106-
}
100+
if(e.target.result.length > 1e6) opts.errors.large(e.target.result.length, function(e) { if(e) doit(); });
101+
else { doit(); }
102+
};
103+
if(rABS) reader.readAsBinaryString(f);
104+
else reader.readAsArrayBuffer(f);
105+
}
106+
}
107107

108-
function handleDragover(e) {
109-
e.stopPropagation();
110-
e.preventDefault();
111-
e.dataTransfer.dropEffect = 'copy';
112-
}
108+
function handleDragover(e) {
109+
e.stopPropagation();
110+
e.preventDefault();
111+
e.dataTransfer.dropEffect = 'copy';
112+
}
113113

114-
if(opts.drop.addEventListener) {
115-
opts.drop.addEventListener('dragenter', handleDragover, false);
116-
opts.drop.addEventListener('dragover', handleDragover, false);
117-
opts.drop.addEventListener('drop', handleDrop, false);
118-
}
114+
if(opts.drop.addEventListener) {
115+
opts.drop.addEventListener('dragenter', handleDragover, false);
116+
opts.drop.addEventListener('dragover', handleDragover, false);
117+
opts.drop.addEventListener('drop', handleDrop, false);
118+
}
119119

120-
function handleFile(e) {
121-
if(pending) return opts.errors.pending();
122-
var files = e.target.files;
123-
var i,f;
124-
for (i = 0, f = files[i]; i != files.length; ++i) {
125-
var reader = new FileReader();
126-
var name = f.name;
127-
reader.onload = function(e) {
128-
var data = e.target.result;
129-
var wb, arr;
130-
var readtype = {type: rABS ? 'binary' : 'base64' };
131-
if(!rABS) {
132-
arr = fixdata(data);
133-
data = btoa(arr);
134-
}
135-
function doit() {
136-
try {
137-
if(useworker) { sheetjsw(data, process_wb, readtype); return; }
138-
wb = XLSX.read(data, readtype);
139-
process_wb(wb);
140-
} catch(e) { console.log(e); opts.errors.failed(e); }
141-
}
120+
function handleFile(e) {
121+
if(pending) return opts.errors.pending();
122+
var files = e.target.files;
123+
var i,f;
124+
for (i = 0, f = files[i]; i != files.length; ++i) {
125+
var reader = new FileReader();
126+
var name = f.name;
127+
reader.onload = function(e) {
128+
var data = e.target.result;
129+
var wb, arr;
130+
var readtype = {type: rABS ? 'binary' : 'base64' };
131+
if(!rABS) {
132+
arr = fixdata(data);
133+
data = btoa(arr);
134+
}
135+
function doit() {
136+
try {
137+
if(useworker) { sheetjsw(data, process_wb, readtype); return; }
138+
wb = XLSX.read(data, readtype);
139+
process_wb(wb);
140+
} catch(e) { console.log(e); opts.errors.failed(e); }
141+
}
142142

143-
if(e.target.result.length > 1e6) opts.errors.large(e.target.result.length, function(e) { if(e) doit(); });
144-
else { doit(); }
145-
};
146-
if(rABS) reader.readAsBinaryString(f);
147-
else reader.readAsArrayBuffer(f);
148-
}
149-
}
143+
if(e.target.result.length > 1e6) opts.errors.large(e.target.result.length, function(e) { if(e) doit(); });
144+
else { doit(); }
145+
};
146+
if(rABS) reader.readAsBinaryString(f);
147+
else reader.readAsArrayBuffer(f);
148+
}
149+
}
150150

151-
if(opts.file && opts.file.addEventListener) opts.file.addEventListener('change', handleFile, false);
151+
if(opts.file && opts.file.addEventListener) opts.file.addEventListener('change', handleFile, false);
152152
};

assets/js/main.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
/* oss.sheetjs.com (C) 2014-present SheetJS -- http://sheetjs.com */
2+
/* vim: set ts=2: */
3+
14
/** drop target **/
25
var _target = document.getElementById('drop');
36
var _file = document.getElementById('file');
@@ -64,16 +67,16 @@ var _onsheet = function(json, sheetnames, select_sheet_cb) {
6467
_grid.style.display = "block";
6568
_resize();
6669

67-
/* load data */
68-
cdg.data = json;
69-
7070
/* set up table headers */
7171
var L = 0;
7272
json.forEach(function(r) { if(L < r.length) L = r.length; });
73-
for(var i = 0; i < L; ++i) {
74-
cdg.schema[i].title = XLSX.utils.encode_col(i);
73+
console.log(L);
74+
for(var i = json[0].length; i < L; ++i) {
75+
json[0][i] = "";
7576
}
7677

78+
/* load data */
79+
cdg.data = json;
7780
};
7881

7982
/** Drop it like it's hot **/

0 commit comments

Comments
 (0)