Hi,
I want to display the dependencies between my classes. I wonder why the following code does not work, it displays the classes in a circle but not the edges between them. I’m using Moose 6 und Pharo 5 (downloaded yesterday) and evaluated the following code in the moose panel in the evaluator:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges: (ArrayedCollection withAllSubclasses) from: [ :cls | cls yourself ] to: [ :cls | cls referencedClasses ]. view circleLayout. view
Then I tried to display the dependencies between my own classes (parsed by jdt2famix) but got an exception. After clicking on All classes in the moose panel I entered the following code in the evaluator: |view allClasses| view := RTMondrian new. allClasses := self allClasses. view nodes: allClasses. view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes]. view circleLayout. view
If I execute the code above, I get an “MessageNotUnderstood: reveiver of “atScope:” is nil” exception. If I remove the “view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes].” statement I don’t get an exception, the RTMondorian view opens, but no classes are displayed as dots in the view.
Any suggestions?
Best regards Meinert
Hi Meinert,
does this code work for you:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges objects: (ArrayedCollection withAllSubclasses); connectToAll: [ :cls | cls referencedClasses ]. view circleLayout. view inspect
To be honest, I did not yet really fully understand the edge builder. So sometimes it works, sometimes not for me. Maybe I missed some documentation or good explanation on it :-)
Best regards, Rainer
-----Original-Nachricht----- Von: "Meinert Schwartau" m.schwartau@gmail.com An: moose-dev@list.inf.unibe.ch Datum: 08/10/16 09:04 Betreff: [Moose-dev] Problems with mondorian
Hi,
I want to display the dependencies between my classes. I wonder why the following code does not work, it displays the classes in a circle but not the edges between them. I'm using Moose 6 und Pharo 5 (downloaded yesterday) and evaluated the following code in the moose panel in the evaluator:
|view|
view := RTMondrian new.
view nodes: ArrayedCollection withAllSubclasses.
view edges: (ArrayedCollection withAllSubclasses) from: [ :cls | cls yourself ] to: [ :cls | cls referencedClasses ].
view circleLayout.
view
Then I tried to display the dependencies between my own classes (parsed by jdt2famix) but got an exception. After clicking on All classes in the moose panel I entered the following code in the evaluator:
|view allClasses|
view := RTMondrian new.
allClasses := self allClasses.
view nodes: allClasses.
view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes].
view circleLayout.
view
If I execute the code above, I get an "MessageNotUnderstood: reveiver of "atScope:" is nil" exception. If I remove the "view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes]." statement I don't get an exception, the RTMondorian view opens, but no classes are displayed as dots in the view.
Any suggestions?
Best regards
Meinert
_______________________________________________ Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Hi Rainer,
There is a book chapter that details the edge builder: https://dl.dropboxusercontent.com/u/31543901/AgileVisualization/Roassal/0104...
Do you feel it remains still complex to understand?
Alexandre
On Aug 10, 2016, at 4:52 AM, rainer.winkler@poaceae.de wrote:
Hi Meinert,
does this code work for you:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges objects: (ArrayedCollection withAllSubclasses); connectToAll: [ :cls | cls referencedClasses ]. view circleLayout. view inspect
To be honest, I did not yet really fully understand the edge builder. So sometimes it works, sometimes not for me. Maybe I missed some documentation or good explanation on it :-)
Best regards, Rainer
-----Original-Nachricht----- Von: "Meinert Schwartau" <m.schwartau@gmail.com mailto:m.schwartau@gmail.com> An: moose-dev@list.inf.unibe.ch mailto:moose-dev@list.inf.unibe.ch Datum: 08/10/16 09:04 Betreff: [Moose-dev] Problems with mondorian
Hi,
I want to display the dependencies between my classes. I wonder why the following code does not work, it displays the classes in a circle but not the edges between them. I'm using Moose 6 und Pharo 5 (downloaded yesterday) and evaluated the following code in the moose panel in the evaluator:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges: (ArrayedCollection withAllSubclasses) from: [ :cls | cls yourself ] to: [ :cls | cls referencedClasses ]. view circleLayout. view
Then I tried to display the dependencies between my own classes (parsed by jdt2famix) but got an exception. After clicking on All classes in the moose panel I entered the following code in the evaluator: |view allClasses| view := RTMondrian new. allClasses := self allClasses. view nodes: allClasses. view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes]. view circleLayout. view
If I execute the code above, I get an "MessageNotUnderstood: reveiver of "atScope:" is nil" exception. If I remove the "view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes]." statement I don't get an exception, the RTMondorian view opens, but no classes are displayed as dots in the view.
Any suggestions?
Best regards Meinert
Moose-dev mailing list Moose-dev@list.inf.unibe.ch mailto:Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev https://www.list.inf.unibe.ch/listinfo/moose-dev _______________________________________________ Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Hi Alexandre,
when I read first this chapter about Roassal and edges I had no good understanding of Pharo. And connecting numbers in the way it is done in the examples confused me. For instance: I did not had in mind, that numbers are objects, and a formula like i // 3 is just a simple way to get a function that relates one object to another one.
After attending the Pharo course by FUN, I can understand the examples. But I guess that without understanding Pharo and the way developments are typically done in Pharo, the text is complex to understand not only for me. I had probably needed a text, that explains also Pharo syntax and principles.
I have no simple solution to this. I like to do documentation, but I find it much harder than software development. As people are so different and have such a different background.
So it took me quite an effort to get my first edges to be drawn (Thanks for helping :-) ). But after I succeeded, it worked reliable. So I was happy :-)
To give a more concrete feedback and proposes for improvement of the documentation is on my lists of things to do ...
Best regards, Rainer
-----Original-Nachricht----- Von: "Alexandre Bergel" alexandre.bergel@me.com An: "Moose-related development" moose-dev@list.inf.unibe.ch Datum: 08/10/16 17:41 Betreff: [Moose-dev] Re: Problems with mondorian
Hi Rainer,
There is a book chapter that details the edge builder: https://dl.dropboxusercontent.com/u/31543901/AgileVisualization/Roassal/0104...
Do you feel it remains still complex to understand?
Alexandre
On Aug 10, 2016, at 4:52 AM, rainer.winkler@poaceae.de wrote: Hi Meinert,
does this code work for you:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges objects: (ArrayedCollection withAllSubclasses); connectToAll: [ :cls | cls referencedClasses ]. view circleLayout. view inspect
To be honest, I did not yet really fully understand the edge builder. So sometimes it works, sometimes not for me. Maybe I missed some documentation or good explanation on it :-)
Best regards, Rainer
-----Original-Nachricht----- Von: "Meinert Schwartau" m.schwartau@gmail.com An: moose-dev@list.inf.unibe.ch Datum: 08/10/16 09:04 Betreff: [Moose-dev] Problems with mondorian
Hi, I want to display the dependencies between my classes. I wonder why the following code does not work, it displays the classes in a circle but not the edges between them. I'm using Moose 6 und Pharo 5 (downloaded yesterday) and evaluated the following code in the moose panel in the evaluator: |view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges: (ArrayedCollection withAllSubclasses) from: [ :cls | cls yourself ] to: [ :cls | cls referencedClasses ]. view circleLayout. view Then I tried to display the dependencies between my own classes (parsed by jdt2famix) but got an exception. After clicking on All classes in the moose panel I entered the following code in the evaluator: |view allClasses| view := RTMondrian new. allClasses := self allClasses. view nodes: allClasses. view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes]. view circleLayout. view If I execute the code above, I get an "MessageNotUnderstood: reveiver of "atScope:" is nil" exception. If I remove the "view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes]." statement I don't get an exception, the RTMondorian view opens, but no classes are displayed as dots in the view. Any suggestions? Best regards Meinert
_______________________________________________ Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
_______________________________________________ Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
_______________________________________________ Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Sure, no problem!
Glad to hear it is working as you expect!
Alexandre
On Aug 11, 2016, at 3:55 PM, rainer.winkler@poaceae.de wrote:
Hi Alexandre,
when I read first this chapter about Roassal and edges I had no good understanding of Pharo. And connecting numbers in the way it is done in the examples confused me. For instance: I did not had in mind, that numbers are objects, and a formula like i // 3 is just a simple way to get a function that relates one object to another one.
After attending the Pharo course by FUN, I can understand the examples. But I guess that without understanding Pharo and the way developments are typically done in Pharo, the text is complex to understand not only for me. I had probably needed a text, that explains also Pharo syntax and principles.
I have no simple solution to this. I like to do documentation, but I find it much harder than software development. As people are so different and have such a different background.
So it took me quite an effort to get my first edges to be drawn (Thanks for helping :-) ). But after I succeeded, it worked reliable. So I was happy :-)
To give a more concrete feedback and proposes for improvement of the documentation is on my lists of things to do ...
Best regards, Rainer
-----Original-Nachricht----- Von: "Alexandre Bergel" alexandre.bergel@me.com An: "Moose-related development" moose-dev@list.inf.unibe.ch Datum: 08/10/16 17:41 Betreff: [Moose-dev] Re: Problems with mondorian
Hi Rainer,
There is a book chapter that details the edge builder: https://dl.dropboxusercontent.com/u/31543901/AgileVisualization/Roassal/0104...
Do you feel it remains still complex to understand?
Alexandre
On Aug 10, 2016, at 4:52 AM, rainer.winkler@poaceae.de wrote:
Hi Meinert,
does this code work for you:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges objects: (ArrayedCollection withAllSubclasses); connectToAll: [ :cls | cls referencedClasses ]. view circleLayout. view inspect
To be honest, I did not yet really fully understand the edge builder. So sometimes it works, sometimes not for me. Maybe I missed some documentation or good explanation on it :-)
Best regards, Rainer
-----Original-Nachricht----- Von: "Meinert Schwartau" m.schwartau@gmail.com An: moose-dev@list.inf.unibe.ch Datum: 08/10/16 09:04 Betreff: [Moose-dev] Problems with mondorian
Hi,
I want to display the dependencies between my classes. I wonder why the following code does not work, it displays the classes in a circle but not the edges between them. I'm using Moose 6 und Pharo 5 (downloaded yesterday) and evaluated the following code in the moose panel in the evaluator:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges: (ArrayedCollection withAllSubclasses) from: [ :cls | cls yourself ] to: [ :cls | cls referencedClasses ]. view circleLayout. view
Then I tried to display the dependencies between my own classes (parsed by jdt2famix) but got an exception. After clicking on All classes in the moose panel I entered the following code in the evaluator: |view allClasses| view := RTMondrian new. allClasses := self allClasses. view nodes: allClasses. view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes]. view circleLayout. view
If I execute the code above, I get an "MessageNotUnderstood: reveiver of "atScope:" is nil" exception. If I remove the "view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes]." statement I don't get an exception, the RTMondorian view opens, but no classes are displayed as dots in the view.
Any suggestions?
Best regards Meinert
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev _______________________________________________ Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev _______________________________________________ Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Hi,
Welcome back :)
On Aug 10, 2016, at 9:04 AM, Meinert Schwartau m.schwartau@gmail.com wrote:
Hi,
I want to display the dependencies between my classes. I wonder why the following code does not work, it displays the classes in a circle but not the edges between them. I’m using Moose 6 und Pharo 5 (downloaded yesterday) and evaluated the following code in the moose panel in the evaluator:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges: (ArrayedCollection withAllSubclasses) from: [ :cls | cls yourself ] to: [ :cls | cls referencedClasses ]. view circleLayout. view
In your script, from:to: connects one source node with one target node returned by evaluating the corresponding blocks. However, your to: blocks return a collection, and the engine will try to find a node that has that collection as a model.
What you want is to iterate over all items in the collection and connect the source node to each of the target nodes.
To this end, you should use toAll:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges source: (ArrayedCollection withAllSubclasses) connectFrom: [ :cls | cls yourself ] toAll: [ :cls | cls referencedClasses ]. view circleLayout. view
Then I tried to display the dependencies between my own classes (parsed by jdt2famix) but got an exception. After clicking on All classes in the moose panel I entered the following code in the evaluator: |view allClasses| view := RTMondrian new. allClasses := self allClasses. view nodes: allClasses. view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes]. view circleLayout. view
If I execute the code above, I get an “MessageNotUnderstood: reveiver of “atScope:” is nil” exception. If I remove the “view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes].” statement I don’t get an exception, the RTMondorian view opens, but no classes are displayed as dots in the view.
Indeed, thanks for reporting.
I also noticed a bug in MooseQuery during the computation of messages like providerTypes. The problem appears when the opposite part of a relationship is nil. For example, when you have an invocation and the target cannot be resolved, the invocation will point to nil, and Moose gets unhappy. This is a problem in Moose and we need to solve it.
Cheers, Doru
Any suggestions?
Best regards Meinert
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"If you can't say why something is relevant, it probably isn't."
Hi,
I now fixed the providerTypes error (including a test). Please try with the latest Moose 6.0 image.
Cheers, Doru
On Aug 10, 2016, at 3:49 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
Welcome back :)
On Aug 10, 2016, at 9:04 AM, Meinert Schwartau m.schwartau@gmail.com wrote:
Hi,
I want to display the dependencies between my classes. I wonder why the following code does not work, it displays the classes in a circle but not the edges between them. I’m using Moose 6 und Pharo 5 (downloaded yesterday) and evaluated the following code in the moose panel in the evaluator:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges: (ArrayedCollection withAllSubclasses) from: [ :cls | cls yourself ] to: [ :cls | cls referencedClasses ]. view circleLayout. view
In your script, from:to: connects one source node with one target node returned by evaluating the corresponding blocks. However, your to: blocks return a collection, and the engine will try to find a node that has that collection as a model.
What you want is to iterate over all items in the collection and connect the source node to each of the target nodes.
To this end, you should use toAll:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges source: (ArrayedCollection withAllSubclasses) connectFrom: [ :cls | cls yourself ] toAll: [ :cls | cls referencedClasses ]. view circleLayout. view
Then I tried to display the dependencies between my own classes (parsed by jdt2famix) but got an exception. After clicking on All classes in the moose panel I entered the following code in the evaluator: |view allClasses| view := RTMondrian new. allClasses := self allClasses. view nodes: allClasses. view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes]. view circleLayout. view
If I execute the code above, I get an “MessageNotUnderstood: reveiver of “atScope:” is nil” exception. If I remove the “view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes].” statement I don’t get an exception, the RTMondorian view opens, but no classes are displayed as dots in the view.
Indeed, thanks for reporting.
I also noticed a bug in MooseQuery during the computation of messages like providerTypes. The problem appears when the opposite part of a relationship is nil. For example, when you have an invocation and the target cannot be resolved, the invocation will point to nil, and Moose gets unhappy. This is a problem in Moose and we need to solve it.
Cheers, Doru
Any suggestions?
Best regards Meinert
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"If you can't say why something is relevant, it probably isn't."
-- www.tudorgirba.com www.feenk.com
"From an abstract enough point of view, any two things are similar."
Hi Meinert,
Please, let us know whether Doru’s help solved your problem.
Alexandre
On Aug 10, 2016, at 3:04 AM, Meinert Schwartau m.schwartau@gmail.com wrote:
Hi,
I want to display the dependencies between my classes. I wonder why the following code does not work, it displays the classes in a circle but not the edges between them. I’m using Moose 6 und Pharo 5 (downloaded yesterday) and evaluated the following code in the moose panel in the evaluator:
|view| view := RTMondrian new. view nodes: ArrayedCollection withAllSubclasses. view edges: (ArrayedCollection withAllSubclasses) from: [ :cls | cls yourself ] to: [ :cls | cls referencedClasses ]. view circleLayout. view
Then I tried to display the dependencies between my own classes (parsed by jdt2famix) but got an exception. After clicking on All classes in the moose panel I entered the following code in the evaluator: |view allClasses| view := RTMondrian new. allClasses := self allClasses. view nodes: allClasses. view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes]. view circleLayout. view
If I execute the code above, I get an “MessageNotUnderstood: reveiver of “atScope:” is nil” exception. If I remove the “view edges: allClasses from: [ :cls | cls yourself ] to: [ :cls | cls providerTypes].” statement I don’t get an exception, the RTMondorian view opens, but no classes are displayed as dots in the view.
Any suggestions?
Best regards Meinert
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev