diff --git a/lib/flamegraph/flamegraph.html b/lib/flamegraph/flamegraph.html
index 2e4ed37..dff2b66 100644
--- a/lib/flamegraph/flamegraph.html
+++ b/lib/flamegraph/flamegraph.html
@@ -248,6 +248,31 @@
Frame Info
.attr('opacity',1);
};
+// highlight the nodes of a gem
+var gemSelect = function(e) {
+ var name = e.data.name;
+ d3.selectAll(getGemNodes(name)).attr('opacity',0.5);
+ return false;
+};
+
+// remove highlighting of the nodes of a gem
+var gemDeSelect = function(e) {
+ var name = e.data.name;
+ d3.selectAll(getGemNodes(name)).attr('opacity',1);
+ return false;
+};
+
+// given the name of a gem, return all of its nodes
+var getGemNodes = function(gem_name) {
+ var frames = gemStats[gem_name].frames;
+ var nodes = [];
+ $.each(frames, function(i,f) {
+ var i = info[f];
+ nodes = nodes.concat(i.nodes);
+ });
+ return nodes;
+};
+
var backtrace = function(frame){
for(var i=0; iFrame Info
_.each(gemsSorted, function(gem){
var node = $("")
.css("background-color", gem.color)
- .text(gem.name + " " + samplePercent(gem.samples.length)) ;
+ .text(gem.name + " " + samplePercent(gem.samples.length))
+ .on("mouseover", {name: gem.name}, gemSelect)
+ .on("mouseout", {name: gem.name}, gemDeSelect);
$('.legend').append(node);
});