Hi Hannes!
Here is a first shoot paired-programmed with Juraj using Roassal:
-=-=-=-=-=-=-=-=-=-=-=-= b := RTTimeLine new.
b addEntry: (RTTimeLineEntry new identifier: #WP1; start: 0; end: 5). b addEntry: (RTTimeLineEntry new identifier: #WP2; start: 5; end: 8). b addEntry: (RTTimeLineEntry new identifier: #WP3; start: 7; end: 10).
b axisX numberOfLabels: 5. b -=-=-=-=-=-=-=-=-=-=-=-=
Here some slightly more elaborated example:
-=-=-=-=-=-=-=-=-=-=-=-= “One color per entry" | b d | b := RTTimeLine new. b addEntry: (RTTimeLineEntry new identifier: #c1; start: 0; end: 5). b addEntry: (RTTimeLineEntry new identifier: #c1; start: 6; end: 8).
b addEntry: (RTTimeLineEntry new identifier: #c2; start: 0; end: 5). b addEntry: (RTTimeLineEntry new identifier: #c2; start: 8; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c3; start: 0; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c4; start: 5; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c5; start: 5; end: 8).
d := RTVerticalTickLineDecorator new. d shape line color: Color white. b addDecorator: d. b axisX numberOfLabels: 5; labelRotation: -45; labelConversion: [ :v | Date year: 2015 day: v ].
b shape color: (RTMultiLinearColorForIdentity new objects: b entries). b -=-=-=-=-=-=-=-=-=-=-=-=
One color per timeline
-=-=-=-=-=-=-=-=-=-=-=-= | b | b := RTTimeLine new. b addEntry: (RTTimeLineEntry new identifier: #c1; start: 0; end: 5). b addEntry: (RTTimeLineEntry new identifier: #c1; start: 6; end: 8).
b addEntry: (RTTimeLineEntry new identifier: #c2; start: 0; end: 5). b addEntry: (RTTimeLineEntry new identifier: #c2; start: 8; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c3; start: 0; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c4; start: 5; end: 10).
b addEntry: (RTTimeLineEntry new identifier: #c5; start: 5; end: 8).
d := RTVerticalTickLineDecorator new. d shape line color: Color white. b addDecorator: d. b axisX numberOfLabels: 5; labelRotation: -45; labelConversion: [ :v | Date year: 2015 day: v ].
b shape color: (RTMultiLinearColorForIdentity new command: #identifier; objects: #(c1 c2 c3 c4 c5)). b -=-=-=-=-=-=-=-=-=-=-=-=
Age of some classes: -=-=-=-=-=-=-=-=-=-=-=-= | b | b := RTTimeLine new. b extent: 500 @ 500. ((RTShape withAllSubclasses sortedAs: #ageInDaysRounded) select: #hasMethods) do: [ :cls | e := RTTimeLineEntry new. e identifier: cls. e start: cls computeYoungestMethod ageInDays. e end: cls computeOldestMethod ageInDays. b addEntry: e ]. b -=-=-=-=-=-=-=-=-=-=-=-=
All these examples are in the Roassal time line example menu.
This is still an early version. Let us know how it goes! https://www.facebook.com/ObjectProfile/posts/840542572699008
Cheers, Alexandre