aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno Perles2015-11-02 17:05:43 +0100
committerBruno Perles2015-11-02 17:05:43 +0100
commit915612ee90b2f454486fa821fdd75b800c326c99 (patch)
tree329e8c8a22e736f90c1c7725355f81d2ac0fbd6d
parent5e64226f746078cdcf83e2db836a70af0498afc4 (diff)
downloadchouette-core-915612ee90b2f454486fa821fdd75b800c326c99.tar.bz2
Display a list of vehicle journey frequencies
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock11
-rw-r--r--app/assets/javascripts/application.js2
-rw-r--r--app/assets/javascripts/vehicle_journey_frequencies.js.coffee16
-rw-r--r--app/assets/javascripts/vehicle_journeys/index.js.coffee3
-rw-r--r--app/assets/stylesheets/application.css.scss.erb2
-rw-r--r--app/assets/stylesheets/main/lines.css.scss29
-rw-r--r--app/assets/stylesheets/main/vehicle_journey_frequencies.scss3
-rw-r--r--app/controllers/vehicle_journeys_controller.rb13
-rw-r--r--app/helpers/vehicle_journeys_helper.rb15
-rw-r--r--app/models/vehicle_filter.rb5
-rw-r--r--app/views/lines/_line.erb40
-rw-r--r--app/views/vehicle_journey_frequencies/_show_journey_frequencies.html.erb2
-rw-r--r--app/views/vehicle_journey_frequencies/_vehicle_journeys_matrix.html.erb41
-rw-r--r--app/views/vehicle_journey_frequencies/_vehicle_journeys_page_info.html.erb1
-rw-r--r--app/views/vehicle_journeys/_route_popover.html.erb3
-rw-r--r--app/views/vehicle_journeys/_vehicle_journeys.html.erb40
-rw-r--r--app/views/vehicle_journeys/_vehicle_journeys_matrix.html.erb40
-rw-r--r--app/views/vehicle_journeys/_vehicle_journeys_page_info.html.erb1
-rw-r--r--config/locales/vehicle_journey_frequencies.en.yml4
-rw-r--r--config/locales/vehicle_journey_frequencies.fr.yml6
-rw-r--r--config/locales/vehicle_journeys.en.yml2
-rw-r--r--config/locales/vehicle_journeys.fr.yml2
23 files changed, 192 insertions, 91 deletions
diff --git a/Gemfile b/Gemfile
index 2cd6548f5..7b7294572 100644
--- a/Gemfile
+++ b/Gemfile
@@ -162,4 +162,6 @@ source 'https://rails-assets.org' do
gem 'rails-assets-jquery-tokeninput', '~> 1.7.0'
gem 'rails-assets-modernizr', '~> 2.0.6'
+ gem 'rails-assets-datatables'
+ gem 'rails-assets-datatables-fixedcolumns'
end
diff --git a/Gemfile.lock b/Gemfile.lock
index 422745977..341091b5e 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,8 +1,8 @@
GIT
remote: git://github.com/afimb/ninoxe.git
- revision: 97daab185c83e7c36f4b4b3400bb63c5d9d0f078
+ revision: 78d573ca4989cb05f9ab462c7d4ca7c2dad3ae08
specs:
- ninoxe (1.2.2)
+ ninoxe (1.2.3)
activerecord (~> 4.1.1)
acts-as-taggable-on (>= 3)
acts_as_list (>= 0.1.6)
@@ -309,6 +309,11 @@ GEM
rails-assets-jquery (>= 1.9.0)
rails-assets-bootstrap-sass-official (3.3.4)
rails-assets-jquery (>= 1.9.0)
+ rails-assets-datatables (1.10.9)
+ rails-assets-jquery (>= 1.7.0)
+ rails-assets-datatables-fixedcolumns (3.1.0)
+ rails-assets-datatables (>= 1.8.0)
+ rails-assets-jquery (>= 1.7.0)
rails-assets-eonasdan-bootstrap-datetimepicker (3.1.3)
rails-assets-bootstrap (>= 3.0)
rails-assets-jquery (>= 1.8.3)
@@ -539,6 +544,8 @@ DEPENDENCIES
rabl
rails (~> 4.1.10)
rails-assets-bootstrap-sass-official (~> 3.3.0)!
+ rails-assets-datatables!
+ rails-assets-datatables-fixedcolumns!
rails-assets-eonasdan-bootstrap-datetimepicker (~> 3.1.3)!
rails-assets-footable (~> 2.0.3)!
rails-assets-jquery-tokeninput (~> 1.7.0)!
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index 0862295a4..74e680a68 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -23,6 +23,8 @@
//= require footable/footable.paginate
//= require footable/footable.sort
//= require tools
+//= require datatables
+//= require datatables-fixedcolumns
//= require_directory ./plugins
//= require_directory .
//= require_directory ./stop_areas
diff --git a/app/assets/javascripts/vehicle_journey_frequencies.js.coffee b/app/assets/javascripts/vehicle_journey_frequencies.js.coffee
index 24f83d18b..020283116 100644
--- a/app/assets/javascripts/vehicle_journey_frequencies.js.coffee
+++ b/app/assets/javascripts/vehicle_journey_frequencies.js.coffee
@@ -1,3 +1,13 @@
-# Place all the behaviors and hooks related to the matching controller here.
-# All this logic will automatically be available in application.js.
-# You can use CoffeeScript in this file: http://coffeescript.org/
+(($) ->
+ $ ->
+ $('.ce-VehicleJourneyFrequencyTableBlock').dataTable
+ searching: false,
+ ordering: false,
+ paging: false,
+ scrollX: true,
+ fixedColumns: true,
+ bInfo: false
+ window.setTimeout('$( ".dataTables_scrollBody" ).animate({scrollLeft: 100}, 500).animate({scrollLeft: 0}, 500)', 1000)
+ return
+ return
+) jQuery
diff --git a/app/assets/javascripts/vehicle_journeys/index.js.coffee b/app/assets/javascripts/vehicle_journeys/index.js.coffee
index e89c3f519..e21580f4e 100644
--- a/app/assets/javascripts/vehicle_journeys/index.js.coffee
+++ b/app/assets/javascripts/vehicle_journeys/index.js.coffee
@@ -1,7 +1,6 @@
-$(".vehicle_journeys.index").ready ->
+$(".vehicle_journeys.index, .vehicle_journey_frequencies.index").ready ->
$( 'body' ).popover({html: true, trigger: "focus", selector: 'thead th button'})
.on("show.bs.popover", (event)->
$(event.target).data("bs.popover").tip().css("maxWidth", "350px"))
- \ No newline at end of file
diff --git a/app/assets/stylesheets/application.css.scss.erb b/app/assets/stylesheets/application.css.scss.erb
index 770e3c82b..f29ca4738 100644
--- a/app/assets/stylesheets/application.css.scss.erb
+++ b/app/assets/stylesheets/application.css.scss.erb
@@ -30,6 +30,8 @@ $body-bg: #eee;
@import "formtastic";
@import 'eonasdan-bootstrap-datetimepicker';
@import 'footable';
+@import 'datatables';
+@import 'datatables-fixedcolumns';
@import "vendor/openlayers_style";
@import "vendor/openlayers_ie6-style";
diff --git a/app/assets/stylesheets/main/lines.css.scss b/app/assets/stylesheets/main/lines.css.scss
index 94201212a..e114a2338 100644
--- a/app/assets/stylesheets/main/lines.css.scss
+++ b/app/assets/stylesheets/main/lines.css.scss
@@ -78,7 +78,30 @@
display: inline;
}
}
-}
-
-
+}
+.ce-LineBlock-header-list {
+ display: table;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ > li {
+ display: table-cell;
+ vertical-align: middle;
+ > input {
+ margin-top: 0;
+ }
+ &:first-child {
+ width: 37px;
+ }
+ &:last-child {
+ text-align: right;
+ width: 73px;
+ }
+ }
+}
+.ce-LineBlock-header-title {
+ padding: 0 !important;
+ line-height: 12px;
+ font-size: 13px;
+}
diff --git a/app/assets/stylesheets/main/vehicle_journey_frequencies.scss b/app/assets/stylesheets/main/vehicle_journey_frequencies.scss
index 00b68f263..911a3f267 100644
--- a/app/assets/stylesheets/main/vehicle_journey_frequencies.scss
+++ b/app/assets/stylesheets/main/vehicle_journey_frequencies.scss
@@ -100,4 +100,7 @@
td.ce-VehicleJourneyBlock-frequency {
background-color: rgba(95, 95, 95, 0.2);
}
+ .ce-VehicleJourneyFrequencyTableBlock {
+ margin: 0 !important;
+ }
}
diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb
index 0c64f0b2c..036816b21 100644
--- a/app/controllers/vehicle_journeys_controller.rb
+++ b/app/controllers/vehicle_journeys_controller.rb
@@ -28,7 +28,6 @@ class VehicleJourneysController < ChouetteController
def index
index! do
- @matrix ||= matrix
if collection.out_of_bounds?
redirect_to params.merge(:page => 1)
end
@@ -50,10 +49,11 @@ class VehicleJourneysController < ChouetteController
def collection
unless @vehicle_journeys
@vehicle_filter = VehicleFilter.new adapted_params
+ @vehicle_filter.journey_category_model = resource_class.model_name.route_key
@q = @vehicle_filter.vehicle_journeys.search @vehicle_filter.filtered_params
@vehicle_journeys = @q.result( :distinct => false ).paginate(:page => params[:page], :per_page => 8)
end
-
+ matrix
@vehicle_journeys
end
alias_method :vehicle_journeys, :collection
@@ -74,16 +74,9 @@ class VehicleJourneysController < ChouetteController
end
def matrix
- {}.tap do |hash|
- vehicle_journeys.each do |vj|
- vj.vehicle_journey_at_stops.each do |vjas|
- hash[ "#{vj.id}-#{vjas.stop_point_id}"] = vjas
- end
- end
- end
+ @matrix = resource_class.matrix(@vehicle_journeys)
end
-
private
def vehicle_journey_params
diff --git a/app/helpers/vehicle_journeys_helper.rb b/app/helpers/vehicle_journeys_helper.rb
index 3b2649b34..9b4f055a1 100644
--- a/app/helpers/vehicle_journeys_helper.rb
+++ b/app/helpers/vehicle_journeys_helper.rb
@@ -16,18 +16,21 @@ module VehicleJourneysHelper
return "missing" if (is_present && is_present.departure_time.nil?)
end
- def vehicle_departure(vehicle)
- first_vjas = vehicle.vehicle_journey_at_stops.first
- return "" unless first_vjas.departure_time
- l(first_vjas.departure_time, :format => :hour).gsub( / /, ' ')
+ def vehicle_departure(vehicle, departure_time=nil)
+ unless departure_time
+ first_vjas = vehicle.vehicle_journey_at_stops.first
+ return '' unless first_vjas.departure_time
+ departure_time = first_vjas.departure_time
+ end
+ l(departure_time, :format => :hour).gsub( / /, ' ')
end
- def vehicle_title( vehicle)
+ def vehicle_title(vehicle, departure_time=nil)
return t("vehicle_journeys.vehicle_journey#{'_frequency' if vehicle.frequency?}.title_stopless", :name => vehicle_name( vehicle)) if vehicle.vehicle_journey_at_stops.empty?
first_vjas = vehicle.vehicle_journey_at_stops.first
t("vehicle_journeys.vehicle_journey#{'_frequency' if vehicle.frequency?}.title",
:stop => first_vjas.stop_point.stop_area.name,
- :time => vehicle_departure(vehicle))
+ :time => vehicle_departure(vehicle, departure_time))
end
def edit_vehicle_title( vehicle)
diff --git a/app/models/vehicle_filter.rb b/app/models/vehicle_filter.rb
index 64cc3e75a..13a302dc6 100644
--- a/app/models/vehicle_filter.rb
+++ b/app/models/vehicle_filter.rb
@@ -1,6 +1,7 @@
class VehicleFilter
attr_accessor :route
attr_accessor :q
+ attr_accessor :journey_category_model
def initialize(attributes = {})
attributes.each do |name, value|
@@ -17,9 +18,9 @@ class VehicleFilter
end
def vehicles_passing_time_filtered
if without_any_passing_time?
- route.vehicle_journeys.without_any_passing_time
+ route.send(journey_category_model).without_any_passing_time
else
- route.sorted_vehicle_journeys
+ route.sorted_vehicle_journeys(journey_category_model)
end
end
def vehicle_journeys
diff --git a/app/views/lines/_line.erb b/app/views/lines/_line.erb
index 69c7978ab..b23992a1c 100644
--- a/app/views/lines/_line.erb
+++ b/app/views/lines/_line.erb
@@ -1,26 +1,26 @@
-<div id="index_item" class="panel panel-default line">
- <div class="panel-heading">
- <div class="panel-title clearfix">
- <span class="pull-right">
- <%= link_to edit_referential_line_path(@referential, line), :class => "btn btn-default btn-sm" do %>
+<div id="index_item" class="panel panel-default line ce-LineBlock">
+ <div class="panel-heading ce-LineBlock-header">
+ <ul class="ce-LineBlock-header-list">
+ <li>
+ <%= check_box_tag "ids[]", line.id, false, class: "multiple_selection", style: "display: none;" %>
+ <% if line.number && line.number.length <= 3 %>
+ <span class="label label-default line_number" style="<%= number_style(line) %>"><%= line.number %></span>
+ <% end %>
+ </li>
+ <li>
+ <%= link_to([@referential, line], class: 'preview', title: "#{Chouette::Line.model_name.human.capitalize} #{line.name}") do %>
+ <h5 class="ce-LineBlock-header-title"><%= truncate(line.name, length: 24) %></h5>
+ <% end %>
+ </li>
+ <li>
+ <%= link_to edit_referential_line_path(@referential, line), class: 'btn btn-default btn-sm' do %>
<span class="fa fa-pencil"></span>
- <% end if edit %>
- <%= link_to referential_line_path(@referential, line), :method => :delete, :data => {:confirm => t('lines.actions.destroy_confirm')}, :class => "btn btn-danger btn-sm" do %>
+ <% end if edit %>
+ <%= link_to referential_line_path(@referential, line), method: :delete, data: { confirm: t('lines.actions.destroy_confirm') }, class: 'btn btn-danger btn-sm' do %>
<span class="fa fa-trash-o"></span>
<% end if delete %>
- </span>
- <h5>
- <%= check_box_tag "ids[]", line.id, false, :class => "multiple_selection", :style => "display: none;" %>
- <% if line.number and line.number.length <= 3 %>
- <span class="label label-default line_number" style="<%= number_style(line) %>"><%= line.number %></span>
- <% end %>
- <%= link_to([@referential, line], :class => "preview", :title => "#{Chouette::Line.model_name.human.capitalize} #{line.name}") do %>
- <span class="name">
- <%= truncate(line.name, :length => 20) %>
- </span>
- <% end %>
- </h5>
- </div>
+ </li>
+ </ul>
</div>
<div class="panel-body">
<p>
diff --git a/app/views/vehicle_journey_frequencies/_show_journey_frequencies.html.erb b/app/views/vehicle_journey_frequencies/_show_journey_frequencies.html.erb
index 5d3551503..328c702f9 100644
--- a/app/views/vehicle_journey_frequencies/_show_journey_frequencies.html.erb
+++ b/app/views/vehicle_journey_frequencies/_show_journey_frequencies.html.erb
@@ -15,7 +15,7 @@
<tr class="<%= cycle :odd, :even %>">
<td>
<%= link_to journey_frequency.timeband.fullname,
- referential_timeband_path(@referential, journey_frequency.timeband) %>
+ referential_timeband_path(@referential, journey_frequency.timeband) if journey_frequency.timeband %>
</td>
<td><%= l(journey_frequency.first_departure_time, format: :hour) %></td>
<td><%= l(journey_frequency.last_departure_time, format: :hour) %></td>
diff --git a/app/views/vehicle_journey_frequencies/_vehicle_journeys_matrix.html.erb b/app/views/vehicle_journey_frequencies/_vehicle_journeys_matrix.html.erb
new file mode 100644
index 000000000..c915e4f54
--- /dev/null
+++ b/app/views/vehicle_journey_frequencies/_vehicle_journeys_matrix.html.erb
@@ -0,0 +1,41 @@
+<table class="table table-hover table-striped ce-VehicleJourneyFrequencyTableBlock">
+ <thead>
+ <tr>
+ <th class="title">
+ <button data-style="primary" data-container="body" rel="popover" data-toggle="popover" title='<%= t(".line_routes") %>'
+ data-placement="top" data-content='<%= render( partial: "vehicle_journeys/route_popover", :locals => { :selected_route => @route }) %>'
+ class="route_popover btn btn-default btn-sm">
+ <i class='fa fa-search'></i>
+ <%= Chouette::Route.model_name.human.capitalize %>
+ </button>
+ </th>
+ <% @matrix.each do |departure_time, vj| %>
+ <th class="vehicle_journey">
+ <button data-style="primary" data-container="body" rel="popover" data-toggle="popover"
+ data-title='<%= link_to(vehicle_title(vj, departure_time), [@referential, @line, @route, vj] ) %>
+ <%= link_to('<span class="fa fa-pencil"></span>'.html_safe,
+ send("edit_referential_line_route_vehicle_journey#{'_frequency' if vj.frequency?}_path", @referential, @line, @route, vj),
+ :class => "btn btn-default btn-sm" ) %>'
+ data-placement= "top"
+ data-content='<%= render( partial: "vehicle_journeys/show_popover", :locals => { :vehicle_journey => vj }) %>'
+ class="vehicle_journey_popover btn btn-default btn-sm">
+ <i class='fa fa-search'></i>
+ </button>
+ </th>
+ <% end %>
+ </tr>
+ </thead>
+ <tbody>
+ <% @matrix_interval = Chouette::VehicleJourneyFrequency.matrix_interval(@matrix) %>
+ <% @route.stop_points.each do |sp| %>
+ <tr class="<%= cycle('odd', 'even') %>">
+ <td class="stop_area"><%= sp.stop_area.name %></td>
+ <% @matrix.each do |departure_time, vj| %>
+ <% next unless @matrix_interval[sp.id] %>
+ <% vjas = @matrix_interval[sp.id][departure_time.to_i] %>
+ <td><%= (vjas && vjas.departure_time) ? l( vjas.departure_time, format: :hour) : '--' %></td>
+ <% end %>
+ </tr>
+ <% end %>
+ </tbody>
+</table>
diff --git a/app/views/vehicle_journey_frequencies/_vehicle_journeys_page_info.html.erb b/app/views/vehicle_journey_frequencies/_vehicle_journeys_page_info.html.erb
new file mode 100644
index 000000000..fe3ae29e0
--- /dev/null
+++ b/app/views/vehicle_journey_frequencies/_vehicle_journeys_page_info.html.erb
@@ -0,0 +1 @@
+<span class="search"> <%= t("will_paginate.page_entries_info.search") %></span> <%= page_entries_info @vehicle_journeys %> <%= t('.with_matrix_size', matrix_size: @matrix.size) %>
diff --git a/app/views/vehicle_journeys/_route_popover.html.erb b/app/views/vehicle_journeys/_route_popover.html.erb
index 1acba5665..27023b625 100644
--- a/app/views/vehicle_journeys/_route_popover.html.erb
+++ b/app/views/vehicle_journeys/_route_popover.html.erb
@@ -1,6 +1,5 @@
<ul>
<% (selected_route.line.routes.limit(10).reject{ |route| route == selected_route}).each do |route| %>
- <li><%= link_to route.name.truncate(30), [@referential, route.line, route, 'vehicle_journeys'] %></li>
+ <li><%= link_to route.name.truncate(30), [@referential, route.line, route, controller_name] %></li>
<% end %>
</ul>
-</p>
diff --git a/app/views/vehicle_journeys/_vehicle_journeys.html.erb b/app/views/vehicle_journeys/_vehicle_journeys.html.erb
index b810ae71d..8dc2a74ef 100644
--- a/app/views/vehicle_journeys/_vehicle_journeys.html.erb
+++ b/app/views/vehicle_journeys/_vehicle_journeys.html.erb
@@ -1,48 +1,12 @@
<div class="page_info">
- <span class="search"> <%= t("will_paginate.page_entries_info.search") %></span> <%= page_entries_info @vehicle_journeys %>
+ <%= render 'vehicle_journeys_page_info' %>
</div>
<div class="pagination">
<%= will_paginate @vehicle_journeys, :container => false, renderer: RemoteBootstrapPaginationLinkRenderer %>
</div>
<div class="vehicle_journeys paginated_content">
- <table class="table table-hover table-striped">
- <thead>
- <tr>
- <th class="title">
- <button data-style="primary" data-container="body" rel="popover" data-toggle="popover" title='<%= t(".line_routes") %>' data-placement="top" data-content='<%= render( partial: "route_popover", :locals => { :selected_route => @route }) %>' class="route_popover btn btn-default btn-sm"><i class='fa fa-search'></i><%= Chouette::Route.model_name.human.capitalize %></button>
- </th>
- <% @vehicle_journeys.each do |vj| %>
- <th class="vehicle_journey">
- <button data-style="primary" data-container="body" rel="popover" data-toggle="popover"
- data-title='<%= link_to(vehicle_title(vj), [@referential, @line, @route, vj] ) %>
- <%= link_to('<span class="fa fa-pencil"></span>'.html_safe,
- send("edit_referential_line_route_vehicle_journey#{'_frequency' if vj.frequency?}_path", @referential, @line, @route, vj),
- :class => "btn btn-default btn-sm" ) %>'
- data-placement= "top"
- data-content='<%= render( partial: "show_popover", :locals => { :vehicle_journey => vj }) %>'
- class="vehicle_journey_popover btn btn-default btn-sm">
- <i class='fa fa-search'></i>
- </button>
- </th>
- <% end %>
- </tr>
- </thead>
- <tbody>
- <% @route.stop_points.each_with_index do |sp, index| %>
- <tr class="<%= cycle('odd', 'even') %>">
- <td class="stop_area"><%= sp.stop_area.name %></td>
- <% @vehicle_journeys.each do |vj| %>
- <td class="hours <%= missing_time_check(@matrix["#{vj.id}-#{sp.id}"]) %><%= ' ce-VehicleJourneyBlock-frequency' if vj.frequency? %>">
- <%= (@matrix["#{vj.id}-#{sp.id}"] && @matrix["#{vj.id}-#{sp.id}"].departure_time) ? l( @matrix["#{vj.id}-#{sp.id}"].departure_time, :format => :hour) : "--" %>
- </td>
- <% end %>
- </tr>
- <% end %>
- </tbody>
- </table>
+ <%= render 'vehicle_journeys_matrix' %>
</div>
<div class="pagination">
<%= will_paginate @vehicle_journeys, :container => false, renderer: RemoteBootstrapPaginationLinkRenderer %>
</div>
-
-
diff --git a/app/views/vehicle_journeys/_vehicle_journeys_matrix.html.erb b/app/views/vehicle_journeys/_vehicle_journeys_matrix.html.erb
new file mode 100644
index 000000000..3254430cd
--- /dev/null
+++ b/app/views/vehicle_journeys/_vehicle_journeys_matrix.html.erb
@@ -0,0 +1,40 @@
+<table class="table table-hover table-striped">
+ <thead>
+ <tr>
+ <th class="title">
+ <button data-style="primary" data-container="body" rel="popover" data-toggle="popover" title='<%= t(".line_routes") %>'
+ data-placement="top" data-content='<%= render( partial: "route_popover", :locals => { :selected_route => @route }) %>'
+ class="route_popover btn btn-default btn-sm">
+ <i class='fa fa-search'></i>
+ <%= Chouette::Route.model_name.human.capitalize %>
+ </button>
+ </th>
+ <% @vehicle_journeys.each do |vj| %>
+ <th class="vehicle_journey">
+ <button data-style="primary" data-container="body" rel="popover" data-toggle="popover"
+ data-title='<%= link_to(vehicle_title(vj), [@referential, @line, @route, vj] ) %>
+ <%= link_to('<span class="fa fa-pencil"></span>'.html_safe,
+ send("edit_referential_line_route_vehicle_journey#{'_frequency' if vj.frequency?}_path", @referential, @line, @route, vj),
+ :class => "btn btn-default btn-sm" ) %>'
+ data-placement= "top"
+ data-content='<%= render( partial: "show_popover", :locals => { :vehicle_journey => vj }) %>'
+ class="vehicle_journey_popover btn btn-default btn-sm">
+ <i class='fa fa-search'></i>
+ </button>
+ </th>
+ <% end %>
+ </tr>
+ </thead>
+ <tbody>
+ <% @route.stop_points.each_with_index do |sp, index| %>
+ <tr class="<%= cycle('odd', 'even') %>">
+ <td class="stop_area"><%= sp.stop_area.name %></td>
+ <% @vehicle_journeys.each do |vj| %>
+ <td class="hours <%= missing_time_check(@matrix["#{vj.id}-#{sp.id}"]) %><%= ' ce-VehicleJourneyBlock-frequency' if vj.frequency? %>">
+ <%= (@matrix["#{vj.id}-#{sp.id}"] && @matrix["#{vj.id}-#{sp.id}"].departure_time) ? l( @matrix["#{vj.id}-#{sp.id}"].departure_time, :format => :hour) : "--" %>
+ </td>
+ <% end %>
+ </tr>
+ <% end %>
+ </tbody>
+</table>
diff --git a/app/views/vehicle_journeys/_vehicle_journeys_page_info.html.erb b/app/views/vehicle_journeys/_vehicle_journeys_page_info.html.erb
new file mode 100644
index 000000000..30b389ee3
--- /dev/null
+++ b/app/views/vehicle_journeys/_vehicle_journeys_page_info.html.erb
@@ -0,0 +1 @@
+<span class="search"> <%= t("will_paginate.page_entries_info.search") %></span> <%= page_entries_info @vehicle_journeys %>
diff --git a/config/locales/vehicle_journey_frequencies.en.yml b/config/locales/vehicle_journey_frequencies.en.yml
new file mode 100644
index 000000000..13c6d4e03
--- /dev/null
+++ b/config/locales/vehicle_journey_frequencies.en.yml
@@ -0,0 +1,4 @@
+en:
+ vehicle_journey_frequencies:
+ vehicle_journeys_matrix:
+ line_routes: "Séquences d'arrêts de la ligne"
diff --git a/config/locales/vehicle_journey_frequencies.fr.yml b/config/locales/vehicle_journey_frequencies.fr.yml
new file mode 100644
index 000000000..cc1d003f3
--- /dev/null
+++ b/config/locales/vehicle_journey_frequencies.fr.yml
@@ -0,0 +1,6 @@
+fr:
+ vehicle_journey_frequencies:
+ vehicle_journeys_matrix:
+ line_routes: Séquences d'arrêts de la ligne
+ vehicle_journeys_page_info:
+ with_matrix_size: "générant %{matrix_size} courses à fréquences"
diff --git a/config/locales/vehicle_journeys.en.yml b/config/locales/vehicle_journeys.en.yml
index b0314105c..b70ddb025 100644
--- a/config/locales/vehicle_journeys.en.yml
+++ b/config/locales/vehicle_journeys.en.yml
@@ -1,6 +1,6 @@
en:
vehicle_journeys:
- vehicle_journeys:
+ vehicle_journeys_matrix:
line_routes: "Line's routes"
vehicle_journey:
title_stopless: "Vehicle journey %{name}"
diff --git a/config/locales/vehicle_journeys.fr.yml b/config/locales/vehicle_journeys.fr.yml
index 984a3ce7a..eda76bde6 100644
--- a/config/locales/vehicle_journeys.fr.yml
+++ b/config/locales/vehicle_journeys.fr.yml
@@ -1,6 +1,6 @@
fr:
vehicle_journeys:
- vehicle_journeys:
+ vehicle_journeys_matrix:
line_routes: "Séquences d'arrêts de la ligne"
vehicle_journey:
title_stopless: "Course %{name}"