Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Trier un "Tree"

Envoyé par : jep

Date : 01/06/2004 01:06

Bonjour,

Je débute tout juste en XUL et j'essaye de l'utiliser pour créer une AppliWeb. Pas de problème pour créer l'interace. Maintenant, j'attaque la gestion des comportements...

Mon problème du moment est le suivant : J'ai créé un TREE contenant 4 colone (TREECOLS). J'aimerai pouvoir faire en sorte que le contenu de mes colones se trie par ordre alphabétique lorsqu'on clique sur l'entete de la colone. Je suppose qu'il faut utiliser les attributs "sortActive", "sortDirection" et "sort". Les quelques test que j'ai fait jusqu'a présent n'on rien donné. J'ai un peu de mal à comprendre comment ça marche, surtout "sort".

Si vous aviez quelques piste de recherche, ce serait pas de refus. Merci.

# Re: Trier un "Tree"

Envoyé par : jep

Date : 01/06/2004 10:02

Arf... bon, je commence à comprendre tout doucement.

En fait, "sortActive" et "sortDirection" ne sont des attribut qui n'ont une inscidence que visuelle. Par contre, je n'ai pas toujours pas bien compris "sort"

Je suppose qu'il va faloire passer par une fonction JS qui va trier mon arbre XML (TREECHILDREN). Avant de me lancer dans le developpement d'une tel fonction, je voulais savoir s'il n'en existerait pas déja une ?

# Re: Trier un "Tree"

Envoyé par : laurentj

Date : 01/06/2004 12:32

Il me semble que le tree ne peut être trié que si la source de donnée est un fichier RDF (bref, pas de donnée en dur dans le fichier xul).

Est ce le cas actuellement pour toi ?

