improved scoring ui + removed test data filters
Some checks failed
PHPUnit / test (push) Has been cancelled

This commit is contained in:
2026-06-08 19:38:37 +02:00
parent 11bae269e9
commit 3211d35b43
6 changed files with 317 additions and 200 deletions

View File

@ -1,6 +1,5 @@
import { apiGet, apiPost } from '../api.js';
import { pageHeaderHTML, showToast } from '../app.js';
import { isDevTestClientCode, isDevTestUsername, testDataRowClassForClient } from '../test-data.js';
const CLIENT_PAGE_SIZE = 50;
@ -100,11 +99,6 @@ function renderAssignments() {
</select>
<input type="search" id="clientSearch" class="filter-search"
placeholder="Search client or coach…">
<select id="clientTestFilter" aria-label="Test data filter">
<option value="">All clients</option>
<option value="test">Test only</option>
<option value="hide-test">Hide test</option>
</select>
</div>
</div>
<div class="assign-table-panel">
@ -178,10 +172,6 @@ function renderAssignments() {
clientPage = 0;
renderClientRows();
});
document.getElementById('clientTestFilter').addEventListener('change', () => {
clientPage = 0;
renderClientRows();
});
document.getElementById('selectAllBtn').addEventListener('click', () => {
document.querySelectorAll('#clientTableBody .client-cb').forEach(cb => {
@ -313,10 +303,9 @@ function renderCoachList() {
function coachListItemHTML(c) {
const count = (clientsByCoach[c.coachID] || []).length;
const coachTest = isDevTestUsername(c.username) ? ' row-test-data' : '';
const active = selectedCoachID === c.coachID ? ' active' : '';
return `
<li class="coach-list-item${coachTest}${active}" data-id="${c.coachID}" role="option" tabindex="0">
<li class="coach-list-item${active}" data-id="${c.coachID}" role="option" tabindex="0">
<div class="coach-name">${esc(c.username)}</div>
${c.supervisorUsername
? `<div class="coach-supervisor">${esc(c.supervisorUsername)}</div>`
@ -336,8 +325,6 @@ function highlightCoachInList(coachID) {
function getVisibleClients() {
const coachFilter = document.getElementById('filterByCoach')?.value ?? '';
const search = document.getElementById('clientSearch')?.value.trim().toLowerCase() ?? '';
const testMode = document.getElementById('clientTestFilter')?.value || '';
let visible = clients;
if (coachFilter === '__unassigned__') {
visible = clients.filter(c => !c.coachID);
@ -350,11 +337,6 @@ function getVisibleClients() {
return hay.includes(search);
});
}
if (testMode === 'test') {
visible = visible.filter(c => isDevTestClientCode(c.clientCode));
} else if (testMode === 'hide-test') {
visible = visible.filter(c => !isDevTestClientCode(c.clientCode));
}
return visible;
}
@ -363,8 +345,7 @@ function updateClientSummary(filteredCount, pageSlice) {
if (!el) return;
const search = document.getElementById('clientSearch')?.value.trim() ?? '';
const coachFilter = document.getElementById('filterByCoach')?.value ?? '';
const testFilter = document.getElementById('clientTestFilter')?.value;
const hasFilter = search || coachFilter || testFilter;
const hasFilter = search || coachFilter;
const parts = [];
if (hasFilter && filteredCount !== clients.length) {
parts.push(`${filteredCount} of ${clients.length} match`);
@ -453,7 +434,7 @@ function renderClientRows() {
body.innerHTML = slice.map(c => {
const checked = selectedClientCodes.has(c.clientCode) ? ' checked' : '';
return `
<tr class="${testDataRowClassForClient(c.clientCode).trim()}">
<tr>
<td>
<input type="checkbox" class="client-cb" data-code="${esc(c.clientCode)}" value="${esc(c.clientCode)}"${checked} aria-label="Select ${esc(c.clientCode)}">
</td>