-
Notifications
You must be signed in to change notification settings - Fork 3
tracker_plus_list_Filter
私のところでは次のような制限の元で、絞り込みの機能を実装してみました。
- 絞り込み対象となる文字列:page内に記載されたそれぞれの項目値 (tracker_listでの表示内容とは異なる可能性があります)
- 絞り込み方法:指定文字列が対象となる値に含まれるか否かを判断し、その組合せを可能としています。
一覧対象が多い一方、実際に閲覧したいものが少ない場合には、 この絞込み機能によって、HTMLの生成時間の短縮が図れると思います。 (一覧対象となるページの読込み処理に対する処理速度の対策案として、 cache機能を追加(Ver1.1〜)して試しています。)
なお、ページの編集をすることなく、適用するフィルタ条件をユーザが変更できるようにした 機能を Ver2.5以降から組み込んでいます。
(注意) select2やhidden2を用いて表示されている文字列が対象となるわけではありません。 例えば、選択項目(select形式項目)に絞り込み機能を使う場合、 listbox2プラグインのように全ての選択項目が列挙されていると、 思うように絞り込みがされなません。(このような例の場合には、listbox3プラグインを利用して頂くのがよいかと思います。) 条件指定を行う場合には御留意ください。
trackerの設定ファイルの下に filters というページを準備し、 そこに以下で説明する書式で指定します
基本的には、trackerのfieldsを定義するConfigの記述方法と同じです。
レベル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:対象項目、条件値で選択した条件に合致しないものを表示
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 の指定が可能です.
見出しが定義する絞り込み条件の名前を示し、 表組みで指定されたリストが、絞り込みの条件を示します。
連結条件 | 対象項目 | 条件値 | 条件 |
---|---|---|---|
かつ or または | any | any | 限定 or 除外 |
現時点でのフィルターの仕様を、各フィールドの説明を通して簡単に説明します。
複数の条件を定義した場合の論理積・論理和をそれぞれ、 「かつ」、「または」で指定します。 条件判断は上から順番に行うため、定義順が意味を持つ場合があります。
例:条件A or 条件B and 条件C 通常、これは以下のような順序で判断することを期待すると思いますが、
条件A or (条件B and 条件C)
ここでは次のように定義順に条件の判別がなされます。
(条件A or 条件B) and 条件C
filterの条件を指定する名前を fieldの定義で指定した名前で定義します。
指定したフィールドに含まれる値を指定します。 複数の値を列挙した場合は、カンマで区切って列挙してください。 ((完全合致や部分合致などもできるかもしれませんが、 細かなテストはまだしてません。))
以下の2つの指定が可能です。
- 限定:対象項目、条件値で選択した条件に合致するもののみを表示
- 除外:対象項目、条件値で選択した条件に合致しないものを表示
tracker_listの五番目のパラメータに 上記で設定した絞り込み条件の名前を指定します。 次の例は、filters ページに設定した select1という条件を適用して list表示をすることを示しています。
(Ver1.7)
例 #tracker_plus_list(listbox3,,status:SORT_ASC;_past:SORT_ASC,,select1,)
閲覧者が一覧時に適用するフィルタを動的に選択できる機能を提供します.
- スクリプト内の定数定義: 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) の設定に基づいて表示の有無が決まります. 何も指定しない場合に、リストボックスを表示するか否かはこの値を設定して決定してください.