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.