initial commit
This commit is contained in:
115
node_modules/vis/lib/network/NetworkUtil.js
generated
vendored
Normal file
115
node_modules/vis/lib/network/NetworkUtil.js
generated
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
let util = require("../util");
|
||||
|
||||
/**
|
||||
* Utility Class
|
||||
*/
|
||||
class NetworkUtil {
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
constructor() {}
|
||||
|
||||
/**
|
||||
* Find the center position of the network considering the bounding boxes
|
||||
*
|
||||
* @param {Array.<Node>} allNodes
|
||||
* @param {Array.<Node>} [specificNodes=[]]
|
||||
* @returns {{minX: number, maxX: number, minY: number, maxY: number}}
|
||||
* @static
|
||||
*/
|
||||
static getRange(allNodes, specificNodes = []) {
|
||||
var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node;
|
||||
if (specificNodes.length > 0) {
|
||||
for (var i = 0; i < specificNodes.length; i++) {
|
||||
node = allNodes[specificNodes[i]];
|
||||
if (minX > node.shape.boundingBox.left) {
|
||||
minX = node.shape.boundingBox.left;
|
||||
}
|
||||
if (maxX < node.shape.boundingBox.right) {
|
||||
maxX = node.shape.boundingBox.right;
|
||||
}
|
||||
if (minY > node.shape.boundingBox.top) {
|
||||
minY = node.shape.boundingBox.top;
|
||||
} // top is negative, bottom is positive
|
||||
if (maxY < node.shape.boundingBox.bottom) {
|
||||
maxY = node.shape.boundingBox.bottom;
|
||||
} // top is negative, bottom is positive
|
||||
}
|
||||
}
|
||||
|
||||
if (minX === 1e9 && maxX === -1e9 && minY === 1e9 && maxY === -1e9) {
|
||||
minY = 0, maxY = 0, minX = 0, maxX = 0;
|
||||
}
|
||||
return {minX: minX, maxX: maxX, minY: minY, maxY: maxY};
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the center position of the network
|
||||
*
|
||||
* @param {Array.<Node>} allNodes
|
||||
* @param {Array.<Node>} [specificNodes=[]]
|
||||
* @returns {{minX: number, maxX: number, minY: number, maxY: number}}
|
||||
* @static
|
||||
*/
|
||||
static getRangeCore(allNodes, specificNodes = []) {
|
||||
var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node;
|
||||
if (specificNodes.length > 0) {
|
||||
for (var i = 0; i < specificNodes.length; i++) {
|
||||
node = allNodes[specificNodes[i]];
|
||||
if (minX > node.x) {
|
||||
minX = node.x;
|
||||
}
|
||||
if (maxX < node.x) {
|
||||
maxX = node.x;
|
||||
}
|
||||
if (minY > node.y) {
|
||||
minY = node.y;
|
||||
} // top is negative, bottom is positive
|
||||
if (maxY < node.y) {
|
||||
maxY = node.y;
|
||||
} // top is negative, bottom is positive
|
||||
}
|
||||
}
|
||||
|
||||
if (minX === 1e9 && maxX === -1e9 && minY === 1e9 && maxY === -1e9) {
|
||||
minY = 0, maxY = 0, minX = 0, maxX = 0;
|
||||
}
|
||||
return {minX: minX, maxX: maxX, minY: minY, maxY: maxY};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param {object} range = {minX: minX, maxX: maxX, minY: minY, maxY: maxY};
|
||||
* @returns {{x: number, y: number}}
|
||||
* @static
|
||||
*/
|
||||
static findCenter(range) {
|
||||
return {x: (0.5 * (range.maxX + range.minX)),
|
||||
y: (0.5 * (range.maxY + range.minY))};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This returns a clone of the options or options of the edge or node to be used for construction of new edges or check functions for new nodes.
|
||||
* @param {vis.Item} item
|
||||
* @param {'node'|undefined} type
|
||||
* @returns {{}}
|
||||
* @static
|
||||
*/
|
||||
static cloneOptions(item, type) {
|
||||
let clonedOptions = {};
|
||||
if (type === undefined || type === 'node') {
|
||||
util.deepExtend(clonedOptions, item.options, true);
|
||||
clonedOptions.x = item.x;
|
||||
clonedOptions.y = item.y;
|
||||
clonedOptions.amountOfConnections = item.edges.length;
|
||||
}
|
||||
else {
|
||||
util.deepExtend(clonedOptions, item.options, true);
|
||||
}
|
||||
return clonedOptions;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default NetworkUtil;
|
||||
Reference in New Issue
Block a user