複数選択をするフィルターを以前作成したのですが、今回はテキスト版です。
そしてなかなかにショックな出来事があったので、その対処方法を記録しておきます。
もっといい方法があるよって人は教えてください。
ショックな現象
フィルターの作り方は後述しますが、テキストでフィルターを作成したところ、対象の検索先がemptyの場合うまく動かない状態が発覚しました。

以下のテーブルに対し、nameに記載されている内容でフィルターを作成しました。

Listテーブルのnameの一覧を左側にチェックボックスで一覧で表示しています。
チェックをつけた項目をCustom Stateに保存し、右側のリストは検索結果を表示しています。
空欄のチェックボックスをクリックしたとき、Custom Stateには empty が保存されていますが、右側のリストに検索結果が表示されません。。
フィルターの作り方
フィルターの設定

チェックボックスの一覧は、Repeating GroupにListテーブルを設定します。

チェックボックスのLabelは Current cells
List`s nameで、Listテーブルのnameを表示させています。

フィルターの検索用にGroup FilterにCustom Stateを作成します。チェックボックスがクリックされた時にCustom Stateのnameにチェックボックスの値を入れています。


一覧の表示設定
一覧の表示は以下のような設定です。

検索結果の一覧表示は、Listのname is in Group Filter`s nameとして、Custom Stateに保存されているテキストを含んでいるnameを検索しています。
Custom Stateの中身
さてCustom Stateの中身を見てみましょう。
emptyが入っているようです。でも、検索結果には入りません。
な・ぜ?

対策
とりあえず、エクセルのフィルターでも空白の場合(空白)と表示しているので、そうなるようにしました。

Current cells
List`s name is empty のとき、Labelを(空白)にしてグレーにしました。

もう一つCustom Stateを作成
空白対策のために、もう一つCustom Stateを作ることにしました。Listテーブルの検索対象レコードを保持するためのCustom Stateです。

Custom Stateを設定するワークフロー
Custom Stateには、以下のようなワークフローを設定しました。
- 空でないものをチェックしたとき、Group Filter`s nameにnameを追加
- 空であるものをチェックしたとき、Group Filter`s nameに(空白)を追加
- 空でないもののチェックを外したとき、Group Filter`s nameからnameを削除
- 空であるもののチェックを外したとき、Group Filter`s nameから(空白)を削除




選択対象のlist(Custom State)を設定するワークフロー
Group Filter`s nameの設定後、Custom EventでGroup Filter`s listの設定をします。
Group Filter`s list に対し、Listテーブルをname is in Group Filter`s nameで検索した結果を設定します。このとき、上記で問題と書いた通り、nameがemptyのものは対象になっていません。

そこで、Group Filter`s nameに「(空白)」を含む場合、nameが空であるListのレコードも追加します。

このCustom Eventを、Checkboxをクリックした場合の最後のアクションで呼び出します。

Repeating GroupのData sourceを変更
最後に、Repeating GroupのData sourceを設定します。nameの検索結果に、Group Filter`s listをマージします。

結果
こんな感じで、空白であってもフィルターされるようになりました。

もっとサクッとできる方法ないかなあ。。