From 9810cdb615e9c4b5c7acf931f5b90c8837a39261 Mon Sep 17 00:00:00 2001 From: ricola Date: Sun, 6 Apr 2025 17:04:31 -0600 Subject: [PATCH] Configure rating scale as class instance variable of MajorityJudgment --- mj.rb | 10 ++++++++-- views/votes_show_closed.erb | 4 ++-- views/votes_show_open.erb | 16 +++++++--------- vote.rb | 8 ++++++++ 4 files changed, 25 insertions(+), 13 deletions(-) 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