@fusioncharts/features
Version:
FusionCharts JavaScript charting framework
1 lines • 6.6 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 _lib=require("@fusioncharts/core/src/lib");var _componentInterface=require("@fusioncharts/core/src/component-interface");var CROSSLINE_ANIM_DUR_MULTIPLIER=1e3,CROSSLINE_ANIM_DUR_DEFAULT=.09;var DEFAULTCOLOR="#EEEEEE",DEFAULTALPHA=50,crispFixer=_lib.hasSVG?0:.5,crisping=function crisping(x,s){return Math.round(x+(s%2/2+crispFixer))-(s%2/2+crispFixer)},handlers=function handlers(crossLineManagerBand){return{onhover:function onhover(event,o){!crossLineManagerBand.config.axisScrolling&&crossLineManagerBand.show(o.axes?{axesInfo:o.axes}:{event:event})},onhoverout:function onhoverout(event){crossLineManagerBand.hide({event:event})}}},createRaphaelGroup=function createRaphaelGroup(groupName,parentContainer,manager){return manager.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:groupName},container:parentContainer,state:"appearing",component:manager,label:"group"})};var CrossLineManagerBand=function(_ComponentInterface){function CrossLineManagerBand(){var _this;_this=_ComponentInterface.call(this)||this;_this._handlerAPI=handlers(_this);_this.mouseOutTimer=_lib.UNDEF;return _this}(0,_inheritsLoose2.default)(CrossLineManagerBand,_ComponentInterface);var _proto=CrossLineManagerBand.prototype;_proto.getAttachedAxisInfo=function getAttachedAxisInfo(event){if(event===void 0){event={}}var manager=this,listOfAxes=manager.getLinkedParent().getAxes(),i,axis,isY,isVertical,axisTranslation,coordinate=event.originalEvent&&(0,_lib.getMouseCoordinate)(manager.getLinkedParent().getFromEnv("chart-container"),event.originalEvent,manager.getFromEnv("chart")),chartX=coordinate&&coordinate.chartX||0,chartY=coordinate&&coordinate.chartY||0;for(i=listOfAxes.length-1;i>=0;i--){axis=listOfAxes[i].axis;isY=listOfAxes[i].isY;if(!isY){isVertical=!!axis.config.isVertical;axisTranslation=axis.getTranslation();return{value:isVertical?axis.getValue(chartY+axisTranslation):axis.getValue(chartX+axisTranslation),axis:axis,isVertical:isVertical,isY:false}}}};_proto.configure=function configure(){var manager=this,conf=manager.config,chartConfig=manager.getFromEnv("chartConfig"),chartAttr=manager.getFromEnv("chart-attrib");conf.drawCrossLine=(0,_lib.pluckNumber)(chartAttr.drawcrossline,chartConfig.drawcrossline,1);conf.bandStyle={fillcolor:(0,_lib.pluck)(chartAttr.crosslinecolor,chartConfig.crosslinecolor,DEFAULTCOLOR),alpha:(0,_lib.pluckNumber)(chartAttr.crosslinealpha,chartConfig.crosslinealpha,DEFAULTALPHA),thickness:(0,_lib.pluckNumber)(chartConfig.defaultcrosslinethickness),managerId:manager.getId(),onTop:(0,_lib.pluckNumber)(chartAttr.drawcrosslineontop,chartConfig.drawcrosslineontop,0),cursor:"pointer",animDuration:(0,_lib.pluckNumber)(chartAttr.crosslineanimation,0)&&(0,_lib.pluckNumber)(chartAttr.crosslineanimationduration,CROSSLINE_ANIM_DUR_DEFAULT)*CROSSLINE_ANIM_DUR_MULTIPLIER}};_proto.createGroup=function createGroup(){var manager=this,crosslineBottom=manager.getLinkedParent().getChildContainer("crosslineBottom"),crosslineTop=manager.getLinkedParent().getChildContainer("crosslineTop");!manager.getChildContainer("crosslineTop")&&manager.addChildContainer("crosslineTop",createRaphaelGroup("crosslineTop",crosslineTop,manager));!manager.getChildContainer("crosslineBottom")&&manager.addChildContainer("crosslineBottom",createRaphaelGroup("crosslineBottom",crosslineBottom,manager))};_proto.show=function show(info){if(info===void 0){info={}}var manager=this,event=info.event;clearTimeout(this.mouseOutTimer);manager.config.attachedCanvasAxisInfo=manager.getAttachedAxisInfo(event);manager._setAptAxesInfo(info.axesInfo,info.value);manager._show(event)};_proto._setAptAxesInfo=function _setAptAxesInfo(extAttachedAxesInfo,value){if(extAttachedAxesInfo===void 0){extAttachedAxesInfo=[]}var infoLength=extAttachedAxesInfo.length,extAttachedAxis,attachedCanvasAxisInfo=this.config.attachedCanvasAxisInfo,i;if(extAttachedAxesInfo.length){for(i=0;i<infoLength;i++){extAttachedAxis=extAttachedAxesInfo[i];if(extAttachedAxis.axis===attachedCanvasAxisInfo.axis){attachedCanvasAxisInfo.value=extAttachedAxis.value;break}}}if(value!==_lib.UNDEF){attachedCanvasAxisInfo.value=value}};_proto._show=function _show(event){var manager=this,conf=manager.config,chartConfig=manager.getFromEnv("chartConfig"),crossline=manager.getChildren("crossline")[0],attachedCanvasAxisInfo=conf.attachedCanvasAxisInfo,activeAxis=attachedCanvasAxisInfo.axis,limit=activeAxis.getLimit().max-activeAxis.config.endPad,xAxisIndex=Math.round(attachedCanvasAxisInfo.value),xAxisPos=attachedCanvasAxisInfo.axis.getPixel(xAxisIndex)-attachedCanvasAxisInfo.axis.getTranslation(),xAxisZeroPos,xAxisOnePos,thickness,bandAttrs=Object.assign({},conf.bandStyle),crispedValue,canvasConfig=manager.getFromEnv("canvasConfig"),canvasTop=canvasConfig.canvasTop,canvasLeft=canvasConfig.canvasLeft;if(xAxisIndex<0||xAxisIndex>limit){return}if(manager.config.lastIndex!==xAxisIndex&&conf.drawCrossLine){if((thickness=bandAttrs.thickness)===_lib.UNDEF){if(chartConfig._hascolumn===false){thickness=1}else{xAxisZeroPos=activeAxis.getPixel(0);xAxisOnePos=activeAxis.getPixel(1);thickness=Math.abs(xAxisOnePos-xAxisZeroPos)}}crispedValue=crisping(xAxisPos,thickness);manager.createGroup();bandAttrs.thickness=thickness;if(attachedCanvasAxisInfo.isVertical){bandAttrs=Object.assign(bandAttrs,{x1:canvasLeft,y1:crispedValue,x2:canvasLeft+canvasConfig.canvasWidth,y2:crispedValue})}else{bandAttrs=Object.assign(bandAttrs,{x1:crispedValue,y1:canvasTop,x2:crispedValue,y2:canvasTop+canvasConfig.canvasHeight})}crossline.show(bandAttrs);manager.getFromEnv("chart").fireChartInstanceEvent("onChangeCrossLine",{currentIndex:xAxisIndex,lastIndex:manager.config.lastIndex,source:event?"mouse interaction":"public API"});manager.config.lastIndex=xAxisIndex}};_proto.hide=function hide(info){var _this2=this;if(info===void 0){info={}}var manager=this;this.mouseOutTimer=setTimeout((function(){manager.getFromEnv("chart").fireChartInstanceEvent("onChangeCrossLine",{lastIndex:manager.config.lastIndex,source:info.event?"mouse interaction":"public API"});delete _this2.config.lastIndex;_this2.getChildren("crossline")[0].hide()}),20)};_proto.getType=function getType(){return"crossline-manager"};_proto.getName=function getName(){return"crossline-manager-band-category-axis"};return CrossLineManagerBand}(_componentInterface.ComponentInterface);var _default=exports.default=CrossLineManagerBand;