{"version":3,"sources":["kendo.dataviz.gauge.js"],"names":["f","define","defined","value","UNDEFINED","round","precision","power","pow","math","p","limitValue","min","max","rad","degrees","DEG_TO_RAD","deg","radians","isNumber","val","isNaN","valueOrDefault","defaultValue","sqr","objectKey","object","key","parts","push","sort","join","hashKey","str","i","hash","length","charCodeAt","hashObject","arrayLimits","arr","MAX_NUM","MIN_NUM","arrayMin","arrayMax","sparseArrayMin","sparseArrayLimits","sparseArrayMax","n","isFinite","undefined","last","array","append","first","second","apply","renderTemplate","text","kendo","template","useWithBlock","paramName","renderAttr","name","renderAllAttr","attrs","output","renderStyle","renderSize","size","renderPos","pos","result","toHyphens","split","isTransparent","color","arabicToRoman","literals",1,10,100,2,20,200,3,30,300,4,40,400,5,50,500,6,60,600,7,70,700,8,80,800,9,90,900,1000,"values","roman","shift","romanToArabic","r","digits","prev","v","toLowerCase","x","l","c","d","m","charAt","memoize","cache","Object","create","id","arguments","this","ucs2decode","string","extra","counter","ucs2encode","map","String","fromCharCode","Math","window","deepExtend","PI","Number","MAX_VALUE","now","Date","getTime","util","drawing","dataviz","amd","a1","a2","a3","$","zeroSize","width","height","baseline","measureText","style","measureBox","TextMetrics","current","measure","loadFonts","fonts","callback","promises","document","font","load","e","logToConsole","Promise","all","then","doc","Class","LRUCache","extend","init","_size","_length","_map","put","lru","entry","_head","_tail","newer","older","get","defaultMeasureBox","options","_cache","_initOptions","baselineMarkerSize","box","styleKey","cacheKey","cachedResult","baselineMarker","_baselineMarker","cloneNode","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","jQuery","encodeBase64","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","encodeUTF8","KEY_STR","inArray","ObserversMixin","observers","_observers","addObserver","element","removeObserver","index","splice","trigger","methodName","event","observer","idx","_suspended","optionsChange","geometryChange","suspend","resume","_observerField","field","mixins","_buildLabel","label","labelBox","textBox","children","border","background","elements","Group","wrapper","Path","fromRect","Rect","x1","y1","stroke","Text","Point","fill","styleGeometry","_pad","bbox","clone","padding","styleBox","dashType","lineJoin","lineCap","getRange","range","from","MIN_VALUE","to","origin","getOrigin","getSize","spacing","getSpacing","setOrigin","left","y","top","setSize","right","bottom","_unpad","ArrowLinearPointerAnimation","BarLinearPointerAnimation","Widget","ui","autoMajorUnit","ChartElement","NumericAxis","Axis","Box2D","interpolateValue","geo","geometry","draw","ANGULAR_SPEED","LINEAR_SPEED","ARROW","ARROW_POINTER","BAR_POINTER","BLACK","CAP_SIZE","COORD_PRECISION","DEFAULT_HEIGHT","DEFAULT_LINE_WIDTH","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MIN_HEIGHT","DEFAULT_MARGIN","DEGREE","GEO_ARC_ADJUST_ANGLE","INSIDE","LINEAR","NEEDLE","OUTSIDE","RADIAL_POINTER","X","Y","Pointer","scale","pointer","scaleOptions","fn","call","newValue","that","_oldValue","repaint","RadialPointer","shape","cap","arrow","animation","type","duration","setRadius","radius","clear","render","parent","center","setAngle","angle","transform","rotate","oldAngle","slotAngle","newAngle","transitions","RadialPointerAnimation","play","arc","startAngle","reverse","_renderNeedle","_renderCap","_renderArrow","reflow","getRadiusX","capSize","fromPoints","minorTickSize","minorTicks","needleColor","needlePath","moveTo","lineTo","close","capColor","circle","Circle","RadialScale","majorUnit","minorUnit","majorTicks","align","visible","endAngle","labels","position","renderArc","labelElements","renderLabels","ticks","renderTicks","ranges","renderRanges","repositionRanges","halfWidth","halfHeight","labelAngle","lp","cx","cy","isInside","lbl","labelPos","prevLabelPos","labelTransform","majorTickSize","tickAngles","count","labelsOptions","rangeDistance","rangeSize","labelsGroup","setRadiusX","setRadiusY","pointAt","cos","sin","translate","union","rangeRadius","newRadius","getRangeRadius","_geometry","segment","rangeGeom","segments","rangeSegments","segmentsCount","Arc","radiusX","radiusY","opacity","rangeSegment","j","gauge","defaultColor","rangePlaceholderColor","drawTicks","unit","tickOptions","tickStart","tickEnd","labelsPosition","allTicks","tickArc","majorTickAngles","_tickDifference","minorTickAngles","normalizeTickAngles","angles","skip","ring","stepValue","tickCount","step","positions","repositionTicks","minor","newPoint","xDiff","yDiff","diff","anchor","Transformation","Gauge","userOptions","themeOptions","themeName","theme","themes","destroy","empty","_originalOptions","isArray","addClass","surface","_createSurface","redraw","plotArea","renderAs","gaugeArea","pointers","_setValueOptions","_draw","_visuals","exportVisual","allValues","concat","_resize","t","_getSize","_createGaugeArea","css","_createModel","_gaugeAreaMargin","areaGeometry","margin","wrap","appendTo","Surface","RadialGauge","radialGauge","notify","_initialPlotArea","fitScale","alignScale","_buildVisual","visuals","minDiff","midDiff","maxDiff","mid","oldDiff","plotAreaBox","abs","getDiff","staleFlag","getPlotBox","plotBbox","plotBox","plotBoxCenter","boxCenter","paddingX","paddingY","LinearGauge","linearGauge","vertical","bboxX","bboxY","bbox2D","_getBox","_alignElements","_shrinkElements","scaleElements","currentOptions","LinearScale","ArrowLinearPointer","BarLinearPointer","y2","x2","scaleBox","pointerBox","mirror","line","_alignLines","scaleLine","renderLine","scaleTicks","slot","slotX","slotY","getSlot","lineBox","linePath","tickPositions","skipUnit","tickLineOptions","tickX","tickY","renderAxisTick","getMajorTickPositions","getMinorTickPositions","start","end","tickPath","LinearPointer","track","pointerRangeBox","trackBox","trackSize","pointerHalfSize","space","pad","getElementOptions","_margin","pointerShape","halfSize","sign","setup","elementOptions","p2","p3","p4","dir","minSlot","axis","sizeAxis","p1","pointerPath","oldShape","oldPoints","newPoints","group","Animation","easing","anim","AnimationFactory","register","fromScale","toScale","distanceTo","translateX","translateY","speed","_set","setter","toUpperCase","points","plugin","ExportMixin"],"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/main', ['kendo.core'], f);\n}(function () {\n (function () {\n var math = Math, kendo = window.kendo, deepExtend = kendo.deepExtend;\n var DEG_TO_RAD = math.PI / 180, MAX_NUM = Number.MAX_VALUE, MIN_NUM = -Number.MAX_VALUE, UNDEFINED = 'undefined';\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n function round(value, precision) {\n var power = pow(precision);\n return math.round(value * power) / power;\n }\n function pow(p) {\n if (p) {\n return math.pow(10, p);\n } else {\n return 1;\n }\n }\n function limitValue(value, min, max) {\n return math.max(math.min(value, max), min);\n }\n function rad(degrees) {\n return degrees * DEG_TO_RAD;\n }\n function deg(radians) {\n return radians / DEG_TO_RAD;\n }\n function isNumber(val) {\n return typeof val === 'number' && !isNaN(val);\n }\n function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n }\n function sqr(value) {\n return value * value;\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 hashObject(object) {\n return hashKey(objectKey(object));\n }\n var now = Date.now;\n if (!now) {\n now = function () {\n return new Date().getTime();\n };\n }\n function arrayLimits(arr) {\n var length = arr.length, i, min = MAX_NUM, max = MIN_NUM;\n for (i = 0; i < length; i++) {\n max = math.max(max, arr[i]);\n min = math.min(min, arr[i]);\n }\n return {\n min: min,\n max: max\n };\n }\n function arrayMin(arr) {\n return arrayLimits(arr).min;\n }\n function arrayMax(arr) {\n return arrayLimits(arr).max;\n }\n function sparseArrayMin(arr) {\n return sparseArrayLimits(arr).min;\n }\n function sparseArrayMax(arr) {\n return sparseArrayLimits(arr).max;\n }\n function sparseArrayLimits(arr) {\n var min = MAX_NUM, max = MIN_NUM;\n for (var i = 0, length = arr.length; i < length; i++) {\n var n = arr[i];\n if (n !== null && isFinite(n)) {\n min = math.min(min, n);\n max = math.max(max, n);\n }\n }\n return {\n min: min === MAX_NUM ? undefined : min,\n max: max === MIN_NUM ? undefined : max\n };\n }\n function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n }\n function append(first, second) {\n first.push.apply(first, second);\n return first;\n }\n function renderTemplate(text) {\n return kendo.template(text, {\n useWithBlock: false,\n paramName: 'd'\n });\n }\n function renderAttr(name, value) {\n return defined(value) && value !== null ? ' ' + name + '=\\'' + value + '\\' ' : '';\n }\n function renderAllAttr(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n return output;\n }\n function renderStyle(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + ':' + value + ';';\n }\n }\n if (output !== '') {\n return output;\n }\n }\n function renderSize(size) {\n if (typeof size !== 'string') {\n size += 'px';\n }\n return size;\n }\n function renderPos(pos) {\n var result = [];\n if (pos) {\n var parts = kendo.toHyphens(pos).split('-');\n for (var i = 0; i < parts.length; i++) {\n result.push('k-pos-' + parts[i]);\n }\n }\n return result.join(' ');\n }\n function isTransparent(color) {\n return color === '' || color === null || color === 'none' || color === 'transparent' || !defined(color);\n }\n function arabicToRoman(n) {\n var literals = {\n 1: 'i',\n 10: 'x',\n 100: 'c',\n 2: 'ii',\n 20: 'xx',\n 200: 'cc',\n 3: 'iii',\n 30: 'xxx',\n 300: 'ccc',\n 4: 'iv',\n 40: 'xl',\n 400: 'cd',\n 5: 'v',\n 50: 'l',\n 500: 'd',\n 6: 'vi',\n 60: 'lx',\n 600: 'dc',\n 7: 'vii',\n 70: 'lxx',\n 700: 'dcc',\n 8: 'viii',\n 80: 'lxxx',\n 800: 'dccc',\n 9: 'ix',\n 90: 'xc',\n 900: 'cm',\n 1000: 'm'\n };\n var values = [\n 1000,\n 900,\n 800,\n 700,\n 600,\n 500,\n 400,\n 300,\n 200,\n 100,\n 90,\n 80,\n 70,\n 60,\n 50,\n 40,\n 30,\n 20,\n 10,\n 9,\n 8,\n 7,\n 6,\n 5,\n 4,\n 3,\n 2,\n 1\n ];\n var roman = '';\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n }\n function romanToArabic(r) {\n r = r.toLowerCase();\n var digits = {\n i: 1,\n v: 5,\n x: 10,\n l: 50,\n c: 100,\n d: 500,\n m: 1000\n };\n var value = 0, prev = 0;\n for (var i = 0; i < r.length; ++i) {\n var v = digits[r.charAt(i)];\n if (!v) {\n return null;\n }\n value += v;\n if (v > prev) {\n value -= 2 * prev;\n }\n prev = v;\n }\n return value;\n }\n function memoize(f) {\n var cache = Object.create(null);\n return function () {\n var id = '';\n for (var i = arguments.length; --i >= 0;) {\n id += ':' + arguments[i];\n }\n if (id in cache) {\n return cache[id];\n }\n return f.apply(this, arguments);\n };\n }\n function ucs2decode(string) {\n var output = [], counter = 0, length = string.length, value, extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 55296 && value <= 56319 && counter < length) {\n extra = string.charCodeAt(counter++);\n if ((extra & 64512) == 56320) {\n output.push(((value & 1023) << 10) + (extra & 1023) + 65536);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n }\n function ucs2encode(array) {\n return array.map(function (value) {\n var output = '';\n if (value > 65535) {\n value -= 65536;\n output += String.fromCharCode(value >>> 10 & 1023 | 55296);\n value = 56320 | value & 1023;\n }\n output += String.fromCharCode(value);\n return output;\n }).join('');\n }\n deepExtend(kendo, {\n util: {\n MAX_NUM: MAX_NUM,\n MIN_NUM: MIN_NUM,\n append: append,\n arrayLimits: arrayLimits,\n arrayMin: arrayMin,\n arrayMax: arrayMax,\n defined: defined,\n deg: deg,\n hashKey: hashKey,\n hashObject: hashObject,\n isNumber: isNumber,\n isTransparent: isTransparent,\n last: last,\n limitValue: limitValue,\n now: now,\n objectKey: objectKey,\n round: round,\n rad: rad,\n renderAttr: renderAttr,\n renderAllAttr: renderAllAttr,\n renderPos: renderPos,\n renderSize: renderSize,\n renderStyle: renderStyle,\n renderTemplate: renderTemplate,\n sparseArrayLimits: sparseArrayLimits,\n sparseArrayMin: sparseArrayMin,\n sparseArrayMax: sparseArrayMax,\n sqr: sqr,\n valueOrDefault: valueOrDefault,\n romanToArabic: romanToArabic,\n arabicToRoman: arabicToRoman,\n memoize: memoize,\n ucs2encode: ucs2encode,\n ucs2decode: ucs2decode\n }\n });\n kendo.drawing.util = kendo.util;\n kendo.dataviz.util = kendo.util;\n }());\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('util/text-metrics', [\n 'kendo.core',\n 'util/main'\n ], f);\n}(function () {\n (function ($) {\n var doc = document, kendo = window.kendo, Class = kendo.Class, util = kendo.util, defined = util.defined;\n var LRUCache = 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 lru = this, map = lru._map, entry = {\n key: key,\n value: value\n };\n map[key] = entry;\n if (!lru._head) {\n lru._head = lru._tail = entry;\n } else {\n lru._tail.newer = entry;\n entry.older = lru._tail;\n lru._tail = entry;\n }\n if (lru._length >= lru._size) {\n map[lru._head.key] = null;\n lru._head = lru._head.newer;\n lru._head.older = null;\n } else {\n lru._length++;\n }\n },\n get: function (key) {\n var lru = this, entry = lru._map[key];\n if (entry) {\n if (entry === lru._head && entry !== lru._tail) {\n lru._head = entry.newer;\n lru._head.older = null;\n }\n if (entry !== lru._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = lru._tail;\n entry.newer = null;\n lru._tail.newer = entry;\n lru._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var defaultMeasureBox = $('
')[0];\n function zeroSize() {\n return {\n width: 0,\n height: 0,\n baseline: 0\n };\n }\n var TextMetrics = Class.extend({\n init: function (options) {\n this._cache = new LRUCache(1000);\n this._initOptions(options);\n },\n options: { baselineMarkerSize: 1 },\n measure: function (text, style, box) {\n if (!text) {\n return zeroSize();\n }\n var styleKey = util.objectKey(style), cacheKey = util.hashKey(text + styleKey), cachedResult = this._cache.get(cacheKey);\n if (cachedResult) {\n return cachedResult;\n }\n var size = zeroSize();\n var measureBox = box ? box : defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n for (var key in style) {\n var value = style[key];\n if (defined(value)) {\n measureBox.style[key] = value;\n }\n }\n $(measureBox).text(text);\n measureBox.appendChild(baselineMarker);\n doc.body.appendChild(measureBox);\n if ((text + '').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 return $('')[0];\n }\n });\n TextMetrics.current = new TextMetrics();\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n function loadFonts(fonts, callback) {\n var promises = [];\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function (font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n kendo.logToConsole(e);\n }\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n }\n kendo.util.TextMetrics = TextMetrics;\n kendo.util.LRUCache = LRUCache;\n kendo.util.loadFonts = loadFonts;\n kendo.util.measureText = measureText;\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('util/base64', ['util/main'], f);\n}(function () {\n (function () {\n var kendo = window.kendo, deepExtend = kendo.deepExtend, fromCharCode = String.fromCharCode;\n var KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n function encodeBase64(input) {\n var output = '';\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n input = encodeUTF8(input);\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) + KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n return output;\n }\n function encodeUTF8(input) {\n var output = '';\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n if (c < 128) {\n output += fromCharCode(c);\n } else if (c < 2048) {\n output += fromCharCode(192 | c >>> 6);\n output += fromCharCode(128 | c & 63);\n } else if (c < 65536) {\n output += fromCharCode(224 | c >>> 12);\n output += fromCharCode(128 | c >>> 6 & 63);\n output += fromCharCode(128 | c & 63);\n }\n }\n return output;\n }\n deepExtend(kendo.util, {\n encodeBase64: encodeBase64,\n encodeUTF8: encodeUTF8\n });\n }());\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('mixins/observers', ['kendo.core'], f);\n}(function () {\n (function ($) {\n var math = Math, kendo = window.kendo, deepExtend = kendo.deepExtend, inArray = $.inArray;\n var ObserversMixin = {\n observers: function () {\n this._observers = this._observers || [];\n return this._observers;\n },\n addObserver: function (element) {\n if (!this._observers) {\n this._observers = [element];\n } else {\n this._observers.push(element);\n }\n return this;\n },\n removeObserver: function (element) {\n var observers = this.observers();\n var index = inArray(element, observers);\n if (index != -1) {\n observers.splice(index, 1);\n }\n return this;\n },\n trigger: function (methodName, event) {\n var observers = this._observers;\n var observer;\n var idx;\n if (observers && !this._suspended) {\n for (idx = 0; idx < observers.length; idx++) {\n observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n },\n optionsChange: function (e) {\n e = e || {};\n e.element = this;\n this.trigger('optionsChange', e);\n },\n geometryChange: function () {\n this.trigger('geometryChange', { element: this });\n },\n suspend: function () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n },\n resume: function () {\n this._suspended = math.max((this._suspended || 0) - 1, 0);\n return this;\n },\n _observerField: function (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n }\n };\n deepExtend(kendo, { mixins: { ObserversMixin: ObserversMixin } });\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 'kendo.dataviz.core',\n 'kendo.drawing',\n 'kendo.dataviz.themes'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'dataviz.gauge',\n name: 'Gauge',\n category: 'dataviz',\n description: 'Radial and Linear gauges.',\n depends: [\n 'dataviz.core',\n 'dataviz.themes'\n ]\n };\n (function ($, undefined) {\n var math = Math, kendo = window.kendo, util = kendo.util, Widget = kendo.ui.Widget, deepExtend = kendo.deepExtend, dataviz = kendo.dataviz, autoMajorUnit = dataviz.autoMajorUnit, ChartElement = dataviz.ChartElement, NumericAxis = dataviz.NumericAxis, Axis = dataviz.Axis, Box2D = dataviz.Box2D, Class = kendo.Class, defined = util.defined, isNumber = util.isNumber, interpolateValue = dataviz.interpolateValue, getSpacing = dataviz.getSpacing, round = dataviz.round, geo = dataviz.geometry, draw = dataviz.drawing, Point = geo.Point, Group = draw.Group, Path = draw.Path, Rect = geo.Rect, Text = draw.Text;\n var ANGULAR_SPEED = 150, LINEAR_SPEED = 250, ARROW = 'arrow', ARROW_POINTER = 'arrowPointer', BAR_POINTER = 'barPointer', BLACK = '#000', CAP_SIZE = 0.05, COORD_PRECISION = dataviz.COORD_PRECISION, MAX_VALUE = Number.MAX_VALUE, MIN_VALUE = -Number.MAX_VALUE, DEFAULT_HEIGHT = 200, DEFAULT_LINE_WIDTH = 0.5, DEFAULT_WIDTH = 200, DEFAULT_MIN_WIDTH = 60, DEFAULT_MIN_HEIGHT = 60, DEFAULT_MARGIN = 5, DEGREE = math.PI / 180, GEO_ARC_ADJUST_ANGLE = 180, INSIDE = 'inside', LINEAR = 'linear', NEEDLE = 'needle', OUTSIDE = 'outside', RADIAL_POINTER = 'radialPointer', X = 'x', Y = 'y';\n var Pointer = Class.extend({\n init: function (scale, options) {\n var pointer = this;\n var scaleOptions = scale.options;\n ChartElement.fn.init.call(pointer, options);\n options = pointer.options;\n options.fill = options.color;\n pointer.scale = scale;\n if (defined(options.value)) {\n options.value = math.min(math.max(options.value, scaleOptions.min), scaleOptions.max);\n } else {\n options.value = scaleOptions.min;\n }\n },\n options: { color: BLACK },\n value: function (newValue) {\n var that = this;\n var options = that.options;\n var value = options.value;\n var scaleOptions = that.scale.options;\n if (arguments.length === 0) {\n return value;\n }\n options._oldValue = options._oldValue !== undefined ? options.value : scaleOptions.min;\n options.value = math.min(math.max(newValue, scaleOptions.min), scaleOptions.max);\n if (that.elements) {\n that.repaint();\n }\n }\n });\n var RadialPointer = Pointer.extend({\n options: {\n shape: NEEDLE,\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 setRadius: function (radius) {\n var that = this;\n if (radius) {\n that.elements.clear();\n that.render(that.parent, that.center, radius);\n }\n },\n setAngle: function (angle) {\n this.elements.transform(geo.transform().rotate(angle, this.center));\n },\n repaint: function () {\n var that = this;\n var scale = that.scale;\n var options = that.options;\n var oldAngle = scale.slotAngle(options._oldValue);\n var newAngle = scale.slotAngle(options.value);\n if (options.animation.transitions === false) {\n that.setAngle(newAngle);\n } else {\n new RadialPointerAnimation(that.elements, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n })).play();\n }\n },\n render: function () {\n var that = this;\n var scale = that.scale;\n var center = scale.arc.center;\n var options = that.options;\n var elements = new Group();\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: center,\n reverse: scale.options.reverse\n });\n }\n if (options.shape === NEEDLE) {\n elements.append(that._renderNeedle(), that._renderCap());\n } else {\n elements.append(that._renderArrow());\n }\n that.elements = elements;\n that.setAngle(DEGREE);\n return elements;\n },\n reflow: function (arc) {\n var that = this;\n var center = that.center = arc.center;\n var radius = that.radius = arc.getRadiusX();\n var capSize = that.capSize = Math.round(radius * that.options.cap.size);\n that.bbox = Rect.fromPoints(new Point(center.x - capSize, center.y - capSize), new Point(center.x + capSize, center.y + capSize));\n },\n _renderNeedle: function () {\n var that = this;\n var options = that.options;\n var minorTickSize = that.scale.options.minorTicks.size;\n var center = that.center;\n var needleColor = options.color;\n var needlePath = new Path({\n fill: { color: needleColor },\n stroke: {\n color: needleColor,\n width: DEFAULT_LINE_WIDTH\n }\n });\n needlePath.moveTo(center.x + that.radius - minorTickSize, center.y).lineTo(center.x, center.y - that.capSize / 2).lineTo(center.x, center.y + that.capSize / 2).close();\n return needlePath;\n },\n _renderCap: function () {\n var that = this;\n var options = that.options;\n var capColor = options.cap.color || options.color;\n var circle = new geo.Circle(that.center, that.capSize);\n var cap = new draw.Circle(circle, {\n fill: { color: capColor },\n stroke: { color: capColor }\n });\n return cap;\n }\n });\n var RadialScale = NumericAxis.extend({\n init: function (options) {\n var scale = this;\n scale.options = deepExtend({}, scale.options, options);\n scale.options.majorUnit = scale.options.majorUnit || autoMajorUnit(scale.options.min, scale.options.max);\n scale.options.minorUnit = scale.options.minorUnit || scale.options.majorUnit / 10;\n Axis.fn.init.call(scale, scale.options);\n },\n options: {\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 render: function (center, radius) {\n var that = this;\n var arc = that.renderArc(center, radius);\n that.bbox = arc.bbox();\n that.labelElements = that.renderLabels();\n that.ticks = that.renderTicks();\n that.ranges = that.renderRanges();\n },\n reflow: function (bbox) {\n var that = this;\n var center = bbox.center();\n var radius = math.min(bbox.height(), bbox.width()) / 2;\n if (that.bbox !== undefined) {\n that.bbox = that.arc.bbox();\n that.radius(that.arc.getRadiusX());\n that.repositionRanges();\n that.renderLabels();\n } else {\n return that.render(center, radius);\n }\n },\n slotAngle: function (value) {\n var options = this.options;\n var startAngle = options.startAngle;\n var reverse = options.reverse;\n var angle = options.endAngle - startAngle;\n var min = options.min;\n var max = options.max;\n var result;\n if (reverse) {\n result = options.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 renderLabels: function () {\n var that = this;\n var options = that.options;\n var majorTickSize = options.majorTicks.size;\n var arc = that.arc.clone();\n var radius = arc.getRadiusX();\n var tickAngles = that.tickAngles(arc, options.majorUnit);\n var labels = that.labels;\n var count = labels.length;\n var labelsOptions = options.labels;\n var padding = labelsOptions.padding;\n var rangeDistance = radius * 0.05;\n var rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n var ranges = options.ranges || [];\n var halfWidth, halfHeight, labelAngle;\n var angle, label, lp, i, cx, cy, isInside;\n var labelsGroup = new Group();\n var lbl, labelPos, prevLabelPos, labelTransform;\n if (that.options.rangeDistance !== undefined) {\n rangeDistance = that.options.rangeDistance;\n } else {\n that.options.rangeDistance = rangeDistance;\n }\n if (labelsOptions.position === INSIDE) {\n radius -= majorTickSize;\n if (ranges.length && that.labelElements === undefined) {\n radius -= rangeSize + rangeDistance;\n }\n arc.setRadiusX(radius).setRadiusY(radius);\n }\n for (i = 0; i < count; i++) {\n label = labels[i];\n halfWidth = label.box.width() / 2;\n halfHeight = label.box.height() / 2;\n angle = tickAngles[i];\n labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n isInside = labelsOptions.position === INSIDE;\n lp = arc.pointAt(angle);\n cx = lp.x + math.cos(labelAngle) * (halfWidth + padding) * (isInside ? 1 : -1);\n cy = lp.y + math.sin(labelAngle) * (halfHeight + padding) * (isInside ? 1 : -1);\n label.reflow(new dataviz.Box2D(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n labelPos = new Point(label.box.x1, label.box.y1);\n if (that.labelElements === undefined) {\n lbl = _buildLabel(label, options.labels);\n labelsGroup.append(lbl);\n } else {\n lbl = that.labelElements.children[i];\n prevLabelPos = lbl.bbox().origin;\n labelTransform = lbl.transform() || geo.transform();\n labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n lbl.transform(labelTransform);\n }\n that.bbox = Rect.union(that.bbox, lbl.bbox());\n }\n return labelsGroup;\n },\n repositionRanges: function () {\n var that = this;\n var ranges = that.ranges.children;\n var rangeSize = that.options.rangeSize;\n var rangeDistance = that.options.rangeDistance;\n var rangeRadius, newRadius;\n if (ranges.length > 0) {\n rangeRadius = that.getRangeRadius();\n if (that.options.labels.position === INSIDE) {\n rangeRadius += rangeSize + rangeDistance;\n }\n newRadius = rangeRadius + rangeSize / 2;\n for (var i = 0; i < ranges.length; i++) {\n ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n }\n that.bbox = Rect.union(that.bbox, that.ranges.bbox());\n }\n },\n renderRanges: function () {\n var that = this;\n var arc = that.arc;\n var result = new Group();\n var from, to;\n var segments = that.rangeSegments();\n var segmentsCount = segments.length;\n var reverse = that.options.reverse;\n var rangeSize = that.options.rangeSize;\n var rangeDistance = that.options.rangeDistance;\n var segment, rangeRadius, rangeGeom, i;\n if (segmentsCount) {\n rangeRadius = that.getRangeRadius();\n that.radius(that.radius() - rangeSize - rangeDistance);\n for (i = 0; i < segmentsCount; i++) {\n segment = segments[i];\n from = that.slotAngle(segment[reverse ? 'to' : 'from']);\n to = that.slotAngle(segment[!reverse ? 'to' : 'from']);\n if (to - from !== 0) {\n rangeGeom = new geo.Arc(arc.center, {\n radiusX: rangeRadius + rangeSize / 2,\n radiusY: rangeRadius + rangeSize / 2,\n startAngle: from,\n endAngle: to\n });\n result.append(new draw.Arc(rangeGeom, {\n stroke: {\n width: rangeSize,\n color: segment.color,\n opacity: segment.opacity\n }\n }));\n }\n }\n }\n return result;\n },\n rangeSegments: function () {\n var gauge = this;\n var options = gauge.options;\n var ranges = options.ranges || [];\n var count = ranges.length;\n var range;\n var segmentsCount;\n var defaultColor = options.rangePlaceholderColor;\n var segments = [];\n var segment;\n var min = options.min;\n var max = options.max;\n var i, j;\n function rangeSegment(from, to, color, opacity) {\n return {\n from: from,\n to: to,\n color: color,\n opacity: opacity\n };\n }\n if (count) {\n segments.push(rangeSegment(min, max, defaultColor));\n for (i = 0; i < count; i++) {\n range = getRange(ranges[i], min, max);\n segmentsCount = segments.length;\n for (j = 0; j < segmentsCount; j++) {\n 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 that = this;\n var options = that.options;\n var majorTickSize = options.majorTicks.size;\n var rangeSize = options.rangeSize;\n var rangeDistance = options.rangeDistance;\n var arc = that.arc;\n var r;\n if (options.labels.position === OUTSIDE) {\n r = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n } else {\n r = arc.getRadiusX() - rangeSize;\n }\n return r;\n },\n renderArc: function (center, radius) {\n var that = this;\n var options = that.options;\n var arc = that.arc = new geo.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 that = this;\n var arc = that.arc;\n var options = that.options;\n var labelsPosition = options.labels.position;\n var allTicks = new Group();\n var majorTickSize = options.majorTicks.size;\n var minorTickSize = options.minorTicks.size;\n var tickArc = arc.clone();\n var radius = tickArc.getRadiusX();\n function drawTicks(arc, tickAngles, unit, tickOptions) {\n var ticks = new Group(), center = arc.center, radius = arc.getRadiusX(), i, tickStart, tickEnd, visible = tickOptions.visible;\n if (visible) {\n for (i = 0; i < tickAngles.length; i++) {\n tickStart = arc.pointAt(tickAngles[i]);\n tickEnd = new Point(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n ticks.append(new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(tickStart).lineTo(tickEnd));\n }\n }\n return ticks;\n }\n that.majorTickAngles = that.tickAngles(arc, options.majorUnit);\n that.majorTicks = drawTicks(tickArc, that.majorTickAngles, options.majorUnit, options.majorTicks);\n allTicks.append(that.majorTicks);\n that._tickDifference = majorTickSize - minorTickSize;\n if (labelsPosition === OUTSIDE) {\n tickArc.setRadiusX(radius - majorTickSize + minorTickSize).setRadiusY(radius - majorTickSize + minorTickSize);\n }\n that.minorTickAngles = that.normalizeTickAngles(that.tickAngles(arc, options.minorUnit));\n that.minorTicks = drawTicks(tickArc, that.minorTickAngles, options.minorUnit, options.minorTicks, options.majorUnit);\n allTicks.append(that.minorTicks);\n return allTicks;\n },\n normalizeTickAngles: function (angles) {\n var that = this;\n var options = that.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 scale = this;\n var options = scale.options;\n var reverse = options.reverse;\n var range = options.max - options.min;\n var angle = ring.endAngle - ring.startAngle;\n var pos = ring.startAngle;\n var tickCount = range / stepValue;\n var step = angle / tickCount;\n var positions = [];\n var i;\n if (reverse) {\n pos += angle;\n step = -step;\n }\n for (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 (radius) {\n var that = this;\n if (radius) {\n that.arc.setRadiusX(radius).setRadiusY(radius);\n that.repositionTicks(that.majorTicks.children, that.majorTickAngles);\n that.repositionTicks(that.minorTicks.children, that.minorTickAngles, true);\n } else {\n return that.arc.getRadiusX();\n }\n },\n repositionTicks: function (ticks, tickAngles, minor) {\n var that = this;\n var diff = minor ? that._tickDifference || 0 : 0;\n var tickArc = that.arc;\n var radius = tickArc.getRadiusX();\n if (minor && that.options.labels.position === OUTSIDE && diff !== 0) {\n tickArc = that.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 geo.Transformation().translate(xDiff, yDiff));\n }\n }\n });\n var Gauge = Widget.extend({\n init: function (element, userOptions) {\n var gauge = this;\n var options;\n var themeOptions;\n var themeName;\n var themes = dataviz.ui.themes || {};\n var theme;\n kendo.destroy(element);\n $(element).empty();\n Widget.fn.init.call(gauge, element);\n gauge.wrapper = gauge.element;\n gauge._originalOptions = deepExtend({}, userOptions);\n options = deepExtend({}, gauge.options, userOptions);\n themeName = options.theme;\n theme = themes[themeName] || themes[themeName.toLowerCase()];\n themeOptions = themeName && theme ? theme.gauge : {};\n gauge.options = deepExtend({}, themeOptions, options);\n if ($.isArray(options.pointer)) {\n for (var i = 0; i < options.pointer.length; i++) {\n gauge.options.pointer[i] = deepExtend({}, themeOptions.pointer, options.pointer[i]);\n }\n }\n gauge.element.addClass('k-gauge');\n gauge.surface = gauge._createSurface();\n gauge.redraw();\n },\n options: {\n plotArea: {},\n theme: 'default',\n renderAs: '',\n pointer: {},\n scale: {},\n gaugeArea: {}\n },\n destroy: function () {\n this.surface.destroy();\n Widget.fn.destroy.call(this);\n },\n value: function (value) {\n var that = this;\n var pointer = that.pointers[0];\n if (arguments.length === 0) {\n return pointer.value();\n }\n pointer.value(value);\n that._setValueOptions(value);\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 that = this;\n var pointers = that.pointers;\n var allValues = [];\n var i;\n if (arguments.length === 0) {\n for (i = 0; i < pointers.length; i++) {\n allValues.push(pointers[i].value());\n }\n return allValues;\n }\n if ($.isArray(values)) {\n for (i = 0; i < values.length; i++) {\n if (isNumber(values[i])) {\n pointers[i].value(values[i]);\n }\n }\n }\n that._setValueOptions(values);\n },\n _setValueOptions: function (values) {\n var pointers = [].concat(this.options.pointer);\n values = [].concat(values);\n for (var i = 0; i < values.length; i++) {\n pointers[i].value = values[i];\n }\n },\n _resize: function () {\n var that = this;\n var t = that.options.transitions;\n var i;\n that.options.transitions = false;\n for (i = 0; i < that.pointers.length; i++) {\n that.pointers[i].options.animation.transitions = false;\n }\n that.redraw();\n that.options.transitions = t;\n for (i = 0; i < that.pointers.length; i++) {\n that.pointers[i].options.animation.transitions = t;\n }\n },\n redraw: function () {\n var that = this;\n var size = deepExtend(that._getSize(), that.options.gaugeArea);\n var wrapper = new Rect([\n 0,\n 0\n ], [\n size.width,\n size.height\n ]);\n var bbox;\n that.surface.clear();\n that.gaugeArea = that._createGaugeArea();\n that.surface.element.css({\n width: size.width,\n height: size.height\n });\n that._createModel();\n bbox = _unpad(wrapper.bbox(), that._gaugeAreaMargin);\n that.reflow(bbox);\n },\n _createGaugeArea: function () {\n var that = this;\n var options = that.options.gaugeArea;\n var size = that.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 that._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 _createSurface: function () {\n var that = this;\n var options = that.options;\n var size = that._getSize();\n size = options.gaugeArea ? deepExtend(size, options.gaugeArea) : size;\n var wrap = $('').appendTo(that.element).css({\n width: size.width,\n height: size.height\n });\n return new draw.Surface.create(wrap, { type: options.renderAs });\n },\n getSize: function () {\n return this._getSize();\n },\n _getSize: function () {\n var that = this;\n var element = that.element;\n var width = element.width();\n var height = element.height();\n if (!width) {\n width = DEFAULT_WIDTH;\n }\n if (!height) {\n height = DEFAULT_HEIGHT;\n }\n return {\n width: width,\n height: height\n };\n }\n });\n var RadialGauge = Gauge.extend({\n init: function (element, options) {\n var radialGauge = this;\n Gauge.fn.init.call(radialGauge, element, options);\n kendo.notify(radialGauge, dataviz.ui);\n },\n options: {\n name: 'RadialGauge',\n transitions: true,\n gaugeArea: { background: '' }\n },\n reflow: function (bbox) {\n var that = this;\n var pointers = that.pointers;\n that.scale.reflow(bbox);\n that._initialPlotArea = that.scale.bbox;\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(that.scale.arc);\n that._initialPlotArea = Rect.union(that._initialPlotArea, pointers[i].bbox);\n }\n that.fitScale(bbox);\n that.alignScale(bbox);\n that._buildVisual(that.gaugeArea, pointers, that.scale);\n that._draw();\n },\n _buildVisual: function (gaugeArea, pointers, scale) {\n var visuals = new Group();\n var current;\n visuals.append(gaugeArea);\n visuals.append(scale.ticks);\n visuals.append(scale.ranges);\n for (var i = 0; i < pointers.length; i++) {\n current = pointers[i];\n current.render();\n visuals.append(current.elements);\n current.value(current.options.value);\n }\n visuals.append(scale.labelElements);\n this._visuals = visuals;\n },\n fitScale: function (bbox) {\n var that = this;\n var scale = that.scale;\n var arc = scale.arc;\n var plotAreaBox = that._initialPlotArea;\n var step = math.abs(that.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 = that.getPlotBox(min, bbox, arc);\n if (0 <= minDiff && minDiff <= 2) {\n break;\n }\n }\n if (max != mid) {\n maxDiff = that.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 = that.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 that = this;\n var scale = that.scale;\n var pointers = that.pointers;\n var radius = arc.getRadiusX();\n arc = arc.clone();\n arc.setRadiusX(radius + step).setRadiusY(radius + step);\n scale.arc = arc;\n scale.reflow(bbox);\n that.plotBbox = scale.bbox;\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(arc);\n that.plotBbox = Rect.union(that.plotBbox, pointers[i].bbox);\n }\n return that.getDiff(that.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 that = this;\n var plotBoxCenter = that.plotBbox.center();\n var boxCenter = bbox.center();\n var paddingX = plotBoxCenter.x - boxCenter.x;\n var paddingY = plotBoxCenter.y - boxCenter.y;\n var scale = that.scale;\n var pointers = that.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 that.plotBbox = Rect.union(scale.bbox, pointers[i].bbox);\n }\n },\n _createModel: function () {\n var that = this;\n var options = that.options;\n var pointers = options.pointer;\n var scale = that.scale = new RadialScale(options.scale);\n var current;\n that.pointers = [];\n pointers = $.isArray(pointers) ? pointers : [pointers];\n for (var i = 0; i < pointers.length; i++) {\n current = new RadialPointer(scale, deepExtend({}, pointers[i], { animation: { transitions: options.transitions } }));\n that.pointers.push(current);\n }\n }\n });\n var LinearGauge = Gauge.extend({\n init: function (element, options) {\n var linearGauge = this;\n Gauge.fn.init.call(linearGauge, element, options);\n kendo.notify(linearGauge, dataviz.ui);\n },\n options: {\n name: 'LinearGauge',\n transitions: true,\n gaugeArea: { background: '' },\n scale: { vertical: true }\n },\n reflow: function (bbox) {\n var that = this;\n var pointers = that.pointers;\n var bboxX = bbox.origin.x;\n var bboxY = bbox.origin.y;\n var bbox2D = new dataviz.Box2D(bboxX, bboxX, bboxX + bbox.width(), bboxY + bbox.height());\n that.scale.reflow(bbox2D);\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow();\n }\n that.bbox = that._getBox(bbox2D);\n that._alignElements();\n that._shrinkElements();\n that._buildVisual();\n that._draw();\n },\n _buildVisual: function () {\n var that = this;\n var visuals = new Group();\n var scaleElements = that.scale.render();\n var pointers = that.pointers;\n var current;\n visuals.append(that.gaugeArea);\n visuals.append(scaleElements);\n for (var i = 0; i < pointers.length; i++) {\n current = pointers[i];\n visuals.append(current.render());\n current.value(current.options.value);\n }\n that._visuals = visuals;\n },\n _createModel: function () {\n var that = this;\n var options = that.options;\n var pointers = options.pointer;\n var scale = that.scale = new LinearScale(options.scale);\n var current, currentOptions;\n that.pointers = [];\n pointers = $.isArray(pointers) ? pointers : [pointers];\n for (var i = 0; i < pointers.length; i++) {\n currentOptions = deepExtend({}, pointers[i], { animation: { transitions: options.transitions } });\n if (currentOptions.shape === ARROW) {\n current = new ArrowLinearPointer(scale, currentOptions);\n } else {\n current = new BarLinearPointer(scale, currentOptions);\n }\n that.pointers.push(current);\n }\n },\n _getSize: function () {\n var gauge = this;\n var element = gauge.element;\n var width = element.width();\n var height = element.height();\n var vertical = gauge.options.scale.vertical;\n if (!width) {\n width = vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH;\n }\n if (!height) {\n height = vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT;\n }\n return {\n width: width,\n height: height\n };\n },\n _getBox: function (box) {\n var that = this;\n var scale = that.scale;\n var pointers = that.pointers;\n var boxCenter = box.center();\n var plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n var size;\n for (var i = 0; i < pointers.length; i++) {\n plotAreaBox.wrap(pointers[i].box.clone());\n }\n if (scale.options.vertical) {\n size = plotAreaBox.width() / 2;\n plotAreaBox = new Box2D(boxCenter.x - size, box.y1, boxCenter.x + size, box.y2);\n } else {\n size = plotAreaBox.height() / 2;\n plotAreaBox = new Box2D(box.x1, boxCenter.y - size, box.x2, boxCenter.y + size);\n }\n return plotAreaBox;\n },\n _alignElements: function () {\n var that = this;\n var scale = that.scale;\n var pointers = that.pointers;\n var scaleBox = scale.box;\n var box = pointers[0].box.clone().wrap(scale.box);\n var plotAreaBox = that.bbox;\n var diff, i;\n for (i = 0; i < pointers.length; i++) {\n box.wrap(pointers[i].box.clone());\n }\n if (scale.options.vertical) {\n diff = plotAreaBox.center().x - box.center().x;\n scale.reflow(new Box2D(scaleBox.x1 + diff, plotAreaBox.y1, scaleBox.x2 + diff, plotAreaBox.y2));\n } else {\n diff = plotAreaBox.center().y - box.center().y;\n scale.reflow(new Box2D(plotAreaBox.x1, scaleBox.y1 + diff, plotAreaBox.x2, scaleBox.y2 + diff));\n }\n for (i = 0; i < pointers.length; i++) {\n pointers[i].reflow(that.bbox);\n }\n },\n _shrinkElements: function () {\n var that = this;\n var scale = that.scale;\n var pointers = that.pointers;\n var scaleBox = scale.box.clone();\n var pos = scale.options.vertical ? 'y' : 'x';\n var pointerBox = pointers[0].box;\n var i;\n for (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 (i = 0; i < pointers.length; i++) {\n pointers[i].reflow(that.bbox);\n }\n }\n });\n var LinearScale = NumericAxis.extend({\n init: function (options) {\n var scale = this;\n scale.options = deepExtend({}, scale.options, options);\n scale.options = deepExtend({}, scale.options, { labels: { mirror: scale.options.mirror } });\n scale.options.majorUnit = scale.options.majorUnit || autoMajorUnit(scale.options.min, scale.options.max);\n Axis.fn.init.call(scale, scale.options);\n scale.options.minorUnit = scale.options.minorUnit || scale.options.majorUnit / 10;\n },\n options: {\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 render: function () {\n var that = this;\n var elements = that.elements = new Group();\n var labels = that.renderLabels();\n var scaleLine = that.renderLine();\n var scaleTicks = that.renderTicks();\n var ranges = that.renderRanges();\n elements.append(scaleLine, labels, scaleTicks, ranges);\n return elements;\n },\n renderRanges: function () {\n var that = this;\n var options = that.options;\n var min = options.min;\n var max = options.max;\n var ranges = options.ranges || [];\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var elements = new Group();\n var count = ranges.length;\n var rangeSize = options.rangeSize || options.minorTicks.size / 2;\n var range, slot, slotX, slotY, i;\n if (count) {\n for (i = 0; i < count; i++) {\n range = getRange(ranges[i], min, max);\n slot = that.getSlot(range.from, range.to);\n slotX = vertical ? that.lineBox() : slot;\n slotY = vertical ? slot : that.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.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 }\n return elements;\n },\n renderLabels: function () {\n var that = this;\n var options = that.options;\n var labels = that.labels;\n var elements = new Group();\n for (var i = 0; i < labels.length; i++) {\n elements.append(_buildLabel(labels[i], options.labels));\n }\n return elements;\n },\n renderLine: function () {\n var that = this;\n var options = that.options;\n var line = options.line;\n var lineBox = that.lineBox();\n var linePath;\n var elements = new Group();\n if (line.width > 0 && line.visible) {\n linePath = new Path({\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 that = this;\n var ticks = new Group();\n var options = that.options;\n var lineBox = that.lineBox();\n var mirror = options.labels.mirror;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickLineOptions = {\n _alignLines: options._alignLines,\n vertical: options.vertical\n };\n function render(tickPositions, tickOptions) {\n var i, count = tickPositions.length;\n if (tickOptions.visible) {\n for (i = tickOptions.skip; i < count; i += tickOptions.step) {\n if (i % tickOptions.skipUnit === 0) {\n continue;\n }\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n ticks.append(that.renderAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n render(that.getMajorTickPositions(), options.majorTicks);\n render(that.getMinorTickPositions(), deepExtend({}, { skipUnit: majorUnit / options.minorUnit }, options.minorTicks));\n return ticks;\n },\n renderAxisTick: function (options, tickOptions) {\n var tickX = options.tickX;\n var tickY = options.tickY;\n var position = options.position;\n var start, end, tickPath;\n if (options.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 tickPath = new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(start).lineTo(end);\n return tickPath;\n }\n });\n var LinearPointer = Pointer.extend({\n init: function (scale, options) {\n var pointer = this;\n Pointer.fn.init.call(pointer, scale, options);\n pointer.options = deepExtend({ track: { visible: defined(options.track) } }, pointer.options);\n },\n options: {\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 reflow: function () {\n var pointer = this;\n var options = pointer.options;\n var scale = pointer.scale;\n var scaleLine = scale.lineBox();\n var trackSize = options.track.size || options.size;\n var pointerHalfSize = options.size / 2;\n var mirror = scale.options.mirror;\n var margin = getSpacing(options.margin);\n var vertical = scale.options.vertical;\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 Box2D(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 Box2D(scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize, scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize);\n pointerBox = pointerRangeBox;\n }\n } else {\n trackBox = new Box2D(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 Box2D(scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space, scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space);\n pointerBox = pointerRangeBox;\n }\n }\n pointer.trackBox = trackBox;\n pointer.pointerRangeBox = pointerRangeBox;\n pointer.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 pointer = this;\n var options = pointer.options;\n var scale = pointer.scale;\n var mirror = scale.options.mirror;\n var margin = getSpacing(options.margin);\n var vertical = scale.options.vertical;\n var space = vertical ? margin[mirror ? 'left' : 'right'] : margin[mirror ? 'bottom' : 'top'];\n return space;\n }\n });\n var ArrowLinearPointer = LinearPointer.extend({\n init: function (scale, options) {\n LinearPointer.fn.init.call(this, scale, options);\n if (this.options.size === undefined) {\n this.options.size = this.scale.options.majorTicks.size * 0.6;\n }\n },\n pointerShape: function () {\n var that = this;\n var options = that.options;\n var scale = that.scale;\n var size = options.size;\n var vertical = scale.options.vertical;\n var halfSize = size / 2;\n var sign = scale.options.mirror ? -1 : 1;\n var reverse = scale.options.reverse;\n var pos, shape;\n if (vertical) {\n pos = reverse ? 'y2' : 'y1';\n shape = [\n new Point(0, 0 - halfSize),\n new Point(0 - sign * size, 0),\n new Point(0, 0 + halfSize)\n ];\n } else {\n pos = reverse ? 'x1' : 'x2';\n shape = [\n new Point(0 - halfSize, 0),\n new Point(0, 0 + sign * size),\n new Point(0 + halfSize, 0)\n ];\n }\n return shape;\n },\n repaint: function () {\n var that = this;\n var scale = that.scale;\n var options = that.options;\n var animation = new ArrowLinearPointerAnimation(that.elements, deepExtend(options.animation, {\n vertical: scale.options.vertical,\n mirror: scale.options.mirror,\n margin: that._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 that = this;\n var options = that.options;\n var elements = new Group();\n var scale = that.scale;\n var elementOptions = that.getElementOptions();\n var shape = that.pointerShape(options.value);\n options.animation.type = ARROW_POINTER;\n elements = new Path({\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(geo.transform().translate(slot.x1, slot.y1));\n that.elements = elements;\n return elements;\n }\n });\n var BarLinearPointer = LinearPointer.extend({\n init: function (scale, options) {\n LinearPointer.fn.init.call(this, scale, options);\n if (this.options.size === undefined) {\n this.options.size = this.scale.options.majorTicks.size * 0.3;\n }\n },\n pointerShape: function (value) {\n var that = this;\n var options = that.options;\n var scale = that.scale;\n var vertical = scale.options.vertical;\n var mirror = scale.options.mirror;\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 ? Y : X;\n var sizeAxis = vertical ? X : Y;\n var margin = that._margin() * dir;\n var p1 = new Point();\n p1[axis] = minSlot[axis + '1'];\n p1[sizeAxis] = minSlot[sizeAxis + '1'];\n var p2 = new Point();\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 that = this;\n var scale = that.scale;\n var options = that.options;\n var shape = that.pointerShape(options.value);\n var pointerPath = that.elements.children[0];\n var oldShape = that.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 that = this;\n var group = new Group();\n var elementOptions = that.getElementOptions();\n var pointer = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n });\n group.append(pointer);\n that.elements = group;\n return group;\n }\n });\n var RadialPointerAnimation = draw.Animation.extend({\n init: function (element, options) {\n draw.Animation.fn.init.call(this, element, options);\n options = this.options;\n options.duration = math.max(math.abs(options.newAngle - options.oldAngle) / options.duration * 1000, 1);\n },\n options: {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n },\n step: function (pos) {\n var anim = this;\n var options = anim.options;\n var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n anim.element.transform(geo.transform().rotate(angle, options.center));\n }\n });\n draw.AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n var ArrowLinearPointerAnimation = draw.Animation.extend({\n options: {\n easing: LINEAR,\n duration: LINEAR_SPEED\n },\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 axis = options.vertical ? 'x1' : 'y1';\n if (options.mirror == options.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 Point(from.x1, from.y1);\n var toScale = this.toScale = new Point(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(geo.transform().translate(translateX, translateY));\n }\n });\n draw.AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n var BarLinearPointerAnimation = draw.Animation.extend({\n options: {\n easing: LINEAR,\n speed: LINEAR_SPEED\n },\n setup: function () {\n var options = this.options;\n var newPoints = options.newPoints;\n var oldPoints = options.oldPoints;\n var axis = this.axis = options.vertical ? Y : X;\n var to = this.to = newPoints[0][axis];\n var from = this.from = 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 draw.AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n function _buildLabel(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 elements = new Group();\n var styleBox, styleGeometry, wrapper;\n wrapper = Path.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 Point(textBox.x1, textBox.y1), {\n font: options.font,\n fill: { color: options.color }\n });\n styleGeometry = _pad(text.bbox().clone(), options.padding);\n styleBox = Path.fromRect(styleGeometry, {\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: background }\n });\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 : MIN_VALUE;\n var to = defined(range.to) ? range.to : 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 _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 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 dataviz.ui.plugin(RadialGauge);\n dataviz.ui.plugin(LinearGauge);\n dataviz.ExportMixin.extend(Gauge.fn);\n deepExtend(dataviz, {\n Gauge: Gauge,\n RadialPointer: RadialPointer,\n LinearPointer: LinearPointer,\n ArrowLinearPointer: ArrowLinearPointer,\n BarLinearPointer: BarLinearPointer,\n LinearScale: LinearScale,\n RadialScale: RadialScale,\n LinearGauge: LinearGauge,\n RadialGauge: RadialGauge\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"],"sourceRoot":"/source/"}