TreePanel : Construire un arbre Extjs avec des données statiques#

Comme promis dans l’article Hello World, on va commencer à aborder les choses sérieuses. Dans cet article on va dessiner un arbre avec des données statiques en format JSON. On va tout d’abord, initialiser une page “extjs enabled” en ajoutant les références vers les fichiers js qu’il faut bien (voir cet article)

L’arbre contiendra les données hiérarchisées des modes de transports comme ceci :

La racine sera « Modes de transport » qui contiendra 2 nœuds enfants : « Transport en commun » et « Transport privatif ». le Transport en commun contiendra les nœuds enfants suivants : « Train », « Métro »,et « Bus »… Et ainsi de suite. Voici les données en format JSON :

var moyensDeTransport = [{ "text": "Transport en commun", "id": "11", "leaf": false, "cls": "folder", "children": [ { id: "111", text: "Train", "leaf": false, "cls": "file", "children": [ { id: "1111", text: "TGV", "leaf": true, "cls": "file", "children": [] }, { id: "1112", text: "Corail", "leaf": true, "cls": "file", "children": [] }, { id: "1113", text: "TER", "leaf": true, "cls": "file", "children": [] } ] }, { id: "112", text: "Métro", "leaf": true, "cls": "file", "children": [] }, { id: "113", text: "Bus", "leaf": true, "cls": "file", "children": [] } ]},

{ "text": "Transport privatif", "id": "12", "leaf": false, "cls": "folder", "children": [ { id: "11", text: "Voiture", "leaf": true, "cls": "file", "children": [] }, { id: "21", text: "Taxi", "leaf": true, "cls": "file", "children": [] } ]} ];

 

L’objet arbre du framework extjs est le Ext.Tree.TreePanel. On peut l’instancier d’une manière très simple : var arbre = new Ext.Tree.TreePanel() ; Sauf que de cette façon on a juste instancier un objet en mémoire de type TreePanel mais nous ce qu’on veut c’est l’afficher dans notre page, il faut donc configurer l’objet, pour cela on a deux manières de faire :

- En utilisant les Config Options du constructeur (la méthode la plus couramment utilisée)

- En utilisant les méthodes publiques de l’objet après l’avoir instancié

Dans cet article on va utiliser les Configs Options. Pour ce faire, il faut tout simplement passer en paramètre au constructeur un objet JSON contenant toutes les configs options qu’on veut remplir comme ceci :

var arbreMoyensDeTransport = new Ext.tree.TreePanel({
    el: 'container', //l’id de l’élément html qui va contenir l’arbre (div)
    animate: true, //animer l’arbre lors des expand / collapse
    enableDD: false, //Désactiver le Drag and drop
    loader: treeloader, //Le composant qui va charger l’arbre// Note: no dataurl, register a TreeLoader to make use of createNode()
    autoHeight: true, //la hauteur du conteneur de l'arbre s’adapte à la hauteur de l’arbre
    selModel: new Ext.tree.DefaultSelectionModel(), //Par défaut c’est le singleSelectionModel, définit la politique de sélection dans l’arbre  
    rootVisible: true //La racine est visible
});

 

Pour l’instant on a créé une instance de l’arbre mais on ne l’a pas encore lié avec les données qu’il doit contenir. Pour cela on va tout d’abord instancier le type Ext.tree.AsyncTreeNode en passant à la config option ‘children’ l’objet JSON déclaré ci-dessus de la manière suivante :

// set the root node
var root = new Ext.tree.AsyncTreeNode({
    text: 'Moyens de transport', //texte du noeud
    draggable: false, // Désactiver le Drag and drop sur ce noeud
    id: '1', // identifiant du noeud
    children: moyensDeTransport //Objet JSON contenant la structure de l’arbre

});

Ensuite on va appeler la méthode publique ‘setRootNode’ de TreePanel permettant de définir le nœud racine de l’arbre :

arbreMoyensDeTransport.setRootNode(root);

Il ne reste plus qu’à afficher le résultat :

arbreMoyensDeTransport.render();

 

Voici le résultat :

image

On vient donc d’utiliser un objet de type Ext.tree.TreePanel qu’on a lié à des données statique au format JSON pour construire et afficher un arbre dans un page.

Conclusion :

Quelques remarques à noter après ce premier article :

- Extjs est un framework javascript objet (Comme dit au départ)

