【チェックボックスyes/noの取扱】Repeating Groupを使用し、チェックボックスの項目名とチェックの完了/未完了(yes/no)を同時に表示するには?

###実装したい機能
実装したい形のサンプル画像↓


入力者側では、チェックリストの項目のみを表示し、
完了したものだけをチェックしてもらう。


管理者側の画面には、完了未完了(yes/no)の値を表示させ、チェックリストの項目が完了しているかどうかをわかりやすく表示したいと思っております。

【現状】
チェックリストの項目は、Data → Option setsに入れてます。
Repeating Groupに対してOption setsの該当場所を選択、Repeating Groupにある項目は、Current cell’s 〇〇’s Displayで表示してます。
完了未完了の部分は、分からない点なので静的に文字入れしているだけです。

【実装したいこと】
・Field type(yes/no)を完了/未完了という任意の文字列を指定して使用したい
・管理側画面でチェックした項目に対しては、完了(yes)を表示
チェックしてない項目に対しては、未完了(no)を表示したい。

現状で説明した部分以外のDBやworkflowは未設定です。

試したこと

https://note.com/jansnap/n/n715846b1c025

理解が難しかったので、質問させていただきました。

お力添い頂けると幸いです。

takuya0929 さん、はじめまして。

takuyaさんの実現したいのは以下のような表示方法で合っていますでしょうか?

ある行の値がYesなら完了、Noなら未完了と表示したい。
合っていましたら、下記がご参考になれば幸いです。

RGにテキストを配置してそのConditional で2種の設定を使い分けます。
takuyaさんの場合のWhenは「Current cell’s 〇〇’がYes 」と「Current cell’s 〇〇’がNo 」になるかと思います。

私が試したところ文字列を変えるだけではわかりづらいので背景色を変えるなりした方が判別しやすいかなと感じました。

入力者用のチェックリスト Repeating Group は Option sets を利用しているとのことでしたね。
入力値をDBにどのように格納するかで管理画面の表示方法も変わってくるかと思いますがひとまずお知らせまで。

「いいね!」 1

ご回答ありがとうございます。

このようにしてみたのですが、うまく反映されません。


データベースの方は、カテゴリーごとにOption setを作成しています。データベースには、[チェック項目1, 完了] 次行[チェック項目2, 未完了]のように1項目ずつ保存できればと考えております。

しかし現状データベースには、カテゴリーごとにまとめてチェック項目がカンマ区切りで入ってしまいます。何かヒントがあれば教えていただきたいです:sweat_drops:

takuyaさん

失礼いたしました。DBへの格納方法を理解しきれておらず見当違いの回答をしてしまいました。

現状のtakuyaさんのデータ類は以下のような構成になっている理解でよろしいでしょうか?
たとえばテーブルのチェック項目が3つあるうち、入力者が2つチェックをつけたら2個、3つチェックをつけたら3つの項目がカンマ区切りで3個入っている。

そうであれば、Conditional のWhenは「清掃チェックリスト’s テーブルチェック項目 each item’s Display Contains Current cell’s tableChecks Dispay」ですかね。
ここらへんは jansnap さんの記事のとおりです。

清掃チェックリストという仕様から察しますにデータベースの構成は今のままでいいような気がします。ムリに Yes/No 型を持たせなくてもいけるのではないでしょうか?

DBのリスト項目は重複する値を持たせることができませんが、清掃チェックリストの内容がカブる可能性は低いと考えられますから。

「いいね!」 1

ご丁寧な回答ありがとうございます!

そのような構成なのですが、チェックするしないに関わらず、項目が全てデータベースに入ってしまいます。

選択していく中でeach itemが表示されなかったですが、試してみます。

【現状の進行について】


入力画面になります。 チェックするしないに関わらず、全てデータベースに入ってしまいます。


保存ボタンのワークフローになります。


チェックを入れてないですが、このように3個全て入ってしまいます。


完了 未完了を表示するためのConditionalです。ご指摘のWhenを参考にしました。


理想でいうとチェック入れた項目のみデータベースに入り、データベースに入ったチェック項目を含むものに対して完了を見せる感じです。

そうなると確かにyes/no型よりは、含むものに対して完了を見せて、含まないものは未完了が一番きれいなのかなと思いました。

でもまだ実現できていないのが現状ですが:sweat_drops:

takuyaさん

DBへの保存時にRepeating Group のリストを格納なさっていますね。
Repeating Group のデータソースは各Option Setsでしょうから、これだとまるっとOption Setsをコピーしているのと同義です。

Repeating Groupの値は表示専用にして、入力者が選択した値を格納するものを用意しましょう。

tableCheck/zashikiCheck など各種Option Sets型のCsutom stateを作り、チェックボックスの value is changed イベントでチェックボックスがオンならCustom Stateにplus item、オフならminus itemする処理などが必要です。
その後、DBへの保存へは上で用意したCustom Stateを使います。

これでうまくいくことを願います…!

「いいね!」 2

ご回答ありがとうございます。数日考えておりました。返事が遅くなり申し訳ございません。

こちらの処理は、実装できました。


ですが、管理者ページとなる確認ページの完了未完了は、このように全て完了になってしまいます!



