Commit 2e839cee93bcbf3904f0aeb50206f555c340d672
1 parent
b1bdd829
Exists in
master
and in
4 other branches
Fixed tests. Fixed overrided scope. Better usability for milestone view
Showing
9 changed files
with
68 additions
and
49 deletions
Show diff stats
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/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
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 | ... | ... |