Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

# [Pb] Tri simple sur les données RDF d'une listbox

Envoyé par : cokinou

Date : 08/01/2007 16:52

Bonjour

Je cherche à afficher une liste dont les listitem sont issu d'un RDF. Il faut que cette liste soit triée mais j'ai quelques souci que je ne comprends pas.

Voici mon RDF :

 <?xml version="1.0"?>
 <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:ANIMALS="http://animal/rdf#">
 <RDF:Seq RDF:about="">
    <RDF:li>
       <RDF:Description RDF:about="http://animal/1">
          <ANIMALS:name>1</ANIMALS:name>
       </RDF:Description>
    </RDF:li>
    <RDF:li>
       <RDF:Description RDF:about="http://animal/2">
          <ANIMALS:name>2</ANIMALS:name>
       </RDF:Description>
    </RDF:li>
    <RDF:li>
       <RDF:Description RDF:about="http://animal/3">
          <ANIMALS:name>3</ANIMALS:name>
       </RDF:Description>
    </RDF:li>
    <RDF:li>
       <RDF:Description RDF:about="http://animal/4">
          <ANIMALS:name>4</ANIMALS:name>
       </RDF:Description>
    </RDF:li>
    <RDF:li>
       <RDF:Description RDF:about="http://animal/5">
          <ANIMALS:name>5</ANIMALS:name>
       </RDF:Description>
    </RDF:li>
    <RDF:li>
       <RDF:Description RDF:about="http://animal/6">
          <ANIMALS:name>6</ANIMALS:name>
       </RDF:Description>
    </RDF:li>
 </RDF:Seq>
 </RDF:RDF>

Et voici mon code XUL :

 <listbox id="animals" datasources="rdf/animal.rdf" ref="" flex="1"
        sortResource="rdf:http://animal/rdf#name"
        sortDirection="ascending">
    <listhead>
       <listheader id="listheader-name" label="name" onclick="sortListDesc()"/>
    </listhead>
    <template>
       <listitem uri="rdf:*">
          <listcell label="rdf:http://animal/rdf#name"/>
        </listitem>
    </template>
 </listbox>

Et ma fonction javascript sortListDesc() :

 function sortListDesc() {
    var listToSort = getElementById('animals');
    var sortService = Components.classes["@"].getService(Components.interfaces.nsIXULSortService);
    sortService.sort(listToSort, 'rdf:http://animal/rdf#name', 'descending');
 }

Lorsque j'affiche ma page, la liste est : 2, 3, 4, 5, 6, 1 (donc pas trié) et si j'appuye sur le listheader qui appel normalement le tri décroissant, j'obtient : 1, 6, 5, 4, 3, 2....

J'y comprends rien du tout.... Quelqu'un peut-il m'aider ?

Merci d'avance

# Re: [Pb] Tri simple sur les données RDF d'une listbox

Envoyé par : cokinou

Date : 15/01/2007 10:06

cokinou a écrit:

Et voici mon code XUL :
<listbox id="animals"
datasources="rdf/animal.rdf" ref="" flex="1"

sortResource="rdf:http://animal/rdf#name"
sortDirection="ascending">
<listhead>
<listheader id="listheader-name"
label="name" onclick="sortListDesc()"/>
</listhead>
<template>
<listitem uri="rdf:*">
<listcell
label="rdf:http://animal/rdf#name"/>
</listitem>
</template>
</listbox>

