Viewer: jedna reguła stylu dla węzłów typu "external"
Jedyna ingerencja w logikę viewera w tym repo, wydzielona do osobnego
commita zgodnie z ustaleniem.
Kolor węzła jest sterowany danymi ("background-color": "data(color)"),
więc odróżnienie kolorem załatwiła sama warstwa danych (poprzedni commit,
zero zmian w viewerze). Kształt już nie — cytoscape'owa tablica stylów
siedzi w viz.js. Dokładamy do niej DOKŁADNIE jedną regułę:
selector: 'node[type = "external"]'
shape: round-diamond, border-style: dotted, font-size: 10
To ta sama konwencja co istniejące reguły node[?stale] i
node[status = "deprecated"] — selektor po polu danych. Reguła jest
wstawiana przed node[?stale], czyli przed node:selected, więc
podświetlenie zaznaczenia nadal wygrywa.
Podmiana dzieje się w locie, na stringu wstawianym do viz.html; plik
viz.js w repo upstream pozostaje nietknięty. Jeśli upstream zmieni
kotwicę, gen_viz.py przerywa z błędem zamiast po cichu wygenerować
viewer bez reguły.
Zweryfikowane: viz.js w viz.html == upstream + ta jedna reguła (diff
bajtowy równy jej długości), viz.css nadal bajt w bajt, składnia
osadzonego JS-a sprawdzona node --check.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c1c53d1b6c
commit
8cca477153
52
gen_viz.py
52
gen_viz.py
|
|
@ -272,6 +272,58 @@ def _add_external(graph: dict, concepts: list) -> None:
|
||||||
graph["palette"] = {**graph.get("palette", {}), EXTERNAL_TYPE: EXTERNAL_COLOR}
|
graph["palette"] = {**graph.get("palette", {}), EXTERNAL_TYPE: EXTERNAL_COLOR}
|
||||||
|
|
||||||
|
|
||||||
|
# --- jedyna ingerencja w viewer ---------------------------------------
|
||||||
|
#
|
||||||
|
# Kolor węzła jest sterowany danymi ("background-color": "data(color)"),
|
||||||
|
# więc odróżnienie kolorem nie wymaga tykania viewera. Kształt już tak:
|
||||||
|
# cytoscape'owa tablica stylów siedzi w viz.js. Dokładamy do niej DOKŁADNIE
|
||||||
|
# jedną regułę dla typu "external", analogicznie do istniejących reguł
|
||||||
|
# `node[?stale]` i `node[status = "deprecated"]` — ta sama konwencja
|
||||||
|
# selektora po polu danych. Reguła ląduje przed `node[?stale]`, czyli przed
|
||||||
|
# `node:selected`, więc podświetlenie zaznaczenia nadal wygrywa.
|
||||||
|
#
|
||||||
|
# Plik viz.js w repo upstream pozostaje nietknięty — podmiana dzieje się
|
||||||
|
# w locie, na stringu wstawianym do viz.html.
|
||||||
|
|
||||||
|
_EXTERNAL_STYLE_ANCHOR = ' {\n selector: "node[?stale]",'
|
||||||
|
|
||||||
|
_EXTERNAL_STYLE_RULE = """ {
|
||||||
|
// DODANE (gen_viz.py): węzły linków zewnętrznych. Inny kształt niż
|
||||||
|
// koncepty, żeby jedno i drugie dało się rozróżnić bez czytania
|
||||||
|
// etykiet i niezależnie od koloru.
|
||||||
|
selector: 'node[type = "external"]',
|
||||||
|
style: {
|
||||||
|
"shape": "round-diamond",
|
||||||
|
"border-style": "dotted",
|
||||||
|
"font-size": 10,
|
||||||
|
"color": "#0f766e",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"""
|
||||||
|
|
||||||
|
_upstream_load_asset = G._load_asset
|
||||||
|
|
||||||
|
|
||||||
|
def _load_asset(name: str) -> str:
|
||||||
|
"""Upstreamowy asset; do viz.js dokłada regułę stylu dla "external"."""
|
||||||
|
asset = _upstream_load_asset(name)
|
||||||
|
if name != "viz.js":
|
||||||
|
return asset
|
||||||
|
if _EXTERNAL_STYLE_ANCHOR not in asset:
|
||||||
|
raise SystemExit(
|
||||||
|
"gen_viz.py: nie znaleziono kotwicy stylu w viz.js — upstream "
|
||||||
|
"się zmienił, popraw _EXTERNAL_STYLE_ANCHOR przed regeneracją."
|
||||||
|
)
|
||||||
|
return asset.replace(
|
||||||
|
_EXTERNAL_STYLE_ANCHOR,
|
||||||
|
_EXTERNAL_STYLE_RULE + _EXTERNAL_STYLE_ANCHOR,
|
||||||
|
1,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
G._load_asset = _load_asset
|
||||||
|
|
||||||
|
|
||||||
# --- łatki na generator upstreamowy -----------------------------------
|
# --- łatki na generator upstreamowy -----------------------------------
|
||||||
|
|
||||||
_upstream_extract_links = G._extract_links
|
_upstream_extract_links = G._extract_links
|
||||||
|
|
|
||||||
12
viz.html
12
viz.html
|
|
@ -276,6 +276,18 @@ window.BUNDLE = {"nodes": [{"data": {"id": "oferty/alpenparks-rehrenberg", "labe
|
||||||
"border-color": "#0f172a",
|
"border-color": "#0f172a",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
// DODANE (gen_viz.py): węzły linków zewnętrznych. Inny kształt niż
|
||||||
|
// koncepty, żeby jedno i drugie dało się rozróżnić bez czytania
|
||||||
|
// etykiet i niezależnie od koloru.
|
||||||
|
selector: 'node[type = "external"]',
|
||||||
|
style: {
|
||||||
|
"shape": "round-diamond",
|
||||||
|
"border-style": "dotted",
|
||||||
|
"font-size": 10,
|
||||||
|
"color": "#0f766e",
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
selector: "node[?stale]",
|
selector: "node[?stale]",
|
||||||
style: {
|
style: {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue