Verify route-only Layout reset history and format candidate

This commit is contained in:
2026-09-24 18:59:42 -07:00
parent a5c60af385
commit f0d64b531a
3 changed files with 371 additions and 80 deletions
+13 -7
View File
@@ -956,12 +956,17 @@ fn layout(p: &mut Project, diagram: Id) -> Result<(), ModelError> {
// Batch this is the staged input, not an independently validated prefix.
let view = crate::projection::project_view(p, diagram);
let visible_nodes: BTreeSet<_> = view.nodes.iter().map(|node| node.id).collect();
let reset_routes: BTreeSet<_> = view.edges.iter().filter_map(|edge| {
let owners = crate::projection::edge_endpoint_placements(p, d, edge.id)?;
(owners == (edge.source, edge.target)
&& visible_nodes.contains(&edge.source)
&& visible_nodes.contains(&edge.target)).then_some(edge.id)
}).collect();
let reset_routes: BTreeSet<_> = view
.edges
.iter()
.filter_map(|edge| {
let owners = crate::projection::edge_endpoint_placements(p, d, edge.id)?;
(owners == (edge.source, edge.target)
&& visible_nodes.contains(&edge.source)
&& visible_nodes.contains(&edge.target))
.then_some(edge.id)
})
.collect();
let parents = crate::projection::parents(p, d);
let mut children: BTreeMap<Option<Id>, Vec<Id>> = BTreeMap::new();
for (id, parent) in &parents {
@@ -1054,7 +1059,8 @@ fn layout(p: &mut Project, diagram: Id) -> Result<(), ModelError> {
}
node
};
let edges: BTreeSet<_> = view.edges
let edges: BTreeSet<_> = view
.edges
.iter()
.filter_map(|edge| {
let source = root_of(edge.source);