Mondrian expandable nodes

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
22 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Mondrian expandable nodes

tinchodias
ps: I like the highligther!

Martín

On Mon, Dec 5, 2011 at 2:52 AM, Martin Dias <[hidden email]> wrote:
A first version of fuel's graph visualization, without expandables yet:

"install"

Gofer it
squeaksource: 'Roassal';
package: 'ConfigurationOfRoassal';
load.
(Smalltalk at: #ConfigurationOfRoassal) loadDevelopment.
Gofer it
version: 'Fuel-MartinDias.497';
version: 'FuelPreview-MartinDias.2';
load.

"use:
- on mouse over, shows printString
- on right click, opens inspector
"

(FLAnalyzer newDefault showPreview 
analysisFor: (SortedCollection sortBlock: [:a :b | a > b ])) 
open

Martín


On Wed, Nov 30, 2011 at 10:12 AM, Alexandre Bergel <[hidden email]> wrote:
Hi Martin!

>> So it would be useful to ask the tool things like:
>> - paint / iterate the nodes such [:object | object class == UnexpectedClass]
>
> Having some iterators you mean?
>
>> - suggest me a "bottleneck" edge
>
> An iterator could easily do the thing. I will provide the infrastructure.

I inserted visitor. I built a ROHighlighter that highlight some nodes.
You can use it like: ROHighlighter for: b in: view.
where b is a block.

Look for the users of ROHighlighter to see some examples.

Let me know if you need more.

>> - show me the shape of the whole graph and I could discover what is wrong at a glance
>
> Yep, this is on my todo list. Having a small portion of the window that shows the whole graph.

I still need to work on this.

Cheers,
Alexandre


>
>
>>
>>>
>>>
>>> On 24 Nov 2011, at 20:16, Alexandre Bergel wrote:
>>>
>>>> Cool!
>>>>
>>>> Here is a new version of your script:
>>>> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>>>>     | view initialNodes |
>>>>     view := ROView new.
>>>>     initialNodes := (ROLabelElement spritesFor: (Array with: Integer)) asOrderedCollection.
>>>>     initialNodes do: [:n |
>>>>             n + ROLabel.
>>>>             n @ (ROExpandChildrenOnClick newCalculatingChildrenWith: [:aClass | aClass subclasses])].
>>>>     view addAll: initialNodes.
>>>>     ROTreeLayout on: initialNodes.
>>>>     view @RODraggable @ RODraggableWithVelocity.
>>>>     view open
>>>> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>>>>
>>>> I also fixed a few things in your class:
>>>> <ROExpandChildrenOnClick.st>
>>>>
>>>> Let me know how it goes.
>>>>
>>>> Cheers,
>>>> Alexandre
>>>>
>>>>
>>>> On 24 Nov 2011, at 15:48, Martin Dias wrote:
>>>>
>>>>> I downloaded Roassal, I like it!
>>>>>
>>>>> Modifying an example, I obtained something like an expandable tree, but I don't know how to re-layout after click. Could you help me?
>>>>>
>>>>> I paste the script and I attach a class (which is needed).
>>>>>
>>>>>    | view initialNodes |
>>>>>    view := ROView new.
>>>>>    initialNodes := (ROElement spritesFor: (Array with: Integer)) asOrderedCollection.
>>>>>    initialNodes do: [:n |
>>>>>            n + ROLabel.
>>>>>            n @ (ROExpandChildrenOnClick newCalculatingChildrenWith: [:aClass | aClass subclasses])].
>>>>>    view addAll: initialNodes.
>>>>>    ROTreeLayout on: initialNodes.
>>>>>    view open
>>>>>
>>>>> Thanks!
>>>>> Martín
>>>>>
>>>>>
>>>>> On Tue, Nov 15, 2011 at 9:41 AM, Alexandre Bergel <[hidden email]> wrote:
>>>>>> I fail to see what these principles are :). Mondrian is nothing but a very simple graph model with a builder api and some rendering logic. zOrder is just a smart way of drawing edges such that you can see them properly even in the case of nested graphs. But, the model does not have to be static.
>>>>>
>>>>> Although quite effective visually, the zOrder gives an ordering that may be different from the one specified by the user.
>>>>>
>>>>> You could have:
>>>>> view node: 'A' forIt: [ view node: 'B' ]
>>>>>
>>>>> But the ordering of drawing A and B is driven by the zOrder. The elements to displayed are cached in the MONode. However, the lookup when you define an edge itself follows the node nesting.
>>>>>
>>>>> I agree with you that the model that does not have to be static, but over the year we have put a great deal of effort in making Mondrian fast. Now, we are trying to make it dynamic in addition. This is a non-trivial piece of work.
>>>>>
>>>>> Also, I have the intuition that we need a dedicated DSL to define the kind of visualization Martin is looking for.
>>>>>
>>>>>> I took a quick look at Roassal. It looks quite interesting.
>>>>>
>>>>> Thanks!
>>>>>
>>>>>> I have some questions/remarks:
>>>>>> - What is the performance for large views when compared with Mondrian?
>>>>>
>>>>> I haven't addressed the need for performance. One cool thing about Roassal, is that I do not rely on the Morph scrollbar. This gives more control about what exactly is displayed. Also, I have flying cameras, which is neat.
>>>>>
>>>>>> - It is at a lower level of abstraction than Mondrian, but higher than actual rendering. The first thing I thought of when looking at it was that perhaps it would be interesting to have it as a backend for Mondrian. Like this we can potentially have the best of both worlds and we can reuse the engineering effort. And then I saw ROMondrianViewBuilder which is a good start :).
>>>>>
>>>>> Ideally, I would like Roassal to be a low level for Mondrian. This is indeed what I tried with ROMondrianViewBuilder as you can see. I guess that for Martin problem, we need something like ROHierarchicalGraphViewBuilder.
>>>>>
>>>>>> - I like the decoration. This is what we had in Mondrian, but that got lost in translation.
>>>>>
>>>>> Yes!
>>>>> I also would like to have decorators to manage caches. Having caches within MOGraphElement and its subclasses complexify the whole thing.
>>>>>
>>>>>> - The rendering logic is tightly coupled with Morphic. It does not have to be, right?
>>>>>
>>>>> Is not really tight to Morphic.
>>>>> Classes such as ROLine, ROBox, ROCircle do not directly talk to a form, but to a ROCanvas instead. I will probably add ROFormCanvas, ROHTML5Canvas in the near future
>>>>>
>>>>>> - I did not see how the decision of drawing edge appears to be. For example, in the mondrian2 you have the edges drawn on top of the nodes. But, I am not sure if this is because of the declaration order of because of something else.
>>>>>
>>>>> The view had an ordered collection of elements, which is sequentially displayed.
>>>>> The strategy of displaying edges should not be hardcoded in the ROView.
>>>>> Consider the script:
>>>>>
>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
>>>>> | view |
>>>>> view := ROMondrianViewBuilder new.
>>>>> view nodes: Collection withAllSubclasses.
>>>>> view shape line.
>>>>> view edgesFrom: #superclass.
>>>>> view treeLayout.
>>>>> view open
>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
>>>>>
>>>>> We could have
>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
>>>>> ...
>>>>> view treeLayout.
>>>>> view moveEdgesToTheBack.
>>>>> view open
>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
>>>>>
>>>>> Maybe... Not really elegant. But the order should not be hardcoded
>>>>>
>>>>> Alexandre
>>>>>
>>>>>
>>>>>>
>>>>>> Cheers,
>>>>>> Doru
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Alexandre
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> On 14 Nov 2011, at 17:30, Alexandre Bergel wrote:
>>>>>>>>
>>>>>>>>> Martin, are you happy with what Mondrian offers currently? Is there anything else you would like to see?
>>>>>>>>>
>>>>>>>>> Alexandre
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 8 Nov 2011, at 15:50, Martin Dias wrote:
>>>>>>>>>
>>>>>>>>>> Johan and Alexandre: Thank you, was funny to play with Mondrian Easel and to see AspectMaps.
>>>>>>>>>> Doru: You was right, I had in mind something like a tree. I made a proof script using blocks for recursion... look:
>>>>>>>>>>
>>>>>>>>>> | blockForClass blockForExpandable blockForLeaf |
>>>>>>>>>> blockForClass := [:aClass |
>>>>>>>>>> blockForLeaf value: aClass.
>>>>>>>>>> aClass subclasses do: [:aSubclass |
>>>>>>>>>>         (aSubclass subclasses isEmpty
>>>>>>>>>>                 ifTrue: [blockForLeaf]
>>>>>>>>>>                 ifFalse: [blockForExpandable])
>>>>>>>>>>                         value: aSubclass ] ].
>>>>>>>>>> blockForLeaf := [:aClass |
>>>>>>>>>> view shape label text: #name.
>>>>>>>>>> view node: aClass.
>>>>>>>>>> view edgesFrom: #superclass.
>>>>>>>>>> view horizontalTreeLayout ].
>>>>>>>>>> blockForExpandable := [:aClass |
>>>>>>>>>> view interaction
>>>>>>>>>>         whenClickingUpdateNode: [:x | blockForClass value: x ]
>>>>>>>>>>         withLayoutUpdate: true.
>>>>>>>>>> view shape rectangle
>>>>>>>>>>         dashedBorder;
>>>>>>>>>>         size: 10;
>>>>>>>>>>         borderColor: Color lightGray.
>>>>>>>>>> view node: aClass.
>>>>>>>>>> view edgesFrom: #superclass.
>>>>>>>>>> view horizontalTreeLayout ].
>>>>>>>>>> blockForClass value: Collection.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tue, Nov 8, 2011 at 4:16 AM, Tudor Girba <[hidden email]> wrote:
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> I think Martin was asking for a script that would add nodes to the parent graph, not to the inner graph of a selected node.
>>>>>>>>>>
>>>>>>>>>> The idea is to have an expandable graph that would behave similarly to a tree morph widget (when you expand a node, the whole tree becomes larger).
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Doru
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 8 Nov 2011, at 04:28, Alexandre Bergel wrote:
>>>>>>>>>>
>>>>>>>>>>>> During Smalltalks conference, we started with Mariano and Doru to do an experiment: to use Mondrian to visualize the graph that is being serialized with Fuel.
>>>>>>>>>>>
>>>>>>>>>>> Cool!
>>>>>>>>>>>
>>>>>>>>>>>> 1) Is it fine how I installed Mondrian?
>>>>>>>>>>>>
>>>>>>>>>>>> Gofer it
>>>>>>>>>>>> squeaksource: 'Mondrian';
>>>>>>>>>>>> package: 'ConfigurationOfMondrian';
>>>>>>>>>>>> load.
>>>>>>>>>>>> (ConfigurationOfMondrian project latestVersion) load.
>>>>>>>>>>>
>>>>>>>>>>> Yes.
>>>>>>>>>>>
>>>>>>>>>>>> 2) For large graphs, I would like to show them lazily, maybe drawing some expandable nodes (+). Do you understand what I mean? Is that possible?
>>>>>>>>>>>
>>>>>>>>>>> Try this in an easel:
>>>>>>>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
>>>>>>>>>>> view shape rectangle size: 20.
>>>>>>>>>>> view interaction action: #inspect.
>>>>>>>>>>> view interaction
>>>>>>>>>>> whenEnteringUpdateNode: [:node |
>>>>>>>>>>>         view interaction forwarder.
>>>>>>>>>>>         view nodes: (Set allSubclasses).
>>>>>>>>>>>                 view interaction forwarder.
>>>>>>>>>>>         view edgesFrom: #superclass..
>>>>>>>>>>>         view treeLayout
>>>>>>>>>>>         ]
>>>>>>>>>>> whenLeavingUpdateNode:  [:node | ]
>>>>>>>>>>> withLayoutUpdate: true.
>>>>>>>>>>> view nodes: (1 to: 3)
>>>>>>>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>> Alexandre
>>>>>>>>>>> --
>>>>>>>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>>>>>>>>> Alexandre Bergel  http://www.bergel.eu
>>>>>>>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Moose-dev mailing list
>>>>>>>>>>> [hidden email]
>>>>>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> www.tudorgirba.com
>>>>>>>>>>
>>>>>>>>>> "Not knowing how to do something is not an argument for how it cannot be done."
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Moose-dev mailing list
>>>>>>>>>> [hidden email]
>>>>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Moose-dev mailing list
>>>>>>>>>> [hidden email]
>>>>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>>>>>>> Alexandre Bergel  http://www.bergel.eu
>>>>>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Moose-dev mailing list
>>>>>>>>> [hidden email]
>>>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>>>>>
>>>>>>>> --
>>>>>>>> www.tudorgirba.com
>>>>>>>>
>>>>>>>> "Reasonable is what we are accustomed with."
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Moose-dev mailing list
>>>>>>>> [hidden email]
>>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Moose-dev mailing list
>>>>>>>> [hidden email]
>>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>>>>
>>>>>>> --
>>>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>>>>> Alexandre Bergel  http://www.bergel.eu
>>>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Moose-dev mailing list
>>>>>>> [hidden email]
>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>>>
>>>>>> --
>>>>>> www.tudorgirba.com
>>>>>>
>>>>>> Innovation comes in least expected form.
>>>>>> That is, if it is expected, it already happened.
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Moose-dev mailing list
>>>>>> [hidden email]
>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>>
>>>>> --
>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>>> Alexandre Bergel  http://www.bergel.eu
>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Moose-dev mailing list
>>>>> [hidden email]
>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>>
>>>>> <ROExpandChildrenOnClick.st>_______________________________________________
>>>>> Moose-dev mailing list
>>>>> [hidden email]
>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>
>>>> --
>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>> Alexandre Bergel  http://www.bergel.eu
>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Moose-dev mailing list
>>>> [hidden email]
>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>
>>> --
>>> www.tudorgirba.com
>>>
>>> "The coherence of a trip is given by the clearness of the goal."
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Moose-dev mailing list
>>> [hidden email]
>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>
>> --
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel  http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Moose-dev mailing list
>> [hidden email]
>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>
>> _______________________________________________
>> Moose-dev mailing list
>> [hidden email]
>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
>
>
> _______________________________________________
> Moose-dev mailing list
> [hidden email]
> https://www.iam.unibe.ch/mailman/listinfo/moose-dev

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Mondrian expandable nodes

