dynamic_fieldsets 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +9 -0
- data/VERSION +1 -1
- data/app/helpers/dynamic_fieldsets_helper.rb +3 -5
- data/app/models/dynamic_fieldsets/dependency.rb +1 -0
- data/app/models/dynamic_fieldsets/fieldset_associator.rb +23 -25
- data/app/views/dynamic_fieldsets/shared/_fieldset_footer.html.erb +2 -0
- data/app/views/dynamic_fieldsets/shared/_fieldset_header.html.erb +3 -0
- data/dynamic_fieldsets.gemspec +4 -2
- data/lib/dynamic_fieldsets/dynamic_fieldsets_in_model.rb +24 -4
- metadata +5 -3
data/CHANGELOG
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
== unreleased changes
|
2
2
|
|
3
|
+
== 0.1.5
|
4
|
+
|
5
|
+
* Fixed a missing association in the dependency model to the dependency clause model
|
6
|
+
* Fixed a major issue in the dependency code where only the first dependency on the form would load
|
7
|
+
* Added a new option to the model mixin called initialize_on_create. When set to true, it creates the fieldset associators when the model instance is created.
|
8
|
+
* Moved the fieldset header and footer to partials so they can be overridden
|
9
|
+
|
10
|
+
== 0.1.4
|
11
|
+
|
3
12
|
* Removed unloadable from the controllers because they were causing an issue when the controller generator was run
|
4
13
|
* Updated the fieldset children manager page to show any type of field
|
5
14
|
* Updated dependency system model validations so that they trigger correctly on create
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
@@ -88,9 +88,8 @@ module DynamicFieldsetsHelper
|
|
88
88
|
# @param [Hash] values Stored values for the fieldset
|
89
89
|
# @return [Array] The HTML elements for the fieldset
|
90
90
|
def fieldset_renderer(fsa, fieldset, values, form_type)
|
91
|
-
lines = [
|
92
|
-
lines.push "
|
93
|
-
lines.push "<ol>"
|
91
|
+
lines = []
|
92
|
+
lines.push render(:partial => "/dynamic_fieldsets/shared/fieldset_header", :locals => {:fieldset => fieldset})
|
94
93
|
|
95
94
|
# this returns field/fieldset objects rather than fieldset children
|
96
95
|
# that is why this code looks like it is accessing odd objects
|
@@ -103,8 +102,7 @@ module DynamicFieldsetsHelper
|
|
103
102
|
end
|
104
103
|
end
|
105
104
|
|
106
|
-
lines.push "
|
107
|
-
lines.push "</div>"
|
105
|
+
lines.push render(:partial => "/dynamic_fieldsets/shared/fieldset_footer", :locals => {:fieldset => fieldset})
|
108
106
|
|
109
107
|
return lines
|
110
108
|
end
|
@@ -72,46 +72,44 @@ module DynamicFieldsets
|
|
72
72
|
end
|
73
73
|
|
74
74
|
|
75
|
-
#
|
75
|
+
# Converts the list of fields with dependencies generated by the look_for_dependents method into a hash
|
76
|
+
# The hash contains the actual dependencies for the list of fields that have them
|
76
77
|
#
|
77
|
-
#
|
78
|
-
#
|
79
|
-
# @params - stuff
|
80
|
-
# @returns - other stuff
|
78
|
+
# @return [Hash] dependent fields for fields in the fieldset
|
81
79
|
def dependency_child_hash
|
82
|
-
|
83
|
-
|
84
|
-
|
80
|
+
fieldset_child_collection = look_for_dependents(self.fieldset)
|
81
|
+
|
85
82
|
output = {}
|
86
|
-
|
83
|
+
fieldset_child_collection.each do |fieldset_child|
|
87
84
|
output[fieldset_child.id] = {}
|
88
|
-
|
85
|
+
fieldset_child.dependencies.each do |dependency|
|
89
86
|
dependency_group = dependency.dependency_clause.dependency_group
|
90
87
|
output[fieldset_child.id][dependency_group.id] = dependency_group.to_hash
|
91
88
|
end
|
92
89
|
end
|
93
|
-
output
|
90
|
+
return output
|
94
91
|
end
|
95
92
|
|
96
93
|
|
97
|
-
#
|
94
|
+
# Gets a list of fields in the given fieldset that have dependencies
|
95
|
+
# I am not exactly sure why this method is necessary (JH 3-8-2012)
|
96
|
+
# It seems like we could just make the dependency_child_hash method run recursively
|
98
97
|
#
|
99
|
-
#
|
100
|
-
#
|
101
|
-
# @params - stuff
|
102
|
-
# @returns - other stuff
|
98
|
+
# @param parent_fieldset [DynamicFieldsets::Fieldset] The fieldset to check inside of
|
99
|
+
# @return [Array] The list of fields with dependencies
|
103
100
|
def look_for_dependents(parent_fieldset)
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
101
|
+
output = []
|
102
|
+
parent_fieldset.fieldset_children.each do |fieldset_child|
|
103
|
+
if fieldset_child.child_type == "DynamicFieldsets::Field"
|
104
|
+
if !fieldset_child.dependencies.empty?
|
105
|
+
output.push fieldset_child
|
106
|
+
# else then next
|
107
|
+
end
|
108
|
+
else # if child type is a fieldset, then recurse
|
109
|
+
output += look_for_dependents(fieldset_child.child)
|
112
110
|
end
|
113
111
|
end
|
112
|
+
return output
|
114
113
|
end
|
115
|
-
|
116
114
|
end
|
117
115
|
end
|
data/dynamic_fieldsets.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "dynamic_fieldsets"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jeremiah Hemphill", "Ethan Pemble", "John Carter"]
|
12
|
-
s.date = "2012-03-
|
12
|
+
s.date = "2012-03-12"
|
13
13
|
s.description = "Dynamic fieldsets for rails controllers"
|
14
14
|
s.email = "jeremiah@cloudspace.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -90,6 +90,8 @@ Gem::Specification.new do |s|
|
|
90
90
|
"app/views/dynamic_fieldsets/form_partials/_select_field.html.erb",
|
91
91
|
"app/views/dynamic_fieldsets/form_partials/_text_field.html.erb",
|
92
92
|
"app/views/dynamic_fieldsets/form_partials/_textarea_field.html.erb",
|
93
|
+
"app/views/dynamic_fieldsets/shared/_fieldset_footer.html.erb",
|
94
|
+
"app/views/dynamic_fieldsets/shared/_fieldset_header.html.erb",
|
93
95
|
"app/views/dynamic_fieldsets/shared/_javascript_watcher.html.erb",
|
94
96
|
"app/views/dynamic_fieldsets/shared/_nested_model_javascript.html.erb",
|
95
97
|
"app/views/dynamic_fieldsets/show_partials/_show_incomplete.html.erb",
|
@@ -16,22 +16,32 @@ module DynamicFieldsets
|
|
16
16
|
# fieldset as the key:
|
17
17
|
# :child_form => {options}
|
18
18
|
# Options:
|
19
|
-
#
|
20
|
-
#
|
19
|
+
# fieldset (mandatory): The unique name of the fieldset the class is associated with
|
20
|
+
# multiple (optional): Boolean value to allow multiple answer sets for the same fieldset in the class.
|
21
21
|
# Deafult to false. Not curently implemented (7-25-2011).
|
22
|
+
# initialize_on_create (optional): Create the fieldste associator after create
|
22
23
|
#
|
23
24
|
# @param [Hash] args A hash of arguments for the fieldsets.
|
24
25
|
def acts_as_dynamic_fieldset(args)
|
25
26
|
mattr_accessor :dynamic_fieldsets unless self.respond_to?(:dynamic_fieldsets)
|
26
27
|
self.dynamic_fieldsets = {} unless self.dynamic_fieldsets.is_a?(Hash)
|
27
28
|
|
29
|
+
# default values for the arguments
|
30
|
+
# fieldset is mandatory
|
31
|
+
defaults = {
|
32
|
+
:multiple => false,
|
33
|
+
:initialize_on_create => false
|
34
|
+
}
|
35
|
+
|
28
36
|
args.each_pair do |key, value|
|
29
|
-
|
37
|
+
value_with_defaults = defaults.merge(value)
|
38
|
+
self.dynamic_fieldsets[key] = value_with_defaults
|
30
39
|
end
|
31
40
|
|
32
41
|
# hacky system to save fieldset values
|
33
42
|
# needs to be refactored and tested
|
34
43
|
mattr_accessor :dynamic_fieldset_values unless self.respond_to?(:dynamic_fieldset_values)
|
44
|
+
after_create :initialize_fieldset_associators
|
35
45
|
after_save :save_dynamic_fieldsets
|
36
46
|
|
37
47
|
include DynamicFieldsets::DynamicFieldsetsInModel::InstanceMethods
|
@@ -39,6 +49,16 @@ module DynamicFieldsets
|
|
39
49
|
end
|
40
50
|
|
41
51
|
module InstanceMethods
|
52
|
+
|
53
|
+
# If the fieldset is set to initialize_on_create, then attempt to create the fsa
|
54
|
+
def initialize_fieldset_associators
|
55
|
+
self.dynamic_fieldsets.each_pair do |key, options|
|
56
|
+
if options[:initialize_on_create]
|
57
|
+
fsa = fieldset_associator(key)
|
58
|
+
fsa.save if fsa.new_record?
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
42
62
|
|
43
63
|
# Overrides the ActiveModel Validations run_validations! method
|
44
64
|
# It additionally adds validations for the fields that are required
|
@@ -149,7 +169,7 @@ module DynamicFieldsets
|
|
149
169
|
end
|
150
170
|
return post
|
151
171
|
end
|
152
|
-
|
172
|
+
|
153
173
|
# Given the form values, finds the keys that correspond to fieldsets
|
154
174
|
# then passes the value for the key to the fieldset associator object for saving into individual field records
|
155
175
|
def save_dynamic_fieldsets
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: dynamic_fieldsets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jeremiah Hemphill
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2012-03-
|
15
|
+
date: 2012-03-12 00:00:00 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rails
|
@@ -295,6 +295,8 @@ files:
|
|
295
295
|
- app/views/dynamic_fieldsets/form_partials/_select_field.html.erb
|
296
296
|
- app/views/dynamic_fieldsets/form_partials/_text_field.html.erb
|
297
297
|
- app/views/dynamic_fieldsets/form_partials/_textarea_field.html.erb
|
298
|
+
- app/views/dynamic_fieldsets/shared/_fieldset_footer.html.erb
|
299
|
+
- app/views/dynamic_fieldsets/shared/_fieldset_header.html.erb
|
298
300
|
- app/views/dynamic_fieldsets/shared/_javascript_watcher.html.erb
|
299
301
|
- app/views/dynamic_fieldsets/shared/_nested_model_javascript.html.erb
|
300
302
|
- app/views/dynamic_fieldsets/show_partials/_show_incomplete.html.erb
|
@@ -429,7 +431,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
429
431
|
requirements:
|
430
432
|
- - ">="
|
431
433
|
- !ruby/object:Gem::Version
|
432
|
-
hash: -
|
434
|
+
hash: -964161402791124361
|
433
435
|
segments:
|
434
436
|
- 0
|
435
437
|
version: "0"
|