quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 13.1 kB
JavaScript
import ScatterDataset from'../../../../fc-charts/src/dataset/scatter';import{preDefStr,parseTooltext,pluck,getValidValue,pluckNumber,HUNDREDSTRING,getFirstValue,convertColor,getFirstColor,getFirstAlpha,parseUnsafeString}from'../../../../fc-core/src/lib';import KdTree from'../../../../fc-charts/src/dataset/_internal/kdtree';import{addDep}from'../../../../fc-core/src/dependency-manager';import errorscatterAnimation from'./line.animation';import errorscatterErrorAnimation from'./error.animation';var UNDEF,colorStrings=preDefStr.colors,COLOR_AAAAAA=colorStrings.AAAAAA,ROUND=preDefStr.ROUND,PERCENTAGESTRING=preDefStr.PERCENTAGESTRING,BLANK='',COMMASPACE=', ',POINTER='pointer',HORIZONTAL='horizontal',VERTICAL='vertical',OPTIONAL='optional',M='M',H='H',V='V';addDep({name:'errorscatterAnimation',type:'animationRule',extension:errorscatterAnimation}),addDep({name:'errorscatterErrorAnimation',type:'animationRule',extension:errorscatterErrorAnimation});class ErrorScatter extends ScatterDataset{getType(){return'dataset'}getName(){return'errorScatter'}ErrorValueConfigure(){var a,b,c,d,e,f,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,aa,ba=Math.min,ca=Math.max,da=Math.round,ea=this,fa=ea.getFromEnv('chart'),ga=ea.config,ha=ga.JSONData,ia=ea.getFromEnv('dataSource').categories&&ea.getFromEnv('dataSource').categories[0].category,ja=ea.getFromEnv('chart-attrib'),ka=ha.data,la=ka&&ka.length||0,ma=ea.components.data,na=ea.getFromEnv('number-formatter'),oa=pluck(ja.tooltipsepchar,COMMASPACE),pa=parseUnsafeString(ja.yaxisname),qa=parseUnsafeString(ja.xaxisname),ra=ga.parentYAxis,sa=-Infinity,ta=+Infinity,ua=sa,va=ta,wa=ta,xa=sa,ya=function(b,d){var e;return ga.showTooltip?null===w?e=!1:b===UNDEF?null===w?e=!1:(ga.seriesNameInTooltip&&(C=getFirstValue(ha&&ha.seriesname)),e=C?C+oa:BLANK,e+=v.x?na.xAxis(v.x)+oa:BLANK,e+=c.toolTipValue):(A=[1,2,3,4,5,6,7,8,9,10,11,99,100,101,102,103,104,105,106,107,109],B={yaxisName:pa,xaxisName:qa,yDataValue:w,xDataValue:c.label,formattedValue:c.toolTipValue,horizontalErrorValue:r,horizontalErrorDataValue:t,verticalErrorValue:s,verticalErrorDataValue:u,horizontalErrorPercentValue:y,verticalErrorPercentValue:z,label:c.label,errorValue:d,errorDataValue:d,errorPercentValue:c.errorPercentValue,errorPercentDataValue:c.errorPercentValue},e=parseTooltext(b,A,B,a,ja,ha)):e=!1,e};for(ga.errorBarShadow=f=pluckNumber(ja.errorbarshadow,ja.showshadow,0),ga.ignoreEmptyDatasets=pluckNumber(ha.ignoreemptydatasets,0),ga.notHalfErrorBar=!pluckNumber(ja.halferrorbar,1),ga.errorBarAlpha=getFirstAlpha(pluck(ha.errorbaralpha,ja.errorbaralpha)),ga.errorBarWidth=g=pluckNumber(ha.errorbarwidth,ja.errorbarwidth,5),ga.errorBarColor=h=convertColor(getFirstColor(pluck(ha.errorbarcolor,ja.errorbarcolor,COLOR_AAAAAA)),d),ga.errorBarThickness=e=pluckNumber(ha.errorbarthickness,ja.errorbarthickness,1),ga.shadowOpacity=f?d/250:0,ga.halfHorizontalErrorBar=j=pluckNumber(ja.halfhorizontalerrorbar,1),ga.halfVerticalErrorBar=k=pluckNumber(ja.halfverticalerrorbar,1),ga.initAnimation===UNDEF&&(ga.initAnimation=fa.initAnimation),l=pluck(ha.horizontalerrorbaralpha,ha.errorbaralpha,ja.horizontalerrorbaralpha,d),m=pluckNumber(ha.verticalerrorbaralpha,ha.errorbaralpha,ja.verticalerrorbaralpha,d),n=convertColor(pluck(ha.horizontalerrorbarcolor,ha.errorbarcolor,ja.horizontalerrorbarcolor,h),l),o=convertColor(pluck(ha.verticalerrorbarcolor,ha.errorbarcolor,ja.verticalerrorbarcolor,h),m),p=pluckNumber(ha.horizontalerrorbarthickness,ha.errorbarthickness,ja.horizontalerrorbarthickness,e),q=pluckNumber(ha.verticalerrorbarthickness,ha.errorbarthickness,ja.verticalerrorbarthickness,e),ga.horizontalErrorBarWidth=pluckNumber(ha.horizontalerrorbarwidth,ja.horizontalerrorbarwidth,g),ga.verticalErrorBarWidth=pluckNumber(ha.verticalerrorbarwidth,ja.verticalerrorbarwidth,g),ga.cumulativeValueOnErrorBar=pluckNumber(ha.cumulativevalueonerrorbar,ja.cumulativevalueonerrorbar,1),aa=0;aa<la;aa++)ka&&(a=ka&&ka[aa],b=ma[aa],c=b&&b.config,b||(b=ma[aa]={graphics:{}}),b.config||(c=ma[aa].config={}),v=c.setValue,c.errorValue=a.errorvalue,c.cumulativeValueOnErrorBar=Z=pluckNumber(a.cumulativevalueonerrorbar,ga.cumulativeValueOnErrorBar,1),c.hErrorValue=r=na.getCleanValue(pluck(a.horizontalerrorvalue,a.errorvalue)),t=na.xAxis(r),c.vErrorValue=s=na.getCleanValue(pluck(a.verticalerrorvalue,a.errorvalue)),u=na.dataLabels(s),c.hPositiveErrorValue=J=na.getCleanValue(pluck(a.horizontalpositiveerrorvalue,a.positiveerrorvalue,r)),c.hNegativeErrorValue=I=na.getCleanValue(pluck(a.horizontalnegativeerrorvalue,a.negativeerrorvalue,r)),c.vPositiveErrorValue=H=na.getCleanValue(pluck(a.verticalpositiveerrorvalue,a.positiveerrorvalue,s)),c.vNegativeErrorValue=T=na.getCleanValue(pluck(a.verticalnegativeerrorvalue,a.negativeerrorvalue,s)),y=da(r/v.x*HUNDREDSTRING*HUNDREDSTRING)/HUNDREDSTRING+PERCENTAGESTRING,z=da(s/v.y*HUNDREDSTRING*HUNDREDSTRING)/HUNDREDSTRING+PERCENTAGESTRING,L=na.dataLabels(J,ra),K=getValidValue(parseUnsafeString(pluck(a.errorplottooltext,ha.errorplottooltext,ja.errorplottooltext,L))),O=na.dataLabels(I,ra),R=getValidValue(parseUnsafeString(pluck(a.errorplottooltext,ha.errorplottooltext,ja.errorplottooltext,O))),Q=na.dataLabels(H,ra),W=getValidValue(parseUnsafeString(pluck(a.errorplottooltext,ha.errorplottooltext,ja.errorplottooltext,Q))),_=na.dataLabels(T,ra),$=getValidValue(parseUnsafeString(pluck(a.errorplottooltext,ha.errorplottooltext,ja.errorplottooltext,_))),M=X=Y=U=UNDEF,Z&&(N=na.dataLabels(v.x+J,ra),M=getValidValue(parseUnsafeString(pluck(a.errorplottooltext,ha.errorplottooltext,ja.errorplottooltext,N))),P=na.dataLabels(v.x-I,ra),X=getValidValue(parseUnsafeString(pluck(a.errorplottooltext,ha.errorplottooltext,ja.errorplottooltext,P))),S=na.dataLabels(v.y+H,ra),Y=getValidValue(parseUnsafeString(pluck(a.errorplottooltext,ha.errorplottooltext,ja.errorplottooltext,S))),V=na.dataLabels(v.y-T,ra),U=getValidValue(parseUnsafeString(pluck(a.errorplottooltext,ha.errorplottooltext,ja.errorplottooltext,V)))),ia&&ia[aa]&&(c.label=getValidValue(parseUnsafeString(pluck(ia[aa].tooltext,ia[aa].label)))),c.halfHorizontalErrorBar=a.horizontalpositiveerrorvalue||a.positiveerrorvalue||a.horizontalnegativeerrorvalue||a.negativeerrorvalue?j=0:j=ga.halfHorizontalErrorBar,c.halfVerticalErrorBar=a.verticalpositiveerrorvalue||a.positiveerrorvalue||a.verticalnegativeerrorvalue||a.negativeerrorvalue?k=0:k=ga.halfVerticalErrorBar,null!==v.x&&(D=v.x+ +J,E=v.x-(j?0:+I),xa=ca(xa,D,E),wa=ba(wa,D,E)),null!==v.y&&(D=v.y+ +H,E=v.y-(k?0:+T),ua=ca(ua,D,E),va=ba(va,D,E)),c.useHorizontalErrorBar=pluckNumber(a.usehorizontalerrorbar,ha.usehorizontalerrorbar,ja.usehorizontalerrorbar,0),c.useVerticalErrorBar=pluckNumber(a.useverticalerrorbar,ha.useverticalerrorbar,ja.useverticalerrorbar,1),c.errorValueConf={},F=c.errorValueConf.horizontal={},F.mandatory={},F.mandatory.marker={errorValue:-(null===J?UNDEF:J),tooltext:ya(K,L),errorBarColor:n,isHorizontal:!0,errorBarThickness:p,shadowOpacity:f?l/250:0},F.mandatory.limit={errorValue:-(null===J?UNDEF:J),tooltext:Z?ya(M,N):ya(K,L),errorBarColor:n,isHorizontal:!0,errorBarThickness:p,shadowOpacity:f?l/250:0,errorEdgeBar:!0},F.optional={},F.optional.marker={errorValue:I,tooltext:ya(R,O),errorBarColor:n,isHorizontal:!0,errorBarThickness:p,shadowOpacity:f?l/250:0},F.optional.limit={errorValue:I,tooltext:Z?ya(X,P):ya(R,O),errorBarColor:n,isHorizontal:!0,errorBarThickness:p,shadowOpacity:f?l/250:0,errorEdgeBar:!0},G=c.errorValueConf.vertical={},G.mandatory={},G.mandatory.marker={errorValue:-(null===H?UNDEF:H),tooltext:ya(W,Q),errorBarColor:o,errorBarThickness:q,shadowOpacity:f?m/250:0},G.mandatory.limit={errorValue:-(null===H?UNDEF:H),tooltext:Z?ya(Y,S):ya(W,Q),errorBarColor:o,errorBarThickness:q,shadowOpacity:f?m/250:0,errorEdgeBar:!0},G.optional={},G.optional.marker={errorValue:T,tooltext:ya($,_),errorBarColor:o,errorBarThickness:q,shadowOpacity:f?m/250:0},G.optional.limit={errorValue:T,tooltext:Z?ya(U,V):ya($,_),errorBarColor:o,errorBarThickness:q,shadowOpacity:f?m/250:0,errorEdgeBar:!0},v=c.setValue,w=c.formatedVal,ga.showTooltip?c.setTooltext===UNDEF?null===w?x=!1:(ga.seriesNameInTooltip&&(C=getFirstValue(ha&&ha.seriesname)),x=C?C+oa:BLANK,x+=v.x?na.xAxis(v.x)+oa:BLANK,x+=c.toolTipValue):(A=[1,2,3,4,5,6,7,8,9,10,11,99,100,101,102,103,104,105,106,107,109],B={yaxisName:pa,xaxisName:qa,yDataValue:w,xDataValue:c.label,formattedValue:c.toolTipValue,horizontalErrorValue:r,horizontalErrorDataValue:t,verticalErrorValue:s,verticalErrorDataValue:u,horizontalErrorPercentValue:y,verticalErrorPercentValue:z,label:c.label,errorValue:c.errorValue,errorDataValue:na.dataLabels(c.errorValue,ga.parentYAxis)},x=parseTooltext(c.setTooltext,A,B,a,ja,ha)):x=!1,c.toolText=x);ga.xMax=xa,ga.xMin=wa,ga.yMin=va,ga.yMax=ua}drawErrorValue(){var a,b,c,d,e,f,g,h,j,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,I,J,K,L,N,O,P,Q,R,S,T,U,W,X,Y,Z=Math.abs,$=Math.round,_=this,aa=_.config.JSONData,ba=_.config,ca=aa.data,da=ca&&ca.length,ea=_.getState('visible'),fa=_.getFromEnv('xAxis'),ga=_.getFromEnv('yAxis'),ha=_.components.data,ia=ba.shadowOpacity,ja=_.getContainer('errorPlotGroup'),ka=_.getContainer('errorShadowGroup'),la=_.getFromEnv('animationManager'),ma=[],na=function(a){return function(){'disappearing'===a&&this.hide()}};for(b=0;b<da;b++)if(o=ha[b],Y=o.errorTrackerConfig={},Y.errorTrackerArr=[],r=o&&o.config,p=r&&r.setValue,T=r.errorValueConf,o!==UNDEF&&p!==UNDEF&&null!==p&&T){if(X=Object.keys(d=o.graphics),null===r.vErrorValue&&null===r.vPositiveErrorValue&&null===r.vNegativeErrorValue)for(S=0;S<X.length;S++)X[S].match(/error-horizontal-/)&&(la.setAnimation({el:d[X[S]],state:'disappearing',callback:na('disappearing')}),d[X[S]].shadow({opacity:0}));if(null===r.hErrorValue&&null===r.hPositiveErrorValue&&null===r.vPositiveErrorValue)for(S=0;S<X.length;S++)X[S].match(/error-vertical-/)&&(la.setAnimation({el:d[X[S]],state:'disappearing',callback:na('disappearing')}),d[X[S]].shadow({opacity:0}));if(!(null===r.hErrorValue&&null===r.vErrorValue&&r.hPositiveErrorValue&&r.hNegativeErrorValue&&r.vPositiveErrorValue&&r.vNegativeErrorValue))for(U in j=r.setLink,N=o._xPos,O=o._yPos,n=O,m=N,T)if(T.hasOwnProperty(U))for(B in C=T[U],C)if(C.hasOwnProperty(B))for(F in D=C[B],D)if(D.hasOwnProperty(F)){if(q=UNDEF,E=D[F],a={},G=Y.errorTrackerArr[0]={},L=null,G.tooltext=E.tooltext,J=n,I=E.errorValue,s=!r.useHorizontalErrorBar&&U===HORIZONTAL,t=!r.useVerticalErrorBar&&U===VERTICAL,u=r.halfHorizontalErrorBar&&U===HORIZONTAL&&B===OPTIONAL,v=r.halfVerticalErrorBar&&U===VERTICAL&&B===OPTIONAL,s||t||u||v)q='disappearing';else if(null===I||I===UNDEF||isNaN(I))q='disappearing';else{if(h=E.errorBarColor,e=E.isHorizontal,f=E.errorBarThickness,g=e?ba.horizontalErrorBarWidth:ba.verticalErrorBarWidth,K=ea?g/2:0,A=ea?-1:0,W=5<f?f/2+.5:5.5/2,e){if(z=fa.getPixel(o.config._x+I*A),w=z,x=m,w=$(J)+f%2/2,x=$(z)+f%2/2,E.errorEdgeBar)for(y=[M,x,w-K,V,w+K],P=2*K,Q=w-K,R=W;R<P;R+=2*W)ma.push({x:x,y:Q+R,r:W,index:b,data:o,toolText:E.tooltext,barType:'h'});else for(y=[M,m,w,H,x],P=Z(m-x),Q=m>x?x:m,R=W;R<P;R+=2*W)ma.push({x:Q+R,y:w,r:W,index:b,data:o,toolText:E.tooltext,barType:'h'});}else if(z=ga.getPixel(o.config._y+I*A),w=z,x=m,w=$(z)+f%2/2,x=$(m)+f%2/2,E.errorEdgeBar)for(y=[M,x-K,w,H,x+K],P=2*K,Q=x-K,R=W;R<=P;R+=2*W)ma.push({x:Q+R,y:w,r:W,index:b,data:o,toolText:E.tooltext,barType:'v'});else for(y=[M,x,J,V,w],P=Z(J-w),Q=J>w?w:J,R=W;R<=P;R+=2*W)ma.push({x:x,y:Q+R,r:W,index:b,data:o,toolText:E.tooltext,barType:'v'});a={path:y,"stroke-width":ea?f:0,stroke:h,cursor:j?POINTER:BLANK,"stroke-linecap":ROUND}}(c=['error',U,B,F].join('-'),q||(d[c]?q='updating':q='appearing'),d[c]||'disappearing'!==q)&&(L=d[c]=la.setAnimation({el:d[c]||'path',container:ja,component:_,attr:a,state:q,label:'path',callback:na(q)}),'disappearing'!==q&&L.show(),L.shadow({opacity:'disappearing'===q?0:ia},ka))}}ma.length&&(this.config.dataTreeB=new KdTree().buildKdTree(ma)),ba.initAnimation=!1}_getHoveredPlot(a,b){var c,d,e,f,g,h;return(c=this.config.dataTree.getNeighbour({x:a,y:b},!0),c)?(e=c.data.config.toolText,c.data.config.finalTooltext=e,g=c.data.config.hoverEffects,h=c.data.graphics.element,h.data('hoverEnabled',g.enabled),g.enabled&&h.attr(h.getData().setRolloverAttr),{pointIndex:c.index,hovered:!0,pointObj:c.data}):(d=this.config.dataTreeB&&this.config.dataTreeB.getNeighbour({x:a,y:b},!0),d)?('h'===d.barType?f=d.toolText:'v'===d.barType&&(f=d.toolText),d.data.config.finalTooltext=f,h=d.data.graphics.element,h.data('hoverEnabled',!1),h.attr(h.getData().setRolloutAttr),{pointIndex:d.index,hovered:!0,pointObj:d.data}):void 0}removePlots(){var a,b,c,d,e=this,f=e.components,g=f.removeDataArr,h=f.pool||(f.pool={element:[],hotElement:[],label:[]}),j=e.getFromEnv('animationManager'),k=g.length,l=function(){this.hide(),this.shadow({opacity:0})};for(c=0;c<k;c++)if(a=g[0],g.splice(0,1),a&&a.graphics){for(d in b=a.graphics,b)b.hasOwnProperty(d)&&j.setAnimation({el:b[d],component:e,attr:{},state:'disappering',callback:l});a.graphics.element&&(h.element=h.element.concat(a.graphics.element)),a.graphics.label&&(h.label=h.label.concat(a.graphics.label))}f.pool=h}}export default ErrorScatter;