Envoyé par : syl
Date : 27/04/2007 11:49
Bonjour à tous,
J'ai un souci sur un arbre RDF généré dynamiquement. L'idée est de modifier les colonnes et le template de l'arbre en fonction des données à afficher. Voici la tecnique que j'utilise :
Tout semble correct, mais je n'arrive pas afficher mes résultats dans mon tree, et ça me prend la tête... Voici le xul :
<tree id="TREE_result" datasources="" ref="urn:data" flex="10" flags = "dont-build-content"> <treecols id="TREECOLS_result"> <!-- Contenu rempli dynamiquement --> </treecols> <template> <rule> <conditions> <content uri="?uri"/> <member container="?uri" child="?result"/> </conditions> <bindings id="BIND_result"> <!-- Contenu rempli dynamiquement --> </bindings> <action> <treechildren> <treeitem uri="?result" > <treerow id="TREEROW_result"> <!-- Contenu rempli dynamiquement --> </treerow> </treeitem> </treechildren> </action> </rule> </template> </tree>
Voici le java script :
var nbcol = reponse.data.getElementsByTagName("col").length; for(j=0; j<nbcol; j++) { treecols = document.getElementById("TREECOLS_result"); col = reponse.data.getElementsByTagName("col")[j].textContent; // col = nom de colonne newcol = document.createElement("treecol"); newcol.setAttribute("id","COL_"+col); //id de la colonne,en "COL_"+ nom champ newcol.setAttribute("label", col); //label de la colonne = nom du champs newcol.setAttribute("sort","rdf:http://www.aase.org/results/rdf#"+col); // ressource de classement = nom de la ressource rdf newcol.setAttribute("sortDirection","descending"); // Sort direction en croissant par défaut newcol.setAttribute("class","sortDirectionIndicator"); // Classe de la colonne avec affichage fleche sens du classement newcol.setAttribute("flex","1"); // flex="1" par défaut if(j==1) newcol.setAttribute("sortActive",true); // tri croissant sur la 2ème colonne par défaut (la 1ère étant attribuée à l'ID if(j==0) { newcol.setAttribute("hidden",true); // Masquage par défaut de la première colonne (id) newcol.setAttribute("primary",true); } treecols.appendChild(newcol); // création de la nouvelle colonne if(j<nbcol-1) // SI on n'est pas à la derniere colonne alors on insere un splitter { newsplitter = document.createElement("splitter"); newsplitter.setAttribute("class","tree-splitter"); treecols.appendChild(newsplitter); } } // préparation du template des ligne du tableau for(j=0; j<nbcol; j++) // Remplissage des bindings { col = reponse.data.getElementsByTagName("col")[j].textContent; bindings = document.getElementById("BIND_result"); newbinding = document.createElement("binding"); newbinding.setAttribute("subject", "?result"); newbinding.setAttribute("predicate", "http://www.aase.org/results/rdf#"+col); //label de la colonne = nom du champs newbinding.setAttribute("object", "?"+col); // ressource de classement = nom de la ressource rdf bindings.appendChild(newbinding); } for(j=0; j<nbcol; j++) // Remplissage des treecell { col = reponse.data.getElementsByTagName("col")[j].textContent; treerow = document.getElementById("TREEROW_result"); newtreecell = document.createElement("treecell"); newtreecell.setAttribute("label","?"+col); treerow.appendChild(newtreecell); } //attribution du datasource document.getElementById("TREE_result").setAttribute("datasources", ""); document.getElementById("TREE_result").setAttribute("datasources", serveur1+"?action=peupletreeresult&datasource=" +reponse.data.getElementsByTagName("datasource")[0].textContent);
et le RDF :
<?xml version="1.0" encoding="utf-8"?> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:AA="http://www.aase.org/results/rdf#"> <Bag about="urn:data"> <li> <Description AA:id_fluide="1" AA:nom_fluide="Electricité" AA:abbrev_fluide="ELEC"/> </li> <li> <Description AA:id_fluide="2" AA:nom_fluide="Gaz Naturel" AA:abbrev_fluide="GAZ"/> </li> <li> <Description AA:id_fluide="3" AA:nom_fluide="Fioul" AA:abbrev_fluide="FOD"/> </li> </Bag> </RDF>
Je me demande si ma méthode est bonne ? ou il y a peut être quelquechose d'évident mais je le vois pas !
Merci par avance
Syl
Envoyé par : syl
Date : 29/04/2007 18:02
Apres avoir cherché, le souci venait du fait que mon arbre n'affichait aucune ligne (j'ai du spécifié un attribut rows sur celui-ci pour forcer l'affichage de ligne). Je m'en vais de ce pas revoir le tutoriel sur le modele de boite et les flex pour avoir une présentation correcte, sans spécifier un nombre de ligne à mes arbres...
PS : je ne sais comment modifié le titre des discussions, c'est à dire mettre un "[résolu\]" devnat le sujet de celle-ci. Comment-fait-on ?
Merci
Syl
Envoyé par : Ner0lph
Date : 29/04/2007 18:18
syl a écrit :
PS : je ne sais comment modifié le titre des
discussions, c'est à dire mettre un "[résolu\]"
devnat le sujet de celle-ci. Comment-fait-on ?
Ben, édite ton premier message et modifie-z-en (^_^) le titre.
Envoyé par : syl
Date : 29/04/2007 18:23
Bon OK, j'ai rien dit ; )
Bonne soirée
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.