web-dev-qa-db-ja.com

絶えず変化するデータのリストをソートしてフィルタリングする方法は?

イベントのリストを表示するWebページ(関連性はないと思いますが、デスクトップまたはモバイルアプリの場合もあります)があります。より多くのイベントが常に到着し、到着するとリストの一番上に追加されます。このリストに並べ替えとフィルタリングを追加したいのですが、リストが最新のもの以外で最初に並べ替えられた場合、またはリストがフィルタリングされた場合に、着信イベントをどうするかわかりません。

たとえば、ユーザーが(たとえば)イベントタイプ「ジム」でリストをフィルタリングし、タイプ「フレッド」の新しいイベントが到着した場合、私はそれを表示しないと思います。唯一のことは、リストがフィルタリングされたままになり、ほとんどの着信イベントが表示されなくなる可能性があることです。これはおそらくそれらを混乱させるでしょう。

同様に、リストが(たとえば)期間で並べ替えられ、最初に最短で、表示されている期間よりも長い期間の新しいイベントが発生した場合、それをリストに追加しますか?その場合、リストの正しい場所に挿入する必要がありますか?

更新 TripeHoundの優れた質問への回答として、もう少し詳しく説明します。ユーザーはキャンペーン中にページを見ており、彼らの主な関心は新しいイベントを目にすることです。特定のユーザーがどのイベントを発生させたかをフィルターで確認したり、何が起こっているか、誰が最も多くイベントを発生させたか、または最も短いイベントを表示したりするために並べ替えることができます。つまり、新しいイベントを確認することは非常に重要です。

アドバイスできる人なら誰でも。ありがとう

3
Avrohom Yisroel

OPの更新に続いて、問題の具体的な提案から始めます。これは、より一般的なケース(私の元の回答のわずかに更新されたバージョン)で取る可能性がある種類のアプローチが続きます。

特定の回答:キャンペーンイベント

私はあなたのニーズを理解しているので、特定のユーザーやキャンペーンに焦点を合わせるためにフィルタリング/並べ替えを行っている場合でも、ユーザーは新しいイベントが到着したときに対応する必要があります。ユーザーが新しいイベントがメインリストに突然現れることに満足している場合でも、実際に並べ替え/フィルタリングを行うと、それらが表示されなくなる可能性があります。

したがって、並べ替え/フィルタリングが適用されているかどうかに応じて、2つのモードを提案します。

  • デフォルトのモードでは、すべてのイベントがリストビューに表示され、新しいイベントが到着すると、リストの一番上にポップアップ表示されます。

  • 非標準の並べ替え/フィルタリングが有効になっている場合は常に、ウィンドウ/画面の下部にある「ティッカーストリップ」に新しいイベントを表示します。 (私は自分でこの用語を作り出したばかりです。そのようなものに「公式」の名前があるかどうかはわかりません)。

以下は、ユーザーが独自のソートおよびフィルタリング操作を適用し始めてから3つの新しいイベントが到着したモックアップを示しています。

List view and new event ticker

明らかに、表示される新しいイベントの詳細、およびインジケーターとして色分けを使用するかどうかを変更できます(Event Typeで行ったように)。

「ティッカーストリップ」内に収まるよりも多くの新しいイベントを取得する必要がある場合は、ストリップの一方または他方のセルを要約として使用できます。 最初のいくつかの新しいイベントを表示することがより重要である場合(ソート/フィルタリングを開始してから)、右側に要約を置きます(3つの元のイベントが表示されます; 2つの新しいイベントは要約):

ticker with newer events

最新の新しいイベントを表示することがより重要な場合は、要約を左側に配置します(最も古い2つの元のイベントが要約され、最新の元のイベントと2つの新しいイベントが表示されます) ):

ticker with older events

すべての場合において、「リサイクル」ロゴをクリックすると、「デフォルトモード」に戻ります。ティッカーをクリアし、すべての並べ替え/フィルタリングをクリアして、メインリストにすべてのイベントを最新の状態で再表示します。

メインのリストビューに「ライブ」フィードが表示されている場合でも、利用可能な「不動産」の量に応じて、「ティッカーストリップ」のためのスペースをいつでも残すことができます。または、必要に応じて、リストビューから下の数行分のスペースを「盗む」こともできます。これはおそらく、ユーザーが最初にソート/フィルタリングを適用し始めたときに(最初の新しいイベントが到着したときとは対照的に)行われるのが最もよいでしょう。そのようにして、user-initiatedアクションで発生します。ランダムにではなく。


一般的な考慮事項

正しい方法™は個々の状況に依存すると思います。プロダクトオーナーやユーザーに尋ねる必要があるいくつかの質問は次のとおりです。

  • なぜフィルター/ソートを使用しているのですか? 特定のタスクを実行するか、またはビューを作成します? (大体、それらは機能を使用してactivelyまたはpassivelyですか:下記を参照してください)。

  • 新しいイベントについて知ることはどのくらい重要ですか?彼らは単に「新しいイベントがあることを認識させる」ことができますか、それとも新しいイベントの到着が重要であっても、ユーザーがそれについて知る必要がある場合でも何かの真ん中

