3.5 KiB
3.5 KiB
Phase 4: Билдер (редактор)
Status: ⬜ Not Started Parent plan: PLAN.md Domain: frontend
Objective
Учительский редактор: страница с живым превью и панелями для сборки спеки без кода. После фазы учитель собирает рабочую симуляцию с нуля в UI и сохраняет в БД (Ф3).
Tasks
- Страница
frontend/sim-builder.html(доступ teacher/admin; сайдбар как у других страниц). - Левая/правая панель + центр-превью (встроенный
SimEngineинстанс, перемонтаж при правках). - Панель Параметры: добавить/удалить параметр (имя, min, max, step, начальное, единица) → слайдер в превью.
- Панель Объекты: добавить объект (тип из whitelist), редактор свойств; числовые поля принимают число ИЛИ выражение; палитра-помощник функций/параметров; подпись с LaTeX.
- Панель Графики/Физика: добавить plot (expr/var/range/trace); тумблер физики + её поля (Ф2).
- Размещение объектов мышью на превью (клик-поставить, drag-двигать) с синхроном в свойства.
- Мета: заголовок, описание, предмет, класс, категория, превью-картинка (опц.).
- Save/Load через
LS.customSims*(Ф3): новый / редактировать существующий; кнопка «Тест» (play inline). - Валидация на клиенте (понятные ошибки до сохранения) + показ ошибок выражений.
Files to Modify/Create
frontend/sim-builder.html(new) — страница + инлайн-логика редактораfrontend/js/labs/_sim_engine.js— при необходимости hook'и для билдера (live re-mount, highlight) (modify, минимально)js/api.js— если нужны доп. методы (modify, опц.)- ссылка в сайдбаре/навигации для учителя (modify соответствующего include)
Acceptance Criteria
- Учитель с нуля добавляет параметры/объекты/график, видит живое превью, сохраняет, открывает заново и видит то же.
- Ошибка в выражении показывается понятно, не роняет редактор.
- Нет эмодзи, дизайн в системе ls.css.
Notes
- Прагматично: форма-панели + лёгкий drag на превью. НЕ полноценный node-граф.
- Это frontend-фаза — использовать гайдлайны frontend-design.
- Большой файл — держать логику модульной (можно вынести в
frontend/js/sim-builder.js).
Review Checklist
- Все задачи выполнены
- Полный цикл build→save→reload→edit работает
- Доступ только teacher/admin
- Нет эмодзи; дизайн-система соблюдена