trk_datatables 0.1.17 → 0.1.18

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: 07c3787293eeff0d7de126d9f7396ab7e2b50b8115fb8ff7bdc082c5430729e5
4
- data.tar.gz: b051feaec9ea1d1278fb34426c2641cc7073d9ba1a0428288661a833ca2fa66a
3
+ metadata.gz: 206ca38dbabdc5c5efc6977db4c34ee6300336e7162479a7c7b8a94f3fb74b8c
4
+ data.tar.gz: db45ebc154b0da6a653c785eee388128bfc3d982750fd3dd296e77c120932740
5
5
  SHA512:
6
- metadata.gz: 72a519b5c19de4dad5412e4089fb07a87a1537c897012e3562b474bcb0ea73fa8744faa51ce3900a170b5c5f2b4ca85b15a671fc3e92dc0a8b37e3529e067c62
7
- data.tar.gz: 84668274b21444a0eb75505250d0b8b192c65ac8b38f221cdf4b85aa5da5593dc0e82c5ed02a32a683b6f89fa674f424a7b5de6528d91d922c6050580a317750
6
+ metadata.gz: 15ecc3cc4c9c0fb978bb76cdc9f136d7907956d6c4c7c464f5d4d5d6298147be91b00ed6e9314ef9b32318fd2772600067003da937c634585f687b0e27b3e3c4
7
+ data.tar.gz: ccf49ae9953ca13b9c0f850b67eb38f03cd7429a780ed46c15b078eea1028116a1ee19a29115474e3954cafb021c685e2ccf214e169f1c7b447fce34770e43a0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- trk_datatables (0.1.17)
4
+ trk_datatables (0.1.18)
5
5
  activesupport
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -102,7 +102,7 @@ In controller add a route to `:search`
102
102
  # config/routes.rb
103
103
  Rails.application.routes.draw do
104
104
  resources :posts do
105
- colletion do
105
+ collection do
106
106
  post :search
107
107
  end
108
108
  end
@@ -343,12 +343,15 @@ end
343
343
  ### Params
344
344
 
345
345
  To set parameters that you can use for links to set column search value, use
346
- this `PostsDatatable.param_set 'users.email', 'my@email.com'` for example
346
+ this `PostsDatatable.param_set 'users.email', 'my@email.com'`. For between
347
+ search you can use range `Time.zone.today..(Time.zone.today + 1.year)` and for
348
+ in multiple values use array `[Post.statuses[:draft]]`.
347
349
 
348
350
  ```
349
351
  <%= link_to 'Active posts for my@email.com', \
350
352
  posts_path(
351
353
  PostsDatatable.param_set('users.email', 'my@email.com')
354
+ .deep_merge(PostsDatatable.param_set('posts.published_date', Date.parse('2019-10-20')..Date.parse('2019-10-22')))
352
355
  .deep_merge(PostsDatatable.param_set('posts.status', Post.statuses.values_at(:published, :promoted))
353
356
  .deep_merge(user_id: 1)
354
357
  )
@@ -374,6 +377,15 @@ If you need, you can fetch params with this helper
374
377
  PostsDatatable.param_get('users.email', params)
375
378
  ```
376
379
 
380
+ You can set filters on datatable even params are blank, for example
381
+
382
+ ```
383
+ def index
384
+ view_context.params.merge! PostsDatatable.param_set 'posts.start_date', Time.zone.today..(Time.zone.today + 1.year)
385
+ @datatable = PostsDatatable.new view_context
386
+ end
387
+ ```
388
+
377
389
  ### Saved Preferences (optional)
378
390
 
379
391
  You can save column order and page length in User.preferences field so
@@ -550,10 +562,11 @@ ruby -I test test/trk_datatables/base_test.rb -n /additional/
550
562
  You can also run `bin/console` for an interactive prompt that will allow you to experiment.
551
563
 
552
564
  To install this gem onto your local machine, run `bundle exec rake install`. To
553
- release a new version, update the version number in
554
- `lib/trk_datatables/version.rb`, and then publish with
565
+ release a new version, update the version number and then publish with
555
566
 
556
567
  ```
568
+ vi lib/trk_datatables/version.rb
569
+ bundle
557
570
  bundle exec rake release
558
571
  ```
559
572
 
@@ -1,7 +1,7 @@
1
- class <%= class_name.pluralize %>Datatable < TrkDatatables::ActiveRecord
1
+ class <%= @trk_class_name %> < TrkDatatables::ActiveRecord
2
2
  def columns
