arrowheads should account for curve
Proposal: Easy to write crow's foot.
ex. a -- b c <- d e -> f g <-> h
w >0--1< x y 10--11 z
>0 / 0< : crows-foot-many-optional (source / target) zero or more >1 / 1< : crows-foot-many-required (source / target) 1 or more 11 : crows-foot-one-required (source & target) 1 and only 1(exactly 1) 10 / 01 : shape: crows-foot-one-optional (source / target) zero or 1
@bo-ku-ra that does seem like a good shorthand notation to represent crows feet!
However, I think that even the best notation would look too confusing. In this case, I'd favor the readability of being explicit over the shorter syntax. The current notation is minimal to specify the existence of arrowheads, and then styles dictate arrowhead shapes.
IMO, shorthands like this or (a) for circle shape, or <a> for diamond shape, takes a simple language with few rules to a language where you need a reference guide to remember what's what. The author can go a little faster for that session they have it in their head, but the time is paid back and more from people reading it and the author revisiting and forgetting what 1< stands for.
However, I think that even the best notation would look too confusing. In this case, I'd favor the readability of being explicit over the shorter syntax. The current notation is minimal to specify the existence of arrowheads, and then styles dictate arrowhead shapes.
IMO, shorthands like this or
(a)for circle shape, or<a>for diamond shape, takes a simple language with few rules to a language where you need a reference guide to remember what's what. The author can go a little faster for that session they have it in their head, but the time is paid back and more from people reading it and the author revisiting and forgetting what1<stands for.
I know, this issue is about the curve, but I was just thinking... Crow foot notation, is a graphical representation of the relationship between two items. we are not saying there is a relationship, but there is a specific kind of relationship. It has more semantic value. What if we will give this semantic value DSL this kind of syntax, which reflects the graphical representation?
>|-or-|<many required>o-or-o<many optional|o-or-o|one optional||-or-||one required
This seems to have slightly better readability than -1<because it is visually similar, but as a bonus, the d2 language has more semantic meaning.
It can go even further:
<>-or-<>diamondo--or--ocircle
This is the closest to my question out of all currently open issues: Is there a way to make a connection not cross a shape between source and target, i.e., go around it, be it curved or multi-segment?
@amb007 That is one of the primary goals of all layout engines. Can you post an example of where it fails?
@amb007 That is one of the primary goals of all layout engines. Can you post an example of where it fails?
Here's the example. I guess the grid is causing the problem:
grid-columns: 1
a; b; c; d
c -> b: cb
d -> c: dc
a -> d: ad
d -> a: da