diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/team.rb | 1 | ||||
-rw-r--r-- | app/models/tournament.rb | 39 | ||||
-rw-r--r-- | app/models/tournament_stage.rb | 26 |
3 files changed, 30 insertions, 36 deletions
diff --git a/app/models/team.rb b/app/models/team.rb index 7aae7c2..77136e7 100644 --- a/app/models/team.rb +++ b/app/models/team.rb @@ -1,5 +1,4 @@ class Team < ActiveRecord::Base - belongs_to :match has_and_belongs_to_many :matches has_and_belongs_to_many :users end diff --git a/app/models/tournament.rb b/app/models/tournament.rb index 73c8d93..e21ccb1 100644 --- a/app/models/tournament.rb +++ b/app/models/tournament.rb @@ -1,15 +1,15 @@ class Tournament < ActiveRecord::Base belongs_to :game - has_many :matches + has_many :tournament_stages has_many :settings_raw, class_name: "TournamentSetting" has_and_belongs_to_many :players, class_name: "User", association_foreign_key: "player_id", join_table: "players_tournaments" has_and_belongs_to_many :hosts, class_name: "User", association_foreign_key: "host_id", join_table: "hosts_tournaments" - def matches_ordered + def stages_ordered h = {} i = 1 - matches.order(:id).each do |m| - h[i] = m + self.tournament_stages.order(:id).each do |s| + h[i] = s i += 1 end return h @@ -26,14 +26,6 @@ class Tournament < ActiveRecord::Base end class Settings - @vartypes = { - :true_false => 0, - :integer => 1, - :string => 2, - :select => 3, - :range => 4 - } - def initialize(tournament) @tournament = tournament end @@ -94,27 +86,4 @@ class Tournament < ActiveRecord::Base players.delete(user) end end - - def setup - num_teams = (self.players.count/self.min_players_per_team).floor - num_matches = num_teams - 1 - for i in 1..num_matches - self.matches.create(name: "Match #{i}", status: 0, submitted_peer_evaluations: 0) - end - match_num = num_matches-1 - team_num = 0 - #for each grouping of min_players_per_team - players.each_slice(min_players_per_team) do |players| - - #if the match is full, move to the next match, otherwise move to the next team - if (team_num == min_teams_per_match) - match_num -= 1 - team_num = 0 - else - team_num += 1 - end - #create a new team in the current match - self.matches[match_num].teams.push(Team.create(users: players)) - end - end end diff --git a/app/models/tournament_stage.rb b/app/models/tournament_stage.rb index 205c8cc..a24d7b9 100644 --- a/app/models/tournament_stage.rb +++ b/app/models/tournament_stage.rb @@ -1,3 +1,29 @@ class TournamentStage < ActiveRecord::Base belongs_to :tournament + has_many :matches + + def matches_ordered + h = {} + i = 1 + self.matches.order(:id).each do |m| + h[i] = m + i += 1 + end + return h + end + + def create_matches + set_scheduling + @scheduling.create_matches + end + + def to_svg + set_scheduling + return @scheduling.graph(self) + end + + private + def set_scheduling + @scheduling ||= "Scheduling::#{self.scheduling}".constantize.new(self) + end end |