trk_datatables 0.1.9 → 0.1.10
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 +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.
|