SHA256
Связи (pixel-web): режим «Интерактивная паутина» — раскрытие веток без смены центра
Этап 1 mind-map (только лаборатория, deep-режим «Вселенная»): - Отмена прыжков в центр: тап по периферийному узлу больше НЕ перецентрирует — он остаётся на орбите, а из него раскрывается/сворачивается (toggle) его ветка дальних связей НА МЕСТЕ. - Глобальный сброс: тап по корню (Иван) рекурсивно сворачивает все раскрытые ветки (collapseAll). - Глубина скрыта по умолчанию; ветка плавно выплывает (expandP, ~400мс) и втягивается по повтору. - Мерцающие звёзды 3-го уровня (CSS box-shadow/brightness, десинхрон по узлам) — «созвездие». - Тактильный отклик navigator.vibrate(): клик при нажатии, серия импульсов на bloom-раскрытие, щелчок «гитарной струны» при сильном натяжении нитей свайпом. - Движок: API toggleExpand/collapseAll; убрана press/hover-логика раскрытия (заменена тапом). Ветка экспериментальная (отдельно от pixel-08.06/PR), бамп client.version → 1.2.143. Ещё не сделано (следующие этапы): collision-расталкивание веток, камера-доводчик, zoom, синхро-пульс линий к сияющим. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -188,12 +188,22 @@ export function renderNetworkLab({ navigate }) {
|
||||
// тап по узлу — переключаем карту на сеть выбранного человека (или фейкового дальнего узла);
|
||||
// в режиме «Вселенная» вокруг нового центра процедурно генерится дальняя орбита.
|
||||
onNodeTap: (node) => {
|
||||
const from = centerLogin; // предыдущий фокус → трек прохождения
|
||||
if (deepMode) {
|
||||
// режим «Интерактивная паутина»: НЕ меняем центр — раскрываем/сворачиваем ветку узла на месте
|
||||
graph.toggleExpand(node);
|
||||
return;
|
||||
}
|
||||
// обычный режим: перецентрирование на выбранного человека (+ трек прохождения)
|
||||
const from = centerLogin;
|
||||
centerLogin = node.login || node.id;
|
||||
graph.setModel(buildLabModel(centerLogin, deepMode, from));
|
||||
if (activeFilter !== 'all') graph.setFilter(FILTERS[activeFilter].pred);
|
||||
},
|
||||
onCenterTap: (node) => window.alert(`Профиль: ${node.name || node.login || node.id}`),
|
||||
onCenterTap: (node) => {
|
||||
// в паутине тап по корню (Ивану) — глобальный сброс: свернуть все раскрытые ветки
|
||||
if (deepMode) { graph.collapseAll(); return; }
|
||||
window.alert(`Профиль: ${node.name || node.login || node.id}`);
|
||||
},
|
||||
onNodeLongPress: (node, point) => openNodeMenu({
|
||||
login: node.name || node.login || node.id,
|
||||
relationType: node.relationType,
|
||||
|
||||
Reference in New Issue
Block a user