UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 7.74 kB
import{UNDEF,UNDERSCORE,isInterActiveEvt}from'../lib';import{triggerEvent,removeListener,getListeners,addListener,raiseWarning,raiseError}from'../event-api';import schedular,{priorityList}from'../schedular';let idCounterStore={},asyncDrawOptions={executionDelay:16},_mapSubFnBackward=(a,b)=>{if(a&&a.hasOwnProperty&&b&&b.call){let c,d,e;for(c in a)if(a.hasOwnProperty(c))if(d=a[c],d instanceof Array)for(e=d.length-1;0<=e;e--)b(d[e],c,e);else b(d,c)}},_mapSubFnForward=(a,b)=>{if(a&&a.hasOwnProperty&&b&&b.call){let c,d,e,f;for(c in a)if(a.hasOwnProperty(c))if(d=a[c],d instanceof Array)for(f=d.length,e=0;e<f;e++)b(d[e],c,e);else b(d,c)}},addAllEventsOnGraphic=function(a,b,c){var d,e;if(b&&b.hasOwnProperty)for(d in b)b.hasOwnProperty(d)&&(e=getListeners(d,c),e&&1<=e.length&&a&&a.on(d,b[d]))},removeAllEventsFromGraphic=function(a,b){var c,d;if(b&&b.hasOwnProperty)for(c in b)b.hasOwnProperty(c)&&(d=getListeners(c,this),d&&1<=d.length&&a&&a.off(c,b[c]))};class ComponentBase{constructor(){let a=this;a.config={},a._jobList={},a._env={},a._extListeners={},a._state={},a._factories=[],a._factoriyNames={},a._graphics={},a.__drawJob=function(){a.updateVisual()},a.__remove=function(){a.getState('removed')&&a._dispose()},a._setRemoveAnim=(b,c)=>{let d=a.getFromEnv('animationManager');d.setAnimation({el:b,component:a,label:c,props:b.__props}),a._setRemoveAnim=(b,c)=>{d.setAnimation({el:b,component:a,label:c,props:b.__props})}},a.__instantRemoveFn=function(b){let c=a.getFromEnv('animationManager');c.removeElement(b,!0),a.__instantRemoveFn=a=>c.removeElement(a,!0)}}configure(a){this.preConfigure(a),this.configureAttributes(a),this.postConfigure(a),this.invokeFactories()}preConfigure(a){this.fireEvent('preconfigure',a)}configureAttributes(){return this}postConfigure(a){this.fireEvent('postconfigure',a)}prepareAttributes(){let a=this;a.fireEvent('beforeattributeprepared'),a.allocatePosition&&a.allocatePosition(),a._mapChildren(a=>{a.prepareAttributes&&a.prepareAttributes()}),a.fireEvent('attributeprepared')}setDefaults(){this.__setDefaultConfig(),this._mapChildren(a=>a.setDefaults())}__setDefaultConfig(){return this}setData(a,b=!1){let c,d=this,e=d.getLinkedParent();d.asyncDraw(),b||this.setDefaults(),d.configure&&d.configure(a),c=d.getState('change-info'),c&&c.hasNoExternalEffect||e&&e.childChange&&e.childChange(c,d.getId())}getName(){return'generic'}getType(){return'generic'}getId(){return this._id||this.setId(),this._id}setId(a){var b;a===UNDEF&&(b=this.getType()+UNDERSCORE+this.getName(),!idCounterStore[b]&&(idCounterStore[b]=1),a=b+UNDERSCORE+idCounterStore[b],idCounterStore[b]+=1),this._id=a}iterateComponents(a){let b=(c,d,e)=>{let f=a(c,d,e);!1!==f&&c._mapChildren&&c._mapChildren(b)};this._mapChildren(b)}getFromEnv(a){return a?this._env[a]:this._env}addToEnv(a,b){a&&(this._env[a]=b)}deleteFromEnv(a){delete this._env[a]}_updateParentEnv(){var a,b,c,d,e=this.getLinkedParent(),f=this._env;if(e){if(a=e.getFromEnv(),b=function(){},b.prototype=a,b.prototype.constructor=b,c=new b,f)for(d in f)f.hasOwnProperty(d)&&(c[d]=f[d]);this._env=c,this._mapChildren(function(a){a._updateParentEnv&&a._updateParentEnv()})}}addJob(a,b,c,d){let e=this;e._jobList[a]=e._jobList[a]?schedular.updateJob(e._jobList[a],b,c,d):schedular.addJob(b,c,d)}removeJob(a){let b=this._jobList[a];b&&(schedular.removeJob(b),delete this._jobList[a])}removeAllJobs(){let a,b=this._jobList;for(a in b)b.hasOwnProperty(a)&&(schedular.removeJob(b[a]),delete b[name])}asyncDraw(){var a=this;a.addJob('draw',a.__drawJob,priorityList&&priorityList.draw,asyncDrawOptions)}syncDraw(){var a=this;a.fireEvent('predraw'),a.removeJob('draw'),a.getState('removed')?a.removingDraw():a.draw&&a.draw(),a.addExtEventListener('animationComplete',a.__remove,a.getFromEnv('animationManager')),a.childrenSyncDraw(),a.setState('dirty',!1),a.setState('parentChanged',!1),a.addJob('draw-complete',function(){a.fireEvent('drawn')},priorityList.instant)}updateVisual(){let a=this;a.fireEvent('beforevisualupdate'),a.removeJob('visualupdate'),a.manageSpace&&a.manageSpace(),a.prepareAttributes(),a.syncDraw(),a.fireEvent('visualupdated')}childrenSyncDraw(){this._mapChildren(a=>{a&&a.draw&&a.syncDraw()})}addEventListener(a,b,c){var d,f=this;return!!(a&&a.toLowerCase&&(a=a.toLowerCase(),addListener(a,b,f,c)))&&(isInterActiveEvt(a)&&(d=getListeners(a,f),d&&1===d.length)?(f._middleListeners||(f._middleListeners={}),f._middleListeners[a]||(f._middleListeners[a]=function(b){f.fireEvent(a,UNDEF,UNDEF,UNDEF,b)}),!0):b)}removeEventListener(a,b){var c,d=this;if(a&&a.toLowerCase&&(a=a.toLowerCase(),removeListener(a,b,d),isInterActiveEvt(a)&&(c=getListeners(a,d),c&&0===c.length&&d._middleListeners&&d._middleListeners[a])))return!0}fireEvent(a,b,c,d,e){triggerEvent(a,this,b,e,c,d)}showWarning(a,b,c,d){raiseWarning(this.getFromEnv('chartInstance'),a,b,c,d)}showError(a,b,c,d){raiseError(this.getFromEnv('chartInstance'),a,b,c,d)}addExtEventListener(a,b,c){var d=this;return!!(c&&c.addEventListener&&c.addEventListener(a,b))&&(d._extListeners[a]||(d._extListeners[a]=[]),d._extListeners[a].push({fn:b,component:c}),b)}removeExtEventListener(a,b,c){var d,e,f,g=this;if(c&&c.addEventListener&&g._extListeners&&g._extListeners[a])for(f=g._extListeners[a],e=f.length,d=e-1;0<=d;d-=1)if(f[d]&&f[d].fn===b&&f[d].component===c)return c.removeEventListener(a,b),void f.splice(d,1)}_setLinkedParent(a){let b=this._linkedParent;this._linkedParent=a,b!==a&&(this.setState('parentChanged',!0),b&&this.fireEvent('parentdetached',{oldParent:b}),a&&this.fireEvent('parentAttached',{newParent:a})),this._updateParentEnv&&this._updateParentEnv()}getLinkedParent(){return this._linkedParent}setLinkedItem(a,b){this.linkedItems||(this.linkedItems={}),(a!==UNDEF||b!==UNDEF)&&(this.linkedItems[a]=b)}getLinkedItem(a){if(this.linkedItems)return a===UNDEF?this.linkedItems:this.linkedItems[a]}removeLinkedItem(a){this.linkedItems&&this.linkedItems[a]&&delete this.linkedItems[a]}_detachChild(a){var b,c=a&&a.getId(),d=this;return c===UNDEF?UNDEF:(d._searchChildren(c,function(a,c,e){e&&e.constructor===Array?b=e.splice(c,1)[0]:(b=e[a],delete e[a]),b._setLinkedParent(UNDEF),d.fireEvent('childdetached',{detachedChild:b})}),b)}_mapChildren(a,b){b?_mapSubFnBackward(this.getChildren(),a):_mapSubFnForward(this.getChildren(),a)}_dispose(){var a,b,c,d,e=this;if(e&&e!==window&&!0!==e._disposing){if(e._disposing=!0,e.fireEvent('beforeremove'),a=e.getLinkedParent(),a&&a._detachChild&&!a._disposing&&a._detachChild(e),e._extListeners)for(c in e._extListeners)for(d=e._extListeners[c],b=d.length-1;0<=b;b--)d[b].component&&d[b].component.addEventListener&&d[b].component.removeEventListener(c,d[b].fn);return e.removeAllJobs(),!0}}remove(a){var b,c=this,d=a&&a.instant;c.setState('removed',!0),b=c.getChildren(),b&&c._mapChildren(b=>{b&&b.remove&&b.remove(a)},!0),d&&c._dispose()}setState(a,b){this._state[a]=b}getState(a){return this._state&&this._state[a]}registerFactory(a,b,c){if(this._factoriyNames[a])for(let b=0,c=this._factories.length,d=!1;b<c&&!d;b+=1)this._factories[b].name===a&&(this._factories.splice(b,1),d=!0);this._factories.push({name:a,factory:b,dep:c}),this._factoriyNames[a]=!0}deregisterFactory(a){if(this._factoriyNames[a])return delete this._factoriyNames[a],this._factories.splice(this._factories.findIndex(b=>b.name===a),1)[0].factory}invokeFactories(){let a,b=this,c=b._factoriyNames,d={},e=b._factories,f=e.length+1,g=e=>{let f;e.dep&&e.dep.length&&e.dep.forEach(a=>{f=c[a]&&!d[a]}),f?a.push(e):(e.factory(b),d[e.name]=!0)};for(;e.length&&e.length<f;)a=[],e.forEach(g),f=e.length,e=a;e.length&&e.forEach(a=>a.factory(b)),this.fireEvent('factoriesinvoked',{})}}export default ComponentBase;export{removeAllEventsFromGraphic,addAllEventsOnGraphic,_mapSubFnForward};