Class: Sidekiq::Tasks::Web::Search

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq/tasks/web/search.rb

Constant Summary collapse

DEFAULT_COUNT =
15
SORT_COLUMNS =
["name", "last_enqueued"].freeze
SORT_DIRECTIONS =
["asc", "desc"].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ Search

Returns a new instance of Search.



15
16
17
# File 'lib/sidekiq/tasks/web/search.rb', line 15

def initialize(params)
  @params = params
end

Instance Attribute Details

#paramsObject (readonly)

Returns the value of attribute params.



13
14
15
# File 'lib/sidekiq/tasks/web/search.rb', line 13

def params
  @params
end

Class Method Details

.count_optionsObject



9
10
11
# File 'lib/sidekiq/tasks/web/search.rb', line 9

def self.count_options
  (0..3).map { |index| DEFAULT_COUNT * (2**index) }
end

Instance Method Details

#countObject



33
34
35
36
37
# File 'lib/sidekiq/tasks/web/search.rb', line 33

def count
  requested_count = params[:count].to_i

  requested_count.positive? ? requested_count : DEFAULT_COUNT
end

#directionObject



49
50
51
# File 'lib/sidekiq/tasks/web/search.rb', line 49

def direction
  SORT_DIRECTIONS.include?(params[:direction]) ? params[:direction] : SORT_DIRECTIONS.first
end

#filterObject



27
28
29
30
31
# File 'lib/sidekiq/tasks/web/search.rb', line 27

def filter
  request_filter = params[:filter]

  ["", nil].include?(request_filter) ? nil : request_filter
end

#filtered_collectionObject



23
24
25
# File 'lib/sidekiq/tasks/web/search.rb', line 23

def filtered_collection
  @_filtered_collection ||= Sidekiq::Tasks.tasks.where(name: filter, desc: filter)
end

#offsetObject



68
69
70
# File 'lib/sidekiq/tasks/web/search.rb', line 68

def offset
  (page - 1) * count
end

#pageObject



39
40
41
42
43
# File 'lib/sidekiq/tasks/web/search.rb', line 39

def page
  requested_page = params[:page].to_i

  requested_page.positive? ? requested_page : 1
end

#sortObject



45
46
47
# File 'lib/sidekiq/tasks/web/search.rb', line 45

def sort
  SORT_COLUMNS.include?(params[:sort]) ? params[:sort] : SORT_COLUMNS.first
end

#sorted_by?(column) ⇒ Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/sidekiq/tasks/web/search.rb', line 60

def sorted_by?(column)
  sort == column
end

#tasksObject



19
20
21
# File 'lib/sidekiq/tasks/web/search.rb', line 19

def tasks
  @_tasks ||= sorted_collection.slice(offset, count) || []
end

#toggle_direction(column) ⇒ Object



53
54
55
56
57
58
# File 'lib/sidekiq/tasks/web/search.rb', line 53

def toggle_direction(column)
  return "asc" unless sort == column
  return "desc" if direction == "asc"

  nil
end

#total_pagesObject



64
65
66
# File 'lib/sidekiq/tasks/web/search.rb', line 64

def total_pages
  (filtered_collection.size.to_f / count).ceil
end