@boldreports/javascript-reporting-controls
Version:
The Bold Reports by Syncfusion controls for JavaScript contains ReportViewer and ReportDesigner HTML5 and JavaScript reporting controls for enterprise web development
10 lines • 142 kB
JavaScript
/*!
* filename: ej.bulletgraph.min.js
* version : 9.1.15
* Copyright Syncfusion Inc. 2001 - 2025. All rights reserved.
* Use of this code is subject to the terms of our license.
* A copy of the current license can be obtained at any time by e-mailing
* licensing@syncfusion.com. Any infringement will be prosecuted under
* applicable laws.
*/
(function(n){typeof define=="function"&&define.amd?define(["./../common/bold.reports.common.min"],n):n()})(function(){(function(n,t,i){t.widget("ejBulletGraph","ej.datavisualization.BulletGraph",{element:null,model:null,validTags:["div"],_tags:[{tag:"qualitativeRanges",attr:["rangeEnd","rangeStroke","rangeOpacity"]},{tag:"quantitativeScaleSettings.featureMeasures",attr:["value","comparativeMeasureValue"]}],defaults:{locale:null,enableGroupSeparator:!1,value:0,comparativeMeasureValue:0,width:null,height:null,theme:"flatlight",orientation:"horizontal",flowDirection:"forward",qualitativeRangeSize:32,quantitativeScaleLength:475,tooltipSettings:{enableCaptionTooltip:!1,captionTemplate:null,visible:!0,template:null},quantitativeScaleSettings:{location:{x:10,y:10},minimum:0,maximum:10,interval:1,minorTicksPerInterval:4,majorTickSettings:{size:13,stroke:null,width:2},minorTickSettings:{size:7,stroke:null,width:2},tickPosition:"far",tickPlacement:"outside",labelSettings:{labelPlacement:"outside",labelPrefix:"",labelSuffix:"",stroke:null,size:12,offset:15,font:{fontFamily:"Segoe UI",fontStyle:"Normal ",fontWeight:"regular",opacity:1},position:"below"},featuredMeasureSettings:{stroke:null,width:6},comparativeMeasureSettings:{stroke:null,width:5},featureMeasures:[{value:null,comparativeMeasureValue:null,category:null}]},fields:{dataSource:null,query:null,tableName:null,category:null,featureMeasures:null,comparativeMeasure:null},enableAnimation:!0,enableResizing:!0,isResponsive:!0,applyRangeStrokeToTicks:!1,applyRangeStrokeToLabels:!1,qualitativeRanges:[{rangeEnd:4.3,rangeStroke:null,rangeOpacity:1},{rangeEnd:7.3,rangeStroke:null,rangeOpacity:1},{rangeEnd:10,rangeStroke:null,rangeOpacity:1}],captionSettings:{enableTrim:!0,textPosition:"float",textAlignment:"Near",textAnchor:"start",padding:5,textAngle:0,location:{x:17,y:30},text:"",font:{color:null,fontFamily:"Segoe UI",fontStyle:"Normal",size:"12px",fontWeight:"regular",opacity:1},subTitle:{textPosition:"float",textAlignment:"Near",textAnchor:"start",padding:5,textAngle:0,text:"",location:{x:10,y:45},font:{color:null,fontFamily:"Segoe UI",fontStyle:"Normal ",size:"12px",fontWeight:"regular",opacity:1}},indicator:{textPosition:"float",textAlignment:"Near",textAnchor:"start",padding:5,visible:!1,textAngle:0,textSpacing:3,text:"",symbol:{border:{color:null,width:1},color:null,shape:"",imageURL:"",size:{width:10,height:10},opacity:1},location:{x:10,y:60},font:{color:null,fontFamily:"Segoe UI",fontStyle:"Normal ",size:"12px",fontWeight:"regular",opacity:1}}},load:"",click:"",doubleClick:"",rightClick:"",drawTicks:null,drawLabels:null,drawCaption:null,drawIndicator:null,drawQualitativeRanges:null,drawFeatureMeasureBar:null,drawCategory:null,drawComparativeMeasureSymbol:null},observables:["value","comparativeMeasureValue"],value:t.util.valueFunction("value"),comparativeMeasureValue:t.util.valueFunction("comparativeMeasureValue"),dataTypes:{quantitativeScaleSettings:{labelSettings:"data",featureMeasures:"array"},fields:{dataSource:"data",query:"data"},qualitativeRanges:"array",captionSettings:"data",isResponsive:"boolean"},_init:function(){this._renderBulletGraph()},_destroy:function(){n(this.element).removeClass("e-datavisualization-bulletgraph e-js").find("#"+this.svgObject.id).remove()},_isSVG:function(){return window.SVGSVGElement?!0:!1},_value:t.util.valueFunction("value"),_comparativeMeasureValue:t.util.valueFunction("comparativeMeasureValue"),_qualitativeRanges:function(){this.redraw();this._trigger("refresh")},_quantitativeScaleSettings_featureMeasures:function(){this.redraw();this._trigger("refresh")},_renderBulletGraph:function(){var n=this.model.theme.toLowerCase();this._isSVG()&&(this.svgRenderer=new t.EjSvgRender(this.element),this.svgObject=this.svgRenderer.svgObj,this._trigger("load"),this._setSvgSize(this),this._setTheme(t.datavisualization.BulletGraph.Themes,n),this.bindEvents(),this._renderBulletElements(),this.model.enableAnimation&&this._animateMeasures())},_animateMeasures:function(){this._doAnimation();this._doLineAnimation()},_setSvgSize:function(i){var r=i,o=n(r.element).height(),f=90,u=t.isTouchDevice()?250:595,e=n(r.element).width();r.model.width?u=parseInt(r.model.width):e>0&&e<595?u=e:e>595&&(u=595);n(r.svgObject).width(u);r.model.height?f=parseInt(r.model.height):o>0?f=o:n(r.svgObject).css("display","block");n(r.svgObject).height(f);r.svgObject.setAttribute("width",u);r.svgObject.setAttribute("height",f)},_renderBulletElements:function(){var f=this.model.width?this.model.width:595,e=this.model.height?this.model.height:90,i;this.svgObject.setAttribute("viewBox","0 0 "+f+" "+e);this.svgObject.setAttribute("preserveAspectRatio","xMinYMin");this.svgWidth=n(this.svgObject).width();this.svgHeight=n(this.svgObject).height();var r=this.svgRenderer.createGroup({id:this.svgObject.id+"_captionGroup"}),t=this.svgRenderer.createGroup({id:this.svgObject.id+"_scaleGroup"}),u=this.svgRenderer.createGroup({id:this.svgObject.id+"_outerWrap"});this._initializeValues();i=this.model.quantitativeScaleLength/((this._scale.maximum-this._scale.minimum)/this._scale.interval);this._drawCaption();this._drawIndicator();this._drawCaptionGroup(r);this._scaleGroup=t;this._drawScale(r,t);this._drawQualitativeRanges(t);this._drawMajorTicks(i,t);this._drawMinorTicks(i,t);this._drawLabels(i,t);this._bindData();n(t).appendTo(u);n(r).appendTo(u);this._changeOrientation(t);n(u).appendTo(this.svgObject);n(this.svgObject).appendTo(this.element);this._bindHighlightRemoving()},_bindHighlightRemoving:function(){var i=this.model.browserInfo.isMSPointerEnabled,t,r=this.model.browserInfo.pointerEnabled;t=i?r?"pointerout":"MSPointerOut":"touchout mouseout";this._on(n("[id*="+this.svgObject.id+"_FeatureMeasure_]"),t,function(t){this.isTouch(t)||n(t.target).attr("opacity",1)})},_drawCaptionGroup:function(n){var u=this.model.captionSettings,f=u.subTitle,r=this._indicator?this._indicator.settings:u.indicator,c,b,k,l,a,v;u._location=f._location=r._location=c;var y=u.textPosition.toLowerCase()!="float"&&u.text!="",p=f.textPosition.toLowerCase()!="float"&&f.text!="",w=r.visible&&r.textPosition.toLowerCase()!="float";if(y||p||w){b=t.EjSvgRender.utils._measureText(u.text,null,u.font);k=t.EjSvgRender.utils._measureText(f.text,null,f.font);r.visible&&(l=this._indicator.bounds,v={width:r.symbol.size.width+l.width+r.textSpacing,height:Math.max(r.symbol.size.height,l.height)},a={x:0,y:0,width:v.width,height:v.height,padding:r.padding,anchor:r.textAnchor.toLowerCase(),alignment:r.textAlignment.toLowerCase()});var d={x:0,y:0,width:b.width,height:parseFloat(u.font.size),padding:u.padding,anchor:u.textAnchor.toLowerCase(),alignment:u.textAlignment.toLowerCase()},g={x:0,y:0,width:k.width,height:parseFloat(f.font.size),padding:f.padding,anchor:f.textAnchor.toLowerCase(),alignment:f.textAlignment.toLowerCase()},tt={x:this._scale.location.x,y:this._scale.location.y,width:this.model.quantitativeScaleLength,height:this.model.qualitativeRangeSize},nt=[y?u:null,p?f:null,w?r:null];this._positionTextGroup(nt,[d,g,a],tt);this._locateTextGroup(nt,[d,g,a])}var e=u._location==i?u.location:u._location,o=f._location==i?f.location:f._location,s=r._location==i?r.location:r._location;if(u.displayText=u.text,u.enableTrim==!0&&(e.x=e.x<0?0:e.x,e.y=e.y<0?0:e.y,u.displayText=this._displayText(u,e)),f.text!=""&&(f.displayText=f.text,u.enableTrim==!0&&(o.x=o.x<0?0:o.x,o.y=o.y<0?0:o.y,f.displayText=this._displayText(f,o))),r.visible){r.displayText=r.text;this.model.captionSettings.enableTrim==!0&&(s.x=s.x<0?0:s.x,s.y=s.y<0?0:s.y);var c=r._location?r._location:r.location,h={x:c.x+r.symbol.size.width/2,y:c.y-r.symbol.size.height/2,width:r.symbol.size.width,height:r.symbol.size.height},it=this._indicatorTextOptions(r,h,this._indicator.bounds,this.svgObject.id+"_Indicator"),rt=this._indicatorSymbolOptions(n,r);this._drawBulletSymbol(this._indicator.settings.symbol.shape,h,rt,n);this.model.captionSettings.enableTrim==!0&&(r.displayText=this._displayText(r,h))}u.displayText=u.textPosition.toLowerCase()!="float"?this._captionOverlap(this.model.captionSettings):u.displayText;this.svgRenderer.drawText(this._textOptions(u,this.svgObject.id+"_Caption"),u.displayText,n);f.text!=""&&(f.displayText=f.textPosition.toLowerCase()!="float"?this._subOverlap(this.model.captionSettings.subTitle):f.displayText,this.svgRenderer.drawText(this._textOptions(f,this.svgObject.id+"_SubTitle"),f.displayText,n));r.visible&&(r.displayText=r.textPosition.toLowerCase()!="float"?this._indOverlap(r,h):r.displayText,this.svgRenderer.drawText(it,r.displayText,n))},_captionOverlap:function(n){var t,i;return i=!0,n.textPosition==n.subTitle.textPosition&&n.textAlignment==n.subTitle.textAlignment&&n.textAngle>0&&n.textAngle<120?t=n.subTitle._location.y-n._location.y:n.textPosition==n.indicator.textPosition&&n.textAlignment==n.indicator.textAlignment&&n.textAngle>0&&n.textAngle<120?t=n.indicator._location.y-n._location.y:n.textPosition==n.subTitle.textPosition&&n._location.y<n.subTitle._location.y&&n.textAngle>0&&n.textAngle<180?t=n.subTitle._location.y-n._location.y:n.textPosition==n.subTitle.textPosition&&n._location.y>n.subTitle._location.y&&n.textAngle>190&&n.textAngle<360?t=n._location.y-n.subTitle._location.y:n.textPosition==n.indicator.textPosition&&n._location.y<n.indicator._location.y&&n.textAngle>0&&n.textAngle<180?t=n.indicator._location.y-n._location.y:n.textPosition==n.indicator.textPosition&&n._location.y>n.indicator._location.y&&n.textAngle>190&&n.textAngle<360&&(t=n._location.y-n.indicator._location.y),this._trim(n.displayText,n,t,i)},_indOverlap:function(n,t){var u,f,i,r;return f=!0,i=this.model.captionSettings.subTitle,r=this.model.captionSettings,n.textPosition==i.textPosition&&n.textAlignment==i.textAlignment&&n.textAngle>190&&n.textAngle<360?u=t.y-i._location.y:n.textPosition==r.textPosition&&n.textAlignment==r.textAlignment&&n.textAngle>190&&n.textAngle<360?u=t.y-r._location.y:n.textPosition==i.textPosition&&n._location.y<i._location.y&&n.textAngle>0&&n.textAngle<180?u=i._location.y-n._location.y:n.textPosition==i.textPosition&&n._location.y>i._location.y&&n.textAngle>190&&n.textAngle<360?u=n._location.y-i._location.y:n.textPosition==r.textPosition&&n._location.y<r._location.y&&n.textAngle>0&&n.textAngle<180?u=r._location.y-n._location.y:n.textPosition==r.textPosition&&n._location.y>r._location.y&&n.textAngle>190&&n.textAngle<360&&(u=n._location.y-r._location.y),this._trim(n.displayText,n,u,f)},_subOverlap:function(n){var r,u,t,i;return u=!0,t=this.model.captionSettings.indicator,i=this.model.captionSettings,n.textPosition==t.textPosition&&n.textAlignment==t.textAlignment&&n.textAngle>0&&n.textAngle<180?r=t._location.y-n._location.y:n.textPosition==i.textPosition&&n.textAlignment==i.textAlignment&&n.textAngle>190&&n.textAngle<360?r=n._location.y-i._location.y:n.textPosition==t.textPosition&&n._location.y<t._location.y&&n.textAngle>0&&n.textAngle<180?r=t._location.y-n._location.y:n.textPosition==t.textPosition&&n._location.y>t._location.y&&n.textAngle>190&&n.textAngle<360?r=n._location.y-t._location.y:n.textPosition==i.textPosition&&n._location.y<i._location.y&&n.textAngle>0&&n.textAngle<180?r=i._location.y-n._location.y:n.textPosition==i.textPosition&&n._location.y>i._location.y&&n.textAngle>190&&n.textAngle<360&&(r=n._location.y-i._location.y),this._trim(n.displayText,n,r,u)},rotatedLabel:function(n,i,r,u){var f={"font-size":n.size,transform:"rotate("+r+",0,0)","font-family":n.fontFamily,"font-style":n.fontStyle,rotateAngle:"rotate("+r+"deg)","text-anchor":"middle"},e=i.svgRenderer.createText(f,u);return Math.ceil(t.EjSvgRender.utils._measureBounds(e,i).width)},calcGap:function(n,t,i,r,u,f,e){var o;return n>=0&&n<=90?r+t.y>=e&&n>0?(o=e-t.y,u=!0):r+t.y<=e&&i+t.x>=f&&n>0?o=f-t.x:r+t.y<=e&&n>0?(o=e-t.y,u=!0):o=f-t.x:n>90&&n<180?r+t.y>=e?(o=e-t.y,u=!0):r+t.y<=e&&i+t.x>=f?o=t.x:i+t.x<=f?o=t.x:(o=e-t.y,u=!0):n>=180&&n<270?t.x-i>=0?(o=t.y,u=!0):t.y-r<=0&&t.x-i<=0?o=t.x:t.y-r<=0?(o=e-t.y,u=!0):o=t.x:i+t.x<=f?(o=t.y,u=!0):t.y-r>=0&&i+t.x>=f?o=f-t.x:i+t.x>=f?o=f-t.x:(o=t.y,u=!0),{trimSize:o,rotate:u}},_scaleLoc:function(){var o=this._scale,u=o.labelSettings.offset,i=o.majorTickSettings.size,n,e,s=this._scale.labelSettings,h=t.EjSvgRender.utils._measureText(s.labelPrefix+o.maximum+s.labelSuffix,null,s),f=this._orientation==t.datavisualization.BulletGraph.Orientation.Horizontal?h.height:h.width,r,c;n=o.location.y;r=this.model.qualitativeRangeSize;c=this._tickPosition+this._tickPlacement+this._labelPosition+this._labelPlacement;this._tickPosition=="center"&&(i=i>r&&(i-r)/2);switch(c){case"faroutsidebelowoutside":e=n+f+r+u+(i>u&&i-u);break;case"faroutsidebelowinside":e=n+i+r;n=n-(u+f>r&&u+f-r);break;case"faroutsideaboveoutside":e=n+i+r;n=n-(u+f);break;case"faroutsideaboveinside":e=n+i+r+(u+f>r+i?u+f-(r+i):0);break;case"farinsidebelowoutside":e=n+f+r+u;n=n-(i>r&&i-r);break;case"farinsidebelowinside":e=n+r;n=n-(i>r&&i-r)-(u+f>r+i&&u+f-i);break;case"farinsideaboveoutside":e=n+r;n=n-(u+f)-(i>u+f+r&&i-(u+f+r));break;case"farinsideaboveinside":e=n+r+(u+f>r&&f+u-r);n=n-(i>r&&i-r);break;case"nearoutsidebelowoutside":e=n+r+u+f;n=n-i;break;case"nearoutsidebelowinside":e=n+r;n=n-i-(u+f>r+i&&u+f-(r+i));break;case"nearoutsideaboveoutside":e=n+r;n=n-i-(i<u+f&&u+f-i);break;case"nearoutsideaboveinside":e=n+r+(u+f>r&&u+f-r);n=n-i;break;case"nearinsidebelowoutside":e=n+r+(i>u+f+r?i-r:u+f);break;case"nearinsidebelowinside":e=n+r+(i>r&&i-r);n=n-(u+f>r&&u+f-r);break;case"nearinsideaboveoutside":e=n+(i>r?i:r);n=n-u-f;break;case"nearinsideaboveinside":e=n+r+(i>f+u?i-r:f+u-r);break;case"centeroutsidebelowoutside":e=n+r+(i>u+f?i:u+f);n=n-i;break;case"centeroutsidebelowinside":e=n+r+i;n=n-i-(u+f>r+i&&u+f-(r+i));break;case"centeroutsideaboveoutside":e=n+r+i;n=n-i-(i<u+f&&u+f-i);break;case"centeroutsideaboveinside":e=n+r+(u+f>r+i?u+f-r-i:i);n=n-i;break;case"centerinsidebelowoutside":e=n+r+(i>u+f?i:u+f);n=n-i;break;case"centerinsidebelowinside":e=n+r+i;n=n-(u+f-r>i?u+f-r:i);break;case"centerinsideaboveoutside":e=n+r+i;n=n-i-(i<u+f&&u+f-i);break;case"centerinsideaboveinside":e=n+r+(i>f+u?i:f+u-r);n=n-i}return{x:o.location.x,y:n,height:e}},_displayText:function(i,r){var f=n.extend(!0,r),e=i.textAngle%360,y=i.text,w=i.font,a=this._scale,p=this._scale.labelSettings,b=t.EjSvgRender.utils._measureText(p.labelPrefix+a.minimum+p.labelSuffix,null,p).width,k=t.EjSvgRender.utils._measureText(y,null,w).width,d=t.EjSvgRender.utils.rotatedLabel(i,this,e,i.text),v=this.rotatedLabel(w,this,e,i.text),o,s=this.svgHeight,h=this.svgWidth,l=!1,u=this._scaleLoc(),c,g;return i.textSpacing&&(k=k+i.textSpacing,v=v+i.textSpacing),this._orientation==t.datavisualization.BulletGraph.Orientation.Horizontal?(f.x<=u.x&&u.y<=f.y&&f.y<=u.height?h=a.location.x-b/2:f.x<=u.x&&f.y<=u.y&&e<90?s=u.y:f.x>=u.x&&f.x<=u.x+this.model.quantitativeScaleLength&&f.y<=u.y?s=u.y:f.y<=u.y&&f.x>=u.x+this.model.quantitativeScaleLength&&e>=90?s=u.y:f.x>=u.x+this.model.quantitativeScaleLength&&u.y<=f.y&&f.y<=u.height&&e<270?(h=h-(u.x+this.model.quantitativeScaleLength),f.x=f.x-(u.x+this.model.quantitativeScaleLength)):f.x<=u.x&&f.y>=u.height&&e>270?f.y=f.y-u.height:f.x>=u.x&&f.x<=u.x+this.model.quantitativeScaleLength&&f.y>=u.height?f.y=f.y-u.height:f.x>=u.x+this.model.quantitativeScaleLength&&f.y>=u.height&&e>=180&&e<270&&(f.y=f.y-u.height),o=this.calcGap(e,f,v,d,l,h,s),l=o.rotate,o=o.trimSize):(c=u.height-u.y,u.y=this.svgHeight-a.location.y-this.model.quantitativeScaleLength,u.height=u.y+this.model.quantitativeScaleLength,f.x<=u.x&&u.y<=f.y&&f.y<=u.height?h=a.location.x-b/2:f.x<=u.x&&f.y<=u.y&&e<90?s=u.y:f.x>=u.x&&f.x<=u.x+c&&f.y<=u.y?s=u.y:f.y<=u.y&&f.x>=u.x+c&&e>=90?s=u.y:f.x>=u.x+c&&u.y<=f.y&&f.y<=u.height&&e<=260?(h=h-(u.x+c),f.x=f.x-(u.x+c)):f.x<=u.x&&f.y>=u.height&&e>=280?f.y=f.y-u.height:f.x>=u.x&&f.x<=u.x+c&&f.y>=u.height?f.y=f.y-u.height:f.x>=u.x+c&&f.y>=u.height&&e>=180&&e<=260&&(f.y=f.y-u.height),o=this.calcGap(e,f,v,d,l,h,s),l=o.rotate,o=o.trimSize),g=y,this._trim(y,i,o,l)},_trim:function(n,i,r,u){var f=n,h=this.rotatedLabel(i.font,this,i.textAngle,n),s=t.EjSvgRender.utils._measureText(n,null,i.font).width,o,e,c;if(i.textSpacing&&(s=s+i.textSpacing,h=h+i.textSpacing),s>r&&n!=""){for(e=1;e<=n.toString().length;e++)if(n=f.toString().substring(0,e)+"... ",o=u==!0?t.EjSvgRender.utils.rotatedLabel(i,this,i.textAngle,n):t.EjSvgRender.utils._measureText(n,null,i.font).width,i.textSpacing&&(o=o+i.textSpacing),o>=r){n=n.toString().substring(0,e-1)+"... ";f=n;break}c=f.toString(0,n.toString.lenght-4);c!=f&&(f=n)}return f},_getVerticalScaleLocation:function(n){return{x:this._scale.location.y,y:this.svgHeight-this._scale.location.x-n}},_horizontalTextPositioning:function(n,i,r,u,f){var h=n.textPosition.toLowerCase(),e=i.alignment,r=this._scaleLoc(),o=this._scale.labelSettings,s=t.EjSvgRender.utils._measureText(o.labelPrefix+this._scale.maximum+o.labelSuffix,null,o).width;switch(h){case"left":i.x=r.x-i.width-i.padding-s/2;i.y=r.y+(e=="center"?u.height/2+i.height/3:e=="far"?u.height:i.height);f[0].push(i);break;case"right":i.x=r.x+u.width+i.padding+s/2;i.y=r.y+(e=="center"?u.height/2+i.height/3:e=="far"?u.height:i.height);f[1].push(i);break;case"top":i.x=e=="center"?u.x+u.width/2-i.width/2:e=="near"?u.x:u.x+u.width-i.width;i.y=r.y-i.padding;f[2].push(i);break;case"bottom":i.x=e=="center"?u.x+u.width/2-i.width/2:e=="near"?u.x:u.x+u.width-i.width;i.y=r.height+i.height/2+i.padding;f[3].push(i)}},_VerticalTextPositioning:function(n,t,i,r,u){var o=n.textPosition.toLowerCase(),f=t.alignment,e=this._scaleLoc();switch(o){case"left":t.x=e.y-t.width-t.padding;t.y=i.y+(f=="center"?r.height/2+t.height/3:f=="far"?r.height:t.height);this._tickPosition=="near"&&this._tickPlacement=="inside"&&this._labelPosition=="above"&&this._labelPlacement=="inside"&&(t.x+=this._scale.majorTickSettings.size);u[0].push(t);break;case"right":t.x=e.height+t.padding;t.y=i.y+(f=="center"?r.height/2+t.height/3:f=="far"?r.height:t.height);u[1].push(t);break;case"top":t.x=r.x-t.width/2+(f=="center"?r.width/2:f=="far"&&r.width);t.y=r.y-t.padding;u[2].push(t);break;case"bottom":t.x=r.x-t.width/2+(f=="center"?r.width/2:f=="far"&&r.width);t.y=r.y+r.height+t.height+t.padding-t.height/3+this._scale.labelSettings.size/2;u[3].push(t)}},_positionTextGroup:function(n,t,i){for(var f=[[],[],[],[]],e=this._orientation=="horizontal",u=e?this._scaleLocation:this._getVerticalScaleLocation(i.width),o=e?i:{x:u.x,y:u.y,width:i.height,height:i.width},r=0;r<n.length;r++)n[r]&&(e?this._horizontalTextPositioning(n[r],t[r],u,o,f):this._VerticalTextPositioning(n[r],t[r],u,o,f));this._avoidElementsOverlapping(f)},_avoidElementsOverlapping:function(n){for(var t,f,r,i,u=0;u<n.length;u++){t=n[u];f=!1;do for(r=0;r<t.length;r++)for(i=r-1;i>=0;i--)if(this._isOverlapping(t[r],t[i])){switch(u){case 0:case 1:t[i].y>t[r].y?t[i].y=t[r].y+t[i].height+(t[i].padding>1?t[i].padding:1):t[r].y=t[i].y+t[r].height+(t[r].padding>1?t[r].padding:1);break;case 2:t[i].y=t[r].y-t[r].height-(t[i].padding>1?t[i].padding:1);break;default:t[r].y=t[i].y+t[i].height+(t[i].padding>1?t[i].padding:1)}f=!0;break}else f=!1;while(f)}this._applyLeftRightAnchor([n[0],n[1]]);this._applyTopBottomAnchor([n[2],n[3]])},_locateTextGroup:function(n,t){for(var i=0;i<n.length;i++)n[i]&&(n[i]._location={x:0,y:0},n[i]._location.x=t[i].x,n[i]._location.y=t[i].y)},_applyLeftRightAnchor:function(n){for(var i,r,t,f,u=0;u<n.length;u++){for(i=n[u],r=0,t=0;t<i.length;t++)r=Math.max(r,i[t].width);for(t=0;t<i.length;t++)f=i[t].anchor,i[t].x+=f=="start"?u==0&&i[t].width-r:f=="middle"?u==0?(i[t].width-r)/2:(r-i[t].width)/2:u!=0&&r-i[t].width}},_applyTopBottomAnchor:function(n){for(var t,r=0;r<n.length;r++){var u=[],f=[],e=[],i=n[r];for(t=0;t<i.length;t++)i[t].alignment=="near"?u.push(i[t]):i[t].alignment=="far"?f.push(i[t]):e.push(i[t]);this._applyNearAnchor(u);this._applyCenterAnchor(e);this._applyFarAnchor(f)}},_applyNearAnchor:function(n){var i,t;if(n.length>1){for(i=0,t=0;t<n.length;t++)i=Math.max(i,n[t].width);for(t=0;t<n.length;t++)n[t].x+=n[t].anchor=="start"?this._orientation=="vertical"&&(n[t].width-i)/2:n[t].anchor=="middle"?this._orientation=="horizontal"&&(i-n[t].width)/2:this._orientation=="horizontal"?i-n[t].width:(i-n[t].width)/2}},_applyCenterAnchor:function(n){var i,t;if(n.length>1){for(i=0,t=0;t<n.length;t++)i=Math.max(i,n[t].width);for(t=0;t<n.length;t++)n[t].anchor=="start"?n[t].x+=(n[t].width-i)/2:n[t].anchor=="end"&&(n[t].x+=(i-n[t].width)/2)}},_applyFarAnchor:function(n){var i,t;if(n.length>1){for(i=0,t=0;t<n.length;t++)i=Math.max(i,n[t].width);for(t=0;t<n.length;t++)n[t].anchor=="start"?n[t].x+=this._orientation=="horizontal"?n[t].width-i:(n[t].width-i)/2:n[t].anchor=="middle"?n[t].x+=this._orientation=="horizontal"&&(n[t].width-i)/2:n[t].anchor=="end"&&(n[t].x+=this._orientation=="vertical"&&(i-n[t].width)/2)}},_isOverlapping:function(n,t){return!(n.x+n.width<t.x||n.x>t.x+t.width||n.y-n.height>t.y||n.y<t.y-t.height)},_initializeValues:function(){this._scale=this.model.quantitativeScaleSettings;this._labelPosition=this._scale.labelSettings.position.toLowerCase();this._tickPosition=this._scale.tickPosition.toLowerCase();this._flowDirection=this.model.flowDirection.toLowerCase();this._orientation=this.model.orientation.toLowerCase();this._tickPlacement=this._scale.tickPlacement.toLowerCase();this._labelPlacement=this._scale.labelSettings.labelPlacement.toLowerCase()},_changeOrientation:function(n){this._orientation==t.datavisualization.BulletGraph.Orientation.Vertical&&n.setAttribute("transform","translate(0,"+this.svgHeight+")rotate(-90)")},_setModel:function(i){var f=!0,r,u;for(r in i){this.model.enableAnimation=!1;switch(r){case"height":this.model.height=i[r];break;case"width":this.model.width=i[r];break;case"theme":this.model.theme=i[r];this._setTheme(t.datavisualization.BulletGraph.Themes,this.model.theme);break;case"orientation":this.model.orientation=i[r];break;case"flowDirection":this.model.flowDirection=i[r];break;case"qualitativeRangeSize":this.model.qualitativeRangeSize=i[r];break;case"quantitativeScaleLength":this.model.quantitativeScaleLength=i[r];break;case"quantitativeScaleSettings":n.extend(!0,this.model.quantitativeScaleSettings,{},i[r]);break;case"applyRangeStrokeToTicks":this.model.applyRangeStrokeToTicks=i[r];break;case"applyRangeStrokeToLabels":this.model.applyRangeStrokeToLabels=i[r];break;case"qualitativeRanges":n.extend(!0,this.model.qualitativeRanges,{},i[r]);break;case"captionSettings":n.extend(!0,this.model.captionSettings,{},i[r]);break;case"dataSource":n.extend(!0,this.model.fields,{},i[r]);break;case"value":for(u=0;this.model.quantitativeScaleSettings.featureMeasures[u]!=null;u++)this.model.quantitativeScaleSettings.featureMeasures[u].value=parseFloat(this.value());break;case"comparativeMeasureValue":for(u=0;this.model.quantitativeScaleSettings.featureMeasures[u]!=null;u++)this.model.quantitativeScaleSettings.featureMeasures[u].comparativeMeasureValue=parseFloat(this.comparativeMeasureValue());break;case"enableAnimation":this.model.enableAnimation=i[r];this.model.enableAnimation&&(n(this.svgObject).empty(),this._renderBulletElements(),this._animateMeasures());f=!1}}f&&(n(this.svgObject).empty(),this._renderBulletElements())},_bindData:function(){t.isNullOrUndefined(this.model.fields)||this.model.fields.dataSource==null?(this._dataCount=this._scale.featureMeasures.length,this._drawMeasures()):this.model.fields.dataSource instanceof t.DataManager?this._initDataSource():(this._dataCount=this.model.fields.dataSource.length,this._drawMeasures())},_drawMeasures:function(){this._drawFeatureMeasureBar();this._drawComparativeMeasureSymbol()},_initDataSource:function(){var t=this._columnToSelect(this.model.fields),n=this,i=this.model.fields.dataSource.executeQuery(t);i.done(function(t){n.model.fields.dataSource=t.result;n._dataCount=t.result.length;n._drawFeatureMeasureBar();n._drawComparativeMeasureSymbol();n._bindHighlightRemoving()})},_columnToSelect:function(n){var u=[],r=t.Query(),i;if(t.isNullOrUndefined(n.query)){for(i in n)i!=="tableName"&&i!=="query"&&i!=="dataSource"&&u.push(n[i]);u.length>0&&r.select(u);this.model.fields.dataSource.dataSource.url.match(n.tableName+"$")||t.isNullOrUndefined(n.tableName)||r.from(n.tableName)}else r=n.query;return r},_drawCaption:function(){if(this.model.drawCaption){var t={font:this.model.captionSettings.font,location:this.model.captionSettings.location,subTitle:this.model.captionSettings.subTitle,text:this.model.captionSettings.text,textAngle:this.model.captionSettings.textAngle};this._trigger("drawCaption",t);this.model.captionSettings=n.extend(this.model.captionSettings,t)}},_drawBulletSymbol:function(n,i,r,u){var e="M "+(i.x-i.width/2+i.width)+" "+(i.y+i.height/4)+" L "+(i.x-i.width/2+i.width)+" "+(i.y+-i.height/4)+" L "+(i.x-i.width/2+i.width/2)+" "+(i.y+-i.height/4)+" L "+(i.x-i.width/2+i.width/2)+" "+(i.y+-i.height/2)+" L "+(i.x-i.width/2)+" "+i.y+" L "+(i.x-i.width/2+i.width/2)+" "+(i.y+i.height/2)+" L "+(i.x-i.width/2+i.width/2)+" "+(i.y+i.height/4)+" L "+(i.x-i.width/2+i.width)+" "+(i.y+i.height/4),o,l,a,v,s,y,p,f,d,g,h;switch(n.toLowerCase()){case"circle":o=Math.min(i.height,i.width)/2;r.cx=i.x;r.cy=i.y;r.r=o;this.svgRenderer.drawCircle(r,u);break;case"leftarrow":r.d=e;this.svgRenderer.drawPath(r,u);break;case"rightarrow":r.d=e;r.transform="rotate(180,"+i.x+","+i.y+")";this.svgRenderer.drawPath(r,u);break;case"uparrow":r.d=e;r.transform="rotate(90,"+i.x+","+i.y+")";this.svgRenderer.drawPath(r,u);break;case"downarrow":r.d=e;r.transform="rotate(-90,"+i.x+","+i.y+")";this.svgRenderer.drawPath(r,u);break;case"cross":l="M "+(i.x+-i.width/2)+" "+i.y+" L "+(i.x+i.width/2)+" "+i.y+" M "+i.x+" "+(i.y+i.height/2)+" L "+i.x+" "+(i.y+-i.height/2);r.d=l;r.stroke=r.stroke?r.stroke:r.fill;this.svgRenderer.drawPath(r,u);break;case"horizontalline":a="M "+(i.x+-i.width/2)+" "+i.y+" L "+(i.x+i.width/2)+" "+i.y;r.d=a;r.stroke=r.stroke?r.stroke:r.fill;this.svgRenderer.drawPath(r,u);break;case"verticalline":v="M "+i.x+" "+(i.y+i.height/2)+" L "+i.x+" "+(i.y+-i.height/2);r.d=v;r.stroke=r.stroke?r.stroke:r.fill;this.svgRenderer.drawPath(r,u);break;case"triangle":s="M "+(i.x+-i.width/2)+" "+(i.y+i.height/2)+" L "+i.x+" "+(i.y+-i.height/2)+" L "+(i.x+i.width/2)+" "+(i.y+i.height/2)+" L "+(i.x+-i.width/2)+" "+(i.y+i.height/2)+" Z";r.d=s;this.svgRenderer.drawPath(r,u);break;case"invertedtriangle":s="M "+(i.x+-i.width/2)+" "+(i.y+i.height/2)+" L "+i.x+" "+(i.y+-i.height/2)+" L "+(i.x+i.width/2)+" "+(i.y+i.height/2)+" L "+(i.x+-i.width/2)+" "+(i.y+i.height/2)+" Z";r.d=s;r.transform="rotate(180,"+i.x+","+i.y+")";this.svgRenderer.drawPath(r,u);break;case"hexagon":y="M "+(i.x+-i.width/2)+" "+i.y+" L "+(i.x+-i.width/4)+" "+(i.y+-i.height/2)+" L "+(i.x+i.width/4)+" "+(i.y+-i.height/2)+" L "+(i.x+i.width/2)+" "+i.y+" L "+(i.x+i.width/4)+" "+(i.y+i.height/2)+" L "+(i.x+-i.width/4)+" "+(i.y+i.height/2)+" L "+(i.x+-i.width/2)+" "+i.y;r.d=y;this.svgRenderer.drawPath(r,u);break;case"wedge":p="M "+(i.x+-i.width/2)+" "+i.y+" L "+(i.x+i.width/2)+" "+(i.y+-i.height/2)+" L "+(i.x+i.width/4)+" "+i.y+" L "+(i.x+i.width/2)+" "+(i.y+i.height/2)+" L "+(i.x+-i.width/2)+" "+i.y;r.d=p;this.svgRenderer.drawPath(r,u);break;case"pentagon":var o=Math.sqrt(i.height*i.height+i.width*i.width)/2,c=t.EjSvgRender.utils._getStringBuilder();for(f=0;f<=5;f++){var nt=f*72,w=Math.PI/180*nt,b=o*Math.cos(w),k=o*Math.sin(w);f==0?c.append("M "+(i.x+b)+" "+(i.y+k)+" "):c.append("L "+(i.x+b)+" "+(i.y+k)+" ")}r.d=c.toString();this.svgRenderer.drawPath(r,u);break;case"star":d="M "+(i.x+i.width/3)+" "+(i.y+-i.height/2)+" L "+(i.x+-i.width/2)+" "+(i.y+i.height/6)+" L "+(i.x+i.width/2)+" "+(i.y+i.height/6)+" L "+(i.x+-i.width/3)+" "+(i.y+-i.height/2)+" L "+i.x+" "+(i.y+i.height/2)+" L "+(i.x+i.width/3)+" "+(i.y+-i.height/2);r.d=d;this.svgRenderer.drawPath(r,u);break;case"rectangle":g="M "+(i.x+-i.width/2)+" "+(i.y+-i.height/2)+" L "+(i.x+i.width/2)+" "+(i.y+-i.height/2)+" L "+(i.x+i.width/2)+" "+(i.y+i.height/2)+" L "+(i.x+-i.width/2)+" "+(i.y+i.height/2)+" L "+(i.x+-i.width/2)+" "+(i.y+-i.height/2);r.d=g;this.svgRenderer.drawPath(r,u);break;case"trapezoid":h="M "+(i.x+-i.width/2)+" "+i.y+" L "+(i.x+-i.width/2)+" "+(i.y+-i.height/4)+" L "+(i.x+-i.width/2+i.width)+" "+(i.y+-i.height/2)+" L "+(i.x+-i.width/2+i.width)+" "+(i.y+i.height/2)+" L "+(i.x+-i.width/2)+" "+(i.y+i.height/4)+" L "+(i.x+-i.width/2)+" "+i.y;r.d=h;this.svgRenderer.drawPath(r,u);break;case"diamond":h="M "+(i.x+-i.width/2)+" "+i.y+" L "+i.x+" "+(i.y+-i.height/2)+" L "+(i.x+i.width/2)+" "+i.y+" L "+i.x+" "+(i.y+i.height/2)+" L "+(i.x+-i.width/2)+" "+i.y;r.d=h;this.svgRenderer.drawPath(r,u);break;case"ellipse":r.cx=i.x;r.cy=i.y;r.rx=i.width/2;r.ry=i.height/2;this.svgRenderer.drawEllipse(r,u);break;case"image":r.x=i.x-i.width/2;r.y=i.y-i.height/2;r.width=i.width;r.height=i.height;r.href=this.model.captionSettings.indicator.symbol.imageURL;r.visibility="visible";this.svgRenderer.drawImage(r,u)}},_drawIndicator:function(){var i,r,u;this.model.captionSettings.indicator.visible&&(i=this.model.captionSettings.indicator,r=n.extend({},{indicatorSettings:this.model.captionSettings.indicator}),this.model.drawIndicator&&(this._trigger("drawIndicator",r),r.cancel==!1&&(i=r.indicatorSettings,this.model.captionSettings.indicator=i)),u=t.EjSvgRender.utils._measureText(i.text,null,i.font),this._indicator={bounds:u,settings:i})},_indicatorTextOptions:function(n,t,i,r){var u=n._location?n._location:n.location;return{"class":r,x:u.x+t.width+n.textSpacing,y:u.y-t.height/2+parseFloat(n.font.size)/3,fill:n.font.color,"font-size":n.font.size,"font-family":n.font.fontFamily,"font-style":n.font.fontStyle,"font-weight":n.font.fontWeight,"text-anchor":"start",opacity:n.font.opacity,transform:"rotate("+n.textAngle+","+t.x+","+t.y+")"}},_indicatorSymbolOptions:function(n,t){return{id:n.id+"_indicatorSymbol",stroke:t.symbol.border.color,fill:t.symbol.color,"stroke-width":t.symbol.border.width,opacity:t.symbol.opacity}},_textOptions:function(n,t){var i=n._location?n._location:n.location;return{"class":t,x:i.x,y:i.y,fill:n.font.color,"font-size":n.font.size,"font-family":n.font.fontFamily,"font-style":n.font.fontStyle,"font-weight":n.font.fontWeight,"text-anchor":"start",opacity:n.font.opacity,cursor:"default",transform:"rotate("+n.textAngle+","+i.x+","+i.y+")"}},_drawScale:function(n,i){var r=this._scale._location?this._scale._location:this._scale.location,u,f,e;u=this._tickPosition==t.datavisualization.BulletGraph.TickPosition.Far||this._tickPosition==t.datavisualization.BulletGraph.TickPosition.Center?this._labelPosition==t.datavisualization.BulletGraph.LabelPosition.Below?r.y:r.y+this._scale.labelSettings.offset+this._scale.labelSettings.size:this._labelPosition==t.datavisualization.BulletGraph.LabelPosition.Below?r.y+this._scale.majorTickSettings.size:r.y+this._scale.labelSettings.offset+this._scale.labelSettings.size+this._scale.majorTickSettings.size;f=this._flowDirection==t.datavisualization.BulletGraph.FlowDirection.Forward?r.x:this._orientation==t.datavisualization.BulletGraph.Orientation.Horizontal?r.x-this._scale.labelSettings.offset:r.x;e={id:this.svgObject.id+"_SvgScale",x:f,y:u,width:this.model.quantitativeScaleLength,height:this.model.qualitativeRangeSize,fill:"transparent","stroke-width":0};this.svgRenderer.drawRect(e,i)},_drawMajorTicks:function(n,i){var r,l,tt=0,a=this._scale.location,b=this._tickPlacement=="inside",s=this._scale.location.x,k=this.model.quantitativeScaleLength,it=this._scale.labelSettings.offset,d=this.model.qualitativeRangeSize,u=this._scale.majorTickSettings.width,v=this._scale.majorTickSettings.size,f=this._orientation==t.datavisualization.BulletGraph.Orientation.Horizontal,o=this._flowDirection==t.datavisualization.BulletGraph.FlowDirection.Forward,rt=this._labelPosition==t.datavisualization.BulletGraph.LabelPosition.Below,e,y,p,w,nt;r=o?f?s+u/2:s+k+u/2:f?s+k-u/2:s+u/2;l=this._tickPosition=="far"?a.y+d+(b?-v:0):this._tickPosition=="near"?a.y+(b?0:-v):a.y+d/2-v/2;var h=this._scale.minimum,c=this._scale.maximum,g=this._scale.interval;for(e=h;e<=c;e+=g)tt++,e>=c&&(f&&!o?r+=u:r-=u),!f&&o&&(r=e>=c?r+u:e==h?r-u:r),this.model.applyRangeStrokeToTicks&&(y=this._bindingRangeStrokes(r-u/2)),p=this._majorTickLines(this._scale,r,l,y),!f&&o&&e==h&&(r=r+u),this.model.drawTicks&&(w={majorTickSettings:this._scale.majorTickSettings,minorTickSettings:this._scale.minorTickSettings,minorTicksPerInterval:this._scale.minorTicksPerInterval,maximum:c,minimum:h,interval:g},this._trigger("drawTicks",w),p=this._majorTickLines(w,r,l,y)),nt=this.svgRenderer.createLine(p),r=!o&&f||o&&!f?r-n:r+n,i.appendChild(nt)},_majorTickLines:function(n,t,i,r){return{x1:t,y1:i,x2:t,y2:i+n.majorTickSettings.size,"stroke-width":n.majorTickSettings.width,stroke:this.model.applyRangeStrokeToTicks&&r?r:n.majorTickSettings.stroke}},_forwardStrokeBinding:function(n){if(n>=this._scale.location.x&&n<=this._rangeCollection[0]+this._scale.location.x)return this.model.qualitativeRanges[0].rangeStroke;for(var t=0;t<=this._rangeCollection.length-1;t++)if(n>=this._rangeCollection[t]+this._scale.location.x&&n<=this._rangeCollection[t+1]+this._scale.location.x)return this.model.qualitativeRanges[t+1].rangeStroke},_backwardStrokeBinding:function(t){var i,r;if(t>=this._rangeCollection[this._rangeCollection.length-1])return this.model.qualitativeRanges[0].rangeStroke;for(i=0;i<=this._rangeCollection.length-1;i++)if(t>=this._rangeCollection[i]&&t<this._rangeCollection[i+1])return r=n.inArray(this._rangeCollection[i],this._rangeCollection),this.model.qualitativeRanges[this._rangeCollection.length-1-r].rangeStroke},_bindingRangeStrokes:function(n){if(this._rangeCollection.length==1){if(n>=this._scale.location.x&&n<=this._rangeCollection[0]+this._scale.location.x)return this.model.qualitativeRanges[0].rangeStroke}else return this.model.orientation==t.datavisualization.BulletGraph.Orientation.Horizontal&&this._flowDirection==t.datavisualization.BulletGraph.FlowDirection.Forward||this.model.orientation==t.datavisualization.BulletGraph.Orientation.Vertical&&this._flowDirection==t.datavisualization.BulletGraph.FlowDirection.Backward?this._forwardStrokeBinding(n):this._backwardStrokeBinding(n)},_drawMinorTicks:function(i,r){var h,c,s,p,u,tt=0,e=this._flowDirection==t.datavisualization.BulletGraph.FlowDirection.Forward,f=this._orientation==t.datavisualization.BulletGraph.Orientation.Horizontal,it=this._tickPlacement=="inside",o=this._scale.location.x,rt=this.model.qualitativeRangeSize,st=this._scale.labelSettings.offset,ht=this._scale.majorTickSettings.size,l=this._scale.minorTickSettings.size,ut=this._scale.minorTickSettings.width,b=this.model.quantitativeScaleLength,g,k,nt,w,d,v,y;h=e?f?o:o+b:f?o+b-ut/2:o;switch(this._tickPosition){case"far":s=this._scale.location.y+rt;p=s+(it?-l:l);break;case"near":s=this._scale.location.y+(it?l:-l);p=this._scale.location.y;break;default:s=this._scale.location.y+rt/2-l/2;p=s+l}var ft=this._scale.maximum,et=this._scale.minimum,ot=this._scale.interval,a=this._scale.minorTicksPerInterval;for(g=et;g<=ft;g+=ot){for(c=i/a,k=1;k<=a;k++)tt++,u=!f&&e||f&&!e?h-c+c/(a+1):h+c-c/(a+1),!e&&f&&tt>=(ft-et)*a&&(u+=ut/2),this.model.applyRangeStrokeToTicks&&(nt=this._bindingRangeStrokes(u)),w=this._minorTickLines(this._scale,u,s,p,nt),this.model.drawTicks&&(d={majorTickSettings:this._scale.majorTickSettings,minorTickSettings:this._scale.minorTickSettings,minorTicksPerInterval:this._scale.minorTicksPerInterval,maximum:this._scale.maximum,minimum:this._scale.minimum,interval:this._scale.interval},this._trigger("drawTicks",d),this._scale=n.extend(this._scale,d),w=this._minorTickLines(d,u,s,p,nt)),!e&&f?(v=b+o+1,u<=v&&u>=o+1&&(y=this.svgRenderer.createLine(w),r.appendChild(y))):e&&!f?(v=o+1,u>=v&&(y=this.svgRenderer.createLine(w),r.appendChild(y))):(v=b+o+1,u<=v&&(y=this.svgRenderer.createLine(w),r.appendChild(y))),c=i/a*(k+1);h=!e&&f||e&&!f?h-i:h+i}},_minorTickLines:function(n,t,i,r,u){return{x1:t,y1:i,x2:t,y2:r,"stroke-width":n.minorTickSettings.width,stroke:this.model.applyRangeStrokeToTicks&&u?u:n.minorTickSettings.stroke}},_drawLabels:function(n,i){var o,a,it=this.model.locale,et=it&&this.model.enableGroupSeparator,g,b,rt=this._flowDirection==t.datavisualization.BulletGraph.FlowDirection.Forward,c=this._orientation==t.datavisualization.BulletGraph.Orientation.Horizontal,k=this._scale.location.x,f=this._scale.labelSettings.offset,ut=this.model.quantitativeScaleLength,ct=this._scale.majorTickSettings.width,v,l,e,w,nt,h,tt;o=rt?c?k:k+ut:c?k+ut:k;var ft=this._tickPosition+this._labelPlacement,s=this._labelPosition==t.datavisualization.BulletGraph.LabelPosition.Below,lt=this._scale.location.y,d=this.model.qualitativeRangeSize,u=this._scale.labelSettings.size,at=this._scale.majorTickSettings.size;switch(ft){case"faroutside":case"centeroutside":a=s?this._scale.location.y+d+f+u:this._scale.location.y-f;break;case"farinside":case"centerinside":a=s?this._scale.location.y+d-f:this._scale.location.y+f+(c?u:0);break;case"nearoutside":a=s?this._scale.location.y+d+f+u:this._scale.location.y-f;break;case"nearinside":a=s?this._scale.location.y+d-f:this._scale.location.y+f+u}var ot=this._scale.minimum,st=this._scale.maximum,ht=this._scale.interval,vt=this._labelPlacement=="inside";for(l=ot;l<=st;l+=ht){var r=a,y=o,p=this._scale.labelSettings.font;if(p.size=u,e={width:0,height:0},c)b="rotate(0,"+y+","+r+")";else{w=this._scale.labelSettings.labelPrefix+l+this._scale.labelSettings.labelSuffix;switch(ft){case"faroutside":case"centeroutside":s?r-=u:(e=t.EjSvgRender.utils._measureText(w,null,p),r-=e.width);break;case"farinside":case"centerinside":s&&(e=t.EjSvgRender.utils._measureText(w,null,p),r-=e.width);break;case"nearoutside":s?r-=u:(e=t.EjSvgRender.utils._measureText(w,null,p),r-=e.width);break;case"nearinside":s?(e=t.EjSvgRender.utils._measureText(w,null,p),r-=e.width):r-=u}y-=u/3;b="rotate(90,"+y+","+r+")"}this.model.applyRangeStrokeToLabels&&(nt=this._bindingRangeStrokes(o));h=this._labelOptions(this.model.quantitativeScaleSettings.labelSettings,y,r,b,nt);this.model.drawLabels&&(tt={font:this._scale.labelSettings.font,labelPrefix:this._scale.labelSettings.labelPrefix,labelSuffix:this._scale.labelSettings.labelSuffix,offset:f,size:u,stroke:this._scale.labelSettings.stroke},this._trigger("drawLabels",tt),h=this._labelOptions(tt,y,r,b,nt));o=rt?c?o+n:o-n:c?o-n:o+n;g=et?l.toLocaleString(it):l;v=g;t.util.isNullOrUndefined(h.labelPrefix)||(v=h.labelPrefix+g);t.util.isNullOrUndefined(h.labelSuffix)||(v=v+h.labelSuffix);this.svgRenderer.drawText(h,v,i)}},_labelOptions:function(n,i,r,u,f){var e={x:i,y:r,"text-anchor":this._orientation==t.datavisualization.BulletGraph.Orientation.Horizontal?"middle":"start",fill:this.model.applyRangeStrokeToLabels&&f?f:n.stroke,"font-size":n.size+"px","font-family":n.font.fontFamily,"font-style":n.font.fontStyle,"font-weight":n.font.fontWeight,opacity:n.font.opacity,transform:u};return n.labelPrefix!=""&&(e.labelPrefix=n.labelPrefix),n.labelSuffix!=""&&(e.labelSuffix=n.labelSuffix),e},_drawQualitativeRanges:function(n){var c=this._scale.location.x,y=this._scale.location.y,e,a=this._flowDirection==t.datavisualization.BulletGraph.FlowDirection.Forward,o=this._orientation==t.datavisualization.BulletGraph.Orientation.Horizontal,p=this._scale.labelSettings.offset,s,h,f,v;this._rangeCollection=[];var w=this._tickPosition+this._labelPlacement,b=this._labelPosition==t.datavisualization.BulletGraph.LabelPosition.Below,k=this.model.qualitativeRangeSize,l=this._scale.location.x,r=this._scale.minimum,i=this._scale.maximum,u=this.model.quantitativeScaleLength;for(s=this.model.qualitativeRanges.length-1;s>=0;s--)h={object:this,rangeIndex:s,rangeOptions:this.model.qualitativeRanges[s],rangeEndValue:this.model.qualitativeRanges[s].rangeEnd},this.model.drawQualitativeRanges&&this._trigger("drawQualitativeRanges",h),f=h.rangeEndValue,f=f>i?i:f,a?(c=o?l:l+(u-u/((i-r)/(i-r-(i-f)))),e=o?u/((i-r)/(i-r-(i-f))):u/((i-r)/(i-r-(i-f)))):(c=o?l+(u-u/((i-r)/(i-r-(i-f)))):l,e=o?u/((i-r)/(i-r-(i-f))):u/((i-r)/(i-r-(i-f)))),v={x:c,y:y,height:this.model.qualitativeRangeSize,width:e>0?e<u?e:u:0,fill:h.rangeOptions.rangeStroke,opacity:h.rangeOptions.rangeOpacity},o&&a||!o&&!a?this._rangeCollection.push(e):this._rangeCollection.push(c),this.svgRenderer.drawRect(v,n);this._rangeCollection.sort(this._sortRangeCollection)},_sortRangeCollection:function(n,t){return n-t},_calculateFeatureMeasureBounds:function(n,i){var o=this._scale.minimum,a,v;if(n=n<o&&o<0?o:n,n>=o){var u,h,r,f=this._scale.location.x,e=this.model.quantitativeScaleLength,s=this._scale.maximum-this._scale.minimum,c=this._scale.maximum-n,l=this._flowDirection.toLowerCase()+this._orientation.toLowerCase();i=i==null?"":i;a=this._scale.labelSettings.font;a.size=this._scale.labelSettings.size;v=t.EjSvgRender.utils._measureText(i.toString(),null,a).width;switch(l){case"forwardhorizontal":case"backwardvertical":u=f+(o>0?0:e/s*Math.abs(o));r=e/(s/(o>0?s-c:n));n<0&&(r=Math.abs(r),u-=r);r=u+r<f+e?r:f+e-u;h=f-(l=="forwardhorizontal"?v/2+this._scale.labelSettings.offset:this._scale.labelSettings.offset);break;default:u=f+(e-e/(s/(s-c)));r=o>0?e/(s/(s-c)):e/(s/n);n<0&&(r=Math.abs(r),u-=r);u<f&&(r=u+r-f,u=f);h=f+e+(l=="backwardhorizontal"?v/2+this._scale.labelSettings.offset:this._scale.labelSettings.offset)}return{pointX:u,Width:r,lPointX:h}}return!1},_drawFeatureMeasureBar:function(){var e=1,o,r,s,h,f,a=this.model.locale,y=a&&this.model.enableGroupSeparator,v=!t.isNullOrUndefined(this.model.fields)&&this.model.fields.dataSource!=null,p=this._orientation==t.datavisualization.BulletGraph.Orientation.Vertical,w=typeof this.model.value=="function"?this._value():this.model.value,n,i,c,l,u;if(this._dataCount>0)for(n=this._dataCount-1;n>=0;n--)o=v?this.model.fields.dataSource[n][this.model.fields.featureMeasures]:t.isNullOrUndefined(this._scale.featureMeasures[n].value)?w:this._scale.featureMeasures[n].value,r=v?this.model.fields.dataSource[n][this.model.fields.category]:this._scale.featureMeasures[n].category,h=this._scale.location.y+this.model.qualitativeRangeSize/this._dataCount*e/2-this._scale.featuredMeasureSettings.width/2,f=this._scale.location.y+this.model.qualitativeRangeSize/this._dataCount*e/2+this._scale.featuredMeasureSettings.width/2-1,i=this._calculateFeatureMeasureBounds(o,r),i&&(c=this._featureBar(this._scale,i.pointX,h,i.Width,n),this.model.drawFeatureMeasureBar&&(u={featuredMeasureSettings:this._scale.featuredMeasureSettings},this._trigger("drawFeatureMeasureBar",u),c=this._featureBar(u,i.pointX,h,i.Width,n)),this.svgRenderer.drawRect(c,this._scaleGroup),s=p?"rotate(90,"+i.lPointX+","+(f-4)+")":"rotate(0,"+i.lPointX+","+f+")",l=this._drawcategory(this.model.quantitativeScaleSettings.labelSettings,i.lPointX,f,s),this.model.drawCategory&&(u={size:this.model.quantitativeScaleSettings.labelSettings.size,stroke:this.model.quantitativeScaleSettings.labelSettings.stroke,font:this.model.quantitativeScaleSettings.labelSettings.font,categoryValue:r},this._trigger("drawCategory",u),l=this._drawcategory(u,i.lPointX,f,s),r=u.categoryValue),t.isNullOrUndefined(r)||this.svgRenderer.drawText(l,y?r.toLocaleString(a):r,this._scaleGroup),e+=2,this.value(o))},_drawcategory:function(n,t,i,r){return{x:t,y:i+this._scale.featuredMeasureSettings.width/2,"text-anchor":"middle",fill:n.stroke,"font-size":n.size+"px","font-family":n.font.fontFamily,"font-style":n.font.fontStyle,"font-weight":n.font.fontWeight,opacity:n.font.opacity,transform:r}},_featureBar:function(n,t,i,r,u){return{"class":this.svgObject.id+"_FeatureMeasure",id:this.svgObject.id+"_FeatureMeasure_"+u,x:t,y:i,height:n.featuredMeasureSettings.width,width:r,fill:n.featuredMeasureSettings.stroke}},_drawComparativeMeasureSymbol:function(){var r=1,n,u,f,e,c=this._flowDirection==t.datavisualization.BulletGraph.FlowDirection.Forward,h=this._orientation==t.datavisualization.BulletGraph.Orientation.Horizontal,l=typeof this.model.comparativeMeasureValue=="function"?this._comparativeMeasureValue():this.model.comparativeMeasureValue,i,o,s;if(this._dataCount>0)for(i=this._dataCount-1;i>=0;i--)n=!t.isNullOrUndefined(this.model.fields)&&this.model.fields.dataSource!=null?this.model.fields.dataSource[i][this.model.fields.comparativeMeasure]:t.isNullOrUndefined(this._scale.featureMeasures[i].comparativeMeasureValue)?l:this._scale.featureMeasures[i].comparativeMeasureValue,n>=this._scale.minimum&&n<=this._scale.maximum&&(u=this._scale.location.y+this.model.qualitativeRangeSize/this._dataCount*r/2-this._scale.featuredMeasureSettings.width/2-this._scale.featuredMeasureSettings.width,f=this._scale.location.y+this.model.qualitativeRangeSize/this._dataCount*r/2-this._scale.featuredMeasureSettings.width/2+2*this._scale.featuredMeasureSettings.width,e=c?h?this._scale.location.x+this.model.quantitativeScaleLength/((this._scale.maximum-this._scale.minimum)/(this._scale.maximum-this._scale.minimum-(this._scale.maximum-n))):this._scale.location.x+(this.model.quantitativeScaleLength-this.model.quantitativeScaleLength/((this._scale.maximum-this._scale.minimum)/(this._scale.maximum-this._scale.minimum-(this._scale.maximum-n)))):h?this._scale.location.x+(this.model.quantitativeScaleLength-this.model.quantitativeScaleLength/((this._scale.maximum-this._scale.minimum)/(this._scale.maximum-this._scale.minimum-(this._scale.maximum-n)))):this._scale.location.x+this.model.quantitativeScaleLength/((this._scale.maximum-this._scale.minimum)/(this._scale.maximum-this._scale.minimum-(this._scale.maximum-n))),o=this._compareMeasure(this._scale,e,u,f,i,n),this.model.drawComparativeMeasureSymbol&&(s={comparativeMeasureSettings:this._scale.comparativeMeasureSettings},this._trigger("drawComparativeMeasureSymbol",s),o=this._compareMeasure(s,e,u,f,i,n)),this.svgRenderer.drawLine(o,this._scaleGroup),r+=2,this.comparativeMeasureValue(n))},_compareMeasure:function(n,t,i,r,u,f){return{"class":this.svgObject.id+"_ComparativeMeasure",id:this.svgObject.id+"_ComparativeMeasure_"+u,x1:f==this._scale.maximum?t-n.comparativeMeasureSettings.width/2:f==this._scale.minimum?t+n.comparativeMeasureSettings.width/2:t,y1:i,x2:f==this._scale.maximum?t-n.comparativeMeasureSettings.width/2:f==this._scale.minimum?t+n.comparativeMeasureSettings.width/2:t,y2:r,"stroke-width":n.comparativeMeasureSettings.width,stroke:n.comparativeMeasureSettings.stroke}},_setTheme:function(n,i){var u=[],e,r,f;this._scale=this.model.quantitativeScaleSettings;for(e in n)u.push(e);for(r=0;r<u.length;r++)for(this._scale.majorTickSettings.stroke=!this._scale.majorTickSettings.stroke||this._scale.majorTickSettings.stroke==n[u[r]].quantitativeScaleSettings.majorTickSettings.stroke?n[i].quantitativeScaleSettings.majorTickSettings.stroke:this._scale.majorTickSettings.stroke,this._scale.minorTickSettings.stroke=!this._scale.minorTickSettings.stroke||this._scale.minorTickSettings.stroke==n[u[r]].quantitativeScaleSettings.minorTickSettings.stroke?n[i].quantitativeScaleSettings.minorTickSettings.stroke:this._scale.minorTickSettings.stroke,this._scale.labelSettings.stroke=!this._scale.labelSettings.stroke||this._scale.labelSettings.stroke==n[u[r]].quantitativeScaleSettings.labelSettings.stroke?n[i].quantitativeScaleSettings.labelSettings.stroke:this._scale.labelSettings.stroke,this._scale.featuredMeasureSettings.stroke=!this._scale.featuredMeasureSettings.stroke||this._scale.featuredMeasureSettings.stroke==n[u[r]].quantitativeScaleSettings.featuredMeasureSettings.stroke?n[i].quantitativeScaleSettings.featuredMeasureSettings.stroke:this._scale.featuredMeasureSettings.stroke,this._scale.comparativeMeasureSettings.stroke=!this._scale.comparativeMeasureSettings.stroke||this._scale.comparativeMeasureSettings.stroke==n[u[r]].quantitativeScaleSettings.comparativeMeasureSettings.stroke?n[i].quantitativeScaleSettings.comparativeMeasureSettings.stroke:this._scale.comparativeMeasureSettings.stroke,this.model.captionSettings.font.color=!this.model.captionSettings.font.color||this.model.captionSettings.font.color==n[u[r]].captionSettings.font.color?n[i].captionSettings.font.color:this.model.captionSettings.font.color,this.model.captionSettings.subTitle.font.color=!this.model.captionSettings.subTitle.font.color||this.model.captionSettings.subTitle.font.color==n[u[r]].captionSettings.subTitle.font.color?n[i].captionSettings.subTitle.font.color:this.model.captionSettings.subTitle.font.color,this.model.captionSettings.indicator.font.color=!this.model.captionSettings.indicator.font.color||this.model.captionSettings.indicator.font.color==n[u[r]].captionSettings.indicator.font.color?n[i].captionSettings.indicator.font.color:this.model.captionSettings.indicator.font.color,this.model.captionSettings.indicator.symbol.color=!this.model.captionSettings.indicator.symbol.color||this.model.captionSettings.indicator.symbol.color==n[u[r]].captionSettings.indicator.symbol.color?n[i].captionSettings.indicator.symbol.color:this.model.captionSettings.indicator.symbol.color,f=0;f<this.model.qualitativeRanges.length;f++)this.model.qualitativeRanges[f].rangeStroke=this.model.qualitativeRanges[f].rangeStroke?this.model.qualitativeRanges[f].rangeStroke:t.isNullOrUndefined(n[i].qualitativeRanges[f])?n[i].qualitativeRanges[0].rangeStroke:n[i].qualitativeRanges[f].rangeStroke},_onDrawQualitativeRanges:function(n,t,i){var r={object:this,scaleElement:this.model.quantitativeScaleSettings,rangeIndex:i,rangeElement:n,rangeEndValue:t};this._trigger("drawQualitativeRanges",r)},_doAnimation:function(){for(var r,i=n("."+this.svgObject.id+"_FeatureMeasure"),t=i.length-1;t>=0;t--)r=i[t],this._animateFeatureBar(r)},_doLineAnimation:function(){for(var r,i=n("."+this.svgObject.id+"_ComparativeMeasure"),u=2e3/i.length,t=i.length-1;t>=0;t--)r=i[t],n(r).attr("transform","scale(0)"),this._doLineSymbol(r,