dynamic_scaffold 1.4.1 → 1.7.0

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