Hi!
We had a wonderful week here in Cochabamba, Bolivia. Juan-Pablo, Juraj and I have taught Pharo and Moose during 5 days. Was pretty cool!
Here is a script that shows that one of the group was able to produce in just 3 days.
The figures analyze the content of my package-cache directory. It shows the number of commit per day, per hour, per author.
-=-=-=-=-=-=-=—=
myRepository := MCCacheRepository default.
myRepository allVersionNames.
packageNames := myRepository allVersionNames select: [ :e | 'Roassal*' match: e ].
"packageNames := myRepository allVersionNames. "
lista := packageNames collect: [ :packageName |
myRepository versionInfoFromVersionNamed: packageName. ].
autores := lista groupedBy: [ :e | e author ].
fechas := lista groupedBy: [ :e | e date ].
horas := lista groupedBy: [ :e | e time hour ].
c := RTComposer new.
v := c view.
c gap: 50.
popup := RTPopup text: [:assoc | assoc key asString, ', commits:', assoc value size asString].
elements := (RTEllipse elementsOn: fechas associations).
v addAll: elements @ popup.
builder := RTGlobalBuilder new.
builder
view: v;
normalizeX: [ :e | e key asTimeStamp asUnixTime ]
min: 0
max: 50000;
normalizeSize: [:e | e value size ] min: 10 max: 20;
normalizeColor: [:e | e value size ];
alphaColor: 0.3;
elementsToConsider: elements;
execute.
"We add a line from the left most element to the right most element"
v add: ((RTLine new color: Color lightGray) edgeFrom: v elements leftMostElement to: v elements rightMostElement).
"It make sense to only drag horizontally"
v @ RTHorizontalDraggableView.
c propagateHighlight.
c group: 'date'.
listTags := Array new: autores size.
autores doWithIndex: [ :each :i|
test := each groupedBy: [ :e | e date ].
elements := (RTEllipse elementsOn: test associations).
v addAll: elements @ popup.
builder
elementsToConsider: elements;
execute.
v add: ((RTLine new color: Color lightGray) edgeFrom: elements leftMostElement to: elements rightMostElement).
newTag := 'Author' asString, i asString.
listTags at: i put: newTag.
c propagateHighlight.
c group: newTag.
].
popup := RTPopup text: [:assoc | 'Hour: ' asString, assoc key asString, ', commits:', assoc value size asString].
elements := (RTEllipse elementsOn: horas associations).
v addAll: elements @ popup.
builder := RTGlobalBuilder new.
builder
view: v;
normalizeX: [ :e | e key ]
min: 0
max: 380;
normalizeSize: [:e | e value size ] min: 10 max: 20;
normalizeColor: [:e | e value size ];
alphaColor: 0.3;
elementsToConsider: elements;
execute.
v add: ((RTLine new color: Color lightGray) edgeFrom: elements leftMostElement to: elements rightMostElement).
c propagateHighlight.
c group: 'Hour'.
popup := RTPopup text: [:assoc | assoc author asString, ', ' , ' message size: ', assoc message size asString].
elements := (RTEllipse elementsOn: lista).
v addAll: elements @ popup.
builder := RTGlobalBuilder new.
builder
view: v;
normalizeX: [ :e | e timeStamp asUnixTime ]
min: 0
max: 50000;
normalizeSize: [ :e | e message size ] min: 10 max: 20;
normalizeColor: [ :e | e message size ];
alphaColor: 0.3;
elementsToConsider: elements;
execute.
v add: ((RTLine new color: Color lightGray) edgeFrom: elements leftMostElement to: elements rightMostElement).
c propagateHighlight.
c group: 'Comment'.
listTags doWithIndex: [ :e :i|
(i == 1)
ifTrue: [
c move: e below: 'date'.
last := e.
c nameGroup: 'date' as: 'History by Date'.
aAuthor := autores keys at: i.
c nameGroup: e as: 'History by: ' asString, aAuthor asString.
]
ifFalse: [
c move: e below: last.
last := e.
aAuthor := autores keys at: i.
c nameGroup: e as: 'History by: ' asString, aAuthor asString.
]
].
c move: 'Hour' below: last.
c nameGroup: 'Hour' as: 'History by Hour'.
c move: 'Comment' below: 'Hour'.
c nameGroup: 'Comment' as: 'History by Comment'.
"We add a small legend"
v canvas addFixedShape: (TRLabelShape new text: 'History of Changes').
TRConstraint stickAtTheBottomOfTheWindow: v canvas fixedShapes last.
^v
-=-=-=-=-=-=-=—=
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi, sorry for bothering, but I’m trying to understand what I can use to build cool UIs. And with GToolkit I’ve started to think about Glamour. I’ve read a chapter in Deep Into Pharo book, and all there is in Moose Book. And everywhere there is this idea of “flow”, that one parts of visualization, are representing something transmitted from other parts. There are a lot of cases when I want to do something that does not have this notion of a flow. For example I want to have a main view and then use some widgets to modify it, or I have two representations of the same model and want to keep them in sync. Should I use a “dynamic presentation” for that? Are there any real projects like that, to see how they are implemented?
Uko
I' trying to customize label in RTPieBuilder this is my sample.
b := RTPieBuilder new.
b interaction popup.
b view: v.
b objects: listByRegion associations.
b slice: [ :e | e value size ].
b globalRule distinctColor.
"b labelled."
b label: (RTLabel new text: 'label test').
b build.
I commented "b labelled", but when I try to set label with RTLabel I get
it error in trachelShape, there is a way to set a custom label?
Thanks to the advances of GT, I have my doubt about the usefulness of the easel.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi,
first of all let me know where I can write questions about Woden (because I have not seen a lot of activity around it in any chat).
Woden and Roassal3D have a problem that when the 3D window is shown, text highlighting is not working. Usually it’s not a big deal, but Rubric writes white text on white background :). I think a problem like that was already in Roassal2 and maybe someone remembers how to solve that?
Uko
Hi everyone,
I think that during ESUG Woden was integrated into Toolkit in a way, what you can see a 3D visualization as one of the representations of the view. Is there any additional package that provides this functionality?
Uko
Thierry,
I am having difficulties re-generating the Ada parser
I take the Ada grammar, un-modified (so it should work) and when I try
to compile it (LALR(1)) with the SmaCCParserGenerator, I get at the
start of the gramar pane:
---
SmaCCParserError: Token not expected->#Definition extracted from old
style definition comments
<char_lit>: \'.\' ;
<char_string>: \"(\"\"|[^\n\"])*\" ;
[...]
---
Do you have an idea what is the problem and more importantly what is the
solution?
nicolas
Hi Alex,
I started to look into Charter and I would like to know which builder to
use in Roassal2 for drawing graphs because currently we
have RTGrapherBuilder and RTCharterBuilder. It looks to me as if they are
providing similar services but RTCharterBuilder is more up to date.
regards,
usman
In case you don't know yet:
http://d3js.org/
"*D3.js** is a JavaScript library for manipulating documents based on
data. D3 helps you bring data to life using HTML, SVG and CSS. D3’s
emphasis on web standards gives you the full capabilities of modern
browsers without tying yourself to a proprietary framework, combining
powerful visualization components and a data-driven approach to DOM
manipulation."*
Here nice examples:
https://github.com/mbostock/d3/wiki/Gallery
If not already known: There is a small problem with the Popup: The popup
window (background) is not
growing with the text length. You can check it with the
"RTMondrianExample exampleNeestingAndTitle".
BW,
Volkert
--
www.nivoba.de
"The more complex an object, the larger the investment in learning to use it, and the greater the resistance to abandon it.", NW