3
3
  {
4
- <% class_name.constantize.columns.each do |column| -%>
4
+ <% @skip_model || class_name.constantize.columns.each do |column| -%>
5
5
  <% next if %w[created_at updated_at].include? column.name -%>
6
6
  '<%= table_name %>.<%= column.name %>': {},
7
7
  <% end -%>
@@ -9,13 +9,15 @@ class <%= class_name.pluralize %>Datatable < TrkDatatables::ActiveRecord
9
9
  end
10
10
 
11
11
  def all_items
12
+ # you can use @view.params
12
13
  <%= class_name %>.all
13
14
  end
14
15
 
15
16
  def rows(filtered)
17
+ # you can use @view.link_to and other helpers
16
18
  filtered.map do |<%= singular_table_name %>|
17
19
  [
18
- <% class_name.constantize.columns.each do |column| -%>
20
+ <% @skip_model || class_name.constantize.columns.each do |column| -%>
19
21
  <% next if %w[created_at updated_at].include? column.name -%>
20
22
  <% if column.name == 'id' -%>
21
23
  @view.link_to(<%= singular_table_name %>.id, <%= singular_table_name %>),
@@ -1,7 +1,6 @@
1
1
  module TrkDatatables
2
2
  module Generators
3
3
  class TrkDatatablesGenerator < Rails::Generators::NamedBase
4
- MissingModelError = Class.new(Thor::Error)
5
4
  # we can call with `rails g trk_datatables` instead of: `rails g trk_datatables:trk_datatables`
6
5
  namespace 'trk_datatables'
7
6
  source_root File.expand_path('../templates', __dir__)
@@ -10,11 +9,49 @@ module TrkDatatables
10
9
  def create
11
10
  begin
12
11
  class_name.constantize
12
+ @trk_class_name = "#{class_name.pluralize}Datatable"
13
+ @trk_file_name = "#{plural_name}_datatable"
13
14
  rescue NameError => e
14
- raise MissingModelError, e.message
15
+ Rails.logger.info e.message
16
+ @skip_model = true
17
+ @trk_class_name = "#{class_name}Datatable"
18
+ @trk_file_name = "#{singular_name}_datatable"
15
19
  end
16
20
 
17
- template 'trk_datatable.rb', "app/datatables/#{plural_name}_datatable.rb"
21
+ template 'trk_datatable.rb', "app/datatables/#{@trk_file_name}.rb"
22
+
23
+ say <<~TEXT
24
+ ======================================================================
25
+ You can use in your controller
26
+
27
+ # app/controllers/#{plural_name}_controller.rb
28
+ class #{class_name}Controller < ApplicationController
29
+ def index
30
+ @datatable = #{@trk_class_name}.new view_context
31
+ end
32
+
33
+ def search
34
+ render json: #{@trk_class_name}.new(view_context)
35
+ end
36
+ end
37
+
38
+ In your views mkdir app/views/#{plural_name}
39
+ # app/views/#{plural_name}/index.html
40
+ <h1>#{class_name.pluralize}</h1>
41
+ <%= @datatable.render_html search_#{plural_name}_path(format: :json) %>
42
+
43
+ And in routes
44
+
45
+ # config/routes.rb
46
+ Rails.application.routes.draw do
47
+ resources :#{plural_name} do
48
+ collection do
49
+ post :search
50
+ end
51
+ end
52
+ end
53
+ ======================================================================
54
+ TEXT
18
55
  end
19
56
  end
20
57
  end
@@ -16,6 +16,7 @@ module TrkDatatables
16
16
  def param_set(column_key, value)
17
17
  datatable = new OpenStruct.new(params: {})
18
18
  value = value.join MULTIPLE_OPTION_SEPARATOR if value.is_a? Array
19
+ value = [value.first, value.last].join BETWEEN_SEPARATOR if value.is_a? Range
19
20
  column_index = datatable.index_by_column_key column_key
20
21
  DtParams.param_set column_index, value
21
22
  end
@@ -1,3 +1,3 @@
1
1
  module TrkDatatables
2
- VERSION = '0.1.17'.freeze
2
+ VERSION = '0.1.18'.freeze
3
3
  end
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.17
4
+ version: 0.1.18
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-10-15 00:00:00.000000000 Z
11
+ date: 2019-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport