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