Visualizing a repository tree

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
24 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Visualizing a repository tree

Offray
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

Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

Offray
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
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

Peter Uhnak
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
~~~~~~~~~~~~~~~~



Cheers,
Peter


On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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





Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

Thierry Goubier


2015-06-02 12:09 GMT+02:00 Peter Uhnák <[hidden email]>:
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

It's a Roassal packages issue. Last time I looked, history was cut at a certain point in most Roassal packages, but I don't know if this was done on purpose.

Thierry
 
- 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
~~~~~~~~~~~~~~~~



Cheers,
Peter


On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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






Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

Tudor Girba-2
In reply to this post by Peter Uhnak
Interesting. The dominance tree layout is quite interesting for this use case.

Doru

On Tue, Jun 2, 2015 at 12:09 PM, Peter Uhnák <[hidden email]> 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
~~~~~~~~~~~~~~~~



Cheers,
Peter


On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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








--

"Every thing has its own flow"
Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

Peter Uhnak
On Tue, Jun 2, 2015 at 3:07 PM, Tudor Girba <[hidden email]> wrote:
Interesting. The dominance tree layout is quite interesting for this use case.

There were some upward lines at the bottom of the graph for no apparent reason, not sure what was going on there yet, so I'll look into the layout when I have more time.

Alternatively you could also use Sugiyama, however either due to the choice of heuristics, or some bug it places high priority on last levels which is really bad (since it is no longer at proper hierarchical layers).

Peter


Doru

On Tue, Jun 2, 2015 at 12:09 PM, Peter Uhnák <[hidden email]> 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
~~~~~~~~~~~~~~~~



Cheers,
Peter


On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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








--

"Every thing has its own flow"

Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

abergel
Interesting visualization! Keep going!

Alexandre
-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



On Jun 2, 2015, at 10:57 AM, Peter Uhnák <[hidden email]> wrote:

On Tue, Jun 2, 2015 at 3:07 PM, Tudor Girba <[hidden email]> wrote:
Interesting. The dominance tree layout is quite interesting for this use case.

There were some upward lines at the bottom of the graph for no apparent reason, not sure what was going on there yet, so I'll look into the layout when I have more time.

Alternatively you could also use Sugiyama, however either due to the choice of heuristics, or some bug it places high priority on last levels which is really bad (since it is no longer at proper hierarchical layers).

Peter


Doru

On Tue, Jun 2, 2015 at 12:09 PM, Peter Uhnák <[hidden email]> 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
~~~~~~~~~~~~~~~~


<2015-06-02_12:04:32.png>

Cheers,
Peter


On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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








-- 

"Every thing has its own flow"

Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

Peter Uhnak
Omg I just found out that if I click on the node representing an McVersionInfo it actually opens it in the inspector and I didn't even needed to implement anything special.
That's really cool!

Peter

On Tue, Jun 2, 2015 at 6:59 PM, Alexandre Bergel <[hidden email]> wrote:
Interesting visualization! Keep going!

Alexandre
-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



On Jun 2, 2015, at 10:57 AM, Peter Uhnák <[hidden email]> wrote:

On Tue, Jun 2, 2015 at 3:07 PM, Tudor Girba <[hidden email]> wrote:
Interesting. The dominance tree layout is quite interesting for this use case.

There were some upward lines at the bottom of the graph for no apparent reason, not sure what was going on there yet, so I'll look into the layout when I have more time.

Alternatively you could also use Sugiyama, however either due to the choice of heuristics, or some bug it places high priority on last levels which is really bad (since it is no longer at proper hierarchical layers).

Peter


Doru

On Tue, Jun 2, 2015 at 12:09 PM, Peter Uhnák <[hidden email]> 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
~~~~~~~~~~~~~~~~


<2015-06-02_12:04:32.png>

Cheers,
Peter


On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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








-- 

"Every thing has its own flow"


Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

Tudor Girba-2
You mean that when you click on a node while you inspecting the view you get a new pane to the right with that object?

Doru

On Thu, Jun 4, 2015 at 7:16 PM, Peter Uhnák <[hidden email]> wrote:
Omg I just found out that if I click on the node representing an McVersionInfo it actually opens it in the inspector and I didn't even needed to implement anything special.
That's really cool!

Peter

On Tue, Jun 2, 2015 at 6:59 PM, Alexandre Bergel <[hidden email]> wrote:
Interesting visualization! Keep going!

Alexandre
-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



On Jun 2, 2015, at 10:57 AM, Peter Uhnák <[hidden email]> wrote:

On Tue, Jun 2, 2015 at 3:07 PM, Tudor Girba <[hidden email]> wrote:
Interesting. The dominance tree layout is quite interesting for this use case.

There were some upward lines at the bottom of the graph for no apparent reason, not sure what was going on there yet, so I'll look into the layout when I have more time.

Alternatively you could also use Sugiyama, however either due to the choice of heuristics, or some bug it places high priority on last levels which is really bad (since it is no longer at proper hierarchical layers).

Peter


Doru

On Tue, Jun 2, 2015 at 12:09 PM, Peter Uhnák <[hidden email]> 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
~~~~~~~~~~~~~~~~


<2015-06-02_12:04:32.png>

Cheers,
Peter


On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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








-- 

"Every thing has its own flow"





--

"Every thing has its own flow"
Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

Peter Uhnak
Yeah, this thing. :)


I mean I knew I could program it, but I was just surprised that it did it automatically, which is cool :)

Peter


On Thu, Jun 4, 2015 at 9:54 PM, Tudor Girba <[hidden email]> wrote:
You mean that when you click on a node while you inspecting the view you get a new pane to the right with that object?

Doru

On Thu, Jun 4, 2015 at 7:16 PM, Peter Uhnák <[hidden email]> wrote:
Omg I just found out that if I click on the node representing an McVersionInfo it actually opens it in the inspector and I didn't even needed to implement anything special.
That's really cool!

Peter

On Tue, Jun 2, 2015 at 6:59 PM, Alexandre Bergel <[hidden email]> wrote:
Interesting visualization! Keep going!

Alexandre
-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



On Jun 2, 2015, at 10:57 AM, Peter Uhnák <[hidden email]> wrote:

On Tue, Jun 2, 2015 at 3:07 PM, Tudor Girba <[hidden email]> wrote:
Interesting. The dominance tree layout is quite interesting for this use case.

There were some upward lines at the bottom of the graph for no apparent reason, not sure what was going on there yet, so I'll look into the layout when I have more time.

Alternatively you could also use Sugiyama, however either due to the choice of heuristics, or some bug it places high priority on last levels which is really bad (since it is no longer at proper hierarchical layers).

Peter


Doru

On Tue, Jun 2, 2015 at 12:09 PM, Peter Uhnák <[hidden email]> 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
~~~~~~~~~~~~~~~~


<2015-06-02_12:04:32.png>

Cheers,
Peter


On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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








-- 

"Every thing has its own flow"





--

"Every thing has its own flow"

Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

Tudor Girba-2
Objects are magical :)

Doru

On Thu, Jun 4, 2015 at 10:04 PM, Peter Uhnák <[hidden email]> wrote:
Yeah, this thing. :)


I mean I knew I could program it, but I was just surprised that it did it automatically, which is cool :)

Peter


On Thu, Jun 4, 2015 at 9:54 PM, Tudor Girba <[hidden email]> wrote:
You mean that when you click on a node while you inspecting the view you get a new pane to the right with that object?

Doru

On Thu, Jun 4, 2015 at 7:16 PM, Peter Uhnák <[hidden email]> wrote:
Omg I just found out that if I click on the node representing an McVersionInfo it actually opens it in the inspector and I didn't even needed to implement anything special.
That's really cool!

Peter

On Tue, Jun 2, 2015 at 6:59 PM, Alexandre Bergel <[hidden email]> wrote:
Interesting visualization! Keep going!

Alexandre
-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



On Jun 2, 2015, at 10:57 AM, Peter Uhnák <[hidden email]> wrote:

On Tue, Jun 2, 2015 at 3:07 PM, Tudor Girba <[hidden email]> wrote:
Interesting. The dominance tree layout is quite interesting for this use case.

There were some upward lines at the bottom of the graph for no apparent reason, not sure what was going on there yet, so I'll look into the layout when I have more time.

Alternatively you could also use Sugiyama, however either due to the choice of heuristics, or some bug it places high priority on last levels which is really bad (since it is no longer at proper hierarchical layers).

Peter


Doru

On Tue, Jun 2, 2015 at 12:09 PM, Peter Uhnák <[hidden email]> 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
~~~~~~~~~~~~~~~~


<2015-06-02_12:04:32.png>

Cheers,
Peter


On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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








-- 

"Every thing has its own flow"





--

"Every thing has its own flow"




--

"Every thing has its own flow"
Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

abergel
> Objects are magical :)

Yes, and this is absolutely mind blowing.

