UNPKG

@fusioncharts/core

Version:

JavaScript Data Visualisation Library

1 lines 4.64 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 _tool=_interopRequireDefault(require("../tool"));var _dependencyManager=require("../../../dependency-manager");var _lib=require("../../../lib");var _schedular=require("../../../schedular");var DRAG_ANCHOR_TIMEOUT=300;var R=(0,_dependencyManager.getDep)("redraphael","plugin"),START="start";var ScrollButton=function(_Tool){function ScrollButton(){var _this;_this=_Tool.call(this)||this;_this._evtHandlers={};return _this}(0,_inheritsLoose2.default)(ScrollButton,_Tool);var _proto=ScrollButton.prototype;_proto.configureAttributes=function configureAttributes(options){if(options===void 0){options={}}var selfConfig=this.config;selfConfig.type=options.type;selfConfig.style={button:Object.assign({},{fill:_lib.TRACKER_FILL,stroke:"none"},options.style.button),arrow:Object.assign({},{fill:options.useLegendScrollGradient?options.color:R.tintshade(options.color,-.4).rgba,stroke:"none"},options.style.arrow)}};_proto.attachEventHandlers=function attachEventHandlers(){var scrollButton=this,selfConfig=scrollButton.config,dragAnchorTimer,dragStarted,scrollbar=scrollButton.getLinkedParent(),scrollbarConfig=scrollbar.config,scrollAnchor=scrollbar.getChildren("scrollAnchor")[0],boundaryCheckandDraw=function boundaryCheckandDraw(){if(scrollbarConfig.scrollPosition>=1){scrollbarConfig.scrollPosition=1}else if(scrollbarConfig.scrollPosition<=0||isNaN(scrollbarConfig.scrollPosition)){scrollbarConfig.scrollPosition=0}scrollAnchor.asyncDraw();typeof scrollbarConfig.evt.scroll==="function"&&scrollbarConfig.evt.scroll(scrollbarConfig.scrollPosition)},_dragJob=function dragJob(){dragStarted=true;if(selfConfig.type===START){scrollbarConfig.scrollPosition-=.01}else{scrollbarConfig.scrollPosition+=.01}boundaryCheckandDraw();scrollButton.addJob("dragScrollAnchor",_dragJob,_schedular.priorityList.draw)};scrollButton.addEventListener("fc-mousedown",scrollButton._evtHandlers.mousedown||(scrollButton._evtHandlers.mousedown=function(){dragAnchorTimer=setTimeout((function onDragAnchorTimeout(){scrollButton.addJob("dragScrollAnchor",_dragJob,_schedular.priorityList.draw)}),DRAG_ANCHOR_TIMEOUT)}));scrollButton.addEventListener("fc-mouseup",scrollButton._evtHandlers.mouseup||(scrollButton._evtHandlers.mouseup=function(){clearTimeout(dragAnchorTimer);scrollButton.removeJob("dragScrollAnchor");if(!dragStarted){if(selfConfig.type===START){scrollbarConfig.scrollPosition-=.1}else{scrollbarConfig.scrollPosition+=.1}boundaryCheckandDraw()}dragStarted=false}));scrollButton.addEventListener("fc-mouseout",(function onScrollButtonMouseOut(){if(dragStarted){scrollButton._evtHandlers.mouseup()}}))};_proto.draw=function draw(){var scrollButton=this,selfConfig=scrollButton.config,scrollbar=this.getLinkedParent(),scrollbarConfig=scrollbar.config,containerDetails={id:"scrollbarGroup",label:"scrollbarGroup",isParent:true},isHorizontal=scrollbarConfig.isHorizontal,x=scrollbarConfig.x+.5,y=scrollbarConfig.y+scrollbarConfig.padding+.5,width=scrollbarConfig.width-1<1?1:scrollbarConfig.width-1,height=scrollbarConfig.height-1<1?1:scrollbarConfig.height-1,button=isHorizontal?Math.min(height,width*.5):Math.min(width,height*.5),startArrowPath=isHorizontal?(0,_lib.polyPathToPath)([3,x+button*.5,y+height*.5,button*.25,180]):(0,_lib.polyPathToPath)([3,x+width*.5,y+button*.5,button*.25,90]),endArrowPath=isHorizontal?(0,_lib.polyPathToPath)([3,x+width-button*.5,y+button*.5,button*.25,0]):(0,_lib.polyPathToPath)([3,x+width*.5,y+height-button*.5,button*.25,-90]);scrollButton.addGraphicalElement({el:"rect",attr:{x:selfConfig.type==="start"?x:isHorizontal?x+width-button:x,y:selfConfig.type==="start"?y:isHorizontal?y:y+height-button,width:selfConfig.type==="start"?isHorizontal?button:width:isHorizontal?button:width,height:selfConfig.type==="start"?isHorizontal?height:button:isHorizontal?height:button,opacity:selfConfig.style.button.opacity},css:selfConfig.style.button,container:containerDetails,component:scrollButton,label:"scrollbar"+selfConfig.type+"ButtonRect",id:"scrollbar"+selfConfig.type+"ButtonRect"});scrollButton.addGraphicalElement({el:"path",attr:{path:selfConfig.type==="start"?startArrowPath:endArrowPath,opacity:selfConfig.style.arrow.opacity},css:selfConfig.style.arrow,container:containerDetails,component:scrollButton,label:"scrollbar"+selfConfig.type+"ButtonPath",id:"scrollbar"+selfConfig.type+"ButtonPath"})};return ScrollButton}(_tool.default);var _default=exports.default=ScrollButton;