Popping Pie Partial
Looking into Asset Rebalancing, I thought a visual aide would be helpful.
First, a simple Rails partial for doing a pie chart:
total = chart.map(&:last).sum
r = 0
xml.svg :xmlns=>'http://www.w3.org/2000/svg', :viewBox=>'-100 -100 200 200' do
xml.circle :r=>96, :stroke=>"#000", :fill=>"#000"
for color, title, value in chart
p1 = [Math.sin(r)*95, -Math.cos(r)*95].map(&:round).join(',')
r += Math::PI*2 * value/total
p2 = [Math.sin(r)*95, -Math.cos(r)*95].map(&:round).join(',')
xml.path :d=>"M#{p1} A95,95 0 0 1 #{p2} L0,0 Z",
:fill=>color, :title=>title
end
end
Then a jQuery script which causes the corresponding slice to “pop out” when you hover over a row in an adjoining table.
<script>
$.each($('tr'), function() {
var label = $(this).find('td:nth-child(2)').text();
var path = $('path[title="' + label + '"]');
if (path.length == 0) return;
$(this).
mouseover(function() {
path.attr({'stroke-width': '7', 'stroke': path.attr('fill')});
path.parent().append(path);
}).
mouseout(function() {
path.removeAttr('stroke-width').removeAttr('stroke');
});
});
</script>