UNPKG

@fusioncharts/features

Version:

FusionCharts JavaScript charting framework

1 lines 2.61 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 _inputBase=_interopRequireDefault(require("./input-base"));var _lib=require("@fusioncharts/core/src/lib");var zoomOnPoint=function zoomOnPoint(visibleRange,val,zoomTimes,zoomLimit){var left=val-visibleRange.minValue,right=visibleRange.maxValue-val;return{min:Math.round((val-left/zoomTimes*(zoomTimes-1))*zoomLimit)/zoomLimit,max:Math.round((val+right/zoomTimes*(zoomTimes-1))*zoomLimit)/zoomLimit}};var InputDbTapZoom=function(_Base){function InputDbTapZoom(){var _this;_this=_Base.call(this)||this;var input=_this;input.controlArr=[{nativeInteraction:["fc-dbclick"],callback:input.zoom.bind(input),component:input}];return _this}(0,_inheritsLoose2.default)(InputDbTapZoom,_Base);var _proto=InputDbTapZoom.prototype;_proto.getName=function getName(){return"dbTapZoom"};_proto.configure=function configure(){_Base.prototype.configure.call(this);this.enable()};_proto.setControl=function setControl(){var input=this,controlArr=input.controlArr,manager=input.getLinkedParent();manager.releaseControl(controlArr);if(input.isEnabled()){manager.getControl(controlArr)}};_proto.zoom=function zoom(event){var input=this,chart=input.getFromEnv("chart"),coord=(0,_lib.getMouseCoordinate)(chart.getLinkedItem("container"),event,chart),axis,val,newRange,visiblerange,axisZoomed,config=input.config,hookFn=config.hookFn,eventArgs={},startX,endX,startY,endY,level,zoomed=false,zoomLimit=Math.pow(10,config.zoomDecimalLimit)||1;chart.getFromEnv("animationManager").setAnimationState("zoom");input.getFromEnv("axesObArr").forEach((function(axisOb){axis=axisOb.axis;val=axis.getValue(axisOb.isY?coord.chartY:coord.chartX);visiblerange=axis.getVisibleConfig();newRange=zoomOnPoint(visiblerange,val,config.stepzoom,zoomLimit);if(axisOb.isY){startY=newRange.min;endY=newRange.max}else{startX=newRange.min;endX=newRange.max;eventArgs=input.constructor._getZoomInfo(startX,endX,axis)}if(axis.getZoom()<=zoomLimit){hookFn&&typeof config.hookFn==="function"&&hookFn(newRange.min,newRange.max);axisZoomed=axis.setVisibleConfig(newRange.min,newRange.max);zoomed=zoomed||axisZoomed;axisOb.stack.push(visiblerange);level=axisOb.stack.length+1}}));if(zoomed){input._raiseZoomEvents("zoomin","zoomedin",Object.assign(eventArgs,{level:level,startX:startX,endX:endX,startY:startY,endY:endY},event.originalEvent))}};return InputDbTapZoom}(_inputBase.default);var _default=exports.default=InputDbTapZoom;