Understanding that a mouse click is most of the time an action to inspect is absolutely a step forward.
I feel we are still at the very beginning. It would be nice to see how this will evolve over the time...

Alexandre

>
> On Thu, Jun 4, 2015 at 10:04 PM, Peter Uhnák <[hidden email]> wrote:
> Yeah, this thing. :)
>
> <2015-06-04_22:02:31.png>
>
> I mean I knew I could program it, but I was just surprised that it did it automatically, which is cool :)
>
> Peter
> ​
>
> On Thu, Jun 4, 2015 at 9:54 PM, Tudor Girba <[hidden email]> wrote:
> You mean that when you click on a node while you inspecting the view you get a new pane to the right with that object?
>
> Doru
>
> On Thu, Jun 4, 2015 at 7:16 PM, Peter Uhnák <[hidden email]> wrote:
> Omg I just found out that if I click on the node representing an McVersionInfo it actually opens it in the inspector and I didn't even needed to implement anything special.
> That's really cool!
>
> Peter
>
> On Tue, Jun 2, 2015 at 6:59 PM, Alexandre Bergel <[hidden email]> wrote:
> Interesting visualization! Keep going!
>
> Alexandre
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>> On Jun 2, 2015, at 10:57 AM, Peter Uhnák <[hidden email]> wrote:
>>
>> On Tue, Jun 2, 2015 at 3:07 PM, Tudor Girba <[hidden email]> wrote:
>> Interesting. The dominance tree layout is quite interesting for this use case.
>>
>> There were some upward lines at the bottom of the graph for no apparent reason, not sure what was going on there yet, so I'll look into the layout when I have more time.
>>
>> Alternatively you could also use Sugiyama, however either due to the choice of heuristics, or some bug it places high priority on last levels which is really bad (since it is no longer at proper hierarchical layers).
>>
>> Peter
>>
>>
>> Doru
>>
>> On Tue, Jun 2, 2015 at 12:09 PM, Peter Uhnák <[hidden email]> 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
>> ~~~~~~~~~~~~~~~~
>>
>>
>> <2015-06-02_12:04:32.png>
>>
>> Cheers,
>> Peter
>> ​
>>
>> On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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
>>
>>
>>
>>
>>
>>
>>
>>
>> --
>> www.tudorgirba.com
>>
>> "Every thing has its own flow"
>
>
>
>
>
> --
> www.tudorgirba.com
>
> "Every thing has its own flow"
>
>
>
>
> --
> www.tudorgirba.com
>
> "Every thing has its own flow"

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.




Reply | Threaded
Open this post in threaded view
|

Re: Visualizing a repository tree

Offray
In reply to this post by Peter Uhnak
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
~~~~~~~~~~~~~~~~



Cheers,
Peter


On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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







fossil-commits.png (246K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)

Offray
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
~~~~~~~~~~~~~~~~



Cheers,
Peter


On Tue, Jun 2, 2015 at 5:39 AM, Offray Vladimir Luna Cárdenas <[hidden email]> 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







Reply | Threaded
Open this post in threaded view
|

Re: Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)

abergel
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 <[hidden email]> 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 <[hidden email]> 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
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.




Reply | Threaded
Open this post in threaded view
|

Re: Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)

Offray
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:


^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 [hidden email] 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 [hidden email] 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






        

      

    

Reply | Threaded
Open this post in threaded view
|

Re: Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)

Nicolai Hess


2015-06-19 14:41 GMT+02:00 Offray Vladimir Luna Cárdenas <[hidden email]>:
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:


^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 [hidden email] 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 [hidden email] 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






        

      

    


Reply | Threaded
Open this post in threaded view
|

Re: Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)

Sven Van Caekenberghe-2
In reply to this post by Offray

> On 19 Jun 2015, at 14:41, Offray Vladimir Luna Cárdenas <[hidden email]> 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
Reply | Threaded
Open this post in threaded view
|

Re: Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)

abergel
In reply to this post by Offray
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 <[hidden email]> 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 <[hidden email]>
>>>  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
>>>>> <[hidden email]>
>>>>>  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
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.




Reply | Threaded
Open this post in threaded view
|

Re: Understanding edge connections and tree layout (it was Re: Visualizing a repository tree)

abergel
Let me know if this works for you

Cheers,
Alexandre


> On Jun 20, 2015, at 2:46 PM, Alexandre Bergel <[hidden email]> 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 <[hidden email]> 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 <[hidden email]>
>>>> 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
>>>>>> <[hidden email]>
>>>>>> 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
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.




12