Si c'est le cas : il n'y a rien à développer, tout se fait automatiquement ( http://www.xulplanet.com/tutorials/xultu(..) )

Si ce n'est pas le cas, si la source de donnée est autre chose que du xml ou si les données sont en dur dans le fichier xul, il va falloir de faire une fonction de trie en js

# Re: Trier un "Tree"

Envoyé par : jep

Date : 01/06/2004 13:02

Oui, effectivement, j'en était arrivé aux memes conclusions.

Donc, je me suis mis afaire des test à l'aide de fichier RDF... et là, malgrès la lecture attentive du tuto, impossible de remplir mon TREE à l'aide de mon fichier RDF

Actuellement, j'en suis là :

Le TREE en XUL : @@

<tree flex="1" 
           id="listeProd" 
           hidecolumnpicker="false" 
           enableColumnDrag="true"
           datasources="http://localhost/cprovence/maintenance/produits.rdf" 
           ref="rdf:produits"
           flags="dont-build-content" >
 <treecols>
   <treecol id="listeNom" flex="2" label="Nom" />
   <splitter class="tree-splitter" />
   <treecol id="listeCat" flex="1" label="Categorie" hidden="true" />
   <splitter class="tree-splitter" />
   <treecol id="listeFou" flex="1" label="Fournisseur" hidden="true" />
   <splitter class="tree-splitter" />
   <treecol id="listeAct" flex="1" label="Action" />
 </treecols>
       
 <template>
   <rule>
     <treechildren>
       <treeitem uri="rdf:*">
         <treerow>
           <treecell label="rdf:http://maintenance/produits/rdf#nom"/>
           <treecell label="rdf:http://maintenance/produits/rdf#categorie"/>
           <treecell label="rdf:http://maintenance/produits/rdf#fournisseur"/>
           <treecell label="rdf:http://maintenance/produits/rdf#action"/>
         </treerow>
       </treeitem>
     </treechildren>
   </rule>
 </template>
</tree>

@@

Et mon fichier RDF : @@

<?xml version="1.0"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:PRODUITS="http://maintenance/produits/rdf#">
 <RDF:Seq about="produits">
   <RDF:li>
      <RDF:Description about="produits/prod1">
        <PRODUITS:nom>Lion</PRODUITS:nom>
        <PRODUITS:categorie>Panthera leo</PRODUITS:categorie>
        <PRODUITS:fournisseur>Mammal</PRODUITS:fournisseur>
        <PRODUITS:action>Mammal</PRODUITS:action>
      </RDF:Description>
   </RDF:li>
   <RDF:li>
      <RDF:Description about="produits/prod2">
        <PRODUITS:nom>Tarantula</PRODUITS:nom>
        <PRODUITS:categorie>Avicularia avicularia</PRODUITS:categorie>
        <PRODUITS:fournisseur>Arachnid</PRODUITS:fournisseur>
        <PRODUITS:action>Arachnid</PRODUITS:action>
      </RDF:Description>
   </RDF:li>
   <RDF:li>
      <RDF:Description about="produits/prod3">
        <PRODUITS:nom>Hippopotamus</PRODUITS:nom>
        <PRODUITS:categorie>Hippopotamus amphibius</PRODUITS:categorie>
        <PRODUITS:fournisseur>Mammal</PRODUITS:fournisseur>
        <PRODUITS:action>Mammal</PRODUITS:action>
      </RDF:Description>
   </RDF:li>
 </RDF:Seq>
</RDF:RDF>

@@

Note, je ne travail pas sur une application chrome, mais sur une appliweb, j'appelle donc mon fichier XUL via mon navigateur (Firefox) avec l'adresse "http://localhost/test.xul"

# Re: Trier un "Tree"

Envoyé par : Utilisateur anonyme

Date : 06/09/2004 16:46

Bonjour, Je rencontre le même type de problème :

J'ai ce fichier xul :

<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

 <tree  flex="1"
        hidecolumnpicker="true"
        seltype="single"
        style="overflow: auto;"
        ref="urn:data:row"
        datasources="arbre_rdf.rdf">
  <treecols>
   <treecol id="libelle"
            label="libellé"
            flex="4"
            primary="true"
            sort="rdf:http://www.opensi.org/compta/regles/rdf#libelle"
            sortActive="true"
            sortDirection="ascending"/>
   <treecol id="debit"
            label="débit"
            flex="1"
            sort="rdf:http://www.opensi.org/compta/regles/rdf#debit"/>
   <treecol id="credit"
            label="crédit"
            flex="1"
            sort="rdf:http://www.opensi.org/compta/regles/rdf#credit"  />
   <treecol id="compte"
            label="compte"
            flex="1"
            sort="rdf:http://www.opensi.org/compta/regles/rdf#compte"  /> 
  </treecols>

  <template>
   <treechildren>
    <treeitem uri="rdf:*">
     <treerow>
      <treecell  label="rdf:http://www.opensi.org/compta/regles/rdf#libelle"/>
      <treecell  label="rdf:http://www.opensi.org/compta/regles/rdf#debit" />
      <treecell  label="rdf:http://www.opensi.org/compta/regles/rdf#credit" />
      <treecell  label="rdf:http://www.opensi.org/compta/regles/rdf#compte" />
     </treerow>
    </treeitem>
   </treechildren>
  </template>

 </tree>

</window>

Le fichier RDF correspondant est le suivant :

<?xml version="1.0" encoding="ISO-8859-1"?>
 
 
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:REGLES="http://www.opensi.org/compta/regles/rdf#">
 
 <RDF:Seq RDF:about="urn:data:row">
 
   <RDF:li>
     <RDF:Description RDF:about="urn:data:row1">
       <REGLES:libelle>libelle1</REGLES:libelle>
       <REGLES:debit>26</REGLES:debit>
       <REGLES:credit>27</REGLES:credit>
     </RDF:Description>
     <RDF:Seq RDF:about="urn:data:row1">
       <RDF:li>
         <RDF:Description>
           <REGLES:libelle>libelle12</REGLES:libelle>
           <REGLES:debit>12</REGLES:debit>
           <REGLES:compte>compte12</REGLES:compte>
         </RDF:Description>
       </RDF:li>
       <RDF:li>
         <RDF:Description>
           <REGLES:libelle>libelle13</REGLES:libelle>
           <REGLES:compte>compte13</REGLES:compte>
           <REGLES:credit>13</REGLES:credit>
       </RDF:Description>
       </RDF:li>
       <RDF:li>
         <RDF:Description>
           <REGLES:libelle>libelle14</REGLES:libelle>
           <REGLES:compte>compte14</REGLES:compte>
           <REGLES:debit>14</REGLES:debit>
           <REGLES:credit>14</REGLES:credit>
         </RDF:Description>
       </RDF:li>
     </RDF:Seq>
   </RDF:li>
   <RDF:li>
     <RDF:Description>
       <REGLES:libelle>libelle2</REGLES:libelle>
       <REGLES:debit></REGLES:debit>
       <REGLES:credit>2</REGLES:credit>
       <REGLES:compte>compte2</REGLES:compte>
     </RDF:Description>
   </RDF:li>
   <RDF:li>
     <RDF:Description>
       <REGLES:libelle>libelle3</REGLES:libelle>
       <REGLES:debit>3</REGLES:debit>
       <REGLES:credit></REGLES:credit>
       <REGLES:compte>compte3</REGLES:compte>
     </RDF:Description>
   </RDF:li>
   <RDF:li>
     <RDF:Description>
       <REGLES:libelle>libelle4</REGLES:libelle>
       <REGLES:debit></REGLES:debit>
       <REGLES:credit>4</REGLES:credit>
       <REGLES:compte>compte4</REGLES:compte>
     </RDF:Description>
   </RDF:li>
                                                                                                                  
 </RDF:Seq>
</RDF:RDF>

... et pas moyen de trier les colonnes...

je suis sous Debian + firefox 0.9.1 Français.

à noter que l'exemple figurant sur le tutorial de Xulplanet fonctionne très bien par contre...

# Re: Trier un "Tree"

Envoyé par : David@site

Date : 08/09/2004 09:40

jep a mon avis ton code est juste (j'ai pas regarder dans le detail, mais j'ai pas vu d'enormite), le probleme pour toi a mon avis c'est la gestion des droits, en effet, une application web distantes en .xul est tres limitée dans ce quel peut faire (c'est pour notre securite). Lis ceci: http://xulfr.org/wiki/ApplisWeb Mais tu remarqueras que l'on peut augmenter ces droits en signant son application (c'est explique dans le lien que je t'ai cite) Balinette si toi aussi c'est une application web, ca doit etre le meme probleme. Il parait (j'ai jamais essaye) que c'est plutot difficle de signer une application, alors je serais vous, pour develloper j'utiliserais une application chrome, ca a tous les droits et c'est facile a installer, et puis tu peux modifier les fichiers a l'envie, alors qu'avec l'appliWeb signe, si tu cree un nouveau fichier, il faut que tu refasse la signature (il me semble) mais surtout tu dois la reinstaller.

Bon courage,

@+ David

# Re: Trier un "Tree"

Envoyé par : Utilisateur anonyme

Date : 08/09/2004 12:45

Balinette si toi aussi c'est une application web, ca doit etre le meme probleme.

Non : même en lançant mon appli en chrome, ça ne marche pas...

# Re: Trier un "Tree"

Envoyé par : jep

Date : 08/09/2004 20:41

Oui, effectivement, j'en étais arrivé à la même conclusion, mais comme Ballinette, ça fonctionne avec les ficher d'exemple, mais dès que l'on sort du cadre des exemples, ça ne marche plus !!!!!!

# Re: Trier un "Tree"

Envoyé par : David@site

Date : 08/09/2004 22:22

Balinnette, ton RDF, pour moi il y a un truc qui cloche, il y a 2 balises RDF:Seq imbriquee, alors avant de faire le tri, est ce que le simple affichage de ton RDF dans le tree fonctionne correctement? autre chose ton tree on va d'aord faire le tri sur une colonne ca sera plus simple a debugger. l'adresse pour verifier tes RDF: http://www.w3.org/RDF/Validator/

Jep, ton RDF est correct juste un petit reproche, il faudrait garder le RDF en majuscule pour la balise d'ouverture et celle de fermeture:

@@<RDF:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ...

</RDF:Seq> </RDF:rdf>@@ tout les autres rdf en miniscules, mais c'est vraiment pour chipoter. Ton probleme vient plutot de ton tree, je vois pas la fonction de triage, essaye ca:

@@<tree flex="1" 
          id="listeProd" 
          hidecolumnpicker="false" 
          enableColumnDrag="true"           datasources="chrome://cprovence/maintenance/produits.rdf" 
          ref="produits"
          flags="dont-build-content" >
<treecols>
  <treecol id="listeNom" flex="2" label="Nom" class="sortDirectionIndicator" sortActive="true" sortDirection="ascending" sort="rdf:http://maintenance/produits/rdf#nom" />
  <splitter class="tree-splitter" />
  <treecol id="listeCat" flex="1" label="Categorie" hidden="true" />
  <splitter class="tree-splitter" />
  <treecol id="listeFou" flex="1" label="Fournisseur" hidden="true" />
  <splitter class="tree-splitter" />
  <treecol id="listeAct" flex="1" label="Action" />
</treecols>
      
<template>
  <rule>
    <treechildren>
      <treeitem uri="rdf:*">
        <treerow>
          <treecell label="rdf:http://maintenance/produits/rdf#nom"/>
          <treecell label="rdf:http://maintenance/produits/rdf#categorie"/>
          <treecell label="rdf:http://maintenance/produits/rdf#fournisseur"/>
          <treecell label="rdf:http://maintenance/produits/rdf#action"/>
        </treerow>
      </treeitem>
    </treechildren>
  </rule>
</template>
</tree>@@

si tu places ca en chrome ca devait te trier la colonne "Nom", tu remarqueras que j'ai mis la "datasources" avec un URL chrome parce que j'ai franchement un doute avec un RDF sur ton localhost, mais essai toujours.

voila dites moi ce que vous pensez de ses corrections.

@+ David

# Re: Trier un "Tree"

Envoyé par : Utilisateur anonyme

Date : 09/09/2004 15:39

David@site a écrit:

Balinnette, ton RDF, pour moi il y a un truc qui cloche, il y a 2
balises RDF:Seq imbriquee, alors avant de faire le tri, est ce que le
simple affichage de ton RDF dans le tree fonctionne correctement?
autre chose ton tree on va d'aord faire le tri sur une colonne ca sera
plus simple a debugger. l'adresse pour verifier tes RDF:
http://www.w3.org/RDF/Validator/

Le fait d'imbriquer les balises RDF:Seq permet d'afficher l'arbre avec une hiérarchie du contenu, comme dans un gestionnaire de fichiers avec des sous-dossiers, par exemple... je ne savais pas que ça n'était pas conforme au W3C, mais l'arbre s'affiche correctement...

... j'ai réduit l'arbre à une colonne simple pour voir, ça ne marche pas mieux... :-( :

le XUL :

<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

 <tree  flex="1"
        hidecolumnpicker="true"
        seltype="single"
        style="overflow: auto;"
        ref="urn:data:row"
        datasources="arbre_rdf.rdf">
  <treecols>
   <treecol id="libelle"
            label="libellé"
            primary="true"
            sort="rdf:http://www.opensi.org/compta/regles/rdf#libelle"
            sortActive="true"
            sortDirection="descending"/>
  </treecols>

  <template>
   <treechildren>
    <treeitem uri="rdf:*">
     <treerow>
      <treecell  label="rdf:http://www.opensi.org/compta/regles/rdf#libelle"/>
     </treerow>
    </treeitem>
   </treechildren>
  </template>

 </tree>

</window>

et le RDF :

<?xml version="1.0" encoding="ISO-8859-1"?> 

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:REGLES="http://www.opensi.org/compta/regles/rdf#">
 
 <RDF:Seq RDF:about="urn:data:row">
 
   <RDF:li>
     <RDF:Description RDF:about="urn:data:row1">
       <REGLES:libelle>4</REGLES:libelle>
     </RDF:Description>
   </RDF:li>
   <RDF:li>
     <RDF:Description>
       <REGLES:libelle>2</REGLES:libelle>
     </RDF:Description>
   </RDF:li>
   <RDF:li>
     <RDF:Description>
       <REGLES:libelle>3</REGLES:libelle>
     </RDF:Description>
   </RDF:li>
   <RDF:li>
     <RDF:Description>
       <REGLES:libelle>1</REGLES:libelle>
     </RDF:Description>
   </RDF:li>
                                                                                                                   
 </RDF:Seq>
</RDF:RDF>

# Re: Trier un "Tree"

Envoyé par : David@site

Date : 09/09/2004 17:40

Balinette, pour le RDF ok tu as raison alors inspire toi de cet exemple http://xulfr.org/xulplanet/xultu/exemple(..) que l'on trouve dans ce chapitre http://xulfr.org/xulplanet/xultu/datasrc(..) c'est exactement un RDF de ce type qu'il te faut, qd ca marchera on reviendra au tri, a ce propos dans ton tree ton datasources ne me plait guere, essai avec une URI du type chrome:// ca ira deja mieux.

@+ David

# Re: Trier un "Tree"

Envoyé par : Utilisateur anonyme

Date : 13/09/2004 09:46

David@site a écrit:

Balinette, pour le RDF ok tu as raison alors inspire toi de cet exemple
http://xulfr.org/xulplanet/xultu/exemple(..) que l'on trouve dans ce
chapitre http://xulfr.org/xulplanet/xultu/datasrc(..) c'est exactement
un RDF de ce type qu'il te faut, qd ca marchera on reviendra au tri,

Mais ça marche déjà !! Je veux dire l'arbre s'affiche déjà correctement avec mon RDF... c'est pour le tri que ça pose problème...

a ce propos dans ton tree ton datasources ne me plait guere, essai
avec une URI du type chrome:// ca ira deja mieux.

ça ne marche pas mieux... j'ai toujours mon arbre qui s'affiche, mais impossible de trier les lignes :-(

# Re: Trier un "Tree"

Envoyé par : Cyrare

Date : 06/10/2004 18:49

Ballinette, essaye de mettre flags="dont-build-content" dans ton tag <tree>

# Re: Trier un "Tree"

Envoyé par : medspx

Date : 07/10/2004 16:11

Hello,

j'avais les mêmes problèmes que toi (à s'arracher les cheveux), sur la même config (Sarge et Mozilla 1.6). Je viens de trouver l'origine du couac: la configuration d'apache !

En fait, il faut ajouter les lignes suivantes dans ta conf de serveur web (/etc/apache2/apache2.conf ou autres fichiers selon config): AddType application/x-xpinstall .xpi AddType application/vnd.mozilla.xul+xml .xul AddType text/xml .rdf .xbl AddType application/x-x509-ca-cert .cacert

C'est rappelé sur le site xulfr mais franchement, on peut chercher un bout de temps avant de comprendre que ça vient de là. Ce qui m'a mis la puce à l'oreille: l'exemple sur le tuto fonctionnait très bien à partir du site xulfr. En récupérant le code (XUL + RDF) du tuto et en le mettant sur le serveur web local, pas de réaction même si je mettais la "datasources" vers le site de xulfr...

En corrigeant, effectivement ça marche !

# Re: Trier un "Tree"

Envoyé par : Utilisateur anonyme

Date : 07/10/2004 17:08

Cyrare a écrit:

Ballinette, essaye de mettre flags="dont-build-content" dans ton tag <tree>

ça marche, merci ;-)

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.