UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 5.9 kB
import MSColumn2D from'../mscolumn2d';import Quadrant from'../../_internal/components/quadrant';import axisFactory from'../../factories/xy-axis';import legendItemFactory from'../../factories/legend';import{pluck,componentFactory,getMouseCoordinate}from'../../../../fc-core/src/lib';let UNDEF,MOUSEOUT='fc-mouseout',_getHoveredTrendLine=function(a,b,c){var d,e,f,g,h,j,k,l,m,n,o,p=Math.pow,q=Math.abs,r=c&&c.length,s=a,t=b;if(r)for(d=r-1;0<=d;d--)if(f=c[d],l=f.x1,m=f.y1,n=f.x2,o=f.y2,f.isTrendZone){if(s>=l&&s<=n&&t>=m&&t<=o)return f;}else if(m!==o&&l!==n?(e=(m-o)/(l-n),g=e,h=-1,j=m-e*l,k=q(g*s+h*t+j)/Math.sqrt(p(g,2)+p(h,2))):l===n?k=q(l-s):m===o&&(k=q(m-t)),k<=f.tolerance)return f};class ScatterBase extends MSColumn2D{constructor(){super(),this.registerFactory('axis',axisFactory,['canvas']),this.registerFactory('legend',legendItemFactory),this.registerFactory('quadrant',a=>{let b,c=a.getChildren('canvas')[0],d=a.getChildren(),e=()=>b.asyncDraw();componentFactory(c,Quadrant,'quadrant'),b=c.getChildren('quadrant')[0],b.addExtEventListener('visiblerangeset',e,d.xAxis[0]),b.addExtEventListener('visiblerangeset',e,d.yAxis[0]),b.configure()},['dataset'])}static getName(){return'ScatterBase'}mouseoutHandler(a,b,c){let d=this,e=d.config.datasetOrder||d.getDatasets(),f=d.getChildren('mouseTracker')[0];e[b]&&e[b].components.data[c]?e[b]._firePlotEvent(MOUSEOUT,c,a):d.getFromEnv('toolTipController').hideAll(),delete f._lastDatasetIndex,delete f._lastPointIndex}parseChartAttr(a){super.parseChartAttr(a),this.config.drawTrendRegion=0}__setDefaultConfig(){let a=this.config;super.__setDefaultConfig&&super.__setDefaultConfig(),a.valuefontbold=0,a.stickytracking=1,a.usemessagelog=0,a.animationeffect='linear',a.showshadow=1,a.showhovereffect=UNDEF,a.plothovereffect=UNDEF,a.anchorhovereffect=UNDEF,a.plotborderdashed=UNDEF,a.stack100percent=UNDEF,a.showpercentvalues=UNDEF,a.showpercentintooltip=UNDEF,a.plotbordercolor=UNDEF,a.showtooltip=1,a.seriesnameintooltip=1,a.rotatevalues=0,a.minimizetendency=0,a.plotfillangle=270,a.valuepadding=2,a.useplotgradientcolor=1,a.plotborderthickness=1,a.plotfillalpha='70',a.showvalues=1,a.valueposition='auto',a.tooltipsepchar=', ',a.usedataplotcolorforlabels=0,a.placevaluesinside=0,a.showplotborder=1,a.use3dlighting=1,a.useroundedges=0,a.plotspacepercent=20,a.plotpaddingpercent=UNDEF,a.plotfillratio=UNDEF,a.maxcolwidth=50,a.plotborderdashlen=5,a.plotborderdashgap=4,a.useScaleRecursively=!0,a.zeroplanethickness=1,a.zeroplanealpha=40,a.showzeroplaneontop=0,a.setadaptivexmin=1}_drawTrendTooltip(a,b){var c=this,d=c.getFromEnv('toolTipController'),e=c.config.currentTrendToolTip,f=a.tooltext,g=b.originalEvent;e?d.draw(g,f,e):e=c.config.currentTrendToolTip=d.draw(g,f)}_mouseEvtHandler(a,b){var c,d,e,f,g,h,k,m,n,o,p=this,q=b.mouseTracker,r=p.getChildren('canvas')[0],s=p.getFromEnv('toolTipController'),t=a.originalEvent,u=p.config,v=u.canvasBaseDepth||0,w=u.canvasLeft-(u.toleranceLeft||0),x=u.canvasRight+(u.toleranceRight||0),y=u.canvasBottom+(u.toleranceBottom||0),z=u.canvasTop-(u.toleranceTop||0),A=u.datasetOrder||p.getDatasets(),B=!1,C=A.length,D=q._lastDatasetIndex,E=q._lastPointIndex;if(e=getMouseCoordinate(p.getFromEnv('chart-container'),t,p),f=e.chartX,g=e.chartY,f>w-v&&f<x&&g>z&&g<y+v){for(;C--&&!B;)h=A[C],h&&h.getState('visible')&&(k=h._getHoveredPlot&&h._getHoveredPlot(f,g),(k&&k.hovered||c)&&(B=!0,k.datasetIndex=C,o=q.getMouseEvents(a,k.datasetIndex,k.pointIndex)));c=_getHoveredTrendLine(f,g,r.config.vtrendlines),d=_getHoveredTrendLine(f,g,r.config.trendlines)}if((!B||o&&o.fireOut)&&'undefined'!=typeof D&&A[D]&&A[D]._firePlotEvent&&(o&&!o.events.length?q.mouseoutTimer=setTimeout(function(){p.mouseoutHandler(a,D,E)},20):(p.mouseoutHandler(a,D,E),clearTimeout(q.mouseoutTimer))),B)for(p.config.currentTrendToolTip&&s.hide(p.config.currentTrendToolTip),n=o.events&&o.events.length,n&&(q._lastDatasetIndex=k.datasetIndex,E=q._lastPointIndex=k.pointIndex),m=0;m<n;m+=1)h&&h._firePlotEvent&&h._firePlotEvent(o.events[m],E,a,k.datasetIndex);else c&&c.tooltext?p._drawTrendTooltip(c,a):d&&d.tooltext?p._drawTrendTooltip(d,a):p.config.currentTrendToolTip&&s.hide(p.config.currentTrendToolTip)}_setCategories(){var a=this,b=a.getFromEnv('dataSource'),c=b.chart,d=a.getChildren('xAxis'),e=pluck(c.xaxislabelmode,'categories'),f=b.categories,g=f&&f[0]&&f[0].category;d[0].setAxisConfig({xAxisLabelMode:'categories'}),'auto'!==e&&'mixed'!==e&&g&&0<g.length?d[0].setTickValues(g):'auto'===e?(d[0].setTickValues(g),d[0].setAxisConfig({xAxisLabelMode:'auto'})):(d[0].setTickValues(g),d[0].setAxisConfig({xAxisLabelMode:'mixed'}))}_allocateSpace(a){var b=Math.max,c=this,d=c.getChildren('canvas'),e=d&&d[0].config,f=c.config,g=f.canvasHeight,h=f.canvasWidth,i=f.availableHeight,j=f.availableWidth;f.canvasLeft+=a.left||0,f.canvasTop+=a.top||0,h=f.canvasWidth=b(h-((a.left||0)+(a.right||0)),0),g=f.canvasHeight=b(g-((a.top||0)+(a.bottom||0)),0),f.availableHeight=b(i-((a.top||0)+(a.bottom||0)),0),f.availableWidth=b(j-((a.left||0)+(a.right||0)),0),f.canvasRight=f.canvasLeft+h,f.canvasBottom=f.canvasTop+g,e&&(e.canvasPaddingLeft=b(e.canvasPaddingLeft,a.paddingLeft||0),e.canvasPaddingRight=b(e.canvasPaddingRight,a.paddingRight||0),e.canvasPaddingTop=b(e.canvasPaddingTop,a.paddingTop||0),e.canvasPaddingBottom=b(e.canvasPaddingBottom,a.paddingBottom||0)),d[0].setDimension({top:f.canvasTop,left:f.canvasLeft,width:f.canvasWidth,height:f.canvasHeight})}_postSpaceManagement(){var a,b,c=this,d=c.config,e=c.getChildren(),f=e.xAxis&&e.xAxis[0],g=e.legend&&e.legend[0],h=d.xDepth,j=c.getChildren('canvas');for(c.setAxisDimention(),f&&c._allocateXAxisLabelSpace(f),f&&f.shiftLabels(-h,0),g&&g.postSpaceManager(),a=0;a<(j&&j.length);a++)b=j[a],b.setCanvasPadding();c.setAxisDimention(),c.allocateDimensionOfChartMenuBar()}_checkInvalidSpecificData(){let a=this.getFromEnv('dataSource'),b=a.dataset;if(!b)return!0}}export default ScatterBase;