* Fires when source document has been loaded
* @param {Pman.Gnumerci} this
*/
- "load" : true
+ 'load' : true
});
Roo.util.Observable.call(this,cfg);
//Roo.log( cs.r+ ',' + cs.c + ' = '+ v);
// need to generate clell if it doe
if (typeof(this.grid[cs.r]) == 'undefined') {
- Roo.log('no row:' + cell);
+ //Roo.log('no row:' + cell);
this.grid[cs.r] = []; // create a row..
//return;
}
if (typeof(this.grid[cs.r][cs.c]) == 'undefined') {
- Roo.log('cell not defined:' + cell);
+ //Roo.log('cell not defined:' + cell);
this.createCell(cs.r,cs.c);
}
if (typeof(this.grid[cs.r][cs.c].dom) == 'undefined') {
- Roo.log('no default content for cell:' + cell);
+ ///Roo.log('no default content for cell:' + cell);
this.createCell(cs.r,cs.c);
//return;
}
{
// read the first row.
var tds = Roo.get(table).select('tr').item(0).select('td');
- var nc = 0;
- tds.each(function(td) {
- var cs = td.dom.getAttribute('colspan');
- cs = cs ? cs * 1 : 1;
- nc += cs;
+ var maxnc = 0;
+
+ Roo.get(table).select('tr').each(function(trs) {
+ var nc = 0;
+
+ trs.select('td').each(function(td) {
+ var cs = td.dom.getAttribute('colspan');
+ cs = cs ? cs * 1 : 1;
+ nc += cs;
+ });
+ maxnc = Math.max(nc, maxnc);
});
+
var tr = document.createElement('tr');
table.appendChild(tr);
- var ar = {}
- for (i =0; i < nc; i++) {
+ var ar = {};
+ for (i =0; i < maxnc; i++) {
ar[i] = document.createElement('td');
tr.appendChild(ar[i]);
}
// find the left.
- var ret = { cols : nc, pos : {} };
- for (i =0; i < nc; i++) {
+ var ret = { cols : maxnc, pos : {} };
+ for (i =0; i < maxnc; i++) {
ret.pos[ Roo.get(ar[i]).getLeft()] =i;
}
+ ret.near = function(p) {
+ // which one is nearest..
+
+ if (this.pos[p]) {
+ return this.pos[p];
+ }
+ var prox = 100000;
+ var match = 0;
+ for(var i in this.pos) {
+ var dis = Math.abs(p-i);
+ if (dis < prox) {
+ prox = dis;
+ match = this.pos[i];
+ }
+ }
+ return match;
+
+ }
table.removeChild(tr);
return ret;
},
var rowspan = cols[col].getAttribute('rowspan');
rowspan = rowspan ? rowspan * 1 : 1;
- var realcol = table_data.pos[ Roo.get(cols[col]).getLeft() ];
+ var realcol = table_data.near( Roo.get(cols[col]).getLeft() );
var rcs = [];
ar = ar.slice(0,3);
Roo.each(ar, function(c) {
- rcs.push((c*256).toString(16)) ;
+ rcs.push((c*c).toString(16)) ;
});
return rcs.join(':');
'color': function(ent,v) {
ent['Fore'] = toCol(v);
- },
- 'background-color' : function(ent,v) {
- ent['Back'] = toCol(v);
- if (ent['Back']) != '0:0:0') {
+ // this is a bit dumb.. we assume that if it's not black text, then it's shaded..
+ if (ent['Fore'] != '0:0:0') {
ent['Shade'] = 1;
}
-
+ },
+ 'background-color' : function(ent,v) {
+ ent['Back'] = toCol(v);
+
}
}
sr.appendChild(st);
// do we need some defaults..
for(var k in ent) {
- Roo.log(k);
+ //Roo.log(k);
st.setAttribute(k, ent[k]);
}
// start adding them all together..
if (sb) {
- st.appendChild(sb)
+ st.appendChild(sb);
}
// step 1 - work out how many columns it will span..
// lets hope the spreadsheet is big enought..
var colwidth = 0;
- var endcol=col
+ var endcol=col;
for ( endcol=col;endcol <100; endcol++) {
if (!this.colInfo[endcol]) {
this.colInfo[endcol] = 100; // eak fudge
// return;
//}
- cell.textContent = this.RCtoCell(row1,col1) + ':' + this.RCtoCell(row2,col2)
+ cell.textContent = this.RCtoCell(row1,col1) + ':' + this.RCtoCell(row2,col2);
//var merges = this.gnumeric.getElementsByTagNameNS('*','MergedRegions');
var merges = this.sheet.getElementsByTagNameNS('*','MergedRegions');
this.sheet.insertBefore(merges,sl);
} else {
merges = merges[0];
- }
+ }
merges.appendChild(cell);
},
sheetnames = this.doc.getElementsByTagNameNS('*','Sheet');
sheetnames[0].parentNode.appendChild(sheetnames[sheetnames.length-1].cloneNode(true));
var sn = this.doc.getElementsByTagNameNS('*','Sheet')[sheet];
- var cls = sn.getElementsByTagNameNS('*','Cells')[0]
+ var cls = sn.getElementsByTagNameNS('*','Cells')[0];
while (cls.childNodes.length) {
cls.removeChild(cls.firstChild);
}
var ser = new XMLSerializer();
var x = new Pman.Download({
method: 'POST',
+ timeout : 120000, // quite a long wait.. 2 minutes.
params : {
xml : ser.serializeToString(this.doc),
format : 'xls', //xml