Bon, j'ai trouvé mon erreur, j'ai mis sortResource="rdf:http://animal/rdf#name" à la place de sortResource="http://animal/rdf#name" (j'avais mis "rdf:" en trop). Donc maintenant tout marche.... ou presque..... :-)

Savez-vous comment trier une colonne de nombre à virgule ? (j'ai trouvé comment trier une colonne par ordre alphabétique, par ordre numérique pour des entiers (integer)... mais pour des nombres à virgules, comment on fait

Merci d'avance pour vos réponses (en espérant avoir un peu plus de succès que ma première question)

# Re: [Pb] Tri simple sur les données RDF d'une listbox

Envoyé par : thefab

Date : 16/01/2007 17:42

Normalement pour trier par nombre ou par date, donc autre que alphabétique il faut rajouter nc:parseType="Integer" ou nc:parseType="Date" dans ta source de données (tri des résultats). Mais je sais pas si ça fonctionne pour les nombres à virgules ?

# Re: [Pb] Tri simple sur les données RDF d'une listbox

Envoyé par : cokinou

Date : 16/01/2007 18:04

thefab a écrit:

Normalement pour trier par nombre ou par date,
donc autre que alphabétique il faut rajouter
nc:parseType="Integer" ou nc:parseType="Date" dans
ta source de données ([tri des
résultats|
esultats.html]). Mais je sais pas si ça fonctionne
pour les nombres à virgules ?

Malheureusement, le tri par nombre avec nc:parseType="Integer" ne fonctionne pas sur les chiffres à virgule (enfin ca fonctionne mais ca remplace tout les chiffres à virgules par des entiers :-( )

Merci pour ton idée, si une autre te surgit, n'hésite pas ;-)

# Re: [Pb] Tri simple sur les données RDF d'une listbox

Envoyé par : omicron

Date : 16/01/2007 18:53

Est-ce que tu peux utiliser un arbre à la place d'une liste? Je n'utilise les listes que lorsque l'usage d'un arbre n'est pas possible et ainsi je peux trier sur des réels. Voilà le principe, je prévois deux colonnes :

  • une pour afficher les valeurs
  • une autre pour effectuer les tris avec une valeur chaine qui correspond à la valeur réelle justifiée à gauche par des zéros.

La première colonne fait référence à la deuxième pour les tris et la deuxième est cachée (et pas présente dans le columnpicker).

# Re: [Pb] Tri simple sur les données RDF d'une listbox

Envoyé par : cokinou

Date : 17/01/2007 10:46

omicron a écrit:

Est-ce que tu peux utiliser un arbre à la place
d'une liste?
Je n'utilise les listes que lorsque l'usage d'un
arbre n'est pas possible et ainsi je peux trier
sur des réels. Voilà le principe, je prévois deux
colonnes :
* une pour afficher les valeurs
* une autre pour effectuer les tris avec une
valeur chaine qui correspond à la valeur réelle
justifiée à gauche par des zéros.

La première colonne fait référence à la deuxième
pour les tris et la deuxième est cachée (et pas
présente dans le columnpicker).

En fait, je n'ai pas vraiment regardé à utiliser un arbre, vu que je n'affiche qu'une liste d'éléments donc je dois en sélectionner un.... Donc si un arbre peut me le permettre rien ne m'empêche de passer par un arbre....

Peux-tu m'explique par contre ton système pour qu'une colonne fasse référence à une autre ?

Merci d'avance

# Re: [Pb] Tri simple sur les données RDF d'une listbox

Envoyé par : omicron

Date : 17/01/2007 11:16

Exemple :

  • la première colonne affiche les données flottantes et la propriété "sort" fait référence à la deuxième colonne;
  • la deuxième colonne contient les données formatées convenablement pour permettre le tri
<tree flex="1" flags="dont-build-content" ref="http://dummy/content" datasources="rdf:null">
  <treecols>
    <treecol id="float" label="Valeur" width="100" class="sortDirectionIndicator" style="text-align: right;" sortActive="true" sortDirection="ascending" sort="rdf:http://dummy/rdf#float-sorted" />
    <treecol id="float-sorted" label="Sorted" width="100"  hidden="true" ignoreincolumnpicker="true" />
  </treecols>
  ...
  ...
</tree>

# Re: [Pb] Tri simple sur les données RDF d'une listbox

Envoyé par : cokinou

Date : 17/01/2007 14:28

omicron a écrit:

Exemple :
* la première colonne affiche les données
flottantes et la propriété "sort" fait référence à
la deuxième colonne;
* la deuxième colonne contient les données
formatées convenablement pour permettre le tri

J'ai compris le principe, mais cela est encore bloquant pour moi car je n'arrive à formatter mes données différement du contenu de mon fichier RDF.

Explication, dans mon fichier RDF j'ai

 <RDF:Description RDF:about="http://tests/1"
                  TEST:value="1.5"/>
 <RDF:Description RDF:about="http://tests/2"
                  TEST:value="9.2"/>
 <RDF:Description RDF:about="http://tests/3"
                  TEST:value="-3.1"/>
 <RDF:Description RDF:about="http://tests/4"
                  TEST:value="27.86"/>
 ...

et dans mon code XUL je génére mon arbre comme ca :

 <tree datasources="tests.rdf"
       ref="http://tests"
       flags="dont-build-content">
   <treecols>
     <treecol id="float"
              label="Valeur"
              sortActive="true" 
              sortDirection="ascending"
              sort="rdf:http://dummy/rdf#float-sorted" />
     <treecol id="float-sorted"
              label="Sorted" 
              hidden="true"
              ignoreincolumnpicker="true"/>
   </treecols>
   <template>
     <treechildren>
       <treeitem uri="rdf:*">
         <treerow>
           <treecell label="rdf:http://tests/rdf#value"/>
           <treecell label="??????"/>
         </treerow>
       </treeitem>
     </treechildren>
   </template>
 </tree>

Mais que dois-je mettre à la place des ?? pour me permettre de formatter le champ 'rdf:http://tests/rdf#value' ?

Merci d'avance pour ton aide ;-)

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.