Commit 01cca5bf authored by Matt Bell's avatar Matt Bell Committed by Juan Batiz-Benet

diagnostics/d3: Added link highlighting

parent a14d77e3
...@@ -2,12 +2,19 @@ ...@@ -2,12 +2,19 @@
<meta charset="utf-8"> <meta charset="utf-8">
<style> <style>
body { .node {
font: 11px "Helvetica Neue", Helvetica, Arial, sans-serif; font: 11px "Helvetica Neue", Helvetica, Arial, sans-serif;
} }
.node:hover circle {
stroke: red;
stroke-width: 4px;
}
.node { .node .link {
font: 11px "Helvetica Neue", Helvetica, Arial, sans-serif; stroke-width: 0;
}
.node:hover .link {
stroke-width: 4px;
} }
.link { .link {
...@@ -67,20 +74,14 @@ d3.json(hash, function(error, data) { ...@@ -67,20 +74,14 @@ d3.json(hash, function(error, data) {
.data(graph.nodes) .data(graph.nodes)
.enter().append("g") .enter().append("g")
.attr("class", "node") .attr("class", "node")
.attr("transform", function(d) { return "rotate(" + (d.x - 90 + rotate) + ")translate(" + d.y + ")"; })
var p = projection
node.append("svg:circle") node.append("svg:circle")
.attr("r", function(d) { return d.conns + 3; }) .attr("r", function(d) { return d.conns + 2; })
.style("fill", function(d, i) { return color(i % 20); }) .style("fill", function(d, i) { return color(i % 20); })
.attr("transform", function(d) { return "rotate(" + (d.x - 90 + rotate) + ")translate(" + d.y + ")"; })
node.append("text")
.attr("dx", function(d) { return 8; })
.attr("dy", ".31em")
// .attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
// .attr("transform", function(d) { return d.x < 180 ? null : "rotate(180)"; })
.text(function(d) { return d.conns + " - " + d.name; });
var p = projection
var link = svg.selectAll(".link") var link = svg.selectAll(".link")
.data(graph.paths) .data(graph.paths)
.enter().append("path") .enter().append("path")
...@@ -90,9 +91,26 @@ d3.json(hash, function(error, data) { ...@@ -90,9 +91,26 @@ d3.json(hash, function(error, data) {
+ "S" + p(d[1])[0] + "," + p(d[1])[1] + "S" + p(d[1])[0] + "," + p(d[1])[1]
+ " " + p(d[2])[0] + "," + p(d[2])[1]; + " " + p(d[2])[0] + "," + p(d[2])[1];
}) })
.style("stroke", function(d) { return color(d[0].index % 20); })
.style("stroke-opacity", function(d) { return 0.3; })
node.selectAll('.link')
.data(function(d) { return d.links })
.enter().append('path')
.attr('class', 'link')
.style("stroke", function(d) { return color(d.source.index % 20); })
.attr("d", function(d) {
return "M" + p(d.path[0])[0] + "," + p(d.path[0])[1]
+ "S" + p(d.path[1])[0] + "," + p(d.path[1])[1]
+ " " + p(d.path[2])[0] + "," + p(d.path[2])[1];
})
node.append("text")
.attr("class", "label")
.attr("dx", -4)
.attr("dy", 3)
// .attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
// .attr("transform", function(d) { return d.x < 180 ? null : "rotate(180)"; })
.text(function(d) { return d.conns + " - " + d.name; })
.attr("transform", function(d) { return "rotate(" + (d.x - 90 + rotate) + ")translate(" + d.y + ")"; })
// var mid = svg.selectAll(".node-mid") // var mid = svg.selectAll(".node-mid")
// .data(graph.mids) // .data(graph.mids)
...@@ -126,9 +144,10 @@ function parseGraph(graph2) { ...@@ -126,9 +144,10 @@ function parseGraph(graph2) {
data.y = innerRadius data.y = innerRadius
data.x = ((360 / graph2.nodes.length) * i) data.x = ((360 / graph2.nodes.length) * i)
data.conns = 0 data.conns = 0
data.index = i
graph.nodes.push(data) graph.nodes.push(data)
graph.byName[data.name] = data graph.byName[data.name] = data
data.index = i
data.links = []
}) })
graph2.links.forEach(function(link) { graph2.links.forEach(function(link) {
...@@ -147,6 +166,9 @@ function parseGraph(graph2) { ...@@ -147,6 +166,9 @@ function parseGraph(graph2) {
var path = [source, mid, target] var path = [source, mid, target]
graph.paths.push(path) graph.paths.push(path)
source.links.push({path: path, source: source})
target.links.push({path: path, source: target})
}) })
document.getElementById("node-count").innerText = graph.nodes.length document.getElementById("node-count").innerText = graph.nodes.length
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment