ez-resources 0.1.2 → 0.2.0

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: ebc92d0fcd558df5916ff3a76e2a050bf8e2f23f636a9ae2c7f0cd0cc2d017a9
4
- data.tar.gz: c3edef2deeb5367ae837162831821dacd174a4aa24459b52c2f5df71ad990685
3
+ metadata.gz: 386052e063ee3b18f98da26da65840f8bdbb023ec2675b7478cbd037dcc779c8
4
+ data.tar.gz: 7e70f363241f152bff569238393c10cd9cb9038d71f7e368466fb1e3b61a04ec
5
5
  SHA512:
6
- metadata.gz: e63df64cf4285a99602dfa2cc2e1ddf8942222ee894f5eb7749ae14816ebeafe370371f6cdd6648090da163327fcabc02777d01fdc050d8892be37961e990b84
7
- data.tar.gz: 76d771724829b4b4e7998df1707924bb1ea267402a96a6971280db3ea1fdbc731629f0b2c8cdee62c6ff7a11d8965cf6f829ff4e5df79e740c1fdc0e19d0c285
6
+ metadata.gz: 00d8697327f8493a2ae24dfba5458bdd4f4c2e196fb585aa782a255e69f855e71b48b46f3b56c33bd82cad27f43efe1b2829db5925ea0c9e86a0b9dc61875aec
7
+ data.tar.gz: '059c05e2a65dde2fce7a68a4af0c698e21e674240edc93cc0cccf3c391ae8f20e01fb065dd3bcb19da50b6b04b11684563eba0e9581a009586cd52d33d6d41cf'
data/README.md CHANGED
@@ -43,7 +43,7 @@ class UsersController < ApplicationController
43
43
  config.collection_columns do
44
44
  column :email
45
45
  column :active, type: :boolean
46
- column :name, type: :link, presenter: -> (user) { user.name.humanize }
46
+ column :name, type: :link, presenter: -> (user) { user.name.humanize }, sortable: true
47
47
  column :age
48
48
  column :avatar, type: :image, getter: ->(user) { "/avatars/#{user.id}.jpg" }, class: "t-image-tag"
49
49
  column :custom, type: :custom, builder: ->(user) { "custom #{user.email}" }
@@ -17,7 +17,7 @@
17
17
  thead class=(css_for 'collection-table-thead')
18
18
  tr class=(css_for 'collection-table-thead-tr')
19
19
  - collection_columns.each do |column|
20
- th class=(css_for 'collection-table-thead-th') id=("ez-t-#{column.name}") = column.title
20
+ th class=(css_for 'collection-table-thead-th') id=("ez-t-#{column.name}") = column_title(column)
21
21
  th class=(css_for 'collection-table-thead-th') colspan="2" style="width: 1%"
22
22
  tbody class=(css_for 'collection-table-tbody')
23
23
  - collection.each do |record|
@@ -4,6 +4,7 @@ module Ez
4
4
  module Resources
5
5
  class CollectionCell < ApplicationCell
6
6
  include Pagy::Frontend
7
+ include Ransack::Helpers::FormHelper
7
8
 
8
9
  delegate :resources_name, :collection_columns, :paginator, to: :model
9
10
 
@@ -81,7 +82,12 @@ module Ez
81
82
  end
82
83
 
83
84
  def remove_link(record)
84
- # TODO
85
+ return unless model.actions.include?(:destroy)
86
+ return unless Manager::Hooks.can?(:can_destroy?, model, record)
87
+
88
+ link_to t('actions.remove'), model.path_for(action: :destroy, id: record.id),
89
+ method: :delete,
90
+ class: css_for('collection-table-td-action-item')
85
91
  end
86
92
 
87
93
  def pagination
@@ -103,6 +109,10 @@ module Ez
103
109
  end
104
110
  end
105
111
 
112
+ def column_title(column)
113
+ column.sortable ? sort_link(search, column.name, column.title) : column.title
114
+ end
115
+
106
116
  private
107
117
 
108
118
  def maybe_use_custom_boolean_presenter(bool)
@@ -110,6 +120,10 @@ module Ez
110
120
 
