Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home>2016-03-16 23:52:07 +0300
committerJacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home>2016-03-25 15:07:57 +0300
commite8d84110165d1358d90ebafb72ec91a441624527 (patch)
tree08a9cbe1edfd2c8357906cddc4a56fa35f887e04 /app
parent74c7a537eda71ba8b08f56edacee56e09d5c1004 (diff)
Adds new dropdown ajax to user selection
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/labels_select.js.coffee5
-rw-r--r--app/assets/javascripts/users_select.js.coffee38
-rw-r--r--app/controllers/projects/issues_controller.rb2
-rw-r--r--app/views/shared/issuable/_sidebar.html.haml4
4 files changed, 43 insertions, 6 deletions
diff --git a/app/assets/javascripts/labels_select.js.coffee b/app/assets/javascripts/labels_select.js.coffee
index c05daca4afb..464e6cb456a 100644
--- a/app/assets/javascripts/labels_select.js.coffee
+++ b/app/assets/javascripts/labels_select.js.coffee
@@ -198,14 +198,13 @@ class @LabelsSelect
# need inline-block here instead of show,
# which will default to the element's style in this case inline.
selected = if selected.length then selected else ['']
- $loading
- .fadeIn()
+ $loading.fadeIn()
$.ajax(
type: 'PUT'
url: issueURL
data:
issue:
- label_ids: selected
+ assignee_id: selected
).done (data) ->
$loading.fadeOut()
$selectbox.hide()
diff --git a/app/assets/javascripts/users_select.js.coffee b/app/assets/javascripts/users_select.js.coffee
index fe4a54e07e1..2bfe6b72432 100644
--- a/app/assets/javascripts/users_select.js.coffee
+++ b/app/assets/javascripts/users_select.js.coffee
@@ -12,6 +12,11 @@ class @UsersSelect
firstUser = $dropdown.data('first-user')
selectedId = $dropdown.data('selected')
defaultLabel = $dropdown.data('default-label')
+ issueURL = $dropdown.data('issueUpdate')
+ $selectbox = $dropdown.closest('.selectbox')
+ $block = $selectbox.closest('.block')
+ $value = $block.find('.value')
+ $loading = $block.find('.block-loading').fadeOut()
$dropdown.glDropdown(
data: (term, callback) =>
@@ -57,11 +62,17 @@ class @UsersSelect
fields: ['name', 'username']
selectable: true
fieldName: $dropdown.data('field-name')
+
toggleLabel: (selected) ->
if selected && 'id' of selected
selected.name
else
defaultLabel
+
+ hidden: ->
+ $selectbox.hide()
+ $value.show()
+
clicked: ->
page = $('body').data 'page'
isIssueIndex = page is 'projects:issues:index'
@@ -72,7 +83,32 @@ class @UsersSelect
else if $dropdown.hasClass 'js-filter-submit'
$dropdown.closest('form').submit()
else
- console.log 'else'
+ selected = $dropdown
+ .closest('.selectbox')
+ .find("input[name='#{$dropdown.data('field-name')}']").val()
+ $loading
+ .fadeIn()
+ $.ajax(
+ type: 'PUT'
+ url: issueURL
+ data:
+ issue:
+ assignee_id: selected
+ ).done (data) ->
+ $loading.fadeOut()
+ $selectbox.hide()
+ href = $value
+ .show()
+ .find('.author')
+ .text(data.assignee.name)
+ .end()
+ .find('a')
+ .attr('href')
+ splitHref = href.split('/')
+ splitHref[splitHref.length - 1] = data.assignee.username
+ $value
+ .find('a')
+ .attr('href',splitHref.join('/'))
renderRow: (user) ->
username = if user.username then "@#{user.username}" else ""
avatar = if user.avatar_url then user.avatar_url else false
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index ecd6ed3375e..ec43e56f0ba 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -114,7 +114,7 @@ class Projects::IssuesController < Projects::ApplicationController
end
end
format.json do
- render json: @issue.to_json(include: [:milestone, :labels])
+ render json: @issue.to_json(include: [:milestone, :labels, :assignee])
end
end
end
diff --git a/app/views/shared/issuable/_sidebar.html.haml b/app/views/shared/issuable/_sidebar.html.haml
index 097e1cee140..6b42293ec4b 100644
--- a/app/views/shared/issuable/_sidebar.html.haml
+++ b/app/views/shared/issuable/_sidebar.html.haml
@@ -28,6 +28,7 @@
= icon('user')
.title.hide-collapsed
Assignee
+ =icon('spinner spin', class: 'block-loading')
- if can?(current_user, :"admin_#{issuable.to_ability_name}", @project)
= link_to 'Edit', '#', class: 'edit-link pull-right'
.value.bold.hide-collapsed
@@ -42,7 +43,8 @@
.light None
.selectbox.hide-collapsed
- = dropdown_tag("Select assignee", options: { toggle_class: "js-user-search js-author-search", title: "Filter by user", filter: true, dropdown_class: "dropdown-menu-user dropdown-menu-selectable dropdown-menu-author", placeholder: "Search users", data: { first_user: (current_user.username if current_user), current_user: true, project_id: (@project.id if @project), selected: params[:author_id], field_name: "author_id" } })
+ = f.hidden_field 'assignee_id', value: issuable.assignee.id, id: nil
+ = dropdown_tag("Select assignee", options: { toggle_class: "js-user-search js-author-search", title: "Filter by user", filter: true, dropdown_class: "dropdown-menu-user dropdown-menu-selectable dropdown-menu-author", placeholder: "Search users", data: { first_user: (current_user.username if current_user), current_user: true, project_id: (@project.id if @project), field_name: "issue[assignee_id]", issue_update: namespace_project_issue_path(@project.namespace, @project, issuable.id, :json) } })
.block.milestone
.sidebar-collapsed-icon