diff options
| author | Luc Donnet | 2018-02-19 11:04:29 +0100 | 
|---|---|---|
| committer | Luc Donnet | 2018-02-19 11:04:29 +0100 | 
| commit | 7b17deff51545358009cb417cbb9d796565e7540 (patch) | |
| tree | a43a5586ad39d838dd607e600dbc15ff18a58ab3 /app/controllers/vehicle_journeys_controller.rb | |
| parent | 89428163fc93a7e09ebb0ca47939f8558afeb5eb (diff) | |
| parent | 5f6008d165df4499319a2121a71842657d6ac3c9 (diff) | |
| download | chouette-core-7b17deff51545358009cb417cbb9d796565e7540.tar.bz2 | |
Merge branch 'master' into 0000-docker
Diffstat (limited to 'app/controllers/vehicle_journeys_controller.rb')
| -rw-r--r-- | app/controllers/vehicle_journeys_controller.rb | 129 | 
1 files changed, 89 insertions, 40 deletions
diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index c941aeae4..e031e4952 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -40,43 +40,26 @@ class VehicleJourneysController < ChouetteController    end    def index -    @stop_points_list = [] -    route.stop_points.each do |sp| -      @stop_points_list << { -        :id => sp.stop_area.id, -        :route_id => sp.try(:route_id), -        :object_id => sp.try(:objectid), -        :position => sp.try(:position), -        :for_boarding => sp.try(:for_boarding), -        :for_alighting => sp.try(:for_alighting), -        :name => sp.stop_area.try(:name), -        :zip_code => sp.stop_area.try(:zip_code), -        :city_name => sp.stop_area.try(:city_name), -        :comment => sp.stop_area.try(:comment), -        :area_type => sp.stop_area.try(:area_type), -        :registration_number => sp.stop_area.try(:registration_number), -        :nearest_topic_name => sp.stop_area.try(:nearest_topic_name), -        :fare_code => sp.stop_area.try(:fare_code), -        :longitude => sp.stop_area.try(:longitude), -        :latitude => sp.stop_area.try(:latitude), -        :long_lat_type => sp.stop_area.try(:long_lat_type), -        :country_code => sp.stop_area.try(:country_code), -        :street_name => sp.stop_area.try(:street_name) -      } -    end - -    @transport_mode = route.line['transport_mode'] -    @transport_submode = route.line['transport_submode'] - -    if params[:jp] -      @jp_origin  = Chouette::JourneyPattern.find_by(objectid: params[:jp]) -      @jp_origin_stop_points = @jp_origin.stop_points -    end - -    index! do +    index! do |format|        if collection.out_of_bounds?          redirect_to params.merge(:page => 1)        end +      format.json do +        @vehicle_journeys = @vehicle_journeys.includes({stop_points: :stop_area}) +      end +      format.html do +        load_missions +        load_custom_fields +        @stop_points_list = map_stop_points(route.stop_points) +        @return_stop_points_list = map_stop_points(route.opposite_route&.stop_points) if has_feature?(:vehicle_journeys_return_route) +        @transport_mode = route.line['transport_mode'] +        @transport_submode = route.line['transport_submode'] + +        if params[:jp] +          @jp_origin  = Chouette::JourneyPattern.find_by(objectid: params[:jp]) +          @jp_origin_stop_points = @jp_origin.stop_points +        end +      end      end    end @@ -92,13 +75,15 @@ class VehicleJourneysController < ChouetteController      scope = maybe_filter_by_departure_time(scope)      scope = maybe_filter_out_journeys_with_time_tables(scope) -    @q = scope.search filtered_ransack_params +    @vehicle_journeys ||= begin +      @q = scope.search filtered_ransack_params -    @ppage = 20 -    @vehicle_journeys = @q.result.paginate(:page => params[:page], :per_page => @ppage) -    @footnotes = route.line.footnotes.to_json -    @matrix    = resource_class.matrix(@vehicle_journeys) -    @vehicle_journeys +      @ppage = 20 +      vehicle_journeys = @q.result.paginate(:page => params[:page], :per_page => @ppage) +      @footnotes = route.line.footnotes.to_json +      @matrix    = resource_class.matrix(vehicle_journeys) +      vehicle_journeys +    end    end    def maybe_filter_by_departure_time(scope) @@ -159,6 +144,7 @@ class VehicleJourneysController < ChouetteController    end    def user_permissions +    @features = Hash[*current_organisation.features.map{|f| [f, true]}.flatten].to_json      policy = policy(:vehicle_journey)      @perms =        %w{create destroy update}.inject({}) do | permissions, action | @@ -167,6 +153,69 @@ class VehicleJourneysController < ChouetteController    end    private +  def load_custom_fields +    @custom_fields = current_workgroup.custom_fields_definitions +  end + +  def map_stop_points points +    (points&.includes(:stop_area) || []).map do |sp| +      { +        :id => sp.stop_area.id, +        :route_id => sp.try(:route_id), +        :object_id => sp.try(:objectid), +        :area_object_id => sp.stop_area.try(:objectid), +        :position => sp.try(:position), +        :for_boarding => sp.try(:for_boarding), +        :for_alighting => sp.try(:for_alighting), +        :name => sp.stop_area.try(:name), +        :time_zone_offset => sp.stop_area.try(:time_zone_offset), +        :time_zone_formatted_offset => sp.stop_area.try(:time_zone_formatted_offset), +        :zip_code => sp.stop_area.try(:zip_code), +        :city_name => sp.stop_area.try(:city_name), +        :comment => sp.stop_area.try(:comment), +        :area_type => sp.stop_area.try(:area_type), +        :area_type_i18n => I18n.t(sp.stop_area.try(:area_type), scope: 'area_types.label'), +        :area_kind => sp.stop_area.try(:kind), +        :stop_area_id => sp.stop_area_id, +        :registration_number => sp.stop_area.try(:registration_number), +        :nearest_topic_name => sp.stop_area.try(:nearest_topic_name), +        :fare_code => sp.stop_area.try(:fare_code), +        :longitude => sp.stop_area.try(:longitude), +        :latitude => sp.stop_area.try(:latitude), +        :long_lat_type => sp.stop_area.try(:long_lat_type), +        :country_code => sp.stop_area.try(:country_code), +        :country_name => sp.stop_area.try(:country_name), +        :street_name => sp.stop_area.try(:street_name) +      } +    end +  end + +  def load_missions +    @all_missions = route.journey_patterns.count > 10 ? [] : route.journey_patterns.map do |item| +      { +        id: item.id, +        "data-item": { +          id: item.id, +          name: item.name, +          published_name: item.published_name, +          object_id: item.objectid, +          short_id: item.get_objectid.short_id, +          full_schedule: item.full_schedule?, +          costs: item.costs, +          stop_area_short_descriptions: item.stop_areas.map do |stop| +            { +              stop_area_short_description: { +                id: stop.id, +                name: stop.name, +                object_id: item.objectid +              } +            } +          end +        }.to_json, +        text: "<strong>#{item.published_name} - #{item.get_objectid.short_id}</strong><br/><small>#{item.registration_number}</small>" +      } +    end +  end    def vehicle_journey_params      params.require(:vehicle_journey).permit(        { footnote_ids: [] },  | 
