admin: Qualitätsbewertungs-Button mit Scores-Tabelle
This commit is contained in:
parent
eea1de6d95
commit
fdca0a7ecc
1 changed files with 60 additions and 0 deletions
|
|
@ -683,9 +683,13 @@ window.Page_admin = (() => {
|
|||
<button class="btn btn-secondary btn-sm" id="adm-translate-temper">
|
||||
${UI.icon('translate')} Temperament → Deutsch
|
||||
</button>
|
||||
<button class="btn btn-secondary btn-sm" id="adm-evaluate-breeds">
|
||||
${UI.icon('chart-bar')} Qualitätsbewertung (20 Rassen)
|
||||
</button>
|
||||
</div>
|
||||
<div id="adm-maint-result" style="margin-top:var(--space-2);font-size:var(--text-xs);
|
||||
color:var(--c-text-secondary)"></div>
|
||||
<div id="adm-eval-result" style="margin-top:var(--space-3);display:none"></div>
|
||||
</div>
|
||||
|
||||
<div style="margin-top:var(--space-5)">
|
||||
|
|
@ -741,6 +745,62 @@ window.Page_admin = (() => {
|
|||
}
|
||||
});
|
||||
|
||||
el.querySelector('#adm-evaluate-breeds').addEventListener('click', async (e) => {
|
||||
const btn = e.currentTarget;
|
||||
const res = el.querySelector('#adm-maint-result');
|
||||
const box = el.querySelector('#adm-eval-result');
|
||||
btn.disabled = true;
|
||||
res.textContent = 'Bewertung läuft… (ca. 30s)';
|
||||
box.style.display = 'none';
|
||||
try {
|
||||
const d = await API.get('/admin/wiki/evaluate?sample=20');
|
||||
if (d.error) { res.textContent = '✗ ' + d.error; return; }
|
||||
const avg = d.averages;
|
||||
const scoreColor = v => v >= 4 ? 'var(--c-success)' : v >= 3 ? 'var(--c-warning)' : 'var(--c-danger)';
|
||||
const scoreBar = v => `<span style="color:${scoreColor(v)};font-weight:600">${v.toFixed(1)}</span>`;
|
||||
const rows = d.results.filter(r => !r.error).map(r =>
|
||||
`<tr>
|
||||
<td style="padding:2px 6px">${_esc(r.name)}</td>
|
||||
<td style="text-align:center;padding:2px 6px">${scoreBar(r.vollstaendigkeit)}</td>
|
||||
<td style="text-align:center;padding:2px 6px">${scoreBar(r.korrektheit)}</td>
|
||||
<td style="text-align:center;padding:2px 6px">${scoreBar(r.sprachqualitaet)}</td>
|
||||
<td style="text-align:center;padding:2px 6px">${scoreBar(r.konsistenz)}</td>
|
||||
<td style="text-align:center;padding:2px 6px;font-weight:700">${scoreBar(r.gesamt)}</td>
|
||||
<td style="padding:2px 6px;color:var(--c-text-muted);font-size:0.9em">${_esc(r.hinweis || '')}</td>
|
||||
</tr>`
|
||||
).join('');
|
||||
box.style.display = 'block';
|
||||
box.innerHTML = `
|
||||
<div style="font-size:var(--text-xs);font-weight:600;margin-bottom:var(--space-2)">
|
||||
Ø-Scores (${d.evaluated}/${d.sample_size} Rassen bewertet)
|
||||
</div>
|
||||
<div style="display:flex;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-3)">
|
||||
${['vollstaendigkeit','korrektheit','sprachqualitaet','konsistenz','gesamt'].map(k =>
|
||||
`<div style="text-align:center">
|
||||
<div style="font-size:1.4em;font-weight:700;color:${scoreColor(avg[k])}">${avg[k]?.toFixed(1) ?? '–'}</div>
|
||||
<div style="font-size:0.75em;color:var(--c-text-muted)">${{vollstaendigkeit:'Vollst.',korrektheit:'Korrekt.',sprachqualitaet:'Sprache',konsistenz:'Konsistenz',gesamt:'Gesamt'}[k]}</div>
|
||||
</div>`
|
||||
).join('')}
|
||||
</div>
|
||||
<div style="overflow-x:auto">
|
||||
<table style="width:100%;border-collapse:collapse;font-size:var(--text-xs)">
|
||||
<thead><tr style="border-bottom:1px solid var(--c-border)">
|
||||
<th style="text-align:left;padding:2px 6px">Rasse</th>
|
||||
<th style="padding:2px 6px">Vollst.</th><th style="padding:2px 6px">Korrekt.</th>
|
||||
<th style="padding:2px 6px">Sprache</th><th style="padding:2px 6px">Konsis.</th>
|
||||
<th style="padding:2px 6px">Ges.</th><th style="text-align:left;padding:2px 6px">Hinweis</th>
|
||||
</tr></thead>
|
||||
<tbody>${rows}</tbody>
|
||||
</table>
|
||||
</div>`;
|
||||
res.textContent = `✓ Bewertung abgeschlossen`;
|
||||
} catch (err) {
|
||||
res.textContent = '✗ Fehler: ' + (err.message || err);
|
||||
} finally {
|
||||
btn.disabled = false;
|
||||
}
|
||||
});
|
||||
|
||||
await _loadSystemCards(el.querySelector('#adm-sys-cards'));
|
||||
await loadLogs();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue