Pharo-users
By thread
pharo-users@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
June 2015
- 95 participants
- 612 messages
Chaning node colors in a RTMondrian view (It was Re: Understanding edge connections and tree layout)
by Offray Vladimir Luna Cárdenas
Hi again :),
I would like to start a new exploration: How to change the color of the
nodes in the RTMondrian view. The examples in the agile visualization
book are with RTView, and I have seen some examples at the object
profile gallery, but I would like to start with something simpler. So if
I have the code running at [1], how can I change the color of the nodes
on the tree to reflect some property of the node?
[1] http://ws.stfx.eu/Q4I6UO67ZM4P
Cheers,
Offray
Ps: By the way, inspired by Wolfram's Tweet a Program
(https://twitter.com/wolframtap/) and Sven's elegant code examples, I'm
trying to "package and share" some examples of the knowledge we build
here to the external world in Twitter with the hashtag #PharoTip.
Something like See for example:
https://twitter.com/offrayLC/status/612409697975599104
On 20/06/15 13:44, Offray Vladimir Luna Cárdenas wrote:
> Thanks Alexandre and Nicolai,
>
> Now with a modified version of the script at
> http://ws.stfx.eu/AOPPDKEGTVFG I get the result below at the left,
> which has practically the same topology of the original fossil
> timeline tree below at right. Now I would like to change the edge
> length so it can convey commit date information (when commit happens)
> and look even more similar. I will make some test with RTMultiLine and
> orthoVertical shapes for edges, but any pointer to edge length
> variation and node distance examples will be greatly appreciated.
>
> Finally about why "parents" instead of "parent" I try to use the same
> terms in the Json file export for the properties imported in the
> object. I imagine that if a commit is a merge of several branches, it
> could have several parents. I will test with more complicated trees to
> test if this case prompts.
>
>
>
>
> Cheers,
>
> Offray
>
>
>
> On 20/06/15 12:46, Alexandre Bergel wrote:
>> Hi Offray,
>>
>> The problem is rather easy to solve. Consider this script:
>>
>> -=-=-=-=-=-=-=-=-=-=-=-=
>> timeline := FossilTimeline new.
>> timeline importFromUrl: 'http://mutabit.com/deltas/repos.fossil/piamed/libro/doc/tip/Libro/timeline-…'.
>>
>>
>> "Visualization"
>> view := RTMondrian new.
>> view nodes: timeline commits.
>> view edges
>> connectFrom: #parents.
>> view layout tree.
>> view.
>> -=-=-=-=-=-=-=-=-=-=-=-=
>>
>> Apparently, each fossil commit has a parent. The parent could be nil (which is okay).
>> Why do you call the variable âparentsâ and not âparentâ ?
>>
>> Cheers,
>> Alexandre
>>
>>> On Jun 19, 2015, at 9:41 AM, Offray Vladimir Luna Cárdenas<offray(a)riseup.net> wrote:
>>>
>>> Alexandre,
>>>
>>> Could you please run this:
>>>
>>> ~~~~~~~~~
>>> "Adapted from:https://vimeo.com/116886609"
>>> | view timeline |
>>>
>>> "Loading package for working with fossil"
>>> "Integration with external tools"
>>> Gofer new
>>> smalltalkhubUser: 'Offray' project: 'Grafoscopio';
>>> package: 'Grafoscopio-ExternalTools';
>>> load.
>>>
>>> "Extracting data"
>>> timeline := FossilTimeline new.
>>> timeline importFromUrl: 'http://mutabit.com/deltas/repos.fossil/piamed/libro/doc/tip/Libro/timeline-…'.
>>>
>>> "Visualization"
>>> view := RTMondrian new.
>>> view nodes: timeline commits.
>>> view edges
>>> connectFrom: [#parents first].
>>> view layout tree.
>>> view.
>>> "(timeline commits at: 1) parents first"
>>> ~~~~~~~~~
>>>
>>> At the end you will get a set of squares visualized like this ones:
>>>
>>> <jcjdcjje..png>
>>> ^Up Graphic 1: Trying to understand edges.
>>>
>>> These squares are representations of FossilCommits objects imported from a Json file, and the "connectFrom: [#parents first]" is the line I'm having problems with. "#parents first" is the message I send to each node to know its parents in that very collection of commits, so I imagined that if I put that as the block argument for "connectFrom" I would get a nice tree, similar to the graphic 2 below. I don't get what's happening here or what I'm missing.
>>>
>>> <cfbfiagc..png>
>>> ^ Up Graphic 2: A nicely drawn mondrian tree layout for RTLayout.
>>>
>>> Any help on how to get tree like visualizations for this Fossil objects would be greatly appreciated.
>>>
>>> Thanks,
>>>
>>> Offray
>>>
>>> Ps: Something was happening with ws.stfx.eu this morning at 7:00 (GMT -5) and trying to publish a workspace gives a 500 error.
>>>
>>>
>>> On 16/06/15 16:08, Alexandre Bergel wrote:
>>>> I am not really following. Hard to guess here.
>>>>
>>>> Can you make the image accessible for me? I can then have a closer look at it.
>>>>
>>>> Alexandre
>>>>
>>>>
>>>>
>>>>> On Jun 15, 2015, at 3:18 PM, Offray Vladimir Luna Cárdenas<offray(a)riseup.net>
>>>>> wrote:
>>>>>
>>>>> Hi all. Is me again :),
>>>>>
>>>>> I have being fighting all this morning trying to bet a better understanding of edge connections and tree layouts. I'm making some progress, but still I don't grasp it. At [1] you can find my starting example. So far, so good, so I created my own variation for my own data at [2]. My main issue is the #connectFrom message argument. If you uncomment the last line of [1] you will see that sending the #superclass message gives me an object that is of the same kind that the ones have been added to the view previously and I imagine that the reason they can be connected in a tree. With the example at [2] the message [#parents first] gives me a fossil commit object, but if I ran the code, the nodes are unconnected. What I'm missing?
>>>>>
>>>>> [1]
>>>>> http://ws.stfx.eu/DK3VNXBVAHXF
>>>>>
>>>>> [2]
>>>>> http://ws.stfx.eu/DHF4VIR8TSPC
>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Offray
>>>>>
>>>>> On 15/06/15 06:47, Offray Vladimir Luna Cárdenas wrote:
>>>>>
>>>>>> Hi Peter,
>>>>>>
>>>>>> Thanks for your quick answer. I was pretty curious about trying to implement some of this ideas, but only until today I had the proper time to do it. I ran your code and now I'm trying to translate the ideas on it to my problem: Drawing a tree for the story of a fossil repository.
>>>>>>
>>>>>> First, using the procedure at [1] I was able to export a fossil commit repo history as Json and by running the script at [2] I was able to get a small set of dots, which represent dictionaries with all commit data, including ancestors for each node, like the attached screenshot shows. In the video at [3] at 1:06 min, seems that lays the key for my visualization, but for that I need to create a fossil commit object that can understand the #ancestor message. Because I already have them as dictionaries thanks to NeoJson, seems that I'm really close to get the visualization I'm looking for. I hope to work on it this morning and return to the list with data visualizations or more questions.
>>>>>>
>>>>>>
>>>>>> [1]
>>>>>> http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
>>>>>>
>>>>>> [2]
>>>>>> http://ws.stfx.eu/A5C8JJMA2HUK
>>>>>>
>>>>>> [3]
>>>>>> https://vimeo.com/116886609
>>>>>>
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>> Offray
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 02/06/15 05:09, Peter Uhnák wrote:
>>>>>>
>>>>>>> HI Offray,
>>>>>>>
>>>>>>> I gave it a quick bash and come up with the following code. It's just a prototype and could be greatly simplified.
>>>>>>>
>>>>>>> - MCVersionInfo ancestors for whatever reason returned empty array down the line (so its cut off at the end), but I didn't investigate the problem
>>>>>>> - edge building and possibly ancestor retrieval could be simplified with builders; I think RTMondrian has methods for it but can't remember exactly (agilevisualization mentioned RTGraphBuilder but that has been removed to my knowledge)
>>>>>>>
>>>>>>> ~~~~~~~~~~~~~~~
>>>>>>> mc := MCSmalltalkhubRepository allInstances detect: [ :m | m project = 'Roassal2' ].
>>>>>>>
>>>>>>> root := mc versionInfoFromFileNamed: mc readableFileNames first.
>>>>>>>
>>>>>>> family := Set new.
>>>>>>> retriever := nil.
>>>>>>> retriever := [ :child |
>>>>>>> family add: child.
>>>>>>> child ancestors do: [ :a | retriever value: a ]
>>>>>>> ].
>>>>>>> retriever value: root.
>>>>>>> obs := family asGroup.
>>>>>>>
>>>>>>> v := RTView new.
>>>>>>> es := RTEllipse new size: 15; color: Color blue; elementsOn: obs.
>>>>>>> v addAll: es.
>>>>>>>
>>>>>>> edges := RTEdge
>>>>>>> buildEdgesFromObjects: obs
>>>>>>> from: #yourself
>>>>>>> toAll: #ancestors
>>>>>>> using: (RTArrowedLine new withShorterDistanceAttachPoint; color: Color red)
>>>>>>> scope: es.
>>>>>>> v addAll: edges.
>>>>>>>
>>>>>>> es @ RTDraggable.
>>>>>>> es @ (RTLabelled new text: [ :m | m nameWithout: 'Roassal2' ]).
>>>>>>>
>>>>>>> v @ RTDraggableView.
>>>>>>> v @ RTZoomableView.
>>>>>>>
>>>>>>> RTDominanceTreeLayout new
>>>>>>> verticalGap: 30;
>>>>>>> horizontalGap: 15;
>>>>>>> on: es.
>>>>>>>
>>>>>>> v open
>>>>>>> ~~~~~~~~~~~~~~~~
>>>>>>>
>>>>>>>
>>>>>>> <Mail Attachment.png>
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Peter
>>>>>>> â
>>>>>>>
>>>>>>> On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas
>>>>>>> <offray(a)riseup.net>
>>>>>>> wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> On a closer detail, seems that [1] contains the starting point I'm looking for. I'll keep you posted and of course any other approach will be listened.
>>>>>>>
>>>>>>> [1]
>>>>>>> https://dl.dropboxusercontent.com/u/31543901/AgileVisualization/Roassal/010…
>>>>>>>
>>>>>>>
>>>>>>> Cheers,
>>>>>>>
>>>>>>> Offray
>>>>>>>
>>>>>>>
>>>>>>> On 01/06/15 22:04, Offray Vladimir Luna Cárdenas wrote:
>>>>>>> Hi all,
>>>>>>>
>>>>>>> I had asked a similar question before with no much advances, but today I made a discovery that can improve the things a lot: how to export timeline data as structured JSON [1] (and of course this open the possibility to work with it on Pharo). Now I would like to graph the data as a tree with forks, merges and dates and authors of commits. I have seen chronia, but seems overkill for this feature (and is integrated with CVS only).
>>>>>>>
>>>>>>> [1]
>>>>>>> http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
>>>>>>>
>>>>>>>
>>>>>>> As usual, any pointer on how to get this going will be greatly appreciated and I will give feedback to the community on how to do it.
>>>>>>>
>>>>>>> Cheers,
>>>>>>>
>>>>>>> Offray
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>
June 21, 2015
Re: [Pharo-users] Status of Twitter (api/analysis/visualization) in Pharo?
by Offray Vladimir Luna Cárdenas
Thanks Arturo. Seems a really interesting advance. The seaside UI uses
the Twitter API? Let us know when the project is uploaded.
Cheers,
Offray
On 16/06/15 11:18, Arturo Zambrano wrote:
> Hi Martin,
> this are good news. There is a seaside base UI for controlling tweets
> download. I will let you know as soon as it is uploaded.
>
> Visualizations are working, the code is crappy but works... I have
> some documentation I will send it to you (all of them are very basic
> examples we built for the last world cup), unfortunately it is Spanish
> only, but you will get the idea from the code snippets.
> regards
> art
>
> On Tue, Jun 16, 2015 at 12:44 PM, MartinW <wm(a)fastmail.fm
> <mailto:wm@fastmail.fm>> wrote:
>
> MartinW wrote
> > I succeeded in installing parts of TwitterRoassalPlayGround in a Pharo 3
> > image.
> >
> http://smalltalkhub.com/#!/~arturozambrano/TwitterRoassalPlayGround <http://smalltalkhub.com/#%21/%7Earturozambrano/TwitterRoassalPlayGround>
> >
> > - The RESTRetriever seems to work fine, but the Rest results are
> very
> > limited due to Twitter's own limitations.
> > - The StreamingRetriever does simply not produce any results at
> all, but
> > also no errors.
>
> I got the StreamingRetriever to work..
>
>
>
>
> --
> View this message in context:
> http://forum.world.st/Status-of-Twitter-api-analysis-visualization-in-Pharo…
> Sent from the Pharo Smalltalk Users mailing list archive at
> Nabble.com.
>
>
June 20, 2015
Re: [Pharo-users] Status of Twitter (api/analysis/visualization) in Pharo?
by Offray Vladimir Luna Cárdenas
Hi Martin,
On 16/06/15 10:14, MartinW wrote:
> Thank you very much, Offray, that looks very interesting.
Thanks. I think that is important to keep politicians and public
accountable for what they say and do and social networks could help in
doing that in a more dynamic way (of course is not enough).
> When was the last time, you used the scraping plugin? It does run and
> scrolls down the twitter pages, but there is no result at all to be found in
> the console. Can it be that Twitter changed the format lately?
The last time was April, but if the scroll works, you should be able to
inspect the DOM from the browser and export it following the
instructions at the blog post. The browser knows about the DOM of the
page that is being showed currently and if you are capable of seeing it
in the browser, you should be able to inspect and save. We will test the
script again and improve the code next week in a week long workshop on
data visualization using Pharo/Roassal, so I will keep you posted about
what's happening with this approach.
> I will try to find a way to harvest tweets first, and then I will try your
> visualization engine.
Ok. Let me know what happens.
Cheers,
Offray
June 20, 2015
Re: [Pharo-users] Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)
by Offray Vladimir Luna Cárdenas
Thanks Alexandre and Nicolai,
Now with a modified version of the script at
http://ws.stfx.eu/AOPPDKEGTVFG I get the result below at the left, which
has practically the same topology of the original fossil timeline tree
below at right. Now I would like to change the edge length so it can
convey commit date information (when commit happens) and look even more
similar. I will make some test with RTMultiLine and orthoVertical shapes
for edges, but any pointer to edge length variation and node distance
examples will be greatly appreciated.
Finally about why "parents" instead of "parent" I try to use the same
terms in the Json file export for the properties imported in the object.
I imagine that if a commit is a merge of several branches, it could have
several parents. I will test with more complicated trees to test if this
case prompts.
Cheers,
Offray
On 20/06/15 12:46, Alexandre Bergel wrote:
> Hi Offray,
>
> The problem is rather easy to solve. Consider this script:
>
> -=-=-=-=-=-=-=-=-=-=-=-=
> timeline := FossilTimeline new.
> timeline importFromUrl: 'http://mutabit.com/deltas/repos.fossil/piamed/libro/doc/tip/Libro/timeline-…'.
>
>
> "Visualization"
> view := RTMondrian new.
> view nodes: timeline commits.
> view edges
> connectFrom: #parents.
> view layout tree.
> view.
> -=-=-=-=-=-=-=-=-=-=-=-=
>
> Apparently, each fossil commit has a parent. The parent could be nil (which is okay).
> Why do you call the variable âparentsâ and not âparentâ ?
>
> Cheers,
> Alexandre
>
>> On Jun 19, 2015, at 9:41 AM, Offray Vladimir Luna Cárdenas <offray(a)riseup.net> wrote:
>>
>> Alexandre,
>>
>> Could you please run this:
>>
>> ~~~~~~~~~
>> "Adapted from: https://vimeo.com/116886609"
>> | view timeline |
>>
>> "Loading package for working with fossil"
>> "Integration with external tools"
>> Gofer new
>> smalltalkhubUser: 'Offray' project: 'Grafoscopio';
>> package: 'Grafoscopio-ExternalTools';
>> load.
>>
>> "Extracting data"
>> timeline := FossilTimeline new.
>> timeline importFromUrl: 'http://mutabit.com/deltas/repos.fossil/piamed/libro/doc/tip/Libro/timeline-…'.
>>
>> "Visualization"
>> view := RTMondrian new.
>> view nodes: timeline commits.
>> view edges
>> connectFrom: [#parents first].
>> view layout tree.
>> view.
>> "(timeline commits at: 1) parents first"
>> ~~~~~~~~~
>>
>> At the end you will get a set of squares visualized like this ones:
>>
>> <jcjdcjje..png>
>> ^Up Graphic 1: Trying to understand edges.
>>
>> These squares are representations of FossilCommits objects imported from a Json file, and the "connectFrom: [#parents first]" is the line I'm having problems with. "#parents first" is the message I send to each node to know its parents in that very collection of commits, so I imagined that if I put that as the block argument for "connectFrom" I would get a nice tree, similar to the graphic 2 below. I don't get what's happening here or what I'm missing.
>>
>> <cfbfiagc..png>
>> ^ Up Graphic 2: A nicely drawn mondrian tree layout for RTLayout.
>>
>> Any help on how to get tree like visualizations for this Fossil objects would be greatly appreciated.
>>
>> Thanks,
>>
>> Offray
>>
>> Ps: Something was happening with ws.stfx.eu this morning at 7:00 (GMT -5) and trying to publish a workspace gives a 500 error.
>>
>>
>> On 16/06/15 16:08, Alexandre Bergel wrote:
>>> I am not really following. Hard to guess here.
>>>
>>> Can you make the image accessible for me? I can then have a closer look at it.
>>>
>>> Alexandre
>>>
>>>
>>>
>>>> On Jun 15, 2015, at 3:18 PM, Offray Vladimir Luna Cárdenas <offray(a)riseup.net>
>>>> wrote:
>>>>
>>>> Hi all. Is me again :),
>>>>
>>>> I have being fighting all this morning trying to bet a better understanding of edge connections and tree layouts. I'm making some progress, but still I don't grasp it. At [1] you can find my starting example. So far, so good, so I created my own variation for my own data at [2]. My main issue is the #connectFrom message argument. If you uncomment the last line of [1] you will see that sending the #superclass message gives me an object that is of the same kind that the ones have been added to the view previously and I imagine that the reason they can be connected in a tree. With the example at [2] the message [#parents first] gives me a fossil commit object, but if I ran the code, the nodes are unconnected. What I'm missing?
>>>>
>>>> [1]
>>>> http://ws.stfx.eu/DK3VNXBVAHXF
>>>>
>>>> [2]
>>>> http://ws.stfx.eu/DHF4VIR8TSPC
>>>>
>>>>
>>>> Thanks,
>>>>
>>>> Offray
>>>>
>>>> On 15/06/15 06:47, Offray Vladimir Luna Cárdenas wrote:
>>>>
>>>>> Hi Peter,
>>>>>
>>>>> Thanks for your quick answer. I was pretty curious about trying to implement some of this ideas, but only until today I had the proper time to do it. I ran your code and now I'm trying to translate the ideas on it to my problem: Drawing a tree for the story of a fossil repository.
>>>>>
>>>>> First, using the procedure at [1] I was able to export a fossil commit repo history as Json and by running the script at [2] I was able to get a small set of dots, which represent dictionaries with all commit data, including ancestors for each node, like the attached screenshot shows. In the video at [3] at 1:06 min, seems that lays the key for my visualization, but for that I need to create a fossil commit object that can understand the #ancestor message. Because I already have them as dictionaries thanks to NeoJson, seems that I'm really close to get the visualization I'm looking for. I hope to work on it this morning and return to the list with data visualizations or more questions.
>>>>>
>>>>>
>>>>> [1]
>>>>> http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
>>>>>
>>>>> [2]
>>>>> http://ws.stfx.eu/A5C8JJMA2HUK
>>>>>
>>>>> [3]
>>>>> https://vimeo.com/116886609
>>>>>
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Offray
>>>>>
>>>>>
>>>>>
>>>>> On 02/06/15 05:09, Peter Uhnák wrote:
>>>>>
>>>>>> HI Offray,
>>>>>>
>>>>>> I gave it a quick bash and come up with the following code. It's just a prototype and could be greatly simplified.
>>>>>>
>>>>>> - MCVersionInfo ancestors for whatever reason returned empty array down the line (so its cut off at the end), but I didn't investigate the problem
>>>>>> - edge building and possibly ancestor retrieval could be simplified with builders; I think RTMondrian has methods for it but can't remember exactly (agilevisualization mentioned RTGraphBuilder but that has been removed to my knowledge)
>>>>>>
>>>>>> ~~~~~~~~~~~~~~~
>>>>>> mc := MCSmalltalkhubRepository allInstances detect: [ :m | m project = 'Roassal2' ].
>>>>>>
>>>>>> root := mc versionInfoFromFileNamed: mc readableFileNames first.
>>>>>>
>>>>>> family := Set new.
>>>>>> retriever := nil.
>>>>>> retriever := [ :child |
>>>>>> family add: child.
>>>>>> child ancestors do: [ :a | retriever value: a ]
>>>>>> ].
>>>>>> retriever value: root.
>>>>>> obs := family asGroup.
>>>>>>
>>>>>> v := RTView new.
>>>>>> es := RTEllipse new size: 15; color: Color blue; elementsOn: obs.
>>>>>> v addAll: es.
>>>>>>
>>>>>> edges := RTEdge
>>>>>> buildEdgesFromObjects: obs
>>>>>> from: #yourself
>>>>>> toAll: #ancestors
>>>>>> using: (RTArrowedLine new withShorterDistanceAttachPoint; color: Color red)
>>>>>> scope: es.
>>>>>> v addAll: edges.
>>>>>>
>>>>>> es @ RTDraggable.
>>>>>> es @ (RTLabelled new text: [ :m | m nameWithout: 'Roassal2' ]).
>>>>>>
>>>>>> v @ RTDraggableView.
>>>>>> v @ RTZoomableView.
>>>>>>
>>>>>> RTDominanceTreeLayout new
>>>>>> verticalGap: 30;
>>>>>> horizontalGap: 15;
>>>>>> on: es.
>>>>>>
>>>>>> v open
>>>>>> ~~~~~~~~~~~~~~~~
>>>>>>
>>>>>>
>>>>>> <Mail Attachment.png>
>>>>>>
>>>>>> Cheers,
>>>>>> Peter
>>>>>> â
>>>>>>
>>>>>> On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas
>>>>>> <offray(a)riseup.net>
>>>>>> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> On a closer detail, seems that [1] contains the starting point I'm looking for. I'll keep you posted and of course any other approach will be listened.
>>>>>>
>>>>>> [1]
>>>>>> https://dl.dropboxusercontent.com/u/31543901/AgileVisualization/Roassal/010…
>>>>>>
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>> Offray
>>>>>>
>>>>>>
>>>>>> On 01/06/15 22:04, Offray Vladimir Luna Cárdenas wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> I had asked a similar question before with no much advances, but today I made a discovery that can improve the things a lot: how to export timeline data as structured JSON [1] (and of course this open the possibility to work with it on Pharo). Now I would like to graph the data as a tree with forks, merges and dates and authors of commits. I have seen chronia, but seems overkill for this feature (and is integrated with CVS only).
>>>>>>
>>>>>> [1]
>>>>>> http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
>>>>>>
>>>>>>
>>>>>> As usual, any pointer on how to get this going will be greatly appreciated and I will give feedback to the community on how to do it.
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>> Offray
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
June 20, 2015
Re: [Pharo-users] Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)
by Alexandre Bergel
Let me know if this works for you
Cheers,
Alexandre
> On Jun 20, 2015, at 2:46 PM, Alexandre Bergel <alexandre.bergel(a)me.com> wrote:
>
> Hi Offray,
>
> The problem is rather easy to solve. Consider this script:
>
> -=-=-=-=-=-=-=-=-=-=-=-=
> timeline := FossilTimeline new.
> timeline importFromUrl: 'http://mutabit.com/deltas/repos.fossil/piamed/libro/doc/tip/Libro/timeline-…'.
>
>
> "Visualization"
> view := RTMondrian new.
> view nodes: timeline commits.
> view edges
> connectFrom: #parents.
> view layout tree.
> view.
> -=-=-=-=-=-=-=-=-=-=-=-=
>
> Apparently, each fossil commit has a parent. The parent could be nil (which is okay).
> Why do you call the variable âparentsâ and not âparentâ ?
>
> Cheers,
> Alexandre
>
>> On Jun 19, 2015, at 9:41 AM, Offray Vladimir Luna Cárdenas <offray(a)riseup.net> wrote:
>>
>> Alexandre,
>>
>> Could you please run this:
>>
>> ~~~~~~~~~
>> "Adapted from: https://vimeo.com/116886609"
>> | view timeline |
>>
>> "Loading package for working with fossil"
>> "Integration with external tools"
>> Gofer new
>> smalltalkhubUser: 'Offray' project: 'Grafoscopio';
>> package: 'Grafoscopio-ExternalTools';
>> load.
>>
>> "Extracting data"
>> timeline := FossilTimeline new.
>> timeline importFromUrl: 'http://mutabit.com/deltas/repos.fossil/piamed/libro/doc/tip/Libro/timeline-…'.
>>
>> "Visualization"
>> view := RTMondrian new.
>> view nodes: timeline commits.
>> view edges
>> connectFrom: [#parents first].
>> view layout tree.
>> view.
>> "(timeline commits at: 1) parents first"
>> ~~~~~~~~~
>>
>> At the end you will get a set of squares visualized like this ones:
>>
>> <jcjdcjje..png>
>> ^Up Graphic 1: Trying to understand edges.
>>
>> These squares are representations of FossilCommits objects imported from a Json file, and the "connectFrom: [#parents first]" is the line I'm having problems with. "#parents first" is the message I send to each node to know its parents in that very collection of commits, so I imagined that if I put that as the block argument for "connectFrom" I would get a nice tree, similar to the graphic 2 below. I don't get what's happening here or what I'm missing.
>>
>> <cfbfiagc..png>
>> ^ Up Graphic 2: A nicely drawn mondrian tree layout for RTLayout.
>>
>> Any help on how to get tree like visualizations for this Fossil objects would be greatly appreciated.
>>
>> Thanks,
>>
>> Offray
>>
>> Ps: Something was happening with ws.stfx.eu this morning at 7:00 (GMT -5) and trying to publish a workspace gives a 500 error.
>>
>>
>> On 16/06/15 16:08, Alexandre Bergel wrote:
>>> I am not really following. Hard to guess here.
>>>
>>> Can you make the image accessible for me? I can then have a closer look at it.
>>>
>>> Alexandre
>>>
>>>
>>>
>>>> On Jun 15, 2015, at 3:18 PM, Offray Vladimir Luna Cárdenas <offray(a)riseup.net>
>>>> wrote:
>>>>
>>>> Hi all. Is me again :),
>>>>
>>>> I have being fighting all this morning trying to bet a better understanding of edge connections and tree layouts. I'm making some progress, but still I don't grasp it. At [1] you can find my starting example. So far, so good, so I created my own variation for my own data at [2]. My main issue is the #connectFrom message argument. If you uncomment the last line of [1] you will see that sending the #superclass message gives me an object that is of the same kind that the ones have been added to the view previously and I imagine that the reason they can be connected in a tree. With the example at [2] the message [#parents first] gives me a fossil commit object, but if I ran the code, the nodes are unconnected. What I'm missing?
>>>>
>>>> [1]
>>>> http://ws.stfx.eu/DK3VNXBVAHXF
>>>>
>>>> [2]
>>>> http://ws.stfx.eu/DHF4VIR8TSPC
>>>>
>>>>
>>>> Thanks,
>>>>
>>>> Offray
>>>>
>>>> On 15/06/15 06:47, Offray Vladimir Luna Cárdenas wrote:
>>>>
>>>>> Hi Peter,
>>>>>
>>>>> Thanks for your quick answer. I was pretty curious about trying to implement some of this ideas, but only until today I had the proper time to do it. I ran your code and now I'm trying to translate the ideas on it to my problem: Drawing a tree for the story of a fossil repository.
>>>>>
>>>>> First, using the procedure at [1] I was able to export a fossil commit repo history as Json and by running the script at [2] I was able to get a small set of dots, which represent dictionaries with all commit data, including ancestors for each node, like the attached screenshot shows. In the video at [3] at 1:06 min, seems that lays the key for my visualization, but for that I need to create a fossil commit object that can understand the #ancestor message. Because I already have them as dictionaries thanks to NeoJson, seems that I'm really close to get the visualization I'm looking for. I hope to work on it this morning and return to the list with data visualizations or more questions.
>>>>>
>>>>>
>>>>> [1]
>>>>> http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
>>>>>
>>>>> [2]
>>>>> http://ws.stfx.eu/A5C8JJMA2HUK
>>>>>
>>>>> [3]
>>>>> https://vimeo.com/116886609
>>>>>
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Offray
>>>>>
>>>>>
>>>>>
>>>>> On 02/06/15 05:09, Peter Uhnák wrote:
>>>>>
>>>>>> HI Offray,
>>>>>>
>>>>>> I gave it a quick bash and come up with the following code. It's just a prototype and could be greatly simplified.
>>>>>>
>>>>>> - MCVersionInfo ancestors for whatever reason returned empty array down the line (so its cut off at the end), but I didn't investigate the problem
>>>>>> - edge building and possibly ancestor retrieval could be simplified with builders; I think RTMondrian has methods for it but can't remember exactly (agilevisualization mentioned RTGraphBuilder but that has been removed to my knowledge)
>>>>>>
>>>>>> ~~~~~~~~~~~~~~~
>>>>>> mc := MCSmalltalkhubRepository allInstances detect: [ :m | m project = 'Roassal2' ].
>>>>>>
>>>>>> root := mc versionInfoFromFileNamed: mc readableFileNames first.
>>>>>>
>>>>>> family := Set new.
>>>>>> retriever := nil.
>>>>>> retriever := [ :child |
>>>>>> family add: child.
>>>>>> child ancestors do: [ :a | retriever value: a ]
>>>>>> ].
>>>>>> retriever value: root.
>>>>>> obs := family asGroup.
>>>>>>
>>>>>> v := RTView new.
>>>>>> es := RTEllipse new size: 15; color: Color blue; elementsOn: obs.
>>>>>> v addAll: es.
>>>>>>
>>>>>> edges := RTEdge
>>>>>> buildEdgesFromObjects: obs
>>>>>> from: #yourself
>>>>>> toAll: #ancestors
>>>>>> using: (RTArrowedLine new withShorterDistanceAttachPoint; color: Color red)
>>>>>> scope: es.
>>>>>> v addAll: edges.
>>>>>>
>>>>>> es @ RTDraggable.
>>>>>> es @ (RTLabelled new text: [ :m | m nameWithout: 'Roassal2' ]).
>>>>>>
>>>>>> v @ RTDraggableView.
>>>>>> v @ RTZoomableView.
>>>>>>
>>>>>> RTDominanceTreeLayout new
>>>>>> verticalGap: 30;
>>>>>> horizontalGap: 15;
>>>>>> on: es.
>>>>>>
>>>>>> v open
>>>>>> ~~~~~~~~~~~~~~~~
>>>>>>
>>>>>>
>>>>>> <Mail Attachment.png>
>>>>>>
>>>>>> Cheers,
>>>>>> Peter
>>>>>> â
>>>>>>
>>>>>> On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas
>>>>>> <offray(a)riseup.net>
>>>>>> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> On a closer detail, seems that [1] contains the starting point I'm looking for. I'll keep you posted and of course any other approach will be listened.
>>>>>>
>>>>>> [1]
>>>>>> https://dl.dropboxusercontent.com/u/31543901/AgileVisualization/Roassal/010…
>>>>>>
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>> Offray
>>>>>>
>>>>>>
>>>>>> On 01/06/15 22:04, Offray Vladimir Luna Cárdenas wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> I had asked a similar question before with no much advances, but today I made a discovery that can improve the things a lot: how to export timeline data as structured JSON [1] (and of course this open the possibility to work with it on Pharo). Now I would like to graph the data as a tree with forks, merges and dates and authors of commits. I have seen chronia, but seems overkill for this feature (and is integrated with CVS only).
>>>>>>
>>>>>> [1]
>>>>>> http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
>>>>>>
>>>>>>
>>>>>> As usual, any pointer on how to get this going will be greatly appreciated and I will give feedback to the community on how to do it.
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>> Offray
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>
>
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
June 20, 2015
Re: [Pharo-users] Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)
by Alexandre Bergel
Hi Offray,
The problem is rather easy to solve. Consider this script:
-=-=-=-=-=-=-=-=-=-=-=-=
timeline := FossilTimeline new.
timeline importFromUrl: 'http://mutabit.com/deltas/repos.fossil/piamed/libro/doc/tip/Libro/timeline-…'.
"Visualization"
view := RTMondrian new.
view nodes: timeline commits.
view edges
connectFrom: #parents.
view layout tree.
view.
-=-=-=-=-=-=-=-=-=-=-=-=
Apparently, each fossil commit has a parent. The parent could be nil (which is okay).
Why do you call the variable âparentsâ and not âparentâ ?
Cheers,
Alexandre
> On Jun 19, 2015, at 9:41 AM, Offray Vladimir Luna Cárdenas <offray(a)riseup.net> wrote:
>
> Alexandre,
>
> Could you please run this:
>
> ~~~~~~~~~
> "Adapted from: https://vimeo.com/116886609"
> | view timeline |
>
> "Loading package for working with fossil"
> "Integration with external tools"
> Gofer new
> smalltalkhubUser: 'Offray' project: 'Grafoscopio';
> package: 'Grafoscopio-ExternalTools';
> load.
>
> "Extracting data"
> timeline := FossilTimeline new.
> timeline importFromUrl: 'http://mutabit.com/deltas/repos.fossil/piamed/libro/doc/tip/Libro/timeline-…'.
>
> "Visualization"
> view := RTMondrian new.
> view nodes: timeline commits.
> view edges
> connectFrom: [#parents first].
> view layout tree.
> view.
> "(timeline commits at: 1) parents first"
> ~~~~~~~~~
>
> At the end you will get a set of squares visualized like this ones:
>
> <jcjdcjje..png>
> ^Up Graphic 1: Trying to understand edges.
>
> These squares are representations of FossilCommits objects imported from a Json file, and the "connectFrom: [#parents first]" is the line I'm having problems with. "#parents first" is the message I send to each node to know its parents in that very collection of commits, so I imagined that if I put that as the block argument for "connectFrom" I would get a nice tree, similar to the graphic 2 below. I don't get what's happening here or what I'm missing.
>
> <cfbfiagc..png>
> ^ Up Graphic 2: A nicely drawn mondrian tree layout for RTLayout.
>
> Any help on how to get tree like visualizations for this Fossil objects would be greatly appreciated.
>
> Thanks,
>
> Offray
>
> Ps: Something was happening with ws.stfx.eu this morning at 7:00 (GMT -5) and trying to publish a workspace gives a 500 error.
>
>
> On 16/06/15 16:08, Alexandre Bergel wrote:
>> I am not really following. Hard to guess here.
>>
>> Can you make the image accessible for me? I can then have a closer look at it.
>>
>> Alexandre
>>
>>
>>
>>> On Jun 15, 2015, at 3:18 PM, Offray Vladimir Luna Cárdenas <offray(a)riseup.net>
>>> wrote:
>>>
>>> Hi all. Is me again :),
>>>
>>> I have being fighting all this morning trying to bet a better understanding of edge connections and tree layouts. I'm making some progress, but still I don't grasp it. At [1] you can find my starting example. So far, so good, so I created my own variation for my own data at [2]. My main issue is the #connectFrom message argument. If you uncomment the last line of [1] you will see that sending the #superclass message gives me an object that is of the same kind that the ones have been added to the view previously and I imagine that the reason they can be connected in a tree. With the example at [2] the message [#parents first] gives me a fossil commit object, but if I ran the code, the nodes are unconnected. What I'm missing?
>>>
>>> [1]
>>> http://ws.stfx.eu/DK3VNXBVAHXF
>>>
>>> [2]
>>> http://ws.stfx.eu/DHF4VIR8TSPC
>>>
>>>
>>> Thanks,
>>>
>>> Offray
>>>
>>> On 15/06/15 06:47, Offray Vladimir Luna Cárdenas wrote:
>>>
>>>> Hi Peter,
>>>>
>>>> Thanks for your quick answer. I was pretty curious about trying to implement some of this ideas, but only until today I had the proper time to do it. I ran your code and now I'm trying to translate the ideas on it to my problem: Drawing a tree for the story of a fossil repository.
>>>>
>>>> First, using the procedure at [1] I was able to export a fossil commit repo history as Json and by running the script at [2] I was able to get a small set of dots, which represent dictionaries with all commit data, including ancestors for each node, like the attached screenshot shows. In the video at [3] at 1:06 min, seems that lays the key for my visualization, but for that I need to create a fossil commit object that can understand the #ancestor message. Because I already have them as dictionaries thanks to NeoJson, seems that I'm really close to get the visualization I'm looking for. I hope to work on it this morning and return to the list with data visualizations or more questions.
>>>>
>>>>
>>>> [1]
>>>> http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
>>>>
>>>> [2]
>>>> http://ws.stfx.eu/A5C8JJMA2HUK
>>>>
>>>> [3]
>>>> https://vimeo.com/116886609
>>>>
>>>>
>>>> Cheers,
>>>>
>>>> Offray
>>>>
>>>>
>>>>
>>>> On 02/06/15 05:09, Peter Uhnák wrote:
>>>>
>>>>> HI Offray,
>>>>>
>>>>> I gave it a quick bash and come up with the following code. It's just a prototype and could be greatly simplified.
>>>>>
>>>>> - MCVersionInfo ancestors for whatever reason returned empty array down the line (so its cut off at the end), but I didn't investigate the problem
>>>>> - edge building and possibly ancestor retrieval could be simplified with builders; I think RTMondrian has methods for it but can't remember exactly (agilevisualization mentioned RTGraphBuilder but that has been removed to my knowledge)
>>>>>
>>>>> ~~~~~~~~~~~~~~~
>>>>> mc := MCSmalltalkhubRepository allInstances detect: [ :m | m project = 'Roassal2' ].
>>>>>
>>>>> root := mc versionInfoFromFileNamed: mc readableFileNames first.
>>>>>
>>>>> family := Set new.
>>>>> retriever := nil.
>>>>> retriever := [ :child |
>>>>> family add: child.
>>>>> child ancestors do: [ :a | retriever value: a ]
>>>>> ].
>>>>> retriever value: root.
>>>>> obs := family asGroup.
>>>>>
>>>>> v := RTView new.
>>>>> es := RTEllipse new size: 15; color: Color blue; elementsOn: obs.
>>>>> v addAll: es.
>>>>>
>>>>> edges := RTEdge
>>>>> buildEdgesFromObjects: obs
>>>>> from: #yourself
>>>>> toAll: #ancestors
>>>>> using: (RTArrowedLine new withShorterDistanceAttachPoint; color: Color red)
>>>>> scope: es.
>>>>> v addAll: edges.
>>>>>
>>>>> es @ RTDraggable.
>>>>> es @ (RTLabelled new text: [ :m | m nameWithout: 'Roassal2' ]).
>>>>>
>>>>> v @ RTDraggableView.
>>>>> v @ RTZoomableView.
>>>>>
>>>>> RTDominanceTreeLayout new
>>>>> verticalGap: 30;
>>>>> horizontalGap: 15;
>>>>> on: es.
>>>>>
>>>>> v open
>>>>> ~~~~~~~~~~~~~~~~
>>>>>
>>>>>
>>>>> <Mail Attachment.png>
>>>>>
>>>>> Cheers,
>>>>> Peter
>>>>> â
>>>>>
>>>>> On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas
>>>>> <offray(a)riseup.net>
>>>>> wrote:
>>>>> Hi,
>>>>>
>>>>> On a closer detail, seems that [1] contains the starting point I'm looking for. I'll keep you posted and of course any other approach will be listened.
>>>>>
>>>>> [1]
>>>>> https://dl.dropboxusercontent.com/u/31543901/AgileVisualization/Roassal/010…
>>>>>
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Offray
>>>>>
>>>>>
>>>>> On 01/06/15 22:04, Offray Vladimir Luna Cárdenas wrote:
>>>>> Hi all,
>>>>>
>>>>> I had asked a similar question before with no much advances, but today I made a discovery that can improve the things a lot: how to export timeline data as structured JSON [1] (and of course this open the possibility to work with it on Pharo). Now I would like to graph the data as a tree with forks, merges and dates and authors of commits. I have seen chronia, but seems overkill for this feature (and is integrated with CVS only).
>>>>>
>>>>> [1]
>>>>> http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
>>>>>
>>>>>
>>>>> As usual, any pointer on how to get this going will be greatly appreciated and I will give feedback to the community on how to do it.
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Offray
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
June 20, 2015
Any YAML parser?
by Julien Delplanque
Hi everybody,
I googled a bit for a YAML parser in Pharo but I didn't found anything.
Does anybody wrote a YAML parser for Pharo?
Regards,
Julien
June 20, 2015
Re: [Pharo-users] Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)
by Sven Van Caekenberghe
> On 19 Jun 2015, at 14:41, Offray Vladimir Luna Cárdenas <offray(a)riseup.net> wrote:
>
> Ps: Something was happening with ws.stfx.eu this morning at 7:00 (GMT -5) and trying to publish a workspace gives a 500 error.
Yes, there was a problem due to a recent upgrade to Pharo 4.
It should be fixed now.
Sven
June 19, 2015
Re: [Pharo-users] Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)
by Nicolai Hess
2015-06-19 14:41 GMT+02:00 Offray Vladimir Luna Cárdenas <offray(a)riseup.net>
:
> Alexandre,
>
> Could you please run this:
>
> ~~~~~~~~~
> "Adapted from: https://vimeo.com/116886609"
> | view timeline |
>
> "Loading package for working with fossil"
> "Integration with external tools"
> Gofer new
> smalltalkhubUser: 'Offray' project: 'Grafoscopio';
> package: 'Grafoscopio-ExternalTools';
> load.
>
> "Extracting data"
> timeline := FossilTimeline new.
> timeline importFromUrl: '
> http://mutabit.com/deltas/repos.fossil/piamed/libro/doc/tip/Libro/timeline-…
> '.
>
> "Visualization"
> view := RTMondrian new.
> view nodes: timeline commits.
> view edges
> connectFrom: [#parents first].
> view layout tree.
> view.
> "(timeline commits at: 1) parents first"
> ~~~~~~~~~
>
> At the end you will get a set of squares visualized like this ones:
>
>
> ^Up Graphic 1: Trying to understand edges.
>
> These squares are representations of FossilCommits objects imported from a
> Json file, and the "connectFrom: [#parents first]" is the line I'm having
> problems with. "#parents first" is the message I send to each node to know
> its parents in that very collection of commits, so I imagined that if I put
> that as the block argument for "connectFrom" I would get a nice tree,
> similar to the graphic 2 below. I don't get what's happening here or what
> I'm missing.
>
1. check if the parents can be nil
2. I don't know why, but with connectFrom:, all nodes layout at the same
position
-> connectTo: works
view edges
connectTo: [:e | e parents ifNil:[e] ifNotNil:[:p | p first]].
>
>
> ^ Up Graphic 2: A nicely drawn mondrian tree layout for RTLayout.
>
> Any help on how to get tree like visualizations for this Fossil objects
> would be greatly appreciated.
>
> Thanks,
>
> Offray
>
> Ps: Something was happening with ws.stfx.eu this morning at 7:00 (GMT -5)
> and trying to publish a workspace gives a 500 error.
>
>
>
> On 16/06/15 16:08, Alexandre Bergel wrote:
>
> I am not really following. Hard to guess here.
>
> Can you make the image accessible for me? I can then have a closer look at it.
>
> Alexandre
>
>
>
> On Jun 15, 2015, at 3:18 PM, Offray Vladimir Luna Cárdenas <offray(a)riseup.net> <offray(a)riseup.net> wrote:
>
> Hi all. Is me again :),
>
> I have being fighting all this morning trying to bet a better understanding of edge connections and tree layouts. I'm making some progress, but still I don't grasp it. At [1] you can find my starting example. So far, so good, so I created my own variation for my own data at [2]. My main issue is the #connectFrom message argument. If you uncomment the last line of [1] you will see that sending the #superclass message gives me an object that is of the same kind that the ones have been added to the view previously and I imagine that the reason they can be connected in a tree. With the example at [2] the message [#parents first] gives me a fossil commit object, but if I ran the code, the nodes are unconnected. What I'm missing?
>
> [1] http://ws.stfx.eu/DK3VNXBVAHXF
> [2] http://ws.stfx.eu/DHF4VIR8TSPC
>
> Thanks,
>
> Offray
>
> On 15/06/15 06:47, Offray Vladimir Luna Cárdenas wrote:
>
> Hi Peter,
>
> Thanks for your quick answer. I was pretty curious about trying to implement some of this ideas, but only until today I had the proper time to do it. I ran your code and now I'm trying to translate the ideas on it to my problem: Drawing a tree for the story of a fossil repository.
>
> First, using the procedure at [1] I was able to export a fossil commit repo history as Json and by running the script at [2] I was able to get a small set of dots, which represent dictionaries with all commit data, including ancestors for each node, like the attached screenshot shows. In the video at [3] at 1:06 min, seems that lays the key for my visualization, but for that I need to create a fossil commit object that can understand the #ancestor message. Because I already have them as dictionaries thanks to NeoJson, seems that I'm really close to get the visualization I'm looking for. I hope to work on it this morning and return to the list with data visualizations or more questions.
>
>
> [1] http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
> [2] http://ws.stfx.eu/A5C8JJMA2HUK
> [3] https://vimeo.com/116886609
>
> Cheers,
>
> Offray
>
>
>
> On 02/06/15 05:09, Peter Uhnák wrote:
>
> HI Offray,
>
> I gave it a quick bash and come up with the following code. It's just a prototype and could be greatly simplified.
>
> - MCVersionInfo ancestors for whatever reason returned empty array down the line (so its cut off at the end), but I didn't investigate the problem
> - edge building and possibly ancestor retrieval could be simplified with builders; I think RTMondrian has methods for it but can't remember exactly (agilevisualization mentioned RTGraphBuilder but that has been removed to my knowledge)
>
> ~~~~~~~~~~~~~~~
> mc := MCSmalltalkhubRepository allInstances detect: [ :m | m project = 'Roassal2' ].
>
> root := mc versionInfoFromFileNamed: mc readableFileNames first.
>
> family := Set new.
> retriever := nil.
> retriever := [ :child |
> family add: child.
> child ancestors do: [ :a | retriever value: a ]
> ].
> retriever value: root.
> obs := family asGroup.
>
> v := RTView new.
> es := RTEllipse new size: 15; color: Color blue; elementsOn: obs.
> v addAll: es.
>
> edges := RTEdge
> buildEdgesFromObjects: obs
> from: #yourself
> toAll: #ancestors
> using: (RTArrowedLine new withShorterDistanceAttachPoint; color: Color red)
> scope: es.
> v addAll: edges.
>
> es @ RTDraggable.
> es @ (RTLabelled new text: [ :m | m nameWithout: 'Roassal2' ]).
>
> v @ RTDraggableView.
> v @ RTZoomableView.
>
> RTDominanceTreeLayout new
> verticalGap: 30;
> horizontalGap: 15;
> on: es.
>
> v open
> ~~~~~~~~~~~~~~~~
>
>
> <Mail Attachment.png>
>
> Cheers,
> Peter
> â
>
> On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <offray(a)riseup.net> <offray(a)riseup.net> wrote:
> Hi,
>
> On a closer detail, seems that [1] contains the starting point I'm looking for. I'll keep you posted and of course any other approach will be listened.
>
> [1] https://dl.dropboxusercontent.com/u/31543901/AgileVisualization/Roassal/010…
>
> Cheers,
>
> Offray
>
>
> On 01/06/15 22:04, Offray Vladimir Luna Cárdenas wrote:
> Hi all,
>
> I had asked a similar question before with no much advances, but today I made a discovery that can improve the things a lot: how to export timeline data as structured JSON [1] (and of course this open the possibility to work with it on Pharo). Now I would like to graph the data as a tree with forks, merges and dates and authors of commits. I have seen chronia, but seems overkill for this feature (and is integrated with CVS only).
>
> [1] http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
>
> As usual, any pointer on how to get this going will be greatly appreciated and I will give feedback to the community on how to do it.
>
> Cheers,
>
> Offray
>
>
>
>
>
>
>
>
June 19, 2015
Re: [Pharo-users] Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)
by Offray Vladimir Luna Cárdenas
Alexandre,
Could you please run this:
~~~~~~~~~
"Adapted from: https://vimeo.com/116886609"
| view timeline |
"Loading package for working with fossil"
"Integration with external tools"
Gofer new
smalltalkhubUser: 'Offray' project: 'Grafoscopio';
package: 'Grafoscopio-ExternalTools';
load.
"Extracting data"
timeline := FossilTimeline new.
timeline importFromUrl:
'http://mutabit.com/deltas/repos.fossil/piamed/libro/doc/tip/Libro/timeline-…'.
"Visualization"
view := RTMondrian new.
view nodes: timeline commits.
view edges
connectFrom: [#parents first].
view layout tree.
view.
"(timeline commits at: 1) parents first"
~~~~~~~~~
At the end you will get a set of squares visualized like this ones:
^Up Graphic 1: Trying to understand edges.
These squares are representations of FossilCommits objects imported from
a Json file, and the "connectFrom: [#parents first]" is the line I'm
having problems with. "#parents first" is the message I send to each
node to know its parents in that very collection of commits, so I
imagined that if I put that as the block argument for "connectFrom" I
would get a nice tree, similar to the graphic 2 below. I don't get
what's happening here or what I'm missing.
^ Up Graphic 2: A nicely drawn mondrian tree layout for RTLayout.
Any help on how to get tree like visualizations for this Fossil objects
would be greatly appreciated.
Thanks,
Offray
Ps: Something was happening with ws.stfx.eu this morning at 7:00 (GMT
-5) and trying to publish a workspace gives a 500 error.
On 16/06/15 16:08, Alexandre Bergel wrote:
> I am not really following. Hard to guess here.
>
> Can you make the image accessible for me? I can then have a closer look at it.
>
> Alexandre
>
>
>> On Jun 15, 2015, at 3:18 PM, Offray Vladimir Luna Cárdenas <offray(a)riseup.net> wrote:
>>
>> Hi all. Is me again :),
>>
>> I have being fighting all this morning trying to bet a better understanding of edge connections and tree layouts. I'm making some progress, but still I don't grasp it. At [1] you can find my starting example. So far, so good, so I created my own variation for my own data at [2]. My main issue is the #connectFrom message argument. If you uncomment the last line of [1] you will see that sending the #superclass message gives me an object that is of the same kind that the ones have been added to the view previously and I imagine that the reason they can be connected in a tree. With the example at [2] the message [#parents first] gives me a fossil commit object, but if I ran the code, the nodes are unconnected. What I'm missing?
>>
>> [1] http://ws.stfx.eu/DK3VNXBVAHXF
>> [2] http://ws.stfx.eu/DHF4VIR8TSPC
>>
>> Thanks,
>>
>> Offray
>>
>> On 15/06/15 06:47, Offray Vladimir Luna Cárdenas wrote:
>>> Hi Peter,
>>>
>>> Thanks for your quick answer. I was pretty curious about trying to implement some of this ideas, but only until today I had the proper time to do it. I ran your code and now I'm trying to translate the ideas on it to my problem: Drawing a tree for the story of a fossil repository.
>>>
>>> First, using the procedure at [1] I was able to export a fossil commit repo history as Json and by running the script at [2] I was able to get a small set of dots, which represent dictionaries with all commit data, including ancestors for each node, like the attached screenshot shows. In the video at [3] at 1:06 min, seems that lays the key for my visualization, but for that I need to create a fossil commit object that can understand the #ancestor message. Because I already have them as dictionaries thanks to NeoJson, seems that I'm really close to get the visualization I'm looking for. I hope to work on it this morning and return to the list with data visualizations or more questions.
>>>
>>>
>>> [1] http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
>>> [2] http://ws.stfx.eu/A5C8JJMA2HUK
>>> [3] https://vimeo.com/116886609
>>>
>>> Cheers,
>>>
>>> Offray
>>>
>>>
>>>
>>> On 02/06/15 05:09, Peter Uhnák wrote:
>>>> HI Offray,
>>>>
>>>> I gave it a quick bash and come up with the following code. It's just a prototype and could be greatly simplified.
>>>>
>>>> - MCVersionInfo ancestors for whatever reason returned empty array down the line (so its cut off at the end), but I didn't investigate the problem
>>>> - edge building and possibly ancestor retrieval could be simplified with builders; I think RTMondrian has methods for it but can't remember exactly (agilevisualization mentioned RTGraphBuilder but that has been removed to my knowledge)
>>>>
>>>> ~~~~~~~~~~~~~~~
>>>> mc := MCSmalltalkhubRepository allInstances detect: [ :m | m project = 'Roassal2' ].
>>>>
>>>> root := mc versionInfoFromFileNamed: mc readableFileNames first.
>>>>
>>>> family := Set new.
>>>> retriever := nil.
>>>> retriever := [ :child |
>>>> family add: child.
>>>> child ancestors do: [ :a | retriever value: a ]
>>>> ].
>>>> retriever value: root.
>>>> obs := family asGroup.
>>>>
>>>> v := RTView new.
>>>> es := RTEllipse new size: 15; color: Color blue; elementsOn: obs.
>>>> v addAll: es.
>>>>
>>>> edges := RTEdge
>>>> buildEdgesFromObjects: obs
>>>> from: #yourself
>>>> toAll: #ancestors
>>>> using: (RTArrowedLine new withShorterDistanceAttachPoint; color: Color red)
>>>> scope: es.
>>>> v addAll: edges.
>>>>
>>>> es @ RTDraggable.
>>>> es @ (RTLabelled new text: [ :m | m nameWithout: 'Roassal2' ]).
>>>>
>>>> v @ RTDraggableView.
>>>> v @ RTZoomableView.
>>>>
>>>> RTDominanceTreeLayout new
>>>> verticalGap: 30;
>>>> horizontalGap: 15;
>>>> on: es.
>>>>
>>>> v open
>>>> ~~~~~~~~~~~~~~~~
>>>>
>>>>
>>>> <Mail Attachment.png>
>>>>
>>>> Cheers,
>>>> Peter
>>>> â
>>>>
>>>> On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <offray(a)riseup.net> wrote:
>>>> Hi,
>>>>
>>>> On a closer detail, seems that [1] contains the starting point I'm looking for. I'll keep you posted and of course any other approach will be listened.
>>>>
>>>> [1] https://dl.dropboxusercontent.com/u/31543901/AgileVisualization/Roassal/010…
>>>>
>>>> Cheers,
>>>>
>>>> Offray
>>>>
>>>>
>>>> On 01/06/15 22:04, Offray Vladimir Luna Cárdenas wrote:
>>>> Hi all,
>>>>
>>>> I had asked a similar question before with no much advances, but today I made a discovery that can improve the things a lot: how to export timeline data as structured JSON [1] (and of course this open the possibility to work with it on Pharo). Now I would like to graph the data as a tree with forks, merges and dates and authors of commits. I have seen chronia, but seems overkill for this feature (and is integrated with CVS only).
>>>>
>>>> [1] http://stackoverflow.com/questions/30577090/how-to-export-fossil-scm-timeli…
>>>>
>>>> As usual, any pointer on how to get this going will be greatly appreciated and I will give feedback to the community on how to do it.
>>>>
>>>> Cheers,
>>>>
>>>> Offray
>>>>
>>>>
>>>>
>>>>
>>>>
June 19, 2015