diff --git a/dist/vis.js b/dist/vis.js
index b9f9c5da..4ab8b824 100644
--- a/dist/vis.js
+++ b/dist/vis.js
@@ -964,53 +964,41 @@ util.option.asElement = function (value, defaultValue) {
-util.GiveDec = function GiveDec(Hex)
-{
- if(Hex == "A")
+util.GiveDec = function GiveDec(Hex) {
+ if (Hex == "A")
Value = 10;
- else
- if(Hex == "B")
+ else if (Hex == "B")
Value = 11;
- else
- if(Hex == "C")
+ else if (Hex == "C")
Value = 12;
- else
- if(Hex == "D")
+ else if (Hex == "D")
Value = 13;
- else
- if(Hex == "E")
+ else if (Hex == "E")
Value = 14;
- else
- if(Hex == "F")
+ else if (Hex == "F")
Value = 15;
else
Value = eval(Hex)
return Value;
-}
+};
-util.GiveHex = function GiveHex(Dec)
-{
- if(Dec == 10)
+util.GiveHex = function GiveHex(Dec) {
+ if (Dec == 10)
Value = "A";
- else
- if(Dec == 11)
+ else if (Dec == 11)
Value = "B";
- else
- if(Dec == 12)
+ else if (Dec == 12)
Value = "C";
- else
- if(Dec == 13)
+ else if (Dec == 13)
Value = "D";
- else
- if(Dec == 14)
+ else if (Dec == 14)
Value = "E";
- else
- if(Dec == 15)
+ else if (Dec == 15)
Value = "F";
else
Value = "" + Dec;
return Value;
-}
+};
/**
* Parse a color property into an object with border, background, and
@@ -1163,34 +1151,34 @@ util.HSVToRGB = function HSVToRGB(h, s, v) {
return {r:Math.floor(r * 255), g:Math.floor(g * 255), b:Math.floor(b * 255) };
};
-util.HSVToHex = function HSVToHex(h,s,v) {
- var rgb = util.HSVToRGB(h,s,v);
- return util.RGBToHex(rgb.r,rgb.g,rgb.b);
-}
+util.HSVToHex = function HSVToHex(h, s, v) {
+ var rgb = util.HSVToRGB(h, s, v);
+ return util.RGBToHex(rgb.r, rgb.g, rgb.b);
+};
util.hexToHSV = function hexToHSV(hex) {
var rgb = util.hexToRGB(hex);
- return util.RGBToHSV(rgb.r,rgb.g,rgb.b);
-}
+ return util.RGBToHSV(rgb.r, rgb.g, rgb.b);
+};
util.isValidHex = function isValidHex(hex) {
- var isOk = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex);
+ var isOk = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex);
return isOk;
-}
+};
-util.copyObject = function copyObject(objectFrom,objectTo) {
+util.copyObject = function copyObject(objectFrom, objectTo) {
for (var i in objectFrom) {
if (objectFrom.hasOwnProperty(i)) {
if (typeof objectFrom[i] == "object") {
objectTo[i] = {};
- util.copyObject(objectFrom[i],objectTo[i]);
+ util.copyObject(objectFrom[i], objectTo[i]);
}
else {
objectTo[i] = objectFrom[i];
}
}
}
-}
+};
/**
* DataSet
@@ -11473,7 +11461,7 @@ var physicsMixin = {
*
* @private
*/
- _toggleBarnesHut : function() {
+ _toggleBarnesHut: function () {
this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled;
this._loadSelectedForceSolver();
this.moving = true;
@@ -11481,22 +11469,21 @@ var physicsMixin = {
},
-
/**
* This loads the node force solver based on the barnes hut or repulsion algorithm
*
* @private
*/
- _loadSelectedForceSolver : function() {
+ _loadSelectedForceSolver: function () {
// this overloads the this._calculateNodeForces
if (this.constants.physics.barnesHut.enabled == true) {
this._clearMixin(repulsionMixin);
this._clearMixin(hierarchalRepulsionMixin);
this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity;
- this.constants.physics.springLength = this.constants.physics.barnesHut.springLength;
+ this.constants.physics.springLength = this.constants.physics.barnesHut.springLength;
this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant;
- this.constants.physics.damping = this.constants.physics.barnesHut.damping;
+ this.constants.physics.damping = this.constants.physics.barnesHut.damping;
this._loadMixin(barnesHutMixin);
}
@@ -11505,9 +11492,9 @@ var physicsMixin = {
this._clearMixin(repulsionMixin);
this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity;
- this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength;
+ this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength;
this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant;
- this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping;
+ this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping;
this._loadMixin(hierarchalRepulsionMixin);
}
@@ -11517,9 +11504,9 @@ var physicsMixin = {
this.barnesHutTree = undefined;
this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity;
- this.constants.physics.springLength = this.constants.physics.repulsion.springLength;
+ this.constants.physics.springLength = this.constants.physics.repulsion.springLength;
this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant;
- this.constants.physics.damping = this.constants.physics.repulsion.damping;
+ this.constants.physics.damping = this.constants.physics.repulsion.damping;
this._loadMixin(repulsionMixin);
}
@@ -11531,10 +11518,10 @@ var physicsMixin = {
*
* @private
*/
- _initializeForceCalculation : function() {
+ _initializeForceCalculation: function () {
// stop calculation if there is only one node
if (this.nodeIndices.length == 1) {
- this.nodes[this.nodeIndices[0]]._setForce(0,0);
+ this.nodes[this.nodeIndices[0]]._setForce(0, 0);
}
else {
// if there are too many nodes on screen, we cluster without repositioning
@@ -11553,7 +11540,7 @@ var physicsMixin = {
* Forces are caused by: edges, repulsing forces between nodes, gravity
* @private
*/
- _calculateForces : function() {
+ _calculateForces: function () {
// Gravity is required to keep separated groups from floating off
// the forces are reset to zero in this loop by using _setForce instead
// of _addForce
@@ -11578,7 +11565,7 @@ var physicsMixin = {
*
* @private
*/
- _updateCalculationNodes : function() {
+ _updateCalculationNodes: function () {
if (this.constants.smoothCurves == true) {
this.calculationNodes = {};
this.calculationNodeIndices = [];
@@ -11595,7 +11582,7 @@ var physicsMixin = {
this.calculationNodes[supportNodeId] = supportNodes[supportNodeId];
}
else {
- supportNodes[supportNodeId]._setForce(0,0);
+ supportNodes[supportNodeId]._setForce(0, 0);
}
}
}
@@ -11618,7 +11605,7 @@ var physicsMixin = {
*
* @private
*/
- _calculateGravitationalForces : function() {
+ _calculateGravitationalForces: function () {
var dx, dy, distance, node, i;
var nodes = this.calculationNodes;
var gravity = this.constants.physics.centralGravity;
@@ -11631,7 +11618,7 @@ var physicsMixin = {
if (this._sector() == "default" && gravity != 0) {
dx = -node.x;
dy = -node.y;
- distance = Math.sqrt(dx*dx + dy*dy);
+ distance = Math.sqrt(dx * dx + dy * dy);
gravityForce = (distance == 0) ? 0 : (gravity / distance);
node.fx = dx * gravityForce;
@@ -11650,7 +11637,7 @@ var physicsMixin = {
*
* @private
*/
- _calculateSpringForces : function() {
+ _calculateSpringForces: function () {
var edgeLength, edge, edgeId;
var dx, dy, fx, fy, springForce, length;
var edges = this.edges;
@@ -11668,7 +11655,7 @@ var physicsMixin = {
dx = (edge.from.x - edge.to.x);
dy = (edge.from.y - edge.to.y);
- length = Math.sqrt(dx * dx + dy * dy);
+ length = Math.sqrt(dx * dx + dy * dy);
if (length == 0) {
length = 0.01;
@@ -11695,7 +11682,7 @@ var physicsMixin = {
*
* @private
*/
- _calculateSpringForcesWithSupport : function() {
+ _calculateSpringForcesWithSupport: function () {
var edgeLength, edge, edgeId, combinedClusterSize;
var edges = this.edges;
@@ -11717,8 +11704,8 @@ var physicsMixin = {
// this implies that the edges between big clusters are longer
edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth;
- this._calculateSpringForce(node1,node2,0.5*edgeLength);
- this._calculateSpringForce(node2,node3,0.5*edgeLength);
+ this._calculateSpringForce(node1, node2, 0.5 * edgeLength);
+ this._calculateSpringForce(node2, node3, 0.5 * edgeLength);
}
}
}
@@ -11735,12 +11722,12 @@ var physicsMixin = {
* @param edgeLength
* @private
*/
- _calculateSpringForce : function(node1,node2,edgeLength) {
+ _calculateSpringForce: function (node1, node2, edgeLength) {
var dx, dy, fx, fy, springForce, length;
dx = (node1.x - node2.x);
dy = (node1.y - node2.y);
- length = Math.sqrt(dx * dx + dy * dy);
+ length = Math.sqrt(dx * dx + dy * dy);
if (length == 0) {
length = 0.01;
@@ -11762,137 +11749,137 @@ var physicsMixin = {
* Load the HTML for the physics config and bind it
* @private
*/
- _loadPhysicsConfiguration : function() {
+ _loadPhysicsConfiguration: function () {
if (this.physicsConfiguration === undefined) {
this.backupConstants = {};
- util.copyObject(this.constants,this.backupConstants);
+ util.copyObject(this.constants, this.backupConstants);
- var hierarchicalLayoutDirections = ["LR","RL","UD","DU"];
+ var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"];
this.physicsConfiguration = document.createElement('div');
this.physicsConfiguration.className = "PhysicsConfiguration";
this.physicsConfiguration.innerHTML = '' +
'
' +
- ''+
- ''+
- ''+
- 'Hierarchical |
'+
- ''+
- 'nodeDistance | 0 | | 300 | | '+
- '
'+
- ''+
- 'centralGravity | 0 | | 3 | | '+
- '
'+
- ''+
- 'springLength | 0 | | 500 | | '+
- '
'+
- ''+
- 'springConstant | 0 | | 0.5 | | '+
- '
'+
- ''+
- 'damping | 0 | | 0.3 | | '+
- '
'+
- ''+
- 'direction | 1 | | 4 | | '+
- '
'+
- ''+
- 'levelSeparation | 1 | | 500 | | '+
- '
'+
- ''+
- 'nodeSpacing | 1 | | 500 | | '+
- '
'+
+ '' +
+ '' +
+ '' +
''
- this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement);
+ this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement);
this.optionsDiv = document.createElement("div");
this.optionsDiv.style.fontSize = "14px";
this.optionsDiv.style.fontFamily = "verdana";
- this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);
+ this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement);
var rangeElement;
rangeElement = document.getElementById('graph_BH_gc');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_BH_gc',-1,"physics_barnesHut_gravitationalConstant");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant");
rangeElement = document.getElementById('graph_BH_cg');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_BH_cg',1,"physics_centralGravity");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity");
rangeElement = document.getElementById('graph_BH_sc');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_BH_sc',1,"physics_springConstant");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant");
rangeElement = document.getElementById('graph_BH_sl');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_BH_sl',1,"physics_springLength");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength");
rangeElement = document.getElementById('graph_BH_damp');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_BH_damp',1,"physics_damping");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping");
rangeElement = document.getElementById('graph_R_nd');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_R_nd',1,"physics_repulsion_nodeDistance");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance");
rangeElement = document.getElementById('graph_R_cg');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_R_cg',1,"physics_centralGravity");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity");
rangeElement = document.getElementById('graph_R_sc');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_R_sc',1,"physics_springConstant");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant");
rangeElement = document.getElementById('graph_R_sl');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_R_sl',1,"physics_springLength");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength");
rangeElement = document.getElementById('graph_R_damp');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_R_damp',1,"physics_damping");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping");
rangeElement = document.getElementById('graph_H_nd');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_nd',1,"physics_hierarchicalRepulsion_nodeDistance");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance");
rangeElement = document.getElementById('graph_H_cg');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_cg',1,"physics_centralGravity");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity");
rangeElement = document.getElementById('graph_H_sc');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_sc',1,"physics_springConstant");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant");
rangeElement = document.getElementById('graph_H_sl');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_sl',1,"physics_springLength");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength");
rangeElement = document.getElementById('graph_H_damp');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_damp',1,"physics_damping");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping");
rangeElement = document.getElementById('graph_H_direction');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_direction',hierarchicalLayoutDirections,"hierarchicalLayout_direction");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction");
rangeElement = document.getElementById('graph_H_levsep');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_levsep',1,"hierarchicalLayout_levelSeparation");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation");
rangeElement = document.getElementById('graph_H_nspac');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_nspac',1,"hierarchicalLayout_nodeSpacing");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing");
var radioButton1 = document.getElementById("graph_physicsMethod1");
var radioButton2 = document.getElementById("graph_physicsMethod2");
@@ -11912,8 +11899,12 @@ var physicsMixin = {
graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this);
graph_repositionNodes.onclick = graphRepositionNodes.bind(this);
graph_generateOptions.onclick = graphGenerateOptions.bind(this);
- if (this.constants.smoothCurves == true) {graph_toggleSmooth.style.background = "#A4FF56";}
- else {graph_toggleSmooth.style.background = "#FF8532";}
+ if (this.constants.smoothCurves == true) {
+ graph_toggleSmooth.style.background = "#A4FF56";
+ }
+ else {
+ graph_toggleSmooth.style.background = "#FF8532";
+ }
switchConfigurations.apply(this);
@@ -11924,7 +11915,7 @@ var physicsMixin = {
}
},
- _overWriteGraphConstants : function(constantsVariableName, value) {
+ _overWriteGraphConstants: function (constantsVariableName, value) {
var nameArray = constantsVariableName.split("_");
if (nameArray.length == 1) {
this.constants[nameArray[0]] = value;
@@ -11936,7 +11927,7 @@ var physicsMixin = {
this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value;
}
}
-}
+};
function graphToggleSmoothCurves () {
this.constants.smoothCurves = !this.constants.smoothCurves;
@@ -11965,7 +11956,7 @@ function graphRepositionNodes () {
};
function graphGenerateOptions () {
- var options = "No options are required, default values used."
+ var options = "No options are required, default values used.";
var optionsSpecific = [];
var radioButton1 = document.getElementById("graph_physicsMethod1");
var radioButton2 = document.getElementById("graph_physicsMethod2");
@@ -11976,8 +11967,8 @@ function graphGenerateOptions () {
if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);}
if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);}
if (optionsSpecific.length != 0) {
- options = "var options = {"
- options += "physics: {barnesHut: {"
+ options = "var options = {";
+ options += "physics: {barnesHut: {";
for (var i = 0; i < optionsSpecific.length; i++) {
options += optionsSpecific[i];
if (i < optionsSpecific.length - 1) {
@@ -11996,7 +11987,7 @@ function graphGenerateOptions () {
}
}
else if (radioButton2.checked == true) {
- options = "var options = {"
+ options = "var options = {";
options += "physics: {barnesHut: {enabled: false}";
if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);}
if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);}
@@ -12004,7 +11995,7 @@ function graphGenerateOptions () {
if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);}
if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);}
if (optionsSpecific.length != 0) {
- options += ", repulsion: {"
+ options += ", repulsion: {";
for (var i = 0; i < optionsSpecific.length; i++) {
options += optionsSpecific[i];
if (i < optionsSpecific.length - 1) {
@@ -12020,14 +12011,14 @@ function graphGenerateOptions () {
options += '};'
}
else {
- options = "var options = {"
+ options = "var options = {";
if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);}
if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);}
if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);}
if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);}
if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);}
if (optionsSpecific.length != 0) {
- options += "physics: {hierarchicalRepulsion: {"
+ options += "physics: {hierarchicalRepulsion: {";
for (var i = 0; i < optionsSpecific.length; i++) {
options += optionsSpecific[i];
if (i < optionsSpecific.length - 1) {
@@ -12063,7 +12054,7 @@ function graphGenerateOptions () {
function switchConfigurations () {
- var ids = ["graph_BH_table","graph_R_table","graph_H_table"]
+ var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"];
var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value;
var tableId = "graph_" + radioButton + "_table";
var table = document.getElementById(tableId);
@@ -12136,8 +12127,8 @@ var hierarchalRepulsionMixin = {
* This field is linearly approximated.
*
* @private
- */
- _calculateNodeForces : function() {
+ */
+ _calculateNodeForces: function () {
var dx, dy, distance, fx, fy, combinedClusterSize,
repulsingForce, node1, node2, i, j;
@@ -12146,7 +12137,7 @@ var hierarchalRepulsionMixin = {
// approximation constants
var b = 5;
- var a_base = 0.5*-b;
+ var a_base = 0.5 * -b;
// repulsing forces between nodes
@@ -12155,10 +12146,10 @@ var hierarchalRepulsionMixin = {
// we loop from i over all but the last entree in the array
// j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j
- for (i = 0; i < nodeIndices.length-1; i++) {
+ for (i = 0; i < nodeIndices.length - 1; i++) {
node1 = nodes[nodeIndices[i]];
- for (j = i+1; j < nodeIndices.length; j++) {
+ for (j = i + 1; j < nodeIndices.length; j++) {
node2 = nodes[nodeIndices[j]];
dx = node2.x - node1.x;
@@ -12166,7 +12157,7 @@ var hierarchalRepulsionMixin = {
distance = Math.sqrt(dx * dx + dy * dy);
var a = a_base / minimumDistance;
- if (distance < 2*minimumDistance) {
+ if (distance < 2 * minimumDistance) {
repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness))
// normalize force with
@@ -12174,7 +12165,7 @@ var hierarchalRepulsionMixin = {
distance = 0.01;
}
else {
- repulsingForce = repulsingForce/distance;
+ repulsingForce = repulsingForce / distance;
}
fx = dx * repulsingForce;
fy = dy * repulsingForce;
@@ -12187,7 +12178,7 @@ var hierarchalRepulsionMixin = {
}
}
}
-}
+};
/**
* Created by Alex on 2/10/14.
*/
@@ -12575,8 +12566,8 @@ var repulsionMixin = {
* This field is linearly approximated.
*
* @private
- */
- _calculateNodeForces : function() {
+ */
+ _calculateNodeForces: function () {
var dx, dy, angle, distance, fx, fy, combinedClusterSize,
repulsingForce, node1, node2, i, j;
@@ -12584,8 +12575,8 @@ var repulsionMixin = {
var nodeIndices = this.calculationNodeIndices;
// approximation constants
- var a_base = -2/3;
- var b = 4/3;
+ var a_base = -2 / 3;
+ var b = 4 / 3;
// repulsing forces between nodes
var nodeDistance = this.constants.physics.repulsion.nodeDistance;
@@ -12593,9 +12584,9 @@ var repulsionMixin = {
// we loop from i over all but the last entree in the array
// j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j
- for (i = 0; i < nodeIndices.length-1; i++) {
+ for (i = 0; i < nodeIndices.length - 1; i++) {
node1 = nodes[nodeIndices[i]];
- for (j = i+1; j < nodeIndices.length; j++) {
+ for (j = i + 1; j < nodeIndices.length; j++) {
node2 = nodes[nodeIndices[j]];
combinedClusterSize = node1.clusterSize + node2.clusterSize - 2;
@@ -12605,8 +12596,8 @@ var repulsionMixin = {
minimumDistance = (combinedClusterSize == 0) ? nodeDistance : (nodeDistance * (1 + combinedClusterSize * this.constants.clustering.distanceAmplification));
var a = a_base / minimumDistance;
- if (distance < 2*minimumDistance) {
- if (distance < 0.5*minimumDistance) {
+ if (distance < 2 * minimumDistance) {
+ if (distance < 0.5 * minimumDistance) {
repulsingForce = 1.0;
}
else {
@@ -12615,7 +12606,7 @@ var repulsionMixin = {
// amplify the repulsion for clusters.
repulsingForce *= (combinedClusterSize == 0) ? 1 : 1 + combinedClusterSize * this.constants.clustering.forceAmplification;
- repulsingForce = repulsingForce/distance;
+ repulsingForce = repulsingForce / distance;
fx = dx * repulsingForce;
fy = dy * repulsingForce;
@@ -12628,7 +12619,7 @@ var repulsionMixin = {
}
}
}
-}
+};
var HierarchicalLayoutMixin = {
@@ -12681,7 +12672,7 @@ var HierarchicalLayoutMixin = {
// if the user defined some levels but not all, alert and run without hierarchical layout
if (undefinedLevel == true && definedLevel == true) {
- alert("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.")
+ alert("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");
this.zoomExtent(true,this.constants.clustering.enabled);
if (!this.constants.clustering.enabled) {
this.start();
@@ -13016,7 +13007,7 @@ var manipulationMixin = {
// reset global variables
this.blockConnectingEdgeSelection = false;
- this.forceAppendSelection = false
+ this.forceAppendSelection = false;
if (this.editMode == true) {
while (this.manipulationDiv.hasChildNodes()) {
@@ -13039,7 +13030,7 @@ var manipulationMixin = {
this.manipulationDiv.innerHTML += "" +
"" +
"" +
- ""+this.constants.labels['delete'] +"";
+ ""+this.constants.labels['del'] +"";
}
@@ -13065,7 +13056,7 @@ var manipulationMixin = {
else {
this.editModeDiv.innerHTML = "" +
"" +
- ""+this.constants.labels['edit'] +""
+ "" + this.constants.labels['edit'] + "";
var editModeButton = document.getElementById("graph-manipulate-editModeButton");
editModeButton.onclick = this._toggleEditMode.bind(this);
}
@@ -13209,7 +13200,7 @@ var manipulationMixin = {
var connectFromId = this.edges['connectionEdge'].fromId;
// remove the temporary nodes and edge
- delete this.edges['connectionEdge']
+ delete this.edges['connectionEdge'];
delete this.sectors['support']['nodes']['targetNode'];
delete this.sectors['support']['nodes']['targetViaNode'];
@@ -13276,7 +13267,7 @@ var manipulationMixin = {
if (this.triggerFunctions.connect.length == 2) {
var me = this;
this.triggerFunctions.connect(defaultData, function(finalizedData) {
- me.edgesData.add(finalizedData)
+ me.edgesData.add(finalizedData);
me.moving = true;
me.start();
});
@@ -13288,7 +13279,7 @@ var manipulationMixin = {
}
}
else {
- this.edgesData.add(defaultData)
+ this.edgesData.add(defaultData);
this.moving = true;
this.start();
}
@@ -13345,14 +13336,14 @@ var manipulationMixin = {
if (!this._clusterInSelection()) {
var selectedNodes = this.getSelectedNodes();
var selectedEdges = this.getSelectedEdges();
- if (this.triggerFunctions.delete) {
+ if (this.triggerFunctions.del) {
var me = this;
var data = {nodes: selectedNodes, edges: selectedEdges};
- if (this.triggerFunctions.delete.length = 2) {
- this.triggerFunctions.delete(data, function (finalizedData) {
+ if (this.triggerFunctions.del.length = 2) {
+ this.triggerFunctions.del(data, function (finalizedData) {
me.edgesData.remove(finalizedData.edges);
me.nodesData.remove(finalizedData.nodes);
- this._unselectAll();
+ me._unselectAll();
me.moving = true;
me.start();
});
@@ -15859,7 +15850,7 @@ var graphMixinLoaders = {
* @param {Object} sourceVariable | this object has to contain functions.
* @private
*/
- _loadMixin : function(sourceVariable) {
+ _loadMixin: function (sourceVariable) {
for (var mixinFunction in sourceVariable) {
if (sourceVariable.hasOwnProperty(mixinFunction)) {
Graph.prototype[mixinFunction] = sourceVariable[mixinFunction];
@@ -15874,7 +15865,7 @@ var graphMixinLoaders = {
* @param {Object} sourceVariable | this object has to contain functions.
* @private
*/
- _clearMixin : function(sourceVariable) {
+ _clearMixin: function (sourceVariable) {
for (var mixinFunction in sourceVariable) {
if (sourceVariable.hasOwnProperty(mixinFunction)) {
Graph.prototype[mixinFunction] = undefined;
@@ -15888,15 +15879,13 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadPhysicsSystem : function() {
+ _loadPhysicsSystem: function () {
this._loadMixin(physicsMixin);
this._loadSelectedForceSolver();
if (this.constants.configurePhysics == true) {
this._loadPhysicsConfiguration();
}
- },
-
-
+ },
/**
@@ -15904,7 +15893,7 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadClusterSystem : function() {
+ _loadClusterSystem: function () {
this.clusterSession = 0;
this.hubThreshold = 5;
this._loadMixin(ClusterMixin);
@@ -15916,26 +15905,26 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadSectorSystem : function() {
+ _loadSectorSystem: function () {
this.sectors = { },
- this.activeSector = ["default"];
+ this.activeSector = ["default"];
this.sectors["active"] = { },
- this.sectors["active"]["default"] = {"nodes":{},
- "edges":{},
- "nodeIndices":[],
- "formationScale": 1.0,
- "drawingNode": undefined };
+ this.sectors["active"]["default"] = {"nodes": {},
+ "edges": {},
+ "nodeIndices": [],
+ "formationScale": 1.0,
+ "drawingNode": undefined };
this.sectors["frozen"] = {},
- this.sectors["support"] = {"nodes":{},
- "edges":{},
- "nodeIndices":[],
- "formationScale": 1.0,
- "drawingNode": undefined };
+ this.sectors["support"] = {"nodes": {},
+ "edges": {},
+ "nodeIndices": [],
+ "formationScale": 1.0,
+ "drawingNode": undefined };
this.nodeIndices = this.sectors["active"]["default"]["nodeIndices"]; // the node indices list is used to speed up the computation of the repulsion fields
this._loadMixin(SectorMixin);
- },
+ },
/**
@@ -15943,11 +15932,11 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadSelectionSystem : function() {
- this.selectionObj = {nodes:{},edges:{}};
+ _loadSelectionSystem: function () {
+ this.selectionObj = {nodes: {}, edges: {}};
this._loadMixin(SelectionMixin);
- },
+ },
/**
@@ -15955,7 +15944,7 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadManipulationSystem : function() {
+ _loadManipulationSystem: function () {
// reset global variables -- these are used by the selection of nodes and edges.
this.blockConnectingEdgeSelection = false;
this.forceAppendSelection = false
@@ -16018,7 +16007,7 @@ var graphMixinLoaders = {
this._clearMixin(manipulationMixin);
}
}
- },
+ },
/**
@@ -16026,7 +16015,7 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadNavigationControls : function() {
+ _loadNavigationControls: function () {
this._loadMixin(NavigationMixin);
// the clean function removes the button divs, this is done to remove the bindings.
@@ -16034,7 +16023,7 @@ var graphMixinLoaders = {
if (this.constants.navigation.enabled == true) {
this._loadNavigationElements();
}
- },
+ },
/**
@@ -16042,11 +16031,11 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadHierarchySystem : function() {
+ _loadHierarchySystem: function () {
this._loadMixin(HierarchicalLayoutMixin);
}
-}
+};
/**
* @constructor Graph
@@ -16080,7 +16069,7 @@ function Graph (container, data, options) {
this.initializing = true;
// these functions are triggered when the dataset is edited
- this.triggerFunctions = {add:null,edit:null,connect:null,delete:null};
+ this.triggerFunctions = {add:null,edit:null,connect:null,del:null};
// set constant values
this.constants = {
@@ -16207,7 +16196,7 @@ function Graph (container, data, options) {
add:"Add Node",
edit:"Edit",
link:"Add Link",
- delete:"Delete selected",
+ del:"Delete selected",
editNode:"Edit Node",
back:"Back",
addDescription:"Click in an empty space to place a new node.",
@@ -16584,7 +16573,7 @@ Graph.prototype.setOptions = function (options) {
}
if (options.onDelete) {
- this.triggerFunctions.delete = options.onDelete;
+ this.triggerFunctions.del = options.onDelete;
}
if (options.physics) {
@@ -18005,15 +17994,20 @@ Graph.prototype.start = function() {
if (this.moving || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0) {
if (!this.timer) {
var ua = navigator.userAgent.toLowerCase();
- if (ua.indexOf('safari') != -1) {
+
+ var requiresTimeout = false;
+ if (ua.indexOf('msie 9.0') != -1) { // IE 9
+ requiresTimeout = true;
+ }
+ else if (ua.indexOf('safari') != -1) { // safari
if (ua.indexOf('chrome') <= -1) {
- // safari
- this.timer = window.setTimeout(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function
- }
- else {
- this.timer = window.requestAnimationFrame(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function
+ requiresTimeout = true;
}
}
+
+ if (requiresTimeout == true) {
+ this.timer = window.setTimeout(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function
+ }
else{
this.timer = window.requestAnimationFrame(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function
}
diff --git a/docs/graph.html b/docs/graph.html
index b62e9f17..bac86e1b 100644
--- a/docs/graph.html
+++ b/docs/graph.html
@@ -1857,7 +1857,7 @@ var options: {
add:"Add Node",
edit:"Edit",
link:"Add Link",
- delete:"Delete selected",
+ del:"Delete selected",
editNode:"Edit Node",
back:"Back",
addDescription:"Click in an empty space to place a new node.",
diff --git a/src/graph/Graph.js b/src/graph/Graph.js
index dd85955b..8dd9db68 100644
--- a/src/graph/Graph.js
+++ b/src/graph/Graph.js
@@ -30,7 +30,7 @@ function Graph (container, data, options) {
this.initializing = true;
// these functions are triggered when the dataset is edited
- this.triggerFunctions = {add:null,edit:null,connect:null,delete:null};
+ this.triggerFunctions = {add:null,edit:null,connect:null,del:null};
// set constant values
this.constants = {
@@ -157,7 +157,7 @@ function Graph (container, data, options) {
add:"Add Node",
edit:"Edit",
link:"Add Link",
- delete:"Delete selected",
+ del:"Delete selected",
editNode:"Edit Node",
back:"Back",
addDescription:"Click in an empty space to place a new node.",
@@ -534,7 +534,7 @@ Graph.prototype.setOptions = function (options) {
}
if (options.onDelete) {
- this.triggerFunctions.delete = options.onDelete;
+ this.triggerFunctions.del = options.onDelete;
}
if (options.physics) {
@@ -1955,15 +1955,20 @@ Graph.prototype.start = function() {
if (this.moving || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0) {
if (!this.timer) {
var ua = navigator.userAgent.toLowerCase();
- if (ua.indexOf('safari') != -1) {
+
+ var requiresTimeout = false;
+ if (ua.indexOf('msie 9.0') != -1) { // IE 9
+ requiresTimeout = true;
+ }
+ else if (ua.indexOf('safari') != -1) { // safari
if (ua.indexOf('chrome') <= -1) {
- // safari
- this.timer = window.setTimeout(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function
- }
- else {
- this.timer = window.requestAnimationFrame(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function
+ requiresTimeout = true;
}
}
+
+ if (requiresTimeout == true) {
+ this.timer = window.setTimeout(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function
+ }
else{
this.timer = window.requestAnimationFrame(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function
}
diff --git a/src/graph/graphMixins/HierarchicalLayoutMixin.js b/src/graph/graphMixins/HierarchicalLayoutMixin.js
index ca18927f..560978fc 100644
--- a/src/graph/graphMixins/HierarchicalLayoutMixin.js
+++ b/src/graph/graphMixins/HierarchicalLayoutMixin.js
@@ -50,7 +50,7 @@ var HierarchicalLayoutMixin = {
// if the user defined some levels but not all, alert and run without hierarchical layout
if (undefinedLevel == true && definedLevel == true) {
- alert("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.")
+ alert("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");
this.zoomExtent(true,this.constants.clustering.enabled);
if (!this.constants.clustering.enabled) {
this.start();
diff --git a/src/graph/graphMixins/ManipulationMixin.js b/src/graph/graphMixins/ManipulationMixin.js
index 7e96ad2f..09147d7a 100644
--- a/src/graph/graphMixins/ManipulationMixin.js
+++ b/src/graph/graphMixins/ManipulationMixin.js
@@ -74,7 +74,7 @@ var manipulationMixin = {
// reset global variables
this.blockConnectingEdgeSelection = false;
- this.forceAppendSelection = false
+ this.forceAppendSelection = false;
if (this.editMode == true) {
while (this.manipulationDiv.hasChildNodes()) {
@@ -97,7 +97,7 @@ var manipulationMixin = {
this.manipulationDiv.innerHTML += "" +
"" +
"" +
- ""+this.constants.labels['delete'] +"";
+ ""+this.constants.labels['del'] +"";
}
@@ -123,7 +123,7 @@ var manipulationMixin = {
else {
this.editModeDiv.innerHTML = "" +
"" +
- ""+this.constants.labels['edit'] +""
+ "" + this.constants.labels['edit'] + "";
var editModeButton = document.getElementById("graph-manipulate-editModeButton");
editModeButton.onclick = this._toggleEditMode.bind(this);
}
@@ -267,7 +267,7 @@ var manipulationMixin = {
var connectFromId = this.edges['connectionEdge'].fromId;
// remove the temporary nodes and edge
- delete this.edges['connectionEdge']
+ delete this.edges['connectionEdge'];
delete this.sectors['support']['nodes']['targetNode'];
delete this.sectors['support']['nodes']['targetViaNode'];
@@ -334,7 +334,7 @@ var manipulationMixin = {
if (this.triggerFunctions.connect.length == 2) {
var me = this;
this.triggerFunctions.connect(defaultData, function(finalizedData) {
- me.edgesData.add(finalizedData)
+ me.edgesData.add(finalizedData);
me.moving = true;
me.start();
});
@@ -346,7 +346,7 @@ var manipulationMixin = {
}
}
else {
- this.edgesData.add(defaultData)
+ this.edgesData.add(defaultData);
this.moving = true;
this.start();
}
@@ -403,14 +403,14 @@ var manipulationMixin = {
if (!this._clusterInSelection()) {
var selectedNodes = this.getSelectedNodes();
var selectedEdges = this.getSelectedEdges();
- if (this.triggerFunctions.delete) {
+ if (this.triggerFunctions.del) {
var me = this;
var data = {nodes: selectedNodes, edges: selectedEdges};
- if (this.triggerFunctions.delete.length = 2) {
- this.triggerFunctions.delete(data, function (finalizedData) {
+ if (this.triggerFunctions.del.length = 2) {
+ this.triggerFunctions.del(data, function (finalizedData) {
me.edgesData.remove(finalizedData.edges);
me.nodesData.remove(finalizedData.nodes);
- this._unselectAll();
+ me._unselectAll();
me.moving = true;
me.start();
});
diff --git a/src/graph/graphMixins/MixinLoader.js b/src/graph/graphMixins/MixinLoader.js
index c4000fdb..23f7dc07 100644
--- a/src/graph/graphMixins/MixinLoader.js
+++ b/src/graph/graphMixins/MixinLoader.js
@@ -11,7 +11,7 @@ var graphMixinLoaders = {
* @param {Object} sourceVariable | this object has to contain functions.
* @private
*/
- _loadMixin : function(sourceVariable) {
+ _loadMixin: function (sourceVariable) {
for (var mixinFunction in sourceVariable) {
if (sourceVariable.hasOwnProperty(mixinFunction)) {
Graph.prototype[mixinFunction] = sourceVariable[mixinFunction];
@@ -26,7 +26,7 @@ var graphMixinLoaders = {
* @param {Object} sourceVariable | this object has to contain functions.
* @private
*/
- _clearMixin : function(sourceVariable) {
+ _clearMixin: function (sourceVariable) {
for (var mixinFunction in sourceVariable) {
if (sourceVariable.hasOwnProperty(mixinFunction)) {
Graph.prototype[mixinFunction] = undefined;
@@ -40,15 +40,13 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadPhysicsSystem : function() {
+ _loadPhysicsSystem: function () {
this._loadMixin(physicsMixin);
this._loadSelectedForceSolver();
if (this.constants.configurePhysics == true) {
this._loadPhysicsConfiguration();
}
- },
-
-
+ },
/**
@@ -56,7 +54,7 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadClusterSystem : function() {
+ _loadClusterSystem: function () {
this.clusterSession = 0;
this.hubThreshold = 5;
this._loadMixin(ClusterMixin);
@@ -68,26 +66,26 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadSectorSystem : function() {
+ _loadSectorSystem: function () {
this.sectors = { },
- this.activeSector = ["default"];
+ this.activeSector = ["default"];
this.sectors["active"] = { },
- this.sectors["active"]["default"] = {"nodes":{},
- "edges":{},
- "nodeIndices":[],
- "formationScale": 1.0,
- "drawingNode": undefined };
+ this.sectors["active"]["default"] = {"nodes": {},
+ "edges": {},
+ "nodeIndices": [],
+ "formationScale": 1.0,
+ "drawingNode": undefined };
this.sectors["frozen"] = {},
- this.sectors["support"] = {"nodes":{},
- "edges":{},
- "nodeIndices":[],
- "formationScale": 1.0,
- "drawingNode": undefined };
+ this.sectors["support"] = {"nodes": {},
+ "edges": {},
+ "nodeIndices": [],
+ "formationScale": 1.0,
+ "drawingNode": undefined };
this.nodeIndices = this.sectors["active"]["default"]["nodeIndices"]; // the node indices list is used to speed up the computation of the repulsion fields
this._loadMixin(SectorMixin);
- },
+ },
/**
@@ -95,11 +93,11 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadSelectionSystem : function() {
- this.selectionObj = {nodes:{},edges:{}};
+ _loadSelectionSystem: function () {
+ this.selectionObj = {nodes: {}, edges: {}};
this._loadMixin(SelectionMixin);
- },
+ },
/**
@@ -107,7 +105,7 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadManipulationSystem : function() {
+ _loadManipulationSystem: function () {
// reset global variables -- these are used by the selection of nodes and edges.
this.blockConnectingEdgeSelection = false;
this.forceAppendSelection = false
@@ -170,7 +168,7 @@ var graphMixinLoaders = {
this._clearMixin(manipulationMixin);
}
}
- },
+ },
/**
@@ -178,7 +176,7 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadNavigationControls : function() {
+ _loadNavigationControls: function () {
this._loadMixin(NavigationMixin);
// the clean function removes the button divs, this is done to remove the bindings.
@@ -186,7 +184,7 @@ var graphMixinLoaders = {
if (this.constants.navigation.enabled == true) {
this._loadNavigationElements();
}
- },
+ },
/**
@@ -194,8 +192,8 @@ var graphMixinLoaders = {
*
* @private
*/
- _loadHierarchySystem : function() {
+ _loadHierarchySystem: function () {
this._loadMixin(HierarchicalLayoutMixin);
}
-}
+};
diff --git a/src/graph/graphMixins/physics/HierarchialRepulsion.js b/src/graph/graphMixins/physics/HierarchialRepulsion.js
index 37037fcf..8ccb40b8 100644
--- a/src/graph/graphMixins/physics/HierarchialRepulsion.js
+++ b/src/graph/graphMixins/physics/HierarchialRepulsion.js
@@ -10,8 +10,8 @@ var hierarchalRepulsionMixin = {
* This field is linearly approximated.
*
* @private
- */
- _calculateNodeForces : function() {
+ */
+ _calculateNodeForces: function () {
var dx, dy, distance, fx, fy, combinedClusterSize,
repulsingForce, node1, node2, i, j;
@@ -20,7 +20,7 @@ var hierarchalRepulsionMixin = {
// approximation constants
var b = 5;
- var a_base = 0.5*-b;
+ var a_base = 0.5 * -b;
// repulsing forces between nodes
@@ -29,10 +29,10 @@ var hierarchalRepulsionMixin = {
// we loop from i over all but the last entree in the array
// j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j
- for (i = 0; i < nodeIndices.length-1; i++) {
+ for (i = 0; i < nodeIndices.length - 1; i++) {
node1 = nodes[nodeIndices[i]];
- for (j = i+1; j < nodeIndices.length; j++) {
+ for (j = i + 1; j < nodeIndices.length; j++) {
node2 = nodes[nodeIndices[j]];
dx = node2.x - node1.x;
@@ -40,7 +40,7 @@ var hierarchalRepulsionMixin = {
distance = Math.sqrt(dx * dx + dy * dy);
var a = a_base / minimumDistance;
- if (distance < 2*minimumDistance) {
+ if (distance < 2 * minimumDistance) {
repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness))
// normalize force with
@@ -48,7 +48,7 @@ var hierarchalRepulsionMixin = {
distance = 0.01;
}
else {
- repulsingForce = repulsingForce/distance;
+ repulsingForce = repulsingForce / distance;
}
fx = dx * repulsingForce;
fy = dy * repulsingForce;
@@ -61,4 +61,4 @@ var hierarchalRepulsionMixin = {
}
}
}
-}
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/src/graph/graphMixins/physics/PhysicsMixin.js b/src/graph/graphMixins/physics/PhysicsMixin.js
index da319f8a..946307b5 100644
--- a/src/graph/graphMixins/physics/PhysicsMixin.js
+++ b/src/graph/graphMixins/physics/PhysicsMixin.js
@@ -10,7 +10,7 @@ var physicsMixin = {
*
* @private
*/
- _toggleBarnesHut : function() {
+ _toggleBarnesHut: function () {
this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled;
this._loadSelectedForceSolver();
this.moving = true;
@@ -18,22 +18,21 @@ var physicsMixin = {
},
-
/**
* This loads the node force solver based on the barnes hut or repulsion algorithm
*
* @private
*/
- _loadSelectedForceSolver : function() {
+ _loadSelectedForceSolver: function () {
// this overloads the this._calculateNodeForces
if (this.constants.physics.barnesHut.enabled == true) {
this._clearMixin(repulsionMixin);
this._clearMixin(hierarchalRepulsionMixin);
this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity;
- this.constants.physics.springLength = this.constants.physics.barnesHut.springLength;
+ this.constants.physics.springLength = this.constants.physics.barnesHut.springLength;
this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant;
- this.constants.physics.damping = this.constants.physics.barnesHut.damping;
+ this.constants.physics.damping = this.constants.physics.barnesHut.damping;
this._loadMixin(barnesHutMixin);
}
@@ -42,9 +41,9 @@ var physicsMixin = {
this._clearMixin(repulsionMixin);
this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity;
- this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength;
+ this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength;
this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant;
- this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping;
+ this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping;
this._loadMixin(hierarchalRepulsionMixin);
}
@@ -54,9 +53,9 @@ var physicsMixin = {
this.barnesHutTree = undefined;
this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity;
- this.constants.physics.springLength = this.constants.physics.repulsion.springLength;
+ this.constants.physics.springLength = this.constants.physics.repulsion.springLength;
this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant;
- this.constants.physics.damping = this.constants.physics.repulsion.damping;
+ this.constants.physics.damping = this.constants.physics.repulsion.damping;
this._loadMixin(repulsionMixin);
}
@@ -68,10 +67,10 @@ var physicsMixin = {
*
* @private
*/
- _initializeForceCalculation : function() {
+ _initializeForceCalculation: function () {
// stop calculation if there is only one node
if (this.nodeIndices.length == 1) {
- this.nodes[this.nodeIndices[0]]._setForce(0,0);
+ this.nodes[this.nodeIndices[0]]._setForce(0, 0);
}
else {
// if there are too many nodes on screen, we cluster without repositioning
@@ -90,7 +89,7 @@ var physicsMixin = {
* Forces are caused by: edges, repulsing forces between nodes, gravity
* @private
*/
- _calculateForces : function() {
+ _calculateForces: function () {
// Gravity is required to keep separated groups from floating off
// the forces are reset to zero in this loop by using _setForce instead
// of _addForce
@@ -115,7 +114,7 @@ var physicsMixin = {
*
* @private
*/
- _updateCalculationNodes : function() {
+ _updateCalculationNodes: function () {
if (this.constants.smoothCurves == true) {
this.calculationNodes = {};
this.calculationNodeIndices = [];
@@ -132,7 +131,7 @@ var physicsMixin = {
this.calculationNodes[supportNodeId] = supportNodes[supportNodeId];
}
else {
- supportNodes[supportNodeId]._setForce(0,0);
+ supportNodes[supportNodeId]._setForce(0, 0);
}
}
}
@@ -155,7 +154,7 @@ var physicsMixin = {
*
* @private
*/
- _calculateGravitationalForces : function() {
+ _calculateGravitationalForces: function () {
var dx, dy, distance, node, i;
var nodes = this.calculationNodes;
var gravity = this.constants.physics.centralGravity;
@@ -168,7 +167,7 @@ var physicsMixin = {
if (this._sector() == "default" && gravity != 0) {
dx = -node.x;
dy = -node.y;
- distance = Math.sqrt(dx*dx + dy*dy);
+ distance = Math.sqrt(dx * dx + dy * dy);
gravityForce = (distance == 0) ? 0 : (gravity / distance);
node.fx = dx * gravityForce;
@@ -187,7 +186,7 @@ var physicsMixin = {
*
* @private
*/
- _calculateSpringForces : function() {
+ _calculateSpringForces: function () {
var edgeLength, edge, edgeId;
var dx, dy, fx, fy, springForce, length;
var edges = this.edges;
@@ -205,7 +204,7 @@ var physicsMixin = {
dx = (edge.from.x - edge.to.x);
dy = (edge.from.y - edge.to.y);
- length = Math.sqrt(dx * dx + dy * dy);
+ length = Math.sqrt(dx * dx + dy * dy);
if (length == 0) {
length = 0.01;
@@ -232,7 +231,7 @@ var physicsMixin = {
*
* @private
*/
- _calculateSpringForcesWithSupport : function() {
+ _calculateSpringForcesWithSupport: function () {
var edgeLength, edge, edgeId, combinedClusterSize;
var edges = this.edges;
@@ -254,8 +253,8 @@ var physicsMixin = {
// this implies that the edges between big clusters are longer
edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth;
- this._calculateSpringForce(node1,node2,0.5*edgeLength);
- this._calculateSpringForce(node2,node3,0.5*edgeLength);
+ this._calculateSpringForce(node1, node2, 0.5 * edgeLength);
+ this._calculateSpringForce(node2, node3, 0.5 * edgeLength);
}
}
}
@@ -272,12 +271,12 @@ var physicsMixin = {
* @param edgeLength
* @private
*/
- _calculateSpringForce : function(node1,node2,edgeLength) {
+ _calculateSpringForce: function (node1, node2, edgeLength) {
var dx, dy, fx, fy, springForce, length;
dx = (node1.x - node2.x);
dy = (node1.y - node2.y);
- length = Math.sqrt(dx * dx + dy * dy);
+ length = Math.sqrt(dx * dx + dy * dy);
if (length == 0) {
length = 0.01;
@@ -299,137 +298,137 @@ var physicsMixin = {
* Load the HTML for the physics config and bind it
* @private
*/
- _loadPhysicsConfiguration : function() {
+ _loadPhysicsConfiguration: function () {
if (this.physicsConfiguration === undefined) {
this.backupConstants = {};
- util.copyObject(this.constants,this.backupConstants);
+ util.copyObject(this.constants, this.backupConstants);
- var hierarchicalLayoutDirections = ["LR","RL","UD","DU"];
+ var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"];
this.physicsConfiguration = document.createElement('div');
this.physicsConfiguration.className = "PhysicsConfiguration";
this.physicsConfiguration.innerHTML = '' +
'' +
+ '' +
+ '' +
- ''+
- ''+
- ''+
- 'Hierarchical |
'+
- ''+
- 'nodeDistance | 0 | | 300 | | '+
- '
'+
- ''+
- 'centralGravity | 0 | | 3 | | '+
- '
'+
- ''+
- 'springLength | 0 | | 500 | | '+
- '
'+
- ''+
- 'springConstant | 0 | | 0.5 | | '+
- '
'+
- ''+
- 'damping | 0 | | 0.3 | | '+
- '
'+
- ''+
- 'direction | 1 | | 4 | | '+
- '
'+
- ''+
- 'levelSeparation | 1 | | 500 | | '+
- '
'+
- ''+
- 'nodeSpacing | 1 | | 500 | | '+
- '
'+
+ '' +
''
- this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement);
+ this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement);
this.optionsDiv = document.createElement("div");
this.optionsDiv.style.fontSize = "14px";
this.optionsDiv.style.fontFamily = "verdana";
- this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);
+ this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement);
var rangeElement;
rangeElement = document.getElementById('graph_BH_gc');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_BH_gc',-1,"physics_barnesHut_gravitationalConstant");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant");
rangeElement = document.getElementById('graph_BH_cg');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_BH_cg',1,"physics_centralGravity");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity");
rangeElement = document.getElementById('graph_BH_sc');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_BH_sc',1,"physics_springConstant");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant");
rangeElement = document.getElementById('graph_BH_sl');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_BH_sl',1,"physics_springLength");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength");
rangeElement = document.getElementById('graph_BH_damp');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_BH_damp',1,"physics_damping");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping");
rangeElement = document.getElementById('graph_R_nd');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_R_nd',1,"physics_repulsion_nodeDistance");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance");
rangeElement = document.getElementById('graph_R_cg');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_R_cg',1,"physics_centralGravity");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity");
rangeElement = document.getElementById('graph_R_sc');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_R_sc',1,"physics_springConstant");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant");
rangeElement = document.getElementById('graph_R_sl');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_R_sl',1,"physics_springLength");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength");
rangeElement = document.getElementById('graph_R_damp');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_R_damp',1,"physics_damping");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping");
rangeElement = document.getElementById('graph_H_nd');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_nd',1,"physics_hierarchicalRepulsion_nodeDistance");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance");
rangeElement = document.getElementById('graph_H_cg');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_cg',1,"physics_centralGravity");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity");
rangeElement = document.getElementById('graph_H_sc');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_sc',1,"physics_springConstant");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant");
rangeElement = document.getElementById('graph_H_sl');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_sl',1,"physics_springLength");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength");
rangeElement = document.getElementById('graph_H_damp');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_damp',1,"physics_damping");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping");
rangeElement = document.getElementById('graph_H_direction');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_direction',hierarchicalLayoutDirections,"hierarchicalLayout_direction");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction");
rangeElement = document.getElementById('graph_H_levsep');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_levsep',1,"hierarchicalLayout_levelSeparation");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation");
rangeElement = document.getElementById('graph_H_nspac');
- rangeElement.onchange = showValueOfRange.bind(this,'graph_H_nspac',1,"hierarchicalLayout_nodeSpacing");
+ rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing");
var radioButton1 = document.getElementById("graph_physicsMethod1");
var radioButton2 = document.getElementById("graph_physicsMethod2");
@@ -449,8 +448,12 @@ var physicsMixin = {
graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this);
graph_repositionNodes.onclick = graphRepositionNodes.bind(this);
graph_generateOptions.onclick = graphGenerateOptions.bind(this);
- if (this.constants.smoothCurves == true) {graph_toggleSmooth.style.background = "#A4FF56";}
- else {graph_toggleSmooth.style.background = "#FF8532";}
+ if (this.constants.smoothCurves == true) {
+ graph_toggleSmooth.style.background = "#A4FF56";
+ }
+ else {
+ graph_toggleSmooth.style.background = "#FF8532";
+ }
switchConfigurations.apply(this);
@@ -461,7 +464,7 @@ var physicsMixin = {
}
},
- _overWriteGraphConstants : function(constantsVariableName, value) {
+ _overWriteGraphConstants: function (constantsVariableName, value) {
var nameArray = constantsVariableName.split("_");
if (nameArray.length == 1) {
this.constants[nameArray[0]] = value;
@@ -473,7 +476,7 @@ var physicsMixin = {
this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value;
}
}
-}
+};
function graphToggleSmoothCurves () {
this.constants.smoothCurves = !this.constants.smoothCurves;
@@ -502,7 +505,7 @@ function graphRepositionNodes () {
};
function graphGenerateOptions () {
- var options = "No options are required, default values used."
+ var options = "No options are required, default values used.";
var optionsSpecific = [];
var radioButton1 = document.getElementById("graph_physicsMethod1");
var radioButton2 = document.getElementById("graph_physicsMethod2");
@@ -513,8 +516,8 @@ function graphGenerateOptions () {
if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);}
if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);}
if (optionsSpecific.length != 0) {
- options = "var options = {"
- options += "physics: {barnesHut: {"
+ options = "var options = {";
+ options += "physics: {barnesHut: {";
for (var i = 0; i < optionsSpecific.length; i++) {
options += optionsSpecific[i];
if (i < optionsSpecific.length - 1) {
@@ -533,7 +536,7 @@ function graphGenerateOptions () {
}
}
else if (radioButton2.checked == true) {
- options = "var options = {"
+ options = "var options = {";
options += "physics: {barnesHut: {enabled: false}";
if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);}
if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);}
@@ -541,7 +544,7 @@ function graphGenerateOptions () {
if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);}
if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);}
if (optionsSpecific.length != 0) {
- options += ", repulsion: {"
+ options += ", repulsion: {";
for (var i = 0; i < optionsSpecific.length; i++) {
options += optionsSpecific[i];
if (i < optionsSpecific.length - 1) {
@@ -557,14 +560,14 @@ function graphGenerateOptions () {
options += '};'
}
else {
- options = "var options = {"
+ options = "var options = {";
if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);}
if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);}
if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);}
if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);}
if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);}
if (optionsSpecific.length != 0) {
- options += "physics: {hierarchicalRepulsion: {"
+ options += "physics: {hierarchicalRepulsion: {";
for (var i = 0; i < optionsSpecific.length; i++) {
options += optionsSpecific[i];
if (i < optionsSpecific.length - 1) {
@@ -600,7 +603,7 @@ function graphGenerateOptions () {
function switchConfigurations () {
- var ids = ["graph_BH_table","graph_R_table","graph_H_table"]
+ var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"];
var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value;
var tableId = "graph_" + radioButton + "_table";
var table = document.getElementById(tableId);
diff --git a/src/graph/graphMixins/physics/Repulsion.js b/src/graph/graphMixins/physics/Repulsion.js
index dccfb9c4..71a9994b 100644
--- a/src/graph/graphMixins/physics/Repulsion.js
+++ b/src/graph/graphMixins/physics/Repulsion.js
@@ -10,8 +10,8 @@ var repulsionMixin = {
* This field is linearly approximated.
*
* @private
- */
- _calculateNodeForces : function() {
+ */
+ _calculateNodeForces: function () {
var dx, dy, angle, distance, fx, fy, combinedClusterSize,
repulsingForce, node1, node2, i, j;
@@ -19,8 +19,8 @@ var repulsionMixin = {
var nodeIndices = this.calculationNodeIndices;
// approximation constants
- var a_base = -2/3;
- var b = 4/3;
+ var a_base = -2 / 3;
+ var b = 4 / 3;
// repulsing forces between nodes
var nodeDistance = this.constants.physics.repulsion.nodeDistance;
@@ -28,9 +28,9 @@ var repulsionMixin = {
// we loop from i over all but the last entree in the array
// j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j
- for (i = 0; i < nodeIndices.length-1; i++) {
+ for (i = 0; i < nodeIndices.length - 1; i++) {
node1 = nodes[nodeIndices[i]];
- for (j = i+1; j < nodeIndices.length; j++) {
+ for (j = i + 1; j < nodeIndices.length; j++) {
node2 = nodes[nodeIndices[j]];
combinedClusterSize = node1.clusterSize + node2.clusterSize - 2;
@@ -40,8 +40,8 @@ var repulsionMixin = {
minimumDistance = (combinedClusterSize == 0) ? nodeDistance : (nodeDistance * (1 + combinedClusterSize * this.constants.clustering.distanceAmplification));
var a = a_base / minimumDistance;
- if (distance < 2*minimumDistance) {
- if (distance < 0.5*minimumDistance) {
+ if (distance < 2 * minimumDistance) {
+ if (distance < 0.5 * minimumDistance) {
repulsingForce = 1.0;
}
else {
@@ -50,7 +50,7 @@ var repulsionMixin = {
// amplify the repulsion for clusters.
repulsingForce *= (combinedClusterSize == 0) ? 1 : 1 + combinedClusterSize * this.constants.clustering.forceAmplification;
- repulsingForce = repulsingForce/distance;
+ repulsingForce = repulsingForce / distance;
fx = dx * repulsingForce;
fy = dy * repulsingForce;
@@ -63,4 +63,4 @@ var repulsionMixin = {
}
}
}
-}
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/src/util.js b/src/util.js
index 67657be8..11fad5cf 100644
--- a/src/util.js
+++ b/src/util.js
@@ -654,53 +654,41 @@ util.option.asElement = function (value, defaultValue) {
-util.GiveDec = function GiveDec(Hex)
-{
- if(Hex == "A")
+util.GiveDec = function GiveDec(Hex) {
+ if (Hex == "A")
Value = 10;
- else
- if(Hex == "B")
+ else if (Hex == "B")
Value = 11;
- else
- if(Hex == "C")
+ else if (Hex == "C")
Value = 12;
- else
- if(Hex == "D")
+ else if (Hex == "D")
Value = 13;
- else
- if(Hex == "E")
+ else if (Hex == "E")
Value = 14;
- else
- if(Hex == "F")
+ else if (Hex == "F")
Value = 15;
else
Value = eval(Hex)
return Value;
-}
+};
-util.GiveHex = function GiveHex(Dec)
-{
- if(Dec == 10)
+util.GiveHex = function GiveHex(Dec) {
+ if (Dec == 10)
Value = "A";
- else
- if(Dec == 11)
+ else if (Dec == 11)
Value = "B";
- else
- if(Dec == 12)
+ else if (Dec == 12)
Value = "C";
- else
- if(Dec == 13)
+ else if (Dec == 13)
Value = "D";
- else
- if(Dec == 14)
+ else if (Dec == 14)
Value = "E";
- else
- if(Dec == 15)
+ else if (Dec == 15)
Value = "F";
else
Value = "" + Dec;
return Value;
-}
+};
/**
* Parse a color property into an object with border, background, and
@@ -853,31 +841,31 @@ util.HSVToRGB = function HSVToRGB(h, s, v) {
return {r:Math.floor(r * 255), g:Math.floor(g * 255), b:Math.floor(b * 255) };
};
-util.HSVToHex = function HSVToHex(h,s,v) {
- var rgb = util.HSVToRGB(h,s,v);
- return util.RGBToHex(rgb.r,rgb.g,rgb.b);
-}
+util.HSVToHex = function HSVToHex(h, s, v) {
+ var rgb = util.HSVToRGB(h, s, v);
+ return util.RGBToHex(rgb.r, rgb.g, rgb.b);
+};
util.hexToHSV = function hexToHSV(hex) {
var rgb = util.hexToRGB(hex);
- return util.RGBToHSV(rgb.r,rgb.g,rgb.b);
-}
+ return util.RGBToHSV(rgb.r, rgb.g, rgb.b);
+};
util.isValidHex = function isValidHex(hex) {
- var isOk = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex);
+ var isOk = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex);
return isOk;
-}
+};
-util.copyObject = function copyObject(objectFrom,objectTo) {
+util.copyObject = function copyObject(objectFrom, objectTo) {
for (var i in objectFrom) {
if (objectFrom.hasOwnProperty(i)) {
if (typeof objectFrom[i] == "object") {
objectTo[i] = {};
- util.copyObject(objectFrom[i],objectTo[i]);
+ util.copyObject(objectFrom[i], objectTo[i]);
}
else {
objectTo[i] = objectFrom[i];
}
}
}
-}
+};