Commit d4e070cfadcccfe503402dd5d0524ca102d372d4
1 parent
ecdf778e
Exists in
master
and in
4 other branches
Improve styles. Add merge request completness to milestone percentage
Showing
4 changed files
with
37 additions
and
23 deletions
Show diff stats
app/assets/stylesheets/common.scss
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 < ActiveRecord::Base | @@ -16,8 +16,16 @@ class Milestone < 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 | - | 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' |