Class: SolidQueueTui::Views::JobDetailView
- Inherits:
-
Object
- Object
- SolidQueueTui::Views::JobDetailView
- Defined in:
- lib/solid_queue_tui/views/job_detail_view.rb
Instance Method Summary collapse
- #active? ⇒ Boolean
- #bindings ⇒ Object
- #breadcrumb ⇒ Object
- #handle_input(event) ⇒ Object
- #hide ⇒ Object
-
#initialize(tui) ⇒ JobDetailView
constructor
A new instance of JobDetailView.
- #render(frame, area) ⇒ Object
- #show(job: nil, failed_job: nil) ⇒ Object
Constructor Details
#initialize(tui) ⇒ JobDetailView
6 7 8 9 10 11 |
# File 'lib/solid_queue_tui/views/job_detail_view.rb', line 6 def initialize(tui) @tui = tui @job = nil @failed_job = nil @scroll_offset = 0 end |
Instance Method Details
#active? ⇒ Boolean
26 |
# File 'lib/solid_queue_tui/views/job_detail_view.rb', line 26 def active? = @active |
#bindings ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/solid_queue_tui/views/job_detail_view.rb', line 71 def bindings bindings = [ { key: "Esc", action: "Close" }, { key: "j/k", action: "Scroll" } ] if @failed_job bindings += [ { key: "R", action: "Retry" }, { key: "D", action: "Discard" } ] end bindings end |
#breadcrumb ⇒ Object
85 86 87 88 89 90 91 92 93 |
# File 'lib/solid_queue_tui/views/job_detail_view.rb', line 85 def if @failed_job "failed:#{@failed_job.job_id}" elsif @job "jobs:#{@job.id}" else "detail" end end |
#handle_input(event) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/solid_queue_tui/views/job_detail_view.rb', line 43 def handle_input(event) case event in { type: :key, code: "esc" } | { type: :key, code: "q" } hide nil in { type: :key, code: "j" } | { type: :key, code: "up" } @scroll_offset = [@scroll_offset - 1, 0].max nil in { type: :key, code: "k" } | { type: :key, code: "down" } @scroll_offset += 1 nil in { type: :key, code: "R" } if @failed_job Actions::RetryJob.call(@failed_job.id) hide :refresh end in { type: :key, code: "D" } if @failed_job Actions::DiscardJob.call(@failed_job.id) hide :refresh end else nil end end |
#hide ⇒ Object
20 21 22 23 24 |
# File 'lib/solid_queue_tui/views/job_detail_view.rb', line 20 def hide @active = false @job = nil @failed_job = nil end |
#render(frame, area) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/solid_queue_tui/views/job_detail_view.rb', line 28 def render(frame, area) return unless @active # Render an overlay with padding inner = shrink_area(area, 4, 2) frame.(@tui.paragraph(text: ""), inner) # clear background if @failed_job render_failed_detail(frame, inner) elsif @job render_job_detail(frame, inner) end end |
#show(job: nil, failed_job: nil) ⇒ Object
13 14 15 16 17 18 |
# File 'lib/solid_queue_tui/views/job_detail_view.rb', line 13 def show(job: nil, failed_job: nil) @job = job @failed_job = failed_job @scroll_offset = 0 @active = true end |