- Tous les constructeurs de n’importe quel type d’objet du framwork Extjs prennent en paramètre un objet JSON.

- Les contrôles Extjs sont bindabable à des données sous le format JSON

Friday, February 20, 2009 2:30:12 PM (Romance Standard Time, UTC+01:00) #    Comments [0]  | 

 

Débuter avec Extjs : Hello World#

La première chose à faire pour commencer à programmer avec Extjs c'est de télécharger le framework ici (http://extjs.com/products/extjs/download.php)

Pour utiliser le framework Extjs au sein de votre page web il suffit d'ajouter ces deux balises de script dans la balise head comme ceci (ext-2.2.1 est le répertoire contenant le framework):

<head>

... <script type="text/javascript" src="./ext-2.2.1/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="./ext-2.2.1/ext-all.js"></script>

...

</head>

En incluant ces deux fichiers dans notre page on peut déjà utiliser toutes les fonctionnalités et les composants qu'offre le framework extjs. Mais il est recommandé d'inclure aussi le fichier css pour avoir un rendu un peu plus joli.

<head>

...

<link rel="stylesheet" type="text/css" href="./ext-2.2.1/resources/css/ext-all.css"/>

... </head>

Il ne reste plus qu'à écrire notre code pour faire une alerte de Hello World. Créer un fichier .js vide et y inclure les quelques lignes suivantes :

var Startup = {

    init : function(){
            Ext.Msg.alert('Hello', 'My hello world with Extjs'); 
    }
}

Ext.onReady(Startup.init, Startup);
 

Startup est un objet contenant la fonction init qui va s'exécuter au démarrage de l'application. Ext.onReady() est une fonction qui est déclenchée lorsque le document est prêt, elle prend en paramètre la fonction à exécuter et le contexte (scope).

Enfin inclure le fichier javascript que vous venez de créer dans votre page html.

Voici le résultat :

image

Vous venez d’utiliser Extjs pour la première fois, je sais ce n'est pas transcendant :) mais il faut bien commencer par le début. Dans les prochains articles on essayera d'aller plus en détail et de faire des choses un peu plus poussées pour voir la puissance de ce framework.

 

 

Sunday, February 15, 2009 2:23:00 PM (Romance Standard Time, UTC+01:00) #    Comments [0]  | 

 

Extjs : Tout ce dont vous avez besoin en javascript#

Au sein des applications SOA, la couche de présentation est de plus en plus souvent développée en full AJAX. Le langage Javascript est un langage très puissant mais au niveau interface utilisateur, il ne met pas à la disposition des développeurs autre chose que les contrôles HTML. Donc pour faire des contrôles évolués comme une belle grille qu’on pourrait binder à une collection de données par exemple, il faut tout écrire à la main ce qui fait généralement fuir les développeurs et décourage les architectes parce qu’il y a tout à faire et c’est une porte ouverte à du code mal écrit,… Pour dé complexifier le code javascript, on a à notre disposition plusieurs frameworks qui proposent des composants tout prêt, mais malheureusement certains d’entre eux (même ceux qui sont payants) sont mal codés et sacrifient les performances ce qui est crucial pour du code qui s’exécute côté client.

Extjs est l’un des framaworks objet javascript les plus complets dédié à l’interface utilisateur. Il est très puissant et offre des composants UI légers, stylés et bindable à des collections de données (données statique ou via un web service). Il permet aussi de faire beaucoup d’autres choses comme de la manipulation de données, de la manipulation de chaînes de caractères, des requêtes AJAX, …


La communauté Ext est très active sur les forums, le seul point faible avec ce Framework c’est la documentation qui, même si elle est bien faite (facilité de recherche), elle n’est pas toujours à jour et manque considérablement d’exemples. C’est spécifiquement sur ce point qu’on va essayer de travailler. Utilisateur d’Extjs depuis quelques semaines, j’ai pris goût à l’utilisation de ce framework qui s’est avéré très intuitif à l’utilisation. Je vais donc essayer de poster des articles sur ce framework pour palier au manque d’exemples sur le net.

Je vous recommande donc vivement l’utilisation du framework Extjs pour votre couche de présentation et vous encourage à faire de même.

Saturday, February 14, 2009 8:52:51 PM (Romance Standard Time, UTC+01:00) #    Comments [0]  | 

 

All content © 2012, Zied Nemili