web-dev-qa-db-fra.com

Comment gérer la pagination dans les listes qui se mettent à jour automatiquement

Mon projet actuel est un système en cours d'exécution que j'ai été chargé d'améliorer.

La tâche de l'utilisateur consiste à surveiller et à ajouter des informations, lorsque, par exemple, quelqu'un appelle au téléphone avec des nouvelles. Plusieurs utilisateurs mettent à jour/surveillent les informations à la fois, et la mise à jour automatique fréquente est donc parfaitement cohérente.

MAIS - et voici le hic - l'information est structurée en plusieurs listes, ce qui rend nécessaire d'avoir une sorte de pagination sur chaque liste. Les listes sont affichées dans des panneaux disposés à gauche et à droite d'une section centrale. Chaque panneau peut être réduit pour afficher uniquement un titre ou développé pour afficher la première page de la liste. Voir http://share.axure.com/2S3G3J/

À l'heure actuelle, la mise à jour automatique réinitialise la pagination. Cela signifie que si un utilisateur est passé à la page 2 d'une liste spécifique lors de la mise à jour automatique, la liste est actualisée et l'utilisateur est déplacé vers la première page. Ce cours débouche sur beaucoup de frustration, mais pour l'instant je ne sais pas comment l'éviter.

Mes idées sont

  1. Faites en sorte que la mise à jour automatique reste sur la page sélectionnée et que les nouveaux éléments poussés sur la page soient animés. Les éléments en bas qui devraient maintenant appartenir à la page suivante restent et sont marqués graphiquement d'une manière ou d'une autre, ou poussés hors de la page dans une animation
  2. Désactivez la mise à jour automatique pour la liste, lorsque l'utilisateur est passé à l'une des pages suivantes - mais quand la mise à jour automatique reprend-elle ensuite?
  3. Changez la pagination pour "afficher plus", laissant ainsi la longueur de la liste augmenter.

Il est possible que je puisse effectuer un test utilisateur à petite échelle, mais ce n'est peut-être pas le cas.

Alors, quelles solutions proposeriez-vous pour ce problème et pourquoi?

10
katDNA

Donc, la partie qui n'est pas claire pour moi est de savoir si nous devons nous assurer que les derniers éléments qui sont insérés sont insérés en haut de la liste.

  1. En supposant que l'une de vos listes obtienne de nouvelles informations, fournissez-leur une alerte (peut-être comme la façon dont gmail fait avec son indication d'un nouvel e-mail dans un fil de discussion ou comment le débordement de pile indique une nouvelle réponse lorsque vous tapez une réponse) et autorisez les utilisateurs la possibilité de choisir d'afficher les informations.Cela empêchera le cas des informations de disparaître de la page et offre également à l'utilisateur la possibilité de choisir ce qu'il veut faire.Si l'utilisateur accepte de visualiser les nouvelles informations, appuyez sur le courant articles sur cette page vers le bas ou peut-être sur la page suivante mais ne pas réinitialiser à la première page car cela créerait une confusion sur l'état du système et une déconnexion entre ce que l'utilisateur faisait et ce que juste arrivé

  2. Une autre option (et je ne suis pas sûr qu'elle s'applique) est de fournir une nouvelle liste exclusivement pour le nouveau contenu qui est mis à jour au fur et à mesure? De cette façon, vous n'avez pas à vous soucier de la réinitialisation du contenu des nouvelles ou de la modification de la pagination et vous avez une vue constante du "ticker" des nouvelles

  3. Je ne sais pas comment vous implémentez cette application, mais serait-il possible d'étendre la longueur de la liste en l'ayant dans un iframe infini en utilisant une barre de défilement, maintenant je sais qu'une barre de défilement n'est pas une excellente facilité d'utilisation mais si elle est bien implémentée, elle peut en fait Vous pouvez combiner la première option de fournir des alertes sur les nouveaux articles de presse, puis les insérer en haut de la liste avec ce choix ou simplement utiliser une mise en surbrillance ou un code couleur différent pour distinguer un nouvel article de presse.

2
Mervin

En tant qu'utilisateur et développeur d'une application avec une interface similaire (plusieurs listes de mise à jour automatique sur un "tableau de bord"), je préfère avoir la fonction d'interface utilisateur comme une application à écran unique, sans actualisation pleine page, et de nouveaux éléments s'animent sur/hors des listes.

Dans mon cas, les listes sont des listes de travail qui sont censées être traitées selon le principe du premier arrivé, premier servi, les utilisateurs pouvant toujours tirer un élément plus récent en haut de la liste, donc la pagination n'est pas vraiment un problème. À cette fin, mes listes sont "infinies", ajoutant de nouveaux éléments à leur bas jusqu'à ce que la longueur de la liste soit à peu près 2x la hauteur de l'écran, puis les éléments de la liste ne sont pas réellement créés mais simplement conservés dans une structure de données hors écran. Cela permet de faire défiler vers le bas dans chaque liste et de permettre aux utilisateurs de "charger plus".

Tout en étant beaucoup plus de travail du point de vue de l'implémentation, le principal avantage est que les différentes parties de l'écran peuvent toutes être mises à jour selon les besoins et que les choses peuvent être beaucoup plus flexibles qu'une régénération pleine page ne le permet. (ce qui, incidemment, simplifie la logique d'application côté client).

L'ajout d'un mouvement d'élément hors des listes lorsque les éléments sont terminés (soit par l'utilisateur actuel soit par d'autres utilisateurs) fournit un bon sentiment d'accomplissement et ajoute un effet de jeu qu'une liste paginée plus statique ne fournit pas.

D'un autre côté, lorsque les éléments arrivent dans une liste vide ou courte, il y a très une indication claire du nouveau travail à faire. Étant donné que mon application fonctionne comme un tableau de bord, il est important d'avoir un indicateur visuel clair (mouvement et couleur).

Le dernier avantage d'avoir une "application d'une page" est qu'il est assez facile de manipuler l'affichage de plusieurs listes en un affichage de liste unique si ce type de tableau de bord est nécessaire.

Donc, même si je suis entré dans un peu plus de détails sur l'application my qui était probablement nécessaire, j'espère que mes expériences et mes idées aideront à éclairer votre décision.

1
cdeszaq