diff --git a/app/controllers/customers_controller.rb b/app/controllers/customers_controller.rb index cebe15f..409b8b2 100644 --- a/app/controllers/customers_controller.rb +++ b/app/controllers/customers_controller.rb @@ -34,10 +34,8 @@ class CustomersController < ApplicationController autocomplete :customer, :name, :full => false, :extra_data => [:id] - def autocomplete_customer_vehicles - customer = Customer.find_by_id(params[:term]) - items = customer.vehicles if customer - render :json => items.to_json if items + def filter_vehicles_by_customer + @filtered_vehicles = Vehicle.all.where(customer_id: params[:selected_customer]) end # display a list of all customers diff --git a/app/views/customers/filter_vehicles_by_customer.js.erb b/app/views/customers/filter_vehicles_by_customer.js.erb new file mode 100644 index 0000000..d841662 --- /dev/null +++ b/app/views/customers/filter_vehicles_by_customer.js.erb @@ -0,0 +1 @@ +$('select#issue_vehicles_id').html('<%= j options_from_collection_for_select(@filtered_vehicles, :id, :to_s) %>'); diff --git a/assets/javascripts/application.js b/assets/javascripts/application.js new file mode 100644 index 0000000..09a670c --- /dev/null +++ b/assets/javascripts/application.js @@ -0,0 +1,9 @@ +$(function() { + $("input#issue_customer_id").on("change", function() { + $.ajax({ + url: "/filter_vehicles_by_customer", + type: "GET", + data: { selected_customer: $("input#issue_customer_id").val() } + }); + }); +}); diff --git a/config/routes.rb b/config/routes.rb index 68d1c7f..21aa526 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -35,7 +35,7 @@ resources :payments post 'qbo/webhook', :to => 'qbo#qbo_webhook' #ajax -get "update_vehicles" => 'vehicles#update_vehicles', as: 'update_vehicles' +get 'filter_vehicles_by_customer' => 'customers#filter_vehicles_by_customer' # Nest Vehicles under customers resources :customers do diff --git a/lib/issues_form_hook_listener.rb b/lib/issues_form_hook_listener.rb index c9c6c1a..166d166 100644 --- a/lib/issues_form_hook_listener.rb +++ b/lib/issues_form_hook_listener.rb @@ -12,10 +12,8 @@ class IssuesFormHookListener < Redmine::Hook::ViewListener # Load the javascript def view_layouts_base_html_head(context = {}) - #js = javascript_include_tag 'application', :plugin => 'redmine_qbo' - #js += javascript_include_tag 'jquery/jquery-3.1.1.min', :plugin => 'redmine_qbo' - #js += javascript_include_tag 'jquery-ui-1.12.1/jquery-ui', :plugin => 'redmine_qbo' - js = javascript_include_tag 'autocomplete-rails', :plugin => 'redmine_qbo' + js = javascript_include_tag 'application', :plugin => 'redmine_qbo' + js += javascript_include_tag 'autocomplete-rails', :plugin => 'redmine_qbo' return js end @@ -38,9 +36,9 @@ class IssuesFormHookListener < Redmine::Hook::ViewListener select_estimate = f.select :qbo_estimate_id, QboEstimate.all.pluck(:doc_number, :id).sort! {|x, y| y <=> x}, :selected => selected_estimate, include_blank: true if context[:issue].customer - vehicles = customer.vehicles.pluck(:name, :id).sort! + vehicles = customer.vehicles.pluck(:name, :id).sort! else - vehicles = Vehicle.all.order(:name).pluck(:name, :id) + vehicles = [nil].compact end vehicle = f.select :vehicles_id, vehicles, :selected => selected_vehicle, include_blank: true