aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuc Donnet2018-05-28 22:33:13 +0200
committerGitHub2018-05-28 22:33:13 +0200
commit3de76935e461c2b1302a086817d7d65ec6436b73 (patch)
tree72125eeed7043affd971fc3eba913e5396309741
parent4667e76f5280cf40f9ee494c6764182970760132 (diff)
parentb060a1901a18e24e8925cf65ca566d75c03cee32 (diff)
downloadchouette-core-3de76935e461c2b1302a086817d7d65ec6436b73.tar.bz2
Merge pull request #580 from af83/7031-fox-consolidated-view
7031 Css fixes on Consolidated view
-rw-r--r--app/assets/stylesheets/modules/_vj_collection.sass10
-rw-r--r--app/controllers/referential_vehicle_journeys_controller.rb2
-rw-r--r--app/models/chouette/route.rb6
-rw-r--r--app/models/chouette/stop_point.rb3
-rw-r--r--app/models/chouette/vehicle_journey.rb1
-rw-r--r--app/models/chouette/vehicle_journey_at_stop.rb4
-rw-r--r--app/services/referential_consolidated.rb45
-rw-r--r--app/views/referential_vehicle_journeys/_consolidated_line.html.slim4
8 files changed, 61 insertions, 14 deletions
diff --git a/app/assets/stylesheets/modules/_vj_collection.sass b/app/assets/stylesheets/modules/_vj_collection.sass
index 9bb19f75f..b230991fb 100644
--- a/app/assets/stylesheets/modules/_vj_collection.sass
+++ b/app/assets/stylesheets/modules/_vj_collection.sass
@@ -22,7 +22,7 @@
display: block
height: 100%
- > span
+ > span:not(.small)
position: absolute
display: block
line-height: 1em
@@ -268,9 +268,12 @@
margin-bottom: 0px
& > *
display: inline-block
+ .t2e-item-list
+ overflow: scroll
& > *
overflow: hidden
min-width: 0
+ max-width: none
&.open
margin-bottom: 40px
@@ -305,6 +308,11 @@
.table-2entries > .t2e-head > .td > div > span::after
bottom: -6px !important
+ .table-2entries > .t2e-head > .td > div > span
+ text-overflow: ellipsis
+ overflow: hidden
+ white-space: nowrap
+
.table.table-2entries .t2e-item-list .t2e-item
background-color: #F9F9F9
diff --git a/app/controllers/referential_vehicle_journeys_controller.rb b/app/controllers/referential_vehicle_journeys_controller.rb
index 111d39c2b..917326a6d 100644
--- a/app/controllers/referential_vehicle_journeys_controller.rb
+++ b/app/controllers/referential_vehicle_journeys_controller.rb
@@ -23,7 +23,7 @@ class ReferentialVehicleJourneysController < ChouetteController
private
def collection
- @q ||= end_of_association_chain
+ @q ||= end_of_association_chain.select("vehicle_journeys.id", "vehicle_journeys.journey_pattern_id", "vehicle_journeys.route_id", "vehicle_journeys.objectid", "vehicle_journeys.published_journey_name")
@q = @q.with_stop_area_ids(params[:q][:stop_area_ids]) if params[:q] && params[:q][:stop_area_ids]
@q = ransack_period_range(scope: @q, error_message: t('vehicle_journeys.errors.purchase_window'), query: :in_purchase_window, prefix: :purchase_window)
@q = ransack_period_range(scope: @q, error_message: t('vehicle_journeys.errors.time_table'), query: :with_matching_timetable, prefix: :time_table)
diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb
index 949b18d6f..6a02203ad 100644
--- a/app/models/chouette/route.rb
+++ b/app/models/chouette/route.rb
@@ -63,6 +63,9 @@ module Chouette
where(" position between ? and ? ", between_positions.first, between_positions.last)
end
end
+
+ has_many :vehicle_journey_at_stops, through: :vehicle_journeys
+
has_many :stop_areas, -> { order('stop_points.position ASC') }, :through => :stop_points do
def between(departure, arrival)
departure, arrival = [departure, arrival].map do |endpoint|
@@ -166,7 +169,8 @@ module Chouette
end
def time_tables
- vehicle_journeys.joins(:time_tables).map(&:"time_tables").flatten.uniq
+ ids = vehicle_journeys.joins(:time_tables).pluck('time_tables.id').uniq
+ Chouette::TimeTable.where(id: ids)
end
def sorted_vehicle_journeys(journey_category_model)
diff --git a/app/models/chouette/stop_point.rb b/app/models/chouette/stop_point.rb
index edb0e81fd..82bedc6ab 100644
--- a/app/models/chouette/stop_point.rb
+++ b/app/models/chouette/stop_point.rb
@@ -10,6 +10,7 @@ module Chouette
include ObjectidSupport
belongs_to :stop_area
+ belongs_to :stop_area_light, -> {select(:name, :city_name, :zip_code, :time_zone)}, class_name: "Chouette::StopArea", foreign_key: :stop_area_id
belongs_to :route, inverse_of: :stop_points
has_many :journey_patterns, through: :route
has_many :vehicle_journey_at_stops, :dependent => :destroy
@@ -27,7 +28,7 @@ module Chouette
scope :default_order, -> { order("position") }
- delegate :name, :registration_number, :kind, :area_type, to: :stop_area
+ delegate :name, :registration_number, :kind, :area_type, to: :stop_area_light
before_destroy :remove_dependent_journey_pattern_stop_points
def remove_dependent_journey_pattern_stop_points
diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb
index 818287b04..3bbd89f7b 100644
--- a/app/models/chouette/vehicle_journey.rb
+++ b/app/models/chouette/vehicle_journey.rb
@@ -21,6 +21,7 @@ module Chouette
belongs_to :company
belongs_to :route
belongs_to :journey_pattern
+ belongs_to :journey_pattern_only_objectid, -> {select("journey_patterns.objectid")}, class_name: "Chouette::JourneyPattern", foreign_key: :journey_pattern_id
has_many :stop_areas, through: :journey_pattern
has_and_belongs_to_many :footnotes, :class_name => 'Chouette::Footnote'
diff --git a/app/models/chouette/vehicle_journey_at_stop.rb b/app/models/chouette/vehicle_journey_at_stop.rb
index 3f5bd5abf..797571070 100644
--- a/app/models/chouette/vehicle_journey_at_stop.rb
+++ b/app/models/chouette/vehicle_journey_at_stop.rb
@@ -101,8 +101,8 @@ module Chouette
end
def time_zone_offset
- return 0 unless stop_point&.stop_area&.time_zone.present?
- ActiveSupport::TimeZone[stop_point.stop_area.time_zone]&.utc_offset || 0
+ return 0 unless stop_point&.stop_area_light&.time_zone.present?
+ ActiveSupport::TimeZone[stop_point.stop_area_light.time_zone]&.utc_offset || 0
end
private
diff --git a/app/services/referential_consolidated.rb b/app/services/referential_consolidated.rb
index 465eab405..832210db3 100644
--- a/app/services/referential_consolidated.rb
+++ b/app/services/referential_consolidated.rb
@@ -48,11 +48,12 @@ class ReferentialConsolidated
attr_reader :parent
attr_reader :ar_model
- def initialize parent, ar_model, vehicle_journeys, params
+ def initialize parent, ar_model, vehicle_journeys, params, opts={}
@parent = parent
@ar_model = ar_model
@all_vehicle_journeys = vehicle_journeys
@params = params
+ @opts = opts
end
def should_highlight?
@@ -74,9 +75,19 @@ class ReferentialConsolidated
class Route < Base
def_delegators :ar_model, :name, :id, :time_tables, :purchase_windows, :stop_area_ids
+ def vehicle_journey_at_stops
+ @vehicle_journey_at_stops ||= begin
+ out = Hash.new{|h, k| h[k] = {}}
+ ar_model.vehicle_journey_at_stops.each do |vjas|
+ out[vjas.vehicle_journey_id][vjas.stop_point_id] = vjas
+ end
+ out
+ end
+ end
+
def vehicle_journeys
@vehicle_journeys ||= begin
- ar_model.vehicle_journeys.map {|vj| VehicleJourney.new(self, vj, @all_vehicle_journeys, params) }
+ ar_model.vehicle_journeys.select(:id, :published_journey_name, :route_id, :journey_pattern_id).map {|vj| VehicleJourney.new(self, vj, @all_vehicle_journeys, params, vehicle_journey_at_stops: vehicle_journey_at_stops[vj.id]) }
end
end
@@ -85,7 +96,7 @@ class ReferentialConsolidated
end
def highlighted_count
- highlighted_journeys.count
+ highlighted_journeys.except(:select).count
end
def highlighted?
@@ -93,18 +104,32 @@ class ReferentialConsolidated
(should_highlight? || matching_stop_areas) && highlighted_journeys.exists?
end
+ def stop_areas
+ @stop_areas ||= begin
+ out = {}
+ ar_model.stop_areas.select(:id, :name, :city_name, :zip_code, :time_zone).each do |sp|
+ out[sp.id] = sp
+ end
+ out
+ end
+ end
+
def stop_points
- @stop_points ||= ar_model.stop_points.map {|sp| StopPoint.new(self, sp, @all_vehicle_journeys, params) }
+ @stop_points ||= ar_model.stop_points.map {|sp| StopPoint.new(self, sp, @all_vehicle_journeys, params, stop_area: stop_areas[sp.stop_area_id]) }
end
end
class VehicleJourney < Base
- def_delegators :ar_model, :id, :published_journey_name, :journey_pattern, :time_tables, :purchase_windows, :vehicle_journey_at_stops, :time_table_ids, :purchase_window_ids, :route
+ def_delegators :ar_model, :id, :published_journey_name, :journey_pattern, :time_tables, :purchase_windows, :time_table_ids, :purchase_window_ids, :route, :journey_pattern_only_objectid
def highlighted?
should_highlight? && @all_vehicle_journeys.where(id: self.id).exists?
end
+ def vehicle_journey_at_stops
+ @opts[:vehicle_journey_at_stops] || {}
+ end
+
def has_purchase_window? purchase_window
purchase_window_ids.include?(purchase_window.id)
end
@@ -115,7 +140,15 @@ class ReferentialConsolidated
end
class StopPoint < Base
- def_delegators :ar_model, :id, :arrival_time, :departure_time, :name, :stop_area, :stop_area_id
+ def_delegators :ar_model, :id, :arrival_time, :departure_time, :stop_area_id
+
+ def stop_area
+ @opts[:stop_area]
+ end
+
+ def name
+ stop_area.name
+ end
def highlighted?
params[:q] && params[:q]["stop_areas"] && params[:q]["stop_areas"].values.any?{|v| v.to_s == stop_area_id.to_s}
diff --git a/app/views/referential_vehicle_journeys/_consolidated_line.html.slim b/app/views/referential_vehicle_journeys/_consolidated_line.html.slim
index c73c65961..9a27c0ecf 100644
--- a/app/views/referential_vehicle_journeys/_consolidated_line.html.slim
+++ b/app/views/referential_vehicle_journeys/_consolidated_line.html.slim
@@ -78,7 +78,7 @@
strong= link_to journey.id, [@referential, journey.route.line, journey.route, :vehicle_journeys]
div
= link_to journey.published_journey_name, [@referential, journey.route.line, journey.route, :vehicle_journeys], title: journey.published_journey_name
- div= journey.journey_pattern.get_objectid.short_id
+ div= journey.journey_pattern_only_objectid.get_objectid.short_id
div
- journey.purchase_windows[0..3].each do |tt|
span.vj_tt
@@ -105,7 +105,7 @@
ruby:
headline = vehicle_journey_stop_headline prev_sp, sp
prev_sp = sp
- vjas = journey.vehicle_journey_at_stops.where(stop_point_id: sp.id).last
+ vjas = journey.vehicle_journey_at_stops[sp.id]
.td class="#{vjas && sp.highlighted? ? 'highlighted' : ''} #{vjas.nil? ? 'disabled' : ''} #{headline.present? ? 'headlined' : ''}"
div title="#{sp.stop_area.city_name ? "#{sp.stop_area.city_name} (#{sp.stop_area.zip_code})" : ''}" data-headline=headline class=(headline.present? ? 'headlined' : '')
- if vjas.present?