Class: TokyoMetro::App::Renderer::RealTimeInfos

Inherits:
Factory::Decorate::MetaClass show all
Defined in:
lib/tokyo_metro/app/renderer/real_time_infos.rb

Defined Under Namespace

Modules: MetaDatum, SideMenu Classes: EachRailwayLine

Instance Attribute Summary collapse

判定 - 路線 collapse

判定 - 列車位置情報 collapse

render - (1) Main collapse

render - 2. Sub collapse

render - 3. Meta Data collapse

Loop collapse

Instance Method Summary collapse

Constructor Details

#initialize(request, railway_lines, http_client = ::HTTPClient.new, visibility: :visible, test_mode: nil) ⇒ RealTimeInfos

Returns a new instance of RealTimeInfos.



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 3

def initialize( request , railway_lines , http_client = ::HTTPClient.new , visibility: :visible , test_mode: nil )
  super( request )
  @http_client = http_client
  @visibility = visibility
  @test_mode = test_mode

  set_railway_lines( railway_lines )
  set_infos_of_each_railway_line

  raise unless has_any_railway_line?

  set_meta_datum
end

Instance Attribute Details

#infos_of_each_railway_lineObject (readonly)

Returns the value of attribute infos_of_each_railway_line.



17
18
19
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 17

def infos_of_each_railway_line
  @infos_of_each_railway_line
end

Class Method Details

.process_in_loopObject

定期実行する処理



147
148
149
150
151
152
153
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 147

def self.process_in_loop
  if on_rails_application?
    puts "process_in_loop"
    self.new( nil , ::RailwayLine.tokyo_metro , visibility: :hidden ).update_train_operation_text_in_db
  end
  return nil
end

Instance Method Details

#has_any_railway_line?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 21

def has_any_railway_line?
  @railway_lines.present?
end

#has_multiple_railway_lines?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 29

def has_multiple_railway_lines?
  @railway_lines.length > 1
end

#has_one_railway_line?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 25

def has_one_railway_line?
  @railway_lines.length == 1
end

#has_train_location_infos?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 35

def has_train_location_infos?
  @infos_of_each_railway_line.map( &:train_location_infos ).flatten.present?
end

#has_valid_train_location_infos?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 39

def has_valid_train_location_infos?
  valid_train_location_infos.present?
end

#render(include_train_location_infos: false, controller: :train_operation, options: nil) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 51

def render( include_train_location_infos: false , controller: :train_operation , options: nil )
  if options.present?
    options = [ options ].flatten
  end

  h_locals = {
    this: self ,
    request: @request ,
    include_train_location_infos: include_train_location_infos ,
    controller: controller ,
    add_index_of_train_location: options.try( :include? , :add_index_of_train_location )
  }

  h.render inline: <<-HAML , type: :haml , locals: h_locals
%div{ id: :train_operation_infos }
= this.render_title_of_train_operation_infos( add_index_of_train_location: add_index_of_train_location )
= this.render_train_operation_infos( controller )
- if include_train_location_infos
  - if this.has_valid_train_location_infos?
    = this.render_title_of_train_location_infos
    = this.render_train_location_infos
  HAML
end

#render_meta_datum(include_train_location_infos: nil) ⇒ Object



140
141
142
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 140

def render_meta_datum( include_train_location_infos: nil )
  @meta_datum.try( :render , include_train_location_infos: include_train_location_infos )
end

#render_title_of_train_location_infosObject



128
129
130
131
132
133
134
135
136
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 128

def render_title_of_train_location_infos
  ::TokyoMetro::App::Renderer::Concerns::Header::Content.new(
    @request ,
    :title_of_train_location_infos ,
    :train_location ,
    ::TrainLocationDecorator.common_title_ja ,
    ::TrainLocationDecorator.common_title_en
  ).render
end

#render_title_of_train_operation_infos(add_index_of_train_location: false) ⇒ Object



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 103

def render_title_of_train_operation_infos( add_index_of_train_location: false )
  proc_for_additional_content = ::Proc.new {
    h.render inline: <<-HAML , type: :haml , locals: { this: self , add_index_of_train_location: add_index_of_train_location }
- if add_index_of_train_location and this.has_train_location_infos?
%div{ class: :link_info_to_train_location_of_each_railway_line }
  %div{ class: :icon }<
    = ::TokyoMetro::App::Renderer::Icon.train_location( request , 2 ).render
  %div{ class: :text }<
    %p{ class: :text_ja }<
      = "路線名をクリックすると、各路線で現在運行している列車が表示されます。"
    %p{ class: :text_en }<
      = "To display train locations of each railway line, please click the railway line name."
    HAML
  }

  ::TokyoMetro::App::Renderer::Concerns::Header::Content.new(
    @request ,
    :title_of_train_operation_infos ,
    :train_operation ,
    ::TrainOperation::InfoDecorator.common_title_ja ,
    ::TrainOperation::InfoDecorator.common_title_en ,
    additional_content: proc_for_additional_content
  ).render
end

#render_train_location_infosObject



89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 89

def render_train_location_infos
  h.render inline: <<-HAML , type: :haml , locals: { this: self }
%div{ id: :train_location_infos }
- if this.has_one_railway_line?
  - this.infos_of_each_railway_line.each do | info_of_a_railway_line |
    = info_of_a_railway_line.render_train_location_infos
- else
  - this.infos_of_each_railway_line.each do | info_of_a_railway_line |
    - if info_of_a_railway_line.train_location_infos.present?
      = info_of_a_railway_line.railway_line.decorate.render_title_in_train_location
      = info_of_a_railway_line.render_train_location_infos
  HAML
end

#render_train_operation_infos(controller) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 77

def render_train_operation_infos( controller )
  h_locals = {
    this: self ,
    controller: controller
  }

  h.render inline: <<-HAML , type: :haml , locals: h_locals
- this.infos_of_each_railway_line.each do | info_of_a_railway_line |
= info_of_a_railway_line.render_train_operation_info( controller )
  HAML
end

#update_train_operation_text_in_dbObject



43
44
45
46
47
# File 'lib/tokyo_metro/app/renderer/real_time_infos.rb', line 43

def update_train_operation_text_in_db
  @infos_of_each_railway_line.each do | info_of_railway_line |
    info_of_railway_line.update_train_operation_text_in_db
  end
end