82 lines
2.2 KiB
JavaScript
82 lines
2.2 KiB
JavaScript
|
/* *
|
||
|
*
|
||
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
||
|
*
|
||
|
* */
|
||
|
'use strict';
|
||
|
/* *
|
||
|
*
|
||
|
* 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) {
|
||
|
const { animatableAttribs, onComplete, css, renderer } = params;
|
||
|
const 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);
|
||
|
let graphic = point.graphic;
|
||
|
params.attribs = {
|
||
|
...params.attribs,
|
||
|
'class': point.getClassName()
|
||
|
} || {};
|
||
|
if ((point.shouldDraw())) {
|
||
|
if (!graphic) {
|
||
|
if (params.shapeType === 'text') {
|
||
|
graphic = renderer.text();
|
||
|
}
|
||
|
else if (params.shapeType === 'image') {
|
||
|
graphic = renderer.image(params.imageUrl || '')
|
||
|
.attr(params.shapeArgs || {});
|
||
|
}
|
||
|
else {
|
||
|
graphic = renderer[params.shapeType](params.shapeArgs || {});
|
||
|
}
|
||
|
point.graphic = graphic;
|
||
|
graphic.add(params.group);
|
||
|
}
|
||
|
if (css) {
|
||
|
graphic.css(css);
|
||
|
}
|
||
|
graphic
|
||
|
.attr(params.attribs)
|
||
|
.animate(animatableAttribs, params.isNew ? false : animation, onComplete);
|
||
|
}
|
||
|
else if (graphic) {
|
||
|
const destroy = () => {
|
||
|
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, () => destroy());
|
||
|
}
|
||
|
else {
|
||
|
destroy();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
/* *
|
||
|
*
|
||
|
* Default Export
|
||
|
*
|
||
|
* */
|
||
|
const DrawPointUtilities = {
|
||
|
draw
|
||
|
};
|
||
|
export default DrawPointUtilities;
|