Envoyé par : skik00
Date : 26/07/2004 11:50
bonjour, J'essaie d'afficher un tree dont les ressources sont de type RDF mais cela prend trop de temps à charger (à cause des miliers de lignes à afficher en + il y a des treechildren :( )
J'ai essayé d'ajouter: flags="dont-build-content" à mon tree mais cela n'a pas changé grand chose
je pense que la solution se trouverait comme dans: http://www.xulplanet.com/tutorials/xultu/treeview.html
mais je ne comprend pas comment :
<script> var treeView = { rowCount : 10000, getCellText : function(row,column){ if (column=="namecol") return "Row "+row; else return "February 18"; }, setTree: function(treebox){ this.treebox=treebox; }, isContainer: function(row){ return false; }, isSeparator: function(row){ return false; }, isSorted: function(row){ return false; }, getLevel: function(row){ return 0; }, getImageSrc: function(row,col){ return null; }, getRowProperties: function(row,props){}, getCellProperties: function(row,col,props){}, getColumnProperties: function(colid,col,props){} };
function setView() { document.getElementById('my-tree').view=treeView; } </script>
<tree id="my-tree" flex="1"> <treecols> <treecol id="namecol" label="Name" flex="1"/> <treecol id="datecol" label="Date" flex="1"/> </treecols> <treechildren/> </tree>
marche! et j'ai besoin de treechildren!!!
Autre chose: est-ce que: "conditions,triple predicate" offre des avantages pour un affichage rapide???
voici donc (la partie de) mon code:
<groupbox orient="horizontal" style="width: 90em; height: 300px;"> <caption label="WBS Union - Interco"/>
<tree id="IntercoTree" flags="dont-build-content" style="width: 59em; height: 200px;" multiple="true" onclick="showIntercoDetailValues2(this);" datasources="WBS.rdf" ref="http://127.0.0.1:8080/reporting/WBSSS" enableColumnDrag="true"> <treecols> <treecol id="cpltNameI" primary="true" label="COMPLETE NAME" sort="rdf:http://127.0.0.1:8080/reporting/rdf#CPLTNAME" flex="2"/> <splitter class="tree-splitter"/> <treecol id="typeWBSI" hidden="true" label="RANK" sort="rdf:http://127.0.0.1:8080/reporting/rdf#TYPE" flex="1"/> <splitter class="tree-splitter"/> <treecol id="DATOI" hidden="true" label="START DATE" sort="rdf:http://127.0.0.1:8080/reporting/rdf#DATO" flex="1"/> <splitter class="tree-splitter"/> <treecol id="DATCI" hidden="true" label="COMPLETION DATE" sort="rdf:http://127.0.0.1:8080/reporting/rdf#DATC" flex="1"/> <splitter class="tree-splitter"/> <treecol id="NBOFCHILDRENI" hidden="true" label="NB OF CHILDREN" sort="rdf:http://127.0.0.1:8080/reporting/rdf#NBOFCHILDREN" flex="1"/> <splitter class="tree-splitter"/> <treecol id="CODEI" hidden="true" label="CODE" sort="rdf:http://127.0.0.1:8080/reporting/rdf#CODE" flex="1"/> <splitter class="tree-splitter"/> <treecol id="LIBELI" hidden="false" label="LIBEL" sortActive="true" sort="rdf:http://127.0.0.1:8080/reporting/rdf#NAME" flex="1"/> <splitter class="tree-splitter"/> <treecol id="WBSIntercoKindI" hidden="true" label="KIND" sort="rdf:http://127.0.0.1:8080/reporting/rdf#KIND" flex="1"/> <splitter class="tree-splitter"/> </treecols> <template> <treechildren> <treeitem uri="rdf:*" open = "false"> <treerow> <treecell label="rdf:http://127.0.0.1:8080/reporting/rdf#CPLTNAME"/> <treecell label="rdf:http://127.0.0.1:8080/reporting/rdf#TYPE"/> <treecell label="rdf:http://127.0.0.1:8080/reporting/rdf#DATO"/> <treecell label="rdf:http://127.0.0.1:8080/reporting/rdf#DATC"/> <treecell label="rdf:http://127.0.0.1:8080/reporting/rdf#NBOFCHILDREN"/> <treecell label="rdf:http://127.0.0.1:8080/reporting/rdf#CODE"/> <treecell label="rdf:http://127.0.0.1:8080/reporting/rdf#NAME"/> <treecell label="rdf:http://127.0.0.1:8080/reporting/rdf#KIND"/> </treerow> </treeitem> </treechildren> </template> </tree>
Ca serait cool si quelqun pouvait m'aider Merci!!! Cyril
Envoyé par : laurentj
Date : 26/07/2004 18:21
mais je ne comprend pas comment (le truc avec le view) fonctionne
he bien il faut définir un objet avec un certain nombre de méthode qui sont appellées à différents moments de l'affichage par le tree.
En particulier la méthode getCellText. En fait, le tree va déterminer quelles sont les cellules actuellement affichées (il ne se préoccupe pas de celles qui ne sont pas visible). Il va donc parcourir une à une chaque cellule, et appeler à chaque fois la méthode getCellText en lui donnant les coordonnées de ta cellule, pour récuperer le contenu à afficher dans la cellule.
Donc toi, dans getCellText, il faut que tu programmes la récupération du contenu de la cellule dont les coordonnées te sont données en paramètre.
L'avantage de passer par le view, est que tes données peuvent être stockées ailleurs que dans un RDF. Elles peuvent être stockée dans un tableau javascript, ou un fichier xml quelconque, une base de donnée etc... donc à toi de lire la source de donnée adéquate pour récuperer le contenu indiqué. ex : en admettant que toutes les données du tree soient dans un tableau javascript datas
var treeView = { getCellText : function(row,column){ return datas[row][column]; },
Toi tu as besoin d'un arbre hierarchique. En fait lors de l'affichage du ligne par ligne, le tree va aussi appeler la méthode iscontainer(row) de ton objet, pour déterminer si la ligne courante est un conteneur, donc si elle contient des fils: à toi donc de renvoyer true ou false en fonction de ça. Dans le même genre, tu as getLevel(row).
voir ici http://www.xulplanet.com/references/xpco(..) pour connaître toutes les fonctions que tu peux développer pour indiquer à ton arbre comment réagire lors de l'affichage.
Pour ton histoire de lenteur, je ne sais pas si c'est du à mozilla ou ton code.
Envoyé par : skik00
Date : 27/07/2004 10:11
Merci beaucoup pour ta réponse.
En fait mes données proviennent d'une base de données (c'est un programme Java (à part) qui est chargé de générer des fichiers RDF).
Mais le fichier RDF généré fait une 30aine de Mo :( (car 6000 lignes de base de données x3 sous-niveaux)
Je ne sais pas encore comment faire pour alléger les ressources à afficher (peut on récupérer directement les données en y faisaont une sorte de "référence" dans le xul?).
Autre petit "soucis" le fait d'etre passé avec le tree-builder (flag dont-build-content) m'a engendré des erreurs javascript (car on ne peut plus utiliser certaines méthodes (agissant sur des références DOM), j'ai corrigé des erreurs mais je n'arrive plus à faire la chose suivante: mon javascript permettait après recherche sur critère de faire le focus sur la ligne du tree de l'élément trouvé, je n'arrive plus à faire ce focus :( si quelqun a une idée.... Merci
Cyril
Envoyé par : skik00
Date : 27/07/2004 16:40
Autre petit "soucis" le fait d'etre passé avec le tree-builder (flag dont-build-content) m'a engendré des erreurs javascript (car on ne peut plus utiliser certaines méthodes (agissant sur des références DOM), j'ai corrigé des erreurs mais je n'arrive plus à faire la chose suivante: mon javascript permettait après recherche sur critère de faire le focus sur la ligne du tree de l'élément trouvé, je n'arrive plus à faire ce focus :( si quelqun a une idée.... Merci
Cyril
C'est bon pour le focus, j'ai "rusé" (currentTree étant mon arbre et currentRow ma ligne en cours de traitement (à "focus"er):
// mettre la ligne recherchée (et trouvée) en haut de la vue currentTree.treeBoxObject.scrollToRow(currentRow); // selectionner cette ligne (la "surligner", "focuser") currentTree.view.selection.select(currentRow);
Cyril
Envoyé par : Utilisateur anonyme
Date : 09/08/2004 21:37
Cyril, serait-il possible d'avoir des infos sur ton code, s'il-te-plait ? (java + la partie XUL/Javascript) Je suis très intéressé. Merci.
Envoyé par : skik00
Date : 11/08/2004 10:38
Cyril, serait-il possible d'avoir des infos sur ton code, s'il-te-plait ? (java + la partie XUL/Javascript) Je suis très intéressé. Merci.
J'ai bien vu ton message, mon appli étant développée pour une société , je ne peux pas me permettre de t'envoyer tout le code... J'espère que tu comprends. Néanmoins (dans la mesure de mes compétences et de mon expérience en xul) ça me ferait très plaisir de pouvoir t'aider!!!!!!!!
Donc dis-moi ce que tu veux (quelles parties de mon code tu veux absolument) ou les parties où tu pèches et j'essaierai de t'aider (si c'est dans mes cordes ;) et de t'envoyer les parties de code en rapport)
( si tu le veux bien, laisse moi une adresse mail valide (ou boite non pleine), (j'ai essayé bertails_alexandre"at"hotmail.com sans succès))
:)
A bientôt j'espère.
Cyril
Envoyé par : Utilisateur anonyme
Date : 11/08/2004 19:12
oups erreur :-S en fait l'adresse n'est pas la bonne... utilise alexandre.bertails@cnes.fr Encore désolé... Alex
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.