rails-datatable 0.1.0 → 0.1.2

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