UNPKG

@fusioncharts/core

Version:

JavaScript Data Visualisation Library

1 lines 15 kB
"use strict";var _extends=require("@babel/runtime/helpers/extends");exports.__esModule=true;exports.removeAllEventsFromGraphic=exports.default=exports.addAllEventsOnGraphic=exports._mapSubFnForward=void 0;var _lib=require("../lib");var _eventApi=require("../event-api");var _schedular=_interopRequireWildcard(require("../schedular"));function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f=_extends({},null,{default:e});if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f)}for(var _t in e)"default"!==_t&&{}.hasOwnProperty.call(e,_t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,_t))&&(i.get||i.set)?o(f,_t,i):f[_t]=e[_t]);return f})(e,t)}var _childSyncDraw=function _childSyncDraw(child){child&&child.draw&&child.syncDraw()},_setChildDefaults=function _setChildDefaults(child){return child.setDefaults()},_childPrepareAttributes=function _childPrepareAttributes(child){child.prepareAttributes&&child.prepareAttributes()};var idCounterStore={},asyncDrawOptions={executionDelay:16},_mapSubFnBackward=function _mapSubFnBackward(sub,callback){if(sub&&sub.hasOwnProperty&&callback&&callback.call){var key,child,i;for(key in sub){if(sub.hasOwnProperty(key)){child=sub[key];if(child instanceof Array){for(i=child.length-1;i>=0;i--){callback(child[i],key,i)}}else{callback(child,key)}}}}},_mapSubFnForward=exports._mapSubFnForward=function _mapSubFnForward(sub,callback){if(sub&&sub.hasOwnProperty&&callback&&callback.call){var key,child,i,length;for(key in sub){if(sub.hasOwnProperty(key)){child=sub[key];if(child instanceof Array){length=child.length;for(i=0;i<length;i++){callback(child[i],key,i)}}else{callback(child,key)}}}}},addAllEventsOnGraphic=exports.addAllEventsOnGraphic=function addAllEventsOnGraphic(graphicElement,listenersObj,component){var eventType,listeners;if(listenersObj&&listenersObj.hasOwnProperty){for(eventType in listenersObj){if(listenersObj.hasOwnProperty(eventType)){listeners=(0,_eventApi.getListeners)(eventType,component);if(listeners&&listeners.length>=1){graphicElement&&graphicElement.on(eventType,listenersObj[eventType])}}}}},removeAllEventsFromGraphic=exports.removeAllEventsFromGraphic=function removeAllEventsFromGraphic(graphicElement,listenersObj){var eventType,listeners;if(listenersObj&&listenersObj.hasOwnProperty){for(eventType in listenersObj){if(listenersObj.hasOwnProperty(eventType)){listeners=(0,_eventApi.getListeners)(eventType,this);if(listeners&&listeners.length>=1){graphicElement&&graphicElement.off(eventType,listenersObj[eventType])}}}}};var ComponentBase=function(){function ComponentBase(){var component=this;component.config={};component._jobList={};component._env={};component._extListeners={};component._state={};component._factories=[];component._factoriyNames={};component._graphics={};component.__drawJob=function(){component.updateVisual()};component.computeFontSize=_lib.computeFontSize.bind(component);component.__remove=function(){component.getState("removed")&&component._dispose()};component._setRemoveAnim=function(el,label){var animationManager=component.getFromEnv("animationManager");animationManager.setAnimation({el:el,component:component,label:label,props:el.__props});component._setRemoveAnim=function(_el,_label){animationManager.setAnimation({el:_el,component:component,label:_label,props:_el.__props})}};component.__instantRemoveFn=function(el){var animationManager=component.getFromEnv("animationManager");animationManager.removeElement(el,true);component.__instantRemoveFn=function(_el){return animationManager.removeElement(_el,true)}}}var _proto=ComponentBase.prototype;_proto.configure=function configure(dataObj){this.preConfigure(dataObj);this.configureAttributes(dataObj);this.postConfigure(dataObj);this.invokeFactories()};_proto.preConfigure=function preConfigure(dataObj){this.fireEvent("preconfigure",dataObj)};_proto.configureAttributes=function configureAttributes(){return this};_proto.postConfigure=function postConfigure(dataObj){this.fireEvent("postconfigure",dataObj)};_proto.prepareAttributes=function prepareAttributes(){var component=this;component.fireEvent("beforeattributeprepared");component.allocatePosition&&component.allocatePosition();component._mapChildren(_childPrepareAttributes);component.fireEvent("attributeprepared")};_proto.setDefaults=function setDefaults(){this.__setDefaultConfig();this._mapChildren(_setChildDefaults)};_proto.__setDefaultConfig=function __setDefaultConfig(){return this};_proto.setData=function setData(config,noOverWrite){if(noOverWrite===void 0){noOverWrite=false}var component=this,changeInfo,parent=component.getLinkedParent();component.asyncDraw();!noOverWrite&&this.setDefaults();component.configure&&component.configure(config);changeInfo=component.getState("change-info");changeInfo&&changeInfo.hasNoExternalEffect||parent&&parent.childChange&&parent.childChange(changeInfo,component.getId())};_proto.getName=function getName(){return"generic"};_proto.getType=function getType(){return"generic"};_proto.getComponentVersion=function getComponentVersion(){return this._version};_proto.getId=function getId(){if(!this._id){this.setId()}return this._id};_proto.setId=function setId(_id){var key,id=_id;if(id===_lib.UNDEF){key=this.getType()+_lib.UNDERSCORE+this.getName();if(!idCounterStore[key]){idCounterStore[key]=1}id=key+_lib.UNDERSCORE+idCounterStore[key];idCounterStore[key]+=1}this._id=id};_proto.iterateComponents=function iterateComponents(callback){var _childIteratorCallback=function childIteratorCallback(child,key,index){if(callback(child,key,index)!==false&&child._mapChildren){child._mapChildren(_childIteratorCallback)}};this._mapChildren(_childIteratorCallback)};_proto.getFromEnv=function getFromEnv(name){return name?this._env[name]:this._env};_proto.addToEnv=function addToEnv(name,value){if(name){this._env[name]=value}};_proto.deleteFromEnv=function deleteFromEnv(name){delete this._env[name]};_proto._updateParentEnv=function _updateParentEnv(){var parent=this.getLinkedParent(),pEnv,EnvConstractor,oldEnv=this._env,env,key;if(parent){pEnv=parent.getFromEnv();EnvConstractor=function EnvConstractor(){};EnvConstractor.prototype=pEnv;EnvConstractor.prototype.constructor=EnvConstractor;env=new EnvConstractor;if(oldEnv){for(key in oldEnv){if(oldEnv.hasOwnProperty(key)){env[key]=oldEnv[key]}}}this._env=env;this._mapChildren((function(child){child._updateParentEnv&&child._updateParentEnv()}))}};_proto.addJob=function addJob(name,job,priority,options){var component=this;if(component._jobList[name]){component._jobList[name]=_schedular.default.updateJob(component._jobList[name],job,priority,options)}else{component._jobList[name]=_schedular.default.addJob(job,priority,options)}};_proto.removeJob=function removeJob(name){var jobId=this._jobList[name];if(jobId){_schedular.default.removeJob(jobId);delete this._jobList[name]}};_proto.removeAllJobs=function removeAllJobs(){var jobName,jobList=this._jobList;for(jobName in jobList){if(jobList.hasOwnProperty(jobName)){_schedular.default.removeJob(jobList[jobName]);delete jobList[name]}}};_proto.asyncDraw=function asyncDraw(){var component=this;component.addJob("draw",component.__drawJob,_schedular.priorityList&&_schedular.priorityList.draw,asyncDrawOptions)};_proto.syncDraw=function syncDraw(){var component=this;component.fireEvent("predraw");component.removeJob("draw");component.getState("removed")?component.removingDraw():component.draw&&component.draw();component.addExtEventListener("animationComplete",component.__remove,component.getFromEnv("animationManager"));component.childrenSyncDraw();component.setState("dirty",false);component.setState("parentChanged",false);component.addJob("draw-complete",(function(){component.fireEvent("drawn")}),_schedular.priorityList.instant)};_proto.updateVisual=function updateVisual(){var component=this;component.fireEvent("beforevisualupdate");component.removeJob("visualupdate");component.manageSpace&&component.manageSpace();component.prepareAttributes();component.syncDraw();component.fireEvent("visualupdated")};_proto.childrenSyncDraw=function childrenSyncDraw(){this._mapChildren(_childSyncDraw)};_proto.addEventListener=function addEventListener(_eventType,callback,options){var component=this,listeners,eventType=_eventType;if(eventType&&eventType.toLowerCase){eventType=eventType.toLowerCase();if((0,_eventApi.addListener)(eventType,callback,component,options)){if((0,_lib.isInterActiveEvt)(eventType)){listeners=(0,_eventApi.getListeners)(eventType,component);if(listeners&&listeners.length===1){if(!component._middleListeners){component._middleListeners={}}if(!component._middleListeners[eventType]){component._middleListeners[eventType]=function(e){component.fireEvent(eventType,_lib.UNDEF,_lib.UNDEF,_lib.UNDEF,e)}}return true}}return callback}}return false};_proto.removeEventListener=function removeEventListener(_eventType,callback){var component=this,listeners,eventType=_eventType;if(eventType&&eventType.toLowerCase){eventType=eventType.toLowerCase();(0,_eventApi.removeListener)(eventType,callback,component);if((0,_lib.isInterActiveEvt)(eventType)){listeners=(0,_eventApi.getListeners)(eventType,component);if(listeners&&listeners.length===0&&component._middleListeners&&component._middleListeners[eventType]){return true}}}};_proto.fireEvent=function fireEvent(name,data,defaultFn,cancelledFn,originalEvent){(0,_eventApi.triggerEvent)(name,this,data,originalEvent,defaultFn,cancelledFn)};_proto.showWarning=function showWarning(id,nature,source,message){(0,_eventApi.raiseWarning)(this.getFromEnv("chartInstance"),id,nature,source,message)};_proto.showError=function showError(id,nature,source,message){(0,_eventApi.raiseError)(this.getFromEnv("chartInstance"),id,nature,source,message)};_proto.addExtEventListener=function addExtEventListener(eventType,callback,extComponent){var component=this;if(extComponent&&extComponent.addEventListener){if(extComponent.addEventListener(eventType,callback)){if(!component._extListeners[eventType]){component._extListeners[eventType]=[]}component._extListeners[eventType].push({fn:callback,component:extComponent});return callback}}return false};_proto.removeExtEventListener=function removeExtEventListener(eventType,callback,extComponent){var component=this,i,l,listenersArr;if(extComponent&&extComponent.addEventListener&&component._extListeners&&component._extListeners[eventType]){listenersArr=component._extListeners[eventType];l=listenersArr.length;for(i=l-1;i>=0;i-=1){if(listenersArr[i]&&listenersArr[i].fn===callback&&listenersArr[i].component===extComponent){extComponent.removeEventListener(eventType,callback);listenersArr.splice(i,1);return}}}};_proto._setLinkedParent=function _setLinkedParent(parent){var oldParent=this._linkedParent;this._linkedParent=parent;if(oldParent&&oldParent!==parent){this.setState("parentChanged",true);this.fireEvent("parentdetached",{oldParent:oldParent});if(parent){this.fireEvent("parentAttached",{newParent:parent})}}this._updateParentEnv&&this._updateParentEnv()};_proto.getLinkedParent=function getLinkedParent(){return this._linkedParent};_proto.setLinkedItem=function setLinkedItem(itemName,item){if(!this.linkedItems){this.linkedItems={}}if(itemName!==_lib.UNDEF||item!==_lib.UNDEF){this.linkedItems[itemName]=item}};_proto.getLinkedItem=function getLinkedItem(itemName){if(this.linkedItems){return itemName!==_lib.UNDEF?this.linkedItems[itemName]:this.linkedItems}};_proto.removeLinkedItem=function removeLinkedItem(itemName){if(this.linkedItems){this.linkedItems[itemName]&&delete this.linkedItems[itemName]}};_proto._detachChild=function _detachChild(child){var returnChild,id=child&&child.getId(),component=this;if(id===_lib.UNDEF){return _lib.UNDEF}component._searchChildren(id,(function(foundChild,idx,children){if(children&&children.constructor===Array){returnChild=children.splice(idx,1)[0]}else{returnChild=children[foundChild];delete children[foundChild]}returnChild._setLinkedParent(_lib.UNDEF);component.fireEvent("childdetached",{detachedChild:returnChild})}));return returnChild};_proto._mapChildren=function _mapChildren(callback,backWord){if(backWord){_mapSubFnBackward(this.getChildren(),callback)}else{_mapSubFnForward(this.getChildren(),callback)}};_proto._dispose=function _dispose(){var component=this,parent,i,eventType,listenersArr;if(component&&component!==window&&component._disposing!==true){component._disposing=true;component.fireEvent("beforeremove");parent=component.getLinkedParent();if(parent&&parent._detachChild&&!parent._disposing){parent._detachChild(component)}if(component._extListeners){for(eventType in component._extListeners){listenersArr=component._extListeners[eventType];for(i=listenersArr.length-1;i>=0;i--){if(listenersArr[i].component&&listenersArr[i].component.addEventListener){listenersArr[i].component.removeEventListener(eventType,listenersArr[i].fn)}}}}component.removeAllJobs();return true}};_proto.remove=function remove(config){var component=this;component.setState("removed",true);if(component.getChildren()){component._mapChildren((function(child){child&&child.remove&&child.remove(config)}),true)}if(config&&config.instant){component._dispose()}};_proto.setState=function setState(name,value){this._state[name]=value};_proto.getState=function getState(name){return this._state&&this._state[name]};_proto.registerFactory=function registerFactory(name,callback,depedentOn){var factoryObj={name:name,factory:callback,dep:depedentOn};if(this._factoriyNames[name]){for(var i=0,l=this._factories.length,found=false;i<l&&!found;i+=1){if(this._factories[i].name===name){this._factories.splice(i,1);found=true}}}this._factories.push(factoryObj);this._factoriyNames[name]=true};_proto.deregisterFactory=function deregisterFactory(name){if(this._factoriyNames[name]){delete this._factoriyNames[name];return this._factories.splice(this._factories.findIndex((function(factoryObj){return factoryObj.name===name})),1)[0].factory}};_proto.invokeFactories=function invokeFactories(){var component=this,_factoriyNames=component._factoriyNames,executedList={},factories=component._factories,pendingFactories,lastNumPendingCount=factories.length+1,factoryExecutor=function factoryExecutor(factoryObj){var hasPendingDep;if(factoryObj.dep&&factoryObj.dep.length){factoryObj.dep.forEach((function(dep){hasPendingDep=_factoriyNames[dep]&&!executedList[dep]}))}if(!hasPendingDep){factoryObj.factory(component);executedList[factoryObj.name]=true}else{pendingFactories.push(factoryObj)}};while(factories.length&&factories.length<lastNumPendingCount){pendingFactories=[];factories.forEach(factoryExecutor);lastNumPendingCount=factories.length;factories=pendingFactories}if(factories.length){factories.forEach((function(factoryObj){return factoryObj.factory(component)}))}this.fireEvent("factoriesinvoked",{})};return ComponentBase}();var _default=exports.default=ComponentBase;