CSV export: correct display time + remaining pieces
Some checks failed
CI / scan_ruby (push) Failing after 14s
CI / scan_js (push) Successful in 14s
CI / lint (push) Successful in 14s
CI / test (push) Successful in 37s

This commit is contained in:
sto
2025-10-28 15:22:45 +01:00
parent bbd2cef168
commit 7db96cfab4
2 changed files with 7 additions and 2 deletions

View File

@@ -114,7 +114,12 @@ class ContestantsController < ApplicationController
def export def export
authorize @contest authorize @contest
@contestants = @contest.contestants.sort_by { |contestant| [ -contestant.completions.size, contestant.time_seconds ] } @contestants = @contest.contestants.sort_by { |contestant| [
-contestant.completions.where(remaining_pieces: nil).size,
(contestant.completions.where(remaining_pieces: nil).size == @contest.puzzles.length ? 1 : 0) * contestant.time_seconds,
contestant.completions.size > 0 && contestant.completions[-1].remaining_pieces ? contestant.completions[-1].remaining_pieces : 1000000,
contestant.time_seconds
] }
respond_to do |format| respond_to do |format|
format.csv do format.csv do

View File

@@ -1,4 +1,4 @@
= CSV.generate_line [t("helpers.rank"), t("activerecord.attributes.contestant.name"), t("activerecord.attributes.contestant.display_time"), t("activerecord.attributes.contestant.completions")] = CSV.generate_line [t("helpers.rank"), t("activerecord.attributes.contestant.name"), t("activerecord.attributes.contestant.display_time"), t("activerecord.attributes.contestant.completions")]
- @contestants.each_with_index do |contestant, index| - @contestants.each_with_index do |contestant, index|
= CSV.generate_line([index + 1, contestant.name, contestant.display_time, contestant.completions.length]) = CSV.generate_line([index + 1, contestant.name, 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, contestant.completions.where(remaining_pieces: nil).length])