Les trois interfaces ACOUNTRY, ALANGUAGES, ACURRENCIES qui permettent d'acéder respectivement aux tables TABCOUNTRY, TABLAN, TABCUR sont de type 'Accès données'.
Les procédures de création sont identiques.
Seuls les noms des tables et la liste des champs sélectionnés sont différents.
1. Créer la fiche interface
2. Sélectionner la table
3. Enregistrer
4. Générer l'accès après avoir saisi les champs utilisés
5. Enregistrer et valider
6. Générer les champs avec le menu Outils\Création token champs
Type
Accès table
Code table
TABCOUNTRY, TABLAN, TABCUR
Nom de publication
TABCOUNTRY, TABLAN, TABCURRENCY par défaut mais vous pouvez le modifier
Affichage des messages
Tous
Accès protégé
non
Générer l'accès
Sélectionner les champs et générer le web service en cliquant sur OK
Le bouton 'Générer l'accès' effectue les opérations suivante:
Comme pour les interfaces, les entités ACOUNTRY, ALANG, ACURRENCY sont créer de la même manière.
Seul le nom de l'interface et la liste des champs sont différents.
1. Créer l'entité de type 'Accès données' basée sur l'interface.
L'entité est utilisée pour stocker les données des requêtes sur la table
2. Associer les champs
S'aider du menu Outils\Aide au remplissage
3. Saisir le champ clé de l'entité dans le tableau 'Champs (sélection)'
4. Enregistrer et valider
Pour afficher le drapeau nous devons créer un token champ COUNTRYFLAG de type 'Accès image' et le paramétrer pour qu'il génère une URL d'accès au fichier .gif qui contient l'image du drapeau.
Le champ COUNTRYFLAG sera inséré dans un tag <img>.
Le paramétrage du token consiste à :
Dans notre cas les fichiers drapeau sont stockés dans un dossier FLAGS du répertoire HTML et ont comme nom le CODEPAYS.gif.
Valider le champ après création.
Le champ COUNTRYFLAG ne fait pas partie de l'interface et il doit être calculé lors de la création de l'entité.
Il suffit d'ajouter le champ COUNTRYFLAG à l'entité ACOUNTRY et de le 'mapper' avec le champ CRY qui contient le code pays.
Lors du mapping, le serveur XTEND ajoutera un champ COUNTRYFLAG a l'entité et le valorisera avec le code pays.
Lors de l'affichage, le champ sera transformé en une URL dans l'attribut src du tag img qui pointera sur le fichier CODEPAY.gif
<img height="25" width="40"
src="/xtend/data/remote/SOLSUPV6/SUPERV/X_TEND/X_HTML/ASAMPLE/FRA/FLAGS/ATF.gif"/>
Dans cet exemple l'url pointe directement sur le fichier du serveur X3.
Les tokens bloc sont insérés dans la page HTML. C'est eux qui déclenchent la requête vers X3, la lecture et l'affichage des données.
1. Créer un bloc
2. Ajouter les critères de sélections et de tri
3. Enregistrer et valider
Pour notre exemple nous avons créer un bloc 'Multi enregistrement' ABLKCOUNTRIES qui pointe sur l'entité ACOUNTRY et qui sélectionne les fiches qui ont au moins un code CRY (CRY >=AA).
Dans notre base de test certains codes ont moins de deux caractères.
Pour autoriser le tri sur le code pays nous avons paramétré un tri ascendant sur le code pays CRY par défaut et autorisé la modification du tri par un lien dynamique.
Ce sont les tokens lien dynamique ADLKCOUNTRYSORTDW et ADLKCOUNTRYSORTUP qui permettront le tri du tableau.
Type de tri
Champ
Tri altérable
Oui
Champs de tri
CRY
Le bloc ABLKCOUNTRIES a été défini comme bloc principal de la page web ACOUNTRIES ce qui permet d'uiliser l'alias AMAIN plutôt que le nom du bloc pour adresser ce bloc :
Les blocs ABLKLANG et ABLKCURRENCY sont 'Mono enregistrement' et sélectionnent respectivement les entités ALANG et ACURRENCY en fonction du code langue (LAN) et du code devise (CUR) de la ligne sélectionnée dans le bloc principal AMAIN_ (bloc ABLKCOUNTRIES).
Le lien est effectué via le token 'lien dynamique' ADLKSELECT qui sélectionne la ligne d'un bloc (action web spéciale ABLKSELECT ) et réaffiche la même page.
Cette cette action indique au serveur XTEND que la ligne qui contient le lien sur lequel l'utilisateur a cliqué devient la ligne sélectionnée.
Lorsqu'un bloc a une ligne sélectionnée, tous les tokens champs qui font référence à ce bloc MYBLOCK.MYFIELD prennent pour valeur la valeur du champ de la ligne sélectionnée.
Dans notre cas, comme les blocs langue(ABLKLANG) et devise(ABLHCURRENCY) ont pour sélection AMAIN.LAN et AMAIN.CUR (AMAIN est l'alias du bloc ABLKCOUNTRIES), ces blocs vont automatiquement afficher les informations sur la langue et la devise du pays sélectionné.
Pour notre exemple nous avons choisi d'afficher le résultat dans la même page et de gérer l'affichage via un token 'bloc conditionné' ADISPMAINSELECT qui affiche ou cache une zone HTML selon que le bloc principal MAIN à une ligne sélectionnée ou non.
Les tokens ADLKCOUNTRYSORTUP et ADLKCOUNTRYSORTDW permettent de trier la liste des pays par code ascendant et descendant.
Page courante
oui
Suivi de l'activité
Non car il n'est pas nécessaire de tracer ce type d'action
Sélection sur l'entité
ACOUNTRY : Entité à sélectionner (celle du bloc des pays)
Application sélection
'Remplace la sélection du bloc principale' : Le tri/sélection postés par le lien dynamique à destination de la page (même page dans notre cas) remplaceront le tri/sélection du bloc principal AMAIN (Blocs ABLKCOUNTRIES dans notre cas)
Type de sélection
Aucune : car on ne souhaite modifier que les critères de tri du bloc
Type de tri
Champ : Champ CRY dans notre cas avec l'ordre ascendant (ADLKCOUNTRYSORTUP) et descendant (ADLKCOUNTRYSORTDW )
Créer la page ACOUNTRIES (non protégée) qui a pour bloc principal le bloc ABLKCOUNTRIES.
Insertion du token page web ACOUNTRIES dans le menu gauche pour afficher la page.
<TD class="button"><A adx="ACOUNTRIES">Pays</A></TD>
Pour effectuer un lien simple (sans action ni sélection) vers une page web via un tag ancre il suffit d'insérer un token de type 'page web' dans le tag (<a adx="PageWeb"></a>) afin de limiter le nombre de tokens 'lien dynamiques'.
L'affichage de la liste des pays consiste à positionner le bloc ABLKCOUNTRIES qui effectue une itération sur la liste des pays et permet de créer autant de lignes dans le tableau que de pays dans la liste.
<table width="100%" border="1">
<tr class="tabTitle">
<th width="15%">
<a adx="ADLKCOUNTRYSORTUP">+</a>
<b>Code</b>
<a adx="ADLKCOUNTRYSORTDW">-</a>
</th>
<th width="20%"><b>Pays</b></th>
<th width="15%"><b>Continent</b></th>
<th width="15%"><b>Devise</b></th>
<th width="15%"><b>Langue</b></th>
<th width="20%"><b>Drapeau</b></th>
</tr>
<!adx="ABLKCOUNTRIES:xselect=false">
<tr adx="aLineStyle:xattr=Class">
<td><a adx="ADLKSELECT"><span adx="CRY"></span></a></td>
<td adx="CRYDES"></td>
<td adx="CONTINENT"></td>
<td adx="CUR"></td>
<td adx="LAN"></td>
<td><img adx="COUNTRYFLAG" height="25" width="40"></td>
</tr>
<!adx="ABLKCOUNTRIES">
</table>
Le paramètre xselect=false du bloc ABLKCOUNTRIES indique de ne pas sélectionner la première ligne par défaut afin de masquer le détail tant que l'utilisateur n'a pas sélectionné une ligne.
<td>
<a adx="ADLKCOUNTRYSORTUP">+</a>
<b>Code</b>
<a adx="ADLKCOUNTRYSORTDW">-</a>
</td>
<img adx="COUNTRYFLAG" height="25" width="40">
<td><a adx="ADLKSELECT"><span adx="CRY"></span></a></td>
<tr adx="aLineStyle:xattr=Class">
Pour afficher les lignes d'un tableau avec des couleurs alternées on place un token adx dans le tag <tr>.
<tr adx="aLineStyle:xattr=Class">
aLineStyle contient le nom de la classe et xAttr=Class indique qu'il faut valoriser l'attribut classe avec la valeur du champ aLineStyle.
Les classes css (aLineStyle) qui sont appliquées aux lignes du tableau sont définies dans la fiche de paramètrage du bloc.
Le détail est affiché dès qu'une ligne est sélectionnée via un clic sur le code pays.
C'est le token 'lien conditionné' ADISPMAINSELECT qui conditionne l'affichage.
Les blocs ABLKCURRENCY et ABLKLANG déclenchent la lecture des entités devises et langue du pays sélectionné et permettent l'affichage du détail.
<!adx="ADISPMAINSELECT">
<table>
<!adx="ABLKCURRENCY">
<tr>
<td><b>Devise</b></td>
<td adx="CUR" width="50"></td>
<td><b>Libellé</b></td>
<td adx="INTDES" width="150"></td>
<td><b>Symbole</b></td>
<td adx="CURSYM" width="50"></td>
</td>
</tr>
<!adx="ABLKCURRENCY">
<!adx="ABLKLANG">
<tr>
<td><b>Langue</b></td>
<td adx="LAN"></td>
<td><b>Libellé</b></td>
<td adx="INTDES"></td>
<td></td>
</tr>
<!adx="ABLKLANG">
</table>
<!adx="ADISPMAINSELECT">
<!adx="ABLKDOCHTML">
<div adx="TEXTE">
</div>
<!adx="ABLKDOCHTML">
Pour gérer la pagination nous utilisons la librarie pagination.lbi qui contient un code HTML générique qui peut être utilisé pour le bloc principal (AMAIN) de toutes les pages HTML.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!--This library is used to perform pagination on AMAIN bloc-->
<table width="100%">
<tr>
<td align="left" width="20%">
<!--Hide FirstPage and Previous actions if current page is the first page-->
<!adx="aHideMainFirstPage">
<!---->
<a href="" adx="AMAIN.aDlkFirstPage">Première</a>
<a href="" adx="AMAIN.aDlkPrevPage">Précedente</a>
<!adx="aHideMainFirstPage">
</td>
<!--Displays page information-->
<td align="center" width="60%">
Page : <span adx="AMAIN.aPagePos"></span> -
Nombre d'élements : <span adx="AMAIN.aBlkNbElmts"></span>
</td>
<td align="right" width="20%">
<!--Hide LastPage and Next actions if current page is the last page-->
<!adx="aHideMainLastPage">
<a href="" adx="AMAIN.aDlkNextPage">Suivante</a>
<a href="" adx="AMAIN.aDlkLastPage">Dernière</a>
<!adx="aHideMainLastPage">
</td>
</tr>
</table>
Pour appeler une méthode (ou un champ) d'un bloc XTEND on utilise la syntaxe monBloc.monAction ou monBloc.monChamp.
<a href="" adx="AMAIN.aDlkFirstPage">Première</a>
<a href="" adx="AMAIN.aDlkPrevPage">Précedente</a>