Class: SolidQueueTui::Views::QueuesView
- Inherits:
-
Object
- Object
- SolidQueueTui::Views::QueuesView
- Defined in:
- lib/solid_queue_tui/views/queues_view.rb
Instance Method Summary collapse
- #bindings ⇒ Object
- #breadcrumb ⇒ Object
- #handle_input(event) ⇒ Object
-
#initialize(tui) ⇒ QueuesView
constructor
A new instance of QueuesView.
- #render(frame, area) ⇒ Object
- #selected_item ⇒ Object
- #update(queues:) ⇒ Object
Constructor Details
#initialize(tui) ⇒ QueuesView
6 7 8 9 10 11 12 |
# File 'lib/solid_queue_tui/views/queues_view.rb', line 6 def initialize(tui) @tui = tui @table_state = RatatuiRuby::TableState.new(nil) @table_state.select(0) @selected_row = 0 @queues = [] end |
Instance Method Details
#bindings ⇒ Object
67 68 69 70 71 72 |
# File 'lib/solid_queue_tui/views/queues_view.rb', line 67 def bindings [ { key: "j/k", action: "Navigate" }, { key: "G/g", action: "Bottom/Top" } ] end |
#breadcrumb ⇒ Object
74 |
# File 'lib/solid_queue_tui/views/queues_view.rb', line 74 def = "queues" |
#handle_input(event) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/solid_queue_tui/views/queues_view.rb', line 47 def handle_input(event) case event in { type: :key, code: "j" } | { type: :key, code: "up" } move_selection(-1) in { type: :key, code: "k" } | { type: :key, code: "down" } move_selection(1) in { type: :key, code: "g" } jump_to_top in { type: :key, code: "G" } jump_to_bottom else nil end end |
#render(frame, area) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/solid_queue_tui/views/queues_view.rb', line 20 def render(frame, area) columns = [ { key: :name, label: "QUEUE", width: :fill }, { key: :size, label: "SIZE", width: 10 }, { key: :status, label: "STATUS", width: 10, color_by: :status } ] rows = @queues.map do |q| { name: q.name, size: q.size, status: q.paused ? "paused" : "active" } end table = Components::JobTable.new( @tui, title: "Queues", columns: columns, rows: rows, selected_row: @selected_row, empty_message: "No queues found" ) table.render(frame, area, @table_state) end |
#selected_item ⇒ Object
62 63 64 65 |
# File 'lib/solid_queue_tui/views/queues_view.rb', line 62 def selected_item return nil if @queues.empty? || @selected_row >= @queues.size @queues[@selected_row] end |
#update(queues:) ⇒ Object
14 15 16 17 18 |
# File 'lib/solid_queue_tui/views/queues_view.rb', line 14 def update(queues:) @queues = queues @selected_row = @selected_row.clamp(0, [@queues.size - 1, 0].max) @table_state.select(@selected_row) end |