Class: AssetSearchForm

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model
Defined in:
app/models/asset_search_form.rb

Overview

Simple class to handle form input for searching

Direct Known Subclasses

OngoingPlate, OngoingTube

Constant Summary collapse

PER_PAGE =
30
MAX_TABS =
10

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#include_usedObject

We include ‘show_my_plates_only’ to let us share pagination forms



11
12
13
# File 'app/models/asset_search_form.rb', line 11

def include_used
  @include_used
end

#pageObject



32
33
34
# File 'app/models/asset_search_form.rb', line 32

def page
  @page || 1
end

#purpose_namesObject



28
29
30
# File 'app/models/asset_search_form.rb', line 28

def purpose_names
  @purpose_names || Settings.purposes.values_at(purpose_uuids).pluck(:name)
end

#purposesObject



24
25
26
# File 'app/models/asset_search_form.rb', line 24

def purposes
  @purposes || []
end

#show_my_plates_onlyObject

We include ‘show_my_plates_only’ to let us share pagination forms



11
12
13
# File 'app/models/asset_search_form.rb', line 11

def show_my_plates_only
  @show_my_plates_only
end

#statesObject

We include ‘show_my_plates_only’ to let us share pagination forms



11
12
13
# File 'app/models/asset_search_form.rb', line 11

def states
  @states
end

#total_resultsObject

We include ‘show_my_plates_only’ to let us share pagination forms



11
12
13
# File 'app/models/asset_search_form.rb', line 11

def total_results
  @total_results
end

Instance Method Details

#each_pageObject



40
41
42
43
44
45
46
# File 'app/models/asset_search_form.rb', line 40

def each_page
  1.upto(total_pages) do |page_number|
    next if filter(page_number)

    yield page_number, page == page_number
  end
end

#filter(number) ⇒ Object



48
49
50
51
52
53
# File 'app/models/asset_search_form.rb', line 48

def filter(number)
  return false if total_pages < MAX_TABS
  return false if [1, total_pages].include?(number)

  (page - number).magnitude > MAX_TABS / 2
end

#purpose_uuidsObject



20
21
22
# File 'app/models/asset_search_form.rb', line 20

def purpose_uuids
  purposes.presence || default_purposes
end

#to_partial_pathObject



16
17
18
# File 'app/models/asset_search_form.rb', line 16

def to_partial_path
  "search/#{form_partial}"
end

#total_pagesObject



36
37
38
# File 'app/models/asset_search_form.rb', line 36

def total_pages
  @total_pages ||= (total_results || 0) / PER_PAGE
end