QA #761
未完了チケット一覧画面のチケットを期日で色分けしたい(期日数日前)
0%
説明
■現象/要望¶
チケット一覧画面のチケットを期日で色分けしたい(期日数日前)
期日超過分の表示色変更方法は既にあるが、期日数日前分から識別し易くしたい。
■解決策¶
app/model/issue.rbの修正とCSSの追加で対応可能
https://redmine.tokyo/issues/761#note-3
但し、実用化には休日の処理が必要になると思われる。(+各社内カレンダへの対応 #236 )
model/issue.rbの修正点
期限切れを判定する def overdueの数日前版を追加し、CSS出力を追加すれば良い。
但し、既存のoverdueと同時には出力しない様にした。(同時出力時の上書き考慮)
■対応状況¶
ソース変更で対応
■補足¶
はじめまして。 チケット一覧画面において、チケットの期日が迫っている(期日の3日前など)ものや、期日が過ぎたものに関して、 色付けをして分かりやすくしたいのですが、何か良い方法はございますでしょうか。 期日超過の色付けについては既存のテーマ(farend_basic)などで対応可能ではありますが、 期日が迫っているものを認識しやすくしたいです。 ご教示のほどよろしくお願いいたします。
奈良 裕記 さんが約6年前に更新
チケット期日前に認識し易くしたいのは理解できます。
ちょっと考えてみました。
1.メールリマインダ機能の改造
期日が間近のチケットをメールで通知する(リマインダ機能)
http://redmine.jp/faq/issue/send_reminders/
期日が3日以内に到来するチケットを通知
bundle exec rake redmine:send_reminders days=3 RAILS_ENV=production
↑メール通知の代わりに、チケットを編集して、それにより表示調整する。
チケット進捗率を使っていなければ、これで実現できそうです。
<table class="progress progress-0"> の様にHTML出力されています。
↓このアプローチも面白そうです。
Redmineの進捗度バーに色付けすると捗る
https://qiita.com/hadakadenkyu/items/3387ef811cdf12695cd3
2.チケット表示時のCSS出力調整
Redmine本体のコード修正になりますが、
def overdue_3days_before?
を追加して出力調整する方法もありそう。
issues_helper.rb
# Returns a string of css classes that apply to the given issue
def css_issue_classes(issue)
s = "issue status-#{issue.status.position} priority-#{issue.priority.position}"
s << ' overdue' if issue.overdue?
s
end
app/models/issue.rb
# Returns true if the issue is overdue
def overdue?
!due_date.nil? && (due_date < Date.today)
end
megumi nakayama さんが約6年前に更新
ご回答いただきありがとうございます。
CSSで出力する方向で色々と検証してみたいと思います。
ご教示いただきありがとうございます。
奈良 裕記 さんが約6年前に更新
- 題名 を チケット一覧画面のチケットを期日で色分けしたい から チケット一覧画面のチケットを期日で色分けしたい(期日数日前) に変更
app/model/issue.rbとCSSの追加で実現できました。(3.4)
実用化には休日の処理が必要になりますね。(+各社内カレンダへの対応 #236 )
app/model/issue.rb
# Returns true if the issue is overdue
def overdue?
due_date.present? && (due_date < User.current.today) && !closed?
end
+ def overdue_after_days(after_days)
+ due_date.present? && (due_date < User.current.today.since(after_days.days)) && !overdue? && !closed?
+ end
+
# Is the amount of work done less than it should for the due date
def behind_schedule?
return false if start_date.nil? || due_date.nil?
...
# Returns a string of css classes that apply to the issue
def css_classes(user=User.current)
s = "issue tracker-#{tracker_id} status-#{status_id} #{priority.try(:css_classes)}"
s << ' closed' if closed?
s << ' overdue' if overdue?
+ s << ' overdue_after_3days' if overdue_after_days(3)
s << ' child' if child?
CSS追加(テーマかViewCustomize)
tr.issue.overdue_after_3days,
tr.issue.overdue_after_3days a,
tr.issue.overdue_after_3days a:link,
tr.issue.overdue_after_3days a:visited {
color: red;
}