@progress/kendo-charts
Version:
Kendo UI platform-independent Charts library
93 lines (72 loc) • 3.03 kB
JavaScript
import { Color } from '@progress/kendo-drawing';
import { Class, defined, deepExtend, setDefaultOptions, valueOrDefault, getSpacing, styleValue } from '../../common';
import { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';
var BaseTooltip = (function (Class) {
function BaseTooltip(chartService, options) {
Class.call(this);
this.chartService = chartService;
this.options = deepExtend({}, this.options, options);
}
if ( Class ) BaseTooltip.__proto__ = Class;
BaseTooltip.prototype = Object.create( Class && Class.prototype );
BaseTooltip.prototype.constructor = BaseTooltip;
BaseTooltip.prototype.getStyle = function getStyle (options, point) {
var background = options.background;
var border = options.border.color;
if (point) {
var pointColor = point.color || point.options.color;
background = valueOrDefault(background, pointColor);
border = valueOrDefault(border, pointColor);
}
var padding = options.padding !== undefined ? getSpacing(options.padding) : {};
if (typeof options.padding === "object") {
padding.top = options.padding.top !== undefined ? padding.top : undefined;
padding.right = options.padding.right !== undefined ? padding.right : undefined;
padding.bottom = options.padding.bottom !== undefined ? padding.bottom : undefined;
padding.left = options.padding.left !== undefined ? padding.left : undefined;
}
return {
backgroundColor: background,
borderColor: border,
font: options.font,
color: options.color,
opacity: options.opacity,
borderWidth: styleValue(options.border.width),
paddingTop: styleValue(padding.top),
paddingBottom: styleValue(padding.bottom),
paddingLeft: styleValue(padding.left),
paddingRight: styleValue(padding.right)
};
};
BaseTooltip.prototype.show = function show (options, tooltipOptions, point) {
if (!this.chartService) {
return;
}
options.format = tooltipOptions.format;
var style = this.getStyle(tooltipOptions, point);
options.style = style;
var background = new Color(style.backgroundColor);
if (!defined(tooltipOptions.color) && !background.isDark()) {
options.className = "k-chart-tooltip-inverse";
}
this.chartService.notify(SHOW_TOOLTIP, options);
this.visible = true;
};
BaseTooltip.prototype.hide = function hide () {
if (this.chartService) {
this.chartService.notify(HIDE_TOOLTIP);
}
this.visible = false;
};
BaseTooltip.prototype.destroy = function destroy () {
delete this.chartService;
};
return BaseTooltip;
}(Class));
setDefaultOptions(BaseTooltip, {
border: {
width: 1
},
opacity: 1
});
export default BaseTooltip;