diff --git a/frontend/question-bank.html b/frontend/question-bank.html
index a333b50..fb1c7a7 100644
--- a/frontend/question-bank.html
+++ b/frontend/question-bank.html
@@ -262,7 +262,7 @@
@@ -476,14 +476,11 @@
topicSel.innerHTML = '';
if (!subject) return;
try {
- const data = await LS.api('/api/questions?subject=' + subject + '&limit=200');
- const rows = data.rows || [];
- const topicMap = new Map();
- rows.forEach(q => { if (q.topic_id && q.topic) topicMap.set(q.topic_id, q.topic); });
- topicMap.forEach((name, id) => {
+ const topics = await LS.api('/api/subjects/' + subject + '/topics');
+ (Array.isArray(topics) ? topics : []).forEach(t => {
const opt = document.createElement('option');
- opt.value = id;
- opt.textContent = name;
+ opt.value = t.id;
+ opt.textContent = t.name + (t.question_count ? ' (' + t.question_count + ')' : '');
topicSel.appendChild(opt);
});
} catch {}
@@ -498,9 +495,9 @@
if (f.topic_id) params.set('topic_id', f.topic_id);
if (f.difficulty) params.set('difficulty', f.difficulty);
if (f.type) params.set('type', f.type);
- if (f.sort === 'oldest') params.set('sort', 'oldest');
- else if (f.sort === 'easy') params.set('sort', 'difficulty_asc');
- else if (f.sort === 'hard') params.set('sort', 'difficulty_desc');
+ if (f.sort === 'oldest') params.set('sort', 'date_asc');
+ else if (f.sort === 'easy') params.set('sort', 'diff_asc');
+ else if (f.sort === 'hard') params.set('sort', 'diff_desc');
document.getElementById('qb-grid').innerHTML = '';
document.getElementById('qb-pagination').style.display = 'none';