diff options
| -rw-r--r-- | app/controllers/connection_link_areas_controller.rb | 8 | ||||
| -rw-r--r-- | app/inputs/search_stop_area_input.rb | 38 | ||||
| -rw-r--r-- | app/views/connection_links/select_areas.html.erb | 35 |
3 files changed, 47 insertions, 34 deletions
diff --git a/app/controllers/connection_link_areas_controller.rb b/app/controllers/connection_link_areas_controller.rb index 40f029801..95b963b6b 100644 --- a/app/controllers/connection_link_areas_controller.rb +++ b/app/controllers/connection_link_areas_controller.rb @@ -10,7 +10,13 @@ class ConnectionLinkAreasController < ChouetteController def areas_maps areas.collect do |area| - { :id => area.id.to_s, :name => "#{area.name} #{area.country_code}" } + { :id => area.id.to_s, + :name => area.name, + :country_code => area.country_code, + :zip_code => area.zip_code || "", + :city_name => area.city_name || "", + :area_type => area.area_type + } end end diff --git a/app/inputs/search_stop_area_input.rb b/app/inputs/search_stop_area_input.rb new file mode 100644 index 000000000..992a08b85 --- /dev/null +++ b/app/inputs/search_stop_area_input.rb @@ -0,0 +1,38 @@ +class SearchStopAreaInput < Formtastic::Inputs::SearchInput + + def search + if options[:json] + template.content_tag( :script, + ("$(document).ready(function() { + $('##{dom_id}').tokenInput('#{options[:json]}', { + crossDomain: false, + tokenLimit: 1, + minChars: 3, + hintText: '#{options[:hint_text]}', + noResultsText: '#{options[:no_result_text]}', + searchingText: '#{options[:searching_text]}', + resultsFormatter: function(item){ return '<li><div class=\"name\">' + item.name + '</div><div class=\"info\">' + item.zip_code + ' ' + item.city_name + '</div></li>' }, + tokenFormatter: function(item) { return '<li><p>' + item.name + '</p></li>' } + }); + });").html_safe) + end + end + + def to_html + input_wrapping do + label_html << + builder.search_field(method, input_html_options) << + search + end + end + + def input_html_options + super.merge({ + :required => nil, + :autofocus => nil, + :class => 'token-input', + 'data-model-name' => object.class.model_name.human + }) + end + +end diff --git a/app/views/connection_links/select_areas.html.erb b/app/views/connection_links/select_areas.html.erb index ac1a95dab..f2c9cc883 100644 --- a/app/views/connection_links/select_areas.html.erb +++ b/app/views/connection_links/select_areas.html.erb @@ -3,8 +3,8 @@ <%= semantic_form_for [@referential, @connection_link] do |form| %> <div> <%= form.inputs do %> - <%= form.input :departure_id, :as => :text, :input_html => { :"data-pre" => ( @departure.present? ? [ { :id => @departure.id.to_s, :name => "#{@departure.name} [#{@departure.country_code}]" } ]: [] ).to_json } %> - <%= form.input :arrival_id, :as => :text, :input_html => { :"data-pre" => ( @arrival.present? ? [ { :id => @arrival.id.to_s, :name => "#{@arrival.name} [#{@arrival.country_code}]" } ]: [] ).to_json } %> + <%= form.input :departure_id, :as => :search_stop_area, :json => referential_connection_link_connection_link_areas_path(@referential, @connection_link, :format => :json), :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :input_html => { :"data-pre" => ( @departure.present? ? [ { :id => @departure.id.to_s, :name => "#{@departure.name}" } ]: [] ).to_json } %> + <%= form.input :arrival_id, :as => :search_stop_area, :json => referential_connection_link_connection_link_areas_path(@referential, @connection_link, :format => :json), :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :input_html => { :"data-pre" => ( @arrival.present? ? [ { :id => @arrival.id.to_s, :name => "#{@arrival.name}" } ]: [] ).to_json } %> <% end %> <%= form.actions do %> @@ -13,34 +13,3 @@ <% end %> </div> <% end %> - -<script> - $(function() { - $( "#connection_link_departure_id" ).tokenInput('<%= referential_connection_link_connection_link_areas_path(@referential, @connection_link, :format => :json) %>', { - crossDomain: false, - prePopulate: $('#connection_link_departure_id').data('pre'), - tokenLimit: 1, - minChars: 3, - hintText: '<%= t('search_hint') %>', - noResultsText: '<%= t('no_result_text') %>', - searchingText: '<%= t('searching_term') %>' - }); - }); - - $(function() { - $( "#connection_link_arrival_id" ).tokenInput('<%= referential_connection_link_connection_link_areas_path(@referential, @connection_link, :format => :json) %>', { - crossDomain: false, - prePopulate: $('#connection_link_arrival_id').data('pre'), - tokenLimit: 1, - minChars: 3, - hintText: '<%= t('search_hint') %>', - noResultsText: '<%= t('no_result_text') %>', - searchingText: '<%= t('searching_term') %>' - }); - }); -</script> - -<% content_for :sidebar do %> -<ul class="actions"> -</ul> -<% end %> |
