aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorLuc Donnet2014-08-21 14:00:12 +0200
committerLuc Donnet2014-08-21 14:00:12 +0200
commit609a15c4eda1d2af30fd5c3a5a59ced3070da8e4 (patch)
treeaba895248f4085b1228daaf7679cadc720db107e /app
parent6a60bd6dd570c62956929aa5f51abb974e190260 (diff)
downloadchouette-core-609a15c4eda1d2af30fd5c3a5a59ced3070da8e4.tar.bz2
Add search stop_area token input for formtastic
Diffstat (limited to 'app')
-rw-r--r--app/controllers/connection_link_areas_controller.rb8
-rw-r--r--app/inputs/search_stop_area_input.rb38
-rw-r--r--app/views/connection_links/select_areas.html.erb35
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 %>