Skip to content

「非表示」の挙動と従来挙動への戻し方 ​

第5版作成 最終更新 (日本時間)
対応バージョンPleasanter 1.4.10.0 〜 1.4.10.1確認バージョン1.4.10.01.4.10.11.5.8.1

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・ダッシュボードの各モデルに同じ変更が入っています。記録テーブルの例は次のとおりです。

diff
- 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)を対象にする場合の例です。条件は「行表示の前」にします。

js
//「行表示の前」に入れる
columns.ClassA.Hide = (context.Action === 'edit' ? columns.ClassA.Hide : false);

すべてのサイトに適用する(拡張サーバースクリプト) ​

サイトごとに設定するのは手間なので、拡張サーバースクリプト を使うと全サイトにまとめて適用できます。マニュアルの「スクリプトを外部ファイルから読み込む」の方法で、定義とコードを別ファイルに分けて配置します。

json
{
    "Name": "1.4.9.2以前の非表示の挙動に戻すスクリプト",
    "BeforeOpeningRow": true,
    "Body": "// Write an arbitrary script."
}
js
try {
 if(context.Action !== 'edit') {
        for (let column of columns) {
            column.Value.Hide = false;
        }
    }
} catch (e) {
    context.Log(e.stack);
}

配置したら、プロセスを再起動してください。

関連ページ ​

変更履歴

第5版記事の確認版を繰り返す表現を整理する
第4版「機能の仕様と使いこなし」「スクリプト」「サーバースクリプト」に対応バージョンを表示
第3版「機能の仕様と使いこなし」を 1.5.8.1 のソースで検証して修正
第2版記事のファイル名に並び順の番号を付け、元記事リンクを frontmatter の sources に移行
第1版「機能の仕様と使いこなし」セクションの記事を追加