@fusioncharts/features
Version:
FusionCharts JavaScript charting framework
1 lines • 6.66 kB
JavaScript
;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 _linearRegression=_interopRequireDefault(require("./linear-regression"));var _polynomialRegression=_interopRequireDefault(require("./polynomial-regression"));var _lib=require("@fusioncharts/core/src/lib");var _utilityFunctions=require("./utility-functions");var _dependencyManager=require("@fusioncharts/core/src/dependency-manager");var _regressionLine=_interopRequireDefault(require("./regression-line.animation"));var hideElement=function hideElement(){this.hide()};(0,_dependencyManager.addDep)({name:"regressionLineAnimation",type:"animationRule",extension:_regressionLine.default});var RegressionLineExtension=exports.default=function(_ComponentInterface){function RegressionLineExtension(){var _this;_this=_ComponentInterface.call(this)||this;_this._config={regressionPoints:[]};_this.regressionLine=[];return _this}(0,_inheritsLoose2.default)(RegressionLineExtension,_ComponentInterface);var _proto=RegressionLineExtension.prototype;_proto.getType=function getType(){return"extension"};_proto.getName=function getName(){return"regression"};_proto.configureAttributes=function configureAttributes(datasetComponent){var regressionLineExtension=this,chartData=regressionLineExtension.getFromEnv("dataSource").chart,datasetConfig=datasetComponent.config,JSONData=datasetConfig.JSONData,config=regressionLineExtension._config;config.regressionPoints.splice(0,config.regressionPoints.length);config.showYOnX=(0,_lib.pluckNumber)(JSONData.showyonx,chartData.showyonx,1);config.regressionLineColor=(0,_lib.toRaphaelColor)((0,_lib.pluck)(JSONData.regressionlinecolor,chartData.regressionlinecolor,datasetConfig.anchorbordercolor,datasetConfig.lineColor,datasetConfig.anchorBgColor,"fff000"));config.polynomialRegressionLineColor=(0,_lib.toRaphaelColor)((0,_lib.pluck)(JSONData.polynomialregressionlinecolor,chartData.polynomialregressionlinecolor,config.regressionLineColor));config.regressionLineThickness=(0,_lib.pluckNumber)(JSONData.regressionlinethickness,chartData.regressionlinethickness,JSONData.anchorborderthickness,1);config.polynomialRegressionLineThickness=(0,_lib.pluckNumber)(JSONData.polynomialregressionlinethickness,chartData.polynomialregressionlinethickness,config.regressionLineThickness);config.regressionLineAlpha=(0,_lib.pluckNumber)(JSONData.regressionlinealpha,chartData.regressionlinealpha,100);config.polynomialRegressionLineAlpha=(0,_lib.pluckNumber)(JSONData.polynomialregressionlinealpha,chartData.polynomialregressionlinealpha,config.regressionLineAlpha);if((0,_utilityFunctions.createLinear)(chartData,JSONData)){config.regressionPoints.push((0,_linearRegression.default)(JSONData.data,config.showYOnX))}if((0,_utilityFunctions.createPolynomial)(chartData,JSONData)){config.regressionPoints.push((0,_polynomialRegression.default)(JSONData.data,config.showYOnX))}};_proto.draw=function draw(){var regression=this,regressionConfig=regression._config,xAxis=regression.getFromEnv("xAxis"),yAxis=regression.getFromEnv("yAxis"),chart=regression.getFromEnv("chart"),canvasConfig=chart.getChildren("canvas")[0].config,container=regression.getContainer("regressionlinecontainer"),animManager=regression.getFromEnv("animationManager"),allPoints=regressionConfig.regressionPoints,oldPoints=[],newPoints=[],n,regressionLineLinearDummy=regression.getGraphicalElement("regressionLineLinear"),regressionLinePolynomialDummy=regression.getGraphicalElement("regressionLinePolynomial"),regressionLineLinear,regressionLinePolynomial,isLinear,attrObjLinear,attrObjPoly,regressionState,hideFn=hideElement;!regression.getLinkedParent().getState("visible")&&(regressionState="disappearing");container=regression.addContainer("regressionlinecontainer",animManager.setAnimation({el:container||"group",attr:{name:"regressionlinecontainer","clip-rect":[canvasConfig.canvasLeft,canvasConfig.canvasTop,canvasConfig.canvasWidth,canvasConfig.canvasHeight]},container:chart.getChildContainer("abovePlotGroup"),component:regression,label:"group"}));for(var j=0;j<allPoints.length;j++){var pathString=_lib.BLANKSTRING;oldPoints=allPoints[j][0];newPoints=allPoints[j][1];n=newPoints.length;if(oldPoints.length===0&&newPoints.length===0){isLinear=true;pathString+="M0,0"}else if(oldPoints.length!==0&&newPoints.length===0){isLinear=false;pathString+="M0,0"}else if(oldPoints.length===0){isLinear=true;pathString+="M"+xAxis.getPixel(newPoints[0].x)+","+yAxis.getPixel(newPoints[0].y);pathString+="L"+xAxis.getPixel(newPoints[n-1].x)+","+yAxis.getPixel(newPoints[n-1].y)}else{isLinear=false;pathString+="M"+xAxis.getPixel(newPoints[0].x)+","+yAxis.getPixel(newPoints[0].y);pathString+=" R"+xAxis.getPixel(newPoints[1].x)+","+yAxis.getPixel(newPoints[1].y);for(var i=2;i<n;i++){pathString+=" "+xAxis.getPixel(newPoints[i].x)+","+yAxis.getPixel(newPoints[i].y)}}if(!isLinear){attrObjPoly={opacity:Number((0,_lib.pluck)(regressionConfig.polynomialRegressionLineAlpha,regressionConfig.regressionLineAlpha))/100,stroke:(0,_lib.pluck)(regressionConfig.polynomialRegressionLineColor,regressionConfig.regressionLineColor),"stroke-width":(0,_lib.pluck)(regressionConfig.polynomialRegressionLineThickness,regressionConfig.regressionLineThickness),path:pathString}}else{attrObjLinear={opacity:Number(regressionConfig.regressionLineAlpha)/100,stroke:regressionConfig.regressionLineColor,"stroke-width":regressionConfig.regressionLineThickness,path:pathString}}}if(regressionState!=="disappearing"){regressionLineLinearDummy&®ressionLineLinearDummy.show();regressionLinePolynomialDummy&®ressionLinePolynomialDummy.show()}regressionLineLinear=animManager.setAnimation({el:regressionLineLinearDummy||"path",container:container,component:regression,doNotRemove:true,attr:!(regressionState==="disappearing")&&attrObjLinear,callback:regressionState==="disappearing"&&hideFn,label:"path"});if(!regressionLineLinearDummy){regression.addGraphicalElement("regressionLineLinear",regressionLineLinear)}regressionLinePolynomial=animManager.setAnimation({el:regressionLinePolynomialDummy||"path",container:container,component:regression,doNotRemove:true,attr:!(regressionState==="disappearing")&&attrObjPoly,callback:regressionState==="disappearing"&&hideFn,label:"path"});if(!regressionLinePolynomialDummy){regression.addGraphicalElement("regressionLinePolynomial",regressionLinePolynomial)}};return RegressionLineExtension}(_componentInterface.ComponentInterface);