partially finished fixes to zoomextents

This commit is contained in:
Robert Best 2014-09-26 22:40:31 -04:00
parent b15da256fa
commit 0160f56238
4 changed files with 99 additions and 17 deletions

View file

@ -2489,7 +2489,11 @@ Extras.Classes.Navigation = new Class({
if (!Metamaps.Mouse.boxStartCoordinates && (e.shiftKey || rightClick)) { if (!Metamaps.Mouse.boxStartCoordinates && (e.shiftKey || rightClick)) {
Metamaps.Mouse.boxStartCoordinates = eventInfo.getPos(); Metamaps.Mouse.boxStartCoordinates = eventInfo.getPos();
} }
Metamaps.Mouse.didPan = false; Metamaps.Mouse.didPan = false;
// END METAMAPS CODE // END METAMAPS CODE
this.pos = eventInfo.getPos(); this.pos = eventInfo.getPos();
@ -2557,6 +2561,8 @@ Extras.Classes.Navigation = new Class({
// START METAMAPS CODE // START METAMAPS CODE
if (Metamaps.Mouse.didPan) Metamaps.JIT.SmoothPanning(); if (Metamaps.Mouse.didPan) Metamaps.JIT.SmoothPanning();
// END METAMAPS CODE // END METAMAPS CODE
} }

View file

@ -372,6 +372,23 @@ Metamaps.GlobalUI.Search = {
self.close(0, true); self.close(0, true);
} }
break; break;
case 65:
case 97:
e.preventDefault();
if (e.ctrlKey){
Metamaps.Visualize.mGraph.graph.eachNode(function (n) {
Metamaps.Control.selectNode(n,e);
});
Metamaps.Visualize.mGraph.plot();
}
break;
case 69:
case 101:
e.preventDefault();
Metamaps.JIT.zoomExtents();
break;
default: default:
break; //console.log(e.which); break; //console.log(e.which);
} }

View file

