Théorie: session #
Informations spécifiques au Frontal #
-
La session mémorise des informations spécifiques au Frontal, pex.
- la vue courante / page courante
- le dernier modèle affichée (p.ex. la dernière partie affichée).
-
En quittant l’application, Ntro va sauvegarder la session
-
La session permet donc de reprendre l’affichage «là où on était rendu»
Pour déclarer la session #
-
Il faut créer une classe qui hérite de
Session
public class SessionPong extends Session<SessionPong> { // ajouter des attributs, p.ex. la vue courante ou la partie courante }
-
Ensuite, il faut déclarer la classe session dans le Frontal
public class FrontalPong implements FrontendFx { // ... @Override public void registerSessionClass(SessionRegistrar registrar) { registrar.registerSessionClass(SessionPong.class); }
Pour utiliser la session dans le code #
-
Soit dans le graphe des tâches:
private static void choisirPremiereVue(FrontendTasks tasks) { tasks.task("choisirPremiereVue") // dépendance à la session .waitsFor(session(SessionPong.class)) .executes(inputs -> { // récupérer la session SessionPong session = inputs.get(session(SessionPong.class)); // .... }); }
-
Soit ailleurs dans le code:
SessionPong session = Ntro.session(); // autre version Ntro.session(SessionPong.class).memoriserPartieCourante(idPartie);
Pour démarrer l’application avec une session #
$ sh gradlew pong:alice
$ sh gradlew mon_projet:bob
$ sh gradlew mon_projet:charlie
# ajouter d'autres tâches dans build.gradle pour créer d'autres sessions
Où sont sauvegarder les sessions? #
-
Fichiers lus par Ntro:
mon_projet/_storage/sessions
-
Pour les sauvegarder dans Git:
mon_projet/json
$ sh gradlew saveJson
-
Pour ré-installer les sessions sauvegardées dans Git
$ sh gradlew restoreJson