Dear Alexandre,
thanks for your initial version of the script.
As promised, here is the adapted version of what I basically would like to achieve:
=======
"configuration"
spaceBetweenLine := 350.
lineHeight := 250.
"data"
columns := #(
#('One' 'Two')
#('Ten' 'Eleven' 'Twelve' 'Thirteen' 'Fourteen' 'Fifteen') ).
values := #( #(1 3 4 5 6) #(2 3 5) ).
numberOfColumns := columns size.
columnHeight := columns reduce: [ :c1 :c2 | (c1 size) max: (c2 size) ].
v := RTView new.
label := RTLabel text: [ :t | t ].
label color: (Color red alpha: 0.3).
"draw labels"
setOfElements := OrderedCollection new.
1 to: numberOfColumns do: [ :i | | t labels |
t := OrderedCollection new.
labels := label elementsOn: (columns at: i).
labels doWithIndex: [ :element :index |
t add: element.
element translateTo:
(i * (spaceBetweenLine - 1)) @
(index * lineHeight / columnHeight).
v add: element
].
setOfElements add: t.
].
"draw lines"
2 to: numberOfColumns do: [ :column |
values doWithIndex: [ :setOfValues :index |
setOfValues do: [ :toIndex |
line := (RTLine new color: (Color red alpha: 0.2))
edgeFrom: ((setOfElements at: (column - 1)) at: index)
to: ((setOfElements at: column) at: toIndex).
v add: line
].
].
].
v
=======
Now it only needs to be made a bit prettier (e.g. starting the lines at the edges of the label, not in the middle; make it deal correctly with multiple columns; ...).
Thank you very much,
Manfred