aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2017-12-28 11:07:42 +0100
committerXinhui2017-12-28 11:07:42 +0100
commit81d44acf0ea19349b36699b6cded54a42a7c39d7 (patch)
treeb13c43f8e512f4e2c5448f8876a64bbd923da87c
parent4bc32eb584ed669a8859b4897d020781d2d4ff43 (diff)
downloadchouette-core-81d44acf0ea19349b36699b6cded54a42a7c39d7.tar.bz2
New route autocomplete_stop_area_referential_stop_areas
Refs #5313
-rw-r--r--app/controllers/stop_areas_controller.rb12
-rw-r--r--app/views/stop_areas/_form.html.slim2
-rw-r--r--app/views/stop_areas/autocomplete.rabl24
-rw-r--r--config/routes.rb6
4 files changed, 37 insertions, 7 deletions
diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb
index b478d38fa..178a2413f 100644
--- a/app/controllers/stop_areas_controller.rb
+++ b/app/controllers/stop_areas_controller.rb
@@ -1,7 +1,7 @@
class StopAreasController < ChouetteController
include ApplicationHelper
include Activatable
-
+
defaults :resource_class => Chouette::StopArea
belongs_to :stop_area_referential
@@ -14,10 +14,12 @@ class StopAreasController < ChouetteController
respond_to :html, :kml, :xml, :json
respond_to :js, :only => :index
- # def complete
- # @stop_areas = line.stop_areas
- # render :layout => false
- # end
+ def autocomplete
+ scope = stop_area_referential.stop_areas.where(deleted_at: nil)
+ args = [].tap{|arg| 4.times{arg << "%#{params[:q]}%"}}
+ @stop_areas = scope.where("unaccent(name) ILIKE unaccent(?) OR unaccent(city_name) ILIKE unaccent(?) OR registration_number ILIKE ? OR objectid ILIKE ?", *args).limit(50)
+ @stop_areas
+ end
def select_parent
@stop_area = stop_area
diff --git a/app/views/stop_areas/_form.html.slim b/app/views/stop_areas/_form.html.slim
index 399f57b3b..ef19d248a 100644
--- a/app/views/stop_areas/_form.html.slim
+++ b/app/views/stop_areas/_form.html.slim
@@ -7,7 +7,7 @@
= f.input :id, as: :hidden
= f.input :name, :input_html => {:title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.stop_area.name")}
- = f.input :parent_id, as: :select, :collection => [f.object.parent_id], input_html: { data: { select2_ajax: 'true', url: referential_autocomplete_stop_areas_path(@stop_area_referential), initvalue: {id: f.object.parent_id, text: f.object.parent.try(:full_name)}}}
+ = f.input :parent_id, as: :select, :collection => [f.object.parent_id], input_html: { data: { select2_ajax: 'true', url: autocomplete_stop_area_referential_stop_areas_path(@stop_area_referential), initvalue: {id: f.object.parent_id, text: f.object.parent.try(:full_name)}}}
= f.input :area_type, as: :select, :input_html => {:disabled => !@stop_area.new_record?}, :collection => Chouette::AreaType.options, :include_blank => false
diff --git a/app/views/stop_areas/autocomplete.rabl b/app/views/stop_areas/autocomplete.rabl
new file mode 100644
index 000000000..3208289b5
--- /dev/null
+++ b/app/views/stop_areas/autocomplete.rabl
@@ -0,0 +1,24 @@
+collection @stop_areas
+
+node do |stop_area|
+ {
+ :id => stop_area.id,
+ :registration_number => stop_area.registration_number || "",
+ :short_registration_number => truncate(stop_area.registration_number, :length => 10) || "",
+ :name => stop_area.name || "",
+ :short_name => truncate(stop_area.name, :length => 30) || "",
+ :zip_code => stop_area.zip_code || "",
+ :city_name => stop_area.city_name || "",
+ :short_city_name => truncate(stop_area.city_name, :length => 15) || "",
+ :user_objectid => stop_area.user_objectid,
+ :longitude => stop_area.longitude,
+ :latitude => stop_area.latitude,
+ :area_type => stop_area.area_type,
+ :comment => stop_area.comment,
+ :text => stop_area.full_name
+ }
+end
+
+node(:stop_area_path) { |stop_area|
+ stop_area_picture_url(stop_area) || ""
+}
diff --git a/config/routes.rb b/config/routes.rb
index e05f5d365..37df03297 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -93,7 +93,11 @@ ChouetteIhm::Application.routes.draw do
resources :stop_area_referentials, :only => [:show] do
post :sync, on: :member
- resources :stop_areas, &deactivable
+ resources :stop_areas do
+ put :deactivate, on: :member
+ put :activate, on: :member
+ get :autocomplete, on: :collection
+ end
end
resources :line_referentials, :only => [:show, :edit, :update] do