Support remaining pieces in completions and scoreboards
Some checks failed
CI / scan_ruby (push) Failing after 16s
CI / scan_js (push) Successful in 13s
CI / lint (push) Successful in 13s
CI / test (push) Successful in 36s

This commit is contained in:
sto
2025-10-28 15:13:29 +01:00
parent 1fa7bf10ec
commit bbd2cef168
11 changed files with 66 additions and 19 deletions

View File

@@ -9,14 +9,9 @@
= @message.author
br
= @message.text
.row
.col
h4 = t("completions.singular").capitalize
.row.mb-3
.row
.col
.form-floating
= form.text_field :display_time_from_start, autocomplete: "off", class: "form-control"
= form.label :display_time_from_start, class: "required"
h4 = t("completions.singular").capitalize
.row.mb-3
.col
.form-floating
@@ -36,6 +31,18 @@
= form.hidden_field :puzzle_id, value: @puzzles.first.id
- else
= form.hidden_field :puzzle_id
.row.mb-3
.col
.form-floating
= form.text_field :display_time_from_start, autocomplete: "off", class: "form-control"
= form.label :display_time_from_start, class: "required"
.row.mb-3
.col
.form-floating
= form.text_field :remaining_pieces, autocomplete: "off", class: "form-control"
= form.label :remaining_pieces
.form-text
= t("activerecord.attributes.completion.remaining_pieces_description")
.row
.col
= form.submit submit_text, class: "btn btn-primary"

View File

@@ -44,6 +44,8 @@
- else
th scope="col"
= t("activerecord.attributes.completion.display_time")
th scope="col"
= t("activerecord.attributes.completion.remaining_pieces")
th scope="col"
= t("activerecord.attributes.completion.puzzle")
tbody
@@ -54,6 +56,8 @@
- if @contest.puzzles.size > 1
td
= completion.display_relative_time
td
= completion.remaining_pieces
td
- if !completion.puzzle.brand.blank?
| #{completion.puzzle.name} - #{completion.puzzle.brand}

View File

@@ -42,13 +42,13 @@ css:
= contestant.name
- if @contest.puzzles.size > 1
td
= contestant.completions.length
= contestant.completions.where(remaining_pieces: nil).length
td style="position: relative"
- if index > 0 && contestant.time_seconds > 0
- if index > 0 && contestant.time_seconds > 0 && contestant.completions.where(remaining_pieces: nil).size > 0
.relative-time style="position:absolute; margin: 1px 0 0 64px; font-size: 14px; color: grey"
|> +
= display_time(contestant.time_seconds - @contestants[index - 1].time_seconds)
= contestant.display_time
= contestant.completions.size > 0 && contestant.completions[-1].remaining_pieces ? "#{contestant.completions.map{|completion| completion.puzzle.pieces}.sum - contestant.completions[-1].remaining_pieces}p" : contestant.display_time
.col-1
.col-5
- @contest.puzzles.each do |puzzle|
@@ -89,6 +89,6 @@ css:
= contestant.name
- if @contest.puzzles.size > 1
td
= contestant.completions.length
= contestant.completions.where(remaining_pieces: nil).length
td
= contestant.display_time
= contestant.completions.size > 0 && contestant.completions[-1].remaining_pieces ? "#{contestant.completions.map{|completion| completion.puzzle.pieces}.sum - contestant.completions[-1].remaining_pieces}p" : contestant.display_time

View File

@@ -85,9 +85,9 @@ javascript:
td
= contestant.name
td
= contestant.completions.length
= contestant.completions.where(remaining_pieces: nil).length
td
= contestant.display_time
= contestant.completions.size > 0 && contestant.completions[-1].remaining_pieces ? "#{contestant.completions.map{|completion| completion.puzzle.pieces}.sum - contestant.completions[-1].remaining_pieces}p" : contestant.display_time
td
a.btn.btn-sm.btn-secondary href=edit_contest_contestant_path(@contest, contestant)
= t("helpers.buttons.open")