ワークフローは前回と変わっていませんが、現状こんな感じです。
先ほど、チェックを選択したものだけのDB格納ができたので、
DB格納が確認できたものだけに対して完了、 チェックを入れずDBに入らなかったものは未完了と表示させたいです。

上記のような処理の場合、何が現状足りないのかご教授頂けると幸いです。

「いいね!」 1

横から失礼します:man_bowing:
「完了」と「未完了」をConditionalで切り替えているのですね。
contains の前後が同じになっているので、常に条件を満たすので、上から順に実行されて、一番下の「完了」が表示されているのだと思います。

Custom Stateを作ったのであれば、
Repeating Group zashikiCheck’s zashikicheck contains Current cell’s zashikiCheck
のように、Repeating GroupのCustom stateとCurrent cellを比べてはいかがでしょうか?

「いいね!」 2

ご回答ありがとうございます。
なるほどですね!

こちらを試してみました



※上記は、テーブル、座敷のみ設定してあります。
チェックを入れたのは一つなのに、次はどちらも未完了になりました。

ちなみになのですが、Custam stateは、スタッフ入力画面から選択されたチェックボックスの値のみをDBに格納するために設定しました。

今回の完了未完了は、責任者が見るページでスタッフ入力画面とは異なるページになりますので、Custam stateはこのページには作っていませんでした。
なので、スタッフ入力画面同様、責任者側画面でもcustom stateを新規作成し、やった結果 未完了表示になっている状況です。

何か解決の手段はありますでしょうか?

jansnapさんからのナイスご助言でぐっと前進なさいましたね!

ちなみになのですが、Custam stateは、スタッフ入力画面から選択されたチェックボックスの値のみをDBに格納するために設定しました。

そうです、せっかくDBには格納できたのですからそれを使いましょう。
責任者側画面ではわざわざCustom state を作らなくてもDB値を直接読めます。

上の画像で水色で囲まれた部分がDBのレコード1件と対応しますよね。
この水色部分のElement Type は Page、Group、Popup、Repeating group などのいずれかになりましょう。
そのData Sourceに表示したいDBレコードを抽出して指定します。
例)「Do Search For cleanCheckList…」

そして、たとえばGroup なら 「Group ○○ cleanCheckList’s table」(意味:○○グループの清掃チェックリストレコードのtable列の値)で保存された値を読めます。

この値とRepeating Group で表示しているOption sets と比較します。
具体的に Conditional に書くならば
「Group ○○ cleanCheckList’s table contains Current cell’s tableCheck」
でよろしいかと思います。

あともうちょっとで実現できます!

「いいね!」 1

丁寧なご回答感謝です:man_bowing: ありがとうございます。

わかりました!

今後、情報更新するたび、順に並べたいので、Elements typeをRepeating Groupでやってみました。


DBは、checksheetという名前で格納しています。


おっしゃってる意味も分かりやすいですし、比較しているつもりなのですが、上手く反映できません:sweat_drops: もう少しなのですが、お力添い頂けると幸いです:man_bowing:

Conditional の When の左辺が 「Repeating Group checksheet…」ではないでしょうか?
現在の「Repeating Group tableCheck…」はデータソースがOption Sets ですよね?DBに保存されているchecksheet ではなく。

Repeating Group が2つあって紛らわしく感じてしまうでしょうね。
でも、このElement のデータ参照元は何か、どこから取得しているかを把握しておくのがとっても大事なポイントになると思います。

「いいね!」 1

ありがとうございます!
確かに、option setsのデータと項目比較してるだけなんでそうなりますよね:sweat_drops:

全体で囲んだRepeating Groupと比較しようとしてますが、
同じ要領だと赤文字になります。原因わかりますでしょうか?

このエラーは、checksheet のRepeating Group 全体 を左辺に指定しているために起こっていると思われます。

takuyaさんが左辺に指定なさっているものをBubbleで表現すると下記の画像のようになります。

水色の線で囲まれている部分がtakuyaさんが左辺にしている範囲です。日々レコードが増えていく checksheet テーブル 全体 とOption Sets 内の1つの項目を比較しようとしているのでムリがあるというわけです。
左辺に指定すべきは、画像で赤色で囲まれている範囲…つまりレコード1件の、table 列 または zashiki 列です。

以下、私の作ったサンプルをElementの外枠から(入れ子の外側から)紹介します。

1.checksheet のRepeating Group(水色の枠線で囲まれている部分)

2.上のRG内の1行に作ったグループ(赤色の枠線で囲まれている部分)

3.RG内に作ったRepeating Group

4.3で作ったRG内のText

「checksheetテーブル全体 → checksheet の特定レコード → その特定レコードのとある列 」
このようにデータ構造を大きい方から小さい方へ順に絞り込んでいくのです。

先の回答が大ざっぱでRepeating Group単位でしか書いておらず失礼いたしました。 :disappointed_relieved:

「いいね!」 2

ありがとうございます!
Repeating Groupの中にGroupを入れる発想は、まったくなかったです。
そういう感じで扱うんですね!すごく勉強になりました!


理想の形になりました!ありがとうございます! 制作中アプリの方にも反映していきます:relieved:

「いいね!」 2