Découvrez comment programmer avec Wakanda en moins de temps qu’il n’en faut pour lire ce document. Nous allons vous montrer comment construire une application de type “Employés/Sociétés” en créant le modèle avec ses classes de données (datastore class), puis en ajoutant des données à notre application, et finalement nous afficherons ces données dans un navigateur, pour qu’un utilisateur puisse les manipuler. Des notions de base en JavaScript sont nécessaires pour suivre ce guide.
Après un rapide survol de l’architecture, nous vous montrerons comment :
- Créer la classe Employee,
- Créer une page html permettant d’afficher une liste d‘employés,
- Créer de nouveaux employés depuis le navigateur,
- Créer une classe Company, avec sa page HTML,
- Créer un attribut de type "relation" entre Employee et Company.
- Importer des données dans le datastore, et
- Améliorer les pages d’interface pour afficher les employés avec leurs sociétés et vice versa.
À la fin de ce guide, vous aurez appris les fondamentaux de Wakanda. À tout moment, vous trouverez également de nombreuses informations dans le Wakanda Doc Center et dans le Learning Center.
Note : Wakanda évolue très vite. Il se peut que certaines copies d’écran ne correspondent pas exactement aux interfaces que vous observerez. D’autant que Wakanda est distribué sur plusieurs canaux de diffusion , notamment le canal de production et le canal de développement.
Wakanda est une plate-forme JavaScript unifiée, du serveur au client, permettant de créer des applications métiers taillées pour Internet. Wakanda est constitué de trois parties, dont seules les deux premières sont utilisées lors de l’exécution :

Un seul langage est utilisé pour gérer la logique métier dans Wakanda : JavaScript.
La plate-forme Wakanda requiert au minimum les contextes suivants :
Wakanda Server
Wakanda Studio
Navigateurs
L’installation de Wakanda est extrêmement simple : après avoir téléchargé les produits, vous les placez où vous voulez sur votre disque. Généralement dans le dossier stockant les applications, mais cela n’est pas obligatoire.
Quand Wakanda Studio et Wakanda Server sont côte à côte, le studio peut lancer le serveur automatiquement. Si vous placez le studio et le serveur dans des endroits différents, le studio vous demandera de localiser le serveur à utiliser.
Une fois que les applications sont installées, double-cliquez sur l’icône de Wakanda Studio. Il n’est pas nécessaire de lancer le serveur, le Studio s’en chargera généralement automatiquement. Il est également possible de lancer le serveur en cliquant le bouton « Start Server » de la barre d’outils.
Voici une installation typique sur Windows, avec Wakanda Server et Wakanda Studio dans le même dossier :

Voici la même installation sur Mac OS

La fenêtre principale contient l’écran d’accueil, car aucune solution n’est ouverte pour le moment (voir ci-dessous pour plus de détails sur ce qu’est une solution). L’écran d’accueil peut changer dans le temps par rapport à cette copie d’écran :

Il y a trois parties principales dans cette fenêtre :

Dans Wakanda, vous créez un projet pour regrouper les différents fichiers (.js, .html, .css, .jpg, etc.) utilisés par votre application. Wakanda peut regrouper plusieurs projets ensemble pour constituer une solution. L’architecture de base peut être schématisée ainsi :
Wakanda Studio
Solution
Projet A
Projet B
. . .
Note : à ce jour Wakanda ne permet d’ouvrir qu’une solution à la fois
Chaque projet est constitué d’un certain nombre de fichiers rangés dans des répertoires : fichiers textes (HTML, JavaScript, logs, …) et fichiers binaires (gérés par Wakanda, comme le fichier de données, ou gérés par le développeur, comme les images du site web). Certains fichiers ont des extensions propriétaires mais sont en fait des fichiers texte, généralement XML (.waSettings ou .waModel par exemple).
Dans le cadre de ce guide, nous souhaitons afficher des données de type Employés/Sociétés sur un site web. Nous devons donc créer des classes correspondantes, des datastore class. Nous parlerons plus en détail de ces classes un peu plus loin. La description de ces classes est stockée dans le modèle, le datastore model.
Lors de l’exécution, lorsque nous accèderons aux données nous parlerons :
Pour créer un nouveau projet :

Comme il n’y a pas encore de solution, Wakanda en crée une du même nom. Nous avons ainsi la solution « Contacts », qui contient le projet « Contacts ». Un nouvel onglet vient s’ajouter à côté de « Home » :

