summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-12-18 06:14:05 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-12-18 06:14:05 +0300
commit85d5f606f656fc8680e28baf3d58d24898d23261 (patch)
treeee94bcfd51dbc2ca96c7c975de6e318b96997556 /app
parent2b921a6c725d53e2223a670b0110833f25877f4e (diff)
downloadgitlab-ce-85d5f606f656fc8680e28baf3d58d24898d23261.tar.gz
Labels autocomplete
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/main.js.coffee6
-rw-r--r--app/helpers/issues_helper.rb6
-rw-r--r--app/views/issues/_form.html.haml33
3 files changed, 45 insertions, 0 deletions
diff --git a/app/assets/javascripts/main.js.coffee b/app/assets/javascripts/main.js.coffee
index 3334439ca87..f6c398c0acf 100644
--- a/app/assets/javascripts/main.js.coffee
+++ b/app/assets/javascripts/main.js.coffee
@@ -13,6 +13,12 @@ window.errorMessage = (message) ->
ehtml.html(message)
ehtml
+window.split = (val) ->
+ return val.split( /,\s*/ )
+
+window.extractLast = (term) ->
+ return split( term ).pop()
+
# Disable button if text field is empty
window.disableButtonIfEmptyField = (field_selector, button_selector) ->
field = $(field_selector)
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 6b21f463c4c..264b764fa26 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -30,4 +30,10 @@ module IssuesHelper
open: "open"
}
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
diff --git a/app/views/issues/_form.html.haml b/app/views/issues/_form.html.haml
index 670b4e059f4..8a9a91a36a8 100644
--- a/app/views/issues/_form.html.haml
+++ b/app/views/issues/_form.html.haml
@@ -55,3 +55,36 @@
= link_to "Cancel", project_issues_path(@project), class: cancel_class
- else
= 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;
+ }
+ });
+ });
+