Hi I do not recommend to use Mondrian for doing what you need. Actually, I suggest to make your own layout. You may want to check the following code example:
-=-=-=-=-=-=-=-=-= classes := RTShape withAllSubclasses. oldestAge := (classes collect: #ageInDays) max. v := RTView new. v @ RTDraggableView. classes doWithIndex: [ :c :index | elements := RTEllipse new elementsOn: c methods. v addAll: elements. RTMetricNormalizer new elements: elements; normalizeX: #ageInDaysAsInteger min: 0 max: 200 minValue: 0 maxValue: oldestAge. elements translateBy: 0 @ (index * 10). RTEdgeBuilder new view: v; linkElements: elements. ]. v -=-=-=-=-=-=-=-=-= I guess it is kind of close of what you need. Cheers, Alexandre > On Jun 20, 2015, at 3:44 PM, Offray Vladimir Luna Cárdenas > <off...@riseup.net> 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. > > <abjfehfd..png><jfbdfbaj..png> > > > 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-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 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.