Wakanda Studio crée tous les fichiers nécessaires au fonctionnement du projet. Nous reviendrons sur certains de ces fichiers plus tard.
Le but principal des datastore class est de vous permettre de vous concentrer sur la logique métier, les règles métier, de votre application :
Datastore class = Objet + Règles
Une datastore class contient un ou plusieurs attributs. Ainsi, la classe Employee aura les attributs lastName et firstName. Vous pouvez également créer des méthodes en JavaScript (les règles), associées à la classe, qui vous permettront d’initialiser, de valider, de calculer, etc.
Les datastore class sont au cœur de Wakanda. Avec Wakanda, vous passerez du temps à bien définir vos classes dans votre modèle. Une fois cette étape franchie, vous gagnerez énormément de temps lors de l’accès aux données et lors de la maintenance de votre code. Par exemple, modifier une règle métier ne nécessitera pas de changer les pages d’interface.
Pour commencer, nous devons tout d’abord ouvrir le modèle dans le Datastore Model Designer, outil permettant de créer graphiquement ses classes. Si besoin, déployez le projet « Contacts » pour afficher son contenu (le modèle - .fichier waModel – les réglages, le dossier WebFolder, …). Un double-clic sur Contacts.waModel l’ouvre dans le DataStore Model Designer, dans un nouvel onglet du Studio :

Note : pour plus d’informations sur le Datastore Model Designer, voir « Wakanda Studio Reference Guide » (en anglais) à cette adresse : http://doc.wakanda.org/Wakanda-Studio/help/Title/en/page751.html
Pour créer une nouvelle classe, cliquer sur le bouton « New Class » dans la barre d’outils :

La nouvelle classe est créée puis affichée dans la fenêtre. Elle a un nom donné par défaut, « DataClass1 », et un nom de collection par défaut (correspondant au nom de la classe auquel le suffixe « Collection » est ajouté) :

Quelques conseils :
Note : Donner des noms au pluriel/singulier est important sur le plan sémantique, mais n’est absolument pas obligatoire dans Wakanda : vous pouvez nommer vos classes et collections comme bon vous semble, tant que le nom donné est accepté par JavaScript.
Choisissez « Employee » comme nom de classe (quand bien même ce document est rédigé en français, notre exemple est développé en anglais). Wakanda définit automatiquement le nom de la collection :


Le nom de la classe peut également être saisi directement depuis la barre de titre de la classe, il suffit de double-cliquer dessus pour entrer en édition.
Par défaut, Wakanda crée automatiquement l’attribut ID pour chaque classe nouvellement créée. Ne vous attardez pas sur cet attribut pour le moment, mais ne le supprimez pas (nous en avons besoin pour les exemples, plus loin).
Nous pouvons maintenant ajouter trois attributs à cette classe. Le type de chaque attribut est indiqué dans le tableau suivant :
Attribut | Type |
lastName | string |
firstName | string |
salary | number |
Pour chaque élément listé dans le tableau ci-dessus, nous ajoutons un attribut à la classe, entrons son nom puis lui assignons un type.
Pour ajouter un attribut à une datastore class :

Répétez les étapes 1 à 4 pour créer les deux autres attributs. Pour le type « number », saisissez juste le début du nom du type (ici, « n »), puis éventuellement utilisez les flèches du clavier pour naviguer dans la liste de saisie prédictive, puis appuyez sur la touche Retour.
Lorsque le dernier attribut est créé (« salary », type « number »), un nouvel attribut est automatiquement ajouté à sa suite. Appuyez une fois encore sur Retour pour arrêter la création d’attributs pour cette classe.



Après avoir créé notre classe Employee, nous pouvons utiliser le GUI Designer pour créer la page d’interface – une page HTML – qui contiendra des widgets Wakanda afin d’afficher les données.
Depuis le Solution Explorer, sectionnez votre projet, et cliquez le bouton New Page, puis sélectionnez « For desktop » dans le menu qui s’affiche :

Note : si vous ne voyez pas ce bouton dans la barre d’outils, cliquez sur le bouton « Display » et son popup menu local, puis choisissez « New Page » dans le sous-menu « Toolbar Content ».
Entrez « employees » dans le dialogue qui s’ouvre alors. Inutile d’ajouter le suffixe « .html », Wakanda Studio le fait pour vous. Une fois le dialogue validé, le fichier est créé puis ouvert dans le GUI Designer, dans un nouvel onglet.
Note : Vous pouvez nommer vos pages comme bon vous semble, tant que le nom est valide une fois utilisé dans une URL
Le fichier « employees.html » créé est placé dans le dossier « WebFolder » du projet :

Si vous faites un clic droit sur votre fichier et choisissez « open Enclosing Folder », le Studio affiche alors le document dans l’Explorateur (Windows) ou le Finder (Mac) :

Le GUI Designer permet d’éditer les pages d’interface, dans lesquelles vous pouvez ajouter de puissants widgets. Une des principales forces de Wakanda est que, grâce au WAF (Wakanda Application Framework), la barrière qui existe entre un navigateur et les données sur le serveur est supprimée.
Nous allons maintenant ajouter un widget de type grille (Grid), et le lier à la datasource Employee (nous définirons plus loin le concept de datasource).
Le GUI Designer contient quatre grandes parties :

Pour ajouter un widget à la page :
Vous pouvez modifier les propriétés du widget sélectionné, ajouter du JavaScript (par exemple, pour réagir au clic sur un bouton), et définir le look & feel de votre page.
Nous allons créer une page simple, affichant une liste d’employés, et contenant une petite mise en forme.
Glissez-déposez un widget Grid dans la zone de dessin


Par défaut, le GUI Designer charge le modèle de données de votre projet, de telle sorte que les classes définies soient disponibles en tant que datasources.
Une datasource est, comme son nom l’indique, une source de données. Une datasource est utilisée pour définir le contenu d’un widget d’interface. Pour remplir notre Grid avec une liste d’employés, nous avons besoin d‘une datasource liée à la datastore class Employee. Le GUI Designer crée la datasource liée à la datastore class lorsque vous glissez la classe depuis l’onglet Model. Par défaut, le nom de la datasource est le même que celui de la classe à laquelle elle est liée, mais la première lettre est automatiquement passée en minuscule (Employee -> employee, UserAccount -> userAccount, etc.).
Note : une datasource représente ici des données stockées sur le serveur, mais les datasources peuvent aussi être liées à des objets JavaScript « locaux » (déclarés uniquement sur le navigateur) : variables scalaires, objets, tableaux. Par exemple, vous pouvez afficher le contenu d’un tableau JavaScript dans une Grid.
Après avoir déposé la datastore class Employee sur la Grid :
Lorsque la Grid est sélectionnée, l’onglet Properties (sur la droite) est rempli avec ses propriétés. Nous voulons d’abord formater la page elle-même (nous nous occuperons de la Grid un peu plus tard). La zone des propriétés est constituée d’onglets : Properties, Events, Skins et Styles. Ils permettent d’ajouter un titre à la page, de modifier le thème, de modifier la couleur de fond, ajouter une image en fond de page, … Dans ce document nous allons voir comment modifier le titre de la page.

Dans l’onglet Skins, vous pouvez définir une classe (au sens CSS du terme), un thème, et une palette de couleur à utiliser pour votre page. Des valeurs par défaut ont été présélectionnées. N’hésitez pas à tester différents thèmes et couleurs pour voir comment la page et la Grid sont modifiées.

Dans l’onglet Styles, vous pouvez modifier l’aspect de la page, changer l’image de fond, … Cliquez sur le bouton « Color » pour afficher le sélecteur de couleurs et choisir une couleur de fond qui vous convient.

Pour afficher une image comme fond de page, vous pouvez simplement glisser déposer une image depuis votre disque vers le champ Image de la section Background :

Dans cet exemple, après avoir déposé l’image, la page apparaît ainsi :

Wakanda crée automatiquement un dossier « Images » (s’il n’existait pas déjà) dans le « WebFolder », et y recopie les images. Vous pouvez le constater depuis le Solution Explorer :

Lorsque la datastore class Employee a été déposée sur la Grid, tous ses attributs ont été ajoutés. Vous pouvez maintenant modifier le widget, par exemple :
Sélectionnez la Grid et utilisez une de ses poignées pour la retailler et modifier sa hauteur et sa largeur (cela peut également être réalisé depuis l’onglet Styles).
À présent, activez l’onglet Properties, et dans la section Columns :
Déplacez la colonne « firstName » juste au dessus de « lastName », en faisant glisser l’icône

