diff options
author | Luke Shumaker <shumakl@purdue.edu> | 2014-04-28 00:04:47 -0400 |
---|---|---|
committer | Luke Shumaker <shumakl@purdue.edu> | 2014-04-28 00:04:47 -0400 |
commit | 6b66877bda4c0e4a33bb3109304636d5ada85904 (patch) | |
tree | 7065307802fec8452afc89c8a7b445fd2ceca772 | |
parent | 33fcf6de9feaaa6f90dfe5082e08d280c930dae1 (diff) | |
parent | 7a4832621f1a0bb2e4b86ee9f879a73df0188a3e (diff) |
Merge branch 'master' of https://github.com/LukeShu/leaguer
-rw-r--r-- | app/assets/javascripts/application/layout.js.coffee | 21 | ||||
-rw-r--r-- | app/assets/stylesheets/custom.css.scss | 4 | ||||
-rw-r--r-- | app/models/match.rb | 11 | ||||
-rw-r--r-- | app/views/common/_show_tournament.html.erb | 6 | ||||
-rw-r--r-- | app/views/layouts/application.html.erb | 5 | ||||
-rw-r--r-- | app/views/pms/index.html.erb | 16 | ||||
-rw-r--r-- | app/views/tournaments/_form.html.erb | 112 | ||||
-rw-r--r-- | app/views/tournaments/standings.html.erb | 4 | ||||
-rw-r--r-- | db/seeds.rb | 19 | ||||
-rw-r--r-- | lib/sampling/README.md | 2 | ||||
-rw-r--r-- | lib/sampling/peer_review.rb | 2 | ||||
-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 |
14 files changed, 139 insertions, 72 deletions
diff --git a/app/assets/javascripts/application/layout.js.coffee b/app/assets/javascripts/application/layout.js.coffee new file mode 100644 index 0000000..da0bc67 --- /dev/null +++ b/app/assets/javascripts/application/layout.js.coffee @@ -0,0 +1,21 @@ +json_url = "/alerts.json" + +page_visited = false +starting_size = 0 +update = (alerts) -> + if !page_visited + starting_size = alerts.length + page_visited = true + + if alerts.length > starting_size + $("#alerts-ajax").css("display", "inline"); + return + + setTimeout (-> + $.ajax(url: json_url).done update + return + ), 2000 + +# Now kick off the whole process +window.onload = -> + $.ajax(url: json_url).done update
\ No newline at end of file diff --git a/app/assets/stylesheets/custom.css.scss b/app/assets/stylesheets/custom.css.scss index 9e9e63a..b274a0d 100644 --- a/app/assets/stylesheets/custom.css.scss +++ b/app/assets/stylesheets/custom.css.scss @@ -24,6 +24,10 @@ header > nav { } } +#alerts-ajax { + display: none; +} + .btn-custom-orange { color: white; background-color: rgb(255, 69, 0); diff --git a/app/models/match.rb b/app/models/match.rb index 1edac8f..fa15980 100644 --- a/app/models/match.rb +++ b/app/models/match.rb @@ -5,6 +5,17 @@ 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? + end + ok + end + def win?(player) winner.players.include? player end diff --git a/app/views/common/_show_tournament.html.erb b/app/views/common/_show_tournament.html.erb index 151e5d2..12a7fea 100644 --- a/app/views/common/_show_tournament.html.erb +++ b/app/views/common/_show_tournament.html.erb @@ -33,8 +33,10 @@ <% else %> <p style="margin-top:10px;"> You've signed up for this tournament! </p> <% end %> - <%= form_tag(tournament_brackets_path(target), method: "post") do %> - <%= submit_tag("Make Bracket") %> + <% if target.status == 1 %> + <%= form_tag(tournament_brackets_path(target), method: "post") do %> + <%= submit_tag("Make Bracket") %> + <% end %> <% end %> <% end %> </div> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 9eea734..f3535e9 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -35,9 +35,8 @@ <%= link_to "Create Alert", new_alert_path, :class => "create-alert" %> <% end %> <%= link_to "Sign out", session_path("current"), method: "delete", :class => "signout" %> - <%= link_to "", alerts_path, :class => "alerts"%> - - + <%# if there is an unread alert then I wanna be able to show the notification icon by saying :style => display:inline. This will be Done by Guntas once he figures out how to get unread alerts. Psuedo if alerts.unread > 0 then display else don't.%> + <%= link_to "", alerts_path, :class => "alerts", :id => "alerts-ajax"%> <% else %> <%= link_to "Log in", new_session_path, :class => "signin" %> <%= link_to "Sign up", new_user_path, :class => "signup" %> diff --git a/app/views/pms/index.html.erb b/app/views/pms/index.html.erb index a1feb42..056b371 100644 --- a/app/views/pms/index.html.erb +++ b/app/views/pms/index.html.erb @@ -11,7 +11,7 @@ <col width="250"> <col width="300"> <tbody> - <% if conversations.reject { |c| c.is_unread?(current_user) && (c.receipts_for current_user).last.message.sender != current_user }.empty? %> + <%# if conversations.reject { |c| c.is_unread?(current_user) && (c.receipts_for current_user).last.message.sender != current_user }.empty? %> <tr> <tr> <td><b>With</b></td> @@ -38,9 +38,9 @@ <% end %> <% end %> </tr> - <% else %> - <h4> No unread conversations </h4> - <% end %> + <%# else %> + + <%# end %> </tbody> </table> @@ -53,7 +53,7 @@ <col width="250"> <col width="300"> <tbody> - <% if conversations.reject { |c| c.is_read?(current_user) || (c.receipts_for current_user).last.message.sender == current_user }.empty? %> + <%# if conversations.reject { |c| c.is_read?(current_user) || (c.receipts_for current_user).last.message.sender == current_user }.empty? %> <tr> <tr> <td><b>With</b></td> @@ -80,8 +80,8 @@ <% end %> <% end %> </tr> - <% else %> - <h4> No unread conversations </h4> - <% end %> + <% #else %> + + <% #end %> </tbody> </table>
\ No newline at end of file diff --git a/app/views/tournaments/_form.html.erb b/app/views/tournaments/_form.html.erb index 90e0257..2a871ea 100644 --- a/app/views/tournaments/_form.html.erb +++ b/app/views/tournaments/_form.html.erb @@ -1,36 +1,42 @@ <%= render "common/error_messages", :target => @tournament %> -<fieldset><legend style="color:rgb(221, 145, 37)">Attributes</legend> -<%= form_for(@tournament, url: new_tournament_path, method: "get") do |f| %> - <%= render "common/error_messages", :target => @tournament %> - <p> - <%= f.label :game_id, "Select a game type" %> - <%= f.select(:game_id, Game.all.map{|game| [game.name, game.id]}) %> - <%= f.submit("Select") %> - </p> -<% end %> +<fieldset> + + <legend style="color:rgb(221, 145, 37)">Attributes + </legend> + + <%= form_for(@tournament, url: new_tournament_path, method: "get") do |f| %> + <%= render "common/error_messages", :target => @tournament %> + <p> + <%= f.label :game_id, "Select a game type" %> + <%= f.select(:game_id, Game.all.map{|game| [game.name, game.id]}) %> + <%= f.submit("Select") %> + </p> + <% end %> -<% if @tournament.game.nil? %> - </fieldset> + <% if @tournament.game.nil? %> +</fieldset> <% else %> <%= form_for(@tournament, url: tournaments_path, method: "post") do |f| %> - <p> <%= f.label :name %> <%= f.text_field :name %> </p> <div> <p> - <table><tbody> - <tr> - <td></td> - <th style="padding:5px">Minimum</th> - <th style="padding:5px">Maximum</th></tr> - <tr> - <th>Players per team: </th> - <td style="padding:5px"><%= f.text_field(:min_players_per_team, type: :number, min: 1) %></td> - <td style="padding:5px"><%= f.text_field(:max_players_per_team, type: :number, min: 1) %></td> - </tr> - </tbody></table> + <table> + <tbody> + <tr> + <td></td> + <th style="padding:5px">Minimum</th> + <th style="padding:5px">Maximum</th> + </tr> + <tr> + <th>Players per team: </th> + <td style="padding:5px"><%= f.text_field(:min_players_per_team, type: :number, min: 1) %></td> + <td style="padding:5px"><%= f.text_field(:max_players_per_team, type: :number, min: 1) %></td> + </tr> + </tbody> + </table> </p> </div> @@ -48,7 +54,7 @@ <p> <%= f.label :scoring_method %> - <%= f.select(:scoring_method, @tournament.scoring_methods.map{|method| [method.humanize, method]}) %> + <%= f.select(:scoring_method, @tournament.scoring_methods.map{|method| [method.humanize.titleize, method]}) %> </p> <p> @@ -56,9 +62,11 @@ <%= f.select(:sampling_method, @tournament.sampling_methods.map{|method| [method.humanize, method]}) %> </p> - </fieldset> +</fieldset> - <fieldset><legend style="color:rgb(221, 145, 37)">Settings</legend> +<fieldset> + <legend style="color:rgb(221, 145, 37)">Settings + </legend> <%= f.fields_for :settings do |setting_fields| %> <% @tournament.tournament_settings.each do |setting| %><p> <%= setting_fields.label setting.name %> @@ -84,31 +92,41 @@ <%= setting_fields.radio_button( setting.name, "true" ) %> True <%= setting_fields.radio_button( setting.name, "false" ) %> False <% when 5 %> - <%= setting_fields.select( setting.name, setting.type_opt.split(',') ) %> + <%= setting_fields.select( setting.name, setting.type_opt.split(',').collect {|opt| opt.humanize.titleize} ) %> <% end %> - </p><% end %> - <% end %> - </fieldset> - - <%= f.fields_for :stages do |stages_fields| %><fieldset><legend style="color:rgb(221, 145, 37)">Stages</legend> - <label for="num_stages">Number of tournament stages</label> - <input type="number" name="num_stages" min="1" value="<%= params[:num_stages].to_i %>"> - <%# stage_fields.submit("Set Stages") %> - <% for i in 1..(params[:num_stages].to_i) do %> - <p> - <%= stages_fields.fields_for i.to_s do |stage_fields| %><fieldset><legend style="color:rgb(221, 145, 37)">Stage <%= i %></legend> - <%= stage_fields.label :scheduling_method %> - <%= stage_fields.select(:scheduling_method, @tournament.scheduling_methods.map{|method| [method.humanize, method]}) %> - <%= stage_fields.label :seeding_method %> - <%= stage_fields.select(:seeding_method, @tournament.seeding_methods.map{|method| [method.humanize, method]}) %> - </fieldset><% end %> - </p> + </p> <% end %> - </fieldset> <% end %> +</fieldset> + + <%= f.fields_for :stages do |stages_fields| %> + <fieldset> + + <legend style="color:rgb(221, 145, 37)">Stages + + </legend> + <label for="num_stages">Number of tournament stages + </label> + <input type="number" name="num_stages" min="1" value="<%= params[:num_stages].to_i %>"> + <%# stage_fields.submit("Set Stages") %> + <% for i in 1..(params[:num_stages].to_i) do %> + <p> + <%= stages_fields.fields_for i.to_s do |stage_fields| %> + <fieldset> + <legend style="color:rgb(221, 145, 37)">Stage <%= i %> + </legend> + <%= stage_fields.label :scheduling_method %> + <%= stage_fields.select(:scheduling_method, @tournament.scheduling_methods.map{|method| [method.humanize, method]}) %> + <%= stage_fields.label :seeding_method %> + <%= stage_fields.select(:seeding_method, @tournament.seeding_methods.map{|method| [method.humanize, method]}) %> + </fieldset> + <% end %> + </p> + <% end %> + </fieldset> + <% end %> <%= f.submit %> - <%# render 'stages' %> - <% end %> <% end %> +<% 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/db/seeds.rb b/db/seeds.rb index c37dcf7..ea0338d 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -85,7 +85,7 @@ if Rails.env.development? #chess chess_tourn = Tournament.create(game_id: 2, status: 0, name: "Chess Seed", min_players_per_team: 1, max_players_per_team: 1, min_teams_per_match: 2, - max_teams_per_match: 2, sampling_method: nil) + max_teams_per_match: 2, sampling_method: "manual") chess_tourn.hosts.push(davis) chess_tourn.join(davis) @@ -93,15 +93,16 @@ if Rails.env.development? #Rock Paper Scissors rps = Tournament.create(game_id: 4, status: 0, name: "Rock, Paper, Scissors Seed", min_players_per_team: 1, max_players_per_team: 3, min_teams_per_match: 2, - max_teams_per_match: 2, sampling_method: nil) + max_teams_per_match: 2, sampling_method: "manual") + rps.stages.create(scheduling_method: "elimination" , seeding_method: "random_seeding") rps.hosts.push(davis) rps.join(davis) rps.join(foy) rps.join(guntas) tourn5 = Tournament.create(game_id: 1, status: 0, name: "5 Teams, 2 Teams Per Match", min_players_per_team: 1, max_players_per_team: 1, min_teams_per_match: 2, - max_teams_per_match: 2, sampling_method: nil) + max_teams_per_match: 2, sampling_method: "manual") for i in 0..9 if i == 0 @@ -109,10 +110,11 @@ if Rails.env.development? end tourn5.join(players_for_league[i]) end + tourn5.stages.create(scheduling_method: "elimination" , seeding_method: "random_seeding") tourn5.join(players_for_league[9]) tourn6 = Tournament.create(game_id: 1, status: 0, name: "3 teams per match", min_players_per_team: 1, max_players_per_team: 1, min_teams_per_match: 3, - max_teams_per_match: 3, sampling_method: nil) + max_teams_per_match: 3, sampling_method: "manual") for i in 0..9 if i == 0 @@ -120,6 +122,7 @@ if Rails.env.development? end tourn6.join(players_for_league[i]) end + tourn6.stages.create(scheduling_method: "elimination" , seeding_method: "random_seeding") tourn6.join(players_for_league[9]) tourn6.join(davis) tourn6.join(foy) @@ -138,7 +141,13 @@ if Rails.env.development? hash4 = {:username => "NalfeinX", :id => id} hash5 = {:username => "GTBPhoenix", :id => id} hash6 = {:username => , :id => id} - hash7 = {:username => username, :id => id} + hash7 = {:username => username, :id => id}ages.first.create_matchesages.first.create_matches +end +if success +format.html { redirect_to @tournament, +end +if success +format.html { redirect_to @tournament, hash8 = {:username => username, :id => id} hash9 = {:username => username, :id => id} hash10 = {:username => username, :id => id} diff --git a/lib/sampling/README.md b/lib/sampling/README.md index 5e0a53c..e4b3fbf 100644 --- a/lib/sampling/README.md +++ b/lib/sampling/README.md @@ -11,7 +11,7 @@ interface: - `self.can_get?(String setting_name) => Fixnum` - Returns whether or nat this sampling method can get a specifed + Returns whether or not this sampling method can get a specifed statistic; 0 means 'false', positive integers mean 'true', where higher numbers are higher priority. diff --git a/lib/sampling/peer_review.rb b/lib/sampling/peer_review.rb index dd456c9..4577542 100644 --- a/lib/sampling/peer_review.rb +++ b/lib/sampling/peer_review.rb @@ -86,6 +86,6 @@ module Sampling end return ret - endx + end end end 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 |