2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プリザンターの「非表示」の挙動を従来の挙動に戻す方法

Last updated at Posted at 2024-11-15

11月18日に公開されたVer.1.4.10.2で以前の挙動に差し戻されたので、1.4.10.0と1.4.10.1を使用している場合以外は、本記事の対応は不要です。

11月12日に公開されたVer.1.4.10.0で項目の非表示に関する挙動が変更されました。

どんな挙動に

Ver.1.4.10.0までの挙動

項目を非表示にすると編集画面の中だけで非表示になり、一覧などでは表示されていた。

Ver.1.4.10.0からの挙動

項目を非表示にすると全ての画面で非表示になる。

これはなかなかな破壊的な変更ですね。

どうしてこの挙動に?

この挙動の変更は、下記のソースが変更されたことに起因します。

中身を見てみよう

どの項目に対しても与えられている変更は同じなので、代表で記録テーブルへの変更を見てみましょう。

- if (serverScriptModelColumn?.Hide == true)
+ if (serverScriptModelColumn?.Hide ?? column.Hide == true)

変更前はサーバースクリプトでHide = trueとなっていたときのみに非表示となっていたのですが、変更後はサーバースクリプトで値が変更されなかったときは、項目毎の表示・非表示の設定が適用されるように変更されています。

従来の挙動に戻すには

これは簡単に変更出来ます。編集画面以外の場合は、サーバースクリプトで設定された値を使用して、編集画面の場合は、項目の非表示を使うようにするだけです。
サーバースクリプトで分類Aに対してこの挙動を再現すると

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

こうなります。これで、従来の挙動を再現することができました。

ただ、これだと全てのサイトでこの作業をする必要があってかなり面倒・・・。
こういう時は拡張サーバースクリプトを使えば、全てのサイトに適用することが出来ます。
1ファイルにまとめて書くことも出来るのですが、メンテ性の観点からコード部分のみを別ファイルに分離してみました。

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

これを、マニュアルの開発者向け機能:拡張機能:拡張サーバスクリプトの「スクリプトを外部ファイルから読み込む」に従って配置すればOKです。
配置完了後はプロセスの再起動を忘れずに。

まとめ

サーバースクリプトを使ってコードに加えられた変更の挙動を上書きすることが出来ました。サーバースクリプトはコード本体での処理の後から実行されることを押さえておくと、今回の様なコード本体に加えられた変更の挙動を上書きしたり出来るので、かなり便利です。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?