88 lines
2.4 KiB
JavaScript
88 lines
2.4 KiB
JavaScript
/* *
|
|
*
|
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
*
|
|
* */
|
|
'use strict';
|
|
import U from '../Core/Utilities.js';
|
|
var isNumber = U.isNumber;
|
|
/* *
|
|
*
|
|
* Functions
|
|
*
|
|
* */
|
|
/**
|
|
* Handles the drawing of a component.
|
|
* Can be used for any type of component that reserves the graphic property,
|
|
* and provides a shouldDraw on its context.
|
|
*
|
|
* @private
|
|
*
|
|
* @todo add type checking.
|
|
* @todo export this function to enable usage
|
|
*/
|
|
function draw(point, params) {
|
|
var animatableAttribs = params.animatableAttribs, onComplete = params.onComplete, css = params.css, renderer = params.renderer;
|
|
var animation = (point.series && point.series.chart.hasRendered) ?
|
|
// Chart-level animation on updates
|
|
void 0 :
|
|
// Series-level animation on new points
|
|
(point.series &&
|
|
point.series.options.animation);
|
|
var graphic = point.graphic;
|
|
params.attribs = params.attribs || {};
|
|
// Assigning class in dot notation does go well in IE8
|
|
// eslint-disable-next-line dot-notation
|
|
params.attribs['class'] = point.getClassName();
|
|
if (shouldDraw(point)) {
|
|
if (!graphic) {
|
|
point.graphic = graphic = params.shapeType === 'text' ?
|
|
renderer.text() :
|
|
renderer[params.shapeType](params.shapeArgs || {});
|
|
graphic.add(params.group);
|
|
}
|
|
if (css) {
|
|
graphic.css(css);
|
|
}
|
|
graphic
|
|
.attr(params.attribs)
|
|
.animate(animatableAttribs, params.isNew ? false : animation, onComplete);
|
|
}
|
|
else if (graphic) {
|
|
var destroy_1 = function () {
|
|
point.graphic = graphic = (graphic && graphic.destroy());
|
|
if (typeof onComplete === 'function') {
|
|
onComplete();
|
|
}
|
|
};
|
|
// animate only runs complete callback if something was animated.
|
|
if (Object.keys(animatableAttribs).length) {
|
|
graphic.animate(animatableAttribs, void 0, function () { return destroy_1(); });
|
|
}
|
|
else {
|
|
destroy_1();
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* @private
|
|
*/
|
|
function shouldDraw(point) {
|
|
switch (point.series && point.series.type) {
|
|
case 'treemap':
|
|
return isNumber(point.plotY) && point.y !== null;
|
|
default:
|
|
return !point.isNull;
|
|
}
|
|
}
|
|
/* *
|
|
*
|
|
* Default Export
|
|
*
|
|
* */
|
|
var DrawPointUtilities = {
|
|
draw: draw,
|
|
shouldDraw: shouldDraw
|
|
};
|
|
export default DrawPointUtilities;
|