fix(opticsbench): постоянный чип «Источник» + восстановлены кнопки Граница/Пластина

- выбор источника теперь всегда доступен: чип «Источник» в списке схемы
  (раньше — только кликом по точке на холсте); источник выбран по умолчанию
- восстановлены потерянные кнопки палитры «+ Граница» / «+ Пластина»
- bump opticsbench.js?v=6

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-30 13:00:42 +03:00
parent 410eb8a862
commit dfce94fbf7
2 changed files with 9 additions and 4 deletions
+6 -3
View File
@@ -2551,7 +2551,7 @@ class BenchSim {
this._mk('lens', { xf: 0.40, f: 130, ap: 95 }),
this._mk('screen', { xf: 0.86 }),
];
this.selectedId = null;
this.selectedId = '__src'; // source selected by default so its controls show on open
this._bindEvents();
this._ro = new ResizeObserver(() => { this.fit(); this.draw(); });
this._ro.observe(canvas.parentElement || canvas);
@@ -4413,10 +4413,13 @@ function _benchUpdateUI() {
if (!benchSim) return;
const listEl = document.getElementById('bench-list');
if (listEl) {
listEl.innerHTML = benchSim.elements.map(e =>
// permanent "Источник" chip so the source is always selectable (not only via canvas)
const srcChip = '<button class="preset-btn' + (benchSim.selectedId === '__src' ? ' active' : '') +
'" style="font-size:.68rem" onclick="benchSelect(\'__src\')">Источник</button>';
listEl.innerHTML = srcChip + benchSim.elements.map(e =>
'<button class="preset-btn' + (e.id === benchSim.selectedId ? ' active' : '') +
'" style="font-size:.68rem" onclick="benchSelect(' + e.id + ')">' + _benchElName(e) + '</button>'
).join('') || '<div class="pp-hint">Пусто</div>';
).join('');
}
const propsEl = document.getElementById('bench-props');
if (propsEl) propsEl.innerHTML = _benchPropsHTML();
+3 -1
View File
@@ -3194,6 +3194,8 @@
<button class="preset-btn" style="font-size:.68rem" onclick="benchAdd('aperture')">+ Диафрагма</button>
<button class="preset-btn" style="font-size:.68rem" onclick="benchAdd('screen')">+ Экран</button>
<button class="preset-btn" style="font-size:.68rem" onclick="benchAdd('prism')">+ Призма</button>
<button class="preset-btn" style="font-size:.68rem" onclick="benchAdd('interface')">+ Граница</button>
<button class="preset-btn" style="font-size:.68rem" onclick="benchAdd('slab')">+ Пластина</button>
</div>
<div class="gp-section-title" style="margin-bottom:6px">Схема</div>
<div id="bench-list" style="display:flex;flex-wrap:wrap;gap:3px;margin-bottom:8px"></div>
@@ -4844,7 +4846,7 @@
<script src="/js/labs/graphtransform.js"></script>
<script src="/js/labs/pendulum.js"></script>
<script src="/js/labs/equilibrium.js"></script>
<script src="/js/labs/opticsbench.js?v=4"></script>
<script src="/js/labs/opticsbench.js?v=6"></script>
<script src="/js/labs/isoprocess.js"></script>
<script src="/js/labs/titration.js"></script>
<script src="/js/labs/probability.js"></script>