64 lines
2.1 KiB
JavaScript
64 lines
2.1 KiB
JavaScript
|
/* *
|
||
|
*
|
||
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
||
|
*
|
||
|
* */
|
||
|
'use strict';
|
||
|
import U from '../Core/Utilities.js';
|
||
|
const { merge, syncTimeout } = U;
|
||
|
import A from '../Core/Animation/AnimationUtilities.js';
|
||
|
const { animObject } = A;
|
||
|
/**
|
||
|
* Create a setTimeout for the first drawDataLabels()
|
||
|
* based on the dataLabels.animation.defer value
|
||
|
* for series which have enabled simulation.
|
||
|
* @private
|
||
|
*/
|
||
|
function initDataLabelsDefer() {
|
||
|
const dlOptions = this.options.dataLabels;
|
||
|
// Method drawDataLabels() fires for the first time after
|
||
|
// dataLabels.animation.defer time unless
|
||
|
// the dataLabels.animation = false or dataLabels.defer = false
|
||
|
// or if the simulation is disabled
|
||
|
if (!dlOptions?.defer ||
|
||
|
!this.options.layoutAlgorithm?.enableSimulation) {
|
||
|
this.deferDataLabels = false;
|
||
|
}
|
||
|
else {
|
||
|
syncTimeout(() => {
|
||
|
this.deferDataLabels = false;
|
||
|
}, dlOptions ? animObject(dlOptions.animation).defer : 0);
|
||
|
}
|
||
|
}
|
||
|
/**
|
||
|
* Initialize the SVG group for the DataLabels with correct opacities
|
||
|
* and correct styles so that the animation for the series that have
|
||
|
* simulation enabled works fine.
|
||
|
* @private
|
||
|
*/
|
||
|
function initDataLabels() {
|
||
|
const series = this, dlOptions = series.options.dataLabels;
|
||
|
if (!series.dataLabelsGroup) {
|
||
|
const dataLabelsGroup = this.initDataLabelsGroup();
|
||
|
// Apply the dataLabels.style not only to the
|
||
|
// individual dataLabels but also to the entire group
|
||
|
if (!series.chart.styledMode && dlOptions?.style) {
|
||
|
dataLabelsGroup.css(dlOptions.style);
|
||
|
}
|
||
|
// Initialize the opacity of the group to 0 (start of animation)
|
||
|
dataLabelsGroup.attr({ opacity: 0 });
|
||
|
if (series.visible) { // #2597, #3023, #3024
|
||
|
dataLabelsGroup.show();
|
||
|
}
|
||
|
return dataLabelsGroup;
|
||
|
}
|
||
|
// Place it on first and subsequent (redraw) calls
|
||
|
series.dataLabelsGroup.attr(merge({ opacity: 1 }, this.getPlotBox('data-labels')));
|
||
|
return series.dataLabelsGroup;
|
||
|
}
|
||
|
const DataLabelsDeferUtils = {
|
||
|
initDataLabels,
|
||
|
initDataLabelsDefer
|
||
|
};
|
||
|
export default DataLabelsDeferUtils;
|