feat: 看板每组显示考试成员榜(排名/姓名/成绩,成绩降序) + 防溢出
This commit is contained in:
+29
-2
@@ -152,6 +152,27 @@ function renderClasses(d){
|
||||
}).join('');
|
||||
}
|
||||
|
||||
/* ---------- 成员榜:排名 / 姓名 / 成绩(默认成绩降序) ---------- */
|
||||
function membersTable(members){
|
||||
if (!members || !members.length) {
|
||||
return '<div class="empty" style="padding:18px 0">暂无考试成员</div>';
|
||||
}
|
||||
return '<div class="member-list"><table class="grid compact">' +
|
||||
'<thead><tr><th style="width:60px">排名</th><th>姓名</th><th style="width:80px">成绩</th></tr></thead><tbody>' +
|
||||
members.map(m => {
|
||||
const rk = m.rank;
|
||||
const badge = rk === 1 ? 'rk rk-1' : (rk === 2 ? 'rk rk-2' : (rk === 3 ? 'rk rk-3' : 'rk'));
|
||||
const sc = m.score;
|
||||
const cls = sc == null ? '' : (sc >= 90 ? 'score-high' : (sc >= 60 ? 'score-mid' : 'score-low'));
|
||||
return '<tr>' +
|
||||
'<td class="num"><span class="' + badge + '">' + rk + '</span></td>' +
|
||||
'<td class="name">' + esc(m.name) + '</td>' +
|
||||
'<td class="score num ' + cls + '">' + (sc == null ? '-' : sc) + '</td>' +
|
||||
'</tr>';
|
||||
}).join('') +
|
||||
'</tbody></table></div>';
|
||||
}
|
||||
|
||||
/* ---------- 班级详情:整体 + A/B 分组对比 ---------- */
|
||||
function showClassDetail(name){
|
||||
if (!DASH) return;
|
||||
@@ -180,8 +201,12 @@ function showClassDetail(name){
|
||||
const groups = (c.groups || []).filter(g => g.group !== '(未分组)');
|
||||
const box = $('#groupCompare');
|
||||
if (!groups.length) {
|
||||
$('#groupSecTitle').textContent = '分组对比';
|
||||
box.innerHTML = '<div class="empty">该班级未设置分组(A/B),仅显示整体数据</div>';
|
||||
$('#groupSecTitle').textContent = '考试成员';
|
||||
box.innerHTML = '<div class="gpanel">' +
|
||||
'<div class="ghead"><strong>本班考试成员</strong>' +
|
||||
'<span class="rate-num">' + c.submitted + ' 人</span></div>' +
|
||||
'<div class="sub">该班级未设置分组(A/B),以下按成绩从高到低排列</div>' +
|
||||
membersTable(c.members) + '</div>';
|
||||
return;
|
||||
}
|
||||
$('#groupSecTitle').textContent = '分组对比(' + groups.map(g => g.group).join(' vs ') + ')';
|
||||
@@ -198,6 +223,8 @@ function showClassDetail(name){
|
||||
'<div class="m metric-ok"><span>最高分</span><b>' + (g.max != null ? g.max : '-') + '</b></div>' +
|
||||
'<div class="m metric-danger"><span>最低分</span><b>' + (g.min != null ? g.min : '-') + '</b></div>' +
|
||||
'</div>' +
|
||||
'<div class="mem-title">考试成员 · 按成绩降序(' + g.submitted + ' 人)</div>' +
|
||||
membersTable(g.members) +
|
||||
'</div>';
|
||||
}).join('') + '</div>';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user