diff --git a/gen_viz.py b/gen_viz.py index 0124d46..41f37f8 100644 --- a/gen_viz.py +++ b/gen_viz.py @@ -272,6 +272,58 @@ def _add_external(graph: dict, concepts: list) -> None: 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 ----------------------------------- _upstream_extract_links = G._extract_links diff --git a/viz.html b/viz.html index 02ec419..414de22 100644 --- a/viz.html +++ b/viz.html @@ -276,6 +276,18 @@ window.BUNDLE = {"nodes": [{"data": {"id": "oferty/alpenparks-rehrenberg", "labe "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]", style: {