From: Date: Mon, 20 Aug 2007 20:46:41 +0000 (-0400) Subject: Streamlined some graphign contorller methods and took out the 'voters_per_day' method... X-Git-Url: https://projects.mako.cc/source/selectricity/commitdiff_plain/257d5a4c8c02d7b001fbfbce4aaced9f9937ff61 Streamlined some graphign contorller methods and took out the 'voters_per_day' method in the results page. Merge from mako. --- 257d5a4c8c02d7b001fbfbce4aaced9f9937ff61 diff --cc app/controllers/graph_controller.rb index 1bde09e,1bde09e..442bb65 --- a/app/controllers/graph_controller.rb +++ b/app/controllers/graph_controller.rb @@@ -13,9 -13,9 +13,10 @@@ class GraphController < ApplicationCont # fill in the data with the optional data name #Check to see if multiple datasets, if so, fill them all! ++ #Sort by biggest first piece of data. if options[:data].is_a?(Hash) -- options[:data].each_pair do |name, array| -- @graph.data( name, array) ++ options[:data].sort {|a,b| b[1][0] <=> a[1][0]}.each do |dataset| ++ @graph.data(dataset[0], dataset[1]) end #if each dataset nameless, will have only multiple arrays elsif options[:data].size > 1 && options[:data].all? {|i| i.is_a?(Array)} @@@ -75,7 -75,7 +76,7 @@@ :y_axis_label => "Number of Votes") send_data(*graph.output) end -- ++ def borda_bar @election = Election.find(params[:id]) @election.results unless @election.borda_result @@@ -91,20 -91,20 +92,24 @@@ send_data(*graph.output) end #Acording to Tufte, small, concomparitive, highly labeled data sets usually -- # belong in tables. The following is a bar graph...but would it be better ++ #belong in tables. The following is a bar graph...but would it be better #as a table? def choices_positions -- @election = Election.find(params[:id]) -- pref_tally = make_preference_tally(@election) -- -- fulldata, labels = get_positions_info(@election) -- legend = Hash.new ++ legend = Hash.new ++ alldata, labels = get_positions_info(@election) ++ @election.results unless @election.condorcet_result || @election.ssd_result -- @election.candidates.each_with_index do |candidate, index| -- legend[candidate.name] = fulldata[index] ++ names = Hash.new ++ candidates = @election.candidates.sort.collect {|candidate| candidate.id} ++ candidates.each do |candidate| ++ 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]} ++ graph = GruffGraff.new( :graph_type => Gruff::Bar, :data => legend, :interval_labels => labels, @@@ -120,21 -120,21 +125,23 @@@ buckets2= Hash.new rank_labels = Hash.new -- election.candidates.each do |candidate| -- buckets[candidate.id] = [] -- buckets2[candidate.id] = [] -- end -- #attach the ranking to the candidate's array to which is belongs ++ #creating a key if necessary election.votes.each do |vote| vote.rankings.each do |ranking| ++ ++ unless buckets.has_key?(ranking.candidate_id) ++ buckets[ranking.candidate_id] = [] ++ end buckets[ranking.candidate_id] << ranking.rank ++ end end #count how many times each candidate has been ranked at a certain level buckets.each_pair do |id, array| (1..election.candidates.size).each do |i| ++ buckets2[id] = [] unless buckets2.has_key?(id) buckets2[id] << (array.find_all {|rank| rank == i}).size end end