livelist-rails 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.'