UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 22.1 kB
import Entities from'../entities';import KdTree from'../../../../fc-charts/src/dataset/_internal/kdtree';import Annotation from'../../../../fc-features/src/annotation/ext-annotation';import{addDep}from'../../../../fc-core/src/dependency-manager';import mapsAnimation from'../_internal/map-entities.animation';import{pluck,extend2,parseTooltext,pluckNumber,parseUnsafeString}from'../../../../fc-core/src/lib';import{raiseEventGroup}from'../../../../fc-core/src/event-api';import{priorityList}from'../../../../fc-core/src/schedular';let UNDEF,BLANK='',POSITION_TOP='top',POSITION_BOTTOM='bottom',POSITION_RIGHT='right',POSITION_LEFT='left',POSITION_MIDDLE='middle',POSITION_CENTER='center',INNERRADIUSFACTOR=.6,math=window.Math,mathMin=math.min,mathMax=math.max,MARKER_ITEM_KEY='items',hoverFn=function(a){let b,c=this,d=c.getFromEnv('chart'),e=c.getChildren('mapAnnotations')[0],f=a.markerShape,g=f.groupConfig,h=f.data('unfilteredConfig'),i=h._markerEventArgs,j=a.config;h.hovereffect&&('circle'===f.config.type&&(b=extend2({fillcolor:h.hoverfillcolor,fillalpha:h.hoverfillalpha,fillangle:h.hoverfillangle,fillratio:h.hoverfillratio,gradientUnits:'objectBoundingBox',radialGradient:1},h._hoverattrs)),b=extend2({},h._hoverattrs),e.update(f.getId(),b)),i||(i=h._markerEventArgs={x:+h.x,y:+h.y,scaledX:h.x*g.scaleX,scaledY:h.y*g.scaleY,chartX:h.x*g.scaleX+g.grpXShift,chartY:h.y*g.scaleY+g.grpYShift,id:h.id,label:h.label}),raiseEventGroup(j.options.id,'markerRollOver',i,d.getFromEnv('chartInstance'),j,UNDEF,UNDEF,UNDEF)},hoverOutFn=function(a){let b,c=this,d=c.getFromEnv('chart'),e=c.getChildren('mapAnnotations')[0],f=a.markerShape,g=f.getElement(),h=a.config,i=f.data('unfilteredConfig');g&&i.hovereffect&&('circle'===f.config.type&&(b=extend2({fillcolor:f.config.rawColor,fillalpha:f.config.rawAlpha,fillangle:f.config.rawAngle,fillratio:f.config.rawRatio,gradientUnits:'objectBoundingBox',radialGradient:'radial'===f.config.rawFillPattern},i._defaultattrs)),b=extend2({},i._defaultattrs),e.update(f.getId(),b)),raiseEventGroup(h.id,'markerRollOut',i._markerEventArgs,d.getFromEnv('chartInstance'),UNDEF,UNDEF,UNDEF)},clickFn=function(a,b){let c=this,d=b.config.options,e=c.getFromEnv('chart'),f=b.markerShape,g=f.config,h=f.groupConfig,i=c.getFromEnv('linkClickFN'),j=f.config.link,k=g._markerEventArgs;j&&i&&i.call({link:j},!0),k||(k=g._markerEventArgs={x:+g.x,y:+g.y,scaledX:g.x*h.scaleX,scaledY:g.y*h.scaleY,chartX:g.x*h.scaleX+h.grpXShift,chartY:g.y*h.scaleY+h.grpYShift,id:d.id,label:d.label}),e.fireChartInstanceEvent('markerClick',k,a)},convertToObj=function(a,b){let c,d=a&&a.length||!1,e=b||'id',f={};if(!a)return a;for(;d--;)c=a[d],c[e]!==UNDEF&&(f[c[e].toLowerCase()]=c);return f};addDep({name:'mapsAnimation',type:'animationRule',extension:mapsAnimation});class Markers extends Entities{constructor(){super(),this.components={},this.getLabelAlignment={top:function(a,b,c){return{x:a.toString(),y:(b-c).toString(),align:POSITION_CENTER,valign:POSITION_TOP}},left:function(a,b,c){return{x:(a-c).toString(),y:b.toString(),align:POSITION_RIGHT,valign:POSITION_MIDDLE}},right:function(a,b,c){return{x:(a+c).toString(),y:b.toString(),align:POSITION_LEFT,valign:POSITION_MIDDLE}},bottom:function(a,b,c){return{x:a.toString(),y:(b+c).toString(),align:POSITION_CENTER,valign:POSITION_BOTTOM}},center:function(a,b){return{x:a.toString(),y:b.toString(),align:POSITION_CENTER,valign:POSITION_MIDDLE}}},this.getWrapWidth={right:function(){return arguments[1]},left:function(a,b){return a-b},center:function(a,b){return 2*mathMin(b,a-b)}},this.getWrapHeight={top:function(){return arguments[1]},middle:function(a,b){return 2*mathMin(b,a-b)},bottom:function(a,b){return a-b}},this.hoverFn=hoverFn,this.hoverOutFn=hoverOutFn,this.clickFn=clickFn}getName(){return'markers'}getType(){return'dataset'}configureAttributes(a){if(!a)return;this.JSONData=a;let b,c=this,d=c.getChildren('mapAnnotations')&&c.getChildren('mapAnnotations')[0],e=c.getFromEnv('chart'),f=e.config.markerOpts;d||(b=new Annotation,c.attachChild(b,'mapAnnotations'),d=c.getChildren('mapAnnotations')[0]),d.destroy(),c.calculateDataLimits(),f.dataEnabled?this._parseMarkers():this.defineMarkersNShapes(),this.configureConnectors()}calculateMarkerRadiusLimits(){if(this.JSONData){let a=this,b=a.JSONData,c=a.config,d=a.getFromEnv('chart'),e=d.config.width,f=d.config.height,g=b.markermaxradius,h=b.markerminradius,i=Markers.getMarkerRadiusLimits(e,f,g,h);c.minRadius=i.min,c.maxRadius=i.max}}calculateDataLimits(){let a,b,c,d,e,f=this,g=f.getFromEnv('chart'),h=f.config,j=g.jsonData,k=j.markers||{},l=k[MARKER_ITEM_KEY]||[],m=this.getFromEnv('number-formatter'),n=+Infinity,o=-Infinity;for(e=0,c=l.length;e<c;e++)a=l[e],d=a.value,b=m.getCleanValue(d),null!==b&&(n=mathMin(b,n),o=mathMax(b,o));h.min=n,h.max=o}_parseMarkers(){let a,b,c,d,e,f,g,h,j=this,k=j.getFromEnv('chart'),l=k.jsonData,m=l.markers,n=m[MARKER_ITEM_KEY],o=m.shapes,p=k.config.markerOpts,q=this.getFromEnv('number-formatter'),r=j.components.shapeObjs={},s=j.components.markerObjs={};if(n&&n.length){if(o&&o.length)for(b=o.length;b;b-=1)d=o[b-1],(h=d.id.toLowerCase())&&(r[h]=d);for(b=n.length;b--;)d=n[b],(h=d.id&&d.id.toLowerCase())&&(a=d.value,a!==UNDEF&&''!==a&&(a=parseFloat(a)),c=Markers._initializeMarkerItem(h,d,null,k),e=c.config.options.shapeid,e&&'string'==typeof e&&(e=e.toLowerCase()),f=c.config,g=f.options,f.cleanValue=q.getCleanValue(a),f.formattedValue=null===f.cleanValue?UNDEF:q.dataLabels(a),f.fillColor=pluck(g.fillcolor,g.color,p.fillColor),f.fillAlpha=pluck(g.fillalpha,g.alpha,p.fillAlpha),f.fillRatio=pluck(g.fillratio,p.fillRatio),f.fillAngle=pluck(g.fillangle,p.fillAngle),f.borderThickness=pluckNumber(g.borderthickness,p.borderThickness),f.borderColor=pluck(g.bordercolor,p.borderColor),f.borderAlpha=pluck(g.borderalpha,p.borderAlpha),f.labelPadding=g.labelpadding||p.labelPadding,d.__hideMarker&&(c._isHidden=!0),e&&(c.shapeObj=r[e]),s[h]=c)}}defineMarkersNShapes(){let a,b,c,d,e,f,g,h,j=this,k=j.getFromEnv('chart'),l=k.jsonData,m=l.markers,n=m.definition,o=this.getFromEnv('number-formatter'),p=k.config.markerOpts,q=convertToObj(n)||{},r=convertToObj(m.application)||{},s=m.shapes,t=j.components.shapeObjs=j.components.shapeObjs||(j.components.shapeObjs={}),u=j.components.markerObjs=j.components.markerObjs||(j.components.markerObjs={}),v={},w={};if(n&&n.length){for(d in t)v[d]=!1;for(d in u)w[d]=!1;if(s&&s.length)for(d=s.length;d;d-=1)f=s[d-1],(h=f.id.toLowerCase())&&(t[h]=f,v[h]=!0);for(h in q)f=q[h],e=u[h]=Markers._initializeMarkerItem(h,f,r[h],k),w[h]=!0,g=e.config.options.shapeid,b=e.config,c=f.value,b.cleanValue=o.getCleanValue(c),a=b.options,b.formattedValue=null===b.cleanValue?UNDEF:o.dataLabels(c),b.fillColor=pluck(a.fillcolor,a.color,p.fillColor),b.fillAlpha=pluck(a.fillalpha,a.alpha,p.fillAlpha),b.fillRatio=pluck(a.fillratio,p.fillRatio),b.fillAngle=pluck(a.fillangle,p.fillAngle),b.borderThickness=pluckNumber(a.borderthickness,p.borderThickness),b.borderColor=pluck(a.bordercolor,p.borderColor),b.borderAlpha=pluck(a.borderalpha,p.borderAlpha),b.labelPadding=a.labelpadding||p.labelPadding,b.options.tooltext=pluck(a.tooltext,p.tooltext),b.link=a.link,g&&(e.shapeObj=t[g.toLowerCase()]);for(d in v)v[d]||delete t[d];for(d in u)w[d]||delete u[d]}}static getMarkerRadiusLimits(a,b,c,d){let e=mathMin(a,b),f=.02;return d=parseFloat(d),c=parseFloat(c),isNaN(d)||isNaN(c)?isNaN(d)?isNaN(c)?{min:f*e,max:f*3.5*e}:{min:parseInt(c/10,10),max:c}:{min:d,max:10*d}:d<c?{min:d,max:c}:{min:c,max:d}}getDataLimits(){let a=this,b=a.config;return{min:b.min,max:b.max}}static _initializeMarkerItem(a,b,c){let d,e={},f=e.config;return f||(f=e.config={}),f.id=a,f.definition=b,f.application=c,f.hasValue=null,f.value=null,f.options=null,f.label=null,f.markerShape=null,f.markerLabel=null,f.drawOptions={shape:null,label:null},f.drawComplete=!1,d=e.config.options=extend2({},f.definition),f.dataEnabled?!isNaN(d.value)&&''!==d.value&&(e.value=parseFloat(d.value),e.hasValue=!0):f.applyAll?f.options=extend2(d,f.application):c&&(f.options=extend2(d,f.application)),e}configureConnectors(){let a,b,c,d,e,f,g,h,j,k,l,m,n,o,p,q=this,r=q.getFromEnv('chart'),s=q.getChildren('mapAnnotations')[0],t=r.jsonData,u=q.components,v=t.markers||{},w=v.connector||v.connectors||[],x=u.markerObjs,y=w.length,z=q.components.connectors,A=function(a){return function(b){let c=this,d=c.data('unfilteredConfig');d.hoverEffect&&s.update(c.getId(),d._hoverAttrs),r.fireChartInstanceEvent('connectorrollover',a,b)}},B=function(a){return function(b){let c=this,d=c.data('unfilteredConfig');d.hoverEffect&&s.update(c.getId(),d._defaultAttrs),r.fireChartInstanceEvent('connectorrollout',a,b)}},C=function(a){return function(b){r.fireChartInstanceEvent('connectorClick',a,b)}},D=r.config.connectorOpts,E={};for(z=q.components.connectors=[],p=0;p<y;p++)(o=w[p],o.from||o.to)&&(c=x[o.from.toLowerCase()],d=x[o.to.toLowerCase()],c&&d)&&(e=w[p].label,E=z[p],E||(E=z[p]={}),E.config||(a=E.config={}),E.graphics||(E.graphics={}),a=E.config=extend2({},o),a.fromMarker=c,a.toMarker=d,a.link=o.link,a.showTooltip=pluckNumber(o.showtooltip,D.showTooltip),f=a.tooltext=a.showTooltip?pluck(o.tooltext,D.tooltext):BLANK,g=a.thickness=pluck(o.thickness,D.thickness),h=a.color=pluck(o.color,D.color),j=a.alpha=pluck(o.alpha,D.alpha),a.hoverEffect=pluckNumber(o.showhovereffect,D.showHoverEffect),k=pluck(o.hovercolor,D.hoverColor,h),l=pluck(o.hoveralpha,D.hoverAlpha,j),m=pluck(o.hoverthickness,D.hoverThickness,g),a.dashed=pluck(o.dashed,D.dashed),a.dashLen=pluckNumber(o.dashlen,D.dashlen),a.dashGap=pluckNumber(o.dashgap,D.dashgap),f&&(a.tooltext=f=parseUnsafeString(parseTooltext(f,[3,40,41,42,43],{label:e,fromId:c.config.definition.id,toId:d.config.definition.id,fromLabel:c.config.definition.label,toLabel:d.config.definition.label},b))),a.eventArgs={fromMarkerId:c.config.id,toMarkerId:d.config.id,label:e},a._hoverAttrs={color:k,alpha:l,thickness:m},a._defaultAttrs={color:h,alpha:j,thickness:g},a.type='line',a.onclick=C(a.eventArgs),a.onmouseover=A(a.eventArgs),a.onmouseout=B(a.eventArgs),e&&(n=E.labelConfig,!n&&(n=E.labelConfig={}),n.type='text',n.text=e,n.align=POSITION_CENTER,n.valign=POSITION_MIDDLE,n.font=D.font,n.fillcolor=D.fontColor,n.bgcolor=D.labelBgColor,n.bordercolor=D.labelBorderColor,n.tooltext=a.tooltext))}draw(){let a,b,c,d,e,f,g,h,j=this,k=j.getFromEnv('chart'),l=j.config,m=j.getChildren('mapAnnotations')[0],n=j.components.markerObjs,o=k.config,p=o.markerOpts,q=o.scalingParams,r=k.config.annotationConfig,s=[],t=[],u={},v={};for(e in m.destroy(),j.createContainer(),j._drawConnectors(),j.imageLoadCount=0,j.imageCount=0,l.autoScale=p.autoScale?q.sFactor:1,n)(a=null,b=n[e],d=b.config,d.conIsHidden||(a=this._drawMarkerItem(b)),!!a)&&(v[e]=a,d._annotationIndex=s.length,u[e]=b,a.markerShape&&(c=Object.assign({align:'center',valign:'middle',animationLabel:'markerItem',autoscale:'image'===a.markerShape.type?0:1},a.markerShape),s.push(c)),a.markerLabel&&(c=Object.assign({animationLabel:'markerItem',id:a.markerShape.id},a.markerLabel),t.push(c)));for(e in h=m.addGroup(Object.assign(r,{id:'markers',fillalpha:'100',items:s,scaleimages:1}),j),g=m.addGroup(Object.assign(r,{id:'markerLabels',items:t,scaleimages:1}),j),j.components.markerGroup=h,j.components.markerLabelGroup=g,f=0,n)v[e]&&(b=n[e],b.markerShape=h.retrieveItem(s[f].id),b.markerShape.data('unfilteredConfig',s[f]),v[e].markerLabel&&(b.markerLabel=g.retrieveItem(s[f].id),b.markerLabel.data('unfilteredConfig',t[f])),f++);j.addJob('buildKdtree',j._buildKdTree.bind(j),priorityList.kdTree)}_buildKdTree(){let a,b,c=this,d=c.components.kdArrayMap,e=c.components.markerGroup,f=[],g=e&&e.items,h=g&&g.length||0;for(b=0;b<h;b++)a=g[b].config.id,d[a]&&f.push(d[a]);c.components.kDTree||(c.components.kDTree=new KdTree(!0)),c.components.kDTree._setSearchLimit(1/0,1/0),c.components.kDTree.buildKdTree(f)}_drawMarkerItem(a){let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t=this,u=t.getFromEnv('chart'),v=u.config,w=t.config,x=v.scalingParams,y=a.config,z=y.options,A=y.definition,B=v.markerOpts,C=B.dataLabels.style,D=z.shapeid,E=z.scale||1,F=z.label||BLANK,G=u.config.scalingParams.scaleFactor*u.config.baseScaleFactor,H=(z.labelpos||POSITION_TOP).toLowerCase(),I=y.formattedValue===UNDEF?UNDEF:y.formattedValue,J=z.tooltext||B.tooltext,K=pluckNumber(A.radius,y.radius,B.radius)*E*w.autoScale||1e-4,L=y.fillColor,M=y.fillAlpha,N=y.fillRatio,O=y.fillAngle,P=y.borderThickness,Q=y.borderColor,R=y.borderAlpha,S=t.getChildren('mapAnnotations')[0],T=t.components.kdArrayMap||(t.components.kdArrayMap={}),U=a.config.id;if(y.autoScale=B.autoScale?G:1,!!D)return(J=J?parseUnsafeString(parseTooltext(J,[1,2,3],{formattedValue:I,label:F},z)):I?F+B.tooltipSepChar+I:F,I!==UNDEF&&null!==I?F=F+B.labelSepChar+I:isNaN(E)?E=1:0>E?E=0:5<E&&(E=5),extend2(z,{x:z.x&&z.x.toString(),y:z.y&&z.y.toString(),fillcolor:L,fillalpha:M,fillratio:N,fillangle:O,borderthickness:P,bordercolor:Q,borderalpha:R,hovereffect:pluck(B.showHoverEffect),radius:K&&K.toString(),link:z.link,showshadow:pluckNumber(z.showshadow,y.shadow),_markerLabel:F,_markerId:z.id,id:(z.id+BLANK).toLowerCase()}),delete z.tooltext,y.tooltext=!!B.showTooltip&&J,n=+z.x*x.sFactor+x.translateX,o=+z.y*x.sFactor+x.translateY,K=z.radius,'triangle'===D?(extend2(z,{type:'polygon',sides:3,startangle:B.startAngle}),s='polygon',r=3):'diamond'===D?(extend2(z,{type:'polygon',sides:4,startangle:B.startAngle}),s='polygon',r=4):'arc'===D?(q=K*INNERRADIUSFACTOR,extend2(z,{type:'arc',startangle:0,endangle:360,innerradius:q}),s='arc'):'circle'===D?(z.type='circle',s='circle'):(l=t.getShapeArgs.call(a),B.dataEnabled&&B.valueToRadius&&z.radius!==UNDEF?delete l.radius:(!l.radius&&(l.radius=B.radius),l.radius*=E*y.autoScale),extend2(z,l),z.id=z._markerId&&z._markerId.toLowerCase(),q=l.innerradius,l.radius&&(K=l.radius),s=l.type&&l.type.toLowerCase(),r=l.sides,K=+K,K&&q&&K<q&&(m=K,z.radius=K=q,z.innerradius=q=m)),z.type=z.type&&z.type.toLowerCase(),extend2(z,{hoverfillcolor:pluck(z.fillhovercolor,B.hoverFillColor,z.fillcolor),hoverfillalpha:pluck(z.fillhoveralpha,B.hoverFillAlpha,z.fillalpha),hoverfillratio:pluck(z.fillhoverratio,B.hoverFillRatio,z.fillratio),hoverfillangle:pluck(z.fillhoverangle,B.hoverFillAngle,z.fillangle),hoverborderthickness:pluckNumber(z.borderhoverthickness,B.hoverBorderThickness,z.borderthickness),hoverbordercolor:pluck(z.borderhovercolor,B.hoverBorderColor,z.bordercolor),hoverborderalpha:pluck(z.borderhoveralpha,B.hoverBorderAlpha,z.borderalpha)}),z._hoverattrs={fillalpha:z.hoverfillalpha,fillcolor:z.hoverfillcolor,fillangle:z.hoverfillangle,fillratio:z.hoverfillratio,borderThickness:'0'===z.showborder?0:z.hoverborderthickness,borderColor:z.hoverbordercolor,borderAlpha:z.hoverborderalpha},z._defaultattrs={fillalpha:z.fillalpha,fillcolor:z.fillcolor,fillangle:z.fillangle,fillratio:z.fillratio,borderThickness:'0'===z.showborder?0:z.borderthickness,borderColor:z.bordercolor,borderAlpha:z.borderalpha},'image'===z.type?(z.borderthickness=z.borderthickness||0,z.onload=function(b){let c=this,d=b.width,e=b.height;p={},z=c.config,n=(+z.derivedX-d/(2*x.sFactor))*x.sFactor,o=(+z.derivedY-e/(2*x.sFactor))*x.sFactor,p=T[U]||(T[U]={}),p.x=n+x.translateX,p.y=o+x.translateY,p.element=a,p.shapeInfo={type:'rect',width:d,height:e},d&&e&&S.update(c.getId(),{x:n,y:o,width:d,height:e,autoscale:0}),t.imageLoadCount++,t.imageLoadCount===t.imageCount&&t._buildKdTree()},z.onerror=function(){t.imageLoadCount++,t.imageLoadCount===t.imageCount&&t._buildKdTree()},t.imageCount++):(p=T[U]||(T[U]={}),p.x=n,p.y=o,p.element=a,p.shapeInfo={type:s,sides:r,radius:+K+z.borderthickness/2,innerradius:q}),y.drawOptions.shape=z,!B.showLabels)?{markerShape:z}:(k=z.labelpadding||B.labelPadding,b=t._getLabelOptions(H,k,z),c=b.align,d=b.valign,e=y._labelBaseWidth,f=y._labelBaseHeight,g=y._labelXOffset,h=y._labelYOffset,i=B.labelWrapWidth?B.labelWrapWidth:t.getWrapWidth[c](e,+b.x+g),j=B.labelWrapHeight?B.labelWrapHeight:t.getWrapHeight[d](f,+b.y+h),i>k&&(i-=k),j>k&&(j-=k),y.drawOptions.label='center'===c&&'middle'===d?extend2({type:'text'},{text:F,tooltext:z.tooltext,x:b.x,y:b.y,align:c,valign:b.valign,wrap:1,wrapwidth:i,wrapheight:j,fontsize:C.fontSize/x.sFactor,font:C.fontFamily,fillcolor:C.fontColor}):extend2({type:'text'},{text:F,tooltext:z.tooltext,x:b.x,y:b.y,align:c,valign:b.valign,wrap:1,wrapwidth:i,wrapheight:j,fontsize:C.fontSize/x.sFactor,font:C.fontFamily,fillcolor:C.fontColor}),{markerShape:z,markerLabel:y.drawOptions.label})}highlightPoint(a,b){let c=a.element,d=this,e=b.originalEvent,f=d.getFromEnv('chart'),g=d.getFromEnv('toolTipController'),h=d.config.currentToolTip,i=f.config.lastHoveredPoint;i&&i!==a&&(i&&d.hoverOutFn(i.element),f.config.lastHoveredPoint=null,g.hide(h));!1===a||('click'===b.type||'touchstart'===b.type?(f.config.lastHoveredPoint!==a&&d.hoverFn(c),d.clickFn(b,c)):'mousemove'===b.type&&f.config.lastHoveredPoint!==a&&d.hoverFn(c),c.config.tooltext&&(h?g.draw(e,c.config.tooltext,h):h=d.config.currentToolTip=g.draw(e,c.config.tooltext)),f.config.lastHoveredPoint=a)}_drawConnectors(){let a,b,c,d,e,f,g,h,k,l,m,n,o,p=this,q=p.getFromEnv('chart'),r=q.config.annotationConfig,s=p.components,t=s.connectors||(p.components.connectors=[]),u=t.length,v=q.config.scalingParams,w=q.config.connectorOpts,z=w.showLabels,A=p.getChildren('mapAnnotations')[0],B=[],C=[],D=[],E={};for(D.push({id:'connectorLabels',fillalpha:'100',items:C}),D.push({id:'connectors',fillalpha:'100',items:B}),c=0;c<u;c++)t[c]&&(E[c]=!0,k=t[c].config.fromMarker.config,l=t[c].config.toMarker.config,e=k.options.x,f=k.options.y,g=l.options.x,h=l.options.y,t[c].config.x=e,t[c].config.y=f,t[c].config.tox=g,t[c].config.toy=h,o=Object.assign({animationLabel:'markerItem'},t[c].config),B.push(o),t[c].labelConfig&&z&&(t[c].labelConfig.x=((+e+ +g)/2).toString(),t[c].labelConfig.y=((+f+ +h)/2).toString(),t[c].labelConfig.fontsize=w.fontSize/(v.scaleFactor*q.config.baseScaleFactor),o=Object.assign({animationLabel:'markerItem'},t[c].labelConfig),C.push(o)));for(m=A.addGroup(Object.assign(r,D[1]),p),n=A.addGroup(Object.assign(r,D[0]),p),(c=0,d=0);c<u;c++)E[c]&&(a=m.items[d],a&&(a.data('unfilteredConfig',B[d]),a.addEventListener('fc-mouseover',t[c].config.onmouseover),a.addEventListener('fc-mouseout',t[c].config.onmouseout),a.addEventListener('fc-click',t[c].config.onclick)),t[c].labelConfig&&z&&(b=n.items[d],b&&b.data('unfilteredConfig')),d++)}getShapeArgs(){let a,b=this,c=b.config,d=extend2({},b.shapeObj);return c.autoScale=1,d?('polygon'===d.type?3>d.sides?d.type='circle':d.startangle=c.startAngle:'arc'===d.type&&(a=(d.radius||c.markerRadius)*c.autoScale,d.radius=a,d.innerradius=d.innerradius&&d.innerradius*c.autoScale||a*INNERRADIUSFACTOR),d):null}_getLabelOptions(a,b,c,d,e){let f,g,h,i=this,j=a&&a.toLowerCase();return i.getLabelAlignment[j]||(j='center'),g=+c.x,h=+c.y,f=d===UNDEF||e===UNDEF?c.radius||0:/^(top|bottom)$/ig.test(j)&&.5*e||/^(left|right)$/ig.test(j)&&.5*d||0,f=+f+ +b,i.getLabelAlignment[j](g,h,f)}addMarkerItem(a){let b,c,d,e,f,g,h,i=this,j=i.getFromEnv('chart'),k=a,l=i.components.markerObjs,m=i.components.shapeObjs,n=i.components.markerGroup,o=i.components.markerLabelGroup,p=i.getChildren('mapAnnotations')[0],q=i.getFromEnv('number-formatter'),r=j.config.markerOpts;if(h=k.id.toLowerCase()){if(l[h])return;delete k.value,i.imageLoadCount=0,b=Markers._initializeMarkerItem(h,k,null),b.dataset=i,g=b.config.options.shapeid,d=b.config,f=k.value,d.cleanValue=q.getCleanValue(f),a=d.options,d.formattedValue=null===d.cleanValue?UNDEF:q.dataLabels(f),d.fillColor=pluck(a.fillcolor,a.color,r.fillColor),d.fillAlpha=pluck(a.fillalpha,a.alpha,r.fillAlpha),d.fillRatio=pluck(a.fillratio,r.fillRatio),d.fillAngle=pluck(a.fillangle,r.fillAngle),d.borderThickness=pluckNumber(a.borderthickness,r.borderThickness),d.borderColor=pluck(a.bordercolor,r.borderColor),d.borderAlpha=pluck(a.borderalpha,r.borderAlpha),d.labelPadding=a.labelpadding||r.labelPadding,d.options.tooltext=pluck(a.tooltext,r.tooltext),d.link=a.link,g&&(b.shapeObj=m[g&&g.toLowerCase()]),l[h]=b,c=i._drawMarkerItem(b),n&&o&&(c.markerShape&&(e=Object.assign({align:'center',valign:'middle',animationLabel:'markerItem',autoscale:'image'===c.markerShape.type?0:1},c.markerShape),b.markerShape=p.addItem(n.getId(),e,i),b.markerShape.data('unfilteredConfig',e)),c.markerLabel&&(e=Object.assign({animationLabel:'markerItem'},c.markerLabel),b.markerLabel=p.addItem(o.getId(),e,i),b.markerLabel.data('unfilteredConfig',e))),i._buildKdTree()}}updateMarkerItem(a,b){let c,d,e,f,g=this,h=g.getFromEnv('chart'),i=g.getChildren('mapAnnotations')[0],j=g.components.markerObjs,k=h.config.markerOpts,l={},m=j[a];if(m){for(d in c=m.config.options,extend2(c,b),g.imageLoadCount=0,e=m.config,b)l[d.toLowerCase()]=b[d]&&b[d].toString();e.fillColor=pluck(l.fillcolor,l.color,k.fillColor),e.fillAlpha=pluck(l.fillalpha,l.alpha,k.fillAlpha),e.fillRatio=pluck(l.fillratio,k.fillRatio),e.fillAngle=pluck(l.fillangle,k.fillAngle),e.borderThickness=pluckNumber(l.borderthickness,k.borderThickness),e.borderColor=pluck(l.bordercolor,k.borderColor),e.borderAlpha=pluck(l.borderalpha,k.borderAlpha),e.labelPadding=l.labelpadding||k.labelPadding,e.options.tooltext=pluck(l.tooltext,k.tooltext),e.link=l.link,f=g._drawMarkerItem(m).markerShape,g._buildKdTree(),i.update(a,f)}}createContainer(){let a=this,b=a.getLinkedParent(),c=a.getFromEnv('animationManager'),d=b.getChildContainer('layer1');a.getChildContainer('abovePlotGroup')||a.addChildContainer('abovePlotGroup',c.setAnimation({el:'group',attr:{name:'abovePlotGroup',opacity:1},container:d,component:a,label:'group'})),a.getChildContainer('belowPlotGroup')||a.addChildContainer('belowPlotGroup',c.setAnimation({el:'group',attr:{name:'belowPlotGroup',opacity:1},container:d,component:a,label:'group'}))}_removeMarkerItem(a){let b,c,d=this,e=d.components,f=e.markerObjs,g=f[a],h=e.kdArrayMap,i=d.getChildren('mapAnnotations')[0];g&&(b=g.markerShape,c=g.markerLabel,b&&i.destroy(b.getId()),c&&i.destroy(c.getId()),delete h[a],d._buildKdTree()),delete f[a]}getElement(a){let b=this;if(b.components.kDTree)return b.components.kDTree.getNeighbour(a)}}export default Markers;