diff options
| -rw-r--r-- | Gemfile.lock | 5 | ||||
| -rw-r--r-- | app/assets/stylesheets/vehicle_journeys.css.scss | 43 | ||||
| -rw-r--r-- | app/controllers/time_tables_controller.rb | 16 | ||||
| -rw-r--r-- | app/controllers/vehicle_journeys_controller.rb | 7 | ||||
| -rw-r--r-- | app/helpers/time_tables_helper.rb | 30 | ||||
| -rw-r--r-- | app/helpers/vehicle_journeys_helper.rb | 19 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/_form.html.erb | 17 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/_time_table.html.erb | 9 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/edit.html.erb | 4 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/index.html.erb | 27 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/new.html.erb | 4 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/show.html.erb | 10 | ||||
| -rw-r--r-- | config/locales/time_tables.yml | 10 | ||||
| -rw-r--r-- | config/locales/vehicle_journeys.yml | 26 | ||||
| -rw-r--r-- | config/routes.rb | 3 |
15 files changed, 208 insertions, 22 deletions
diff --git a/Gemfile.lock b/Gemfile.lock index 854660c94..d3cbae20d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: git://chouette.dryade.priv/ninoxe - revision: 1b68352e83c2ef898fdab7cd4c4eeddba6a977d5 + revision: b873a0f2de6ec4358148dc6c1400a34baf2343a3 specs: ninoxe (0.0.8) GeoRuby @@ -190,6 +190,7 @@ GEM jruby-rack (1.1.5) jruby-rack-worker (0.3-java) jruby-rack (>= 1.0.1) + json (1.7.3) json (1.7.3-java) json_pure (1.7.3) launchy (2.1.0) @@ -267,7 +268,7 @@ GEM rspec-core (~> 2.10.0) rspec-expectations (~> 2.10.0) rspec-mocks (~> 2.10.0) - rspec-core (2.10.0) + rspec-core (2.10.1) rspec-expectations (2.10.0) diff-lcs (~> 1.1.3) rspec-mocks (2.10.1) diff --git a/app/assets/stylesheets/vehicle_journeys.css.scss b/app/assets/stylesheets/vehicle_journeys.css.scss index 8199a7541..c8f442322 100644 --- a/app/assets/stylesheets/vehicle_journeys.css.scss +++ b/app/assets/stylesheets/vehicle_journeys.css.scss @@ -13,6 +13,16 @@ display: none; } } + .time_table_list { + padding-left: 25%; + } +} + +#workspace.vehicle_journeys.index +{ + th.calendars { + font-size: 11px; + } } #workspace.vehicle_journeys.show @@ -20,6 +30,39 @@ .summary p label { font-weight: bold; } + + .time_table:after { + @include after_div_for_object; + } + + .time_tables { + margin-top: 20px; + } + + .time_tables:after { + @include content_to_clear; + } + + .vehicle_journey_time_tables { + clear: both; + margin: 0px; + padding: 0px; + } + + .time_table { + @include div_for_object; + /* to create multi-column index */ + width: 350px; + float: left; + padding-right: 10px; + + span.included_day_type { + font-weight: bolder; + color: black; + } + span.excluded_day_type { + } + } } diff --git a/app/controllers/time_tables_controller.rb b/app/controllers/time_tables_controller.rb index dbecde0eb..b860d2948 100644 --- a/app/controllers/time_tables_controller.rb +++ b/app/controllers/time_tables_controller.rb @@ -6,8 +6,24 @@ class TimeTablesController < ChouetteController belongs_to :referential + def comment_filter + respond_to do |format| + format.json { render :json => filtered_time_tables_maps} + end + + end + protected + def filtered_time_tables_maps + filtered_time_tables.collect do |time_table| + { :id => time_table.id.to_s, :name => time_table.comment } + end + end + def filtered_time_tables + referential.time_tables.select{ |t| t.comment =~ /#{params[:q]}/i } + end + def collection @q = referential.time_tables.search(params[:q]) @time_tables ||= @q.result(:distinct => true).order(:comment).paginate(:page => params[:page], :per_page => 10) diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index 215677382..596a7f90c 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -23,14 +23,15 @@ class VehicleJourneysController < ChouetteController alias_method :vehicle_journey, :resource def collection - @q = parent.vehicle_journeys.search(params[:q]) - @vehicle_journeys ||= @q.result(:distinct => true).paginate(:page => params[:page], :per_page => 10) + @q = parent.sorted_vehicle_journeys.search(params[:q]) + @vehicle_journeys ||= @q.result(:distinct => true).order( "vehicle_journey_at_stops.departure_time").paginate(:page => params[:page], :per_page => 10) @matrix ||= matrix end def matrix {}.tap do |hash| - @vehicle_journeys.each do |vj| + 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 diff --git a/app/helpers/time_tables_helper.rb b/app/helpers/time_tables_helper.rb new file mode 100644 index 000000000..c5a6579d9 --- /dev/null +++ b/app/helpers/time_tables_helper.rb @@ -0,0 +1,30 @@ +module TimeTablesHelper + def bounding_info(time_table) + return t('time_tables.time_table.empty') if time_table.bounding_dates.empty? + t('time_tables.time_table.bounding', + :start => l(time_table.bounding_dates.min), + :end => l(time_table.bounding_dates.max)) + end + def time_tables_shortest_info( vehicle) + "#{l(vehicle.bounding_dates.min)} #{l(vehicle.bounding_dates.max)}" + end + def time_tables_info( vehicle) + vehicle.time_tables.map do |time_table| + composition_info(time_table) + end.join( "\n") + end + + def composition_info(time_table) + return if time_table.bounding_dates.empty? + if time_table.dates.empty? + t('time_tables.time_table.periods_count', :count => time_table.periods.count) + elsif + t('time_tables.time_table.dates_count', :count => time_table.dates.count) + else + t('time_tables.time_table.periods_dates_count', + :dates_count => time_table.dates.count, + :periods_count => time_table.periods.count) + end + end +end + diff --git a/app/helpers/vehicle_journeys_helper.rb b/app/helpers/vehicle_journeys_helper.rb new file mode 100644 index 000000000..34b367424 --- /dev/null +++ b/app/helpers/vehicle_journeys_helper.rb @@ -0,0 +1,19 @@ +module VehicleJourneysHelper + def vehicle_title( vehicle) + return t('vehicle_journeys.vehicle_journey.title_stopless') if vehicle.vehicle_journey_at_stops.empty? + first_vjas = vehicle.vehicle_journey_at_stops.first + t('vehicle_journeys.vehicle_journey.title', + :name => vehicle.published_journey_name, + :stop => first_vjas.stop_point.stop_area.name, + :time => l(first_vjas.departure_time, :format => :hour)).gsub( / /, ' ') + end + def edit_vehicle_title( vehicle) + return t('vehicle_journeys.edit.title_stopless') if vehicle.vehicle_journey_at_stops.empty? + first_vjas = vehicle.vehicle_journey_at_stops.first + t('vehicle_journeys.edit.title', + :name => vehicle.published_journey_name, + :stop => first_vjas.stop_point.stop_area.name, + :time => l(first_vjas.departure_time, :format => :hour)).gsub( / /, ' ') + end +end + diff --git a/app/views/vehicle_journeys/_form.html.erb b/app/views/vehicle_journeys/_form.html.erb index 71714a28c..138e4ba99 100644 --- a/app/views/vehicle_journeys/_form.html.erb +++ b/app/views/vehicle_journeys/_form.html.erb @@ -17,7 +17,7 @@ </li> <% end %> - <%= form.inputs :class => "stop_times" do %> + <%= form.inputs :class => "stop_times", :name => @vehicle_journey.human_attribute_name(:vehicle_journey_at_stop_ids) do %> <div class="journey_pattern_dependent_list"> <!-- <= form.semantic_fields_for :vehicle_journey_at_stops do |vjas| > @@ -31,6 +31,11 @@ :collection => @vehicle_journey.vehicle_journey_at_stops, :as => :vehicle_journey_at_stop %> </div> <% end %> + <%= form.inputs :class => "time_tables", :name=> @vehicle_journey.human_attribute_name(:time_table_ids) do %> + <div class="time_table_list"> + <%= form.input :time_table_ids, :label => t('.time_tables'), :as => :text, :input_html => { :"data-pre" => ( @vehicle_journey.time_tables.map { |time_table| { :id => time_table.id.to_s, :name => time_table.comment } } ).to_json } %> + </div> + <% end %> <% end %> @@ -45,3 +50,13 @@ <%= javascript_include_tag edit_referential_line_route_vehicle_journey_path(@referential, @line, @route, @vehicle_journey, :format => :js) %> <% end %> +<script> + $(function() { + $( "#vehicle_journey_time_table_ids" ).tokenInput('<%= comment_filter_referential_time_tables_path(@referential, :format => :json) %>', { + crossDomain: false, + prePopulate: $('#time_table_ids').data('pre'), + minChars: 3, + }); + }); +</script> + diff --git a/app/views/vehicle_journeys/_time_table.html.erb b/app/views/vehicle_journeys/_time_table.html.erb index e5d36ed63..fccee5ff8 100644 --- a/app/views/vehicle_journeys/_time_table.html.erb +++ b/app/views/vehicle_journeys/_time_table.html.erb @@ -1,6 +1,15 @@ <%= div_for(time_table, :class => "time_table") do %> <%= link_to time_table.comment, [@referential, time_table] %> <div class="info"> + <%= composition_info(time_table) %> - + <% unless time_table.periods.empty? %> + <% %w(monday tuesday wednesday thursday friday saturday sunday).each do |day_type| %> + <span class="<%= time_table.send( day_type) ? "included_day_type" : "excluded_day_type" %>"> + <%= time_table.human_attribute_name(day_type).first(2) %> + </span> + <% end %> + <% end %> - + <%= bounding_info(time_table) %> <div class="actions"> <%= link_to t("actions.edit"), edit_referential_time_table_path(@referential, time_table), :class => "edit" %> </div> diff --git a/app/views/vehicle_journeys/edit.html.erb b/app/views/vehicle_journeys/edit.html.erb index 164f654b6..fcb0c2bd9 100644 --- a/app/views/vehicle_journeys/edit.html.erb +++ b/app/views/vehicle_journeys/edit.html.erb @@ -1,4 +1,4 @@ -<%= title_tag t('vehicle_journeys.edit.title' ) %> +<%= title_tag edit_vehicle_title(@vehicle_journey) %> <div class="vehicle_journey"> <div class="summary"> @@ -7,7 +7,7 @@ <%= link_to line_formatted_name( @line), [@referential, @line] %> </p> <p> - <label><%= Chouette::Route.model_name.human %>: </label> + <label><%= @vehicle_journey.human_attribute_name(:route) %>: </label> <%= link_to @route.name, [@referential, @line, @route] %> </p> <div> diff --git a/app/views/vehicle_journeys/index.html.erb b/app/views/vehicle_journeys/index.html.erb index cbb43408c..025a99f2a 100644 --- a/app/views/vehicle_journeys/index.html.erb +++ b/app/views/vehicle_journeys/index.html.erb @@ -21,12 +21,27 @@ </div> <div class="vehicle_journeys paginated_content"> <table border="1"> - <tr> - <th> "vide"</th> - <% @vehicle_journeys.each do |vj| %> - <th> <%= link_to "c", [@referential, @line, @route, vj]%></th> - <% end %> - </tr> + <thead> + <tr> + <th>mission</th> + <% @vehicle_journeys.each do |vj| %> + <th> <%= link_to vj.journey_pattern.published_name.blank? ? vj.journey_pattern.id: vj.journey_pattern.published_name, + [@referential, @line, @route, vj.journey_pattern]%></th> + <% end %> + </tr> + <tr> + <th>calendriers</th> + <% @vehicle_journeys.each do |vj| %> + <th title="<%= time_tables_info( vj) %>" class="calendars"> <%= time_tables_shortest_info( vj) %></th> + <% end %> + </tr> + <tr> + <th>courses</th> + <% @vehicle_journeys.each do |vj| %> + <th> <%= link_to "c", [@referential, @line, @route, vj]%></th> + <% end %> + </tr> + <thead> <% @route.stop_points.each_with_index do |sp, index| %> <tr> <td><%= sp.stop_area.name %></td> diff --git a/app/views/vehicle_journeys/new.html.erb b/app/views/vehicle_journeys/new.html.erb index fd7bb34ac..db344438e 100644 --- a/app/views/vehicle_journeys/new.html.erb +++ b/app/views/vehicle_journeys/new.html.erb @@ -1,4 +1,4 @@ -<%= title_tag t('vehicle_journeys.new.title') %> +<%= title_tag t('vehicle_journeys.new.title') %> <div class="vehicle_journey"> <div class="summary"> @@ -7,7 +7,7 @@ <%= link_to line_formatted_name( @line), [@referential, @line] %> </p> <p> - <label><%= Chouette::Route.model_name.human %>: </label> + <label><%= @vehicle_journey.human_attribute_name(:route) %>: </label> <%= link_to @route.name, [@referential, @line, @route] %> </p> <div> diff --git a/app/views/vehicle_journeys/show.html.erb b/app/views/vehicle_journeys/show.html.erb index a89d2261b..997c92705 100644 --- a/app/views/vehicle_journeys/show.html.erb +++ b/app/views/vehicle_journeys/show.html.erb @@ -1,4 +1,4 @@ -<%= title_tag t('vehicle_journeys.edit.title' ) %> +<%= title_tag vehicle_title(@vehicle_journey) %> <div class="vehicle_journey"> <div class="summary"> @@ -7,11 +7,11 @@ <%= link_to line_formatted_name( @line), [@referential, @line] %> </p> <p> - <label><%= Chouette::Route.model_name.human %>: </label> + <label><%= @vehicle_journey.human_attribute_name(:route) %>: </label> <%= link_to @route.name, [@referential, @line, @route] %> </p> <p> - <label><%= Chouette::JourneyPattern.model_name.human %>: </label> + <label><%= @vehicle_journey.human_attribute_name(:journey_pattern) %>: </label> <%= link_to journey_name(@vehicle_journey.journey_pattern), [@referential, @line, @route, @vehicle_journey.journey_pattern] %> </p> <p> @@ -52,6 +52,10 @@ </p> </div> </div> +<h3><%= t('.time_tables') %></h3> +<div class="vehicle_journey_time_tables"> +<%= render :partial => "vehicle_journeys/time_table", :collection => @vehicle_journey.time_tables %> +</div> <% content_for :sidebar do %> <ul class="actions"> <li><%= link_to t('vehicle_journeys.actions.edit'), edit_referential_line_route_vehicle_journey_path(@referential, @line, @route, @vehicle_journey), :class => "edit" %></li> diff --git a/config/locales/time_tables.yml b/config/locales/time_tables.yml index e10d8a5f8..421838586 100644 --- a/config/locales/time_tables.yml +++ b/config/locales/time_tables.yml @@ -1,6 +1,11 @@ en: time_tables: time_table: + empty: empty + bounding: from %{start} to %{end} + periods_count: "periods: %{count}" + dates_count: "dates: %{count}" + periods_dates_count: "dates: %{dates_count}, periods: %{periods_count}" actions: new: Add a new timetable edit: Edit this timetable @@ -62,6 +67,11 @@ en: fr: time_tables: time_table: + empty: vide + bounding: du %{start} au %{end} + periods_count: "périodes: %{count}" + dates_count: "dates: %{count}" + periods_dates_count: "dates: %{dates_count}, périodes: %{periods_count}" actions: new: Ajouter un calendrier edit: Modifier ce calendrier diff --git a/config/locales/vehicle_journeys.yml b/config/locales/vehicle_journeys.yml index 18882bad8..712f684d9 100644 --- a/config/locales/vehicle_journeys.yml +++ b/config/locales/vehicle_journeys.yml @@ -1,5 +1,8 @@ en: vehicle_journeys: + vehicle_journey: + title_stopless: Vehicle journey %{name} + title: Vehicle journey %{name} leaving from %{stop} at %{time} actions: new: Add a new vehicle journey edit: Edit this vehicle journey @@ -8,11 +11,16 @@ en: new: title: Add a new vehicle journey edit: - title: Update vehicle journey %{vehicle journey} + title_stopless: Update vehicle journey %{name} + title: Update vehicle journey %{name} leaving from %{stop} at %{time} + form: + time_tables: Associated calendars to vehicle journey show: title: Vehicle Journey %{vehicle journey} + time_tables: Calendars list + bounding: From %{start} to %{end} index: - title: Vehicle journeys on route {%route} + title: Vehicle journeys on route %{route} activerecord: models: vehicle_journey: @@ -33,6 +41,8 @@ en: published_journey_identifier: Published Identifier facility: Facility vehicletypeidentifier: Vehicle Type Identifier + time_table_ids: Calendar list + vehicle_journey_at_stop_ids: Time list objectid: Neptune identifier object_version: Version creation_time: Created on @@ -40,6 +50,9 @@ en: fr: vehicle_journeys: + vehicle_journey: + title_stopless: Course %{name} + title: Course %{name} partant de %{stop} à %{time} actions: new: "Ajouter une course" edit: "Modifier cette course" @@ -48,9 +61,14 @@ fr: new: title: "Ajouter une course" edit: - title: "Modifier la course au départ de %{stop} à %{time} sur la séquence %{route}" + title_stopless: "Modifier la course %{name}" + title: "Modifier la course partant de %{stop} à %{time}" + form: + time_tables: Calendriers associés à la course show: title: "Course au départ de %{stop} à %{time} sur la séquence %{route}" + time_tables: Liste des calendriers + bounding: De %{start} à %{end} index: title: "Courses de la séquence d'arrêts %{route}" activerecord: @@ -73,6 +91,8 @@ fr: published_journey_identifier: Identifiant public facility: Equipement vehicle_type_identifier: "Type d'identifiant du véhicule" + time_table_ids: "Liste des calendriers" + vehicle_journey_at_stop_ids: Liste des horaires objectid: Identifiant Neptune object_version: Version creation_time: Créé le diff --git a/config/routes.rb b/config/routes.rb index 573b7ab7c..82d1e9bee 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -50,6 +50,9 @@ ChouetteIhm::Application.routes.draw do resources :companies, :stop_areas resources :time_tables do + collection do + get :comment_filter + end resources :time_table_dates resources :time_table_periods end |
