mirror of
https://github.com/logseq/logseq.git
synced 2026-05-17 09:22:21 +00:00
* feat(graph): rebuild global graph view with Pixi Summary: - Replace /graph route with a new Pixi-based global graph implementation in ClojureScript. - Build graph data from db-worker only (no UI DB writeback) and default to tags+objects with a toggle for all pages. - Add fast scene rendering for large graphs with indexed hit-testing, zoom/pan, node dragging, and click/shift+click node actions. - Introduce dynamic label management (zoom hysteresis, viewport culling, overlap control, hover-emphasis) and fix hook lifecycle cleanup issues. - Refresh graph UI styling to full-container layout, dot-first settings control, and Logseq button usage. - Add/expand tests for global graph modes, node actions, and Pixi label/visibility logic. - Update graph-related dependencies/lockfile as part of the new implementation. * enhance(graph): improve drag exploration and label visibility - Dragging a node now pulls connected nodes with depth-based weights for easier structure exploration. - Labels are rendered only for currently visible node dots; hover no longer reveals hidden-node titles. - Hovered node title remains promoted in foreground while respecting visibility constraints. - Add logic/test coverage for connected drag weights and updated label text behavior. * enhance(graph): use d3 force layout Summary: - Move Graph V2 node layout into graph pixi logic. - Use d3-force link, charge, center, collision, and y forces instead of the hand-written ring/spiral layout. - Add coverage that linked graph nodes settle closer than an unlinked island. Dependency: - Verified d3-force is already latest at 3.0.0. Tests: - bb dev:test -v frontend.extensions.graph-pixi-logic-test - bb dev:test -v frontend.common.graph-view-v2-test - pnpm install --frozen-lockfile --lockfile-only * fix: graph view interactions * enhance: speed up large graph view * enhance: speed up tags graph * enhance: speed up tags layout * enhance: bound tags force layout * enhance: speed up graph opening * fix: keep graph objects visible when zoomed out * fix: resize graph with sidebars * enhance: select graph nodes * fix: refine graph selection controls * support icons * fix: sharpen graph node icons * enhance(graph): update graph v2 settings * fix: re-render graph when theme changes * enhance(graph): remove legacy graph view * fix: typo * fix: improve graph view * test: cover graph view improvements * enhance: improve graph view * test: cover graph time travel behavior * enhance: refine graph time travel * test: cover graph layout controls * enhance: add graph layout controls * test: cover graph highlight controls * fix: refine graph highlight controls * test: cover edge label alignment * fix: align graph edge labels * test: keep graph lines visible on highlight * fix: keep graph lines visible on highlight * fix: show graph lines by default * test: filter graph lines on highlight * fix: filter graph lines on highlight * test: keep graph depth incremental * fix: update graph depth incrementally * test: cover graph label link occlusion * fix: occlude graph links behind labels * test: cover graph edge visibility defaults * fix: smooth graph edges on highlight * test: cover graph arrow toggle * fix: toggle graph arrows * test: cover reciprocal graph edge offsets * fix: separate reciprocal graph edges * test: cover duplicate graph edge runs * fix: dedupe graph edge render runs * test: cover graph tag clusters * enhance: cluster graph tags layout * test: cover graph tag cluster colors * fix: color graph tag clusters by title * test: cover subdued graph node colors * fix: mute graph node colors * feat: grid layout * add more options * enhance(graph): drill into tags on zoom * map-like navigation * mod+click to preview node * edge enhancements * more tweaks * fix: block preview * enhance(graph): speed up large graph layout * fix: improve graph mode switching ux * fix: speed up graph view switching * fix: optimize large all-pages graph render * fix: speed up graph data build * fix: collapse graph tag settings on mode switch * enhance: refine graph panel width * fix: improve graph zoom performance * fix: satisfy graph lint * fix: open graph nodes by uuid --------- Co-authored-by: rcmerci <rcmerci@gmail.com>
21 lines
554 B
Clojure
21 lines
554 B
Clojure
(ns frontend.handler.graph
|
|
"Provides util handler fns for graph view"
|
|
(:require [frontend.state :as state]
|
|
[frontend.storage :as storage]))
|
|
|
|
(defn settle-metadata-to-local!
|
|
[m]
|
|
(when-let [repo (state/get-current-repo)]
|
|
(try
|
|
(let [k :ls-graphs-metadata
|
|
ret (or (storage/get k) {})
|
|
ret (update ret repo merge m {:_v (js/Date.now)})]
|
|
(storage/set k ret))
|
|
(catch js/Error e
|
|
(js/console.warn e)))))
|
|
|
|
(defn get-metadata-local
|
|
[]
|
|
(let [k :ls-graphs-metadata]
|
|
(storage/get k)))
|