Save display times in the db
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
class CompletionsController < ApplicationController
|
||||
include CompletionsConcern
|
||||
|
||||
before_action :set_contest
|
||||
before_action :set_data, only: %i[ create edit new update ]
|
||||
before_action :set_completion, only: %i[ destroy edit update ]
|
||||
@@ -25,6 +27,7 @@ class CompletionsController < ApplicationController
|
||||
@completion = Completion.new(completion_params)
|
||||
@completion.contest_id = @contest.id
|
||||
if @completion.save
|
||||
extend_completions!(@completion.contestant)
|
||||
redirect_to contest_path(@contest)
|
||||
else
|
||||
logger = Logger.new(STDOUT)
|
||||
@@ -41,6 +44,7 @@ class CompletionsController < ApplicationController
|
||||
@completion.contestant_id = params[:contestant_id]
|
||||
end
|
||||
if @completion.update(completion_params)
|
||||
extend_completions!(@completion.contestant)
|
||||
redirect_to @contest
|
||||
else
|
||||
@title = "Edit completion"
|
||||
|
@@ -19,12 +19,13 @@ module CompletionsConcern
|
||||
pad(seconds)
|
||||
end
|
||||
|
||||
def extend_completions!(completions)
|
||||
def extend_completions!(contestant)
|
||||
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
|
||||
contestant.completions.order(:time_seconds).each do |completion|
|
||||
completion.update(display_time_from_start: display_time(completion.time_seconds),
|
||||
display_relative_time: display_time(completion.time_seconds - current_time_from_start))
|
||||
current_time_from_start = completion.time_seconds
|
||||
end
|
||||
contestant.update(display_time: display_time(current_time_from_start))
|
||||
end
|
||||
end
|
||||
|
@@ -1,6 +1,4 @@
|
||||
class ContestantsController < ApplicationController
|
||||
include CompletionsConcern
|
||||
|
||||
before_action :set_contest
|
||||
before_action :set_contestant, only: %i[ destroy edit update]
|
||||
before_action :set_completions, only: %i[edit update ]
|
||||
@@ -61,8 +59,6 @@ class ContestantsController < ApplicationController
|
||||
|
||||
def set_completions
|
||||
@completions = @contestant.completions.order(:time_seconds)
|
||||
extend_completions!(@completions)
|
||||
@completions
|
||||
end
|
||||
|
||||
def contestant_params
|
||||
|
@@ -1,6 +1,4 @@
|
||||
class ContestsController < ApplicationController
|
||||
include CompletionsConcern
|
||||
|
||||
before_action :set_contest, only: %i[ destroy edit show update ]
|
||||
skip_before_action :require_authentication, only: %i[ scoreboard ]
|
||||
|
||||
@@ -70,7 +68,6 @@ class ContestsController < ApplicationController
|
||||
@title = @contest.name
|
||||
@contestants = @contest.contestants.order(:name)
|
||||
@puzzles = @contest.puzzles.order(:id)
|
||||
extend_completions!(@contest.completions)
|
||||
render :scoreboard
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user