Labels autocomplete

This commit is contained in:
Dmitriy Zaporozhets 2012-12-18 06:14:05 +03:00
parent 2b921a6c72
commit 85d5f606f6
3 changed files with 45 additions and 0 deletions

View file

@ -13,6 +13,12 @@ window.errorMessage = (message) ->
ehtml.html(message) ehtml.html(message)
ehtml ehtml
window.split = (val) ->
return val.split( /,\s*/ )
window.extractLast = (term) ->
return split( term ).pop()
# Disable button if text field is empty # Disable button if text field is empty
window.disableButtonIfEmptyField = (field_selector, button_selector) -> window.disableButtonIfEmptyField = (field_selector, button_selector) ->
field = $(field_selector) field = $(field_selector)

View file

@ -30,4 +30,10 @@ module IssuesHelper
open: "open" open: "open"
} }
end end
def labels_autocomplete_source
labels = @project.issues_labels.order('count DESC')
labels = labels.map{ |l| { label: l.name, value: l.name } }
labels.to_json
end
end end

View file

@ -55,3 +55,36 @@
= link_to "Cancel", project_issues_path(@project), class: cancel_class = link_to "Cancel", project_issues_path(@project), class: cancel_class
- else - else
= link_to "Cancel", project_issue_path(@project, @issue), class: cancel_class = link_to "Cancel", project_issue_path(@project, @issue), class: cancel_class
:javascript
$(function(){
$("#issue_label_list")
.bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).data( "autocomplete" ).menu.active ) {
event.preventDefault();
}
})
.autocomplete({
minLength: 0,
source: function( request, response ) {
response( $.ui.autocomplete.filter(
#{raw labels_autocomplete_source}, extractLast( request.term ) ) );
},
focus: function() {
return false;
},
select: function(event, ui) {
var terms = split( this.value );
terms.pop();
terms.push( ui.item.value );
terms.push( "" );
this.value = terms.join( ", " );
return false;
}
});
});