@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
424 lines (352 loc) • 10.2 kB
JavaScript
import './kendo.dataviz.chart.js';
/***********************************************************************
* WARNING: this file is auto-generated. If you change it directly,
* your modifications will eventually be lost. The source code is in
* `kendo-charts` repository, you should make your changes there and
* run `src-modules/sync.sh` in this repository.
*/
(function() {
/* eslint-disable space-before-blocks, space-before-function-paren */
window.kendo.dataviz = window.kendo.dataviz || {};
var dataviz = kendo.dataviz;
var constants = dataviz.constants;
var Chart = dataviz.Chart;
var elementSize = dataviz.elementSize;
var deepExtend = dataviz.deepExtend;
var TOP_OFFSET = -2;
var SharedTooltip$1 = dataviz.SharedTooltip.extend({
_slotAnchor: function(coords, slot) {
var axis = this.plotArea.categoryAxis;
var vertical = axis.options.vertical;
var align = vertical ? {
horizontal: "left",
vertical: "center"
} : {
horizontal: "center",
vertical: "bottom"
};
var point;
if (vertical) {
point = new dataviz.Point(this.plotArea.box.x2, slot.center().y);
} else {
point = new dataviz.Point(slot.center().x, TOP_OFFSET);
}
return {
point: point,
align: align
};
},
_defaultAnchor: function(point, slot) {
return this._slotAnchor({}, slot);
}
});
var DEAULT_BAR_WIDTH = 150;
var DEAULT_BULLET_WIDTH = 150;
var NO_CROSSHAIR = [ constants.BAR, constants.BULLET ];
function hide(children) {
var state = [];
for (var idx = 0; idx < children.length; idx++) {
var child = children[idx];
state[idx] = child.style.display;
child.style.display = "none";
}
return state;
}
function show(children, state) {
for (var idx = 0; idx < children.length; idx++) {
children[idx].style.display = state[idx];
}
}
function wrapNumber(value) {
return dataviz.isNumber(value) ? [ value ] : value;
}
var Sparkline = Chart.extend({
_setElementClass: function(element) {
dataviz.addClass(element, 'k-sparkline');
},
_initElement: function(element) {
Chart.fn._initElement.call(this, element);
this._initialWidth = Math.floor(elementSize(element).width);
},
_resize: function() {
var element = this.element;
var state = hide(element.childNodes);
this._initialWidth = Math.floor(elementSize(element).width);
show(element.childNodes, state);
Chart.fn._resize.call(this);
},
_modelOptions: function() {
var chartOptions = this.options;
var stage = this._surfaceWrap();
var displayState = hide(stage.childNodes);
var space = document.createElement('span');
space.innerHTML = ' ';
stage.appendChild(space);
var options = deepExtend({
width: this._autoWidth,
height: elementSize(stage).height,
transitions: chartOptions.transitions
}, chartOptions.chartArea, {
inline: true,
align: false
});
elementSize(stage, {
width: options.width,
height: options.height
});
stage.removeChild(space);
show(stage.childNodes, displayState);
if (this.surface) {
this.surface.resize();
}
return options;
},
_surfaceWrap: function() {
if (!this.stage) {
var stage = this.stage = document.createElement('span');
this.element.appendChild(stage);
}
return this.stage;
},
_createPlotArea: function(skipSeries) {
var plotArea = Chart.fn._createPlotArea.call(this, skipSeries);
this._autoWidth = this._initialWidth || this._calculateWidth(plotArea);
return plotArea;
},
_calculateWidth: function(plotArea) {
var options = this.options;
var margin = dataviz.getSpacing(options.chartArea.margin);
var charts = plotArea.charts;
var stage = this._surfaceWrap();
var total = 0;
for (var i = 0; i < charts.length; i++) {
var currentChart = charts[i];
var firstSeries = (currentChart.options.series || [])[0];
if (!firstSeries) {
continue;
}
if (firstSeries.type === constants.BAR) {
return DEAULT_BAR_WIDTH;
}
if (firstSeries.type === constants.BULLET) {
return DEAULT_BULLET_WIDTH;
}
if (firstSeries.type === constants.PIE) {
return elementSize(stage).height;
}
var categoryAxis = currentChart.categoryAxis;
if (categoryAxis) {
var pointsCount = categoryAxis.categoriesCount() *
(!currentChart.options.isStacked && dataviz.inArray(firstSeries.type, [ constants.COLUMN, constants.VERTICAL_BULLET ]) ? currentChart.seriesOptions.length : 1);
total = Math.max(total, pointsCount);
}
}
var size = total * options.pointWidth;
if (size > 0) {
size += margin.left + margin.right;
}
return size;
},
_createSharedTooltip: function(options) {
return new SharedTooltip$1(this._plotArea, options);
}
});
Sparkline.normalizeOptions = function(userOptions) {
var options = wrapNumber(userOptions);
if (dataviz.isArray(options)) {
options = { seriesDefaults: { data: options } };
} else {
options = deepExtend({}, options);
}
if (!options.series) {
options.series = [ { data: wrapNumber(options.data) } ];
}
deepExtend(options, {
seriesDefaults: {
type: options.type
}
});
if (dataviz.inArray(options.series[0].type, NO_CROSSHAIR) ||
dataviz.inArray(options.seriesDefaults.type, NO_CROSSHAIR)) {
options = deepExtend({}, {
categoryAxis: {
crosshair: {
visible: false
}
}
}, options);
}
return options;
};
dataviz.setDefaultOptions(Sparkline, {
chartArea: {
margin: 2
},
axisDefaults: {
visible: false,
majorGridLines: {
visible: false
},
valueAxis: {
narrowRange: true
}
},
seriesDefaults: {
type: "line",
area: {
line: {
width: 0.5
}
},
bar: {
stack: true
},
padding: 2,
width: 0.5,
overlay: {
gradient: null
},
highlight: {
visible: false
},
border: {
width: 0
},
markers: {
size: 2,
visible: false
}
},
tooltip: {
visible: true,
shared: true
},
categoryAxis: {
crosshair: {
visible: true,
tooltip: {
visible: false
}
}
},
legend: {
visible: false
},
transitions: false,
pointWidth: 5,
panes: [ { clip: false } ]
});
kendo.deepExtend(kendo.dataviz, {
Sparkline: Sparkline
});
})();
(function($) {
var dataviz = kendo.dataviz;
var Chart = dataviz.ui.Chart;
var KendoSparkline = dataviz.Sparkline;
var ChartInstanceObserver = dataviz.ChartInstanceObserver;
var extend = $.extend;
var Sparkline = Chart.extend({
init: function(element, userOptions) {
var options = userOptions;
if (options instanceof kendo.data.ObservableArray) {
options = { seriesDefaults: { data: options } };
}
Chart.fn.init.call(this, element, KendoSparkline.normalizeOptions(options));
},
_createChart: function(options, themeOptions) {
this._instance = new KendoSparkline(this.element[0], options, themeOptions, {
observer: new ChartInstanceObserver(this),
sender: this,
rtl: this._isRtl()
});
},
_createTooltip: function() {
return new SparklineTooltip(this.element, extend({}, this.options.tooltip, {
rtl: this._isRtl()
}));
},
options: {
name: "Sparkline",
chartArea: {
margin: 2
},
axisDefaults: {
visible: false,
majorGridLines: {
visible: false
},
valueAxis: {
narrowRange: true
}
},
seriesDefaults: {
type: "line",
area: {
line: {
width: 0.5
}
},
bar: {
stack: true
},
padding: 2,
width: 0.5,
overlay: {
gradient: null
},
highlight: {
visible: false
},
border: {
width: 0
},
markers: {
size: 2,
visible: false
}
},
tooltip: {
visible: true,
shared: true
},
categoryAxis: {
crosshair: {
visible: true,
tooltip: {
visible: false
}
}
},
legend: {
visible: false
},
transitions: false,
pointWidth: 5,
panes: [{
clip: false
}]
}
});
dataviz.ui.plugin(Sparkline);
var SparklineTooltip = dataviz.Tooltip.extend({
options: {
animation: {
duration: 0
}
},
_hideElement: function() {
if (this.element) {
this.element.hide().remove();
}
}
});
dataviz.SparklineTooltip = SparklineTooltip;
})(window.kendo.jQuery);
var __meta__ = {
id: "dataviz.sparkline",
name: "Sparkline",
category: "dataviz",
description: "Sparkline widgets.",
depends: [ "dataviz.chart" ]
};