From 3e2452224653031b9784fe303272f2cd0dd5eced Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Thu, 9 Aug 2012 12:40:39 +0200 Subject: [PATCH 01/28] Mongoid compatibility and filters --- .gitignore | 1 + lib/ajax-datatables-rails.rb | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index d87d4be6..2de39049 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ spec/reports test/tmp test/version_tmp tmp +.idea diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index a3019acb..91d5e5bf 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -35,22 +35,22 @@ def get_raw_records raise MethodError, "The method `get_raw_records' is not defined." end + def get_raw_record_count + filter_records(search_records(get_raw_records)).count + end + def filtered_record_count search_records(get_raw_records).count end def fetch_records - search_records(sort_records(paginate_records(get_raw_records))) + search_records(filter_records(sort_records(paginate_records(get_raw_records)))) end def paginate_records(records) records.page(page).per(per_page) end - def sort_records(records) - records.order("#{sort_column} #{sort_direction}") - end - def search_records(records) if params[:sSearch].present? query = @searchable_columns.map do |column| @@ -61,6 +61,14 @@ def search_records(records) return records end + def sort_records(records) + records.order_by(sort_column.to_s => sort_direction) + end + + def filter_records(records, filters = nil) + records.where(filters) + end + def page params[:iDisplayStart].to_i/per_page + 1 end @@ -74,6 +82,7 @@ def sort_column end def sort_direction - params[:sSortDir_0] == "desc" ? "DESC" : "ASC" + params[:sSortDir_0] == "desc" ? 1 : -1 end + end From bae3362e90b7c3cbf67b875b9b7383b4edb05715 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Thu, 9 Aug 2012 12:59:38 +0200 Subject: [PATCH 02/28] added parameter name for filters --- lib/ajax-datatables-rails.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index 91d5e5bf..0af0034f 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -6,7 +6,7 @@ class MethodError < StandardError; end VERSION = '0.0.1' - attr_reader :columns, :model_name, :searchable_columns + attr_reader :columns, :model_name, :searchable_columns, :filters_parameter def initialize(view) @view = view @@ -66,6 +66,7 @@ def sort_records(records) end def filter_records(records, filters = nil) + filters ||= @filters_parameter ? @view.request.filtered_parameters[@filters_parameter.to_s] : nil records.where(filters) end From 28138775010189015c16e2f3d7428e9953616f7a Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Thu, 9 Aug 2012 13:59:04 +0200 Subject: [PATCH 03/28] filtered_count fix --- lib/ajax-datatables-rails.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index 0af0034f..e3d84f81 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -40,7 +40,7 @@ def get_raw_record_count end def filtered_record_count - search_records(get_raw_records).count + search_records(filter_records(get_raw_records)).count end def fetch_records From f27dd5256e7d363ebf52911ddd86b3cdd0cd85fc Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Fri, 10 Aug 2012 12:42:38 +0200 Subject: [PATCH 04/28] dodanie filtrow --- ajax-datatables-rails.gemspec | 1 + lib/ajax-datatables-rails.rb | 10 +++++++--- lib/mongoid_filters.rb | 27 +++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 lib/mongoid_filters.rb diff --git a/ajax-datatables-rails.gemspec b/ajax-datatables-rails.gemspec index a266644a..4a9e923b 100644 --- a/ajax-datatables-rails.gemspec +++ b/ajax-datatables-rails.gemspec @@ -16,4 +16,5 @@ Gem::Specification.new do |gem| gem.version = AjaxDatatablesRails::VERSION gem.add_development_dependency "rspec" + gem.add_development_dependency "mongoid", "~> 3.0.0" end diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index e3d84f81..b93bfda3 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -36,13 +36,13 @@ def get_raw_records end def get_raw_record_count - filter_records(search_records(get_raw_records)).count + search_records(get_raw_records).count end def filtered_record_count search_records(filter_records(get_raw_records)).count end - + def fetch_records search_records(filter_records(sort_records(paginate_records(get_raw_records)))) end @@ -67,7 +67,11 @@ def sort_records(records) def filter_records(records, filters = nil) filters ||= @filters_parameter ? @view.request.filtered_parameters[@filters_parameter.to_s] : nil - records.where(filters) + if @model_name.respond_to? :filter_criteria + records.where(@model_name.filter_criteria(filters)) + else + records + end end def page diff --git a/lib/mongoid_filters.rb b/lib/mongoid_filters.rb new file mode 100644 index 00000000..44c1baaf --- /dev/null +++ b/lib/mongoid_filters.rb @@ -0,0 +1,27 @@ +module Mongoid + module Filters + extend ActiveSupport::Concern + + module ClassMethods + def filter(attrs) + + attrs.each do |method| + eval "attr_accessor :#{method}_gte, :#{method}_lte, :#{method}_eq" + end + + def filter_criteria(filters = nil) + f = {} + filters.each_pair do |k,v| + match = k.match(/\b(\w*)_(gte|lte|eq)\b/) + if match[2] == "eq" + f.merge!({"#{match[1]}" => v}) + else + f.merge!({"#{match[1]}" => {"$#{match[2]}" => v}}) + end + end + f + end + end + end + end +end \ No newline at end of file From 675386414dc4c80aa0099ad7829d35e100487f01 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Fri, 10 Aug 2012 12:50:39 +0200 Subject: [PATCH 05/28] dodanie filtrow --- ajax-datatables-rails.gemspec | 2 +- lib/ajax-datatables-rails.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ajax-datatables-rails.gemspec b/ajax-datatables-rails.gemspec index 4a9e923b..266bc43c 100644 --- a/ajax-datatables-rails.gemspec +++ b/ajax-datatables-rails.gemspec @@ -16,5 +16,5 @@ Gem::Specification.new do |gem| gem.version = AjaxDatatablesRails::VERSION gem.add_development_dependency "rspec" - gem.add_development_dependency "mongoid", "~> 3.0.0" + gem.add_dependency "mongoid", ["~> 3.0.0"] end diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index b93bfda3..9a19a0b1 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -1,4 +1,5 @@ # require 'rails' +require "mongoid_filters" class AjaxDatatablesRails From fed33a17fa453162e70f1007f8f558f8f19ef842 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Fri, 10 Aug 2012 12:52:58 +0200 Subject: [PATCH 06/28] dodanie filtrow --- ajax-datatables-rails.gemspec | 1 + lib/ajax-datatables-rails.rb | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ajax-datatables-rails.gemspec b/ajax-datatables-rails.gemspec index 266bc43c..70127466 100644 --- a/ajax-datatables-rails.gemspec +++ b/ajax-datatables-rails.gemspec @@ -1,5 +1,6 @@ # -*- encoding: utf-8 -*- require File.expand_path('../lib/ajax-datatables-rails', __FILE__) +require File.expand_path('../lib/mongoid_filters', __FILE__) Gem::Specification.new do |gem| gem.authors = ["Joel Quenneville"] diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index 9a19a0b1..b93bfda3 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -1,5 +1,4 @@ # require 'rails' -require "mongoid_filters" class AjaxDatatablesRails From b78875039715e69323d56ae23beddb512c9160e8 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Fri, 10 Aug 2012 12:58:05 +0200 Subject: [PATCH 07/28] dodanie filtrow --- ajax-datatables-rails.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/ajax-datatables-rails.gemspec b/ajax-datatables-rails.gemspec index 70127466..d406e62f 100644 --- a/ajax-datatables-rails.gemspec +++ b/ajax-datatables-rails.gemspec @@ -1,4 +1,5 @@ # -*- encoding: utf-8 -*- +require "active_support" require File.expand_path('../lib/ajax-datatables-rails', __FILE__) require File.expand_path('../lib/mongoid_filters', __FILE__) From 9be858a0db681941c7da5443a400222cba7c3096 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Fri, 10 Aug 2012 13:54:35 +0200 Subject: [PATCH 08/28] fix --- lib/mongoid_filters.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/mongoid_filters.rb b/lib/mongoid_filters.rb index 44c1baaf..9764b734 100644 --- a/lib/mongoid_filters.rb +++ b/lib/mongoid_filters.rb @@ -11,6 +11,7 @@ def filter(attrs) def filter_criteria(filters = nil) f = {} + if filters filters.each_pair do |k,v| match = k.match(/\b(\w*)_(gte|lte|eq)\b/) if match[2] == "eq" @@ -19,6 +20,7 @@ def filter_criteria(filters = nil) f.merge!({"#{match[1]}" => {"$#{match[2]}" => v}}) end end + end f end end From b4ef412663c23a98f9df8862f9093697ee1984df Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Fri, 10 Aug 2012 14:02:13 +0200 Subject: [PATCH 09/28] fix --- lib/mongoid_filters.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mongoid_filters.rb b/lib/mongoid_filters.rb index 9764b734..4deead9d 100644 --- a/lib/mongoid_filters.rb +++ b/lib/mongoid_filters.rb @@ -11,7 +11,7 @@ def filter(attrs) def filter_criteria(filters = nil) f = {} - if filters + if filters.present? filters.each_pair do |k,v| match = k.match(/\b(\w*)_(gte|lte|eq)\b/) if match[2] == "eq" From 86c48925bef749dfbe4b1351cfeaee54810168da Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Fri, 10 Aug 2012 17:58:08 +0200 Subject: [PATCH 10/28] version changed --- lib/ajax-datatables-rails.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index b93bfda3..4b141eb0 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -4,7 +4,7 @@ class AjaxDatatablesRails class MethodError < StandardError; end - VERSION = '0.0.1' + VERSION = '0.0.2' attr_reader :columns, :model_name, :searchable_columns, :filters_parameter From 6a9c150048086c4f323b49b9c5f85f88bfdb240e Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 28 Aug 2012 11:37:36 +0300 Subject: [PATCH 11/28] Update ajax-datatables-rails.gemspec Added active support --- ajax-datatables-rails.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/ajax-datatables-rails.gemspec b/ajax-datatables-rails.gemspec index d406e62f..4d0cf735 100644 --- a/ajax-datatables-rails.gemspec +++ b/ajax-datatables-rails.gemspec @@ -19,4 +19,5 @@ Gem::Specification.new do |gem| gem.add_development_dependency "rspec" gem.add_dependency "mongoid", ["~> 3.0.0"] + gem.add_dependency "active-support" end From 4ec31ef8cce3d6c5e37f6c30d49ee03ae6156b0b Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 28 Aug 2012 11:40:54 +0300 Subject: [PATCH 12/28] Update lib/ajax-datatables-rails.rb updated version --- lib/ajax-datatables-rails.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index 4b141eb0..2b61bb3d 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -4,7 +4,7 @@ class AjaxDatatablesRails class MethodError < StandardError; end - VERSION = '0.0.2' + VERSION = '0.0.3' attr_reader :columns, :model_name, :searchable_columns, :filters_parameter From 01a46d74eb8d4128721bc041a63642d3ef4ff65d Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 28 Aug 2012 12:11:47 +0300 Subject: [PATCH 13/28] Update ajax-datatables-rails.gemspec changed gem name --- ajax-datatables-rails.gemspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ajax-datatables-rails.gemspec b/ajax-datatables-rails.gemspec index 4d0cf735..ab1c4b30 100644 --- a/ajax-datatables-rails.gemspec +++ b/ajax-datatables-rails.gemspec @@ -1,5 +1,5 @@ # -*- encoding: utf-8 -*- -require "active_support" +require "activesupport" require File.expand_path('../lib/ajax-datatables-rails', __FILE__) require File.expand_path('../lib/mongoid_filters', __FILE__) @@ -19,5 +19,5 @@ Gem::Specification.new do |gem| gem.add_development_dependency "rspec" gem.add_dependency "mongoid", ["~> 3.0.0"] - gem.add_dependency "active-support" + gem.add_dependency "activesupport" end From a7f5d0fcd101205e1ba2b49e3b03e724c07b564e Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 28 Aug 2012 12:12:16 +0300 Subject: [PATCH 14/28] Update lib/ajax-datatables-rails.rb --- lib/ajax-datatables-rails.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index 2b61bb3d..8765517a 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -4,7 +4,7 @@ class AjaxDatatablesRails class MethodError < StandardError; end - VERSION = '0.0.3' + VERSION = '0.0.4' attr_reader :columns, :model_name, :searchable_columns, :filters_parameter From eb795bc50b10232366675e0babd6a5e9e62041ae Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 28 Aug 2012 12:17:10 +0300 Subject: [PATCH 15/28] Update ajax-datatables-rails.gemspec --- ajax-datatables-rails.gemspec | 1 - 1 file changed, 1 deletion(-) diff --git a/ajax-datatables-rails.gemspec b/ajax-datatables-rails.gemspec index ab1c4b30..4653f754 100644 --- a/ajax-datatables-rails.gemspec +++ b/ajax-datatables-rails.gemspec @@ -1,5 +1,4 @@ # -*- encoding: utf-8 -*- -require "activesupport" require File.expand_path('../lib/ajax-datatables-rails', __FILE__) require File.expand_path('../lib/mongoid_filters', __FILE__) From e7a65c831ec00086bbdb17411fdb626632a484d3 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 28 Aug 2012 12:32:35 +0300 Subject: [PATCH 16/28] Update lib/mongoid_filters.rb --- lib/mongoid_filters.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/mongoid_filters.rb b/lib/mongoid_filters.rb index 4deead9d..4d5399f8 100644 --- a/lib/mongoid_filters.rb +++ b/lib/mongoid_filters.rb @@ -1,3 +1,4 @@ +require "activesupport" module Mongoid module Filters extend ActiveSupport::Concern From 68ad371496078af20007a8d1fa737ad3a3c2b024 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 28 Aug 2012 12:32:54 +0300 Subject: [PATCH 17/28] Update lib/ajax-datatables-rails.rb --- lib/ajax-datatables-rails.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index 8765517a..44c1373d 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -4,7 +4,7 @@ class AjaxDatatablesRails class MethodError < StandardError; end - VERSION = '0.0.4' + VERSION = '0.0.5' attr_reader :columns, :model_name, :searchable_columns, :filters_parameter From b445ccf80239872c9dbc5b7d17b08ba12b28bf0d Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 28 Aug 2012 12:36:11 +0300 Subject: [PATCH 18/28] Update ajax-datatables-rails.gemspec --- ajax-datatables-rails.gemspec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ajax-datatables-rails.gemspec b/ajax-datatables-rails.gemspec index 4653f754..fef50809 100644 --- a/ajax-datatables-rails.gemspec +++ b/ajax-datatables-rails.gemspec @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- require File.expand_path('../lib/ajax-datatables-rails', __FILE__) -require File.expand_path('../lib/mongoid_filters', __FILE__) + Gem::Specification.new do |gem| gem.authors = ["Joel Quenneville"] @@ -20,3 +20,4 @@ Gem::Specification.new do |gem| gem.add_dependency "mongoid", ["~> 3.0.0"] gem.add_dependency "activesupport" end +require File.expand_path('../lib/mongoid_filters', __FILE__) From 014fb1dd9503093b7395bf3500f636026d2dc923 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 28 Aug 2012 12:36:49 +0300 Subject: [PATCH 19/28] Update lib/mongoid_filters.rb --- lib/mongoid_filters.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mongoid_filters.rb b/lib/mongoid_filters.rb index 4d5399f8..7dd39077 100644 --- a/lib/mongoid_filters.rb +++ b/lib/mongoid_filters.rb @@ -1,4 +1,4 @@ -require "activesupport" +require "active_support" module Mongoid module Filters extend ActiveSupport::Concern From 696ba15eaf9cf9bad0e72c598a502cfcec36281c Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 28 Aug 2012 12:38:02 +0300 Subject: [PATCH 20/28] Update ajax-datatables-rails.gemspec --- ajax-datatables-rails.gemspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ajax-datatables-rails.gemspec b/ajax-datatables-rails.gemspec index fef50809..1aba86ae 100644 --- a/ajax-datatables-rails.gemspec +++ b/ajax-datatables-rails.gemspec @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- require File.expand_path('../lib/ajax-datatables-rails', __FILE__) - +require File.expand_path('../lib/mongoid_filters', __FILE__) Gem::Specification.new do |gem| gem.authors = ["Joel Quenneville"] @@ -20,4 +20,4 @@ Gem::Specification.new do |gem| gem.add_dependency "mongoid", ["~> 3.0.0"] gem.add_dependency "activesupport" end -require File.expand_path('../lib/mongoid_filters', __FILE__) + From 3d8263fceca869803d5cb61c47d014eb3f9e0397 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 11 Sep 2012 15:38:28 +0300 Subject: [PATCH 21/28] Update ajax-datatables-rails.gemspec --- ajax-datatables-rails.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ajax-datatables-rails.gemspec b/ajax-datatables-rails.gemspec index 1aba86ae..e76a67d2 100644 --- a/ajax-datatables-rails.gemspec +++ b/ajax-datatables-rails.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |gem| gem.version = AjaxDatatablesRails::VERSION gem.add_development_dependency "rspec" - gem.add_dependency "mongoid", ["~> 3.0.0"] + gem.add_dependency "mongoid" gem.add_dependency "activesupport" end From ec8d21f9a369c3c8a2ed3320a04c033ea217fec9 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Tue, 11 Sep 2012 15:38:45 +0300 Subject: [PATCH 22/28] Update lib/ajax-datatables-rails.rb --- lib/ajax-datatables-rails.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index 44c1373d..ee2428e6 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -4,7 +4,7 @@ class AjaxDatatablesRails class MethodError < StandardError; end - VERSION = '0.0.5' + VERSION = '0.0.6' attr_reader :columns, :model_name, :searchable_columns, :filters_parameter From dc3cb05e38b42ab346b6b31fd5a1aacb354ca6b4 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Thu, 25 Oct 2012 15:46:57 +0200 Subject: [PATCH 23/28] added new filters --- lib/ajax-datatables-rails.rb | 2 +- lib/mongoid_filters.rb | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index ee2428e6..2da53fab 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -4,7 +4,7 @@ class AjaxDatatablesRails class MethodError < StandardError; end - VERSION = '0.0.6' + VERSION = '0.0.7' attr_reader :columns, :model_name, :searchable_columns, :filters_parameter diff --git a/lib/mongoid_filters.rb b/lib/mongoid_filters.rb index 7dd39077..acd16f88 100644 --- a/lib/mongoid_filters.rb +++ b/lib/mongoid_filters.rb @@ -7,18 +7,27 @@ module ClassMethods def filter(attrs) attrs.each do |method| - eval "attr_accessor :#{method}_gte, :#{method}_lte, :#{method}_eq" + eval "attr_accessor :#{method}_gte, :#{method}_lte, :#{method}_eq, :#{method}_is_null, :#{method}_in_not_null" end def filter_criteria(filters = nil) f = {} if filters.present? filters.each_pair do |k,v| - match = k.match(/\b(\w*)_(gte|lte|eq)\b/) + match = k.match(/\b(\w*)_(gte|lte|eq|is_null|is_not_null)\b/) if match[2] == "eq" f.merge!({"#{match[1]}" => v}) + elsif match[2] == "is_null" + f.merge!({"#{match[1]}" => nil }) + elsif match[2] == "is_not_null" + f.merge!({"#{match[1]}" => {"$ne" => nil} }) else - f.merge!({"#{match[1]}" => {"$#{match[2]}" => v}}) + f.each_pair{|k,v| found_key = k if k.to_s == match[1] && v.class.name == "Hash"} + if found_key + f[found_key].merge!({"$#{match[2]}" => v}) + else + f.merge!({"#{match[1]}" => {"$#{match[2]}" => v}}) + end end end end From f9c9f242a487fbee8a0fabce39c2dbd7bed0258b Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Thu, 25 Oct 2012 16:08:26 +0200 Subject: [PATCH 24/28] added new filters --- lib/ajax-datatables-rails.rb | 2 +- lib/mongoid_filters.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index 2da53fab..507603ea 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -4,7 +4,7 @@ class AjaxDatatablesRails class MethodError < StandardError; end - VERSION = '0.0.7' + VERSION = '0.0.8' attr_reader :columns, :model_name, :searchable_columns, :filters_parameter diff --git a/lib/mongoid_filters.rb b/lib/mongoid_filters.rb index acd16f88..bf6a12f2 100644 --- a/lib/mongoid_filters.rb +++ b/lib/mongoid_filters.rb @@ -7,7 +7,7 @@ module ClassMethods def filter(attrs) attrs.each do |method| - eval "attr_accessor :#{method}_gte, :#{method}_lte, :#{method}_eq, :#{method}_is_null, :#{method}_in_not_null" + eval "attr_accessor :#{method}_gte, :#{method}_lte, :#{method}_eq, :#{method}_is_null, :#{method}_is_not_null" end def filter_criteria(filters = nil) From 8cc4b49c06b59784631d11aabc4ee3567b17d246 Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Fri, 26 Oct 2012 10:23:06 +0200 Subject: [PATCH 25/28] fix --- lib/ajax-datatables-rails.rb | 2 +- lib/mongoid_filters.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index 507603ea..e045c9cb 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -4,7 +4,7 @@ class AjaxDatatablesRails class MethodError < StandardError; end - VERSION = '0.0.8' + VERSION = '0.0.9' attr_reader :columns, :model_name, :searchable_columns, :filters_parameter diff --git a/lib/mongoid_filters.rb b/lib/mongoid_filters.rb index bf6a12f2..e5b3255c 100644 --- a/lib/mongoid_filters.rb +++ b/lib/mongoid_filters.rb @@ -18,9 +18,9 @@ def filter_criteria(filters = nil) if match[2] == "eq" f.merge!({"#{match[1]}" => v}) elsif match[2] == "is_null" - f.merge!({"#{match[1]}" => nil }) + f.merge!({"#{match[1]}" => nil }) if v.to_i == 1 || v == true || v == "true" elsif match[2] == "is_not_null" - f.merge!({"#{match[1]}" => {"$ne" => nil} }) + f.merge!({"#{match[1]}" => {"$ne" => nil} }) if v.to_i == 1 || v == true || v == "true" else f.each_pair{|k,v| found_key = k if k.to_s == match[1] && v.class.name == "Hash"} if found_key From 21974ecf2ac61d80bb8d9071bf6d258aa5446f8e Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Thu, 26 Sep 2013 17:34:39 +0200 Subject: [PATCH 26/28] Update mongoid_filters.rb removed require as --- lib/mongoid_filters.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mongoid_filters.rb b/lib/mongoid_filters.rb index e5b3255c..4c4c9345 100644 --- a/lib/mongoid_filters.rb +++ b/lib/mongoid_filters.rb @@ -1,4 +1,4 @@ -require "active_support" + module Mongoid module Filters extend ActiveSupport::Concern @@ -36,4 +36,4 @@ def filter_criteria(filters = nil) end end end -end \ No newline at end of file +end From 3cc78445bae9395faadffcb7e4f1cbe56c0d54cf Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Thu, 26 Sep 2013 17:35:25 +0200 Subject: [PATCH 27/28] Update ajax-datatables-rails.rb bumped version --- lib/ajax-datatables-rails.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ajax-datatables-rails.rb b/lib/ajax-datatables-rails.rb index e045c9cb..39eb9384 100644 --- a/lib/ajax-datatables-rails.rb +++ b/lib/ajax-datatables-rails.rb @@ -4,7 +4,7 @@ class AjaxDatatablesRails class MethodError < StandardError; end - VERSION = '0.0.9' + VERSION = '0.0.10' attr_reader :columns, :model_name, :searchable_columns, :filters_parameter From 2279699b477d00691828d23ac41fc0f354194fbd Mon Sep 17 00:00:00 2001 From: Krzysztof Streflik Date: Thu, 26 Sep 2013 17:39:45 +0200 Subject: [PATCH 28/28] Update mongoid_filters.rb fix --- lib/mongoid_filters.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/mongoid_filters.rb b/lib/mongoid_filters.rb index 4c4c9345..1430ba4a 100644 --- a/lib/mongoid_filters.rb +++ b/lib/mongoid_filters.rb @@ -1,7 +1,6 @@ - module Mongoid module Filters - extend ActiveSupport::Concern + extend ::ActiveSupport::Concern module ClassMethods def filter(attrs)