Связи: вернуть лабораторию в ветку (для просмотра графа на моках)

Откат удаления из aed64e7: lab.js снова в репозитории, статический импорт в network-view.js,
строка lab.js убрана из .gitignore. Лаборатория /network-view/lab нужна для демонстрации/проверки
графа на мок-данных без бэкенда. Бамп client.version → 1.2.141.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
AidarKC
2026-06-09 19:23:40 +03:00
co-authored by Claude Opus 4.8
parent aed64e76a7
commit 2bd27cd73b
5 changed files with 135 additions and 19 deletions
+3 -12
View File
@@ -2,6 +2,7 @@ import { renderHeader } from '../components/header.js';
import { authService, state } from '../state.js';
import { makeProfileRoute } from '../services/shine-routes.js';
import { makeProfileLinksRoute } from '../services/shine-routes.js';
import { renderNetworkLab } from './network/lab.js';
import { createForceGraph } from './network/force-graph.js';
import { engineModelFromGraphModel } from './network/adapter.js';
import { openNodeMenu, relationLabelRu } from './network/node-menu.js';
@@ -216,19 +217,9 @@ let persistedCenterLogin = '';
let persistedCenterHistory = [];
export function render({ navigate, route }) {
// Лабораторный режим force-графа — ТОЛЬКО для локальной разработки. Файл `network/lab.js`
// намеренно НЕ в гите (см. .gitignore): на сервере он не нужен (там реальные данные). Поэтому
// импорт ДИНАМИЧЕСКИЙ — если файла нет (прод/сервер), реальный экран «Связи» не ломается,
// а заход на /network-view/lab просто уводит на обычный экран.
// Лабораторный режим force-графа (Фаза 1): рендерится из мока, не трогая реальный путь ниже.
if (String(route?.params?.mode || '').trim().toLowerCase() === 'lab') {
const host = document.createElement('div');
host.style.display = 'contents'; // прозрачная обёртка: lab-экран ведёт себя как прямой потомок
let inner = null;
import('./network/lab.js')
.then((m) => { inner = m.renderNetworkLab({ navigate }); host.append(inner); })
.catch(() => { navigate('network-view'); }); // нет файла (сервер) — на реальный экран
host.cleanup = () => { if (inner && typeof inner.cleanup === 'function') inner.cleanup(); };
return host;
return renderNetworkLab({ navigate });
}
const keepHistory = String(route?.params?.mode || '').trim().toLowerCase() === 'keep-history';
const routeLogin = normalizeLogin(route?.params?.login || '');