Thanks Peter for your answers that sound great.
For the recursive dependency, it depends the type of edge we use, but we should be able to
do both.
The idea is that I do not want to hack Roassal or have my own subclasses. I would like to
do such visu very easily.
I am providing a real use cases that I think can be very interesting to get.
It is clear if you are working on UML class diagram, with around 50 classes (for example
by reverse analyzing Pharo code), it should be possible soon to do the visu we imagine for
database schema reverse engineering.
Cheers,
Anne
Le 9 nov. 2015 à 17:03, Peter Uhnák <i.uhnak(a)gmail.com> a écrit :
Hi,
I'll answer what I can, since I'm involved in some of this stuff...
2. the idea is to linked the columns of two tables. Using RTArrowedLine, it is not
beautiful (see DB_Schema_with-arrows) since the attach points are only on South and North
Border of the shape whereas we would like to have them also on left and right.
3. Usually, in DB schema, the links between tables are orthogonal multi lines. But in
Roassal, the attach point are once again only on top or in bottom of the shape (see
DB_Schema_with_Multines).
Mondrian (and I think shapes also) by default use RTVerticalAttachPoint (so only top and
bottom), however we have more. Look at RTAttachPoint subclasses. Most relevant to you are
probably RTShorterDistance(WithOffset)AttachPoint which uses all four sides (right,
bottom, left, top), and RTRectangleAttachPoint which will slide along the sides (so the
distance is the shortest).
How are you creating the visualization? I'm interested in edge creation and layouting
— because the attach point has to be specified there.
4. Normally in database representations, the multi lines have arrows but since, in
Roassal, the direction of the arrow is computed from the start and end points of the line,
it looks ugly in case of multi line edge (see multiline arrows).
This shouldn't be hard to fix for the Roassal's multiline, I'll look into
it.
5. When a column in a table references another column of the same table, the edge is in
the middle of the table but we would like to have a recursive dependency represented as a
loop. Is it possible to do that with Roassal (recursive_dependency figure)?
Something like this:
<self1.png>
or this?
<self2.png>
That's not currently not easily possible. You could specify by hand the control
points of a multiline to get something like the bottom one, but there is nothing available
in Roassal to do it for you.
Is there someone working on a real graph representation such as in graphviz where lines
do not cross or at minima and so the entities are grouped?
I am... but I need to move from research to actually writing the code (right now I am
writing edge labels layouting, classes/elements layouting will come next).
But since you would benefit from something, I'll try to have a prototype soon.
Can we easily add attached point? or define by default at least 4 attach points to box or
ellipse?
See my answer earlier. Creating attach points is rather easy.
Is it possible to get multi lines with arrows but where the head of the arrow is computed
with the perpendicular of the last segment of the multi line edges?
See my answer earlier, I'll look into this.
Two more question that are not visible in these figures:
6. It seems that currently, it is not possible to play with the label font (size, italic,
bold…).
You specify font size with "RTLabel>>#height:"
As for italic/bold/... I've recently added "RTStyledLabel". Look at
it's class comment or RTGeneralExample>>styledLabel
<styles.png>
But I think it needs to be also introduced to Mondrian... Alex?
7. Is it possible to put a label near an extremity of an edge (such as a role in UML
class diagram)? And is it possible to put a label also in the middle of an edge to
indicate the name of an association?
Yes, but only for straight lines.
[[[
TRConstraint
stick: label
between: edge from trachelShape
and: edge to trachelShape
offset: offsetOnEdge. "Float between 0 and 1. 1 is the start, 0 the end, 0.5 the
middle, etc."
]]]
As for multilines, Roassal itself doesn't support it.
Finally, I have my own multiline that would solve some of your problems, but in the
current state it would not play nicely with Mondrian, so I will have to think about how
can I move it to Roassal...
Peter
_______________________________________________
Moose-dev mailing list
Moose-dev(a)list.inf.unibe.ch
https://www.list.inf.unibe.ch/listinfo/moose-dev