feat(chemistry7): Phase 0 — фундамент учебника «Химия 7» (hub + 4 главы)
- миграция 046_chemistry7_hub.sql: родитель chemistry-7 (26§) + 4 ребёнка - chemistry_7_hub.html: emerald-палитра, 4 главы, финал курса (8 боссов, ачивка «Химик 7 класса») - chemistry_7_ch1..ch4.html: каркасы глав на общем движке chem8_engine.js + chem8-textbook.css; PARAS по реальной программе, заглушки-builder'ы - chem7_svg.js: неймспейс Chem7 (надстройка над Chem8), стабы виджетов - chemistry7-page.test.js: jsdom-каркас (6 тестов, все проходят) Содержание § наполняется в фазах 1–4. См. plans/textbooks-7/PLAN_CHEMISTRY_7.md Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
/* chem7_svg.js — наглядные химические примитивы для учебника «Химия 7».
|
||||
*
|
||||
* Неймспейс: window.Chem7.*
|
||||
* Это ТОНКАЯ надстройка над window.Chem8 (chem8_svg.js): рендер формул и уравнений,
|
||||
* ионы переиспользуются из Chem8; здесь добавляется только то, что специфично для
|
||||
* первого курса химии 7 класса (валентность, разделение смесей, признаки реакций,
|
||||
* весы сохранения массы, горение, конструктор оксида/соли/основания, состав воздуха,
|
||||
* разложение воды, массовая доля элемента).
|
||||
*
|
||||
* Молекулярные модели (структурные / 2D / 3D) — НЕ здесь, а через biochem-core.js.
|
||||
*
|
||||
* Phase 0: переэкспортированы примитивы Chem8 (formula, ionLabel, chemEq, molarMass,
|
||||
* equationBalancer и т. п.); собственные звёздные виджеты — заглушки, наполняются в
|
||||
* фазах 1–4 (см. plans/textbooks-7/PLAN_CHEMISTRY_7.md, разд. B).
|
||||
*
|
||||
* Правила (CLAUDE.md / план):
|
||||
* - без эмоджи, только inline SVG .ic;
|
||||
* - в KaTeX-шаблонах двойной backslash (\\to, \\uparrow, \\downarrow);
|
||||
* - drag/слайдеры: window-listeners + state ВЫШЕ redraw(), без setPointerCapture.
|
||||
*/
|
||||
(function (global) {
|
||||
'use strict';
|
||||
|
||||
var C8 = global.Chem8 || {};
|
||||
function noop() { /* заглушка фазы 0 — реализуется в фазах 1–4 */ }
|
||||
|
||||
var Chem7 = {
|
||||
/* ── переиспользуем примитивы Chem8 (рендер формул/уравнений/ионов, M_r) ── */
|
||||
formula: C8.formula || function (s) { return s; },
|
||||
ionLabel: C8.ionLabel || function (s) { return s; },
|
||||
chemEq: C8.chemEq || function (s) { return s; },
|
||||
molarMass: C8.molarMass || function () { return NaN; },
|
||||
elementCounts: C8.elementCounts || function () { return null; },
|
||||
arOf: C8.arOf || function () { return ''; },
|
||||
fmt: C8.fmt || function (x) { return String(x).replace('.', ','); },
|
||||
equationBalancer: C8.equationBalancer || noop,
|
||||
|
||||
/* ── собственные звёздные виджеты Химии 7 (Phase 0: заглушки) ── */
|
||||
valenceBuilder: noop, // §9 — конструктор формулы по валентности (НОК индексов)
|
||||
elementSymbolDrill: noop, // §3 — тренажёр символ ↔ название
|
||||
atomBalance: noop, // §4 — «весы атомов», во сколько раз тяжелее
|
||||
mixtureSeparator: noop, // §2 — разделитель смесей (фильтр/выпаривание/магнит/дистилляция)
|
||||
reactionSigns: noop, // §10 — детектор признаков реакции
|
||||
massConservation: noop, // §11 — «весы сохранения массы»
|
||||
combustionSim: noop, // §15 — симулятор горения (вещество + O₂ → оксид)
|
||||
compoundBuilder: noop, // §16,22,24 — конструктор оксида/соли/основания
|
||||
airComposition: noop, // §13 — диаграмма состава воздуха
|
||||
waterDecomp: noop, // §23 — разложение воды (H₂:O₂ = 2:1)
|
||||
massFraction: noop // Прил.3/§8 — калькулятор массовой доли элемента
|
||||
};
|
||||
|
||||
global.Chem7 = Chem7;
|
||||
})(window);
|
||||
Reference in New Issue
Block a user