111
121
  instance_exec bool, &Ez::Resources.config.ui_custom_boolean_presenter
112
122
  end
123
+
124
+ def search
125
+ @search ||= model.model.ransack(model.params[:q])
126
+ end
113
127
  end
114
128
  end
115
129
  end
@@ -7,7 +7,7 @@
7
7
  - model.collection_columns.each do |field|
8
8
  - if field.searchable && SEARCHABLE_FIELDS.include?(field.type)
9
9
  = div_for 'collection-search-panel-field'
10
- = f.input field_name(field),
10
+ = f.input field_input_name(field),
11
11
  label: field_label(field),
12
12
  required: false,
13
13
  as: cast_field_type(field.type),
@@ -17,7 +17,7 @@ module Ez
17
17
  end
18
18
  end
19
19
 
20
- def field_name(field)
20
+ def field_input_name(field)
21
21
  if association?(field)
22
22
  search_key(field.name, field.search_suffix, field.options.fetch(:association))
23
23
  else
@@ -18,11 +18,12 @@ module Ez
18
18
 
19
19
  def data
20
20
  @data ||= case controller.action_name
21
- when 'index' then collection
22
- when 'new' then new_resource
23
- when 'show' then resource
24
- when 'edit' then resource
25
- when 'update' then resource
21
+ when 'index' then collection
22
+ when 'new' then new_resource
23
+ when 'show' then resource
24
+ when 'edit' then resource
25
+ when 'update' then resource
26
+ when 'destroy' then resource
26
27
  else
27
28
  raise ConfigurationError, "Invalid action #{controller.action_name}"
28
29
  end
@@ -18,6 +18,7 @@ module Ez
18
18
  :presenter,
19
19
  :builder,
20
20
  :searchable,
21
+ :sortable,
21
22
  :search_suffix,
22
23
  :options
23
24
 
@@ -35,6 +36,7 @@ module Ez
35
36
  @getter = options.delete(:getter)
36
37
  @presenter = options.delete(:presenter)
37
38
  @searchable = options.delete(:searchable) != false
39
+ @sortable = options.delete(:sortable) || false
38
40
  @search_suffix = options.delete(:search_suffix) || :cont
39
41
  @options = options # use for all other custom options
40
42
  end
@@ -89,8 +89,16 @@ module Ez
89
89
  end
90
90
  end
91
91
 
92
- # TODO: Later
93
- def destroy; end
92
+ def destroy
93
+ Manager::Hooks.can?(:can_destroy?, ez_resource_config, ez_resource_config.data)
94
+ ez_resource_config.data.delete
95
+
96
+ flash[:notice] = t('messages.removed',
97
+ resource_name: ez_resource_config.resource_name,
98
+ scope: Ez::Resources.config.i18n_scope)
99
+
100
+ redirect_to ez_resource_config.path_for(action: :index)
101
+ end
94
102
 
95
103
  private
96
104
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ez
4
4
  module Resources
5
- VERSION = '0.1.2'
5
+ VERSION = '0.2.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ez-resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Volodya Sveredyuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-28 00:00:00.000000000 Z
11
+ date: 2022-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cells-rails
@@ -73,9 +73,6 @@ dependencies:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '5.2'
76
- - - "<="
77
- - !ruby/object:Gem::Version
78
- version: '7.0'
79
76
  type: :runtime
80
77
  prerelease: false
81
78
  version_requirements: !ruby/object:Gem::Requirement
@@ -83,9 +80,6 @@ dependencies:
83
80
  - - ">="
84
81
  - !ruby/object:Gem::Version
85
82
  version: '5.2'
86
- - - "<="
87
- - !ruby/object:Gem::Version
88
- version: '7.0'
89
83
  - !ruby/object:Gem::Dependency
90
84
  name: ransack
91
85
  requirement: !ruby/object:Gem::Requirement
@@ -198,6 +192,20 @@ dependencies:
198
192
  - - ">="
199
193
  - !ruby/object:Gem::Version
200
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: orderly
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
201
209
  - !ruby/object:Gem::Dependency
202
210
  name: pry-rails
203
211
  requirement: !ruby/object:Gem::Requirement