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 +4 -4
- data/README.md +5 -0
- data/app/views/dynamic_scaffold/bootstrap/_list.html.erb +3 -3
- data/app/views/dynamic_scaffold/bootstrap/form/_row.html.erb +2 -2
- data/lib/dynamic_scaffold/controller.rb +21 -3
- data/lib/dynamic_scaffold/form/item/base.rb +5 -1
- data/lib/dynamic_scaffold/list_builder.rb +9 -0
- data/lib/dynamic_scaffold/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec4088a2da9e8c6667356e7adcbc51fca13dd76ab7be8c411b9217ebd052aa1b
|
4
|
+
data.tar.gz: 794a726dda7dde2485b0d3749e5d307f89e29c5724335e369fea0981b714c227
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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.
|
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
|
-
|
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
|
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
|
+
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:
|
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
|