livelist-rails 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  //= require mustache
2
- //= require underscore
2
+ //= require underscore-min
3
3
  //= require livelist
@@ -7,6 +7,7 @@ module Livelist
7
7
  def filters(*filter_slugs)
8
8
  @@filter_slugs = filter_slugs
9
9
  @@filter_slugs.each do |filter_slug|
10
+ filter_slug = filter_slug.to_s
10
11
  metaclass = class << self; self; end
11
12
 
12
13
  metaclass.instance_eval do
@@ -26,34 +27,56 @@ module Livelist
26
27
  }
27
28
  end
28
29
 
29
- define_method "#{filter_slug}_filter_options" do
30
- select("distinct #{filter_slug}").map(&filter_slug)
30
+ define_method "#{filter_slug}_filter_values" do
31
+ select("distinct #{filter_slug}").map(&filter_slug.to_sym)
31
32
  end
32
33
 
33
34
  define_method "#{filter_slug}_filter_counts" do
34
35
  group(filter_slug).count
35
36
  end
36
37
 
37
- define_method "#{filter_slug}_filter_option" do |state, selected|
38
+ define_method "#{filter_slug}_filter_option_slug" do |option|
39
+ option.to_s
40
+ end
41
+
42
+ define_method "#{filter_slug}_filter_option_name" do |option|
43
+ option.to_s.capitalize
44
+ end
45
+
46
+ define_method "#{filter_slug}_filter_option_value" do |option|
47
+ option.to_s
48
+ end
49
+
50
+ define_method "#{filter_slug}_filter_option_count" do |option|
51
+ unless class_variables.include?("@@#{filter_slug}_filter_counts")
52
+ class_variable_set(:"@@#{filter_slug}_filter_counts", send("#{filter_slug}_filter_counts"))
53
+ end
54
+ class_variable_get(:"@@#{filter_slug}_filter_counts")[option]
55
+ end
56
+
57
+ define_method "#{filter_slug}_filter_option" do |option, selected|
38
58
  {
39
- :slug => state,
40
- :name => state.capitalize,
41
- :value => state,
42
- :count => @counts[state],
59
+ :slug => send("#{filter_slug}_filter_option_slug", option),
60
+ :name => send("#{filter_slug}_filter_option_name", option),
61
+ :value => send("#{filter_slug}_filter_option_value", option),
62
+ :count => send("#{filter_slug}_filter_option_count", option),
43
63
  :selected => selected
44
64
  }
45
65
  end
46
66
 
67
+ define_method "#{filter_slug}_filter_option_selected?" do |filter_params, option|
68
+ filter_params.nil? ? true : filter_params.include?(option)
69
+ end
70
+
47
71
  define_method "#{filter_slug}_filters" do |filter_params|
48
- @counts = send("#{filter_slug}_filter_counts")
49
- send("#{filter_slug}_filter_options").map do |option|
50
- selected = filter_params.nil? ? true : filter_params.include?(option)
72
+ send("#{filter_slug}_filter_values").map do |option|
73
+ selected = send("#{filter_slug}_filter_option_selected?", filter_params, option)
51
74
  send("#{filter_slug}_filter_option", option, selected)
52
75
  end
53
76
  end
54
77
 
55
78
  define_method "#{filter_slug}_relation" do |values|
56
- where(filter_slug => values)
79
+ where(model_name.to_s.tableize => { filter_slug => values })
57
80
  end
58
81
  end
59
82
  end
@@ -61,7 +84,8 @@ module Livelist
61
84
  def self.filters_as_json(filter_params)
62
85
  filter_params ||= {}
63
86
  @@filter_slugs.map do |filter|
64
- send("#{filter}_filter", send("#{filter}_filters", filter_params[filter]))
87
+ filter_options = send("#{filter}_filters", filter_params[filter])
88
+ send("#{filter}_filter", filter_options)
65
89
  end
66
90
  end
67
91
 
@@ -1,6 +1,6 @@
1
1
  module Livelist
2
2
  module Rails
3
- VERSION = '0.0.3'
3
+ VERSION = '0.0.4'
4
4
  LIVELIST_VERSION = '0.0.1'
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.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-18 00:00:00.000000000Z
12
+ date: 2012-01-20 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: ! 'livelist-rails is a Rails 3.1 Engine/Extensiont incorporating the
15
15
  following javascript libraries: Mustache.js, underscore.js, jQuery and livelist.js,
@@ -57,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
57
  version: '0'
58
58
  requirements: []
59
59
  rubyforge_project: livelist-rails
60
- rubygems_version: 1.8.15
60
+ rubygems_version: 1.8.10
61
61
  signing_key:
62
62
  specification_version: 3
63
63
  summary: A Rails Engine/Extension Incorporating Livelist.js