diff options
| author | Xinhui | 2016-12-22 12:17:56 +0100 |
|---|---|---|
| committer | Xinhui | 2016-12-22 12:26:26 +0100 |
| commit | 0c83b3223e458e1af0a469ba5c11bc308f9fe057 (patch) | |
| tree | d68de7b843b553d0066f159d79e1c12d6ceab43f | |
| parent | 43a427d74419e7aab6e02c6566754ee148c5d744 (diff) | |
| download | chouette-core-0c83b3223e458e1af0a469ba5c11bc308f9fe057.tar.bz2 | |
Wip update journey_patterns collections
Refs #2213
| -rw-r--r-- | app/controllers/journey_patterns_collections_controller.rb | 40 | ||||
| -rw-r--r-- | app/models/chouette/journey_pattern.rb | 1 | ||||
| -rw-r--r-- | app/views/journey_patterns_collections/update.rabl | 2 |
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" |
