lib/fasten/ui/curses.rb in fasten-0.7.2 vs lib/fasten/ui/curses.rb in fasten-0.7.4
- old
+ new
@@ -7,11 +7,11 @@
module UI
class Curses
include ::Curses
extend Forwardable
- def_delegators :runner, :worker_list, :task_list, :task_done_list, :task_error_list, :task_running_list, :task_waiting_list, :worker_list
+ def_delegators :runner, :worker_list, :tasks, :worker_list
def_delegators :runner, :name, :workers, :workers=, :state, :state=
attr_accessor :n_rows, :n_cols, :selected, :sel_index, :clear_needed, :message, :runner
SPINNER_STR = '⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏'
@@ -104,15 +104,15 @@
end
elsif key == Curses::Key::RIGHT
self.workers += 1
self.message = "Increasing workers to #{workers}"
elsif key == Curses::Key::DOWN
- self.sel_index = sel_index ? [sel_index + 1, task_list.count - 1].min : 0
- self.selected = task_list[sel_index]
+ self.sel_index = sel_index ? [sel_index + 1, tasks.count - 1].min : 0
+ self.selected = tasks[sel_index]
elsif key == Curses::Key::UP
- self.sel_index = sel_index ? [sel_index - 1, 0].max : task_list.count - 1
- self.selected = task_list[sel_index]
+ self.sel_index = sel_index ? [sel_index - 1, 0].max : tasks.count - 1
+ self.selected = tasks[sel_index]
elsif key == 'q'
self.message = 'Will quit when running tasks end'
self.state = :QUITTING
elsif key == 'p'
self.message = 'Will pause when running tasks end'
@@ -123,12 +123,12 @@
force_clear
end
def ui_workers_summary
- running_count = task_running_list.count
- waiting_count = task_waiting_list.count
+ running_count = tasks.running.count
+ waiting_count = tasks.waiting.count
workers_count = worker_list.count
"Procs running: #{running_count} idle: #{workers_count - running_count} waiting: #{waiting_count} #{runner.use_threads ? 'threads' : 'processes'}: #{workers}"
end
@@ -194,19 +194,22 @@
end
end
def ui_task_color(task)
rev = task == selected ? A_REVERSE : 0
+
case task.state
when :RUNNING
color_pair(1) | A_TOP | rev
- when :FAIL
- color_pair(3) | A_TOP | rev
when :DONE
color_pair(2) | A_TOP | rev
+ when :FAIL
+ color_pair(3) | A_TOP | rev
+ when :WAIT
+ A_TOP | rev
else
- task_waiting_list.include?(task) ? A_TOP | rev : color_pair(4) | A_DIM | rev
+ color_pair(4) | A_DIM | rev
end
end
def ui_task_string(task, y, x, icon: nil, str: nil)
setpos y, x
@@ -226,20 +229,20 @@
def ui_tasks
worker_list.each do |worker|
worker.spinner = (worker.spinner + 1) % SPINNER_LEN if worker.running?
end
- count_done = task_done_list.count
- count_total = task_list.count
+ count_done = tasks.done.count
+ count_total = tasks.count
tl = count_total.to_s.length
col_ini = ui_text_aligned(2, :left, format("Tasks %#{tl}d/%d", count_done, count_total)) + 1
col_fin = n_cols - 5
ui_text_aligned(2, :right, "#{(count_done * 100 / count_total).to_i}%") if count_total.positive?
ui_progressbar(2, col_ini, col_fin, count_done, count_total)
max = 2
- list = task_list.sort_by.with_index { |x, index| [x.run_score, index] }
+ list = tasks.sort_by.with_index { |x, index| [x.run_score, index] }
list.each_with_index do |task, index|
next if 3 + index >= n_rows
x = ui_task_string(task, 3 + index, 2, icon: true)
max = x if x > max