0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

rex0220 計算式プラグイン 項目が変更されたか表示

Last updated at Posted at 2025-02-06

計算式プラグインで、項目が変更されたかの表示を行ってみます。

概要

日付・文字列・数値、チェックボックスなどが変更された場合に、表示してみます。
編集画面表示に変更チェックをリセットして、表示します。

  • 日付変更チェック

2025-02-06_21h01_14.png

  • 日付・文字列・数値、チェックボックス変更チェック
    • 文字列複数行に変更項目をまとめて表示

2025-02-06_21h02_29.png

日付変更チェック

スペース項目に日付変更メッセージを表示します。

アプリ設定

日付項目のチェック用に、それぞれ日付項目とチェック表示用スペースを配置します。

  • 日付1: 日付1A, sp1
  • 日付2: 日付2A, sp2

2025-02-06_21h10_27.png

プラグイン設定

日付1A、日付2A は、編集画面表示時に最初に計算処理を行わせるため、ランクに「1」をセットします。

2025-02-06_21h08_41.png

.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 関数で文字列に変換して比較します。

アプリ設定

各項目のチェック表示用文字列項目を配置します。
また各項目の値をまとめて保持する「更新チェック用」を配置します。

2025-02-06_21h16_59.png

プラグイン設定

2025-02-06_21h15_49.png

.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,",")
   )),
  更新チェック用
)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?