Commit d4e070cfadcccfe503402dd5d0524ca102d372d4

Authored by randx
1 parent ecdf778e

Improve styles. Add merge request completness to milestone percentage

app/assets/stylesheets/common.scss
@@ -670,3 +670,8 @@ pre { @@ -670,3 +670,8 @@ pre {
670 padding:0; 670 padding:0;
671 } 671 }
672 } 672 }
  673 +
  674 +.milestone .progress {
  675 + margin-bottom: 0;
  676 + margin-top:4px;
  677 +}
app/contexts/merge_requests_load_context.rb
  1 +# Build collection of Merge Requests
  2 +# based on filtering passed via params for @project
1 class MergeRequestsLoadContext < BaseContext 3 class MergeRequestsLoadContext < BaseContext
2 def execute 4 def execute
3 type = params[:f] 5 type = params[:f]
4 6
5 - merge_requests = @project.merge_requests 7 + merge_requests = project.merge_requests
6 8
7 merge_requests = case type 9 merge_requests = case type
8 when 'all' then merge_requests 10 when 'all' then merge_requests
9 when 'closed' then merge_requests.closed 11 when 'closed' then merge_requests.closed
10 when 'assigned-to-me' then merge_requests.opened.assigned(current_user) 12 when 'assigned-to-me' then merge_requests.opened.assigned(current_user)
11 else merge_requests.opened 13 else merge_requests.opened
12 - end.page(params[:page]).per(20) 14 + end
13 15
14 - merge_requests.includes(:author, :project).order("closed, created_at desc")  
15 -  
16 - @merge_requests = merge_requests 16 + merge_requests = merge_requests.page(params[:page]).per(20)
  17 + merge_requests = merge_requests.includes(:author, :project).order("closed, created_at desc")
17 18
18 # Filter by specific assignee_id (or lack thereof)? 19 # Filter by specific assignee_id (or lack thereof)?
19 if params[:assignee_id].present? 20 if params[:assignee_id].present?
20 - @merge_requests = merge_requests.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id])) 21 + merge_requests = merge_requests.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id]))
21 end 22 end
22 23
23 # Filter by specific milestone_id (or lack thereof)? 24 # Filter by specific milestone_id (or lack thereof)?
24 if params[:milestone_id].present? 25 if params[:milestone_id].present?
25 - @merge_requests = merge_requests.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id])) 26 + merge_requests = merge_requests.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))
26 end 27 end
27 - @merge_requests 28 +
  29 + merge_requests
28 end 30 end
29 end 31 end
app/models/milestone.rb
@@ -16,8 +16,16 @@ class Milestone &lt; ActiveRecord::Base @@ -16,8 +16,16 @@ class Milestone &lt; ActiveRecord::Base
16 User.where(id: issues.pluck(:assignee_id)) 16 User.where(id: issues.pluck(:assignee_id))
17 end 17 end
18 18
19 - def percent_complete 19 + def issues_percent_complete
20 ((self.issues.closed.count * 100) / self.issues.count).abs 20 ((self.issues.closed.count * 100) / self.issues.count).abs
  21 + end
  22 +
  23 + def merge_requests_percent_complete
  24 + ((self.merge_requests.closed.count * 100) / self.merge_requests.count).abs
  25 + end
  26 +
  27 + def percent_complete
  28 + (issues_percent_complete + merge_requests_percent_complete) / 2
21 rescue ZeroDivisionError 29 rescue ZeroDivisionError
22 100 30 100
23 end 31 end
app/views/milestones/_milestone.html.haml
1 %li{class: "milestone", id: dom_id(milestone) } 1 %li{class: "milestone", id: dom_id(milestone) }
2 .right 2 .right
3 - - if milestone.issues.any?  
4 - %span.btn.small.disabled.grouped= pluralize milestone.issues.count, 'issues'  
5 - - if milestone.issues.count > 0  
6 - = link_to 'Browse Issues', project_issues_path(milestone.project, milestone_id: milestone.id), class: "btn small grouped"  
7 - - if milestone.merge_requests.any?  
8 - %span.btn.small.disabled.grouped= pluralize milestone.issues.count, 'Merge Requests'  
9 - - if milestone.merge_requests.count > 0  
10 - = link_to 'Browse Merge Requests', project_merge_requests_path(milestone.project, milestone_id: milestone.id), class: "btn small grouped"  
11 - if can? current_user, :admin_milestone, milestone.project 3 - if can? current_user, :admin_milestone, milestone.project
12 - = link_to 'Edit', edit_project_milestone_path(milestone.project, milestone), class: "btn small edit-milestone-link grouped" 4 + = link_to edit_project_milestone_path(milestone.project, milestone), class: "btn small edit-milestone-link grouped" do
  5 + %i.icon-edit
  6 + Edit
13 %h4 7 %h4
14 - = link_to_gfm truncate(milestone.title, length: 100), project_milestone_path(milestone.project, milestone), class: "row_title" 8 + = link_to_gfm truncate(milestone.title, length: 100), project_milestone_path(milestone.project, milestone)
15 %small 9 %small
16 = milestone.expires_at 10 = milestone.expires_at
17 - %br  
18 - .progress.progress-success.span3 11 + .row
  12 + .progress.progress-success.span4
19 .bar{style: "width: #{milestone.percent_complete}%;"} 13 .bar{style: "width: #{milestone.percent_complete}%;"}
  14 + .span6
  15 + - if milestone.issues.any?
  16 + = link_to project_issues_path(milestone.project, milestone_id: milestone.id), class: "padded" do
  17 + %strong= pluralize milestone.issues.count, 'Issue'
20 18
21 -  
22 - &nbsp; 19 + - if milestone.merge_requests.any?
  20 + = link_to project_merge_requests_path(milestone.project, milestone_id: milestone.id), class: "padded" do
  21 + %strong= pluralize milestone.issues.count, 'Merge Request'