You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Visual canvas: connect specific attributes (columns), not just whole entities #5
In the visual canvas, relationships are drawn between whole entity boxes. It
is not visible which columns are actually joined. With more than one
relationship between two entities, or with composite keys, the diagram no
longer says anything useful.
What you have in mind
Expected behaviour
Each relationship line is anchored to the concrete attribute rows on both
sides (orders.customer_id -> customer.customer_id), not to the entity
header.
Multiple relationships between the same pair of entities are drawn as
separate lines, each on its own attribute row.
Composite keys are drawn as one relationship covering the whole column set
(or as grouped lines), not as unrelated single lines.
Hovering an attribute highlights the relationships it takes part in and dims
the rest; hovering a line highlights both endpoint attributes.
Ideally: drawing a line from one attribute to another creates the
relationship in the model (drag from column to column).
Actual behaviour
Lines connect entity boxes only. The attribute pairing has to be looked up in
the YAML files.
Notes
Depends on attribute-level relationship metadata in the model — see the
primary key / foreign key issue (role: foreign_key + references: {entity, attribute}). Without that metadata there is nothing
to anchor the lines to.
For entities with many attributes it helps to keep the referenced attributes
visible (pin key/FK columns to the top) when the box is collapsed, so the
endpoints stay meaningful.
Relationships in the ER canvas now anchor to concrete attribute rows instead of entity boxes — verified end-to-end in the browser against the ibor demo. All of the issue's asks landed:
Column-anchored lines — price.instrument_id → instrument.instrument_id, instrument.counterparty_id → counterparty.counterparty_id, etc., each leaving/entering the correct row (confirmed visually).
Multiple relationships between the same pair separate onto their own rows via distinct per-attribute handles.
Composite keys draw as one line anchored to the first member with a (N) count (IDEF1X-style), not N overlapping crow's-feet.
Hover highlighting — hovering instrument.counterparty_id lit up just that relationship and dimmed everything else; hovering an edge emphasizes both endpoint rows (confirmed).
Drag column→column prefills the relationship modal with both attributes, reusing the existing create_relationship payload.
Key/FK pinning — endpoint attributes float below the business keys so anchors stay visible.
Unmapped relationships cleanly fall back to header-to-header (nothing regresses).
Activity
dbose commentedon Sep 10, 2026
Relationships in the ER canvas now anchor to concrete attribute rows instead of entity boxes — verified end-to-end in the browser against the ibor demo. All of the issue's asks landed:
Column-anchored lines — price.instrument_id → instrument.instrument_id, instrument.counterparty_id → counterparty.counterparty_id, etc., each leaving/entering the correct row (confirmed visually).
Multiple relationships between the same pair separate onto their own rows via distinct per-attribute handles.
Composite keys draw as one line anchored to the first member with a (N) count (IDEF1X-style), not N overlapping crow's-feet.
Hover highlighting — hovering instrument.counterparty_id lit up just that relationship and dimmed everything else; hovering an edge emphasizes both endpoint rows (confirmed).
Drag column→column prefills the relationship modal with both attributes, reusing the existing create_relationship payload.
Key/FK pinning — endpoint attributes float below the business keys so anchors stay visible.
Unmapped relationships cleanly fall back to header-to-header (nothing regresses).
Merge pull request #12 from dbose/feat-model-import-export