further fixes for #335 to key netmap fully off IP
This commit is contained in:
		| @@ -45,14 +45,14 @@ function redraw() { | ||||
| // save the x,y of an element into the loc dictionary | ||||
| function recordLocation(d,i) { | ||||
|   var rect = this.getBoundingClientRect(); | ||||
|   loc[d.name] = { | ||||
|   loc[d.ip] = { | ||||
|     'x':  (rect.left + ((rect.right - rect.left) / 2)) | ||||
|     ,'y': (rect.top +  ((rect.bottom - rect.top) / 2)) | ||||
|   }; | ||||
| } | ||||
|  | ||||
| // convert a device name to a valid CSS class name | ||||
| function to_class(name) { return 'nd_' + name.replace(/\./g, "_") } | ||||
| // convert a device ip to a valid CSS class name | ||||
| function to_class(ip) { return 'nd_' + ip.replace(/[:.]/g, "_") } | ||||
|  | ||||
| // handler for clicking on a circle - redirect to that device's netmap | ||||
| function circleClick(d) { | ||||
| @@ -65,10 +65,10 @@ function circleClick(d) { | ||||
| // handler for mouseover on a circle - show that device's real neighbors | ||||
| function circleOver(d) { | ||||
|     $('.link').hide(); | ||||
|     $('path.' + to_class(d.name)).show(); | ||||
|     $('path.' + to_class(d.ip)).show(); | ||||
|     $(this).css('cursor', 'pointer'); | ||||
|  | ||||
|     $.each(neighbors_data[d.name], function(idx, target) { | ||||
|     $.each(neighbors_data[d.ip], function(idx, target) { | ||||
|       if (! (target in loc)) { return true } | ||||
|       $('circle.' + to_class(target)).css('fill', '#e96cfa'); | ||||
|     }); | ||||
| @@ -76,13 +76,13 @@ function circleOver(d) { | ||||
|  | ||||
| // handler for mouseout on a circle - hide real neighbours and show treeLinks | ||||
| function circleOut(d) { | ||||
|     $.each(neighbors_data[d.name], function(idx, target) { | ||||
|     $.each(neighbors_data[d.ip], function(idx, target) { | ||||
|       if (! (target in loc)) { return true } | ||||
|       $('circle.' + to_class(target)).css('fill', '#fff'); | ||||
|     }); | ||||
|  | ||||
|     $(this).css('cursor', 'auto'); | ||||
|     $('path.' + to_class(d.name)).hide(); | ||||
|     $('path.' + to_class(d.ip)).hide(); | ||||
|     $('.link').show(); | ||||
| } | ||||
|  | ||||
| @@ -121,7 +121,7 @@ $.getJSON('[% uri_for('/ajax/data/device/alldevicelinks') %]', function(data) { | ||||
|     node.append("circle") | ||||
|         .attr("r", 4.5) | ||||
|         // circle has class name of its device, so we can show/hide it | ||||
|         .attr("class", function(d) { return to_class(d.name) }) | ||||
|         .attr("class", function(d) { return to_class(d.ip) }) | ||||
|         // store the x,y of every circle we've just drawn | ||||
|         .each(recordLocation) | ||||
|         // handlers for mouse interaction with the circles | ||||
| @@ -140,8 +140,8 @@ $.getJSON('[% uri_for('/ajax/data/device/alldevicelinks') %]', function(data) { | ||||
|         .attr("transform", function(d) { | ||||
|           return d.x < 180 ? "rotate(0)translate(0)" : "rotate(180)translate(0)"; }); | ||||
|  | ||||
|     // key (name) of the root node in our locations store | ||||
|     var rootname = svg.select(".node").data()[0].name; | ||||
|     // key (ip) of the root node in our locations store | ||||
|     var rootname = svg.select(".node").data()[0].ip; | ||||
|     // reformatted neighbors_data for the real neighbor links | ||||
|     var neighbors = []; | ||||
|  | ||||
| @@ -150,19 +150,19 @@ $.getJSON('[% uri_for('/ajax/data/device/alldevicelinks') %]', function(data) { | ||||
|     $.each(neighbors_data, function(key, val) { | ||||
|       if (! (key in loc)) { return true } | ||||
|  | ||||
|       $.each(val, function(idx, name) { | ||||
|         if (! (name in loc)) { return true } | ||||
|       $.each(val, function(idx, ip) { | ||||
|         if (! (ip in loc)) { return true } | ||||
|  | ||||
|         neighbors.push({ | ||||
|           'source':  { | ||||
|             'name': key | ||||
|             'ip': key | ||||
|             ,'x': loc[key]['x'] | ||||
|             ,'y': loc[key]['y'] | ||||
|           } | ||||
|           ,'target': { | ||||
|             'name': name | ||||
|             ,'x': loc[name]['x'] | ||||
|             ,'y': loc[name]['y'] | ||||
|             'ip': ip | ||||
|             ,'x': loc[ip]['x'] | ||||
|             ,'y': loc[ip]['y'] | ||||
|           } | ||||
|         }); | ||||
|       }); | ||||
| @@ -174,7 +174,7 @@ $.getJSON('[% uri_for('/ajax/data/device/alldevicelinks') %]', function(data) { | ||||
|       .enter().insert("path", ".node") | ||||
|         // add class name of source device, so we can show/hide the link | ||||
|         // (also "neighbor" class) | ||||
|         .attr("class", function(d) { return ("neighbor " + to_class( d.source.name )) }) | ||||
|         .attr("class", function(d) { return ("neighbor " + to_class( d.source.ip )) }) | ||||
|         .attr("d", neighLink) | ||||
|         .attr("transform", "translate(-" + loc[rootname]['x'] + ",-" + loc[rootname]['y'] + ")"); | ||||
|   }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user