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 | 3 | class MergeRequestsLoadContext < BaseContext |
| 2 | 4 | def execute |
| 3 | 5 | type = params[:f] |
| 4 | 6 | |
| 5 | - merge_requests = @project.merge_requests | |
| 7 | + merge_requests = project.merge_requests | |
| 6 | 8 | |
| 7 | 9 | merge_requests = case type |
| 8 | 10 | when 'all' then merge_requests |
| 9 | 11 | when 'closed' then merge_requests.closed |
| 10 | 12 | when 'assigned-to-me' then merge_requests.opened.assigned(current_user) |
| 11 | 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 | 19 | # Filter by specific assignee_id (or lack thereof)? |
| 19 | 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 | 22 | end |
| 22 | 23 | |
| 23 | 24 | # Filter by specific milestone_id (or lack thereof)? |
| 24 | 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 | 27 | end |
| 27 | - @merge_requests | |
| 28 | + | |
| 29 | + merge_requests | |
| 28 | 30 | end |
| 29 | 31 | end | ... | ... |
app/models/milestone.rb
| ... | ... | @@ -16,8 +16,16 @@ class Milestone < ActiveRecord::Base |
| 16 | 16 | User.where(id: issues.pluck(:assignee_id)) |
| 17 | 17 | end |
| 18 | 18 | |
| 19 | - def percent_complete | |
| 19 | + def issues_percent_complete | |
| 20 | 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 | 29 | rescue ZeroDivisionError |
| 22 | 30 | 100 |
| 23 | 31 | end | ... | ... |
app/views/milestones/_milestone.html.haml
| 1 | 1 | %li{class: "milestone", id: dom_id(milestone) } |
| 2 | 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 | 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 | 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 | 9 | %small |
| 16 | 10 | = milestone.expires_at |
| 17 | - %br | |
| 18 | - .progress.progress-success.span3 | |
| 11 | + .row | |
| 12 | + .progress.progress-success.span4 | |
| 19 | 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' | ... | ... |