{"version":3,"sources":["kendo.dataviz.chart.polar.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","mergeSort","a","cmp","merge","b","ai","bi","slice","left","right","Math","floor","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","xComparer","angularDistance","abs","RadarNumericAxisMixin","RadarNumericAxis","RadarLogarithmicAxis","PolarAxis","RadarClusterLayout","RadarStackLayout","RadarSegment","RadarBarChart","RadarLineChart","RadarAreaSegment","SplineRadarAreaSegment","RadarAreaChart","PolarScatterChart","PolarLineChart","PolarAreaSegment","SplinePolarAreaSegment","PolarAreaChart","PolarPlotAreaBase","RadarPlotArea","PolarPlotArea","draw","geom","geometry","AreaSegment","Axis","AxisGroupRangeTracker","BarChart","Box2D","CategoryAxis","CategoricalChart","CategoricalPlotArea","ChartElement","CurveProcessor","DonutSegment","LineChart","LineSegment","LogarithmicAxis","NumericAxis","PlotAreaBase","PlotAreaEventsMixin","PlotAreaFactory","Point2D","Ring","ScatterChart","ScatterLineChart","SeriesBinder","ShapeBuilder","SplineSegment","SplineAreaSegment","eventTargetElement","getSpacing","filterSeriesByType","ARC","BLACK","COORD_PRECISION","DEFAULT_PADDING","GAP","INTERPOLATE","LOGARITHMIC","POLAR_AREA","POLAR_LINE","POLAR_SCATTER","RADAR_AREA","RADAR_COLUMN","RADAR_LINE","SMOOTH","X","Y","ZERO","POLAR_CHARTS","RADAR_CHARTS","GridLinesMixin","createGridLines","altAxis","majorAngles","minorAngles","axis","radius","center","y","lineBox","y1","skipMajor","gridLines","majorGridLines","visible","majorGridLineAngles","renderMajorGridLines","minorGridLines","minorGridLineAngles","renderMinorGridLines","angles","renderGridLines","radiusCallback","line","stroke","dashType","circle","Circle","container","gridLinesVisual","Path","moveTo","lineTo","pointAt","children","gridLineAngles","skip","step","skipAngles","divs","intervals","altAxisVisible","alpha","intervalAngle","RadarCategoryAxis","startAngle","labels","margin","justified","range","categories","reflow","reflowLabels","labelBox","labelOptions","getSlot","adjacentBox","angle","divCount","divAngle","reverse","majorIntervals","minorIntervals","interval","proxy","createLine","minorAngle","minorRadius","type","cos","createPlotBands","band","slot","singleSlot","head","tail","ring","plotBands","group","_plotbandGroup","Group","zIndex","plotBandSlot","from","ceil","to","createRing","fill","opacity","appendVisual","slots","slotStart","totalDivs","slotAngle","endAngle","Arc","radiusX","radiusY","pointCategoryIndex","point","containsPoint","fn","bandStyle","shape","plotArea","polarAxis","y2","fromPoints","plotBandPoints","close","innerPoints","outerPoints","innerCircle","ir","outerCircle","concat","minorTicks","majorTicks","radarMajorGridLinePositions","radarMinorGridLinePositions","ticks","tickRadius","tickIx","angleIx","getValue","dx","dy","theta","midAngle","gamma","beta","distanceTo","distance","atan2","sin","axisType","call","x1","getTickPositions","majorUnit","minorSkipStep","minorUnit","positions","traverseMajorTicksPositions","position","traverseMinorTicksPositions","getDivisions","stepValue","divisions","tmp","start","valueRange","labelsCount","createAxisLabel","gap","spacing","sector","slotSector","cluster","count","clone","childSector","stack","isReversed","childrenCount","overlay","gradient","pointType","clusterType","stackType","categorySlot","categoryAxis","categoryIx","pointSlot","valueSlot","reflowPoint","clip","animation","createAnimation","toRect","valueRadius","onCircle","middle","createSegment","linePoints","currentSeries","seriesIx","segment","data","closed","points","stackPoints","closeFill","noop","prevSegment","chart","isStacked","seriesMissingValues","series","missingValues","slotX","slotY","parent","unshift","fillPath","_polarAxisCenter","strokeSegments","curveProcessor","segments","_strokeSegments","process","pop","createMissingValue","missingValue","hasValue","_hasMissingValuesGap","sortPoints","valueAxisRangeTracker","render","addToLegend","createPolarAxis","createCharts","createValueAxis","alignAxes","valueAxis","crossingValue","axisBox","translate","axisDefaultRange","tracker","defaultRange","query","axisOptions","valueAxisOptions","roundToMajorUnit","appendAxis","reflowAxes","heightDiff","defaultPadding","padding","unpad","valueAxisBox","shrink","top","backgroundBox","aggregateCategories","defaults","_hasBarCharts","_isStacked100","format","appendChart","aggregateSeries","panes","filterSeries","filterVisibleSeries","pane","createAreaChart","createLineChart","createBarChart","chartOptions","filteredSeries","firstSeries","isStacked100","areaChart","lineChart","barChart","seriesCategoryAxis","_dispatchEvent","eventType","category","coords","_eventCoordinates","getCategory","createCrosshairs","xAxis","yAxis","axisX","axisY","update","yAxisRanges","createScatterChart","scatterChart","xValue","yValue","register","DefaultAggregates"],"mappings":"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","file":"kendo.dataviz.chart.polar.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 return id in cache ? cache[id] : cache[id] = 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 function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n }(a);\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 mergeSort: mergeSort\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.chart.polar', [\n 'kendo.dataviz.chart',\n 'kendo.drawing'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'dataviz.chart.polar',\n name: 'Polar Charts',\n category: 'dataviz',\n depends: ['dataviz.chart'],\n hidden: true\n };\n (function ($, undefined) {\n var math = Math, kendo = window.kendo, deepExtend = kendo.deepExtend, util = kendo.util, append = util.append, draw = kendo.drawing, geom = kendo.geometry, dataviz = kendo.dataviz, AreaSegment = dataviz.AreaSegment, Axis = dataviz.Axis, AxisGroupRangeTracker = dataviz.AxisGroupRangeTracker, BarChart = dataviz.BarChart, Box2D = dataviz.Box2D, CategoryAxis = dataviz.CategoryAxis, CategoricalChart = dataviz.CategoricalChart, CategoricalPlotArea = dataviz.CategoricalPlotArea, ChartElement = dataviz.ChartElement, CurveProcessor = dataviz.CurveProcessor, DonutSegment = dataviz.DonutSegment, LineChart = dataviz.LineChart, LineSegment = dataviz.LineSegment, LogarithmicAxis = dataviz.LogarithmicAxis, NumericAxis = dataviz.NumericAxis, PlotAreaBase = dataviz.PlotAreaBase, PlotAreaEventsMixin = dataviz.PlotAreaEventsMixin, PlotAreaFactory = dataviz.PlotAreaFactory, Point2D = dataviz.Point2D, Ring = dataviz.Ring, ScatterChart = dataviz.ScatterChart, ScatterLineChart = dataviz.ScatterLineChart, SeriesBinder = dataviz.SeriesBinder, ShapeBuilder = dataviz.ShapeBuilder, SplineSegment = dataviz.SplineSegment, SplineAreaSegment = dataviz.SplineAreaSegment, eventTargetElement = dataviz.eventTargetElement, getSpacing = dataviz.getSpacing, filterSeriesByType = dataviz.filterSeriesByType, limitValue = util.limitValue, round = dataviz.round;\n var ARC = 'arc', BLACK = '#000', COORD_PRECISION = dataviz.COORD_PRECISION, DEFAULT_PADDING = 0.15, DEG_TO_RAD = math.PI / 180, GAP = 'gap', INTERPOLATE = 'interpolate', LOGARITHMIC = 'log', POLAR_AREA = 'polarArea', POLAR_LINE = 'polarLine', POLAR_SCATTER = 'polarScatter', RADAR_AREA = 'radarArea', RADAR_COLUMN = 'radarColumn', RADAR_LINE = 'radarLine', SMOOTH = 'smooth', X = 'x', Y = 'y', ZERO = 'zero', POLAR_CHARTS = [\n POLAR_AREA,\n POLAR_LINE,\n POLAR_SCATTER\n ], RADAR_CHARTS = [\n RADAR_AREA,\n RADAR_COLUMN,\n RADAR_LINE\n ];\n var GridLinesMixin = {\n createGridLines: function (altAxis) {\n var axis = this, options = axis.options, radius = math.abs(axis.box.center().y - altAxis.lineBox().y1), majorAngles, minorAngles, skipMajor = false, gridLines = [];\n if (options.majorGridLines.visible) {\n majorAngles = axis.majorGridLineAngles(altAxis);\n skipMajor = true;\n gridLines = axis.renderMajorGridLines(majorAngles, radius, options.majorGridLines);\n }\n if (options.minorGridLines.visible) {\n minorAngles = axis.minorGridLineAngles(altAxis, skipMajor);\n append(gridLines, axis.renderMinorGridLines(minorAngles, radius, options.minorGridLines, altAxis, skipMajor));\n }\n return gridLines;\n },\n renderMajorGridLines: function (angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n renderMinorGridLines: function (angles, radius, options, altAxis, skipMajor) {\n var radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n renderGridLines: function (angles, radius, options, radiusCallback) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n var center = this.box.center();\n var circle = new geom.Circle([\n center.x,\n center.y\n ], radius);\n var container = this.gridLinesVisual();\n for (var i = 0; i < angles.length; i++) {\n var line = new draw.Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n line.moveTo(circle.center).lineTo(circle.pointAt(angles[i]));\n container.append(line);\n }\n return container.children;\n },\n gridLineAngles: function (altAxis, size, skip, step, skipAngles) {\n var axis = this, divs = axis.intervals(size, skip, step, skipAngles), options = altAxis.options, altAxisVisible = options.visible && (options.line || {}).visible !== false;\n return $.map(divs, function (d) {\n var alpha = axis.intervalAngle(d);\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n };\n var RadarCategoryAxis = CategoryAxis.extend({\n options: {\n startAngle: 90,\n labels: { margin: getSpacing(10) },\n majorGridLines: { visible: true },\n justified: true\n },\n range: function () {\n return {\n min: 0,\n max: this.options.categories.length\n };\n },\n reflow: function (box) {\n this.box = box;\n this.reflowLabels();\n },\n lineBox: function () {\n return this.box;\n },\n reflowLabels: function () {\n var axis = this, labelOptions = axis.options.labels, skip = labelOptions.skip || 0, step = labelOptions.step || 1, measureBox = new Box2D(), labels = axis.labels, labelBox, i;\n for (i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n labelBox = labels[i].box;\n labels[i].reflow(axis.getSlot(skip + i * step).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n },\n intervals: function (size, skip, step, skipAngles) {\n var axis = this, options = axis.options, categories = options.categories.length, angle = 0, divCount = categories / size || 1, divAngle = 360 / divCount, divs = [], i;\n skip = skip || 0;\n step = step || 1;\n for (i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n angle = round(angle, COORD_PRECISION) % 360;\n if (!(skipAngles && dataviz.inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n return divs;\n },\n majorIntervals: function () {\n return this.intervals(1);\n },\n minorIntervals: function () {\n return this.intervals(0.5);\n },\n intervalAngle: function (interval) {\n return (360 + interval + this.options.startAngle) % 360;\n },\n majorAngles: function () {\n return $.map(this.majorIntervals(), $.proxy(this.intervalAngle, this));\n },\n createLine: function () {\n return [];\n },\n majorGridLineAngles: function (altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n },\n minorGridLineAngles: function (altAxis, skipMajor) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n },\n radiusCallback: function (radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n var minorAngle = 360 / (this.options.categories.length * 2);\n var minorRadius = math.cos(minorAngle * DEG_TO_RAD) * radius;\n var majorAngles = this.majorAngles();\n var radiusCallback = function (angle) {\n if (!skipMajor && dataviz.inArray(angle, majorAngles)) {\n return radius;\n } else {\n return minorRadius;\n }\n };\n return radiusCallback;\n }\n },\n createPlotBands: function () {\n var axis = this, options = axis.options, plotBands = options.plotBands || [], i, band, slot, singleSlot, head, tail;\n var group = this._plotbandGroup = new draw.Group({ zIndex: -1 });\n for (i = 0; i < plotBands.length; i++) {\n band = plotBands[i];\n slot = axis.plotBandSlot(band);\n singleSlot = axis.getSlot(band.from);\n head = band.from - math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n tail = math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n var ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: { opacity: band.opacity }\n });\n group.append(ring);\n }\n axis.appendVisual(group);\n },\n plotBandSlot: function (band) {\n return this.getSlot(band.from, band.to - 1);\n },\n getSlot: function (from, to) {\n var axis = this, options = axis.options, justified = options.justified, box = axis.box, divs = axis.majorAngles(), totalDivs = divs.length, slots, slotAngle = 360 / totalDivs, slotStart, angle;\n if (options.reverse && !justified) {\n from = (from + 1) % totalDivs;\n }\n from = limitValue(math.floor(from), 0, totalDivs - 1);\n slotStart = divs[from];\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n to = limitValue(math.ceil(to || from), from, totalDivs - 1);\n slots = to - from + 1;\n angle = slotAngle * slots;\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n },\n slot: function (from, to) {\n var slot = this.getSlot(from, to);\n var startAngle = slot.startAngle + 180;\n var endAngle = startAngle + slot.angle;\n return new geom.Arc([\n slot.c.x,\n slot.c.y\n ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.r,\n radiusY: slot.r\n });\n },\n pointCategoryIndex: function (point) {\n var axis = this, index = null, i, length = axis.options.categories.length, slot;\n for (i = 0; i < length; i++) {\n slot = axis.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n return index;\n }\n });\n deepExtend(RadarCategoryAxis.fn, GridLinesMixin);\n var RadarNumericAxisMixin = {\n options: { majorGridLines: { visible: true } },\n createPlotBands: function () {\n var axis = this, options = axis.options, plotBands = options.plotBands || [], type = options.majorGridLines.type, altAxis = axis.plotArea.polarAxis, majorAngles = altAxis.majorAngles(), center = altAxis.box.center(), i, band, bandStyle, slot, ring;\n var group = this._plotbandGroup = new draw.Group({ zIndex: -1 });\n for (i = 0; i < plotBands.length; i++) {\n band = plotBands[i];\n bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: { opacity: band.opacity }\n };\n slot = axis.getSlot(band.from, band.to, true);\n ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n var shape;\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = draw.Path.fromPoints(axis.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n group.append(shape);\n }\n axis.appendVisual(group);\n },\n plotBandPoints: function (ring, angles) {\n var innerPoints = [], outerPoints = [];\n var center = [\n ring.c.x,\n ring.c.y\n ];\n var innerCircle = new geom.Circle(center, ring.ir);\n var outerCircle = new geom.Circle(center, ring.r);\n for (var i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i]));\n outerPoints.push(outerCircle.pointAt(angles[i]));\n }\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n return outerPoints.concat(innerPoints);\n },\n createGridLines: function (altAxis) {\n var axis = this, options = axis.options, majorTicks = axis.radarMajorGridLinePositions(), majorAngles = altAxis.majorAngles(), minorTicks, center = altAxis.box.center(), gridLines = [];\n if (options.majorGridLines.visible) {\n gridLines = axis.renderGridLines(center, majorTicks, majorAngles, options.majorGridLines);\n }\n if (options.minorGridLines.visible) {\n minorTicks = axis.radarMinorGridLinePositions();\n append(gridLines, axis.renderGridLines(center, minorTicks, majorAngles, options.minorGridLines));\n }\n return gridLines;\n },\n renderGridLines: function (center, ticks, angles, options) {\n var tickRadius, tickIx, angleIx;\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n var skip = options.skip || 0;\n var step = options.step || 1;\n var container = this.gridLinesVisual();\n for (tickIx = skip; tickIx < ticks.length; tickIx += step) {\n tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n var circle = new geom.Circle([\n center.x,\n center.y\n ], tickRadius);\n if (options.type === ARC) {\n container.append(new draw.Circle(circle, style));\n } else {\n var line = new draw.Path(style);\n for (angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx]));\n }\n line.close();\n container.append(line);\n }\n }\n }\n return container.children;\n },\n getValue: function (point) {\n var axis = this, options = axis.options, lineBox = axis.lineBox(), altAxis = axis.plotArea.polarAxis, majorAngles = altAxis.majorAngles(), center = altAxis.box.center(), r = point.distanceTo(center), distance = r;\n if (options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n var dx = point.x - center.x, dy = point.y - center.y, theta = (math.atan2(dy, dx) / DEG_TO_RAD + 540) % 360;\n majorAngles.sort(function (a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n var midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2, alpha = angularDistance(theta, majorAngles[0]), gamma = 90 - midAngle, beta = 180 - alpha - gamma;\n distance = r * (math.sin(beta * DEG_TO_RAD) / math.sin(gamma * DEG_TO_RAD));\n }\n return axis.axisType().fn.getValue.call(axis, new Point2D(lineBox.x1, lineBox.y2 - distance));\n }\n };\n var RadarNumericAxis = NumericAxis.extend({\n radarMajorGridLinePositions: function () {\n return this.getTickPositions(this.options.majorUnit);\n },\n radarMinorGridLinePositions: function () {\n var axis = this, options = axis.options, minorSkipStep = 0;\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return axis.getTickPositions(options.minorUnit, minorSkipStep);\n },\n axisType: function () {\n return NumericAxis;\n }\n });\n deepExtend(RadarNumericAxis.fn, RadarNumericAxisMixin);\n var RadarLogarithmicAxis = LogarithmicAxis.extend({\n radarMajorGridLinePositions: function () {\n var axis = this, positions = [];\n axis.traverseMajorTicksPositions(function (position) {\n positions.push(position);\n }, axis.options.majorGridLines);\n return positions;\n },\n radarMinorGridLinePositions: function () {\n var axis = this, positions = [];\n axis.traverseMinorTicksPositions(function (position) {\n positions.push(position);\n }, axis.options.minorGridLines);\n return positions;\n },\n axisType: function () {\n return LogarithmicAxis;\n }\n });\n deepExtend(RadarLogarithmicAxis.fn, RadarNumericAxisMixin);\n var PolarAxis = Axis.extend({\n init: function (options) {\n var axis = this;\n Axis.fn.init.call(axis, options);\n options = axis.options;\n options.minorUnit = options.minorUnit || axis.options.majorUnit / 2;\n },\n options: {\n type: 'polar',\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: { margin: getSpacing(10) },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: { color: '#aaa' }\n },\n getDivisions: function (stepValue) {\n return NumericAxis.fn.getDivisions.call(this, stepValue) - 1;\n },\n reflow: function (box) {\n this.box = box;\n this.reflowLabels();\n },\n reflowLabels: function () {\n var axis = this, options = axis.options, labelOptions = options.labels, skip = labelOptions.skip || 0, step = labelOptions.step || 1, measureBox = new Box2D(), divs = axis.intervals(options.majorUnit, skip, step), labels = axis.labels, labelBox, i;\n for (i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n labelBox = labels[i].box;\n labels[i].reflow(axis.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n },\n lineBox: function () {\n return this.box;\n },\n intervals: function (size, skip, step, skipAngles) {\n var axis = this, options = axis.options, divisions = axis.getDivisions(size), min = options.min, current, divs = [], i;\n skip = skip || 0;\n step = step || 1;\n for (i = skip; i < divisions; i += step) {\n current = (360 + min + i * size) % 360;\n if (!(skipAngles && dataviz.inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n return divs;\n },\n majorIntervals: function () {\n return this.intervals(this.options.majorUnit);\n },\n minorIntervals: function () {\n return this.intervals(this.options.minorUnit);\n },\n intervalAngle: function (i) {\n return (540 - i - this.options.startAngle) % 360;\n },\n majorAngles: RadarCategoryAxis.fn.majorAngles,\n createLine: function () {\n return [];\n },\n majorGridLineAngles: function (altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n },\n minorGridLineAngles: function (altAxis, skipMajor) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n return this.gridLineAngles(altAxis, this.options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n },\n createPlotBands: RadarCategoryAxis.fn.createPlotBands,\n plotBandSlot: function (band) {\n return this.getSlot(band.from, band.to);\n },\n getSlot: function (a, b) {\n var axis = this, options = axis.options, start = options.startAngle, box = axis.box, tmp;\n a = limitValue(a, options.min, options.max);\n b = limitValue(b || a, a, options.max);\n if (options.reverse) {\n a *= -1;\n b *= -1;\n }\n a = (540 - a - start) % 360;\n b = (540 - b - start) % 360;\n if (b < a) {\n tmp = a;\n a = b;\n b = tmp;\n }\n return new Ring(box.center(), 0, box.height() / 2, a, b - a);\n },\n slot: function (from, to) {\n var options = this.options;\n var start = 360 - options.startAngle;\n var slot = this.getSlot(from, to);\n var startAngle;\n var endAngle;\n var min;\n var max;\n if (!dataviz.util.defined(to)) {\n to = from;\n }\n min = math.min(from, to);\n max = math.max(from, to);\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n return new geom.Arc([\n slot.c.x,\n slot.c.y\n ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.r,\n radiusY: slot.r\n });\n },\n getValue: function (point) {\n var axis = this, options = axis.options, center = axis.box.center(), dx = point.x - center.x, dy = point.y - center.y, theta = math.round(math.atan2(dy, dx) / DEG_TO_RAD), start = options.startAngle;\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n return (theta + start + 360) % 360;\n },\n valueRange: function () {\n return {\n min: 0,\n max: math.PI * 2\n };\n },\n range: NumericAxis.fn.range,\n labelsCount: NumericAxis.fn.labelsCount,\n createAxisLabel: NumericAxis.fn.createAxisLabel\n });\n deepExtend(PolarAxis.fn, GridLinesMixin);\n var RadarClusterLayout = ChartElement.extend({\n options: {\n gap: 1,\n spacing: 0\n },\n reflow: function (sector) {\n var cluster = this, options = cluster.options, children = cluster.children, gap = options.gap, spacing = options.spacing, count = children.length, slots = count + gap + spacing * (count - 1), slotAngle = sector.angle / slots, slotSector, angle = sector.startAngle + slotAngle * (gap / 2), i;\n for (i = 0; i < count; i++) {\n slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n if (children[i].sector) {\n slotSector.r = children[i].sector.r;\n }\n children[i].reflow(slotSector);\n children[i].sector = slotSector;\n angle += slotAngle + slotAngle * spacing;\n }\n }\n });\n var RadarStackLayout = ChartElement.extend({\n reflow: function (sector) {\n var stack = this, reverse = stack.options.isReversed, children = stack.children, childrenCount = children.length, childSector, i, first = reverse ? childrenCount - 1 : 0, step = reverse ? -1 : 1;\n stack.box = new Box2D();\n for (i = first; i >= 0 && i < childrenCount; i += step) {\n childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n }\n });\n var RadarSegment = DonutSegment.extend({\n init: function (value, options) {\n DonutSegment.fn.init.call(this, value, null, options);\n },\n options: {\n overlay: { gradient: null },\n labels: { distance: 10 }\n }\n });\n var RadarBarChart = BarChart.extend({\n pointType: function () {\n return RadarSegment;\n },\n clusterType: function () {\n return RadarClusterLayout;\n },\n stackType: function () {\n return RadarStackLayout;\n },\n categorySlot: function (categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n },\n pointSlot: function (categorySlot, valueSlot) {\n var slot = categorySlot.clone(), y = categorySlot.c.y;\n slot.r = y - valueSlot.y1;\n slot.ir = y - valueSlot.y2;\n return slot;\n },\n reflow: CategoricalChart.fn.reflow,\n reflowPoint: function (point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n },\n options: {\n clip: false,\n animation: { type: 'pie' }\n },\n createAnimation: function () {\n this.options.animation.center = this.box.toRect().center();\n BarChart.fn.createAnimation.call(this);\n }\n });\n var RadarLineChart = LineChart.extend({\n options: { clip: false },\n pointSlot: function (categorySlot, valueSlot) {\n var valueRadius = categorySlot.c.y - valueSlot.y1, slot = Point2D.onCircle(categorySlot.c, categorySlot.middle(), valueRadius);\n return new Box2D(slot.x, slot.y, slot.x, slot.y);\n },\n createSegment: function (linePoints, currentSeries, seriesIx) {\n var segment, pointType, style = currentSeries.style;\n if (style == SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n segment = new pointType(linePoints, currentSeries, seriesIx);\n if (linePoints.length === currentSeries.data.length) {\n segment.options.closed = true;\n }\n return segment;\n }\n });\n var RadarAreaSegment = AreaSegment.extend({\n points: function () {\n return LineSegment.fn.points.call(this, this.stackPoints);\n }\n });\n var SplineRadarAreaSegment = SplineAreaSegment.extend({ closeFill: $.noop });\n var RadarAreaChart = RadarLineChart.extend({\n createSegment: function (linePoints, currentSeries, seriesIx, prevSegment) {\n var chart = this, options = chart.options, isStacked = options.isStacked, stackPoints, segment, style = (currentSeries.line || {}).style;\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, prevSegment, isStacked, currentSeries, seriesIx);\n segment.options.closed = true;\n } else {\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0).reverse();\n }\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, stackPoints, currentSeries, seriesIx);\n }\n return segment;\n },\n seriesMissingValues: function (series) {\n return series.missingValues || ZERO;\n }\n });\n var PolarScatterChart = ScatterChart.extend({\n pointSlot: function (slotX, slotY) {\n var valueRadius = slotX.c.y - slotY.y1, slot = Point2D.onCircle(slotX.c, slotX.startAngle, valueRadius);\n return new Box2D(slot.x, slot.y, slot.x, slot.y);\n },\n options: { clip: false }\n });\n var PolarLineChart = ScatterLineChart.extend({\n pointSlot: PolarScatterChart.fn.pointSlot,\n options: { clip: false }\n });\n var PolarAreaSegment = AreaSegment.extend({\n points: function () {\n var segment = this, chart = segment.parent, plotArea = chart.plotArea, polarAxis = plotArea.polarAxis, center = polarAxis.box.center(), stackPoints = segment.stackPoints, points = LineSegment.fn.points.call(segment, stackPoints);\n points.unshift([\n center.x,\n center.y\n ]);\n points.push([\n center.x,\n center.y\n ]);\n return points;\n }\n });\n var SplinePolarAreaSegment = SplineAreaSegment.extend({\n closeFill: function (fillPath) {\n var center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n },\n _polarAxisCenter: function () {\n var chart = this.parent, plotArea = chart.plotArea, polarAxis = plotArea.polarAxis, center = polarAxis.box.center();\n return center;\n },\n strokeSegments: function () {\n var segments = this._strokeSegments;\n if (!segments) {\n var center = this._polarAxisCenter(), curveProcessor = new CurveProcessor(false), linePoints = LineSegment.fn.points.call(this);\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n return segments;\n }\n });\n var PolarAreaChart = PolarLineChart.extend({\n createSegment: function (linePoints, currentSeries, seriesIx) {\n var segment, style = (currentSeries.line || {}).style;\n if (style == SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, null, false, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, [], currentSeries, seriesIx);\n }\n return segment;\n },\n createMissingValue: function (value, missingValues) {\n var missingValue;\n if (dataviz.hasValue(value.x) && missingValues != INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues == ZERO) {\n missingValue.y = 0;\n }\n }\n return missingValue;\n },\n seriesMissingValues: function (series) {\n return series.missingValues || ZERO;\n },\n _hasMissingValuesGap: function () {\n var series = this.options.series;\n for (var idx = 0; idx < series.length; idx++) {\n if (this.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n },\n sortPoints: function (points) {\n var value, point;\n points.sort(xComparer);\n if (this._hasMissingValuesGap()) {\n for (var idx = 0; idx < points.length; idx++) {\n point = points[idx];\n if (point) {\n value = point.value;\n if (!dataviz.hasValue(value.y) && this.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n return points;\n }\n });\n var PolarPlotAreaBase = PlotAreaBase.extend({\n init: function (series, options) {\n var plotArea = this;\n plotArea.valueAxisRangeTracker = new AxisGroupRangeTracker();\n PlotAreaBase.fn.init.call(plotArea, series, options);\n },\n render: function () {\n var plotArea = this;\n plotArea.addToLegend(plotArea.series);\n plotArea.createPolarAxis();\n plotArea.createCharts();\n plotArea.createValueAxis();\n },\n alignAxes: function () {\n var axis = this.valueAxis;\n var range = axis.range();\n var crossingValue = axis.options.reverse ? range.max : range.min;\n var slot = axis.getSlot(crossingValue);\n var center = this.polarAxis.getSlot(0).c;\n var axisBox = axis.box.translate(center.x - slot.x1, center.y - slot.y1);\n axis.reflow(axisBox);\n },\n createValueAxis: function () {\n var plotArea = this, tracker = plotArea.valueAxisRangeTracker, defaultRange = tracker.query(), range, valueAxis, axisOptions = plotArea.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n }), axisType, axisDefaultRange;\n if (axisOptions.type === LOGARITHMIC) {\n axisType = RadarLogarithmicAxis;\n axisDefaultRange = {\n min: 0.1,\n max: 1\n };\n } else {\n axisType = RadarNumericAxis;\n axisDefaultRange = {\n min: 0,\n max: 1\n };\n }\n range = tracker.query(name) || defaultRange || axisDefaultRange;\n if (range && defaultRange) {\n range.min = math.min(range.min, defaultRange.min);\n range.max = math.max(range.max, defaultRange.max);\n }\n valueAxis = new axisType(range.min, range.max, axisOptions);\n plotArea.valueAxis = valueAxis;\n plotArea.appendAxis(valueAxis);\n },\n reflowAxes: function () {\n var plotArea = this, options = plotArea.options.plotArea, valueAxis = plotArea.valueAxis, polarAxis = plotArea.polarAxis, box = plotArea.box, defaultPadding = math.min(box.width(), box.height()) * DEFAULT_PADDING, padding = getSpacing(options.padding || {}, defaultPadding), axisBox = box.clone().unpad(padding), valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n var heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n plotArea.axisBox = axisBox;\n plotArea.alignAxes(axisBox);\n },\n backgroundBox: function () {\n return this.box;\n }\n });\n var RadarPlotArea = PolarPlotAreaBase.extend({\n options: {\n categoryAxis: { categories: [] },\n valueAxis: {}\n },\n createPolarAxis: function () {\n var plotArea = this, categoryAxis;\n categoryAxis = new RadarCategoryAxis(plotArea.options.categoryAxis);\n plotArea.polarAxis = categoryAxis;\n plotArea.categoryAxis = categoryAxis;\n plotArea.appendAxis(categoryAxis);\n plotArea.aggregateCategories();\n },\n valueAxisOptions: function (defaults) {\n var plotArea = this;\n if (plotArea._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n if (plotArea._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: 'P0' }\n });\n }\n return deepExtend(defaults, plotArea.options.valueAxis);\n },\n appendChart: CategoricalPlotArea.fn.appendChart,\n aggregateSeries: CategoricalPlotArea.fn.aggregateSeries,\n aggregateCategories: function () {\n CategoricalPlotArea.fn.aggregateCategories.call(this, this.panes);\n },\n filterSeries: function (currentSeries) {\n return currentSeries;\n },\n createCharts: function () {\n var plotArea = this, series = plotArea.filterVisibleSeries(plotArea.series), pane = plotArea.panes[0];\n plotArea.createAreaChart(filterSeriesByType(series, [RADAR_AREA]), pane);\n plotArea.createLineChart(filterSeriesByType(series, [RADAR_LINE]), pane);\n plotArea.createBarChart(filterSeriesByType(series, [RADAR_COLUMN]), pane);\n },\n chartOptions: function (series) {\n var options = { series: series };\n var firstSeries = series[0];\n if (firstSeries) {\n var filteredSeries = this.filterVisibleSeries(series);\n var stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === '100%' && filteredSeries.length > 1;\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n return options;\n },\n createAreaChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n },\n createLineChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n },\n createBarChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var firstSeries = series[0];\n var options = this.chartOptions(series);\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n var barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n this._hasBarCharts = true;\n },\n seriesCategoryAxis: function () {\n return this.categoryAxis;\n },\n _dispatchEvent: function (chart, e, eventType) {\n var plotArea = this, coords = chart._eventCoordinates(e), point = new Point2D(coords.x, coords.y), category, value;\n category = plotArea.categoryAxis.getCategory(point);\n value = plotArea.valueAxis.getValue(point);\n if (category !== null && value !== null) {\n chart.trigger(eventType, {\n element: eventTargetElement(e),\n category: category,\n value: value\n });\n }\n },\n createCrosshairs: $.noop\n });\n deepExtend(RadarPlotArea.fn, PlotAreaEventsMixin);\n var PolarPlotArea = PolarPlotAreaBase.extend({\n options: {\n xAxis: {},\n yAxis: {}\n },\n createPolarAxis: function () {\n var plotArea = this, polarAxis;\n polarAxis = new PolarAxis(plotArea.options.xAxis);\n plotArea.polarAxis = polarAxis;\n plotArea.axisX = polarAxis;\n plotArea.appendAxis(polarAxis);\n },\n valueAxisOptions: function (defaults) {\n var plotArea = this;\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, plotArea.options.yAxis);\n },\n createValueAxis: function () {\n var plotArea = this;\n PolarPlotAreaBase.fn.createValueAxis.call(plotArea);\n plotArea.axisY = plotArea.valueAxis;\n },\n appendChart: function (chart, pane) {\n var plotArea = this;\n plotArea.valueAxisRangeTracker.update(chart.yAxisRanges);\n PlotAreaBase.fn.appendChart.call(plotArea, chart, pane);\n },\n createCharts: function () {\n var plotArea = this, series = plotArea.filterVisibleSeries(plotArea.series), pane = plotArea.panes[0];\n plotArea.createLineChart(filterSeriesByType(series, [POLAR_LINE]), pane);\n plotArea.createScatterChart(filterSeriesByType(series, [POLAR_SCATTER]), pane);\n plotArea.createAreaChart(filterSeriesByType(series, [POLAR_AREA]), pane);\n },\n createLineChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var plotArea = this, lineChart = new PolarLineChart(plotArea, { series: series });\n plotArea.appendChart(lineChart, pane);\n },\n createScatterChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var plotArea = this, scatterChart = new PolarScatterChart(plotArea, { series: series });\n plotArea.appendChart(scatterChart, pane);\n },\n createAreaChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var plotArea = this, areaChart = new PolarAreaChart(plotArea, { series: series });\n plotArea.appendChart(areaChart, pane);\n },\n _dispatchEvent: function (chart, e, eventType) {\n var plotArea = this, coords = chart._eventCoordinates(e), point = new Point2D(coords.x, coords.y), xValue, yValue;\n xValue = plotArea.axisX.getValue(point);\n yValue = plotArea.axisY.getValue(point);\n if (xValue !== null && yValue !== null) {\n chart.trigger(eventType, {\n element: eventTargetElement(e),\n x: xValue,\n y: yValue\n });\n }\n },\n createCrosshairs: $.noop\n });\n deepExtend(PolarPlotArea.fn, PlotAreaEventsMixin);\n function xComparer(a, b) {\n return a.value.x - b.value.x;\n }\n function angularDistance(a, b) {\n return 180 - math.abs(math.abs(a - b) - 180);\n }\n PlotAreaFactory.current.register(PolarPlotArea, POLAR_CHARTS);\n PlotAreaFactory.current.register(RadarPlotArea, RADAR_CHARTS);\n SeriesBinder.current.register(POLAR_CHARTS, [\n X,\n Y\n ], ['color']);\n SeriesBinder.current.register(RADAR_CHARTS, ['value'], ['color']);\n dataviz.DefaultAggregates.current.register(RADAR_CHARTS, {\n value: 'max',\n color: 'first'\n });\n deepExtend(dataviz, {\n PolarAreaChart: PolarAreaChart,\n PolarAxis: PolarAxis,\n PolarLineChart: PolarLineChart,\n PolarPlotArea: PolarPlotArea,\n RadarAreaChart: RadarAreaChart,\n RadarBarChart: RadarBarChart,\n RadarCategoryAxis: RadarCategoryAxis,\n RadarClusterLayout: RadarClusterLayout,\n RadarLineChart: RadarLineChart,\n RadarNumericAxis: RadarNumericAxis,\n RadarPlotArea: RadarPlotArea,\n SplinePolarAreaSegment: SplinePolarAreaSegment,\n SplineRadarAreaSegment: SplineRadarAreaSegment,\n RadarStackLayout: RadarStackLayout\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/"}