mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-03-25 01:14:43 +00:00
Added 16 man modified double elimination bracket type. Still need to fix swap wrestlers code.
This commit is contained in:
@@ -181,8 +181,10 @@ class TournamentsController < ApplicationController
|
|||||||
@weight = Weight.where(:id => params[:weight]).includes(:matches,:wrestlers).first
|
@weight = Weight.where(:id => params[:weight]).includes(:matches,:wrestlers).first
|
||||||
@matches = @weight.matches
|
@matches = @weight.matches
|
||||||
@wrestlers = @weight.wrestlers.includes(:school)
|
@wrestlers = @weight.wrestlers.includes(:school)
|
||||||
@pools = @weight.pool_rounds(@matches)
|
if @tournament.tournament_type == "Pool to bracket"
|
||||||
@bracketType = @weight.pool_bracket_type
|
@pools = @weight.pool_rounds(@matches)
|
||||||
|
@bracketType = @weight.pool_bracket_type
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,24 @@ class Match < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
BRACKET_POSITIONS = ["Pool","1/2","3/4","5/6","7/8","Quarter","Semis","Conso Semis"]
|
BRACKET_POSITIONS = ["Pool","1/2","3/4","5/6","7/8","Quarter","Semis","Conso Semis","Bracket","Conso", "Conso Quarter"]
|
||||||
WIN_TYPES = ["Decision", "Major", "Tech Fall", "Pin", "Forfeit", "Injury Default", "Default", "DQ"]
|
WIN_TYPES = ["Decision", "Major", "Tech Fall", "Pin", "Forfeit", "Injury Default", "Default", "DQ", "BYE"]
|
||||||
|
|
||||||
|
def is_consolation_match
|
||||||
|
if self.bracket_position == "Conso" or self.bracket_position == "Conso Quarter" or self.bracket_position == "Conso Semis" or self.bracket_position == "3/4" or self.bracket_position == "5/6" or self.bracket_position == "7/8"
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def is_championship_match
|
||||||
|
if self.bracket_position == "Pool" or self.bracket_position == "Quarter" or self.bracket_position == "Semis" or self.bracket_position == "Bracket" or self.bracket_position == "1/2"
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def calculate_school_points
|
def calculate_school_points
|
||||||
if self.w1 && self.w2
|
if self.w1 && self.w2
|
||||||
@@ -60,10 +76,12 @@ class Match < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def advance_wrestlers
|
def advance_wrestlers
|
||||||
if self.w1 && self.w2
|
if self.w1
|
||||||
AdvanceWrestler.new(wrestler1).advance
|
AdvanceWrestler.new(wrestler1).advance
|
||||||
AdvanceWrestler.new(wrestler2).advance
|
|
||||||
end
|
end
|
||||||
|
if self.w2
|
||||||
|
AdvanceWrestler.new(wrestler2).advance
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -127,6 +145,22 @@ class Match < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def w1_bracket_name_round_one
|
||||||
|
if self.w1 != nil
|
||||||
|
return "#{wrestler1.original_seed} #{w1_name} - #{wrestler1.school.name}"
|
||||||
|
else
|
||||||
|
"#{w1_name}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def w2_bracket_name_round_one
|
||||||
|
if self.w2 != nil
|
||||||
|
return "#{wrestler2.original_seed} #{w2_name} - #{wrestler2.school.name}"
|
||||||
|
else
|
||||||
|
"#{w2_name}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def winner_name
|
def winner_name
|
||||||
if self.finished != 1
|
if self.finished != 1
|
||||||
return ""
|
return ""
|
||||||
@@ -161,6 +195,18 @@ class Match < ActiveRecord::Base
|
|||||||
self.save
|
self.save
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def replace_loser_name_with_bye(loser_name)
|
||||||
|
if self.loser1_name == loser_name
|
||||||
|
self.loser1_name = "BYE"
|
||||||
|
self.save
|
||||||
|
end
|
||||||
|
if self.loser2_name == loser_name
|
||||||
|
self.loser2_name = "BYE"
|
||||||
|
self.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def pool_number
|
def pool_number
|
||||||
if self.w1?
|
if self.w1?
|
||||||
wrestler1.pool
|
wrestler1.pool
|
||||||
@@ -168,10 +214,18 @@ class Match < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def list_w2_stats
|
def list_w2_stats
|
||||||
"#{w2_name} (#{wrestler2.school.name}): #{w2_stat}"
|
if self.w2
|
||||||
|
"#{w2_name} (#{wrestler2.school.name}): #{w2_stat}"
|
||||||
|
else
|
||||||
|
""
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def list_w1_stats
|
def list_w1_stats
|
||||||
"#{w1_name} (#{wrestler1.school.name}): #{w1_stat}"
|
if self.w1
|
||||||
|
"#{w1_name} (#{wrestler1.school.name}): #{w1_stat}"
|
||||||
|
else
|
||||||
|
""
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ class Tournament < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def tournament_types
|
def tournament_types
|
||||||
["Pool to bracket"]
|
["Pool to bracket","Modified 16 Man Double Elimination"]
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_pre_defined_weights(value)
|
def create_pre_defined_weights(value)
|
||||||
@@ -113,15 +113,33 @@ class Tournament < ActiveRecord::Base
|
|||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def modified_sixteen_man_number_of_wrestlers
|
||||||
|
error_string = ""
|
||||||
|
if self.tournament_type == "Modified 16 Man Double Elimination"
|
||||||
|
weights_with_too_many_wrestlers = weights.select{|w| w.wrestlers.size > 16}
|
||||||
|
weight_with_too_few_wrestlers = weights.select{|w| w.wrestlers.size < 12}
|
||||||
|
weights_with_too_many_wrestlers.each do |weight|
|
||||||
|
error_string = error_string + " The weight class #{weight.max} has more than 16 wrestlers."
|
||||||
|
end
|
||||||
|
weight_with_too_few_wrestlers.each do |weight|
|
||||||
|
error_string = error_string + " The weight class #{weight.max} has less than 12 wrestlers."
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return error_string
|
||||||
|
end
|
||||||
|
|
||||||
def match_generation_error
|
def match_generation_error
|
||||||
errorString = "There is a tournament error."
|
errorString = "There is a tournament error."
|
||||||
|
modified_sixteen_man_error = modified_sixteen_man_number_of_wrestlers
|
||||||
if pool_to_bracket_weights_with_too_many_wrestlers != nil
|
if pool_to_bracket_weights_with_too_many_wrestlers != nil
|
||||||
errorString = errorString + " The following weights have too many wrestlers "
|
errorString = errorString + " The following weights have too many wrestlers "
|
||||||
pool_to_bracket_weights_with_too_many_wrestlers.each do |w|
|
pool_to_bracket_weights_with_too_many_wrestlers.each do |w|
|
||||||
errorString = errorString + "#{w.max} "
|
errorString = errorString + "#{w.max} "
|
||||||
end
|
end
|
||||||
return errorString
|
return errorString
|
||||||
|
elsif modified_sixteen_man_error.length > 0
|
||||||
|
return errorString + modified_sixteen_man_error
|
||||||
else
|
else
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -138,11 +138,11 @@ class Wrestler < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def championship_advancement_wins
|
def championship_advancement_wins
|
||||||
matches_won.select{|m| m.bracket_position == "Quarter" or m.bracket_position == "Semis"}
|
matches_won.select{|m| (m.bracket_position == "Quarter" or m.bracket_position == "Semis" or m.bracket_position == "Bracket") and m.win_type != "BYE"}
|
||||||
end
|
end
|
||||||
|
|
||||||
def consolation_advancement_wins
|
def consolation_advancement_wins
|
||||||
matches_won.select{|m| m.bracket_position == "Conso Semis"}
|
matches_won.select{|m| (m.bracket_position == "Conso Semis" or m.bracket_position == "Conso" or m.bracket_position == "Conso Quarter") and m.win_type != "BYE"}
|
||||||
end
|
end
|
||||||
|
|
||||||
def finished_matches
|
def finished_matches
|
||||||
@@ -162,7 +162,7 @@ class Wrestler < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def pool_wins
|
def pool_wins
|
||||||
matches_won.select{|m| m.bracket_position == "Pool"}
|
matches_won.select{|m| m.bracket_position == "Pool" and m.win_type != "BYE"}
|
||||||
end
|
end
|
||||||
|
|
||||||
def pin_wins
|
def pin_wins
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ class AdvanceWrestler
|
|||||||
|
|
||||||
def advance_raw
|
def advance_raw
|
||||||
pool_to_bracket_advancement if @tournament.tournament_type == "Pool to bracket"
|
pool_to_bracket_advancement if @tournament.tournament_type == "Pool to bracket"
|
||||||
|
DoubleEliminationAdvance.new(@wrestler).bracket_advancement if @tournament.tournament_type == "Modified 16 Man Double Elimination"
|
||||||
end
|
end
|
||||||
|
|
||||||
def pool_to_bracket_advancement
|
def pool_to_bracket_advancement
|
||||||
|
|||||||
107
app/services/bracket_advancement/double_elimination_advance.rb
Normal file
107
app/services/bracket_advancement/double_elimination_advance.rb
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
class DoubleEliminationAdvance
|
||||||
|
|
||||||
|
def initialize(wrestler)
|
||||||
|
@wrestler = wrestler
|
||||||
|
@last_match = @wrestler.last_match
|
||||||
|
end
|
||||||
|
|
||||||
|
def bracket_advancement
|
||||||
|
if @last_match.winner_id == @wrestler.id
|
||||||
|
winner_advance
|
||||||
|
end
|
||||||
|
if @last_match.winner_id != @wrestler.id
|
||||||
|
loser_advance
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def winner_advance
|
||||||
|
if (@last_match.loser1_name == "BYE" or @last_match.loser2_name == "BYE") and @last_match.is_championship_match
|
||||||
|
update_consolation_bye
|
||||||
|
end
|
||||||
|
if @wrestler.last_match.bracket_position == "Quarter"
|
||||||
|
new_match = Match.where("bracket_position = ? AND bracket_position_number = ? AND weight_id = ?","Semis",@wrestler.next_match_position_number.ceil,@wrestler.weight_id).first
|
||||||
|
update_new_match(new_match, get_wrestler_number)
|
||||||
|
elsif @wrestler.last_match.bracket_position == "Semis"
|
||||||
|
new_match = Match.where("bracket_position = ? AND bracket_position_number = ? AND weight_id = ?","1/2",@wrestler.next_match_position_number.ceil,@wrestler.weight_id).first
|
||||||
|
update_new_match(new_match, get_wrestler_number)
|
||||||
|
elsif @wrestler.last_match.bracket_position == "Conso Semis"
|
||||||
|
# if its a regular double elim
|
||||||
|
if Match.where("bracket_position = ? AND bracket_position_number = ? AND weight_id = ?","Conso Semis",@wrestler.next_match_position_number.ceil,@wrestler.weight_id).first.loser1_name != nil
|
||||||
|
new_match = Match.where("bracket_position = ? AND bracket_position_number = ? AND weight_id = ?","3/4",@wrestler.next_match_position_number.ceil,@wrestler.weight_id).first
|
||||||
|
update_new_match(new_match, get_wrestler_number)
|
||||||
|
# if it's a special bracket where consolations wrestler for 5th
|
||||||
|
else
|
||||||
|
new_match = Match.where("bracket_position = ? AND bracket_position_number = ? AND weight_id = ?","5/6",@wrestler.next_match_position_number.ceil,@wrestler.weight_id).first
|
||||||
|
update_new_match(new_match, get_wrestler_number)
|
||||||
|
end
|
||||||
|
elsif @wrestler.last_match.bracket_position == "Conso Quarter"
|
||||||
|
next_round_matches = Match.where("weight_id = ? and bracket_position = ?", @wrestler.weight_id, "Conso Semis").sort_by{|m| m.round}
|
||||||
|
this_round_matches = Match.where("weight_id = ? and round = ? and bracket_position = ?", @wrestler.weight_id, @wrestler.last_match.round, "Conso Quarter")
|
||||||
|
if next_round_matches.size == this_round_matches.size
|
||||||
|
# if a semi loser is dropping down
|
||||||
|
new_match = Match.where("bracket_position = ? AND bracket_position_number = ? AND weight_id = ?","Conso Semis",@wrestler.last_match.bracket_position_number,@wrestler.weight_id).first
|
||||||
|
update_new_match(new_match,2)
|
||||||
|
else
|
||||||
|
# if it's a special bracket where a semi loser is not dropping down
|
||||||
|
new_match = Match.where("bracket_position = ? AND bracket_position_number = ? AND weight_id = ?","Conso Semis",@wrestler.next_match_position_number.ceil,@wrestler.weight_id).first
|
||||||
|
update_new_match(new_match, get_wrestler_number)
|
||||||
|
end
|
||||||
|
elsif @wrestler.last_match.bracket_position == "Bracket"
|
||||||
|
new_match = Match.where("bracket_position_number = ? and weight_id = ? and round > ? and (bracket_position = ? or bracket_position = ?)", @wrestler.next_match_position_number.ceil,@wrestler.weight_id, @wrestler.last_match.round , "Bracket", "Quarter").sort_by{|m| m.round}.first
|
||||||
|
update_new_match(new_match, get_wrestler_number)
|
||||||
|
elsif @wrestler.last_match.bracket_position == "Conso"
|
||||||
|
next_round_matches = Match.where("weight_id = ? and round > ? and (bracket_position = ? or bracket_position = ?)", @wrestler.weight_id, @wrestler.last_match.round, "Conso", "Conso Quarter").sort_by{|m| m.round}
|
||||||
|
this_round_matches = Match.where("weight_id = ? and round = ? and (bracket_position = ? or bracket_position = ?)", @wrestler.weight_id, @wrestler.last_match.round, "Conso", "Conso Quarter")
|
||||||
|
# if a loser is dropping down
|
||||||
|
if next_round_matches.size == this_round_matches.size
|
||||||
|
new_match = Match.where("bracket_position_number = ? and weight_id = ? and round > ? and (bracket_position = ? or bracket_position = ?)", @wrestler.last_match.bracket_position_number,@wrestler.weight_id, @wrestler.last_match.round, "Conso", "Conso Quarter").sort_by{|m| m.round}.first
|
||||||
|
update_new_match(new_match, 2)
|
||||||
|
else
|
||||||
|
new_match = Match.where("bracket_position_number = ? and weight_id = ? and round > ? and (bracket_position = ? or bracket_position = ?)", @wrestler.next_match_position_number.ceil,@wrestler.weight_id, @wrestler.last_match.round, "Conso", "Conso Quarter").sort_by{|m| m.round}.first
|
||||||
|
update_new_match(new_match, get_wrestler_number)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update_new_match(match, wrestler_number)
|
||||||
|
if wrestler_number == 2 or match.loser1_name != nil
|
||||||
|
match.w2 = @wrestler.id
|
||||||
|
match.save
|
||||||
|
elsif
|
||||||
|
match.w1 = @wrestler.id
|
||||||
|
match.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update_consolation_bye
|
||||||
|
bout = @wrestler.last_match.bout_number
|
||||||
|
next_match = Match.where("(loser1_name = ? OR loser2_name = ?) AND weight_id = ?","Loser of #{bout}","Loser of #{bout}",@wrestler.weight_id)
|
||||||
|
if next_match.size > 0
|
||||||
|
next_match.first.replace_loser_name_with_bye("Loser of #{bout}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_wrestler_number
|
||||||
|
if @wrestler.next_match_position_number != @wrestler.next_match_position_number.ceil
|
||||||
|
return 1
|
||||||
|
elsif @wrestler.next_match_position_number == @wrestler.next_match_position_number.ceil
|
||||||
|
return 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def loser_advance
|
||||||
|
bout = @wrestler.last_match.bout_number
|
||||||
|
next_match = Match.where("(loser1_name = ? OR loser2_name = ?) AND weight_id = ?","Loser of #{bout}","Loser of #{bout}",@wrestler.weight_id)
|
||||||
|
if next_match.size > 0
|
||||||
|
next_match = next_match.first
|
||||||
|
next_match.replace_loser_name_with_wrestler(@wrestler,"Loser of #{bout}")
|
||||||
|
if next_match.loser1_name == "BYE" or next_match.loser2_name == "BYE"
|
||||||
|
next_match.winner_id = @wrestler.id
|
||||||
|
next_match.win_type = "BYE"
|
||||||
|
next_match.finished = 1
|
||||||
|
next_match.save
|
||||||
|
next_match.advance_wrestlers
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -33,8 +33,10 @@ class GenerateTournamentMatches
|
|||||||
def generate_raw
|
def generate_raw
|
||||||
standardStartingActions
|
standardStartingActions
|
||||||
PoolToBracketMatchGeneration.new(@tournament).generatePoolToBracketMatches if @tournament.tournament_type == "Pool to bracket"
|
PoolToBracketMatchGeneration.new(@tournament).generatePoolToBracketMatches if @tournament.tournament_type == "Pool to bracket"
|
||||||
|
ModifiedSixteenManMatchGeneration.new(@tournament).generate_matches if @tournament.tournament_type == "Modified 16 Man Double Elimination"
|
||||||
postMatchCreationActions
|
postMatchCreationActions
|
||||||
PoolToBracketMatchGeneration.new(@tournament).assignLoserNames if @tournament.tournament_type == "Pool to bracket"
|
PoolToBracketMatchGeneration.new(@tournament).assignLoserNames if @tournament.tournament_type == "Pool to bracket"
|
||||||
|
ModifiedSixteenManGenerateLoserNames.new(@tournament).assign_loser_names if @tournament.tournament_type == "Modified 16 Man Double Elimination"
|
||||||
end
|
end
|
||||||
|
|
||||||
def standardStartingActions
|
def standardStartingActions
|
||||||
@@ -45,7 +47,7 @@ class GenerateTournamentMatches
|
|||||||
end
|
end
|
||||||
|
|
||||||
def postMatchCreationActions
|
def postMatchCreationActions
|
||||||
moveFinalsMatchesToLastRound
|
moveFinalsMatchesToLastRound if @tournament.tournament_type == "Pool to bracket"
|
||||||
assignBouts
|
assignBouts
|
||||||
assignFirstMatchesToMats
|
assignFirstMatchesToMats
|
||||||
@tournament.curently_generating_matches = nil
|
@tournament.curently_generating_matches = nil
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
class ModifiedSixteenManGenerateLoserNames
|
||||||
|
def initialize( tournament )
|
||||||
|
@tournament = tournament
|
||||||
|
end
|
||||||
|
|
||||||
|
def assign_loser_names
|
||||||
|
matches_by_weight = nil
|
||||||
|
@tournament.weights.each do |w|
|
||||||
|
matches_by_weight = @tournament.matches.where(weight_id: w.id)
|
||||||
|
conso_round_2(matches_by_weight)
|
||||||
|
conso_round_3(matches_by_weight)
|
||||||
|
third_fourth(matches_by_weight)
|
||||||
|
save_matches(matches_by_weight)
|
||||||
|
matches_by_weight = @tournament.matches.where(weight_id: w.id).reload
|
||||||
|
advance_bye_matches_championship(matches_by_weight)
|
||||||
|
save_matches(matches_by_weight)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def conso_round_2(matches)
|
||||||
|
matches.select{|m| m.round == 2 and m.bracket_position == "Conso"}.sort_by{|m| m.bracket_position_number}.each do |match|
|
||||||
|
if match.bracket_position_number == 1
|
||||||
|
match.loser1_name = "Loser of #{matches.select{|m| m.bracket_position_number == 1 and m.round == 1 and m.bracket_position == "Bracket"}.first.bout_number}"
|
||||||
|
match.loser2_name = "Loser of #{matches.select{|m| m.bracket_position_number == 2 and m.round == 1 and m.bracket_position == "Bracket"}.first.bout_number}"
|
||||||
|
elsif match.bracket_position_number == 2
|
||||||
|
match.loser1_name = "Loser of #{matches.select{|m| m.bracket_position_number == 3 and m.round == 1 and m.bracket_position == "Bracket"}.first.bout_number}"
|
||||||
|
match.loser2_name = "Loser of #{matches.select{|m| m.bracket_position_number == 4 and m.round == 1 and m.bracket_position == "Bracket"}.first.bout_number}"
|
||||||
|
elsif match.bracket_position_number == 3
|
||||||
|
match.loser1_name = "Loser of #{matches.select{|m| m.bracket_position_number == 5 and m.round == 1 and m.bracket_position == "Bracket"}.first.bout_number}"
|
||||||
|
match.loser2_name = "Loser of #{matches.select{|m| m.bracket_position_number == 6 and m.round == 1 and m.bracket_position == "Bracket"}.first.bout_number}"
|
||||||
|
elsif match.bracket_position_number == 4
|
||||||
|
match.loser1_name = "Loser of #{matches.select{|m| m.bracket_position_number == 7 and m.round == 1 and m.bracket_position == "Bracket"}.first.bout_number}"
|
||||||
|
match.loser2_name = "Loser of #{matches.select{|m| m.bracket_position_number == 8 and m.round == 1 and m.bracket_position == "Bracket"}.first.bout_number}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def conso_round_3(matches)
|
||||||
|
matches.select{|m| m.round == 3 and m.bracket_position == "Conso Quarter"}.sort_by{|m| m.bracket_position_number}.each do |match|
|
||||||
|
if match.bracket_position_number == 1
|
||||||
|
match.loser1_name = "Loser of #{matches.select{|m| m.bracket_position_number == 4 and m.bracket_position == "Quarter"}.first.bout_number}"
|
||||||
|
elsif match.bracket_position_number == 2
|
||||||
|
match.loser1_name = "Loser of #{matches.select{|m| m.bracket_position_number == 3 and m.bracket_position == "Quarter"}.first.bout_number}"
|
||||||
|
elsif match.bracket_position_number == 3
|
||||||
|
match.loser1_name = "Loser of #{matches.select{|m| m.bracket_position_number == 2 and m.bracket_position == "Quarter"}.first.bout_number}"
|
||||||
|
elsif match.bracket_position_number == 4
|
||||||
|
match.loser1_name = "Loser of #{matches.select{|m| m.bracket_position_number == 1 and m.bracket_position == "Quarter"}.first.bout_number}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def third_fourth(matches)
|
||||||
|
matches.select{|m| m.bracket_position == "3/4"}.sort_by{|m| m.bracket_position_number}.each do |match|
|
||||||
|
match.loser1_name = "Loser of #{matches.select{|m| m.bracket_position == "Semis"}.first.bout_number}"
|
||||||
|
match.loser2_name = "Loser of #{matches.select{|m| m.bracket_position == "Semis"}.second.bout_number}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def advance_bye_matches_championship(matches)
|
||||||
|
matches.select{|m| m.round == 1 and m.bracket_position == "Bracket"}.sort_by{|m| m.bracket_position_number}.each do |match|
|
||||||
|
if match.w1 == nil or match.w2 == nil
|
||||||
|
puts match.bout_number
|
||||||
|
match.finished = 1
|
||||||
|
match.win_type = "BYE"
|
||||||
|
if match.w1 != nil
|
||||||
|
match.winner_id = match.w1
|
||||||
|
match.loser2_name = "BYE"
|
||||||
|
match.save
|
||||||
|
match.advance_wrestlers
|
||||||
|
elsif match.w2 != nil
|
||||||
|
match.winner_id = match.w2
|
||||||
|
match.loser1_name = "BYE"
|
||||||
|
match.save
|
||||||
|
match.advance_wrestlers
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def save_matches(matches)
|
||||||
|
matches.each do |m|
|
||||||
|
m.save!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
class ModifiedSixteenManMatchGeneration
|
||||||
|
def initialize( tournament )
|
||||||
|
@tournament = tournament
|
||||||
|
end
|
||||||
|
|
||||||
|
def generate_matches
|
||||||
|
@tournament.weights.each do |weight|
|
||||||
|
generate_matches_for_weight(weight)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def generate_matches_for_weight(weight)
|
||||||
|
round_one(weight)
|
||||||
|
round_two(weight)
|
||||||
|
round_three(weight)
|
||||||
|
round_four(weight)
|
||||||
|
round_five(weight)
|
||||||
|
end
|
||||||
|
|
||||||
|
def round_one(weight)
|
||||||
|
create_matchup_from_seed(1,16, "Bracket", 1, 1,weight)
|
||||||
|
create_matchup_from_seed(8,9, "Bracket", 2, 1,weight)
|
||||||
|
create_matchup_from_seed(5,12, "Bracket", 3, 1,weight)
|
||||||
|
create_matchup_from_seed(4,14, "Bracket", 4, 1,weight)
|
||||||
|
create_matchup_from_seed(3,13, "Bracket", 5, 1,weight)
|
||||||
|
create_matchup_from_seed(6,11, "Bracket", 6, 1,weight)
|
||||||
|
create_matchup_from_seed(7,10, "Bracket", 7, 1,weight)
|
||||||
|
create_matchup_from_seed(2,15, "Bracket", 8, 1,weight)
|
||||||
|
end
|
||||||
|
|
||||||
|
def round_two(weight)
|
||||||
|
create_matchup(nil,nil,"Quarter",1,2,weight)
|
||||||
|
create_matchup(nil,nil,"Quarter",2,2,weight)
|
||||||
|
create_matchup(nil,nil,"Quarter",3,2,weight)
|
||||||
|
create_matchup(nil,nil,"Quarter",4,2,weight)
|
||||||
|
create_matchup(nil,nil,"Conso",1,2,weight)
|
||||||
|
create_matchup(nil,nil,"Conso",2,2,weight)
|
||||||
|
create_matchup(nil,nil,"Conso",3,2,weight)
|
||||||
|
create_matchup(nil,nil,"Conso",4,2,weight)
|
||||||
|
end
|
||||||
|
|
||||||
|
def round_three(weight)
|
||||||
|
create_matchup(nil,nil,"Semis",1,3,weight)
|
||||||
|
create_matchup(nil,nil,"Semis",2,3,weight)
|
||||||
|
create_matchup(nil,nil,"Conso Quarter",1,3,weight)
|
||||||
|
create_matchup(nil,nil,"Conso Quarter",2,3,weight)
|
||||||
|
create_matchup(nil,nil,"Conso Quarter",3,3,weight)
|
||||||
|
create_matchup(nil,nil,"Conso Quarter",4,3,weight)
|
||||||
|
end
|
||||||
|
|
||||||
|
def round_four(weight)
|
||||||
|
create_matchup(nil,nil,"Conso Semis",1,4,weight)
|
||||||
|
create_matchup(nil,nil,"Conso Semis",2,4,weight)
|
||||||
|
end
|
||||||
|
|
||||||
|
def round_five(weight)
|
||||||
|
create_matchup(nil,nil,"1/2",1,5,weight)
|
||||||
|
create_matchup(nil,nil,"3/4",1,5,weight)
|
||||||
|
create_matchup(nil,nil,"5/6",1,5,weight)
|
||||||
|
end
|
||||||
|
|
||||||
|
def wrestler_with_seed(seed,weight)
|
||||||
|
wrestler = Wrestler.where("weight_id = ? and bracket_line = ?", weight.id, seed).first
|
||||||
|
if wrestler
|
||||||
|
return wrestler.id
|
||||||
|
else
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_matchup_from_seed(w1_seed, w2_seed, bracket_position, bracket_position_number,round,weight)
|
||||||
|
# if wrestler_with_seed(w1_seed,weight) and wrestler_with_seed(w2_seed,weight)
|
||||||
|
create_matchup(wrestler_with_seed(w1_seed,weight),wrestler_with_seed(w2_seed,weight), bracket_position, bracket_position_number,round,weight)
|
||||||
|
# end
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_matchup(w1, w2, bracket_position, bracket_position_number,round,weight)
|
||||||
|
@tournament.matches.create(
|
||||||
|
w1: w1,
|
||||||
|
w2: w2,
|
||||||
|
weight_id: weight.id,
|
||||||
|
round: round,
|
||||||
|
bracket_position: bracket_position,
|
||||||
|
bracket_position_number: bracket_position_number
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -25,7 +25,9 @@ class CalculateWrestlerTeamScore
|
|||||||
end
|
end
|
||||||
|
|
||||||
def placement_points
|
def placement_points
|
||||||
PoolBracketPlacementPoints.new(@wrestler).calcPoints if @tournament.tournament_type == "Pool to bracket"
|
return PoolBracketPlacementPoints.new(@wrestler).calcPoints if @tournament.tournament_type == "Pool to bracket"
|
||||||
|
return ModifiedSixteenManPlacementPoints.new(@wrestler).calc_points if @tournament.tournament_type == "Modified 16 Man Double Elimination"
|
||||||
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def bracketPoints
|
def bracketPoints
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
class ModifiedSixteenManPlacementPoints
|
||||||
|
def initialize(wrestler)
|
||||||
|
@wrestler = wrestler
|
||||||
|
@number_of_placers = 6
|
||||||
|
end
|
||||||
|
|
||||||
|
def calc_points
|
||||||
|
if won_bracket_position_size("1/2") > 0
|
||||||
|
return PlacementPoints.new(@number_of_placers).firstPlace
|
||||||
|
elsif bracket_position_size("1/2") > 0
|
||||||
|
return PlacementPoints.new(@number_of_placers).secondPlace
|
||||||
|
elsif won_bracket_position_size("3/4") > 0
|
||||||
|
return PlacementPoints.new(@number_of_placers).thirdPlace
|
||||||
|
elsif bracket_position_size("Semis") > 0
|
||||||
|
return PlacementPoints.new(@number_of_placers).fourthPlace
|
||||||
|
elsif won_bracket_position_size("5/6") > 0
|
||||||
|
return PlacementPoints.new(@number_of_placers).fifthPlace
|
||||||
|
elsif bracket_position_size("5/6") > 0
|
||||||
|
return PlacementPoints.new(@number_of_placers).sixthPlace
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def bracket_position_size(bracket_position_name)
|
||||||
|
@wrestler.all_matches.select{|m| m.bracket_position == bracket_position_name}.size
|
||||||
|
end
|
||||||
|
|
||||||
|
def won_bracket_position_size(bracket_position_name)
|
||||||
|
@wrestler.matches_won.select{|m| m.bracket_position == bracket_position_name}.size
|
||||||
|
end
|
||||||
|
end
|
||||||
53
app/services/wrestler_services/placement_points.rb
Normal file
53
app/services/wrestler_services/placement_points.rb
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
class PlacementPoints
|
||||||
|
def initialize(number_of_placers)
|
||||||
|
@number_of_placers = number_of_placers
|
||||||
|
end
|
||||||
|
|
||||||
|
def firstPlace
|
||||||
|
if @number_of_placers == 4
|
||||||
|
return 14
|
||||||
|
else
|
||||||
|
return 16
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def secondPlace
|
||||||
|
if @number_of_placers == 4
|
||||||
|
return 10
|
||||||
|
else
|
||||||
|
return 12
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def thirdPlace
|
||||||
|
if @number_of_placers == 4
|
||||||
|
return 9
|
||||||
|
else
|
||||||
|
return 7
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def fourthPlace
|
||||||
|
if @number_of_placers == 4
|
||||||
|
return 4
|
||||||
|
else
|
||||||
|
return 7
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def fifthPlace
|
||||||
|
5
|
||||||
|
end
|
||||||
|
|
||||||
|
def sixthPlace
|
||||||
|
3
|
||||||
|
end
|
||||||
|
|
||||||
|
def seventhPlace
|
||||||
|
2
|
||||||
|
end
|
||||||
|
|
||||||
|
def eighthPlace
|
||||||
|
1
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -48,120 +48,72 @@ class PoolBracketPlacementPoints
|
|||||||
|
|
||||||
def fourPoolsToQuarter
|
def fourPoolsToQuarter
|
||||||
if bracket_position_size("Semis") > 0
|
if bracket_position_size("Semis") > 0
|
||||||
return fourthPlace
|
return PlacementPoints.new(number_of_placers).fourthPlace
|
||||||
end
|
end
|
||||||
if bracket_position_size("Quarter") > 0
|
if bracket_position_size("Quarter") > 0
|
||||||
return eighthPlace
|
return PlacementPoints.new(number_of_placers).eighthPlace
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def twoPoolsToSemi
|
def twoPoolsToSemi
|
||||||
if bracket_position_size("Semis") > 0
|
if bracket_position_size("Semis") > 0
|
||||||
return fourthPlace
|
return PlacementPoints.new(number_of_placers).fourthPlace
|
||||||
end
|
end
|
||||||
if bracket_position_size("Conso Semis") > 0
|
if bracket_position_size("Conso Semis") > 0
|
||||||
return eighthPlace
|
return PlacementPoints.new(number_of_placers).eighthPlace
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def fourPoolsToSemi
|
def fourPoolsToSemi
|
||||||
if bracket_position_size("Semis") > 0
|
if bracket_position_size("Semis") > 0
|
||||||
return fourthPlace
|
return PlacementPoints.new(number_of_placers).fourthPlace
|
||||||
end
|
end
|
||||||
if bracket_position_size("Conso Semis") > 0
|
if bracket_position_size("Conso Semis") > 0
|
||||||
return eighthPlace
|
return PlacementPoints.new(number_of_placers).eighthPlace
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def onePool
|
def onePool
|
||||||
if @wrestler.pool_placement == 1
|
if @wrestler.pool_placement == 1
|
||||||
return firstPlace
|
return PlacementPoints.new(number_of_placers).firstPlace
|
||||||
elsif @wrestler.pool_placement == 2
|
elsif @wrestler.pool_placement == 2
|
||||||
return secondPlace
|
return PlacementPoints.new(number_of_placers).secondPlace
|
||||||
elsif @wrestler.pool_placement == 3
|
elsif @wrestler.pool_placement == 3
|
||||||
return thirdPlace
|
return PlacementPoints.new(number_of_placers).thirdPlace
|
||||||
elsif @wrestler.pool_placement == 4
|
elsif @wrestler.pool_placement == 4
|
||||||
return fourthPlace
|
return PlacementPoints.new(number_of_placers).fourthPlace
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def finalMatchPoints
|
def finalMatchPoints
|
||||||
if won_bracket_position_size("1/2") > 0
|
if won_bracket_position_size("1/2") > 0
|
||||||
return firstPlace
|
return PlacementPoints.new(number_of_placers).firstPlace
|
||||||
end
|
end
|
||||||
if won_bracket_position_size("3/4") > 0
|
if won_bracket_position_size("3/4") > 0
|
||||||
return thirdPlace
|
return PlacementPoints.new(number_of_placers).thirdPlace
|
||||||
end
|
end
|
||||||
if won_bracket_position_size("5/6") > 0
|
if won_bracket_position_size("5/6") > 0
|
||||||
return fifthPlace
|
return PlacementPoints.new(number_of_placers).fifthPlace
|
||||||
end
|
end
|
||||||
if won_bracket_position_size("7/8") > 0
|
if won_bracket_position_size("7/8") > 0
|
||||||
return seventhPlace
|
return PlacementPoints.new(number_of_placers).seventhPlace
|
||||||
end
|
end
|
||||||
if bracket_position_size("1/2") > 0
|
if bracket_position_size("1/2") > 0
|
||||||
return secondPlace
|
return PlacementPoints.new(number_of_placers).secondPlace
|
||||||
end
|
end
|
||||||
if bracket_position_size("3/4") > 0
|
if bracket_position_size("3/4") > 0
|
||||||
return fourthPlace
|
return PlacementPoints.new(number_of_placers).fourthPlace
|
||||||
end
|
end
|
||||||
if bracket_position_size("5/6") > 0
|
if bracket_position_size("5/6") > 0
|
||||||
return sixthPlace
|
return PlacementPoints.new(number_of_placers).sixthPlace
|
||||||
end
|
end
|
||||||
if bracket_position_size("7/8") > 0
|
if bracket_position_size("7/8") > 0
|
||||||
return eighthPlace
|
return PlacementPoints.new(number_of_placers).eighthPlace
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def firstPlace
|
|
||||||
if number_of_placers == 4
|
|
||||||
return 14
|
|
||||||
else
|
|
||||||
return 16
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def secondPlace
|
|
||||||
if number_of_placers == 4
|
|
||||||
return 10
|
|
||||||
else
|
|
||||||
return 12
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def thirdPlace
|
|
||||||
if number_of_placers == 4
|
|
||||||
return 9
|
|
||||||
else
|
|
||||||
return 7
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def fourthPlace
|
|
||||||
if number_of_placers == 4
|
|
||||||
return 4
|
|
||||||
else
|
|
||||||
return 7
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def fifthPlace
|
|
||||||
5
|
|
||||||
end
|
|
||||||
|
|
||||||
def sixthPlace
|
|
||||||
3
|
|
||||||
end
|
|
||||||
|
|
||||||
def seventhPlace
|
|
||||||
2
|
|
||||||
end
|
|
||||||
|
|
||||||
def eighthPlace
|
|
||||||
1
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
22
app/views/tournaments/_bracket_director_actions.html.erb
Normal file
22
app/views/tournaments/_bracket_director_actions.html.erb
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<% if can? :manage, @tournament %>
|
||||||
|
<h3>Tournament Director Bracket Actions</h3>
|
||||||
|
<table class="table">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<strong>Swap Bracket Position</strong>
|
||||||
|
<%= form_for(Wrestler.new, url: swap_wrestlers_path(@tournament)) do |f| %>
|
||||||
|
<div class="field">
|
||||||
|
<%= f.label 'Wrestler 1' %><br>
|
||||||
|
<%= f.collection_select :originalId, @weight.wrestlers, :id, :name %>
|
||||||
|
</div>
|
||||||
|
<div class="field">
|
||||||
|
<%= f.label 'Wrestler 2' %><br>
|
||||||
|
<%= f.collection_select :swapId, @weight.wrestlers, :id, :name %>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<%= submit_tag "Swap", :class=>"btn btn-success"%>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<% end %>
|
||||||
95
app/views/tournaments/_bracket_partial.html.erb
Normal file
95
app/views/tournaments/_bracket_partial.html.erb
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
<style>
|
||||||
|
table.smallText tr td { font-size: 10px; }
|
||||||
|
/*
|
||||||
|
* Bracket Layout Specifics
|
||||||
|
*/
|
||||||
|
main {
|
||||||
|
display:flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.round {
|
||||||
|
display:flex;
|
||||||
|
flex-direction:column;
|
||||||
|
width: 145px;
|
||||||
|
list-style:none;
|
||||||
|
padding:0;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.game + li {
|
||||||
|
flex-grow:1;
|
||||||
|
}
|
||||||
|
|
||||||
|
li:first-child,li:last-child {
|
||||||
|
flex-grow:.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.game {
|
||||||
|
padding-left:5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.winner {
|
||||||
|
font-weight:bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.game span {
|
||||||
|
float:right;
|
||||||
|
margin-right:5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.game-top {
|
||||||
|
border-bottom:1px solid #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.game-top + li {
|
||||||
|
border-right:1px solid #aaa; min-height:5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bout-number {
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 15px;
|
||||||
|
}
|
||||||
|
.bracket-winner {
|
||||||
|
border-bottom:1px solid #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.game-bottom {
|
||||||
|
border-bottom:1px solid #aaa; border-right:1px solid #aaa;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<table class='smallText'>
|
||||||
|
<h5><strong><%= @tournament.name %> - <%= @weight.max %> lbs Bracket</strong></h5>
|
||||||
|
<tr>
|
||||||
|
<% if @tournament.tournament_type == "Pool to bracket" %>
|
||||||
|
<td valign="top" style="padding: 10px;">
|
||||||
|
<% @matches = @tournament.matches.select{|m| m.weight_id == @weight.id} %>
|
||||||
|
<% @wrestlers = Wrestler.where(weight_id: @weight.id) %>
|
||||||
|
<% @pools = @weight.pool_rounds(@matches) %>
|
||||||
|
<%= render 'pool' %>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
|
||||||
|
<td valign="top" style="padding: 10px;">
|
||||||
|
<% if @weight.pool_bracket_type == "twoPoolsToFinal" %>
|
||||||
|
<%= render 'twoPoolFinalBracket' %>
|
||||||
|
<% end %>
|
||||||
|
<% if @weight.pool_bracket_type == "twoPoolsToSemi" %>
|
||||||
|
<%= render 'twoPoolSemiBracket' %>
|
||||||
|
<% end %>
|
||||||
|
<% if @weight.pool_bracket_type == "fourPoolsToQuarter" %>
|
||||||
|
<%= render 'fourPoolQuarterBracket' %>
|
||||||
|
<% end %>
|
||||||
|
<% if @weight.pool_bracket_type == "eightPoolsToQuarter" %>
|
||||||
|
<%= render 'fourPoolQuarterBracket' %>
|
||||||
|
<% end %>
|
||||||
|
<% if @weight.pool_bracket_type == "fourPoolsToSemi" %>
|
||||||
|
<%= render 'fourPoolSemiBracket' %>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
|
<% elsif @tournament.tournament_type == "Modified 16 Man Double Elimination" %>
|
||||||
|
<td valign="top" style="padding: 10px;">
|
||||||
|
<%= render 'modified_sixteen_man_double_elimination_bracket' %>
|
||||||
|
</td>
|
||||||
|
<% end %>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
@@ -0,0 +1,131 @@
|
|||||||
|
<h4>Championship Bracket</h4>
|
||||||
|
<main id="bracket">
|
||||||
|
<ul class="round round-1">
|
||||||
|
<% @matches.select{|m|m.bracket_position == "Bracket" and m.round == 1}.sort_by{|m| m.bracket_position_number}.each do |match| %>
|
||||||
|
<li> </li>
|
||||||
|
<li class="game game-top "><%= match.w1_bracket_name_round_one %> <span></span></li>
|
||||||
|
<li class="bout-number"><%= match.bout_number %> <%= match.bracket_score_string %> </li>
|
||||||
|
<li class="game game-bottom "><%= match.w2_bracket_name_round_one %><span></span></li>
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<ul class="round round-2">
|
||||||
|
<% @matches.select{|m|m.bracket_position == "Quarter"}.sort_by{|m| m.bracket_position_number}.each do |match| %>
|
||||||
|
<li></li>
|
||||||
|
<li class="game game-top "><%= match.w1_bracket_name %> <span></span></li>
|
||||||
|
<li class="bout-number"><%= match.bout_number %> <%= match.bracket_score_string %> </li>
|
||||||
|
<li class="game game-bottom "><%= match.w2_bracket_name %><span></span></li>
|
||||||
|
<li></li>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<ul class="round round-3">
|
||||||
|
<% @matches.select{|m|m.bracket_position == "Semis"}.sort_by{|m| m.bracket_position_number}.each do |match| %>
|
||||||
|
<li></li>
|
||||||
|
<li class="game game-top "><%= match.w1_bracket_name %> <span></span></li>
|
||||||
|
<li class="bout-number"><%= match.bout_number %> <%= match.bracket_score_string %> </li>
|
||||||
|
<li class="game game-bottom "><%= match.w2_bracket_name %><span></span></li>
|
||||||
|
<li></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<ul class="round round-4">
|
||||||
|
<% @matches.select{|m|m.bracket_position == "1/2"}.each do |match| %>
|
||||||
|
<li></li>
|
||||||
|
<li class="game game-top "><%= match.w1_bracket_name %> <span></span></li>
|
||||||
|
<li class="bout-number"><%= match.bout_number %> <%= match.bracket_score_string %> </li>
|
||||||
|
<li class="game game-bottom "><%= match.w2_bracket_name %><span></span></li>
|
||||||
|
<li></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="round round-5">
|
||||||
|
<li></li>
|
||||||
|
<li class="bracket-winner"> <%= match.bracket_winner_name %> <span></span></li>
|
||||||
|
1st
|
||||||
|
<li></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<% end %>
|
||||||
|
</main>
|
||||||
|
<h4>3/4 place match</h4>
|
||||||
|
<main id="bracket">
|
||||||
|
<ul class="round round-3">
|
||||||
|
<% @matches.select{|m|m.bracket_position == "3/4"}.each do |match| %>
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
<li class="game game-top "><%= match.w1_bracket_name %> <span></span></li>
|
||||||
|
<li class="bout-number"><%= match.bout_number %> <%= match.bracket_score_string %> </li>
|
||||||
|
<li class="game game-bottom "><%= match.w2_bracket_name %><span></span></li>
|
||||||
|
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="round round-4">
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
<li class="bracket-winner"> <%= match.bracket_winner_name %> <span></span></li>
|
||||||
|
3rd
|
||||||
|
|
||||||
|
<li> </li>
|
||||||
|
</ul>
|
||||||
|
<% end %>
|
||||||
|
</main>
|
||||||
|
<h4>Consolation Bracket</h4>
|
||||||
|
<main id="bracket">
|
||||||
|
<ul class="round round-1">
|
||||||
|
<% @matches.select{|m|m.bracket_position == "Conso" and m.round == 2}.sort_by{|m| m.bracket_position_number}.each do |match| %>
|
||||||
|
<li> </li>
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="game game-top "><%= match.w1_bracket_name %> <span></span></li>
|
||||||
|
<li class="bout-number"><%= match.bout_number %> <%= match.bracket_score_string %> </li>
|
||||||
|
<li class="game game-bottom "><%= match.w2_bracket_name %><span></span></li>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<ul class="round round-2">
|
||||||
|
<% @matches.select{|m|m.bracket_position == "Conso Quarter"}.sort_by{|m| m.bracket_position_number}.each do |match| %>
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
<li class="game game-top "><%= match.w1_bracket_name %> <span></span></li>
|
||||||
|
<li class="bout-number"><%= match.bout_number %> <%= match.bracket_score_string %> </li>
|
||||||
|
<li class="game game-bottom "><%= match.w2_bracket_name %><span></span></li>
|
||||||
|
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<ul class="round round-3">
|
||||||
|
<% @matches.select{|m|m.bracket_position == "Conso Semis"}.sort_by{|m| m.bracket_position_number}.each do |match| %>
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
<li class="game game-top "><%= match.w1_bracket_name %> <span></span></li>
|
||||||
|
<li class="bout-number"><%= match.bout_number %> <%= match.bracket_score_string %> </li>
|
||||||
|
<li class="game game-bottom "><%= match.w2_bracket_name %><span></span></li>
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<ul class="round round-4">
|
||||||
|
<% @matches.select{|m|m.bracket_position == "5/6"}.each do |match| %>
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
<li class="game game-top "><%= match.w1_bracket_name %> <span></span></li>
|
||||||
|
<li class="bout-number"><%= match.bout_number %> <%= match.bracket_score_string %> </li>
|
||||||
|
<li class="game game-bottom "><%= match.w2_bracket_name %><span></span></li>
|
||||||
|
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="round round-5">
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
<li class="bracket-winner"> <%= match.bracket_winner_name %> <span></span></li>
|
||||||
|
5th
|
||||||
|
|
||||||
|
<li> </li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<% end %>
|
||||||
|
</main>
|
||||||
@@ -1,104 +1,26 @@
|
|||||||
<% cache ["#{@tournament.id}_all_brackets", @tournament] do %>
|
<% cache ["#{@tournament.id}_all_brackets", @tournament] do %>
|
||||||
|
|
||||||
<style>
|
|
||||||
.pagebreak {
|
|
||||||
page-break-after: always;
|
|
||||||
border: none;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
width: 8in; /* width: 7in; */
|
|
||||||
height: 9.5in; /* or height: 9.5in; */
|
|
||||||
font-size: 8px;
|
|
||||||
position: relative;
|
|
||||||
left: 0in;
|
|
||||||
height: 1in;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Bracket Layout Specifics
|
|
||||||
*/
|
|
||||||
main, ul {
|
|
||||||
display:flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
flex-direction:column;
|
|
||||||
width: 125px;
|
|
||||||
list-style:none;
|
|
||||||
padding:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game + li {
|
|
||||||
flex-grow:1;
|
|
||||||
}
|
|
||||||
|
|
||||||
li:first-child,li:last-child {
|
|
||||||
flex-grow:.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game {
|
|
||||||
padding-left:5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.winner {
|
|
||||||
font-weight:bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game span {
|
|
||||||
float:right;
|
|
||||||
margin-right:5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game-top {
|
|
||||||
border-bottom:1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game-top + li {
|
|
||||||
border-right:1px solid #aaa; min-height:60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bracket-winner {
|
|
||||||
border-bottom:1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bout-number {
|
|
||||||
text-align: center;
|
|
||||||
padding-top: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game-bottom {
|
|
||||||
border-top:1px solid #aaa;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<div id="exportable">
|
<div id="exportable">
|
||||||
<%= render :file => 'tournaments/team_scores' %>
|
<%= render :file => 'tournaments/team_scores' %>
|
||||||
<% @tournament.weights.sort_by{|w| w.max}.each do |w| %>
|
<% @tournament.weights.sort_by{|w| w.max}.each do |weight| %>
|
||||||
<table class='pagebreak'>
|
<table class='pagebreak'>
|
||||||
<h5><strong><%= @tournament.name %> - <%= w.max %> lbs Bracket</strong></h5>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="top" style="padding: 0px;">
|
<% if @tournament.tournament_type == "Pool to bracket" %>
|
||||||
<% @weight = w %>
|
|
||||||
<% @matches = @tournament.matches.select{|m| m.weight_id == @weight.id} %>
|
|
||||||
<% @wrestlers = Wrestler.where(weight_id: @weight.id) %>
|
|
||||||
<% @pools = w.pool_rounds(@matches) %>
|
|
||||||
<%= render 'pool' %>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
|
|
||||||
<td valign="top" style="padding: 10px;">
|
<td valign="top" style="padding: 10px;">
|
||||||
<% if w.pool_bracket_type == "twoPoolsToFinal" %>
|
<!-- Need to define what the tournaments#bracket controller defines -->
|
||||||
<%= render 'twoPoolFinalBracket' %>
|
<% @matches = @tournament.matches.select{|m| m.weight_id == weight.id} %>
|
||||||
<% end %>
|
<% @wrestlers = Wrestler.where(weight_id: weight.id) %>
|
||||||
<% if w.pool_bracket_type == "twoPoolsToSemi" %>
|
<% @pools = weight.pool_rounds(@matches) %>
|
||||||
<%= render 'twoPoolSemiBracket' %>
|
<% @weight = weight %>
|
||||||
<% end %>
|
<%= render 'bracket_partial' %>
|
||||||
<% if w.pool_bracket_type == "fourPoolsToQuarter" or w.pool_bracket_type == "eightPoolsToQuarter" %>
|
|
||||||
<%= render 'fourPoolQuarterBracket' %>
|
|
||||||
<% end %>
|
|
||||||
<% if w.pool_bracket_type == "fourPoolsToSemi" %>
|
|
||||||
<%= render 'fourPoolSemiBracket' %>
|
|
||||||
<% end %>
|
|
||||||
</td>
|
</td>
|
||||||
|
<% elsif @tournament.tournament_type == "Modified 16 Man Double Elimination" %>
|
||||||
|
<td valign="top" style="padding: 10px;">
|
||||||
|
<!-- Need to define what the tournaments#bracket controller defines -->
|
||||||
|
<% @matches = weight.matches %>
|
||||||
|
<% @weight = weight %>
|
||||||
|
<%= render 'bracket_partial' %>
|
||||||
|
</td>
|
||||||
|
<% end %>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -1,95 +1,8 @@
|
|||||||
<style>
|
|
||||||
table.smallText tr td { font-size: 10px; }
|
|
||||||
/*
|
|
||||||
* Bracket Layout Specifics
|
|
||||||
*/
|
|
||||||
main {
|
|
||||||
display:flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.round {
|
|
||||||
display:flex;
|
|
||||||
flex-direction:column;
|
|
||||||
width: 145px;
|
|
||||||
list-style:none;
|
|
||||||
padding:0;
|
|
||||||
font-size: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game + li {
|
|
||||||
flex-grow:1;
|
|
||||||
}
|
|
||||||
|
|
||||||
li:first-child,li:last-child {
|
|
||||||
flex-grow:.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game {
|
|
||||||
padding-left:5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.winner {
|
|
||||||
font-weight:bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game span {
|
|
||||||
float:right;
|
|
||||||
margin-right:5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game-top {
|
|
||||||
border-bottom:1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game-top + li {
|
|
||||||
border-right:1px solid #aaa; min-height:60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bout-number {
|
|
||||||
text-align: center;
|
|
||||||
padding-top: 20px;
|
|
||||||
}
|
|
||||||
.bracket-winner {
|
|
||||||
border-bottom:1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game-bottom {
|
|
||||||
border-top:1px solid #aaa;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<% cache ["#{@weight.id}_bracket", @weight] do %>
|
<% cache ["#{@weight.id}_bracket", @weight] do %>
|
||||||
<table class='smallText'>
|
<%= render 'bracket_partial' %>
|
||||||
<h5><strong><%= @tournament.name %> - <%= @weight.max %> lbs Bracket</strong></h5>
|
|
||||||
<tr>
|
|
||||||
<td valign="top" style="padding: 10px;">
|
|
||||||
<% @matches = @tournament.matches.select{|m| m.weight_id == @weight.id} %>
|
|
||||||
<% @wrestlers = Wrestler.where(weight_id: @weight.id) %>
|
|
||||||
<% @pools = @weight.pool_rounds(@matches) %>
|
|
||||||
<%= render 'pool' %>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
|
|
||||||
<td valign="top" style="padding: 10px;">
|
|
||||||
<% if @weight.pool_bracket_type == "twoPoolsToFinal" %>
|
|
||||||
<%= render 'twoPoolFinalBracket' %>
|
|
||||||
<% end %>
|
|
||||||
<% if @weight.pool_bracket_type == "twoPoolsToSemi" %>
|
|
||||||
<%= render 'twoPoolSemiBracket' %>
|
|
||||||
<% end %>
|
|
||||||
<% if @weight.pool_bracket_type == "fourPoolsToQuarter" %>
|
|
||||||
<%= render 'fourPoolQuarterBracket' %>
|
|
||||||
<% end %>
|
|
||||||
<% if @weight.pool_bracket_type == "eightPoolsToQuarter" %>
|
|
||||||
<%= render 'fourPoolQuarterBracket' %>
|
|
||||||
<% end %>
|
|
||||||
<% if @weight.pool_bracket_type == "fourPoolsToSemi" %>
|
|
||||||
<%= render 'fourPoolSemiBracket' %>
|
|
||||||
<% end %>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if @tournament.tournament_type == "Pool to bracket" %>
|
<% if @tournament.tournament_type == "Pool to bracket" %>
|
||||||
<%= render 'pool_bracket_director_actions' %>
|
<%= render 'pool_bracket_director_actions' %>
|
||||||
|
<% elsif @tournament.tournament_type == "Modified 16 Man Double Elimination" %>
|
||||||
|
<%= render 'bracket_director_actions' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
Reference in New Issue
Block a user