diff options
-rw-r--r-- | app/controllers/matches_controller.rb | 23 | ||||
-rw-r--r-- | app/views/matches/show.html.erb | 34 | ||||
-rw-r--r-- | db/seeds.rb | 19 | ||||
-rw-r--r-- | lib/scheduling/elimination.rb | 17 | ||||
-rw-r--r-- | lib/scheduling/roundrobin.rb | 24 | ||||
-rw-r--r-- | lib/scoring/ScoringAlgorithm.rb | 6 |
6 files changed, 91 insertions, 32 deletions
diff --git a/app/controllers/matches_controller.rb b/app/controllers/matches_controller.rb index 138cf28..b1b283b 100644 --- a/app/controllers/matches_controller.rb +++ b/app/controllers/matches_controller.rb @@ -55,7 +55,6 @@ class MatchesController < ApplicationController @purp = purple @blue = blue - end def get_riot_info_fake @@ -151,8 +150,7 @@ class MatchesController < ApplicationController @purp = purple @blue = blue - - end #end def + end # GET /tournaments/1/matches/1 # GET /tournaments/1/matches/1.json @@ -184,13 +182,18 @@ class MatchesController < ApplicationController #make this use the statistics interface for scoring and ScoringAlgorithms + @match.winner = @match.teams.find_by_id(params['winner']) + @match.blowout = false + @match.statistics['Score'] = @tournament.settings['ScoringMethod'].constantize.score(@match, @match.statistics) + +=begin # Individual scores - scores = params["scores"] - scores.each do |user_name, score| - Statistic.create(user: User.find_by_user_name(user_name), match: @match, name: "score", value: score.to_i) - end + #scores = params["scores"] + #scores.each do |user_name, score| + # Statistic.create(user: User.find_by_user_name(user_name), match: @match, name: "score", value: score.to_i) + #end # Team scores (processing for manual) team_scores = {} @@ -208,6 +211,7 @@ class MatchesController < ApplicationController #unless cur_match_num == 1 # @match.winner.matches.push(@tournament.matches_ordered[cur_match_num/2]) #end +=end # Skip peer evaluation if there aren't enough players per team peer = false @@ -218,12 +222,13 @@ class MatchesController < ApplicationController end @match.status = peer ? 2 : 3 + respond_to do |format| if @match.save format.html { redirect_to tournament_match_path(@tournament, @match), notice: 'Peer evaluation started.' } format.json { head :no_content } else - format.html { redirect_to @tournament, notice: "You don't have permission to start this match." } + format.html { redirect_to @tournament, notice: "Permission denied" } format.json { render json: "Permission denied", status: :forbidden } end end @@ -273,7 +278,6 @@ class MatchesController < ApplicationController format.json { render json: @tournament.errors, status: :unprocessable_entity } end end - end private @@ -282,6 +286,7 @@ class MatchesController < ApplicationController @match = Match.find(params[:id]) @tournament = @match.tournament_stage.tournament end + def set_tournament @tournament = Tournament.find(params[:tournament_id]) end diff --git a/app/views/matches/show.html.erb b/app/views/matches/show.html.erb index e87ce5d..7a82527 100644 --- a/app/views/matches/show.html.erb +++ b/app/views/matches/show.html.erb @@ -47,7 +47,8 @@ function score_peers() { <% if @match.status <= 1 %> <li><%= user.user_name %></li> <% else %> - <li><%= user.user_name %> - SCORE: <%= user.statistics.where(:name => "score", :match => @match).first.value %></li> + <% score = user.statistics.where(:name => "score", :match => @match).first %> + <li><%= user.user_name %> - SCORE: <%= score ? score.value : 0 %></li> <% end %> <% end %> </ul></li> @@ -76,21 +77,24 @@ function score_peers() { <% when 1 %> <!-- Started, waiting to finish --> <!-- This will depend on the Sampling Method Eventually instead of always being Manual --> - <% if @tournament.hosts.include? current_user %> - <input type="hidden" name="update_action" value="finish"> - <% @match.teams.each do |team| %> - <fieldset><legend>Team <%= team.id.to_s %></legend> - <% team.users.collect{|u| u.user_name}.each do |k| %><label> - Score for <%= k %><br> - <% @player_score = 0 %> - <% current_user.statistics.where(:match => @match, :user => current_user).each{ |s| @player_score+=s.value } %> - <%= text_field_tag("scores[#{k}]", @player_score, size: 3) %> - </label><% end %> - </fieldset> + + <% case @tournament.sampling_method %> + <% when "Manual" %> + <% if @tournament.hosts.include? current_user %> + <input type="hidden" name="update_action" value="finish"> + <% @match.teams.each do |team| %> + <%= tag :input, {"type" => "radio", "name" => "winner", "value" => "#{team.id}" } %> + <%= "Team #{team.id} Won" %> + <% end %> + <%= submit_tag("Finish match") %> + <%= @tournament.settings['ScoringMethod'] %> + <% else %> + <p>The match is running; the host has yet to post the scores of the match.</p> <% end %> - <%= submit_tag("Finish match") %> - <% else %> - <p>The match is running; the host has yet to post the scores of the match.</p> + <% when "Double Blind" %> + <p>Double Blind isn't implemented yet.</p> + <% when "RiotAPI" %> + <p>Riot API is being called for Statistics. Results will appear shortly.</p> <% end %> <% when 2 %> <!-- Finished, waiting for peer reviews --> diff --git a/db/seeds.rb b/db/seeds.rb index 78c8ea0..7628efe 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -138,6 +138,25 @@ if Rails.env.development? tourn6.join(guntas) tourn6.join(luke) tourn6.join(marco) +=begin + hash1 = {:username => "TeslasMind", :id => id} + hash2 = {:username => "Alpha142", :id => id} + hash3 = {:username => "ImFromNasa", :id => id} + hash4 = {:username => "NalfeinX", :id => id} + hash5 = {:username => "GTBPhoenix", :id => id} + hash6 = {:username => , :id => id} + hash7 = {:username => username, :id => id} + hash8 = {:username => username, :id => id} + hash9 = {:username => username, :id => id} + hash10 = {:username => username, :id => id} + +FOR ROUNG ROBIN + +http://stackoverflow.com/questions/6648512/scheduling-algorithm-for-a-round-robin-tournament + + +=end + end diff --git a/lib/scheduling/elimination.rb b/lib/scheduling/elimination.rb index 0e93f7a..543df52 100644 --- a/lib/scheduling/elimination.rb +++ b/lib/scheduling/elimination.rb @@ -7,14 +7,6 @@ module Scheduling @tournament_stage = tournament_stage end - def tournament_stage - @tournament_stage - end - - def tournament - self.tournament_stage.tournament - end - def create_matches num_teams = (self.tournament.players.count/self.tournament.min_players_per_team).floor num_matches = (Float(num_teams - tournament.min_teams_per_match)/(tournament.min_teams_per_match - 1)).ceil + 1 @@ -138,5 +130,14 @@ STRING return str end + private + + def tournament_stage + @tournament_stage + end + + def tournament + self.tournament_stage.tournament + end end end diff --git a/lib/scheduling/roundrobin.rb b/lib/scheduling/roundrobin.rb new file mode 100644 index 0000000..e050c41 --- /dev/null +++ b/lib/scheduling/roundrobin.rb @@ -0,0 +1,24 @@ + +module Scheduling + class RoundRobin + include Rails.application.routes.url_helpers + + def initialize(tournament_stage) + @tournament_stage = tournament_stage + end + + def create_matches + num_teams = (self.tournament.players.count/self.tournament.min_players_per_team).floor + num_matches = Float(num_teams/2)*(num_teams-1) + + end + + def match_finished(match) + + end + + def graph(current_user) + + end + end +end diff --git a/lib/scoring/ScoringAlgorithm.rb b/lib/scoring/ScoringAlgorithm.rb new file mode 100644 index 0000000..f2afa6f --- /dev/null +++ b/lib/scoring/ScoringAlgorithm.rb @@ -0,0 +1,6 @@ +module Scoring + class ScoringAlgorithm + def self.score(match, interface) + end + end +end |