quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 5.52 kB
JavaScript
import{POSITION_BOTTOM,CREDIT_HREF,CREDIT_STRING,creditLabel,POSITION_START,BLANK,POINTER,HAND,componentFactory,ROUND,getMouseCoordinate,pluck}from'../lib';import{triggerEvent}from'../event-api';import ChartMessage from'../chart-message';import{ComponentInterface}from'../component-interface';import AnimationManager from'../animation-manager';import{getDep}from'../dependency-manager';import EiList from'../_internal/ei-method-list';const MOUSEOUT='fc-mouseout',DEFAULT_CREDITLABEL=creditLabel,addEiMethods=(a,b)=>{for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])},getEIList=a=>{let b=EiList[a]||[];return b.concat(EiList['*'])},_mouseEvtHandler=function(a,b,c){var d,e,f,g,h,k,m,n,o=c.mouseTracker,p=b.originalEvent,q=a.config,r=q.datasetOrder||a.getDatasets(),s=!1,t=r.length,u=o._lastDatasetIndex,v=o._lastPointIndex;for(d=getMouseCoordinate(a.getFromEnv('chart-container'),p,a),e=d.chartX,f=d.chartY;t--&&!s;)g=r[t],g&&g.getState('visible')&&(h=g._getHoveredPlot&&g._getHoveredPlot(e,f),h&&h.hovered&&(s=!0,h.datasetIndex=t,n=o.getMouseEvents(b,h.datasetIndex,h.pointIndex)));if((!s||n&&n.fireOut)&&'undefined'!=typeof u&&r[u]&&r[u]._firePlotEvent&&(n&&!n.events.length?o.mouseoutTimer=setTimeout(function(){a.mouseoutHandler(b,u,v)},20):(a.mouseoutHandler(b,u,v),clearTimeout(o.mouseoutTimer))),s)for(m=n.events&&n.events.length,m&&(o._lastDatasetIndex=h.datasetIndex,v=o._lastPointIndex=h.pointIndex),k=0;k<m;k+=1)g&&g._firePlotEvent&&g&&g._firePlotEvent&&g._firePlotEvent(n.events[k],v,b,h.datasetIndex)};class BaseChart extends ComponentInterface{static getName(){return'base'}setDummyEImethods(a){var b=this,c=b.config,d=c._eiStore||(c._eiStore={}),e=getEIList(a),f=b.getFromEnv('chartInstance'),g=function(a){return function(){d[a]||(d[a]=[]),d[a].push(arguments)}};e.forEach(a=>{f[a]||(f[a]=g(a))}),f.addEventListener('renderComplete',function(){for(let a in d)d[a].forEach(b=>{f[a].apply(f,b)});c._eiStore={}})}static getType(){return'chartAPI'}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}getName(){return'base'}getType(){return'chartAPI'}_mouseEvtHandler(a,b){_mouseEvtHandler(this,a,b)}getComponents(a,b){let c=a||this,d=[];return c.iterateComponents(a=>{a.getType()===b&&d.push(a)}),d}getDatasets(a){let b=a||this,c=[];return b.iterateComponents(a=>{'dataset'===a.getType()&&c.push(a)}),c}preConfigure(a){super.preConfigure(a),addEiMethods(this.getFromEnv('chartInstance'),this.eiMethods)}configureAttributes(a){super.configureAttributes(a),this.createBaseComponent()}createBaseComponent(){let a,b=this;(a=b.getFromEnv('animationManager'))?a.configure():(a=new AnimationManager,b.addToEnv('animationManager',a),a.addToEnv('chart',b),a.addToEnv('animationManager',a),a.configure(),b.addExtEventListener('animationstart',function(a){let c=a.data.duration;c&&b.fireChartInstanceEvent('animationinvoked',{duration:c})},a))}setChartMessage(a,b,c){var d,e,f,g=this;componentFactory(this,ChartMessage,'chartMessage'),f=g.getChildren('chartMessage')[0],c?g.addToEnv('chart-container',c):c=g.getFromEnv('chart-container'),d=g.getFromEnv('paper'),d||(e=getDep('redraphael','plugin'),d=new e(c,g.getFromEnv('chartWidth'),g.getFromEnv('chartHeight')),d.setHTMLClassName('fusioncharts-div'),g.addToEnv('paper',d)),d.setConfig('stroke-linecap',ROUND),g.getChildContainer('messageGroup')||g.addChildContainer('messageGroup',d.group('messageGroup')),g.config.hasChartMessage=!0,f.setChartMessage(a,b)}drawChartMessage(){var a=this;a.config.hasChartMessage=!0,a.getChildren('chartMessage')[0].drawChartMessage(),a._drawCreditLabel()}_dispose(){this._clearTimers&&this._clearTimers();let a=this.getFromEnv('paper');a&&a.remove&&a.remove(),super._dispose()}fireChartInstanceEvent(a,b,c,d,e){let f=this.getFromEnv('chartInstance');triggerEvent(a,f,b,c,d,e)}_hideChartMessage(){var a=this,b=a.getChildren('chartMessage');a.config.hasChartMessage=!1,b&&b[0]._hideChartMessage(),a.getGraphicalElement('messageText')&&a.getGraphicalElement('messageText').hide(),a.getGraphicalElement('messageVeil')&&a.getGraphicalElement('messageVeil').hide()}_removeWaitingJobs(){this.iterateComponents(a=>a.removeAllJobs())}_drawCreditLabel(){var a,b,c,d,e,f=this,g=f.getFromEnv('core-options'),h=f.getFromEnv('paper'),i=g.creditLabel,j=f.getFromEnv('chartInstance').args.creditLabel,k=+f.getFromEnv('chartHeight'),l=f.getGraphicalElement('creditLabel'),m=f.getContainer('parentgroup'),n={href:CREDIT_HREF,text:CREDIT_STRING};a=pluck(j,i,DEFAULT_CREDITLABEL),a?(c=f.getContainer('creditgroup')||f.addContainer('creditgroup',h.group('creditgroup')),m&&c.insertAfter(m),d={text:n.text,x:6,y:k-4,"vertical-align":POSITION_BOTTOM,"text-anchor":POSITION_START,fill:'rgba(0,0,0,0.5)',title:n.title||BLANK},e={fontSize:9,fontFamily:'Verdana,sans',cursor:POINTER,_cursor:HAND},l?l.attr(d).css(e):(b=h.text(d,e,c),f.addGraphicalElement('creditLabel',b),b.on('fc-click',function(){try{open(n.href)}catch(a){(top||window).location.href=n.href}}))):b&&b.remove&&f.removeGraphicalElement('creditLabel')}_hideModal(){this.getChildContainer('messageGroup').hide()}remove(a){let b=this.getFromEnv('animationManager');super.remove(a),b&&b.remove(a)}}BaseChart.stringConstants={BACKGROUNDLOADED:'BackgroundLoaded',BACKGROUNDLOADERROR:'BackgroundLoadError',clipRectStr:'clip-rect'};export{_mouseEvtHandler};export default BaseChart;