UNPKG

@progress/kendo-charts

Version:

Kendo UI platform-independent Charts library

89 lines (71 loc) 2.96 kB
import { geometry as geo, drawing } from '@progress/kendo-drawing'; import { deepExtend, defined } from '../../common'; import { ARROW_POINTER } from '../constants'; import LinearPointer from './linear-pointer'; import ArrowLinearPointerAnimation from './arrow-linear-pointer-animation'; var Point = geo.Point; var Path = drawing.Path; var ArrowLinearPointer = (function (LinearPointer) { function ArrowLinearPointer(scale, options) { LinearPointer.call(this, scale, options); if (!defined(this.options.size)) { this.options.size = this.scale.options.majorTicks.size * 0.6; } } if ( LinearPointer ) ArrowLinearPointer.__proto__ = LinearPointer; ArrowLinearPointer.prototype = Object.create( LinearPointer && LinearPointer.prototype ); ArrowLinearPointer.prototype.constructor = ArrowLinearPointer; ArrowLinearPointer.prototype.pointerShape = function pointerShape () { var ref = this; var scale = ref.scale; var size = ref.options.size; var halfSize = size / 2; var sign = (scale.options.mirror ? -1 : 1); var shape; if (scale.options.vertical) { shape = [ new Point(0, 0 - halfSize), new Point(0 - sign * size, 0), new Point(0, 0 + halfSize) ]; } else { shape = [ new Point(0 - halfSize, 0), new Point(0, 0 + sign * size), new Point(0 + halfSize, 0) ]; } return shape; }; ArrowLinearPointer.prototype.repaint = function repaint () { var ref = this; var scale = ref.scale; var options = ref.options; var animation = new ArrowLinearPointerAnimation(this.elements, deepExtend(options.animation, { vertical: scale.options.vertical, mirror: scale.options.mirror, margin: this._margin(options.margin), from: scale.getSlot(options._oldValue), to: scale.getSlot(options.value) })); if (options.animation.transitions === false) { animation.options.duration = 0; } animation.setup(); animation.play(); }; ArrowLinearPointer.prototype.render = function render () { var ref = this; var scale = ref.scale; var options = ref.options; var elementOptions = this.getElementOptions(); var shape = this.pointerShape(options.value); options.animation.type = ARROW_POINTER; var elements = new Path({ stroke: elementOptions.stroke, fill: elementOptions.fill }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close(); var slot = scale.getSlot(options.value); elements.transform(geo.transform().translate(slot.x1, slot.y1)); this.elements = elements; return elements; }; return ArrowLinearPointer; }(LinearPointer)); export default ArrowLinearPointer;