dynamic_scaffold 1.4.1 → 1.7.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: 9ae10a391fd3152b846f405998031bff697f5cb8f18f0eaea8a8174ac1eb2622
4
- data.tar.gz: 67419c013d612ea66b47b2625af31ed4605441e2b90504115ff8514db4c940b5
3
+ metadata.gz: ec4088a2da9e8c6667356e7adcbc51fca13dd76ab7be8c411b9217ebd052aa1b
4
+ data.tar.gz: 794a726dda7dde2485b0d3749e5d307f89e29c5724335e369fea0981b714c227
5
5
  SHA512:
6
- metadata.gz: 412a04548164d48f66c93847d9369d8b7fe965d36a27c1d3507cfe707fb8ec4695f4eadb336a067b601526c9a9700a8adb751417319b6c5f9f0084c0717b59f7
7
- data.tar.gz: db36edac7a3069aec267bcbdc9d311a51ae4e9c1df92b42690cf0a52d278512d7b294b8f44b4c2fc6a4f9790440494b93b4e21346b9d46f4acc893bbb48c6ab5
6
+ metadata.gz: 56db4471671b267e0387a3bdcd5e0c16b50551f8f3b1c73c947a1f7af8db0f9f5e0aca54762d9a7b76fb36bed3baa9bc8a71cc48f32098356cf213044248cd03
7
+ data.tar.gz: 469fc969cf4b0126785538894f7cc97498d4f39d9d32c1b215c8d6733a576fae63104709fe3b997300004d251fe0e33db8e0abed45871c85169e3f1b690e0b01
data/README.md CHANGED
@@ -170,6 +170,11 @@ class ShopController < ApplicationController
170
170
  # config.list.title do |record|
171
171
  # record.name
172
172
  # end
173
+
174
+ # You can add class to list page's each row.
175
+ config.list.row_class do |record|
176
+ 'disabled' unless record.active?
177
+ end
173
178
 
174
179
  # First arg is attribute name of model.
175
180
  # Last hash arg is given to HTML attributes options.
@@ -1,6 +1,6 @@
1
1
  <%unless flash[:dynamic_scaffold_danger].nil? -%>
2
2
  <div class="alert alert-danger" role="alert">
3
- <%= flash[:dynamic_scaffold_danger] %>
3
+ <%== flash[:dynamic_scaffold_danger] %>
4
4
  </div>
5
5
  <%end%>
6
6
  <input type="hidden" class="authenticity_param_name" value="<%= request_forgery_protection_token %>">
@@ -30,8 +30,8 @@
30
30
  data-confirm-cancel="<%= t('dynamic_scaffold.message.confirm_cancel') %>"
31
31
  data-confirm-cancel-class="btn btn-outline-secondary btn-default btn-sm"
32
32
  >
33
- <%@records.each do |record|%>
34
- <li class="ds-list-row js-ds-list-row">
33
+ <%@records.each_with_index do |record, index|%>
34
+ <li class="<%= class_names('ds-list-row js-ds-list-row', dynamic_scaffold.list.row_class(record)) %>">
35
35
  <% if dynamic_scaffold.list.title? %>
36
36
  <div class="ds-list-heading"><%= dynamic_scaffold.list.title(record) %></div>
37
37
  <% end %>
@@ -3,9 +3,9 @@
3
3
  <%= elem.render(self, form) %>
4
4
  <% else %>
5
5
  <%- errors = elem.errors(form) -%>
6
- <div class="<%= class_names('form-group', 'has-error': errors.present?) %>">
6
+ <div class="<%= class_names('form-group', 'has-error': errors.present?) %>" data-name="<%= elem.unique_name %>">
7
7
  <%= elem.render_label(self, depth) %>
8
- <div>
8
+ <div class="ds-form-item">
9
9
  <%- elem.insert(:before).each do |block| -%>
10
10
  <%= self.instance_exec(@record, &block) %>
11
11
  <%-end-%>
@@ -77,10 +77,25 @@ module DynamicScaffold
77
77
  end
78
78
  end
79
79
 
80
- def update # rubocop:disable Metrics/AbcSize
80
+ def update # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
81
81
  values = update_values
82
82
  @record = find_record(dynamic_scaffold.model.primary_key => params['id'])
83
- prev_values = values.keys.map {|k| [k, @record.public_send(k)] }.to_h.with_indifferent_access
83
+ datetime_select_keys = []
84
+ prev_values = values.keys.map do |k|
85
+ # handle paramters like `start_time(1i)`
86
+ match = k.match(/(.*?)\(\d+i\)/)
87
+ if match
88
+ next if datetime_select_keys.include?(match[1])
89
+
90
+ datetime_select_keys << k = match[1]
91
+ end
92
+
93
+ # globalize
94
+ next [:translations_attributes, @record.translations] if k == 'translations_attributes'
95
+
96
+ [k, @record.public_send(k)]
97
+ end.compact.to_h.with_indifferent_access
98
+
84
99
  @record.attributes = values
85
100
  dynamic_scaffold.model.transaction do
86
101
  yield(@record, prev_values) if block_given?
@@ -92,7 +107,7 @@ module DynamicScaffold
92
107
  end
93
108
  end
94
109
 
95
- def destroy
110
+ def destroy # rubocop:disable Metrics/AbcSize
96
111
  # `Destroy` also does not support multiple primary keys too.
97
112
  record = find_record(dynamic_scaffold.model.primary_key => params['id'])
98
113
  begin
@@ -107,6 +122,9 @@ module DynamicScaffold
107
122
  flash[:dynamic_scaffold_danger] = I18n.t('dynamic_scaffold.alert.destroy.failed')
108
123
  logger.error(e)
109
124
  end
125
+
126
+ flash[:dynamic_scaffold_danger] = record.errors[:base].join('<br>') if record.errors[:base].any?
127
+
110
128
  redirect_to dynamic_scaffold_path(:index, request_queries)
111
129
  end
112
130
 
@@ -31,6 +31,10 @@ module DynamicScaffold
31
31
  @label_block = nil
32
32
  end
33
33
 
34
+ def unique_name
35
+ "#{@config.model.table_name}_#{name}"
36
+ end
37
+
34
38
  def notes?
35
39
  !@notes.empty?
36
40
  end
@@ -95,7 +99,7 @@ module DynamicScaffold
95
99
  # return label unless label.nil?
96
100
  # end
97
101
 
98
- view.tag.label(proxy_field.label, label_attrs)
102
+ view.tag.label(proxy_field.label, label_attrs) if proxy_field.label.present?
99
103
  end
100
104
 
101
105
  def extract_parameters(permitting)
@@ -7,6 +7,7 @@ module DynamicScaffold
7
7
  @order = []
8
8
  @title = nil
9
9
  @filter = nil
10
+ @row_class_block = nil
10
11
  end
11
12
 
12
13
  def pagination(options = nil)
@@ -88,5 +89,13 @@ module DynamicScaffold
88
89
  @filter = block if block_given?
89
90
  @filter
90
91
  end
92
+
93
+ def row_class(record = nil, &block)
94
+ if block_given?
95
+ @row_class_block = block
96
+ elsif record.present? && @row_class_block
97
+ @config.controller.view_context.instance_exec(record, &@row_class_block)
98
+ end
99
+ end
91
100
  end
92
101
  end
@@ -1,3 +1,3 @@
1
1
  module DynamicScaffold
2
- VERSION = '1.4.1'.freeze
2
+ VERSION = '1.7.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamic_scaffold
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masamoto Miyata
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-01 00:00:00.000000000 Z
11
+ date: 2021-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: classnames-rails-view