From dbaa0c537902ebaa98be99bb1a10949c63c345d7 Mon Sep 17 00:00:00 2001 From: yuzuriha Date: Wed, 29 Nov 2017 09:19:52 +0900 Subject: [PATCH 1/2] Add autcomplete issue assigned to --- app/views/issues/_attributes.html.erb | 46 ++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/app/views/issues/_attributes.html.erb b/app/views/issues/_attributes.html.erb index 640a00e0b..de649dacb 100644 --- a/app/views/issues/_attributes.html.erb +++ b/app/views/issues/_attributes.html.erb @@ -15,7 +15,7 @@ <% end %> <% if @issue.safe_attribute? 'assigned_to_id' %> -

<%= f.select :assigned_to_id, principals_options_for_select(@issue.assignable_users, @issue.assigned_to), :include_blank => true, :required => @issue.required_attribute?('assigned_to_id') %>

+

<%= text_field_tag :issue_assigned_to_autocomplete, @issue.assigned_to ? @issue.assigned_to.name : '' %><%= f.hidden_field :assigned_to_id %>

<% end %> <% if @issue.safe_attribute?('category_id') && @issue.project.issue_categories.any? %> @@ -81,3 +81,47 @@ <% end %> <% include_calendar_headers_tags %> +<% if @issue.safe_attribute? 'assigned_to_id' %> + <%= javascript_tag do %> + var assignner_list = <%= raw [{:id => User.current.id, :label => "<< #{l(:label_me)} >>", :category => 'User'}] + .concat(@issue.assignable_users.select{|u|u.is_a?(User)}.map{|u|{:id => u.id, :label => u.name, :category => 'User'}}) + .concat(@issue.assignable_users.select{|u|u.is_a?(Group)}.map{|u|{:id => u.id, :label => u.name, :category => 'Group'}}).to_json %>; + observeAutocompleteField('issue_assigned_to_autocomplete', '', { + source: assignner_list, + minLength: 0, + select: function(event, ui){$('#issue_assigned_to_id').val(ui.item.id);}, + change: function(event, ui){ + var assigners = $.grep(assignner_list, function(item, i){return(item.label.toLowerCase()==$('#issue_assigned_to_autocomplete').val().toLowerCase());}); + if(assigners.length==1){ + $('#issue_assigned_to_autocomplete').val(assigners[0].label); + $('#issue_assigned_to_id').val(assigners[0].id); + }else{ + $('#issue_assigned_to_autocomplete, #issue_assigned_to_id').val(''); + } + }, + create: function(){ + $(this).data('ui-autocomplete')._renderMenu = function(ul, items){ + var self = this, category = null; + $.each(items, function(index, item){ + if(item.category!=category && item.category=='Group'){ + ul.append("
  • ") + .append("
    -- <%= l(:label_group_plural) %> --
    "); + } + category=item.category; + self._renderItemData(ul, item); + }); + self.widget().menu( "option", "items", "> li:not(.ui-autocomplete-group)" ); + }; + $(this).data('ui-autocomplete')._renderItem = function(ul, item){ + ul.css({'background':'#eee','overflow':'scroll'}); + return $('
  • ') + .append('
    '+item.label+'
    ') + .appendTo(ul); + }; + } + }); + $('#issue_assigned_to_autocomplete').focus(function(){ + $(this).data("uiAutocomplete").search($(this).val()); + }); + <% end %> +<% end %> -- 2.13.6 (Apple Git-96)