quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 4.53 kB
JavaScript
import{_realTimeConfigure,eiMethods,_stopUpdate,_restartUpdate,_isUpdateActive,feedData,_linearDataParser,_clearChart,_setRTmenu as __setRTmenu}from'./realtime';import{priorityList}from'../../../../fc-core/src/schedular';import CommonAPI from'../../../../fc-charts/src/chart/_internal/commonchartapi';import{stubFN,extend2,defaultGaugePaletteOptions as DefaultGaugePaletteOptions,BLANKSTRING}from'../../../../fc-core/src/lib';import datasetFactory from'../../../../fc-charts/src/factories/singleseries-dataset';import FusionCharts from'../../../../fc-core/src/constructor';import DataStreamer from'./datastreamer';var defaultGaugePaletteOptions=extend2({},DefaultGaugePaletteOptions),math=Math,mathMax=math.max,getDataset=function(a){let b=[];return a.iterateComponents(a=>{'dataset'===a.getType()&&b.push(a)}),b};FusionCharts.addDep(DataStreamer);class GaugeWidget extends CommonAPI{static getName(){return'GaugeBase'}constructor(){super(),this.defaultPaletteOptions=defaultGaugePaletteOptions,this.multiValueGauge=!1,this.drawAnnotations=!0,this.includeColorRangeInLimits=!1,this.isWidget=!0,this._feedAxesRawData=this._feedAxesRawData||stubFN,this._setCategories=this._setCategories||stubFN,this.eiMethods=eiMethods,this.registerFactory('dataset',datasetFactory,['vCanvas']),this.registerFactory('axis',stubFN,['vCanvas'])}getName(){return'GaugeBase'}__setDefaultConfig(){super.__setDefaultConfig();let a=this.config;a.valuefontbold=1,a.useScaleRecursively=!0,a.formatnumberscale=0}parseChartAttr(a){super.parseChartAttr(a),this.config.drawTrendRegion=0}realTimeUpdate(a){var b,c,d,e,f=this,g=f.getChildren(),h=g.dataset,j=a.dataset,k=a.categories&&a.categories.category||[],l=f.config.realTimeConfig=f.config.realTimeConfig||(f.config.realTimeConfig={});if(f.fireChartInstanceEvent('updateDataReceived',a),f.fireEvent('realtimeDataUpdate',a),f.config.cachedArrivedJSON||(f.config.cachedArrivedJSON={}),f.config.cachedArrivedJSON=a,h){for(e=j[0],b=e.data,(d=0,c=b.length);d<c;d++)b[d].label=k[d]&&k[d].label;h[0].maxminFlag&&(l.maxminFlag=h[0].maxminFlag)}}_setData(a,b){var c=BLANKSTRING;(a&&a.toString||a===BLANKSTRING||0===a)&&(c='value='+a.toString()),(b&&b.toString||b===BLANKSTRING)&&(c=c+'&label='+b.toString()),c&&this.feedData(c)}_getData(){var a,b,c,d,e,f=this,g=f.getChildren(),h=f.getDatasets(),k=g.xAxis&&g.xAxis[0]||g.scale,l=[],m=0;if(h){for(a=h.length,b=0;b<a;b++)m=mathMax(m,h[b].components.data.length);for(b=0;b<m;b++)for(e=l[b]=[],e[0]=k.getLabel(b).label,c=1;c<=a;c++)d=h[c-1].components.data[b],e[c]=d&&d.config.setValue;return l}}_checkInvalidSpecificData(){}realTimeDraw(a={}){if(this.config.cachedArrivedJSON){var b,c,d,e,f,g,h=this,j=h.config,k=j.prevData,l=getDataset(h),m=j.cachedArrivedJSON,n=j.realTimeConfig||(j.realTimeConfig={}),o=n.showRTValue,p=[],q=function(a=[]){var b,c,d=a.length,e=[];for(b=0;b<d;++b)c=a[b],e.push(c.value);return[e]};if(h.__rtDrawStartAt=new Date,h.getFromEnv('animationManager').setAnimationState('realTimeUpdate'),l&&l.length){for(f=m.dataset[0].data,p=Object.keys(l[0].config.dataById||l[0].config.idMap||{}),g=p.length,e=0;e<g;e++)m.hasOwnProperty(p[e])&&f.push({value:+m[p[e]],id:p[e]});j.prevData=q(f),b=m.dataset,c=b[0],c.data[0]&&(c.data[0].label=m.categories&&m.categories.category&&m.categories.category[0]&&m.categories.category[0].label),l[0].updateData(c),l[0].maxminFlag&&(n.maxminFlag=l[0].maxminFlag),l[0].asyncDraw(),j.cachedArrivedJSON=void 0,h.rtManageSpace&&h._RTmanageSpace(),h.prepareAttributes&&h.prepareAttributes(),h._preDraw(),o&&h._drawRealTimeValue&&h.asyncRealTimeValueDraw()}j._eventArgs=a,a.prevData=k,h.__realtimeUpdateComplete||(h.__realtimeUpdateComplete=()=>{d=new Date-h.__rtDrawStartAt,n.clear||(j._eventArgs.latency=d,j._eventArgs.updateObject=n.legacyUpdateObj),h.getChildren('dataStreamer')[0].addToEnv('realtimeDrawingLatency',d),h.fireChartInstanceEvent('realTimeUpdateComplete',j._eventArgs)}),h.addJob('realtimeupdatecomplete',h.__realtimeUpdateComplete,priorityList.postRender)}}_setRTmenu(a,b){__setRTmenu.call(this,a,b)}_createLayers(){let a,b,c=this;super._createLayers(),a=c.getChildContainer('belowPlotGroup'),b=c.getChildContainer('axisBottomGroup'),a.insertBefore(b)}_realTimeConfigure(){_realTimeConfigure.call(this)}_stopUpdate(a){_stopUpdate.call(this,a)}_restartUpdate(){_restartUpdate.call(this)}_isUpdateActive(){return _isUpdateActive.call(this)}feedData(a){feedData.call(this,a)}_linearDataParser(a){return _linearDataParser.call(this,a)}_clearChart(a){_clearChart.call(this,a)}}export default GaugeWidget;