Files
Learn_System/plans/lab-content-engine/phase-2-lazy-mount.md
T
Maxim Dolgolyov 410eb8a862 fix(biochem 3D): корректная глубина + объёмные связи-цилиндры
Два дефекта, из-за которых 3D читался как плоская диаграмма:
- painter-сортировка была по возрастанию z (ближние первыми) — дальние
  атомы рисовались поверх ближних. Теперь единый список примитивов
  (атомы + половинки связей) сортируется по убыванию z (дальние первыми).
- связи были тонкими плоскими линиями. Теперь — затенённые «цилиндры»:
  толстый штрих с поперечным градиентом (центр светлее, края темнее),
  двухцветные (каждая половина под цвет своего атома) — фирменный вид
  ball-and-stick. Ширина зависит от перспективы (ближе — толще).
- усилена перспектива (fov 900→700), добавлен тёмный ободок сфер для объёма.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 12:58:39 +03:00

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 элементов сохранены
  • Все тела перенесены

Handoff to Next Phase