プロジェクト

全般

プロフィール

QA #761

未完了

チケット一覧画面のチケットを期日で色分けしたい(期日数日前)

megumi nakayama さんが約6年前に追加. 約6年前に更新.

ステータス:
回答済
優先度:
通常
担当者:
カテゴリ:
UI
対象バージョン:
-
開始日:
2018/02/06
期日:
進捗率:

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;
}

奈良 裕記 さんが約6年前に更新

  • 説明 を更新 (差分)
  • カテゴリUI にセット
  • ステータス新規 から 回答済 に変更
  • 担当者奈良 裕記 にセット

奈良 裕記 さんが約6年前に更新

他の形式にエクスポート: Atom PDF