DataObjects/ProjectDirectory.php
[Pman.Core] / Pman.Gnumeric.js
index b03005f..953d66a 100644 (file)
@@ -532,16 +532,16 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
         //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;
         }
@@ -712,24 +712,49 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
     {
         // 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++) {
+        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;
     },
@@ -758,16 +783,15 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
         
         var table_data = this.readTableData(datagrid);
         
+        // oroginally this cleaned line breaks, but we acutally need them..
         var cleanHTML = function (str) {
             
-             var ret = str;
-            ret = ret.replace(/&nbsp;/g,'.');
-            ret = ret.replace(/\n/g,'.');
-            ret = ret.replace(/\r/g,'.');
+            var ret = str;
+            ret = ret.replace(/&nbsp;/g,' ');
+           // ret = ret.replace(/\n/g,'.');
+          //  ret = ret.replace(/\r/g,'.');
             var i;
-            while (-1 != (i = ret.indexOf(unescape('%A0')))) {
-                ret = ret.substring(0,i) + ' ' + ret.substring(i+1,str.length);
-            }
+             
             return ret;
         };
 
@@ -785,9 +809,9 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
             // it might mess things up..
             
             if (rows[row].getAttribute('xls:height')) {
-                this.setRowHeight(row + yoff, 1* rows[row].getAttribute('xls:height'));
+                this.setRowHeight(row + yoff +1, 1* rows[row].getAttribute('xls:height'));
             } else {
-                this.setRowHeight( row + yoff, Roo.get(rows[row]).getHeight());
+                this.setRowHeight( row + yoff +1, Roo.get(rows[row]).getHeight());
             }
             
          
@@ -805,7 +829,7 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
                 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() );
                 
                 
                 
@@ -916,7 +940,7 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
             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(':');
             
@@ -933,10 +957,15 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
             
             'color': function(ent,v) { 
                 ent['Fore'] = toCol(v);
+                // 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);
-                
+                 
             }
             
         }
@@ -964,6 +993,16 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
             }
             map[k](ent,val);
         }
+        // special flags..
+        if (el.dom.getAttribute('xls:wraptext')) {
+            ent.WrapText = 1;
+        }
+        if (el.dom.getAttribute('xls:valign')) {
+            ent.VAlign= 1;
+        }
+        if (el.dom.getAttribute('xls:halign')) {
+            ent.HAlign= 1;
+        }
         // fonts..
         var fmap = {
             
@@ -974,12 +1013,11 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
             'font-weight' : function(ent,v) { 
                 if (v != 'bold') return;
                 ent['Bold'] = 1;
+            },
+            'font-style' : function(ent,v) { 
+                if (v != 'italic') return;
+                ent['Italic'] = 1;
             } 
-            //FontItalic : function(ent,v) { 
-            //    if (v*0 < 1) return;
-            //    //ent['font-weight'] = 'bold';
-            //},
-            
         }
        
         var fent = {
@@ -1022,7 +1060,7 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
         sr.appendChild(st);
         // do we need some defaults..
         for(var k in ent) {
-            Roo.log(k);
+            //Roo.log(k);
             st.setAttribute(k, ent[k]);
         }
         
@@ -1186,7 +1224,7 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
             this.sheet.insertBefore(merges,sl);
         } else {
             merges = merges[0];
-           }
+        }
         merges.appendChild(cell);
     
     },
@@ -1203,9 +1241,11 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
         //<gmr:Rows DefaultSizePts="12.75">
         //   <gmr:RowInfo No="2" Unit="38.25" MarginA="0" MarginB="0" HardSize="1"/>
     //  < /gmr:Rows>
-    
-        if (this.rowInfoEl[r]) {
-            this.rowInfoEl[r].setAttribute('Unit', height);
+        
+        // this doesnt handle row ranges very well.. - with 'count in them..'
+        
+        if (this.rowInfoDom[r]) {
+            this.rowInfoDom[r].setAttribute('Unit', height);
             return;
         }
     
@@ -1218,7 +1258,7 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, {
         ri.setAttribute('MarginB', 0);
         ri.setAttribute('HardSize', 1);
         rows.appendChild(ri);
-        this.rowInfoEl[r] = ri;
+        this.rowInfoDom[r] = ri;
     },
      
     /**