Envoyé par : gagalive
Date : 13/07/2007 10:29
Salut encore une fois à tous, je fais mes debuts en XUL et j'essais en ce moment d'ecrire application XUL. J'ai lu l'exemple cet XUL_Tutorial:Tree_View_Details . je voudrais realisé un arbre pareil mais seulement en utilisant un array à 2 dimensions, les données sont lues d'une base de donnée MySQL et sauvegarder dans le 2d array. À partir des données je voudrais generer mon arbre. Je sais que celà est possible, mais je ne sais comment le realiser, j'ai passé tout une soirée dessus, si quelqu'un pourrait me filer un coup de main?
Amicalement
Envoyé par : hhf
Date : 13/07/2007 19:49
sincerement fait ca en RDF, c'est bien plus simple.
Envoyé par : gagalive
Date : 13/07/2007 23:24
Merci pour ton idée Malheuresement c'est pas possible!!! En fait je suis en phase finissante et le resultat doit juste etre presenté dans l'arbre et la structure de l'application est basé sur ce 2d array. Je pensais vraiment ainsi construire le treeview sans grandes difficultés :-(
Amicalement raiment
Envoyé par : hhf
Date : 13/07/2007 23:49
si tu fais tout en local je comprends, mais sinon, un petit allez retour client serveur est tout a fait indiqué...
Envoyé par : gagalive
Date : 14/07/2007 01:38
l'application sera effectivement "un petit allez retour client serveur". Pourais stp tu être un peu plus claire?
Amicalement
Envoyé par : hhf
Date : 14/07/2007 02:02
Ben cet array tu le genere bien du coté client via une action de celui ci. Si c'est pas le cas les données sont sur le serveur et dans ce cas un RDF s'impose. (dasn la plupart des aures cas aussi :-D)
Donc ce Array est generé a partir d'action cliente. par exemple case à cocher dans une liste qui rajoute la ligne dans un arbre associé par exemple. Au lieu de créer un array sur le client, à chaque clique sur les dites case à cocher, tu send l'info au serveur (via AJAX par exemple) qui stoke les infos en base si pertinent ou dans un objet temporaire associé à la session du client. Une fois terminé tu confirmes que l'action c'est bien passé au client qui redemande le nouveau RDF.
Ca à l'air compliqué comme ca mais ca permet de garder une reelle coherence entre les données cleintes et serveur. et donc d'eviter les scripts à tout va et l'insertion d'object via le DOM qui sont en definitive inmaintenable koi que l'on en dise.
Voila si tu veux plus d'info, n'hesite pas.
Envoyé par : gagalive
Date : 14/07/2007 11:26
Bien sur que je veux plus d'infos L'array est effectivement generé par le client(à partir des données dejà existantes dans le banque de données :: c'est en fait le seul moment où le client et le server se contacte ce qui vient après se passe exclusivement sur le client) avec l'aide de l'array le treeview est genéré. L'utilisateur peut par drag and drop ajouter des données sur l'arbre(mon application est une sidebar, les données viennent de la page Web qui est actuellement visité, ces données appartienent `une categorie bien precise celà sous la directive de LingPipe). A la fin de l'application les nouveaux données ajoutés sont stokées dans la banque de donnée. En fait pendant l'utilisation de l'application in n'ya pratiquement aucune interaction entre client et serveur. Donc voilà à peu près comment fonctionne mon Api. Je n'ai malheuresement pas de grandes experience avec AJAX, ta methode serai vraiment pas mal.
Envoyé par : hhf
Date : 14/07/2007 21:06
En fait si les données n'ont pas à retourner sur le serveur et si ton appli fonctionne seulement coté cleint, ce n'est peut etre pas pertinent ce que j'ai dit, dit nous en un peu plus sur ton appli.
Envoyé par : gagalive
Date : 14/07/2007 23:32
Mon api fonctionne un peu coe le plugin clearforest de FF. Pour une page donnée on peut effectuer des recherches très precises. Par exemple si tu es une page web cocernant l'immobilier, tu peux rechercher sur la dite page tout ce qui à trait avec l'immobilier(la grosseur de la maison, sa location, nbre de pieces, etc...). La reconnaissance das donnees selon la categorie(immobilier,voiture,...)est assurée par LingPipe. Les donnees trouvees sur la page son alors classées dans un treeview. Voilà en gros l'api. En passant j'ai pu construire le treeview avec le 2d Array, en fait c'etait trop compliqué . Mais si t'a d'autres idées elles ont les biens venues Amicalement
Envoyé par : hhf
Date : 15/07/2007 02:30
Tu m'arrete si je me trompes, apres une recherche dans google, LingPipe est une API JAVA donc je suppose que le traitement ce fait sur un serveur distant. qui annalyse un inputstream (la page d'immobilier en question) et te retourne les données pour construire ton arbre. C'est bien ca ? Si c'est ca, le RDF sympose. si par contre les données sont extraites et traitées coté client, alors la, un array ca le fait, mais puisque c'est un plugin un RDF en memoire ferait aussi l'affaire. Je soupconne que de toute manniere le moteur RDF fonctionne un peu comme le treeview.
Ou alors j'ai rien compris...
Envoyé par : gagalive
Date : 15/07/2007 10:00
si par contre les données sont extraites et traitées coté client
Exactement, c'est le cas pour l'Api. En fait au debut j'ai utilisé le RDF après j'ai rencontré certaines difficultés pour construire mon arbre. Car celui-ci est un arbre personalisé. Alors j'ai un peu lu sur les treeview, c'etait ce donc j'avais besoin en plus la gestion dynamque se fait très bien.! Peut être je mettrais ici sur le forum kan je l'aurai terminé
Amicalement
Envoyé par : hhf
Date : 15/07/2007 13:59
Curieux de voir ca. Tu m'a pas dit si j'avais bien compris ton extention. Il y a donc un server d'appli qui comprend l'API LingPipe, oui ? et apres, cette API traite la page et retourne un resultat ? Donc le traitement est coté server ? non ?
Envoyé par : thefab
Date : 16/07/2007 09:30
je voudrais realisé un arbre pareil mais seulement en utilisant un array à 2 dimensions.
Si tu n'as pas besoin d'un arbre à plusieurs niveaux c'est vraiment trés facile d'implémenter nsITreeView. Attention ça fonctionne uniquement dans le Chrome (XULRunner ou extension) pas en remote.
Voici un exemple tout simple:
XUL
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window id="simple-tree-view-1-window" title="Simple nsITreeView (1)" persist="width height screenX screenY sizemode" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script src="simple-tree-view-1.js" type="application/x-javascript"/> <tree id="simple-tree-view-tree" class="spaced" flex="1"> <treecols> <treecol id="column-1-treecol" label="Colonne 1" flex="1"/> <splitter class="tree-splitter"/> <treecol id="column-2-treecol" label="Colonne 2" flex="1"/> <splitter class="tree-splitter"/> <treecol id="column-3-treecol" label="Colonne 3" flex="1"/> </treecols> <treechildren/> </tree> </window>
JS
const SimpleTreeView = { data: null, get rowCount() { return this.data.length; }, getCellText: function(row, column) { return this.data[row][column.index]; } }; function simpleTreeViewWindowOnLoad(e) { SimpleTreeView.data = []; for (var i = 0; i < 50000; i++) { SimpleTreeView.data[i] = []; for (var j = 0; j < 3; j++) { SimpleTreeView.data[i][j] = "Cellule " + i + " , " + j; } } document.getElementById("simple-tree-view-tree").view = SimpleTreeView; } window.addEventListener("load", simpleTreeViewWindowOnLoad, false);
Comme tu peux le constater les données sont placées dans SimpleTreeView.data mais elles peuvent très bien se trouver ailleurs (ton array 2D)
Remarque en attendant la version Wiki: l'exemple fonctionne mais génère pleins d'erreurs car il faut implémenter toutes les méthodes de nsITreeView.
Envoyé par : thefab
Date : 16/07/2007 10:32
J'ai commencé la version Wiki sous forme de tutoriel:
Après coup j'ai remarqué qu'il y en avait déjà une http://www.xulfr.org/wiki/TreeViewSimple mais bien que le titre dise qu'il s'agit d'une vue sans hiérarchie l'exemple gère la hiérarchie, donc je ne pense pas que ça fasse doublon...
Envoyé par : gagalive
Date : 28/07/2007 08:10
Salut, j'ai lu dans tes tutos mais j'ai rien trouvé. Je voudrais savoir comment on pourrait construire un treeview avec du JS objet orienté. Le js:
var treeView = { rowCount : 10000, getCellText : function(row,column){ if (column.id == "namecol") return "Ligne "+row; else return "18 février"; }, setTree: function(treebox){ this.treebox = treebox; }, isContainer: function(row){ return false; }, isSeparator: function(row){ return false; }, isSorted: function(row){ return false; }, getLevel: function(row){ return 0; }, getImageSrc: function(row,col){ return null; }, getRowProperties: function(row,props){}, getCellProperties: function(row,col,props){}, getColumnProperties: function(colid,col,props){} };
Amicalement
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.