Commit f417a265d7783cb10e4b55556f5de9fd0a7c9696
1 parent
d4e070cf
Exists in
master
and in
4 other branches
Finalize milestones for Merge Requests
Showing
9 changed files
with
57 additions
and
25 deletions
Show diff stats
app/assets/javascripts/milestones.js.coffee
| @@ -5,3 +5,10 @@ $ -> | @@ -5,3 +5,10 @@ $ -> | ||
| 5 | $('.milestone-issue-filter li').toggleClass('active') | 5 | $('.milestone-issue-filter li').toggleClass('active') |
| 6 | $('.milestone-issue-filter tr[data-closed]').toggleClass('hide') | 6 | $('.milestone-issue-filter tr[data-closed]').toggleClass('hide') |
| 7 | false | 7 | false |
| 8 | + | ||
| 9 | + $('.milestone-merge-requests-filter tr[data-closed]').addClass('hide') | ||
| 10 | + | ||
| 11 | + $('.milestone-merge-requests-filter ul.nav li a').click -> | ||
| 12 | + $('.milestone-merge-requests-filter li').toggleClass('active') | ||
| 13 | + $('.milestone-merge-requests-filter tr[data-closed]').toggleClass('hide') | ||
| 14 | + false |
app/assets/stylesheets/common.scss
app/controllers/milestones_controller.rb
| @@ -31,7 +31,7 @@ class MilestonesController < ProjectResourceController | @@ -31,7 +31,7 @@ class MilestonesController < ProjectResourceController | ||
| 31 | 31 | ||
| 32 | def show | 32 | def show |
| 33 | @issues = @milestone.issues | 33 | @issues = @milestone.issues |
| 34 | - @users = @milestone.participants | 34 | + @users = UserDecorator.decorate(@milestone.participants) |
| 35 | @merge_requests = @milestone.merge_requests | 35 | @merge_requests = @milestone.merge_requests |
| 36 | 36 | ||
| 37 | respond_to do |format| | 37 | respond_to do |format| |
| @@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
| 1 | +class UserDecorator < ApplicationDecorator | ||
| 2 | + decorates :user | ||
| 3 | + | ||
| 4 | + def avatar_image size = 16 | ||
| 5 | + h.image_tag h.gravatar_icon(self.email, size), class: "avatar #{"s#{size}"}", width: size | ||
| 6 | + end | ||
| 7 | + | ||
| 8 | + def tm_of(project) | ||
| 9 | + project.team_member_by_id(self.id) | ||
| 10 | + end | ||
| 11 | +end |
app/helpers/projects_helper.rb
| @@ -10,5 +10,9 @@ module ProjectsHelper | @@ -10,5 +10,9 @@ module ProjectsHelper | ||
| 10 | def link_to_project project | 10 | def link_to_project project |
| 11 | link_to project.name, project | 11 | link_to project.name, project |
| 12 | end | 12 | end |
| 13 | + | ||
| 14 | + def tm_path team_member | ||
| 15 | + project_team_member_path(@project, team_member) | ||
| 16 | + end | ||
| 13 | end | 17 | end |
| 14 | 18 |
app/models/merge_request.rb
app/models/milestone.rb
| @@ -16,16 +16,20 @@ class Milestone < ActiveRecord::Base | @@ -16,16 +16,20 @@ 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 issues_percent_complete | ||
| 20 | - ((self.issues.closed.count * 100) / self.issues.count).abs | 19 | + def open_items_count |
| 20 | + self.issues.opened.count + self.merge_requests.opened.count | ||
| 21 | end | 21 | end |
| 22 | 22 | ||
| 23 | - def merge_requests_percent_complete | ||
| 24 | - ((self.merge_requests.closed.count * 100) / self.merge_requests.count).abs | 23 | + def closed_items_count |
| 24 | + self.issues.closed.count + self.merge_requests.closed.count | ||
| 25 | + end | ||
| 26 | + | ||
| 27 | + def total_items_count | ||
| 28 | + self.issues.count + self.merge_requests.count | ||
| 25 | end | 29 | end |
| 26 | 30 | ||
| 27 | def percent_complete | 31 | def percent_complete |
| 28 | - (issues_percent_complete + merge_requests_percent_complete) / 2 | 32 | + ((closed_items_count * 100) / total_items_count).abs |
| 29 | rescue ZeroDivisionError | 33 | rescue ZeroDivisionError |
| 30 | 100 | 34 | 100 |
| 31 | end | 35 | end |
app/views/milestones/_milestone.html.haml
| @@ -9,13 +9,13 @@ | @@ -9,13 +9,13 @@ | ||
| 9 | %small | 9 | %small |
| 10 | = milestone.expires_at | 10 | = milestone.expires_at |
| 11 | .row | 11 | .row |
| 12 | - .progress.progress-success.span4 | 12 | + .progress.progress-info.span4 |
| 13 | .bar{style: "width: #{milestone.percent_complete}%;"} | 13 | .bar{style: "width: #{milestone.percent_complete}%;"} |
| 14 | .span6 | 14 | .span6 |
| 15 | - if milestone.issues.any? | 15 | - if milestone.issues.any? |
| 16 | - = link_to project_issues_path(milestone.project, milestone_id: milestone.id), class: "padded" do | 16 | + = link_to project_issues_path(milestone.project, milestone_id: milestone.id), class: "btn very_small" do |
| 17 | %strong= pluralize milestone.issues.count, 'Issue' | 17 | %strong= pluralize milestone.issues.count, 'Issue' |
| 18 | 18 | ||
| 19 | - if milestone.merge_requests.any? | 19 | - if milestone.merge_requests.any? |
| 20 | - = link_to project_merge_requests_path(milestone.project, milestone_id: milestone.id), class: "padded" do | 20 | + = link_to project_merge_requests_path(milestone.project, milestone_id: milestone.id), class: "btn very_small" do |
| 21 | %strong= pluralize milestone.issues.count, 'Merge Request' | 21 | %strong= pluralize milestone.issues.count, 'Merge Request' |
app/views/milestones/show.html.haml
| @@ -31,10 +31,10 @@ | @@ -31,10 +31,10 @@ | ||
| 31 | %h5 | 31 | %h5 |
| 32 | Progress: | 32 | Progress: |
| 33 | %small | 33 | %small |
| 34 | - #{@milestone.issues.closed.count} closed | 34 | + #{@milestone.closed_items_count} closed |
| 35 | – | 35 | – |
| 36 | - #{@milestone.issues.opened.count} open | ||
| 37 | - .progress.progress-success | 36 | + #{@milestone.open_items_count} open |
| 37 | + .progress.progress-info | ||
| 38 | .bar{style: "width: #{@milestone.percent_complete}%;"} | 38 | .bar{style: "width: #{@milestone.percent_complete}%;"} |
| 39 | 39 | ||
| 40 | 40 | ||
| @@ -58,10 +58,9 @@ | @@ -58,10 +58,9 @@ | ||
| 58 | %span.badge.badge-info ##{issue.id} | 58 | %span.badge.badge-info ##{issue.id} |
| 59 | – | 59 | – |
| 60 | = link_to_gfm truncate(issue.title, length: 60), [@project, issue] | 60 | = link_to_gfm truncate(issue.title, length: 60), [@project, issue] |
| 61 | - %br | ||
| 62 | 61 | ||
| 63 | .span6 | 62 | .span6 |
| 64 | - %table.milestone-merge_requests-filter | 63 | + %table.milestone-merge-requests-filter |
| 65 | %thead | 64 | %thead |
| 66 | %th | 65 | %th |
| 67 | %ul.nav.nav-pills | 66 | %ul.nav.nav-pills |
| @@ -74,15 +73,13 @@ | @@ -74,15 +73,13 @@ | ||
| 74 | %span.badge.badge-info ##{merge_request.id} | 73 | %span.badge.badge-info ##{merge_request.id} |
| 75 | – | 74 | – |
| 76 | = link_to_gfm truncate(merge_request.title, length: 60), [@project, merge_request] | 75 | = link_to_gfm truncate(merge_request.title, length: 60), [@project, merge_request] |
| 77 | - %br | ||
| 78 | 76 | ||
| 79 | - .span6 | ||
| 80 | - %table | ||
| 81 | - %thead | ||
| 82 | - %th Participants | ||
| 83 | - - @users.each do |user| | ||
| 84 | - %tr | ||
| 85 | - %td | ||
| 86 | - = image_tag gravatar_icon(user.email, 24), width: "24" | ||
| 87 | - | ||
| 88 | - = user.name | 77 | +%hr |
| 78 | +%h6 Participants: | ||
| 79 | +%div | ||
| 80 | + - @users.each do |user| | ||
| 81 | + = link_to tm_path(user.tm_of(@project)), class: 'float-link' do | ||
| 82 | + = user.avatar_image | ||
| 83 | + = user.name | ||
| 84 | + | ||
| 85 | +.clearfix |