datatablesnet 1.0 → 1.1

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,4 +1,6 @@
1
1
  require 'datatablesnet/types'
2
+ require 'datatablesnet/hash_sql'
3
+ require 'uri'
2
4
 
3
5
  module Datatable
4
6
 
@@ -70,16 +72,19 @@ module Datatable
70
72
 
71
73
  options =
72
74
  {
73
- :show_actions => true,
75
+ :show_actions => false,
74
76
  :per_page => 25,
75
77
  :toolbar_external => false
76
78
  }.merge(options)
77
79
 
80
+ url = URI::split(options[:data_url]);
81
+
78
82
  index = 0
79
83
  columns.each do |column|
80
84
  column[:label] = field_to_label(column[:field]) unless column[:label].present?
81
85
  if options[:data_url].present?
82
- options[:data_url] << "?" if column == columns.first
86
+ options[:data_url] << "?" if column == columns.first and url[7] == nil
87
+ options[:data_url] << "&" if column == columns.first and url[7] != nil
83
88
  options[:data_url] << "column_field_#{index.to_s}=#{column[:field]}"
84
89
  if column[:view_link].present?
85
90
  options[:data_url] << "&column_view_link_#{index.to_s}=#{column[:view_link]}"
@@ -205,6 +210,24 @@ module Datatable
205
210
  end
206
211
  end
207
212
 
213
+ search_by = {}
214
+ params.each do |key, value|
215
+ if key =~ /query_.*/ and !value.empty?
216
+ if key =~ /.*_to/
217
+ field_name = key[6..-4]
218
+ search_by[field_name] = {} unless search_by[field_name].present?
219
+ search_by[field_name][:to] = Date.parse(value)
220
+ elsif key =~ /.*_from/
221
+ field_name = key[6..-6]
222
+ search_by[field_name] = {} unless search_by[field_name].present?
223
+ search_by[field_name][:from] = Date.parse(value)
224
+ else
225
+ search_by[key[6..-1]] = value
226
+ end
227
+ end
228
+ end
229
+
230
+ grid_options[:search_by] = search_by
208
231
  grid_options[:columns] = columns
209
232
  grid_options[:order_by] = order_by
210
233
  grid_options[:filter_by] = filter_by
@@ -219,8 +242,10 @@ module Datatable
219
242
 
220
243
 
221
244
  def find(klass, params={}, options = {})
245
+ puts params.to_json
222
246
  field_filter_where = {}
223
247
  all_filter_where = {}
248
+ search_filter_where = {}
224
249
 
225
250
  grid_options = parse_params params
226
251
 
@@ -230,12 +255,14 @@ module Datatable
230
255
 
231
256
  # Build order by
232
257
  grid_options[:order_by].each do |column, order|
233
- if options[:order].present?
234
- options[:order] << ", "
235
- else
236
- options[:order] = ""
258
+ if column
259
+ if options[:order].present?
260
+ options[:order] << ", "
261
+ else
262
+ options[:order] = ""
263
+ end
264
+ options[:order] << "#{column} #{order}"
237
265
  end
238
- options[:order] << "#{column} #{order}"
239
266
  end
240
267
 
241
268
  # Build filter by
@@ -252,8 +279,21 @@ module Datatable
252
279
  end
253
280
  end
254
281
 
255
- if !field_filter_where.empty? or !all_filter_where.empty?
256
- options[:conditions] = [field_filter_where.sql_like, all_filter_where.sql_or.sql_like].sql_and.sql_where
282
+ grid_options[:search_by].each do |column, value|
283
+ if value.instance_of?(Hash)
284
+ search_filter_where[column] = (value[:from]..value[:to])
285
+ else
286
+ search_filter_where[column] = value
287
+ end
288
+ end
289
+
290
+ if !field_filter_where.empty? or !all_filter_where.empty? or !search_filter_where.empty?
291
+ sql_where = [field_filter_where.sql_like, all_filter_where.sql_or.sql_like, search_filter_where.sql_and].sql_and.sql_where
292
+ if options[:conditions].present?
293
+ options[:conditions] << " and (" << sql_where << ")"
294
+ else
295
+ options[:conditions] = sql_where
296
+ end
257
297
  end
258
298
 
259
299
  puts options[:conditions]
@@ -45,7 +45,11 @@ module HashSql
45
45
  where_string << " #{sql_operator ? sql_operator : 'and'} "
46
46
  end
47
47
 
48
- if self.sql_comparator = "like"
48
+ if value.instance_of?(Range)
49
+ where_string << "(#{name} BETWEEN ? AND ?)"
50
+ values << value.min
51
+ values << value.max
52
+ elsif self.sql_comparator = "like"
49
53
  where_string << "#{name} LIKE ?"
50
54
  values << '%' + value + '%'
51
55
  else
@@ -1,3 +1,3 @@
1
1
  module Datatablesnet
2
- VERSION = "1.0"
2
+ VERSION = "1.1"
3
3
  end
metadata CHANGED
@@ -1,12 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datatablesnet
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 1
8
- - 0
9
- version: "1.0"
7
+ - 1
8
+ version: "1.1"
10
9
  platform: ruby
11
10
  authors:
12
11
  - Matt Fields
@@ -14,7 +13,8 @@ autorequire:
14
13
  bindir: bin
15
14
  cert_chain: []
16
15
 
17
- date: 2011-07-30 00:00:00 Z
16
+ date: 2011-08-09 00:00:00 +03:00
17
+ default_executable:
18
18
  dependencies: []
19
19
 
20
20
  description: Component abstraction for datatables.net
@@ -36,6 +36,7 @@ files:
36
36
  - lib/datatablesnet/railtie.rb
37
37
  - lib/datatablesnet/types.rb
38
38
  - lib/datatablesnet/version.rb
39
+ has_rdoc: true
39
40
  homepage: https://github.com/IslandPort/datatablesnet
40
41
  licenses: []
41
42
 
@@ -45,27 +46,23 @@ rdoc_options: []
45
46
  require_paths:
46
47
  - lib
47
48
  required_ruby_version: !ruby/object:Gem::Requirement
48
- none: false
49
49
  requirements:
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- hash: 3
53
52
  segments:
54
53
  - 0
55
54
  version: "0"
56
55
  required_rubygems_version: !ruby/object:Gem::Requirement
57
- none: false
58
56
  requirements:
59
57
  - - ">="
60
58
  - !ruby/object:Gem::Version
61
- hash: 3
62
59
  segments:
63
60
  - 0
64
61
  version: "0"
65
62
  requirements: []
66
63
 
67
64
  rubyforge_project:
68
- rubygems_version: 1.7.2
65
+ rubygems_version: 1.3.6
69
66
  signing_key:
70
67
  specification_version: 3
71
68
  summary: Datatables.net component for rails