dynamic_fieldsets 0.1.15 → 0.1.16
Sign up to get free protection for your applications and to get access to all the features.
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.16
|
@@ -186,7 +186,12 @@ module DynamicFieldsetsHelper
|
|
186
186
|
# @return [String] The javascript variable that shows what fields have dependencies
|
187
187
|
def javascript_renderer(fsa)
|
188
188
|
unless fsa.id == nil
|
189
|
-
rendered_javascript = "<script type='text/javascript'>
|
189
|
+
rendered_javascript = "<script type='text/javascript'>
|
190
|
+
if ( typeof dynamic_fieldsets_dependencies == 'undefined' ){
|
191
|
+
var dynamic_fieldsets_dependencies = #{fsa.dependency_child_hash.to_json};
|
192
|
+
} else {
|
193
|
+
$.extend(dynamic_fieldsets_dependencies, #{fsa.dependency_child_hash.to_json});
|
194
|
+
}</script>"
|
190
195
|
rendered_javascript += render "dynamic_fieldsets/shared/javascript_watcher"
|
191
196
|
return rendered_javascript.html_safe
|
192
197
|
else
|
@@ -84,7 +84,8 @@ module DynamicFieldsets
|
|
84
84
|
output[fieldset_child.id] = {}
|
85
85
|
fieldset_child.dependencies.each do |dependency|
|
86
86
|
dependency_group = dependency.dependency_clause.dependency_group
|
87
|
-
output[fieldset_child.id][dependency_group.id] = dependency_group.to_hash
|
87
|
+
output[fieldset_child.id][dependency_group.id] = dependency_group.to_hash
|
88
|
+
output[fieldset_child.id][dependency_group.id][:fieldset_associators] = dependency_group.fieldset_child.fieldset.fieldset_associators.collect(&:id)
|
88
89
|
end
|
89
90
|
end
|
90
91
|
return output
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<script type='text/javascript'>
|
2
2
|
|
3
3
|
// The only inputs we care about are visible... not hidden
|
4
|
-
var all_inputs = $(":input:not(:hidden)").add("p[id^='fsa']");
|
4
|
+
var all_inputs = $(":input:not(:hidden)[id^=fsa]").add("p[id^='fsa']");
|
5
5
|
|
6
6
|
//Return the fieldset child id for the input
|
7
7
|
//This uniquely associated the fieldset child with the fieldset associator
|
@@ -103,7 +103,6 @@ all_inputs.change( function() {
|
|
103
103
|
field = $(this);
|
104
104
|
var type = get_field_type(field);
|
105
105
|
var fieldset_child_id = get_fieldset_child_id(field, type)
|
106
|
-
var fieldset_associator_id = get_fieldset_associator_id(field);
|
107
106
|
|
108
107
|
var user_inputs = {}
|
109
108
|
$.each(all_inputs, function(index, input){
|
@@ -111,10 +110,11 @@ all_inputs.change( function() {
|
|
111
110
|
var all_fieldset_child_id = get_fieldset_child_id($(input), all_type)
|
112
111
|
user_inputs[all_fieldset_child_id] = get_input_value($(input), all_type);
|
113
112
|
});
|
114
|
-
|
113
|
+
|
115
114
|
if (fieldset_child_id in dynamic_fieldsets_dependencies) {
|
116
115
|
$.each(dynamic_fieldsets_dependencies[fieldset_child_id], function(index, group) {
|
117
|
-
|
116
|
+
fieldset_associator_ids = dynamic_fieldsets_dependencies[fieldset_child_id][index]["fieldset_associators"];
|
117
|
+
update_dependency_group_for_fieldset_child(fieldset_child_id, group, user_inputs, fieldset_associator_ids);
|
118
118
|
});
|
119
119
|
}
|
120
120
|
});
|
@@ -122,12 +122,15 @@ all_inputs.change( function() {
|
|
122
122
|
// checks the clauses for a dependency group and runs the action
|
123
123
|
// group: the dependency group
|
124
124
|
// user_input: the input from the form
|
125
|
-
function update_dependency_group_for_fieldset_child(fieldset_child_id, group, user_inputs,
|
125
|
+
function update_dependency_group_for_fieldset_child(fieldset_child_id, group, user_inputs, fieldset_associator_ids) {
|
126
126
|
var action = group['action'];
|
127
127
|
var group_fsc_id = group['fieldset_child_id'];
|
128
128
|
var group_field_id = group['field_id'];
|
129
|
-
var
|
130
|
-
|
129
|
+
var group_fields = []
|
130
|
+
$.each(fieldset_associator_ids, function(index, fsa_id) {
|
131
|
+
group_fields[index] = '<%= DynamicFieldsets.config.form_fieldset_associator_prefix %>' + fsa_id + '_' + '<%=DynamicFieldsets.config.form_field_prefix %>' + group_fsc_id;
|
132
|
+
});
|
133
|
+
dependency_action(all_dependency_clauses_true(fieldset_child_id, group, user_inputs), action, group_fields, 0 )
|
131
134
|
}
|
132
135
|
|
133
136
|
//all dependencies clauses are ANDed
|
@@ -197,32 +200,34 @@ function evaluate_dependency(user_value, relationship, stored_value) {
|
|
197
200
|
// success_flag: whether the dependency group returned true or false
|
198
201
|
// action: the type of update to apply to the field
|
199
202
|
// group_field: the field to update (generally not the field that triggered the change)
|
200
|
-
function dependency_action(success_flag, action,
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
switch(action)
|
211
|
-
{
|
212
|
-
case 'show':
|
213
|
-
$('[id$=' + group_field +']').hide();
|
214
|
-
case 'enable':
|
215
|
-
$('#' + group_field + ' :input').attr('disabled', true);
|
216
|
-
}
|
203
|
+
function dependency_action(success_flag, action, group_fields, counter) {
|
204
|
+
$.each(group_fields, function(index, group_field){
|
205
|
+
if (success_flag){
|
206
|
+
switch(action)
|
207
|
+
{
|
208
|
+
case 'show':
|
209
|
+
$('[id$=' + group_field +']').show();
|
210
|
+
case 'enable':
|
211
|
+
$('#' + group_field + ' :input').removeAttr('disabled');
|
212
|
+
}
|
217
213
|
|
218
|
-
|
214
|
+
} else {
|
215
|
+
switch(action)
|
216
|
+
{
|
217
|
+
case 'show':
|
218
|
+
$('[id$=' + group_field +']').hide();
|
219
|
+
case 'enable':
|
220
|
+
$('#' + group_field + ' :input').attr('disabled', true);
|
221
|
+
}
|
222
|
+
|
223
|
+
clear_unused_fields(group_field)
|
219
224
|
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
225
|
+
//save from infinite recursion, only goes as deep as there are dependency groups
|
226
|
+
if( counter < Object.keys(dynamic_fieldsets_dependencies).length ) {
|
227
|
+
nested_dependencies(success_flag, action, group_field, counter)
|
228
|
+
}
|
229
|
+
}
|
230
|
+
});
|
226
231
|
};
|
227
232
|
|
228
233
|
function clear_unused_fields(group_field) {
|
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.16"
|
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 = "2013-08-
|
12
|
+
s.date = "2013-08-15"
|
13
13
|
s.description = "Dynamic fieldsets for rails controllers"
|
14
14
|
s.email = "jeremiah@cloudspace.com"
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynamic_fieldsets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.16
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-08-
|
14
|
+
date: 2013-08-15 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
@@ -520,7 +520,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
520
520
|
version: '0'
|
521
521
|
segments:
|
522
522
|
- 0
|
523
|
-
hash:
|
523
|
+
hash: 433715359672350075
|
524
524
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
525
525
|
none: false
|
526
526
|
requirements:
|