Skip to content

Commit 9e87106

Browse files
fix: collapsed nodes show only table count, not redundant name
Since collapsed nodes are now inside clusters that display the schema/module name, the node label only needs to show "(N tables)". Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 4d6b7ac commit 9e87106

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

src/datajoint/diagram.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,7 @@ def make_dot(self):
765765
node_data = graph.nodes.get(f'"{name}"', {})
766766
if node_data.get("collapsed"):
767767
table_count = node_data.get("table_count", 0)
768-
label = f"{name}\\n({table_count} tables)" if table_count != 1 else f"{name}\\n(1 table)"
768+
label = f"({table_count} tables)" if table_count != 1 else "(1 table)"
769769
node.set_label(label)
770770
node.set_tooltip(f"Collapsed schema: {table_count} tables")
771771
else:
@@ -951,43 +951,43 @@ def make_mermaid(self) -> str:
951951
None: "",
952952
}
953953

954-
# Group nodes by schema into subgraphs (only non-collapsed nodes)
954+
# Group nodes by schema into subgraphs (including collapsed nodes)
955955
schemas = {}
956-
collapsed_nodes = []
957956
for node, data in graph.nodes(data=True):
958957
if data.get("collapsed"):
959-
collapsed_nodes.append((node, data))
958+
# Collapsed nodes use their schema_name attribute
959+
schema_name = data.get("schema_name")
960960
else:
961961
schema_name = schema_map.get(node)
962-
if schema_name:
963-
if schema_name not in schemas:
964-
schemas[schema_name] = []
965-
schemas[schema_name].append((node, data))
966-
967-
# Add collapsed nodes (not in subgraphs)
968-
for node, data in collapsed_nodes:
969-
safe_id = node.replace(".", "_").replace(" ", "_")
970-
table_count = data.get("table_count", 0)
971-
count_text = f"{table_count} tables" if table_count != 1 else "1 table"
972-
lines.append(f" {safe_id}[[\"{node}<br/>({count_text})\"]]:::collapsed")
962+
if schema_name:
963+
if schema_name not in schemas:
964+
schemas[schema_name] = []
965+
schemas[schema_name].append((node, data))
973966

974967
# Add nodes grouped by schema subgraphs
975968
for schema_name, nodes in schemas.items():
976969
label = cluster_labels.get(schema_name, schema_name)
977970
lines.append(f" subgraph {label}")
978971
for node, data in nodes:
979-
tier = data.get("node_type")
980-
left, right = shape_map.get(tier, ("[", "]"))
981-
cls = tier_class.get(tier, "")
982972
safe_id = node.replace(".", "_").replace(" ", "_")
983-
# Strip module prefix from display name if it matches the cluster label
984-
display_name = node
985-
if "." in node:
986-
prefix = node.rsplit(".", 1)[0]
987-
if prefix == label:
988-
display_name = node.rsplit(".", 1)[1]
989-
class_suffix = f":::{cls}" if cls else ""
990-
lines.append(f" {safe_id}{left}{display_name}{right}{class_suffix}")
973+
if data.get("collapsed"):
974+
# Collapsed node - show only table count
975+
table_count = data.get("table_count", 0)
976+
count_text = f"{table_count} tables" if table_count != 1 else "1 table"
977+
lines.append(f" {safe_id}[[\"({count_text})\"]]:::collapsed")
978+
else:
979+
# Regular node
980+
tier = data.get("node_type")
981+
left, right = shape_map.get(tier, ("[", "]"))
982+
cls = tier_class.get(tier, "")
983+
# Strip module prefix from display name if it matches the cluster label
984+
display_name = node
985+
if "." in node:
986+
prefix = node.rsplit(".", 1)[0]
987+
if prefix == label:
988+
display_name = node.rsplit(".", 1)[1]
989+
class_suffix = f":::{cls}" if cls else ""
990+
lines.append(f" {safe_id}{left}{display_name}{right}{class_suffix}")
991991
lines.append(" end")
992992

993993
lines.append("")

0 commit comments

Comments
 (0)