UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 5.86 kB
import{pluck,pluckNumber,getValidValue,getDashStyle,getFirstColor,parseUnsafeString,preDefStr,toRaphaelColor}from'../../../../fc-core/src/lib';import Column from'../../../../fc-charts/src/dataset/column';import{_checkPointerOverPlot,_checkPointerOverErrorBar}from'../../dataset/errorbar2d';import{getPlotIndices,_firePlotEvent,_parseToolText as __parseToolText}from'./candlestick';import{addDep}from'../../../../fc-core/src/dependency-manager';import candlestickbarAnimation from'./candlestickbar.animation';let colorStrings=preDefStr.colors,COLOR_B90000=colorStrings.B90000,COLOR_FFFFFF=colorStrings.FFFFFF,SHOWSHADOW='showShadow',ROUND=preDefStr.ROUND,visibleStr=preDefStr.visibleStr,DASH_DEF='none',POINTER='pointer',BLANKSTRING='',M='M',L='L';addDep({name:'candlestickbarAnimation',type:'animationRule',extension:candlestickbarAnimation});class CandleStickBar extends Column{trimData(a){if(!(!this.components&&this.components.data&&this.components.data.length)){let b=this,c=b.components,d=c&&c.data,e=d&&d.length,f=a.data,g=Array.isArray(f)&&f.filter(a=>a.high||a.open||a.close||a.low).length||0,h=e-g;0<h&&this.removeData(g,h,!1)}}configureAttributes(a){var b=Math.min,c=Math.max;if(!a)return!1;this.trimData(a),this.config.JSONData=a;var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w=this,y=w.config,z=w.getFromEnv('chart'),A=z.getFromEnv('dataSource'),B=w.config.JSONData,C=B.data||[],D=A.chart,E=C.length,F=w.getFromEnv('number-formatter'),G=w.getFromEnv('color-manager'),H=y.bearBorderColor=getFirstColor(pluck(D.bearbordercolor,COLOR_B90000)),I=y.bearFillColor=getFirstColor(pluck(D.bearfillcolor,COLOR_B90000)),J=y.bullBorderColor=getFirstColor(pluck(D.bullbordercolor,G.getColor('canvasBorderColor'))),K=y.bullFillColor=getFirstColor(pluck(D.bullfillcolor,COLOR_FFFFFF)),L=!1,M=-Infinity,N=+Infinity,O=-Infinity,P=+Infinity;for(w.setState('visible',1===pluckNumber(B.visible,1)),w._conatinerHidden=!!w.getState('visible'),y.defaultPadding={left:.5,right:.5},y.linethickness=pluckNumber(D.plotlinethickness,2),y.toolText=getValidValue(parseUnsafeString(pluck(B.tooltext,D.plottooltext))),y.name=getValidValue(B.seriesname),y.showTooltip=pluck(D.showtooltip,1),y.showErrorValue=!0,y.errorBarWidthPercent=0,L=!0,u=pluck(D.maxcolwidth),y.maxColWidth=Math.abs(pluckNumber(u,50))||1,y.enableAnimation=v=pluckNumber(D.animation,D.defaultanimation,1),y.animation=!!v&&{duration:1e3*pluckNumber(D.animationduration,1)},p=y.plotLineDashLen=pluckNumber(D.plotlinedashlen,5),q=y.plotLineDashGap=pluckNumber(D.plotlinedashgap,4),r=w.components.data=w.components.data||(w.components.data=[]),y.valuePadding=pluckNumber(B.valuepadding,D.valuepadding,2),y.showShadow=pluckNumber(D.showshadow,G.getColor(SHOWSHADOW)),g=0;g<E;g++)s=C[g],h=r[g],h||(h=r[g]={}),h.config||(h.config={}),h.graphics||(h.graphics={}),t=h.config,s&&!s.vline&&(t.setLink=pluck(s.link),i=t.open=F.getCleanValue(s.open),j=t.close=F.getCleanValue(s.close),k=F.getCleanValue(s.high),l=F.getCleanValue(s.low),t.volume=F.getCleanValue(s.volume,!0),o=t.x=F.getCleanValue(s.x),t.high=c(i,j,k,l),t.low=b(i,j,k,l),t.yVal=c(i,j),m=b(i,j,k,l),n=c(i,j,k,l),e=getFirstColor(pluck(s.bordercolor,j<i?H:J)),f=pluckNumber(s.alpha,100),d=getFirstColor(pluck(s.color,j<i?I:K)),t.color=L?d:e,t.alpha=f,t.setColor=t.color,t.setAlpha=t.alpha,t.borderColor=e,t.borderAlpha=t.plotLineAlpha,t.colorArr=[{color:t.color,alpha:t.alpha},{color:t.borderColor,alpha:t.borderAlpha}],t.showValue=1,t.hoverEffects={},t.link=pluck(s.link),t.setValue=t.y,null!==m&&(M=c(M,m),N=b(N,m)),null!==n&&(M=c(M,n),N=b(N,n)),null!==o&&(O=c(O,o),P=b(P,o)),t.dashStyle=pluckNumber(s.dashed)?getDashStyle(p,q):DASH_DEF,t.shadow={opacity:y.showShadow?f/100:0},o=null===o?g+1:o,t.toolText=w._parseToolText(g),t.toolTipValue='',t._x=o,t.y=i,t.previousY=j);y.yMax=M,y.yMin=N,y.xMax=O,y.xMin=P,w.setState('dirty',!0)}drawPlots(){var a,b,c,d,e,f,g,h,j,k,l,m,n,o,p,q,r,s,t=Math.abs,u=this,v=u.getFromEnv('animationManager'),w=u.config,z=u.components,A=z.data,B=A.length,C=u.getFromEnv('xAxis'),D=u.getFromEnv('yAxis'),E=function(a){return function(){this.shadow(a)}},F=5<w.linethickness?w.linethickness/2:2.5,G=u.getContainer('plotGroup'),H=u.getState('visible');for(v.setAnimation({el:G,attr:{opacity:H?1:0},component:u}),u.setColumnPosition(),b=u.getFromEnv('columnXShift'),c=0;c<B;c+=1)d=A[c],a=d.config,s=d.graphics,g=a.y,m=null,null===g?m=s.element:(f=a._x,e=a.link,a.setLink=a.link,j=C.getPixel(f),h=a.previousY,l=D.getPixel(h),k=D.getPixel(g),o=D.getPixel(a.high),p=D.getPixel(a.low),q=b,d.errorBar=[],n=d.errorBar,n.push([{_xPos:j-F,_yPos:o,_height:t(o-p),_width:2*F},{_xPos:j+q,_yPos:k,_height:2*F,_width:t(q)},{_xPos:j,_yPos:l,_height:2*F,_width:t(q)}]),r=[M,j,p,L,j,o,M,j,k,L,j+q,k,M,j,l,L,j-q,l],m=s.element,m=v.setAnimation({el:m||'path',container:G,attr:{path:r,cursor:e?POINTER:BLANKSTRING,fill:toRaphaelColor(a.color),stroke:toRaphaelColor(a.borderColor),"stroke-width":w.linethickness,"stroke-dasharray":a.dashStyle,"stroke-linecap":ROUND,"stroke-linejoin":ROUND,"shape-rendering":'crisp',visibility:visibleStr},label:'path',component:u,callback:E.call(m,a.shadow)}),s.element=m)}_parseToolText(a){return __parseToolText.call(this,a)}_firePlotEvent(a,b,c){_firePlotEvent.call(this,a,b,c)}_checkPointerOverColumn(){}_getHoveredPlot(a,b){var c,d,e,f,g,h=this,j=h.getFromEnv('xAxis');for(c=j.getValue(a),f=getPlotIndices.call(h,c),d=f.length-1;-1<d&&(g=f[d],e=0<g-c?h._checkPointerOverPlot(g,a,b)||h._checkPointerOverPlot(g-1,a,b):h._checkPointerOverPlot(g+1,a,b)||h._checkPointerOverPlot(g,a,b),!e);d--);return e}_checkPointerOverPlot(a,b,c){return _checkPointerOverPlot.call(this,a,b,c)}_checkPointerOverErrorBar(a,b,c){return _checkPointerOverErrorBar.call(this,a,b,c)}drawLabel(){}getDataLimits(){var a=this.config;return{max:a.yMax,min:a.yMin,xMax:a.xMax,xMin:a.xMin}}getName(){return'candlestickbar'}}export default CandleStickBar;