diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/pages_controller.rb | 31 | ||||
-rw-r--r-- | app/models/player.rb | 5 | ||||
-rw-r--r-- | app/views/layouts/application.html.erb | 3 | ||||
-rw-r--r-- | app/views/pages/index.html.erb | 14 | ||||
-rw-r--r-- | app/views/pages/teampicker.html.erb | 10 | ||||
-rw-r--r-- | app/views/players/edit.html.erb | 2 | ||||
-rw-r--r-- | app/views/players/index.html.erb | 3 |
7 files changed, 50 insertions, 18 deletions
diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 8801654..e3838d2 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -1,8 +1,35 @@ class PagesController < ApplicationController def index @players = Player.all + end - group_size = Player.count - @groups = Player.order(Arel.sql("RANDOM()")).each_slice + def teampicker + @groups = maketeams end + + private + def random + Player.where("strikes < 4").order(Arel.sql("RANDOM()")) + end + + def maketeams + r = random.to_a + + case Player.count { |p| p.active? } + when 5 + [r.shift(3), r.shift(2)] + when 6 + r.each_slice(3) + when 9 + r.each_slice(3) + when 10 + [r.shift(4), r.shift(3), r.shift(3)] + when 13 + [r.shift(4), r.shift(3), r.shift(3), r.shift(3)] + when 14 + [r.shift(4), r.shift(4), r.shift(3), r.shift(3)] + else + r.each_slice(4) + end + end end diff --git a/app/models/player.rb b/app/models/player.rb index 1bc55b4..fe3ffcb 100644 --- a/app/models/player.rb +++ b/app/models/player.rb @@ -1,2 +1,7 @@ class Player < ApplicationRecord + validates :name, presence: true + + def active? + self.strikes < 4 && self.paid + end end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index f5f0f2b..48b1f4f 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -15,7 +15,8 @@ <%= link_to "Home", root_path %> ~ <%= link_to "Tables", machines_path %> ~ <%= link_to "Players", players_path %> ~ - <%= link_to "Pick Random", controller: "machines", action: "random" %> + <%= link_to "Pick Table", controller: "machines", action: "random" %> ~ + <%= link_to "Pick Teams", controller: "pages", action: "teampicker" %> </nav> <hr> diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index e53eece..7bac76b 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -10,22 +10,10 @@ <tbody> <% @players.order("strikes").each do |player| %> <tr> - <td><%= player.name %></td> + <td><%= link_to player.name, edit_player_path(player) %></td> <td><%= player.paid %></td> <td><%= player.strikes %></td> </tr> <% end %> </tbody> </table> - -<h2>teampicker</h2> - -<% @players.order(Arel.sql("RANDOM()")).each_slice(@players.count % 4 == 0 ? 4 : 3).each.with_index(1) do |slice, i| %> - <h3>Team <%= i %></h3> - <ul> - <% slice.each do |player| %> - <li><%= player.name %></li> - <% end %> - </ul> -<% end %> - diff --git a/app/views/pages/teampicker.html.erb b/app/views/pages/teampicker.html.erb new file mode 100644 index 0000000..b0066cb --- /dev/null +++ b/app/views/pages/teampicker.html.erb @@ -0,0 +1,10 @@ +<h2>teampicker</h2> + +<% @groups.each.with_index(1) do |slice, i| %> + <h3>Team <%= i %></h3> + <ul> + <% slice.each do |player| %> + <li><%= link_to player.name, edit_player_path(player) %></li> + <% end %> + </ul> +<% end %> diff --git a/app/views/players/edit.html.erb b/app/views/players/edit.html.erb index 4c30fc1..797c846 100644 --- a/app/views/players/edit.html.erb +++ b/app/views/players/edit.html.erb @@ -1,4 +1,4 @@ -<h1>Edit Player</h1> +<h1>Edit <%= @player.name %></h1> <%= render "form", machine: @player %> diff --git a/app/views/players/index.html.erb b/app/views/players/index.html.erb index cedaad3..67717e0 100644 --- a/app/views/players/index.html.erb +++ b/app/views/players/index.html.erb @@ -1,9 +1,10 @@ <h1>Pinball Players</h1> +<p><%= @players.count %> available players</p> <ul> <% @players.each do |player| %> <li> - <%= link_to player.name, player %> + <%= link_to player.name, edit_player_path(player) %> </li> <% end %> </ul> |