Skip to content

tracker_plus_list_Filter

jjyun edited this page Aug 1, 2017 · 1 revision

tracker_plus_list.inc.phpでのフィルタ機能について

私のところでは次のような制限の元で、絞り込みの機能を実装してみました。

  • 絞り込み対象となる文字列:page内に記載されたそれぞれの項目値 (tracker_listでの表示内容とは異なる可能性があります)
  • 絞り込み方法:指定文字列が対象となる値に含まれるか否かを判断し、その組合せを可能としています。

一覧対象が多い一方、実際に閲覧したいものが少ない場合には、 この絞込み機能によって、HTMLの生成時間の短縮が図れると思います。 (一覧対象となるページの読込み処理に対する処理速度の対策案として、 cache機能を追加(Ver1.1〜)して試しています。)

なお、ページの編集をすることなく、適用するフィルタ条件をユーザが変更できるようにした 機能を Ver2.5以降から組み込んでいます。

(注意) select2やhidden2を用いて表示されている文字列が対象となるわけではありません。 例えば、選択項目(select形式項目)に絞り込み機能を使う場合、 listbox2プラグインのように全ての選択項目が列挙されていると、 思うように絞り込みがされなません。(このような例の場合には、listbox3プラグインを利用して頂くのがよいかと思います。) 条件指定を行う場合には御留意ください。

絞り込み条件の指定場所

trackerの設定ファイルの下に filters というページを準備し、 そこに以下で説明する書式で指定します

絞り込み条件の記述方法

基本的には、trackerのfieldsを定義するConfigの記述方法と同じです。

Ver3.x での絞り込み条件の記述方法...

レベル1の見出しが定義する絞り込み条件の名前を示し、 表組みで指定されたリストが絞り込みの条件を示します。

連結条件 対象項目 条件 条件値
AND or OR any EXIST or NOT EXIST any

太文字 及び 条件/条件値の部分は Ver2.xの仕様からの変更点です. フィールドの記述順を 条件/条件値という並びで指定できるようにしました. ( 以下のように今までと同じような順で指定してても動作するようにしています.)

連結条件 対象項目 条件値 条件
AND or OR any any EXIST or NOT EXIST

各フィールドの説明

現時点でのフィルターの仕様を、各フィールドの説明を通して簡単に説明します。

連結条件

複数の条件を定義した場合の論理積・論理和をそれぞれ、 「AND」、「OR」で指定します。 条件判断は上から順番に行うため、定義順に注意してください

例:条件A or 条件B and 条件C これは以下のような順序で判断することを期待しても....

 条件A or (条件B and 条件C)

ここでは次のように定義順に条件の判別がなされます。

(条件A or 条件B) and 条件C
対象項目

filterの条件を指定する名前を fieldの定義で指定した名前で定義します。

条件値

指定したフィールドに含まれる値を指定します。 複数の値を列挙したい場合は、カンマで区切って列挙してください。 (完全合致や部分合致などもできるかもしれませんが、 細かなテストはまだしてません。)

条件

以下の2つの指定が可能です。

  • EXIST:対象項目、条件値で選択した値に部分一致するものがあれば表示.
  • NOT EXIST:対象項目、条件値で選択した条件に合致しないものを表示

(Ver3.x での追加機能)

datefield 形式の 値についてのみ、次の条件/条件値が指定可能です.

連結条件 対象項目 条件 条件値
AND or OR datefield形式 ?= any or TODAY
AND or OR datefield形式 ?> any or TODAY
AND or OR datefield形式 ?>= any or TODAY
AND or OR datefield形式 ?< any or TODAY
AND or OR datefield形式 ?<= any or TODAY

条件値は、datefield の形式で指定した 日付フォーマットに従って指定します. また、表示する時点での日付 TODAY の指定が可能です.

Ver2.x での絞り込み条件の記述方法...

見出しが定義する絞り込み条件の名前を示し、 表組みで指定されたリストが、絞り込みの条件を示します。

連結条件 対象項目 条件値 条件
かつ or または any any 限定 or 除外

各フィールドの説明

現時点でのフィルターの仕様を、各フィールドの説明を通して簡単に説明します。

連結条件

複数の条件を定義した場合の論理積・論理和をそれぞれ、 「かつ」、「または」で指定します。 条件判断は上から順番に行うため、定義順が意味を持つ場合があります。

例:条件A or 条件B and 条件C 通常、これは以下のような順序で判断することを期待すると思いますが、

 条件A or (条件B and 条件C)

ここでは次のように定義順に条件の判別がなされます。

(条件A or 条件B) and 条件C
対象項目

filterの条件を指定する名前を fieldの定義で指定した名前で定義します。

条件値

指定したフィールドに含まれる値を指定します。 複数の値を列挙した場合は、カンマで区切って列挙してください。 ((完全合致や部分合致などもできるかもしれませんが、 細かなテストはまだしてません。))

条件

以下の2つの指定が可能です。

  • 限定:対象項目、条件値で選択した条件に合致するもののみを表示
  • 除外:対象項目、条件値で選択した条件に合致しないものを表示

絞り込み条件を指定したlist表示

tracker_listの五番目のパラメータに 上記で設定した絞り込み条件の名前を指定します。 次の例は、filters ページに設定した select1という条件を適用して list表示をすることを示しています。

(Ver1.7)
例 #tracker_plus_list(listbox3,,status:SORT_ASC;_past:SORT_ASC,,select1,)

ユーザによる絞り込み条件の変更を可能に/不可能にする (Ver2.6〜)

閲覧者が一覧時に適用するフィルタを動的に選択できる機能を提供します.

関連する設定値

  • スクリプト内の定数定義: TRACKER_PLUS_LIST_DYNAMIC_FILTER_DEFAULT
  • tracker_plus_list() のフィルタ名指定部分

設定方法

フィルタ名の指定部分において、filter名の先頭に '+' または '-' を付けます.

'+' の場合

フィルタ選択用のリストボックスを出力します.

例 #tracker_plus_list(listbox3,,status:SORT_ASC;_past:SORT_ASC,,+select1,)

'-' の場合

フィルタ選択用のリストボックスを出力しません.

例 #tracker_plus_list(listbox3,,status:SORT_ASC;_past:SORT_ASC,,-select1,)

つけていない場合

スクリプト内の定数定義(TRACKER_PLUS_LIST_DYNAMIC_FILTER_DEFAULT) の設定に基づいて表示の有無が決まります. 何も指定しない場合に、リストボックスを表示するか否かはこの値を設定して決定してください.

ユーザによる絞り込み条件のリスト項目のラベル文字列やその書式を指定する(Ver2.6〜)