Votre Grid a maintenant l’apparence suivante :

Vous pouvez également retailler chaque colonne en positionnant le curseur au niveau de l’en-tête, sur la ligne séparant deux en-têtes. Vous pouvez aussi aller dans l’onglet Styles, puis sélectionner la partie de la Grid que vous souhaitez formater : en-tête, pied, corps, lignes paires, …
Vous avez probablement remarqué le dialogue pop-up qui s’affiche lorsque le curseur se trouve dans un des libellés. Ce dialogue permet de formater la colonne. Ici par exemple, nous souhaitons afficher le salaire en utilisant les séparateurs de milliers. Pour modifier ce format, il faut saisir # pour chaque chiffre à afficher, « 0 » pour un chiffre qui sera remplacé par un zéro (par exemple, "000" affichera "001" pour la valeur 1), une virgule pour indiquer le séparateur de milliers, et le point comme séparateur décimal. Voici notre format :

La colonne affichera « 123 456,00 » avec un navigateur Français, et « 123,456.00 avec un navigateur anglais.
Vous pouvez également souhaiter modifier les styles de la Grid. Sélectionnez la Grid puis allez dans l’onglet Styles, et modifiez les zones qui vous intéressent : en-tête (header), pied (footer), lignes paires/impaires (even / odd rows), etc.

Ici, par exemple, nous voulons que le salaire soit aligné à droite :

Vous pouvez également modifier le fond (image ou couleur), ainsi que n’importe quel style de texte comme vous le voulez.
En quelques minutes, vous avez créé une page web simple, qui affiche les employés de la base de données.
Revenez à présent à votre modèle. S’il n’est pas déjà ouvert, double-cliquez sur le fichier « Contacts.waModel », ou cliquez sur le bouton Model de la barre d’outils.
Pour créer la datastore class Company, suivez les mêmes étapes que celles utilisées pour créer la classe Employee, avec les différences suivantes :


Enregistrez les modifications en cliquant le bouton Save de la barre d’outils. Puis, cliquez sur le bouton Reload Model, pour indiquer à Wakanda Server que le modèle a été modifié et qu’il doit le recharger.
Dans la partie gauche du Solution Explorer, sélectionnez le projet lui-même, puis cliquez sur le bouton New Page et choisissez « For Desktop ». Nommez la page « companies ». Wakanda Studio crée la page web et l’ouvre dans un nouvel onglet du GUI Designer. Notez qu’à présent, l’onglet Model contient nos deux classes, Company et Employee :

Faites glisser une Grid et déposez-la dans la zone de dessin. Faites glisser la classe Company et déposez-la sur la Grid, comme vous l’avez fait lors de la création de la page des employés : modifiez la taille, changez les styles, adaptez l’interface à vos besoins.
Maintenant, lancez la page dans le navigateur et créez deux sociétés. Voici les nôtres :

Nous allons maintenant créer un attribut de type Relation entre les classes Employee et Company. Jusqu’à présent, nous avons créé des attributs de type Storage. Un attribut Relation est une déclaration qui indique à Wakanda : « Lors de l’exécution, cet employé peut – si besoin – être chargé avec des informations sur la société pour laquelle il travaille ». Il y a deux types d’attributs Relation:
Note : en fait, il est tout à fait possible qu’une société n’ait aucun employé, et qu’un employé ne travaille pour aucune société. Si vous êtes familiers de la pattern ActiveRecord, vous avez probablement déjà reconnu les classiques belongs_to et has_many.
Pour créer la relation N->1, suivez ces étapes :




Vous pouvez noter que :

![]()

Note : les noms peuvent varier selon la façon dont vous avez nommé vos classes et vos collections
Nous renommons, dans Company, « employeeCollection » en « allEmployees » : un double-clic sur le libellé « employeeCollection » permet de l’éditer et de le modifier :

Deux attributs de type Relation viennent d’être créés : N->1 et 1->N. En utilisant la notation à point de JavaScript, nous pouvons accéder à n’importe quel attribut de la classe Company depuis un Widget dont la datasource est reliée à Employee.
Par exemple, si vous souhaitez afficher le nom de la société dans la Grid de la page « employees.html » :
Tout au long de la saisie de « company.name », le menu local de saisie prédictive vous aide à choisir l’attribut. Sitôt que vous tapez « . » après « company », vous accédez aux attributs de la classe reliée.

