@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
221 lines (219 loc) • 7.35 kB
JavaScript
const require_chunk = require('./chunk-BE-pF4vm.js');
let _progress_kendo_charts = require("@progress/kendo-charts");
//#region ../src/kendo.dataviz.stock.js
const __meta__ = {
id: "dataviz.stockchart",
name: "StockChart",
category: "dataviz",
description: "StockChart widget and associated financial series.",
depends: ["dataviz.chart"]
};
(function($) {
window.kendo.dataviz = window.kendo.dataviz || {};
var kendo = window.kendo;
var dataviz = kendo.dataviz;
var Chart = dataviz.ui.Chart;
var deepExtend = kendo.deepExtend;
var NAVIGATOR_AXIS = _progress_kendo_charts.constants.NAVIGATOR_AXIS;
var NAVIGATOR_PANE = _progress_kendo_charts.constants.NAVIGATOR_PANE;
var CHANGE = "change";
var StockChart = Chart.extend({
options: {
name: "StockChart",
dateField: "date",
axisDefaults: {
categoryAxis: {
type: "date",
baseUnit: "fit",
justified: true
},
valueAxis: {
narrowRange: true,
labels: { format: "C" }
}
},
navigator: {
select: {},
seriesDefaults: {
markers: { visible: false },
tooltip: {
visible: true,
template: ({ category }) => kendo.toString(category, "d")
},
line: { width: 2 }
},
hint: {},
visible: true
},
tooltip: { visible: true },
legend: { visible: false },
persistSeriesVisibility: true
},
_createChart: function(options, themeOptions) {
this._initNavigatorOptions(options);
this._instance = new _progress_kendo_charts.StockChart(this.element[0], options, themeOptions, {
observer: new _progress_kendo_charts.InstanceObserver(this, {
showTooltip: "_showTooltip",
hideTooltip: "_hideTooltip",
legendItemClick: "_onLegendItemClick",
render: "_onRender",
init: "_onInit",
drilldown: "_onDrilldown",
navigatorFilter: "_onNavigatorFilter",
navigatorCreated: "_onNavigatorCreated"
}),
sender: this,
rtl: this._isRtl(),
createSurface: kendo.drawing.Surface.create
});
},
_initNavigatorOptions: function(options) {
var navigatorOptions = options.navigator || {};
var support = kendo.support;
var isTouch = support.touch;
var isFirefox = support.browser.mozilla;
deepExtend(navigatorOptions, {
autoBindElements: !navigatorOptions.dataSource,
partialRedraw: navigatorOptions.dataSource,
liveDrag: !isTouch && !isFirefox
});
},
_initDataSource: function(userOptions) {
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;
if (hasServerFiltering && hasSelect) {
var filter = [].concat(dataSource.filter || []);
var from = kendo.parseDate(select.from);
var to = kendo.parseDate(select.to);
var dummyAxis = new dataviz.DateCategoryAxis(deepExtend({ baseUnit: "fit" }, mainAxis, { categories: [from, to] }), kendo);
dataSource.filter = buildFilter(dummyAxis.range().min, to).concat(filter);
}
Chart.fn._initDataSource.call(this, userOptions);
},
_onNavigatorCreated: function(e) {
this._instance = e.sender;
this.options = e.sender.options;
this._navigator = this.navigator = e.navigator;
this._initNavigatorDataSource();
},
_initNavigatorDataSource: function() {
var navigatorOptions = this.options.navigator;
var autoBind = navigatorOptions.autoBind;
var dsOptions = navigatorOptions.dataSource;
if (dsOptions) {
this._navigatorDataChangedHandler = this._navigatorDataChangedHandler || this._onNavigatorDataChanged.bind(this);
this._navigatorDataSource = kendo.data.DataSource.create(dsOptions).bind(CHANGE, this._navigatorDataChangedHandler);
if (!(0, _progress_kendo_charts.defined)(autoBind)) {
autoBind = this.options.autoBind;
}
if (autoBind) {
this._navigatorDataSource.fetch();
}
}
},
_bindNavigatorSeries: function(series, data) {
var seriesIx, currentSeries, seriesLength = series.length;
for (seriesIx = 0; seriesIx < seriesLength; seriesIx++) {
currentSeries = series[seriesIx];
if (currentSeries.axis == NAVIGATOR_AXIS && this._isBindable(currentSeries)) {
currentSeries.data = data;
}
}
},
_onNavigatorDataChanged: function() {
var chart = this, instance = chart._instance, categoryAxes = chart.options.categoryAxis, axisIx, axesLength = categoryAxes.length, data = chart._navigatorDataSource.view(), currentAxis, naviCategories;
this._bindNavigatorSeries(chart.options.series, data);
if (chart._sourceSeries) {
this._bindNavigatorSeries(chart._sourceSeries, data);
}
for (axisIx = 0; axisIx < axesLength; axisIx++) {
currentAxis = categoryAxes[axisIx];
if (currentAxis.pane == NAVIGATOR_PANE) {
if (currentAxis.name == NAVIGATOR_AXIS) {
chart._bindCategoryAxis(currentAxis, data, axisIx);
naviCategories = currentAxis.categories;
} else {
currentAxis.categories = naviCategories;
}
}
}
if (instance._model) {
var navigator = this.navigator;
navigator.redraw();
navigator.setRange();
if (!chart.options.dataSource || chart.options.dataSource && chart._dataBound) {
navigator.redrawSlaves();
}
}
},
_bindCategories: function() {
Chart.fn._bindCategories.call(this);
if (this._instance) {
this._instance.copyNavigatorCategories();
}
},
_onDataChanged: function() {
Chart.fn._onDataChanged.call(this);
this._dataBound = true;
},
setOptions: function(options) {
this._removeNavigatorDataSource();
this._initNavigatorOptions(options);
this._instance.destroyNavigator();
Chart.fn.setOptions.call(this, options);
},
_onNavigatorFilter: function(e) {
this.dataSource.filter(buildFilter(e.from, e.to));
},
requiresHandlers: function(names) {
if ((0, _progress_kendo_charts.inArray)("navigatorFilter", names)) {
var dataSource = this.dataSource;
var hasServerFiltering = dataSource && dataSource.options.serverFiltering;
return hasServerFiltering && this.options.navigator.dataSource;
}
return Chart.fn.requiresHandlers.call(this, names);
},
_removeNavigatorDataSource: function() {
var navigatorDataSource = this._navigatorDataSource;
if (navigatorDataSource) {
navigatorDataSource.unbind(CHANGE, this._navigatorDataChangedHandler);
delete this._navigatorDataSource;
}
},
destroy: function() {
Chart.fn.destroy.call(this);
this._removeNavigatorDataSource();
}
});
kendo.deepExtend(kendo.dataviz, {
constants: _progress_kendo_charts.constants,
Navigator: _progress_kendo_charts.Navigator,
NavigatorHint: _progress_kendo_charts.NavigatorHint,
StockChart
});
dataviz.ui.plugin(StockChart);
function buildFilter(from, to) {
return [{
field: "Date",
operator: "gte",
value: from
}, {
field: "Date",
operator: "lt",
value: to
}];
}
})(window.kendo.jQuery);
var kendo_dataviz_stock_default = kendo;
//#endregion
Object.defineProperty(exports, '__meta__', {
enumerable: true,
get: function () {
return __meta__;
}
});
Object.defineProperty(exports, 'kendo_dataviz_stock_default', {
enumerable: true,
get: function () {
return kendo_dataviz_stock_default;
}
});