Je prévois d'utiliser le grand plugin Isotope pour afficher une liste de contacts, puis leur permettant de filtrer. La question que j'ai est que cela fonctionne très bien pour un petit ensemble de données, mais je ne suis pas sûr de la meilleure façon de l'améliorer pour plus de 1000 morceaux de données. P>
Jusqu'à présent, les idées que j'avais étaient: p>
Je ne suis pas sûr que cela fonctionne bien et que j'espérais que d'autres avaient confronté à cette situation et que cela pouvait me donner des idées. P>
3 Réponses :
Prendre l'idée de lire le cache, quelque chose comme:
La zone de chargement pourrait être simplement: p> de cette façon, vous pouvez charger tous les éléments étape par étape dans le DOM et vous pouvez afficher uniquement ce qui est nécessaire. . p> p>
Combien d'articles puis-je charger dans le DOM avant de devenir un problème pour le système utilisateur / isotope?
J'ai créé une page de test pour cela. Les deux "shuffle" et "insertion" sont des actions: entrez le NB des éléments à insérer dans la zone de texte, puis cliquez sur Insérer. AVERTISSEMENT, Ajout d'un 1000 Prendre> 1 min. dev.rochefolle.net/iso/iso.html
Pour le DOM, vous pouvez le vérifier aussi, mais je dirais que la limitation est beaucoup plus élevée que le code de l'isotope. Si vous n'ayant affiche qu'un nombre limité et filtré d'éléments dans le conteneur Isotope, vous pourrez peut-être charger plusieurs 1 000 personnes dans le DOM. Dans la page de test ci-dessus, une fois que les 1000 éléments sont ajoutés, le shuffle répond à la réponse, bien que pas trop fluide (je fonctionne FF 10 sur Ubuntu)
La situation que vous décrivez est jolie: comment donner à votre utilisateur l'accès à plus de données que ce qu'ils ne peuvent éventuellement voir en détail à la fois. P>
Il existe plusieurs façons de répondre à la question et la bonne réponse est complètement subjective: cela dépend de ce que votre utilisateur tente de voir ou de faire avec les contacts. Avant de pouvoir obtenir une solution satisfaisante, vous devez savoir ce que les utilisateurs vont utiliser les contacts pour. P>
Juste deviner (mais vous sauriez mieux que moi!), Je m'attendrais à ce qu'il y ait deux choses qu'ils font: p>
Si vous filtrez pour toutes les solutions, l'objectif de recherche est à peu près dans le sac. L'objectif explore est celui que vous souhaitez concevoir pour: p>
Je pense que si j'étais à votre place, j'intrivrerais un clustering des contacts. Je doute que les 1000 contacts soient une grande partie d'un problème de performance (en moins que vous parlez un million!), De sorte que 10000+ est vraiment une contrainte utilisateur: ils ne peuvent tout simplement pas voir 1000 contacts à la fois. P>
Je suggérerais d'introduire un clustering, probablement par le nom de famille ou le nom de famille et le prénom. Présentez ensuite l'utilisateur avec un moyen de percer un cluster, mais de replier tous les autres contacts afin qu'ils ne soient pas immédiatement visibles. Quelque chose dans la colère du paradigme Accordien / Rollodex . Cela donne à votre utilisateur l'illusion qu'ils travaillent avec «tous les contacts». Introduisez probablement un nombre minimal pour chaque groupe de sorte que si le cluster soit suffisamment petit, vous ne vous prenez pas la peine de le montrer (c'est-à-dire pourquoi montrer un cluster pour 2 ou 3 ou 5 contacts - indiquez simplement les contacts). Comme les filtres sont appliqués, les clusters s'éloignent. P>
J'écoutais des performances médiocres lors de l'annexe et de l'organisation d'un grand nombre d'articles d'isotope et c'était parce que j'avais l'ajout d'articles incrémentiellement plutôt que dans un lot. Ce devrait être un choix évident, mais quelque chose que j'avais négligé.
Assurez-vous d'utiliser un tableau ou une liste d'éléments, par opposition à la chargement ou à la suppression individuelle. P>
incomingData=['<div>a</div>','<div>b</div>']; elements=[]; jQuery.each(incomingData,function(ind,val){ var element = jQuery(val).get(0); //$container.isotope('insert', element); //resource heavy elements.push(element); }); $container.isotope( 'insert', elements ); //less processing
Quel est le goulot d'étranglement en particulier? Transfert des informations du serveur au client? Rendu et animation de nombreux éléments à l'écran? Fournir simplement une interface utile? Autre chose?
c'est plus sur l'interface et la meilleure façon de l'organiser. De toute évidence, il doit être sensible aussi.