Dans l’exemple suivi jusqu’à présent :
Nous voulons à présent lier, depuis un navigateur, chaque employé à une société pour arriver à ce résultat :
Employee | Company |
John Doe | Acme |
Alan Smith | SuperWak |
Claire Web | Acme |
Créez une nouvelle page en cliquant le bouton New page et en choisissant « For desktop » dans son menu local. Nommez la page « bind-emp-comp ». Le Studio crée la page et l’ouvre dans un nouvel onglet du GUI Designer :

Suivez ces étapes :
Note : le GUI Designer contient tous les outils d’alignement dont vous avez besoin pour aligner à gauche/droite/haut/bas/milieu, pour distribuer les widgets horizontalement ou verticalement. Sélectionnez deux widgets ou plus (ctrl-clic sur Windows, commande-clic sur Mac) et utilisez le bouton approprié :

Voici à quoi ressemble notre page :

Dans cette capture d’écran, la Grid des employés est sélectionnée. Vous pouvez noter que la colonne « Works For » est bien liée à company.name. Si vous publiez cette page dans votre navigateur (ici, Chrome sur Mac OS), elle apparaîtra comme ceci :

Dans la mesure où aucun employé n’est lié à une société, la colonne “Works For” est bien entendu vide. Depuis le GUI Designer, glissez puis déposez un widget « Button » entre les deux Grids :

Le bouton sélectionné, ouvrez l’onglet Events puis cliquez le bouton
situé à côté de l’événement « On Click » :

La première fois que vous associez du code JavaScript à un événement (pour un widget ou pour la page elle-même), le Studio réalise automatiquement les actions suivantes :

À présent, copiez-collez ce code dans l’éditeur :
// Create the association
sources.employee.company.set( sources.company );
// Save the employee
sources.employee.save();
Votre fichier JavaScript devrait ressembler à ceci :

Sauvegardez le fichier, puis basculez sur l’onglet de la page web…

…et lancez-la :

Une fois la page ouverte dans le navigateur, suivez ces étapes pour chaque employé :
Voici des copies d’écran de nos trois employés après les avoir liés à une société :

Nous allons à présent importer des employés et des sociétés. Il y a plusieurs façons d’importer des données dans un datastore Wakanda. Dans notre exemple, nous allons utiliser du code Server-Side JavaScript pour importer un fichier texte. Le document est délimité par des tabulations et contient les colonnes suivantes :
Nom de société -> Nom -> Prénom
Pour chaque ligne, nous commencerons par chercher la société dans le datastore . Si elle n’est pas trouvée, nous la créons. Cet exemple se veut simple : nous ne gérons pas le fait que des sociétés différentes peuvent avoir le même nom.
Tout d’abord, sélectionnez le projet « Contacts » dans le Solution Explorer, puis cliquez le bouton New JS :

Un dialogue vous demande de nommer votre fichier. Inutile d’ajouter l’extension « .js », le Studio le fera. Nommez le fichier « import ». Wakanda Studio crée le fichier, le place dans le dossier du projet, puis l’ouvre dans un nouvel onglet :

