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 |