Liste de valeurs
Avant de créer votre site , il préférable de lire la documentation :Avant de commencer.
Cette fonction permet de gérer une ensemble de listes de valeurs, dédiées à une application XTEND, en complément des menus locaux.
Une liste de valeurs XTEND est associée à Token champ et fonctionne comme un menu local.
Chaque élément de la liste contient :
- une valeur,
- un libellé.
Comme pour les menus locaux, la valeur est accessible via le nom du Token champ et le libellé en ajoutant le suffixe _DESCR au nom du champ.
Contrairement aux menus locaux une liste de valeur sait gérer des données hiérarchiques (arborescence de catégories).
Le séparateur des catégories est le caractère /.
Les listes de valeurs peuvent être créées :
- manuellement,
- à partir de 'messages X3',
- à partir de 'tables diverses',
- à partir de traitement batch.
Les listes de valeurs sont sauvegardées dans le fichier MEN.xml du répertoire qui contient le dictionnaire du site XTEND (X_TEND/X_GEN/SITE/MEN.xml) sauf les listes créées par traitement batch qui sont stockées dans des répertoires bien identifiés.
Prise en main
Paramétrage
Le paramétrage dépend du mode de gestion de la liste.
Validez la fiche après l'avoir enregistrée pour qu'elle puisse être prise en compte par le serveur XTEND.
Forcez le rechargement du dictionnaire si les paramètres 'Vérification des mises à jour' du site ne sont pas actifs.
Voir la fiche Site web.
Gestion manuelle
La liste est créée/modifiée dans le bloc graphique (DHTML) en bas de l'écran.
Création à partir de rien
On créez la première valeur :
- clic droit sur l'icône gris dans le bloc graphique,
- puis ajout les valeurs en ajoutant des 'fils' à la valeur créée.
La suppression et modification se fait par clic droit sur la valeur.
Création à partir d'une liste existante
Vous pouvez aussi construire une liste de valeurs à partir d'une liste existante créée à partir d'un mesSage X3, d'une table diverse ou d'une liste batch dont vous souhaitez modifier le contenu.
Dans ce cas :
- créez ou dupliquer la liste de valeurs d'origine (basée sur un mesSage X3, une table diverse...),
- et modifiez le paramètre Gestion pour le passer en Manuel.
Vous pouvez ensuite modifier le contenu comme indiqué ci-dessus.
La liste manuelle n'est pas synchronisée avec la liste d'origine.
La référence à la liste origine (menu, table divers...) est perdue après avoir passé le paramètre gestion à Manuel.
Ajout de valeurs
Lorsqu'on ajoute une valeur la fenêtre suivante est affichée.
Le but de cette fenêtre est de saisir la valeur et le libellé de l'entrée.
Sélection du libellé
- Le libellé ne peut pas être saisi :il provient toujours d'un mesSage X3 ou d'une table diverse pour permettre les traductions.
- Les paramètres ci-dessous permettent de saisir l'origine du libellé :
- Origine (méthode de lecture du libellé),
- Chapitre - Numéro : renseignez le chapitre et le numéro,
- Table diverse - Numéro : renseignez le code de la table et de code de l'entrée
Le traitement de génération du fichier MEN.xml génère autant de libellés que de langues qui ont été définies pour le site.
Saisie de la valeur
Valeur : par défaut ce champ contient l'index du menu local ou le code de l'entrée de la table diverse utilisé pour le libellé. Il est généralement modifié pour associer des codes spécifiques lorsqu'on on crée un nouvelle liste de valeurs.
Cas des catégories hiérarchiques
Le 'champ lié' est vide par défaut. Il contient le champ de l'entité qui correspond au niveau de catégorie auquel est rattachée la valeur seulement si il est différent de celui défini par défaut dans le tableau 'Champ par défaut (entité)'.
Voir le paragraphe sur les catégories hiérarchiques.
Gestion automatique
- Créez une liste de valeurs à partir d'un mesSage X3 ou d'une table diverse.
- Vous ne pouvez pas modifier le contenu de la liste.
- Si vous modifiez le message ou la table diverse, validez à nouveau la liste de valeurs pour prendre en compte les modifications car les données sont recopiées dans le fichier dictionnaire MEN.xml.
Type
Origine de la liste Message ou Table diverse
Type Message
Chapitre
N° du chapitre
Type Table diverse
Table diverse
Code de la table diverse
Libellé court
Oui/Non
Liste hiérarchique
Dépendance
Non pour générer un liste simple.
Oui pour générer un liste hiérarchique à partir des dépendances entre tables diverses.
Le chainage des dépendances entre tables diverses est de type 'fils vers le parent' c'est à dire que le paramètre 'Table dépendance' de la fiche 'tables diverse' contient le code de la table parent.
Pour générer une liste valeur hiérarchique à partir d'une table diverse il faut partir de la table parent.
Niveau
Définit la profondeur de l'arborescence c'est à dire le nombre de niveaux de catégories autorisés pour la liste de valeurs.
Gestion batch
La liste est créée à partir d'un traitement batch.
Le format du fichier créé par batch doit être identique au format du fichier dictionnaire MEN.xml.
Répertoire racine
Répertoire racine XTEND qui contient les fichier batch
Nous avons défini quatre répertoires racine pour stocker des fichiers XTEND.
Les ressources (fichiers, images...) de ces répertoires sont accessibles par le navigateur via des tokens 'image' ou 'pièces jointes'.
- Design HTML : Répertoire du projet HTML qui tient compte de la langue utilisateur
- X_FILES : Répertoire qui est propre au dossier X3 est qui est localisés sous X3_PUB/X3FOLDER/X_TEND/X_FILES
- X_FILEAPP : Répertoire qui est propre au dossier X3 est qui est localisés sous X3_PUB/X3FOLDER/X_TEND/X_FILAPP
Il est utilisé pour stoker des fichiers issus de traitements batch comme des rapports générés par le serveur d'impression - X_TEND : Répertoire utilisé pour stocker des fichiers communs à tous les dossiers
Par exemple des images produits, des documents commerciaux...
Il est localisé sous : X3_PUB/X_TEND/
Design HTML et X_FILES peuvent être localisés sur le serveur X3 (défaut) ou sur le serveur de web services.
X_FILEAPP et X_TEND sont toujours localisés sur le serveur X3.
Fichier
Chemin d'accès du fichier batch par rapport au répertoire racine.
Vérifier mise à jour
'Oui' pour activer la vérification périodique (toutes les minutes) de la date de dernière modification du fichier batch.
Les fichiers batch sont rechargés lorsqu'on recharge le dictionnaire XTEND.
Gestion des catégories hiérarchiques
Comme nous l'avons vu précédemment on sait créer des listes de valeurs hiérarchiques qui sont représentées sous la forme d'une structure arborescente.
Nous allons voir maintenant comment exploiter cette structure de données sous la forme de tokens dans les pages HTML pour gérer les menus de catégories hiérarchiques.
Un menu de catégories hiérarchiques est constitué de plusieurs ListBoxes affichées via un tag <select> dont les contenus sont inter-dépendants.
Nous prendrons comme exemple les catégories suivantes utilisées pour effectuer des sélections dans un catalogue de voitures :
Niveau 1 : Constructeur
Niveau 2 : Modèle
Niveau 3 : Type Break ou Berline
Niveau 4 : Energie Diesel ou Essence
Les champs de l'entité voiture qui contiennent les code des catégories des niveaux 1,2,3,4 sont respectivement CAT1,CAT2,CAT3 et CAT4.
Liste de valeurs
La première étape consiste à créer la liste de valeurs qui contient l'arborescence des catégories :
Champ par défaut (Entité) : liste des 'tokens champs' qui contiennent les informations sur la catégorie.
Les entités XTEND qui supporteront ce système de catégorie devront obligatoirement comporter les champs définis dans le tableau 'Champ par défaut'.
Dans notre exemple nous saisisons dans l'ordre CAT1,CAT2,CAT3,CAT4 (Voir paragraphe suivant).
Saisie des catégories : à chaque catégorie on associe un libellé et un code catégorie.
N1 - Valeur=REU - Libellé=Renault
N2 - Valeur=CLI - Libellé=Clio
N3 - Valeur=BRK - Libellé=Break
N4 - Valeur=DI - Libellé=Diesel
N4 - Valeur=ES - Libellé=Essence
N2 - Valeur=MEG - Libellé=Megane
...
Le niveau (1, 2, 3,4) de la catégorie correspond au rang (1-N) dans le tableau 'Champ par défaut' et permet d'accéder au nom du champ qui porte la valeur.
Entité XTEND
Les entités XTEND (issues de données X3) qui supportent les catégories hiérarchique doivent comporter des champs qui contiennent les informations sur la catégorie.
L'entité doit comporter autant de champs catégorie que de niveaux de catégories (un champ par niveau de catégorie).
Dans notre exemple l'entité AUTO doit comporter quatre champs CAT1, CAT2, CAT3, CAT4 pour stocker les catégories.
Les champs catégorie sont associés à la liste de valeurs AUTOS qui contient l'arborescence des catégories.
Ces champs doivent être définis dans le paramètre tableau 'Champ par défaut (Entité)' de la liste de valeurs.
Dans notre exemple le tableau contient CAT1, CAT2, CAT3, CAT4.
Nous avons défini ainsi un lien entre la structure arborescente et l'entité XTEND via les champs catégorie.
Sélection
Pour exprimer une catégorie hiérarchique nous utilisons une syntaxe de type path avec le caractère / comme séparateur.
Par exemple /REU/CLI/BER, /PEU, /PEU/107.
Pour stocker la catégorie hiérarchique au format path nous utilisons un champ (de travail).
Ce champ de type texte est défini dans le dictionnaire et on lui associe la liste de valeur.
La valeur de ce champ est construite par une fonction JavaScript en fonction des critères sélectionnés par l'utilisateur puis envoyée au serveur XTEND via un champ du formulaire HTML.
Dans notre exemple ce champ a pour nom CATPATH.
Définition des critères de sélection
Pour effectuer la sélection sur l'entité il faut créer un token lien dynamique et ajouter les critères de sélection.
On crée un critère par champ catégorie et on compare la valeur avec celle du champ qui contient le 'path' de la catégorie.
Formule du token lien dynamique :
CAT1 =web:CATPATH Et CAT2 =web:CATPATH Et CAT3 =web:CATPATH Et CAT4 =web:CATPATH
Pour calculer la valeur du critère le moteur XTEND fait le lien entre le niveau du champ catégorie (CAT1,CAT2...) et la position de la valeur dans le 'path' de la catégorie.
Exemple pour la catégorie /REU/CLI/BER :
Lors de la valorisation des critères de sélection le moteur XTEND effectue le traitement suivant :
1. Lecture de la valeur du champ web CATPATH,
Ce champ contient le path /REU/CLI/BER
2. Pour chaque critère :
- Calcul du niveau du champ catégorie (CAT1,CAT2...) dans l'arborescence
Le niveau est donné par le rang dans le tableau 'Champ par défaut (Entité)' de la liste de valeur - Extraction de la valeur du 'path' en fonction du niveau
CAT1=REU - CAT2=CLI - CAT3=BER
Tout se passe comme si le champ CATPATH contenait un tableau ordonné de catégories.
Page HTML
Ce paragraphe décrit comment mettre en oeuvre dans la page HTML :
- le remplissage automatique des tags HTML <select> qui contiennent les valeurs des critères de sélection,
- le calcul et la mise à jour du champ qui va contenir le path de la catégorie sélectionnée (CATPATH).
Les tokens XTEND permettent de traiter ces deux opérations avec un minimum de code JavaScript à développer.
Affichage des critères de sélection
Ci-dessous nous avons créé quatre boites de sélection correspondant aux quatre catégories utilisées pour sélectionner les voitures.
HTML
<table>
<tr>
<td>
<select name="CATPATH1" adx="CATPATH:xlevel=1&xonchange=DLKSELECTAUTOS">
<option value="">Indifférent</option>
</select>
</td>
<td>
<select name="CATPATH2" adx="CATPATH:xlevel=2&xonchange=DLKSELECTAUTOS">
<option value="">Indifférent</option>
</select>
</td>
<td>
<select name="CATPATH3" adx="CATPATH:xlevel=3&xonchange=DLKSELECTAUTOS">
<option value="">Indifférent</option>
</select>
</td>
<td>
<select name="CATPATH4" adx="CATPATH:xlevel=4&xonchange=DLKSELECTAUTOS">
<option value="">Indifférent</option>
</select>
</td>
</table>
Champ CATPATH : contient le 'path' de la catégorie courante (Ex: REU/CLI pour Renault/Clio)
'adx="CATPATH:xlevel=N' : cette syntaxe indique au moteur XTEND qu'il faut remplir la liste des options avec les valeurs de la catégorie correspondant au niveau N de CATPATH :
- Si CATPATH=REU/CLI et xlevel=1
Affiche la liste des constructeurs (niveau 1 de la hiérarchie des catégories). - Si CATPATH=REU/CLI et xlevel=2
Affiche la liste des modèles (niveau 2 de la hiérarchie des catégories) pour le constructeur REU (Renault).
Au premier affichage de la page CATPATH est vide et c'est l'option 'Indifférent' qui est affichée (value="").
'xonchange=DLKSELECTAUTOS' : exécute le lien dynamique DLKSELECTAUTOS dès que la valeur du champ est modifiée.
Ce paramètre évite d'ajouter un bouton <input type='button' adx="DLKSELECTAUTOS" value="Sélectionner"> sur lequel l'utilisateur doit cliquer après avoir modifié le critère.
Calcul du path CATPATH
Les fonctions JavaScript ci-dessous permettent de calculer le 'path' de la catégorie sélectionnée :
//-------------------------------------
//aObj est l'objet DOM (select) qui a été modifié
//--> nouvelle sélection
//Calcule le niveau (wMaxLevel) de la catégorie en fonction du nom de aObj
//--> CATPATH1 donne niveau 1 - CATPATH2 donne niveau 2 ...
//Calcule le path de la catégorie du niveau 1 à wMaxLevel
//Reset des champs de niveau supérieur à wMaxLevel
//Renvoie le path
function getCatCar(aObj)
{
var wCatPrefix="CATPATH";
var wCat="";
if (!aObj || !aObj.name) return wCat;
var wMaxLevel=parseInt(aObj.name.slice(wCatPrefix.length),10);
for( var i=0;i<wMaxLevel;i++)
{
var wVal=xtdGetFieldVal(wCatPrefix+(i+1));
if (wVal!="")
{
if (i>0) wCat+='/';
wCat+=wVal;
}
}
// Reset des champs
for( var i=wMaxLevel;i<4;i++)
xtdSetField (wCatPrefix+(i+1),"");
return wCat;
}
//-------------------------------------
//xtdDoMyDlk est appelé lorsque l'utilisateur clique sur un lien dynamique
function xtdDoMyDlk(aDomOut)
{
var wContinue=true;
//DLKSELECTAUTOS --> Modification d'un critère de sélection
if (aDomOut.isClickedDynLink("DLKSELECTAUTOS"))
{
//Calcul du path de la catégorie
var wCat=getCatCar(aDomOut.getDynLinkCtx().getHtmlElement());
//Mise à jour du champ CATPATH qui est transmis au moteur XTEND
//--> Voir les critères de sélection du lien DLKSELECTAUTOS
xtdSetField("CATPATH",wCat);
}
return wContinue;
}
Dès que l'utilisateur modifie une catégorie le lien DLKSELECTAUTOS est exécuté.
La fonction 'xtdDoMyDlk' permet d'effectuer des traitement spécifiques avant de soumettre le formulaire au serveur XTEND.
Cette fonction :
- calcule le nouveau 'path' de la catégorie (getCatCar()),
- valorise le champ CATPATH qui est transmis au serveur.
En retour, le serveur aura effectué la nouvelle sélection et calculé les nouvelles valeurs des critères de sélection.
Reset de la sélection
La fonction ci-dessous ré-initialise les critères de sélection est recalcule la page.
<script>
function selAllCars(aObj)
{
xtdSelectSetVal("CATPATH1","");
xtdSelectSetVal("CATPATH2","");
xtdSelectSetVal("CATPATH3","");
xtdSelectSetVal("CATPATH4","");
xtdDoDlk(aObj,"DLKSELECTAUTOS");
}
</script>
<input type="button" value="Reset" onClick='javascript:selAllCars(this);'>
Gestion de l'écran
Ecran de saisie
Bloc numéro 5
Nouvelle valeur |
Action de déroutement SPECIF |
Nouvelles valeurs |
Action de déroutement SPECIF |
Mise à jour valeur |
Action de déroutement SPECIF |
Supprimer |
Lien dynamique |
Boutons spécifiques
Copie |
Ce bouton permet de copier une liste de valeurs |