Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# treeview

Envoyé par : Piou2fois

Date : 16/03/2006 11:52

Petite question

J'utilise la technique qui permet d'associer un treeview à un objet javascript suivant le schéma suivant :

var treeView = {
   rowCount : 71,
   getCellText : function(row,column){
return test[row][column.index];
   },
...

Concernant la valeur des getCellText, j'utilise un tableau 'test' multidimenssionel qui me permet de faire des tri facilement avec test.sort.

J'aimerai savoir comment je peux spécifier la valeur rowCount avec une variable, j'ai essayé

rowCount : test.length

test.length retournant le nombre de ligne de mon tableau, mais ça ne fonctionne pas. D'avance merci

# Re: treeview

Envoyé par : laurentj

Date : 16/03/2006 12:51

Il faut que tu utilise les getter et setter en javascript

get rowCount(){ return test.length;}

Si dans une autre situation tu veux aussi faire un traitement lors de l'assignation d'une valeur à une propriété :

set foo(val){ .... },

# Re: treeview

Envoyé par : Piou2fois

Date : 16/03/2006 14:45

Laurentj : aurais tu un exemple didactique pour tout ça ? J'ai un peu de mal à comprendre (apparemment il faut déclarer du private et du public mais je nage dans l'ignorance totale)

# Re: treeview

Envoyé par : Piou2fois

Date : 17/03/2006 08:17

Je laisse en attente cette question sur l'utilisation des get et set pour le moment.

J'ai par contre une autre question :)

Actuellement mon appli, charge le contenu d'un fichier texte tabulé pour en faire un tableau. Le nombre de colonnes et de lignes pouvant varier, je procède par appendchild successifs à la fois sur les treecols et les treechildren (en fait mon tree se résume à sa simple déclaration <tree id=... /> ) Problème, j'aimerai mettre en place un système de tri sur les colonnes et donc enclencher un tri lors d'un click sur une colonne. Soucis, je fais comment pour accèder au click ? (j'ai bien l'événement onclick sur le tree, mais ensuite je ne sais pas comment récupérer quelle colonne à été cliquée).

Quelqu'un aurait une idée ?

Accessoirement, il est possible d'ajouter un ascenseur horizontal à un tree ? (beaucoup de colonnes...)

# Re: treeview

Envoyé par : Piou2fois

Date : 17/03/2006 10:53

Juste pour dire que pour le nombre de ligne du treeview, il fallait juste faire

treeview.rowCount=test.length;

J'ai oublié que c'était un objet donc que l'on pouvait accéder à ses données facilement...

Ca va me permettre en fait, de faire des tris plus simple (supprimer les lignes qui ne correspondent pas au critères à la volée) en passant par un tableau intermédiaire.

Par contre, je n'ai pas trouvé comment faire un "refresh" du tree automatiquement (en fait il se fait dès que ma souris passe au dessus) La méthode refresh du tree ne s'appliquant qu'au donnée en RDF.

Toujours pas d'idée pour la scrollbar horizontale ? (overflow:auto ne fonctionnant pas, surement parce que tout est en flex=1)

# Re: treeview

Envoyé par : Piou2fois

Date : 17/03/2006 10:57

Bon bah je me répond à moi même, fallait juste tester.

Effectivement si l'attribut flex est spécifié sur les treecol, la scrollbar horizontale ne peut apparaître.

Il faut spécifier un width et ne pas mettre l'attribut flex.

Par contre je serai curieux de savoir comment forcer le width pour être à la largeur du plus grand élément...

# Re: treeview

Envoyé par : Piou2fois

Date : 17/03/2006 15:06

Arf, nouveau problème

J'utilise deux array à 2 dimensions.

  • Le premier origin_data
  • Le second modified_data

Au début, les deux sont identiques dont je fais

origin_data=modified_data

Ca fonctionne très bien jusque la.

Par contre le modified_data comme son nom l'indique est fait pour être modifié, et je lui vide tous ses éléments avec la méthode shift répétée en boucle.

Oui mais là problème, origin_data est aussi affecté par cette méthode, on dirait que les deux array sont liés. Comment pourrais je m'y prendre ?

Merci d'avance...

# Re: treeview

Envoyé par : chBok

Date : 17/03/2006 15:29

Piou2fois > figure toi que je travaille actuellement sur un script récursif qui utilise également un tableau à deux dimension. J'ai exactement le meme probleme que toi...

En fait, un tableau est un objet particulier de javascript (les pros peuvent me corriger au besoin), et du coup, j'ai constaté deux phénomènes :

  • ils sont TOUJOURS passés en référence dans les fonctions contrairement aux autres types.
  • il n'est pas possible de faire un copie (clone) d'un tableau par le symbole d'affectation =, sinon, tu obtiens une seconde référence (pointeur) du meme tableau.

Dans ce second cas, j'ai testé tab_copie = tab_origin.slice(0); qui semble donner de bon résultat, mais j'ai encore quelques soucis non expliqués du fait que mon tableau est à 2 dimensions.

Autre solution bourrin(e), recopier valeur par valeur le tableau dans un autre.

# Re: treeview

Envoyé par : Piou2fois

Date : 17/03/2006 15:34

bah oui, je crois que je vais me laisser tenter par la recopie valeur par valeur... Par contre, à travers une fonction ca pourrait marcher non ? genre

modified_data=transfert(origin_data)
function transfert(tableau){
return tableau
}

Je vais essayer ca pour voir

# Re: treeview

Envoyé par : Piou2fois

Date : 17/03/2006 18:08

Hum autre soucis maintenant, j'ai reussi à faire mon tri en cours de frappe, ca fonctionne super, mais comment faire pour forcer le tree à se mettre à jour ?

sachant que j'utilise ceci :

document.getElementById('arbre').view=treeview;

Pour info, la mise à jour se fait que lorsqu'un événements est détecté par le tree (passage de souris par exemple)

Edit : en fait j'ai trouvé, la réponse est toute simple : il suffit de réassigner le treeView au view :)
document.getElementById('arbre').view = treeView;
Ca met à jour tout de suite

A cela je rajoute un soucis supplémentaire (décidemment).

Je n'arrive pas à utiliser la méthode split pour les tabulations.

Si je fais un 'alert' du texte à splitter, l'affichage est correct. Ensuite je split avec l'expression régulière [\n\] ou [\\n\]. Le split ne fonctionne pas et j'obtiens surtout des sortes de ° à la place dans l'affichage...

Quelqu'un aurait une idée ? (j'ai retourné google dans tous les sens)

# Re: treeview

Envoyé par : Piou2fois

Date : 20/03/2006 12:03

J'ai trouvé quelques portes pour sortir, vous avez le choix...

Donc pour les tabulations c'est [\t\] et non [\n\] !

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.