diff options
| author | Marc Florisson | 2014-11-29 00:56:35 +0100 |
|---|---|---|
| committer | Marc Florisson | 2014-11-29 00:56:35 +0100 |
| commit | c5379f821a7f280f296f0b0dd0180aa57ce6b9c8 (patch) | |
| tree | 9ca3b99155e77bb5704e2e082e629c5e47f57c41 /app | |
| parent | ba21e60b342a67e456042b92d32f5b496035126d (diff) | |
| download | chouette-core-c5379f821a7f280f296f0b0dd0180aa57ce6b9c8.tar.bz2 | |
refactor autocomplete for stop area in the whole app. Part of Mantis #30223
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/autocomplete_stop_areas_controller.rb | 60 | ||||
| -rw-r--r-- | app/controllers/stop_area_children_controller.rb | 21 | ||||
| -rw-r--r-- | app/controllers/stop_area_parents_controller.rb | 19 | ||||
| -rw-r--r-- | app/controllers/stop_area_routing_stops_controller.rb | 21 | ||||
| -rw-r--r-- | app/controllers/stop_areas_controller.rb | 3 | ||||
| -rw-r--r-- | app/controllers/stop_point_areas_controller.rb | 20 | ||||
| -rw-r--r-- | app/views/autocomplete_stop_areas/index.rabl | 9 | ||||
| -rw-r--r-- | app/views/autocomplete_stop_areas/show.rabl | 10 | ||||
| -rw-r--r-- | app/views/connection_links/select_areas.html.erb | 4 | ||||
| -rw-r--r-- | app/views/routes/_form.html.erb | 2 | ||||
| -rw-r--r-- | app/views/stop_areas/add_children.html.erb | 2 | ||||
| -rw-r--r-- | app/views/stop_areas/add_routing_stops.html.erb | 15 | ||||
| -rw-r--r-- | app/views/stop_areas/index.rabl | 9 | ||||
| -rw-r--r-- | app/views/stop_areas/select_parent.html.erb | 4 | ||||
| -rw-r--r-- | app/views/stop_areas/show.rabl | 9 |
15 files changed, 87 insertions, 121 deletions
diff --git a/app/controllers/autocomplete_stop_areas_controller.rb b/app/controllers/autocomplete_stop_areas_controller.rb new file mode 100644 index 000000000..740383537 --- /dev/null +++ b/app/controllers/autocomplete_stop_areas_controller.rb @@ -0,0 +1,60 @@ +class AutocompleteStopAreasController < ApplicationController + include ApplicationHelper + before_filter :switch_referential + + def switch_referential + Apartment::Database.switch(referential.slug) + end + + respond_to :json, :only => [:index, :children, :parent, :physicals] + + def index + @options = { :stop_area_path => root_url } + Rabl::Renderer.new('autocomplete_stop_areas/index', stop_areas_by_name, :view_path => 'app/views', :format => :json).render + end + + protected + + def referential + @referential ||= current_organisation.referentials.find params[:referential_id] + end + + def stop_areas_by_name + result = [] + if physical_filter? + result = referential.stop_areas.physical + elsif itl_exclude_filter? + result = Chouette::StopArea.where("area_type != 'ITL'") + elsif target_type? && relation_parent? + result = Chouette::StopArea.new( :area_type => params[ :target_type ] ).possible_parents + elsif target_type? && relation_children? + result = Chouette::StopArea.new( :area_type => params[ :target_type ] ).possible_children + else + result = referential.stop_areas + end + @stop_areas = result.select{ |p| p.name =~ /#{params[:q]}/i } + @stop_areas + end + + def target_type? + params.has_key?( :target_type) && params.has_key?( :relation ) + end + + def relation_parent? + params[ :relation ] == "parent" + end + + def relation_children? + params[ :relation ] == "children" + end + + def itl_exclude_filter? + params[:filter] == "itl_excluded" + end + + def physical_filter? + params[:filter] == "physical" + end + +end + diff --git a/app/controllers/stop_area_children_controller.rb b/app/controllers/stop_area_children_controller.rb deleted file mode 100644 index d60fcb1a6..000000000 --- a/app/controllers/stop_area_children_controller.rb +++ /dev/null @@ -1,21 +0,0 @@ -class StopAreaChildrenController < ChouetteController - - respond_to :json, :only => :index - - def index - respond_to do |format| - format.json { render :json => children_maps } - end - end - - protected - - def children_maps - children.map {|area| area.attributes.merge( :area_type => t("area_types.label.#{area.area_type.underscore}"))} - end - - def children - referential.stop_areas.find(params[:stop_area_id]).possible_children.select{ |p| p.name =~ /#{params[:q]}/i } - end - -end diff --git a/app/controllers/stop_area_parents_controller.rb b/app/controllers/stop_area_parents_controller.rb deleted file mode 100644 index c32e5df17..000000000 --- a/app/controllers/stop_area_parents_controller.rb +++ /dev/null @@ -1,19 +0,0 @@ -class StopAreaParentsController < ChouetteController - - respond_to :json, :only => :index - - def index - respond_to do |format| - format.json { render :json => parents_maps } - end - end - - def parents_maps - parents.map {|area| area.attributes.merge( :area_type => t("area_types.label.#{area.area_type.underscore}"))} - end - - def parents - referential.stop_areas.find(params[:stop_area_id]).possible_parents.select{ |p| p.name =~ /#{params[:q]}/i } - end - -end diff --git a/app/controllers/stop_area_routing_stops_controller.rb b/app/controllers/stop_area_routing_stops_controller.rb deleted file mode 100644 index c5e7980f9..000000000 --- a/app/controllers/stop_area_routing_stops_controller.rb +++ /dev/null @@ -1,21 +0,0 @@ -class StopAreaRoutingStopsController < ChouetteController - - respond_to :json, :only => :index - - def index - respond_to do |format| - format.json { render :json => routing_stops_maps } - end - end - - def routing_stops_maps - routing_stops.collect do |stop| - { :id => stop.id.to_s, :name => "#{stop.name} #{stop.country_code}" } - end - end - - def routing_stops - referential.stop_areas.find(params[:stop_area_id]).possible_children.select{ |p| p.name =~ /#{params[:q]}/i } - end - -end diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb index 53a7575b9..6277b5814 100644 --- a/app/controllers/stop_areas_controller.rb +++ b/app/controllers/stop_areas_controller.rb @@ -36,7 +36,6 @@ class StopAreasController < ChouetteController def add_routing_stops @stop_area = stop_area - @stops = stop_area.routing_stops build_breadcrumb :edit end @@ -100,7 +99,7 @@ class StopAreasController < ChouetteController def update stop_area.position ||= stop_area.default_position map.editable = true - + update! end diff --git a/app/controllers/stop_point_areas_controller.rb b/app/controllers/stop_point_areas_controller.rb deleted file mode 100644 index 1ece8641e..000000000 --- a/app/controllers/stop_point_areas_controller.rb +++ /dev/null @@ -1,20 +0,0 @@ -class StopPointAreasController < ChouetteController - - respond_to :json, :only => :index - - def index - respond_to do |format| - format.json { render :json => areas_maps } - end - end - - def areas_maps - areas.map {|area| area.attributes.merge( :area_type => t("area_types.label.#{area.area_type.underscore}"))} - end - - def areas - Chouette::StopPoint.area_candidates.select{ |p| p.name =~ /#{params[:q]}/i } - end - -end - diff --git a/app/views/autocomplete_stop_areas/index.rabl b/app/views/autocomplete_stop_areas/index.rabl new file mode 100644 index 000000000..9864ff2d3 --- /dev/null +++ b/app/views/autocomplete_stop_areas/index.rabl @@ -0,0 +1,9 @@ +collection @stop_areas + +node do |stop_area| + { :id => stop_area.id, :stop_area_path => @options[ :stop_area_path], :registration_number => stop_area.registration_number || "", :name => stop_area.name || "", :zip_code => stop_area.zip_code || "", :city_name => stop_area.city_name || "" } +end + +node :area_type do |area| + I18n.t("area_types.label.#{area.area_type.underscore}") || "" +end diff --git a/app/views/autocomplete_stop_areas/show.rabl b/app/views/autocomplete_stop_areas/show.rabl new file mode 100644 index 000000000..989f6f4b1 --- /dev/null +++ b/app/views/autocomplete_stop_areas/show.rabl @@ -0,0 +1,10 @@ +object @stop_area +Rails.logger.debug "inside Rabl view call helper for help_path #{self.inspect}" + +node do |stop_area| + { :id => stop_area.id, :registration_number => stop_area.registration_number || "", :image_path => @options[ :image_path ], :name => stop_area.name || "", :zip_code => stop_area.zip_code || "", :city_name => stop_area.city_name || "" } +end + +node :area_type do |area| + I18n.t("area_types.label.#{area.area_type.underscore}") || "" +end diff --git a/app/views/connection_links/select_areas.html.erb b/app/views/connection_links/select_areas.html.erb index ee93d1d0d..0d8f25351 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 => :search_stop_area, :json => referential_connection_link_connection_link_areas_path(@referential, @connection_link, :format => :json), :tokenLimit => 1, :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :input_html => { :"data-pre" => Rabl::Renderer.new('stop_areas/show', [@departure].compact, :view_path => 'app/views', :format => :json).render } %> - <%= form.input :arrival_id, :as => :search_stop_area, :json => referential_connection_link_connection_link_areas_path(@referential, @connection_link, :format => :json), :tokenLimit => 1, :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :input_html => { :"data-pre" => Rabl::Renderer.new('stop_areas/show', [@arrival].compact, :view_path => 'app/views', :format => :json).render } %> + <%= form.input :departure_id, :as => :search_stop_area, :json => referential_autocomplete_stop_areas_path(@referential, :format => :json)+"?filter=itl_excluded", :tokenLimit => 1, :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :input_html => { :"data-pre" => Rabl::Renderer.new('autocomplete_stop_areas/show', [@departure].compact, :view_path => 'app/views', :format => :json).render } %> + <%= form.input :arrival_id, :as => :search_stop_area, :json => referential_autocomplete_stop_areas_path(@referential, :format => :json)+"?filter=itl_excluded", :tokenLimit => 1, :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :input_html => { :"data-pre" => Rabl::Renderer.new('autocomplete_stop_areas/show', [@arrival].compact, :view_path => 'app/views', :format => :json).render } %> <% end %> <%= form.actions do %> diff --git a/app/views/routes/_form.html.erb b/app/views/routes/_form.html.erb index 270c49911..63ee8cbe2 100644 --- a/app/views/routes/_form.html.erb +++ b/app/views/routes/_form.html.erb @@ -77,7 +77,7 @@ $(document).ready( function() { } return '<li><div class=\"name\">' + item_name( item) + '</div><div class=\"info\">' + item.area_type + '</div><div class=\"info\">' + info + '</div></li>' }; - element.tokenInput('<%= referential_stop_point_areas_path(@referential, :format => :json) %>', + element.tokenInput('<%= referential_autocomplete_stop_areas_path(@referential, :format => :json)+"?filter=physical" %>', { crossDomain: false, tokenLimit: 1, minChars: 3, diff --git a/app/views/stop_areas/add_children.html.erb b/app/views/stop_areas/add_children.html.erb index 732e28466..362915a54 100644 --- a/app/views/stop_areas/add_children.html.erb +++ b/app/views/stop_areas/add_children.html.erb @@ -3,7 +3,7 @@ <%= semantic_form_for [@referential, @stop_area] do |form| %> <div> <%= form.inputs do %> - <%= form.input :children_ids, :as => :search_stop_area, :json => referential_stop_area_stop_area_children_path(@referential, @stop_area, :format => :json), :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :input_html => { :"data-pre" => Rabl::Renderer.new('stop_areas/index', @children, :view_path => 'app/views', :format => :json).render } %> + <%= form.input :children_ids, :as => :search_stop_area, :json => referential_autocomplete_stop_areas_path(@referential, :format => :json)+"?relation=children&target_type=#{@stop_area.area_type}", :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :input_html => { :"data-pre" => Rabl::Renderer.new('autocomplete_stop_areas/index', @children, :view_path => 'app/views', :format => :json).render } %> <% end %> <%= form.actions do %> diff --git a/app/views/stop_areas/add_routing_stops.html.erb b/app/views/stop_areas/add_routing_stops.html.erb index 06a96d575..8675c199b 100644 --- a/app/views/stop_areas/add_routing_stops.html.erb +++ b/app/views/stop_areas/add_routing_stops.html.erb @@ -3,7 +3,7 @@ <%= semantic_form_for [@referential, @stop_area] do |form| %> <div> <%= form.inputs do %> - <%= form.input :routing_stop_ids, :as => :text, :input_html => { :"data-pre" => ( @stops.map { |stop| { :id => stop.id.to_s, :name => "#{stop.name} #{stop.country_code}" } } ).to_json } %> + <%= form.input :routing_stop_ids, :as => :search_stop_area, :json => referential_autocomplete_stop_areas_path(@referential, :format => :json)+"?filter=itl_excluded", :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :input_html => { :"data-pre" => Rabl::Renderer.new('autocomplete_stop_areas/index', @stop_area.routing_stops, :view_path => 'app/views', :format => :json).render } %> <% end %> <%= form.actions do %> @@ -13,19 +13,6 @@ </div> <% end %> -<script> - $(function() { - $( "#stop_area_routing_stop_ids" ).tokenInput('<%= referential_stop_area_stop_area_routing_stops_path(@referential, @stop_area, :format => :json) %>', { - crossDomain: false, - prePopulate: $('#stop_area_routing_stop_id').data('pre'), - minChars: 3, - hintText: '<%= t('search_hint') %>', - noResultsText: '<%= t('no_result_text') %>', - searchingText: '<%= t('searching_term') %>' - }); - }); -</script> - <% content_for :sidebar do %> <ul class="actions"> </ul> diff --git a/app/views/stop_areas/index.rabl b/app/views/stop_areas/index.rabl deleted file mode 100644 index d7f2365bb..000000000 --- a/app/views/stop_areas/index.rabl +++ /dev/null @@ -1,9 +0,0 @@ -collection @stop_areas - -node do |stop_area| - { :id => stop_area.id, :registration_number => stop_area.registration_number || "", :name => stop_area.name || "", :zip_code => stop_area.zip_code || "", :city_name => stop_area.city_name || "" } -end - -node :area_type do |area| - I18n.t("area_types.label.#{area.area_type.underscore}") || "" -end diff --git a/app/views/stop_areas/select_parent.html.erb b/app/views/stop_areas/select_parent.html.erb index fd1b292c6..9a830d67d 100644 --- a/app/views/stop_areas/select_parent.html.erb +++ b/app/views/stop_areas/select_parent.html.erb @@ -2,8 +2,8 @@ <%= semantic_form_for [@referential, @stop_area] do |form| %> <div> - <%= form.inputs do %> - <%= form.input :parent_id, :as => :search_stop_area, :json => referential_stop_area_stop_area_parents_path(@referential, @stop_area, :format => :json), :hint_text => t('search_hint'), :no_result_text => t('no_result_text'), :searching_text => t('searching_term'), :tokenLimit => 1, :input_html => { :"data-pre" => Rabl::Renderer.new('stop_areas/show', [@parent].compact, :view_path => 'app/views', :format => :json).render } %> + <%= form.inputs do %> + <%= form.input :parent_id, :as => :search_stop_area, :json => referential_autocomplete_stop_areas_path(@referential, :format => :json)+"?relation=parent&target_type=#{@stop_area.area_type}", :hint_text => t('search_hint'), :no_result_text => t('no_result_text'), :searching_text => t('searching_term'), :tokenLimit => 1, :input_html => { :"data-pre" => Rabl::Renderer.new('autocomplete_stop_areas/index', [@parent].compact, :stop_area_path => root_url, :view_path => 'app/views', :format => :json).render } %> <% end %> <%= form.actions do %> diff --git a/app/views/stop_areas/show.rabl b/app/views/stop_areas/show.rabl deleted file mode 100644 index f406c4eff..000000000 --- a/app/views/stop_areas/show.rabl +++ /dev/null @@ -1,9 +0,0 @@ -object @stop_area - -node do |stop_area| - { :id => stop_area.id, :registration_number => stop_area.registration_number || "", :name => stop_area.name || "", :zip_code => stop_area.zip_code || "", :city_name => stop_area.city_name || "" } -end - -node :area_type do |area| - I18n.t("area_types.label.#{area.area_type.underscore}") || "" -end |
