web-dev-qa-db-ja.com

フィールドフィルタリングシステムでブラケットを調整する方法

私はレポートのフィルタリングシステムを構築していて、両方を混合する場合に、ロジックやロジックを組み込む方法を見つけようとしています。

基本的に、非常に単純なフィルターは次のようになります。

Select field 1 from table where field2="123" OR field3="123"

そのシナリオでは、以下のようなものを使用していますが、問題ありません。

enter image description here

ただし、場合によっては、ユーザーが同じクエリ内で、またはその両方を混在させたい場合があります。これは、UIの観点からはさらに複雑になります。例えば、

Select field 1 from table where (field2="123" OR field3="123") AND field 1="abc"

ユーザーが括弧内のビットを指定できないため、元のUIを使用するだけでは機能しません。そのため、ユーザーがそれを実行できるように組み込む必要があります。これを行わないと、クエリの読み取りが大幅に異なります。

私の例はかなり単純ですが、もちろんクエリはこれよりもはるかに複雑になる可能性があるため、ORのグループが3つあり、次に2つのandsがあり、どのORとブラケットするANDなど

ユーザーがこれを実行できるようにする最良の方法は何ですか?

10
bhttoan

垂直レイアウトのネストされたブロック

このパターンは、ユーザーに対して非常によくテストされています。共通の言語を使用して探しているものを説明し、個々のブロックを移動したり、ANDからORに変更したり、削除したりできる、あらゆるレベルの複雑なグループ化を可能にします。

このレベルの明快さはかなりのスペースを必要としますが、ほとんどの単純なフィルターにはそれほど多くありません。

nested expression builder

18
DaveAlger

ユーザー

最初に、ユーザーが誰であるか、そしてこのアプローチがユーザーのニーズとスキルに適合するかどうかを知る必要があります。ほとんどのビジネスユーザーやロジックでは、理解するのが難しく、回避する必要があります。財務、会計などの技術者や事務員は、このようなロジックに慣れています。


UI

要件に応じて、いくつかの実装が考えられます。

シンプルなフィルター:暗黙的および/または定義

グーグルのように。それはあなたの要件にとって単純すぎるようですので、完全を期すためだけに言及します。

Google filter options


機能が削減されたルールエディター:明示的だが限定的または定義、あるいはその両方

これにはモックアップが含まれます。すべての機能が提供されるわけではありませんが、ユーザーのスキルとユーザーが望むものとの間の最高のオフトレードです。


本格的なルールエディター:明示的および/または定義

ここでは、あなたが望むすべてを行うことができますが、それは複雑です。使いやすさの問題を予期し、それでもDaveAlgerのソリューションのように、ソリューションをユーザーに適合させるようにしてください。

2つの川がそのことについて素晴らしい記事を書いた http://tworivers.com/archives/697

最も重要なポイント:

  • 基準、運用、価値
  • ネストされたルール
  • どこにでもルールを追加できる可能性
  • 良いデフォルト

OS Lion file filter

別のものからもう一つ x.se post

  • 意図したブロックに背景色の変更を使用する

nested rule builder with background changes


テキスト入力:明示的および/または定義

はい、技術者のような一部のユーザーにとっては、テキスト入力が最も簡単な方法です。ほとんどの開発者がSQLクエリの作成にこの種類を使用するのはなぜですか?それでも、ガイダンスとサポートは常に高く評価されています(キーワード/変数/ ...のオートコンプリート)


テスト

開発者はそのトピックについてまったく異なる見解を持っています。ユーザーと一緒にテストし、もう一度テストすることをお勧めします。

7
Gustav

それは私だけですか、それとも、使用したテキストオプションが上記のグラフィックの提案よりも優れていますか?私の意見では、これは複雑すぎて、いくつかの高度なグラフィック配置だけでは解決できません。

さて、この時点であなたはあなた自身に尋ねなければなりません、あなたのターゲットユーザーは誰ですか?これは、初心者向けではなく、プロ/経験豊富なユーザー向けです。この場合、そのようなユーザーがかなり単純な言語で書かれた検索フレーズをフォーマットすることを期待するかもしれません。

採用する場合は、次の点に注意してください。ユーザーにとって使いやすくなります。

  1. この検索文字列をコードに「翻訳」するために引用符は必要ありません。
  2. 可能な場合はオートコンプリートを提供します。

したがって、基本的には次のようになります(オートコンプリートの2つのオプション)。

mockup

download bmml sourceBalsamiq Mockups で作成されたワイヤーフレーム

2
Assimiz

