Commit f417a265d7783cb10e4b55556f5de9fd0a7c9696

Authored by randx
1 parent d4e070cf

Finalize milestones for Merge Requests

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
@@ -675,3 +675,11 @@ pre { @@ -675,3 +675,11 @@ pre {
675 margin-bottom: 0; 675 margin-bottom: 0;
676 margin-top:4px; 676 margin-top:4px;
677 } 677 }
  678 +
  679 +.float-link {
  680 + float:left;
  681 + margin-right:15px;
  682 + .s16 {
  683 + margin-right:5px;
  684 + }
  685 +}
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|
app/decorators/user_decorator.rb 0 → 100644
@@ -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
1 require Rails.root.join("app/models/commit") 1 require Rails.root.join("app/models/commit")
  2 +require Rails.root.join("app/roles/static_model")
2 3
3 class MergeRequest < ActiveRecord::Base 4 class MergeRequest < ActiveRecord::Base
4 include IssueCommonality 5 include IssueCommonality
app/models/milestone.rb
@@ -16,16 +16,20 @@ class Milestone &lt; ActiveRecord::Base @@ -16,16 +16,20 @@ 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 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 &ndash; 35 &ndash;
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 &ndash; 59 &ndash;
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 &ndash; 74 &ndash;
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 - &nbsp;  
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