rsdeps

Cargo.lock visualizer (mirror)
Log | Files | Refs | README | LICENSE

commit a6a04664c737de63e91295b5f6e091b16be8b894
parent 1e86c03288c62d75f2d4b51ec524a71c109bdec3
Author: Andy Khramtsov <>
Date:   Thu, 28 May 2026 03:17:57 +0300

refactor: some things

Diffstat:
Msrc/deps/pages/home.py | 70++++++++++++++++++++++++++++++++++++++--------------------------------
1 file changed, 38 insertions(+), 32 deletions(-)

diff --git a/src/deps/pages/home.py b/src/deps/pages/home.py @@ -42,34 +42,42 @@ def layout(): className="padded-box vertical-content vertical-content_large-gap", children=[ html.H2("Cargo dependency visualisation"), - html.H3("Cargo toml"), dcc.Store(id=ids.cache_store, storage_type="memory"), - dcc.Textarea( - id=ids.cargo_toml_textarea, - placeholder="Cargo.toml contents", - persistence=True, - ), - dcc.Upload( - id=ids.upload_cargo_toml, - children=[ - dcc.Button("Upload Cargo.toml"), + html.Div( + [ + html.H3("Cargo toml"), + dcc.Textarea( + id=ids.cargo_toml_textarea, + placeholder="Cargo.toml contents", + persistence=True, + ), + dcc.Upload( + id=ids.upload_cargo_toml, + children=[ + dcc.Button("Upload Cargo.toml"), + ], + ), html.Div("Uploaded file name:"), html.Div(id=ids.cargo_toml_filename_display, children="Empty"), - ], - ), - html.H3("Cargo lock"), - dcc.Textarea( - id=ids.cargo_lock_textarea, - placeholder="Cargo.lock contents", - persistence=True, + ] ), - dcc.Upload( - id=ids.upload_cargo_lock, - children=[ - dcc.Button("Upload Cargo.lock"), + html.Div( + [ + html.H3("Cargo lock"), + dcc.Textarea( + id=ids.cargo_lock_textarea, + placeholder="Cargo.lock contents", + persistence=True, + ), + dcc.Upload( + id=ids.upload_cargo_lock, + children=[ + dcc.Button("Upload Cargo.lock"), + ], + ), html.Div("Uploaded file name:"), html.Div(id=ids.cargo_lock_filename_display, children="Empty"), - ], + ] ), CollapseAIO( aio_id=ids.collapse_tables, @@ -102,8 +110,8 @@ def layout(): ), ], ), - dcc.Button(id=ids.generate_button, children="Generate"), html.H3("Dependency graph"), + dcc.Button(id=ids.generate_button, children="Generate"), dcc.Graph( id=ids.dependency_graph, figure={}, @@ -132,8 +140,7 @@ def parse_cargo_lock(contents: str) -> pl.DataFrame: return pl.DataFrame(toml.get("package", [])) -def parse_graph(cargo_toml: pl.DataFrame, cargo_lock: pl.DataFrame) -> dict[str, pl.DataFrame]: - +def files_into_graph(cargo_toml: pl.DataFrame, cargo_lock: pl.DataFrame) -> dict[str, pl.DataFrame]: graph_arcs = ( ( cargo_lock.select( @@ -206,7 +213,7 @@ def parse_graph(cargo_toml: pl.DataFrame, cargo_lock: pl.DataFrame) -> dict[str, ) -def compute_positions(df_graph: dict[str, pl.DataFrame]) -> dict[str, tuple[float, float]]: +def compute_node_positions(df_graph: dict[str, pl.DataFrame]) -> dict[str, tuple[float, float]]: def compute_graph(df_graph: dict[str, pl.DataFrame]) -> pydot.Dot: graph = pydot.Dot(graph_type="digraph", rankdir="LR") for row in df_graph["nodes"].iter_rows(named=True): @@ -294,7 +301,7 @@ def draw_graph_figure( text_colors = [] custom_data = [] for row in df_graph["nodes"].iter_rows(named=True): - node_id = str(row["node_id"]) + node_id = row["node_id"] if node_id in positions: x, y = positions[node_id] node_x.append(x) @@ -334,13 +341,12 @@ def draw_graph_figure( node_trace, ], layout=go.Layout( - title="Hierarchical Dependency Graph (Left-to-Right)", showlegend=False, hovermode="closest", - margin=dict(b=40, l=40, r=40, t=60), + margin=dict(b=20, l=20, r=20, t=20), xaxis=dict(showgrid=False, zeroline=False, showticklabels=False), yaxis=dict(showgrid=False, zeroline=False, showticklabels=False), - plot_bgcolor="#F7FAFC", + plot_bgcolor="#FAFAFA", ), ) @@ -485,8 +491,8 @@ def visualize(inputs, state): cargo_lock = parse_cargo_lock(state["cargo_lock"]) except tomllib.TOMLDecodeError as error: raise PreventUpdate from error - df_graph = parse_graph(cargo_toml, cargo_lock) - positions = compute_positions(df_graph) + df_graph = files_into_graph(cargo_toml, cargo_lock) + positions = compute_node_positions(df_graph) cache = { "positions": positions, "df_graph_nodes": df_graph["nodes"].serialize(format="json"),