class GruffGraff
def initialize(options)
- size = "700x400"
+ size = options[:size] ? options[:size] : "400x300" #allow custom sizing
@graph = options[:graph_type].new(size)
-
- @graph.theme = { :colors => ['#000000', '#00FFFF', '#FFCC00', '#990033'],
- :background_colors => ['#74ce00', '#ffffff'] }
+
+ @graph.no_data_message = "No Voters"
+
+ @graph.theme = { :colors => ['#005CD9', '#DC0D13', '#131313', '#990033'],
+ :background_colors => ['#74CE00', '#FFFFFF'] }
@graph.font = File.expand_path('/usr/X11R6/lib/X11/fonts/TTF/Vera.ttf',
RAILS_ROOT)
:data => data,
:interval_labels => labels,
:title => "Voters Over Time",
+ :size => "700x400",
:x_axis_label => scale,
:y_axis_label => "Number of Votes")
send_data(*graph.output)
legend = Hash.new
alldata, labels = get_positions_info(@election)
@election.results unless @election.condorcet_result || @election.ssd_result
+ ranked_candidates = @election.condorcet_result.ranked_candidates.flatten
names = Hash.new
candidates = @election.candidates.sort.collect {|candidate| candidate.id}
names[candidate]= (Candidate.find(candidate)).name
end
- ranked_candidates = @election.condorcet_result.ranked_candidates.flatten
ranked_candidates.each_with_index \
{|candidate, index| legend[names[candidate]] = alldata[index]}
send_data(*graph.output)
end
+ def plurality_pie
+ @election = Election.find(params[:id])
+ @election.results unless @election.plurality_result || @election.approval_result
+ votes = @election.votes.size
+ data = Hash.new
+ names = @election.names_by_id
+
+ @election.plurality_result.points.each do |candidate, votes|
+ data[names[candidate]] = votes
+ end
+
+ pie = GruffGraff.new( :graph_type => Gruff::Pie,
+ :title => "Percentage of First Place Votes",
+ :data => data)
+ send_data(*pie.output)
+
+ end
+
private
def get_positions_info(election)
buckets = Hash.new