Il y a quatre zones dans l’éditeur de code (deux sont cachées par défaut)
Note : tous les scripts ne peuvent pas être lancés directement depuis l’éditeur de code. Typiquement, un script associé à une page html ne peut pas être exécuté sur le serveur. Si vous cliquez sur le bouton Run pour un .js associé à une page html, le Studio ouvre la page dans le navigateur.
Voici le code d’importation. Il évite d’importer des doublons : si vous lancez le script plusieurs fois de suite, les données ne seront pas dupliquées.
Copiez-collez le code suivant. Juste après, nous expliquons son déroulement plus en détail.
Notes :
// A simple log for the output
var log = "Count employees-before: " + ds.Employee.length + ", Count companies-before: " + ds.Company.length;
// Main function
function doImportEmpsAndComps () {
/* The doc. to import is in the solution folder, in a subfolder
named "Import". We load the full document in one shot (loadText)
and split it in an array (one line = one element).
*/
var lines = loadText( ds.getModelFolder().path + "Import/emps_comps.txt" ).split("\n");
/* Declare the variable that will hold the columns of each line.
We know the columns will be:
columns[0] Name of the company
columns[1] Last name of the employee
columns[2] First name
columns[3] Salary
*/
var columns = [];
// Now, loop for each entry in the array
lines.forEach( function(oneLine) {
// Get the columns for current line
columns = oneLine.split("\t");// Get the company. Create it if needed.
var theComp = ds.Company.find("name = :1", columns[0]);
if(theComp == null) { // Not found => create it
theComp = new ds.Company({
name : columns[0]
});
// Save it
theComp.save();
}
// Get the employee. Create it if needed.
var theEmp = ds.Employee.find("lastName = :1 and firstName = :2", columns[1], columns[2]);
if(theEmp == null) {
theEmp = new ds.Employee( {
lastName : columns[1],
firstName : columns[2],
salary : columns[3],
company : theComp // This is how you bind two entities with Wakanda!
});
} else {
theEmp.salary = columns[3],
theEmp.company = theComp;
}
theEmp.save();
});
}
// Call the function
doImportEmpsAndComps ();
// Log result
log += " / Count employees-after: " + ds.Employee.length + ", Count companies-after: " + ds.Company.length;
Voici quelques explications sur ce code. Toutes les API utilisées sont documentées sur http://doc.wakanda.org.
ds.company.find("name = '" + columns[0] + "'")
Note : cette technique est particulièrement intéressante lorsque vous manipulez des dates par exemple
Note : dans notre exemple, nous importons les sociétés par leur nom ce qui n’est pas la meilleure façon de faire puisque plusieurs sociétés peuvent avoir le même nom. La plupart du temps, vos données viendront d’une base de données avec généralement des clefs primaires et secondaires. Wakanda sait parfaitement importer ce genre de données, mais cela dépasse le cadre d’un guide de prise en main. Rapidement, disons que vous pouvez mettre dans l’attribut company de Employee l’ID de la société. Par exemple, si la société, dans la base de donnée originale, a l’ID 42, vous pourriez écrire theEmp.company = 42 afin d’associer l’employé courant à cette société.
Vous avez collé le code ci-dessus, vous pouvez cliquer le bouton Run :

Si le serveur n’était pas encore lancé, il est démarré. Une fois le script exécuté, notre propre log s’affiche dans l’output :

Note : notre fichier à importer contient 1 000 employés et 62 sociétés. Nous avons un total de 1 003 employés et 64 sociétés parce que nous avons créé des données dans les chapitres précédents.
Dans le chapitre « Création de la Page des Employés », nous avons créé une page très simple, affichant une liste d’employés. Nous allons maintenant améliorer cette page :
Dans le Solution Explorer, déployez le « WebFolder » et double-cliquez sur le fichier « employees.html ». Une fois ouvert dans le GUI Designer, sélectionnez la Grid créée précédemment :

Dans l’onglet Properties, placez la souris au-dessus de la colonne « Salary ». Quand le bouton
apparaît, cliquez dessus pour supprimer la colonne :

Faites de même pour la colonne « Works For ».
Réduisez la largeur de la Grid, de telle sorte que seuls le nom et le prénom soient visibles.
Dans la partie inférieure gauche, cliquez sur le bouton Datasources et déployez la datasource employee :

Faites des Ctrl-clic (Windows) ou Commande-clic (Mac) sur les attributs lastName, firstName et salary, puis ajoutez-les par glisser-déposer dans une zone libre du Designer :

Le dialogue « Auto generated widgets » s’affiche, vous demandant quels types de widgets vous souhaitez utiliser pour ces attributs :

Choisissez (en haut à droite), de créer un « Form ». Puis, modifiez les libellés pour les adapter à vos besoins. Changez « lastName » en « Last Name » ou en « Nom » par exemple. Lorsque vous cliquez sur le bouton « Create », le GUI Designer crée un widget de type Container, qui englobe un widget Text Input pour chaque attribut :

