quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 5.07 kB
JavaScript
import AreaDataset from'../area';import{pluck,pluckNumber,toRaphaelColor,getFirstValue,stubFN}from'../../../../fc-core/src/lib';import{addDep}from'../../../../fc-core/src/dependency-manager';import lineAnimation from'./index.animation';var UNDEF,math=Math,mathAbs=math.abs,MAX_MITER_LINEJOIN=2;addDep({name:'lineAnimation',type:'animationRule',extension:lineAnimation});class LineDataset extends AreaDataset{constructor(){super(),this.updateYForStack=stubFN,this.config.primitiveType='line'}getType(){return'dataset'}getName(){return'line'}createPinElem(){var a,b,c,d=this,e=d.getFromEnv('chart'),f=arguments[1].group,g=d.config.lineOb,h=d.getGraphicalElement('pinElems')||d.addGraphicalElement('pinElems',[]),j=d.getFromEnv('paper'),k=d.getLinkedParent().getChildContainer('lineVcanvasGroup');for(b=h.length-1;0<=b;b--)h[b].remove(),h.pop();if(d.getState('visible'))for(c in g)a=g[c].el,h.push(j.path(f).attr({path:a.attrs.path,transform:['T',-(e.config._visx+mathAbs(k.transform()[0][1])),-e.config.canvasBottom]}).attr(d.config.pin))}_addLegend(){var a,b,c=this,d=c.getFromEnv('chart'),e=c.config,f=d.getChildren('legend')[0],g=pluckNumber(e.drawanchors,1);e.includeinlegend?(b={enabled:e.includeinlegend,type:c.getName(),drawLine:pluck(e.drawLine,!0),index:c.getJSONIndex(),anchorSide:g?e.anchorsides:0,label:getFirstValue(c.config.JSONData.seriesname)},a=f.getItem(c.config.legendItemId),!a&&(c.config.legendItemId=f.createItem(c),a=f.getItem(c.config.legendItemId),c.addExtEventListener('fc-click',function(){a.itemClickFn()},a)),a.setStateCosmetics('default',{symbol:{fill:toRaphaelColor({color:e.anchorbgcolor,alpha:e.anchorbgalpha}),rawFillColor:e.anchorbgcolor,rawStrokeColor:e.anchorbordercolor,stroke:toRaphaelColor({color:e.anchorbordercolor,alpha:'100'}),"stroke-width":e.anchorborderthickness,lineWidth:e.linethickness}}),c.getState('visible')?a.removeLegendState('hidden'):a.setLegendState('hidden'),a.configure(b)):c.config.legendItemId&&f.disposeItem(c.config.legendItemId)}_getDataLimits(){var a=this,b=a.config,c=a.getFromEnv('chart'),d=c.config,e=b.maxValue,f=b.minValue,g=-Infinity,h=+Infinity,i=d.transposeAxis;return!1===a.getState('visible')&&i&&(e=g,f=h),{max:e,min:f}}_drawCommonElementsHelper(a){var b,c,d,e=this,f='',g={},h=e.getFromEnv('animationManager'),i=e.config,k=i.shadow,l=i.linethickness,m=e.getContainer('commonElemsGroup'),n=function(){!1===e.getState('visible')&&this.hide()};for(f in a){for(g=a[f],b=['M0,0'],(c=0,d=g.path&&g.path.length);c<d;++c)b=b.concat(g.path[c].getPathArr());e.config.drawLine?(g.el=h.setAnimation({el:g.el||'path',container:m,component:e,attr:!1!==e.getState('visible')&&Object.assign({path:b},g.attr),label:'line',callback:n}),e.getState('visible')&&g.el&&g.el.show()):g.el&&(g.el=h.setAnimation({el:g.el,component:e,doNotRemove:!0,callback:function(){this.hide()}})),g.used||delete a[f],g.el&&(l?g.el.shadow(k,m):g.el.shadow({opacity:0},m),g.el.toFront()),g.old=!0,g.used=!1,g.prevPath=g.path,g.attrs=UNDEF,g.path=UNDEF}}getLineShift(a){var b=this,c=b.getFromEnv('chart'),d=c.config.is3D,e=c.config.use3dlineshift,f=d?10:0,g=d?e?0:-10:0;return'y'===a?g:f}drawCommonElements(){var a,b,c,d,e,f,g,h,k,l,m,n=this,o=n.components.data,p=n.config,q=n.getFromEnv('xAxis'),r=n.getFromEnv('yAxis'),s=p.lineDashStyle,t=p.linethickness,u={color:p.linecolor,alpha:p.alpha},v=[toRaphaelColor(u),s].join(':'),w=v,x={x:q.getLimit(),y:r.getLimit()},y=o.length,z=n.config.lineOb||{},A=0,B=!1,C=n.getSkippingInfo&&n.getSkippingInfo(),D=C&&C.draw||[],E=D.length,F=C&&C.skippingApplied,G=function(a,b,c){var d=z[a];d||(d=z[a]={}),a!==w&&(d.hasDifferentColor=!0),d.used=!0,d.pathWithNull=c,d.path=d.path||[],d.stroke=a.split(':')[0],d.dashStyle=a.split(':')[1],d.path.push(b),d.dashStyle=d.dashStyle&&d.dashStyle.split(','),d.attr={"stroke-dasharray":d.dashStyle,"stroke-width":t,stroke:d.stroke,"stroke-linecap":'round',"stroke-linejoin":t>MAX_MITER_LINEJOIN?'round':'miter'}},H=[];for(x.x.minPixel=q.getPixel(x.x.min),x.x.maxPixel=q.getPixel(x.x.max),x.y.minPixel=r.getPixel(x.y.min),x.y.maxPixel=r.getPixel(x.y.max),x.y.base=r.getPixel(0),x.x.base=q.getPixel(0),F&&(y=E),d=0;d<y;++d)(c=D[d]||d,e=o[c],!!e)&&(g=e.config||{},g._Pbx=UNDEF,g._Pby=UNDEF,H[c]={config:{_Px:g._Px,_Py:g._Py,setValue:g.setValue}},b={color:g.setColor,alpha:g.setAlpha},a=g.dashStyle,f=[toRaphaelColor({color:pluck(b.color,u.color),alpha:pluck(b.alpha,u.alpha)}),a||s].join(':'),v!==f&&null!==e._yVal&&(B=!0,h=c,k=n.getLinePath(o,{begin:A,end:h+1}),l=n.getLinePath(o,{begin:A,end:h+1},m),g.connStartIndex=A,g.connEndIndex=h,G(v,k,l.getPathArr()),v=f,A=c,h=null),null!==e._yVal&&(v=f));f||(f=''),p.pathStartIndex=A,p.pathEndIndex=h,k=n.getLinePath(o,{begin:B?A:p.scrollMinVal,end:B?h:p.scrollMaxVal}),l=n.getLinePath(o,{begin:A,end:h},m),G(f,k,l.getPathArr()),n._drawCommonElementsHelper(z),n.config.lineOb=z,p.prevLim=x,p.prevDataStore=H}show(){super.show(),this.fireEvent('datasetVisibilityChanged',{dataset:this,state:'show'})}hide(){super.hide(),this.fireEvent('datasetVisibilityChanged',{dataset:this,state:'hide'})}}export default LineDataset;