diff options
-rw-r--r-- | app/models/match.rb | 10 | ||||
-rw-r--r-- | app/views/tournaments/standings.html.erb | 4 | ||||
-rw-r--r-- | lib/seeding/early_bird_seeding.rb | 2 | ||||
-rw-r--r-- | lib/seeding/fair_ranked_seeding.rb | 5 | ||||
-rw-r--r-- | lib/seeding/random_seeding.rb | 2 |
5 files changed, 18 insertions, 5 deletions
diff --git a/app/models/match.rb b/app/models/match.rb index c2df6e0..d4c0ce5 100644 --- a/app/models/match.rb +++ b/app/models/match.rb @@ -5,6 +5,16 @@ class Match < ActiveRecord::Base belongs_to :winner, class_name: "Team" + def setup() + end + + def finished? + ok = true + tournament_stage.scoring_method.stats_needed.each do |stat| + ok &= statistics.where(match: self, name: stat).nil? + ok + end + def win?(player) winner.players.include? player end diff --git a/app/views/tournaments/standings.html.erb b/app/views/tournaments/standings.html.erb index b8739de..a04e132 100644 --- a/app/views/tournaments/standings.html.erb +++ b/app/views/tournaments/standings.html.erb @@ -1,7 +1,7 @@ -<% playerscores = @tournament.players.collect {|player| player => @tournament.statistics.getStatistic(player.matches.last, player, :score) } %> +<% playerscores = @tournament.players.collect {|player| player => @tournament.statistics.where(match: player.matches.last, user: player, name: :score) } %> <% teams = tournament_stage.matches.collect { |match| match.teams.collect { |team| team.id => team.players.collect -{ |player| player.user_name => @tournament.statistics.getStatistic(player.matches.last, player, :score } } } %> +{ |player| player.user_name => @tournament.statistics.where(match: player.matches.last, user: player, name: :score } } } %> <table> <tr> diff --git a/lib/seeding/early_bird_seeding.rb b/lib/seeding/early_bird_seeding.rb index 488a1a2..5c289ed 100644 --- a/lib/seeding/early_bird_seeding.rb +++ b/lib/seeding/early_bird_seeding.rb @@ -7,7 +7,7 @@ module Seeding teams = 0 tournament.players.each_slice(tournament.min_players_per_team) do |slice| if teams < tournament.min_teams_per_match - match.teams[teams].players += slice + match.teams.push Team.create(players: slice) teams += 1 else match_num += 1 diff --git a/lib/seeding/fair_ranked_seeding.rb b/lib/seeding/fair_ranked_seeding.rb index f56d648..870ebdd 100644 --- a/lib/seeding/fair_ranked_seeding.rb +++ b/lib/seeding/fair_ranked_seeding.rb @@ -5,6 +5,9 @@ module Seeding match = matches.first match_num = 0 players_used = 0 + (tournament.players.count/tournament.min_players_per_team).floor.times do + match.teams.push Team.create() + end best_first(tournament).each_slice(tournament.min_teams_per_match) do |slice| (0..tournament.min_teams_per_match-1).each do |index| match.teams[index].players += slice[index] @@ -30,7 +33,7 @@ module Seeding end def self.previous_score(player, tournament) - score = tournament.statistics.getStatistic(player.matches.last, player, :score) + score = tournament.statistics.where(match: player.matches.last, user: player, name: :score) if score.nil? return 0 end diff --git a/lib/seeding/random_seeding.rb b/lib/seeding/random_seeding.rb index 723d70e..36e06d6 100644 --- a/lib/seeding/random_seeding.rb +++ b/lib/seeding/random_seeding.rb @@ -7,7 +7,7 @@ module Seeding teams = 0 tournament.players.shuffle.each_slice(tournament.min_players_per_team) do |slice| if teams < tournament.min_teams_per_match - match.teams[teams].players += slice + match.teams.push Team.create(players: slice) teams += 1 else match_num += 1 |