trk_datatables 0.1.9 → 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +12 -10
- data/lib/trk_datatables/base.rb +1 -1
- data/lib/trk_datatables/column_key_options.rb +17 -10
- data/lib/trk_datatables/dt_params.rb +1 -0
- data/lib/trk_datatables/neo4j.rb +21 -0
- data/lib/trk_datatables/preferences.rb +4 -3
- data/lib/trk_datatables/version.rb +1 -1
- data/lib/trk_datatables.rb +1 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95eab28b1bdbf4d767426c505a93b5ad1b3e5c942fd0a0ea58d6b76254e28c04
|
4
|
+
data.tar.gz: d0d1a7a4c9539c3793eb840d61038a8cdd11de692c372a059d019eb4bffb5272
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b1f740d08b2e605acea3d067cbc968320c9549492541cf972abb51725b8a1a1bdbe04873f29a9cd2b35e25b1dbcc803b6ac132b5cdbe6c63106a6f24ce0517e
|
7
|
+
data.tar.gz: 2ab53d33c2283b5e463fca07e5cbcb0ae29afd42ea994c5892b6f8714d766823849b1342c7de456b98343b4ecacce6e3c71c685f4eba9ec548c13e3f868fd7bf
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -91,7 +91,7 @@ class PostsController < ApplicationController
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def search
|
94
|
-
render json: PostsDatatable.new(view_context)
|
94
|
+
render json: PostsDatatable.new(view_context)
|
95
95
|
end
|
96
96
|
end
|
97
97
|
```
|
@@ -103,7 +103,7 @@ In controller add a route to `:search`
|
|
103
103
|
Rails.application.routes.draw do
|
104
104
|
resources :posts do
|
105
105
|
colletion do
|
106
|
-
|
106
|
+
post :search
|
107
107
|
end
|
108
108
|
end
|
109
109
|
end
|
@@ -177,7 +177,8 @@ class PostsDatatable < TrkDatatables::ActiveRecord
|
|
177
177
|
end
|
178
178
|
```
|
179
179
|
|
180
|
-
To enable shortcuts for selecting ranges, you can override predefined ranges
|
180
|
+
To enable shortcuts for selecting ranges, you can override predefined ranges and
|
181
|
+
enable for all `date` and `datetime` column
|
181
182
|
|
182
183
|
```
|
183
184
|
# app/datatables/base_trk_datatable.rb
|
@@ -188,15 +189,10 @@ class BaseTrkDatable < TrkDatatables::ActiveRecord
|
|
188
189
|
end
|
189
190
|
end
|
190
191
|
```
|
191
|
-
or you can
|
192
|
+
or you can enable for all `date` and `datetime columns` for specific datatable
|
193
|
+
by defining `predefined_ranges` on that datatable. You can disable for specific columns also
|
192
194
|
```
|
193
195
|
class PostsDatatable < TrkDatatables::ActiveRecord
|
194
|
-
def columns
|
195
|
-
{
|
196
|
-
'posts.created_at': { predefined_ranges: true },
|
197
|
-
}
|
198
|
-
end
|
199
|
-
|
200
196
|
def predefined_ranges
|
201
197
|
{
|
202
198
|
'Today': Time.zone.now.beginning_of_day..Time.zone.now.end_of_day,
|
@@ -206,6 +202,12 @@ class PostsDatatable < TrkDatatables::ActiveRecord
|
|
206
202
|
'This Year': Time.zone.today.beginning_of_year...Time.zone.today.end_of_day,
|
207
203
|
}
|
208
204
|
end
|
205
|
+
|
206
|
+
def columns
|
207
|
+
{
|
208
|
+
'posts.created_at': {}, # this column will have predefined_ranges
|
209
|
+
'posts.published_date': { predefined_ranges: false }
|
210
|
+
end
|
209
211
|
end
|
210
212
|
```
|
211
213
|
or you can define for specific column
|
data/lib/trk_datatables/base.rb
CHANGED
@@ -16,7 +16,7 @@ module TrkDatatables
|
|
16
16
|
@view = view
|
17
17
|
@dt_params = DtParams.new view.params
|
18
18
|
@column_key_options = ColumnKeyOptions.new columns, global_search_columns, predefined_ranges
|
19
|
-
@preferences = Preferences.new preferences_holder, preferences_field
|
19
|
+
@preferences = Preferences.new preferences_holder, preferences_field, self.class.name
|
20
20
|
|
21
21
|
# if @dt_params.dt_columns.size != @column_key_options.size
|
22
22
|
# raise Error, "dt_columns size of columns is #{@dt_params.dt_columns.size} \
|
@@ -111,20 +111,26 @@ module TrkDatatables
|
|
111
111
|
|
112
112
|
# This is helper
|
113
113
|
def _determine_string_type_cast # :nodoc:
|
114
|
-
|
115
|
-
|
116
|
-
|
114
|
+
if defined?(::ActiveRecord::Base)
|
115
|
+
DB_ADAPTER_STRING_TYPE_CAST[::ActiveRecord::Base.connection_config[:adapter].to_sym]
|
116
|
+
else
|
117
|
+
'not_used'
|
118
|
+
end
|
117
119
|
end
|
118
120
|
|
119
121
|
# @return
|
120
122
|
# :string, :integer, :date, :datetime
|
121
123
|
def _determine_db_type_for_column(table_class, column_name)
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
124
|
+
if defined?(::ActiveRecord::Base)
|
125
|
+
ar_column = table_class.columns_hash[column_name]
|
126
|
+
raise Error, "Can't find column #{column_name} in #{table_class.name}" unless ar_column
|
127
|
+
|
128
|
+
ar_column.type
|
129
|
+
elsif defined?(::Neo4j::ActiveNode)
|
130
|
+
(table_class.declared_properties[column_name][:type] || String).name.downcase
|
131
|
+
else
|
132
|
+
raise NotImplementedError, 'I work only with ActiveRecord and Neo4j'
|
133
|
+
end
|
128
134
|
end
|
129
135
|
|
130
136
|
def searchable
|
@@ -166,7 +172,8 @@ module TrkDatatables
|
|
166
172
|
res['data-orderable'] = false if column_options[ORDER_OPTION] == false
|
167
173
|
if %i[date datetime].include? column_type_in_db
|
168
174
|
res['data-datatable-range'] = column_type_in_db == :datetime ? :datetime : true
|
169
|
-
if column_options[PREDEFINED_RANGES].present? ||
|
175
|
+
if column_options[PREDEFINED_RANGES].present? ||
|
176
|
+
(@predefined_ranges.present? && column_options[PREDEFINED_RANGES] != false)
|
170
177
|
res['data-datatable-predefined-ranges'] = if column_options[PREDEFINED_RANGES].is_a? Hash
|
171
178
|
column_options[PREDEFINED_RANGES]
|
172
179
|
else
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module TrkDatatables
|
2
|
+
class Neo4j < Base
|
3
|
+
def filter_by_search_all(filtered)
|
4
|
+
filtered
|
5
|
+
end
|
6
|
+
|
7
|
+
def filter_by_columns(all)
|
8
|
+
all
|
9
|
+
end
|
10
|
+
|
11
|
+
def order_and_paginate_items(filtered)
|
12
|
+
filtered = order_items filtered
|
13
|
+
filtered = filtered.offset(@dt_params.dt_offset).limit(dt_per_page_or_default)
|
14
|
+
filtered
|
15
|
+
end
|
16
|
+
|
17
|
+
def order_items(filtered)
|
18
|
+
filtered
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,8 +1,9 @@
|
|
1
1
|
module TrkDatatables
|
2
2
|
class Preferences
|
3
|
-
def initialize(holder, field)
|
3
|
+
def initialize(holder, field, class_name)
|
4
4
|
@holder = holder
|
5
5
|
@field = field
|
6
|
+
@class_name = class_name
|
6
7
|
end
|
7
8
|
|
8
9
|
# Get the key from holder
|
@@ -11,7 +12,7 @@ module TrkDatatables
|
|
11
12
|
def get(key, check_value = nil)
|
12
13
|
return unless @holder
|
13
14
|
|
14
|
-
result = @holder.send(@field).dig :dt_preferences,
|
15
|
+
result = @holder.send(@field).dig :dt_preferences, @class_name, key
|
15
16
|
return result if check_value.nil?
|
16
17
|
return result if check_value.call result
|
17
18
|
end
|
@@ -19,7 +20,7 @@ module TrkDatatables
|
|
19
20
|
def set(key, value)
|
20
21
|
return unless @holder
|
21
22
|
|
22
|
-
h = { dt_preferences: {
|
23
|
+
h = { dt_preferences: { @class_name => { key => value } } }
|
23
24
|
@holder.send("#{@field}=", {}) if @holder.send(@field).nil?
|
24
25
|
@holder.send(@field).deep_merge! h
|
25
26
|
@holder.save!
|
data/lib/trk_datatables.rb
CHANGED
@@ -4,6 +4,7 @@ require 'trk_datatables/preferences.rb'
|
|
4
4
|
|
5
5
|
require 'trk_datatables/base'
|
6
6
|
require 'trk_datatables/active_record'
|
7
|
+
require 'trk_datatables/neo4j'
|
7
8
|
require 'trk_datatables/dt_params'
|
8
9
|
require 'trk_datatables/column_key_options.rb'
|
9
10
|
require 'trk_datatables/render_html.rb'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trk_datatables
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dusan Orlovic
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -173,6 +173,7 @@ files:
|
|
173
173
|
- lib/trk_datatables/base.rb
|
174
174
|
- lib/trk_datatables/column_key_options.rb
|
175
175
|
- lib/trk_datatables/dt_params.rb
|
176
|
+
- lib/trk_datatables/neo4j.rb
|
176
177
|
- lib/trk_datatables/preferences.rb
|
177
178
|
- lib/trk_datatables/render_html.rb
|
178
179
|
- lib/trk_datatables/version.rb
|
@@ -202,7 +203,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
203
|
- !ruby/object:Gem::Version
|
203
204
|
version: '0'
|
204
205
|
requirements: []
|
205
|
-
|
206
|
+
rubyforge_project:
|
207
|
+
rubygems_version: 2.7.6
|
206
208
|
signing_key:
|
207
209
|
specification_version: 4
|
208
210
|
summary: Gem that simplify using datatables with Ruby on Rails and Sinatra.
|