diff options
| author | Luc Donnet | 2014-08-21 14:00:12 +0200 | 
|---|---|---|
| committer | Luc Donnet | 2014-08-21 14:00:12 +0200 | 
| commit | 609a15c4eda1d2af30fd5c3a5a59ced3070da8e4 (patch) | |
| tree | aba895248f4085b1228daaf7679cadc720db107e | |
| parent | 6a60bd6dd570c62956929aa5f51abb974e190260 (diff) | |
| download | chouette-core-609a15c4eda1d2af30fd5c3a5a59ced3070da8e4.tar.bz2 | |
Add search stop_area token input for formtastic
| -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 %> | 
