Class: TokyoMetro::App::Renderer::StationTimetable::Group::EachRailwayLine::EachRailwayDirection::EachOperationDay::StationTrainTimes

Inherits:
Factory::Decorate::MetaClass
  • Object
show all
Defined in:
lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(station_train_times) ⇒ StationTrainTimes

Returns a new instance of StationTrainTimes.



3
4
5
6
7
8
9
10
# File 'lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb', line 3

def initialize( station_train_times )
  @grouped_by_hour = station_train_times.group_by( &:hour_in_station_timetable )

  @terminal_station_infos = ::Station::Info.where( id: terminal_station_info_ids )
  @train_type_infos = ::TrainType.includes( :train_type_in_api ).where( id: train_type_info_ids )
  @car_compositions = ids_in_station_train_times( :car_composition ).select( &:present? )
  @major_terminal_station_info_id = get_major_terminal_station_info_id
end

Instance Attribute Details

#car_compositionsObject (readonly)

Returns the value of attribute car_compositions.



15
16
17
# File 'lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb', line 15

def car_compositions
  @car_compositions
end

#grouped_by_hourObject (readonly)

Returns the value of attribute grouped_by_hour.



12
13
14
# File 'lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb', line 12

def grouped_by_hour
  @grouped_by_hour
end

#major_terminal_station_info_idObject (readonly)

Returns the value of attribute major_terminal_station_info_id.



16
17
18
# File 'lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb', line 16

def major_terminal_station_info_id
  @major_terminal_station_info_id
end

#terminal_station_infosObject (readonly)

Returns the value of attribute terminal_station_infos.



13
14
15
# File 'lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb', line 13

def terminal_station_infos
  @terminal_station_infos
end

#train_type_infosObject (readonly)

Returns the value of attribute train_type_infos.



14
15
16
# File 'lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb', line 14

def train_type_infos
  @train_type_infos
end

Instance Method Details

#has_one_terminal_station_info?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb', line 18

def has_one_terminal_station_info?
  @terminal_station_infos.length == 1
end

#has_one_train_type_info?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb', line 22

def has_one_train_type_info?
  @train_type_infos.map( &:train_type_in_api ).map( &:id ).uniq.length == 1
end

#hoursObject



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb', line 26

def hours
  midnight_hours = [ 0 , 1 , 2 ]
  a = @grouped_by_hour.keys.sort

  midnight_hours.each do | midnight_hour |
    if a.include?( midnight_hour )
      a = a - [ midnight_hour ]
      a = a + [ midnight_hour ]
    end
  end

  a
end

#render_bodyObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb', line 40

def render_body
  h.render inline: <<-HAML , type: :haml , locals: h_locals
- one_terminal_station_info = this.has_one_terminal_station_info?
- one_train_type_info = this.has_one_train_type_info?
%tbody
- this.hours.each do |h|
  - station_train_times_in_an_hour = this.grouped_by_hour[h].sort_by( &:min_in_station_timetable )
  %tr{ class: :hour_row }
    %td{ class: :hour }<
      = h
    %td{ class: [ :station_train_times , cycle( :odd , :even ) ] }
      - station_train_times_in_an_hour.each do | station_train_time |
        = station_train_time.decorate.render_in_station_timetable( this.terminal_station_infos , this.train_type_infos , one_train_type_info , one_terminal_station_info , this.major_terminal_station_info_id )
  HAML
end

#render_message_in_headerObject



56
57
58
59
60
61
62
63
64
65
# File 'lib/tokyo_metro/app/renderer/station_timetable/group/each_railway_line/each_direction/each_operation_day/station_train_times.rb', line 56

def render_message_in_header
  h.render inline: <<-HAML , type: :haml , locals: { ja: message_in_header_ja , en: message_in_header_en }
%tr
%td{ colspan: 2 , class: :train_type_and_terminal_station_infos }<
  %div{ class: :text_ja }<
    = ja
  %div{ class: :text_en }<
    = en
  HAML
end