Commit 2e839cee93bcbf3904f0aeb50206f555c340d672

Authored by Dmitriy Zaporozhets
1 parent b1bdd829

Fixed tests. Fixed overrided scope. Better usability for milestone view

app/assets/javascripts/milestones.js.coffee
... ... @@ -1,7 +0,0 @@
1   -$ ->
2   - $('.milestone-merge-requests-filter li[data-closed]').addClass('hide')
3   -
4   - $('.milestone-merge-requests-filter ul.nav li a').click ->
5   - $('.milestone-merge-requests-filter li').toggleClass('active')
6   - $('.milestone-merge-requests-filter li[data-closed]').toggleClass('hide')
7   - false
app/contexts/issues/list_context.rb
... ... @@ -8,7 +8,7 @@ module Issues
8 8 @issues = case params[:status]
9 9 when issues_filter[:all] then @project.issues
10 10 when issues_filter[:closed] then @project.issues.closed
11   - when issues_filter[:to_me] then @project.issues.assigned(current_user)
  11 + when issues_filter[:to_me] then @project.issues.assigned_to(current_user)
12 12 when issues_filter[:by_me] then @project.issues.authored(current_user)
13 13 else @project.issues.opened
14 14 end
... ...
app/models/concerns/issuable.rb
... ... @@ -22,8 +22,10 @@ module Issuable
22 22 scope :closed, -> { with_state(:closed) }
23 23 scope :of_group, ->(group) { where(project_id: group.project_ids) }
24 24 scope :of_user_team, ->(team) { where(project_id: team.project_ids, assignee_id: team.member_ids) }
25   - scope :assigned, ->(u) { where(assignee_id: u.id)}
  25 + scope :assigned_to, ->(u) { where(assignee_id: u.id)}
26 26 scope :recent, -> { order("created_at DESC") }
  27 + scope :assigned, -> { where("assignee_id IS NOT NULL") }
  28 + scope :unassigned, -> { where("assignee_id IS NULL") }
27 29  
28 30 delegate :name,
29 31 :email,
... ...
app/models/issue.rb
... ... @@ -28,8 +28,6 @@ class Issue < ActiveRecord::Base
28 28 scope :cared, ->(user) { where(assignee_id: user) }
29 29 scope :authored, ->(user) { where(author_id: user) }
30 30 scope :open_for, ->(user) { opened.assigned(user) }
31   - scope :assigned, -> { where("assignee_id IS NOT NULL") }
32   - scope :unassigned, -> { where("assignee_id IS NULL") }
33 31  
34 32 state_machine :state, initial: :opened do
35 33 event :close do
... ...
app/views/milestones/_issues.html.haml
1   -.span6
2   - .ui-box.milestone-issue-filter
3   - %h5.title= title
4   - %ul.well-list
5   - - issues.each do |issue|
6   - %li{data: {closed: issue.closed?}}
7   - = link_to [@project, issue] do
8   - %span.badge.badge-info ##{issue.id}
9   - –
10   - = link_to_gfm truncate(issue.title, length: 60), [@project, issue]
11 1 \ No newline at end of file
  2 +.ui-box
  3 + %h5.title= title
  4 + %ul.well-list
  5 + - issues.each do |issue|
  6 + %li
  7 + = link_to [@project, issue] do
  8 + %span.badge{class: issue.closed? ? 'badge-important' : 'badge-info'} ##{issue.id}
  9 + = link_to_gfm truncate(issue.title, length: 60), [@project, issue]
  10 + - if issue.assignee
  11 + .pull-right
  12 + = image_tag gravatar_icon(issue.assignee.email, 16), class: "avatar s16"
... ...
app/views/milestones/_merge_request.html.haml 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +%li
  2 + = link_to [@project, merge_request] do
  3 + %span.badge.badge-info ##{merge_request.id}
  4 + –
  5 + = link_to_gfm truncate(merge_request.title, length: 60), [@project, merge_request]
... ...
app/views/milestones/show.html.haml
... ... @@ -55,32 +55,52 @@
55 55 = markdown @milestone.description
56 56  
57 57  
58   -.row
59   - = render(partial: 'issues', locals: {title: 'Unstarted Issues (open and unassigned)', issues: @issues.opened.unassigned})
60   -
61   - = render(partial: 'issues', locals: {title: 'Ongoing Issues (open and assigned)', issues: @issues.opened.assigned})
  58 +%ul.nav.nav-tabs
  59 + %li.active
  60 + = link_to '#tab-issues', 'data-toggle' => 'tab' do
  61 + Issues
  62 + %span.badge= @issues.count
  63 + %li
  64 + = link_to '#tab-merge-requests', 'data-toggle' => 'tab' do
  65 + Merge Requests
  66 + %span.badge= @merge_requests.count
  67 + %li
  68 + = link_to '#tab-participants', 'data-toggle' => 'tab' do
  69 + Participants
  70 + %span.badge= @users.count
62 71  
63   -.row
64   - .span6
65   - .ui-box.milestone-merge-requests-filter
66   - .title
67   - %ul.nav.nav-pills
68   - %li.active= link_to('Open Merge Requests', '#')
69   - %li=link_to('All Merge Requests', '#')
70   - %ul.well-list
71   - - @merge_requests.each do |merge_request|
72   - %li{data: {closed: merge_request.closed? || merge_request.merged?}}
73   - = link_to [@project, merge_request] do
74   - %span.badge.badge-info ##{merge_request.id}
75   - –
76   - = link_to_gfm truncate(merge_request.title, length: 60), [@project, merge_request]
77 72  
78   - = render(:partial => 'issues', locals: {title: 'Completed Issues (closed)', issues: @issues.closed})
  73 +.tab-content
  74 + .tab-pane.active#tab-issues
  75 + .row
  76 + .span4
  77 + = render('issues', title: 'Unstarted Issues (open and unassigned)', issues: @issues.opened.unassigned)
  78 + .span4
  79 + = render('issues', title: 'Ongoing Issues (open and assigned)', issues: @issues.opened.assigned)
  80 + .span4
  81 + = render('issues', title: 'Completed Issues (closed)', issues: @issues.closed)
79 82  
80   -%hr
81   -%h6 Participants:
82   -%div
83   - - @users.each do |user|
84   - = link_to_member(@project, user)
  83 + .tab-pane#tab-merge-requests
  84 + .row
  85 + .span6
  86 + .ui-box
  87 + %h5.title Open
  88 + %ul.well-list
  89 + - @merge_requests.opened.each do |merge_request|
  90 + = render 'merge_request', merge_request: merge_request
  91 + .span6
  92 + .ui-box
  93 + %h5.title Closed
  94 + %ul.well-list
  95 + - @merge_requests.closed.each do |merge_request|
  96 + = render 'merge_request', merge_request: merge_request
85 97  
86   -.clearfix
  98 + .tab-pane#tab-participants
  99 + %ul.bordered-list
  100 + - @users.each do |user|
  101 + %li
  102 + = link_to user, title: user.name, class: "dark" do
  103 + = image_tag gravatar_icon(user.email, 32), class: "avatar s32"
  104 + %strong= truncate(user.name, lenght: 40)
  105 + %br
  106 + %small.cgray= user.username
... ...
features/steps/project/project_milestones.rb
... ... @@ -50,6 +50,6 @@ class ProjectMilestones < Spinach::FeatureSteps
50 50 end
51 51  
52 52 Then "I should see 3 issues" do
53   - page.should have_selector('.milestone-issue-filter .well-list li', count: 4)
  53 + page.should have_selector('#tab-issues li', count: 4)
54 54 end
55 55 end
... ...
features/steps/userteams/userteams.rb
... ... @@ -93,7 +93,7 @@ class Userteams < Spinach::FeatureSteps
93 93 Then 'I should see issues from this team assigned to me' do
94 94 team = UserTeam.last
95 95 team.projects.each do |project|
96   - project.issues.assigned(current_user).each do |issue|
  96 + project.issues.assigned_to(current_user).each do |issue|
97 97 page.should have_content issue.title
98 98 end
99 99 end
... ... @@ -121,7 +121,7 @@ class Userteams < Spinach::FeatureSteps
121 121 team = UserTeam.last
122 122 team.projects.each do |project|
123 123 team.members.each do |member|
124   - project.issues.assigned(member).each do |issue|
  124 + project.issues.assigned_to(member).each do |issue|
125 125 page.should have_content issue.title
126 126 end
127 127 end
... ...