roojs-bootstrap.js
authorAlan Knowles <alan@roojs.com>
Mon, 26 Jul 2021 06:11:52 +0000 (14:11 +0800)
committerAlan Knowles <alan@roojs.com>
Mon, 26 Jul 2021 06:11:52 +0000 (14:11 +0800)
roojs-bootstrap-debug.js
Roo/bootstrap/Table.js

Roo/bootstrap/Table.js
roojs-bootstrap-debug.js
roojs-bootstrap.js

index a841f5c..dbeebfd 100644 (file)
@@ -436,7 +436,7 @@ Roo.extend(Roo.bootstrap.Table, Roo.bootstrap.Component,  {
         for(var i = 0, len = cm.getColumnCount(); i < len; i++) {
             var w = cm.getColumnWidth(i, false);
             if(!cm.isHidden(i)){
-                w = 0;
+                cols.push( { rel : false, abs : 0 });
             }
             if (w !== false) {
                 cols.push( { rel : false, abs : w });
index f66ba9f..b65af7c 100644 (file)
@@ -8296,11 +8296,16 @@ Roo.extend(Roo.grid.ColumnModel, Roo.util.Observable, {
                if (typeof(gridSize) == 'undefined') {
                        return cfg.width * 1 || this.defaultWidth;
                }
-               for(var i in ['xl', 'lg', 'md', 'sm', 'xs']) {
-                       if (typeof(cfg[i]) == 'undefined') {
+               if (gridSize === false) { // if we set it..
+                       return cfg.width || false;
+               }
+               var sizes = ['xl', 'lg', 'md', 'sm', 'xs'];
+               
+               for(var i = sizes.indexOf(gridSize); i < sizes.length; i++) {
+                       if (typeof(cfg[ sizes[i] ] ) == 'undefined') {
                                continue;
                        }
-                       return cfg[i];
+                       return cfg[ sizes[i] ];
                }
                return 1;
                
@@ -9066,29 +9071,42 @@ Roo.extend(Roo.bootstrap.Table, Roo.bootstrap.Component,  {
         var total = 0;
         var last = -1;
         var cols = []; // visable cols.
+        var total_abs = 0;
         for(var i = 0, len = cm.getColumnCount(); i < len; i++) {
+            var w = cm.getColumnWidth(i, false);
+            if(!cm.isHidden(i)){
+                w = 0;
+            }
+            if (w !== false) {
+                cols.push( { rel : false, abs : w });
+                total_abs += w;
+                continue;
+            }
             var w = cm.getColumnWidth(i, sz);
             if (w > 0) {
                 last = i
             }
             total += w;
-            cols.push(w);
+            cols.push( { rel : w, abs : false });
         }
         
+        var avail = this.bodyEl.dom.clientWidth - total_abs;
         
-        var unitWidth = Math.floor(this.bodyEl.dom.clientWidth / total);
-        var rem = this.bodyEl.dom.clientWidth - (unitWidth * total);
+        var unitWidth = Math.floor(avail / total);
+        var rem = avail - (unitWidth * total);
         
-        var hidden, width;
+        var hidden, width, pos = 0;
         for(var i = 0, len = cm.getColumnCount(); i < len; i++) {
             
             var hidden = 'display:none;';
+            var left = '';
             var width  = 'width:0px;';
             if(!cm.isHidden(i)){
                 hidden = '';
                 
+                
                 // we can honour xs/sm/md/xl ?
-                var w = cols[i] * unitWidth;
+                var w = cols[i].rel == false ? cols[i].abs : (cols[i].rel * unitWidth);
                 if (w===0) {
                     hidden = 'display:none;';
                 }
@@ -9096,13 +9114,16 @@ Roo.extend(Roo.bootstrap.Table, Roo.bootstrap.Component,  {
                 if (i == last) {
                     w+=rem; // add the remaining with..
                 }
-                
+                pos += w;
+                left = "left:" + pos + "px;";
                 width = "width:" + w+ "px;";
+                
             }
             
             styles.push(
                     '#' , this.id , ' .x-col-' , i, " {\n", cm.config[i].css, width, hidden, "\n}\n",
-                    '#' , this.id , ' .x-hcol-' , i, " {\n", width, hidden,"}\n"
+                    '#' , this.id , ' .x-hcol-' , i, " {\n", width, hidden,"}\n",
+                    '#' , this.id , ' .x-grid-split-' , i, " {\n", left,"}\n"
             );
         }
         Roo.log(styles.join(''));
@@ -10088,12 +10109,14 @@ Roo.extend(Roo.bootstrap.Table, Roo.bootstrap.Component,  {
         var cm = this.colModel;
         
         cm.setColumnWidth(i, w, true);
+        this.initCSS();
         //var cid = cm.getColumnId(i); << not used in this version?
-        Roo.log(['#' + this.id + ' .x-col-' + i, "width", w + "px"]);
+       /* Roo.log(['#' + this.id + ' .x-col-' + i, "width", w + "px"]);
         
         this.CSS.updateRule( '#' + this.id + ' .x-col-' + i, "width", w + "px");
         this.CSS.updateRule('#' + this.id + ' .x-hcol-' + i, "width", w + "px");
-        
+        this.CSS.updateRule('#' + this.id + ' .x-grid-split-' + i, "left", w + "px");
+*/
         //this.updateSplitters();
         //this.layout(); << ??
         this.fireEvent("columnresize", i, w);
index e5024a9..aac07ab 100644 (file)
@@ -346,10 +346,10 @@ return B>-1?this.config[B]:false;},getIndexById:function(id){for(var i=0,A=this.
 }this.config[A].locked=B;if(!C){this.fireEvent("columnlockchange",this,A,B);}},getTotalLockedWidth:function(){var A=0;for(var i=0;i<this.config.length;i++){if(this.isLocked(i)&&!this.isHidden(i)){this.totalWidth+=this.getColumnWidth(i);}}return A;},getLockedCount:function(){for(var i=0,A=this.config.length;
 i<A;i++){if(!this.isLocked(i)){return i;}}return this.config.length;},getColumnCount:function(A){if(A===true){var c=0;for(var i=0,B=this.config.length;i<B;i++){if(!this.isHidden(i)){c++;}}return c;}return this.config.length;},getColumnsBy:function(fn,A){var r=[];
 for(var i=0,B=this.config.length;i<B;i++){var c=this.config[i];if(fn.call(A||this,c,i)===true){r[r.length]=c;}}return r;},isSortable:function(A){if(typeof this.config[A].sortable=="undefined"){return this.defaultSortable;}return this.config[A].sortable;},getRenderer:function(A){if(!this.config[A].renderer){return Roo.grid.ColumnModel.defaultRenderer;
-}return this.config[A].renderer;},setRenderer:function(A,fn){this.config[A].renderer=fn;},getColumnWidth:function(A,B){var C=this.config[A];if(typeof(B)=='undefined'){return C.width*1||this.defaultWidth;}for(var i in ['xl','lg','md','sm','xs']){if(typeof(C[i])=='undefined'){continue;
-}return C[i];}return 1;},setColumnWidth:function(A,B,C){this.config[A].width=B;this.totalWidth=null;if(!C){this.fireEvent("widthchange",this,A,B);}},getTotalWidth:function(A){if(!this.totalWidth){this.totalWidth=0;for(var i=0,B=this.config.length;i<B;i++){if(A||!this.isHidden(i)){this.totalWidth+=this.getColumnWidth(i);
-}}}return this.totalWidth;},getColumnHeader:function(A){return this.config[A].header;},setColumnHeader:function(A,B){this.config[A].header=B;this.fireEvent("headerchange",this,A,B);},getColumnTooltip:function(A){return this.config[A].tooltip;},setColumnTooltip:function(A,B){this.config[A].tooltip=B;
-},getDataIndex:function(A){return this.config[A].dataIndex;},setDataIndex:function(A,B){this.config[A].dataIndex=B;},isCellEditable:function(A,B){return (this.config[A].editable||(typeof this.config[A].editable=="undefined"&&this.config[A].editor))?true:false;
+}return this.config[A].renderer;},setRenderer:function(A,fn){this.config[A].renderer=fn;},getColumnWidth:function(A,B){var C=this.config[A];if(typeof(B)=='undefined'){return C.width*1||this.defaultWidth;}if(B===false){return C.width||false;}var D=['xl','lg','md','sm','xs'];
+for(var i=D.indexOf(B);i<D.length;i++){if(typeof(C[D[i]])=='undefined'){continue;}return C[D[i]];}return 1;},setColumnWidth:function(A,B,C){this.config[A].width=B;this.totalWidth=null;if(!C){this.fireEvent("widthchange",this,A,B);}},getTotalWidth:function(A){if(!this.totalWidth){this.totalWidth=0;
+for(var i=0,B=this.config.length;i<B;i++){if(A||!this.isHidden(i)){this.totalWidth+=this.getColumnWidth(i);}}}return this.totalWidth;},getColumnHeader:function(A){return this.config[A].header;},setColumnHeader:function(A,B){this.config[A].header=B;this.fireEvent("headerchange",this,A,B);
+},getColumnTooltip:function(A){return this.config[A].tooltip;},setColumnTooltip:function(A,B){this.config[A].tooltip=B;},getDataIndex:function(A){return this.config[A].dataIndex;},setDataIndex:function(A,B){this.config[A].dataIndex=B;},isCellEditable:function(A,B){return (this.config[A].editable||(typeof this.config[A].editable=="undefined"&&this.config[A].editor))?true:false;
 },getCellEditor:function(A,B){return this.config[A].editor;},setEditable:function(A,B){this.config[A].editable=B;},isHidden:function(A){return this.config[A].hidden;},isFixed:function(A){return this.config[A].fixed;},isResizable:function(A){return A>=0&&this.config[A].resizable!==false&&this.config[A].fixed!==true;
 },setHidden:function(A,B){this.config[A].hidden=B;this.totalWidth=null;this.fireEvent("hiddenchange",this,A,B);},setEditor:function(A,B){this.config[A].editor=B;},addColumn:function(c){var i=this.config.length;this.config[i]=c;if(typeof c.dataIndex=="undefined"){c.dataIndex=i;
 }if(typeof c.renderer=="string"){c.renderer=Roo.util.Format[c.renderer];}if(typeof c.id=="undefined"){c.id=Roo.id();}if(c.editor&&c.editor.xtype){c.editor=Roo.factory(c.editor,Roo.grid);}if(c.editor&&c.editor.isFormField){c.editor=new Roo.grid.GridEditor(c.editor);
@@ -374,8 +374,9 @@ if(this.footer){this.footer.parentId=this.id;this.footer.onRender(this.el.select
 );}this.store.on('load',this.onLoad,this);this.store.on('beforeload',this.onBeforeLoad,this);this.store.on('update',this.onUpdate,this);this.store.on('add',this.onAdd,this);this.store.on("clear",this.clear,this);this.el.on("contextmenu",this.onContextMenu,this);
 this.cm.on("headerchange",this.onHeaderChange,this);this.cm.on("hiddenchange",this.onHiddenChange,this,arguments);this.bodyEl.on("click",this.onClick,this);this.bodyEl.on("dblclick",this.onDblClick,this);this.bodyEl.on('scroll',this.onBodyScroll,this);this.relayEvents(this.bodyEl,["mousedown","mouseup","mouseover","mouseout","keypress"]);
 this.resizeProxy=Roo.get(document.body).createChild({cls:"x-grid-resize-proxy",html:'&#160;'});if(this.headEl&&this.enableColumnResize!==false&&Roo.grid.SplitDragZone){new Roo.grid.SplitDragZone(this,this.headEl.dom,false);}this.initCSS();},getView:function(){return this;
-},initCSS:function(){var cm=this.cm,A=[];this.CSS.removeStyleSheet(this.id+'-cssrules');var sz=Roo.getGridSize();var B=0;var C=-1;var D=[];for(var i=0,E=cm.getColumnCount();i<E;i++){var w=cm.getColumnWidth(i,sz);if(w>0){C=i}B+=w;D.push(w);}var F=Math.floor(this.bodyEl.dom.clientWidth/B);
-var G=this.bodyEl.dom.clientWidth-(F*B);var H,I;for(var i=0,E=cm.getColumnCount();i<E;i++){var H='display:none;';var I='width:0px;';if(!cm.isHidden(i)){H='';var w=D[i]*F;if(w===0){H='display:none;';}if(i==C){w+=G;}I="width:"+w+"px;";}A.push('#',this.id,' .x-col-',i," {\n",cm.config[i].css,I,H,"\n}\n",'#',this.id,' .x-hcol-',i," {\n",I,H,"}\n");
+},initCSS:function(){var cm=this.cm,A=[];this.CSS.removeStyleSheet(this.id+'-cssrules');var sz=Roo.getGridSize();var B=0;var C=-1;var D=[];var E=0;for(var i=0,F=cm.getColumnCount();i<F;i++){var w=cm.getColumnWidth(i,false);if(!cm.isHidden(i)){w=0;}if(w!==false){D.push({rel:false,abs:w}
+);E+=w;continue;}var w=cm.getColumnWidth(i,sz);if(w>0){C=i}B+=w;D.push({rel:w,abs:false});}var G=this.bodyEl.dom.clientWidth-E;var H=Math.floor(G/B);var I=G-(H*B);var J,K,L=0;for(var i=0,F=cm.getColumnCount();i<F;i++){var J='display:none;';var M='';var K='width:0px;';
+if(!cm.isHidden(i)){J='';var w=D[i].rel==false?D[i].abs:(D[i].rel*H);if(w===0){J='display:none;';}if(i==C){w+=I;}L+=w;M="left:"+L+"px;";K="width:"+w+"px;";}A.push('#',this.id,' .x-col-',i," {\n",cm.config[i].css,K,J,"\n}\n",'#',this.id,' .x-hcol-',i," {\n",K,J,"}\n",'#',this.id,' .x-grid-split-',i," {\n",M,"}\n");
 }Roo.log(A.join(''));this.CSS.createStyleSheet(A.join(''),this.id+'-cssrules');},onContextMenu:function(e,t){this.processEvent("contextmenu",e);},processEvent:function(A,e){if(A!='touchstart'){this.fireEvent(A,e);}var t=e.getTarget();var B=Roo.get(t);if(!B){return;
 }if(B.findParent('tfoot',false,true)){return;}if(B.findParent('thead',false,true)){if(e.getTarget().nodeName.toLowerCase()!='th'){B=Roo.get(t).findParent('th',false,true);if(!B){Roo.log("failed to find th in thead?");Roo.log(e.getTarget());return;}}var C=B.dom.cellIndex;
 var D=A=='touchstart'?'click':A;this.fireEvent("header"+D,this,C,e);return;}if(e.getTarget().nodeName.toLowerCase()!='td'){B=Roo.get(t).findParent('td',false,true);if(!B){Roo.log("failed to find th in tbody?");Roo.log(e.getTarget());return;}}var E=B.findParent('tr',false,true);
@@ -415,14 +416,13 @@ if(id){return parseInt(id[1],10);}return 0;},getGridEl:function(){return this.el
 var cw=A.getWidth();this.getGridEl().select('tfoot tr, tfoot  td',true).setWidth(cw);if(C){C.setWidth(A.getWidth());var E=(C.dom.offsetWidth-C.dom.clientWidth);cw-=E;}cw=Math.max(cw,this.totalWidth);this.getGridEl().select('tbody tr',true).setWidth(cw);return;
 },onBodyScroll:function(){if(this.headEl){this.headEl.setStyle({'position':'relative','left':(-1*this.bodyEl.dom.scrollLeft)+'px'});}if(this.lazyLoad){var A=this.bodyEl.dom.scrollHeight;var B=Math.ceil(this.bodyEl.getScroll().top);var C=this.bodyEl.getHeight();
 if(A-C==B){var D=this.ds.getTotalCount();if(this.footer.cursor+this.footer.pageSize<D){this.footer.ds.load({params:{start:this.footer.cursor+this.footer.pageSize,limit:this.footer.pageSize},add:true});}}}},onColumnSplitterMoved:function(i,w){this.userResized=true;
-var cm=this.colModel;cm.setColumnWidth(i,w,true);Roo.log(['#'+this.id+' .x-col-'+i,"width",w+"px"]);this.CSS.updateRule('#'+this.id+' .x-col-'+i,"width",w+"px");this.CSS.updateRule('#'+this.id+' .x-hcol-'+i,"width",w+"px");this.fireEvent("columnresize",i,w);
-},onHeaderChange:function(){var A=this.renderHeader();var B=this.el.select('table',true).first();this.headEl.remove();this.headEl=B.createChild(A,this.bodyEl,false);Roo.each(this.el.select('thead th.sortable',true).elements,function(e){e.on('click',this.sort,this);
-},this);if(this.enableColumnResize!==false&&Roo.grid.SplitDragZone){new Roo.grid.SplitDragZone(this,this.headEl.dom,false);}},onHiddenChange:function(A,B,C){var D='#'+this.id+' .x-hcol-'+B;var E='#'+this.id+' .x-col-'+B;this.CSS.updateRule(D,"display","");
-this.CSS.updateRule(E,"display","");if(C){this.CSS.updateRule(D,"display","none");this.CSS.updateRule(E,"display","none");}this.onHeaderChange();this.onLoad();},setColumnWidth:function(A,B){if(!this.colModel.config[A]){return;}var w=B.split(" ");var C=this.el.dom.getElementsByClassName("x-col-"+A);
-var D=this.el.dom.getElementsByClassName("x-hcol-"+A);for(var j=0;j<w.length;j++){if(!w[j]){continue;}var E=w[j].split("-");if(!Number.isInteger(E[1]*1)){continue;}if(!this.colModel.config[A][E[0]]){continue;}if(!D[0].classList.contains("col-"+E[0]+"-"+this.colModel.config[A][E[0]])){continue;
-}D[0].classList.replace("col-"+E[0]+"-"+this.colModel.config[A][E[0]],"col-"+E[0]+"-"+E[1]);for(var i=0;i<C.length;i++){var E=w[j].split("-");if(!Number.isInteger(E[1]*1)){continue;}if(!this.colModel.config[A][E[0]]){continue;}if(!C[i].classList.contains("col-"+E[0]+"-"+this.colModel.config[A][E[0]])){continue;
-}C[i].classList.replace("col-"+E[0]+"-"+this.colModel.config[A][E[0]],"col-"+E[0]+"-"+E[1]);}this.colModel.config[A][E[0]]=E[1];}}});Roo.bootstrap.Table.cellRE=/(?:.*?)x-grid-(?:hd|cell|split)-([\d]+)(?:.*?)/;Roo.bootstrap.Table.AbstractSelectionModel=Roo.grid.AbstractSelectionModel;
-Roo.bootstrap.Table.RowSelectionModel=Roo.grid.RowSelectionModel;
+var cm=this.colModel;cm.setColumnWidth(i,w,true);this.initCSS();this.fireEvent("columnresize",i,w);},onHeaderChange:function(){var A=this.renderHeader();var B=this.el.select('table',true).first();this.headEl.remove();this.headEl=B.createChild(A,this.bodyEl,false);
+Roo.each(this.el.select('thead th.sortable',true).elements,function(e){e.on('click',this.sort,this);},this);if(this.enableColumnResize!==false&&Roo.grid.SplitDragZone){new Roo.grid.SplitDragZone(this,this.headEl.dom,false);}},onHiddenChange:function(A,B,C){var D='#'+this.id+' .x-hcol-'+B;
+var E='#'+this.id+' .x-col-'+B;this.CSS.updateRule(D,"display","");this.CSS.updateRule(E,"display","");if(C){this.CSS.updateRule(D,"display","none");this.CSS.updateRule(E,"display","none");}this.onHeaderChange();this.onLoad();},setColumnWidth:function(A,B){if(!this.colModel.config[A]){return;
+}var w=B.split(" ");var C=this.el.dom.getElementsByClassName("x-col-"+A);var D=this.el.dom.getElementsByClassName("x-hcol-"+A);for(var j=0;j<w.length;j++){if(!w[j]){continue;}var E=w[j].split("-");if(!Number.isInteger(E[1]*1)){continue;}if(!this.colModel.config[A][E[0]]){continue;
+}if(!D[0].classList.contains("col-"+E[0]+"-"+this.colModel.config[A][E[0]])){continue;}D[0].classList.replace("col-"+E[0]+"-"+this.colModel.config[A][E[0]],"col-"+E[0]+"-"+E[1]);for(var i=0;i<C.length;i++){var E=w[j].split("-");if(!Number.isInteger(E[1]*1)){continue;
+}if(!this.colModel.config[A][E[0]]){continue;}if(!C[i].classList.contains("col-"+E[0]+"-"+this.colModel.config[A][E[0]])){continue;}C[i].classList.replace("col-"+E[0]+"-"+this.colModel.config[A][E[0]],"col-"+E[0]+"-"+E[1]);}this.colModel.config[A][E[0]]=E[1];
+}}});Roo.bootstrap.Table.cellRE=/(?:.*?)x-grid-(?:hd|cell|split)-([\d]+)(?:.*?)/;Roo.bootstrap.Table.AbstractSelectionModel=Roo.grid.AbstractSelectionModel;Roo.bootstrap.Table.RowSelectionModel=Roo.grid.RowSelectionModel;
 // Roo/bootstrap/TableCell.js
 Roo.bootstrap.TableCell=function(A){Roo.bootstrap.TableCell.superclass.constructor.call(this,A);};Roo.extend(Roo.bootstrap.TableCell,Roo.bootstrap.Component,{html:false,cls:false,tag:false,abbr:false,align:false,axis:false,bgcolor:false,charoff:false,colspan:false,headers:false,height:false,nowrap:false,rowspan:false,scope:false,valign:false,width:false,getAutoCreate:function(){var A=Roo.apply({}
 ,Roo.bootstrap.TableCell.superclass.getAutoCreate.call(this));A={tag:'td'};if(this.tag){A.tag=this.tag;}if(this.html){A.html=this.html}if(this.cls){A.cls=this.cls}if(this.abbr){A.abbr=this.abbr}if(this.align){A.align=this.align}if(this.axis){A.axis=this.axis}