📄 grids.js
字号:
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){BiSelectionModel.call(this,oTree);}
var _p=BiTreeSelectionModel.prototype=new BiSelectionModel;_p._className="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){for(var hc in this._selectedItems){if(n.containsNode(this._selectedItems[hc]))
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;for(var hc in this._selectedItems){n2=this._selectedItems[hc];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){BiAbstractGrid.call(this);this.setCssClassName("bi-grid");this._selectionModel=new BiGridSelectionModel(this);this._selectionModel.setMultipleSelection(false);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]));}}}
var _p=BiGrid.prototype=new BiAbstractGrid;_p._className="BiGrid";_p._gridRowHeadersConstructor=BiGridRowHeaders;_p._gridHeaderCornerConstructor=BiGridHeaderCorner;BiGrid.prototype.getRowHeaders=function(){return this._rowHeaders;};BiGrid.prototype.getHeaderCorner=function(){return this._headerCorner;};BiGrid.DEFAULT_ICON=application.getPath()+"images/file.gif";new BiImagePreloader(BiGrid.DEFAULT_ICON);_p._layoutHeadersX=function(){this._gridBodyElement.style.width=this._element.clientWidth+"px";this.updateHeadersWidth();this._updateHeadersWidth();};_p._layoutHeadersY=function(){this._gridBodyElement.style.height=this._element.clientHeight+"px";this.updateRowHeadersHeight();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;for(var i=0;i<this._columnCount;i++){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&&el.className!="bi-grid-node"&&el.className!="bi-grid-row-header")
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){if(oChild._grid!=this)
throw new Error("Can only remove children");this._rows.remove(oChild);oChild._grid=null;for(var i=0;i<oChild._cells.length;i++)
oChild._cells[i]._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(){retu
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -