From 1528d4e46e4f243600383609e9b471c4a6737103 Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Tue, 26 May 2026 18:55:49 +0300 Subject: [PATCH] =?UTF-8?q?refactor(labs):=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20=D0=BF=D0=B0=D0=BD?= =?UTF-8?q?=D0=B5=D0=BB=D0=B8=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=9F=D0=BB=D0=B0=D0=BD=D0=B8=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D1=80=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Было: 13 секций подряд (включая дублирующийся заголовок 'Построения'), 35 кнопок одним сплошным длинным списком, ширина 210px, шрифт .73rem — приходилось много скроллить, инструменты сложно находить. Стало: - Ширина 210px → 260px - Sticky quick-bar сверху с 4 самыми частыми: Выбор / Точка / Отрезок / Круг (фиолетовая подсветка, всегда видна) - Все остальные инструменты — в 7 collapsible-секциях
: - Линии (Прямая, Луч) - Фигуры (Треугольник, Четырёхугольник, Многоугольник, Параллелограмм, n-угольник + control) - Построения (Середина, Пересечение, ⊥ биссектриса, ∠ биссектриса, ∥ прямая, ⊥ прямая, Основание, Касательные, Диагонали, Описанная, Вписанная) — теперь без дублирующегося заголовка - Треугольник (Высота, Медиана, Центроид, Ортоцентр, Средняя линия, Фалес) - Преобразования (Симметрия, Перенос, Подобие + k-control) - Измерения и ГМТ (Длина, Угол, Площадь, ГМТ, Т. на отрезке, Т. на круге) - Метки (Штрихи, Дуги, Параллельность) - Шрифт .73rem → .78rem - Параметры/Объектов/Очистить/Задачник остались внизу без сворачивания --- frontend/css/lab.css | 80 +++++++++ frontend/lab.html | 412 +++++++++++++++++++++---------------------- 2 files changed, 285 insertions(+), 207 deletions(-) diff --git a/frontend/css/lab.css b/frontend/css/lab.css index 635cbef..e745f01 100644 --- a/frontend/css/lab.css +++ b/frontend/css/lab.css @@ -1945,6 +1945,86 @@ canvas[data-draggable]:active { cursor: grabbing; } .ptbl-reaction-eq { font-size: .78rem; font-weight: 600; font-family: 'Courier New', monospace; } .ptbl-reaction-note { font-size: .68rem; color: rgba(255,255,255,0.3); font-style: italic; margin-top: 4px; } +/* ═══════════════════════════════════════════════════════════ + GEOMETRY PANEL — modern layout (collapsible) + ═══════════════════════════════════════════════════════════ */ +.geo-panel-modern { + width: 260px !important; + padding: 10px 10px !important; + gap: 6px !important; +} +.geo-panel-modern .geo-tool-btn { + font-size: .78rem; + padding: 6px 8px; +} + +/* sticky quick-access bar */ +.geo-quick-bar { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 4px; + padding: 6px; + margin-bottom: 8px; + background: rgba(155,93,229,0.08); + border: 1px solid rgba(155,93,229,0.25); + border-radius: 10px; + position: sticky; + top: 0; + z-index: 5; +} +.geo-quick-bar .geo-tool-btn { + padding: 6px 8px; + background: rgba(255,255,255,0.04); + border-color: rgba(255,255,255,0.12); + font-size: .78rem; +} + +/* accordion */ +.geo-acc { + border: 1px solid var(--border); + border-radius: 9px; + margin-bottom: 5px; + background: rgba(255,255,255,0.02); + overflow: hidden; +} +.geo-acc > summary { + cursor: pointer; + list-style: none; + padding: 7px 11px 7px 27px; + font-family: 'Unbounded', sans-serif; + font-size: .72rem; + font-weight: 700; + color: var(--text); + letter-spacing: .04em; + text-transform: uppercase; + position: relative; + user-select: none; + transition: background .15s; +} +.geo-acc > summary:hover { background: rgba(255,255,255,0.04); } +.geo-acc > summary::-webkit-details-marker { display: none; } +.geo-acc > summary::before { + content: ''; + position: absolute; + left: 11px; + top: 50%; + width: 0; + height: 0; + border-left: 4.5px solid currentColor; + border-top: 3.5px solid transparent; + border-bottom: 3.5px solid transparent; + transform: translateY(-50%); + transition: transform .18s; + opacity: .6; +} +.geo-acc[open] > summary::before { + transform: translateY(-50%) rotate(90deg); +} +.geo-acc-body { + padding: 8px 10px 10px; + border-top: 1px solid var(--border); +} + /* ═══════════════════════════════════════════════════════════ DYNAMICS PANEL — modern layout ═══════════════════════════════════════════════════════════ */ diff --git a/frontend/lab.html b/frontend/lab.html index b73bcc6..fc30dd7 100644 --- a/frontend/lab.html +++ b/frontend/lab.html @@ -4252,11 +4252,10 @@
-
+
- -
Инструмент
-
+ +
-
- -
Построения
-
- -
-
Фигуры
-
- - - -
- -
Построения
-
- - - - - - - - - -
- -
Преобразования
-
- - - -
- -
Элементы треугольника
-
- - - - -
- -
Средняя линия и четырёхугольники
-
- - - - -
-
- k = - - 2 - -
- -
Правильный многоугольник
-
- -
- - 6 -
-
+
- -
Теорема Фалеса
-
- -
+
+ Фигуры +
+
+ + + + + +
+
+ N = + + 6 + +
+
+
- -
Метки
-
- - - -
+
+ Построения +
+ + + + + + + + + + + +
+
- -
Точки на объектах
-
- - -
+
+ Треугольник +
+ + + + + + +
+
- -
Измерения и ГМТ
-
- - - - -
+
+ Преобразования +
+
+ + + +
+
+ k = + + 2 + +
+
+
+ +
+ Измерения и ГМТ +
+ + + + + + +
+
+ +
+ Метки +
+ + + +
+
Параметры