Added zoom to selected nodes feature
This commit is contained in:
parent
f75c2c1f8a
commit
a9fc2f19f4
1 changed files with 117 additions and 58 deletions
|
@ -1453,67 +1453,126 @@ Metamaps.JIT = {
|
||||||
width = $(document).width(),
|
width = $(document).width(),
|
||||||
maxX, minX, maxY, minY, counter = 0;
|
maxX, minX, maxY, minY, counter = 0;
|
||||||
|
|
||||||
var nodes = Metamaps.Visualize.mGraph.graph;
|
|
||||||
|
if (Metamaps.Selected.Nodes.length > 0) {
|
||||||
|
var nodes = Metamaps.Selected.Nodes;
|
||||||
|
|
||||||
|
if(nodes.length > 1){
|
||||||
|
nodes.forEach(function (n) {
|
||||||
|
var x = n.pos.x,
|
||||||
|
y = n.pos.y;
|
||||||
|
|
||||||
|
if (counter == 0){
|
||||||
|
maxX = x;
|
||||||
|
minX = x;
|
||||||
|
maxY = y;
|
||||||
|
minY = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
maxX = Math.max(x,maxX);
|
||||||
|
maxY = Math.max(y,maxY);
|
||||||
|
minX = Math.min(x,minX);
|
||||||
|
minY = Math.min(y,minY);
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
});
|
||||||
|
|
||||||
|
var spanX = maxX - minX;
|
||||||
|
var spanY = maxY - minY;
|
||||||
|
var ratioX = spanX / width;
|
||||||
|
var ratioY = spanY / height;
|
||||||
|
|
||||||
|
var newRatio = Math.max(ratioX,ratioY);
|
||||||
|
|
||||||
|
var canvas = Metamaps.Visualize.mGraph.canvas;
|
||||||
|
|
||||||
|
canvas.scale(1/newRatio*0.8,1/newRatio*0.8);
|
||||||
|
|
||||||
|
counter = 0;
|
||||||
|
|
||||||
|
nodes.forEach(function (n) {
|
||||||
|
var x = n.pos.x,
|
||||||
|
y = n.pos.y;
|
||||||
|
|
||||||
|
if (counter == 0){
|
||||||
|
maxX = x;
|
||||||
|
minX = x;
|
||||||
|
maxY = y;
|
||||||
|
minY = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
maxX = Math.max(x,maxX);
|
||||||
|
maxY = Math.max(y,maxY);
|
||||||
|
minX = Math.min(x,minX);
|
||||||
|
minY = Math.min(y,minY);
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var nodes = Metamaps.Visualize.mGraph.graph;
|
||||||
|
|
||||||
|
if(Object.keys(nodes).length >1){
|
||||||
|
nodes.eachNode(function (n) {
|
||||||
|
var x = n.pos.x,
|
||||||
|
y = n.pos.y;
|
||||||
|
|
||||||
|
if (counter == 0){
|
||||||
|
maxX = x;
|
||||||
|
minX = x;
|
||||||
|
maxY = y;
|
||||||
|
minY = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
maxX = Math.max(x,maxX);
|
||||||
|
maxY = Math.max(y,maxY);
|
||||||
|
minX = Math.min(x,minX);
|
||||||
|
minY = Math.min(y,minY);
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
});
|
||||||
|
|
||||||
|
var spanX = maxX - minX;
|
||||||
|
var spanY = maxY - minY;
|
||||||
|
var ratioX = spanX / width;
|
||||||
|
var ratioY = spanY / height;
|
||||||
|
|
||||||
|
var newRatio = Math.max(ratioX,ratioY);
|
||||||
|
|
||||||
|
var canvas = Metamaps.Visualize.mGraph.canvas;
|
||||||
|
|
||||||
|
canvas.scale(1/newRatio*0.8,1/newRatio*0.8);
|
||||||
|
|
||||||
|
counter = 0;
|
||||||
|
|
||||||
|
nodes.eachNode(function (n) {
|
||||||
|
var x = n.pos.x,
|
||||||
|
y = n.pos.y;
|
||||||
|
|
||||||
|
if (counter == 0){
|
||||||
|
maxX = x;
|
||||||
|
minX = x;
|
||||||
|
maxY = y;
|
||||||
|
minY = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
maxX = Math.max(x,maxX);
|
||||||
|
maxY = Math.max(y,maxY);
|
||||||
|
minX = Math.min(x,minX);
|
||||||
|
minY = Math.min(y,minY);
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if(Object.keys(nodes).length >1){
|
|
||||||
|
|
||||||
|
var cogX = (maxX + minX)/2;
|
||||||
|
var cogY = (maxY + minY)/2;
|
||||||
|
|
||||||
nodes.eachNode(function (n) {
|
canvas.translate(-1* cogX, -1* cogY);
|
||||||
var x = n.pos.x,
|
|
||||||
y = n.pos.y;
|
|
||||||
|
|
||||||
if (counter == 0){
|
|
||||||
maxX = x;
|
|
||||||
minX = x;
|
|
||||||
maxY = y;
|
|
||||||
minY = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
maxX = Math.max(x,maxX);
|
|
||||||
maxY = Math.max(y,maxY);
|
|
||||||
minX = Math.min(x,minX);
|
|
||||||
minY = Math.min(y,minY);
|
|
||||||
|
|
||||||
counter++;
|
|
||||||
});
|
|
||||||
|
|
||||||
var spanX = maxX - minX;
|
|
||||||
var spanY = maxY - minY;
|
|
||||||
var ratioX = spanX / width;
|
|
||||||
var ratioY = spanY / height;
|
|
||||||
|
|
||||||
var newRatio = Math.max(ratioX,ratioY);
|
|
||||||
|
|
||||||
var canvas = Metamaps.Visualize.mGraph.canvas;
|
|
||||||
|
|
||||||
canvas.scale(1/newRatio*0.9,1/newRatio*0.9);
|
|
||||||
|
|
||||||
counter = 0;
|
|
||||||
|
|
||||||
nodes.eachNode(function (n) {
|
|
||||||
var x = n.pos.x,
|
|
||||||
y = n.pos.y;
|
|
||||||
|
|
||||||
if (counter == 0){
|
|
||||||
maxX = x;
|
|
||||||
minX = x;
|
|
||||||
maxY = y;
|
|
||||||
minY = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
maxX = Math.max(x,maxX);
|
|
||||||
maxY = Math.max(y,maxY);
|
|
||||||
minX = Math.min(x,minX);
|
|
||||||
minY = Math.min(y,minY);
|
|
||||||
|
|
||||||
counter++;
|
|
||||||
});
|
|
||||||
|
|
||||||
var cogX = (maxX + minX)/2;
|
|
||||||
var cogY = (maxY + minY)/2;
|
|
||||||
|
|
||||||
canvas.translate(-1* cogX, -1* cogY);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
Loading…
Reference in a new issue