blob: 637e30365e9b84d54ec7138bc715cf8b7b7635f4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
class VehicleJourneysController < ChouetteController
defaults :resource_class => Chouette::VehicleJourney
respond_to :js, :only => [:select_journey_pattern, :edit, :new, :index]
belongs_to :referential do
belongs_to :line, :parent_class => Chouette::Line do
belongs_to :route, :parent_class => Chouette::Route
end
end
def select_journey_pattern
if params[:journey_pattern_id]
selected_journey_pattern = Chouette::JourneyPattern.find( params[:journey_pattern_id])
@vehicle_journey = vehicle_journey
@vehicle_journey.update_journey_pattern(selected_journey_pattern)
end
end
def create
create!(:alert => t('activerecord.errors.models.vehicle_journey.invalid_times'))
end
def update
update!(:alert => t('activerecord.errors.models.vehicle_journey.invalid_times'))
end
def index
index! do
@matrix ||= matrix
if collection.out_of_bounds?
redirect_to params.merge(:page => 1)
end
end
end
# overwrite inherited resources to use delete instead of destroy
# foreign keys will propagate deletion)
def destroy_resource(object)
object.delete
end
protected
alias_method :vehicle_journey, :resource
def collection
@vehicle_filter = VehicleFilter.new( adapted_params)
@q = @vehicle_filter.vehicle_journeys.search( @vehicle_filter.filtered_params)
@vehicle_journeys ||= @q.result( :distinct => true ).order( "vehicle_journey_at_stops.departure_time").paginate(:page => params[:page], :per_page => 8)
end
def adapted_params
params.tap do |adapted_params|
adapted_params.merge!( :route => parent)
hour_entry = "vehicle_journey_at_stops_departure_time_gt(4i)".to_sym
if params[:q] && params[:q][ hour_entry]
adapted_params[:q].merge! hour_entry => (params[:q][ hour_entry].to_i - utc_offset)
end
end
end
def utc_offset
# Ransack Time eval - utc eval
sample = [2001,1,1,10,0]
Time.zone.local(*sample).utc.hour - Time.utc(*sample).hour
end
def matrix
{}.tap do |hash|
Chouette::VehicleJourney.find( @vehicle_journeys.map { |v| v.id } ).
each do |vj|
vj.vehicle_journey_at_stops.each do |vjas|
hash[ "#{vj.id}-#{vjas.stop_point_id}"] = vjas
end
end
end
end
end
|