Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

# trier un tree sur une donnée n'appartenant pas au rdf

Envoyé par : hhf

Date : 27/04/2006 22:04

Alors la ouf, je vais expliquer. J'ai un gros gros probleme. Avant toutes chose, je suis pas dans le chrome, donc pas de XPCOM

Voila, j'ai un tree non hierarchique avec deux colonnes, la 1er est une image (stylé via l'attribute "properties"), est la 2eme contient du texte sur le label du treecell.

Ce tree est peuplé avec un rdf. le flags "dont-build-content" est posé de sorte que je puisse trier la colonne de texte.

Voila pour le peuplement.

Le template comporte deux rules. les 2 sont identiques mis a part l'attribute "properties" sur le 1er treecell.

la 2eme rule ne pose pas de predicat et affiche donc toutes les ligne par defaut.

la premiere rule quand à elle est du style :

 <rule myNS:code="XXXXXXXXX">...

Voila pour les rules

Lors du chargement de la page, je demande un fichier xml au server (via AJAX) qui me donne les "myNS:code" qui sont specifiques au contexte et auquels s'appliquera la fameuse rule

via le DOM je clone la 1er rule, je change la valeur de l'attribute "myNS:code", par la valeur adequate, et j'insere la nouvelle rule avant la rule "factice" (aucune valeur du rdf n'est egal à XXXXXXXXXX).

Je recharge le rdf (je le met à "rdf:null" puis le retablit)

Et la formidable ca marche les lignes proprent au contexte (utilisateur session ou autre), ont bien le style approprié.

Maintenant, les utilsateurs me demandent (font chié) que ces mêmes lignes (celle des rules modifiés) apparaissent en premier.

J'ai bien la solution d'enlever le "dont-build-content" et de deplacer les treeitem au moment de créer les rules, mais ca sous entend que je sache que le rdf est fini de se charger (ca encore c'est pas difficile), mais surtout je perds la possibilitée de trier le tableau.

Voila merci de m'avoir lu jusque là, j'attends vos idees avec impatience.

# Re: trier un tree sur une donnée n'appartenant pas au rdf

Envoyé par : hhf

Date : 28/04/2006 22:42

bon, pour ceux que ca interesse, j'ai trouvé une solution : Bon c'est un peu compliqué mais ca a l'air de marché, tous les fichiers etant en asynchrone, il se pourait que dans certain cas les lignes ne soit pas trié par la selection.

Donc maintenant j'ai trois fichiers

  • 1 rdf : qui donne la liste de tous les item marké ou pas.
  • 1 rdf : propre au contexte, donc ceux qui seront marké.
  • 1 fichier xml avec aussi la liste des code des lignes qui doivent etre marké.

donc le truc c'est

  • 1) de demander le xml, de créer les rules adéquat.
  • 2 )demander le rdf propre au contexte.

Et enfin

  • 3) de demander le rdf avec la liste complete des item.

Pour charger successivement les deux rdf, je met un datasources avec les deux url dans l'ordre que je veux qui se charge.

Voila là ca marche. Alors bien sur si le premier rdf met plus de temps que le second a etre generer par le server, ca risque de ne pas marcher. Enfin peut etre, je sais pas comment gekko analyse l'attribut datasources. Si ca se trouve, il charge le premier, puis lance le second etc.

Si vous avez d'autres solutions, je suis preneur.

# Re: trier un tree sur une donnée n'appartenant pas au rdf

Envoyé par : Eric

Date : 29/04/2006 22:37

Dans un tree, on est jamais obligé de trier une colonne sur l'élément qui y est affiché.

Exemple

Prenons une colonne de dates au format dd/mm/yyyy, si on les trie sur base de ce qui y est affiché (ordre croissant), on risque de se retrouver avec la date 01/01/1100 avant la date 01/01/12.

On peut donc créer un attribut supplémentaire de forme yyyymmdd qui servira au tri.

La datasource comprend alors des resources du style

<rdf:description ....>
  <ns:date     "01/01/1100"/>
  <ns:sortdate "11000101"/>
<rdf:description ....>

et la colonne correspondante dans le tree peut être

<treecol id="date"
   label="date"
   flex="1"
   sortActive="false"
   sortDirection="?date"
   sort="?sortdate"/>

pour autant que les variables ?date et ?sortdate soient définies dans un triple ou un binding

<triple subject="?myResource"
    predicate="myNS#date"
    object="?date"/>
<triple subject="?myResource"
    predicate="myNS#sortdate"
    object="?sortdate"/>

Tu pourrais donc n'utiliser qu'une datasource que tu traîterais avant de la lier au tree pour y ajouter les attributs relatifs à la manière dont les éléments doivent être triés.

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.