UNPKG

@fusioncharts/charts

Version:

JavaScript Data Visualisation Library

1 lines 12.4 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _componentInterface=require("@fusioncharts/core/src/component-interface");var _lib=require("@fusioncharts/core/src/lib");var setterGetter=function setterGetter(keyLabel,value){var key=keyLabel;key="comp_"+key;value&&(this.config[key]=value);return(value||!this.config[key])&&this||this.config[key]},_getTranslationString=function _getTranslationString(scaleX,scaleY){return["T",scaleX,",",scaleY].join("")},_getTranslation=function _getTranslation(axis){return-axis.getTranslation()},calculateTranslation=function calculateTranslation(axes){return _getTranslationString(_getTranslation(axes.h),_getTranslation(axes.v))},getHVOb=function getHVOb(h,v){return{h:h,v:v}},groupsArr=["columnShadowVcanvasGroup","columnVcanvasGroup","areaShadowVcanvasGroup","areaVcanvasGroup","lineShadowVcanvasGroup","lineVcanvasGroup","defaultShadowVcanvasGroup","defaultVcanvasGroup","sumLabelsLayer","vcanvasLabelGroup"],createGroup=function createGroup(groupName,parentContainer,vCanvas){var animationManager=vCanvas.getFromEnv("animationManager");return animationManager.setAnimation({el:"group",attr:{name:groupName},container:parentContainer,state:"appearing",component:vCanvas,label:"group"})},UNDEF,limitToBeUpdated=function limitToBeUpdated(axis){return!/category/i.test(axis.getName())};var VISIBLE="visible",REMOVED="removed",DATASET="dataset";var VirtualCanvas=function(_ComponentInterface){function VirtualCanvas(){return _ComponentInterface.apply(this,arguments)||this}(0,_inheritsLoose2.default)(VirtualCanvas,_ComponentInterface);var _proto=VirtualCanvas.prototype;_proto.getName=function getName(){return"virtualCanvas"};_proto.getType=function getType(){return"canvas"};_proto.xAxis=function xAxis(_xAxis){var axis=setterGetter.call(this,"xAxis",_xAxis);_xAxis&&this.listenToAxis(_xAxis);_xAxis&&this.addToEnv("xAxis",_xAxis);return axis};_proto.yAxis=function yAxis(_yAxis){var axis=setterGetter.call(this,"yAxis",_yAxis);_yAxis&&this.listenToAxis(_yAxis);_yAxis&&this.addToEnv("yAxis",_yAxis);return axis};_proto.paper=function paper(_paper){return setterGetter.call(this,"paper",_paper)};_proto.canvas=function canvas(_canvas){return setterGetter.call(this,"canvas",_canvas)};_proto.configure=function configure(conf){if(conf===void 0){conf={}}var vCanvas=this,chartConfig=vCanvas.getFromEnv("chartConfig"),config=vCanvas.config;Object.assign(config,conf);config.transposeAxis=chartConfig.transposeAxis;this._mapChildren((function(child){if(child.getState(REMOVED)||child.getType()===DATASET){return}child.configure&&child.configure()}))};_proto.getHorizontalVerticalAxes=function getHorizontalVerticalAxes(){var vcanvas=this,xAxis=vcanvas.xAxis(),yAxis=vcanvas.yAxis();return yAxis.config.isVertical?getHVOb(xAxis,yAxis):getHVOb(yAxis,xAxis)};_proto.preDraw=function preDraw(){this._mapChildren((function(child){if(child.getState("removed")||child.getType()==="dataset"){return}child.setVisibility&&child.setVisibility()}));var transposeAxis=this.config.transposeAxis,limit,chart=this.getFromEnv("chart"),_this$getAxisValuePad=this.getAxisValuePadding(),left=_this$getAxisValuePad.left,right=_this$getAxisValuePad.right,top=_this$getAxisValuePad.top,bottom=_this$getAxisValuePad.bottom;limit=this.getDataLimits(!transposeAxis);if(limit.min!==Infinity||limit.max!==-Infinity){this._setYAxisLimits(limit.min,limit.max);chart._storeIntialLimit&&chart._storeIntialLimit(limit.min,limit.max)}else{this._setYAxisLimits(UNDEF,UNDEF);chart._storeIntialLimit&&chart._storeIntialLimit(UNDEF,UNDEF)}this._setXAxisLimits(limit.xMin,limit.xMax);this._setAxisValuePadding(left,right,top,bottom)};_proto.childChanged=function childChanged(updateInfo){if(updateInfo===void 0){updateInfo={}}var vCanvas=this,config=vCanvas.config,transposeAxis=config.transposeAxis,range;if(updateInfo.dataLimitChanged!==false){range=vCanvas.getDataLimits(!transposeAxis);if(transposeAxis&&(range.min!==config.range.min||range.max!==config.range.max)){config.range.min=range.min;config.range.max=range.max;this.getFromEnv("yAxis").resetStoredLimits();range.min!==Infinity||range.max!==-Infinity?vCanvas._setYAxisLimits(range.min,range.max):vCanvas._setYAxisLimits(UNDEF,UNDEF)}if(range.xMin!==config.range.xMin||range.xMax!==config.range.xMax){config.range.xMin=range.xMin;config.range.xMax=range.xMax;this.getFromEnv("xAxis").resetStoredLimits();vCanvas._setXAxisLimits(range.xMin,range.xMax)}if(range.xMin===Infinity||range.xMax===-Infinity){vCanvas._changeXAxisCordinates()}}vCanvas.asyncDraw()};_proto._setAxisValuePadding=function _setAxisValuePadding(left,right,top,bottom){this.getFromEnv("xAxis").setAxisPadding(left,right);top&&bottom&&this.getFromEnv("yAxis").setAxisPadding(left,right)};_proto.getAxisValuePadding=function getAxisValuePadding(){var paddingObj={},axisPaddingLeft=-Infinity,axisPaddingRight=-Infinity,axisPaddingTop=-Infinity,axisPaddingBottom=-Infinity;this._mapChildren((function(child){if(child.getState(REMOVED)){return}paddingObj=child.getAxisValuePadding&&child.getAxisValuePadding()||{};axisPaddingLeft=Math.max(axisPaddingLeft,paddingObj.left||-Infinity);axisPaddingRight=Math.max(axisPaddingRight,paddingObj.right||-Infinity);axisPaddingTop=Math.max(axisPaddingTop,paddingObj.top||-Infinity);axisPaddingBottom=Math.max(axisPaddingBottom,paddingObj.bottom||-Infinity)}));if(axisPaddingLeft===-Infinity){axisPaddingLeft=0}if(axisPaddingRight===-Infinity){axisPaddingRight=0}if(axisPaddingTop===-Infinity){axisPaddingTop=0}if(axisPaddingBottom===-Infinity){axisPaddingBottom=0}if(!this.config.padding){this.config.padding={};this.config.padding.left=axisPaddingLeft;this.config.padding.right=axisPaddingRight;this.config.padding.top=axisPaddingTop;this.config.padding.bottom=axisPaddingBottom}return{left:axisPaddingLeft,right:axisPaddingRight,top:axisPaddingTop,bottom:axisPaddingBottom}};_proto._setYAxisLimits=function _setYAxisLimits(min,max){var yAxis=this.getFromEnv("yAxis");limitToBeUpdated(yAxis)&&yAxis.setDataLimit(max,min)};_proto._setXAxisLimits=function _setXAxisLimits(xMin,xMax){var xAxis=this.getFromEnv("xAxis");if(limitToBeUpdated(xAxis)){xMax!==-Infinity||xMin!==+Infinity?xAxis.setDataLimit(xMax,xMin):xAxis.setDataLimit(UNDEF,UNDEF)}};_proto.getDataLimits=function getDataLimits(allVisible){var vcanvas=this,chart=vcanvas.getFromEnv("chart"),infMin=-Infinity,infMax=+Infinity,max=infMin,min=infMax,xMin=infMax,xMax=infMin,maxminObj,xMaxValue,xMinValue,getMaxMin=function getMaxMin(_maxminObj){xMaxValue=(0,_lib.pluck)(_maxminObj.xMax,infMin);xMinValue=(0,_lib.pluck)(_maxminObj.xMin,infMax);max=Math.max(max,_maxminObj.max);min=Math.min(min,_maxminObj.min);xMax=Math.max(xMax,xMaxValue);xMin=Math.min(xMin,xMinValue)};vcanvas._mapChildren((function(child){if(!child.getDataLimits||child.getState(REMOVED)||!allVisible&&!child.getState(VISIBLE)){return}maxminObj=child.getDataLimits(allVisible);getMaxMin(maxminObj)}));if(!this.config.range){this.config.range={};this.config.range.min=min;this.config.range.max=max;this.config.range.xMin=xMin;this.config.range.xMax=xMax}chart.config.yMax=max;chart.config.yMin=min;return{min:min,max:max,xMin:xMin,xMax:xMax}};_proto.listenToAxis=function listenToAxis(axis){var vcanvas=this,axisScrollFn;axisScrollFn=function axisScrollFn(){if(vcanvas.getState("drawn")){vcanvas.asyncDraw()}};if(!this.getState("visiblerangeset"+axis.getId())){this.setState("visiblerangeset"+axis.getId(),true);vcanvas.addExtEventListener("visiblerangeset",axisScrollFn,axis)}};_proto.createContainer=function createContainer(){var vcanvas=this,canvas=vcanvas.getLinkedParent();!vcanvas.getChildContainer("columnShadowVcanvasGroup")&&vcanvas.addChildContainer("columnShadowVcanvasGroup",createGroup("vcanvas-column-shadow",canvas.getChildContainer("columnShadowGroup"),vcanvas));!vcanvas.getChildContainer("columnVcanvasGroup")&&vcanvas.addChildContainer("columnVcanvasGroup",createGroup("vcanvas-column-plot",canvas.getChildContainer("columnGroup"),vcanvas));!vcanvas.getChildContainer("areaShadowVcanvasGroup")&&vcanvas.addChildContainer("areaShadowVcanvasGroup",createGroup("vcanvas-area-shadow",canvas.getChildContainer("areaShadowGroup"),vcanvas));!vcanvas.getChildContainer("areaVcanvasGroup")&&vcanvas.addChildContainer("areaVcanvasGroup",createGroup("vcanvas-area-plot",canvas.getChildContainer("areaGroup"),vcanvas));!vcanvas.getChildContainer("lineShadowVcanvasGroup")&&vcanvas.addChildContainer("lineShadowVcanvasGroup",createGroup("vcanvas-line-shadow",canvas.getChildContainer("lineShadowGroup"),vcanvas));!vcanvas.getChildContainer("lineVcanvasGroup")&&vcanvas.addChildContainer("lineVcanvasGroup",createGroup("vcanvas-line-plot",canvas.getChildContainer("lineGroup"),vcanvas));!vcanvas.getChildContainer("defaultShadowVcanvasGroup")&&vcanvas.addChildContainer("defaultShadowVcanvasGroup",createGroup("vcanvas-default-shadow",canvas.getChildContainer("defaultShadowGroup"),vcanvas));!vcanvas.getChildContainer("defaultVcanvasGroup")&&vcanvas.addChildContainer("defaultVcanvasGroup",createGroup("vcanvas-default-plot",canvas.getChildContainer("defaultGroup"),vcanvas));!vcanvas.getChildContainer("vcanvasLabelGroup")&&vcanvas.addChildContainer("vcanvasLabelGroup",createGroup("vcanvas-label",canvas.getChildContainer("datalabelsGroup"),vcanvas));!vcanvas.getChildContainer("columnTrendGroup")&&vcanvas.addChildContainer("columnTrendGroup",createGroup("columnTrendGroup",vcanvas.getChildContainer("columnVcanvasGroup"),vcanvas));!vcanvas.getChildContainer("sumLabelsLayer")&&vcanvas.addChildContainer("sumLabelsLayer",createGroup("vcanvas-sumLabelsLayer",canvas.getChildContainer("sumLabelsLayer"),vcanvas))};_proto.applyTranslation=function applyTranslation(){var vcanvas=this,axes=vcanvas.getHorizontalVerticalAxes(),translation=calculateTranslation(axes),pushAnimData=function pushAnimData(elem){var el=elem;el=vcanvas.getChildContainer(el);el.attr({transform:translation})};vcanvas.createContainer();groupsArr.forEach((function(val){pushAnimData(val)}))};_proto.draw=function draw(){this.applyTranslation();this.setState("drawn",true)};_proto.getCanvasPadding=function getCanvasPadding(){var iapi=this,dim,key,returnDimension={paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0};iapi._mapChildren((function(child){if(!child.getCanvasPadding||child.getState(REMOVED)||!child.getState(VISIBLE)){return}dim=child.getCanvasPadding()||{};for(key in dim){if(dim.hasOwnProperty(key)){returnDimension[key]=Math.max(dim[key],returnDimension[key])}}}));return returnDimension};_proto.rtShiftAnim=function rtShiftAnim(m,n){var vcanvas=this,x=m,y=n,translateString,xAxis=vcanvas.getFromEnv("xAxis"),yAxis=vcanvas.getFromEnv("yAxis"),xDiff=xAxis.getPixel(1)-xAxis.getPixel(0),yDiff=yAxis.getPixel(1)-yAxis.getPixel(0),animationManager=vcanvas.getFromEnv("animationManager");x=(x||0)*xDiff;y=(y||0)*yDiff;translateString=_getTranslationString(x,y);groupsArr.forEach((function(val){vcanvas.getChildContainer(val).attr({transform:translateString});animationManager.setAnimation({el:vcanvas.getChildContainer(val),attrs:{transform:"T0,0"}})}))};_proto._changeXAxisCordinates=function _changeXAxisCordinates(){var _this=this;if(this.getLinkedParent().getLinkedParent().config.defaultDatasetType==="marimekko"){var newXCordinate=[],canvasGroup=this.getChildContainer("areaVcanvasGroup");if(canvasGroup&&canvasGroup.node&&canvasGroup.node.lastElementChild&&canvasGroup.node.lastElementChild.childNodes){var nodes=[];this.addEventListener("visualupdated",(function(done){canvasGroup.node.lastElementChild.childNodes.forEach((function(item,index){if(item.childNodes&&item.childNodes[index]&&item.childNodes[index].style&&item.childNodes[index].style.display!=="none"){nodes=item.childNodes}}));if(nodes.length){nodes.forEach((function(item){var xValue=item.attributes.x.value,width=item.attributes.width.value;newXCordinate.push(Number(xValue)+Number(width)/2)}));_this.getFromEnv("xAxis").components.labels.forEach((function(item,index){item.config.props.label.attr.x=newXCordinate[index];item.config.props.label.attr.transform="r270,"+newXCordinate[index]+","+item.config.props.label.attr.y}));_this.getFromEnv("xAxis")._drawCategory()}}))}}};return VirtualCanvas}(_componentInterface.ComponentInterface);var _default=exports.default=VirtualCanvas;