diff --git a/mj.rb b/mj.rb index 7f44aec..5cfa284 100644 --- a/mj.rb +++ b/mj.rb @@ -1,8 +1,14 @@ class MajorityJudgment + @values = nil + include Comparable attr_reader :ratings, :count, :n, :majority + class << self + attr_accessor :values + end + def initialize(arg) if arg.is_a?(Array) @ratings = arg @@ -22,7 +28,7 @@ class MajorityJudgment def mj s = 0 - (1..7).to_a.reverse.each do |r| + (1..self.class.values.length).to_a.reverse.each do |r| s = s + @count[r] if @count[r] return r if s >= @majority end @@ -31,7 +37,7 @@ class MajorityJudgment def proponents(rating = self.mj) p = 0 - (rating+1..7).to_a.reverse.each do |r| + (rating+1..self.class.values.length).to_a.reverse.each do |r| p = p + @count[r] if @count[r] end return p diff --git a/views/votes_show_closed.erb b/views/votes_show_closed.erb index 7eaa696..a90d288 100644 --- a/views/votes_show_closed.erb +++ b/views/votes_show_closed.erb @@ -16,7 +16,7 @@ <%= user.email %> <% @vote.candidates.each do |candidate| %> <% if rating = @vote.ratings.find { |rating| rating.user == user and rating.candidate == candidate } %> - <%= rating.value %> + <%= settings.values.select { |e| e[:id] == rating.value }.first[:label] %> <% end %> <% end %> @@ -27,7 +27,7 @@
    <% @vote.candidates.sort { |a, b| a.mj <=> b.mj }.reverse.each do |candidate| %> -
  1. <%= candidate.name %>: <%= candidate.mj.mj %>
  2. +
  3. <%= candidate.name %>: <%= settings.values.select { |e| e[:id] == candidate.mj.mj }.first[:label] %>
  4. <% end %>
diff --git a/views/votes_show_open.erb b/views/votes_show_open.erb index eed4a5b..b9d8943 100644 --- a/views/votes_show_open.erb +++ b/views/votes_show_open.erb @@ -8,21 +8,19 @@
diff --git a/vote.rb b/vote.rb index 0c53d72..4031bd6 100644 --- a/vote.rb +++ b/vote.rb @@ -51,6 +51,14 @@ def verify_password(password, hash) end enable :sessions +set :values, [ { :id => 1, :label => "Awful" }, + { :id => 2, :label => "Very bad" }, + { :id => 3, :label => "Bad" }, + { :id => 4, :label => "Mediocre" }, + { :id => 5, :label => "Good" }, + { :id => 6, :label => "Very good" }, + { :id => 7, :label => "Excellent" } ] +MajorityJudgment.values = settings.values get '/' do redirect '/login' unless current_user