Actions (jqm1000)
(Page créée avec « ===Exécuter une action à partir d'une page détail=== Pour exécuter une action directement à partir d'une page détail, retournez un élément détail de type action (... ») |
(→Exécuter une action avec saisie de paramètre) |
||
Ligne 18 : | Ligne 18 : | ||
Si l'action s'exécute correctement les actions afs seront exécutées | Si l'action s'exécute correctement les actions afs seront exécutées | ||
− | ===Exécuter une action avec saisie de | + | ===Exécuter une action avec saisie de paramètres=== |
Pour exécuter une action qui nécessite des valeurs saisie en paramètre, vous devez passer par une page intermédiaire gérant la saisie. | Pour exécuter une action qui nécessite des valeurs saisie en paramètre, vous devez passer par une page intermédiaire gérant la saisie. | ||
Version du 7 avril 2014 à 15:51
Sommaire |
Exécuter une action à partir d'une page détail
Pour exécuter une action directement à partir d'une page détail, retournez un élément détail de type action (l="a") :
begin ... json.result[indx].l := 'a'; // Action validate this expense json.result[indx].h := '/accept'; // json.result[indx].v := _TP('Valider'); json.result[indx].id:= inst.OID; json.result[indx].afs := 'del,back,clear'; // ... end;
Une telle action ne prend pas d'autre paramètre qu'un identifiant transmis dans l'élément détail, en effet la page détail ne permet pas de saisie. Si vous avez besoin de paramètre supplémentaire utilisez une page intermédiaire de saisie.
Si l'action s'exécute correctement les actions afs seront exécutées
Exécuter une action avec saisie de paramètres
Pour exécuter une action qui nécessite des valeurs saisie en paramètre, vous devez passer par une page intermédiaire gérant la saisie.
La démarche est la suivante:
- La page détail affiche un lien vers la page de saisie
- La page de saisie comporte les champs de saisie et un bouton de validation.
- L'exécution de l'action renvoie l'utilisateur sur la page détail ou sur la liste.
Liens vers la page détail
Dans le code retournant les éléments du déétail vous devez renvoyer un lien vers la page au lieu d'un lien action :
begin ... json.result[indx].l := 'p'; // Action refuse this expense = Change page json.result[indx].p := 'pageRefuse'; // page name json.result[indx].h := '/refuse'; // json.result[indx].v := _TP('Refuser'); json.result[indx].id:= inst.OID; ... end;
Les informations de l'action (h,id) seront transmis par la navigation sur l'élément ayant la classe action de la page de saisie.
Page de saisie
La page de saisie comprend les champs de saisie supplémentaires :
<div class="ui-page" data-role="page" id="pageRefuse"> ... <div data-role="content"> <div data-role="fieldcontain"> <select name="field_motif" class="lookup" data-lookup="/lookupMotifs" id="field_motif" ><option>select a motif</option></select> </div> <div data-role="fieldcontain"> <a data-role="button" class="action" data-icon="gear" href="#" data-params='[{"name":"motif","field":"field_motif"}]' data-localize="refuse.refuse">Refuse</a> </div> </div> ... </div>
Le bouton d'exécution à les attributs suivant :
- class = "action"
- Cette classe qualifie l'élément comme le bouton action, les éléments de l'action définis dans la page détail seront copiés sur cet élément.
- data-params='[{"name":"motif","field":"field_motif"}]
- Cet attribut défini les paramètres à transmettre à la méthode
- name
- Nom du paramètre.
- field
- Nom du champ contenant la valeur du paramètre.