N’hésitez pas à aller regarder la documentation des Widgets et du GUI Designer (http://doc.wakanda.org/Wakanda-Studio-Reference-Guide/GUI-Designer.200-306826.en.html).
Un widget de type Container contient d’autres widgets. Lorsque vous déplacez un Container, son contenu se déplace avec lui. Dans l’onglet Styles pour le Container et les widgets Text Input, vous pouvez modifier leur apparence. Ainsi, vous pouvez changer leur couleur de fond, leur image de fond, leur bordure, etc. Pour chaque attribut, vous pouvez également modifier son libellé (police, taille, couleur). Pour cette initiation, nous conservons les valeurs par défaut.
Nous allons également ajouter :
Avant de commencer, il nous faut agrandir le Container, en utilisant sa poignée basse :

Glissez puis déposez un widget Text dans le Container :

Dans son onglet Properties, saisissez sa « Source » en écrivant employee.company.name (la saisie prédictive vous aidera à le faire rapidement) :

Augmentez la taille de la police, centrez le texte et modifiez la bordure :

Glissez-déposez un widget Button dans le container :

Liez la datasource employee à ce bouton, en la déposant dessus :

La propriété « Source » du bouton affiche maintenant employee :

Choisissez « Previous » dans le menu « Action », pour indiquer que vous souhaitez qu’un clic sur ce bouton passe à l’entité précédente dans la datasource (et donc, ici, visuellement, dans la Grid) :

Wakanda a défini « Previous » comme titre du bouton mais nous souhaitons utiliser des icônes pour nos boutons. Vous pouvez associer de une à quatre icones à vos boutons, correspondant aux différents états possibles : défaut, hover, active (le bouton est pressé) et disabled (inactif). Vous pouvez aussi utiliser la même image pour tous les états.
Ouvrez le dossier « Media » en cliquant sur le bouton Media et en choisissant Media Library :

La bibliothèque de médias s’ouvre dans le Solution Explorer :

Glissez une icône sur le widget Button :

Une fois l’image déposée sur le bouton, une copie du fichier est ajoutée au dossier « images » du « WebFolder »..
Si le bouton ne s’est pas retaillé tout seul aux dimensions de l’image, changez sa taille dans l’onglet Styles. Les images utilisées dans cet exemple sont de taille 24x24.
Pour associer d’autres images aux différents états, choisissez l’état qui convient dans la partie supérieure de l’onglet Styles, puis glissez-déposez une image dans la zone « Background ». Par exemple, pour associer l’image du bouton à l’état « active », sélectionnez « active », puis glissez l’image « active » correspondante :

Note : à l’heure où est écrit ce guide, le GUI Designer continue d’évoluer. Il se peut que la façon d’associer des images aux boutons soit un peu modifiée.
Vous pouvez également utiliser un widget Image button si vous préférez, qui offre plus de possibilités de formatage.
Nous allons maintenant créer deux autres boutons : un pour naviguer vers l’entité suivante dans la liste, un autre pour enregistrer les modifications apportées au Form que nous avons créé :
Sélectionnez les trois boutons et ajustez leur position en utilisant les outils d’alignement et de répartition. Voici notre page dans le GUI Designer :

Un point essentiel à comprendre est que tous ces widgets (une Grid, trois Text Input, un Text et trois Button) sont liés à la même datasource employee. Pour constater ce que cela signifie, testez la page dans le navigateur et vérifiez que :
Pour notre dernière page, nous voulons afficher une liste de sociétés avec leurs employés. Chaque fois que l’utilisateur cliquera sur une ligne des sociétés, nous voulons que la liste des employés soit mise à jour.
Créez une nouvelle page, nommée « comps-emps ». Dans cette page :
À présent, ajoutez une autre Grid. Dans cette Grid, nous voulons afficher la liste des employés de la société couramment sélectionnée. Nous ne devons pas lier la nouvelle Grid à la classe Employee, car cela créerait une datasource liée à tous les employés du datastore. À la place :

Maintenant que la Grid est liée à company.allEmployees, nous la formatons comme vu précédemment, par exemple, en retirant l’attribut « ID », en modifiant les libellés, etc. Nous terminons en alignant la seconde Grid à côté de la première.

Nous pouvons ajouter des employés dans la Grid listant les employés de la société sélectionnée. Cliquez sur le bouton
de la Grid des employés et saisissez un nouvel employé :

Lorsque votre saisie est terminée, le nouvel employé est associé à la société :

Ici, nous venons d’ajouter Lisa Rogers à la société SuperWak.
Dans ce guide de prise en main, vous avez découvert plusieurs fonctionnalités fondamentales de Wakanda. Vous pouvez en apprendre plus sur Wakanda, les datastore class, le Model Driven Development, la sécurité d’accès, le Wakanda Application Framework… au travers d’autres exemples et de la documentation.
La documentation : http://doc.wakanda.org/
Le Learning Center, avec notes techniques et vidéos : http://www.wakanda.org/learning-center