summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <shumakl@purdue.edu>2014-04-28 00:04:47 -0400
committerLuke Shumaker <shumakl@purdue.edu>2014-04-28 00:04:47 -0400
commit6b66877bda4c0e4a33bb3109304636d5ada85904 (patch)
tree7065307802fec8452afc89c8a7b445fd2ceca772
parent33fcf6de9feaaa6f90dfe5082e08d280c930dae1 (diff)
parent7a4832621f1a0bb2e4b86ee9f879a73df0188a3e (diff)
Merge branch 'master' of https://github.com/LukeShu/leaguer
-rw-r--r--app/assets/javascripts/application/layout.js.coffee21
-rw-r--r--app/assets/stylesheets/custom.css.scss4
-rw-r--r--app/models/match.rb11
-rw-r--r--app/views/common/_show_tournament.html.erb6
-rw-r--r--app/views/layouts/application.html.erb5
-rw-r--r--app/views/pms/index.html.erb16
-rw-r--r--app/views/tournaments/_form.html.erb112
-rw-r--r--app/views/tournaments/standings.html.erb4
-rw-r--r--db/seeds.rb19
-rw-r--r--lib/sampling/README.md2
-rw-r--r--lib/sampling/peer_review.rb2
-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
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