@fusioncharts/core
Version:
JavaScript Data Visualisation Library
1 lines • 6.47 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("../component-interface");var _domEvent=_interopRequireDefault(require("../dom-event"));var _lib=require("../lib");var ENTER_CODE=13,ESCAPE_CODE=27;var linkedAxis;function getCharCode(e){return typeof e.which==="number"?e.which:e.keyCode}function onMouseUp(e){var ele=e.target;if(ele.justFocussed){ele.justFocussed=false;if(!_lib.hasTouch){ele.select()}}}function doAxisUpdate(value,oldvalue,isMax){var success=false,axisParent=this.config.linkedAxis.getLinkedParent();if(value===oldvalue+""){return}if(isMax){success=axisParent.changeUpperLimits&&axisParent.changeUpperLimits(Number(value))}else{success=axisParent.changeLowerLimits&&axisParent.changeLowerLimits(Number(value))}return success}function onFocus(e){var ele=e.target,styleObj={opacity:1,filter:"alpha(opacity=100)",color:(0,_lib.rgbaToHex)(ele.axisLabel.attr("fill"))},item;for(item in styleObj){ele.style[item]=styleObj[item]}ele.value=ele.dataValue;ele.justFocussed=true;ele.hasFocus=true;ele.axisLabel&&ele.axisLabel.hide()}function onBlur(e){var ele=e.target,newValue=ele.value,oldValue=ele.oldValue,isMaxLabel=ele.isMaxLabel;doAxisUpdate.call(this,newValue,oldValue,isMaxLabel);ele.style.opacity=0;ele.style.filter="alpha(opacity=0)";ele.axisLabel&&ele.axisLabel.show();if(_lib.isIE){document.getElementsByTagName("body")[0].focus&&document.getElementsByTagName("body")[0].focus()}ele.justFocussed=false;ele.hasFocus=false}function onKeyUp(e){var ele=e.target,keyCode=getCharCode(e.originalEvent),newValue=ele.value,oldValue=ele.oldValue,isMaxLabel=ele.isMaxLabel,success;if(keyCode===ENTER_CODE){success=doAxisUpdate.call(this,newValue,oldValue,isMaxLabel);if(success===false){ele.style.color="#dd0000"}else{_domEvent.default.fire(ele,"blur",e)}}else if(keyCode===ESCAPE_CODE){ele.value=oldValue;_domEvent.default.fire(ele,"blur",e)}}function defaultHandler(inputElement){return function(e){if(inputElement.parentNode){_domEvent.default.fire(inputElement,"blur",e)}}}function defaultIEHandler(inputElement){return function(e){if(e.target!==inputElement&&inputElement.hasFocus){_domEvent.default.fire(inputElement,"blur",e)}}}function destroyHandler(inputElement,defaultAction){_domEvent.default.unlisten(this.config.linkedAxis.getLinkedParent(),"defaultprevented",defaultAction);inputElement.parentNode.removeChild(inputElement)}function destroyIEHandler(inputElement,defaultAction){return function(){_domEvent.default.unlisten(linkedAxis.getLinkedParent().getLinkedItem("container"),"mousedown",defaultAction);inputElement.parentNode.removeChild(inputElement)}}var LimitUpdater=function(_ComponentInterface){function LimitUpdater(){return _ComponentInterface.apply(this,arguments)||this}(0,_inheritsLoose2.default)(LimitUpdater,_ComponentInterface);var _proto=LimitUpdater.prototype;_proto.configureAttributes=function configureAttributes(){this.config.linkedAxis=this.getLinkedParent();linkedAxis=this.config.linkedAxis;this.config.onKeyUp=onKeyUp.bind(this);this.config.onBlur=onBlur.bind(this);this.config.onFocus=onFocus.bind(this);this.config.onMouseUp=onMouseUp.bind(this)};_proto.getType=function getType(){return"helper"};_proto.getName=function getName(){return"limitUpdater"};_proto.draw=function draw(){var limitUpdater=this,chartConf=limitUpdater.getFromEnv("chartConfig"),axis=limitUpdater.config.linkedAxis,extremeLabels=axis.getAxisConfig("extremeLabels"),axisLimits=axis.getLimit(),chartContainer=limitUpdater.getFromEnv("chart-container"),chartCanvasStyle=limitUpdater.getFromEnv("style").inCanvasStyle,inputStyle=(0,_lib.extend2)({outline:"none","-webkit-appearance":"none",filter:"alpha(opacity=0)",position:"absolute",background:"transparent",border:"1px solid #cccccc",textAlign:"right",top:0,left:0,width:50,zIndex:20,opacity:0,borderRadius:0,display:"block"},chartCanvasStyle),labelObj={max:{element:extremeLabels.lastLabel.graphic,value:axisLimits.max},min:{element:extremeLabels.firstLabel.graphic,value:axisLimits.min}},inputElement,inputElementName,labelElement,key,styleKey,labelBox,isMaxLabel,labelValue,closedDefaultHandler,inputWidth,inputLeft,closedDefaultIEHandler;inputStyle.color=(0,_lib.hashify)(inputStyle.color);inputStyle.fontSize=inputStyle.fontSize+"px";for(key in labelObj){if(labelObj.hasOwnProperty(key)){labelElement=labelObj[key].element;labelBox=labelElement&&labelElement.getBBox();labelValue=labelObj[key].value;isMaxLabel=key==="max";inputElementName=key+"Input";inputElement=limitUpdater.getGraphicalElement(inputElementName);if(!(labelBox&&labelElement)){if(inputElement){inputElement.style.display="none"}continue}if(!inputElement){inputElement=limitUpdater.addGraphicalElement(inputElementName,(0,_lib.createElement)("input",{type:"text",value:labelValue,id:"fc-updater-"+key},chartContainer))}_domEvent.default.listen(inputElement,["focus","mouseup","blur","keyup"],[this.config.onFocus,this.config.onMouseUp,this.config.onBlur,this.config.onKeyUp]);if(_lib.hasSVG){_domEvent.default.listen(chartContainer,"defaultprevented",closedDefaultHandler=defaultHandler(inputElement));_domEvent.default.listen(chartContainer,"destroy",destroyHandler.bind(this,inputElement,closedDefaultHandler))}else{_domEvent.default.listen(chartContainer,"mousedown",closedDefaultIEHandler=defaultIEHandler(inputElement));_domEvent.default.listen(chartContainer,"destroy",destroyIEHandler(inputElement,closedDefaultIEHandler))}inputWidth=labelBox.x+labelBox.width-chartConf.marginLeft;inputLeft=chartConf.marginLeft;inputStyle.top=labelBox.y+"px";inputStyle.left=inputLeft+"px";inputStyle.width=inputWidth+"px";for(styleKey in inputStyle){if(inputStyle.hasOwnProperty(styleKey)){inputElement.style[styleKey]=inputStyle[styleKey]}}inputElement.dataValue=labelValue;inputElement.value=labelValue;inputElement.oldValue=labelValue;inputElement.name=labelValue||"";inputElement.axisLabel=labelElement;inputElement.isMaxLabel=isMaxLabel}}};_proto.removingDraw=function removingDraw(){var graphics=this.getGraphicalElement(),key,element;for(key in graphics){if(graphics.hasOwnProperty(key)){element=graphics[key];element&&element.parentNode&&element.parentNode.removeChild(element);delete graphics[key]}}};return LimitUpdater}(_componentInterface.ComponentInterface);var _default=exports.default=LimitUpdater;
;