2d187976be
Transform current implementation into regular Coffescript classes so that the same call method can be reused on the dispatcher as for other classes.
58 lines
1.7 KiB
CoffeeScript
58 lines
1.7 KiB
CoffeeScript
class @ProjectUsersSelect
|
|
constructor: ->
|
|
$('.ajax-project-users-select').each (i, select) =>
|
|
project_id = $(select).data('project-id') || $('body').data('project-id')
|
|
|
|
$(select).select2
|
|
placeholder: $(select).data('placeholder') || "Search for a user"
|
|
multiple: $(select).hasClass('multiselect')
|
|
minimumInputLength: 0
|
|
query: (query) ->
|
|
Api.projectUsers project_id, query.term, (users) ->
|
|
data = { results: users }
|
|
|
|
nullUser = {
|
|
name: 'Unassigned',
|
|
avatar: null,
|
|
username: 'none',
|
|
id: ''
|
|
}
|
|
|
|
data.results.unshift(nullUser)
|
|
|
|
query.callback(data)
|
|
|
|
initSelection: (element, callback) ->
|
|
id = $(element).val()
|
|
if id isnt ""
|
|
Api.user(id, callback)
|
|
|
|
|
|
formatResult: (args...) =>
|
|
@formatResult(args...)
|
|
formatSelection: (args...) =>
|
|
@formatSelection(args...)
|
|
dropdownCssClass: "ajax-project-users-dropdown"
|
|
dropdownAutoWidth: true
|
|
escapeMarkup: (m) -> # we do not want to escape markup since we are displaying html in results
|
|
m
|
|
|
|
formatResult: (user) ->
|
|
if user.avatar_url
|
|
avatar = user.avatar_url
|
|
else
|
|
avatar = gon.default_avatar_url
|
|
|
|
if user.id == ''
|
|
avatarMarkup = ''
|
|
else
|
|
avatarMarkup = "<div class='user-image'><img class='avatar s24' src='#{avatar}'></div>"
|
|
|
|
"<div class='user-result'>
|
|
#{avatarMarkup}
|
|
<div class='user-name'>#{user.name}</div>
|
|
<div class='user-username'>#{user.username}</div>
|
|
</div>"
|
|
|
|
formatSelection: (user) ->
|
|
user.name
|