410eb8a862
Два дефекта, из-за которых 3D читался как плоская диаграмма: - painter-сортировка была по возрастанию z (ближние первыми) — дальние атомы рисовались поверх ближних. Теперь единый список примитивов (атомы + половинки связей) сортируется по убыванию z (дальние первыми). - связи были тонкими плоскими линиями. Теперь — затенённые «цилиндры»: толстый штрих с поперечным градиентом (центр светлее, края темнее), двухцветные (каждая половина под цвет своего атома) — фирменный вид ball-and-stick. Ширина зависит от перспективы (ближе — толще). - усилена перспектива (fov 900→700), добавлен тёмный ободок сфер для объёма. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1.9 KiB
1.9 KiB
Phase 2: Тела симуляций как шаблоны + ленивый mount
Status: ⬜ Not Started Parent plan: PLAN.md Domain: frontend
Objective
Вынести inline-HTML тел симуляций (<div id="sim-xxx">, ~3000 строк) из lab.html в
манифесты: mount(host) создаёт DOM лениво при первом открытии. lab.html худеет.
Tasks
- Добавить в манифест поле
mount(host)(илиbodyHtml) — строит/возвращает тело симуляции. - Ядро: при первом open — если тело не смонтировано, вызвать mount() в контейнер
#lab-sim. - Перенести разметку каждого
sim-xxxтела + егоctrl-xxxбара из lab.html в соответствующий модуль. - Удалить вынесенные блоки из lab.html.
- Сохранить id элементов (canvas ids, ctrl ids) — на них завязаны Sim-классы.
Files to Modify/Create
- Все
frontend/js/labs/*.js— добавить mount/bodyHtml. frontend/lab.html— удалить inline тела.
Acceptance Criteria
- Все симуляции монтируются и работают.
- lab.html значительно меньше (~3000 строк вынесено).
- Повторное открытие не дублирует DOM.
Notes
- Theory-panel и общий sim-topbar остаются в lab.html.
- KaTeX/lucide ре-инициализация после mount при необходимости.
Review Checklist
- Нет дублей DOM при повторном open
- id элементов сохранены
- Все тела перенесены