{"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","Math","window","deepExtend","PI","Number","MAX_VALUE","now","Date","getTime","util","drawing","dataviz","amd","a1","a2","a3","$","zeroSize","width","height","baseline","measureText","style","measureBox","TextMetrics","current","measure","loadFonts","fonts","callback","promises","document","font","load","e","logToConsole","Promise","all","then","doc","Class","LRUCache","extend","init","_size","_length","_map","put","lru","entry","_head","_tail","newer","older","get","defaultMeasureBox","options","_cache","_initOptions","baselineMarkerSize","box","styleKey","cacheKey","cachedResult","baselineMarker","_baselineMarker","cloneNode","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","jQuery","encodeBase64","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","encodeUTF8","KEY_STR","inArray","ObserversMixin","observers","_observers","addObserver","element","removeObserver","index","splice","trigger","methodName","event","observer","idx","_suspended","optionsChange","geometryChange","suspend","resume","_observerField","field","mixins","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","floor","_navigator","Navigator","setup","_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","_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","filterAxes","unbind","_dataChangeHandler","selection","_redrawSelf","axisClone","groups","wrapper","remove","selectStart","_selectStart","_select","selectEnd","_selectEnd","mousewheel","zoom","_createPlotArea","namedCategoryAxes","axisOpt","baseUnitStep","silent","panes","slavePanes","slice","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","fromIx","toIx","delta","preventDefault","abs","expand","scaleRange","show","backgroundBox","paneOptions","attachAxes","attachSeries","valueAxes","equallySpacedSeries","justifyAxis","base","roundToBaseUnit","_collapse","autoBaseUnitSteps","minutes","hours","days","weeks","months","years","_overlap","user","plotBands","mirror","navigatorSeries","seriesColors","defaults","visibleInLegend","operator","container","chartPadding","top","parseInt","css","left","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 if (id in cache) {\n return cache[id];\n }\n return f.apply(this, arguments);\n };\n }\n function ucs2decode(string) {\n var output = [], counter = 0, length = string.length, value, extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 55296 && value <= 56319 && counter < length) {\n extra = string.charCodeAt(counter++);\n if ((extra & 64512) == 56320) {\n output.push(((value & 1023) << 10) + (extra & 1023) + 65536);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n }\n function ucs2encode(array) {\n return array.map(function (value) {\n var output = '';\n if (value > 65535) {\n value -= 65536;\n output += String.fromCharCode(value >>> 10 & 1023 | 55296);\n value = 56320 | value & 1023;\n }\n output += String.fromCharCode(value);\n return output;\n }).join('');\n }\n deepExtend(kendo, {\n util: {\n MAX_NUM: MAX_NUM,\n MIN_NUM: MIN_NUM,\n append: append,\n arrayLimits: arrayLimits,\n arrayMin: arrayMin,\n arrayMax: arrayMax,\n defined: defined,\n deg: deg,\n hashKey: hashKey,\n hashObject: hashObject,\n isNumber: isNumber,\n isTransparent: isTransparent,\n last: last,\n limitValue: limitValue,\n now: now,\n objectKey: objectKey,\n round: round,\n rad: rad,\n renderAttr: renderAttr,\n renderAllAttr: renderAllAttr,\n renderPos: renderPos,\n renderSize: renderSize,\n renderStyle: renderStyle,\n renderTemplate: renderTemplate,\n sparseArrayLimits: sparseArrayLimits,\n sparseArrayMin: sparseArrayMin,\n sparseArrayMax: sparseArrayMax,\n sqr: sqr,\n valueOrDefault: valueOrDefault,\n romanToArabic: romanToArabic,\n arabicToRoman: arabicToRoman,\n memoize: memoize,\n ucs2encode: ucs2encode,\n ucs2decode: ucs2decode\n }\n });\n kendo.drawing.util = kendo.util;\n kendo.dataviz.util = kendo.util;\n }());\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('util/text-metrics', [\n 'kendo.core',\n 'util/main'\n ], f);\n}(function () {\n (function ($) {\n var doc = document, kendo = window.kendo, Class = kendo.Class, util = kendo.util, defined = util.defined;\n var LRUCache = Class.extend({\n init: function (size) {\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n put: function (key, value) {\n var lru = this, map = lru._map, entry = {\n key: key,\n value: value\n };\n map[key] = entry;\n if (!lru._head) {\n lru._head = lru._tail = entry;\n } else {\n lru._tail.newer = entry;\n entry.older = lru._tail;\n lru._tail = entry;\n }\n if (lru._length >= lru._size) {\n map[lru._head.key] = null;\n lru._head = lru._head.newer;\n lru._head.older = null;\n } else {\n lru._length++;\n }\n },\n get: function (key) {\n var lru = this, entry = lru._map[key];\n if (entry) {\n if (entry === lru._head && entry !== lru._tail) {\n lru._head = entry.newer;\n lru._head.older = null;\n }\n if (entry !== lru._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = lru._tail;\n entry.newer = null;\n lru._tail.newer = entry;\n lru._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var defaultMeasureBox = $('
')[0];\n function zeroSize() {\n return {\n width: 0,\n height: 0,\n baseline: 0\n };\n }\n var TextMetrics = Class.extend({\n init: function (options) {\n this._cache = new LRUCache(1000);\n this._initOptions(options);\n },\n options: { baselineMarkerSize: 1 },\n measure: function (text, style, box) {\n if (!text) {\n return zeroSize();\n }\n var styleKey = util.objectKey(style), cacheKey = util.hashKey(text + styleKey), cachedResult = this._cache.get(cacheKey);\n if (cachedResult) {\n return cachedResult;\n }\n var size = zeroSize();\n var measureBox = box ? box : defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n for (var key in style) {\n var value = style[key];\n if (defined(value)) {\n measureBox.style[key] = value;\n }\n }\n $(measureBox).text(text);\n measureBox.appendChild(baselineMarker);\n doc.body.appendChild(measureBox);\n if ((text + '').length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n measureBox.parentNode.removeChild(measureBox);\n return size;\n },\n _baselineMarker: function () {\n return $('')[0];\n }\n });\n TextMetrics.current = new TextMetrics();\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n function loadFonts(fonts, callback) {\n var promises = [];\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function (font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n kendo.logToConsole(e);\n }\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n }\n kendo.util.TextMetrics = TextMetrics;\n kendo.util.LRUCache = LRUCache;\n kendo.util.loadFonts = loadFonts;\n kendo.util.measureText = measureText;\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('util/base64', ['util/main'], f);\n}(function () {\n (function () {\n var kendo = window.kendo, deepExtend = kendo.deepExtend, fromCharCode = String.fromCharCode;\n var KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n function encodeBase64(input) {\n var output = '';\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n input = encodeUTF8(input);\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) + KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n return output;\n }\n function encodeUTF8(input) {\n var output = '';\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n if (c < 128) {\n output += fromCharCode(c);\n } else if (c < 2048) {\n output += fromCharCode(192 | c >>> 6);\n output += fromCharCode(128 | c & 63);\n } else if (c < 65536) {\n output += fromCharCode(224 | c >>> 12);\n output += fromCharCode(128 | c >>> 6 & 63);\n output += fromCharCode(128 | c & 63);\n }\n }\n return output;\n }\n deepExtend(kendo.util, {\n encodeBase64: encodeBase64,\n encodeUTF8: encodeUTF8\n });\n }());\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('mixins/observers', ['kendo.core'], f);\n}(function () {\n (function ($) {\n var math = Math, kendo = window.kendo, deepExtend = kendo.deepExtend, inArray = $.inArray;\n var ObserversMixin = {\n observers: function () {\n this._observers = this._observers || [];\n return this._observers;\n },\n addObserver: function (element) {\n if (!this._observers) {\n this._observers = [element];\n } else {\n this._observers.push(element);\n }\n return this;\n },\n removeObserver: function (element) {\n var observers = this.observers();\n var index = inArray(element, observers);\n if (index != -1) {\n observers.splice(index, 1);\n }\n return this;\n },\n trigger: function (methodName, event) {\n var observers = this._observers;\n var observer;\n var idx;\n if (observers && !this._suspended) {\n for (idx = 0; idx < observers.length; idx++) {\n observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n },\n optionsChange: function (e) {\n e = e || {};\n e.element = this;\n this.trigger('optionsChange', e);\n },\n geometryChange: function () {\n this.trigger('geometryChange', { element: this });\n },\n suspend: function () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n },\n resume: function () {\n this._suspended = math.max((this._suspended || 0) - 1, 0);\n return this;\n },\n _observerField: function (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n }\n };\n deepExtend(kendo, { mixins: { ObserversMixin: ObserversMixin } });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.dataviz.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 if (!chart._navigator) {\n Navigator.setup(options, themeOptions);\n }\n Chart.fn._applyDefaults.call(chart, options, themeOptions);\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 = 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 destroy: function () {\n var chart = this;\n chart._navigator.destroy();\n Chart.fn.destroy.call(chart);\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.filterAxes();\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,\n to: to,\n selectStart: $.proxy(navi._selectStart, navi),\n select: $.proxy(navi._select, navi),\n selectEnd: $.proxy(navi._selectEnd, navi),\n mousewheel: { zoom: 'left' }\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 axisOpt = axis.options;\n var range = axis.range();\n var min = range.min;\n var max = addDuration(range.max, axisOpt.baseUnitStep, axisOpt.baseUnit);\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 = {\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 });\n Navigator.setup = function (options, themeOptions) {\n options = options || {};\n themeOptions = themeOptions || {};\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: false\n });\n var user = naviOptions.categoryAxis;\n categoryAxes.push(deepExtend({}, base, { maxDateGroups: 200 }, user, {\n name: NAVIGATOR_AXIS,\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 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('