📄 olapgrid.js
字号:
switch(type)
{case"mousedown":this._selectionModel.handleMouseDown(a,e);break;case"mouseup":this._selectionModel.handleMouseUp(a,e);break;case"click":this._selectionModel.handleClick(a,e);break;case"dblclick":this._selectionModel.handleDblClick(a,e);if(info.getBody())
this._startEditing(a,e);break;case"mouseover":this._selectionModel.handleMouseOver(a,e);break;}};_p._onKeyDown=function(e)
{var leadItem=this._selectionModel.getLeadItem();var sm=this._selectionModel;if(e.getKeyCode()==BiKeyboardEvent.F2&&leadItem)
{var item=sm.getLeadItem();sm.setSelectedItems([item]);sm.setLeadItem(item);sm.setAnchorItem(item);this._startEditing(item,e);return;}
sm.handleKeyDown(e);this._updateInvalidSelectionState();};_p._updateInvalidSelectionState=function()
{var dm=this.getDataModel();var vm=this.getViewManager();var axis=0;var cols=dm.getAxisPositionWidth(axis);var rows=dm.getAxisPositionWidth(1-axis);var areas=this._invalidSelectionAreas.toArray();var area,startX,startY,endX,endY;var hash={};for(var i=0;i<areas.length;i++)
{area=areas[i];startY=area.getTop()
endY=startY+area.getHeight();startX=area.getLeft()
endX=startX+area.getWidth();for(var y=startY;y<endY&&y<rows;y++)
{for(var x=startX;x<endX&&x<cols;x++)
{hash[x+"-"+y]={x:x,y:y};}}}
for(var key in hash)
{this._updateCellSelected(hash[key].x,hash[key].y);delete hash[key];}
this._invalidSelectionAreas.removeAll();};_p._onContextMenu=function(e,info)
{if(!this._useNativeScrollBars)
{var target=e.getTarget();if(this._hScrollBar.contains(target)||this._vScrollBar.contains(target))
{return;}}
var dm=this.getDataModel();this._dataModelContextMenu=null;if(info.getBody())
this._dataModelContextMenu=dm.getContextMenu(info.getColumn(),info.getRow());else if(info.getHeader())
this._dataModelContextMenu=dm.getAxisContextMenu(info.getAxis(),info.getDimension(),info.getAxisPosition());};_p._onMouseMove=function(e)
{var vm=this.getViewManager();if(!this._useNativeScrollBars)
{var target=e.getTarget();if(this._hScrollBar.contains(target)||this._vScrollBar.contains(target))
{return;}}
var axis=0;var info;info=this.getCellInfoFromMouseEvent(e);var x=e.getScreenX()-this.getScreenLeft()-this.getInsetLeft();var y=e.getScreenY()-this.getScreenTop()-this.getInsetTop();var bounds=this.getCellInfoBounds(info);if(info.getHeader())
{var resInfo=this._getResizeInfo(x,y,info);if(info.getQuadrant()==1)
{if(!resInfo.dir)
this._gridFixedTopElement.style.cursor="";else this._gridFixedTopElement.style.cursor=BiBrowserCheck.ie55?"hand":resInfo.dir+"-resize";}
else if(info.getQuadrant()==3)
{if(!resInfo.dir)
this._gridFixedLeftElement.style.cursor="";else this._gridFixedLeftElement.style.cursor=BiBrowserCheck.ie55?"hand":resInfo.dir+"-resize";}
else if(info.getQuadrant()==2)
{if(!resInfo.dir)
this._gridFixedCornerElement.style.cursor="";else this._gridFixedCornerElement.style.cursor=BiBrowserCheck.ie55?"hand":resInfo.dir+"-resize";}}
else {this._gridFixedTopElement.style.cursor="";this._gridFixedLeftElement.style.cursor="";this._gridFixedCornerElement.style.cursor="";}
this._stateManager.setHover(info,e);};_p.getCellInfo=function(nOffsetX,nOffsetY)
{var vm=this.getViewManager();var res=new BiOlapGridCellInfo;var axis=0;var cell,headersWidth,headersHeight,dim,pos;var x=nOffsetX;var y=nOffsetY;var rtl=this.getRightToLeft();if(rtl)
x=this._gridBodyElement.offsetWidth-x
var realClientHeight=this._element.clientHeight;var clientHeight=this._gridBodyElement.clientHeight;if(y<0||y>clientHeight)
return res;var realClientWidth=this._element.clientWidth;var clientWidth=this._gridBodyElement.clientWidth;var scrollBarWidth=realClientWidth-clientWidth;if(x<0||x>clientWidth||x>realClientWidth)
return res;if(x>vm.getFixedLeftWidth()&&y>vm.getFixedTopHeight())
{res._quadrant=4;res._axis=axis;x-=vm.getFixedLeftWidth()-this.getScrollLeft();y-=vm.getFixedTopHeight()-this.getScrollTop();cell=vm.getCellAt(x,y,vm.getNonFixedCell(axis),vm.getNonFixedCell(1-axis));res._body=true;res._row=cell.y;res._column=cell.x;}
else if(x>vm.getFixedLeftWidth())
{res._quadrant=1;res._axis=axis;headersHeight=vm.getAxisHeight();if(y>headersHeight)
{x-=vm.getFixedLeftWidth()-this.getScrollLeft();y-=headersHeight;cell=vm.getCellAt(x,y,vm.getNonFixedCell(axis),vm.getFixedCell(1-axis));res._body=true;res._row=cell.y;res._column=cell.x;}
else {x-=vm.getFixedLeftWidth()-this.getScrollLeft();dim=vm.getDimensionAt(axis,y);pos=vm._getCellAt(axis,x,vm.getNonFixedCell(axis));res._column=pos;pos=vm.getAxisCellStartPosition(axis,dim,pos);res._dimension=dim;res._axisPosition=pos;res._header=true;}}
else if(y>vm.getFixedTopHeight())
{res._quadrant=3;headersWidth=vm.getAxisWidth();if(x>headersWidth)
{y-=vm.getFixedTopHeight()-this.getScrollTop();x-=headersWidth;cell=vm.getCellAt(x,y,vm.getFixedCell(axis),vm.getNonFixedCell(1-axis));res._axis=axis;res._body=true;res._row=cell.y;res._column=cell.x;}
else {y-=vm.getFixedTopHeight()-this.getScrollTop();dim=vm.getDimensionAt(1-axis,x);pos=vm._getCellAt(1-axis,y,vm.getNonFixedCell(1-axis));res._row=pos;pos=vm.getAxisCellStartPosition(1-axis,dim,pos);res._axis=1-axis;res._dimension=dim;res._axisPosition=pos;res._header=true;}}
else {res._quadrant=2;headersWidth=vm.getAxisWidth();headersHeight=vm.getAxisHeight();if(x>headersWidth&&y>headersHeight)
{y-=headersHeight;x-=headersWidth;cell=vm.getCellAt(x,y,vm.getFixedCell(axis),vm.getFixedCell(1-axis));res._axis=axis;res._body=true;res._row=cell.y;res._column=cell.x;}
else if(x>headersWidth)
{x-=headersWidth;dim=vm.getDimensionAt(axis,y);pos=vm._getCellAt(axis,x,vm.getFixedCell(axis));res._column=pos;pos=vm.getAxisCellStartPosition(axis,dim,pos);res._axis=axis;res._dimension=dim;res._axisPosition=pos;res._header=true;}
else if(y>headersHeight)
{y-=headersHeight;dim=vm.getDimensionAt(1-axis,x);pos=vm._getCellAt(1-axis,y,vm.getFixedCell(1-axis));res._row=pos;pos=vm.getAxisCellStartPosition(1-axis,dim,pos);res._axis=1-axis;res._dimension=dim;res._axisPosition=pos;res._header=true;}
else {}}
return res;};_p._getResizeInfo=function(x,y,info)
{var res={dir:"",axis:info.getAxis(),dimension:info.getDimension(),axisPosition:null};if(!info.getHeader()||info.getAxisPosition()==null||info.getDimension()==null)
return res;var pos,left,top,width,height;var vm=this.getViewManager();var rtl=this.getRightToLeft();if(rtl)
x=this._gridBodyElement.offsetWidth-x;if(info.getAxisPosition()==null)
return res;if(info.getQuadrant()==1)
{left=vm.getCellLeft(info.getAxisPosition())-vm.getCellLeft(vm.getNonFixedCell(info.getAxis()));width=vm.getAxisCellWidth(info.getDimension(),info.getAxisPosition());x-=vm.getFixedLeftWidth();x+=this.getScrollLeft();if(x-left<=5)
{pos=info.getAxisPosition();pos=vm.getPreviousVisibleCell(info.getAxis(),pos);if(pos==null||pos<vm.getFirstViewCell(info.getAxis()))
return res;pos=vm.getAxisCellStartPosition(info.getAxis(),info.getDimension(),pos);res.dir=rtl?"w":"e";res.axisPosition=pos;}
else if(left+width-x<=5)
{res.dir=rtl?"w":"e";res.axisPosition=info.getAxisPosition();}}
else if(info.getQuadrant()==3)
{top=vm.getCellTop(info.getAxisPosition())-vm.getCellTop(vm.getNonFixedCell(info.getAxis()));height=vm.getAxisCellHeight(info.getDimension(),info.getAxisPosition());y-=vm.getFixedTopHeight();y+=this.getScrollTop();if(y-top<=5)
{pos=info.getAxisPosition();pos=vm.getPreviousVisibleCell(info.getAxis(),pos);if(pos==null||pos<vm.getFirstViewCell(info.getAxis()))
return res;pos=vm.getAxisCellStartPosition(info.getAxis(),info.getDimension(),pos);res.dir="s";res.axisPosition=pos;}
else if(top+height-y<=5)
{res.dir="s";res.axisPosition=info.getAxisPosition();}}
else if(info.getQuadrant()==2)
{if(info.getAxis()==0)
{left=vm.getCellLeft(info.getAxisPosition())-vm.getCellLeft(vm.getFixedCell(info.getAxis()));width=vm.getAxisCellWidth(info.getDimension(),info.getAxisPosition());x-=vm.getAxisWidth();if(x-left<=5)
{pos=info.getAxisPosition();pos=vm.getPreviousVisibleCell(info.getAxis(),pos);if(pos==null||pos<vm.getFixedCell(info.getAxis()))
return res;pos=vm.getAxisCellStartPosition(info.getAxis(),info.getDimension(),pos);res.dir=rtl?"w":"e";res.axisPosition=pos;}
else if(left+width-x<=5)
{res.dir=rtl?"w":"e";res.axisPosition=info.getAxisPosition();}}
else {top=vm.getCellTop(info.getAxisPosition())-vm.getCellTop(vm.getFixedCell(info.getAxis()));height=vm.getAxisCellHeight(info.getDimension(),info.getAxisPosition());y-=vm.getAxisHeight();if(y-top<=5)
{pos=info.getAxisPosition();pos=vm.getPreviousVisibleCell(info.getAxis(),pos);if(pos==null||pos<vm.getFixedCell(info.getAxis()))
return res;pos=vm.getAxisCellStartPosition(info.getAxis(),info.getDimension(),pos);res.dir="s";res.axisPosition=pos;}
else if(top+height-y<=5)
{res.dir="s";res.axisPosition=info.getAxisPosition();}}}
return res;};_p._handleHeaderMouseEvent=function(e,info)
{var vm;var doSelect=true;switch(e.getType())
{case"mousedown":if(e.getButton()!=BiMouseEvent.LEFT)
return;vm=this.getViewManager();var x=e.getScreenX()-this.getScreenLeft()-this.getInsetLeft();var y=e.getScreenY()-this.getScreenTop()-this.getInsetTop();var resInfo=this._resizeInfo=this._getResizeInfo(x,y,info)
if(resInfo.dir&&resInfo.axisPosition!=null)
{this._stateManager.setActive(null,e);info.setAxisPosition(resInfo.axisPosition);if(!this._resizeOutline)
{this._resizeOutline=new BiOlapGridResizeOutline;this._resizeOutline.addEventListener("resize",this._onColumnResize,this);this._resizeOutline.addEventListener("resizeend",this._onColumnResizeEnd,this);}
var bounds=this.getCellInfoBounds(info);if(this.getRightToLeft())
this._resizeOutline.setBounds(this._gridBodyElement.offsetWidth-bounds.left,bounds.top,bounds.width,bounds.height);else this._resizeOutline.setBounds(bounds.left,bounds.top,bounds.width,bounds.height);this._resizeOutline.setResizeDirection(resInfo.dir);this.add(this._resizeOutline);this._resizeOutline.startResize(resInfo.dir,e);e.preventDefault();doSelect=false;}
break;}
if(doSelect&&this.getAllowHeaderSelection())
{this._mouseSelect(e,info);this._updateInvalidSelectionState();}};_p._onHoverChanged=function(e)
{this._hideDataModelToolTip();var sm=this._stateManager;var vm=this.getViewManager();var dm=this.getDataModel();var axis=0;var tt,x,y;var info=sm.getHover();this._dataModelToolTip=null;if(info.getBody())
{x=info.getColumn()
y=info.getRow();var colCount=dm.getAxisPositionWidth(axis);var rowCount=dm.getAxisPositionWidth(1-axis);if(x!=null&&y!=null&&x>=0&&x<colCount&&y>=0&&y<rowCount)
{tt=dm.getToolTip(x,y);}
this._mouseSelect(e,info,"mouseover");this._updateInvalidSelectionState();}
else if(info.getHeader())
{tt=dm.getAxisToolTip(info.getAxis(),info.getDimension(),info.getAxisPosition());this._mouseSelect(e,info,"mouseover");this._updateInvalidSelectionState();}
if(BiBrowserCheck.ie&&!tt&&info.getBody())
{x=info.getColumn()
y=info.getRow();var td=this._getTd(x,y);if(td&&td.firstChild.scrollWidth>td.firstChild.clientWidth)
tt=BiToolTip.getTextToolTip(BiLabel.htmlToText(dm.getCellText(x,y)));}
if(tt)
{this._dataModelToolTip=tt;tt._startShowTimer();}};_p._hideDataModelToolTip=function()
{if(this._dataModelToolTip)
{this._dataModelToolTip.setVisible(false);this._dataModelToolTip=null;}};_p._onColumnResizeEnd=function(e)
{var vm=this.getViewManager();var dm=this.getDataModel();var changed=false;var resInfo=this._resizeInfo;var axis=resInfo.axis;var count,visCount,lastVis,delta,diff,i,end;if(axis==0)
{var w=this._resizeOutline.getWidth();var oldW=vm.getAxisCellWidth(resInfo.dimension,resInfo.axisPosition);var minWidth=vm.getCellMinimumWidth();count=dm.getAxisCellWidth(resInfo.axis,resInfo.dimension,resInfo.axisPosition);visCount=vm.getAxisCellPositionWidth(axis,resInfo.dimension,resInfo.axisPosition);lastVis=vm.getPreviousVisibleCell(axis,resInfo.axisPosition+count);var cw=vm.getCellWidth(lastVis);var newW=Math.max(minWidth,cw+w-oldW);if(cw!=newW)
{vm.setCellWidth(lastVis,newW);changed=true;}}
else {var h=this._resizeOutline.getHeight();var oldH=vm.getAxisCellHeight(resInfo.dimension,resInfo.axisPosition);var minHeight=vm.getCellMinimumHeight();count=dm.getAxisCellWidth(resInfo.axis,resInfo.dimension,resInfo.axisPosition);visCount=vm.getAxisCellPositionWidth(axis,resInfo.dimension,resInfo.axisPosition);lastVis=vm.getPreviousVisibleCell(axis,resInfo.axisPosition+count);var ch=vm.getCellHeight(lastVis);var newH=Math.max(minHeight,ch+h-oldH);if(ch!=newH)
{vm.setCellHeight(lastVis,newH);changed=true;}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -