Class: Binocs::TUI::RequestList
- Inherits:
-
Window
- Object
- Window
- Binocs::TUI::RequestList
show all
- Defined in:
- lib/binocs/tui/request_list.rb
Instance Attribute Summary collapse
Attributes inherited from Window
#height, #left, #top, #width, #win
Instance Method Summary
collapse
Methods inherited from Window
#clear, #close, #copy_to_clipboard, #draw_box, #noutrefresh, #refresh, #resize, #write, #write_centered
Constructor Details
#initialize(height:, width:, top:, left:) ⇒ RequestList
Returns a new instance of RequestList.
9
10
11
12
13
14
15
16
|
# File 'lib/binocs/tui/request_list.rb', line 9
def initialize(height:, width:, top:, left:)
super
@requests = []
@selected_index = 0
@scroll_offset = 0
@filters = {}
@search_query = nil
end
|
Instance Attribute Details
#filters ⇒ Object
Returns the value of attribute filters.
7
8
9
|
# File 'lib/binocs/tui/request_list.rb', line 7
def filters
@filters
end
|
#requests ⇒ Object
Returns the value of attribute requests.
6
7
8
|
# File 'lib/binocs/tui/request_list.rb', line 6
def requests
@requests
end
|
Returns the value of attribute scroll_offset.
6
7
8
|
# File 'lib/binocs/tui/request_list.rb', line 6
def scroll_offset
@scroll_offset
end
|
#search_query ⇒ Object
Returns the value of attribute search_query.
7
8
9
|
# File 'lib/binocs/tui/request_list.rb', line 7
def search_query
@search_query
end
|
#selected_index ⇒ Object
Returns the value of attribute selected_index.
6
7
8
|
# File 'lib/binocs/tui/request_list.rb', line 6
def selected_index
@selected_index
end
|
Instance Method Details
#clear_filters ⇒ Object
52
53
54
55
56
57
58
|
# File 'lib/binocs/tui/request_list.rb', line 52
def clear_filters
@filters = {}
@search_query = nil
@selected_index = 0
@scroll_offset = 0
load_requests
end
|
#draw ⇒ Object
100
101
102
103
104
105
106
107
|
# File 'lib/binocs/tui/request_list.rb', line 100
def draw
clear
draw_box("Requests (#{@requests.length})")
draw_requests
draw_status_bar
refresh
end
|
#go_to_bottom ⇒ Object
83
84
85
86
|
# File 'lib/binocs/tui/request_list.rb', line 83
def go_to_bottom
@selected_index = [@requests.length - 1, 0].max
adjust_scroll
end
|
#go_to_top ⇒ Object
78
79
80
81
|
# File 'lib/binocs/tui/request_list.rb', line 78
def go_to_top
@selected_index = 0
@scroll_offset = 0
end
|
#load_requests ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/binocs/tui/request_list.rb', line 18
def load_requests
scope = Binocs::Request.recent
scope = scope.by_method(@filters[:method]) if @filters[:method].present?
scope = scope.by_status_range(@filters[:status]) if @filters[:status].present?
scope = scope.with_exception if @filters[:has_exception]
scope = scope.search(@search_query) if @search_query.present?
@requests = scope.limit(500).to_a
@selected_index = [@selected_index, @requests.length - 1].min
@selected_index = 0 if @selected_index < 0
adjust_scroll
end
|
#move_down ⇒ Object
71
72
73
74
75
76
|
# File 'lib/binocs/tui/request_list.rb', line 71
def move_down
if @selected_index < @requests.length - 1
@selected_index += 1
adjust_scroll
end
end
|
#move_up ⇒ Object
64
65
66
67
68
69
|
# File 'lib/binocs/tui/request_list.rb', line 64
def move_up
if @selected_index > 0
@selected_index -= 1
adjust_scroll
end
end
|
#page_down ⇒ Object
94
95
96
97
98
|
# File 'lib/binocs/tui/request_list.rb', line 94
def page_down
visible_rows = content_height
@selected_index = [@selected_index + visible_rows, @requests.length - 1].min
adjust_scroll
end
|
#page_up ⇒ Object
88
89
90
91
92
|
# File 'lib/binocs/tui/request_list.rb', line 88
def page_up
visible_rows = content_height
@selected_index = [@selected_index - visible_rows, 0].max
adjust_scroll
end
|
#selected_request ⇒ Object
60
61
62
|
# File 'lib/binocs/tui/request_list.rb', line 60
def selected_request
@requests[@selected_index]
end
|
#set_filter(key, value) ⇒ Object
36
37
38
39
40
41
42
43
|
# File 'lib/binocs/tui/request_list.rb', line 36
def set_filter(key, value)
if value.nil? || value == ''
@filters.delete(key)
else
@filters[key] = value
end
load_requests
end
|
#set_search(query) ⇒ Object
45
46
47
48
49
50
|
# File 'lib/binocs/tui/request_list.rb', line 45
def set_search(query)
@search_query = query.present? ? query : nil
@selected_index = 0
@scroll_offset = 0
load_requests
end
|