Węzły konceptów w grafie linkują do kart HTML w pages/
Panel szczegółów renderuje pole `resource` jako klikalny odnośnik (viz.js:171-183), więc ustawienie tam ścieżki pages/<id>.html daje przejście z grafu do pełnej treści dokumentu — zero zmian w viewerze. Ścieżka jest względna wobec viz.html, więc działa lokalnie i po deployu. Węzły external zachowują swoje URL-e (podmiana leci przed dołożeniem węzłów zewnętrznych). Jeśli koncept miałby własny `resource` we frontmatterze, trafia do danych węzła jako `resource_frontmatter`. Zmiana wyłącznie w window.BUNDLE — pliki .md nietknięte, check_okf.py nadal zielony. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
c4f6cf3f1d
commit
e8163d3800
45
gen_viz.py
45
gen_viz.py
|
|
@ -27,6 +27,12 @@ panel szczegółów renderuje `resource` jako klikalny odnośnik z
|
|||
`target="_blank"` (viz.js:171-183) — to daje "klik otwiera URL w nowej
|
||||
karcie" bez żadnej zmiany w viewerze.
|
||||
|
||||
Węzły konceptów mają w `resource` ścieżkę do karty HTML w `pages/`
|
||||
(generowanej przez gen_pages.py) — ten sam mechanizm panelu szczegółów daje
|
||||
przejście z grafu do pełnej treści dokumentu. Jeśli koncept ma własne pole
|
||||
`resource` we frontmatterze, ląduje ono w danych węzła jako
|
||||
`resource_frontmatter`.
|
||||
|
||||
Skąd brane są adresy — cztery niezależne źródła, każde da się wyłączyć
|
||||
osobno stałą `SOURCES`:
|
||||
|
||||
|
|
@ -81,6 +87,9 @@ except ModuleNotFoundError as exc: # pragma: no cover
|
|||
|
||||
RESERVED = {"index.md", "log.md"}
|
||||
|
||||
# Karty HTML konceptów generowane przez gen_pages.py.
|
||||
PAGES_DIRNAME = "pages"
|
||||
|
||||
# --- konfiguracja linków zewnętrznych ---------------------------------
|
||||
|
||||
SOURCES = ("md-link", "bare-url", "bare-domain", "frontmatter")
|
||||
|
|
@ -272,6 +281,33 @@ def _add_external(graph: dict, concepts: list) -> None:
|
|||
graph["palette"] = {**graph.get("palette", {}), EXTERNAL_TYPE: EXTERNAL_COLOR}
|
||||
|
||||
|
||||
MISSING_PAGES: list[str] = []
|
||||
|
||||
|
||||
def _point_concepts_to_pages(graph: dict) -> None:
|
||||
"""Węzeł koncept → karta HTML w pages/.
|
||||
|
||||
Panel szczegółów renderuje `resource` jako klikalny odnośnik
|
||||
(viz.js:171-183), więc ustawienie tam ścieżki karty daje przejście
|
||||
z grafu do pełnej treści bez żadnej zmiany w viewerze. Ścieżka jest
|
||||
względna wobec viz.html, czyli działa i lokalnie, i po deployu.
|
||||
|
||||
Wywoływane przed _add_external — na tym etapie w grafie są wyłącznie
|
||||
węzły konceptów, więc URL-e węzłów external nie są nadpisywane.
|
||||
"""
|
||||
for node in graph["nodes"]:
|
||||
data = node["data"]
|
||||
original = data.get("resource") or ""
|
||||
if original:
|
||||
# Koncept miał własny `resource` we frontmatterze — nie gubimy go,
|
||||
# tylko przenosimy obok; `resource` węzła wskazuje kartę.
|
||||
data["resource_frontmatter"] = original
|
||||
page = f"{PAGES_DIRNAME}/{data['id']}.html"
|
||||
data["resource"] = page
|
||||
if not (BUNDLE_ROOT / page).is_file():
|
||||
MISSING_PAGES.append(page)
|
||||
|
||||
|
||||
# --- jedyna ingerencja w viewer ---------------------------------------
|
||||
#
|
||||
# Kolor węzła jest sterowany danymi ("background-color": "data(color)"),
|
||||
|
|
@ -358,8 +394,9 @@ def _walk_concepts(bundle_root: Path):
|
|||
|
||||
|
||||
def _build_graph(concepts: list) -> dict:
|
||||
"""Upstream + węzły/krawędzie linków zewnętrznych."""
|
||||
"""Upstream + karty HTML konceptów + węzły/krawędzie linków zewnętrznych."""
|
||||
graph = _upstream_build_graph(concepts)
|
||||
_point_concepts_to_pages(graph)
|
||||
_add_external(graph, concepts)
|
||||
return graph
|
||||
|
||||
|
|
@ -380,6 +417,12 @@ def main() -> int:
|
|||
f" węzły: {stats['concepts']} konceptów + {external} external, "
|
||||
f"krawędzie: {stats['edges']}, rozmiar: {stats['bytes'] / 1024:.1f} KiB"
|
||||
)
|
||||
print(f" koncepty linkują do kart w {PAGES_DIRNAME}/ (pole resource)")
|
||||
if MISSING_PAGES:
|
||||
print(
|
||||
f" UWAGA: brakuje {len(MISSING_PAGES)} kart — uruchom "
|
||||
f"gen_pages.py: {', '.join(MISSING_PAGES)}"
|
||||
)
|
||||
print()
|
||||
print(f"Linki zewnętrzne, które weszły do grafu ({external}):")
|
||||
for url, origins, sources in REPORT["kept"]:
|
||||
|
|
|
|||
Loading…
Reference in a new issue