rails-datatable 0.1.0 → 0.1.2

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: 48fd623c70bb297eea1a2ab0179f08daca30a542af08cfbd739dc692270adbe5
4
- data.tar.gz: 4f02bef592074c6971a3b8a989e543d85e98641dfdd226d5dc372e7832730f47
3
+ metadata.gz: e79e8c3d89ddfa0294088089a1eddedbab6b4ca76ada17c4595ab737ef38be9d
4
+ data.tar.gz: d8b4f5447ecf4ee63acd2a5ace4c6dec2804ee04262f59e64e497276cfb21789
5
5
  SHA512:
6
- metadata.gz: db6c11f6d70a3b4a445be86de667a2373dc1789bb14359191d528c3ee6e02aabb2736fe427b90be1027d49a0765719fcc167b0e42673ac1bd4bead60afe5b122
7
- data.tar.gz: 2617a5217d1efd552470e14224521065bccdcf01b379a4755cbce9c0d072f92434dd4d2c1e8baf87b685b636d344532883ae189a617d935d2a6deed7506bb893
6
+ metadata.gz: 258df0c4879102ee3402e32ec53386071ace32bb2f0e4e41ac01bb74ead88c10d5a6665fcffb03d19fc034c3e11ed0544d71f4322ca4fb6d7e5c0876a70d11e5
7
+ data.tar.gz: 56d0099ed368a4aa90f1fc777e0f0ce844ddffb79a0c8a5ae9b8e42114e2d7867dbc6ab2f230f3620daea7cce2565f80700a483917d50d8f50c3bc71a72e40af
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+ /*.gem
13
+ /app
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rails-datatable (0.1.0)
4
+ rails-datatable (0.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -11,20 +11,22 @@ gem 'rails-datatable'
11
11
  ```
12
12
 
13
13
  And then execute:
14
- $ bundle
14
+
15
+ $ bundle
15
16
 
16
17
  Or install it yourself as:
17
- $ gem install rails-datatable
18
18
 
19
+ $ gem install rails-datatable
20
+
19
21
  ## Usage
20
22
 
21
23
  ### 1. Install RailsDatatable
22
- $ rails g rails::datatable::install
24
+ $ rails g rails:datatable:install
23
25
 
24
26
  ### 2. Generate resources
25
27
  #### 2.1 Generate databtable resources
26
28
 
27
- $ rails g rails::datatable::resource [User]
29
+ $ rails g rails:datatable:resource User
28
30
 
29
31
  #### 2.2 Implement json method in your controller
30
32
  ```ruby
@@ -38,7 +40,7 @@ end
38
40
 
39
41
  #### 2.3 Set json path for your table in view
40
42
  ```html
41
- %table.table{data: { url: users_path(format: :json) }}
43
+ %table.datatable{data: { url: users_path(format: :json) }}
42
44
  %thead
43
45
  %tr
44
46
  %th #
@@ -13,7 +13,7 @@ module Rails
13
13
  def insert_jquery_datatable_js
14
14
  insert_into_file(
15
15
  'app/assets/javascripts/application.js',
16
- "\n//= require jquery\n//= require jquery.dataTables.min"
16
+ "\n//= require jquery\n//= require jquery.dataTables.min\n//= require datatable"
17
17
  )
18
18
  end
19
19
  end
@@ -1,5 +1,5 @@
1
1
  module Rails
2
2
  module Datatable
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-datatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jacky
@@ -110,10 +110,6 @@ files:
110
110
  - LICENSE.txt
111
111
  - README.md
112
112
  - Rakefile
113
- - app/assets/javascripts/application.js
114
- - app/datatables/datatable.rb
115
- - app/datatables/users_datatable.rb
116
- - app/views/users/_user.html.erb
117
113
  - bin/console
118
114
  - bin/setup
119
115
  - lib/generators/rails/datatable/install_generator.rb
@@ -148,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
144
  - !ruby/object:Gem::Version
149
145
  version: '0'
150
146
  requirements: []
151
- rubygems_version: 3.0.9
147
+ rubygems_version: 3.1.4
152
148
  signing_key:
153
149
  specification_version: 4
154
150
  summary: Simple datatable integration for Rails app
@@ -1,14 +0,0 @@
1
- // This is a manifest file that'll be compiled into application.js, which will include all the files
2
- // listed below.
3
- //
4
- // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
- // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
- //
7
- // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
- // compiled file.
9
- //
10
- // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
11
- // about supported directives.
12
- //
13
- //= require jquery
14
- //= require jquery.dataTables.min
@@ -1,81 +0,0 @@
1
- class Datatable
2
- include Rails.application.routes.url_helpers
3
-
4
- delegate :params, :raw, :h, :link_to,
5
- :number_to_currency, :text_field_tag,
6
- :check_box_tag, :current_user, :image_tag, :content_tag,
7
- :check_box_tag, :select_tag, :options_from_collection_for_select,:number_with_precision,
8
- :hidden_field_tag, :request, :render, to: :@view
9
-
10
- DEFAULT = {
11
- per_page: 10,
12
- truncate_length: 50,
13
- na: 'N/A'
14
- }
15
-
16
- def initialize(view, klass, columns_for_search: [], columns_for_sort: [], options: {})
17
- @view = view
18
- @klass = klass
19
- @columns_for_search = columns_for_search
20
- @columns_for_sort = columns_for_sort
21
- end
22
-
23
- def as_json(options = {})
24
- {
25
- sEcho: params[:sEcho].to_i,
26
- iTotalRecords: @klass.count,
27
- iTotalDisplayRecords: items.total_count,
28
- data: data
29
- }
30
- end
31
-
32
- protected
33
-
34
- def data
35
- raise NotImplementedError # Override this method in subclass
36
- end
37
-
38
- def items
39
- @items ||= fetch_items
40
- end
41
-
42
- def fetch_items
43
- items = if sort_column == '-'
44
- @klass.unscope(:order).order(:created_at => :desc)
45
- else
46
- null_order = sort_direction == 'asc' ? 'FIRST' : 'LAST'
47
- @klass.unscope(:order).order("#{sort_column} #{sort_direction} NULLS #{null_order}")
48
- end
49
-
50
- items = items.page(page).per(per_page)
51
-
52
- if params[:search].present?
53
- search_str = @columns_for_search.map{|field| "upper(cast(#{field} as text)) like upper(:search)"}.join ' or '
54
- items = items.where(search_str, search: "%#{params[:search][:value].strip}%")
55
- end
56
-
57
- if params[:sSearch].present?
58
- search_str = @columns_for_search.map{|field| "upper(cast(#{field} as text)) like upper(:search)"}.join ' or '
59
- items = items.where(search_str, search: "%#{params[:sSearch].strip}%")
60
- end
61
-
62
- items
63
- end
64
-
65
- def page
66
- (params['start'].to_i / per_page) + 1 rescue 1
67
- end
68
-
69
- def per_page
70
- params['length'].to_i rescue 10
71
- end
72
-
73
- def sort_column
74
- sort_index = params['order']['0']['column'].to_i rescue 0
75
- @columns_for_sort[sort_index]
76
- end
77
-
78
- def sort_direction
79
- params['order']['0']['dir'] rescue 'asc'
80
- end
81
- end
@@ -1,14 +0,0 @@
1
- class UsersDatatable < Datatable
2
- def initialize(view, klass)
3
- super(view, klass, columns_for_search: %w[], columns_for_sort:%w[- - - - ])
4
- end
5
-
6
- def data
7
- @items.each_with_index.map do |item, index|
8
- render(
9
- partial: 'users/user',
10
- formats: [:html],
11
- locals: { item: item, index: index}).split('</td>').map {|row| row.gsub('<td>', '')}
12
- end
13
- end
14
- end
@@ -1,2 +0,0 @@
1
- %td= index
2
- %td= item.id