以前につづいて、既存アプリの改修を想定した場合のフィールドについて作文しようと思います。
または
そうすると、もともと 値がAだった文書ではこんな感じで表示されます。
やはりあるあるネタかも知れません。本作文で扱うのはチェックボックスやラジオボタンの選択肢について。
元々使ってるNotesアプリで、元々使ってる項目で、
でも、時の流れとともに、選択肢が途中から変更されるという場合があると思います。
- 「以前は A, B, Cという選択肢だったけど、今度から選択肢は C, D, E だ。」
BEFORE
AFTER
こうした場合、最新の選択肢リストを
- C
D
E
に、変更するだけだと、
過去から存在する文書には、昔選択されたAやBの値が残っていても、表示されません。
さらに、うっかり過去の文書を編集して保存すると、AやBの値はなくなってしまいます。
こうした事態を防ぐために、途中から選択肢が変わった場合には次のような式を使っています。
- @Trim(@Unique("C":"D":"E":@ThisValue))
- list:="C":"D":"E";
@If(@IsMember(@ThisValue; list); list; @Trim(@ThisValue:list))
そうすると、もともと 値がAだった文書ではこんな感じで表示されます。
(↑後者の式の場合。前者の式では"A"が最後になります)
これで文書内の値だけが選択肢に追加されます。
@Trimは、新規作成時などに「値なし」が選択肢として表示されるのを防止のため。
図のように、値がAだった文書でBは選択肢として表示されません。また、C,D,Eいずれかを選択して保存した場合には、次に開いたときにはもうAは選択肢として表示されなくなります。
もともとAやBが選ばれてない文書や新規文書でも選択肢はC,D,Eだけの表示になります。
まとめとして。
- 「以前は A, B, Cという選択肢だったけど、
今度から選択肢は C, D, E だ。」
設計画面側のBEFORE - AFTER はこんな感じです。
BEFORE
AFTER (As-is / Not good enough )
AFTER (To-be / Good)
AFTER (As-is / Not good enough )
AFTER (To-be / Good)