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.
- data/lib/livelist/rails/active_record.rb +17 -30
- data/lib/livelist/rails/version.rb +1 -1
- metadata +5 -5
@@ -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
|
8
|
-
@@filter_slugs = filter_slugs
|
9
|
+
def filter_for(filter_slug, options = {})
|
9
10
|
@@counts = {}
|
10
|
-
@@option_objects = {}
|
11
11
|
|
12
|
-
@@filter_slugs
|
13
|
-
|
14
|
-
|
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
|
-
|
80
|
-
if
|
81
|
-
|
82
|
-
elsif
|
83
|
-
|
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
|
-
|
106
|
-
if
|
107
|
-
option_object =
|
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
|
110
|
-
option_object =
|
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
|
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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *12360240
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activerecord
|
27
|
-
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: *
|
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.'
|