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

140 lines
4.2 KiB
JavaScript

/* *
*
* Organization chart module
*
* (c) 2018-2021 Torstein Honsi
*
* License: www.highcharts.com/license
*
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
*
* */
'use strict';
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
import SeriesRegistry from '../../Core/Series/SeriesRegistry.js';
var SankeyPointClass = SeriesRegistry.seriesTypes.sankey.prototype.pointClass;
import U from '../../Core/Utilities.js';
var defined = U.defined, find = U.find, pick = U.pick;
/**
* Get columns offset including all sibiling and cousins etc.
*
* @private
* @param node Point
*/
function getOffset(node) {
var offset = node.linksFrom.length;
node.linksFrom.forEach(function (link) {
if (link.id === link.toNode.linksTo[0].id) {
// Node has children, that hangs directly from it:
offset += getOffset(link.toNode);
}
else {
// If the node hangs from multiple parents, and this is not
// the last one, ignore it:
offset--;
}
});
return offset;
}
/* *
*
* Class
*
* */
var OrganizationPoint = /** @class */ (function (_super) {
__extends(OrganizationPoint, _super);
function OrganizationPoint() {
/* *
*
* Properties
*
* */
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.fromNode = void 0;
_this.linksFrom = void 0;
_this.linksTo = void 0;
_this.options = void 0;
_this.series = void 0;
_this.toNode = void 0;
return _this;
/* eslint-enable valid-jsdoc */
}
/* *
*
* Functions
*
* */
/* eslint-disable valid-jsdoc */
/**
* All nodes in an org chart are equal width.
* @private
*/
OrganizationPoint.prototype.getSum = function () {
return 1;
};
/**
* Set node.column for hanging layout
* @private
*/
OrganizationPoint.prototype.setNodeColumn = function () {
_super.prototype.setNodeColumn.call(this);
var node = this, fromNode = node.getFromNode().fromNode;
// Hanging layout
if (
// Not defined by user
!defined(node.options.column) &&
// Has links to
node.linksTo.length !== 0 &&
// And parent uses hanging layout
fromNode &&
fromNode.options.layout === 'hanging') {
// Default all children of the hanging node
// to have hanging layout
node.options.layout = pick(node.options.layout, 'hanging');
node.hangsFrom = fromNode;
var i_1 = -1;
find(fromNode.linksFrom, function (link, index) {
var found = link.toNode === node;
if (found) {
i_1 = index;
}
return found;
});
// For all siblings' children (recursively)
// increase the column offset to prevent overlapping
for (var j = 0; j < fromNode.linksFrom.length; j++) {
var link = fromNode.linksFrom[j];
if (link.toNode.id === node.id) {
// Break
j = fromNode.linksFrom.length;
}
else {
i_1 += getOffset(link.toNode);
}
}
node.column = (node.column || 0) + i_1;
}
};
return OrganizationPoint;
}(SankeyPointClass));
/* *
*
* Default Export
*
* */
export default OrganizationPoint;