BigW Consortium Gitlab

milestones_helper.rb 2.07 KB
Newer Older
1 2 3
module MilestonesHelper
  def milestones_filter_path(opts = {})
    if @project
Vinnie Okada committed
4
      namespace_project_milestones_path(@project.namespace, @project, opts)
5 6
    elsif @group
      group_milestones_path(@group, opts)
Douwe Maan committed
7 8
    else
      dashboard_milestones_path(opts)
9 10
    end
  end
11

12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
  def milestones_label_path(opts = {})
    if @project
      namespace_project_issues_path(@project.namespace, @project, opts)
    elsif @group
      issues_group_path(@group, opts)
    else
      issues_dashboard_path(opts)
    end
  end

  def milestones_browse_issuables_path(milestone, type:)
    opts = { milestone_title: milestone.title }

    if @project
      polymorphic_path([@project.namespace.becomes(Namespace), @project, type], opts)
    elsif @group
      polymorphic_url([type, @group], opts)
    else
      polymorphic_url([type, :dashboard], opts)
    end
  end

  def milestone_issues_by_label_count(milestone, label, state:)
    milestone.issues.with_label(label.title).send(state).size
  end

38 39 40
  def milestone_progress_bar(milestone)
    options = {
      class: 'progress-bar progress-bar-success',
41
      style: "width: #{milestone.percent_complete(current_user)}%;"
42 43 44 45 46 47
    }

    content_tag :div, class: 'progress' do
      content_tag :div, nil, options
    end
  end
48 49 50 51 52 53 54 55 56

  def projects_milestones_options
    milestones =
      if @project
        @project.milestones
      else
        Milestone.where(project_id: @projects)
      end.active

57
    epoch = DateTime.parse('1970-01-01')
58
    grouped_milestones = GlobalMilestone.build_collection(milestones)
59 60
    grouped_milestones.sort_by { |x| x.due_date.nil? ? epoch : x.due_date }
  end
61

62 63 64 65 66 67
  def milestones_filter_dropdown_path
    if @project
      namespace_project_milestones_path(@project.namespace, @project, :json)
    else
      milestones_dashboard_path(:json)
    end
68
  end
69 70

  def milestone_remaining_days(milestone)
71
    if milestone.expired?
72
      content_tag(:strong, 'expired')
73 74
    elsif milestone.due_date
      days    = milestone.remaining_days
75 76 77 78
      content = content_tag(:strong, days)
      content << " #{'day'.pluralize(days)} remaining"
    end
  end
79
end