Class: ProgressBarView

Inherits:
Object
  • Object
show all
Defined in:
lib/gorgon/progress_bar_view.rb

Overview

Instance Method Summary collapse

Constructor Details

#initialize(job_state) ⇒ ProgressBarView

Returns a new instance of ProgressBarView.



16
17
18
19
20
# File 'lib/gorgon/progress_bar_view.rb', line 16

def initialize job_state
  @job_state = job_state
  @job_state.add_observer(self)
  @timer = EventMachine::PeriodicTimer.new(PROGRESS_BAR_REFRESH_RATE) { update_elapsed_time }
end

Instance Method Details

#create_progress_bar_if_started_job_runningObject



48
49
50
51
52
53
54
55
56
# File 'lib/gorgon/progress_bar_view.rb', line 48

def create_progress_bar_if_started_job_running
  if @progress_bar.nil? && @job_state.state == :running
    print "\r#{' ' * (LOADING_MSG.length)}\r"
    puts LEGEND_MSG
    @progress_bar = ProgressBar.create(:total => @job_state.total_files,
                                       :length => [terminal_length, MAX_LENGTH].min,
                                       :format => format(bar: :green, title: :white));
  end
end

#showObject



22
23
24
# File 'lib/gorgon/progress_bar_view.rb', line 22

def show
  print LOADING_MSG
end

#update(payload = {}) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/gorgon/progress_bar_view.rb', line 26

def update payload={}
  output_gorgon_crash_message payload if gorgon_crashed? payload

  create_progress_bar_if_started_job_running

  return if @progress_bar.nil? || @finished

  failed_files_count = @job_state.failed_files_count

  @progress_bar.title=" F: #{failed_files_count} H: #{@job_state.total_running_hosts} W: #{@job_state.total_running_workers}"
  if failed_files_count > 0
    @progress_bar.format(format(bar: :red, title: :default))
  end

  @progress_bar.progress = @job_state.finished_files_count

  if @job_state.is_job_complete? || @job_state.is_job_cancelled?
    @finished = true
    print_summary
  end
end

#update_elapsed_timeObject



58
59
60
61
# File 'lib/gorgon/progress_bar_view.rb', line 58

def update_elapsed_time
  @timer.cancel if @finished
  @progress_bar.refresh if @progress_bar
end