From 10ff61d0a3477a45494191cf18fdd69b5b5485ce Mon Sep 17 00:00:00 2001 From: mike vallano Date: Thu, 13 Aug 2020 19:59:29 -0500 Subject: [PATCH] 212: Fix autocomplete list bug --- app/assets/javascripts/z.js | 31 +++++++------------ app/views/listings/create.js.erb | 30 +++++++++++++----- app/views/movies/_movie.html.erb | 8 ++++- .../_movie_add_to_another_list.html.erb | 6 ++-- .../movies/_movie_add_to_first_list.html.erb | 6 ++-- app/views/movies/_movie_partial_loop.html.erb | 3 +- app/views/movies/modal.js.erb | 14 ++++++++- 7 files changed, 61 insertions(+), 37 deletions(-) diff --git a/app/assets/javascripts/z.js b/app/assets/javascripts/z.js index 704c0aaf..981e0a73 100644 --- a/app/assets/javascripts/z.js +++ b/app/assets/javascripts/z.js @@ -19,15 +19,15 @@ $(document).ready(function(){ 'z-index': 1100 }); - $('#add-to-list-dropdown').autocomplete({ - source: $("#add-to-list-dropdown").data("autocomplete-source"), + $('.list-dropdown').autocomplete({ + source: $('.list-dropdown').data('autocomplete-source'), minLength: 0, select: function(event, ui) { - handleAddToListAutocompleteSelect(event, ui) + handleAddToListAutocompleteSelect($('.list-dropdown'), ui) } }) - $('#add-to-list-dropdown').click(showAllListsForAutocomplete) + $('.ui-autocomplete-input').click(triggerClickForListAutocomplete) }); $(document) @@ -42,27 +42,18 @@ $(document) } }); -function handleAddToListAutocompleteSelect(event, ui) { - $("#list_autocomplete_val").val(ui.item.id); - $('form#new_listing').submit(); +function handleAddToListAutocompleteSelect(element, ui) { + // populate the form field with the id of the autocomplete-selected list + element.parent().find('.list-id-field').val(ui.item.id) + // submit the form + element.parent().submit() } -$(document).on('shown.bs.modal', function(){ - $('form#new_listing').click(showAllListsForAutocomplete) - $('#add-to-list-dropdown').autocomplete({ - source: $("#add-to-list-dropdown").data("autocomplete-source"), - minLength: 0, - select: function(event, ui) { - handleAddToListAutocompleteSelect(event, ui) - } - }) -}); - -function showAllListsForAutocomplete() { +function triggerClickForListAutocomplete() { // hack to show all lists when initially clicking // in the field. this triggers a backspace keypress var evt = jQuery.Event('keydown'); evt.which = 8; // backspace evt.keyCode = 8 - $('#add-to-list-dropdown').trigger(evt) + $(this).trigger(evt) } diff --git a/app/views/listings/create.js.erb b/app/views/listings/create.js.erb index 38cfc72a..1b8a1357 100644 --- a/app/views/listings/create.js.erb +++ b/app/views/listings/create.js.erb @@ -10,12 +10,26 @@ else { $("#movie_show_listings_<%= @movie.tmdb_id %>").html("<%= j(render :partial => 'movies/movie_show_list_manage', :locals => {:movie => @movie}) %>"); } -$('#add-to-list-dropdown').click(showAllListsForAutocomplete) +var $listPageDropdown = $("#myModal_<%= @movie.tmdb_id %>").find("#add-to-list-dropdown-" + "<%= @movie.tmdb_id %>"); +var $showPageDropdown = $('.list-dropdown'); - $('.add-to-list-dropdown').autocomplete({ - source: $("#add-to-list-dropdown").data("autocomplete-source"), - minLength: 0, - select: function(event, ui) { - handleAddToListAutocompleteSelect(event, ui) - } - }) +($listPageDropdown, $showPageDropdown).click(triggerClickForListAutocomplete); + +<%# On a list view, we need to specify the movie +so we use the movie's tmdb_id %> +($listPageDropdown).autocomplete({ + source: $listPageDropdown.data('autocomplete-source'), + minLength: 0, + select: function(event, ui) { + handleAddToListAutocompleteSelect($listPageDropdown, ui) + } +}); + +<%# On a show page, we have only one movie, so the selector is not tied to the movie id %> +($showPageDropdown).autocomplete({ + source: $showPageDropdown.data('autocomplete-source'), + minLength: 0, + select: function(event, ui) { + handleAddToListAutocompleteSelect($showPageDropdown, ui) + } +}); \ No newline at end of file diff --git a/app/views/movies/_movie.html.erb b/app/views/movies/_movie.html.erb index be721906..9507ffb1 100644 --- a/app/views/movies/_movie.html.erb +++ b/app/views/movies/_movie.html.erb @@ -1,6 +1,12 @@ -