From 201101dfff831fc3c05475b7219d2870ca700fa5 Mon Sep 17 00:00:00 2001 From: Jacob Schatz Date: Sat, 19 Mar 2016 20:49:36 -0400 Subject: Add Assign to me button and unassigned. --- app/assets/javascripts/issuable_context.js.coffee | 3 +- app/assets/javascripts/users_select.js.coffee | 65 +++++++++++++---------- app/views/shared/issuable/_sidebar.html.haml | 2 +- 3 files changed, 39 insertions(+), 31 deletions(-) diff --git a/app/assets/javascripts/issuable_context.js.coffee b/app/assets/javascripts/issuable_context.js.coffee index ddc7de602e4..1e804d25c14 100644 --- a/app/assets/javascripts/issuable_context.js.coffee +++ b/app/assets/javascripts/issuable_context.js.coffee @@ -1,8 +1,7 @@ class @IssuableContext constructor: -> @initParticipants() - - new UsersSelect() + new UsersSelect(currentUser) $('select.select2').select2({width: 'resolve', dropdownAutoWidth: true}) $(".issuable-sidebar .inline-update").on "change", "select", -> diff --git a/app/assets/javascripts/users_select.js.coffee b/app/assets/javascripts/users_select.js.coffee index cb3e16a6007..76eb2b1d696 100644 --- a/app/assets/javascripts/users_select.js.coffee +++ b/app/assets/javascripts/users_select.js.coffee @@ -1,7 +1,8 @@ class @UsersSelect - constructor: -> + constructor: (currentUser) -> @usersPath = "/autocomplete/users.json" @userPath = "/autocomplete/users/:id.json" + @currentUser = JSON.parse(currentUser) $('.js-user-search').each (i, dropdown) => $dropdown = $(dropdown) @@ -19,6 +20,40 @@ class @UsersSelect $value = $block.find('.value') $loading = $block.find('.block-loading').fadeOut() + $block.on('click','.js-assign-yourself' , (e) => + e.preventDefault() + assignTo(@currentUser.id) + ) + + assignTo = (selected) -> + data = {} + data[abilityName] = {} + data[abilityName].assignee_id = selected + $loading + .fadeIn() + $.ajax( + type: 'PUT' + dataType: 'json' + url: issueURL + data: data + ).done (data) -> + $loading.fadeOut() + $selectbox.hide() + + if data.assignee + user = + name: data.assignee.name + username: data.assignee.username + avatar: data.assignee.avatar.url + else + user = + name: 'Unassigned' + username: '' + avatar: '' + + $value.html(noAssigneeTemplate(user)) + $value.find('a').attr('href') + noAssigneeTemplate = _.template( '<% if (username) { %> @@ -108,33 +143,7 @@ class @UsersSelect selected = $dropdown .closest('.selectbox') .find("input[name='#{$dropdown.data('field-name')}']").val() - data = {} - data[abilityName] = {} - data[abilityName].assignee_id = selected - $loading - .fadeIn() - $.ajax( - type: 'PUT' - dataType: 'json' - url: issueURL - data: data - ).done (data) -> - $loading.fadeOut() - $selectbox.hide() - - if data.assignee - user = - name: data.assignee.name - username: data.assignee.username - avatar: data.assignee.avatar.url - else - user = - name: 'Unassigned' - username: '' - avatar: '' - - $value.html(noAssigneeTemplate(user)) - $value.find('a').attr('href') + assignTo(selected) renderRow: (user) -> username = if user.username then "@#{user.username}" else "" diff --git a/app/views/shared/issuable/_sidebar.html.haml b/app/views/shared/issuable/_sidebar.html.haml index 162c7787c55..d6328216dae 100644 --- a/app/views/shared/issuable/_sidebar.html.haml +++ b/app/views/shared/issuable/_sidebar.html.haml @@ -152,5 +152,5 @@ :javascript new MilestoneSelect(); new LabelsSelect(); - new IssuableContext(); + new IssuableContext('#{current_user.to_json(only: [:username, :id, :name])}'); new Subscription('.subscription') \ No newline at end of file -- cgit v1.2.1