計算式プラグインで、項目が変更されたかの表示を行ってみます。
概要
日付・文字列・数値、チェックボックスなどが変更された場合に、表示してみます。
編集画面表示に変更チェックをリセットして、表示します。
- 日付変更チェック
- 日付・文字列・数値、チェックボックス変更チェック
- 文字列複数行に変更項目をまとめて表示
日付変更チェック
スペース項目に日付変更メッセージを表示します。
アプリ設定
日付項目のチェック用に、それぞれ日付項目とチェック表示用スペースを配置します。
- 日付1: 日付1A, sp1
- 日付2: 日付2A, sp2
プラグイン設定
日付1A、日付2A は、編集画面表示時に最初に計算処理を行わせるため、ランクに「1」をセットします。
.js
OPTION: 循環参照を許可
// 日付1A DATE (hide, rank:1)
IF(
OR(EV_INFO("cate")="create",
IN(EV_INFO("type"),
"app.record.edit.show","mobile.app.record.edit.show")),
日付1,日付1A
)
// sp1:(sp1) SPACER
IF(日付1!=日付1A,"日付1が更新されました")
// 日付2A DATE (hide, rank:1)
IF(
OR(EV_INFO("cate")="create",
IN(EV_INFO("type"),
"app.record.edit.show","mobile.app.record.edit.show")),
日付2,日付2A
)
// sp2:(sp2) SPACER
IF(日付2!=日付2A,"日付2が更新されました")
日付・文字列・数値、チェックボックス変更チェック
変更チェックする項目が多い場合は、各項目の値をまとめて保持します。
こちらでは、チェック表示用に文字列項目と文字列複数行を利用します。
配列で選択肢を持っているチェックボックスは、JOIN 関数で文字列に変換して比較します。
アプリ設定
各項目のチェック表示用文字列項目を配置します。
また各項目の値をまとめて保持する「更新チェック用」を配置します。
プラグイン設定
.js
OPTION: 循環参照を許可
// 日付1チェック SINGLE_LINE_TEXT
LET(dic,JSON_P(更新チェック用),
IF(DIC_ITEM(dic,"日付1")!=日付1,"日付1が更新されました")
)
// 日付2チェック SINGLE_LINE_TEXT
LET(dic,JSON_P(更新チェック用),
IF(DIC_ITEM(dic,"日付2")!=日付2,"日付2が更新されました")
)
// 文字列1チェック SINGLE_LINE_TEXT
LET(dic,JSON_P(更新チェック用),
IF(DIC_ITEM(dic,"文字列1")!=文字列1,"文字列1が更新されました")
)
// 数値1チェック SINGLE_LINE_TEXT
LET(dic,JSON_P(更新チェック用),
IF(DIC_ITEM(dic,"数値1")!=数値1,"数値1が更新されました")
)
// チェックボックス1チェック SINGLE_LINE_TEXT
LET(dic,JSON_P(更新チェック用),
IF(DIC_ITEM(dic,"チェックボックス1")!=JOIN(チェックボックス1,","),"チェックボックス1が更新されました")
)
// 更新項目 MULTI_LINE_TEXT
LET(
old,JSON_P(更新チェック用),
new, DIC(
"日付1",日付1,
"日付2",日付2,
"文字列1",文字列1,
"数値1",数値1,
"チェックボックス1",JOIN(チェックボックス1,",")
),
arr, DIC_MAP(old, key, val,
IF(DIC_ITEM(new,key)!=val,
"・"&key&"が更新されました"
)
),
JOIN(arr, NEWLINE(), 1)
)
// 更新チェック用 SINGLE_LINE_TEXT (rank:1)
IF(
OR(EV_INFO("cate")="create",
IN(EV_INFO("type"),
"app.record.edit.show","mobile.app.record.edit.show")),
JSON_S(DIC(
"日付1",日付1,
"日付2",日付2,
"文字列1",文字列1,
"数値1",数値1,
"チェックボックス1",JOIN(チェックボックス1,",")
)),
更新チェック用
)