diff options
Diffstat (limited to 'app/views/tournaments/_form.html.erb')
-rw-r--r-- | app/views/tournaments/_form.html.erb | 164 |
1 files changed, 116 insertions, 48 deletions
diff --git a/app/views/tournaments/_form.html.erb b/app/views/tournaments/_form.html.erb index 340efab..72e0886 100644 --- a/app/views/tournaments/_form.html.erb +++ b/app/views/tournaments/_form.html.erb @@ -1,49 +1,117 @@ -<%= form_for(@tournament) do |f| %> - <% if @tournament.errors.any? %> - <div id="error_explanation"> - <h2><%= pluralize(@tournament.errors.count, "error") %> prohibited this tournament from being saved:</h2> - - <ul> - <% @tournament.errors.full_messages.each do |msg| %> - <li><%= msg %></li> - <% end %> - </ul> - </div> - <% end %> - - <div class="field"> - <%= f.label :game_id %><br> - <%= f.text_field :game_id %> - </div> - <div class="field"> - <%= f.label :status %><br> - <%= f.number_field :status %> - </div> - <div class="field"> - <%= f.label :name %><br> - <%= f.text_field :name %> - </div> - <div class="field"> - <%= f.label :min_players_per_team %><br> - <%= f.number_field :min_players_per_team %> - </div> - <div class="field"> - <%= f.label :max_players_per_team %><br> - <%= f.number_field :max_players_per_team %> - </div> - <div class="field"> - <%= f.label :min_teams_per_match %><br> - <%= f.number_field :min_teams_per_match %> - </div> - <div class="field"> - <%= f.label :max_teams_per_match %><br> - <%= f.number_field :max_teams_per_match %> - </div> - <div class="field"> - <%= f.label :scoring_method %><br> - <%= f.text_field :scoring_method %> - </div> - <div class="actions"> - <%= f.submit %> - </div> +<%= render "common/error_messages", :target => @tournament %> +<fieldset> + <legend>Basic information</legend> + <%= form_for(@tournament, url: new_tournament_path, method: "get") do |f| %> + <div class="field"> + <%= f.label :game_id, "Select a Game Type" %> + <%= f.select(:game_id, Game.all.map{|game| [game.name, game.id]}) %> + </div> + <div class="field"> + <label for="num_stages">Number of Tournament Stages</label> + <input type="number" id="num_stages" name="num_stages" min="1" value="<%= params[:num_stages].to_i %>"> + </div> + <% if @tournament.game %> + <%= f.submit("Update (Will reset the rest of the form)", class: "btn-danger") %> + <% else %> + <%= f.submit("Submit") %> + <% end %> + <% end %> + +</fieldset> +<% if @tournament.game %> + <%= form_for(@tournament, url: tournaments_path, method: "post") do |f| %> + <fieldset> + <legend>Attributes</legend> + + <%= f.hidden_field(:game_id) %> + <div class="field"> + <%= f.label :name %> + <%= f.text_field :name %> + </div> + + <table> + <tbody> + <tr> + <td></td> + <th>Minimum</th> + <th>Maximum</th> + </tr> + <tr> + <th>Players per Team: </th> + <td><%= f.text_field(:min_players_per_team, type: :number, min: 1) %></td> + <td><%= f.text_field(:max_players_per_team, type: :number, min: 1) %></td> + </tr> + <tr> + <th>Teams per Match: </th> + <td><%= f.text_field(:min_teams_per_match, type: :number, min: 1) %></td> + <td><%= f.text_field(:max_teams_per_match, type: :number, min: 1) %></td> + </tr> + </tbody> + </table> + + <div class="field"> + <%= f.label :scoring_method, :scoring_method.to_s.titleize %> + <%= f.select(:scoring_method, @tournament.scoring_methods.map{|method| [method.humanize.titleize, method]}) %> + </div> + </fieldset> + + <fieldset> + <legend>Settings</legend> + <%= f.fields_for :settings do |setting_fields| %> + <% @tournament.tournament_settings.each do |setting| %> + <div class="field"> + <%= setting_fields.label setting.name, setting.name.to_s.titleize %> + <br> + <% case setting.vartype %> + <% when 0 %> + <%= setting_fields.text_field( setting.name ) %> + <% when 1 %> + <%= setting_fields.text_area( setting.name ) %> + <% when 2 %> + <ul> + <% setting.type_opt.split(',').each do |option|%> + <li><label><%= setting_fields.radio_button( setting.name, option ) %><%= option.humanize.titleize %></label></li> + <% end %> + </ul> + <% when 3 %> + <ul> + <% setting.type_opt.split(',').each do |option|%> + <li><label><%= check_box_tag("tournament[settings][#{setting.name}][]", option, setting.value.split(',').include?(option)) %><%= option.humanize.titleize %></label></li> + <% end %> + </ul> + <% when 4 %> + <%= setting_fields.radio_button( setting.name, "true" ) %> <b>True</b> + <%= setting_fields.radio_button( setting.name, "false" ) %> <b>False</b> + <% when 5 %> + <%= setting_fields.select( setting.name, setting.type_opt.split(',').collect {|opt| opt.humanize.titleize} ) %> + <% end %> + </div> + <% end %> + <% end %> + </fieldset> + + <%= f.fields_for :stages do |stages_fields| %> + <fieldset> + <legend>Stages</legend> + <% for i in 1..(params[:num_stages].to_i) do %> + <%= stages_fields.fields_for i.to_s do |stage_fields| %> + <fieldset> + <legend>Stage <%= i %></legend> + <div class="field"> + <%= stage_fields.label :scheduling_method, :scheduling_method.to_s.titleize %> + <%= stage_fields.select(:scheduling_method, @tournament.scheduling_methods.map{|method| [method.humanize.titleize, method]}) %> + </div> + <div class="field"> + <%= stage_fields.label :seeding_method, :seeding_method.to_s.titleize %> + <%= stage_fields.select(:seeding_method, @tournament.seeding_methods.map{|method| [method.humanize.titleize, method]}) %> + </div> + </fieldset> + <% end %> + <% end %> + </fieldset> + <% end %> + + <%= f.submit %> + + <% end %> <% end %> |