Add persisted per-view port anchors and connection-aware border placement
This commit is contained in:
@@ -66,7 +66,14 @@ impl ParseLimits {
|
||||
project
|
||||
.diagrams
|
||||
.values()
|
||||
.map(|d| d.nodes.len().saturating_add(d.routes.len()))
|
||||
.map(|d| {
|
||||
d.nodes.len().saturating_add(d.routes.len()).saturating_add(
|
||||
d.nodes
|
||||
.values()
|
||||
.map(|n| n.port_anchors.len())
|
||||
.sum::<usize>(),
|
||||
)
|
||||
})
|
||||
.sum::<usize>(),
|
||||
)
|
||||
.saturating_add(project.artifact_links.len())
|
||||
@@ -349,6 +356,7 @@ fn reference_field(key: &str) -> bool {
|
||||
| "sa"
|
||||
| "diagram"
|
||||
| "edge"
|
||||
| "port"
|
||||
)
|
||||
}
|
||||
fn enum_field(key: &str) -> bool {
|
||||
@@ -368,6 +376,7 @@ fn enum_field(key: &str) -> bool {
|
||||
| "viewpoint"
|
||||
| "message_kind"
|
||||
| "transition_kind"
|
||||
| "side"
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1663,7 +1672,7 @@ pub(crate) fn resolve_declarations(
|
||||
if !fields.contains_key("element") {
|
||||
return Err(conversion_error("Missing required field 'element'.".into()));
|
||||
}
|
||||
let defaults = serde_json::json!({"element":null,"position":{"x":0.0,"y":0.0},"size":{"width":224.0,"height":94.0},"collapsed":false});
|
||||
let defaults = serde_json::json!({"element":null,"position":{"x":0.0,"y":0.0},"size":{"width":224.0,"height":94.0},"collapsed":false,"port_anchors":[]});
|
||||
let mut record = merge_fields(defaults.as_object().unwrap().clone(), fields)
|
||||
.map_err(&conversion_error)?;
|
||||
header(&mut record, d, false);
|
||||
|
||||
Reference in New Issue
Block a user