📄 treeview.js
字号:
sum++;}
return this._columnCache.count=sum;}
return this._columnCache.count=0;};_p.getColumnVisible=function(x)
{return!("_hiddenColumns"in this&&x in this._hiddenColumns);};_p.setColumnVisible=function(x,b)
{if(!("_hiddenColumns"in this))
this._hiddenColumns={};if(!b)
this._hiddenColumns[x]=true;else delete this._hiddenColumns[x];this._visibleColumnOrders=null;this._invertedColumnOrders=null;this._columnCache=null;this._cache=null;};_p.getCanResizeColumn=function(x)
{return true;};_p.getCanMoveColumn=function(x)
{return true;};_p._indentColumn= -1;BiTreeViewViewManager.prototype.getIndentColumn=function(){return this._indentColumn;};BiTreeViewViewManager.prototype.setIndentColumn=function(v){this._indentColumn=v;};_p.getShowExpandIcon=function(y)
{return true;};_p._highlightSortColumn=true;BiTreeViewViewManager.prototype.getHighlightSortColumn=function(){return this._highlightSortColumn;};BiTreeViewViewManager.prototype.setHighlightSortColumn=function(v){this._highlightSortColumn=v;};_p._columnCache=null;_p.getFirstVisibleColumn=function()
{if(this._cache==null)
this._ensureCache();this._ensureColumnOrders();return this._cache.firstVisibleColumn;};_p._getFirstVisibleColumn=function(nScrollLeft)
{var i=0;var x=0;var mx;var scrollX=this._getRightToLeft()?this._getScrollRight(nScrollLeft)-1:nScrollLeft;var count=this.getColumnCount();while(x<scrollX&&i<count)
{mx=this.getModelColumn(i);if(this.getColumnVisible(mx))
x+=this.getColumnWidth(mx);i++;}
return this.getModelColumn(i);};_p._getLastVisibleColumn=function()
{var mx;for(var vx=this.getColumnCount()-1;vx>=0;vx--)
{mx=this.getModelColumn(vx);if(this.getColumnVisible(mx))
return mx;}
return null;};_p._getRightToLeft=function()
{return this._treeView.getRightToLeft();};_p._getScrollRight=function(nScrollLeft)
{return this._treeView._gridBodyElement.scrollWidth-nScrollLeft-this._treeView._gridBodyElement.clientWidth;};_p.getColumnBounds=function(x)
{var t=this.getShowHeaders()?this.getHeadersHeight():0;var l=this.getShowRowHeaders()?this.getRowHeadersWidth():0;return{left:l+this.getColumnLeft(x),width:this.getColumnWidth(x),top:t,height:this.getDataModel().getRowCount()*this.getRowHeight()};};_p.getColumnLeft=function(x)
{if(this._columnCache)
{if("left"in this._columnCache)
{if(x in this._columnCache.left)
return this._columnCache.left[x];}
else this._columnCache.left={};}
else this._columnCache={left:{}};var sum=0;for(var mx=this.getModelColumn(0);mx!=x&&mx!=null;mx=this.getNextColumn(mx))
{this._columnCache.left[mx]=sum;if(this.getColumnVisible(mx))
sum+=this.getColumnWidth(mx);}
return this._columnCache.left[x]=sum;};_p.getNextColumn=function(mx)
{return this._visibleColumnOrders[this._invertedColumnOrders[mx]+1];};_p.getPreviousColumn=function(mx)
{return this._visibleColumnOrders[this._invertedColumnOrders[mx]-1];};_p.insertColumnBefore=function(x,beforeX)
{this._columnOrders.remove(x);this._columnOrders.insertBefore(x,beforeX);this._columnCache=null
this._visibleColumnOrders=null;this._invertedColumnOrders=null;};_p.getColumnAt=function(x)
{if(this._getRightToLeft())
x=this._treeView._gridBodyElement.offsetWidth-x;var rowHeadersWidth=this.getShowRowHeaders()?this.getRowHeadersWidth():0;if(x<rowHeadersWidth)
return-1;if(this._cache==null)
this._ensureCache();x-=rowHeadersWidth;var mx=this._cache.firstVisibleColumn;var l=this.getColumnLeft(mx)-(this.getColumnVisible(mx)?this.getColumnWidth(mx):0);x+=l;for(;mx!=null;mx=this.getNextColumn(mx))
{if(this.getColumnVisible(mx))
l+=this.getColumnWidth(mx);if(l>x)
return mx;}
if(mx==null)
return this.getModelColumn(this.getColumnCount());return this.getModelColumn(this.getColumnCount()-1);};_p.getColumnWidth=function(x)
{if(this._columnWidths&&x in this._columnWidths)
return this._columnWidths[x];return 150;};_p.setColumnWidth=function(x,w)
{this._columnCache=null;if(!this._columnWidths)
this._columnWidths={};this._columnWidths[x]=w;};_p.getShownColumnsWidth=function()
{if(this._columnCache)
{if("total"in this._columnCache)
return this._columnCache.total;if(!("left"in this._columnCache))
this._columnCache.left={};}
else this._columnCache={left:{}};var sum=0;if(this.getColumnCount()>0)
{for(var mx=this.getModelColumn(0);mx!=null;mx=this.getNextColumn(mx))
{this._columnCache.left[mx]=sum;if(this.getColumnVisible(mx))
sum+=this.getColumnWidth(mx);}}
return this._columnCache.total=sum;};_p._ensureColumnOrders=function()
{var cc,dmcc,i;var dm=this.getDataModel();if(!dm)
{if(!this._columnOrders)
this._columnOrders=[];this._visibleColumnOrders=[];this._invertedColumnOrders=[];return;}
dmcc=dm.getColumnCount();if(!this._columnOrders)
{this._columnOrders=[];for(i=0;i<dmcc;i++)
this._columnOrders.push(i);this._visibleColumnOrders=null;this._invertedColumnOrders=null;}
if(this._columnOrders.length<dmcc)
{var hash={};for(i=0;i<this._columnOrders.length;i++)
hash[i]=true;for(i=0;i<dmcc;i++)
{if(!(i in hash))
{this._columnOrders.push(i);hash[i]=true;}}}
if(!this._visibleColumnOrders)
{this._visibleColumnOrders=[];dmcc=this._columnOrders.length;for(i=0;i<dmcc;i++)
{if(this.getColumnVisible(this._columnOrders[i]))
this._visibleColumnOrders.push(this._columnOrders[i]);}
this._invertedColumnOrders=null;}
if(!this._invertedColumnOrders)
{cc=this._visibleColumnOrders.length;this._invertedColumnOrders=[];for(i=0;i<cc;i++)
this._invertedColumnOrders[this._visibleColumnOrders[i]]=i;}};_p.getModelColumn=function(vx)
{this._ensureColumnOrders();return this._visibleColumnOrders[vx];};_p.getViewColumn=function(mx)
{this._ensureColumnOrders();return this._invertedColumnOrders[mx];};_p.setColumnOrders=function(oOrders)
{var dm=this.getDataModel();this._columnCache=null;this._columnOrders=[];var dmcc=dm.getColumnCount();var x2;for(var x=0;x<dmcc;x++)
{this._columnOrders.push(oOrders[x]);}
this._visibleColumnOrders=null;this._invertedColumnOrders=null;};_p.getColumnOrders=function()
{return this._columnOrders.concat([]);};_p._rowHeight=18;BiTreeViewViewManager.prototype.getRowHeight=function(){return this._rowHeight;};BiTreeViewViewManager.prototype.setRowHeight=function(v){this._rowHeight=v;};_p.getCellHeight=function(y)
{return this.getRowHeight();};_p.getCellWidth=function(x)
{return this.getColumnWidth(x);};_p.getRowBounds=function(y)
{var t=this.getShowHeaders()?this.getHeadersHeight():0;var l=this.getShowRowHeaders()?this.getRowHeadersWidth():0;return{left:l,width:l+this.getShownColumnsWidth(),top:t+y*this.getRowHeight(),height:this.getRowHeight()};};_p.getRowAt=function(y)
{if(this._cache==null)
this._ensureCache();var nScrollTop=this._cache.scrollTop;var headersHeight=this.getShowHeaders()?this.getHeadersHeight():0;if(y<headersHeight)
return-1;y-=headersHeight;return Math.floor((y+nScrollTop)/this.getRowHeight());};_p.getFirstVisibleRow=function()
{if(this._cache==null)
this._ensureCache();return this._cache.firstVisibleRow;};_p._getFirstVisibleRow=function(nScrollTop)
{return Math.ceil(nScrollTop/this.getRowHeight());};_p.getPageCount=function()
{return Math.ceil((this._treeView.getClientHeight()-(this.getShowHeaders()?this.getHeadersHeight():0))/this.getRowHeight());};_p.rowCountChanged=function(nRow,nCount)
{this._treeView.getSelectionModel().adjustSelection(nRow,nCount);};_p.getCellPaddingX=function()
{return BiBrowserCheck.moz?8:0;};_p.getCellBounds=function(x,y)
{var l=this.getShowRowHeaders()?this.getRowHeadersWidth():0;var t=this.getShowHeaders()?this.getHeadersHeight():0;return{left:l+this.getColumnLeft(x),top:t+y*this.getRowHeight(),width:this.getColumnWidth(x),height:this.getRowHeight()};};_p._showHeaders=true;BiTreeViewViewManager.prototype.getShowHeaders=function(){return this._showHeaders;};BiTreeViewViewManager.prototype.setShowHeaders=function(v){this._showHeaders=v;};_p._headersHeight=18;BiTreeViewViewManager.prototype.getHeadersHeight=function(){return this._headersHeight;};BiTreeViewViewManager.prototype.setHeadersHeight=function(v){this._headersHeight=v;};BiTreeViewViewManager.prototype.setAscendingIcon=function(v){this._ascendingIcon=v;};_p.getAscendingIcon=function()
{if(this._ascendingIcon!=null)
return this._ascendingIcon;return application.getTheme().getAppearanceProperty("tree-view","ascending-icon");};BiTreeViewViewManager.prototype.setDescendingIcon=function(v){this._descendingIcon=v;};_p.getDescendingIcon=function()
{if(this._descendingIcon!=null)
return this._descendingIcon;return application.getTheme().getAppearanceProperty("tree-view","descending-icon");};_p.getHeaderCellPaddingX=function()
{return BiBrowserCheck.moz?8:0;};_p.getHeaderBounds=function(x)
{var l=this.getShowRowHeaders()?this.getRowHeadersWidth():0;return{left:l+this.getColumnLeft(x),top:0,width:this.getColumnWidth(x),height:this.getHeadersHeight()};};_p._showRowHeaders=true;BiTreeViewViewManager.prototype.getShowRowHeaders=function(){return this._showRowHeaders;};BiTreeViewViewManager.prototype.setShowRowHeaders=function(v){this._showRowHeaders=v;};_p._rowHeadersWidth=50;BiTreeViewViewManager.prototype.getRowHeadersWidth=function(){return this._rowHeadersWidth;};BiTreeViewViewManager.prototype.setRowHeadersWidth=function(v){this._rowHeadersWidth=v;};function BiTreeViewResizeOutline()
{if(_biInPrototype)return;BiResizeHandle.call(this);var b=new BiBorder;b.setLeft(1,"solid","black");b.setRight(1,"solid","black");this.setBorder(b);this.setRight(null);this._handleFor=this;this.setMinimumWidth(20);this.setStyleProperty("MozAppearance","none");this.removeAll();}
_p=_biExtend(BiTreeViewResizeOutline,BiResizeHandle,"BiTreeViewResizeOutline");function BiTreeView()
{if(_biInPrototype)return;BiTreeViewBase.call(this);this.setCssClassName("bi-tree-view");this.setAppearance("tree-view");this._selectionModel=new BiTreeViewSelectionModel(this);this._stateManager=new BiTreeViewStateManager;this._viewManager=new BiTreeViewViewManager(this);this._invalidRows={length:0};if(!this._useNativeScrollBars)
{this._vScrollBar.setUnitIncrement(this._viewManager.getRowHeight());}
this._stateManager.addEventListener("hoverchanged",this._onHoverChanged,this);}
_p=_biExtend(BiTreeView,BiTreeViewBase,"BiTreeView");_p.setViewManager=function(vm)
{this._viewManager=vm;vm.setTreeView(this);if(!this._useNativeScrollBars)
{this._vScrollBar.setUnitIncrement(vm.getRowHeight());}};_p.setDataModel=function(dm)
{var oldColumnCount=0;var newColumnCount=0;var oldRowCount=0;var newRowCount=0;if(this._dataModel!=dm)
{if(this._dataModel)
{oldColumnCount=this._dataModel.getColumnCount();oldRowCount=this._dataModel.getRowCount();this._dataModel.removeEventListener("datachanged",this._onDataChanged,this);this._dataModel.removeEventListener("beforedatastructurechanged",this._onBeforeDataStructureChanged,this);this._dataModel.removeEventListener("datastructurechanged",this._onDataStructureChanged,this);this._dataModel.removeEventListener("rowcountchanged",this._onRowCountChanged,this);this._dataModel.removeEventListener("beforeexpand",this._onBeforeExpand,this);this._dataModel.removeEventListener("expand",this._onExpand,this);this._dataModel.removeEventListener("beforecollapse",this._onBeforeCollapse,this);this._dataModel.removeEventListener("collapse",this._onCollapse,this);}
this._selectionModel.setLeadItem(null);this._selectionModel.setAnchorItem(null);this._selectionModel.deselectAll();this._dataModel=dm;if(dm!=null)
{newColumnCount=dm.getColumnCount();newRowCount=dm.getRowCount();dm.addEventListener("datachanged",this._onDataChanged,this);dm.addEventListener("beforedatastructurechanged",this._onBeforeDataStructureChanged,this);dm.addEventListener("datastructurechanged",this._onDataStructureChanged,this);dm.addEventListener("rowcountchanged",this._onRowCountChanged,this);dm.addEventListener("beforeexpand",this._onBeforeExpand,this);dm.addEventListener("expand",this._onExpand,this);dm.addEventListener("beforecollapse",this._onBeforeCollapse,this);dm.addEventListener("collapse",this._onCollapse,this);}
if(oldColumnCount!=newColumnCount)
this._viewManager.resetCache();if(oldRowCount!=newRowCount||oldColumnCount!=newColumnCount)
{this._forceMeasure=true;this.updateContentSize();this.updateSize();}
this._updateGrid(true,true,true);}};_p._onBiTreeViewBaseScroll=function()
{if(!this._preventScrollUpdates)
{this._resetUpdateCache();this._viewManager.setScrollLeft(this._getInternalScrollLeft());this._viewManager.setScrollTop(this._getInternalScrollTop());if(BiBrowserCheck.moz)
{if(this._element)
this._element.scrollTop=0;if(this._gridBodyContentElement)
this._gridBodyContentElement.scrollTop=0;}
this._updateGrid();this.dispatchEvent(new BiEvent("scroll"));}};_p.updateContentSize=function()
{var dm=this.getDataModel();var vm=this.getViewManager();if(!this.getCreated())
return;if(this._useNativeScrollBars)
{var rc=dm?dm.getRowCount():0;var sh=rc*vm.getRowHeight();var cw=this._gridBodyElement.clientWidth;var ch=this._gridBodyElement.clientHeight;this._gridBodyFillerElement.style.width=vm.getShownColumnsWidth()+"px";this._gridBodyFillerElement.style.height=sh+"px";vm.setScrollLeft(this._getInternalScrollLeft());vm.setScrollTop(this._getInternalScrollTop());this._measure();var newCw=this._gridBodyElement.clientWidth;var newCh=this._gridBodyElement.clientHeight;if(cw!=newCw||ch!=newCh)
{this._clientSizeChanged=true;}}
else {this._syncScrollBars();this._doCustomOverflow();}
this._contentSizeDirty=false;};_p.updateSize=function()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -