active_scaffold_config_list 3.5.0 → 3.5.1

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: a83952873751f4e7149b4e05e87d2e10cd6d36d6554578e50839d590f89233be
4
- data.tar.gz: 6aa24c34a3a32f89238d70974bf509e21c8db01fbb54e66a25d22ceff0b5e0bc
3
+ metadata.gz: be3b1357610333757d013332316debd39b636bb7f690a3cf57ed27088faf9abe
4
+ data.tar.gz: 8940de8dc18e5575c74ed3604ddd22dfa6b06abf9a04503d1ffb2335858eb36c
5
5
  SHA512:
6
- metadata.gz: 7dba2ca3fe3875206b92b44c9f18bf3e7f1b0ba1cc08eb49e7cf1441eba9763aed4307b8cbfa68ac4fb9ace1d05efa1352d434500c55ea6642ed95f64c236c0f
7
- data.tar.gz: b92ffd411117506b501bf1133b3777e6ce93307f1b5bee06d5de9dbc2e938dc3bfae821e941e09ce8450688a9eacb0633c08ea832a025d6e508b7776afbb853d
6
+ metadata.gz: 8171e1910707eca649a41a9df49b7c4333be31a65fde1d9ddfc083c19f92dabc76fd5fef0f5cd3b8f245b5a252033484a3b559a2ccd78a324247042de32ae776
7
+ data.tar.gz: 6582db9e3c46b42c21330c4b67d0d726e6d55395db2e091849a59de9d09ff73b2b4ae261a2a6592819ffd7e9e7f308ca84660e57b35acbbe9b7daca05b40d73f
data/README.md ADDED
@@ -0,0 +1,84 @@
1
+ This works with Rails >= 4.0 and ActiveScaffold >= 3.4.4
2
+ Version 3.3.x worked with Rails 3.2 and ActiveScaffold >= 3.4.4
3
+ Version 3.2.x worked with Rails 3.2 and ActiveScaffold >= 3.3.0
4
+
5
+ Usage:
6
+
7
+ ```rb
8
+ active_scaffold :model do |conf|
9
+ conf.actions.add :config_list
10
+ end
11
+ ````
12
+
13
+
14
+ Overview
15
+ ========
16
+
17
+ A plugin for Active Scaffold that provides the ability to choose the column to show in the scaffold list at run-time.
18
+
19
+ You have the option of defining a default set of columns for the controller. For example:
20
+ ```rb
21
+ config.config_list.default_columns = [:name, :project, :amount]
22
+ ```
23
+ If this is not defined then active_scaffold_config.list.columns is used.
24
+
25
+ This is useful when you want the option to look at a potentially large number of columns but be able to
26
+ easily reset back to something that fits on the screen without horizontal scrolling.
27
+
28
+ The available columns in the configure action are the columns defined in `list.columns`. For that reason, if
29
+ `config_list.default_columns` is not defined, then it will default to `list.columns`, and the users only will be able
30
+ to remove some columns, they won't be able to add other columns.
31
+
32
+ The configuration data will be saved on the session. It can be saved on the DB defining a method on the user model
33
+ (the one returned by current_user method) to return a record for current controller, or empty record if user has no
34
+ list configuration, and setting config_list to use that method.
35
+
36
+ ```rb
37
+ conf.config_list.save_to_user = :config_list_for
38
+ ```
39
+
40
+ The model storing list configuration must have a config_list text column storing the columns list, and config_list_sort
41
+ serialized text column. For example:
42
+
43
+ ```rb
44
+ # == Schema Information
45
+ #
46
+ # Table name: list_configurations
47
+ #
48
+ # id :bigint not null, primary key
49
+ # config_list :text
50
+ # config_list_sorting :text
51
+ # created_at :datetime not null
52
+ # updated_at :datetime not null
53
+ # controller_id :string(255)
54
+ # user_id :bigint
55
+ #
56
+ # Indexes
57
+ #
58
+ # index_list_configurations_on_user_id (user_id)
59
+ #
60
+
61
+ class ListConfiguration < ApplicationRecord
62
+ belongs_to :user
63
+ serialize :config_list_sorting, JSON
64
+ end
65
+ ```
66
+
67
+ Then in the User model, define the association, and the method returning the config list for the requested controller.
68
+ The method has 2 arguments, `controller_id` and `controller_name`, so only need to save one of them, depending if user
69
+ configuration must be shared on different conditions for embedded controllers, and each parent for nested controllers,
70
+ or save unique configurations. The `controller_id` argument will be different in embedded controllers, nested controllers
71
+ and regular controllers, as it will use `active_scaffold_session_storage_key`, and the controller_name will be the same
72
+ always.
73
+
74
+ ```rb
75
+ class User < ActiveRecord::Base
76
+ has_many :list_configurations
77
+ def config_list_for(controller_id, controller_name)
78
+ # Use controller_id to allow having different columns on different nested or embedded conditions
79
+ list_configurations.where(controller_id: controller_id).first_or_initialize
80
+ # Or use controller_name for one configuration for the controller, even embedded or nested
81
+ list_configurations.where(controller_id: controller_name).first_or_initialize
82
+ end
83
+ end
84
+ ```
@@ -4,17 +4,6 @@ module ActiveScaffold::Actions
4
4
  def self.included(base)
5
5
  base.before_action :store_config_list_params, :set_default_sorting, :only => [:index]
6
6
  base.helper_method :config_list_params, :config_list_sorting
7
- base.extend ClassMethods
8
- end
9
-
10
- module ClassMethods
11
- def config_list_session_storage_method
12
- @config_list_session_storage_method
13
- end
14
-
15
- def config_list_session_storage_method=(value)
16
- @config_list_session_storage_method = value
17
- end
18
7
  end
19
8
 
20
9
  def show_config_list
@@ -57,12 +46,16 @@ module ActiveScaffold::Actions
57
46
  end
58
47
 
59
48
  def config_list_session_storage_method
60
- respond_to?(:custom_config_list_session_storage) ? :custom_config_list_session_storage : :active_scaffold_session_storage
49
+ @config_list_session_storage_method ||=
50
+ if respond_to?(:custom_config_list_session_storage)
51
+ :custom_config_list_session_storage
52
+ else
53
+ :active_scaffold_session_storage
54
+ end
61
55
  end
62
56
 
63
57
  def config_list_session_storage
64
- self.class.config_list_session_storage_method = self.config_list_session_storage_method unless self.class.config_list_session_storage_method
65
- send(self.class.config_list_session_storage_method)
58
+ send(config_list_session_storage_method)
66
59
  end
67
60
 
68
61
  def active_scaffold_current_user
@@ -77,7 +70,6 @@ module ActiveScaffold::Actions
77
70
  config_list_session_storage['config_list_sorting'] = nil
78
71
  end
79
72
  active_scaffold_config.list.user['sort'] = nil
80
- logger.debug "list #{active_scaffold_config.list.sorting.object_id}"
81
73
  @config_list_params = nil
82
74
  @config_list_sorting = nil
83
75
  end
@@ -99,7 +91,7 @@ module ActiveScaffold::Actions
99
91
  def objects_for_etag
100
92
  # only override when list_columns is called, so
101
93
  if @list_columns && config_list_record
102
- @last_modified = [@last_modified, config_list_record.updated_at].compact.maximum if config_list_record.respond_to? :updated_at
94
+ @last_modified = [@last_modified, config_list_record.updated_at].compact.max if config_list_record.respond_to? :updated_at
103
95
  objects = super
104
96
  if objects.is_a? Hash
105
97
  objects.merge(:etag => [objects[:etag], config_list_record])
@@ -2,7 +2,7 @@ module ActiveScaffoldConfigList
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 5
5
- PATCH = 0
5
+ PATCH = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_scaffold_config_list
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 3.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Cambra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-05 00:00:00.000000000 Z
11
+ date: 2024-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_scaffold
@@ -43,10 +43,10 @@ email: activescaffold@googlegroups.com
43
43
  executables: []
44
44
  extensions: []
45
45
  extra_rdoc_files:
46
- - README
46
+ - README.md
47
47
  files:
48
48
  - LICENSE.txt
49
- - README
49
+ - README.md
50
50
  - app/views/active_scaffold_overrides/_show_config_list_form.html.erb
51
51
  - app/views/active_scaffold_overrides/_show_config_list_form_body.html.erb
52
52
  - app/views/active_scaffold_overrides/show_config_list_form.html.erb
data/README DELETED
@@ -1,28 +0,0 @@
1
- This works with Rails >= 4.0 and ActiveScaffold >= 3.4.4
2
- Version 3.3.x worked with Rails 3.2 and ActiveScaffold >= 3.4.4
3
- Version 3.2.x worked with Rails 3.2 and ActiveScaffold >= 3.3.0
4
-
5
- Usage:
6
- active_scaffold :model do |conf|
7
- conf.actions.add :config_list
8
- end
9
-
10
-
11
- Overview
12
-
13
- A plugin for Active Scaffold that provides the ability to choose the column to show in the scaffold list at run-time
14
-
15
- The configuration data will be saved on the session. It can be saved on the DB defining a method to return a record
16
- for current controller, or empty record if user has no list configuration, and setting config_list to use that method.
17
-
18
- conf.config_list.save_to_user = :config_list_for
19
-
20
- class User < ActiveRecord::Base
21
- has_many :list_configurations
22
- def config_list_for(controller_id, controller_name)
23
- list_configurations.where(:controller_id => controller_id).first_or_initialize # different columns on different nested or embedded conditions
24
- list_configurations.where(:controller_id => controller_name).first_or_initialize # one configuration for the controller, even embedded or nested
25
- end
26
- end
27
-
28
- The model storing list configuration must have a config_list text column storing the config list, and config_list_sort serialized text column.