LoginSignup
3
4

More than 5 years have passed since last update.

redmine_issue_checklistで、あるトラッカーだけチェック状況に応じて進捗率が連動する設定にしてみた

Last updated at Posted at 2017-04-12

redmine_issue_checklist プラグインで
あるトラッカーの場合は、進捗率が連動する様に修正してみました。
https://github.com/Restream/redmine_issue_checklist

checklist.PNG

元々、チェック状況に応じて進捗率を自動で変更するオプションがあるのですが、全てのチケットに対して有効になってしまうので、結局、機能をOFFにして使用しています。
基本的に、覚え書きとか、抜け漏れ防止の用途にチェックリストを使っているので、それがそのまま進捗になる事が無いのでOFFの方が良かったのですが、あるトラッカーでは、チェック状況=進捗率としたくなって、少し修正してみました。

app\controllers\issue_checklists_controller.rb
22行目
if (Setting.issue_done_ratio == 'issue_field') && RedmineIssueChecklist.settings[:issue_done_ratio]
  done_checklist                   = @checklist_item.issue.checklist.map { |c| c.is_done ? 1 : 0 }
  @checklist_item.issue.done_ratio = (done_checklist.count(1) * 10) / done_checklist.count * 10
  @checklist_item.issue.save
end

↓↓↓↓↓↓↓↓

# トラッカーID3 (サポート)以外は、チェックリストでの進捗更新をしない
if (Setting.issue_done_ratio == 'issue_field')  && (@checklist_item.issue.tracker.id == 3) && RedmineIssueChecklist.settings[:issue_done_ratio]
  done_checklist                   = @checklist_item.issue.checklist.map { |c| c.is_done ? 1 : 0 }
  if (@checklist_item.issue.checklist.count != 0)
    @checklist_item.issue.done_ratio = ((done_checklist.count(1) * 10).to_f / @checklist_item.issue.checklist.count).round * 10
  end
  @checklist_item.issue.save
end

※ついでに、0除算しない様にバカ除け追加と、計算が切り捨てだったのを四捨五入に修正しています。

app\models\issue_checklist.rb
12行目
# after_save :recalc_issue_done_ratio 
↓↓↓↓↓↓↓
after_save :recalc_issue_done_ratio  

26行目
def recalc_issue_done_ratio
  return false if (Setting.issue_done_ratio != 'issue_field') || !RedmineIssueChecklist.settings[:issue_done_ratio]
  done_checklist   = issue.checklist.map { |c| c.is_done ? 1 : 0 }
  issue.done_ratio = (done_checklist.count(1) * 10) / done_checklist.count * 10
  issue.save
end
↓↓↓↓↓↓↓↓
# トラッカーID3 (サポート)以外は、チェックリストでの進捗更新をしない
def recalc_issue_done_ratio
  return false if (Setting.issue_done_ratio != 'issue_field') || (issue.tracker.id != 3) || !RedmineIssueChecklist.settings[:issue_done_ratio]
  done_checklist   = issue.checklist.map { |c| c.is_done ? 1 : 0 }
  if (issue.checklist.count != 0)
    issue.done_ratio = ((done_checklist.count(1) * 10).to_f / issue.checklist.count).round * 10
  end
  issue.save
end

bitnami 3.3.0, ie11, redmine_issue_checklist v2.1.0

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4