summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/match.rb10
-rw-r--r--app/views/tournaments/standings.html.erb4
-rw-r--r--lib/seeding/early_bird_seeding.rb2
-rw-r--r--lib/seeding/fair_ranked_seeding.rb5
-rw-r--r--lib/seeding/random_seeding.rb2
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