Redmine 5.1環境で「View Customize Plugin」を使用し、チケットの作成日に基づいてカスタムフィールド「曜日」を自動的に設定する方法のメモです。
前提
1. View Customize Pluginのインストール
View Customize Pluginをまだインストールしていない場合は、こちらを参照してください。
プラグインのインストールが完了すると、管理メニューから「View Customize」の設定が利用可能になります。
2. カスタムフィールド「曜日」を作成する
- 管理メニューから「カスタムフィールド」を選択。
- チケット用カスタムフィールドを作成。
- フィールド名を「曜日」とし、以下の設定を行います:
- 形式: リスト
- 値月曜日
火曜日
水曜日
木曜日
金曜日
土曜日
日曜日 - 必須: 任意
カスタムフィールドを作成したら、任意のトラッカーやプロジェクトにこのフィールドを設定してください。さらに、フィールドID(例: 6
)を確認してください。このIDはスクリプトで使用します。
スクリプトの設定
1. View Customizeで新しいカスタマイズを作成
- 管理メニューから「View Customize」を選択。
- 「新しいカスタマイズを追加」をクリック。
- 以下の内容を設定:
- 挿入位置:
全ページのヘッダ
- 種別: 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');
}
});
動作確認
- 任意のトラッカーまたはプロジェクトで「曜日」カスタムフィールドが設定されていることを確認します。
- Redmineのチケット作成画面を開きます。
- 「曜日」フィールドがあることと、それが開いた日付であることを確認できれば動作完了です。