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 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.