ninoxe 1.1.5 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +9 -12
- data/app/models/chouette/access_link.rb +52 -51
- data/app/models/chouette/access_point.rb +7 -7
- data/app/models/chouette/active_record.rb +28 -28
- data/app/models/chouette/company.rb +3 -3
- data/app/models/chouette/connection_link.rb +3 -3
- data/app/models/chouette/footnote.rb +1 -1
- data/app/models/chouette/group_of_line.rb +2 -2
- data/app/models/chouette/journey_pattern.rb +7 -3
- data/app/models/chouette/line.rb +11 -9
- data/app/models/chouette/network.rb +2 -2
- data/app/models/chouette/pt_link.rb +1 -1
- data/app/models/chouette/route.rb +9 -10
- data/app/models/chouette/stop_area.rb +8 -8
- data/app/models/chouette/stop_point.rb +3 -3
- data/app/models/chouette/time_table.rb +25 -122
- data/app/models/chouette/time_table_date.rb +1 -1
- data/app/models/chouette/time_table_period.rb +1 -1
- data/app/models/chouette/vehicle_journey.rb +82 -77
- data/app/models/chouette/vehicle_journey_at_stop.rb +1 -1
- data/config/database.yml +16 -8
- data/config/database.yml.travis +15 -6
- data/db/migrate/20150526075108_add_foreign_key_to_routes.rb +28 -0
- data/lib/ninoxe/engine.rb +4 -0
- data/lib/ninoxe/version.rb +1 -1
- data/lib/ninoxe.rb +3 -0
- data/spec/dummy/README.rdoc +15 -248
- data/spec/dummy/Rakefile +1 -1
- data/spec/dummy/app/{mailers/.gitkeep → assets/images/.keep} +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +3 -5
- data/spec/dummy/app/assets/stylesheets/application.css +1 -1
- data/spec/dummy/app/controllers/application_controller.rb +3 -1
- data/spec/dummy/app/{models/.gitkeep → controllers/concerns/.keep} +0 -0
- data/spec/dummy/{lib/assets/.gitkeep → app/mailers/.keep} +0 -0
- data/spec/dummy/{log/.gitkeep → app/models/.keep} +0 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +2 -2
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config/application.rb +8 -36
- data/spec/dummy/config/boot.rb +4 -9
- data/spec/dummy/config/database.yml +16 -8
- data/spec/dummy/config/environment.rb +2 -4
- data/spec/dummy/config/environments/development.rb +11 -19
- data/spec/dummy/config/environments/production.rb +41 -28
- data/spec/dummy/config/environments/test.rb +13 -14
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +6 -5
- data/spec/dummy/config/initializers/secret_token.rb +7 -2
- data/spec/dummy/config/initializers/session_store.rb +1 -6
- data/spec/dummy/config/initializers/wrap_parameters.rb +6 -6
- data/spec/dummy/config/locales/en.yml +20 -2
- data/spec/dummy/config/locales/fr.yml +23 -0
- data/spec/dummy/config.ru +1 -1
- data/spec/dummy/db/schema.rb +147 -143
- data/spec/dummy/lib/assets/.keep +0 -0
- data/spec/dummy/log/.keep +0 -0
- data/spec/dummy/public/404.html +43 -11
- data/spec/dummy/public/422.html +43 -11
- data/spec/dummy/public/500.html +43 -11
- data/spec/dummy/script/rails +1 -1
- data/spec/factories/chouette_access_links.rb +13 -0
- data/spec/factories/chouette_access_points.rb +12 -0
- data/spec/factories/chouette_companies.rb +9 -0
- data/spec/factories/chouette_connection_links.rb +13 -0
- data/spec/factories/chouette_footnotes.rb +10 -0
- data/spec/factories/chouette_group_of_lines.rb +9 -0
- data/spec/factories/chouette_journey_pattern.rb +40 -0
- data/spec/factories/chouette_lines.rb +44 -0
- data/spec/factories/chouette_networks.rb +9 -0
- data/spec/factories/chouette_routes.rb +26 -0
- data/spec/factories/chouette_stop_areas.rb +12 -0
- data/spec/factories/chouette_stop_points.rb +10 -0
- data/spec/factories/chouette_time_table.rb +37 -0
- data/spec/factories/chouette_vehicle_journey.rb +66 -0
- data/spec/factories/chouette_vehicle_journey_at_stop.rb +8 -0
- data/spec/models/chouette/access_link_spec.rb +17 -13
- data/spec/models/chouette/access_point_spec.rb +106 -103
- data/spec/models/chouette/active_record_spec.rb +57 -57
- data/spec/models/chouette/area_type_spec.rb +8 -8
- data/spec/models/chouette/company_spec.rb +18 -18
- data/spec/models/chouette/connection_link_spec.rb +19 -15
- data/spec/models/chouette/direction_spec.rb +8 -8
- data/spec/models/chouette/exporter_spec.rb +4 -4
- data/spec/models/chouette/file_validator_spec.rb +4 -4
- data/spec/models/chouette/footnote_spec.rb +1 -1
- data/spec/models/chouette/group_of_line_spec.rb +11 -11
- data/spec/models/chouette/journey_pattern_spec.rb +16 -14
- data/spec/models/chouette/line_spec.rb +36 -32
- data/spec/models/chouette/loader_spec.rb +9 -9
- data/spec/models/chouette/network_spec.rb +9 -9
- data/spec/models/chouette/object_id_spec.rb +31 -28
- data/spec/models/chouette/route_spec.rb +51 -47
- data/spec/models/chouette/stop_area_spec.rb +191 -188
- data/spec/models/chouette/stop_point_spec.rb +13 -10
- data/spec/models/chouette/time_table_period_spec.rb +18 -18
- data/spec/models/chouette/time_table_spec.rb +303 -255
- data/spec/models/chouette/transport_mode_spec.rb +10 -10
- data/spec/models/chouette/trident_active_record_spec.rb +17 -17
- data/spec/models/chouette/vehicle_journey_at_stop_spec.rb +13 -12
- data/spec/models/chouette/vehicle_journey_spec.rb +46 -46
- data/spec/presenters/chouette/geometry/line_presenter_spec.rb +2 -2
- data/spec/spec_helper.rb +22 -9
- metadata +102 -87
- data/config/database.yml.ci +0 -14
- data/lib/factories/chouette_access_links.rb +0 -11
- data/lib/factories/chouette_access_points.rb +0 -8
- data/lib/factories/chouette_companies.rb +0 -5
- data/lib/factories/chouette_connection_links.rb +0 -11
- data/lib/factories/chouette_footnotes.rb +0 -6
- data/lib/factories/chouette_group_of_lines.rb +0 -5
- data/lib/factories/chouette_journey_pattern.rb +0 -32
- data/lib/factories/chouette_lines.rb +0 -31
- data/lib/factories/chouette_networks.rb +0 -5
- data/lib/factories/chouette_routes.rb +0 -20
- data/lib/factories/chouette_stop_areas.rb +0 -8
- data/lib/factories/chouette_stop_points.rb +0 -7
- data/lib/factories/chouette_time_table.rb +0 -23
- data/lib/factories/chouette_vehicle_journey.rb +0 -51
- data/lib/factories/chouette_vehicle_journey_at_stop.rb +0 -5
- data/spec/dummy/config/initializers/active_record.rb +0 -2
@@ -2,13 +2,15 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
|
|
2
2
|
# FIXME http://jira.codehaus.org/browse/JRUBY-6358
|
3
3
|
self.primary_key = "id"
|
4
4
|
|
5
|
-
attr_accessible :objectid, :object_version, :creation_time, :creator_id, :version, :comment
|
6
|
-
attr_accessible :int_day_types,:monday,:tuesday,:wednesday,:thursday,:friday,:saturday,:sunday
|
7
|
-
attr_accessible :start_date, :end_date
|
8
|
-
|
5
|
+
# attr_accessible :objectid, :object_version, :creation_time, :creator_id, :version, :comment
|
6
|
+
# attr_accessible :int_day_types,:monday,:tuesday,:wednesday,:thursday,:friday,:saturday,:sunday
|
7
|
+
# attr_accessible :start_date, :end_date
|
8
|
+
# attr_accessible :dates_attributes,:periods_attributes
|
9
|
+
# attr_accessible :tag_list, :tag_search
|
9
10
|
|
10
11
|
acts_as_taggable
|
11
|
-
|
12
|
+
|
13
|
+
attr_accessor :monday,:tuesday,:wednesday,:thursday,:friday,:saturday,:sunday
|
12
14
|
attr_accessor :tag_search
|
13
15
|
|
14
16
|
def self.ransackable_attributes auth_object = nil
|
@@ -17,8 +19,8 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
|
|
17
19
|
|
18
20
|
has_and_belongs_to_many :vehicle_journeys, :class_name => 'Chouette::VehicleJourney'
|
19
21
|
|
20
|
-
has_many :dates, inverse_of: :time_table, :validate => :true, :class_name => "Chouette::TimeTableDate", :
|
21
|
-
has_many :periods, inverse_of: :time_table, :validate => :true, :class_name => "Chouette::TimeTablePeriod", :
|
22
|
+
has_many :dates, -> {order(:date)}, inverse_of: :time_table, :validate => :true, :class_name => "Chouette::TimeTableDate", :dependent => :destroy
|
23
|
+
has_many :periods, -> {order(:period_start)}, inverse_of: :time_table, :validate => :true, :class_name => "Chouette::TimeTablePeriod", :dependent => :destroy
|
22
24
|
|
23
25
|
after_save :save_shortcuts
|
24
26
|
|
@@ -28,7 +30,6 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
|
|
28
30
|
|
29
31
|
accepts_nested_attributes_for :dates, :allow_destroy => :true
|
30
32
|
accepts_nested_attributes_for :periods, :allow_destroy => :true
|
31
|
-
attr_accessible :dates_attributes,:periods_attributes
|
32
33
|
|
33
34
|
validates_presence_of :comment
|
34
35
|
validates_associated :dates
|
@@ -406,7 +407,7 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
|
|
406
407
|
end
|
407
408
|
self.dates = dates
|
408
409
|
end
|
409
|
-
self.dates.sort! { |a,b| a.date <=> b.date}
|
410
|
+
self.dates.to_a.sort! { |a,b| a.date <=> b.date}
|
410
411
|
self.save!
|
411
412
|
end
|
412
413
|
end
|
@@ -414,131 +415,33 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
|
|
414
415
|
# remove dates form tt which aren't in another_tt
|
415
416
|
def intersect!(another_tt)
|
416
417
|
transaction do
|
417
|
-
|
418
|
-
# if both tt have periods with common day_types, intersect them
|
419
|
-
if !self.periods.empty? && !another_tt.periods.empty?
|
420
|
-
if common_day_types != 0
|
421
|
-
periods = []
|
422
|
-
days = []
|
423
|
-
valid_days = self.class.valid_days(common_day_types)
|
424
|
-
self.optimize_periods.each do |p1|
|
425
|
-
another_tt.optimize_periods.each do |p2|
|
426
|
-
if p1.overlap? p2
|
427
|
-
# create period for intersection
|
428
|
-
pi = Chouette::TimeTablePeriod.new(:period_start => [p1.period_start,p2.period_start].max,
|
429
|
-
:period_end => [p1.period_end,p2.period_end].min)
|
430
|
-
if !self.effective_days_of_period(pi,valid_days).empty? && !another_tt.effective_days_of_period(pi,valid_days).empty?
|
431
|
-
if pi.period_start == pi.period_end
|
432
|
-
days << pi.period_start
|
433
|
-
else
|
434
|
-
periods << pi
|
435
|
-
end
|
436
|
-
end
|
437
|
-
end
|
438
|
-
end
|
439
|
-
end
|
440
|
-
# intersect dates
|
441
|
-
days |= another_tt.intersects(self.included_days) & self.intersects(another_tt.included_days)
|
442
|
-
excluded_days = self.excluded_days | another_tt.excluded_days
|
443
|
-
self.dates.clear
|
444
|
-
days.each {|day| self.dates << Chouette::TimeTableDate.new( :date =>day, :in_out => true)}
|
445
|
-
self.periods = periods
|
446
|
-
common_day_types = 0 if periods.empty?
|
447
|
-
self.int_day_types = common_day_types
|
448
|
-
days_of_periods = self.effective_days_of_periods
|
449
|
-
excluded_days.each do |day|
|
450
|
-
self.dates << Chouette::TimeTableDate.new( :date =>day, :in_out => false) if days_of_periods.include?(day)
|
451
|
-
end
|
452
|
-
end
|
453
|
-
else
|
418
|
+
|
454
419
|
# transform tt as effective dates and get common ones
|
455
420
|
days = another_tt.intersects(self.effective_days) & self.intersects(another_tt.effective_days)
|
456
421
|
self.dates.clear
|
457
422
|
days.each {|d| self.dates << Chouette::TimeTableDate.new( :date =>d, :in_out => true)}
|
458
423
|
self.periods.clear
|
459
424
|
self.int_day_types = 0
|
460
|
-
|
461
|
-
|
462
|
-
self.save!
|
425
|
+
self.dates.to_a.sort! { |a,b| a.date <=> b.date}
|
426
|
+
self.save!
|
463
427
|
end
|
464
428
|
end
|
465
429
|
|
466
430
|
|
467
431
|
def disjoin!(another_tt)
|
468
432
|
transaction do
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
# p1 is removed, keep remaining dates as included
|
482
|
-
days |= self.effective_days_of_period(p1,remain_days)
|
483
|
-
deleted = true
|
484
|
-
break
|
485
|
-
elsif p1.contains? p2
|
486
|
-
# p1 is broken in 2; keep remaining dates covered by p2 as included days
|
487
|
-
days |= self.effective_days_of_period(p2,remain_days)
|
488
|
-
if p1.period_start != p2.period_start
|
489
|
-
pi = Chouette::TimeTablePeriod.new(:period_start => p1.period_start,
|
490
|
-
:period_end => p2.period_start - 1)
|
491
|
-
if !self.effective_days_of_period(pi,valid_days).empty?
|
492
|
-
if pi.period_start == pi.period_end
|
493
|
-
days << pi.period_start
|
494
|
-
else
|
495
|
-
periods << pi
|
496
|
-
end
|
497
|
-
end
|
498
|
-
end
|
499
|
-
if p1.period_end != p2.period_end
|
500
|
-
p1.period_start = p2.period_end + 1
|
501
|
-
else
|
502
|
-
deleted = true
|
503
|
-
break
|
504
|
-
end
|
505
|
-
elsif p1.overlap? p2
|
506
|
-
if p2.period_start <= p1.period_start
|
507
|
-
p2.period_start = p1.period_start
|
508
|
-
p1.period_start = p2.period_end + 1
|
509
|
-
else
|
510
|
-
p2.period_end = p1.period_end
|
511
|
-
p1.period_end = p2.period_start - 1
|
512
|
-
end
|
513
|
-
days |= self.effective_days_of_period(p2,remain_days)
|
514
|
-
end
|
515
|
-
end
|
516
|
-
unless deleted || self.effective_days_of_period(p1,valid_days).blank?
|
517
|
-
if p1.period_start != p1.period_end
|
518
|
-
periods << p1
|
519
|
-
else
|
520
|
-
days << p1.period_start
|
521
|
-
end
|
522
|
-
end
|
523
|
-
end
|
524
|
-
# rebuild periods and dates
|
525
|
-
self.periods = periods
|
526
|
-
self.int_day_types = 0 if periods.blank?
|
527
|
-
days.each { |d| self.dates |= [Chouette::TimeTableDate.new( :date =>d, :in_out => true)] }
|
528
|
-
end
|
529
|
-
else
|
530
|
-
# otherwise remove or exclude dates and delete empty periods
|
531
|
-
# first remove peculiar dates
|
532
|
-
days = self.intersects(another_tt.effective_days)
|
533
|
-
self.dates -= self.dates.select{|date| days.include?(date.date)}
|
534
|
-
# then add excluded dates
|
535
|
-
self.intersects(another_tt.effective_days).each do |d|
|
536
|
-
self.dates |= [Chouette::TimeTableDate.new( :date =>d, :in_out => false)]
|
537
|
-
end
|
538
|
-
end
|
539
|
-
self.dates.sort! { |a,b| a.date <=> b.date}
|
540
|
-
self.periods.sort! { |a,b| a.period_start <=> b.period_start}
|
541
|
-
self.save!
|
433
|
+
# remove days from another calendar
|
434
|
+
days_to_exclude = self.intersects(another_tt.effective_days)
|
435
|
+
days = self.effective_days - days_to_exclude
|
436
|
+
self.dates.clear
|
437
|
+
self.periods.clear
|
438
|
+
self.int_day_types = 0
|
439
|
+
|
440
|
+
days.each {|d| self.dates << Chouette::TimeTableDate.new( :date =>d, :in_out => true)}
|
441
|
+
|
442
|
+
self.dates.to_a.sort! { |a,b| a.date <=> b.date}
|
443
|
+
self.periods.to_a.sort! { |a,b| a.period_start <=> b.period_start}
|
444
|
+
self.save!
|
542
445
|
end
|
543
446
|
end
|
544
447
|
|
@@ -6,7 +6,7 @@ class Chouette::TimeTableDate < Chouette::ActiveRecord
|
|
6
6
|
validates_presence_of :date
|
7
7
|
validates_uniqueness_of :date, :scope => :time_table_id
|
8
8
|
|
9
|
-
attr_accessible :date, :position, :time_table_id, :time_table, :in_out
|
9
|
+
# attr_accessible :date, :position, :time_table_id, :time_table, :in_out
|
10
10
|
|
11
11
|
def self.model_name
|
12
12
|
ActiveModel::Name.new Chouette::TimeTableDate, Chouette, "TimeTableDate"
|
@@ -3,7 +3,7 @@ class Chouette::TimeTablePeriod < Chouette::ActiveRecord
|
|
3
3
|
belongs_to :time_table, inverse_of: :periods
|
4
4
|
acts_as_list :scope => 'time_table_id = #{time_table_id}',:top_of_list => 0
|
5
5
|
|
6
|
-
attr_accessible :period_start, :period_end, :position,:time_table_id,:time_table
|
6
|
+
#attr_accessible :period_start, :period_end, :position,:time_table_id,:time_table
|
7
7
|
|
8
8
|
validates_presence_of :period_start
|
9
9
|
validates_presence_of :period_end
|
@@ -1,101 +1,106 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
attr_accessible :route, :transport_mode,:transport_mode_name, :published_journey_name, :published_journey_identifier, :facility, :vehicle_type_identifier, :number
|
9
|
-
attr_accessible :vehicle_journey_at_stops_attributes, :time_table_tokens, :time_tables, :mobility_restricted_suitability, :flexible_service
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
[:transport_mode, :published_journey_name, :vehicle_type_identifier, :published_journey_identifier, :comment, :status_value]
|
14
|
-
end
|
1
|
+
module Chouette
|
2
|
+
class VehicleJourney < TridentActiveRecord
|
3
|
+
#
|
4
|
+
# FIXME http://jira.codehaus.org/browse/JRUBY-6358
|
5
|
+
self.primary_key = "id"
|
6
|
+
|
7
|
+
# attr_accessible :route_id, :journey_pattern_id, :time_slot_id, :company_id, :objectid, :object_version, :creation_time, :creator_id, :comment, :status_value
|
8
|
+
# attr_accessible :route, :transport_mode,:transport_mode_name, :published_journey_name, :published_journey_identifier, :facility, :vehicle_type_identifier, :number
|
9
|
+
# attr_accessible :vehicle_journey_at_stops_attributes, :time_table_tokens, :time_tables, :mobility_restricted_suitability, :flexible_service
|
10
|
+
|
11
|
+
attr_accessor :transport_mode_name
|
12
|
+
attr_reader :time_table_tokens
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
def self.nullable_attributes
|
15
|
+
[:transport_mode, :published_journey_name, :vehicle_type_identifier, :published_journey_identifier, :comment, :status_value]
|
16
|
+
end
|
19
17
|
|
20
|
-
|
21
|
-
|
18
|
+
belongs_to :company
|
19
|
+
belongs_to :route
|
20
|
+
belongs_to :journey_pattern
|
22
21
|
|
23
|
-
|
24
|
-
|
22
|
+
has_and_belongs_to_many :footnotes, :class_name => 'Chouette::Footnote'
|
23
|
+
# attr_accessible :footnote_ids
|
25
24
|
|
26
|
-
|
27
|
-
|
25
|
+
validates_presence_of :route
|
26
|
+
validates_presence_of :journey_pattern
|
28
27
|
|
29
|
-
|
30
|
-
|
28
|
+
has_many :vehicle_journey_at_stops, -> { includes(:stop_point).order("stop_points.position") }, :dependent => :destroy
|
29
|
+
has_and_belongs_to_many :time_tables, :class_name => 'Chouette::TimeTable', :foreign_key => "vehicle_journey_id", :association_foreign_key => "time_table_id"
|
30
|
+
has_many :stop_points, -> { order("stop_points.position") }, :through => :vehicle_journey_at_stops
|
31
31
|
|
32
|
-
|
33
|
-
|
32
|
+
validate :increasing_times
|
33
|
+
validates_presence_of :number
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
35
|
+
before_validation :set_default_values
|
36
|
+
def set_default_values
|
37
|
+
if number.nil?
|
38
|
+
self.number = 0
|
39
|
+
end
|
39
40
|
end
|
40
|
-
end
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
transport_mode && Chouette::TransportMode.new( transport_mode.underscore)
|
45
|
-
end
|
42
|
+
scope :without_any_time_table, -> { joins('LEFT JOIN "time_tables_vehicle_journeys" ON "time_tables_vehicle_journeys"."vehicle_journey_id" = "vehicle_journeys"."id" LEFT JOIN "time_tables" ON "time_tables"."id" = "time_tables_vehicle_journeys"."time_table_id"').where(:time_tables => { :id => nil}) }
|
43
|
+
scope :without_any_passing_time, -> { joins('LEFT JOIN "vehicle_journey_at_stops" ON "vehicle_journey_at_stops"."vehicle_journey_id" = "vehicle_journeys"."id"').where(vehicle_journey_at_stops: { id: nil }) }
|
46
44
|
|
47
|
-
|
48
|
-
self.transport_mode = (transport_mode_name ? transport_mode_name.camelcase : nil)
|
49
|
-
end
|
45
|
+
accepts_nested_attributes_for :vehicle_journey_at_stops, :allow_destroy => true
|
50
46
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
transport_mode_name.to_i > 0
|
47
|
+
def transport_mode_name
|
48
|
+
# return nil if transport_mode is nil
|
49
|
+
transport_mode && Chouette::TransportMode.new( transport_mode.underscore)
|
55
50
|
end
|
56
|
-
end
|
57
|
-
|
58
51
|
|
59
|
-
|
60
|
-
|
61
|
-
vehicle_journey_at_stops.select{|vjas| vjas.departure_time && vjas.arrival_time}.each do |vjas|
|
62
|
-
errors.add( :vehicle_journey_at_stops, 'time gap overflow') unless vjas.increasing_times_validate( previous)
|
63
|
-
previous = vjas
|
52
|
+
def transport_mode_name=(transport_mode_name)
|
53
|
+
self.transport_mode = (transport_mode_name ? transport_mode_name.camelcase : nil)
|
64
54
|
end
|
65
|
-
end
|
66
55
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
def extra_vjas_in_relation_to_a_journey_pattern(selected_journey_pattern)
|
74
|
-
extra_stops = self.extra_stops_in_relation_to_a_journey_pattern(selected_journey_pattern)
|
75
|
-
self.vehicle_journey_at_stops.select { |vjas| extra_stops.include?( vjas.stop_point)}
|
76
|
-
end
|
77
|
-
def time_table_tokens=(ids)
|
78
|
-
self.time_table_ids = ids.split(",")
|
79
|
-
end
|
80
|
-
def bounding_dates
|
81
|
-
dates = []
|
56
|
+
@@transport_mode_names = nil
|
57
|
+
def self.transport_mode_names
|
58
|
+
@@transport_mode_names ||= Chouette::TransportMode.all.select do |transport_mode_name|
|
59
|
+
transport_mode_name.to_i > 0
|
60
|
+
end
|
61
|
+
end
|
82
62
|
|
83
|
-
|
84
|
-
|
85
|
-
|
63
|
+
def increasing_times
|
64
|
+
previous = nil
|
65
|
+
vehicle_journey_at_stops.select{|vjas| vjas.departure_time && vjas.arrival_time}.each do |vjas|
|
66
|
+
errors.add( :vehicle_journey_at_stops, 'time gap overflow') unless vjas.increasing_times_validate( previous)
|
67
|
+
previous = vjas
|
68
|
+
end
|
86
69
|
end
|
87
70
|
|
88
|
-
|
89
|
-
|
71
|
+
def missing_stops_in_relation_to_a_journey_pattern(selected_journey_pattern)
|
72
|
+
selected_journey_pattern.stop_points - self.stop_points
|
73
|
+
end
|
74
|
+
def extra_stops_in_relation_to_a_journey_pattern(selected_journey_pattern)
|
75
|
+
self.stop_points - selected_journey_pattern.stop_points
|
76
|
+
end
|
77
|
+
def extra_vjas_in_relation_to_a_journey_pattern(selected_journey_pattern)
|
78
|
+
extra_stops = self.extra_stops_in_relation_to_a_journey_pattern(selected_journey_pattern)
|
79
|
+
self.vehicle_journey_at_stops.select { |vjas| extra_stops.include?( vjas.stop_point)}
|
80
|
+
end
|
81
|
+
def time_table_tokens=(ids)
|
82
|
+
self.time_table_ids = ids.split(",")
|
83
|
+
end
|
84
|
+
def bounding_dates
|
85
|
+
dates = []
|
90
86
|
|
91
|
-
|
92
|
-
|
87
|
+
time_tables.each do |tm|
|
88
|
+
dates << tm.start_date if tm.start_date
|
89
|
+
dates << tm.end_date if tm.end_date
|
90
|
+
end
|
93
91
|
|
94
|
-
|
95
|
-
self.vehicle_journey_at_stops.build( :stop_point => sp)
|
92
|
+
dates.empty? ? [] : [dates.min, dates.max]
|
96
93
|
end
|
97
|
-
|
98
|
-
|
94
|
+
|
95
|
+
def update_journey_pattern( selected_journey_pattern)
|
96
|
+
return unless selected_journey_pattern.route_id==self.route_id
|
97
|
+
|
98
|
+
missing_stops_in_relation_to_a_journey_pattern(selected_journey_pattern).each do |sp|
|
99
|
+
self.vehicle_journey_at_stops.build( :stop_point => sp)
|
100
|
+
end
|
101
|
+
extra_vjas_in_relation_to_a_journey_pattern(selected_journey_pattern).each do |vjas|
|
102
|
+
vjas._destroy = true
|
103
|
+
end
|
99
104
|
end
|
100
105
|
end
|
101
106
|
end
|
@@ -10,7 +10,7 @@ module Chouette
|
|
10
10
|
belongs_to :vehicle_journey
|
11
11
|
|
12
12
|
attr_accessor :_destroy
|
13
|
-
attr_accessible :vehicle_journey_id, :stop_point_id, :connecting_service_id, :boarding_alighting_possibility, :arrival_time, :departure_time, :waiting_time, :elapse_duration, :headway_frequency, :_destroy, :stop_point, :for_boarding, :for_alighting
|
13
|
+
# attr_accessible :vehicle_journey_id, :stop_point_id, :connecting_service_id, :boarding_alighting_possibility, :arrival_time, :departure_time, :waiting_time, :elapse_duration, :headway_frequency, :_destroy, :stop_point, :for_boarding, :for_alighting
|
14
14
|
|
15
15
|
validate :arrival_must_be_before_departure
|
16
16
|
def arrival_must_be_before_departure
|
data/config/database.yml
CHANGED
@@ -1,11 +1,19 @@
|
|
1
|
-
|
1
|
+
default: &default
|
2
2
|
adapter: postgresql
|
3
|
-
|
3
|
+
encoding: unicode
|
4
|
+
pool: 5
|
4
5
|
port: 5432
|
5
|
-
|
6
|
-
|
6
|
+
host: localhost
|
7
|
+
username: chouette
|
8
|
+
password: chouette
|
9
|
+
|
10
|
+
development:
|
11
|
+
<<: *default
|
12
|
+
database: ninoxe_dev
|
13
|
+
|
14
|
+
# Warning: The database defined as "test" will be erased and
|
15
|
+
# re-generated from your development database when you run "rake".
|
16
|
+
# Do not set this db to the same as development or production.
|
7
17
|
test:
|
8
|
-
|
9
|
-
database: ninoxe_test
|
10
|
-
port: 5432
|
11
|
-
username: <%= ENV['USER'] %>
|
18
|
+
<<: *default
|
19
|
+
database: ninoxe_test
|
data/config/database.yml.travis
CHANGED
@@ -1,9 +1,18 @@
|
|
1
|
-
|
1
|
+
default: &default
|
2
2
|
adapter: postgresql
|
3
|
-
|
3
|
+
encoding: unicode
|
4
|
+
pool: 5
|
5
|
+
port: 5432
|
6
|
+
host: localhost
|
4
7
|
username: postgres
|
5
|
-
|
8
|
+
|
9
|
+
development:
|
10
|
+
<<: *default
|
11
|
+
database: ninoxe_dev
|
12
|
+
|
13
|
+
# Warning: The database defined as "test" will be erased and
|
14
|
+
# re-generated from your development database when you run "rake".
|
15
|
+
# Do not set this db to the same as development or production.
|
6
16
|
test:
|
7
|
-
|
8
|
-
database: ninoxe_test
|
9
|
-
username: postgres
|
17
|
+
<<: *default
|
18
|
+
database: ninoxe_test
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class AddForeignKeyToRoutes < ActiveRecord::Migration
|
2
|
+
require "forwardable"
|
3
|
+
def up
|
4
|
+
Chouette::Route.all.map do |route|
|
5
|
+
if route.opposite_route_id.present? && !Chouette::Route.exists?(route.opposite_route_id)
|
6
|
+
route.update_attributes :opposite_route_id => nil
|
7
|
+
end
|
8
|
+
end
|
9
|
+
change_table :routes do |t|
|
10
|
+
if @connection.foreign_keys(:routes).any?
|
11
|
+
@connection.foreign_keys(:routes).map do |f|
|
12
|
+
name = f.options[:name]
|
13
|
+
if (name == "route_opposite_route_fkey" )
|
14
|
+
remove_foreign_key :routes, :name => name
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
t.foreign_key :routes, :dependent => :nullify, :column => 'opposite_route_id', :name => 'route_opposite_route_fkey'
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
def down
|
24
|
+
change_table :routes do |t|
|
25
|
+
t.remove_foreign_key :name => :route_opposite_route_fkey
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/ninoxe/engine.rb
CHANGED
@@ -11,5 +11,9 @@ module Ninoxe
|
|
11
11
|
|
12
12
|
::Chouette::ActiveRecord.logger = Rails.logger
|
13
13
|
end
|
14
|
+
|
15
|
+
initializer "ninoxe.factories", :after => "factory_girl.set_factory_paths" do
|
16
|
+
FactoryGirl.definition_file_paths << File.expand_path('../../../spec/factories', __FILE__) if defined?(FactoryGirl)
|
17
|
+
end
|
14
18
|
end
|
15
19
|
end
|
data/lib/ninoxe/version.rb
CHANGED