class TokyoMetro::App::Renderer::RealTimeInfos
Attributes
infos_of_each_railway_line[R]
Public Class Methods
new( request , railway_lines , http_client = ::HTTPClient.new , visibility: :visible , test_mode: nil )
click to toggle source
Calls superclass method
# 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
process_in_loop()
click to toggle source
定期実行する処理
# 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
Public Instance Methods
has_any_railway_line?()
click to toggle source
@!group 判定 - 路線
# 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?()
click to toggle source
# 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?()
click to toggle source
# 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?()
click to toggle source
@!group 判定 - 列車位置情報
# 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?()
click to toggle source
# 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 )
click to toggle source
@!group render - (1) Main
# 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 )
click to toggle source
@!group render - 3. Meta Data
# 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_infos()
click to toggle source
# 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 )
click to toggle source
# 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_infos()
click to toggle source
# 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 )
click to toggle source
@!group render - 2. Sub
# 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_db()
click to toggle source
# 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
Private Instance Methods
set_infos_of_each_railway_line()
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos.rb, line 165 def set_infos_of_each_railway_line @infos_of_each_railway_line = ::Array.new( @railway_lines.map { | railway_line | ::TokyoMetro::App::Renderer::RealTimeInfos::EachRailwayLine.new( request , railway_line , @http_client , @test_mode) }) end
set_meta_datum()
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos.rb, line 191 def set_meta_datum if valid_train_operation_infos.present? @meta_datum = ::TokyoMetro::App::Renderer::RealTimeInfos::MetaDatum::Whole.new( request , valid_train_operation_infos , valid_train_location_infos , @visibility ) else @meta_datum = nil end end
set_railway_lines( railway_lines )
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos.rb, line 157 def set_railway_lines( railway_lines ) if railway_lines.instance_of?( ::RailwayLine ) @railway_lines = [ railway_lines ] else @railway_lines = railway_lines.except_for_branch_lines end end
train_location_infos()
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos.rb, line 175 def train_location_infos if has_train_location_infos? @infos_of_each_railway_line.map( &:train_location_infos ).flatten else nil end end
train_operation_infos()
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos.rb, line 171 def train_operation_infos @infos_of_each_railway_line.map( &:train_operation_info ).flatten end
valid_train_location_infos()
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos.rb, line 187 def valid_train_location_infos train_location_infos.try( :select , &:present? ) end
valid_train_operation_infos()
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos.rb, line 183 def valid_train_operation_infos train_operation_infos.keep_if { | item | item.instance_of?( ::TokyoMetro::Api::TrainOperation::Info ) } end