251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
|
# File 'lib/fasten/ui/curses.rb', line 251
def ui_tasks
workers.each do |worker|
worker.spinner = (worker.spinner + 1) % SPINNER_LEN if worker.running?
end
cur = Time.new
count_done = tasks.done.count
count_total = tasks.count
tl = count_total.to_s.length
percentstr = count_total.positive? && " #{(count_done * 100 / count_total).to_i}%"
elapsed_str = format ' %.2f s', (dif = cur - runner.ini) if runner.ini
@stat_str ||= begin
@runner_last_avg = runner.last_avg
if runner.last_avg && runner.last_err
format '≈ %.2f s ± %.2f', runner.last_avg, runner.last_err
elsif runner.last_avg
format '≈ %.2f s', runner.last_avg
end
end
end_str = [elapsed_str, @stat_str].compact.join(' ')
if @runner_last_avg
a = dif
b = @runner_last_avg
else
a = count_done
b = count_total
end
col_ini = ui_text_aligned(2, :left, format("Tasks %#{tl}d/%d%s", count_done, count_total, percentstr)) + 1
col_fin = n_cols - 1 - end_str.length
ui_text_aligned(2, :right, end_str)
ui_progressbar(2, col_ini, col_fin, a, b)
max = 2
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
end
list.each_with_index do |task, index|
next if 3 + index >= n_rows
if task.depends && !task.depends.empty?
x = max
x = ui_task_string(task, 3 + index, x, str: ':') + 1
task.depends.each do |dependant_task|
x = ui_task_string(dependant_task, 3 + index, x) + 1
end
else
x = max + 1
last_avg = task.last_avg
last_err = task.last_err
if task.dif
str = format ' %.2f s', task.dif
elsif last_avg && last_err
str = format '%s ≈ %.2f s ± %.2f %s', ui_task_clock(task, cur, last_avg), last_avg, last_err, task.worker&.name
elsif last_avg
str = format '%s ≈ %.2f s %s', ui_task_clock(task, cur, last_avg), last_avg, task.worker&.name
else
str = ui_task_clock(task, cur, 0)
end
ui_task_string(task, 3 + index, x, str: str) if str
end
end
end
|