aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Florisson2014-11-29 00:56:35 +0100
committerMarc Florisson2014-11-29 00:56:35 +0100
commitc5379f821a7f280f296f0b0dd0180aa57ce6b9c8 (patch)
tree9ca3b99155e77bb5704e2e082e629c5e47f57c41
parentba21e60b342a67e456042b92d32f5b496035126d (diff)
downloadchouette-core-c5379f821a7f280f296f0b0dd0180aa57ce6b9c8.tar.bz2
refactor autocomplete for stop area in the whole app. Part of Mantis #30223
-rw-r--r--app/controllers/autocomplete_stop_areas_controller.rb60
-rw-r--r--app/controllers/stop_area_children_controller.rb21
-rw-r--r--app/controllers/stop_area_parents_controller.rb19
-rw-r--r--app/controllers/stop_area_routing_stops_controller.rb21
-rw-r--r--app/controllers/stop_areas_controller.rb3
-rw-r--r--app/controllers/stop_point_areas_controller.rb20
-rw-r--r--app/views/autocomplete_stop_areas/index.rabl9
-rw-r--r--app/views/autocomplete_stop_areas/show.rabl10
-rw-r--r--app/views/connection_links/select_areas.html.erb4
-rw-r--r--app/views/routes/_form.html.erb2
-rw-r--r--app/views/stop_areas/add_children.html.erb2
-rw-r--r--app/views/stop_areas/add_routing_stops.html.erb15
-rw-r--r--app/views/stop_areas/index.rabl9
-rw-r--r--app/views/stop_areas/select_parent.html.erb4
-rw-r--r--app/views/stop_areas/show.rabl9
-rw-r--r--config/routes.rb53
16 files changed, 90 insertions, 171 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
diff --git a/config/routes.rb b/config/routes.rb
index f629a963f..530e17409 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -9,7 +9,7 @@ ChouetteIhm::Application.routes.draw do
authenticated :user do
root :to => 'referentials#index'
end
-
+
unauthenticated do
root :to => 'devise/sessions#new'
end
@@ -61,29 +61,13 @@ ChouetteIhm::Application.routes.draw do
resources :referentials do
resources :api_keys
resources :rule_parameter_sets
- resources :stop_point_areas
+ resources :autocomplete_stop_areas
match 'lines' => 'lines#destroy_all', :via => :delete
resources :group_of_lines do
- resources :stop_areas do
- resources :access_points
- resources :stop_area_copies
- resources :stop_area_parents
- resources :stop_area_children
- resources :stop_area_routing_lines
- resources :stop_area_routing_stops
- member do
- get 'add_children'
- get 'select_parent'
- get 'add_routing_lines'
- get 'add_routing_stops'
- end
- end
- resources :lines
collection do
get :name_filter
end
end
-
resources :lines do
collection do
get :name_filter
@@ -91,20 +75,6 @@ ChouetteIhm::Application.routes.draw do
end
resources :lines, :networks, :group_of_lines do
- resources :stop_areas do
- resources :access_points
- resources :stop_area_copies
- resources :stop_area_parents
- resources :stop_area_children
- resources :stop_area_routing_lines
- resources :stop_area_routing_stops
- member do
- get 'add_children'
- get 'select_parent'
- get 'add_routing_lines'
- get 'add_routing_stops'
- end
- end
resources :routes do
resources :journey_patterns do
member do
@@ -164,10 +134,7 @@ ChouetteIhm::Application.routes.draw do
resources :stop_areas do
resources :access_points
resources :stop_area_copies
- resources :stop_area_parents
- resources :stop_area_children
resources :stop_area_routing_lines
- resources :stop_area_routing_stops
member do
get 'add_children'
get 'select_parent'
@@ -181,25 +148,11 @@ ChouetteIhm::Application.routes.draw do
end
resources :connection_links do
- resources :connection_link_areas
+ resources :stop_areas
member do
get 'select_areas'
end
- resources :stop_areas do
- resources :access_points
- resources :stop_area_parents
- resources :stop_area_children
- resources :stop_area_routing_lines
- resources :stop_area_routing_stops
- member do
- get 'add_children'
- get 'select_parent'
- get 'add_routing_lines'
- get 'add_routing_stops'
- end
- end
end
-
resources :clean_ups
end