$msg.remapTargets
¶
Description¶
Cette méthode permet de remapper des messages, c'est-à-dire de modifier les
targets
des messages.
Cette méthode est utile dans un cas de figure particulier, que nous illustrons avec un exemple. Prenons une application qui gère des Clients et des Demandes. Les Demandes peuvent référencer un Client au moyen d'un champ "idClient".
Une Demande peut être éditée en tant que telle, mais elle peut également être
modifiée directement depuis la fiche client : dans ce cas, la Demande apparaît
comme un tuple de groupe multi dans la fiche Client. Il suffit en effet pour
cela que le groupe multi référence la table des Demandes, et utilise le champ
idClient
comme reffield
et le champ idDemande
comme mainfield
.
On souhaite par exemple gérer l'état de la Demande directement depuis la fiche Client. Pour cela, on utilise un script qui exécute l'instruction suivante:
1 2 3 4 5 |
|
Dans l'exemple ci-dessus, ctxt
reçoit le contexte du tuple qui référence
la Demande dans le groupe multi du Client, par exemple:
client[1000].demandes[2000]
.
Le setState
demande le changement d'état de la Demande. Par conséquent,
les éventuels messages qui sont générés par les scripts onleave
ou
onenter
liés aux statuts de la Demande seront envoyés dans le contexte
de la Demande, et ne seront mar conséquent jamais montrés à l'utilisateur.
Par exemple, un message d'erreur portant sur un champ "nom" aurait pour
"target" la référence demande[2000].base[2000].nom
.
La méthode remapTargets
permet donc de convertir les targets générés
pour la Demande et les mapper sur des champs du dossier Client. L'idée
dans notre exemple est de retranscrire demande[2000].base[2000].nom
en
client[1000].demandes[2000].nom
. On peut le faire en ajoutant
l'instruction suivante à la fin du script:
$msg.remapTargets(function(target, msg) {
if (target.modelName == "demande") {
return { modelName: "client", docId: ctxt.docId,
groupName: "demandes", tupleId: target.docId,
fieldName: target.fieldName };
}
});
Syntaxe¶
$msg.remapTargets( converter [ , options ] )
Paramètres¶
converter
function-
Fonction de conversion chargée d'indiquer le mapping. Cette fonction de callback reçoit en paramètre:
- le contexte à traiter sous forme de map
- le message complet sous forme de map
On attend que la fonction retourne le nouveau contexte de la cible. Elle doit donc être déclarée ainsi:
function(inCtxt, inMessage) { var outCtxt = inCtxt; // ... return outCtxt; }
options
map-
Map d'options. La méthode reconnaît les options suivantes:
level
string / array-
Niveau des messages à traiter. Le paramètre peut être une chaîne de caractère indiquant le niveau ("error", "warn", "info" ou "success").
Il est possible de donner un tableau contenant plusieurs niveaux. Il est également possible de spécifier plusieurs niveau à l'aide d'une chaîne de caractères, en séparant les niveaux avec une virgule (p. ex: {@code "error,success").
Retour¶
Retourne toujours null
Exemple¶
Voir description