Redmine 5.1環境で「View Customize Plugin」を使用し、チケットの作成日に基づいてカスタムフィールド「曜日」を自動的に設定する方法のメモです。

前提

1. View Customize Pluginのインストール

View Customize Pluginをまだインストールしていない場合は、こちらを参照してください。

プラグインのインストールが完了すると、管理メニューから「View Customize」の設定が利用可能になります。

2. カスタムフィールド「曜日」を作成する

  1. 管理メニューから「カスタムフィールド」を選択。
  2. チケット用カスタムフィールドを作成。
  3. フィールド名を「曜日」とし、以下の設定を行います:
    • 形式: リスト
    • 値月曜日
      火曜日
      水曜日
      木曜日
      金曜日
      土曜日
      日曜日
    • 必須: 任意

カスタムフィールドを作成したら、任意のトラッカーやプロジェクトにこのフィールドを設定してください。さらに、フィールドID(例: 6)を確認してください。このIDはスクリプトで使用します。

スクリプトの設定

1. View Customizeで新しいカスタマイズを作成

  1. 管理メニューから「View Customize」を選択。
  2. 「新しいカスタマイズを追加」をクリック。
  3. 以下の内容を設定:
    • 挿入位置: 全ページのヘッダ
    • 種別: JavaScript
    • コメント: 作成日に基づく曜日設定

2. スクリプトを記述する

以下のスクリプトを入力します。カスタムフィールドID(例: 6)は環境に合わせて変更してください。

$(document).ready(function () {
   // 曜日フィールドと作成日フィールドの取得
   const weekdayField = $('#issue_custom_field_values_6');
   const startDateField = $('#issue_start_date');

   // カスタムフィールドが存在する場合のみ処理を実行
   if (weekdayField.length > 0 && startDateField.length > 0) {
       // 作成日フィールドが変更されたときに曜日を更新
       startDateField.on('change', function () {
           const startDate = startDateField.val(); // 作成日(yyyy-mm-dd形式)
           if (!startDate) return;

           // 作成日から曜日を計算
           const date = new Date(startDate);
           const weekdays = ['月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日', '日曜日'];
           const dayOfWeek = weekdays[(date.getDay() + 6) % 7]; // 月曜日始まりに調整

           // 計算結果を曜日フィールドに設定
           weekdayField.val(dayOfWeek).change(); // 値を設定して変更を反映
      });

       // 初期表示時にも作成日があれば曜日を計算
       startDateField.trigger('change');
  }
});

動作確認

  1. 任意のトラッカーまたはプロジェクトで「曜日」カスタムフィールドが設定されていることを確認します。
  2. Redmineのチケット作成画面を開きます。
  3. 「曜日」フィールドがあることと、それが開いた日付であることを確認できれば動作完了です。