テーマを変更中で、表示が崩れているところがあります…!

【bubble】複数選択フィルター テキスト版

.bubble
.bubble

複数選択をするフィルターを以前作成したのですが、今回はテキスト版です。

そしてなかなかにショックな出来事があったので、その対処方法を記録しておきます。

もっといい方法があるよって人は教えてください。

ショックな現象

フィルターの作り方は後述しますが、テキストでフィルターを作成したところ、対象の検索先がemptyの場合うまく動かない状態が発覚しました。

ショックな状況。。。

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

対象のテーブル

Listテーブルのnameの一覧を左側にチェックボックスで一覧で表示しています。

チェックをつけた項目をCustom Stateに保存し、右側のリストは検索結果を表示しています。

空欄のチェックボックスをクリックしたとき、Custom Stateには empty が保存されていますが、右側のリストに検索結果が表示されません。。

フィルターの作り方

フィルターの設定

チェックボックス一覧の表示

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

チェックボックスの設定

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

Custom State

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

チェックをした時
チェックを外した時

一覧の表示設定

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

一覧の表示設定

検索結果の一覧表示は、Listのname is in Group Filter`s nameとして、Custom Stateに保存されているテキストを含んでいるnameを検索しています。

Custom Stateの中身

さてCustom Stateの中身を見てみましょう。

emptyが入っているようです。でも、検索結果には入りません。

な・ぜ?

Custom Stateの中身

対策

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

空白を表示

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

空白を表示するConditional

もう一つCustom Stateを作成

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

もう一つの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のものは対象になっていません。

Listテーブルを選択した項目で検索

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

name が empty のレコードを追加する

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

Custom Eventを最後に呼び出す

Repeating GroupのData sourceを変更

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

Repeating GroupのData sourceを変更

結果

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

空白もフィルターできた!

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

タイトルとURLをコピーしました