Module: WillSort::ClassMethods

Defined in:
lib/will_sort.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#use_default_sort_byObject

Returns the value of attribute use_default_sort_by.



9
10
11
# File 'lib/will_sort.rb', line 9

def use_default_sort_by
  @use_default_sort_by
end

#use_default_sort_dirObject

Returns the value of attribute use_default_sort_dir.



9
10
11
# File 'lib/will_sort.rb', line 9

def use_default_sort_dir
  @use_default_sort_dir
end

Instance Method Details

#get_search_order(params, default_sort_by, default_dir) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/will_sort.rb', line 21

def get_search_order(params,default_sort_by,default_dir)
  sort_by =  safe_sort_param_or_default(params[:sort_by],default_sort_by)
  dir =      safe_sort_dir_or_default(params[:dir],default_dir)
  order = "#{sort_by} #{dir}"      
  logger.warn('[WILL_SORT] sorting by: ' + order)
  return order
end

#param_exists(params, param) ⇒ Object



55
56
57
# File 'lib/will_sort.rb', line 55

def param_exists(params,param)
  params[param] && !params[param].blank?
end

#safe_sort_dir_or_default(param, default) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/will_sort.rb', line 42

def safe_sort_dir_or_default(param,default)
  sortable_dirs = ['asc','desc']       
  if param.blank? 
    return default
  else  
    if sortable_dirs.include?(param)
      return param
    else
      return default
    end
  end      
end

#safe_sort_param_or_default(param, default) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/will_sort.rb', line 29

def safe_sort_param_or_default(param,default)
  sortable_fields = self.sortable_fields
  if param.blank? 
    return default
  else  
    if sortable_fields.include?(param)
      return param
    else
      return default
    end
  end
end

#will_sort(params, default = '') ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/will_sort.rb', line 11

def will_sort(params,default='')
  if !default.blank?
    self.use_default_sort_by, self.use_default_sort_dir = default.split(" ")
  else
    self.use_default_sort_by = self.default_sort_by
    self.use_default_sort_dir = self.default_sort_dir
  end
  get_search_order(params,self.use_default_sort_by,self.use_default_sort_dir)    
end