datatable_utils 0.0.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.
- checksums.yaml +7 -0
- data/README.md +5 -0
- data/lib/datatable_utils.rb +95 -0
- data/lib/datatable_utils/array.rb +5 -0
- data/lib/datatable_utils/version.rb +3 -0
- metadata +62 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f3323148ed37fcadf255ce89cf9962f1ac48e0d8
|
4
|
+
data.tar.gz: 9d16b189ce6a2c512f59a84ca1786c09c3b17516
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6ac4b860f001ff5338c082eea3542c370358ff08cff6e82b54d758391f34f0858933fd200c6084045fe9f7f527a9284ecf93ddefb82752f9c53874d90c68dee7
|
7
|
+
data.tar.gz: 2e1cc1e667c3fcfdbc41cffa0d9300b9f8d68c443c9f69f56cbb09e2b32ff99027733b3d17936ae529a911d84e0f3a6d4f64680c25cb5522761fa7867e21baf5
|
data/README.md
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
module DatatableUtils
|
2
|
+
def self.included(base)
|
3
|
+
base.class_eval do
|
4
|
+
delegate :params, :h, :l, :link_to, to: :@view
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(view, collection, controller = nil)
|
9
|
+
@view = view
|
10
|
+
@collection = collection
|
11
|
+
@controller = controller
|
12
|
+
end
|
13
|
+
|
14
|
+
def as_json(options = {})
|
15
|
+
{
|
16
|
+
sEcho: params[:sEcho].to_i,
|
17
|
+
iTotalRecords: records_count,
|
18
|
+
iTotalDisplayRecords: (paginate? ? cached_collection.total_entries : records_count),
|
19
|
+
aaData: data
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def data
|
26
|
+
cached_collection.map do |objekt|
|
27
|
+
data_proc.call objekt
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def cached_collection
|
32
|
+
@cached_collection ||= fetch_collection
|
33
|
+
end
|
34
|
+
|
35
|
+
def order_default
|
36
|
+
''
|
37
|
+
end
|
38
|
+
|
39
|
+
def fetch_collection
|
40
|
+
collection = @collection.where(columns_search).order(sort)
|
41
|
+
|
42
|
+
if paginate?
|
43
|
+
collection = collection.page(page).per_page(per_page)
|
44
|
+
end
|
45
|
+
|
46
|
+
if params[:search].present? and params[:search][:value].present?
|
47
|
+
collection = collection.search(params[:search][:value])
|
48
|
+
end
|
49
|
+
collection
|
50
|
+
end
|
51
|
+
|
52
|
+
def page
|
53
|
+
params[:start].to_i/per_page + 1
|
54
|
+
end
|
55
|
+
|
56
|
+
def per_page
|
57
|
+
params[:length].to_i > 0 ? params[:length].to_i : 10
|
58
|
+
end
|
59
|
+
|
60
|
+
def paginate?
|
61
|
+
params[:length].to_i > 0
|
62
|
+
end
|
63
|
+
|
64
|
+
def records_count
|
65
|
+
@records_count ||= @collection.count
|
66
|
+
end
|
67
|
+
|
68
|
+
def sort
|
69
|
+
if params[:order]
|
70
|
+
params[:order].each_value.map do |order|
|
71
|
+
"#{columns[order['column'].to_i]} #{order['dir']}"
|
72
|
+
end.join(', ')
|
73
|
+
else
|
74
|
+
order_default
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def columns_search
|
79
|
+
params[:columns].select{|_, v| v['search']['value'].present?}.each.map do |i, param|
|
80
|
+
"#{columns_for_search[i.to_i]} ILIKE '%#{param['search']['value']}%'"
|
81
|
+
end.join(' AND ') if params[:columns]
|
82
|
+
end
|
83
|
+
|
84
|
+
def condition_map
|
85
|
+
end
|
86
|
+
|
87
|
+
def columns
|
88
|
+
condition_map ? self.class::COLUMNS.filter(condition_map) : self.class::COLUMNS
|
89
|
+
end
|
90
|
+
|
91
|
+
def columns_for_search
|
92
|
+
condition_map ? self.class::COLUMNS_FOR_SEARCH.filter(condition_map) :
|
93
|
+
self.class::COLUMNS_FOR_SEARCH
|
94
|
+
end
|
95
|
+
end
|
metadata
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: datatable_utils
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- denispeplin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: Module for including into server-side datatables class
|
28
|
+
email:
|
29
|
+
- denis.peplin@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- README.md
|
35
|
+
- lib/datatable_utils.rb
|
36
|
+
- lib/datatable_utils/array.rb
|
37
|
+
- lib/datatable_utils/version.rb
|
38
|
+
homepage: https://github.com/denispeplin/datatable_utils
|
39
|
+
licenses:
|
40
|
+
- MIT
|
41
|
+
metadata: {}
|
42
|
+
post_install_message:
|
43
|
+
rdoc_options: []
|
44
|
+
require_paths:
|
45
|
+
- lib
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '0'
|
51
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
requirements: []
|
57
|
+
rubyforge_project:
|
58
|
+
rubygems_version: 2.4.2
|
59
|
+
signing_key:
|
60
|
+
specification_version: 4
|
61
|
+
summary: Utilites for server-side datatables
|
62
|
+
test_files: []
|