個人メモとして利用しているRedmine。ステータスに応じて進捗率を設定してしまうと、トラッカーが追えなくなるため、以下のカスタマイズを行いました。

スクリプトの内容

  1. Redmineに管理者権限でログインします。
    1. 管理>表示のカスタマイズに進みます。
    2. 新しい表示のカスタマイズを選択し、
      1. パスのパターン:空白
      2. 挿入位置:全ページのヘッダ
      3. 種別:JavaScript
      4. コード
$(document).on('change', '#issue_status_id', function () {
 const closedStatuses = [5, 6]; // 閉じられたステータスIDを指定(例: 5: 完了, 6: 却下)
 const selectedStatus = parseInt($(this).val(), 10);

 // 元の進捗率を保存するための変数
 let originalDoneRatio = $('#issue_done_ratio').data('original-done-ratio');

 if (!originalDoneRatio) {
   // 初回実行時に元の進捗率を保存
   originalDoneRatio = $('#issue_done_ratio').val();
   $('#issue_done_ratio').data('original-done-ratio', originalDoneRatio);
}

 if (closedStatuses.includes(selectedStatus)) {
   $('#issue_done_ratio').val('100'); // 進捗率を100%に設定
} else {
   // 元の進捗率に戻す
   $('#issue_done_ratio').val(originalDoneRatio);
}
});

動作の解説

  1. チケットのステータスが変更されると、指定された閉じられたステータスIDの場合は、自動で進捗率が100%に変更されます。
  2. その他のステータスに変更された場合は、初回に保存した元の進捗率に戻されます。

これで、進捗率を維持しつつステータスの変更が可能になります。