Spaces:
Running
Running
Upload 10 files
Browse files- src/views/InstructorView.js +34 -31
src/views/InstructorView.js
CHANGED
|
@@ -592,40 +592,43 @@ export function setupInstructorEvents() {
|
|
| 592 |
}
|
| 593 |
};
|
| 594 |
|
| 595 |
-
// Bind Reject Button Logic
|
| 596 |
-
|
| 597 |
-
|
| 598 |
-
|
| 599 |
-
|
| 600 |
-
|
| 601 |
-
|
| 602 |
-
|
| 603 |
-
|
| 604 |
-
|
| 605 |
-
|
| 606 |
-
|
| 607 |
-
|
| 608 |
-
|
| 609 |
-
|
| 610 |
-
|
| 611 |
-
|
| 612 |
-
|
| 613 |
-
|
|
|
|
|
|
|
| 614 |
|
| 615 |
-
|
| 616 |
-
|
| 617 |
-
|
| 618 |
-
|
| 619 |
|
| 620 |
-
|
| 621 |
-
|
| 622 |
-
|
| 623 |
-
|
| 624 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 625 |
}
|
| 626 |
-
} catch (e) {
|
| 627 |
-
console.error("Reject failed:", e);
|
| 628 |
-
alert('退回失敗: ' + e.message);
|
| 629 |
}
|
| 630 |
}
|
| 631 |
});
|
|
|
|
| 592 |
}
|
| 593 |
};
|
| 594 |
|
| 595 |
+
// Bind Reject Button Logic (Delegated)
|
| 596 |
+
if (!window._rejectListenerAttached) {
|
| 597 |
+
window._rejectListenerAttached = true;
|
| 598 |
+
document.body.addEventListener('click', async (e) => {
|
| 599 |
+
const btnReject = e.target.closest('#btn-reject-task');
|
| 600 |
+
if (btnReject) {
|
| 601 |
+
console.log("Reject button clicked (Delegated Event)");
|
| 602 |
+
const modal = document.getElementById('broadcast-modal');
|
| 603 |
+
if (!modal) return;
|
| 604 |
+
|
| 605 |
+
const userId = modal.dataset.userId;
|
| 606 |
+
const challengeId = modal.dataset.challengeId;
|
| 607 |
+
const roomCode = localStorage.getItem('vibecoding_room_code');
|
| 608 |
+
|
| 609 |
+
console.log('Reject attempt - Click details:', { dataset: modal.dataset, userId, challengeId, roomCode });
|
| 610 |
+
|
| 611 |
+
if (!userId || !challengeId) {
|
| 612 |
+
console.error('Missing userId or challengeId');
|
| 613 |
+
alert("錯誤:無法讀取學員資訊 (Missing ID)");
|
| 614 |
+
return;
|
| 615 |
+
}
|
| 616 |
|
| 617 |
+
if (confirm('確定要退回此學員的進度嗎?學員將需要重新作答。')) {
|
| 618 |
+
try {
|
| 619 |
+
const { resetProgress } = await import("../services/classroom.js");
|
| 620 |
+
const success = await resetProgress(userId, roomCode, challengeId);
|
| 621 |
|
| 622 |
+
if (success) {
|
| 623 |
+
alert('已成功退回,學員將需要重新作答。');
|
| 624 |
+
window.closeBroadcastModal();
|
| 625 |
+
} else {
|
| 626 |
+
alert('找不到該學員的進度紀錄,無法退回 (Document Not Found)。');
|
| 627 |
+
}
|
| 628 |
+
} catch (e) {
|
| 629 |
+
console.error("Reject failed:", e);
|
| 630 |
+
alert('退回失敗: ' + e.message);
|
| 631 |
}
|
|
|
|
|
|
|
|
|
|
| 632 |
}
|
| 633 |
}
|
| 634 |
});
|