#同じ開始日と期日でチケット作ることほぼ無いからね
RedmineをTODOっぽく使ってるマンです。
んで、使ってるうちにこんなことを思いました。
- 今日のお掃除チケット終了!じゃあ明日用にチケットコピーしようジャマイカ。
- あれ?コピーしたはずのチケットが見当たらない…。
- あ、開始日と期日を 1日ずらすの忘れてた 。
- 面倒くさいなあ…。
ということで記事タイトルのようなことをやりました。
#ビューカスタマイズプラグイン使うよ
ビューカスタマイズプラグインのインストールまでは下記でやってるので、この記事ではハショリます。
CentOS8にインストールしたRedmineにビューカスタマイズプラグイン導入
#設定はこんな感じ
パスのパターン で絞り込んでおくのが大事。
『このJSって別のページに悪影響あるかな?』を考えなくてよくなるです。
コード
$(function(){
var start_val_ = $('#issue_start_date').val();
var due_val_ = $('#issue_due_date').val();
//コピー元の値を確認できた方がいいから。
$('label[for="issue_start_date"]').text('開始日(元:' + start_val_.replace(/-/g, '/') + ')');
$('label[for="issue_due_date"]').text('期日(元:' + due_val_.replace(/-/g, '/') + ')');
var y_;
var m_;
var d_;
//チケットコピーは日次のTODOが多いから開始日と期日を+1日加算。
//開始日未設定のチケットをコピーすると、
//開始日の値は現在日付が自動でセットされるので、
//開始日の値が無い場合は考えないことにします。
//開始日
var start_date_ = new Date(start_val_);
start_date_.setDate(start_date_.getDate() + 1);
y_ = start_date_.getFullYear();
m_ = ("00" + (start_date_.getMonth()+1)).slice(-2);
d_ = ("00" + start_date_.getDate()).slice(-2);
$('#issue_start_date').val(y_ + "-" + m_ + "-" + d_);
//期日未設定のチケットをコピーした時に例外にならないように。
if(due_val_ == '') return;
//期日
var due_date_ = new Date(due_val_);
due_date_.setDate(due_date_.getDate() + 1);
y_ = due_date_.getFullYear();
m_ = ("00" + (due_date_.getMonth()+1)).slice(-2);
d_ = ("00" + due_date_.getDate()).slice(-2);
$('#issue_due_date').val(y_ + "-" + m_ + "-" + d_);
})
#有効にするとこんな感じ
年またぎと月またぎの時にちゃんと動作するか確認しました。
#蛇足
チケットを『日次』『週次』『月次』『年次』『不定期』に分類して、それぞれに対してチケットコピー時の加算日数を切り替えれば、もうちょっと便利になるかもです。
ビューカスタマイズプラグインはこういうプチ改良が手軽にできて便利です。
#バージョン
CentOS Linux release 8.3.2011
Redmine 4.0.6.stable
Chrome バージョン: 87.0.4280.141(Official Build) (64 ビット)