livelist-rails 0.0.1 → 0.0.2

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.
@@ -0,0 +1,81 @@
1
+ require 'active_record'
2
+
3
+ module Livelist
4
+ module Rails
5
+ module ActiveRecord
6
+
7
+ def filters(*filter_slugs)
8
+ @@filter_slugs = filter_slugs
9
+ @@filter_slugs.each do |filter_slug|
10
+ metaclass = class << self; self; end
11
+
12
+ metaclass.instance_eval do
13
+ define_method "#{filter_slug}_filter_name" do
14
+ filter_slug.capitalize
15
+ end
16
+
17
+ define_method "#{filter_slug}_filter_slug" do
18
+ filter_slug
19
+ end
20
+
21
+
22
+ define_method "#{filter_slug}_filter" do |options|
23
+ {
24
+ :filter_slug => send("#{filter_slug}_filter_slug"),
25
+ :name => send("#{filter_slug}_filter_name"),
26
+ :options => options
27
+ }
28
+ end
29
+
30
+ define_method "#{filter_slug}_filter_options" do
31
+ select("distinct #{filter_slug}").map(&filter_slug)
32
+ end
33
+
34
+ define_method "#{filter_slug}_filter_counts" do
35
+ group(filter_slug).count
36
+ end
37
+
38
+ define_method "#{filter_slug}_filter_option" do |state, selected|
39
+ {
40
+ :slug => state,
41
+ :name => state.capitalize,
42
+ :value => state,
43
+ :count => @counts[state],
44
+ :selected => selected
45
+ }
46
+ end
47
+
48
+ define_method "#{filter_slug}_filters" do |filter_params|
49
+ @counts = send("#{filter_slug}_filter_counts")
50
+ send("#{filter_slug}_filter_options").map do |option|
51
+ selected = filter_params.nil? ? true : filter_params.include?(option)
52
+ send("#{filter_slug}_filter_option", option, selected)
53
+ end
54
+ end
55
+
56
+ define_method "#{filter_slug}_relation" do |values|
57
+ where(filter_slug => values)
58
+ end
59
+ end
60
+ end
61
+
62
+ def self.filters_as_json(filter_params)
63
+ filter_params ||= {}
64
+ @@filter_slugs.map do |filter|
65
+ send("#{filter}_filter", send("#{filter}_filters", filter_params[filter]))
66
+ end
67
+ end
68
+
69
+ def self.filter(filter_params)
70
+ filter_params ||= {}
71
+ query = scoped
72
+ filter_params.each do |filter, values|
73
+ query = query.send("#{filter}_relation", values)
74
+ end
75
+ query
76
+ end
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,6 @@
1
+ module Livelist
2
+ module Rails
3
+ class Engine < ::Rails::Engine
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,30 @@
1
+ require 'livelist/rails/active_record'
2
+
3
+ module Livelist
4
+ module Rails
5
+
6
+ class Railtie < ::Rails::Railtie
7
+ initializer "livelist-rails" do |app|
8
+ ActiveSupport.on_load :active_record do
9
+ ::ActiveRecord::Base.send :extend, ActiveRecord
10
+ end
11
+ end
12
+ end
13
+
14
+ # Rails 3.0
15
+ #class Railtie < ::Rails::Railtie
16
+ # config.before_configuration do
17
+ # if ::Rails.root.join("public/javascripts/livelist.min.js").exist?
18
+ # livelist_filename = 'livelist.min'
19
+ # livelist_filename = 'livelist.min' if ::Rails.env.production?
20
+ # else
21
+ # livelist_filename = ::Rails.env.production? ? 'livelist.min' : 'livelist'
22
+ # end
23
+
24
+ # config.action_view.javascript_expansions[:defaults] << %W(mustache underscore)
25
+ # config.action_view.javascript_expansions[:defaults] << livelist_filename
26
+ # end
27
+ #end
28
+
29
+ end
30
+ end
@@ -1,6 +1,6 @@
1
1
  module Livelist
2
2
  module Rails
3
- VERSION = '0.0.1'
3
+ VERSION = '0.0.2'
4
4
  LIVELIST_VERSION = '0.0.1'
5
5
  MUSTACHE_VERSION = 'db5f5ece0b6c87bbb2d0584010b97f8723dde69d'
6
6
  UNDERSCORE_VERSION = '1.2.3'
@@ -0,0 +1,7 @@
1
+ module Livelist
2
+ module Rails
3
+ require 'livelist/rails/railtie'
4
+ require 'livelist/rails/engine'
5
+ require 'livelist/rails/version'
6
+ end
7
+ end
@@ -1,25 +1 @@
1
- require "livelist-rails/version"
2
-
3
- module Livelist
4
- module Rails
5
-
6
- class Engine < ::Rails::Engine
7
- end
8
-
9
- # Rails 3.0
10
- #class Railtie < ::Rails::Railtie
11
- # config.before_configuration do
12
- # if ::Rails.root.join("public/javascripts/livelist.min.js").exist?
13
- # livelist_filename = 'livelist.min'
14
- # livelist_filename = 'livelist.min' if ::Rails.env.production?
15
- # else
16
- # livelist_filename = ::Rails.env.production? ? 'livelist.min' : 'livelist'
17
- # end
18
-
19
- # config.action_view.javascript_expansions[:defaults] << %W(mustache underscore)
20
- # config.action_view.javascript_expansions[:defaults] << livelist_filename
21
- # end
22
- #end
23
-
24
- end
25
- end
1
+ require 'livelist/rails'
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
- require "livelist-rails/version"
3
+ require "livelist/rails/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "livelist-rails"
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.1
4
+ version: 0.0.2
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: 2011-12-23 00:00:00.000000000Z
12
+ date: 2011-12-25 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,
@@ -31,7 +31,11 @@ files:
31
31
  - app/assets/javascripts/underscore-min.js
32
32
  - app/assets/javascripts/underscore.js
33
33
  - lib/livelist-rails.rb
34
- - lib/livelist-rails/version.rb
34
+ - lib/livelist/rails.rb
35
+ - lib/livelist/rails/active_record.rb
36
+ - lib/livelist/rails/engine.rb
37
+ - lib/livelist/rails/railtie.rb
38
+ - lib/livelist/rails/version.rb
35
39
  - livelist-rails.gemspec
36
40
  homepage: ''
37
41
  licenses: []