www-thermferm/jqwidgets/jqxchart.rangeselector.js

Sun, 07 Jul 2019 14:31:10 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 07 Jul 2019 14:31:10 +0200
branch
stable
changeset 603
fcff55324b84
parent 511
2d1d43c3a2c2
child 617
b216f9d4b917
permissions
-rw-r--r--

Merged fix from default

/*
jQWidgets v4.5.2 (2017-May)
Copyright (c) 2011-2017 jQWidgets.
License: http://jqwidgets.com/license/
*/
!function(a){a.extend(a.jqx._jqxChart.prototype,{_moduleRangeSelector:!0,_renderXAxisRangeSelector:function(b,c){var d=this;d._isTouchDevice=a.jqx.mobile.isTouchDevice();var e=d.seriesGroups[b],f=d._getXAxis(b),g=f?f.rangeSelector:void 0;if(!d._isSelectorRefresh){var h=g&&g.renderTo?g.renderTo:d.host;h.find(".rangeSelector").remove()}if(!f||0==f.visible||"spider"==e.type)return!1;if(!d._isGroupVisible(b))return!1;if(!g)return!1;var i="horizontal"==e.orientation;g.renderTo&&(i=!1),d.rtl&&(f.flip=!0);var j=i?this.host.height():this.host.width();j-=4;var k=this._getXAxisStats(b,f,j),l=f.position;if(g.renderTo&&g.position&&(l=g.position),!this._isSelectorRefresh){var m=g.renderTo,n="<div class='rangeSelector jqx-disableselect' style='position: absolute; background-color: transparent;' onselectstart='return false;'></div>",o=a(n).appendTo(m?m:this.renderer.getContainer());if(m)o.css({width:m.width(),height:m.height()}),c.width=m.width(),c.height=m.height();else{var p=this.host.coord();p.top=0,p.left=0,selectorSize=this._selectorGetSize(f),i?(o.css("left",p.left+1+c.x+("right"!=l?-selectorSize:c.width)),o.css("top",p.top),o.css("height",j),o.css("width",selectorSize),c.height=selectorSize):(o.css("left",p.left+1),o.css("top",p.top+c.y+("top"!=l?c.height:-selectorSize)),o.css("height",selectorSize),o.css("width",j))}this._refreshSelector(b,f,k,o,c,i)}return this._isSelectorRefresh=!1,!0},_refreshSelector:function(b,c,d,e,f,g){var h={},i=c.rangeSelector;this.seriesGroups[b];for(var j in i)h[j]=i[j];delete h.padding;var k=h.minValue,l=h.maxValue;void 0==k&&(k=Math.min(d.min.valueOf(),d.dsRange.min.valueOf())),void 0==l&&(l=Math.max(d.max.valueOf(),d.dsRange.max.valueOf())),this._isDate(d.min)&&(k=new Date(k)),this._isDate(d.max)&&(l=new Date(l));var m=c.position;i.renderTo&&i.position&&(m=i.position),h.dataField=c.dataField,delete h.rangeSelector,h.type=c.type,h.baseUnit=i.baseUnit||c.baseUnit,h.minValue=k,h.maxValue=l,h.flip=c.flip,h.position=m;var n=5,o=2,p=2,q=2,r=2;i.renderTo||(o=g?0:f.x,p=g?0:this._rect.width-f.x-f.width,q=g?f.y:n,r=g?this._paddedRect.height-this._plotRect.height:n);var s=i.padding;s=void 0!=s||i.renderTo?{left:s&&s.left?s.left:o,top:s&&s.top?s.top:q,right:s&&s.right?s.right:p,bottom:s&&s.bottom?s.bottom:r}:{left:o,top:q,right:p,bottom:r};for(var t=c.rangeSelector.dataField,j=0;void 0==t&&j<this.seriesGroups.length;j++)for(var u=0;void 0==t&&u<this.seriesGroups[j].series.length;u++)t=this.seriesGroups[j].series[u].dataField;var v={padding:s,_isRangeSelectorInstance:!0,title:i.title||"",description:i.description||"",titlePadding:i.titlePadding,colorScheme:i.colorScheme||this.colorScheme,backgroundColor:i.backgroundColor||this.backgroundColor||"transparent",backgroundImage:i.backgroundImage||"",showBorderLine:i.showBorderLine||!!i.renderTo,borderLineWidth:i.borderLineWidth||this.borderLineWidth,borderLineColor:i.borderLineColor||this.borderLineColor,rtl:i.rtl||this.rtl,greyScale:i.greyScale||this.greyScale,renderEngine:this.renderEngine,showLegend:!1,enableAnimations:!1,enableEvents:!1,showToolTips:!1,source:this.source,xAxis:h,seriesGroups:[{orientation:g?"horizontal":"vertical",valueAxis:{visible:!1},type:c.rangeSelector.serieType||"area",skipOverlappingPoints:a.jqx.getByPriority([c.rangeSelector.skipOverlappingPoints,!0]),columnSeriesOverlap:a.jqx.getByPriority([c.rangeSelector.columnSeriesOverlap,!1]),columnsGapPercent:a.jqx.getByPriority([c.rangeSelector.columnsGapPercent,25]),seriesGapPercent:a.jqx.getByPriority([c.rangeSelector.seriesGapPercent,25]),series:[{dataField:t,opacity:.8,lineWidth:1}]}]};v.showBorderLine||(v.borderLineWidth=1,v.borderLineColor=a.jqx.getByPriority([this.backgroundColor,this.background,"#FFFFFF"]),v.showBorderLine=!0);var w=this;w._supressBindingRefresh=!0,e.empty(),e.jqxChart(v),w._rangeSelectorInstances[b]=e,w._supressBindingRefresh=!1,e.on(w._getEvent("mousemove"),function(){w._unselect(),w._hideToolTip()});var x=e.jqxChart("getInstance");if(x._plotRect){var y=x._paddedRect;if(y.height=x._plotRect.height,g||"top"!=m){if(g){var z=x._renderData[0].xAxis.rect.width;y.width-=z,"right"!=m&&(y.x+=z)}}else y.y+=x._renderData[0].xAxis.rect.height;w._createSliderElements(b,e,y,i),w.removeHandler(a(document),w._getEvent("mousemove")+"."+this.element.id,w._onSliderMouseMove),w.removeHandler(a(document),w._getEvent("mousedown"),w._onSliderMouseDown),w.removeHandler(a(document),w._getEvent("mouseup")+"."+this.element.id,w._onSliderMouseUp),w.addHandler(a(document),w._getEvent("mousemove")+"."+this.element.id,w._onSliderMouseMove,{self:this,groupIndex:b,renderTo:e,swapXY:g}),w.addHandler(a(e),w._getEvent("mousedown"),this._onSliderMouseDown,{self:this,groupIndex:b,renderTo:e,swapXY:g}),w.addHandler(a(document),w._getEvent("mouseup")+"."+this.element.id,w._onSliderMouseUp,{element:this.element.id,self:this,groupIndex:b,renderTo:e,swapXY:g})}},_createSliderElements:function(b,c,d,e){c.find(".slider").remove();var f=e.selectedRangeColor||"blue",g=a.jqx.getByPriority([e.selectedRangeOpacity,.1]),h=a.jqx.getByPriority([e.unselectedRangeOpacity,.5]),i=e.unselectedRangeColor||"white",j=e.rangeLineColor||"grey",k=a("<div class='slider' style='position: absolute;'></div>");for(k.css({background:f,opacity:g,left:d.x,top:d.y,width:d.width,height:d.height}),k.appendTo(c);this._sliders.length<b+1;)this._sliders.push({});var l="<div class='slider' style='position: absolute;  background: "+i+"; opacity: "+h+";'></div>",m="<div class='slider' style='position: absolute; background:"+j+"; opacity: "+h+";'></div>",n="<div class='slider jqx-rc-all' style='position: absolute; background: white; border-style: solid; border-width: 1px; border-color: "+j+";'></div>";this._sliders[b]={element:k,host:c,_sliderInitialAbsoluteRect:{x:k.coord().left,y:k.coord().top,width:d.width,height:d.height},_hostInitialAbsolutePos:{x:c.coord().left,y:c.coord().top},getRect:function(){return{x:this.host.coord().left-this._hostInitialAbsolutePos.x+this._sliderInitialAbsoluteRect.x,y:this.host.coord().top-this._hostInitialAbsolutePos.y+this._sliderInitialAbsoluteRect.y,width:this._sliderInitialAbsoluteRect.width,height:this._sliderInitialAbsoluteRect.height}},rect:d,left:a(l),right:a(l),leftTop:a(m),rightTop:a(m),leftBorder:a(m),leftBar:a(n),rightBorder:a(m),rightBar:a(n)},this._sliders[b].left.appendTo(c),this._sliders[b].right.appendTo(c),this._sliders[b].leftTop.appendTo(c),this._sliders[b].rightTop.appendTo(c),this._sliders[b].leftBorder.appendTo(c),this._sliders[b].rightBorder.appendTo(c),this._sliders[b].leftBar.appendTo(c),this._sliders[b].rightBar.appendTo(c);var o=this._renderData[b].xAxis,p=o.data.axisStats,q=p.min.valueOf(),r=p.max.valueOf(),s=this._valueToOffset(b,q),t=this._valueToOffset(b,r);if(s>t){var u=t;t=s,s=u}"horizontal"!=this.seriesGroups[b].orientation?k.css({left:Math.round(d.x+s),top:d.y,width:Math.round(t-s),height:d.height}):k.css({top:Math.round(d.y+s),left:d.x,height:Math.round(t-s),width:d.width}),this._setSliderPositions(b,s,t)},_setSliderPositions:function(a,b,c){var d=this.seriesGroups[a],e=this._getXAxis(a),f=e.rangeSelector,g="horizontal"==d.orientation;e.rangeSelector.renderTo&&(g=!1);var h=e.position;f.renderTo&&f.position&&(h=f.position);var i=this._sliders[a],j=g?"top":"left",k=g?"left":"top",l=g?"height":"width",m=g?"width":"height",n=g?"y":"x",o=g?"x":"y",p=i.rect;i.startOffset=b,i.endOffset=c,i.left.css(j,p[n]),i.left.css(k,p[o]),i.left.css(l,b),i.left.css(m,p[m]),i.right.css(j,p[n]+c),i.right.css(k,p[o]),i.right.css(l,p[l]-c+1),i.right.css(m,p[m]),i.leftTop.css(j,p[n]),i.leftTop.css(k,p[o]+(g&&"right"==h||!g&&"top"!=h?0:p[m])),i.leftTop.css(l,b),i.leftTop.css(m,1),i.rightTop.css(j,p[n]+c),i.rightTop.css(k,p[o]+(g&&"right"==h||!g&&"top"!=h?0:p[m])),i.rightTop.css(l,p[l]-c+1),i.rightTop.css(m,1),i.leftBorder.css(j,p[n]+b),i.leftBorder.css(k,p[o]),i.leftBorder.css(l,1),i.leftBorder.css(m,p[m]);var q=p[m]/4;q>20&&(q=20),q<3&&(q=3),i.leftBar.css(j,p[n]+b-3),i.leftBar.css(k,p[o]+p[m]/2-q/2),i.leftBar.css(l,5),i.leftBar.css(m,q),i.rightBorder.css(j,p[n]+c),i.rightBorder.css(k,p[o]),i.rightBorder.css(l,1),i.rightBorder.css(m,p[m]),i.rightBar.css(j,p[n]+c-3),i.rightBar.css(k,p[o]+p[m]/2-q/2),i.rightBar.css(l,5),i.rightBar.css(m,q)},_resizeState:{},_onSliderMouseDown:function(b){b.stopImmediatePropagation(),b.stopPropagation();var c=b.data.self,d=c._sliders[b.data.groupIndex];d&&(void 0==c._resizeState.state&&c._testAndSetReadyResize(b),"ready"==c._resizeState.state&&(a.jqx._rangeSelectorTarget=c,c._resizeState.state="resizing"))},_valueToOffset:function(a,b){var c=this.seriesGroups[a],d=this._sliders[a],e=d.host.jqxChart("getInstance"),f=e._renderData[0].xAxis,g=f.data.axisStats,h=g.min.valueOf(),i=g.max.valueOf(),j=i-h;0==j&&(j=1);var k=this._getXAxis(a),l="horizontal"==c.orientation?"height":"width",m=(b.valueOf()-h)/j;return d.getRect()[l]*(k.flip?1-m:m)},_offsetToValue:function(a,b){var c=this._sliders[a],d=this.seriesGroups[a],e=this._getXAxis(a),f="horizontal"==d.orientation?"height":"width",g=c.getRect()[f];0==g&&(g=1);var h=c.host.jqxChart("getInstance"),i=h._renderData[0].xAxis,j=i.data.axisStats,k=j.min.valueOf(),l=j.max.valueOf(),m=b/g*(l-k)+k;return 1==e.flip&&(m=l-b/g*(l-k)),this._isDate(j.min)||this._isDate(j.max)?m=new Date(m):((void 0==e.dataField||j.useIndeces)&&(m=Math.round(m)),m<j.min&&(m=j.min),m>j.max&&(m=j.max)),m},_onSliderMouseUp:function(b){var c=a.jqx._rangeSelectorTarget;if(c){var d=b.data.groupIndex,e=b.data.swapXY,f=c._sliders[d];if(f&&"resizing"==c._resizeState.state){b.stopImmediatePropagation(),b.stopPropagation(),c._resizeState={},c.host.css("cursor","default");var g=e?"top":"left",h=e?"y":"x",i=f.element.coord()[g],j=i+(e?f.element.height():f.element.width()),k=f.getRect(),l=c._offsetToValue(d,i-k[h]),m=c._offsetToValue(d,j-k[h]),n=f.host.jqxChart("getInstance"),o=n._renderData[0].xAxis,p=o.data.axisStats;!p.isTimeUnit&&m.valueOf()-l.valueOf()>864e5&&(l.setHours(0,0,0,0),m.setDate(m.getDate()+1),m.setHours(0,0,0,0));var q=c._getXAxis(d);if(q.flip){var r=l;l=m,m=r}for(var s=0;s<c.seriesGroups.length;s++){var t=c._getXAxis(s);t==q&&(c._selectorRange[s]={min:l,max:m})}c._isSelectorRefresh=!0;var u=c.enableAnimations;c._raiseEvent("rangeSelectionChanging",{instance:c,minValue:l,maxValue:m}),c.enableAnimations=!1,c.update(),c.enableAnimations=u,c._raiseEvent("rangeSelectionChanged",{instance:c,minValue:l,maxValue:m})}}},_onSliderMouseMove:function(b){var c=b.data.self,d=(b.data.renderTo,b.data.groupIndex),e=c._sliders[d],f=b.data.swapXY;if(e){var g=e.getRect(),h=e.element,i=a.jqx.position(b),j=h.coord(),k=f?"top":"left",l=f?"height":"width",m=f?"y":"x";if("resizing"==c._resizeState.state){if(b.stopImmediatePropagation(),b.stopPropagation(),"left"==c._resizeState.side){var n=Math.round(i[k]-j[k]),o=g[m];if(j[k]+n>=o&&j[k]+n<=o+g[l]){var p=parseInt(h.css(k)),q=Math.max(2,(f?h.height():h.width())-n);h.css(l,q),h.css(k,p+n)}}else if("right"==c._resizeState.side){var r=f?h.height():h.width(),n=Math.round(i[k]-j[k]-r),o=g[m];if(j[k]+r+n>=o&&j[k]+n+r<=o+g[l]){var q=Math.max(2,r+n);h.css(l,q)}}else if("move"==c._resizeState.side){var r=f?h.height():h.width(),p=parseInt(h.css(k)),n=Math.round(i[k]-c._resizeState.startPos);j[k]+n>=g[m]&&j[k]+n+r<=g[m]+g[l]&&(c._resizeState.startPos=i[k],h.css(k,p+n))}var s=parseInt(h.css(k))-e.rect[m],t=s+(f?h.height():h.width());c._setSliderPositions(d,s,t)}else c._testAndSetReadyResize(b)}},_testAndSetReadyResize:function(b){var c=b.data.self,d=b.data.renderTo,e=b.data.groupIndex,f=c._sliders[e],g=b.data.swapXY,h=f.getRect(),i=f.element,j=a.jqx.position(b),k=i.coord(),l=g?"left":"top",m=g?"top":"left",n=g?"width":"height",o=c._isTouchDevice?30:5;j[l]>=k[l]&&j[l]<=k[l]+h[n]?Math.abs(j[m]-k[m])<=o?(d.css("cursor",g?"row-resize":"col-resize"),c._resizeState={state:"ready",side:"left"}):Math.abs(j[m]-k[m]-(g?i.height():i.width()))<=o?(d.css("cursor",g?"row-resize":"col-resize"),c._resizeState={state:"ready",side:"right"}):j[m]+o>k[m]&&j[m]-o<k[m]+(g?i.height():i.width())?(d.css("cursor","pointer"),c._resizeState={state:"ready",side:"move",startPos:j[m]}):(d.css("cursor","default"),c._resizeState={}):(d.css("cursor","default"),c._resizeState={})},_selectorGetSize:function(a){return a.rangeSelector.renderTo?0:a.rangeSelector.size||this._paddedRect.height/3}})}(jqxBaseFramework);

mercurial