milestoneish.rb 1.1 KB
Newer Older
R
Rubén Dávila 已提交
1
module Milestoneish
2
  def closed_items_count(user)
3
    issues_visible_to_user(user).closed.size + merge_requests.closed_and_merged.size
R
Rubén Dávila 已提交
4 5
  end

6
  def total_items_count(user)
7
    issues_visible_to_user(user).size + merge_requests.size
R
Rubén Dávila 已提交
8 9
  end

10
  def complete?(user)
11
    total_items_count(user) > 0 && total_items_count(user) == closed_items_count(user)
R
Rubén Dávila 已提交
12 13
  end

14
  def percent_complete(user)
15
    ((closed_items_count(user) * 100) / total_items_count(user)).abs
R
Rubén Dávila 已提交
16 17 18 19 20 21 22 23 24
  rescue ZeroDivisionError
    0
  end

  def remaining_days
    return 0 if !due_date || expired?

    (due_date - Date.today).to_i
  end
25

V
Valery Sizov 已提交
26 27 28 29 30 31
  def elapsed_days
    return 0 if !start_date || start_date.future?

    (Date.today - start_date).to_i
  end

32
  def issues_visible_to_user(user)
33 34
    issues.visible_to_user(user)
  end
V
Valery Sizov 已提交
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

  def upcoming?
    start_date && start_date.future?
  end

  def expires_at
    if due_date
      if due_date.past?
        "expired on #{due_date.to_s(:medium)}"
      else
        "expires on #{due_date.to_s(:medium)}"
      end
    end
  end

  def expired?
    due_date && due_date.past?
  end
R
Rubén Dávila 已提交
53
end