class TokyoMetro::App::Renderer::StationTimetable::Group::EachRailwayLine::EachRailwayDirection::EachOperationDay

個別の時刻表(路線・方面・運行日別)を作成するためのクラス

Attributes

station_train_times[R]

Public Class Methods

new( request , station_info , railway_line , railway_direction , operation_day , station_train_times ) click to toggle source

Constructor @param station_train_times_of_a_direction_and_an_operation_day [Array <TrainTime>] 各列車の情報(路線・方面・運行日別)のリスト @param railway_line [RailwayLine] 路線のインスタンス @param direction [RailwayDirection] 方面のインスタンス @param operation_day [OperationDay] 運行日のインスタンス @param station [Station] 駅のインスタンス(駅に複数の路線が乗り入れている場合は、代表する路線のインスタンス)

Calls superclass method
# File lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day.rb, line 10
def initialize( request , station_info , railway_line , railway_direction , operation_day , station_train_times )
  super( request )
  @station_info = station_info
  @railway_line = railway_line
  @railway_direction = railway_direction
  @operation_day = operation_day

  set_valid_station_info

  @station_train_times = ::TokyoMetro::App::Renderer::StationTimetable::Group::EachRailwayLine::EachRailwayDirection::EachOperationDay::StationTrainTimes.new( station_train_times )
end

Public Instance Methods

render() click to toggle source
# File lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day.rb, line 24
  def render
    h.render inline: <<-HAML , type: :haml , locals: h_locals
%table{ class: [ :station_timetable , operation_day.decorate.css_class_name ] }
  = this.render_header
  = this.station_train_times.render_body
    HAML
  end
render_header() click to toggle source
# File lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day.rb, line 32
  def render_header
    h.render inline: <<-HAML , type: :haml , locals: h_locals
%thead{ class: railway_line.css_class_name }
  %tr
    %td{ colspan: 2 , class: :top_header }
      = railway_line.decorate.render_in_station_timetable_header
      %div{ class: :main }
        = operation_day.decorate.render_in_station_timetable_header
        = railway_direction.decorate.render_in_station_timetable_header
        - if station_info.present?
          = station_info.decorate.render_in_station_timetable_header
  = station_train_times.render_message_in_header
    HAML
  end

Private Instance Methods

h_locals() click to toggle source
Calls superclass method
# File lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day.rb, line 58
def h_locals
  super.merge({
    this: self ,
    station_info: @station_info ,
    railway_line: @railway_line ,
    railway_direction: @railway_direction ,
    operation_day: @operation_day ,
    station_train_times: @station_train_times
  })
end
set_valid_station_info() click to toggle source

@note

station (駅のインスタンス)に保持されている路線の情報が railway_line (路線のインスタンス)と異なる場合は、
railway_line を優先し、station と同名の駅に乗り入れている路線の中から railway_line と矛盾しない駅のインスタンスを取得する。
# File lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day.rb, line 52
def set_valid_station_info
  unless @station_info.railway_line_id == @railway_line.id
    @station_info = @station_info.station_infos_including_other_railway_lines.find_by( railway_line_id: @railway_line.id )
  end
end