Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# textbox aucomplete ou node du menulist non dessiné

Envoyé par : hhf

Date : 12/05/2006 02:33

salut, j'ai un menulist editable, avec beaucoup de lignes, tellement que d'une part le chargement du rdf est long, mais ca ya pas trop le choix, mais même l'affichage en devient tres long. En fait ca se fait en 6 temps. 1) je demande le chargement du rdf via un btn 2) chargement (long) 6500 lignes 3) creation des nodes (long aussi) 4) click sur le bouton pour ouvrir le menuilist 5) affichage des node (long aussi) 6) et enfin affichage

J'ai remarqué que les textbox autocomplete untilisé comme selection d'autocompletion un tree, donc peut etre avec flags ="dont-build-content" ce qui ameliorerais violement la chose.

Mais malgres mes recherche, rien de concluant. meme l'exemple trivial avec "history" ne marche pas chez moi. J'ai bien regardé le chrome browser.xul, mais sans succes de comprehention. Je signale que moi par contre, je ne suis pas dans le chrome. Voila, si quelqu'un peut m'aider.


        

# Re: textbox aucomplete ou node du menulist non dessiné

Envoyé par : thefab

Date : 12/05/2006 10:45

Salut,

Les datasources rdf:* de fonctionnent pas si tu n'est pas dans chrome (pas sur à 100% mais c'est le cas pour rdf:bookmarks en tout cas). Je sais que ça ne t'aide pas pour ton problème d'autocomplete, mais bon...

Remarque que 6500 lignes c'est pénible pour l'utilisateur, tu ne pourrais pas faire l'inverse, càd avoir un menulist vide et lorsque l'utilisateur saisit du texte tu vas générer un sous-ensemble des éléments du menu avec une requête XMLHttpRequest (si ta source est distante).

Fabrice

# Re: textbox aucomplete ou node du menulist non dessiné

Envoyé par : laurentj

Date : 12/05/2006 11:33

Je rejoins fabrice : de toute façon, 6500 lignes, ça va être, non pas pénible, mais totalement inutilisable pour l'utilisateur (même si on met ces problèmes de perfs de coté).

Il vaudrait mieux utiliser la solution que propose Fabrice, ou mieux, un textbox autocomplete si tu es dans le chrome, avec ton propre moteur d'autocomplétion, comme expliqué dans le wiki.

# Re: textbox aucomplete ou node du menulist non dessiné

Envoyé par : hhf

Date : 13/05/2006 16:51

oui, bon je me suis mal expliqué... alors pour repondre à fabrice, les rdfs hors chrome marche tres bien sauf evidement pour les rdfs interne à firefox, cela va de soit.

pour revenir à mon probleme, en fait ce n'est pas de l'autocompletion que je veux faire, c'est juste un menulist qui peut comprendre beaucoup de ligne. En fait c'est un genre de moteur de recherche, avec des criteres predefinis, mais l'utilisateur peut demandé au serveur quel sont les valeur possible pour ce critere ou le saisir manuellement.

En fait j'avais l'année dernière devellopé un petit 'xpi' (en fait test du portage de cette appli) et avait fait un css ou j'avais mis que les ligne pair ou impair avaient des couleurs differentes dans les "tree".

C'est là que je me suis rendu compte que dans la barre d'url de firefox la liste d'autocompletion avait adopté le style en question.

Donc je me suis dit que la liste deroulante d'un textbox avec autocomplete etait en fait un "tree" et donc beneficiait peut etre des performances d'un "tree" avec le flags="dont-build-content".

D'ou ma question.

Mais je perd pas espoir, je vais testé d'inclure un "tree" dans un "menupopup", mais il me semble que j'avais deja testé d'inclure un "tree" dans une "box" à prioris pas destiné à ca et ca faisait tout simplement planté firefox (il se killé meme). mais c'etait ya un bout de temps alors peut etre que maintenant...

Je vous tiens au courant, et suis toujours pres pour une idee.

# Re: textbox aucomplete ou node du menulist non dessiné

Envoyé par : hhf

Date : 16/05/2006 19:00

bon, juste pour dire, j'ai testé de mettre un tree dans un popup ou autre enu surgissant, mais non, ca ne marche pas. mais ya qd mm progré, ca ne crash plus firefox. wait and see.

Je suis tjs preneur d'idée.

# Re: textbox aucomplete ou node du menulist non dessiné

Envoyé par : thefab

Date : 17/05/2006 07:31

Salut,

Ca ne te sera pas d'une grande aide, mais bon, peut-être pour t'en inspirer: Google avec autocomplete. Ce n'est pas du XUL mais tu peux regarder comment les échanges se font avec le serveur et adapter avec l'exemple cité par Laurent.

Fabrice

# Re: textbox aucomplete ou node du menulist non dessiné

Envoyé par : Zmx

Date : 17/05/2006 10:36

Bon si j'ai bien compris tu veux afficher plein de ligne dans une boite...

Cela a été fait (en xul) sur certain dictionnaire anglais (longman par exemple) produit par idm pour afficher la liste de TOUS les mots du dictionnaire (ainsi que leur contenu).

La solution utlisé est assez "complexe". En fait, bien qu'il y ai une scrollbar, le contenu est charger dynamiquement (avec un peu de "cache" en debut et fin de liste).

Pour une liste de 65 000 element par exemple, on affiche les X premier (qui sont visible) les X suivant (qui sont en "cache"). Lorsque l'utilisateur "scroll" on intercepte l'evenement (vu que c'est un XBL) et on rempli le cache, et on supprime les elements trop "loin" de la partie visible.

Malheuresement je ne peux pas te fournir le code ;( mais je peux te dire que ça s'appele la "virtualList" dans les xbl des CDROM longman dictionnary (tu en as peut etre sous la main qui sait)

# Re: textbox aucomplete ou node du menulist non dessiné

Envoyé par : hhf

Date : 17/05/2006 22:51

ouaip, ca me semble etre une solution, je vais me penché sur la chose, j'avais fait quelque chose de similaire à ce que tu decrit mais en dhtml. mais bon, niveau perf c'etait pas terrible. Si mon chef de projet me tanne, je me lance. Sinon, pour la facilité, je rognerais sur l'espace de l'interface pour mettre un tree.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.