UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 11.8 kB
import{BLANKSTRING,COMMASPACE,regex,HASHSTRING,pluck,pluckNumber,parseUnsafeString}from'../../../../fc-core/src/lib';import{priorityList}from'../../../../fc-core/src/schedular';let UNDEF,NORMALSTRING='normal',math=Math,mathMax=math.max,dropHash=regex.dropHash,PXSTRING='px',feedIndex=0,count=0,getDataset=function(a){let b=[];return a.iterateComponents(a=>{'dataset'===a.getType()&&b.push(a)}),b},_realTimeConfigure=function(){var a,b,c,d=this,e=d.config,f=e.realTimeConfig||(e.realTimeConfig={}),g=d.getFromEnv('dataSource'),h=g.chart,i=pluckNumber(h.usemessagelog,0),j=pluckNumber(h.messagegoestolog,1),k=g.categories&&Array.isArray(g.categories)&&g.categories[0]&&g.categories[0].category&&g.categories[0].category.length||0;f.showRTValue=pluckNumber(h.showrealtimevalue,1),f.dataStreamURL=parseUnsafeString(h.datastreamurl,BLANKSTRING),f.dataStamp=h.datastamp,f.useMessageLog=i&&j,f.clearInterval=pluckNumber(h.clearchartinterval,0),f.realtimeValueSeparator=pluck(h.realtimevaluesep,COMMASPACE),f.refreshInterval=a=pluckNumber(h.refreshinterval,h.updateinterval,2),f.updateInterval=d.config.updateInterval=pluckNumber(h.updateinterval,a),f.realtimeValuePadding=pluckNumber(h.realtimevaluepadding),f.realtimeValueFont=pluck(h.realtimevaluefont,BLANKSTRING),f.realtimeValueFontBold=pluck(h.realtimevaluefontbold,0),f.realtimeValueFontColor=b=pluck(h.realtimevaluefontcolor,BLANKSTRING),f.realtimeValueFontSize=c=pluckNumber(h.realtimevaluefontsize,BLANKSTRING),f.realTimeValuePadding=pluckNumber(h.realtimevaluepadding,5),f.fontWeight=pluckNumber(h.realtimevaluefontbold,0)?'bold':NORMALSTRING,f.numDisplaySets=pluckNumber(h.numdisplaysets,mathMax(k,15)),f.refreshInstantly=pluckNumber(h.refreshinstantly,0),f.showRTmenuItem=pluckNumber(h.showrtmenuitem,0),f.sync=pluckNumber(h.sync,.6<a),b&&(f.realtimeValueFontColor=b.replace(dropHash,HASHSTRING)),c&&(f.realtimeValueFontSize=c+PXSTRING),a*=1e3},_stopUpdate=function(a){var b=this,c=b.config.realTimeConfig,d=b.config.timers&&b.config.timers.setTimeout.loadData;b.getChildren('dataStreamer')[0]._stopUpdate(),d&&clearTimeout(d),c.clearIntervalFlag=!1,b.fireChartInstanceEvent('dataRestored',{source:a})},_restartUpdate=function(){this.getChildren('dataStreamer')[0]._restartUpdate()},_isUpdateActive=function(){return this.getChildren('dataStreamer')[0]._isUpdateActive()},eiMethods={feedData:function(){var a,b,c=this,d=c.apiInstance,e=arguments[1];return e?void(a=arguments[0],d.addJob(`feedDataId${count++}`+feedIndex++,function(){b=d.feedData(a),'function'==typeof e&&e(b)},priorityList.postRender)):d.feedData.apply(d,arguments)},setData:function(){var a=this.apiInstance,b=arguments[0],c=arguments[1];a.addJob(`setDataId${count++}`,function(){a._setData(b,c)},priorityList.postRender)},stopUpdate:function(){var a=this.apiInstance;a.addJob(`stopUpdateId${count++}`,function(){a._stopUpdate()},priorityList.postRender)},restartUpdate:function(){this.apiInstance._restartUpdate.apply(this.apiInstance,arguments)},isUpdateActive:function(){return this.apiInstance._isUpdateActive.apply(this.apiInstance,arguments)},clearChart:function(){var a=this.apiInstance;a.addJob(`clearChartId${count++}`,function(){a._clearChart()},priorityList.postRender)},getData:function(){return this.apiInstance._getData.apply(this.apiInstance,arguments)},getDataForId:function(){return this.apiInstance._getDataForId.apply(this.apiInstance,arguments)},setDataForId:function(){return this.apiInstance._setDataForId.apply(this.apiInstance,arguments)},getDataJSON:function(){return this.apiInstance._getDataJSON.apply(this.apiInstance,arguments)}},realTimeUpdate=function(a){var b,c,d=this,e=getDataset(d),f=d.config.cachedArrivedJSON,g=f&&f.categories,h=a.dataset,j=a.categories&&a.categories.category||[];for(d.fireChartInstanceEvent('updateDataReceived',a),d.fireEvent('realtimeDataUpdate',a),d.config.cachedArrivedJSON||(f=d.config.cachedArrivedJSON={}),f.dataset=f.dataset||[],g=f.categories||(f.categories={}),g.category=g.category||[],b=0;b<e.length;b++)c=f.dataset[b]||(f.dataset[b]={}),c.data||(c.data=[]),c.data.push.apply(c.data,h[b].data);g.category.push.apply(g.category,j)},_RTmanageSpace=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n=this,o=n.config,p=n.getChildren(),q=p.xAxis[0],r=p.yAxis[0],s=p.yAxis[1],t=p.canvas&&p.canvas[0],u=t.config,v=u.canvasBorderWidth,w=u.canvasPaddingTop,x=u.canvasPaddingBottom,y=u.canvasPadding||0,z=u.canvasPaddingLeft,A=u.canvasPaddingRight,B=o.xAxisSpaceAllocation,C=o.yAxisSpaceAllocation||[],D=C[0]&&C[0].spaceTaken||{},E=C[1]&&C[1].spaceTaken||{},F=o.primaryAxisOnleft,G=r&&JSON.stringify(r.getAxisDimension()),H=r&&JSON.stringify(r.getAxisDimension());e=o.availableHeight,b=o.xAxisSpaceAllocation=q.placeAxis(e+B.bottom),a=b.bottom-B.bottom,0!==a&&(n._allocateSpace({bottom:a}),f=o.availableWidth,C[0].spaceTaken=c=r.placeAxis(f+D.left),n._allocateSpace({left:c.left-D.left}),f=o.availableWidth,g=o.canvasLeft-v,i=o.canvasRight+v,s&&(h=i,j=g,0===F&&(k=g,g=h,h=k,k=i,i=j,j=k),C[1].spaceTaken=d=s.placeAxis(f+(E.right||0)),n._allocateSpace({right:(d.right||0)-(E.right||0)}),s.setAxisDimention({x:h,y:o.canvasTop+w,opposite:j,axisLength:o.canvasHeight-w-x})),q&&q.setAxisDimention({x:o.canvasLeft+mathMax(z,y),y:o.canvasBottom+(o.shift||0)+v,opposite:o.canvasTop-v,axisLength:o.canvasWidth-mathMax(z,y)-mathMax(A,y)}),r&&r.setAxisDimention({x:g,y:o.canvasTop+w,opposite:i,axisLength:o.canvasHeight-w-x})),n.canvasPadding&&t.setCanvasPadding(),t.setDimension({top:o.canvasTop,left:o.canvasLeft,width:o.canvasWidth,height:o.canvasHeight}),v=u.canvasBorderWidth,w=u.canvasPaddingTop,x=u.canvasPaddingBottom,y=u.canvasPadding||0,z=u.canvasPaddingLeft,A=u.canvasPaddingRight,s&&s.setAxisDimention({x:o.canvasRight+v,y:o.canvasTop+w,opposite:j,axisLength:o.canvasHeight-w-x}),q&&q.setAxisDimention({x:o.canvasLeft+mathMax(z,y),y:o.canvasBottom+(o.shift||0)+v,opposite:o.canvasTop-v,axisLength:o.canvasWidth-mathMax(z,y)-mathMax(A,y)}),r&&r.setAxisDimention({x:o.canvasLeft-v,y:o.canvasTop+w,opposite:o.canvasRight+v,axisLength:o.canvasHeight-w-x}),l=r&&JSON.stringify(r.getAxisDimension()),m=r&&JSON.stringify(r.getAxisDimension()),o.drawYAxis=l!==G,o.drawSyAxis=m!==H},realTimeDraw=function(a={}){var b,c,d,e,f,g=this,h=g.config,j=g.getChildren(),k=j.canvas&&j.canvas[0],l=j.xAxis&&j.xAxis[0],m=j.yAxis&&j.yAxis[0],n=j.yAxis&&j.yAxis[1],o=getDataset(g),p=o.length,q=h.cachedArrivedJSON,r=q&&q.dataset,s=q&&q.categories&&q.categories.category||[],t=l&&l.getTicksLen(),u=h.realTimeConfig=h.realTimeConfig||(h.realTimeConfig={}),v=u.prevData,w=0,x=u.showRTValue,y=u.clear,z=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._eventArgs=a,a.prevData=v,u.prevData=[],g.getFromEnv('animationManager').setAnimationState('realTimeUpdate'),g.__rtDrawStartAt=new Date,g.__realtimeUpdateComplete||(g.__realtimeUpdateComplete=()=>{f=new Date-g.__rtDrawStartAt,y||(h._eventArgs.latency=f,h._eventArgs.updateObject=u.legacyUpdateObj),g.getChildren('dataStreamer')[0].addToEnv('realtimeDrawingLatency',f),g.fireChartInstanceEvent('realTimeUpdateComplete',h._eventArgs)}),g.addJob('realtimeupdatecomplete',g.__realtimeUpdateComplete,priorityList.postRender),o){if(k.asyncDraw(),q){if(l){for(l.asyncDraw(),l.categoryInsert(t,s,!0),(e=0,b=s.length);e<b;e++)s[e].vline||(w+=1);l.categoryDelete(0,w,!0),l.categoryTranslate(w)}if(h._sumValuesUpdated=!1,y){for(e=0;e<p;e++)o[e]._realTimeConfigure(!0);u.clear=!1}for(e=0;e<p;e++)c=r[e],o[e].addData(c),o[e].removeData(0,c.data.length),o[e].resetCatPos(),o[e].setMaxMin(),d=o[e].getLinkedParent(),d.childChanged(),u.prevData.push(z(c.data));h.cachedArrivedJSON=UNDEF}g.rtManageSpace&&g._RTmanageSpace(),h.drawYAxis&&m&&m.asyncDraw(),h.drawSyAxis&&n&&n.asyncDraw(),g._preDraw(),x&&g._drawRealTimeValue&&g.asyncRealTimeValueDraw()}},feedData=function(a){var b=this,c=b.getFromEnv('dataStreamer');c.responseTextHandler(a),c.refreshVisualHandler({source:'feedData',data:a})},_linearDataParser=function(a){var b,c,d,e,f,g,h,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I=this,J=getDataset(I),K=J&&J.length,L=I.config.realTimeConfig,M=L.legacyUpdateObj={},N=M.values=[],O=M.target=[],P=M.valueVisibility=[],Q=M.toolTexts=[],R=M.toolTextsTarget=[],S=M.colors=[],T=M.links=[],U=0,V={categories:{category:[]},dataset:[]},W=V.categories.category,X=V.dataset,Y=a;for(a=a&&a.toString&&a.toString()||'',I.rtParserModify&&(Y=Y.replace(/([^\\])(\|)/g,'$1,'),a=a.replace(/\|/g,',')),b=a.split('&'),(r=0,s=b.length);r<s;r+=1)(c=b[r].split('='),d=c[1],c=c[0],c!==BLANKSTRING&&c!==UNDEF&&d!==UNDEF&&d!==BLANKSTRING)&&(G=c.toLowerCase(),'label'===G?M.labels=t=d.split(','):'vline'===G?M.vlines=u=d.split(','):'vlinelabel'===G?M.vlineLabels=m=d.split(','):'vlinecolor'===G?M.vlineColors=n=d.split(','):'vlinethickness'===G?M.vlineThickness=o=d.split(','):'vlinedashed'===G?M.vlineDashed=p=d.split(','):'value'===G?v=d.split('|'):'target'===G?w=d.split('|'):'showlabel'===G?M.showLabels=q=d.split(','):'showvalue'===G?e=d.split('|'):'tooltext'===G?(f=Y.match(/tooltext=(.*?\\&)*.*?[^\\]&/i),f=f?f[0].substr(9,f[0].length-10):Y.match(/(tooltext=)(.*)/i)[2],f=f&&f.replace(/([^\\])(\|)/g,'$1_FC@@**'),f=f.split('_FC@@**')):'targettooltext'===G?g=d.split('|'):'link'===G?k=d.split('|'):'color'===G?h=d.split('|'):'datastamp'===G?M.dataStamp=x=d:'stopupdate'===G?M.pause=y='1'==d:'clear'===G?M.clear=z='1'==d:M[c]=V[c]=d);for(D=v&&v.length,r=0;r<D;r++)N[r]=v[r].split(','),O[r]=w&&w[r]&&w[r].split(','),P[r]=e&&e[r]&&e[r].split(','),R[r]=g&&g[r]&&g[r].split(','),S[r]=h&&h[r]&&h[r].split(','),T[r]=k&&k[r]&&k[r].split(','),f&&(H=f[r],H&&(H=H.replace(/([^\\])(\,)/g,'$1_FC@@**'),Q[r]=H.split('_FC@@**'))),U=mathMax(U,N[r].length);for(F=t&&t.length,A=mathMax(F||0,U||0),r=0;r<A;r++)W.push({label:t&&t[r],color:n&&n[r],showlabel:q&&q[r]});for(u&&W.push({label:m&&m[0],vline:u&&u[0],color:n&&n[0],thickness:o&&o[0],dashed:p&&p[0],showlabel:q&&q[0]}),r=0;r<K;r++){for(E={},B=E.data=[],C=0;C<A;C++)B.push({value:N[r]&&N[r][C],target:O[r]&&O[r][C],showvalue:P[r]&&P[r][C],tooltext:Q[r]&&Q[r][C]&&decodeURIComponent(Q[r][C].replace(/\\/g,'')),tooltexttarget:R[r]&&R[r][C],color:S[r]&&S[r][C],link:T[r]&&T[r][C]&&decodeURIComponent(T[r][C])});X.push(E)}return y&&I._stopUpdate(),z&&I._clearChart(),x&&(I.config.dataStamp=x),V},_clearChart=function(a){var b,c,d=this,e=d.getChildren(),f=e.xAxis&&e.xAxis[0],g=getDataset(d),h=f.getTicksLen(),j=f.getVisibleConfig(),k=j.maxValue,l=j.minValue,m=h>k?k-l:h,n=d.config.realTimeConfig||(d.config.realTimeConfig={}),o=n.showRTValue,p=g.length;if(n.clear=!0,g){for(f&&f.categoryDelete(0,m,!0),d.config._sumValuesUpdated=!1,c=0;c<p;c++)b=g[c],g[c].removeData(0,b.components.data.length),g[c].resetCatPos();d._setCategories()}o&&d._drawRealTimeValue&&d.asyncRealTimeValueDraw(),d.fireChartInstanceEvent('ChartCleared',{source:a},[d.getId(),a])},_setRTmenu=function(a,b){var c=this,d=c.getFromEnv('hamburger'),e=!0,f=[],g=function(){e?(c._stopUpdate(),d.getChild('listContainer').getChild('rt').configure({id:'rt',name:'Restart Update',handler:function(){g()},action:'click'}),d.getChild('listContainer').getChild('rt').asyncDraw(),e=!1):(c._restartUpdate(),d.getChild('listContainer').getChild('rt').configure({id:'rt',name:'Stop Update',handler:function(){g()},action:'click'}),d.getChild('listContainer').getChild('rt').asyncDraw(),e=!0)};a&&f.push({name:'Clear Chart',handler:function(){c._clearChart()},action:'click'}),b&&f.push({name:'Show Log',handler:function(){c.getChildren('messageLogger')[0].show()},action:'click'}),a&&f.push({id:'rt',name:'Stop Update',handler:function(){g()},action:'click'}),f.length&&d.appendInMenu(f)};export{_realTimeConfigure,eiMethods,_stopUpdate,_restartUpdate,_isUpdateActive,realTimeUpdate,_RTmanageSpace,realTimeDraw,feedData,_linearDataParser,_clearChart,_setRTmenu};