active_data_tables 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0968cb879414b94cfd6aa775d86af244de488dd8
4
- data.tar.gz: 99ce42080efc06f1187ba24bf64c803470b9fcb1
3
+ metadata.gz: 494c6be7278ff56196d56164b739e1b5f599def5
4
+ data.tar.gz: 9fcf0fc1ba81cd65130d59a3afe8fc88b62a4db7
5
5
  SHA512:
6
- metadata.gz: b2d5aa2cb9fdccb153f08967b5c947a2a795c098ba6e8b656c86c057f664ae69bd14e429f2014eb413567ea533cf24a456286b2e40e8ec6758822f487c2513c0
7
- data.tar.gz: 776f7b50ffc5905b0744d370674cd4b3325ff7e4f0578cc540dafaf08d7be27028fffd5e9cf8cad56b4ad03d28ed6af7a9ec8a16a4c16360f74293d2306e0970
6
+ metadata.gz: 39e97d6478912be0b324cda552c6e7bb22a53a2d594a5243abec2f1f77a023022a484032cc00000bb215595811835d507f9d4c497e0d83c94f88f448d2e90473
7
+ data.tar.gz: 36263b776b5a0e2d41ebb005861587fe7a56b10dc01f7ad5ba9dbe9003af93dcbd2a83910dec965a432eeba80f9657395ce990db811092e9d9f110e4bdaf1f45
@@ -9,7 +9,10 @@ class ActiveDataTables
9
9
 
10
10
  def execute
11
11
  total = @query.count
12
- filtered = total # don't currently support filtering records so this will be the same as the total
12
+
13
+ apply_filtering
14
+
15
+ filtered = @query.count
13
16
 
14
17
  apply_paging
15
18
  apply_ordering
@@ -48,6 +51,36 @@ class ActiveDataTables
48
51
 
49
52
  private
50
53
 
54
+ def apply_filtering
55
+ columns = searchable_columns
56
+
57
+ if @params[:search] && !@params[:search][:value].blank?
58
+ search_value = @params[:search][:value].downcase
59
+
60
+ if @query.is_a?(Array)
61
+ @query = @query.select do |item|
62
+ columns.select do |k, v|
63
+ column_data = v[:data].to_sym
64
+ item[column_data].to_s.downcase.include?(search_value)
65
+ end.length > 0
66
+ end
67
+ else
68
+ clauses = nil
69
+ columns.each do |k, v|
70
+ column_data = v[:data].to_sym
71
+ clause = @query.arel_table[column_data].matches("%#{search_value}%")
72
+ if clauses.nil?
73
+ clauses = clause
74
+ else
75
+ clauses = clauses.or(clause)
76
+ end
77
+ end
78
+
79
+ @query = @query.where(clauses)
80
+ end
81
+ end
82
+ end
83
+
51
84
  def apply_paging
52
85
  if @params[:start]
53
86
  if @query.respond_to?(:offset)
@@ -94,4 +127,14 @@ class ActiveDataTables
94
127
  @params[:columns] || {}
95
128
  end
96
129
 
130
+ def searchable_columns
131
+ columns = load_columns
132
+ searchable = {}
133
+ searchable = columns.select do |column_index|
134
+ columns[column_index][:searchable] == "true"
135
+ end
136
+
137
+ searchable
138
+ end
139
+
97
140
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_data_tables
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Smith
@@ -28,58 +28,104 @@ dependencies:
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '3.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '3.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activerecord
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.2'
45
48
  - - ">="
46
49
  - !ruby/object:Gem::Version
47
- version: '0'
50
+ version: 4.2.4
48
51
  type: :development
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '4.2'
52
58
  - - ">="
53
59
  - !ruby/object:Gem::Version
54
- version: '0'
60
+ version: 4.2.4
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: sqlite3
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.3'
59
68
  - - ">="
60
69
  - !ruby/object:Gem::Version
61
- version: '0'
70
+ version: 1.3.11
62
71
  type: :development
63
72
  prerelease: false
64
73
  version_requirements: !ruby/object:Gem::Requirement
65
74
  requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '1.3'
66
78
  - - ">="
67
79
  - !ruby/object:Gem::Version
68
- version: '0'
80
+ version: 1.3.11
69
81
  - !ruby/object:Gem::Dependency
70
82
  name: rake
71
83
  requirement: !ruby/object:Gem::Requirement
72
84
  requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '10.4'
73
88
  - - ">="
74
89
  - !ruby/object:Gem::Version
75
- version: '0'
90
+ version: 10.4.2
76
91
  type: :development
77
92
  prerelease: false
78
93
  version_requirements: !ruby/object:Gem::Requirement
79
94
  requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '10.4'
80
98
  - - ">="
81
99
  - !ruby/object:Gem::Version
82
- version: '0'
100
+ version: 10.4.2
101
+ - !ruby/object:Gem::Dependency
102
+ name: coveralls
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: 0.8.3
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: 0.8.3
115
+ - !ruby/object:Gem::Dependency
116
+ name: rubocop
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: 0.34.2
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: 0.34.2
83
129
  description: Server side processing for datatables.net
84
130
  email: me@lukesmith.net
85
131
  executables: []