Module: Sumologic::Interactive::FzfViewer::HeaderBuilder

Defined in:
lib/sumologic/interactive/fzf_viewer/header_builder.rb

Class Method Summary collapse

Class Method Details

.build_column_headersObject



18
19
20
21
22
# File 'lib/sumologic/interactive/fzf_viewer/header_builder.rb', line 18

def build_column_headers
  "#{Formatter.pad('TIME', Config::TIME_WIDTH)} " \
    "#{Formatter.pad('LEVEL', Config::LEVEL_WIDTH)} " \
    "#{Formatter.pad('SOURCE', Config::SOURCE_WIDTH)} MESSAGE"
end

.build_header_text(results, messages) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/sumologic/interactive/fzf_viewer/header_builder.rb', line 9

def build_header_text(results, messages)
  [
    build_column_headers,
    build_info_line(results, messages),
    build_search_tips,
    build_keybindings_help
  ].join("\n")
end

.build_info_line(results, messages) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/sumologic/interactive/fzf_viewer/header_builder.rb', line 24

def build_info_line(results, messages)
  query = results['query'] || 'N/A'
  count = messages.size
  sources = messages.map { |m| m['map']['_source'] }.compact.uniq.size

  "#{count} msgs | #{sources} sources | Query: #{Formatter.truncate(query, 40)}"
end

.build_keybindings_helpObject



36
37
38
# File 'lib/sumologic/interactive/fzf_viewer/header_builder.rb', line 36

def build_keybindings_help
  'Enter=select Tab=view Ctrl-T=toggle-search Ctrl-S=save Ctrl-Y=copy Ctrl-E=export Ctrl-Q=quit'
end

.build_search_tipsObject



32
33
34
# File 'lib/sumologic/interactive/fzf_viewer/header_builder.rb', line 32

def build_search_tips
  '💡 Simple text search (case-insensitive) - searches all JSON fields and log content'
end