Salut,
Bon je pense que c'est quelque chose de très difficile à faire...
Alors connaissez-vous un code tout fait pour treeview "dynamique" ?
Je dis "dynamique" mais je ne sais pas comment on appelle cela alors je m'explique :
Dans un treeview classique on insert tous les éléments dans le DOM, cela peut être des <ul> et des <li>, exemple : https://www.w3schools.com/howto/tryi...ow_js_treeview.
Mais dans le cas où il y a énormément d’éléments on ne peut pas tout mettre dans le DOM car ça consomme trop de ressources, cela devient trop lent alors on ne doit mettre qu'une partie de ces éléments dans le DOM : Par exemple si on a 7000 éléments et que la zone visible peut contenir 30 éléments eh bien on en met par exemple 31 dans le DOM et pour afficher les autres éléments on fait défiler la scrollbar...
C'est très difficile à gérer il me semble, il y a beaucoup de calcul :
- La scrollbar doit être fabriqué à part, on ne peut pas laisser le navigateur gérer cela pour nous car on a 7000 éléments mais seuls 31 éléments à la fois sont injectés dans le DOM.. Si on mettait les 7000 éléments alors pas de problème, on pourrait le laisser gérer... Ainsi pour le navigateur la taille total du document serait de 31 éléments alors qu'en fait elle est de 7000 éléments...
On est donc obligé d'avoir une scrollbar à part avec un scrollHeight correspondant aux 7000 éléments...
Et encore ça c'est dans le cas où tous les éléments sont dépliés (c'est la valeur max) mais si on en plie certains eh bien le scrollHeight doit diminuer (on doit déduire de 7000 le nombre d’éléments cachés à cause des "pliés").
- Et là le code folding (plier/déplier) est beaucoup plus difficile à gérer, il y a beaucoup de calcul, là aussi on ne peut pas laisser le navigateur gérer cela pour nous car seuls 31 éléments à la fois sont injectés dans le DOM ---> on ne pas juste faire display: "none"/"block" car pour ça il faudrait que tous les éléments soient injectés dans le DOM...
- Savoir quels sont ces 31 éléments (sur 7000) qui doivent être affichés (injecté dans le DOM) n'est pas évident : cela dépend de la position de la scrollbar et des plier/déplier...
Est-ce que quelqu'un voit de quoi je parle ?
Qu'en pensez-vous ?
Merci.
Partager