facet_for 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module FacetFor
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
data/lib/facet_for.rb CHANGED
@@ -214,6 +214,11 @@ module FacetFor
214
214
  facet_html << text_field
215
215
  when :cont_any
216
216
  collection_type = :array
217
+
218
+ if @facet[:collection].nil?
219
+ @facet[:collection] = unique_value_collection
220
+ end
221
+
217
222
  if @facet[:collection].first.class == 'String'
218
223
  collection_type = :string
219
224
  end
@@ -277,14 +282,42 @@ module FacetFor
277
282
 
278
283
  def check_box(value = "1")
279
284
  name = "#{@facet[:column_name]}_#{@facet[:type]}"
280
- return check_box_tag(self.name_for(name, true), value, check_box_checked(value))
285
+
286
+
287
+
288
+ if @facet[:type] == :cont_any
289
+ check_box_label = label_tag(self.name_for(name, true),
290
+ value.to_s.humanize)
291
+ check_box_name = self.name_for(name, true)
292
+ else
293
+
294
+ label_value = @facet[:column_name].to_s.humanize
295
+
296
+ case @facet[:type]
297
+ when :false
298
+ label_value = "Is Not #{label_value}"
299
+ when :null
300
+ label_value += "Is Null"
301
+ when :not_null
302
+ label_value += "Is Not Null"
303
+ end
304
+
305
+ check_box_label = label_tag(self.name_for(name, true), label_value)
306
+ check_box_name = self.name_for(name, false)
307
+ end
308
+
309
+ check_box_tag(check_box_name, value, check_box_checked(value)) + check_box_label
281
310
  end
282
311
 
283
312
  def check_box_checked(value = "1")
284
313
  name = "#{@facet[:column_name]}_#{@facet[:type]}"
285
314
  selected = @facet[:object].send(name)
286
315
 
287
- return (!selected.nil? and selected.include?(value))
316
+ if @facet[:type] == :cont_any
317
+ return (!selected.nil? and selected.include?(value))
318
+ else
319
+ return selected
320
+ end
288
321
 
289
322
  end
290
323
 
@@ -292,6 +325,16 @@ module FacetFor
292
325
  name = "#{@facet[:column_name]}_eq"
293
326
  selected = @facet[:object].send(name)
294
327
 
328
+ # @facet[:collection] should be set if we've given it a valid
329
+ # association, or passed in a collection by hand.
330
+ #
331
+ # this assumes that we want to see all unique values from the database
332
+ # for the given column
333
+
334
+ if @facet[:collection].nil?
335
+ @facet[:collection] = unique_value_collection
336
+ end
337
+
295
338
  if @facet[:collection].class == Array and
296
339
  @facet[:collection].first.class == String
297
340
 
@@ -306,6 +349,10 @@ module FacetFor
306
349
 
307
350
  end
308
351
 
352
+ def unique_value_collection
353
+ @facet[:collection] = @facet[:model].select("DISTINCT #{@facet[:column_name]}").where("#{@facet[:column_name]} IS NOT NULL").map { |m| m.send(@facet[:column_name]) }
354
+ end
355
+
309
356
  def label(string_name, string_label = nil)
310
357
  display_label = string_label || string_name.humanize
311
358
  label_tag self.name_for(string_name), display_label
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facet_for
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-05 00:00:00.000000000Z
12
+ date: 2012-01-06 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ransack
16
- requirement: &72114110 !ruby/object:Gem::Requirement
16
+ requirement: &78616160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *72114110
24
+ version_requirements: *78616160
25
25
  description: Provides helpers for creating search forms with Ransack
26
26
  email:
27
27
  - jbarket@sleepunit.com
@@ -52,7 +52,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
52
52
  version: '0'
53
53
  segments:
54
54
  - 0
55
- hash: -223193421
55
+ hash: -507125603
56
56
  required_rubygems_version: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
@@ -61,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
61
61
  version: '0'
62
62
  segments:
63
63
  - 0
64
- hash: -223193421
64
+ hash: -507125603
65
65
  requirements: []
66
66
  rubyforge_project: facet_for
67
67
  rubygems_version: 1.8.10