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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57e78f6b6116b69f62786d4c055b7ba4d13ea30e47c268d3de230e2bac8b9b2f
4
- data.tar.gz: ec35ef831ff82b46b10b88d8f37415317db17966912ee2aae01870f6dd9db3d9
3
+ metadata.gz: 95eab28b1bdbf4d767426c505a93b5ad1b3e5c942fd0a0ea58d6b76254e28c04
4
+ data.tar.gz: d0d1a7a4c9539c3793eb840d61038a8cdd11de692c372a059d019eb4bffb5272
5
5
  SHA512:
6
- metadata.gz: bdea7f9b9fe10cd4a61f43206756e129dc8fdb8ea9f53b7d5716933c9930909a69e4a100f23812975da067bfc734937d4423b661d548afc35b6647792ba4726a
7
- data.tar.gz: 35bc6e872063f0a694b8b25f7b9c8dc4400141439eed414a18ab5740774c6ce2e8c4172265441a1fc37740085c5152cd102d479e557120c25c89397355f2846b
6
+ metadata.gz: 0b1f740d08b2e605acea3d067cbc968320c9549492541cf972abb51725b8a1a1bdbe04873f29a9cd2b35e25b1dbcc803b6ac132b5cdbe6c63106a6f24ce0517e
7
+ data.tar.gz: 2ab53d33c2283b5e463fca07e5cbcb0ae29afd42ea994c5892b6f8714d766823849b1342c7de456b98343b4ecacce6e3c71c685f4eba9ec548c13e3f868fd7bf
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- trk_datatables (0.1.9)
4
+ trk_datatables (0.1.10)
5
5
  activesupport
6
6
 
7
7
  GEM
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).as_json
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
- get :search
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 override for specific datatable
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
@@ -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
- raise NotImplementedError unless defined?(::ActiveRecord::Base)
115
-
116
- DB_ADAPTER_STRING_TYPE_CAST[::ActiveRecord::Base.connection_config[:adapter].to_sym]
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
- raise NotImplementedError unless defined?(::ActiveRecord::Base)
123
-
124
- ar_column = table_class.columns_hash[column_name]
125
- raise Error, "Can't find column #{column_name} in #{table_class.name}" unless ar_column
126
-
127
- ar_column.type
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? || @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
@@ -9,6 +9,7 @@ module TrkDatatables
9
9
  # https://github.com/cloudflarearchive/backgrid (archived)
10
10
  class DtParams
11
11
  def initialize(params)
12
+ params.permit! if params.respond_to? :permit!
12
13
  @params = ActiveSupport::HashWithIndifferentAccess.new params
13
14
  end
14
15
 
@@ -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, self.class.name, key
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: { self.class.name => { key => value } } }
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!
@@ -1,3 +1,3 @@
1
1
  module TrkDatatables
2
- VERSION = '0.1.9'.freeze
2
+ VERSION = '0.1.10'.freeze
3
3
  end
@@ -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.9
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-09 00:00:00.000000000 Z
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
- rubygems_version: 3.0.4
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.