-
c'est ça que je ne comprends pas
si tu viens de modifier l'enregistrement dans ton form lorsque tu clique sur save il est mis dans le Store ton store est donc à jour. le store détecte qu'il a eu un changement local et envoi les données au serveur pour qu'il traite ces données et les mette en base.
ton store est donc déjà OK je ne vois pas pourquoi tu voudrais recharger les données de cet enregistrement.
par contre ce qu'il peut se passer c'est que autres utilisateurs aient modifié des données. et là ton store n'est pas à jour. c'est pour ça que je disais que ton taskRunner peut demander les changements au serveur.
A+JYT
-
En effet, pour moi le Store est à jour. Mais je pensais qu'en faisant recharger le record que je viens de modifier moi, cela impacterai aussi les autres utilisateurs. Et vice versa, si un autre utilisateur fait une modification et que le rechargement du record qu'il vient de modifier se fasse, je serais impacté.
Ca ne marche visiblement pas de cette façon !
-
ben si mais si tu ne charge qu'un seul enregistrement dans ton store
tu n'a pas les autres modifs.
soit tu as toutes les données (ou une page) et tu demande au serveur si tu as besoin de rafraîchir tes données.
soit tu n'a qu'un seul enregistrement pur ton édition et tu n'a pas besoin de rafraichir vu que tu viens de le modifier.
A+JYT
-
Si je dois reformuler ma question, je dirais :
Supposons qu'il y a 2 utilisateurs U1 et U2 qui sont en train de travailler sur la même grid. U1 fait une modification de l'enregistrement E1. Il appelle le store.load() en spécifiant l'id de E1. Est ce que U2 voit automatiquement la mise à jour de E1 ?
Plus généralement, après tout, l'appel du store.load() pour tout le store impacte bien tous les utilisateurs connectés. Ces derniers voient bien toutes les modifications faites par les uns et les autres. Donc pourquoi ce qui marche pour tout le store ne mercherait pas pour un seul enregistrement ? C'est un peu ça ma question. Pour moi c'est pas du tout évident.
-
je croyais que tu voulais charger qu'un seul enregistrement dans le store.
tu ne veux recharger que celui que tu édite.
la question que tu pose et qui est vrai pour toute application web est
comment gérer les accès concurrent.
comment gérer le fait avoir deux user qui éditent le même enregistrement.
il n'y a pas de solution pleinement satisfaisante.
ça dépends beaucoup du contexte.
une solution consiste à gérer un verrou sur le serveur
au moment d'éditer tu demande un verrou si tu l'as tu édite sinon tu refuse l'édition
ainsi un seul utilisateur peut éditer
mais il faut gérer la relâche du verrou en fin d'édition et surtout si l'utilisateur reste en plan. (quitte l'appli)
autre solution autoriser l'édition et gérer le confli lors de la sauvegarde.
mais il est difficile de permettre l'édition simultanée tout en gardant les modif des deux utilisateur comment savoir quel champs garder
A+JYT
-
Non on se comprends toujours pas.
Les accès concurents ce n'est pas ce qui m'intéresse.
Si je reprends l'exemple donné dans mon précédent post, je veux juste savoir lorsque U1 fait un store.load() sur l'enregistrement qu'il vient de modifier, est ce que U2 voit sa grid mise à jour. U2 ne modifie rien, il ne fait que consulter.
-
c'est donc bien ce que je décrivais
ton run task intérroge le serveur pour savoir si l'y a eu des changement
et si c'est le cas demande au serveur les données qui ont changé
ainsi le store est mis a jour.
ça évite de tout mettre à jour et on est sur d'avoir les données fraiche même si PLUSIEURS autres utilisateurs ont modifié PLUSIEURS autres enregistrement.
Je ne vois pas pourquoi l'utilisateur qui n'a rien modifié demanderais au serveur si UN enregistrement en particulier à été modifié par un autre utilisateur.
A+JYT