「非表示」の挙動と従来挙動への戻し方
Ver.1.4.10.0 で、項目を「非表示」にしたときの挙動が「編集画面だけで非表示」から「すべての画面で非表示」に変わりました。このページでは、変更の中身と、サーバースクリプトで従来の挙動に戻す方法を説明します。
対象バージョン
Ver.1.4.10.2 で以前の挙動に差し戻されました。このページの対応が必要なのは 1.4.10.0 と 1.4.10.1 を使っている場合だけ です。
挙動の違い
| バージョン | 項目を非表示にしたときの挙動 |
|---|---|
| 1.4.10.0 より前 | 編集画面の中だけで非表示になり、一覧などでは表示される |
| 1.4.10.0 / 1.4.10.1 | すべての画面で非表示になる |
| 1.4.10.2 以降 | 以前の挙動に差し戻し |
変更の原因
Ver.1.4.10.0 のコミット で、テナント・組織・グループ・ユーザー・招待履歴・サイト・記録テーブル・期限付きテーブル・Wiki・ダッシュボードの各モデルに同じ変更が入っています。記録テーブルの例は次のとおりです。
- if (serverScriptModelColumn?.Hide == true)
+ if (serverScriptModelColumn?.Hide ?? column.Hide == true)- 変更前: サーバースクリプトで
Hide = trueにしたときだけ非表示になる - 変更後: サーバースクリプトで値を変更しなかったときは、項目ごとの表示・非表示の設定が適用される
確認したソースでは、この判定は serverScriptModelColumn?.HideChanged == true && serverScriptModelColumn?.Hide == true になっており(IssueUtilities.cs)、サーバースクリプトで明示的に Hide = true にしたときだけ一覧のセルが空になります。1.4.10.2 以降の差し戻し後の挙動です。
従来の挙動に戻す
サーバースクリプトは本体の処理の後に実行されます。そのため、「編集画面以外ではサーバースクリプト側で非表示を解除し、編集画面では項目の非表示設定を使う」ようにすれば、従来の挙動を再現できます。
1 つのサイト・1 つの項目だけ戻す
分類A(ClassA)を対象にする場合の例です。条件は「行表示の前」にします。
//「行表示の前」に入れる
columns.ClassA.Hide = (context.Action === 'edit' ? columns.ClassA.Hide : false);すべてのサイトに適用する(拡張サーバースクリプト)
サイトごとに設定するのは手間なので、拡張サーバースクリプト を使うと全サイトにまとめて適用できます。マニュアルの「スクリプトを外部ファイルから読み込む」の方法で、定義とコードを別ファイルに分けて配置します。
{
"Name": "1.4.9.2以前の非表示の挙動に戻すスクリプト",
"BeforeOpeningRow": true,
"Body": "// Write an arbitrary script."
}try {
if(context.Action !== 'edit') {
for (let column of columns) {
column.Value.Hide = false;
}
}
} catch (e) {
context.Log(e.stack);
}配置したら、プロセスを再起動してください。