Class: SolidQueueTui::Views::FinishedView
- Inherits:
-
Object
- Object
- SolidQueueTui::Views::FinishedView
show all
- Includes:
- Filterable
- Defined in:
- lib/solid_queue_tui/views/finished_view.rb
Constant Summary
collapse
- LOAD_THRESHOLD =
10
Constants included
from Filterable
SolidQueueTui::Views::Filterable::FILTER_FIELDS
Instance Method Summary
collapse
Methods included from Filterable
#clear_filter, #enter_filter_mode, #filter_bindings, #filter_mode?, #filter_title, #filters, #handle_filter_input, #init_filter, #render_filter_input
Constructor Details
Returns a new instance of FinishedView.
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 11
def initialize(tui)
@tui = tui
@table_state = RatatuiRuby::TableState.new(nil)
@table_state.select(0)
@selected_row = 0
@jobs = []
@total_count = nil
@all_loaded = false
init_filter
end
|
Instance Method Details
#append(jobs:) ⇒ Object
29
30
31
32
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 29
def append(jobs:)
@jobs.concat(jobs)
@all_loaded = jobs.size < SolidQueueTui.page_size
end
|
#bindings ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 80
def bindings
if filter_mode?
filter_bindings
else
[
{ key: "j/k", action: "Navigate" },
{ key: "Enter", action: "Detail" },
{ key: "/", action: "Filter" },
{ key: "Esc", action: "Clear Filter" },
{ key: "G/g", action: "Bottom/Top" }
]
end
end
|
#breadcrumb ⇒ Object
98
99
100
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 98
def breadcrumb
@filters.empty? ? "finished" : "finished:filtered"
end
|
94
95
96
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 94
def capturing_input?
filter_mode?
end
|
#current_offset ⇒ Object
38
39
40
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 38
def current_offset
@jobs.size
end
|
67
68
69
70
71
72
73
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 67
def handle_input(event)
if filter_mode?
handle_filter_input(event)
else
handle_normal_input(event)
end
end
|
#render(frame, area) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 50
def render(frame, area)
if filter_mode?
filter_area, content_area = @tui.layout_split(
area,
direction: :vertical,
constraints: [
@tui.constraint_length(3),
@tui.constraint_fill(1)
]
)
render_filter_input(frame, filter_area)
render_table(frame, content_area)
else
render_table(frame, area)
end
end
|
42
43
44
45
46
47
48
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 42
def
@jobs = []
@total_count = nil
@all_loaded = false
@selected_row = 0
@table_state.select(0)
end
|
#selected_item ⇒ Object
75
76
77
78
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 75
def selected_item
return nil if @jobs.empty? || @selected_row >= @jobs.size
@jobs[@selected_row]
end
|
#total_count=(count) ⇒ Object
34
35
36
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 34
def total_count=(count)
@total_count = count
end
|
#update(jobs:) ⇒ Object
22
23
24
25
26
27
|
# File 'lib/solid_queue_tui/views/finished_view.rb', line 22
def update(jobs:)
@jobs = jobs
@all_loaded = jobs.size < SolidQueueTui.page_size
@selected_row = @selected_row.clamp(0, [@jobs.size - 1, 0].max)
@table_state.select(@selected_row)
end
|