{"version":3,"file":"kendo.dataviz.gauge.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendodataviz","gauge","js","this","$","window","kendo","dataviz","getSpacing","defined","constants","BLACK","COORD_PRECISION","services","deepExtend","isArray","setDefaultOptions","NumericAxis","limitValue","Box","interpolateValue","round","drawing","DrawingGroup","Group","DrawingPath","Path","Animation","AnimationFactory","geometry","Rect","GeometryPoint","Point","transform","ANGULAR_SPEED","ARROW_POINTER","BAR_POINTER","DEFAULT_LINE_WIDTH","DEGREE","Math","PI","INSIDE","LINEAR","OUTSIDE","RADIAL_POINTER","RADIAL_RANGE_POINTER","pad","bbox","value","origin","getOrigin","size","getSize","spacing","setOrigin","x","left","y","top","setSize","width","right","height","bottom","Path$1","Text","buildLabelElement","label","options","labelBox","box","textBox","children","border","background","wrapper","fromRect","x1","y1","stroke","text","font","fill","color","styleGeometry","clone","padding","styleBox","opacity","dashType","lineJoin","lineCap","elements","append","getRange","range","min","max","from","MIN_VALUE","to","MAX_VALUE","unpad","Surface","Gauge","Class","extend","init","element","userOptions","theme","context","contextService","ChartService","_originalOptions","_initTheme","redraw","destroy","surface","surfaceElement","pointerValue","pointer","pointers","arguments","length","_setValueOptions","_draw","clear","draw","_visuals","exportVisual","allValues","values","i","push","i$1","isNumber","concat","arrayValues","resize","noTransitionsRedraw","transitions","_toggleTransitions","_surfaceSize","_initSurface","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","reflow","setOptions","setDirection","rtl","Boolean","type","setIntlService","intl","currentTheme","areaGeometry","margin","_surfaceElement","elementSize","renderAs","create","_getSize","document","createElement","appendChild","defaultSize","_defaultSize","offsetWidth","offsetHeight","animation","plotArea","scale","Path$2","Group$2","renderAxisTick","tickRenderOptions","tickOptions","start","end","position","tickX","tickY","vertical","moveTo","lineTo","renderTicks","tickGroup","tickPositions","count","visible","mirror","lineBox","skip","step","skipUnit","x2","LinearScale","service","scaleOptions","reverse","fn","call","minorUnit","majorUnit","initUserOptions","labels","autoMajorUnit","initFields","render","renderLabels","scaleLine","renderLine","scaleTicks","ranges","renderRanges","this$1$1","rangeSize","minorTicks","slot","getSlot","slotX","slotY","y2","line","linePath","ticks","majorTicks","getMajorTickPositions","getMinorTickPositions","align","_alignLines","Pointer","ref","newValue","_oldValue","repaint","LinearPointer","track","pointerBox","pointerRangeBox","trackBox","ref$1","trackSize","pointerHalfSize","space","shape","getElementOptions","_margin","ArrowLinearPointerAnimation","setup","axis","fromScale","toScale","duration","distanceTo","pos","translateX","translateY","translate","easing","current","register","Point$1","Path$3","ArrowLinearPointer","pointerShape","halfSize","sign","play","elementOptions","close","BarLinearPointerAnimation","Y","X","newPoints","oldPoints","abs","speed","_set","setter","toUpperCase","points","Group$3","Path$4","BarLinearPointer","dir","minSlot","sizeAxis","p1","p2","p3","p4","pointerPath","oldShape","group","renderTrack","trackOptions","toRect","Group$1","LinearGauge","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","visuals","scaleElements","currentOptions","pointerType","boxCenter","center","plotAreaBox","wrap","diff","scaleBox","overflow","contentBox","shrink","alignTo","GEO_ARC_ADJUST_ANGLE","Arc","Path$5","Group$5","drawTicks","arc","tickAngles","unit","radius","getRadiusX","tickStart","pointAt","tickEnd","rotate","rangeSegment","RadialScale","renderArc","labelElements","repositionRanges","slotAngle","startAngle","endAngle","angle","hasRanges","ticksSize","labelsCount","labelsGroup","rangeDistance","labelsOptions","isInside","hasLabelElements","setRadiusX","setRadiusY","paddingWidth","paddingHeight","halfWidth","halfHeight","labelAngle","lp","cx","cos","cy","sin","labelPos","labelElement","prevLabelPos","labelTransform","union","rangeRadius","getRangeRadius","newRadius","_geometry","segments","rangeSegments","segmentsCount","result","segment","createRange","rangeGeom","radiusX","radiusY","defaultColor","rangePlaceholderColor","j","majorTickSize","tickArc","majorTickAngles","allTicks","minorTickSize","_tickDifference","minorTickAngles","normalizeTickAngles","angles","splice","ring","stepValue","tickCount","positions","repositionTicks","minor","newPoint","xDiff","anchor","yDiff","RadialPointerAnimation","animationOptions","newAngle","oldAngle","Circle","Group$6","Path$6","RadialPointer","setAngle","_renderNeedle","_renderCap","capSize","cap","fromPoints","needleColor","needlePath","capColor","circle","arrow","Group$4","RadialGauge","_initialPlotArea","fitScale","alignScale","_buildPointers","minDiff","midDiff","maxDiff","mid","oldDiff","getDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","ArcScale","rangeLineCap","placeholderRangeAngle","geometry$$1","setEndAngle","setStartAngle","addRange","RangePointerAnimation","startColor","get","currentColor","Color","r","g","b","toHex","RangePointer","abort","colors","currentValue","idx","ref$2","rangeColor","ArcGauge","centerLabelPosition","yLimit","bottomRight","CircularGauge","jQuery","Widget","ui","themeOptions","themes","themeName","lowerName","toLowerCase","SASS_THEMES","indexOf","autoTheme","empty","_createInstance","addClass","notify","_instance","_copyFields","gaugeType","_gaugeType","_resize","proxyMembers","createProxyMember","name","apply","ExportMixin","RadialGaugeWidget","LinearGaugeWidget","ArcGaugeWidget","css","_centerTemplate","instance","_centerElement","centerTemplate","template","centerElement","_getCenterElement","html","remove","CircularGaugeWidget","createExportMethod","method","drawDOM","then","visual","exportMethods","plugin"],"sources":["kendo.dataviz.gauge.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.color.js'), require('kendo.drawing.js'), require('kendo.dataviz.core.js'), require('kendo.dataviz.themes.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.color', 'kendo.drawing', 'kendo.dataviz.core', 'kendo.dataviz.themes'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendodataviz = global.kendodataviz || {}, global.kendodataviz.gauge = global.kendodataviz.gauge || {}, global.kendodataviz.gauge.js = factory()));\n})(this, (function () {\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n var dataviz = kendo.dataviz;\n var getSpacing = dataviz.getSpacing;\n var defined = dataviz.defined;\n var constants = dataviz.constants;\n var BLACK = constants.BLACK;\n var COORD_PRECISION = constants.COORD_PRECISION;\n var services = dataviz.services;\n var deepExtend = dataviz.deepExtend;\n var isArray = dataviz.isArray;\n var setDefaultOptions = dataviz.setDefaultOptions;\n var NumericAxis = dataviz.NumericAxis;\n var limitValue = dataviz.limitValue;\n var Box = dataviz.Box;\n var interpolateValue = dataviz.interpolateValue;\n var round = dataviz.round;\n var drawing = kendo.drawing;\n var DrawingGroup = drawing.Group;\n var DrawingPath = drawing.Path;\n var Animation = drawing.Animation;\n var AnimationFactory = drawing.AnimationFactory;\n var geometry = kendo.geometry;\n var Rect = geometry.Rect;\n var GeometryPoint = geometry.Point;\n var transform = geometry.transform;\n\n var ANGULAR_SPEED = 150;\n var LINEAR_SPEED = 250;\n var ARROW = \"arrow\";\n var ARROW_POINTER = \"arrowPointer\";\n var BAR_POINTER = \"barPointer\";\n var DEFAULT_HEIGHT = 200;\n var DEFAULT_LINE_WIDTH = 0.5;\n var DEFAULT_WIDTH = 200;\n var DEGREE = Math.PI / 180;\n var INSIDE = \"inside\";\n var LINEAR = \"linear\";\n var OUTSIDE = \"outside\";\n var RADIAL_POINTER = \"radialPointer\";\n var RADIAL_RANGE_POINTER = \"radialRangePointer\";\n\n function pad(bbox, value) {\n var origin = bbox.getOrigin();\n var size = bbox.getSize();\n var spacing = getSpacing(value);\n\n bbox.setOrigin([ origin.x - spacing.left, origin.y - spacing.top ]);\n bbox.setSize([ size.width + (spacing.left + spacing.right), size.height + (spacing.top + spacing.bottom) ]);\n\n return bbox;\n }\n\n var Group = DrawingGroup;\n var Path$1 = DrawingPath;\n var Text = drawing.Text;\n\n function buildLabelElement(label, options) {\n var labelBox = label.box;\n var textBox = label.children[0].box;\n var border = options.border || {};\n var background = options.background || \"\";\n\n var wrapper = Path$1.fromRect(new Rect([ labelBox.x1, labelBox.y1 ], [ labelBox.width(), labelBox.height() ]), {\n stroke: {}\n });\n\n var text = new Text(label.text, new GeometryPoint(textBox.x1, textBox.y1), {\n font: options.font,\n fill: { color: options.color }\n });\n\n var styleGeometry = pad(text.bbox().clone(), options.padding);\n\n var styleBox = Path$1.fromRect(styleGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n opacity: border.opacity,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: background\n }\n });\n\n var elements = new Group();\n elements.append(wrapper);\n elements.append(styleBox);\n elements.append(text);\n\n return elements;\n }\n\n function getRange(range, min, max) {\n var from = defined(range.from) ? range.from : constants.MIN_VALUE;\n var to = defined(range.to) ? range.to : constants.MAX_VALUE;\n\n range.from = Math.max(Math.min(to, from), min);\n range.to = Math.min(Math.max(to, from), max);\n\n return range;\n }\n\n function unpad(bbox, value) {\n var spacing = getSpacing(value);\n\n spacing.left = -spacing.left; spacing.top = -spacing.top;\n spacing.right = -spacing.right; spacing.bottom = -spacing.bottom;\n\n return pad(bbox, spacing);\n }\n\n var DEFAULT_MARGIN = 5;\n var Path = DrawingPath;\n var Surface = drawing.Surface;\n\n var Gauge = dataviz.Class.extend({\n init: function(element, userOptions, theme, context) {\n if (context === void 0) { context = {}; }\n\n this.element = element;\n this.theme = theme;\n this.contextService = new services.ChartService(this, context);\n this._originalOptions = deepExtend({}, this.options, userOptions);\n this.options = deepExtend({}, this._originalOptions);\n this._initTheme(theme);\n\n this.redraw();\n },\n\n destroy: function() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n }\n\n delete this.element;\n delete this.surfaceElement;\n },\n\n value: function(pointerValue) {\n var pointer = this.pointers[0];\n\n if (arguments.length === 0) {\n return pointer.value();\n }\n\n pointer.value(pointerValue);\n this._setValueOptions(pointerValue);\n },\n\n _draw: function() {\n var surface = this.surface;\n\n surface.clear();\n surface.draw(this._visuals);\n },\n\n exportVisual: function() {\n return this._visuals;\n },\n\n allValues: function(values) {\n var pointers = this.pointers;\n var allValues = [];\n\n if (arguments.length === 0) {\n for (var i = 0; i < pointers.length; i++) {\n allValues.push(pointers[i].value());\n }\n\n return allValues;\n }\n\n if (isArray(values)) {\n for (var i$1 = 0; i$1 < values.length; i$1++) {\n if (dataviz.isNumber(values[i$1])) {\n pointers[i$1].value(values[i$1]);\n }\n }\n }\n\n this._setValueOptions(values);\n },\n\n _setValueOptions: function(values) {\n var pointers = [].concat(this.options.pointer);\n var arrayValues = [].concat(values);\n\n for (var i = 0; i < arrayValues.length; i++) {\n pointers[i].value = arrayValues[i];\n }\n },\n\n resize: function() {\n this.noTransitionsRedraw();\n },\n\n noTransitionsRedraw: function() {\n var transitions = this.options.transitions;\n\n this._toggleTransitions(false);\n\n this.redraw();\n\n this._toggleTransitions(transitions);\n },\n\n redraw: function() {\n var size = this._surfaceSize();\n var wrapper = new Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._initSurface();\n\n this.gaugeArea = this._createGaugeArea();\n\n this._createModel();\n\n var bbox = unpad(wrapper.bbox(), this._gaugeAreaMargin);\n this.reflow(bbox);\n },\n\n setOptions: function(options, theme) {\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n this._initTheme(theme);\n\n this.redraw();\n },\n\n setDirection: function(rtl) {\n this.contextService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this.surface.destroy();\n this.surface = null;\n }\n },\n\n setIntlService: function(intl) {\n this.contextService.intl = intl;\n },\n\n _initTheme: function(theme) {\n var currentTheme = theme || this.theme || {};\n this.theme = currentTheme;\n\n this.options = deepExtend({}, currentTheme, this.options);\n var options = this.options;\n var pointer = options.pointer;\n\n if (isArray(pointer)) {\n var pointers = [];\n for (var i = 0; i < pointer.length; i++) {\n pointers.push(deepExtend({}, currentTheme.pointer, pointer[i]));\n }\n options.pointer = pointers;\n }\n },\n\n _createGaugeArea: function() {\n var options = this.options.gaugeArea;\n var size = this.surface.size();\n var border = options.border || {};\n var areaGeometry = new Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._gaugeAreaMargin = options.margin || DEFAULT_MARGIN;\n\n if (border.width > 0) {\n areaGeometry = unpad(areaGeometry, border.width);\n }\n\n var gaugeArea = Path.fromRect(areaGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n opacity: border.opacity,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: options.background\n }\n });\n\n return gaugeArea;\n },\n\n _initSurface: function() {\n var ref = this;\n var options = ref.options;\n var surface = ref.surface;\n var element = this._surfaceElement();\n var size = this._surfaceSize();\n\n dataviz.elementSize(element, size);\n\n if (!surface || surface.options.type !== options.renderAs) {\n if (surface) {\n surface.destroy();\n }\n\n this.surface = Surface.create(element, {\n type: options.renderAs\n });\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n },\n\n _surfaceSize: function() {\n var options = this.options;\n var size = this._getSize();\n\n if (options.gaugeArea) {\n deepExtend(size, options.gaugeArea);\n }\n\n return size;\n },\n\n _surfaceElement: function() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.element.appendChild(this.surfaceElement);\n }\n\n return this.surfaceElement;\n },\n\n getSize: function() {\n return this._getSize();\n },\n\n _getSize: function() {\n var element = this.element;\n var defaultSize = this._defaultSize();\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (!width) {\n width = defaultSize.width;\n }\n\n if (!height) {\n height = defaultSize.height;\n }\n\n return { width: width, height: height };\n },\n\n _defaultSize: function() {\n return {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT\n };\n },\n\n _toggleTransitions: function(value) {\n var this$1$1 = this;\n\n this.options.transitions = value;\n for (var i = 0; i < this.pointers.length; i++) {\n this$1$1.pointers[i].options.animation.transitions = value;\n }\n }\n });\n\n setDefaultOptions(Gauge, {\n plotArea: {},\n theme: \"sass\",\n renderAs: \"\",\n pointer: {},\n scale: {},\n gaugeArea: {}\n });\n\n var Path$2 = DrawingPath;\n var Group$2 = DrawingGroup;\n var Point = GeometryPoint;\n\n function renderAxisTick(tickRenderOptions, tickOptions) {\n var position = tickRenderOptions.position;\n var tickX = tickRenderOptions.tickX;\n var tickY = tickRenderOptions.tickY;\n var start, end;\n\n if (tickRenderOptions.vertical) {\n start = new Point(tickX, position);\n end = new Point(tickX + tickOptions.size, position);\n } else {\n start = new Point(position, tickY);\n end = new Point(position, tickY + tickOptions.size);\n }\n\n var tickPath = new Path$2({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(start).lineTo(end);\n\n return tickPath;\n }\n\n function renderTicks(tickGroup, tickPositions, tickRenderOptions, tickOptions) {\n var count = tickPositions.length;\n\n if (tickOptions.visible) {\n var mirror = tickRenderOptions.mirror;\n var lineBox = tickRenderOptions.lineBox;\n for (var i = tickOptions.skip; i < count; i += tickOptions.step) {\n if (i % tickOptions.skipUnit === 0) {\n continue;\n }\n\n tickRenderOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickRenderOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickRenderOptions.position = tickPositions[i];\n\n tickGroup.append(renderAxisTick(tickRenderOptions, tickOptions));\n }\n }\n }\n\n var LinearScale = NumericAxis.extend({\n init: function(options, service) {\n var scaleOptions = options || {};\n if (!defined(scaleOptions.reverse) && scaleOptions.vertical === false && (service || {}).rtl) {\n scaleOptions = $.extend({}, scaleOptions, {\n reverse: true\n });\n }\n\n NumericAxis.fn.init.call(this, 0, 1, scaleOptions, service);\n\n this.options.minorUnit = this.options.minorUnit || this.options.majorUnit / 10;\n },\n\n initUserOptions: function(options) {\n var scaleOptions = deepExtend({}, this.options, options);\n scaleOptions = deepExtend({}, scaleOptions , { labels: { mirror: scaleOptions.mirror } });\n scaleOptions.majorUnit = scaleOptions.majorUnit || dataviz.autoMajorUnit(scaleOptions.min, scaleOptions.max);\n\n return scaleOptions;\n },\n\n initFields: function() {\n },\n\n render: function() {\n var elements = this.elements = new Group$2();\n var labels = this.renderLabels();\n var scaleLine = this.renderLine();\n var scaleTicks = this.renderTicks();\n var ranges = this.renderRanges();\n\n elements.append(scaleLine, labels, scaleTicks, ranges);\n\n return elements;\n },\n\n renderRanges: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var min = options.min;\n var max = options.max;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var ranges = options.ranges || [];\n var elements = new Group$2();\n var count = ranges.length;\n var rangeSize = options.rangeSize || options.minorTicks.size / 2;\n\n for (var i = 0; i < count; i++) {\n var range = getRange(ranges[i], min, max);\n var slot = this$1$1.getSlot(range.from, range.to);\n var slotX = vertical ? this$1$1.lineBox() : slot;\n var slotY = vertical ? slot : this$1$1.lineBox();\n if (vertical) {\n slotX.x1 -= rangeSize * (mirror ? -1 : 1);\n } else {\n slotY.y2 += rangeSize * (mirror ? -1 : 1);\n }\n\n elements.append(Path$2.fromRect(new Rect([ slotX.x1, slotY.y1 ], [ slotX.x2 - slotX.x1, slotY.y2 - slotY.y1 ]), {\n fill: { color: range.color, opacity: range.opacity },\n stroke: { }\n }));\n }\n\n return elements;\n },\n\n renderLabels: function() {\n var ref = this;\n var labels = ref.labels;\n var options = ref.options;\n var elements = new Group$2();\n\n for (var i = 0; i < labels.length; i++) {\n elements.append(buildLabelElement(labels[i], options.labels));\n }\n\n return elements;\n },\n\n renderLine: function() {\n var line = this.options.line;\n var lineBox = this.lineBox();\n var elements = new Group$2();\n\n if (line.width > 0 && line.visible) {\n var linePath = new Path$2({\n stroke: {\n color: line.color,\n dashType: line.dashType,\n width: line.width\n }\n });\n\n linePath.moveTo(lineBox.x1, lineBox.y1).lineTo(lineBox.x2, lineBox.y2);\n elements.append(linePath);\n }\n\n return elements;\n },\n\n renderTicks: function() {\n var ticks = new Group$2();\n var options = this.options;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickRenderOptions = {\n vertical: options.vertical,\n mirror: options.labels.mirror,\n lineBox: this.lineBox()\n };\n\n renderTicks(ticks, this.getMajorTickPositions(), tickRenderOptions, options.majorTicks);\n renderTicks(ticks, this.getMinorTickPositions(), tickRenderOptions, deepExtend({}, {\n skipUnit: majorUnit / options.minorUnit\n }, options.minorTicks));\n\n return ticks;\n }\n });\n\n setDefaultOptions(LinearScale, {\n min: 0,\n max: 50,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n line: {\n width: DEFAULT_LINE_WIDTH\n },\n\n labels: {\n position: INSIDE,\n padding: 2\n },\n mirror: false,\n _alignLines: false\n });\n\n var Pointer = dataviz.Class.extend({\n init: function(scale, userOptions) {\n\n var ref = scale.options;\n var min = ref.min;\n var max = ref.max;\n var options = this.options = deepExtend({}, this.options, userOptions);\n\n options.fill = options.color;\n\n this.scale = scale;\n\n if (defined(options.value)) {\n options.value = limitValue(options.value, min, max);\n } else {\n options.value = min;\n }\n },\n\n value: function(newValue) {\n var options = this.options;\n var value = options.value;\n\n if (arguments.length === 0) {\n return value;\n }\n\n var ref = this.scale.options;\n var min = ref.min;\n var max = ref.max;\n\n options._oldValue = defined(options._oldValue) ? options.value : min;\n options.value = limitValue(newValue, min, max);\n\n if (this.elements) {\n this.repaint();\n }\n }\n });\n\n setDefaultOptions(Pointer, {\n color: BLACK\n });\n\n var LinearPointer = Pointer.extend({\n init: function(scale, options) {\n Pointer.fn.init.call(this, scale, options);\n\n this.options = deepExtend({\n track: {\n visible: defined(options.track)\n }\n }, this.options);\n },\n\n reflow: function() {\n var ref = this;\n var options = ref.options;\n var scale = ref.scale;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var scaleLine = scale.lineBox();\n var trackSize = options.track.size || options.size;\n var pointerHalfSize = options.size / 2;\n var margin = getSpacing(options.margin);\n var space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n var pointerBox, pointerRangeBox, trackBox;\n\n space = mirror ? -space : space;\n\n if (vertical) {\n trackBox = new Box(\n scaleLine.x1 + space, scaleLine.y1,\n scaleLine.x1 + space, scaleLine.y2);\n\n if (mirror) {\n trackBox.x1 -= trackSize;\n } else {\n trackBox.x2 += trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize,\n scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize\n );\n pointerBox = pointerRangeBox;\n }\n } else {\n trackBox = new Box(\n scaleLine.x1, scaleLine.y1 - space,\n scaleLine.x2, scaleLine.y1 - space);\n\n if (mirror) {\n trackBox.y2 += trackSize;\n } else {\n trackBox.y1 -= trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space,\n scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space\n );\n pointerBox = pointerRangeBox;\n }\n }\n\n this.trackBox = trackBox;\n this.pointerRangeBox = pointerRangeBox;\n this.box = pointerBox || trackBox.clone().pad(options.border.width);\n },\n\n getElementOptions: function() {\n var options = this.options;\n\n return {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: defined(options.border) ? {\n color: options.border.width ? options.border.color || options.color : \"\",\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: options.opacity\n } : null\n };\n },\n\n _margin: function() {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var margin = getSpacing(options.margin);\n\n var space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n\n return space;\n }\n });\n\n setDefaultOptions(LinearPointer, {\n shape: BAR_POINTER,\n\n track: {\n border: {\n width: 1\n }\n },\n\n color: BLACK,\n border: {\n width: 1\n },\n opacity: 1,\n\n margin: getSpacing(3),\n animation: {\n type: BAR_POINTER\n },\n visible: true\n });\n\n var ArrowLinearPointerAnimation = Animation.extend({\n setup: function() {\n var options = this.options;\n var margin = options.margin;\n var from = options.from;\n var to = options.to;\n var vertical = options.vertical;\n var axis = vertical ? \"x1\" : \"y1\";\n\n if (options.mirror === vertical) {\n from[axis] -= margin; to[axis] -= margin;\n } else {\n from[axis] += margin; to[axis] += margin;\n }\n\n var fromScale = this.fromScale = new GeometryPoint(from.x1, from.y1);\n var toScale = this.toScale = new GeometryPoint(to.x1, to.y1);\n\n if (options.duration !== 0) {\n options.duration = Math.max((fromScale.distanceTo(toScale) / options.duration) * 1000, 1);\n }\n },\n\n step: function(pos) {\n var translateX = interpolateValue(this.fromScale.x, this.toScale.x, pos);\n var translateY = interpolateValue(this.fromScale.y, this.toScale.y, pos);\n\n this.element.transform(transform().translate(translateX, translateY));\n }\n });\n\n setDefaultOptions(ArrowLinearPointerAnimation, {\n easing: LINEAR,\n duration: LINEAR_SPEED\n });\n\n AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n\n var Point$1 = GeometryPoint;\n var Path$3 = DrawingPath;\n\n var ArrowLinearPointer = LinearPointer.extend({\n init: function(scale, options) {\n LinearPointer.fn.init.call(this, scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.6;\n }\n },\n\n pointerShape: function() {\n var ref = this;\n var scale = ref.scale;\n var size = ref.options.size;\n var halfSize = size / 2;\n var sign = (scale.options.mirror ? -1 : 1);\n var shape;\n\n if (scale.options.vertical) {\n shape = [\n new Point$1(0, 0 - halfSize), new Point$1(0 - sign * size, 0), new Point$1(0, 0 + halfSize)\n ];\n } else {\n shape = [\n new Point$1(0 - halfSize, 0), new Point$1(0, 0 + sign * size), new Point$1(0 + halfSize, 0)\n ];\n }\n\n return shape;\n },\n\n repaint: function() {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var animation = new ArrowLinearPointerAnimation(this.elements, deepExtend(options.animation, {\n vertical: scale.options.vertical,\n mirror: scale.options.mirror,\n margin: this._margin(options.margin),\n from: scale.getSlot(options._oldValue),\n to: scale.getSlot(options.value)\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n },\n\n render: function() {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var elementOptions = this.getElementOptions();\n var shape = this.pointerShape(options.value);\n\n options.animation.type = ARROW_POINTER;\n\n var elements = new Path$3({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close();\n\n var slot = scale.getSlot(options.value);\n elements.transform(transform().translate(slot.x1, slot.y1));\n\n this.elements = elements;\n\n return elements;\n }\n });\n\n var BarLinearPointerAnimation = Animation.extend({\n setup: function() {\n var options = this.options;\n var axis = this.axis = options.vertical ? constants.Y : constants.X;\n var to = this.to = options.newPoints[0][axis];\n var from = this.from = options.oldPoints[0][axis];\n\n if (options.duration !== 0) {\n options.duration = Math.max((Math.abs(to - from) / options.speed) * 1000, 1);\n }\n\n this._set(from);\n },\n\n step: function(pos) {\n var value = interpolateValue(this.from, this.to, pos);\n this._set(value);\n },\n\n _set: function(value) {\n var setter = \"set\" + this.axis.toUpperCase();\n var points = this.options.newPoints;\n\n points[0][setter](value);\n points[1][setter](value);\n }\n });\n\n setDefaultOptions(BarLinearPointerAnimation, {\n easing: LINEAR,\n speed: LINEAR_SPEED\n });\n\n AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n\n var Group$3 = DrawingGroup;\n var Path$4 = DrawingPath;\n\n var BarLinearPointer = LinearPointer.extend({\n init: function(scale, options) {\n LinearPointer.fn.init.call(this, scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.3;\n }\n },\n\n pointerShape: function(value) {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var dir = mirror === vertical ? -1 : 1;\n var size = options.size * dir;\n var minSlot = scale.getSlot(scale.options.min);\n var slot = scale.getSlot(value);\n var axis = vertical ? constants.Y : constants.X;\n var sizeAxis = vertical ? constants.X : constants.Y;\n var margin = this._margin() * dir;\n\n var p1 = new GeometryPoint();\n p1[axis] = minSlot[axis + \"1\"];\n p1[sizeAxis] = minSlot[sizeAxis + \"1\"];\n\n var p2 = new GeometryPoint();\n p2[axis] = slot[axis + \"1\"];\n p2[sizeAxis] = slot[sizeAxis + \"1\"];\n\n if (vertical) {\n p1.translate(margin, 0);\n p2.translate(margin, 0);\n } else {\n p1.translate(0, margin);\n p2.translate(0, margin);\n }\n\n var p3 = p2.clone();\n var p4 = p1.clone();\n\n if (vertical) {\n p3.translate(size, 0);\n p4.translate(size, 0);\n } else {\n p3.translate(0, size);\n p4.translate(0, size);\n }\n\n return [ p1, p2, p3, p4 ];\n },\n\n repaint: function() {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var shape = this.pointerShape(options.value);\n var pointerPath = this.pointerPath;\n var oldShape = this.pointerShape(options._oldValue);\n\n pointerPath.moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).lineTo(shape[3]).close();\n\n var animation = new BarLinearPointerAnimation(pointerPath, deepExtend(options.animation, {\n reverse: scale.options.reverse,\n vertical: scale.options.vertical,\n oldPoints: [ oldShape[1], oldShape[2] ],\n newPoints: [ shape[1], shape[2] ]\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n },\n\n render: function() {\n var group = new Group$3();\n var elementOptions = this.getElementOptions();\n\n if (this.options.track.visible) {\n group.append(this.renderTrack());\n }\n\n var pointer = this.pointerPath = new Path$4({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n });\n\n group.append(pointer);\n\n this.elements = group;\n\n return group;\n },\n\n renderTrack: function() {\n var trackOptions = this.options.track;\n var border = trackOptions.border || {};\n var trackBox = this.trackBox.clone().pad(border.width || 0);\n\n return new Path$4.fromRect(trackBox.toRect(), {\n fill: {\n color: trackOptions.color,\n opacity: trackOptions.opacity\n },\n stroke: {\n color: border.width ? border.color || trackOptions.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n }\n });\n\n var DEFAULT_MIN_WIDTH = 60;\n var DEFAULT_MIN_HEIGHT = 60;\n\n var Group$1 = DrawingGroup;\n\n var LinearGauge = Gauge.extend({\n reflow: function(bbox) {\n var pointers = this.pointers;\n var bboxX = bbox.origin.x;\n var bboxY = bbox.origin.y;\n\n var box = new Box(bboxX, bboxY, bboxX + bbox.width(), bboxY + bbox.height());\n\n this.scale.reflow(box);\n this._shrinkScaleWidth(box);\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow();\n }\n\n this.bbox = this._getBox(box);\n this._alignElements();\n this._shrinkElements();\n this._buildVisual();\n this._draw();\n },\n\n _buildVisual: function() {\n var visuals = new Group$1();\n var scaleElements = this.scale.render();\n var pointers = this.pointers;\n\n visuals.append(this.gaugeArea);\n visuals.append(scaleElements);\n\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n visuals.append(current.render());\n current.value(current.options.value);\n }\n\n this._visuals = visuals;\n },\n\n _createModel: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var scale = this.scale = new LinearScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n var pointers = options.pointer;\n pointers = isArray(pointers) ? pointers : [ pointers ];\n\n for (var i = 0; i < pointers.length; i++) {\n var currentOptions = deepExtend({}, pointers[i], {\n animation: {\n transitions: options.transitions\n }\n });\n var pointerType = currentOptions.shape === ARROW ? ArrowLinearPointer : BarLinearPointer;\n\n this$1$1.pointers.push(new pointerType(scale, currentOptions));\n }\n },\n\n _defaultSize: function() {\n var vertical = this.options.scale.vertical;\n\n return {\n width: vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH,\n height: vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT\n };\n },\n\n _getBox: function(box) {\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var boxCenter = box.center();\n var plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n\n for (var i = 0; i < pointers.length; i++) {\n plotAreaBox.wrap(pointers[i].box.clone());\n }\n\n var size;\n if (scale.options.vertical) {\n size = plotAreaBox.width() / 2;\n plotAreaBox = new Box(\n boxCenter.x - size, box.y1,\n boxCenter.x + size, box.y2\n );\n } else {\n size = plotAreaBox.height() / 2;\n plotAreaBox = new Box(\n box.x1, boxCenter.y - size,\n box.x2, boxCenter.y + size\n );\n }\n\n return plotAreaBox;\n },\n\n _alignElements: function() {\n var this$1$1 = this;\n\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var scaleBox = scale.box;\n var box = pointers[0].box.clone().wrap(scale.box);\n var plotAreaBox = this.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n box.wrap(pointers[i].box.clone());\n }\n\n var diff;\n if (scale.options.vertical) {\n diff = plotAreaBox.center().x - box.center().x;\n scale.reflow(new Box(\n scaleBox.x1 + diff, plotAreaBox.y1,\n scaleBox.x2 + diff, plotAreaBox.y2\n ));\n } else {\n diff = plotAreaBox.center().y - box.center().y;\n scale.reflow(new Box(\n scaleBox.x1, scaleBox.y1 + diff,\n scaleBox.x2, scaleBox.y2 + diff\n ));\n }\n\n for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n pointers[i$1].reflow(this$1$1.bbox);\n }\n },\n\n _shrinkScaleWidth: function(bbox) {\n var ref = this;\n var scale = ref.scale;\n if (!scale.options.vertical) {\n var overflow = scale.contentBox().width() - bbox.width();\n if (overflow > 0) {\n scale.box.shrink(overflow, 0);\n scale.box.alignTo(bbox, 'center');\n scale.reflow(scale.box);\n }\n }\n },\n\n _shrinkElements: function() {\n var this$1$1 = this;\n\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var scaleBox = scale.box.clone();\n var pos = scale.options.vertical ? \"y\" : \"x\";\n var pointerBox = pointers[0].box;\n\n for (var i = 0; i < pointers.length; i++) {\n pointerBox.wrap(pointers[i].box.clone());\n }\n\n scaleBox[pos + 1] += Math.max(scaleBox[pos + 1] - pointerBox[pos + 1], 0);\n scaleBox[pos + 2] -= Math.max(pointerBox[pos + 2] - scaleBox[pos + 2], 0);\n\n scale.reflow(scaleBox);\n\n for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n pointers[i$1].reflow(this$1$1.bbox);\n }\n }\n });\n\n setDefaultOptions(LinearGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n },\n scale: {\n vertical: true\n }\n });\n\n var GEO_ARC_ADJUST_ANGLE = 180;\n\n var Arc = drawing.Arc;\n var Path$5 = DrawingPath;\n var Group$5 = DrawingGroup;\n\n function drawTicks(arc, tickAngles, unit, tickOptions) {\n var ticks = new Group$5();\n var center = arc.center;\n var radius = arc.getRadiusX();\n\n if (tickOptions.visible) {\n for (var i = 0; i < tickAngles.length; i++) {\n var tickStart = arc.pointAt(tickAngles[i]);\n var tickEnd = new GeometryPoint(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n\n ticks.append(new Path$5({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(tickStart).lineTo(tickEnd));\n }\n }\n\n return ticks;\n }\n\n function rangeSegment(from, to, color, opacity) {\n return { from: from, to: to, color: color, opacity: opacity };\n }\n\n var RadialScale = NumericAxis.extend({\n init: function(options, service) {\n NumericAxis.fn.init.call(this, 0, 1, options, service);\n },\n\n initUserOptions: function(options) {\n var scaleOptions = deepExtend({}, this.options, options);\n scaleOptions.majorUnit = scaleOptions.majorUnit || dataviz.autoMajorUnit(scaleOptions.min, scaleOptions.max);\n scaleOptions.minorUnit = scaleOptions.minorUnit || scaleOptions.majorUnit / 10;\n\n return scaleOptions;\n },\n\n initFields: function() {\n },\n\n render: function(center, radius) {\n var arc = this.renderArc(center, radius);\n\n this.bbox = arc.bbox();\n this.labelElements = this.renderLabels();\n this.ticks = this.renderTicks();\n this.ranges = this.renderRanges();\n },\n\n reflow: function(bbox) {\n var center = bbox.center();\n var radius = Math.min(bbox.height(), bbox.width()) / 2;\n\n if (defined(this.bbox)) {\n this.bbox = this.arc.bbox();\n this.radius(this.arc.getRadiusX());\n this.repositionRanges();\n this.renderLabels();\n } else {\n return this.render(center, radius);\n }\n },\n\n slotAngle: function(value) {\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var reverse = ref.reverse;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var angle = endAngle - startAngle;\n var result;\n\n if (reverse) {\n result = endAngle - (value - min) / (max - min) * angle;\n } else {\n result = ((value - min) / (max - min) * angle) + startAngle;\n }\n\n return result + GEO_ARC_ADJUST_ANGLE;\n },\n\n hasRanges: function() {\n var ranges = this.options.ranges;\n\n return ranges && ranges.length;\n },\n\n ticksSize: function() {\n var ref = this.options;\n var majorTicks = ref.majorTicks;\n var minorTicks = ref.minorTicks;\n var size = 0;\n if (majorTicks.visible) {\n size = majorTicks.size;\n }\n\n if (minorTicks.visible) {\n size = Math.max(minorTicks.size, size);\n }\n\n return size;\n },\n\n labelsCount: function() {\n var count = NumericAxis.fn.labelsCount.call(this);\n var options = this.options;\n var angle = options.endAngle - options.startAngle;\n\n if (angle >= 360 && (options.max % options.majorUnit === 0)) {\n count -= 1;\n }\n\n return count;\n },\n\n renderLabels: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var arc = this.arc.clone();\n var radius = arc.getRadiusX();\n var tickAngles = this.tickAngles(arc, options.majorUnit);\n var rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n var labelsGroup = new Group$5();\n\n var rangeDistance = radius * 0.05;\n if (defined(options.rangeDistance)) {\n rangeDistance = options.rangeDistance;\n } else {\n options.rangeDistance = rangeDistance;\n }\n\n var labelsOptions = options.labels;\n var isInside = labelsOptions.position === INSIDE;\n var hasLabelElements = defined(this.labelElements);\n\n if (isInside) {\n radius -= this.ticksSize();\n\n if (this.hasRanges() && !hasLabelElements) {\n radius -= rangeSize + rangeDistance;\n }\n arc.setRadiusX(radius).setRadiusY(radius);\n }\n\n var labels = this.labels;\n var count = labels.length;\n var padding = getSpacing(labelsOptions.padding);\n var paddingWidth = (padding.left + padding.right) / 2;\n var paddingHeight = (padding.top + padding.bottom) / 2;\n\n for (var i = 0; i < count; i++) {\n var label = labels[i];\n var halfWidth = label.box.width() / 2;\n var halfHeight = label.box.height() / 2;\n var angle = tickAngles[i];\n var labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n\n var lp = arc.pointAt(angle);\n var cx = lp.x + (Math.cos(labelAngle) * (halfWidth + paddingWidth) * (isInside ? 1 : -1));\n var cy = lp.y + (Math.sin(labelAngle) * (halfHeight + paddingHeight) * (isInside ? 1 : -1));\n\n label.reflow(new Box(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n var labelPos = new GeometryPoint(label.box.x1, label.box.y1);\n\n var labelElement = (void 0);\n if (!hasLabelElements) {\n labelElement = buildLabelElement(label, options.labels);\n labelsGroup.append(labelElement);\n } else {\n labelElement = this$1$1.labelElements.children[i];\n var prevLabelPos = labelElement.bbox().origin;\n\n var labelTransform = labelElement.transform() || transform();\n labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n labelElement.transform(labelTransform);\n }\n\n this$1$1.bbox = Rect.union(this$1$1.bbox, labelElement.bbox());\n }\n\n return labelsGroup;\n },\n\n repositionRanges: function() {\n var ranges = this.ranges.children;\n\n if (ranges.length > 0) {\n var ref = this.options;\n var rangeDistance = ref.rangeDistance;\n var rangeSize = ref.rangeSize;\n var rangeRadius = this.getRangeRadius();\n\n if (this.options.labels.position === INSIDE) {\n rangeRadius += rangeSize + rangeDistance;\n }\n\n var newRadius = rangeRadius + (rangeSize / 2);\n\n for (var i = 0; i < ranges.length; i++) {\n ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n }\n\n this.bbox = Rect.union(this.bbox, this.ranges.bbox());\n }\n },\n\n renderRanges: function() {\n var this$1$1 = this;\n\n var segments = this.rangeSegments();\n var segmentsCount = segments.length;\n var result = new Group$5();\n\n if (segmentsCount) {\n var ref = this.options;\n var rangeSize = ref.rangeSize;\n var reverse = ref.reverse;\n var rangeDistance = ref.rangeDistance;\n var rangeRadius = this.getRangeRadius();\n\n // move the ticks with a range distance and a range size\n this.radius(this.radius() - rangeSize - rangeDistance);\n\n for (var i = 0; i < segmentsCount; i++) {\n var segment = segments[i];\n var from = this$1$1.slotAngle(segment[reverse ? \"to\" : \"from\"]);\n var to = this$1$1.slotAngle(segment[!reverse ? \"to\" : \"from\"]);\n\n if (to - from !== 0) {\n result.append(this$1$1.createRange(from, to, rangeRadius, segment));\n }\n }\n }\n\n return result;\n },\n\n createRange: function(startAngle, endAngle, rangeRadius, options) {\n var rangeSize = this.options.rangeSize;\n var rangeGeom = new geometry.Arc(this.arc.center, {\n radiusX: rangeRadius + (rangeSize / 2),\n radiusY: rangeRadius + (rangeSize / 2),\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return new Arc(rangeGeom, {\n stroke: {\n width: rangeSize,\n color: options.color,\n opacity: options.opacity,\n lineCap: options.lineCap\n }\n });\n },\n\n rangeSegments: function() {\n var options = this.options;\n var ranges = options.ranges || [];\n var count = ranges.length;\n var segments = [];\n\n if (count) {\n var min = options.min;\n var max = options.max;\n var defaultColor = options.rangePlaceholderColor;\n segments.push(rangeSegment(min, max, defaultColor));\n\n for (var i = 0; i < count; i++) {\n var range = getRange(ranges[i], min, max);\n var segmentsCount = segments.length;\n\n for (var j = 0; j < segmentsCount; j++) {\n var segment = segments[j];\n\n if (segment.from <= range.from && range.from <= segment.to) {\n segments.push(rangeSegment(range.from, range.to, range.color, range.opacity));\n\n if (segment.from <= range.to && range.to <= segment.to) {\n segments.push(rangeSegment(range.to, segment.to, defaultColor, range.opacity));\n }\n\n segment.to = range.from;\n\n break;\n }\n }\n }\n }\n\n return segments;\n },\n\n getRangeRadius: function() {\n var ref = this;\n var arc = ref.arc;\n var options = ref.options;\n var rangeSize = options.rangeSize;\n var rangeDistance = options.rangeDistance;\n var majorTickSize = options.majorTicks.size;\n var radius;\n\n if (options.labels.position === OUTSIDE) {\n radius = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n } else {\n radius = arc.getRadiusX() - rangeSize;\n }\n\n return radius;\n },\n\n renderArc: function(center, radius) {\n var options = this.options;\n\n var arc = this.arc = new geometry.Arc(center, {\n radiusX: radius,\n radiusY: radius,\n startAngle: options.startAngle + GEO_ARC_ADJUST_ANGLE,\n endAngle: options.endAngle + GEO_ARC_ADJUST_ANGLE\n });\n\n return arc;\n },\n\n renderTicks: function() {\n var ref = this;\n var arc = ref.arc;\n var options = ref.options;\n var tickArc = arc.clone();\n\n this.majorTickAngles = this.tickAngles(arc, options.majorUnit);\n this.majorTicks = drawTicks(tickArc, this.majorTickAngles, options.majorUnit, options.majorTicks);\n\n var allTicks = new Group$5();\n allTicks.append(this.majorTicks);\n\n var majorTickSize = options.majorTicks.size;\n var minorTickSize = options.minorTicks.size;\n\n this._tickDifference = majorTickSize - minorTickSize;\n\n if (options.labels.position === OUTSIDE) {\n var radius = tickArc.getRadiusX();\n tickArc.setRadiusX(radius - majorTickSize + minorTickSize)\n .setRadiusY(radius - majorTickSize + minorTickSize);\n }\n\n this.minorTickAngles = this.normalizeTickAngles(this.tickAngles(arc, options.minorUnit));\n this.minorTicks = drawTicks(tickArc, this.minorTickAngles, options.minorUnit, options.minorTicks);\n allTicks.append(this.minorTicks);\n\n return allTicks;\n },\n\n normalizeTickAngles: function(angles) {\n var options = this.options;\n var skip = options.majorUnit / options.minorUnit;\n\n for (var i = angles.length - 1; i >= 0; i--) {\n if (i % skip === 0) {\n angles.splice(i, 1);\n }\n }\n\n return angles;\n },\n\n tickAngles: function(ring, stepValue) {\n var options = this.options;\n var reverse = options.reverse;\n var range = options.max - options.min;\n var angle = ring.endAngle - ring.startAngle;\n var tickCount = range / stepValue;\n var pos = ring.startAngle;\n var step = angle / tickCount;\n\n if (reverse) {\n pos += angle;\n step = -step;\n }\n\n if (angle >= 360 && (options.max % stepValue === 0)) {\n tickCount -= 1;\n }\n\n var positions = [];\n for (var i = 0; i < tickCount; i++) {\n positions.push(round(pos, COORD_PRECISION));\n pos += step;\n }\n\n if (round(pos) <= ring.endAngle) {\n positions.push(pos);\n }\n\n return positions;\n },\n\n radius: function(value) {\n if (value) {\n this.arc.setRadiusX(value).setRadiusY(value);\n this.repositionTicks(this.majorTicks.children, this.majorTickAngles);\n this.repositionTicks(this.minorTicks.children, this.minorTickAngles, true);\n } else {\n return this.arc.getRadiusX();\n }\n },\n\n repositionTicks: function(ticks, tickAngles, minor) {\n var diff = minor ? (this._tickDifference || 0) : 0;\n var tickArc = this.arc;\n var radius = tickArc.getRadiusX();\n\n if (minor && this.options.labels.position === OUTSIDE && diff !== 0) {\n tickArc = this.arc.clone();\n tickArc.setRadiusX(radius - diff).setRadiusY(radius - diff);\n }\n\n for (var i = 0; i < ticks.length; i++) {\n var newPoint = tickArc.pointAt(tickAngles[i]);\n var segments = ticks[i].segments;\n var xDiff = newPoint.x - segments[0].anchor().x;\n var yDiff = newPoint.y - segments[0].anchor().y;\n\n ticks[i].transform(new transform().translate(xDiff, yDiff));\n }\n }\n });\n\n setDefaultOptions(RadialScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n startAngle: -30,\n endAngle: 210,\n\n labels: {\n position: INSIDE,\n padding: 2\n }\n });\n\n var RadialPointerAnimation = Animation.extend({\n init: function(element, options) {\n Animation.fn.init.call(this, element, options);\n\n var animationOptions = this.options;\n\n animationOptions.duration = Math.max((Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000, 1);\n },\n\n step: function(pos) {\n var options = this.options;\n var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n\n this.element.transform(transform().rotate(angle, options.center));\n }\n });\n\n setDefaultOptions(RadialPointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n });\n\n AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n\n var CAP_SIZE = 0.05;\n var Circle = drawing.Circle;\n var Group$6 = DrawingGroup;\n var Path$6 = DrawingPath;\n\n var RadialPointer = Pointer.extend({\n setAngle: function(angle) {\n this.elements.transform(transform().rotate(angle, this.center));\n },\n\n repaint: function() {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var oldAngle = scale.slotAngle(options._oldValue);\n var newAngle = scale.slotAngle(options.value);\n\n if (options.animation.transitions === false) {\n this.setAngle(newAngle);\n } else {\n new RadialPointerAnimation(this.elements, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n })).play();\n }\n },\n\n render: function() {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var elements = new Group$6();\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n elements.append(this._renderNeedle(), this._renderCap());\n\n this.elements = elements;\n this.setAngle(DEGREE);\n\n return elements;\n },\n\n reflow: function(arc) {\n var center = this.center = arc.center;\n var length = limitValue(this.options.length || 1, 0.1, 1.5);\n var radius = this.radius = arc.getRadiusX() * length;\n var capSize = this.capSize = Math.round(radius * this.options.cap.size);\n\n this.bbox = Rect.fromPoints(new GeometryPoint(center.x - capSize, center.y - capSize),\n new GeometryPoint(center.x + capSize, center.y + capSize));\n },\n\n _renderNeedle: function() {\n var minorTickSize = this.scale.options.minorTicks.size;\n var center = this.center;\n var needleColor = this.options.color;\n\n var needlePath = new Path$6({\n fill: { color: needleColor },\n stroke: { color: needleColor, width: DEFAULT_LINE_WIDTH }\n });\n\n needlePath.moveTo(center.x + this.radius - minorTickSize, center.y)\n .lineTo(center.x, center.y - (this.capSize / 2))\n .lineTo(center.x, center.y + (this.capSize / 2))\n .close();\n\n return needlePath;\n },\n\n _renderCap: function() {\n var options = this.options;\n var capColor = options.cap.color || options.color;\n var circle = new geometry.Circle(this.center, this.capSize);\n\n var cap = new Circle(circle, {\n fill: { color: capColor },\n stroke: { color: capColor }\n });\n\n return cap;\n }\n });\n\n setDefaultOptions(RadialPointer, {\n cap: {\n size: CAP_SIZE\n },\n arrow: {\n width: 16,\n height: 14\n },\n animation: {\n type: RADIAL_POINTER,\n duration: ANGULAR_SPEED\n }\n });\n\n var Group$4 = DrawingGroup;\n\n var RadialGauge = Gauge.extend({\n reflow: function(bbox) {\n var this$1$1 = this;\n\n var pointers = this.pointers;\n this.scale.reflow(bbox);\n this._initialPlotArea = this.scale.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this$1$1.scale.arc);\n this$1$1._initialPlotArea = Rect.union(this$1$1._initialPlotArea, pointers[i].bbox);\n }\n\n this.fitScale(bbox);\n this.alignScale(bbox);\n this._buildVisual(this.gaugeArea, pointers, this.scale);\n this._draw();\n },\n\n _buildVisual: function(gaugeArea, pointers, scale) {\n var visuals = this._visuals = new Group$4();\n\n visuals.append(gaugeArea);\n visuals.append(scale.ticks);\n visuals.append(scale.ranges);\n this._buildPointers(pointers);\n visuals.append(scale.labelElements);\n },\n\n _buildPointers: function(pointers) {\n var this$1$1 = this;\n\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n current.render();\n this$1$1._visuals.append(current.elements);\n\n current.value(current.options.value);\n }\n },\n\n fitScale: function(bbox) {\n var this$1$1 = this;\n\n var arc = this.scale.arc;\n var plotAreaBox = this._initialPlotArea;\n var step = Math.abs(this.getDiff(plotAreaBox, bbox));\n var min = round(step, COORD_PRECISION);\n var max = round(-step, COORD_PRECISION);\n var minDiff, midDiff, maxDiff, mid, oldDiff;\n var staleFlag = 0;\n var i = 0;\n\n while (i++ < 100) {\n staleFlag = (oldDiff === maxDiff) ? (staleFlag + 1) : 0;\n\n if (staleFlag > 5) {\n break;\n }\n\n if (min !== mid) {\n minDiff = this$1$1.getPlotBox(min, bbox, arc);\n if (0 <= minDiff && minDiff <= 2) {\n break;\n }\n }\n\n if (max !== mid) {\n maxDiff = this$1$1.getPlotBox(max, bbox, arc);\n if (0 <= maxDiff && maxDiff <= 2) {\n break;\n }\n }\n\n if (minDiff > 0 && maxDiff > 0) {\n mid = min * 2;\n } else if (minDiff < 0 && maxDiff < 0) {\n mid = max * 2;\n } else {\n mid = round(((min + max) / 2) || 1, COORD_PRECISION);\n }\n\n midDiff = this$1$1.getPlotBox(mid, bbox, arc);\n if (0 <= midDiff && midDiff <= 2) {\n break;\n }\n\n oldDiff = maxDiff;\n\n if (midDiff > 0) {\n max = mid;\n maxDiff = midDiff;\n } else {\n min = mid;\n minDiff = midDiff;\n }\n }\n },\n\n getPlotBox: function(step, bbox, arc) {\n var this$1$1 = this;\n\n var scale = this.scale;\n var pointers = this.pointers;\n var radius = arc.getRadiusX();\n var scaleArc = arc.clone();\n\n scaleArc.setRadiusX(radius + step).setRadiusY(radius + step);\n\n scale.arc = scaleArc;\n scale.reflow(bbox);\n this.plotBbox = scale.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scaleArc);\n this$1$1.plotBbox = Rect.union(this$1$1.plotBbox, pointers[i].bbox);\n }\n\n return this.getDiff(this.plotBbox, bbox);\n },\n\n getDiff: function(plotBox, box) {\n return Math.min(box.width() - plotBox.width(), box.height() - plotBox.height());\n },\n\n alignScale: function(bbox) {\n var this$1$1 = this;\n\n var plotBoxCenter = this.plotBbox.center();\n var boxCenter = bbox.center();\n var paddingX = plotBoxCenter.x - boxCenter.x;\n var paddingY = plotBoxCenter.y - boxCenter.y;\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n\n scale.arc.center.x -= paddingX;\n scale.arc.center.y -= paddingY;\n\n scale.reflow(bbox);\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scale.arc);\n this$1$1.plotBbox = Rect.union(scale.bbox, pointers[i].bbox);\n }\n },\n\n _createModel: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var pointers = options.pointer;\n var scale = this.scale = new RadialScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n var pointersArr = isArray(pointers) ? pointers : [ pointers ];\n for (var i = 0; i < pointersArr.length; i++) {\n var current = new RadialPointer(scale, deepExtend({}, pointersArr[i], {\n animation: {\n transitions: options.transitions\n }\n }));\n\n this$1$1.pointers.push(current);\n }\n }\n });\n\n setDefaultOptions(RadialGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n }\n });\n\n var ArcScale = RadialScale.extend({\n rangeSegments: function() {\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var rangePlaceholderColor = ref.rangePlaceholderColor;\n var rangeLineCap = ref.rangeLineCap;\n\n return [ { from: min, to: max, color: rangePlaceholderColor, lineCap: rangeLineCap } ];\n },\n\n hasRanges: function() {\n return true;\n },\n\n placeholderRangeAngle: function(angle) {\n var geometry$$1 = this.ranges.children[0].geometry();\n\n if (this.options.reverse) {\n geometry$$1.setEndAngle(angle);\n } else {\n geometry$$1.setStartAngle(angle);\n }\n },\n\n addRange: function(from, to, options) {\n var reverse = this.options.reverse;\n\n var startAngle = this.slotAngle(reverse ? to : from);\n var endAngle = this.slotAngle(reverse ? from : to);\n\n var range = this.createRange(startAngle, endAngle, this.getRangeRadius(), options);\n\n this.ranges.append(range);\n\n return range;\n }\n });\n\n setDefaultOptions(ArcScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n visible: false\n },\n\n minorTicks: {\n visible: false\n },\n\n labels: {\n visible: false\n },\n\n startAngle: 0,\n endAngle: 180,\n rangeLineCap: 'round'\n });\n\n var MAX_DURATION = 800;\n\n var RangePointerAnimation = Animation.extend({\n init: function(element, options) {\n Animation.fn.init.call(this, element, options);\n\n var animationOptions = this.options;\n var duration = (Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000;\n animationOptions.duration = limitValue(duration, ANGULAR_SPEED, MAX_DURATION);\n\n var startColor = element.elements.options.get(\"stroke.color\");\n var color = element.currentColor();\n if (startColor !== color) {\n this.startColor = new kendo.Color(startColor);\n this.color = new kendo.Color(color);\n }\n },\n\n step: function(pos) {\n var ref = this;\n var options = ref.options;\n var startColor = ref.startColor;\n var color = ref.color;\n var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n this.element.angle(angle);\n\n if (color) {\n var r = round(interpolateValue(startColor.r, color.r, pos));\n var g = round(interpolateValue(startColor.g, color.g, pos));\n var b = round(interpolateValue(startColor.b, color.b, pos));\n\n this.element.stroke(new kendo.Color(r, g, b).toHex());\n }\n }\n });\n\n setDefaultOptions(RangePointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n });\n\n AnimationFactory.current.register(RADIAL_RANGE_POINTER, RangePointerAnimation);\n\n var RangePointer = Pointer.extend({\n repaint: function() {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var oldAngle = scale.slotAngle(options._oldValue);\n var newAngle = scale.slotAngle(options.value);\n\n if (this.animation) {\n this.animation.abort();\n }\n\n if (options.animation.transitions === false) {\n this.angle(newAngle);\n this.stroke(this.currentColor());\n } else {\n this.animation = new RangePointerAnimation(this, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n }));\n\n this.animation.play();\n }\n },\n\n angle: function(value) {\n var geometry$$1 = this.elements.geometry();\n if (this.scale.options.reverse) {\n geometry$$1.setStartAngle(value);\n } else {\n geometry$$1.setEndAngle(value);\n }\n this.scale.placeholderRangeAngle(value);\n },\n\n stroke: function(value) {\n this.elements.stroke(value);\n },\n\n render: function() {\n if (this.elements) {\n return;\n }\n\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n this.elements = scale.addRange(scale.options.min, this.options.value, {\n color: this.currentColor(),\n opacity: options.opacity,\n lineCap: scale.options.rangeLineCap\n });\n },\n\n currentColor: function() {\n var ref = this.scale.options;\n var min = ref.min;\n var max = ref.max;\n var ref$1 = this.options;\n var colors = ref$1.colors;\n var color = ref$1.color;\n var value = ref$1.value;\n var currentValue = dataviz.isNumber(value) ? value : min;\n\n if (colors) {\n for (var idx = 0; idx < colors.length; idx++) {\n var ref$2 = colors[idx];\n var rangeColor = ref$2.color;\n var from = ref$2.from; if (from === void 0) { from = min; }\n var to = ref$2.to; if (to === void 0) { to = max; }\n\n if (from <= currentValue && currentValue <= to) {\n return rangeColor;\n }\n }\n }\n\n return color;\n },\n\n reflow: function() {\n this.render();\n\n this.bbox = this.elements.bbox();\n }\n });\n\n setDefaultOptions(RangePointer, {\n animation: {\n type: RADIAL_RANGE_POINTER,\n duration: ANGULAR_SPEED\n }\n });\n\n var ArcGauge = RadialGauge.extend({\n _initTheme: function(theme) {\n RadialGauge.fn._initTheme.call(this, theme);\n\n this.options.color = this.options.color || (this.theme.pointer || {}).color;\n },\n\n _createModel: function() {\n var options = this.options;\n var scale = this.scale = new ArcScale(options.scale, this.contextService);\n\n var pointer = new RangePointer(scale, deepExtend({}, {\n colors: options.colors,\n color: options.color,\n value: options.value,\n opacity: options.opacity,\n animation: {\n transitions: options.transitions\n }\n }));\n\n this.pointers = [ pointer ];\n },\n\n _buildPointers: function(pointers) {\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n current.render();\n\n current.value(current.options.value);\n }\n },\n\n _setValueOptions: function(value) {\n this.options.value = value;\n },\n\n currentColor: function() {\n var pointer = this.pointers[0];\n if (pointer) {\n return pointer.currentColor();\n }\n },\n\n centerLabelPosition: function(width, height) {\n var size = this.getSize();\n var center = this.scale.arc.center;\n\n var left = center.x - width / 2;\n var top = center.y - height / 2;\n\n if (width < size.width) {\n var right = left + width;\n\n left = Math.max(left, 0);\n\n if (right > size.width) {\n left -= right - size.width;\n }\n }\n\n if (height < size.height) {\n var bbox = this.scale.bbox;\n var yLimit = bbox.bottomRight().y;\n var bottom = top + height;\n\n top = Math.max(top, bbox.origin.y);\n\n if (bottom > yLimit) {\n top -= bottom - yLimit;\n }\n }\n\n return {\n left: left,\n top: top\n };\n }\n });\n\n var defaultStartAngle = 90;\n\n var CircularGauge = ArcGauge.extend({\n _createModel: function() {\n var scaleOptions = this.options.scale;\n if (typeof scaleOptions.startAngle !== 'number') {\n scaleOptions.startAngle = defaultStartAngle;\n }\n\n scaleOptions.endAngle = scaleOptions.startAngle + 360;\n\n ArcGauge.fn._createModel.call(this);\n }\n });\n\n kendo.deepExtend(kendo.dataviz, {\n Gauge: Gauge,\n LinearGauge: LinearGauge,\n LinearPointer: LinearPointer,\n ArrowLinearPointer: ArrowLinearPointer,\n BarLinearPointer: BarLinearPointer,\n LinearScale: LinearScale,\n RadialGauge: RadialGauge,\n RadialPointer: RadialPointer,\n RadialScale: RadialScale,\n ArcGauge: ArcGauge,\n RangePointer: RangePointer,\n ArcScale: ArcScale,\n CircularGauge: CircularGauge\n });\n\n })(window.kendo.jQuery);\n\n (function($) {\n var kendo = window.kendo;\n var Widget = kendo.ui.Widget;\n var dataviz = kendo.dataviz;\n var LinearGauge = dataviz.LinearGauge;\n var RadialGauge = dataviz.RadialGauge;\n var ArcGauge = dataviz.ArcGauge;\n var CircularGauge = dataviz.CircularGauge;\n var draw = kendo.drawing;\n\n function themeOptions(options) {\n var themes = dataviz.ui.themes || {};\n var themeName = options.theme || \"\";\n var lowerName = themeName.toLowerCase();\n\n if (dataviz.SASS_THEMES.indexOf(lowerName) != -1) {\n return dataviz.autoTheme().gauge;\n }\n\n return (themes[themeName] || themes[lowerName] || {}).gauge;\n }\n\n var Gauge = Widget.extend({\n init: function(element, userOptions) {\n kendo.destroy(element);\n $(element).empty();\n\n Widget.fn.init.call(this, element);\n\n this.options = kendo.deepExtend(this.options, userOptions);\n\n this.wrapper = this.element;\n this._createInstance();\n\n this.element.addClass('k-gauge');\n\n kendo.notify(this, dataviz.ui);\n },\n\n options: {\n theme: \"sass\",\n renderAs: \"\",\n pointer: {},\n scale: {},\n gaugeArea: {\n background: \"\"\n },\n transitions: true\n },\n\n setOptions: function(options) {\n this._instance.setOptions(options, themeOptions(options));\n\n this._copyFields();\n },\n\n redraw: function() {\n this._instance.redraw();\n this._copyFields();\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n this._instance.destroy();\n },\n\n _createInstance: function() {\n var gaugeType = this._gaugeType();\n this._instance = new gaugeType(this.element[0], this.options, themeOptions(this.options));\n this._copyFields();\n },\n\n _copyFields: function() {\n this._originalOptions = this._instance._originalOptions;\n this.options = this._instance.options;\n this.surface = this._instance.surface;\n this.bbox = this._instance.bbox;\n this.gaugeArea = this._instance.gaugeArea;\n this.pointers = this._instance.pointers;\n this.scale = this._instance.scale;\n },\n\n _resize: function() {\n this._instance.resize();\n }\n });\n\n var proxyMembers = [\"getSize\", \"value\", \"allValues\", \"exportVisual\"];\n\n function createProxyMember(name) {\n Gauge.fn[name] = function() {\n return this._instance[name].apply(this._instance, arguments);\n };\n }\n\n for (var idx = 0; idx < proxyMembers.length; idx++) {\n createProxyMember(proxyMembers[idx]);\n }\n\n dataviz.ExportMixin.extend(Gauge.fn);\n\n var RadialGaugeWidget = Gauge.extend({\n\n options: {\n name: \"RadialGauge\"\n },\n\n _gaugeType: function() {\n return RadialGauge;\n }\n });\n\n var LinearGaugeWidget = Gauge.extend({\n\n options: {\n name: \"LinearGauge\",\n scale: {\n vertical: true\n }\n },\n\n _gaugeType: function() {\n return LinearGauge;\n }\n });\n\n var ArcGaugeWidget = Gauge.extend({\n init: function(element, userOptions) {\n Gauge.fn.init.call(this, element, userOptions);\n\n this.element.css('position', 'relative');\n this.element.addClass('k-arcgauge');\n\n this._centerTemplate();\n },\n\n options: {\n name: \"ArcGauge\"\n },\n\n setOptions: function(options) {\n Gauge.fn.setOptions.call(this, options);\n this._centerTemplate();\n },\n\n redraw: function() {\n Gauge.fn.redraw.call(this);\n this._centerTemplate();\n },\n\n value: function(value) {\n var instance = this._instance;\n if (arguments.length === 0) {\n return instance.value();\n }\n\n instance.value(value);\n\n this._centerTemplate();\n },\n\n destroy: function() {\n Gauge.fn.destroy.call(this);\n delete this._centerElement;\n },\n\n exportVisual: function() {\n if (this._centerElement) {\n return false;\n }\n\n return Gauge.fn.exportVisual.call(this);\n },\n\n _resize: function() {\n this._instance.resize();\n\n this._centerTemplate();\n },\n\n _centerTemplate: function() {\n if (this.options.centerTemplate) {\n var template = kendo.template(this.options.centerTemplate);\n\n var instance = this._instance;\n var centerElement = this._getCenterElement();\n\n centerElement.html(template({ color: instance.currentColor(), value: instance.value() }));\n\n var position = instance.centerLabelPosition(centerElement.width(), centerElement.height());\n\n centerElement.css(position);\n } else if (this._centerElement) {\n this._centerElement.remove();\n this._centerElement = null;\n }\n },\n\n _getCenterElement: function() {\n var centerElement = this._centerElement;\n if (!centerElement) {\n centerElement = this._centerElement = $('
').addClass('k-arcgauge-label');\n this.element.append(centerElement);\n }\n\n return centerElement;\n },\n\n _gaugeType: function() {\n return ArcGauge;\n }\n });\n\n var CircularGaugeWidget = ArcGaugeWidget.extend({\n options: {\n name: \"CircularGauge\"\n },\n\n _gaugeType: function() {\n return CircularGauge;\n }\n });\n\n function createExportMethod(name) {\n ArcGaugeWidget.fn[name] = function(options) {\n var gauge = this;\n var method = draw[name];\n\n if (!gauge._centerElement) {\n return method(gauge.exportVisual(), options);\n }\n\n return draw.drawDOM(gauge.element).then(function(visual) {\n return method(visual, options);\n });\n };\n }\n\n var exportMethods = ['exportSVG', 'exportImage', 'exportPDF'];\n\n for (idx = 0; idx < exportMethods.length; idx++) {\n createExportMethod(exportMethods[idx]);\n }\n\n dataviz.ui.plugin(LinearGaugeWidget);\n dataviz.ui.plugin(RadialGaugeWidget);\n dataviz.ui.plugin(ArcGaugeWidget);\n dataviz.ui.plugin(CircularGaugeWidget);\n\n kendo.deepExtend(dataviz, {\n Gauge: Gauge,\n LinearGauge: LinearGaugeWidget,\n RadialGauge: RadialGaugeWidget,\n ArcGauge: ArcGaugeWidget,\n CircularGauge: CircularGaugeWidget\n });\n\n })(window.kendo.jQuery);\n\n var __meta__ = {\n id: \"dataviz.gauge\",\n name: \"Gauge\",\n category: \"dataviz\",\n description: \"Linear, Radial and Arc gauges.\",\n depends: [ \"dataviz.core\", \"dataviz.themes\" ]\n };\n\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}