2.7 KiB
2.7 KiB
Phase 1: Графики + интеракции
Status: ⬜ Not Started Parent plan: PLAN.md Domain: frontend
Objective
Добавить в рантайм графики (plot-объекты), перетаскиваемые ручки (drag → параметр), векторы и числовые readout. После фазы спека со слайдером, draggable-точкой и live-графиком работает.
Tasks
- Plot-объект в спеке:
{ type:'plot', expr:'...', var:'x', range:[a,b], samples, trace? }— рисует график выражения;trace:true— накапливает след поt. Переиспользовать_graph_panel.js(посмотреть API). - Draggable-ручка: объект/маркер с
drag:{ param:'<name>', axis:'x|y|xy', min,max }— перетаскивание мышью/тачем меняет параметр (и наоборот, позиция следует за параметром). Хит-тест в мир-координатах. - Readout:
{ type:'readout', label, expr, unit, precision }— живое значение выражения как текст/бейдж. - Vector-объект с привязкой к (origin, dx, dy)-выражениям + стрелка.
- Тач-поддержка drag (pointer events), не ломая существующую логику доски/лабы.
- Обновить демо-спеку: добавить слайдер, draggable-точку, plot + readout.
Files to Modify/Create
frontend/js/labs/_sim_engine.js— типы plot/readout/vector, drag-интеракции (modify)frontend/js/labs/_sim_demo.js— расширить демо (modify)
Acceptance Criteria
- Перетаскивание ручки меняет параметр; зависимые объекты/график обновляются.
- График строится по выражению; trace накапливает след во времени.
- Readout показывает живое значение. Тач работает.
Notes
- Drag не должен конфликтовать с pan/zoom рантайма (если есть). Приоритет хит-теста — ручки.
- Сэмплинг графика разумный (без фриза на больших range).
Review Checklist
- Все задачи выполнены
- Drag работает мышью и тачем
- Нет регрессий рантайма Ф0
- Нет эмодзи, стиль проекта