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-buscador.json'. "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 > <off...@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-buscador.json'. > > "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 >>> <off...@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-timeline-to-another-format/30584926#30584926 >>>> >>>> [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 >>>>> <off...@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/0104-Roassal.html >>>>> >>>>> >>>>> 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-timeline-to-another-format/30580043#30580043 >>>>> >>>>> >>>>> 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 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.