Class: SolidQueueTui::Views::ScheduledView
- Inherits:
-
Object
- Object
- SolidQueueTui::Views::ScheduledView
show all
- Includes:
- Filterable
- Defined in:
- lib/solid_queue_tui/views/scheduled_view.rb
Constant Summary
collapse
- LOAD_THRESHOLD =
10
Constants included
from Filterable
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 ScheduledView.
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/solid_queue_tui/views/scheduled_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
@confirm_action = nil
init_filter
end
|
Instance Method Details
#append(jobs:) ⇒ Object
30
31
32
33
|
# File 'lib/solid_queue_tui/views/scheduled_view.rb', line 30
def append(jobs:)
@jobs.concat(jobs)
@all_loaded = jobs.size < SolidQueueTui.page_size
end
|
#bindings ⇒ Object
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'lib/solid_queue_tui/views/scheduled_view.rb', line 98
def bindings
if @confirm_action
[
{ key: "y", action: "Confirm" },
{ key: "n/Esc", action: "Cancel" }
]
elsif filter_mode?
filter_bindings
else
[
{ key: "j/k", action: "Navigate" },
{ key: "Enter", action: "Detail" },
{ key: "/", action: "Filter" },
{ key: "N", action: "Run Now" },
{ key: "D", action: "Discard" },
{ key: "G/g", action: "Bottom/Top" }
]
end
end
|
#breadcrumb ⇒ Object
118
119
120
|
# File 'lib/solid_queue_tui/views/scheduled_view.rb', line 118
def breadcrumb
@filters.empty? ? "scheduled" : "scheduled:filtered"
end
|
94
95
96
|
# File 'lib/solid_queue_tui/views/scheduled_view.rb', line 94
def capturing_input?
filter_mode? || @confirm_action
end
|
#current_offset ⇒ Object
39
40
41
|
# File 'lib/solid_queue_tui/views/scheduled_view.rb', line 39
def current_offset
@jobs.size
end
|
79
80
81
82
83
84
85
86
87
|
# File 'lib/solid_queue_tui/views/scheduled_view.rb', line 79
def handle_input(event)
if @confirm_action
handle_confirm_input(event)
elsif filter_mode?
handle_filter_input(event)
else
handle_normal_input(event)
end
end
|
#render(frame, area) ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/solid_queue_tui/views/scheduled_view.rb', line 51
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)
elsif 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
|
43
44
45
46
47
48
49
|
# File 'lib/solid_queue_tui/views/scheduled_view.rb', line 43
def
@jobs = []
@total_count = nil
@all_loaded = false
@selected_row = 0
@table_state.select(0)
end
|
#selected_item ⇒ Object
89
90
91
92
|
# File 'lib/solid_queue_tui/views/scheduled_view.rb', line 89
def selected_item
return nil if @jobs.empty? || @selected_row >= @jobs.size
@jobs[@selected_row]
end
|
#total_count=(count) ⇒ Object
35
36
37
|
# File 'lib/solid_queue_tui/views/scheduled_view.rb', line 35
def total_count=(count)
@total_count = count
end
|
#update(jobs:) ⇒ Object
23
24
25
26
27
28
|
# File 'lib/solid_queue_tui/views/scheduled_view.rb', line 23
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
|