技術に詳しくないユーザーの場合、これは良い方法かもしれません:

共通言語のように検索条件を作成することについてはどうですか。すべてのリンクは、ドロップダウンリストなどで変更できます。数値またはテキストの入力フィールド。

enter image description here

1
FrankL

私の会社では、10年以上にわたってさまざまなクエリ表現を調査およびテストしてきました。ユーザーにとって最も効果的なのは、漏斗のような表現です。ここでOR条件は水平に配置され、AND条件が適用されますAND条件は、結果セットを小さくするという点でクエリのフィルターのように機能するので、そのように表示します。これにより、他の方法では苦労する可能性のある非技術ユーザーでも直感的な視覚的なクエリ表現が得られました。 AND/ORの区別と括弧の重要性。

非常に単純なクエリの例では、次のような最も基本的な表現を調べます。 simple query

これと同じレイアウトを使用してクエリを作成できます。さらに複雑なクエリのボックスのグループ化を許可できます。その場合、グループも括弧のように機能します。条件を追加および再配置するためのドラッグアンドドロップUIを開発し、ユーザーに非常によくテストしました。さらに、UIをさらに拡張して、If/Then/Elseスタイルのロジックを追加することで、非常に柔軟になりました。この投稿ではデザインの詳細は省略しますが、このロジック表現を優れたUIに変える方法はたくさんあります。

0
illuminaut

ここにたくさんの良い答えがあります。もう1つ追加します。 Microsoft TFS Webインターフェイスに精通している場合。これは、現在AND/ORベースのフィルタリングを提供している方法です。これにはサブ基準もあります。

enter image description here

これは、1レベルのカスケードのみを許可します。それには正当な理由もあります。より多くのレベルを追加することは、処理ロジックにとって圧倒的であり、わずかにより良い結果をもたらします。ほとんどの場合、2レベルのフィルターが機能します。

別のアプローチ

このアプリケーションでは、2つのレベルのアプローチに従っています。トップレベルのAND OR選択ラジオボタンがあります。その選択に基づいて、すべてのアイテムがANDまたはORで結合されます。2つ以上のアイテムを選択してから、 subgroup(1レベル下の基準に使用する名前)この生成されたサブグループは、選択された基準を自動的に一緒に移動します。それらを大括弧で囲み、 ANDからORまたはOR to ANDのいずれか該当する方の内部演算子です。お客様のフィードバックに基づいて、これは私たちのビジネスケースに適しています。

残念ながら、私は同じのスクリーンショットを共有することはできません。

0
Sol

ユーザーには、基本モードと詳細モードの2つのモードを指定できます。

  • 基本モードは、すべてのフィルターに参加するためのAll/Anyオプションのみをカバーします。

  • 詳細モードでは、ユーザーはブラケットを使用して複雑なクエリを記述できます。

それ以外の場合は、特定のUIにすべてのオプションを配置すると少し複雑になり、おそらくこの高度な機能を使用したいユーザーはほとんどいません。

0
SSuad

フィールドシーケンスを固定する代わりに、フィールドを選択し、各フィールドの値を取ることができます。

enter image description here

0
keshav

解決策はインターフェースにあります。ユーザーに入力のツリーを解釈させないでください。インターフェイスは、ユーザーがタスクを理解するのに役立ちます。

ユーザーが作成しているフィルターに集中できるようにします。フォームフィールドやセレクターなどは入力としてのみ使用し、情報を表示しないでください。機能が完了したら削除してください。

ステートメントを論理ブロックに分割することにより、ドラッグアンドドロップを使用してステートメントを編集でき、ブロック自体を編集することも、ユーザーに入力をトラバースして変更することを強制することもできます。インターフェースは、フィルターが正しい場合にユーザーに簡単に通知し、ロジックのエラーをユーザーに通知し、エラーを修正する方法を通知します。

これがこのようなインターフェースのモックです。入力は、ドロップダウンメニュー、ピッカーなどです。

編集:モックに説明を追加

enter image description here

ユーザーはコンポーネントをステートメントに追加し、コンポーネントを所定の位置にドラッグすることができ、アプリは即座にすべてについてユーザーにフィードバックを与えることができます。

0
moot

基準がほとんど単純な場合は、クエリによる例(QBE)アプローチで十分であり、ユーザーが特にスプレッドシートに慣れているユーザーが学習、構築、デバッグするのが簡単です。

mockup

download bmml sourceBalsamiq Mockups で作成されたワイヤーフレーム

QBEは、より複雑な条件に拡張できます。

0
Jason A.