📄 grids.js
字号:
arr.push(n);if(n.getExpanded()){for(var i=0;i<n._nodes.length;i++)
BiTreeHelper._getPreorderShownNodes(n._nodes[i],arr);}};BiTreeHelper.isBefore=function(n1,n2){if(n1==n2)
return false;if(n1.containsNode(n2))
return true;if(n2.containsNode(n1))
return false;var p1=n1.getParentNode();var p2=n2.getParentNode();if(p1==p2){var p=p1;var ns=p.getNodes();for(var i=0;i<ns.length;i++){if(ns[i]==n1)
return true;if(ns[i]==n2)
return false;}}
var l1=n1.getLevel();var l2=n2.getLevel();if(l1>l2)
return BiTreeHelper.isBefore(n1.getParentNode(),n2);else return BiTreeHelper.isBefore(n1,n2.getParentNode());};function BiTreeSelectionModel(oTree){if(_biInPrototype)return;BiSelectionModel.call(this,oTree);}
_p=_biExtend(BiTreeSelectionModel,BiSelectionModel,"BiTreeSelectionModel");_p.getItemSelected=function(oItem)
{return oItem._selected;};_p.updateItemSelectionState=function(oItem,bSelected)
{oItem._setSelected(bSelected);};_p.updateItemAnchorState=function(oItem,bAnchor)
{oItem._setAnchor(bAnchor);};_p.updateItemLeadState=function(oItem,bLead)
{oItem._setLead(bLead);};_p.getFirst=function(){return this._owner.getFirstNode();};_p.getLast=function(){return BiTreeHelper.getLastShownDescendant(this._owner);};_p.getItems=function(){return BiTreeHelper.getPreorderShownNodes(this._owner);};_p.getNext=function(oItem){return BiTreeHelper.getNextShownNode(oItem);};_p.getPrevious=function(oItem){return BiTreeHelper.getPreviousShownNode(oItem);};_p.isBefore=function(n1,n2){return BiTreeHelper.isBefore(n1,n2);};_p._containsLeadItem=function(n){return this._leadItem&&n.containsNode(this._leadItem);};_p._containsAnchorItem=function(n){return this._anchorItem&&n.containsNode(this._anchorItem);};_p.containsSelectedNodes=function(n)
{var items=this._selectedItems.toArray();for(var i=0;i<items.length;i++)
{if(n.containsNode(items[i]))
return true;}
return false;};_p._collapseNode=function(n){if(this._containsLeadItem(n))
this.setLeadItem(n);if(this._containsAnchorItem(n))
this.setAnchorItem(n);if(this.containsSelectedNodes(n)){var oldVal=this._getChangeValue();var oldFireChange=this._fireChange;this._fireChange=false;this._deselectAllDescendants(n);this.setItemSelected(n,true);this._fireChange=oldFireChange;if(this._fireChange&&this._hasChanged(oldVal))
this._dispatchChange();}};_p._deselectAllDescendants=function(n){var n2;var items=this._selectedItems.toArray();for(var i=0;i<items.length;i++)
{n2=items[i];if(n.containsNode(n2)&&n!=n2)
this.setItemSelected(n2,false);}};_p.getPageUp=function(oItem)
{var vpTop=this._owner.getScrollTop();var next;if(!this._leadItem)
next=this.getFirst();else next=this._leadItem;var fillerHeight=this._owner._getFillerHeight();var tries=0;while(tries<2){while(next&&(next.getTop()-next.getHeight()-fillerHeight>=vpTop))
next=this.getUp(next);if(next==null){tries=2;break;}
if(next!=this._leadItem)
break;this._owner.setScrollTop(vpTop-this._owner.getClientHeight()-next.getHeight());vpTop=this._owner.getScrollTop();tries++;}
return next;};function BiGrid(oGridData,oColumnNames){if(_biInPrototype)return;BiAbstractGrid.call(this);this.setCssClassName("bi-grid");this.setAppearance("grid");this._selectionModel=new BiGridSelectionModel(this);this._selectionModel.setMultipleSelection(false);1
this._headers=new this._gridHeadersConstructor;this._rowHeaders=new this._gridRowHeadersConstructor;this._rowHeaders.setWidth(this._rowHeadersWidth);this._headerCorner=new this._gridHeaderCornerConstructor;this._headerCorner.setRight(null);this._headerCorner.setSize(this._rowHeadersWidth,this._getFillerHeight());this._headers.setLeft(this._getFillerWidth());this._rowHeaders.setTop(this._getFillerHeight());this._rowHeaders.setVisible(false);this._headerCorner.setVisible(false);this.add(this._headers);this.add(this._rowHeaders);this.add(this._headerCorner);this.addEventListener("mousedown",this._onMouseEvent);this.addEventListener("mouseup",this._onMouseEvent);this.addEventListener("click",this._onMouseEvent);this.addEventListener("dblclick",this._onMouseEvent);this.addEventListener("mousewheel",this._onMouseEvent);this.addEventListener("keydown",this._onKeyDown);this.addEventListener("keypress",this._onKeyPress);this.addEventListener("focus",this._onFocusChange);this.addEventListener("blur",this._onFocusChange);this._selectionModel.addEventListener("change",function(e){this.dispatchEvent(new BiEvent("change"));},this);this._headers.addEventListener("columnwidthschanged",this.updateColumns,this);this._headers.addEventListener("columnorderschanged",function(e){this.setColumnOrders(this._headers.getColumnOrders());this.updateColumns();this.updateData();},this);this._headers.addEventListener("sortcolumnchanged",function(e){this.sort(this._headers.getSortColumn(),this._headers.getAscending());},this);this._headers.addEventListener("ascendingchanged",function(e){this.sort(this._headers.getSortColumn(),this._headers.getAscending());},this);this.addEventListener("scroll",function(e){this._headers.setScrollLeft(this.getScrollLeft());this._rowHeaders.setScrollTop(this.getScrollTop());});if(oGridData){var h=oGridData.length;var w=oGridData[0].length;this.setColumnCount(w);if(oColumnNames){this.setColumnNames(oColumnNames);}
for(var y=0;y<h;y++){this.addRow(new BiGridRow(oGridData[y]));}}}
_p=_biExtend(BiGrid,BiAbstractGrid,"BiGrid");_p._gridRowHeadersConstructor=BiGridRowHeaders;_p._gridHeaderCornerConstructor=BiGridHeaderCorner;BiGrid.prototype.getRowHeaders=function(){return this._rowHeaders;};BiGrid.prototype.getHeaderCorner=function(){return this._headerCorner;};_p._layoutHeaders=function(){this.updateHeadersWidth();this.updateRowHeadersHeight();this._updateHeadersWidth();this._updateRowHeadersHeight();};_p.setShowRowHeaders=function(b)
{if(this._showRowHeaders!=b)
{var rtl=this.getRightToLeft();this._showRowHeaders=b;this._rowHeaders.setVisible(b);this._headerCorner.setVisible(this.getShowHeaders()&&this.getShowRowHeaders());if(this.getCreated())
{if(rtl)
{this._gridBodyElement.style.paddingRight=this._getFillerWidth()+"px";this._gridBodyElement.style.paddingLeft=0;}
else {this._gridBodyElement.style.paddingLeft=this._getFillerWidth()+"px";this._gridBodyElement.style.paddingRight=0;}}
this._rowHeaders.setTop(this._getFillerHeight());this.updateHeadersWidth();if(b)
this.updateRowHeadersHeight();}};_p.setRowHeadersWidth=function(n)
{n=Math.max(0,n);if(this._rowHeadersWidth!=n)
{var rtl=this.getRightToLeft();this._rowHeadersWidth=n;this._rowHeaders.setWidth(n);this._headerCorner.setWidth(n);this.updateHeadersWidth();if(this.getCreated())
{if(this.getRightToLeft())
this._gridBodyElement.style.paddingRight=n+"px";else this._gridBodyElement.style.paddingLeft=n+"px";}}};_p.updateColumns=function(){BiAbstractGrid.prototype.updateColumns.call(this);if(this.getCreated()){this._updateRowHeadersHeight(500);}};_p.updateData=function(){BiAbstractGrid.prototype.updateData.call(this);if(this.getCreated()){this._rowHeaders._setHeadersHtml(this.getRowHeadersHtml());}};_p.updateRowHeadersHeight=function(){if(this.getCreated()&&this._rowHeaders.getCreated()){this._rowHeaders.setHeight(this._gridBodyElement.clientHeight-this._getFillerHeight());this._rowHeaders.setScrollTop(this.getScrollTop());}};_p._updateRowHeadersHeight=function(n){var t=this._updateRowHeadersHeightTimer;if(t){t.stop();t.dispose();}
t=new BiTimer(n||1);this._updateRowHeadersHeightTimer=t;t.addEventListener("tick",function(e){t.stop();this.updateRowHeadersHeight();t.dispose();},this);t.start();};_p._getStyleRules=function()
{var rs=[];var id=this.getHtmlProperty("id");var align;var cols=this._columns;for(var i=0;i<this._columnCount;i++)
{if(!cols[i].getVisible())
{rs.push({selector:"#"+id+" .col-"+i,style:"display:none;"});}
else {align=this._columnAligns[i];rs.push({selector:"#"+id+" .col-"+i,style:"width:"+this._columnWidths[i]+"px"+(align!="left"?";text-align:"+align:"")});}}
var val="height:"+this._rowHeight+"px;"+"line-height:"+(this._rowHeight-2)+"px;"+"font-size:"+this._fontSize+"px;";rs.push({selector:"#"+id+" .bi-grid-cell",style:val});rs.push({selector:"#"+id+" .bi-grid-row",style:val});return rs;};_p.getRowHeadersHtml=function(){var cs=this._rows;var l=cs.length;var sb=new Array(l);for(var i=0;i<l;i++)
sb[i]=cs[i].getRowHeaderHtml();return sb.join("");};_p.setSelectionMode=function(s){this._selectionModel.setSelectionMode(s);};_p.getSelectionMode=function(){return this._selectionModel.getSelectionMode();};_p._findItem=function(oValue,nStartIndex,sType){var i;var items=this.getRows();if(nStartIndex==null){var si=this.getSelectedNode();nStartIndex=items.indexOf(si);if(nStartIndex== -1)
nStartIndex=0;}
var methodName="matches"+sType;for(i=nStartIndex;i<items.length;i++){if(items[i][methodName](oValue))
return items[i];}
for(i=0;i<nStartIndex;i++){if(items[i][methodName](oValue))
return items[i];}
return null;};_p._getMouseEventInfo=function(e,inEl){var el=inEl||e._event.srcElement||e._event.target;if(el==null)return null;var res={};var cellRe= /bi-grid-cell/;var cellEl=el;while(cellEl!=null&&!cellRe.test(cellEl.className))
cellEl=cellEl.parentNode;if(cellEl!=null){if(cellRe.test(cellEl.className)){res.cellIndex=Number(cellEl.className.replace(/.*col-(\d+).*/,"$1"));}
el=cellEl;res.gridCell=this._getAllNodes()[el.id];}
else{res.cellIndex= -1;}
while(el!=null&&!/bi-grid-(node|row-header)/.test(el.className))
el=el.parentNode;if(el==null)return null;res.gridRow=this._getAllNodes()[el.id];return res;};_p._onMouseEvent=function(e)
{if(e.getType()=="mousewheel")
{if(BiBrowserCheck.moz)
{this.setScrollTop(this.getScrollTop()-this._rowHeight*e.getWheelDelta());return;}}
var info=this._getMouseEventInfo(e);if(info==null)return;var node;if(this._selectionModel._selectionMode=="row")
node=info.gridRow;else if(this._selectionModel._selectionMode=="cell")
node=info.gridCell;if(!node)return;switch(e.getType()){case"mousedown":this._selectionModel.handleMouseDown(node,e);break;case"mouseup":this._selectionModel.handleMouseUp(node,e);break;case"click":this._selectionModel.handleClick(node,e);break;case"dblclick":this._selectionModel.handleDblClick(node,e);break;}};_p._onKeyDown=function(e){this._selectionModel.handleKeyDown(e);};_p.setScrollTop=function(n)
{BiAbstractGrid.prototype.setScrollTop.call(this,n);if(BiBrowserCheck.moz&&this.getCreated())
this._rowHeaders.setScrollTop(this.getScrollTop());};_p.addRow=function(oChild,oBefore){var p=oChild._grid;if(oBefore==null){if(p!=null)
p.removeRow(oChild);this._rows.push(oChild);}
else{if(oBefore._grid!=this)
throw new Error("Can only add components before siblings");if(p!=null)
p.removeRow(oChild);this._rows.insertBefore(oChild,oBefore);}
oChild._grid=this;for(var i=0;i<oChild._cells.length;i++)
oChild._cells[i]._grid=this;this._clearCache();};_p.removeRow=function(oChild){var i=this._rows.indexOf(oChild);return this.removeRowAt(i);};_p.removeRowAt=function(i){var oChild=this._rows[i];if(oChild._grid!=this)
throw new Error("Can only remove children");this._rows.removeAt(i);oChild._grid=null;for(var j=oChild._cells.length-1;j>=0;j--){oChild._cells[j]._grid=null;}
this._clearCache();return oChild;};_p.getGrid=function(){return this;};_p.getFirstRow=function(){return this._rows[0];};_p.getLastRow=function(){return this._rows[this._rows.length-1];};BiGrid.prototype.getRows=function(){return this._rows;};_p.hasRows=function(){return this._rows.length>0;};_p.removeAll=function(){this._selectionModel.deselectAll();for(var i=this._rows.length-1;i>=0;i--){this.removeRowAt(i).dispose();}};_p.getCellAtPoint=function(nClientX,nClientY){if(BiBrowserCheck.ie)
{var el=this._document.elementFromPoint(nClientX,nClientY);if(el==null)return null;var res=this._getMouseEventInfo(null,el);return res?res.gridCell:null;}
else {var x=nClientX-this.getClientLeft()-this.getInsetLeft();var y=nClientY-this.getClientTop()-this.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -