Files
Sensores/static/lib/Highcharts-10.2.1/es-modules/Series/GraphLayoutComposition.js
2025-04-17 00:35:33 -06:00

131 lines
3.2 KiB
JavaScript

/* *
*
* Networkgraph series
*
* (c) 2010-2021 Paweł Fus
*
* License: www.highcharts.com/license
*
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
*
* */
'use strict';
import A from '../Core/Animation/AnimationUtilities.js';
var setAnimation = A.setAnimation;
import U from '../Core/Utilities.js';
var addEvent = U.addEvent;
/* *
*
* Constants
*
* */
var composedClasses = [];
var integrations = {};
var layouts = {};
/* *
*
* Functions
*
* */
/**
* @private
*/
function compose(ChartClass) {
if (composedClasses.indexOf(ChartClass)) {
composedClasses.push(ChartClass);
addEvent(ChartClass, 'afterPrint', onChartAfterPrint);
addEvent(ChartClass, 'beforePrint', onChartBeforePrint);
addEvent(ChartClass, 'predraw', onChartPredraw);
addEvent(ChartClass, 'render', onChartRender);
}
}
/**
* Re-enable simulation after print.
* @private
*/
function onChartAfterPrint() {
if (this.graphLayoutsLookup) {
this.graphLayoutsLookup.forEach(function (layout) {
// return to default simulation
layout.updateSimulation();
});
this.redraw();
}
}
/**
* Disable simulation before print if enabled.
* @private
*/
function onChartBeforePrint() {
if (this.graphLayoutsLookup) {
this.graphLayoutsLookup.forEach(function (layout) {
layout.updateSimulation(false);
});
this.redraw();
}
}
/**
* Clear previous layouts.
* @private
*/
function onChartPredraw() {
if (this.graphLayoutsLookup) {
this.graphLayoutsLookup.forEach(function (layout) {
layout.stop();
});
}
}
/**
* @private
*/
function onChartRender() {
var systemsStable, afterRender = false;
var layoutStep = function (layout) {
if (layout.maxIterations-- &&
isFinite(layout.temperature) &&
!layout.isStable() &&
!layout.enableSimulation) {
// Hook similar to build-in addEvent, but instead of
// creating whole events logic, use just a function.
// It's faster which is important for rAF code.
// Used e.g. in packed-bubble series for bubble radius
// calculations
if (layout.beforeStep) {
layout.beforeStep();
}
layout.step();
systemsStable = false;
afterRender = true;
}
};
if (this.graphLayoutsLookup) {
setAnimation(false, this);
// Start simulation
this.graphLayoutsLookup.forEach(function (layout) { return layout.start(); });
// Just one sync step, to run different layouts similar to
// async mode.
while (!systemsStable) {
systemsStable = true;
this.graphLayoutsLookup.forEach(layoutStep);
}
if (afterRender) {
this.series.forEach(function (series) {
if (series && series.layout) {
series.render();
}
});
}
}
}
/* *
*
* Default Export
*
* */
var GraphLayoutComposition = {
compose: compose,
integrations: integrations,
layouts: layouts
};
export default GraphLayoutComposition;