abergel
In reply to this post by tinchodias
Looks good!

In  FLPreviewAnalysis>>open, add just before to open it: view @RODraggable @ RODraggableWithVelocity.

Cheers,
Alexandre


On 5 Dec 2011, at 02:52, Martin Dias wrote:

> A first version of fuel's graph visualization, without expandables yet:
>
> "install"
>
> Gofer it
> squeaksource: 'Roassal';
> package: 'ConfigurationOfRoassal';
> load.
> (Smalltalk at: #ConfigurationOfRoassal) loadDevelopment.
> Gofer it
> url: 'http://ss3.gemstone.com/ss/Fuel';
> version: 'Fuel-MartinDias.497';
> version: 'FuelPreview-MartinDias.2';
> load.
>
> "use:
> - on mouse over, shows printString
> - on right click, opens inspector
> "
>
> (FLAnalyzer newDefault showPreview
> analysisFor: (SortedCollection sortBlock: [:a :b | a > b ]))
> open
>
> Martín
>
>
> On Wed, Nov 30, 2011 at 10:12 AM, Alexandre Bergel <[hidden email]> wrote:
> Hi Martin!
>
> >> So it would be useful to ask the tool things like:
> >> - paint / iterate the nodes such [:object | object class == UnexpectedClass]
> >
> > Having some iterators you mean?
> >
> >> - suggest me a "bottleneck" edge
> >
> > An iterator could easily do the thing. I will provide the infrastructure.
>
> I inserted visitor. I built a ROHighlighter that highlight some nodes.
> You can use it like: ROHighlighter for: b in: view.
> where b is a block.
>
> Look for the users of ROHighlighter to see some examples.
>
> Let me know if you need more.
>
> >> - show me the shape of the whole graph and I could discover what is wrong at a glance
> >
> > Yep, this is on my todo list. Having a small portion of the window that shows the whole graph.
>
> I still need to work on this.
>
> Cheers,
> Alexandre
>
>
> >
> >
> >>
> >>>
> >>>
> >>> On 24 Nov 2011, at 20:16, Alexandre Bergel wrote:
> >>>
> >>>> Cool!
> >>>>
> >>>> Here is a new version of your script:
> >>>> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> >>>>     | view initialNodes |
> >>>>     view := ROView new.
> >>>>     initialNodes := (ROLabelElement spritesFor: (Array with: Integer)) asOrderedCollection.
> >>>>     initialNodes do: [:n |
> >>>>             n + ROLabel.
> >>>>             n @ (ROExpandChildrenOnClick newCalculatingChildrenWith: [:aClass | aClass subclasses])].
> >>>>     view addAll: initialNodes.
> >>>>     ROTreeLayout on: initialNodes.
> >>>>     view @RODraggable @ RODraggableWithVelocity.
> >>>>     view open
> >>>> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> >>>>
> >>>> I also fixed a few things in your class:
> >>>> <ROExpandChildrenOnClick.st>
> >>>>
> >>>> Let me know how it goes.
> >>>>
> >>>> Cheers,
> >>>> Alexandre
> >>>>
> >>>>
> >>>> On 24 Nov 2011, at 15:48, Martin Dias wrote:
> >>>>
> >>>>> I downloaded Roassal, I like it!
> >>>>>
> >>>>> Modifying an example, I obtained something like an expandable tree, but I don't know how to re-layout after click. Could you help me?
> >>>>>
> >>>>> I paste the script and I attach a class (which is needed).
> >>>>>
> >>>>>    | view initialNodes |
> >>>>>    view := ROView new.
> >>>>>    initialNodes := (ROElement spritesFor: (Array with: Integer)) asOrderedCollection.
> >>>>>    initialNodes do: [:n |
> >>>>>            n + ROLabel.
> >>>>>            n @ (ROExpandChildrenOnClick newCalculatingChildrenWith: [:aClass | aClass subclasses])].
> >>>>>    view addAll: initialNodes.
> >>>>>    ROTreeLayout on: initialNodes.
> >>>>>    view open
> >>>>>
> >>>>> Thanks!
> >>>>> Martín
> >>>>>
> >>>>>
> >>>>> On Tue, Nov 15, 2011 at 9:41 AM, Alexandre Bergel <[hidden email]> wrote:
> >>>>>> I fail to see what these principles are :). Mondrian is nothing but a very simple graph model with a builder api and some rendering logic. zOrder is just a smart way of drawing edges such that you can see them properly even in the case of nested graphs. But, the model does not have to be static.
> >>>>>
> >>>>> Although quite effective visually, the zOrder gives an ordering that may be different from the one specified by the user.
> >>>>>
> >>>>> You could have:
> >>>>> view node: 'A' forIt: [ view node: 'B' ]
> >>>>>
> >>>>> But the ordering of drawing A and B is driven by the zOrder. The elements to displayed are cached in the MONode. However, the lookup when you define an edge itself follows the node nesting.
> >>>>>
> >>>>> I agree with you that the model that does not have to be static, but over the year we have put a great deal of effort in making Mondrian fast. Now, we are trying to make it dynamic in addition. This is a non-trivial piece of work.
> >>>>>
> >>>>> Also, I have the intuition that we need a dedicated DSL to define the kind of visualization Martin is looking for.
> >>>>>
> >>>>>> I took a quick look at Roassal. It looks quite interesting.
> >>>>>
> >>>>> Thanks!
> >>>>>
> >>>>>> I have some questions/remarks:
> >>>>>> - What is the performance for large views when compared with Mondrian?
> >>>>>
> >>>>> I haven't addressed the need for performance. One cool thing about Roassal, is that I do not rely on the Morph scrollbar. This gives more control about what exactly is displayed. Also, I have flying cameras, which is neat.
> >>>>>
> >>>>>> - It is at a lower level of abstraction than Mondrian, but higher than actual rendering. The first thing I thought of when looking at it was that perhaps it would be interesting to have it as a backend for Mondrian. Like this we can potentially have the best of both worlds and we can reuse the engineering effort. And then I saw ROMondrianViewBuilder which is a good start :).
> >>>>>
> >>>>> Ideally, I would like Roassal to be a low level for Mondrian. This is indeed what I tried with ROMondrianViewBuilder as you can see. I guess that for Martin problem, we need something like ROHierarchicalGraphViewBuilder.
> >>>>>
> >>>>>> - I like the decoration. This is what we had in Mondrian, but that got lost in translation.
> >>>>>
> >>>>> Yes!
> >>>>> I also would like to have decorators to manage caches. Having caches within MOGraphElement and its subclasses complexify the whole thing.
> >>>>>
> >>>>>> - The rendering logic is tightly coupled with Morphic. It does not have to be, right?
> >>>>>
> >>>>> Is not really tight to Morphic.
> >>>>> Classes such as ROLine, ROBox, ROCircle do not directly talk to a form, but to a ROCanvas instead. I will probably add ROFormCanvas, ROHTML5Canvas in the near future
> >>>>>
> >>>>>> - I did not see how the decision of drawing edge appears to be. For example, in the mondrian2 you have the edges drawn on top of the nodes. But, I am not sure if this is because of the declaration order of because of something else.
> >>>>>
> >>>>> The view had an ordered collection of elements, which is sequentially displayed.
> >>>>> The strategy of displaying edges should not be hardcoded in the ROView.
> >>>>> Consider the script:
> >>>>>
> >>>>> -=-=-=-=-=-=-=-=-=-=-=-=
> >>>>> | view |
> >>>>> view := ROMondrianViewBuilder new.
> >>>>> view nodes: Collection withAllSubclasses.
> >>>>> view shape line.
> >>>>> view edgesFrom: #superclass.
> >>>>> view treeLayout.
> >>>>> view open
> >>>>> -=-=-=-=-=-=-=-=-=-=-=-=
> >>>>>
> >>>>> We could have
> >>>>> -=-=-=-=-=-=-=-=-=-=-=-=
> >>>>> ...
> >>>>> view treeLayout.
> >>>>> view moveEdgesToTheBack.
> >>>>> view open
> >>>>> -=-=-=-=-=-=-=-=-=-=-=-=
> >>>>>
> >>>>> Maybe... Not really elegant. But the order should not be hardcoded
> >>>>>
> >>>>> Alexandre
> >>>>>
> >>>>>
> >>>>>>
> >>>>>> Cheers,
> >>>>>> Doru
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> Alexandre
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>> On 14 Nov 2011, at 17:30, Alexandre Bergel wrote:
> >>>>>>>>
> >>>>>>>>> Martin, are you happy with what Mondrian offers currently? Is there anything else you would like to see?
> >>>>>>>>>
> >>>>>>>>> Alexandre
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On 8 Nov 2011, at 15:50, Martin Dias wrote:
> >>>>>>>>>
> >>>>>>>>>> Johan and Alexandre: Thank you, was funny to play with Mondrian Easel and to see AspectMaps.
> >>>>>>>>>> Doru: You was right, I had in mind something like a tree. I made a proof script using blocks for recursion... look:
> >>>>>>>>>>
> >>>>>>>>>> | blockForClass blockForExpandable blockForLeaf |
> >>>>>>>>>> blockForClass := [:aClass |
> >>>>>>>>>> blockForLeaf value: aClass.
> >>>>>>>>>> aClass subclasses do: [:aSubclass |
> >>>>>>>>>>         (aSubclass subclasses isEmpty
> >>>>>>>>>>                 ifTrue: [blockForLeaf]
> >>>>>>>>>>                 ifFalse: [blockForExpandable])
> >>>>>>>>>>                         value: aSubclass ] ].
> >>>>>>>>>> blockForLeaf := [:aClass |
> >>>>>>>>>> view shape label text: #name.
> >>>>>>>>>> view node: aClass.
> >>>>>>>>>> view edgesFrom: #superclass.
> >>>>>>>>>> view horizontalTreeLayout ].
> >>>>>>>>>> blockForExpandable := [:aClass |
> >>>>>>>>>> view interaction
> >>>>>>>>>>         whenClickingUpdateNode: [:x | blockForClass value: x ]
> >>>>>>>>>>         withLayoutUpdate: true.
> >>>>>>>>>> view shape rectangle
> >>>>>>>>>>         dashedBorder;
> >>>>>>>>>>         size: 10;
> >>>>>>>>>>         borderColor: Color lightGray.
> >>>>>>>>>> view node: aClass.
> >>>>>>>>>> view edgesFrom: #superclass.
> >>>>>>>>>> view horizontalTreeLayout ].
> >>>>>>>>>> blockForClass value: Collection.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> On Tue, Nov 8, 2011 at 4:16 AM, Tudor Girba <[hidden email]> wrote:
> >>>>>>>>>> Hi,
> >>>>>>>>>>
> >>>>>>>>>> I think Martin was asking for a script that would add nodes to the parent graph, not to the inner graph of a selected node.
> >>>>>>>>>>
> >>>>>>>>>> The idea is to have an expandable graph that would behave similarly to a tree morph widget (when you expand a node, the whole tree becomes larger).
> >>>>>>>>>>
> >>>>>>>>>> Cheers,
> >>>>>>>>>> Doru
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> On 8 Nov 2011, at 04:28, Alexandre Bergel wrote:
> >>>>>>>>>>
> >>>>>>>>>>>> During Smalltalks conference, we started with Mariano and Doru to do an experiment: to use Mondrian to visualize the graph that is being serialized with Fuel.
> >>>>>>>>>>>
> >>>>>>>>>>> Cool!
> >>>>>>>>>>>
> >>>>>>>>>>>> 1) Is it fine how I installed Mondrian?
> >>>>>>>>>>>>
> >>>>>>>>>>>> Gofer it
> >>>>>>>>>>>> squeaksource: 'Mondrian';
> >>>>>>>>>>>> package: 'ConfigurationOfMondrian';
> >>>>>>>>>>>> load.
> >>>>>>>>>>>> (ConfigurationOfMondrian project latestVersion) load.
> >>>>>>>>>>>
> >>>>>>>>>>> Yes.
> >>>>>>>>>>>
> >>>>>>>>>>>> 2) For large graphs, I would like to show them lazily, maybe drawing some expandable nodes (+). Do you understand what I mean? Is that possible?
> >>>>>>>>>>>
> >>>>>>>>>>> Try this in an easel:
> >>>>>>>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
> >>>>>>>>>>> view shape rectangle size: 20.
> >>>>>>>>>>> view interaction action: #inspect.
> >>>>>>>>>>> view interaction
> >>>>>>>>>>> whenEnteringUpdateNode: [:node |
> >>>>>>>>>>>         view interaction forwarder.
> >>>>>>>>>>>         view nodes: (Set allSubclasses).
> >>>>>>>>>>>                 view interaction forwarder.
> >>>>>>>>>>>         view edgesFrom: #superclass..
> >>>>>>>>>>>         view treeLayout
> >>>>>>>>>>>         ]
> >>>>>>>>>>> whenLeavingUpdateNode:  [:node | ]
> >>>>>>>>>>> withLayoutUpdate: true.
> >>>>>>>>>>> view nodes: (1 to: 3)
> >>>>>>>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
> >>>>>>>>>>>
> >>>>>>>>>>> Cheers,
> >>>>>>>>>>> Alexandre
> >>>>>>>>>>> --
> >>>>>>>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> >>>>>>>>>>> Alexandre Bergel  http://www.bergel.eu
> >>>>>>>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> _______________________________________________
> >>>>>>>>>>> Moose-dev mailing list
> >>>>>>>>>>> [hidden email]
> >>>>>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>>>>>>>>>
> >>>>>>>>>> --
> >>>>>>>>>> www.tudorgirba.com
> >>>>>>>>>>
> >>>>>>>>>> "Not knowing how to do something is not an argument for how it cannot be done."
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> _______________________________________________
> >>>>>>>>>> Moose-dev mailing list
> >>>>>>>>>> [hidden email]
> >>>>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>>>>>>>>>
> >>>>>>>>>> _______________________________________________
> >>>>>>>>>> Moose-dev mailing list
> >>>>>>>>>> [hidden email]
> >>>>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> >>>>>>>>> Alexandre Bergel  http://www.bergel.eu
> >>>>>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> _______________________________________________
> >>>>>>>>> Moose-dev mailing list
> >>>>>>>>> [hidden email]
> >>>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> www.tudorgirba.com
> >>>>>>>>
> >>>>>>>> "Reasonable is what we are accustomed with."
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> _______________________________________________
> >>>>>>>> Moose-dev mailing list
> >>>>>>>> [hidden email]
> >>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>>>>>>>
> >>>>>>>> _______________________________________________
> >>>>>>>> Moose-dev mailing list
> >>>>>>>> [hidden email]
> >>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>>>>>>
> >>>>>>> --
> >>>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> >>>>>>> Alexandre Bergel  http://www.bergel.eu
> >>>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> _______________________________________________
> >>>>>>> Moose-dev mailing list
> >>>>>>> [hidden email]
> >>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>>>>>
> >>>>>> --
> >>>>>> www.tudorgirba.com
> >>>>>>
> >>>>>> Innovation comes in least expected form.
> >>>>>> That is, if it is expected, it already happened.
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> Moose-dev mailing list
> >>>>>> [hidden email]
> >>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>>>>
> >>>>> --
> >>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> >>>>> Alexandre Bergel  http://www.bergel.eu
> >>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>> Moose-dev mailing list
> >>>>> [hidden email]
> >>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>>>>
> >>>>> <ROExpandChildrenOnClick.st>_______________________________________________
> >>>>> Moose-dev mailing list
> >>>>> [hidden email]
> >>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>>>
> >>>> --
> >>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> >>>> Alexandre Bergel  http://www.bergel.eu
> >>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> Moose-dev mailing list
> >>>> [hidden email]
> >>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>>
> >>> --
> >>> www.tudorgirba.com
> >>>
> >>> "The coherence of a trip is given by the clearness of the goal."
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> Moose-dev mailing list
> >>> [hidden email]
> >>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>
> >> --
> >> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> >> Alexandre Bergel  http://www.bergel.eu
> >> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> >>
> >>
> >>
> >>
> >>
> >>
> >> _______________________________________________
> >> Moose-dev mailing list
> >> [hidden email]
> >> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >>
> >> _______________________________________________
> >> Moose-dev mailing list
> >> [hidden email]
> >> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >
> > --
> > _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> > Alexandre Bergel  http://www.bergel.eu
> > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > Moose-dev mailing list
> > [hidden email]
> > https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
>
>
> _______________________________________________
> Moose-dev mailing list
> [hidden email]
> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>
> _______________________________________________
> Moose-dev mailing list
> [hidden email]
> https://www.iam.unibe.ch/mailman/listinfo/moose-dev

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
12