UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 26.1 kB
import{pluckNumber,pluck,COMMASTRING,BLANK,getValidValue,parseUnsafeString,getFirstDefinedValue,getColorCodeString,parseTooltext,POSITION_CENTER,preDefStr,POSITION_RIGHT,POSITION_LEFT,toRaphaelColor,safeMin,safeMax,toPrecision,convertColor}from'../../../../fc-core/src/lib';import{ComponentInterface}from'../../../../fc-core/src/component-interface';import hlineargaugeAnimation from'./index.animation';import{addDep}from'../../../../fc-core/src/dependency-manager';var UNDEF,BLANKSTRING=BLANK,AXISPOSITION_TOP=1,AXISPOSITION_BOTTOM=3,FILLMIXDARK10='{dark-10}',configStr=preDefStr.configStr,animationObjStr=preDefStr.animationObjStr,POSITION_TOP=preDefStr.POSITION_TOP,POSITION_BOTTOM=preDefStr.POSITION_BOTTOM,POSITION_MIDDLE=preDefStr.POSITION_MIDDLE,POSITION_START=preDefStr.POSITION_START,POSITION_END=preDefStr.POSITION_END,ROLLOVER='DataPlotRollOver',ROLLOUT='DataPlotRollOut',noneStr='none',M='M',L='L',win=window,doc=win.document,hasTouch=doc.documentElement.ontouchstart!==UNDEF,math=Math,mathMax=math.max,mathMin=math.min,POINTER='pointer',EVENTARGS='eventArgs',ANIM_EFFECT='easeIn',textHAlign={right:POSITION_END,left:POSITION_START,middle:POSITION_MIDDLE,start:POSITION_START,end:POSITION_END,center:POSITION_MIDDLE,undefined:BLANK,BLANK:BLANK},getTouchEvent=function(e){return hasTouch&&e.sourceEvent&&e.sourceEvent.touches&&e.sourceEvent.touches[0]||e};addDep({name:'hlineargaugeAnimation',type:'animationRule',extension:hlineargaugeAnimation});class HlineargaugeDataset extends ComponentInterface{constructor(){super(),this.config.idMap={}}getType(){return'dataset'}getName(){return'hlineargauge'}_drawBackground(){var e,t,o,a,r,n,l,d,s,h,p,g,c,m,u,v,b,x,f,E,w,T,V,C,S=this,A=this.getFromEnv('chart'),G=A.getFromEnv(),k=A.config,O=A.getChildContainer().plotGroup,F=A.getFromEnv('toolTipController'),R=k.canvasWidth,W=k.canvasHeight,P=k.canvasTop,D=k.canvasLeft,I=G.scale,H=I.config.axisRange.min,_=I.config.axisRange.max,j=A.getFromEnv('dataSource'),z=j.chart,N=j.trendpoints&&j.trendpoints.point,Z=pluckNumber(z.showgaugeborder,1),B=getFirstDefinedValue(z.colorrangefillmix,z.gaugefillmix,'{light-10},{dark-20},{light-50},{light-85}'),X=getFirstDefinedValue(z.colorrangefillratio,z.gaugefillratio,z.gaugefillratio,'0,8,84,8'),U=pluck(z.colorrangebordercolor,z.gaugebordercolor,'{dark-20}'),Y=pluckNumber(z.colorrangeborderalpha,z.gaugeborderalpha,100),J=Z?pluckNumber(z.colorrangeborderthickness,z.gaugeborderthickness,1):0,K=j.colorrange&&G.colorRange&&G.colorRange.getColorRangeArr(H,_),Q=pluckNumber(z.showshadow,1),$=A.getChildren('canvas')[0],q=$.getGraphicalElement('linear'),ee=$.getGraphicalElement('outerRect'),te=G.animationManager,oe=G['color-manager'],ae={top:1,bottom:3},re=0,ie=0,ne=0;for(te.setAnimation({el:O,state:'initial',attr:{transform:['T',D,P]},component:S,container:A.getContainer('parentgroup'),label:'parentgroup'}),q=te.setAnimation({el:q||'group',attr:{name:'colorrange'},component:S,container:O,label:'background'}),ee=te.setAnimation({el:ee||'rect',attr:{x:0,y:0,width:R,height:W,stroke:noneStr,r:0},component:S,container:O}),$.getGraphicalElement('linear')||(q=$.addGraphicalElement('linear',q),$.addGraphicalElement('outerRect',ee)),(n=function(e,t){return{x:e*R/(_-H),y:0,width:(t-e)*R/(_-H),height:W}},l=270),(e=0,o=K&&K.length);e<o;e+=1)s=K[e],p=n(s.minvalue-H,s.maxvalue-H),s.x=p.x,s.y=p.y,s.width=p.width,s.height=p.height,d=s.code,h=convertColor(getColorCodeString(pluck(s.bordercolor,d),U),pluckNumber(s.borderalpha,Y)),x=oe.parseColorMix(s.code,B),f=oe.parseAlphaList(s.alpha,x.length),E=pluckNumber(s.borderAlpha,Y),w=f.split(COMMASTRING),w=mathMax.apply(Math,w),w=mathMax(J&&E||0,w),C={x:p.x,y:p.y,width:p.width,height:p.height,r:0,"stroke-width":J,stroke:h,fill:toRaphaelColor({FCcolor:{color:x.toString(),ratio:X,alpha:f,angle:l}})},V=$.getGraphicalElement('colorRangeElems')&&$.getGraphicalElement('colorRangeElems')[e],V=te.setAnimation({el:V||'rect',attr:C,component:S,container:q}),$.getGraphicalElement('colorRangeElems')&&$.getGraphicalElement('colorRangeElems')[e]||(V=$.addGraphicalElement('colorRangeElems',V,!0,e),V.shadow({apply:Q,opacity:w/100})),V.show();if(!p&&$.getGraphicalElement('colorRangeElems')&&0<$.getGraphicalElement('colorRangeElems').length&&(p=$.getGraphicalElement('colorRangeElems')[$.getGraphicalElement('colorRangeElems').length-1].attr()),$.getGraphicalElement('colorRangeElems'))for(;$.getGraphicalElement('colorRangeElems')[e];)$.getGraphicalElement('colorRangeElems')[e].shadow(!1),$.getGraphicalElement('colorRangeElems')[e].hide(),e++;if(N)for(g=k.trendPointConfig,e=0,o=g.length;e<o;e+=1)b=g[e],p=n(b.startValue-H,b.endValue-H),b.isTrendZone?(c=$.getGraphicalElement('trendZoneElems')&&$.getGraphicalElement('trendZoneElems')[re],c=te.setAnimation({el:c||'rect',attr:{x:p.x,y:p.y,width:0<p.width?p.width:0,height:0<p.height?p.height:0,r:0,"stroke-width":0,fill:toRaphaelColor({FCcolor:{color:b.color,alpha:b.alpha}})},component:S,container:q,label:'final'}),!($.getGraphicalElement('trendZoneElems')&&$.getGraphicalElement('trendZoneElems')[re])&&(c=$.addGraphicalElement('trendZoneElems',c,!0,re)),c.show(),F.enableToolTip(c,b.tooltext),re++):(u=$.getGraphicalElement('trendObjElems')&&$.getGraphicalElement('trendObjElems')[ie],c=te.setAnimation({el:u||'path',attr:{stroke:convertColor(b.color,b.alpha),"stroke-dasharray":b.dashStyle,"stroke-width":b.thickness,path:[M,p.x,p.y,L,p.x,p.y+p.height]},component:S,container:q,label:'final'}),!u&&(u=$.addGraphicalElement('trendObjElems',c,!0,ie)),u.show(),F.enableToolTip(u,b.tooltext),ie++),b.useMarker&&(b.showOnTop?(r=POSITION_BOTTOM,t=0):(r=POSITION_TOP,t=W),T=90*ae[r],a=$.getGraphicalElement('marker')&&$.getGraphicalElement('marker')[ne],a=te.setAnimation({el:a||'polypath',attr:{fill:b.markerColor,stroke:b.markerBorderColor,polypath:[3,p.x,t,b.markerRadius,T,0],"stroke-width":1},component:S,container:q,label:'final'}),!($.getGraphicalElement('marker')&&$.getGraphicalElement('marker')[ne])&&(a=$.addGraphicalElement('marker',a,!0,ne),a.shadow({apply:Q})),F.enableToolTip(a,b.tooltext),a.show(),ne++);if(v=$.getGraphicalElement('trendObjElems'),v)for(;v[ie];)v[ie].hide(),ie++;if(m=$.getGraphicalElement('trendZoneElems'),m)for(;m[re];)m[re].hide(),re++;if(a=$.getGraphicalElement('marker'),a)for(;a[ne];)a[ne].hide(),a[ne].shadow(!1),ne++}configureAttributes(e){this.trimData(e),this.config.pointerArr=e;var t,o,a,r,n,l,d,s,h,p,g,c,m,u,v,b,x,f,E,w,y,T,V,C,S,A,G,k,O,F,L,R,W,P,M,D,I,H,_,j,z,N,Z,B,X=this,U=X.getFromEnv('chart'),Y=U.getFromEnv('dataSource'),J=Y.chart,K=X.getFromEnv('number-formatter'),Q=X.getFromEnv('color-manager'),$=J.plottooltext,q=X.config||(X.config={}),ee=X.components||(X.components={}),te=Y.pointers&&Y.pointers.pointer,oe=te&&te.length||0,ae={top:1,right:0,left:2,bottom:3},re=U.config.style;for(q.valuePadding=pluckNumber(J.valuepadding,2),q.tooltipSepChar=s=pluck(J.tooltipsepchar,COMMASTRING),_=pluckNumber(J.ticksbelowgauge,J.ticksbelowgraph,1),q.axisPosition=_?AXISPOSITION_BOTTOM:AXISPOSITION_TOP,q.pointerOnOpp=m=+!pluckNumber(J.pointerontop,_,1),q.valueabovepointer=x=pluckNumber(J.valueabovepointer,!m,1),q.valueInsideGauge=x===m?1:0,q.showPointerShadow=pluckNumber(J.showpointershadow,J.showshadow,1),q.showTooltip=pluckNumber(J.showtooltip,1),q.textDirection='1'===J.hasrtltext?'rtl':BLANK,q.showGaugeLabels=pluckNumber(J.showgaugelabels,1),q.colorRangeStyle={fontFamily:re.inCanfontFamily,fontSize:re.inCanfontSize,lineHeight:re.inCanLineHeight,color:re.inCancolor.replace(/^#?/,'#')},q.showValue=pluckNumber(J.showvalue,1),q.editMode=pluckNumber(J.editmode,0),q.pointerSides=j=pluckNumber(J.pointersides,3),q.pointerBorderThickness=N=pluckNumber(J.pointerborderthickness),q.showHoverEffect=z=pluckNumber(J.showhovereffect,J.plothovereffect),q.upperLimit=pluckNumber(J.upperlimit),q.lowerLimit=pluckNumber(J.lowerlimit),c=m?POSITION_TOP:POSITION_BOTTOM,q.startAngle=90*ae[c],g=ee.data||(ee.data=[]),n=0;n<oe;n++)o=g[n]||(ee.data[n]={}),a=o.config||(o.config={}),t=te&&te[n]||{},a.value=t.value,a.itemValue=r=K.getCleanValue(t.value),a.formatedVal=d=K.dataLabels(r),a.setDisplayValue=h=getValidValue(parseUnsafeString(t.displayvalue)),a.setToolText=l=getValidValue(parseUnsafeString(pluck(t.tooltext,$))),a.id=pluck(t.id,'pointer_'+n),a.showHoverEffect=k=pluckNumber(t.showhovereffect,z),a.showBorder=I=pluckNumber(t.showborder,J.showplotborder,1),a.borderWidth=G=I?pluckNumber(t.borderthickness,N):0,a.showValue=Z=pluckNumber(t.showvalue,q.showValue),Z?h===UNDEF?a.displayValue=getValidValue(d,BLANK):(a.displayValue=h,a.isLabelString=!0):a.displayValue=BLANKSTRING,a.sides=p=pluckNumber(t.sides,j),3>p&&(a.sides=3),a.radius=E=pluckNumber(t.radius,J.pointerradius,10),l===UNDEF?a.toolText=null!==d&&(B==UNDEF?d:B+s+d):(a.toolText=parseTooltext(l,[1,2],{formattedValue:d},t,J),a.isTooltextString=!0),a.tempToolText=a.toolText,a.bgAlpha=b=pluckNumber(t.alpha,t.bgalpha,J.pointerbgalpha,100),a.bgColor=f=pluck(t.color,t.bgcolor,J.pointerbgcolor,J.pointercolor,Q.getColor('pointerBgColor')),a.fillColor=H=convertColor(f,b),a.showBorder=pluckNumber(t.showborder,J.showplotborder,1),a.borderAlpha=v=pluckNumber(t.borderalpha,J.pointerborderalpha,100),a.borderColor=u=pluck(t.bordercolor,J.pointerbordercolor,Q.getColor('pointerBorderColor')),a.pointerBorderColor=w=convertColor(u,v),a.dataLink=getValidValue(t.link),a.editMode=pluckNumber(t.editmode,q.editMode),0!==k&&(k||t.bghovercolor||J.pointerbghovercolor||J.plotfillhovercolor||t.bghoveralpha||J.pointerbghoveralpha||J.plotfillhoveralpha||0===t.bghoveralpha||0===J.pointerbghoveralpha||t.showborderonhover||J.showborderonhover||0===t.showborderonhover||0===J.showborderonhover||t.borderhoverthickness||J.pointerborderhoverthickness||0===t.borderhoverthickness||0===J.pointerborderhoverthickness||t.borderhovercolor||J.pointerborderhovercolor||t.borderhoveralpha||J.pointerborderhoveralpha||0===t.borderhoveralpha||0===J.pointerborderhoveralpha||t.hoverradius||J.pointerhoverradius||0===t.hoverradius||0===J.pointerhoverradius)&&(k=!0,V=pluck(t.bghovercolor,J.pointerbghovercolor,J.plotfillhovercolor,FILLMIXDARK10),T=pluckNumber(t.bghoveralpha,J.pointerbghoveralpha,J.plotfillhoveralpha),F=pluckNumber(t.showborderonhover,J.showborderonhover),F===UNDEF&&(t.borderhoverthickness||0===t.borderhoverthickness||t.borderhovercolor||t.borderhoveralpha||0===t.borderhoveralpha?F=1:F=I),C=pluck(t.borderhovercolor,J.pointerborderhovercolor,FILLMIXDARK10),y=pluckNumber(t.borderhoveralpha,J.pointerborderhoveralpha),S=F?pluckNumber(t.borderhoverthickness,J.pointerborderhoverthickness,G||1):0,A=pluckNumber(t.hoverradius,J.pointerhoverradius,E+2),L=!!pluckNumber(t.showhoveranimation,J.showhoveranimation,1),a.hoverAttr=O={},a.outAttr=W={},G!==S&&(O['stroke-width']=S,W['stroke-width']=G),W.fill=H,R=/\{/.test(V),V=R?Q.parseColorMix(f,V)[0]:V,O.fill=convertColor(V,pluckNumber(T,b)),S&&(W.stroke=w,P=/\{/.test(C),O.stroke=convertColor(P?Q.parseColorMix(u,C)[0]:C,pluckNumber(y,v))),A&&(L?(M={r:A},D={r:E}):(O.r=A,W.r=E))),a.rolloverProperties={enabled:k,hoverAttr:O,hoverAnimAttr:M,outAttr:W,outAnimAttr:D}}trimData(e){var t,o,a=this;t=a.config.pointerArr&&a.config.pointerArr.pointer&&a.config.pointerArr.pointer.length,o=e&&e.pointer&&e.pointer.length||0,t>o&&a.removeData(t-o)}_manageSpace(e){var t,o,a,r,n,l,d,s=Math.max,h=this,p=h.getFromEnv('chart'),g=h.components,c=p.config,m=h.config,u=h.getFromEnv('smartLabel'),v=c.canvasWidth,b=c.dataLabelStyle,x=c.style.trendStyle,f=p.getFromEnv('dataSource'),E=f.trendpoints&&f.trendpoints.point,w=pluckNumber(parseInt(b.lineHeight,10),12),y=e,T=m.valuePadding,V=m.valueInsideGauge,C=0,S=0,A=0,G=0,k=0,O=0,F=0,L=h.getFromEnv('scale').config.spaceTaken,R=0,W=h.config.pointerArr&&h.config.pointerArr.pointer&&h.config.pointerArr.pointer.length,P=m.pointerOnOpp,M=g.data;for(E&&p._configueTrendPoints(),u.useEllipsesOnOverflow(c.useEllipsesWhenOverflow),u.setStyle(b);R<W;R+=1)d=M[R].config,a=T+d.radius*(3>=d.sides?.5:d.sides%2?1.1-1/d.sides:1),G=s(G,a),d.showValue&&d.displayValue!==BLANKSTRING&&(d.isLabelString?(t=u.getSmartText(d.displayValue,v,y-G),d.displayValue=t.text,t.tooltext&&(d.originalText=t.tooltext)):t=u.getOriSize(d.displayValue),d.displayValue===BLANK&&(t={height:w})),C=t&&0<t.height&&!V?t.height+a:a,C>y&&(o=C-y,a=o<a?a-o:0,C=y),P?(m.axisPosition===AXISPOSITION_BOTTOM&&(O=s(L.bottom,O),C=s(L.bottom,C)),S=s(S,C)):(m.axisPosition===AXISPOSITION_TOP&&(F=s(L.top,F),C=s(L.top,C)),A=s(C,A)),m.align=POSITION_CENTER;if(m.currentValuePadding=G,u.setStyle(x),E){for(r=c.trendPointConfig,R=0,W=r.length;R<W;R+=1)n=r[R],n&&n.displayValue!==BLANKSTRING&&(l=T+.5*n.markerRadius,k=s(l,k),t=u.getOriSize(n.displayValue),0<t.height&&(C=t.height+l),C>y&&(o=C-y,l=o<l?l-o:0,C=y),n.showOnTop?(m.axisPosition===AXISPOSITION_TOP&&(F=s(L.top,F),C=s(L.top,C)),A=s(A,C)):(m.axisPosition===AXISPOSITION_BOTTOM&&(O=s(L.bottom,O),C=s(L.bottom,C)),S=s(C,S)));m.currentTrendPadding=k}return{top:A-F,bottom:S-O}}draw(e,t){var o,a,r,n,l,d,s,h,p,g,c,m,u,v=this,b=v.config.idMap,f=v.getFromEnv('chart'),x=f.config,E=f.getChildContainer('datalabelsGroup'),w=v.getFromEnv('toolTipController'),y=v.getGraphicalElement('tempGroup'),T=v.getFromEnv('scale'),V=v.getFromEnv('animationManager'),C=v.config.pointerArr&&v.config.pointerArr.pointer,S=x.canvasWidth,A=x.canvasHeight,G=v.config,k=v.getFromEnv('number-formatter'),O=G.pointerOnOpp?A:0,F=G.showPointerShadow,L=G.showTooltip,R=T.config.axisRange.min,W=T.config.axisRange.max,P=C&&C.length||0,M=v.components,D=M.data,I={pageX:0,pageY:0},H=function(t){var e=this,o=t.data[0];!1===e.editMode||(r=f._getDataJSON(),e.dragStartX=o)},_=function(){var e,t=this,o=t.config,a=f.getFromEnv('chartInstance');if(!1!==t.config.editMode){e=a&&a.jsVars,e&&(e._rtLastUpdatedData=f._getDataJSON()),f.fireChartInstanceEvent('RealTimeUpdateComplete',{data:'&value='+o.updatedValStr,updateObject:{values:[o.updatedValStr]},prevData:r.values,source:'editMode',url:null});try{win.FC_ChartUpdated&&win.FC_ChartUpdated(a.id)}catch(e){setTimeout(function(){throw e},1)}G.showTooltip?w.enableToolTip(d,o.toolText):w.disableToolTip(d)}},j=function(e){var t=this,o=e.data,a=o[2],r=hasTouch&&getTouchEvent(e)||I,n=T.getLimit(),l=n.min,d=n.max,s=pluckNumber(t.itemValue,l),h=t.dragStartX-a,p=s-h*((W-R)/S),g=0,c=[],m=[];if(!1!==t.editMode){for(t.drag=!0,p<l?p=l:p>d&&(p=d);g<t.index;g+=1)c.push(BLANK),m.push(BLANK);c.push({value:p}),m.push(p),s!==p&&v.updateData({data:c},{duration:0})&&(t.updatedValStr=m.join('|'),t.dragStartX=a||e.pageX||r.pageX)}};for(e&&0===e.duration&&(f.state='noAnim'),y||(y=v.addGraphicalElement('tempGroup',V.setAnimation({el:'group',state:f.state,attr:{opacity:1,name:'tempGroup'},container:E,component:v}))),c=function(e){var t=this,o=t.data(EVENTARGS).index,a=D[o].config;return!0===a.drag?void(a.drag=!1):void f.plotEventHandler(t,e)},m=function(e){var t=this,o=t.data('rolloverProperties');o.enabled&&(t.attr(o.hoverAttr),o.hoverAnimAttr&&t.animate(o.hoverAnimAttr,100,ANIM_EFFECT)),f.plotEventHandler(t,e,ROLLOVER)},u=function(e){var t=this,o=t.data('rolloverProperties');o.enabled&&(t.attr(o.outAttr),o.outAnimAttr&&t.animate(o.outAnimAttr,100,ANIM_EFFECT)),f.plotEventHandler(t,e,ROLLOUT)};P--;)D[P]&&(a=D[P].config,o=k.getCleanValue(a.value),o=+toPrecision(o,10),a.itemValue=o,s=D[P].graphics||(D[P].graphics={}),p=a.rolloverProperties||{},l=G.startAngle,b[a.id]={index:P,config:a},l+=.2,n=!!F&&{opacity:Math.max(a.bgAlpha,a.borderAlpha)/100},h=a.dataLink,g={index:P,link:h,value:a.itemValue,displayValue:a.displayValue,toolText:a.toolText},d=s.pointer,d=V.setAnimation({el:d||'polypath',attr:{polypath:[a.sides,S*(pluckNumber(a.itemValue,R)-R)/(W-R),O||0,a.radius,l,0],r:a.radius,fill:a.fillColor,stroke:a.pointerBorderColor,"stroke-width":a.borderWidth},css:h||a.editMode?{cursor:POINTER,_cursor:'hand'}:{cursor:BLANK,_cursor:BLANK},label:'pointers',container:y,component:v}).show(),s.pointer||(s.pointer=d.on('fc-click',c).shadow(!!n,n&&n.opacity).hover(m,u),d.show()),t||(d.data(EVENTARGS,g).data('rolloverProperties',p),a._startAngle=l,a.editMode?(a.index=P,a.editMode=!0):a.editMode=!1,d.undrag(),a.editMode&&d.drag(j,H,_,a,a,D[P])),L?w.enableToolTip(d,a.toolText):w.disableToolTip(d));v._drawBackground(),t?v.drawPointerValues(e):v._drawWidgetLabel(e)}removeData(e){var t,o,a=this,r=a.components.data,n=function(){this.hide()};a.removeDataArr||(a.removeDataArr=[]);for(let l=0;l<e;l++)(o=r[l],!!o)&&(t=o.graphics,t.pointer&&a.getFromEnv('animationManager').setAnimation({el:t.pointer,callback:n,component:a}),t.pointerValue&&a.getFromEnv('animationManager').setAnimation({el:t.pointerValue,callback:n,component:a}),t.pointerValueCont&&a.getFromEnv('animationManager').setAnimation({el:t.pointerValueCont,callback:n,component:a}));a.removeDataArr=a.removeDataArr.concat(r.splice(0,e))}_drawWidgetLabel(e){var t,o,a,r,n,l,d,s,h,p,g,c,m,u,v,b,x,f,E,w,T,y,V,C,S,A,G,k=this,O=k.getFromEnv('chart'),F=k.getFromEnv('toolTipController'),L=O.config,R=k.getFromEnv('number-formatter'),W=k.getFromEnv('scale'),P=k.getFromEnv('animationManager'),M=O.getChildren('canvas')[0],D=O.getChildContainer('datalabelsGroup'),I=M.getGraphicalElement('dataLabelContainer'),H=W.config.axisRange.min,_=W.config.axisRange.max,z=k.config,N=z.textDirection,Z=k.getFromEnv('colorRange'),B=O.getFromEnv('dataSource'),X=B.colorrange&&Z&&Z.getColorRangeArr(H,_),U=z.colorRangeStyle||{},Y=z.showvalue,J=O.getFromEnv('dataSource').trendpoints&&O.getFromEnv('dataSource').trendpoints.point,K=L.trendPointConfig,Q=L.canvasWidth,$=L.canvasHeight,q=L.marginRight,ee=z.pointerOnOpp,te=z.valueInsideGauge,oe=z.showGaugeLabels,ae=L.dataLabelStyle,re=!1,ie=k.getFromEnv('smartLabel'),ne=pluckNumber(parseInt(ae.fontHeight,10),parseInt(ae.lineHeight,10),12),le=z.currentValuePadding+.5*ne,de=z.currentTrendPadding+.5*ne,se=z.currentTrendPadding,he={fontFamily:ae.fontFamily,fontSize:ae.fontSize,lineHeight:ae.lineHeight,fontWeight:ae.fontWeight,fontStyle:ae.fontStyle},pe=k.config.pointerArr&&k.config.pointerArr.pointer,ge=k.components,ce=ge.data;if(I=P.setAnimation({el:I||'group',attr:{name:'label-container'},container:D,component:k}),D=P.setAnimation({el:D||'group',state:'initial',attr:{transform:['T',L.canvasLeft,L.canvasTop]},label:'datalabel',component:k}),M.getGraphicalElement('dataLabelContainer')||(I=M.addGraphicalElement('dataLabelContainer',I)),le=te===ee?le-ne/4:le+ne/4,ie.useEllipsesOnOverflow(L.useEllipsesWhenOverflow),ie.setStyle(he),E=ie.getOriSize('W...'),w=E.width,U.fontWeight='normal',(d=k.getPointerLabelXY=function(e,t,o,a,r){var i;return i=o?t?$-a-le:$+le:t?le:-(le+a),T=(e-H)*Q/(_-H),T+r>Q+q&&(T=Q-r+q),{x:T,y:i,align:POSITION_MIDDLE}},s=function(e,t){return{x:(e-H+(t-e)/2)*Q/(_-H),y:$/2,width:(t-e)*Q/(_-H),height:$}}),pe&&pe.length)for(n=pe.length;n--;)if(ce[n]&&(C=ce[n].config,0!==Y&&C.displayValue!==BLANKSTRING&&(f=ie.getOriSize(C.displayValue),C.setWidth&&(f=ie.getSmartText(C.displayValue,C.setWidth,f.height,!0)),h=k.getPointerLabelXY(C.itemValue,te,ee,f.height/2,f.width/2),C.isLabelString))){for(re=!1,v=1;!re&&(p=pe[n+v],!!p);)p.isLabelString?re=!0:v+=1;p&&(g=ie.getOriSize(p.displayValue),m=d(p.y,te,ee,g.height/2),u=m.x-g.width/2-(h.x+f.width/2),a=m.x-h.x,0>u&&(r=f.width+u,r>a&&(C.setWidth=r=a),r>w?C.setWidth&&C.setWidth<=r?(c=ie.getSmartText(C.displayValue,C.setWidth,f.height,!0),C.displayValue=c.text,c.tooltext&&(C.originalText=c.tooltext)):(c=ie.getSmartText(C.displayValue,r,f.height,!0),C.displayValue=c.text,c.tooltext&&(C.originalText=c.tooltext)):(c=ie.getSmartText(C.displayValue,w,f.height,!0),C.displayValue=c.text,c.tooltext&&(C.originalText=c.tooltext),u=2*u+w-4),C.setWidth=null,r=g.width+u-4,p.setWidth=r>a?a:r>w?r:w)),C.setWidth&&(c=ie.getSmartText(C.displayValue,C.setWidth,f.height,!0),C.displayValue=c.text,c.tooltext&&(C.originalText=c.tooltext),C.setWidth=null)}if(k.drawPointerValues(e),ie.setStyle(U),X&&oe)for(n=0,l=X.length;n<l;n+=1)t=X[n],o=pluck(t.label,t.name),h=s(t.minvalue,t.maxvalue),f=h.width-4>w&&h.height-4>ne?ie.getSmartText(o,h.width-4,h.height-4):ie.getSmartText(o,h.width,h.height),y={"text-anchor":POSITION_MIDDLE,"vertical-align":POSITION_MIDDLE,x:h.x,y:h.y,direction:N,fill:U.color,text:f.text},A=M.getGraphicalElement('colorRangeLabelsCont')&&M.getGraphicalElement('colorRangeLabelsCont')[n],A=P.setAnimation({el:A||'group',attr:{name:'color-range-label'},component:k,container:I,label:'final'}),S=M.getGraphicalElement('colorRangeLabels')&&M.getGraphicalElement('colorRangeLabels')[n],S=P.setAnimation({el:S||'text',attr:y,css:U,component:k,container:A,label:'final'}),M.getGraphicalElement('colorRangeLabels')&&M.getGraphicalElement('colorRangeLabels')[n]?(S.show(),F.enableToolTip(S,f.tooltext)):(A=M.addGraphicalElement('colorRangeLabelsCont',A,!0,n),S=M.addGraphicalElement('colorRangeLabels',S,!0,n));else n=0;for(;M.getGraphicalElement('colorRangeLabelsCont')&&M.getGraphicalElement('colorRangeLabelsCont')[n];)M.getGraphicalElement('colorRangeLabelsCont')[n].hide(),n++;if(J)for(n=0,l=K.length;n<l;n+=1){for(V=K[n],V.displayValue=pluck(V.displayValue,R.dataLabels(V.startValue)),ie.setStyle(V.style),ne=ie.getOriSize('Wg').height,f=ie.getOriSize(V.displayValue),h=d(V.startValue,0,!V.showOnTop),V.setWidth&&(f=ie.getSmartText(V.displayValue,V.setWidth,f.height,!0)),re=!1,v=1;!re&&(p=J[n+v],!!p);)p.showOnTop===V.showOnTop?re=!0:v+=1;p&&(g=ie.getOriSize(p.displayValue),m=d(p.startValue,0,!p.showOnTop),u=m.x-g.width/2-(h.x+f.width/2),0>u&&(a=m.x-h.x,r=f.width+u,r>a&&(V.setWidth=r=a),r>w?V.setWidth&&V.setWidth<=r?(f=ie.getSmartText(V.displayValue,V.setWidth,f.height,!0),V.displayValue=f.text,f.tooltext&&(V.originalText=f.tooltext)):(f=ie.getSmartText(V.displayValue,f.width+u-4,f.height,!0),V.displayValue=f.text,f.tooltext&&(V.originalText=f.tooltext)):(f=ie.getSmartText(V.displayValue,w,f.height,!0),V.displayValue=f.text,f.tooltext&&(V.originalText=f.tooltext),u=2*u+w-4),V.setWidth=null,r=g.width+u-4,p.setWidth=r>a?a:r>w?r:w)),V.setWidth&&(f=ie.getSmartText(V.displayValue,V.setWidth,f.height,!0),V.displayValue=f.text,f.tooltext&&(V.originalText=f.tooltext),V.setWidth=null),x=V.showOnTop?-(se+f.height/2):$+de,b=V.isTrendZone?s(V.startValue,V.endValue).x:h.x,G=M.getGraphicalElement('trendTextElems')&&M.getGraphicalElement('trendTextElems')[n],G=P.setAnimation({el:G||'text',attr:{x:b,y:x,text:V.displayValue,"text-anchor":textHAlign[h.align],fill:convertColor(V.textColor||U.color),"font-weight":'normal',direction:N,opacity:1,title:V.originalText||BLANK},container:I,component:k,label:'final'}),M.getGraphicalElement('trendTextElems')&&M.getGraphicalElement('trendTextElems')[n]||(G=M.addGraphicalElement('trendTextElems',G,!0,n)),G.show()}else n=0;for(;M.getGraphicalElement('trendTextElems')&&M.getGraphicalElement('trendTextElems')[n];)M.getGraphicalElement('trendTextElems')[n].hide(),n++}drawPointerValues(){var e,t,o,a,r,n,l,d,s,h,p,g,c,m=this,u=m.getFromEnv('chart'),v=u.getChildContainer('datalabelsGroup'),b=m.components.data,x=m.config,f=x.showTooltip,E=m.getFromEnv('toolTipController'),w=x.pointerOnOpp,y=x.valueInsideGauge,T=x.textDirection,V=m.getFromEnv('animationManager'),C=m.getFromEnv('smartLabel'),S=m.config.pointerArr&&m.config.pointerArr.pointer,A=u.config.dataLabelStyle,G=S&&S.length,k=u.config,O=k.marginLeft,F={fontFamily:A.fontFamily,fontSize:A.fontSize,lineHeight:A.lineHeight,fontWeight:A.fontWeight,fontStyle:A.fontStyle},L=m.pool;for('initial'===u.state&&V.setAnimation({state:'initial',el:v,attr:{opacity:1},component:m}),C.setStyle(A);G--;)b[G]&&(c=!1,h=b[G].graphics,o=b[G].config,n=o.displayValue,t=o.showValue,0!==t&&n!==BLANKSTRING?(p=C.getOriSize(n),s=p.height,p=C.getSmartText(n,k.width,s),d=p.width/2,l=m.getPointerLabelXY(o.itemValue,y,w,.5*s,d),d>O+l.x&&(l.x=d-O),e=p.tooltext||BLANKSTRING,g={x:l.x,y:l.y,"text-anchor":textHAlign[l.align],title:o.originalText||BLANK,text:p.text,fill:A.color,direction:T,"text-bound":[A.backgroundColor,A.borderColor,A.borderThickness,A.borderPadding,A.borderRadius,A.borderDash]},r=V.setAnimation({el:h.pointerValueCont||L&&L.pointerValueCont[0]||'group',attr:{name:'label-group'},container:v,component:m,label:'labelGroup'}).show(),a=V.setAnimation({el:h.pointerValue||L&&L.pointerValue[0]||'text',attr:g,css:F,container:r,component:m,label:'pointerValues'}).show(),f?E.enableToolTip(a,e):E.disableToolTip(a),!h.pointerValue&&(L&&L.pointerValue[0]?(L.pointerValue.splice(0,1),L.pointerValueCont.splice(0,1)):c=!0),h.pointerValue=a,h.pointerValueCont=r,!c&&a.show()):(h.pointerValue&&h.pointerValue.hide(),h.pointerValueCont&&h.pointerValueCont.hide(),h.pointerValue&&E.disableToolTip(h.pointerValue)))}getDataLimits(){var e,t,o,a,r,n,l=this,d=l.config,s=l.getFromEnv('chart').getFromEnv('dataSource'),h=l.components.data||l.config.pointerArr&&l.config.pointerArr.pointer||s.dials&&s.dials.dial,p=s.colorrange,g=p&&p.color,c=h&&h.length,m=d.upperLimit,u=d.lowerLimit,v=-Infinity,b=+Infinity;for(e=0;e<c;e++)(a=h[e].config.value,a!==BLANK)&&(o=v=mathMax(v,+a),t=b=mathMin(b,+a));for(c=g&&g.length,e=0;e<c;e++)r=+g[e].maxvalue,n=+g[e].minvalue,m&&r>m&&(r=m),u&&n<u&&(n=u),b=safeMin([b,n]),v=safeMax([v,r]);return{forceMin:t!==b,forceMax:o!==v,max:v,min:b}}updateData(e,t){if(e===this.config.lastUpdatedObj)return!1;var o,a,r,n,l,d,s,h,p,g,c,m,u,v=this,b=v.getFromEnv('chart'),x=v.getFromEnv('number-formatter'),f=v.components.data,E=v.components.data,w=E&&E.length||0,y={},T=null,V=[],C=v.getFromEnv('chart-attrib'),S=C.plottooltext;for(e=e.data,m=t||b.get(configStr,animationObjStr),s=e.length,n=0;n<s;n++)l=e[n].id,l&&(y[l]=e[n]);if(d=Object.keys(y).length,w){for(;w--;)(h={},u={},p=f[w].config,l=p.id,g=UNDEF,g=d?y[l]:e[w],!!g)&&(c=g.value,a=g.tooltext,o=g.label,r=g.showlabel,c!==UNDEF&&c!==BLANK?(h.value=u.value=c,T=u.displayvalue=u.tooltext=x.dataLabels(u.value),u.hasNewData=!0):u.value=p.formatedVal,o&&(u.displayvalue=o,u.hasNewData=!0),'0'==r&&(u.displayvalue=BLANKSTRING,u.hasNewData=!0),a&&(u.hasNewData=!0),a=getValidValue(parseUnsafeString(pluck(a,S))),u.hasNewData&&(V[w]=u,p.value=u.value,p.displayValue=p.displayValue||'1'==r?u.displayvalue:BLANKSTRING,p.toolText=a===UNDEF?T:parseTooltext(a,[1,2],{formattedValue:T},h)));return V.length&&(this.config.lastUpdatedObj=e,this.draw(m,!0)),!!V.length}}}export default HlineargaugeDataset;