diff options
| author | MtBntChvn <[email protected]> | 2026-02-18 15:16:50 +0000 |
|---|---|---|
| committer | MtBntChvn <[email protected]> | 2026-02-18 15:16:50 +0000 |
| commit | 71044b95cd44c7b7fbbe4dfeb182c32c29deb685 (patch) | |
| tree | e7231945635e27490fa113ced45a629f1992bee0 /src/zenserver/frontend/html/zen.css | |
| parent | add selective request logging support to http.sys (#762) (diff) | |
| download | zen-71044b95cd44c7b7fbbe4dfeb182c32c29deb685.tar.xz zen-71044b95cd44c7b7fbbe4dfeb182c32c29deb685.zip | |
add interactive dependency graph view to dashboard
Canvas-based force-directed graph for exploring package dependencies.
Nodes show short names with full path on hover tooltip (with size/dep info).
Supports pan, zoom, node drag, click-to-expand, double-click to promote
nodes to root, right-click to demote. Includes side panel with browsable
entry tree and filter. Linked from project page and entry detail page.
Diffstat (limited to 'src/zenserver/frontend/html/zen.css')
| -rw-r--r-- | src/zenserver/frontend/html/zen.css | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/zenserver/frontend/html/zen.css b/src/zenserver/frontend/html/zen.css index cc53c0519..cc9cd30e8 100644 --- a/src/zenserver/frontend/html/zen.css +++ b/src/zenserver/frontend/html/zen.css @@ -503,3 +503,100 @@ html:has(#map) { } } } + +/* graph -------------------------------------------------------------------- */ + +html:has(#graph) { + height: 100%; + body, #container, #graph { + height: 100%; + } +} +#graph { + #graph_view { + position: relative; + display: flex; + gap: 0; + canvas { + flex: 1; + min-width: 0; + border: 1px solid var(--theme_g2); + cursor: grab; + } + canvas:active { + cursor: grabbing; + } + } + #graph_entries { + width: 22em; + border: 1px solid var(--theme_g2); + border-left: none; + display: flex; + flex-direction: column; + overflow: hidden; + > input { + width: 100%; + border: none; + border-bottom: 1px solid var(--theme_g2); + padding: 0.4em 0.6em; + font-size: 0.9em; + } + #graph_entries_list { + overflow-y: auto; + flex: 1; + > div { + padding: 0.2em 0.6em; + cursor: pointer; + font-size: 0.85em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + > div:hover { + background-color: var(--theme_p4); + } + .graph_entry_dir { + font-weight: bold; + } + .graph_entry_leaf { + color: var(--theme_ln); + } + .graph_entries_more { + color: var(--theme_g1); + cursor: default; + } + } + } + #graph_search_results { + position: absolute; + z-index: 1; + background-color: var(--theme_g4); + border: 1px solid var(--theme_g2); + max-height: 20em; + overflow-y: auto; + width: 30em; + > div { + padding: 0.3em 0.75em; + cursor: pointer; + } + > div:hover { + background-color: var(--theme_p4); + } + } + #graph_legend { + display: flex; + gap: 1.5em; + margin-top: 0.5em; + font-size: 0.85em; + > div { + display: flex; + align-items: center; + gap: 0.3em; + } + .legend_swatch { + width: 1.5em; + height: 0.3em; + display: inline-block; + } + } +} |