Lorsque plusieurs SVG interactifs se trouvent sur la même page web (p. ex. dans un notebook), il est important de distinguer leurs éléments dans le DOM de façon à éviter que les interactions sur l'un soient en fait appliquées à un autre. La solution actuelle consiste à générer pour chaque MCD un identifiant aléatoire de 8 chiffres et lettres ASCII :
Celui-ci est ensuite suffixé à la classe de chaque élément du SVG correspondant.
Il y a deux problèmes.
Tout d'abord, depuis une époque indéterminée, ça ne marche pas ! En effet, les fonctions Javascript elles-mêmes doivent avoir un identificateur unique.
D'autre part, du fait du caractère aléatoire de l'identifiant généré, sous contrôle de versions, chaque régénération d'un SVG créera autant de changements que d'éléments (ci-dessous, la fin et le début de deux SVG consécutifs) :
La solution retenue consist à calculer le mcd_uid à partir d'une empreinte MD5 de son texte-source. Pour que deux MCD identiques puissent encore coexister sans problème sur la même page, suffixer l'empreinte par un entier non négatif --uid_suffix.
Au passage, on peut également supprimer toute mention de ce mcd_uid dans les SVG non interactifs.
Lorsque plusieurs SVG interactifs se trouvent sur la même page web (p. ex. dans un notebook), il est important de distinguer leurs éléments dans le DOM de façon à éviter que les interactions sur l'un soient en fait appliquées à un autre. La solution actuelle consiste à générer pour chaque MCD un identifiant aléatoire de 8 chiffres et lettres ASCII :
https://github.com/laowantong/mocodo/blob/d599dafeeb3c9957e00deeeb89f11886d1619d63/mocodo/mcd_to_svg.py#L21
Celui-ci est ensuite suffixé à la classe de chaque élément du SVG correspondant.
Il y a deux problèmes.
La solution retenue consist à calculer le
mcd_uid
à partir d'une empreinte MD5 de son texte-source. Pour que deux MCD identiques puissent encore coexister sans problème sur la même page, suffixer l'empreinte par un entier non négatif--uid_suffix
.Au passage, on peut également supprimer toute mention de ce
mcd_uid
dans les SVG non interactifs.