SHA256
Связи (13.06): орбы по референсу, линии по категории, постоянная вселенная
Орбы: - материал «хрусталь»: чистое лицо (виньетка 0.5→0.22), диффузный блик окна вместо «капли» (+мягкий blur sf), стекло прозрачнее (тело 0.38→0.3), полупрозрачная преломляющая кромка (blur + opacity 0.25→0.2). - размер +11.5% (node-dot 52→58px); единый ORB_R=29 как источник радиуса. - убран значок * у общих узлов (логика is-common цела). Линии: - цвет по категории на ВСЕХ рёбрах; плазма только сияющим. - общий узел наследует сияние исходного человека (не серый). - контакт линий ровно на кромке сферы орба (ORB_R), без зазора, все уровни. Навигация: - констелляция (паутина 2-3 уровней) — постоянный режим; кнопка «Вселенная» убрана; Семья/Друзья/Сияющие остаются фильтрами. Чистка осиротевшего CSS. Версия 1.2.161. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -46,7 +46,7 @@ function helpText() {
|
||||
'• Тап по центральному узлу — здесь открылся бы профиль.',
|
||||
'• Долгое нажатие — контекстное меню (в реальном пути «Связи»).',
|
||||
'• Чипы под шапкой — фильтры слоёв: Все / Семья / Друзья / Сияющие.',
|
||||
'• Чип «Вселенная» — режим «Интерактивная паутина» (глубина 2-3 уровней, фейковые связи).',
|
||||
'• Вселенная — постоянный режим «Интерактивная паутина» (глубина 2-3 уровней, фейковые связи).',
|
||||
' Наведи мышь/палец на узел — его связи временно выплывают (превью). КЛИК по узлу — «умный',
|
||||
' наезд»: камера летит и центрирует его, он вырастает, друзья раскрываются крупно вокруг,',
|
||||
' путь назад к Ивану горит нитью, остальное затемняется. Клик по нему ещё раз — всплыть.',
|
||||
@@ -99,12 +99,13 @@ function addDeepLevels(model) {
|
||||
for (let i = 0; i < k2; i += 1) {
|
||||
const id2 = `${p.id}__d2_${i}`;
|
||||
const ang2 = (i / k2) * Math.PI * 2 + seed01(p.id) * 0.6;
|
||||
// i===0 + есть общий → подставляем узнаваемого друга Ивана как ОБЩУЮ связь (золотой ободок ★)
|
||||
// i===0 + есть общий → подставляем узнаваемого друга Ивана как ОБЩУЮ связь (золотой ободок ★).
|
||||
// Сияние НАСЛЕДУЕМ от исходного человека: если он сияющий — связь к нему тоже плазма (не серая).
|
||||
if (i === 0 && common) {
|
||||
extra.push({
|
||||
id: id2, login: id2, name: common.name || common.login,
|
||||
avatar: null, photo: common.photo || null, relationType: common.relationType || 'friend',
|
||||
strength: 0.5, shining: false, tier: 2, parentId: String(p.id), deepAngle: ang2, common: true,
|
||||
strength: 0.5, shining: Boolean(common.shining), tier: 2, parentId: String(p.id), deepAngle: ang2, common: true,
|
||||
});
|
||||
continue;
|
||||
}
|
||||
@@ -181,7 +182,8 @@ export function renderNetworkLab({ navigate }) {
|
||||
header.classList.add('network-header-overlay');
|
||||
|
||||
let centerLogin = START_LOGIN;
|
||||
let deepMode = false;
|
||||
// Констелляция (паутина 2-3 уровней) — ПОСТОЯННЫЙ режим по умолчанию (чип «Вселенная» убран).
|
||||
let deepMode = true;
|
||||
|
||||
// Состояние активного слоя (как в network-view): фокус всегда виден.
|
||||
let activeFilter = 'all';
|
||||
@@ -259,18 +261,8 @@ export function renderNetworkLab({ navigate }) {
|
||||
filterChips[key] = chip;
|
||||
filterBar.append(chip);
|
||||
});
|
||||
// Переключатель прототипа «Вселенная» (глубина 2-3 уровней) — отдельный чип.
|
||||
const deepChip = document.createElement('button');
|
||||
deepChip.type = 'button';
|
||||
deepChip.className = 'fg-filter-chip fg-deep-chip';
|
||||
deepChip.textContent = '🌌 Вселенная';
|
||||
deepChip.addEventListener('click', () => {
|
||||
deepMode = !deepMode;
|
||||
deepChip.classList.toggle('is-active', deepMode);
|
||||
graph.setModel(buildLabModel(centerLogin, deepMode));
|
||||
if (activeFilter !== 'all') graph.setFilter(FILTERS[activeFilter].pred);
|
||||
});
|
||||
filterBar.append(deepChip);
|
||||
// Чип «Вселенная» убран: констелляция — постоянный режим (deepMode=true по умолчанию).
|
||||
// Семья/Друзья/Сияющие остаются фильтрами поверх постоянной вселенной (см. filterBar выше).
|
||||
stage.append(filterBar);
|
||||
|
||||
// --- Поиск + телепорт камеры: ввёл имя → камера летит к узлу (dive в «Вселенной», иначе перецентр) ---
|
||||
@@ -329,7 +321,7 @@ export function renderNetworkLab({ navigate }) {
|
||||
// Автопроверки: ТОЛЬКО при ?fgtest — экспонируем граф и прогоняем self-test (результат в консоль).
|
||||
if (typeof window !== 'undefined' && String(location.search).includes('fgtest')) {
|
||||
window.__fg = graph;
|
||||
import('./selftest.js').then((m) => m.runNetworkSelfTest(graph, deepChip)).catch((e) => console.error('[fg-selftest] не загрузился', e));
|
||||
import('./selftest.js').then((m) => m.runNetworkSelfTest(graph, null)).catch((e) => console.error('[fg-selftest] не загрузился', e));
|
||||
}
|
||||
|
||||
screen.cleanup = () => {
|
||||
|
||||
Reference in New Issue
Block a user