UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 8.33 kB
import MSColumn2D from'../../../../fc-charts/src/chart/mscolumn2d';import{getMouseCoordinate,getValidValue,pluck,pluckNumber,preDefStr,MOUSEOUT,MOUSEMOVE,ZEROSTRING,extend2,BLANKSTRING,safeMin,safeMax,_manageInteractiveSpace}from'../../../../fc-core/src/lib';import{getDepsByType}from'../../../../fc-core/src/dependency-manager';import _getData from'../../../../fc-core/src/_internal/misc/fetch-data';import{priorityList}from'../../../../fc-core/src/schedular';import{submitData}from'./editable-charts';let UNDEF,transcoders=getDepsByType('transcoder'),UNDERSCORE=preDefStr.UNDERSCORE,BLANK=BLANKSTRING,count=0,updateDataLimit=function(a){let b,c=a.sender.apiInstance,d=c.getChildren('canvas')[0],e=d.getChildren('vCanvas')[0],f=c.config,g=a.data,h=g&&g.endValue,i=g&&g.startValue;(h>f.yMax||h<f.yMin||i===f.yMin||i===f.yMax)&&(b=e.getDataLimits(),f.yMax=b.max,f.yMin=b.min)},sanitiseFormatStr=a=>a.toString().toLowerCase();class DragBase extends MSColumn2D{constructor(){super(),this.eiMethods.getDataWithId=function(){for(var a,b,c,d,e,f,g,h,k,l,m=this,n=m.apiInstance&&m.apiInstance.getJSONData(),o=[[BLANK]],p=n.dataset,q=n.categories&&n.categories[0]&&n.categories[0].category,r=p&&p.length||0,s=0;r--;)if(e=p[r],e)for(o[0][r+1]=e.id||e.seriesname,g=e.id||r+1,d=e.data,l=d&&d.length||0,k=0;k<l;k+=1){if(f=k+1,!o[f]){for(c=q&&q[k+s]||{};c.vline;)s+=1,c=q[k+s]||{};b=c.label||c.name||BLANK,o[f]=[b]}a=o[f],h=d[k].id||f+UNDERSCORE+g,a[r+1]=[h,+d[k].value]}return o},this.eiMethods.getData=function(a){var b,c,d,e=this,f=e.apiInstance&&e.apiInstance.getJSONData(),g=f.dataset,h=g&&g.length||0,j=0;if(a)d=sanitiseFormatStr(a),/^json$/ig.test(d)?b=f:(c=transcoders[d](),b=c.fromJSON(f,e).data);else for(b=_getData.call(e.apiInstance),b.unshift([BLANK]);j<h;)b[0][j+1]=g[j++].seriesname;return b},this.eiMethods.setUpperLimit=function(a,b){var c,d=this,e=d.apiInstance;return b?void e.addJob(`setUpperLimitId${count++}`,function(){c=e.changeUpperLimits(a),'function'==typeof b&&b(c)},priorityList.postRender):e.changeUpperLimits(a)},this.eiMethods.setLowerLimit=function(a,b){var c,d=this,e=d.apiInstance;return b?void e.addJob(`setLowerLimitId${count++}`,function(){c=e.changeLowerLimits(a),'function'==typeof b&&b(c)},priorityList.postRender):e.changeLowerLimits(a)},this.eiMethods.getLowerLimit=function(a){var b=this,c=b.apiInstance,d=c.getChildren('yAxis')[0];if(d)if(a)c.addJob(`getLowerLimitId${count++}`,function(){'function'==typeof a&&a(d.config.axisRange.min)},priorityList.postRender);else return d.config.axisRange.min},this.eiMethods.getUpperLimit=function(a){var b=this,c=b.apiInstance,d=c.getChildren('yAxis')[0];if(d)if(a)c.addJob(`getUpperLimitId${count++}`,function(){'function'==typeof a&&a(d.config.axisRange.max)},priorityList.postRender);else return d.config.axisRange.max}}getName(){return'DragBase'}configureAttributes(a){super.configureAttributes(a),'DragNode'!==this.getName()&&this.getFromEnv('chartInstance').addEventListener('dataplotdragend',updateDataLimit)}mouseoutHandler(a,b,c){let d=this,e=d.config.datasetOrder||d.getDatasets(),f=d.getChildren('mouseTracker')[0];e[b]&&e[b].components.data[c]?e[b]._firePlotEvent(MOUSEOUT,c,a):d.getFromEnv('toolTipController').hideAll(),delete f._lastDatasetIndex,delete f._lastPointIndex}static getName(){return'DragBase'}_mouseEvtHandler(a,b){var c,d,e,f,g,h,k,m=this,n=b.mouseTracker,o=a.originalEvent,p=m.config,q=p.datasetOrder||m.getDatasets(),r=getMouseCoordinate(m.getFromEnv('chart-container'),o,m),s=r.chartX,t=r.chartY,u=!1,v=q.length,w=n._lastDatasetIndex,x=n._lastPointIndex;if(x!==UNDEF&&q[w]&&q[w].components.data[x]&&(h=q[w].components.data[x].config.dragStart),!h)for(;v--&&!u;)c=q[v],c&&c.getState('visible')&&(d=c._getHoveredPlot&&c._getHoveredPlot(s,t),d&&d.hovered&&(u=!0,d.datasetIndex=v,g=n.getMouseEvents(a,d.datasetIndex,d.pointIndex)));if(h&&w!==UNDEF&&(k=a.type===MOUSEOUT?MOUSEMOVE:a.type,q[w]&&q[w]._firePlotEvent&&q[w]._firePlotEvent(k,x,a)),!h&&(!u||g&&g.fireOut)&&w!==UNDEF&&q[w]&&q[w]._firePlotEvent&&(g&&!g.events.length?n.mouseoutTimer=setTimeout(function(){m.mouseoutHandler(a,w,x)},20):(m.mouseoutHandler(a,w,x),clearTimeout(n.mouseoutTimer))),u)for(f=g.events&&g.events.length,f&&(n._lastDatasetIndex=d.datasetIndex,x=n._lastPointIndex=d.pointIndex),e=0;e<f;e+=1)c&&c._firePlotEvent&&c._firePlotEvent(g.events[e],x,a)}parseChartAttr(a){super.parseChartAttr(a);var b,c=this,d=c.getFromEnv('dataSource'),e=d.chart;b=c.config,b.formAction=getValidValue(e.formaction),e.submitdataasxml!==ZEROSTRING||e.formdataformat||(e.formdataformat=transcoders.csv().format),b.formDataFormat=pluck(e.formdataformat,transcoders.xml().format),b.formTarget=pluck(e.formtarget,'_self'),b.formMethod=pluck(e.formmethod,'POST'),b.submitFormAsAjax=pluckNumber(e.submitformusingajax,1),b.restoreBtnTitle=pluck(e.restoretext,e.restorebtntitle,'Restore'),b.submitBtnTitle=pluck(e.submittext,e.formbtntitle,'Submit'),b.showFormBtn=pluckNumber(e.enablesubmit,e.showformbtn,1)&&b.formAction,b.showRestoreBtn=pluckNumber(e.enablerestore,e.showrestorebtn,1),b.formBtnTitle=pluck(e.formbtntitle,'Submit'),b.formBtnStyle={fontSize:b.style.outCanfontSize,fontFamily:b.style.outCanfontFamily,fontWeight:'bold'},b.restoreBtnWidth=pluckNumber(e.restorebtnwidth,0),b.allowAxisChange=pluckNumber(e.allowaxischange,1),e.toolbary||e.toolbarx?b.spaceHardCoded=!0:delete b.spaceHardCoded,b.drawTrendRegion=pluckNumber(e.drawcrossline,0)}_storeIntialLimit(a,b){this.config.axisInitialLimit={min:a,max:b}}_createToolBox(){super._createToolBox(),this.addConfigureOptions()}addConfigureOptions(){var a,b,c=this,d=c.getFromEnv('toolbar'),e=d.getChild(`hamburgerMenu-${d.getId()}-${c.getId()}-0`),f=c.config,g=f.allowAxisChange,h=f.submitBtnTitle,i=f.restoreBtnTitle,j=[{name:'Increase Upper Limit',handler:function(){var a=c.getChildren('yAxis')[0],b=a.getLimit(),d=b.max,e=b.tickInterval;c.changeUpperLimits(d+e)},action:'click'},{name:'Increase Lower Limit',handler:function(){var a=c.getChildren('yAxis')[0],b=a.getLimit(),d=b.min,e=b.tickInterval;c.changeLowerLimits(d+e)},action:'click'},{name:'Decrease Upper Limit',handler:function(){var a=c.getChildren('yAxis')[0],b=a.getLimit(),d=b.max,e=b.tickInterval;c.changeUpperLimits(d-e)},action:'click'},{name:'Decrease Lower Limit',handler:function(){var a=c.getChildren('yAxis')[0],b=a.getLimit(),d=b.min,e=b.tickInterval;c.changeLowerLimits(d-e)},action:'click'}];f.showFormBtn&&(b={name:h,handler:function(){submitData.call(c)},action:'click'},j.push(b)),f.showRestoreBtn&&(a={name:i,handler:function(){c.restoreData()},action:'click'},j.push(a)),g&&e.appendInMenu(j)}restoreData(){var a=this,b=a.getChildren('yAxis')[0],c=a.getFromEnv('chart-attrib'),d=a.config.axisInitialLimit;a.iterateComponents(a=>{let b;(b=a.getChildren('dataset'))&&b.forEach(function(a){a.restore()})}),b.resetStoredLimits(),b.setAxisConfig({axisMaxValue:c.yaxismaxvalue,axisMinValue:c.yaxisminvalue}),b.setDataLimit(d.max,d.min),a.fireChartInstanceEvent('dataRestored',{}),a._manageInteractiveSpace()}changeLowerLimits(a){var b=this,c=b.getChildren('yAxis')[0],d=c.getLimit(),e=d.min,f=d.min,g=b.config,h=safeMin([g.yMin,c.getTrendLineLimits()[0]]),i=!1,j=g.allowAxisChange,k=d.max;return b.getFromEnv('animationManager').setAnimationState('update'),a!==UNDEF&&a<h&&a!==f&&j&&(e=a,i=!0),i&&(c.resetStoredLimits(),c.setAxisConfig({axisMaxValue:k,axisMinValue:e,showLowerLimit:!0}),c.setDataLimit(k,e),b._manageInteractiveSpace()),i}changeUpperLimits(a){var b,c=this,d=c.getChildren('yAxis')[0],e=d.getLimit(),f=e.min,g=e.max,h=c.config,i=safeMax([h.yMax,d.getTrendLineLimits()[1]]),j=!1,k=h.allowAxisChange;return c.getFromEnv('animationManager').setAnimationState('update'),a!==UNDEF&&a>i&&a!==g&&k&&(b=a,j=!0),j&&(d.resetStoredLimits(),d.setAxisConfig({axisMaxValue:b,axisMinValue:f,showUpperLimit:!0}),d.setDataLimit(b,f),c._manageInteractiveSpace()),j}getJSONData(){var a,b,c,d,e,f,g,h=this,j=h.getChildren('canvas')[0],k=j.getChildren('vCanvas')[0],l=h.getFromEnv('dataSource'),m=[];if(k.iterateComponents(b=>{'group'===b.getType()&&(a=b)}),a)m=a.getJSONData&&a.getJSONData();else for(c=h.getDatasets(),f=c.length,e=0;e<f;e++)b=c[e],d={seriesname:b.config.seriesname,data:b.getJSONData().data},m.push(d);return g=extend2({},l),g.dataset=m,g}}DragBase.prototype._manageInteractiveSpace=_manageInteractiveSpace;export default DragBase;