aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2016-12-22 12:17:56 +0100
committerXinhui2016-12-22 12:26:26 +0100
commit0c83b3223e458e1af0a469ba5c11bc308f9fe057 (patch)
treed68de7b843b553d0066f159d79e1c12d6ceab43f
parent43a427d74419e7aab6e02c6566754ee148c5d744 (diff)
downloadchouette-core-0c83b3223e458e1af0a469ba5c11bc308f9fe057.tar.bz2
Wip update journey_patterns collections
Refs #2213
-rw-r--r--app/controllers/journey_patterns_collections_controller.rb40
-rw-r--r--app/models/chouette/journey_pattern.rb1
-rw-r--r--app/views/journey_patterns_collections/update.rabl2
3 files changed, 36 insertions, 7 deletions
diff --git a/app/controllers/journey_patterns_collections_controller.rb b/app/controllers/journey_patterns_collections_controller.rb
index 0974ec3dd..39355932e 100644
--- a/app/controllers/journey_patterns_collections_controller.rb
+++ b/app/controllers/journey_patterns_collections_controller.rb
@@ -1,6 +1,4 @@
class JourneyPatternsCollectionsController < ChouetteController
- defaults :resource_class => Chouette::JourneyPattern
-
respond_to :html
respond_to :json
@@ -12,14 +10,42 @@ class JourneyPatternsCollectionsController < ChouetteController
alias_method :route, :parent
def show
+ journey_patterns_state
+ end
+
+ def update
+ state = JSON.parse request.raw_post
+ state.each do |item|
+ journey_pattern = journey_pattern_by_objectid(item['object_id'])
+ journey_pattern_update_stop_points(journey_pattern, item['stop_points']) if journey_pattern
+ end
+
+ journey_patterns_state
+ end
+
+ protected
+
+ def journey_pattern_update_stop_points journey_pattern, stop_points
+ stop_points.each do |sp|
+ stop_id = sp['id']
+ exist = journey_pattern.stop_area_ids.include?(stop_id)
+ next if exist && sp['checked']
+
+ stop_point = route.stop_points.find_by(stop_area_id: stop_id)
+ if sp['checked'] && !exist
+ journey_pattern.stop_points << stop_point
+ else
+ journey_pattern.stop_points.delete(stop_point)
+ end
+ end
+ end
+
+ def journey_patterns_state
@q = route.journey_patterns.includes(:stop_points)
@journey_patterns ||= @q.paginate(:page => params[:page]).order(:name)
end
- def update
- ap "-----Call to #{params[:action]} from #{params[:controller]}"
- ap '------------------------------------------------------------'
- ap params
- ap '------------------------------------------------------------'
+ def journey_pattern_by_objectid objectid
+ Chouette::JourneyPattern.find_by(objectid: objectid)
end
end
diff --git a/app/models/chouette/journey_pattern.rb b/app/models/chouette/journey_pattern.rb
index 9b2b2a9da..75e1a4a14 100644
--- a/app/models/chouette/journey_pattern.rb
+++ b/app/models/chouette/journey_pattern.rb
@@ -7,6 +7,7 @@ class Chouette::JourneyPattern < Chouette::TridentActiveRecord
has_many :vehicle_journeys, :dependent => :destroy
has_many :vehicle_journey_at_stops, :through => :vehicle_journeys
has_and_belongs_to_many :stop_points, -> { order("stop_points.position") }, :before_add => :vjas_add, :before_remove => :vjas_remove, :after_add => :shortcuts_update_for_add, :after_remove => :shortcuts_update_for_remove
+ has_many :stop_areas, through: :stop_points
has_many :journey_pattern_sections
has_many :route_sections, through: :journey_pattern_sections, dependent: :destroy
diff --git a/app/views/journey_patterns_collections/update.rabl b/app/views/journey_patterns_collections/update.rabl
new file mode 100644
index 000000000..13ced5655
--- /dev/null
+++ b/app/views/journey_patterns_collections/update.rabl
@@ -0,0 +1,2 @@
+collection @journey_patterns
+extends "api/v1/journey_patterns/show"