Split geometry serialization to stay within macro recursion depth
This commit is contained in:
@@ -364,6 +364,24 @@ fn metrics(project: &Project, diagram: Id) -> Value {
|
||||
.map(move |w| json!({"edge":e.id,"warning":format!("{w:?}")}))
|
||||
})
|
||||
.collect();
|
||||
let constraints: Vec<_> = edges.iter().map(|e|json!({"id":e.id,"effective_pins":e.pins,
|
||||
"pin_fractions":e.pin_fractions,"custom_suspended":e.custom_suspended,
|
||||
"actual_endpoint_owners":projection::edge_endpoint_placements(project,&project.diagrams[&diagram],e.id)})).collect();
|
||||
let route_endpoints: Vec<_> = edges
|
||||
.iter()
|
||||
.map(|e| {
|
||||
json!({"id":e.id,
|
||||
"source_owner":definitions[&e.id].source,"target_owner":definitions[&e.id].target,
|
||||
"source":e.points.first(),"target":e.points.last()})
|
||||
})
|
||||
.collect();
|
||||
let routed_edges: Vec<_> = edges
|
||||
.iter()
|
||||
.map(|e| {
|
||||
json!({"id":e.id,"points":e.points,"label":{
|
||||
"text":e.label.text,"position":e.label.bounds.position,"size":e.label.bounds.size}})
|
||||
})
|
||||
.collect();
|
||||
json!({
|
||||
"nodes":view.nodes.len(),"edges":edges.len(),"ports":view.ports.len(),
|
||||
"proper_crossings":crossings.len(),"crossing_details":crossings,
|
||||
@@ -385,14 +403,7 @@ fn metrics(project: &Project, diagram: Id) -> Value {
|
||||
"route_bends":bends,"route_length":total_length,
|
||||
"projected_nodes":view.nodes,"projected_ports":view.ports,
|
||||
"projected_edges":view.edges,
|
||||
"routing_constraints":edges.iter().map(|e|json!({"id":e.id,"effective_pins":e.pins,
|
||||
"pin_fractions":e.pin_fractions,"custom_suspended":e.custom_suspended,
|
||||
"actual_endpoint_owners":projection::edge_endpoint_placements(project,&project.diagrams[&diagram],e.id)})).collect::<Vec<_>>(),
|
||||
"route_endpoints":edges.iter().map(|e|json!({"id":e.id,
|
||||
"source_owner":definitions[&e.id].source,"target_owner":definitions[&e.id].target,
|
||||
"source":e.points.first(),"target":e.points.last()})).collect::<Vec<_>>(),
|
||||
"routed_edges":edges.iter().map(|e|json!({"id":e.id,"points":e.points,"label":{
|
||||
"text":e.label.text,"position":e.label.bounds.position,"size":e.label.bounds.size}})).collect::<Vec<_>>()
|
||||
"routing_constraints":constraints,"route_endpoints":route_endpoints,"routed_edges":routed_edges
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user