64 lines
3.3 KiB
Plaintext
64 lines
3.3 KiB
Plaintext
.row.mb-4 style="height: calc(100vh - 280px)"
|
|
.col.d-flex.flex-column style="height: 100%"
|
|
.row.mb-4
|
|
.col
|
|
a.btn.btn-primary href=new_contest_contestant_path(@contest) style="margin-top: -3px"
|
|
| + #{t("helpers.buttons.add")}
|
|
a.ms-2.btn.btn.btn-primary href=contest_import_path(@contest) style="margin-top: -3px"
|
|
| #{t("helpers.buttons.import")}
|
|
a.ms-2.btn.btn.btn-primary href=contest_generate_qrcodes_path(@contest) style="margin-top: -3px"
|
|
| #{t("helpers.buttons.generate_qrcodes")}
|
|
a.ms-2.btn.btn.btn-primary href="/contests/#{@contest.id}/export.csv" style="margin-top: -3px"
|
|
| #{t("helpers.buttons.export")}
|
|
|
|
- if @contest.categories.size > 0
|
|
.row
|
|
.col
|
|
select.mt-2.mb-2 id="categories" style="padding: 5px"
|
|
option value=-1
|
|
| Tous.tes les participant.e.s
|
|
option value=-2
|
|
| Participant.e.s sans catégorie
|
|
- @contest.categories.each do |category|
|
|
option value=category.id
|
|
= category.name
|
|
javascript:
|
|
categorySelectEl = document.getElementById('categories');
|
|
urlParams = new URLSearchParams(window.location.search);
|
|
selectedCategory = urlParams.get('category');
|
|
Array.from(categorySelectEl.children).forEach((option) => {
|
|
if (option.value == selectedCategory) option.selected = true;
|
|
});
|
|
categorySelectEl.addEventListener('change', (e) => {
|
|
window.location.replace(`#{contest_contestants_path(@contest)}?category=${e.target.value}`);
|
|
})
|
|
.d-flex.flex-column style="overflow-y: auto"
|
|
table.table.table-striped.table-hover
|
|
thead
|
|
tr
|
|
th
|
|
= t("activerecord.attributes.contestant.name")
|
|
th
|
|
= t("activerecord.attributes.contestant.offline")
|
|
th
|
|
= t("activerecord.attributes.contestant.completions")
|
|
th
|
|
= t("activerecord.attributes.contestant.display_time")
|
|
tbody
|
|
- @contestants.each_with_index do |contestant, index|
|
|
tr scope="row"
|
|
td
|
|
= contestant.name
|
|
td
|
|
- if contestant.offline.present?
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check-square" viewBox="0 0 16 16">
|
|
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
|
|
<path d="M10.97 4.97a.75.75 0 0 1 1.071 1.05l-3.992 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425z"/>
|
|
</svg>
|
|
td
|
|
= contestant.completions.where(remaining_pieces: nil).length
|
|
td
|
|
= 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") |