diff --git a/app/controllers/contestants_controller.rb b/app/controllers/contestants_controller.rb index b365f27..ef95891 100644 --- a/app/controllers/contestants_controller.rb +++ b/app/controllers/contestants_controller.rb @@ -4,7 +4,7 @@ class ContestantsController < ApplicationController before_action :set_completions, only: %i[edit update ] def edit - @title = "Edit contestant" + @title = "Contestant" end def new @@ -27,7 +27,7 @@ class ContestantsController < ApplicationController if @contestant.update(contestant_params) redirect_to @contest else - @title = "Edit contestant" + @title = "Contestant" render :edit, status: :unprocessable_entity end end @@ -47,8 +47,32 @@ class ContestantsController < ApplicationController @contestant = Contestant.find(params[:id]) end + def pad(n) + if n > 9 + return n.to_s + end + "0" + n.to_s + end + + def display_time(seconds) + if seconds > 3600 + hours = seconds / 3600 + return hours.to_s + ":" + display_time(seconds % 3600) + elsif seconds > 60 + minutes = seconds / 60 + return pad(minutes) + ":" + display_time(seconds % 60) + end + pad(seconds) + end + def set_completions - @completions = @contestant.completions + @completions = @contestant.completions.order(:time_seconds) + current_time_from_start = 0 + @completions.each do |completion| + completion.display_time_from_start = display_time(completion.time_seconds) + completion.display_relative_time = display_time(completion.time_seconds - current_time_from_start) + current_time_from_start += completion.time_seconds + end end def contestant_params diff --git a/app/controllers/contests_controller.rb b/app/controllers/contests_controller.rb index 725d50c..93f0493 100644 --- a/app/controllers/contests_controller.rb +++ b/app/controllers/contests_controller.rb @@ -8,8 +8,8 @@ class ContestsController < ApplicationController def show @title = @contest.name - @contestants = @contest.contestants - @puzzles = @contest.puzzles + @contestants = @contest.contestants.order(:name) + @puzzles = @contest.puzzles.order(:id) set_badges end diff --git a/app/models/completion.rb b/app/models/completion.rb index ad5e26a..cca6bfc 100644 --- a/app/models/completion.rb +++ b/app/models/completion.rb @@ -3,5 +3,7 @@ class Completion < ApplicationRecord belongs_to :contestant belongs_to :puzzle + attr_accessor :display_time_from_start, :display_relative_time + validates :time_seconds, presence: true end diff --git a/app/views/contestants/_form.html.slim b/app/views/contestants/_form.html.slim index 78fc4bb..4e1ff09 100644 --- a/app/views/contestants/_form.html.slim +++ b/app/views/contestants/_form.html.slim @@ -29,15 +29,22 @@ tr th scope="col" | Time since start + th scope="col" + | Relative time th scope="col" | Puzzle tbody - @completions.each do |completion| tr scope="row" td - = link_to completion.time_seconds, edit_contest_completion_path(@contest, completion, contestant.id) + = completion.display_time_from_start td - = completion.puzzle.name + = completion.display_relative_time + td + | #{completion.puzzle.name} - #{completion.puzzle.brand} + td + a.btn.btn-sm.btn-secondary href=edit_contest_completion_path(@contest, completion, contestant.id) + | Edit .row .col a.btn.btn-primary href=new_contest_completion_path(@contest, contestant_id: contestant.id) diff --git a/app/views/contests/_form.html.slim b/app/views/contests/_form.html.slim index 35fe991..fddfd6b 100644 --- a/app/views/contests/_form.html.slim +++ b/app/views/contests/_form.html.slim @@ -10,13 +10,13 @@ = form.check_box :team, class: "form-check-input" = form.label :team | Team contest - .form-text For registration and UI display purposes + .form-text For UI display purposes mainly .row.mb-3 .col .form-check.form-switch = form.check_box :allow_registration, class: "form-check-input" = form.label :allow_registration - .form-text Generates a registration form for this contest + .form-text Generates a shareable registration form for this contest .row .col = form.submit submit_text, class: "btn btn-primary" \ No newline at end of file diff --git a/app/views/contests/show.html.slim b/app/views/contests/show.html.slim index d184485..39c11f6 100644 --- a/app/views/contests/show.html.slim +++ b/app/views/contests/show.html.slim @@ -11,7 +11,7 @@ | Edit contest .row.mb-4 - .col-8 + .col-6 .row .col h4 @@ -33,7 +33,7 @@ .col a.btn.btn-primary href=new_contest_puzzle_path(@contest) | Add puzzle - .col-4 + .col-6 .row .col h4 @@ -49,10 +49,15 @@ - @contestants.each do |contestant| tr scope="row" td - = link_to contestant.name, edit_contest_contestant_path(@contest, contestant) + = contestant.name td = contestant.completions.length - .row + td + a.btn.btn-sm.btn-secondary href=edit_contest_contestant_path(@contest, contestant) + | Open + a.btn.btn-sm.btn-secondary.ms-2 href=new_contest_completion_path(@contest, contestant_id: contestant.id) + | Add completion + .row.mt-4 .col a.btn.btn-primary href=new_contest_contestant_path(@contest) | Add contestant