ユーザーが並べ替え/フィルタリングを使用する方法の例は次のとおりです。

  • 特定のタスク:売掛金担当者はフィルターを使用して、期限切れのアカウントのみを表示します。日付順に並べ替えて最も古いものを表示し、いくつかのエントリを選択します。次に、未払い額で並べ替え、最大の番号を選択します。次に、選択したエントリがエスカレートされます。

    ユーザーは、リストの中央に新しいエントリが突然現れることによって、そのようなタスクの実行中に中断されることを望まないでしょう。

  • ビューの確立:サポートデスクの誰かがインシデントを重大度(最も高いものから)および年齢(最も古いものから)でソートし、顧客の応答を待っている人を除外します。設定が完了すると、リストの一番上のチケットを繰り返し選択して、お客様に連絡します。

    この場合、新しい「重大度1」のインシデントが発生すると、到着するとすぐにリストの一番上に自動的に挿入されます。

これらのような質問への回答に応じて、物事を処理するための最良の方法について通知されます。

  • 場合によっては(サポートデスクの例など)、新しいエントリが到着したらすぐにリストに挿入するのが適切です。

  • 新しいエントリを挿入するのが適切な場合もありますが、並べ替え/フィルタリングの性質上、すぐには表示されないことがあります。

  • 他の場合では、リストに新しいエントリを挿入して(表示されているかどうかに関係なく)、ユーザーの操作を中断することは適切ではありません。

後者の2つのケースでは、新しいエントリが存在することを示す別の方法が必要です。

  • 新しいイベントがあることをユーザーに通知する画面の領域があれば十分かもしれません。おそらく、それらを含めるためにリストを「更新」するオプションがあります。
    New events button

  • 個々のイベントの詳細(少なくとも一部)を表示する必要がある場合があります。

後者の場合、1つのオプションmightで2つのリストを作成できます。新しいイベントがリストの一番上に表示されるように、常にフィルタリングされずに整理されたもの。もう1つは、ユーザーが並べ替え/フィルタリングを適用できる場所です。ほとんどの場合、これは煩雑であるか、または画面の不動産を浪費することになると思います。 1つのpossibleメソッドは、通常、フィルタリングされていない/新しいイベントのトップリストを表示することです。ユーザーが並べ替え/フィルタリングを行う場合、リスト領域は「分割画面」モードになり、上半分はフィルタリングされないままですが、下半分は必要に応じて並べ替え/フィルタリングできます。

別のオプションは、この回答の冒頭で説明した「ティッカーストリップ」パラダイムのようなものを使用することです。

7
TripeHound

フィルタリング:リストがフィルタリングされると、アイテムが追加され、フィルターに一致する場合にのみ表示されます。あなたは、ユーザーがフィルターをオンのままにするのではないかと恐れています。はい、これはリスクですが、リストがフィルタリングされていることをユーザーに明確にするために達成する必要があります。適用されたフィルターをチップとして表示する、「2000個のアイテムのうち22個のフィルター済みアイテムを表示する」などのタイトルを付けるなどのオプションがあります。ユーザーがリストをフィルタリングする場合、ユーザーには理由があり、たとえ新しいものであってもフィルターオプションに一致しない他のアイテムを表示したくないと考えます。

並べ替えの場合:これは、2つの理由でより困難に見えます。 A)現在のアイテムの下に新しいアイテムが追加されたことがユーザーに表示されない場合があります。 B)新しいアイテムが現在のアイテムの上に挿入されると、リストが下に移動する可能性があり、リストをスクロールするときに非常に煩わしいです。 (しかし、これは並べ替えを実装しなくても発生する可能性がある問題です)。だからあなたができることは、新しいアイテムをリストに挿入せずに、「2つの新しいアイテム、リロードリスト?」のような何かを言う付箋のメッセージ(上または下)を持参してください。このように、彼がこの新しいアイテムを見たいかどうかはユーザーの決定です。

2
BrunoH

2つの重要な情報ポイントを強調し、それらがどのように変化しているかを明確に伝えるために、設計上の決定を行う必要があります。

  1. データセットの合計エントリ
  2. 現在フィルタリングされているサブセットの合計

理想的には、エントリがデータのプール全体または現在表示されているフィルターされたサブセットから追加または削除されたときに、何らかの方法でアニメーションを適用し、可能な限り明確なオーディオキューも必要になります。


それらを視覚化に実際に追加する限り:現在のフィルター、並べ替え、および位置を尊重します。

それらが属するリストに追加します。理想的には、その上に明確なアニメーションがあります。

  • 新しく追加されたエントリで通常にフェードする緑色の強調表示など。
  • インタラクションを無効にして、リストに関連しなくなった場合は削除する前に、しばらくの間赤でエントリを強調表示します。

スクロールする必要があるほどリストが長い場合は、スクロールフィールドの上部/下部のアニメーションで、「オフスクリーン」の変更が発生したことを明確に伝えることができます。ただし、現在のスクロールビューの上または下に追加されたアイテムが画面上にあるものを移動することを許可しないでください。

  • 「合計イベント」カウンターの明確なアニメーションは、「何かがバックグラウンドで追加されましたが、現在のフィルタリングに収まりません」と伝えるのに十分な役割を果たすはずです。
1
TheLuckless