livelist-rails 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,15 +3,16 @@ require 'active_record'
3
3
  module Livelist
4
4
  module Rails
5
5
  module ActiveRecord
6
+ @@filter_slugs = []
7
+ @@filter_collections = {}
6
8
 
7
- def filters(*filter_slugs)
8
- @@filter_slugs = filter_slugs
9
+ def filter_for(filter_slug, options = {})
9
10
  @@counts = {}
10
- @@option_objects = {}
11
11
 
12
- @@filter_slugs.each do |filter_slug|
13
- define_class_methods(filter_slug)
14
- end
12
+ @@filter_slugs << filter_slug unless @@filter_slugs.include?(filter_slug)
13
+ @@filter_collections[filter_slug] = options[:collection] || select("distinct #{filter_slug}").all
14
+
15
+ define_class_methods(filter_slug)
15
16
 
16
17
  def filters_as_json(filter_params)
17
18
  @@filter_params = filter_params || {}
@@ -38,11 +39,6 @@ module Livelist
38
39
  @@counts[filter_slug] = send("#{filter_slug}_filter_counts") unless @@counts.has_key?(filter_slug)
39
40
  @@counts[filter_slug][option.to_s] || 0
40
41
  end
41
-
42
- def cached_option_objects(filter_slug)
43
- @@option_objects[filter_slug] = send("#{filter_slug}_filter_option_objects") unless @@option_objects.has_key?(filter_slug)
44
- @@option_objects[filter_slug]
45
- end
46
42
  end
47
43
 
48
44
  def define_class_methods(filter_slug)
@@ -70,26 +66,17 @@ module Livelist
70
66
  new.respond_to?(filter_slug.to_sym) ? filter_slug.to_sym : :id
71
67
  end
72
68
 
73
- define_method "#{filter_slug}_filter_option_objects" do
74
- select("distinct #{filter_slug}").all
75
- end
76
-
77
69
  define_method "#{filter_slug}_filter_values" do
78
70
  key = send("#{filter_slug}_filter_option_key_name")
79
- option_objects = cached_option_objects(filter_slug)
80
- if option_objects.any?{|object| object.kind_of?(Hash) && object.has_key?(key)}
81
- option_objects.map{|object| object[key]}
82
- elsif option_objects.any?{|object| object.respond_to?(key)}
83
- option_objects.map(&key)
71
+ filter_collection = @@filter_collections[filter_slug.to_sym]
72
+ if filter_collection.any?{|object| object.kind_of?(Hash) && object.has_key?(key)}
73
+ filter_collection.map{|object| object[key]}
74
+ elsif filter_collection.any?{|object| object.respond_to?(key)}
75
+ filter_collection.map(&key)
84
76
  end
85
77
  end
86
78
 
87
79
  define_method "#{filter_slug}_filter_counts" do
88
- ::Rails.logger.error "*"*100
89
- ::Rails.logger.error "*"*100
90
- ::Rails.logger.error "*"*100
91
- ::Rails.logger.error group(filter_slug).count.inspect
92
- ::Rails.logger.error @@filter_relation.group(filter_slug).count.inspect
93
80
  @@filter_relation.group(filter_slug).count
94
81
  end
95
82
 
@@ -102,12 +89,12 @@ module Livelist
102
89
  end
103
90
 
104
91
  define_method "#{filter_slug}_filter_option_name" do |option|
105
- option_objects = cached_option_objects(filter_slug)
106
- if option_objects.any?{|object| object.kind_of?(Hash) && object.has_key?(:name)}
107
- option_object = option_objects.detect{|object| object[:state] == option.to_s}
92
+ filter_collection = @@filter_collections[filter_slug.to_sym]
93
+ if filter_collection.any?{|object| object.kind_of?(Hash) && object.has_key?(:name)}
94
+ option_object = filter_collection.detect{|object| object[:state] == option.to_s}
108
95
  option_object[:name]
109
- elsif option_objects.any?{|object| object.respond_to?(:name)}
110
- option_object = option_objects.detect{|object| object.send(:id).to_s == option.to_s}
96
+ elsif filter_collection.any?{|object| object.respond_to?(:name)}
97
+ option_object = filter_collection.detect{|object| object.send(:id).to_s == option.to_s}
111
98
  option_object.send(:name)
112
99
  else
113
100
  option.to_s
@@ -1,6 +1,6 @@
1
1
  module Livelist
2
2
  module Rails
3
- VERSION = '0.0.6'
3
+ VERSION = '0.0.7'
4
4
  LIVELIST_VERSION = '0.0.3'
5
5
  MUSTACHE_VERSION = 'db5f5ece0b6c87bbb2d0584010b97f8723dde69d'
6
6
  UNDERSCORE_VERSION = '1.2.3'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: livelist-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-26 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &14627060 !ruby/object:Gem::Requirement
16
+ requirement: &12360240 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *14627060
24
+ version_requirements: *12360240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activerecord
27
- requirement: &14626640 !ruby/object:Gem::Requirement
27
+ requirement: &12359820 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *14626640
35
+ version_requirements: *12359820
36
36
  description: ! 'livelist-rails is a Rails 3.1 Engine/Extensiont incorporating the
37
37
  following javascript libraries: Mustache.js, underscore.js, jQuery and livelist.js,
38
38
  and providing ActiveRecord filtering extenstions.'