28 août 2017

Récupération d'élèves effacés

Comme je l'ai expliqué dans l'article précédent, vous pouvez maintenant synchroniser une base de données élèves entre plusieurs appareils. Cette fonctionnalité a des effets de bord indésirables dont je n'avais pas mesuré la portée jusque là.

En effet, la synchronisation agit en copiant les données qui sont sur un appareil et qui ne sont pas sur les autres. Donc, si un élève est sur une appareil mais pas sur les autres, celui-ci va être copié sur tous les appareils. C'est normal, car si un élève est créé sur un appareil, on le veut sur tous les appareils de la classe. Mais que ce passe-t'il si l'on efface un élève ? Lors de la prochaine synchronisation, tant que l'élève existe sur un appareil, il sera copié sur ceux qui ne l'ont pas. C'est pour cela que j'ai créé la récupération d'élèves effacés par erreur.

Pour que la synchronisation fonctionne, il faut que l'élève ne soit pas réellement effacé, mais qu'il n'apparaisse plus dans la liste des élèves. C'est ce que j'ai fait.

Comme l'élève n'est plus réellement supprimé de la base, effacer un élève ne libère pas la mémoire qu'il occupe alors que l'on pourrait le souhaiter. J'ai donc ajouté une page de gestion des élèves effacés dans "Élèves" et voici une petite vidéo de démonstration :

Cette fonctionnalité, ne résout pas tout :

  • Dans le cas où vous corrigez un champ de la fiche d'un enfant, la synchronisation ne sait pas quelle donnée choisir et ne fait donc rien.
  • Le problème de la suppression des élèves se pose aussi pour les photos, les validations, ou les notes supprimées.

Je travaille activement à résoudre ces problèmes. Tout en précisant que, même en améliorant les choses, la compréhension du problème reste importante car il y aura toujours des cas particuliers où la synchronisation ne fonctionnera pas.

Pour être sûr de supprimer des données, il faut donc synchroniser les appareils de la classe, puis sur un appareil faire les suppressions sur un seul appareil, puis copier la base sur les autres appareils.

Encore une petite chose

Pour le moment, l'information de suppression d'un élève n'est pas synchronisée. Ce qui veut dire que l'orsque l'on efface un élève sur un appareil il est invisible sur celui-ci mais peut-être visible sur un autre. Je ne sais pas encore ce qui est le mieux... Faire qu' un élève rendu invisible sur un appareil soit invisible sur tous, ou laisser ainsi, ce qui veut dire qu'il faut rendre invisible l'élève sur tous les postes, mais permettrait aussi d'avoir plusieurs tablettes dans la classe avec la même base mais pas les mêmes élèves visibles. On pourrait donc sur l'iPhone du professeur avoir toute la base, et une tablette par niveau pour les élèves.

Emmanuel CROMBEZ