04-07-2022, 07:43 PM
Hello
Je serai tenté de me diriger vers graphviz & toute sa clique (dot, gphiz ou autre lib qu'il y aura dans ton langage/stack)
Vu le sujet, je dirai qu'une sortie en SVG de ton graph serait adaptée: tu pourras placer l'image dans la page HTML, et laisser les scrollbars gérer le reste (en revanche, ca ne se déplacera pas nativement au "drag & drop": ce n'est pas un truc natif de PC ça, c'est un rajout)
Suivant le niveau d'acceptation de "triche", tu peux alors soit donner tout le SVG au client, et masquer/afficher/modifier les couleurs via du CSS, soit n'envoyer que les branches découvertes, et pousser les nouveautés vers le client qui les ajoutera à son SVG. AU besoin, tu pourra aussi virer les scrollbar et implémenter ton mécanisme de déplacement/changement de la vue en modifiant simplement le viewBox du SVG (un peu dans cette idée là https://blog.reinom.com/demos/#zoomer-sur-un-l-ment )
A noter que si le SVG peut devenir "lourd" (ramer) si trop de noeuds sont sur le même parent (ie un <svg> contenant 10.000 <circle> a tendance à ramer). Pour éviter cela, il te faudra "juste" les regrouper dans des <g> en fonction de leur position dans la carte (ie un <svg> contenant 100 <g> formant "à peu près" un genre de grille 10x10 et contenant chacun 100 <circle> ne ramera pas). Ce comportement a peut-etre changé depuis sur Firefox/Chromium (je ne sais plus lequel ramait), donc, c'est une optimisation en fin de chaîne, uniquement si nécessaire
Ca reste une méthode artisanale, efficace pour un petit projet sans stack déjà "toute prête" (si t'es parti dans du Unity par exemple, ca serait sans doute pas adapté x) )
Je serai tenté de me diriger vers graphviz & toute sa clique (dot, gphiz ou autre lib qu'il y aura dans ton langage/stack)
Vu le sujet, je dirai qu'une sortie en SVG de ton graph serait adaptée: tu pourras placer l'image dans la page HTML, et laisser les scrollbars gérer le reste (en revanche, ca ne se déplacera pas nativement au "drag & drop": ce n'est pas un truc natif de PC ça, c'est un rajout)
Suivant le niveau d'acceptation de "triche", tu peux alors soit donner tout le SVG au client, et masquer/afficher/modifier les couleurs via du CSS, soit n'envoyer que les branches découvertes, et pousser les nouveautés vers le client qui les ajoutera à son SVG. AU besoin, tu pourra aussi virer les scrollbar et implémenter ton mécanisme de déplacement/changement de la vue en modifiant simplement le viewBox du SVG (un peu dans cette idée là https://blog.reinom.com/demos/#zoomer-sur-un-l-ment )
A noter que si le SVG peut devenir "lourd" (ramer) si trop de noeuds sont sur le même parent (ie un <svg> contenant 10.000 <circle> a tendance à ramer). Pour éviter cela, il te faudra "juste" les regrouper dans des <g> en fonction de leur position dans la carte (ie un <svg> contenant 100 <g> formant "à peu près" un genre de grille 10x10 et contenant chacun 100 <circle> ne ramera pas). Ce comportement a peut-etre changé depuis sur Firefox/Chromium (je ne sais plus lequel ramait), donc, c'est une optimisation en fin de chaîne, uniquement si nécessaire
Ca reste une méthode artisanale, efficace pour un petit projet sans stack déjà "toute prête" (si t'es parti dans du Unity par exemple, ca serait sans doute pas adapté x) )