@ -313,7 +313,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.selectWithBox(e); Metamaps.JIT.zoomToBox();
return; return;
} }
@ -663,8 +663,6 @@ Metamaps.JIT = {
var scale = dist / lastDist; var scale = dist / lastDist;
console.log(scale);
if (8 >= Metamaps.Visualize.mGraph.canvas.scaleOffsetX * scale && Metamaps.Visualize.mGraph.canvas.scaleOffsetX * scale >= 1) { if (8 >= Metamaps.Visualize.mGraph.canvas.scaleOffsetX * scale && Metamaps.Visualize.mGraph.canvas.scaleOffsetX * scale >= 1) {
Metamaps.Visualize.mGraph.canvas.scale(scale, scale); Metamaps.Visualize.mGraph.canvas.scale(scale, scale);
} }
@ -945,6 +943,8 @@ Metamaps.JIT = {
var fromNodeY = -1 * synapse.get('edge').nodeFrom.pos.y; var fromNodeY = -1 * synapse.get('edge').nodeFrom.pos.y;
var toNodeX = synapse.get('edge').nodeTo.pos.x; var toNodeX = synapse.get('edge').nodeTo.pos.x;
var toNodeY = -1 * synapse.get('edge').nodeTo.pos.y; var toNodeY = -1 * synapse.get('edge').nodeTo.pos.y;
var from = synapse.get('edge').nodeFrom;
var to = synapse.get('edge').nodeTo;
var maxX = fromNodeX; var maxX = fromNodeX;
var maxY = fromNodeY; var maxY = fromNodeY;
@ -964,7 +964,7 @@ Metamaps.JIT = {
(eX > maxBoxX) ? (maxBoxX = eX):(minBoxX = eX); (eX > maxBoxX) ? (maxBoxX = eX):(minBoxX = eX);
(eY > maxBoxY) ? (maxBoxY = eY):(minBoxY = eY); (eY > maxBoxY) ? (maxBoxY = eY):(minBoxY = eY);
//Fins the slopes from the synapse fromNode to the 4 corners of the selection box //Find the slopes from the synapse fromNode to the 4 corners of the selection box
var slopes = []; var slopes = [];
slopes.push( (sY - fromNodeY) / (sX - fromNodeX) ); slopes.push( (sY - fromNodeY) / (sX - fromNodeX) );
slopes.push( (sY - fromNodeY) / (eX - fromNodeX) ); slopes.push( (sY - fromNodeY) / (eX - fromNodeX) );
@ -983,6 +983,10 @@ Metamaps.JIT = {
var b = fromNodeY - synSlope * fromNodeX; var b = fromNodeY - synSlope * fromNodeX;
var selectTest = false; var selectTest = false;
if (from.name == 'node 3' && to.name == 'node1'){
console.log(from.pos.x,-1*from.pos.y,to.pos.x,-1*to.pos.y,sX,sY,eX,eY);
}
//if the synapse slope is within a range that would intersect with the selection box //if the synapse slope is within a range that would intersect with the selection box
if (synSlope <= maxSlope && synSlope >= minSlope){ if (synSlope <= maxSlope && synSlope >= minSlope){
@ -1003,17 +1007,18 @@ Metamaps.JIT = {
testY = sY; testY = sY;
testX = (testY - b)/synSlope; testX = (testY - b)/synSlope;
if(testX >= minX && testX <= maxX && testY >= minY && testY <= maxY && testX >= minBoxX && testY <= maxBoxX){ if(testX >= minX && testX <= maxX && testY >= minY && testY <= maxY && testX >= minBoxX && testX <= maxBoxX){
selectTest = true; selectTest = true;
} }
testY = eY; testY = eY;
testX = (testY - b)/synSlope; testX = (testY - b)/synSlope;
if(testX >= minX && testX <= maxX && testY >= minY && testY <= maxY && testX >= minBoxX && testY <= maxBoxX){ if(testX >= minX && testX <= maxX && testY >= minY && testY <= maxY && testX >= minBoxX && testX <= maxBoxX){
selectTest = true; selectTest = true;
} }
} }
//console.log('From '+from.name + ' to ' + to.name + ' is a ' +selectTest);
//The test synapse was selected! //The test synapse was selected!
if(selectTest){ if(selectTest){
if(e.ctrlKey){ if(e.ctrlKey){
@ -1078,15 +1083,23 @@ Metamaps.JIT = {
// wait a certain length of time, then check again, then run this code // wait a certain length of time, then check again, then run this code
setTimeout(function () { setTimeout(function () {
if (!Metamaps.JIT.nodeWasDoubleClicked()) { if (!Metamaps.JIT.nodeWasDoubleClicked()) {
if (!e.shiftKey) { if (!e.shiftKey && !e.ctrlKey) {
Metamaps.Control.deselectAllNodes(); Metamaps.Control.deselectAllNodes();
Metamaps.Control.deselectAllEdges(); Metamaps.Control.deselectAllEdges();
} }
if(e.ctrlKey || e.shiftKey){
if (node.selected) { if (node.selected) {
Metamaps.Control.deselectNode(node); Metamaps.Control.deselectNode(node);
} else { } else {
Metamaps.Control.selectNode(node,e); Metamaps.Control.selectNode(node,e);
} }
}
else{
Metamaps.Control.deselectAllNodes();
Metamaps.Control.deselectAllEdges();
Metamaps.Control.selectNode(node,e);
}
//trigger animation to final styles //trigger animation to final styles
Metamaps.Visualize.mGraph.fx.animate({ Metamaps.Visualize.mGraph.fx.animate({
modes: ['edge-property:lineWidth:color:alpha'], modes: ['edge-property:lineWidth:color:alpha'],
@ -1111,7 +1124,6 @@ Metamaps.JIT = {
// create new menu for clicked on node // create new menu for clicked on node
var rightclickmenu = document.createElement("div"); var rightclickmenu = document.createElement("div");
rightclickmenu.className = "rightclickmenu"; rightclickmenu.className = "rightclickmenu";
// add the proper options to the menu // add the proper options to the menu
var menustring = '<ul>'; var menustring = '<ul>';
@ -1139,7 +1151,7 @@ Metamaps.JIT = {
top: e.clientY top: e.clientY
}); });
//add the menu to the page //add the menu to the page
$('#center-container').append(rightclickmenu); $('#infovis-canvaswidget').append(rightclickmenu);
// attach events to clicks on the list items // attach events to clicks on the list items
@ -1452,6 +1464,54 @@ Metamaps.JIT = {
canvas.translate(-1*offsetX,-1*offsetY); canvas.translate(-1*offsetX,-1*offsetY);
}, },
zoomToBox: function () {
var sX = Metamaps.Mouse.boxStartCoordinates.x,
sY = Metamaps.Mouse.boxStartCoordinates.y,
eX = Metamaps.Mouse.boxEndCoordinates.x,
eY = Metamaps.Mouse.boxEndCoordinates.y;
Metamaps.JIT.centerMap();
var height = $(document).height(),
width = $(document).width();
var spanX = Math.abs(sX - eX);
var spanY = Math.abs(sY - eY);
var ratioX = width / spanX;
var ratioY = height / spanY;
console.log(ratioX,ratioY);
var newRatio = Math.min(ratioX,ratioY);
var canvas = Metamaps.Visualize.mGraph.canvas;
if(canvas.scaleOffsetX *newRatio<= 5 && canvas.scaleOffsetX*newRatio >= 0.2){
canvas.scale(newRatio,newRatio);
}
else if(canvas.scaleOffsetX * newRatio > 5){
newRatio = 5/ canvas.scaleOffsetX;
canvas.scale(newRatio,newRatio);
}
else{
newRatio = 0.2/ canvas.scaleOffsetX;
canvas.scale(newRatio,newRatio);
}
var cogX = (sX + eX)/2;
var cogY = (sY + eY)/2;
canvas.translate(-1* cogX, -1* cogY);
Metamaps.Mouse.boxStartCoordinates = false;
Metamaps.Mouse.boxEndCoordinates = false;
Metamaps.Visualize.mGraph.plot();
},
zoomExtents: function () { zoomExtents: function () {
Metamaps.JIT.centerMap(); Metamaps.JIT.centerMap();
var height = $(document).height(), var height = $(document).height(),
@ -1482,8 +1542,6 @@ Metamaps.JIT = {
dim = n.getData('dim'), dim = n.getData('dim'),
ctx = Metamaps.Visualize.mGraph.canvas.getCtx(); ctx = Metamaps.Visualize.mGraph.canvas.getCtx();
console.log(dim);
var height = 25 * arrayOfLabelLines.length; var height = 25 * arrayOfLabelLines.length;
var index, lineWidths = []; var index, lineWidths = [];
@ -1539,8 +1597,6 @@ Metamaps.JIT = {
dim = n.getData('dim'), dim = n.getData('dim'),
ctx = Metamaps.Visualize.mGraph.canvas.getCtx(); ctx = Metamaps.Visualize.mGraph.canvas.getCtx();
console.log(dim);
var height = 25 * arrayOfLabelLines.length; var height = 25 * arrayOfLabelLines.length;
var index, lineWidths = []; var index, lineWidths = [];

View file

@ -47,6 +47,7 @@ Metamaps.Touch = {
Metamaps.Mouse = { Metamaps.Mouse = {
didPan: false, didPan: false,
didBoxZoom: false,
changeInX: 0, changeInX: 0,
changeInY: 0, changeInY: 0,
edgeHoveringOver: false, edgeHoveringOver: false,
@ -1718,11 +1719,13 @@ Metamaps.Control = {
if (Metamaps.Selected.Nodes.indexOf(node) != -1) return; if (Metamaps.Selected.Nodes.indexOf(node) != -1) return;
node.selected = true; node.selected = true;
node.setData('dim', 30, 'current'); node.setData('dim', 30, 'current');
/*
if(!(e.ctrlKey) && !(e.altKey)){ if(!(e.ctrlKey) && !(e.altKey)){
node.eachAdjacency(function (adj) { node.eachAdjacency(function (adj) {
Metamaps.Control.selectEdge(adj); Metamaps.Control.selectEdge(adj);
}); });
} }
*/
Metamaps.Selected.Nodes.push(node); Metamaps.Selected.Nodes.push(node);
}, },