Added Recenter map, zoom in, zoom out, Zoom to extents and buttons for each. Also, renamed selection function to just SelectWithBox()

This commit is contained in:
Robert Best 2014-08-06 04:22:06 -04:00
parent 910c6a8984
commit f75c2c1f8a
5 changed files with 271 additions and 135 deletions

View file

@ -8,6 +8,10 @@ Metamaps.JIT = {
var self = Metamaps.JIT; var self = Metamaps.JIT;
self.prepareVizData(); self.prepareVizData();
$(".zoomIn").click(self.zoomIn);
$(".zoomOut").click(self.zoomOut);
$(".centerMap").click(self.centerMap);
$(".zoomExtents").click(self.zoomExtents);
}, },
/** /**
* convert our topic JSON into something JIT can use * convert our topic JSON into something JIT can use
@ -307,7 +311,7 @@ Metamaps.JIT = {
if (Metamaps.Mouse.boxStartCoordinates) { if (Metamaps.Mouse.boxStartCoordinates) {
Metamaps.Visualize.mGraph.busy = false; Metamaps.Visualize.mGraph.busy = false;
Metamaps.Mouse.boxEndCoordinates = eventInfo.getPos(); Metamaps.Mouse.boxEndCoordinates = eventInfo.getPos();
Metamaps.JIT.selectNodesWithBox(e); Metamaps.JIT.selectWithBox(e);
return; return;
} }
@ -331,7 +335,7 @@ Metamaps.JIT = {
if (Metamaps.Mouse.boxStartCoordinates) { if (Metamaps.Mouse.boxStartCoordinates) {
Metamaps.Visualize.mGraph.busy = false; Metamaps.Visualize.mGraph.busy = false;
Metamaps.Mouse.boxEndCoordinates = eventInfo.getPos(); Metamaps.Mouse.boxEndCoordinates = eventInfo.getPos();
Metamaps.JIT.selectNodesWithBox(e); Metamaps.JIT.selectWithBox(e);
return; return;
} }
@ -897,7 +901,7 @@ Metamaps.JIT = {
} }
return 'nothing'; //case 4? return 'nothing'; //case 4?
}, // handleSelectionBeforeDragging }, // handleSelectionBeforeDragging
selectNodesWithBox: function (e) { selectWithBox: function (e) {
var sX = Metamaps.Mouse.boxStartCoordinates.x, var sX = Metamaps.Mouse.boxStartCoordinates.x,
sY = Metamaps.Mouse.boxStartCoordinates.y, sY = Metamaps.Mouse.boxStartCoordinates.y,
@ -1025,7 +1029,7 @@ Metamaps.JIT = {
Metamaps.Mouse.boxStartCoordinates = false; Metamaps.Mouse.boxStartCoordinates = false;
Metamaps.Mouse.boxEndCoordinates = false; Metamaps.Mouse.boxEndCoordinates = false;
Metamaps.Visualize.mGraph.plot(); Metamaps.Visualize.mGraph.plot();
}, // selectNodesWithBox }, // selectWithBox
drawSelectBox: function (eventInfo, e) { drawSelectBox: function (eventInfo, e) {
var ctx = Metamaps.Visualize.mGraph.canvas.getCtx(); var ctx = Metamaps.Visualize.mGraph.canvas.getCtx();
@ -1425,5 +1429,91 @@ Metamaps.JIT = {
y: posChild.y y: posChild.y
}, 13, inv, canvas, 0.3); }, 13, inv, canvas, 0.3);
} }
} //renderEdgeArrows }, //renderEdgeArrows
zoomIn: function () {
Metamaps.Visualize.mGraph.canvas.scale(1.25,1.25);
},
zoomOut: function () {
Metamaps.Visualize.mGraph.canvas.scale(0.8,0.8);
},
centerMap: function () {
var canvas = Metamaps.Visualize.mGraph.canvas;
var offsetScale = canvas.scaleOffsetX;
canvas.scale(1/offsetScale,1/offsetScale);
var offsetX = canvas.translateOffsetX;
var offsetY = canvas.translateOffsetY;
canvas.translate(-1*offsetX,-1*offsetY);
},
zoomExtents: function () {
Metamaps.JIT.centerMap();
var height = $(document).height(),
width = $(document).width(),
maxX, minX, maxY, minY, counter = 0;
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.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);
}
}
}; };

View file

@ -2060,7 +2060,7 @@ Metamaps.Filter = {
var addedSynapses = []; var addedSynapses = [];
Metamaps.Synapses.each(function(synapse) { Metamaps.Synapses.each(function(synapse) {
if (newSynapsesList.indexOf(synapse.get('desc')) === -1) { if (synapse.get('desc') && newSynapsesList.indexOf(synapse.get('desc')) === -1) {
newSynapsesList.push(synapse.get('desc').toString()); newSynapsesList.push(synapse.get('desc').toString());
} }
}); });

View file

@ -791,6 +791,47 @@ li.accountInvite span {
width: 35px; width: 35px;
height: 35px; height: 35px;
} }
.zoomIn {
position: absolute;
bottom: 100px;
right: 20px;
z-index: 200;
width: 35px;
height: 35px;
background: blue;
}
.zoomOut {
position: absolute;
bottom: 60px;
right: 20px;
z-index: 200;
width: 35px;
height: 35px;
background: blue;
}
.centerMap {
position: absolute;
bottom: 140px;
right: 20px;
z-index: 200;
width: 35px;
height: 35px;
background: blue;
}
.zoomExtents {
position: absolute;
bottom: 180px;
right: 20px;
z-index: 200;
width: 35px;
height: 35px;
background: blue;
}
.sidebarFilter.loggedout { .sidebarFilter.loggedout {
right: 35px; right: 35px;
} }

View file

@ -42,6 +42,11 @@
</div> </div>
</div> </div>
<div class="zoomIn">+</div>
<div class="zoomOut">-</div>
<div class="centerMap">C</div>
<div class="zoomExtents">E</div>
<div class="index"> <div class="index">
<div class="openCheatsheet openLightbox" data-open="cheatsheet"></div> <div class="openCheatsheet openLightbox" data-open="cheatsheet"></div>
<span class="mapInfo"></span> <span class="mapInfo"></span>