Commit 7e41eca38ae4598e083372777c20ff6aa2b491ad

Authored by Dmitriy Zaporozhets
2 parents 9bd1afd7 336d50d0

Merge branch 'milestone-mr-dragging' into 'master'

Milestone merge request dragging

This is part of #1207.
app/assets/javascripts/milestone.js.coffee
... ... @@ -11,10 +11,23 @@ class Milestone
11 11 new Flash("Issue update failed", 'alert')
12 12 dataType: "json"
13 13  
  14 + @updateMergeRequest: (li, merge_request_url, data) ->
  15 + $.ajax
  16 + type: "PUT"
  17 + url: merge_request_url
  18 + data: data
  19 + success: (data) ->
  20 + if data.saved == true
  21 + $(li).effect 'highlight'
  22 + else
  23 + new Flash("Issue update failed", 'alert')
  24 + dataType: "json"
  25 +
14 26 constructor: ->
15   - @bindSorting()
  27 + @bindIssuesSorting()
  28 + @bindMergeRequestSorting()
16 29  
17   - bindSorting: ->
  30 + bindIssuesSorting: ->
18 31 $("#issues-list-unassigned, #issues-list-ongoing, #issues-list-closed").sortable(
19 32 connectWith: ".issues-sortable-list",
20 33 dropOnEmpty: true,
... ... @@ -38,4 +51,28 @@ class Milestone
38 51  
39 52 ).disableSelection()
40 53  
  54 + bindMergeRequestSorting: ->
  55 + $("#merge_requests-list-unassigned, #merge_requests-list-ongoing, #merge_requests-list-closed").sortable(
  56 + connectWith: ".merge_requests-sortable-list",
  57 + dropOnEmpty: true,
  58 + receive: (event, ui) ->
  59 + new_state = $(this).data('state')
  60 + merge_request_id = ui.item.data('iid')
  61 + merge_request_url = ui.item.data('url')
  62 +
  63 + data = switch new_state
  64 + when 'ongoing'
  65 + "merge_request[assignee_id]=" + gon.current_user_id
  66 + when 'unassigned'
  67 + "merge_request[assignee_id]="
  68 + when 'closed'
  69 + "merge_request[state_event]=close"
  70 +
  71 + if $(ui.sender).data('state') == "closed"
  72 + data += "&merge_request[state_event]=reopen"
  73 +
  74 + Milestone.updateMergeRequest(ui.item, merge_request_url, data)
  75 +
  76 + ).disableSelection()
  77 +
41 78 @Milestone = Milestone
... ...
app/views/projects/milestones/_merge_request.html.haml
1   -%li
2   - = link_to [@project, merge_request] do
3   - %span.label.label-info ##{merge_request.iid}
4   - –
5   - = link_to_gfm truncate(merge_request.title, length: 60), [@project, merge_request]
  1 +%li{ class: 'mr-row', 'data-iid' => merge_request.iid, 'data-url' => project_merge_request_path(@project, merge_request) }
  2 + %span.str-truncated
  3 + = link_to [@project, merge_request] do
  4 + %span.cgray ##{merge_request.iid}
  5 + = link_to_gfm truncate(merge_request.title, length: 60), [@project, merge_request]
... ...
app/views/projects/milestones/_merge_requests.html.haml 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +.panel.panel-default
  2 + .panel-heading= title
  3 + %ul{ class: "well-list merge_requests-sortable-list", id: "merge_requests-list-#{id}", "data-state" => id }
  4 + - merge_requests.each do |merge_request|
  5 + = render 'merge_request', merge_request: merge_request
  6 + %li.light Drag and drop available
... ...
app/views/projects/milestones/show.html.haml
... ... @@ -84,18 +84,12 @@
84 84  
85 85 .tab-pane#tab-merge-requests
86 86 .row
87   - .col-md-6
88   - .panel.panel-default
89   - .panel-heading Open
90   - %ul.well-list
91   - - @merge_requests.opened.each do |merge_request|
92   - = render 'merge_request', merge_request: merge_request
93   - .col-md-6
94   - .panel.panel-default
95   - .panel-heading Closed
96   - %ul.well-list
97   - - @merge_requests.closed.each do |merge_request|
98   - = render 'merge_request', merge_request: merge_request
  87 + .col-md-4
  88 + = render('merge_requests', title: 'Work in progress (open and unassigned)', merge_requests: @merge_requests.opened.unassigned, id: 'unassigned')
  89 + .col-md-4
  90 + = render('merge_requests', title: 'Assigned (open and assigned)', merge_requests: @merge_requests.opened.assigned, id: 'ongoing')
  91 + .col-md-4
  92 + = render('merge_requests', title: 'Declined (closed)', merge_requests: @merge_requests.closed, id: 'closed')
99 93  
100 94 .tab-pane#tab-participants
101 95 %ul.bordered-list
... ...