Class: SolidQueueTui::Views::QueuesView
Constant Summary
Constants included
from Paginatable
Paginatable::LOAD_THRESHOLD
Constants included
from Filterable
Filterable::FILTER_FIELDS
Instance Method Summary
collapse
#format_duration, #format_number, #format_time, #humanize_duration, #time_ago, #time_until, #truncate
#current_offset, #init_pagination, #items, #reset_pagination!, #total_count=
Methods included from Filterable
#clear_filter, #clear_filter_binding, #enter_filter_mode, #filter_bindings, #filter_mode?, #filter_title, #filters, #handle_filter_input, #init_filter, #render_filter_input
#confirm_bindings, #confirm_mode?, #handle_confirm_input, #init_confirm, #render_confirm_popup
Constructor Details
Returns a new instance of QueuesView.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 11
def initialize(tui)
@tui = tui
@mode = :list
@selected_queue = nil
@list_table_state = RatatuiRuby::TableState.new(nil)
@list_table_state.select(0)
@list_selected_row = 0
@queues = []
init_confirm
init_filter
end
|
Instance Method Details
#append(jobs:) ⇒ Object
44
45
46
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 44
def append(jobs:)
append_items(jobs)
end
|
#bindings ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 82
def bindings
if @mode == :list
if confirm_mode?
confirm_bindings
else
[
{ key: "j/k", action: "Navigate" },
{ key: "Enter", action: "View Jobs" },
{ key: "p", action: "Pause/Resume" },
{ key: "G/g", action: "Bottom/Top" }
]
end
else
if confirm_mode?
confirm_bindings
elsif filter_mode?
filter_bindings
else
[
{ key: "j/k", action: "Navigate" },
{ key: "Enter", action: "Detail" },
{ key: "/", action: "Filter" },
clear_filter_binding,
{ key: "Esc", action: "Back" },
{ key: "G/g", action: "Bottom/Top" }
].compact
end
end
end
|
#breadcrumb ⇒ Object
112
113
114
115
116
117
118
119
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 112
def breadcrumb
if @mode == :list
"queues"
else
base = "queues > #{@selected_queue&.name}"
@filters.empty? ? base : "#{base}:filtered"
end
end
|
78
79
80
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 78
def capturing_input?
detail_mode? || confirm_mode? || filter_mode?
end
|
#detail_mode? ⇒ Boolean
28
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 28
def detail_mode? = @mode == :detail
|
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 56
def handle_input(event)
if @mode == :list
handle_list_input(event)
elsif confirm_mode?
handle_confirm_input(event)
elsif filter_mode?
handle_filter_input(event)
else
handle_detail_input(event)
end
end
|
#render(frame, area) ⇒ Object
48
49
50
51
52
53
54
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 48
def render(frame, area)
if @mode == :list
render_list(frame, area)
else
render_detail(frame, area)
end
end
|
#selected_item ⇒ Object
68
69
70
71
72
73
74
75
76
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 68
def selected_item
if @mode == :list
return nil if @queues.empty? || @list_selected_row >= @queues.size
@queues[@list_selected_row]
else
return nil if items.empty? || @selected_row >= items.size
items[@selected_row]
end
end
|
#selected_queue_name ⇒ Object
30
31
32
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 30
def selected_queue_name
@selected_queue&.name
end
|
#update(queues:) ⇒ Object
34
35
36
37
38
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 34
def update(queues:)
@queues = queues
@list_selected_row = @list_selected_row.clamp(0, [@queues.size - 1, 0].max)
@list_table_state.select(@list_selected_row)
end
|
#update_detail(jobs:) ⇒ Object
40
41
42
|
# File 'lib/solid_queue_tui/views/queues_view.rb', line 40
def update_detail(jobs:)
update_items(jobs)
end
|