feat: режим аннотации поверх симуляции в онлайн-уроке + fix планиметрии (arcmark, triangle tools)
Онлайн-урок: - Кнопка «Рисовать» в баре симуляции (только учителю) - При активации: холст доски показывается поверх iframe (z-index), фон прозрачный - Учитель рисует прямо поверх симуляции обычными инструментами - Студенты видят то же самое через SSE (classroom_sim_annotate) - Выход из режима → кнопка «Вернуться к симуляции» Планиметрия (bugfix): - arcmark теперь рисуется всегда (не зависит от showAngles) - altitude/median: 1 клик на вершину треугольника (авто-находит противоположную сторону) - centroid/orthocenter: 1 клик внутри/на треугольник Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -949,6 +949,19 @@ function simMode(req, res) {
|
||||
res.json({ ok: true });
|
||||
}
|
||||
|
||||
/* POST /api/classroom/:id/sim/annotate — teacher toggles draw-over-sim mode */
|
||||
function simAnnotate(req, res) {
|
||||
const sessionId = Number(req.params.id);
|
||||
const session = db.prepare(`SELECT * FROM classroom_sessions WHERE id=? AND status='active'`).get(sessionId);
|
||||
if (!session) return res.status(404).json({ error: 'Сессия не активна' });
|
||||
if (session.teacher_id !== req.user.id && req.user.role !== 'admin')
|
||||
return res.status(403).json({ error: 'Нет доступа' });
|
||||
|
||||
const { active } = req.body;
|
||||
emitToSession(sessionId, { type: 'classroom_sim_annotate', sessionId, active: !!active });
|
||||
res.json({ ok: true });
|
||||
}
|
||||
|
||||
/* DELETE /api/classroom/:id/sim — teacher closes simulation */
|
||||
function simClose(req, res) {
|
||||
const sessionId = Number(req.params.id);
|
||||
@@ -1522,6 +1535,7 @@ module.exports = {
|
||||
simClose,
|
||||
simState,
|
||||
simMode,
|
||||
simAnnotate,
|
||||
clearPage,
|
||||
previewStroke,
|
||||
broadcastCursor,
|
||||
|
||||
Reference in New Issue
Block a user