quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 7.32 kB
JavaScript
import{ComponentInterface}from'../../../../../fc-core/src/component-interface';import{pluck}from'../../../../../fc-core/src/lib';var UNDEF,setterGetter=function(a,b){return a='comp_'+a,b&&(this.config[a]=b),(b||!this.config[a])&&this||this.config[a]},_getTranslationString=function(a,b){return['T',a,',',b].join('')},_getTranslation=function(a){return-a.getTranslation()},calculateTranslation=function(a){return _getTranslationString(_getTranslation(a.h),_getTranslation(a.v))},getHVOb=function(a,b){return{h:a,v:b}},groupsArr=['columnShadowVcanvasGroup','columnVcanvasGroup','areaShadowVcanvasGroup','areaVcanvasGroup','lineShadowVcanvasGroup','lineVcanvasGroup','defaultShadowVcanvasGroup','defaultVcanvasGroup','sumLabelsLayer','vcanvasLabelGroup'],createGroup=function(a,b,c){var d=c.getFromEnv('animationManager');return d.setAnimation({el:'group',attr:{name:a},container:b,state:'appearing',component:c,label:'group'})},limitToBeUpdated=a=>!/category/i.test(a.getName());const VISIBLE='visible',REMOVED='removed',DATASET='dataset';class VirtualCanvas extends ComponentInterface{getName(){return'virtualCanvas'}getType(){return'canvas'}xAxis(a){var b=setterGetter.call(this,'xAxis',a);return a&&this.listenToAxis(a),a&&this.addToEnv('xAxis',a),b}yAxis(a){var b=setterGetter.call(this,'yAxis',a);return a&&this.listenToAxis(a),a&&this.addToEnv('yAxis',a),b}paper(a){return setterGetter.call(this,'paper',a)}canvas(a){return setterGetter.call(this,'canvas',a)}configure(a={}){let b=this,c=b.getFromEnv('chartConfig'),d=b.config;Object.assign(d,a),d.transposeAxis=c.transposeAxis,this._mapChildren(a=>{a.getState(REMOVED)||a.getType()===DATASET||a.configure&&a.configure()})}getHorizontalVerticalAxes(){var a=this,b=a.xAxis(),c=a.yAxis();return c.config.isVertical?getHVOb(b,c):getHVOb(c,b)}preDraw(){this._mapChildren(a=>{a.getState('removed')||'dataset'===a.getType()||a.setVisibility&&a.setVisibility()});let a,b=this.config.transposeAxis,c=this.getFromEnv('chart'),{left:d,right:e,top:f,bottom:g}=this.getAxisValuePadding();a=this.getDataLimits(!b),a.min!==1/0||a.max!==-Infinity?(this._setYAxisLimits(a.min,a.max),c._storeIntialLimit&&c._storeIntialLimit(a.min,a.max)):(this._setYAxisLimits(UNDEF,UNDEF),c._storeIntialLimit&&c._storeIntialLimit(UNDEF,UNDEF)),this._setXAxisLimits(a.xMin,a.xMax),this._setAxisValuePadding(d,e,f,g)}childChanged(a={}){let b,c=this,d=c.config,e=d.transposeAxis;!1!==a.dataLimitChanged&&(b=c.getDataLimits(!e),e&&(b.min!==d.range.min||b.max!==d.range.max)&&(d.range.min=b.min,d.range.max=b.max,this.getFromEnv('yAxis').resetStoredLimits(),b.min!==1/0||b.max!==-Infinity?c._setYAxisLimits(b.min,b.max):c._setYAxisLimits(UNDEF,UNDEF)),(b.xMin!==d.range.xMin||b.xMax!==d.range.xMax)&&(d.range.xMin=b.xMin,d.range.xMax=b.xMax,this.getFromEnv('xAxis').resetStoredLimits(),c._setXAxisLimits(b.xMin,b.xMax))),c.asyncDraw()}_setAxisValuePadding(a,b,c,d){this.getFromEnv('xAxis').setAxisPadding(a,b),c&&d&&this.getFromEnv('yAxis').setAxisPadding(a,b)}getAxisValuePadding(){var a=Math.max;let b={},c=-Infinity,d=-Infinity,e=-Infinity,f=-Infinity;return this._mapChildren(g=>{g.getState(REMOVED)||(b=g.getAxisValuePadding&&g.getAxisValuePadding()||{},c=a(c,b.left||-Infinity),d=a(d,b.right||-Infinity),e=a(e,b.top||-Infinity),f=a(f,b.bottom||-Infinity))}),c===-Infinity&&(c=0),d===-Infinity&&(d=0),e===-Infinity&&(e=0),f===-Infinity&&(f=0),this.config.padding||(this.config.padding={},this.config.padding.left=c,this.config.padding.right=d,this.config.padding.top=e,this.config.padding.bottom=f),{left:c,right:d,top:e,bottom:f}}_setYAxisLimits(a,b){var c=this.getFromEnv('yAxis');limitToBeUpdated(c)&&c.setDataLimit(b,a)}_setXAxisLimits(a,b){let c=this.getFromEnv('xAxis');limitToBeUpdated(c)&&(b!==-Infinity||a!==+Infinity?c.setDataLimit(b,a):c.setDataLimit(UNDEF,UNDEF))}getDataLimits(a){var b,c,d,e=Math.max,f=this,g=f.getFromEnv('chart'),h=-Infinity,i=+Infinity,j=h,k=i,l=i,m=h,n=function(a){var b=Math.min;c=pluck(a.xMax,h),d=pluck(a.xMin,i),j=e(j,a.max),k=b(k,a.min),m=e(m,c),l=b(l,d)};return f._mapChildren(c=>{c.getDataLimits&&!c.getState(REMOVED)&&(a||c.getState(VISIBLE))&&(b=c.getDataLimits(a),n(b))}),this.config.range||(this.config.range={},this.config.range.min=k,this.config.range.max=j,this.config.range.xMin=l,this.config.range.xMax=m),g.config.yMax=j,g.config.yMin=k,{min:k,max:j,xMin:l,xMax:m}}listenToAxis(a){var b,c=this;b=function(){c.getState('drawn')&&c.asyncDraw()},this.getState('visiblerangeset'+a.getId())||(this.setState('visiblerangeset'+a.getId(),!0),c.addExtEventListener('visiblerangeset',b,a))}createContainer(){var a=this,b=a.getLinkedParent();a.getChildContainer('columnShadowVcanvasGroup')||a.addChildContainer('columnShadowVcanvasGroup',createGroup('vcanvas-column-shadow',b.getChildContainer('columnShadowGroup'),a)),a.getChildContainer('columnVcanvasGroup')||a.addChildContainer('columnVcanvasGroup',createGroup('vcanvas-column-plot',b.getChildContainer('columnGroup'),a)),a.getChildContainer('areaShadowVcanvasGroup')||a.addChildContainer('areaShadowVcanvasGroup',createGroup('vcanvas-area-shadow',b.getChildContainer('areaShadowGroup'),a)),a.getChildContainer('areaVcanvasGroup')||a.addChildContainer('areaVcanvasGroup',createGroup('vcanvas-area-plot',b.getChildContainer('areaGroup'),a)),a.getChildContainer('lineShadowVcanvasGroup')||a.addChildContainer('lineShadowVcanvasGroup',createGroup('vcanvas-line-shadow',b.getChildContainer('lineShadowGroup'),a)),a.getChildContainer('lineVcanvasGroup')||a.addChildContainer('lineVcanvasGroup',createGroup('vcanvas-line-plot',b.getChildContainer('lineGroup'),a)),a.getChildContainer('defaultShadowVcanvasGroup')||a.addChildContainer('defaultShadowVcanvasGroup',createGroup('vcanvas-default-shadow',b.getChildContainer('defaultShadowGroup'),a)),a.getChildContainer('defaultVcanvasGroup')||a.addChildContainer('defaultVcanvasGroup',createGroup('vcanvas-default-plot',b.getChildContainer('defaultGroup'),a)),a.getChildContainer('vcanvasLabelGroup')||a.addChildContainer('vcanvasLabelGroup',createGroup('vcanvas-label',b.getChildContainer('datalabelsGroup'),a)),a.getChildContainer('columnTrendGroup')||a.addChildContainer('columnTrendGroup',createGroup('columnTrendGroup',a.getChildContainer('columnVcanvasGroup'),a)),a.getChildContainer('sumLabelsLayer')||a.addChildContainer('sumLabelsLayer',createGroup('vcanvas-sumLabelsLayer',b.getChildContainer('sumLabelsLayer'),a))}applyTranslation(){var a=this,b=a.getHorizontalVerticalAxes(),c=calculateTranslation(b),d=function(b){b=a.getChildContainer(b),b.attr({transform:c})};a.createContainer(),groupsArr.forEach(function(a){d(a)})}draw(){this.applyTranslation(),this.setState('drawn',!0)}getCanvasPadding(){var a,b,c=this,d={paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0};return c._mapChildren(c=>{if(c.getCanvasPadding&&!c.getState(REMOVED)&&c.getState(VISIBLE))for(b in a=c.getCanvasPadding()||{},a)a.hasOwnProperty(b)&&(d[b]=Math.max(a[b],d[b]))}),d}rtShiftAnim(a,b){var c,d=this,e=d.getFromEnv('xAxis'),f=d.getFromEnv('yAxis'),g=e.getPixel(1)-e.getPixel(0),h=f.getPixel(1)-f.getPixel(0),i=d.getFromEnv('animationManager');a=(a||0)*g,b=(b||0)*h,c=_getTranslationString(a,b),groupsArr.forEach(function(a){d.getChildContainer(a).attr({transform:c}),i.setAnimation({el:d.getChildContainer(a),attrs:{transform:'T0,0'}})})}}export default VirtualCanvas;