Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Tri liste RDF générée

Envoyé par : ptitrene

Date : 10/06/2005 17:25

Bonjour,

Voilà mon souci : je génère via JS un RDF pour alimenter un tree... tout se passe bien (affichage correct), mais je n'arrive pas à trier ma liste après avoir ajouté mes attributs de tri !

     <tree id="arbre-principal" flex="1" datasources="rdf:null" ref="urn:root"
              autostretch="always" flags="dont-build-content" 
              containment="urn://cs/RDF#liste_entrees"
              enableColumnDrag="true"><!--seltype="single" -->
        <treecols>
           <treecol id="name" label="Name" flex="3" 
                          persist="width ordinal hidden sortActive sortDirection"
                          class="sortDirectionIndicator" 
                          sortActive="true" sort="rdf:urn://cs/RDF#name"/>
        </treecols>

Quelqu'un aurait-il une piste ? peut-être le rdf:null ?

# Re: Tri liste RDF générée

Envoyé par : Utilisateur anonyme

Date : 11/06/2005 16:31

Salut,

désolé de ne pas pouvoir répondre à ta question, mais pourrai tu m'indiquer comment tu alimente ton arbre avec du RDF généré en Javascript ?

J'ai une chaine de caractère représentant le contenu d'un fichier RDF mais je n'arrive pas à générer l'arbre avec.

Merci d'avance.

# Re: Tri liste RDF générée

Envoyé par : ptitrene

Date : 13/06/2005 08:53

Je me suis mal exprimé : j'alimente mon tree depuis un fichier RDF lu par JS (je peux ainsi gérer l'absence de ligne)

Voici le bout de code :

// composants XPCOM nécessaires aux RDF
var RDF = 	Components.classes['@mozilla.org/rdf/rdf-service;1'].getService();
RDF = RDF.QueryInterface(Components.interfaces.nsIRDFService);
var RDFC = Components.classes['@mozilla.org/rdf/container;1'].getService();
RDFC = RDFC.QueryInterface(Components.interfaces.nsIRDFContainer);
var RDFCUtils=Components.classes['@mozilla.org/rdf/container-utils;1'].getService();	 RDFCUtils=RDFCUtils.QueryInterface(Components.interfaces.nsIRDFContainerUtils);
// Recherche du repertoire profil
var fichier = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile);
// Nom fichier
fichier.append("cs.rdf");
// Transformation du fichier en URL
var ios = Components.classes["@mozilla.org/network/io-service;1"].
	getService(Components.interfaces.nsIIOService);
var fileHandler = ios.getProtocolHandler("file").
QueryInterface(Components.interfaces.nsIFileProtocolHandler);
var URL = fileHandler.getURLSpecFromFile(fichier);
// Affectation datasource
var ds = RDF.GetDataSourceBlocking(URL);
ds = ds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
// creation racine si fichier vide
var rootNode =  RDF.GetResource("urn:root");
var seqNode =  RDF.GetResource("urn:root:seq");
// insertion de la racine de l'arbre (si celui-ci est vide)
ds.Assert(rootNode,
	 RDF.GetResource("urn://cs/RDF#liste_entrees"),
	 seqNode, true);
RDFCUtils.MakeSeq(ds, seqNode);
RDFC.Init(ds, seqNode);
// recuperation du tag liste
var tree = document.getElementById("arbre-principal");
tree.database.AddDataSource(ds);
tree.builder.rebuild();
ds.Flush();

# Re: Tri liste RDF générée

Envoyé par : ptitrene

Date : 13/06/2005 10:04

Pour en avoir le coeur net, je viens de mettre "en dur" mon fichier RDF dans le XUL, mes colonnes s'affichent correctement, mais ne veulent toujours pas se trier !

# Re: Tri liste RDF générée

Envoyé par : Utilisateur anonyme

Date : 14/06/2005 08:24

as-tu déclaré le type de tes champs dans ton rdf... ? j'ai eu le même probleme dernierement. Pour un champ qui contient une date il faut indiquer explicitement que c'est une date, pour un champ qui contient un chiffre ou un nombre également... exemple :

<?xml version="1.0" encoding="ISO-8859-1"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:NC="http://home.netscape.com/NC-rdf#"
  xmlns:row="http://dummy/rdf#">
<RDF:Bag about="urn:data:row">
<RDF:li>
<RDF:Description>
<row:tache_id NC:parseType="Integer">1270</row:tache_id>
<row:priorite_demandeur>Normal</row:priorite_demandeur>
<row:attribuee_a>NA</row:attribuee_a>
<row:etat>EN_COURS</row:etat>
<row:sujet>laison ISDN piste usine: 3 lignes au lieu de 4</row:sujet>
<row:accuse_de_reception>f</row:accuse_de_reception>
<row:priorite></row:priorite>
<row:duree_estimee>30mn</row:duree_estimee>
<row:login_demandeur>blum
</row:login_demandeur>
<row:mots_cles></row:mots_cles>
<row:duree_totale_reelle></row:duree_totale_reelle>
<row:derniere_modification NC:parseType="Date">2005-01-28 10:53:17.957233+01</row:derniere_modification>
<row:visibilite_tache>t</row:visibilite_tache>
<row:categorie>exploitation</row:categorie>
<row:pole>NA</row:pole>
<row:dpt_demandeur></row:dpt_demandeur>
<row:sous_pole>NA</row:sous_pole>
<row:date_cible NC:parseType="Date"></row:date_cible>
<row:date_creation NC:parseType="Date">2005-01-28 10:38:05</row:date_creation>
<row:justification></row:justification>
<row:note NC:parseType="Integer"></row:note>
</RDF:Description>
</RDF:li>

apres le tri se passe beaucoup mieux.

Fabrice

# Re: Tri liste RDF générée

Envoyé par : ptitrene

Date : 14/06/2005 10:16

J'ai trouvé l'origine de mon problème, c'était trop simple : l'attribut sort de la balise treecol doit être renseigné avec le contenu de l'attribut label de la balise treecell... si ce dernier est une variable du template RDF, on doit retrouver cette variable dans l'attribut sort

Rien ne remplace un bon exemple :

Avec un template tel que celui-ci :

        <template id="cs">
        <rule>
           <conditions>
              <treeitem uri="?uri" />
                 <triple 
                   subject="?uri"
                   predicate="urn://cs/RDF#liste_entrees"
                   object="?subheadings" />
                 <member container="?subheadings" 
                         child="?subheading" />
           </conditions>
           <bindings>
                    <binding subject="?subheading"                                
                             predicate="urn://cs/RDF#name"
                             object="?name" />
           </bindings>
           <action>
              <treechildren>
                 <treeitem uri="?subheading">
                    <treerow>
                     <treecell label="?name"/>
                    </treerow>
                 </treeitem>
              </treechildren>
           </action>
        </rule>
  </template>

On doit avoir une colonne définie ainsi :

<tree id="arbre-principal" flex="1" datasources="rdf:null" ref="urn:root"
             autostretch="always" flags="dont-build-content" 
             containment="urn://cs/RDF#liste_entrees"
             enableColumnDrag="true"><!--seltype="single" -->
       <treecols>
          <treecol id="name" label="Name" flex="3" 
                         persist="width ordinal hidden sortActive sortDirection"
                         class="sortDirectionIndicator" 
                         sortActive="true" sort="?name"/>
       </treecols>

Pourrait-on ajouter la façon d'alimenter cet attribut sur le wiki ?

@Fabrice : merci, j'avais bien noté ces fonctionnalités, qui me seront très utiles par la suite

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.