formwandler 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 +4 -4
- data/lib/formwandler/field.rb +4 -20
- data/lib/formwandler/form.rb +17 -12
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2dd62e45f73ce8f70eb053af48e887d44f3fcc51
|
4
|
+
data.tar.gz: ddebd431d50447fe4306397484d272d5d5263059
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cbb4804ab0e18db419b2dce0d889a8ce0517b065a0ccdd5d306e9375ab5d59b50dddeb901b211721de135fb6faf318bc4622a6420ec983809e33690452c405b4
|
7
|
+
data.tar.gz: fe9c5ad5b420b8e760b07c396165b6595b290daf34f3fd2a9029efbf3d9d790659b5eb6c89151c471ba484e285ab1f03895e2dec6832dcff6453beae592695dc
|
data/lib/formwandler/field.rb
CHANGED
@@ -12,11 +12,7 @@ module Formwandler
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def hidden?
|
15
|
-
|
16
|
-
form.instance_exec(&field_definition.hidden)
|
17
|
-
else
|
18
|
-
field_definition.hidden
|
19
|
-
end
|
15
|
+
_evaluate_field_definition_value(:hidden)
|
20
16
|
end
|
21
17
|
|
22
18
|
def visible?
|
@@ -24,11 +20,7 @@ module Formwandler
|
|
24
20
|
end
|
25
21
|
|
26
22
|
def disabled?
|
27
|
-
|
28
|
-
form.instance_exec(&field_definition.disabled)
|
29
|
-
else
|
30
|
-
field_definition.disabled
|
31
|
-
end
|
23
|
+
_evaluate_field_definition_value(:disabled)
|
32
24
|
end
|
33
25
|
|
34
26
|
def options
|
@@ -40,19 +32,11 @@ module Formwandler
|
|
40
32
|
end
|
41
33
|
|
42
34
|
def default
|
43
|
-
|
44
|
-
form.instance_exec(&field_definition.default)
|
45
|
-
else
|
46
|
-
field_definition.default
|
47
|
-
end
|
35
|
+
_evaluate_field_definition_value(:default)
|
48
36
|
end
|
49
37
|
|
50
38
|
def delocalize
|
51
|
-
|
52
|
-
form.instance_exec(&field_definition.delocalize)
|
53
|
-
else
|
54
|
-
field_definition.delocalize
|
55
|
-
end
|
39
|
+
_evaluate_field_definition_value(:delocalize)
|
56
40
|
end
|
57
41
|
|
58
42
|
private
|
data/lib/formwandler/form.rb
CHANGED
@@ -46,15 +46,16 @@ module Formwandler
|
|
46
46
|
attr_reader :model_save_order
|
47
47
|
end
|
48
48
|
|
49
|
-
attr_reader :models, :
|
49
|
+
attr_reader :models, :controller
|
50
50
|
|
51
|
-
def initialize(models: {},
|
51
|
+
def initialize(models: {}, controller:)
|
52
52
|
@models = models.symbolize_keys
|
53
|
-
@
|
53
|
+
@controller = controller
|
54
54
|
|
55
55
|
initialize_fields
|
56
56
|
initialize_models
|
57
57
|
assign_defaults
|
58
|
+
assign_params
|
58
59
|
end
|
59
60
|
|
60
61
|
def persisted?
|
@@ -95,9 +96,7 @@ module Formwandler
|
|
95
96
|
all_valid
|
96
97
|
end
|
97
98
|
|
98
|
-
def submit
|
99
|
-
assign_attributes permitted_params(params)
|
100
|
-
|
99
|
+
def submit
|
101
100
|
if valid? && models_valid?
|
102
101
|
save_models!
|
103
102
|
load_results
|
@@ -106,7 +105,7 @@ module Formwandler
|
|
106
105
|
end
|
107
106
|
end
|
108
107
|
|
109
|
-
|
108
|
+
private
|
110
109
|
|
111
110
|
def initialize_models
|
112
111
|
end
|
@@ -118,6 +117,11 @@ module Formwandler
|
|
118
117
|
end
|
119
118
|
end
|
120
119
|
|
120
|
+
def assign_params
|
121
|
+
return unless form_params?
|
122
|
+
assign_attributes permitted_params
|
123
|
+
end
|
124
|
+
|
121
125
|
def save_models!
|
122
126
|
models.sort_by do |(name, _model)|
|
123
127
|
self.class.model_save_order&.index(name) || self.class.model_save_order&.size
|
@@ -128,15 +132,16 @@ module Formwandler
|
|
128
132
|
true
|
129
133
|
end
|
130
134
|
|
131
|
-
def
|
135
|
+
def form_params?
|
136
|
+
controller.params.fetch(model_name.param_key, {}).to_unsafe_h.any?
|
137
|
+
end
|
138
|
+
|
139
|
+
def permitted_params
|
132
140
|
visible_fields = fields.reject(&:hidden?).map(&:name)
|
133
141
|
delocalizations = fields.map(&:delocalize).compact
|
134
|
-
params
|
135
|
-
params.require(model_name.param_key).permit(*visible_fields).delocalize(delocalizations)
|
142
|
+
controller.params.require(model_name.param_key).permit(*visible_fields).delocalize(delocalizations)
|
136
143
|
end
|
137
144
|
|
138
|
-
private
|
139
|
-
|
140
145
|
def initialize_fields
|
141
146
|
@fields = self.class.field_definitions.transform_values do |field_definition|
|
142
147
|
Field.new(form: self, field_definition: field_definition)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: formwandler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Bilharz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -63,7 +63,7 @@ files:
|
|
63
63
|
- lib/formwandler/field.rb
|
64
64
|
- lib/formwandler/field_definition.rb
|
65
65
|
- lib/formwandler/form.rb
|
66
|
-
homepage:
|
66
|
+
homepage: https://github.com/sbilharz/formwandler
|
67
67
|
licenses:
|
68
68
|
- MIT
|
69
69
|
metadata: {}
|