Class: SimpleFilter::Filter
- Inherits:
-
Object
- Object
- SimpleFilter::Filter
- Defined in:
- lib/simple_filter/filter.rb
Constant Summary collapse
- FIELD_TYPE_TEXT =
'text'- FIELD_TYPE_HIDDEN =
'hidden'- FIELD_TYPE_SELECT_AUTO =
text with autocomplete
'select_auto'- DBTYPE_STRING =
'string'- DBTYPE_INT =
'int'- DBTYPE_DATE =
'date'
Instance Attribute Summary collapse
-
#data ⇒ Object
Returns the value of attribute data.
-
#fields ⇒ Object
Returns the value of attribute fields.
-
#prefix ⇒ Object
session prefix.
Instance Method Summary collapse
-
#add_field(f) ⇒ Object
fields.
- #add_fields_from_array(a) ⇒ Object
- #clear_data ⇒ Object
- #field_def_value(name) ⇒ Object
- #get_opposite_order_dir_for_column(name) ⇒ Object
- #get_order ⇒ Object
-
#html_style(name) ⇒ Object
helper methods.
-
#initialize(_session, _prefix) ⇒ Filter
constructor
A new instance of Filter.
- #opposite_order_dir(order_dir) ⇒ Object
-
#order ⇒ Object
order.
- #order=(value) ⇒ Object
-
#session_get(name, def_value) ⇒ Object
sessions.
- #session_save(name, v) ⇒ Object
- #set(field_name, v) ⇒ Object
- #set_data_from_form(params) ⇒ Object
- #set_order(order_by, order_dir) ⇒ Object
- #set_order_default(order_by, order_dir) ⇒ Object
- #v(name, v_def = nil) ⇒ Object
- #v_empty?(name) ⇒ Boolean
Constructor Details
#initialize(_session, _prefix) ⇒ Filter
Returns a new instance of Filter.
20 21 22 23 24 25 26 27 28 |
# File 'lib/simple_filter/filter.rb', line 20 def initialize(_session, _prefix) @prefix = _prefix @session = _session @fields ||={} # init data data() end |
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
15 16 17 |
# File 'lib/simple_filter/filter.rb', line 15 def data @data end |
#fields ⇒ Object
Returns the value of attribute fields.
14 15 16 |
# File 'lib/simple_filter/filter.rb', line 14 def fields @fields end |
#prefix ⇒ Object
session prefix
13 14 15 |
# File 'lib/simple_filter/filter.rb', line 13 def prefix @prefix end |
Instance Method Details
#add_field(f) ⇒ Object
fields
35 36 37 38 |
# File 'lib/simple_filter/filter.rb', line 35 def add_field(f) @fields[f[:name]] = f end |
#add_fields_from_array(a) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/simple_filter/filter.rb', line 40 def add_fields_from_array(a) a.each do |fa| add_field fa end end |
#clear_data ⇒ Object
115 116 117 |
# File 'lib/simple_filter/filter.rb', line 115 def clear_data session_save 'data', {} end |
#field_def_value(name) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/simple_filter/filter.rb', line 48 def field_def_value(name) if (@fields.has_key? name) && (@fields[name].has_key? :def) return @fields[name][:def] end nil end |
#get_opposite_order_dir_for_column(name) ⇒ Object
191 192 193 194 195 196 197 198 199 200 |
# File 'lib/simple_filter/filter.rb', line 191 def get_opposite_order_dir_for_column(name) return 'asc' if order.empty? if order[0][0] == name return opposite_order_dir(order[0][1]) end return 'asc' end |
#get_order ⇒ Object
185 186 187 188 |
# File 'lib/simple_filter/filter.rb', line 185 def get_order order[0] if order.count>0 order[0] end |
#html_style(name) ⇒ Object
helper methods
212 213 214 215 216 217 218 219 220 |
# File 'lib/simple_filter/filter.rb', line 212 def html_style(name) return '' unless @fields[name].has_key?(:opt) s = '' opt = @fields[name][:opt] unless opt[:width].nil? s << "width: #{opt[:width]}px; " end end |
#opposite_order_dir(order_dir) ⇒ Object
202 203 204 205 206 |
# File 'lib/simple_filter/filter.rb', line 202 def opposite_order_dir(order_dir) return 'asc' if order_dir=='desc' return 'desc' if order_dir=='asc' 'asc' end |
#order ⇒ Object
order
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/simple_filter/filter.rb', line 151 def order return @order unless @order.nil? # from session @v_sess = session_get 'order', nil @order = @v_sess unless @v_sess.nil? # @order ||= [] session_save 'order', @order # @order end |
#order=(value) ⇒ Object
167 168 169 170 171 |
# File 'lib/simple_filter/filter.rb', line 167 def order= (value) @order = value session_save 'order', @order end |
#session_get(name, def_value) ⇒ Object
sessions
59 60 61 |
# File 'lib/simple_filter/filter.rb', line 59 def session_get(name, def_value) @session[prefix+name] || def_value end |
#session_save(name, v) ⇒ Object
63 64 65 |
# File 'lib/simple_filter/filter.rb', line 63 def session_save(name, v) @session[prefix+name] = v end |
#set(field_name, v) ⇒ Object
110 111 112 |
# File 'lib/simple_filter/filter.rb', line 110 def set(field_name,v) data[field_name] = v end |
#set_data_from_form(params) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/simple_filter/filter.rb', line 119 def set_data_from_form(params) # search for fields like filter[XXX] params.each do |name, v| #if f =~ /^filter\[([^\]]+)\]$/ #name = Regexp.last_match(1) next unless @fields.has_key? name if @fields[name][:dbtype]==DBTYPE_INT data[name] = (v.to_i rescue 0) else data[name] = v end #end end # default values from fields @fields.each do |name, f| next if @data.has_key? name @data[name] = field_def_value name end end |
#set_order(order_by, order_dir) ⇒ Object
181 182 183 |
# File 'lib/simple_filter/filter.rb', line 181 def set_order(order_by, order_dir) self.order = [[order_by, order_dir]] end |
#set_order_default(order_by, order_dir) ⇒ Object
173 174 175 176 177 178 |
# File 'lib/simple_filter/filter.rb', line 173 def set_order_default(order_by, order_dir) return false if !order.nil? && !order.empty? set_order(order_by, order_dir) end |
#v(name, v_def = nil) ⇒ Object
93 94 95 96 97 98 99 |
# File 'lib/simple_filter/filter.rb', line 93 def v(name, v_def=nil) if (data.has_key? name) && (!data[name].nil?) return data[name] end field_def_value(name) || v_def end |
#v_empty?(name) ⇒ Boolean
101 102 103 104 105 106 107 108 |
# File 'lib/simple_filter/filter.rb', line 101 def v_empty?(name) if (data.has_key? name) && (!data[name].nil?) return true end # if v == default value end |