livelist-rails 0.0.3 → 0.0.4

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.
@@ -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