Comencé a idear cómo mostrar una línea, segmentada en días y luego
etiquetas que destaquen lo que sucedió en una fecha en particular.
GraphViz es fabuloso, básicamente cuenta con 2 elementos: node y
edge, y es bastante difícil lograr posicionar los elementos donde te
imaginas que deberían estar, esto es así porque debe resolver la
posición de miles de objetos y entonces la potestad de dónde ubicarlos
la tiene GraphViz.
Sólo podés indicarle preferencias de dónde deberían estar los elementos,
un posible orden y el mismo se ve afectado por el mismo orden en que
escribís el código en lenguaje /DOT/ , pero como llevo un par
de años jugando con esto, algunas mañas ya se las conozco y siempre
termino aprendiendo algo nuevo.
En este caso, se me ocurrió usar como label de los nodos un pipe |
para usar como indicador de día y el carácter UTF-8 para rectángulo
vertical negro █ (BLACK VERTICAL RECTANGLE como señalador de día
importante, desde donde saldría la etiqueta a destacar.
De esta manera, desde el nodo del día destacado con █ debía realizar
una relación con el nodo de la etiqueta, por ejemplo
pass-utils/v0.0.2 que estaría dentro un rectángulo usando "rect"
como tipo de shape.
Para balancear un poco y que no se superpongan 2 etiquetas de días
contiguos, lo mejor fue, dibujar los días pares por encima de la
línea de tiempo y los días impares por debajo de la misma.
Y como texto de la relación pondría la fecha de la etiqueta inicialmente
en formato ISO8601 (luego lo cambié a MMM/DD) y de esta
manera obtengo una línea de tiempo completa y simple a la vez!