Class: SolidQueueTui::Views::QueuesView

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_queue_tui/views/queues_view.rb

Instance Method Summary collapse

Constructor Details

#initialize(tui) ⇒ QueuesView

Returns a new instance of QueuesView.



6
7
8
9
10
11
12
13
# 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 = []
  @confirm_action = nil
end

Instance Method Details

#bindingsObject



55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/solid_queue_tui/views/queues_view.rb', line 55

def bindings
  if @confirm_action
    [
      { key: "y", action: "Confirm" },
      { key: "n/Esc", action: "Cancel" }
    ]
  else
    [
      { key: "j/k", action: "Navigate" },
      { key: "p", action: "Pause/Resume" },
      { key: "G/g", action: "Bottom/Top" }
    ]
  end
end


70
# File 'lib/solid_queue_tui/views/queues_view.rb', line 70

def breadcrumb = "queues"

#capturing_input?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/solid_queue_tui/views/queues_view.rb', line 51

def capturing_input?
  !!@confirm_action
end

#handle_input(event) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/solid_queue_tui/views/queues_view.rb', line 38

def handle_input(event)
  if @confirm_action
    handle_confirm_input(event)
  else
    handle_normal_input(event)
  end
end

#render(frame, area) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/solid_queue_tui/views/queues_view.rb', line 21

def render(frame, area)
  if @confirm_action
    confirm_area, content_area = @tui.layout_split(
      area,
      direction: :vertical,
      constraints: [
        @tui.constraint_length(3),
        @tui.constraint_fill(1)
      ]
    )
    render_confirm(frame, confirm_area)
    render_table(frame, content_area)
  else
    render_table(frame, area)
  end
end

#selected_itemObject



46
47
48
49
# File 'lib/solid_queue_tui/views/queues_view.rb', line 46

def selected_item
  return nil if @queues.empty? || @selected_row >= @queues.size
  @queues[@selected_row]
end

#update(queues:) ⇒ Object



15
16
17
18
19
# File 'lib/solid_queue_tui/views/queues_view.rb', line 15

def update(queues:)
  @queues = queues
  @selected_row = @selected_row.clamp(0, [@queues.size - 1, 0].max)
  @table_state.select(@selected_row)
end