{"version":3,"sources":["kendo.dataviz.stock.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","ClonedObject","clone","obj","prototype","NavigatorHint","Observable","proxy","filterSeriesByType","Chart","ui","Selection","addDuration","lteDateIndex","toDate","toTime","AUTO_CATEGORY_WIDTH","CHANGE","CSS_PREFIX","DRAG","DRAG_END","NAVIGATOR_PANE","NAVIGATOR_AXIS","EQUALLY_SPACED_SERIES","ZOOM_ACCELERATION","ZOOM","ZOOM_END","StockChart","userOptions","addClass","fn","call","_applyDefaults","themeOptions","chart","DEFAULT_WIDTH","stockDefaults","seriesDefaults","categoryField","dateField","axisDefaults","categoryAxis","majorGridLines","visible","labels","step","majorTicks","maxDateGroups","Navigator","setup","setOptions","_destroyNavigator","_initDataSource","filter","dummyAxis","dataSource","hasServerFiltering","serverFiltering","mainAxis","concat","naviOptions","navigator","select","hasSelect","from","to","DateCategoryAxis","baseUnit","categories","buildFilter","range","type","justified","valueAxis","narrowRange","format","markers","tooltip","line","hint","legend","_resize","t","transitions","_fullRedraw","_redraw","_navigator","_dirty","redrawSlaves","series","seriesCount","grep","s","dirty","_seriesCount","_setRange","_initSelection","_onDataChanged","_dataBound","_bindCategoryAxis","axis","data","axisIx","currentAxis","categoryAxes","axesLength","pane","_trackSharedTooltip","coords","plotArea","_plotArea","paneByPoint","_unsetActivePoint","destroy","navi","bind","_drag","_dragEnd","_zoom","_zoomEnd","autoBind","dsOptions","_dataChangedHandler","DataSource","fetch","seriesIx","currentSeries","naviCategories","seriesLength","view","_isBindable","_model","redraw","unbind","_dataChangeHandler","selection","_redrawSelf","axisClone","groups","wrapper","remove","selectStart","_selectStart","_select","selectEnd","_selectEnd","mousewheel","zoom","_createPlotArea","namedCategoryAxes","filterAxes","silent","panes","slavePanes","srcSeries","duration","_eventCoordinates","originalEvent","navigatorAxis","naviRange","datesRange","inNavigator","containsPoint","axisRanges","_liveDrag","set","showHint","filterDataSource","hide","support","isTouch","touch","browser","isFirefox","mozilla","isOldIE","msie","version","readSelection","src","dst","allAxes","axisOptions","chartDataSource","baseUnitStep","fromIx","toIx","delta","preventDefault","abs","expand","scaleRange","show","backgroundBox","__navi","paneOptions","attachAxes","attachSeries","valueAxes","equallySpacedSeries","justifyAxis","base","roundToBaseUnit","_collapse","autoBaseUnitSteps","minutes","hours","days","weeks","months","years","_overlap","user","title","plotBands","mirror","navigatorSeries","seriesColors","defaults","visibleInLegend","operator","container","chartPadding","top","parseInt","css","appendTo","hideDelay","bbox","hintTemplate","middle","find","scroll","scrollWidth","minPos","center","maxPos","posRange","scale","offset","_hideTimeout","clearTimeout","_visible","stop","html","_outerWidth","y1","setTimeout","fadeOut","plugin"],"mappings":"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","file":"kendo.dataviz.stock.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.stock', ['kendo.dataviz.chart'], f);\n}(function () {\n var __meta__ = {\n id: 'dataviz.stockchart',\n name: 'StockChart',\n category: 'dataviz',\n description: 'StockChart widget and associated financial series.',\n depends: ['dataviz.chart']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Class = kendo.Class, Observable = kendo.Observable, deepExtend = kendo.deepExtend, math = Math, proxy = $.proxy, util = kendo.util, last = util.last, renderTemplate = util.renderTemplate, dataviz = kendo.dataviz, defined = util.defined, filterSeriesByType = dataviz.filterSeriesByType, template = kendo.template, Chart = dataviz.ui.Chart, Selection = dataviz.Selection, addDuration = dataviz.addDuration, limitValue = util.limitValue, lteDateIndex = dataviz.lteDateIndex, toDate = dataviz.toDate, toTime = dataviz.toTime;\n var AUTO_CATEGORY_WIDTH = 28, CHANGE = 'change', CSS_PREFIX = 'k-', DRAG = 'drag', DRAG_END = 'dragEnd', NAVIGATOR_PANE = '_navigator', NAVIGATOR_AXIS = NAVIGATOR_PANE, EQUALLY_SPACED_SERIES = dataviz.EQUALLY_SPACED_SERIES, ZOOM_ACCELERATION = 3, ZOOM = 'zoom', ZOOM_END = 'zoomEnd';\n var StockChart = Chart.extend({\n init: function (element, userOptions) {\n $(element).addClass(CSS_PREFIX + 'chart');\n Chart.fn.init.call(this, element, userOptions);\n },\n _applyDefaults: function (options, themeOptions) {\n var chart = this, width = chart.element.width() || dataviz.DEFAULT_WIDTH;\n var stockDefaults = {\n seriesDefaults: { categoryField: options.dateField },\n axisDefaults: {\n categoryAxis: {\n name: 'default',\n majorGridLines: { visible: false },\n labels: { step: 2 },\n majorTicks: { visible: false },\n maxDateGroups: math.floor(width / AUTO_CATEGORY_WIDTH)\n }\n }\n };\n if (themeOptions) {\n themeOptions = deepExtend({}, themeOptions, stockDefaults);\n }\n Navigator.setup(options, themeOptions);\n Chart.fn._applyDefaults.call(chart, options, themeOptions);\n },\n setOptions: function (options) {\n this._destroyNavigator();\n Chart.fn.setOptions.call(this, options);\n },\n _initDataSource: function (userOptions) {\n var options = userOptions || {}, dataSource = options.dataSource, hasServerFiltering = dataSource && dataSource.serverFiltering, mainAxis = [].concat(options.categoryAxis)[0], naviOptions = options.navigator || {}, select = naviOptions.select, hasSelect = select && select.from && select.to, filter, dummyAxis;\n if (hasServerFiltering && hasSelect) {\n filter = [].concat(dataSource.filter || []);\n dummyAxis = new dataviz.DateCategoryAxis(deepExtend({ baseUnit: 'fit' }, mainAxis, {\n categories: [\n select.from,\n select.to\n ]\n }));\n dataSource.filter = Navigator.buildFilter(dummyAxis.range().min, select.to).concat(filter);\n }\n Chart.fn._initDataSource.call(this, userOptions);\n },\n options: {\n name: 'StockChart',\n dateField: 'date',\n axisDefaults: {\n categoryAxis: {\n type: 'date',\n baseUnit: 'fit',\n justified: true\n },\n valueAxis: {\n narrowRange: true,\n labels: { format: 'C' }\n }\n },\n navigator: {\n select: {},\n seriesDefaults: {\n markers: { visible: false },\n tooltip: {\n visible: true,\n template: '#= kendo.toString(category, \\'d\\') #'\n },\n line: { width: 2 }\n },\n hint: {},\n visible: true\n },\n tooltip: { visible: true },\n legend: { visible: false }\n },\n _resize: function () {\n var t = this.options.transitions;\n this.options.transitions = false;\n this._fullRedraw();\n this.options.transitions = t;\n },\n _redraw: function () {\n var chart = this, navigator = chart._navigator;\n if (!this._dirty() && navigator && navigator.dataSource) {\n navigator.redrawSlaves();\n } else {\n chart._fullRedraw();\n }\n },\n _dirty: function () {\n var options = this.options;\n var series = [].concat(options.series, options.navigator.series);\n var seriesCount = $.grep(series, function (s) {\n return s && s.visible;\n }).length;\n var dirty = this._seriesCount !== seriesCount;\n this._seriesCount = seriesCount;\n return dirty;\n },\n _fullRedraw: function () {\n var chart = this, navigator = chart._navigator;\n if (!navigator) {\n navigator = chart._navigator = chart.navigator = new Navigator(chart);\n }\n navigator._setRange();\n Chart.fn._redraw.call(chart);\n navigator._initSelection();\n },\n _onDataChanged: function () {\n var chart = this;\n Chart.fn._onDataChanged.call(chart);\n chart._dataBound = true;\n },\n _bindCategoryAxis: function (axis, data, axisIx) {\n var chart = this, categoryAxes = chart.options.categoryAxis, axesLength = categoryAxes.length, currentAxis;\n Chart.fn._bindCategoryAxis.apply(this, arguments);\n if (axis.name === NAVIGATOR_AXIS) {\n while (axisIx < axesLength) {\n currentAxis = categoryAxes[axisIx++];\n if (currentAxis.pane == NAVIGATOR_PANE) {\n currentAxis.categories = axis.categories;\n }\n }\n }\n },\n _trackSharedTooltip: function (coords) {\n var chart = this, plotArea = chart._plotArea, pane = plotArea.paneByPoint(coords);\n if (pane && pane.options.name === NAVIGATOR_PANE) {\n chart._unsetActivePoint();\n } else {\n Chart.fn._trackSharedTooltip.call(chart, coords);\n }\n },\n _destroyNavigator: function () {\n this._navigator.destroy();\n this._navigator = null;\n },\n destroy: function () {\n this._destroyNavigator();\n Chart.fn.destroy.call(this);\n }\n });\n var Navigator = Observable.extend({\n init: function (chart) {\n var navi = this;\n navi.chart = chart;\n navi.options = deepExtend({}, navi.options, chart.options.navigator);\n navi._initDataSource();\n if (!defined(navi.options.hint.visible)) {\n navi.options.hint.visible = navi.options.visible;\n }\n chart.bind(DRAG, proxy(navi._drag, navi));\n chart.bind(DRAG_END, proxy(navi._dragEnd, navi));\n chart.bind(ZOOM, proxy(navi._zoom, navi));\n chart.bind(ZOOM_END, proxy(navi._zoomEnd, navi));\n },\n options: {},\n _initDataSource: function () {\n var navi = this, options = navi.options, autoBind = options.autoBind, dsOptions = options.dataSource;\n if (!defined(autoBind)) {\n autoBind = navi.chart.options.autoBind;\n }\n navi._dataChangedHandler = proxy(navi._onDataChanged, navi);\n if (dsOptions) {\n navi.dataSource = kendo.data.DataSource.create(dsOptions).bind(CHANGE, navi._dataChangedHandler);\n if (autoBind) {\n navi.dataSource.fetch();\n }\n }\n },\n _onDataChanged: function () {\n var navi = this, chart = navi.chart, series = chart.options.series, seriesIx, seriesLength = series.length, categoryAxes = chart.options.categoryAxis, axisIx, axesLength = categoryAxes.length, data = navi.dataSource.view(), currentSeries, currentAxis, naviCategories;\n for (seriesIx = 0; seriesIx < seriesLength; seriesIx++) {\n currentSeries = series[seriesIx];\n if (currentSeries.axis == NAVIGATOR_AXIS && chart._isBindable(currentSeries)) {\n currentSeries.data = data;\n }\n }\n for (axisIx = 0; axisIx < axesLength; axisIx++) {\n currentAxis = categoryAxes[axisIx];\n if (currentAxis.pane == NAVIGATOR_PANE) {\n if (currentAxis.name == NAVIGATOR_AXIS) {\n chart._bindCategoryAxis(currentAxis, data, axisIx);\n naviCategories = currentAxis.categories;\n } else {\n currentAxis.categories = naviCategories;\n }\n }\n }\n if (chart._model) {\n navi.redraw();\n navi._setRange();\n if (!chart.options.dataSource || chart.options.dataSource && chart._dataBound) {\n navi.redrawSlaves();\n }\n }\n },\n destroy: function () {\n var navi = this, dataSource = navi.dataSource;\n if (dataSource) {\n dataSource.unbind(CHANGE, navi._dataChangeHandler);\n }\n if (navi.selection) {\n navi.selection.destroy();\n }\n },\n redraw: function () {\n this._redrawSelf();\n this._initSelection();\n },\n _initSelection: function () {\n var navi = this, chart = navi.chart, options = navi.options, axis = navi.mainAxis(), axisClone = clone(axis), range = axis.range(), min = range.min, max = range.max, groups = axis.options.categories, select = navi.options.select, selection = navi.selection, from = toDate(select.from), to = toDate(select.to);\n if (groups.length === 0) {\n return;\n }\n if (selection) {\n selection.destroy();\n selection.wrapper.remove();\n }\n axisClone.box = axis.box;\n selection = navi.selection = new Selection(chart, axisClone, {\n min: min,\n max: max,\n from: from || min,\n to: to || max,\n selectStart: $.proxy(navi._selectStart, navi),\n select: $.proxy(navi._select, navi),\n selectEnd: $.proxy(navi._selectEnd, navi),\n mousewheel: util.valueOrDefault(select.mousewheel, { zoom: 'left' }),\n visible: options.visible\n });\n if (options.hint.visible) {\n navi.hint = new NavigatorHint(chart.element, {\n min: min,\n max: max,\n template: options.hint.template,\n format: options.hint.format\n });\n }\n },\n _setRange: function () {\n var plotArea = this.chart._createPlotArea(true);\n var axis = plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n var range = axis.range();\n var min = range.min;\n var max = range.max;\n var select = this.options.select || {};\n var from = toDate(select.from) || min;\n if (from < min) {\n from = min;\n }\n var to = toDate(select.to) || max;\n if (to > max) {\n to = max;\n }\n this.options.select = deepExtend({}, select, {\n from: from,\n to: to\n });\n this.filterAxes();\n },\n _redrawSelf: function (silent) {\n var plotArea = this.chart._plotArea;\n if (plotArea) {\n plotArea.redraw(last(plotArea.panes), silent);\n }\n },\n redrawSlaves: function () {\n var navi = this, chart = navi.chart, plotArea = chart._plotArea, slavePanes = plotArea.panes.slice(0, -1);\n plotArea.srcSeries = chart.options.series;\n plotArea.redraw(slavePanes);\n },\n _drag: function (e) {\n var navi = this, chart = navi.chart, coords = chart._eventCoordinates(e.originalEvent), navigatorAxis = navi.mainAxis(), naviRange = navigatorAxis.datesRange(), inNavigator = navigatorAxis.pane.box.containsPoint(coords), axis = chart._plotArea.categoryAxis, range = e.axisRanges[axis.options.name], select = navi.options.select, selection = navi.selection, duration, from, to;\n if (!range || inNavigator || !selection) {\n return;\n }\n if (select.from && select.to) {\n duration = toTime(select.to) - toTime(select.from);\n } else {\n duration = toTime(selection.options.to) - toTime(selection.options.from);\n }\n from = toDate(limitValue(toTime(range.min), naviRange.min, toTime(naviRange.max) - duration));\n to = toDate(limitValue(toTime(from) + duration, toTime(naviRange.min) + duration, naviRange.max));\n navi.options.select = {\n from: from,\n to: to\n };\n if (navi._liveDrag()) {\n navi.filterAxes();\n navi.redrawSlaves();\n }\n selection.set(from, to);\n navi.showHint(from, to);\n },\n _dragEnd: function () {\n var navi = this;\n navi.filterAxes();\n navi.filterDataSource();\n navi.redrawSlaves();\n if (navi.hint) {\n navi.hint.hide();\n }\n },\n _liveDrag: function () {\n var support = kendo.support, isTouch = support.touch, browser = support.browser, isFirefox = browser.mozilla, isOldIE = browser.msie && browser.version < 9;\n return !isTouch && !isFirefox && !isOldIE;\n },\n readSelection: function () {\n var navi = this, selection = navi.selection, src = selection.options, dst = navi.options.select;\n dst.from = src.from;\n dst.to = src.to;\n },\n filterAxes: function () {\n var navi = this, select = navi.options.select || {}, chart = navi.chart, allAxes = chart.options.categoryAxis, from = select.from, to = select.to, i, axis;\n for (i = 0; i < allAxes.length; i++) {\n axis = allAxes[i];\n if (axis.pane !== NAVIGATOR_PANE) {\n axis.min = toDate(from);\n axis.max = toDate(to);\n }\n }\n },\n filterDataSource: function () {\n var navi = this, select = navi.options.select || {}, chart = navi.chart, chartDataSource = chart.dataSource, hasServerFiltering = chartDataSource && chartDataSource.options.serverFiltering, axisOptions;\n if (navi.dataSource && hasServerFiltering) {\n axisOptions = new dataviz.DateCategoryAxis(deepExtend({ baseUnit: 'fit' }, chart.options.categoryAxis[0], {\n categories: [\n select.from,\n select.to\n ]\n })).options;\n chartDataSource.filter(Navigator.buildFilter(addDuration(axisOptions.min, -axisOptions.baseUnitStep, axisOptions.baseUnit), addDuration(axisOptions.max, axisOptions.baseUnitStep, axisOptions.baseUnit)));\n }\n },\n _zoom: function (e) {\n var navi = this, chart = navi.chart, delta = e.delta, axis = chart._plotArea.categoryAxis, select = navi.options.select, selection = navi.selection, categories = navi.mainAxis().options.categories, fromIx, toIx;\n if (!selection) {\n return;\n }\n fromIx = lteDateIndex(selection.options.from, categories);\n toIx = lteDateIndex(selection.options.to, categories);\n e.originalEvent.preventDefault();\n if (math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n if (toIx - fromIx > 1) {\n selection.expand(delta);\n navi.readSelection();\n } else {\n axis.options.min = select.from;\n select.from = axis.scaleRange(-e.delta).min;\n }\n if (!kendo.support.touch) {\n navi.filterAxes();\n navi.redrawSlaves();\n }\n selection.set(select.from, select.to);\n navi.showHint(navi.options.select.from, navi.options.select.to);\n },\n _zoomEnd: function (e) {\n this._dragEnd(e);\n },\n showHint: function (from, to) {\n var navi = this, chart = navi.chart, plotArea = chart._plotArea;\n if (navi.hint) {\n navi.hint.show(from, to, plotArea.backgroundBox());\n }\n },\n _selectStart: function (e) {\n var chart = this.chart;\n chart._selectStart.call(chart, e);\n },\n _select: function (e) {\n var navi = this, chart = navi.chart;\n navi.showHint(e.from, e.to);\n chart._select.call(chart, e);\n },\n _selectEnd: function (e) {\n var navi = this, chart = navi.chart;\n if (navi.hint) {\n navi.hint.hide();\n }\n navi.readSelection();\n navi.filterAxes();\n navi.filterDataSource();\n navi.redrawSlaves();\n chart._selectEnd.call(chart, e);\n },\n mainAxis: function () {\n var plotArea = this.chart._plotArea;\n if (plotArea) {\n return plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n }\n },\n select: function (from, to) {\n var select = this.options.select;\n if (from && to) {\n select.from = toDate(from);\n select.to = toDate(to);\n this.filterAxes();\n this.filterDataSource();\n this.redrawSlaves();\n this.selection.set(from, to);\n }\n return {\n from: select.from,\n to: select.to\n };\n }\n });\n Navigator.setup = function (options, themeOptions) {\n options = options || {};\n themeOptions = themeOptions || {};\n if (options.__navi) {\n return;\n }\n options.__navi = true;\n var naviOptions = deepExtend({}, themeOptions.navigator, options.navigator), panes = options.panes = [].concat(options.panes), paneOptions = deepExtend({}, naviOptions.pane, { name: NAVIGATOR_PANE });\n if (!naviOptions.visible) {\n paneOptions.visible = false;\n paneOptions.height = 0.1;\n }\n panes.push(paneOptions);\n Navigator.attachAxes(options, naviOptions);\n Navigator.attachSeries(options, naviOptions, themeOptions);\n };\n Navigator.attachAxes = function (options, naviOptions) {\n var categoryAxes, valueAxes, series = naviOptions.series || [];\n categoryAxes = options.categoryAxis = [].concat(options.categoryAxis);\n valueAxes = options.valueAxis = [].concat(options.valueAxis);\n var equallySpacedSeries = filterSeriesByType(series, EQUALLY_SPACED_SERIES);\n var justifyAxis = equallySpacedSeries.length === 0;\n var base = deepExtend({\n type: 'date',\n pane: NAVIGATOR_PANE,\n roundToBaseUnit: !justifyAxis,\n justified: justifyAxis,\n _collapse: false,\n majorTicks: { visible: true },\n tooltip: { visible: false },\n labels: { step: 1 },\n autoBind: !naviOptions.dataSource,\n autoBaseUnitSteps: {\n minutes: [1],\n hours: [\n 1,\n 2\n ],\n days: [\n 1,\n 2\n ],\n weeks: [],\n months: [1],\n years: [1]\n },\n _overlap: true\n });\n var user = naviOptions.categoryAxis;\n categoryAxes.push(deepExtend({}, base, { maxDateGroups: 200 }, user, {\n name: NAVIGATOR_AXIS,\n title: null,\n baseUnit: 'fit',\n baseUnitStep: 'auto',\n labels: { visible: false },\n majorTicks: { visible: false }\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + '_labels',\n maxDateGroups: 20,\n baseUnitStep: 'auto',\n plotBands: [],\n autoBaseUnitSteps: { minutes: [] }\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + '_ticks',\n maxDateGroups: 200,\n majorTicks: { width: 0.5 },\n plotBands: [],\n title: null,\n labels: {\n visible: false,\n mirror: true\n }\n }));\n valueAxes.push(deepExtend({\n name: NAVIGATOR_AXIS,\n pane: NAVIGATOR_PANE,\n majorGridLines: { visible: false },\n visible: false\n }, naviOptions.valueAxis));\n };\n Navigator.attachSeries = function (options, naviOptions, themeOptions) {\n var series = options.series = options.series || [], navigatorSeries = [].concat(naviOptions.series || []), seriesColors = themeOptions.seriesColors, defaults = naviOptions.seriesDefaults, i;\n for (i = 0; i < navigatorSeries.length; i++) {\n series.push(deepExtend({\n color: seriesColors[i % seriesColors.length],\n categoryField: naviOptions.dateField,\n visibleInLegend: false,\n tooltip: { visible: false }\n }, defaults, navigatorSeries[i], {\n axis: NAVIGATOR_AXIS,\n categoryAxis: NAVIGATOR_AXIS,\n autoBind: !naviOptions.dataSource\n }));\n }\n };\n Navigator.buildFilter = function (from, to) {\n return [\n {\n field: 'Date',\n operator: 'gte',\n value: toDate(from)\n },\n {\n field: 'Date',\n operator: 'lt',\n value: toDate(to)\n }\n ];\n };\n var NavigatorHint = Class.extend({\n init: function (container, options) {\n var hint = this;\n hint.options = deepExtend({}, hint.options, options);\n hint.container = container;\n hint.chartPadding = {\n top: parseInt(container.css('paddingTop'), 10),\n left: parseInt(container.css('paddingLeft'), 10)\n };\n hint.template = hint.template;\n if (!hint.template) {\n hint.template = hint.template = renderTemplate('