Hi Offray, Rather easy. Simply use a new shape. For example: -=-=-=-= b := RTMondrian new. b shape circle size: [ :cls | cls numberOfMethods log * 10 ]; color: (Color red alpha: 0.5). b nodes: RTObject withAllSubclasses. b layout flow. b -=-=-=-=
Another example: -=-=-=-= classes := RTObject withAllSubclasses. largestNumberOfMethods := (classes collect: #numberOfMethods) max. colorNormalizer := RTMultiLinearColor new colors: (ColorPalette sequential colors: 8 scheme: 'Reds'); command: [ :cls | cls numberOfMethods / largestNumberOfMethods ]. b := RTMondrian new. b shape circle size: [ :cls | cls numberOfMethods log * 10 ]; color: colorNormalizer. b nodes: classes. b layout flow. b -=-=-=-= Many more example are available in the mondrian example class. Have you tried: RTMondrianExample inspect ? Cheers, Alexandre > On Jun 20, 2015, at 9:03 PM, Offray Vladimir Luna Cárdenas > <off...@riseup.net> wrote: > > 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. >> >> <Mail Attachment.png><Mail Attachment.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 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.