surveyor_gui 0.0.3
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 +7 -0
- data/.gitignore +44 -0
- data/.travis.yml +17 -0
- data/Gemfile +7 -0
- data/LICENSE +21 -0
- data/MIT-LICENSE +20 -0
- data/README.md +159 -0
- data/Rakefile +66 -0
- data/app/controllers/answers_controller.rb +3 -0
- data/app/controllers/application_controller.rb +3 -0
- data/app/controllers/dependencys_controller.rb +286 -0
- data/app/controllers/question_groups_controller.rb +84 -0
- data/app/controllers/questions_controller.rb +187 -0
- data/app/controllers/survey_sections_controller.rb +80 -0
- data/app/controllers/surveyforms_controller.rb +4 -0
- data/app/controllers/surveyor_controller.rb +89 -0
- data/app/controllers/surveyor_gui/reports_controller.rb +339 -0
- data/app/controllers/surveyor_gui/responses_controller.rb +39 -0
- data/app/controllers/surveyor_gui/survey_controller.rb +16 -0
- data/app/facades/report_formatter.rb +44 -0
- data/app/facades/report_preview_wrapper.rb +11 -0
- data/app/facades/report_response_generator.rb +147 -0
- data/app/helpers/application_helper.rb +2 -0
- data/app/helpers/dependency_helper.rb +5 -0
- data/app/helpers/question_helper.rb +22 -0
- data/app/helpers/surveyform_helper.rb +179 -0
- data/app/helpers/surveyor_gui/report_helper.rb +19 -0
- data/app/helpers/surveyor_helper.rb +4 -0
- data/app/inputs/currency_input.rb +5 -0
- data/app/inputs/date_picker_input.rb +7 -0
- data/app/inputs/datetime_picker_input.rb +5 -0
- data/app/inputs/percent_input.rb +5 -0
- data/app/inputs/time_picker_input.rb +5 -0
- data/app/mailers/.gitkeep +0 -0
- data/app/models/.gitkeep +0 -0
- data/app/models/answer.rb +4 -0
- data/app/models/column.rb +3 -0
- data/app/models/dependency.rb +4 -0
- data/app/models/dependency_condition.rb +4 -0
- data/app/models/permitted_params_decorator.rb +80 -0
- data/app/models/question.rb +4 -0
- data/app/models/question_group.rb +4 -0
- data/app/models/question_type.rb +7 -0
- data/app/models/response.rb +4 -0
- data/app/models/response_set.rb +4 -0
- data/app/models/row.rb +3 -0
- data/app/models/survey.rb +4 -0
- data/app/models/survey_section.rb +4 -0
- data/app/models/surveyform.rb +103 -0
- data/app/uploaders/blob_uploader.rb +48 -0
- data/app/views/dependencys/_column.html.erb +1 -0
- data/app/views/dependencys/_dependency.html.erb +22 -0
- data/app/views/dependencys/_dependency_condition_fields.html.erb +48 -0
- data/app/views/dependencys/_form.html.erb +20 -0
- data/app/views/dependencys/blank.html.erb +0 -0
- data/app/views/dependencys/edit.html.erb +1 -0
- data/app/views/dependencys/new.html.erb +1 -0
- data/app/views/layouts/application.html.erb +14 -0
- data/app/views/layouts/surveyor_gui_blank.html.erb +12 -0
- data/app/views/layouts/surveyor_gui_default.html.erb +16 -0
- data/app/views/layouts/surveyor_modified.html.erb +14 -0
- data/app/views/partials/_answer.html.haml +33 -0
- data/app/views/partials/_question.html.haml +33 -0
- data/app/views/partials/_question_group.html.haml +73 -0
- data/app/views/partials/_section.html.haml +13 -0
- data/app/views/question_groups/_form.html.erb +56 -0
- data/app/views/question_groups/_group_inline_field.html.erb +21 -0
- data/app/views/question_groups/_group_inline_fields.html.erb +25 -0
- data/app/views/question_groups/blank.html.erb +0 -0
- data/app/views/question_groups/edit.html.erb +1 -0
- data/app/views/question_groups/new.html.erb +1 -0
- data/app/views/questions/_answer_fields.html.erb +23 -0
- data/app/views/questions/_answer_options.html.erb +28 -0
- data/app/views/questions/_form.html.erb +65 -0
- data/app/views/questions/_grid_dropdown_columns.html.erb +10 -0
- data/app/views/questions/_grid_dropdown_fields.html.erb +42 -0
- data/app/views/questions/_grid_fields.html.erb +9 -0
- data/app/views/questions/_no_picks.html.erb +29 -0
- data/app/views/questions/_pick.html +21 -0
- data/app/views/questions/_picks.html.erb +12 -0
- data/app/views/questions/blank.html.erb +0 -0
- data/app/views/questions/edit.html.erb +1 -0
- data/app/views/questions/new.html.erb +1 -0
- data/app/views/survey_sections/_form.html.erb +13 -0
- data/app/views/survey_sections/blank.html.erb +0 -0
- data/app/views/survey_sections/edit.html.erb +1 -0
- data/app/views/survey_sections/new.html.erb +1 -0
- data/app/views/surveyforms/_form.html.erb +50 -0
- data/app/views/surveyforms/_question_field.html.erb +148 -0
- data/app/views/surveyforms/_question_group.html.erb +116 -0
- data/app/views/surveyforms/_question_group_fields.html.erb +3 -0
- data/app/views/surveyforms/_question_name_and_number.html.erb +6 -0
- data/app/views/surveyforms/_question_section.html.erb +15 -0
- data/app/views/surveyforms/_question_wrapper.html.erb +109 -0
- data/app/views/surveyforms/_survey_section_fields.html.erb +138 -0
- data/app/views/surveyforms/clone_survey.html.erb +13 -0
- data/app/views/surveyforms/edit.html.erb +5 -0
- data/app/views/surveyforms/index.html.erb +40 -0
- data/app/views/surveyforms/new.html.erb +1 -0
- data/app/views/surveyforms/show.html.erb +5 -0
- data/app/views/surveyor_gui/reports/_graphs.html.haml +21 -0
- data/app/views/surveyor_gui/reports/_grid.html.haml +42 -0
- data/app/views/surveyor_gui/reports/_grid_dropdown.html.haml +56 -0
- data/app/views/surveyor_gui/reports/_repeater.html.haml +28 -0
- data/app/views/surveyor_gui/reports/_show_report.html.haml +33 -0
- data/app/views/surveyor_gui/reports/_single_question.html.haml +70 -0
- data/app/views/surveyor_gui/reports/show.html.erb +14 -0
- data/app/views/surveyor_gui/responses/_grid.html.haml +20 -0
- data/app/views/surveyor_gui/responses/_grid_dropdown.html.haml +20 -0
- data/app/views/surveyor_gui/responses/_repeater.html.haml +22 -0
- data/app/views/surveyor_gui/responses/_survey_results.html.haml +40 -0
- data/app/views/surveyor_gui/responses/index.html.haml +24 -0
- data/app/views/surveyor_gui/responses/show.html.haml +42 -0
- data/app/views/surveyor_gui/shared/_grid_comments.html.haml +10 -0
- data/app/views/surveyor_gui/shared/_new_line.html.haml +2 -0
- data/app/views/surveyor_gui/shared/_pick_comments.html.haml +15 -0
- data/app/views/surveyor_gui/shared/_question_number.html.haml +9 -0
- data/app/views/surveyor_gui/shared/_report_data.html.haml +24 -0
- data/app/views/surveyor_gui/shared/_stars_report_data.html.haml +14 -0
- data/config.ru +4 -0
- data/config/environment.rb +0 -0
- data/config/routes.rb +71 -0
- data/db/migrate/20140307204049_add_template_to_surveys.rb +5 -0
- data/db/migrate/20140307235607_add_test_data_to_response_sets.rb +5 -0
- data/db/migrate/20140308171947_add_original_choice_to_answers.rb +5 -0
- data/db/migrate/20140308172118_add_blob_to_responses.rb +5 -0
- data/db/migrate/20140308172417_add_modifiable_to_survey_section.rb +5 -0
- data/db/migrate/20140308174532_add_modifiable_to_question.rb +5 -0
- data/db/migrate/20140308175305_add_dynamically_generate_to_questions.rb +5 -0
- data/db/migrate/20140311032923_add_dummy_blob_to_questions.rb +5 -0
- data/db/migrate/20140311160609_add_dynamic_source_to_questions.rb +5 -0
- data/db/migrate/20140311161714_add_report_code_to_questions.rb +5 -0
- data/db/migrate/20140530181134_add_is_comment_to_questions.rb +5 -0
- data/db/migrate/20140531012006_add_is_comment_to_answers.rb +5 -0
- data/db/migrate/20140531225529_create_rows.rb +9 -0
- data/db/migrate/20140601011151_create_columns.rb +11 -0
- data/db/migrate/20140602030330_add_column_id_to_answers.rb +5 -0
- data/db/migrate/20140603155606_add_column_id_to_responses.rb +5 -0
- data/db/migrate/20140606023527_add_column_id_to_dependency_conditions.rb +5 -0
- data/db/migrate/20140815165307_add_user_id_to_survey.rb +5 -0
- data/lib/assets/.gitkeep +0 -0
- data/lib/assets/images/addicon.png +0 -0
- data/lib/assets/images/datepicker.gif +0 -0
- data/lib/assets/images/delete.gif +0 -0
- data/lib/assets/images/delete.png +0 -0
- data/lib/assets/images/images/border.png +0 -0
- data/lib/assets/images/images/controls.png +0 -0
- data/lib/assets/images/images/loading.gif +0 -0
- data/lib/assets/images/images/loading_background.png +0 -0
- data/lib/assets/images/images/overlay.png +0 -0
- data/lib/assets/images/rails.png +0 -0
- data/lib/assets/images/star.gif +0 -0
- data/lib/assets/javascripts/.gitkeep +0 -0
- data/lib/assets/javascripts/surveyor_gui/jquery.MetaData.js +121 -0
- data/lib/assets/javascripts/surveyor_gui/jquery.blockUI.js +619 -0
- data/lib/assets/javascripts/surveyor_gui/jquery.rating.js +377 -0
- data/lib/assets/javascripts/surveyor_gui/jquery.validate.js +1188 -0
- data/lib/assets/javascripts/surveyor_gui/surveyor_add_ons.js +10 -0
- data/lib/assets/javascripts/surveyor_gui/surveyor_gui.js +1417 -0
- data/lib/assets/stylesheets/.gitkeep +0 -0
- data/lib/assets/stylesheets/surveyor_gui/jquery.rating.css +12 -0
- data/lib/assets/stylesheets/surveyor_gui/surveyor_add_ons.css +3 -0
- data/lib/assets/stylesheets/surveyor_gui/surveyor_gui.sass +650 -0
- data/lib/enumerable_extenders.rb +31 -0
- data/lib/generators/surveyor_gui/install_generator.rb +57 -0
- data/lib/generators/surveyor_gui/templates/app/assets/javascripts/surveyor_add_ons.js +2 -0
- data/lib/generators/surveyor_gui/templates/app/assets/javascripts/surveyor_gui_all.js +24 -0
- data/lib/generators/surveyor_gui/templates/app/assets/stylesheets/surveyor_add_ons.css.sass +1 -0
- data/lib/generators/surveyor_gui/templates/app/assets/stylesheets/surveyor_gui_all.css.sass +8 -0
- data/lib/generators/surveyor_gui/templates/app/helpers/surveyor_helper.rb +4 -0
- data/lib/generators/surveyor_gui/templates/app/models/response_set_user.rb +13 -0
- data/lib/generators/surveyor_gui/templates/app/views/layouts/surveyor_gui_default.html.erb +16 -0
- data/lib/generators/surveyor_gui/templates/config/initializers/simple_form.rb +140 -0
- data/lib/generators/surveyor_gui/templates/config/locales/en.yml +5 -0
- data/lib/surveyor_gui.rb +17 -0
- data/lib/surveyor_gui/engine.rb +30 -0
- data/lib/surveyor_gui/helpers/surveyor_helper_methods.rb +19 -0
- data/lib/surveyor_gui/models/answer_methods.rb +24 -0
- data/lib/surveyor_gui/models/column_methods.rb +43 -0
- data/lib/surveyor_gui/models/dependency_condition_methods.rb +53 -0
- data/lib/surveyor_gui/models/dependency_methods.rb +83 -0
- data/lib/surveyor_gui/models/question_and_group_shared_methods.rb +11 -0
- data/lib/surveyor_gui/models/question_group_methods.rb +55 -0
- data/lib/surveyor_gui/models/question_methods.rb +435 -0
- data/lib/surveyor_gui/models/question_type_methods.rb +493 -0
- data/lib/surveyor_gui/models/response_methods.rb +67 -0
- data/lib/surveyor_gui/models/response_set_methods.rb +54 -0
- data/lib/surveyor_gui/models/row_methods.rb +11 -0
- data/lib/surveyor_gui/models/survey_methods.rb +32 -0
- data/lib/surveyor_gui/models/survey_section_methods.rb +32 -0
- data/lib/surveyor_gui/surveyforms_controller_methods.rb +258 -0
- data/lib/surveyor_gui/version.rb +3 -0
- data/lib/tasks/.gitkeep +0 -0
- data/lib/tasks/surveyor_gui_tasks.rake +4 -0
- data/lib/templates/erb/scaffold/_form.html.erb +13 -0
- data/spec/controllers/surveyforms_controller_spec.rb +361 -0
- data/spec/controllers/surveyor_controller_spec.rb +303 -0
- data/spec/factories.rb +181 -0
- data/spec/features/create_survey_spec.rb +418 -0
- data/spec/features/dependencies_spec.rb +61 -0
- data/spec/features/rearrange_survey_spec.rb +118 -0
- data/spec/features/ui_spec.rb +469 -0
- data/spec/fixtures/REDCapDemoDatabase_DataDictionary.csv +127 -0
- data/spec/fixtures/chinese_survey.rb +14 -0
- data/spec/fixtures/everything.rb +215 -0
- data/spec/fixtures/favorites-ish.rb +22 -0
- data/spec/fixtures/favorites.rb +22 -0
- data/spec/fixtures/feelings.rb +38 -0
- data/spec/fixtures/lifestyle.rb +55 -0
- data/spec/fixtures/numbers.rb +21 -0
- data/spec/fixtures/redcap_new_headers.csv +1 -0
- data/spec/fixtures/redcap_siblings.csv +1 -0
- data/spec/fixtures/redcap_whitespace.csv +1 -0
- data/spec/helpers/formtastic_custom_input_spec.rb +15 -0
- data/spec/helpers/surveyor_helper_spec.rb +116 -0
- data/spec/lib/common_spec.rb +37 -0
- data/spec/lib/parser_spec.rb +393 -0
- data/spec/lib/rake_kitchen_sink.rb +42 -0
- data/spec/lib/redcap_parser_spec.rb +129 -0
- data/spec/lib/unparser_spec.rb +126 -0
- data/spec/models/answer_spec.rb +144 -0
- data/spec/models/dependency_condition_spec.rb +428 -0
- data/spec/models/dependency_spec.rb +90 -0
- data/spec/models/question_group_spec.rb +66 -0
- data/spec/models/question_spec.rb +176 -0
- data/spec/models/response_set_spec.rb +452 -0
- data/spec/models/response_spec.rb +208 -0
- data/spec/models/survey_section_spec.rb +58 -0
- data/spec/models/survey_spec.rb +155 -0
- data/spec/models/surveyor_gui/question_spec.rb +60 -0
- data/spec/models/surveyor_gui/question_type_spec.rb +268 -0
- data/spec/models/validation_condition_spec.rb +98 -0
- data/spec/models/validation_spec.rb +64 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +119 -0
- data/spec/support/scenario_outline_helper.rb +39 -0
- data/spec/support/shared.rb +10 -0
- data/spec/support/surveyforms_creation_helpers.rb +312 -0
- data/spec/support/surveyforms_rearrangement_helpers.rb +170 -0
- data/spec/support/surveyor_api_helpers.rb +15 -0
- data/spec/support/surveyor_ui_helpers.rb +108 -0
- data/spec/support/wait_for_ajax.rb +11 -0
- data/spec/views/questions/edit.html.erb_spec.rb +73 -0
- data/spec/views/surveyforms/edit.html.erb_spec.rb +126 -0
- data/surveyor_gui.gemspec +52 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/.gitkeep +0 -0
- data/test/dummy/app/models/.gitkeep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/lib/assets/.gitkeep +0 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/surveyor-gui_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- data/vendor/assets/stylesheets/.gitkeep +0 -0
- data/vendor/assets/stylesheets/custom.sass +5 -0
- data/vendor/plugins/.gitkeep +0 -0
- metadata +664 -0
@@ -0,0 +1,1417 @@
|
|
1
|
+
( function($) {
|
2
|
+
$(document).ready(function() {
|
3
|
+
application_js_code();
|
4
|
+
});
|
5
|
+
|
6
|
+
} ) ( jQuery );
|
7
|
+
|
8
|
+
function application_js_code(){
|
9
|
+
|
10
|
+
// jquery_trigger_ready.js
|
11
|
+
// this function is added to jQuery, it allows access to the readylist
|
12
|
+
// it works for jQuery 1.3.2, it might break on future versions
|
13
|
+
// if (!Modernizr.input.required) {
|
14
|
+
$.ajaxSetup({
|
15
|
+
headers: {
|
16
|
+
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
|
17
|
+
}
|
18
|
+
});
|
19
|
+
|
20
|
+
$('[required="required"]').addClass('required');
|
21
|
+
$.validator.addMethod('require-check',
|
22
|
+
function (value,element) {
|
23
|
+
return $(element).closest('ol').find('.require-check:checked').size() > 0;
|
24
|
+
},
|
25
|
+
'Please check at least one box.'
|
26
|
+
);
|
27
|
+
$.validator.addMethod('uislider',
|
28
|
+
function (value,element) {
|
29
|
+
return $(element).val() != null;
|
30
|
+
},
|
31
|
+
'Please make a choice.'
|
32
|
+
);
|
33
|
+
$('form').each(function(){
|
34
|
+
$(this).validate({
|
35
|
+
ignore:':not(input[class*="star-rating-applied"], select[class*="uislider"]):hidden',
|
36
|
+
groups: getGroups(),
|
37
|
+
errorPlacement: function(error, element) {
|
38
|
+
if (element.attr("type") === "checkbox" )
|
39
|
+
error.insertAfter($(element).closest('ol').find('li').last());
|
40
|
+
else if(element.attr("type") === "radio") {
|
41
|
+
if (element.is('.star-rating-applied'))
|
42
|
+
error.insertAfter($(element).closest('ol'));
|
43
|
+
else
|
44
|
+
error.insertAfter($(element).closest('ol').find('li').last());
|
45
|
+
}
|
46
|
+
else if (element.is('.uislider'))
|
47
|
+
error.insertAfter($(element).closest('ol'));
|
48
|
+
else
|
49
|
+
error.insertAfter(element);
|
50
|
+
}
|
51
|
+
});
|
52
|
+
});
|
53
|
+
|
54
|
+
$.blockUI.defaults.css = {
|
55
|
+
padding: 0,
|
56
|
+
margin: 0,
|
57
|
+
width: '100px',
|
58
|
+
top: '40%',
|
59
|
+
left: '35%',
|
60
|
+
textAlign: 'center',
|
61
|
+
color: '#000',
|
62
|
+
border: 'none',
|
63
|
+
backgroundColor:'#fff',
|
64
|
+
cursor: 'wait'
|
65
|
+
};
|
66
|
+
|
67
|
+
$(document).bind('cbox_open', function(){
|
68
|
+
if($(parent.$.find('input#pass_cbox_data')).length>0) {
|
69
|
+
$(parent.$.find('input#pass_cbox_data')).val('false');
|
70
|
+
}
|
71
|
+
});
|
72
|
+
$(document).on("click", "#survey_section_submit, #question_submit, #question_group_submit, #dependency_submit", function(event) {
|
73
|
+
//pass_cbox_data is a div at the top of /views/surveyforms/_form.html.erb
|
74
|
+
$(parent.$.find('input#pass_cbox_data')).val('true');
|
75
|
+
});
|
76
|
+
$(document).on('ajaxComplete', 'form.question, form.survey_section, form.dependency, form.edit_survey_section', function(event) {
|
77
|
+
if ($("#errorExplanation").length===0){
|
78
|
+
if($(parent.$.find('input#pass_cbox_data')).length>0) {
|
79
|
+
if($(parent.$.find('input#pass_cbox_data')).val()==='true'){
|
80
|
+
parent.$.fn.colorbox.close();
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
else {
|
85
|
+
$(parent.$.find('input#pass_cbox_data')).val('false');
|
86
|
+
}
|
87
|
+
});
|
88
|
+
|
89
|
+
$(window).load(function() {
|
90
|
+
if ($("#errorExplanation").length===0){
|
91
|
+
if($(parent.$.find('input#pass_cbox_data')).length>0) {
|
92
|
+
if($(parent.$.find('input#pass_cbox_data')).val()==='true'){
|
93
|
+
parent.$.fn.colorbox.close();
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
else {
|
98
|
+
$(parent.$.find('input#pass_cbox_data')).val('false');
|
99
|
+
}
|
100
|
+
var isInIFrame = (window.location != window.parent.location) ? true : false;
|
101
|
+
if(isInIFrame) {
|
102
|
+
$('body').css({background:'#f3f3f3'});
|
103
|
+
}
|
104
|
+
});
|
105
|
+
|
106
|
+
|
107
|
+
$(document).on('click', '#edit_section_title', function() {
|
108
|
+
var edit_survey_section_url = $(this).data('edit_survey_section_url');
|
109
|
+
var replace_survey_section_url = $(this).data('replace_survey_section_url');
|
110
|
+
var survey_section_id = $(this).data('survey_section_id');
|
111
|
+
$.colorbox({
|
112
|
+
width:"40%",
|
113
|
+
height:"30%",
|
114
|
+
scrolling:false,
|
115
|
+
iframe:true,
|
116
|
+
onClosed:function(){
|
117
|
+
submitted = $("input#pass_cbox_data").val();
|
118
|
+
if (submitted) {
|
119
|
+
$.get(replace_survey_section_url,
|
120
|
+
{},
|
121
|
+
function(response){
|
122
|
+
$("#survey_section_"+survey_section_id).html(replace_idx($("#survey_section_"+survey_section_id),"survey_sections", response));
|
123
|
+
refresh_stars();
|
124
|
+
}
|
125
|
+
);
|
126
|
+
};
|
127
|
+
},
|
128
|
+
href: edit_survey_section_url,
|
129
|
+
opacity:.3
|
130
|
+
});
|
131
|
+
});
|
132
|
+
|
133
|
+
$(document).on('click', '#delete_section', function() {
|
134
|
+
var survey_section_url = $(this).data('survey_section_url');
|
135
|
+
var survey_section_id = $(this).data('survey_section_id');
|
136
|
+
$.ajax({
|
137
|
+
type: "DELETE",
|
138
|
+
url: survey_section_url,
|
139
|
+
success: function(msg){
|
140
|
+
if (typeof msg !== undefined && msg.length>0) {
|
141
|
+
alert(msg);
|
142
|
+
}
|
143
|
+
else {
|
144
|
+
$("#survey_section_"+survey_section_id).remove();
|
145
|
+
update_question_numbers();
|
146
|
+
update_dependency_questions();
|
147
|
+
}
|
148
|
+
}
|
149
|
+
});
|
150
|
+
});
|
151
|
+
|
152
|
+
|
153
|
+
$(document).on('click', '#add_question', function() {
|
154
|
+
var insert_new_question_url = $(this).data('insert_new_question_url');
|
155
|
+
var new_question_url = $(this).data('new_question_url');
|
156
|
+
var survey_section_id = $(this).parents("div.survey_section").find("input[id$=\'id\']").first().val()
|
157
|
+
var prev_question_id = $(this).data('prev_question_id');
|
158
|
+
var question_id = null;
|
159
|
+
//provides a way to check that this function is complete in tests. It disappears on complete when
|
160
|
+
//the contents of div#box are replaced.
|
161
|
+
$('div#box').addClass('jquery_add_question_started');
|
162
|
+
$.colorbox({
|
163
|
+
width:"850px",
|
164
|
+
height:"772px",
|
165
|
+
scrolling:true,
|
166
|
+
iframe:true,
|
167
|
+
onCleanup:function(){
|
168
|
+
$("#cboxLoadedContent iframe").load(function(){
|
169
|
+
question_id = $("iframe.cboxIframe").contents().find("#cboxQuestionId").html();
|
170
|
+
});
|
171
|
+
},
|
172
|
+
onClosed:function(){
|
173
|
+
submitted = $("input#pass_cbox_data").val();
|
174
|
+
if (submitted==="true") {
|
175
|
+
$.get(insert_new_question_url+"?question_id="+question_id,
|
176
|
+
{},
|
177
|
+
function(response) {
|
178
|
+
replace_surveyform_contents(response);
|
179
|
+
}
|
180
|
+
);
|
181
|
+
}
|
182
|
+
},
|
183
|
+
href: new_question_url+'?survey_section_id='+survey_section_id+(prev_question_id ? '&prev_question_id='+prev_question_id : ''),
|
184
|
+
opacity:.3}
|
185
|
+
);
|
186
|
+
});
|
187
|
+
|
188
|
+
$(document).on('click', '#add_section', function() {
|
189
|
+
var insert_survey_section_url = $(this).data('insert_survey_section_url');
|
190
|
+
var new_survey_section_url = $(this).data('new_survey_section_url');
|
191
|
+
var survey_section_id = $(this).data('survey_section_id');
|
192
|
+
var survey_id = $(this).data('survey_id');
|
193
|
+
//provides a way to check that this function is complete in tests. It disappears on complete when
|
194
|
+
//the contents of div#box are replaced.
|
195
|
+
$('div#box').addClass('jquery_add_section_started');
|
196
|
+
$.colorbox({width:"517px;",
|
197
|
+
height:"167px;",
|
198
|
+
scrolling:false,
|
199
|
+
iframe:true,
|
200
|
+
onClosed:function(){
|
201
|
+
submitted = $("input#pass_cbox_data").val();
|
202
|
+
if (submitted) {
|
203
|
+
$.get(insert_survey_section_url,
|
204
|
+
{},
|
205
|
+
function(response) {
|
206
|
+
$("#survey_section_"+survey_section_id).after(replace_idx($(".survey_section"),"survey_sections", response));
|
207
|
+
$('div#box').removeClass('jquery_add_section_started');
|
208
|
+
}
|
209
|
+
);
|
210
|
+
}
|
211
|
+
},
|
212
|
+
href: new_survey_section_url+'?prev_section_id='+survey_section_id+'&suppress_header=true&survey_id='+survey_id,
|
213
|
+
opacity:.3
|
214
|
+
});
|
215
|
+
});
|
216
|
+
|
217
|
+
$(document).on('click', '#edit_question', function() {
|
218
|
+
var replace_question_url = $(this).data('replace_question_url');
|
219
|
+
var edit_question_url = $(this).data('edit_question_url');
|
220
|
+
var survey_section_id = $(this).closest('.survey_section').find('input#surveyform_survey_sections_attributes_0_id').val();
|
221
|
+
var question_id = $(this).data('question_id');
|
222
|
+
$.colorbox({
|
223
|
+
width:"850px",
|
224
|
+
height:"772px",
|
225
|
+
scrolling:true,
|
226
|
+
iframe:true,
|
227
|
+
onClosed:function(){
|
228
|
+
submitted = $("input#pass_cbox_data").val();
|
229
|
+
if (submitted) {
|
230
|
+
$.get(replace_question_url,
|
231
|
+
{},
|
232
|
+
function(response) {
|
233
|
+
if (response=="not found"){
|
234
|
+
$.get("/surveyforms/"+survey_section_id+"/replace_survey_section?survey_section_id="+survey_section_id,
|
235
|
+
{},
|
236
|
+
function(response){
|
237
|
+
$("#survey_section_"+survey_section_id).html(replace_idx($("#survey_section_"+survey_section_id),"survey_sections", response));
|
238
|
+
refresh_stars();
|
239
|
+
}
|
240
|
+
);
|
241
|
+
}
|
242
|
+
else {
|
243
|
+
$("#question_"+question_id).html(replace_idx($("#question_"+question_id),"questions", response));
|
244
|
+
refresh_stars();
|
245
|
+
$("#question_"+question_id).update_single_uislider();
|
246
|
+
update_question_numbers();
|
247
|
+
}
|
248
|
+
}
|
249
|
+
);
|
250
|
+
};
|
251
|
+
},
|
252
|
+
href: edit_question_url,
|
253
|
+
opacity:.3
|
254
|
+
});
|
255
|
+
});
|
256
|
+
|
257
|
+
$(document).on('click', '#cut_section', function() {
|
258
|
+
var cut_section_surveyform_url = $(this).data('cut_section_surveyform_url');
|
259
|
+
var section_already_cut = $(this).data('section_already_cut');
|
260
|
+
//provides a way to check that this function is complete in tests. It disappears on complete when
|
261
|
+
//the contents of div#box are replaced.
|
262
|
+
$('div#box').addClass('jquery_cut_section_started');
|
263
|
+
$.get(cut_section_surveyform_url,
|
264
|
+
{},
|
265
|
+
function(response) {
|
266
|
+
replace_surveyform_contents(response);
|
267
|
+
}
|
268
|
+
);
|
269
|
+
});
|
270
|
+
|
271
|
+
$(document).on('click', '#paste_section', function() {
|
272
|
+
var paste_section_surveyform_url = $(this).data('paste_section_surveyform_url');
|
273
|
+
//provides a way to check that this function is complete in tests. It disappears on complete when
|
274
|
+
//the contents of div#box are replaced.
|
275
|
+
$('div#box').addClass('jquery_paste_section_started');
|
276
|
+
$.get(paste_section_surveyform_url,
|
277
|
+
{},
|
278
|
+
function(response) {
|
279
|
+
replace_surveyform_contents(response);
|
280
|
+
}
|
281
|
+
);
|
282
|
+
});
|
283
|
+
|
284
|
+
$(document).on('click', '#cut_question', function() {
|
285
|
+
var cut_question_surveyform_url = $(this).data('cut_question_surveyform_url');
|
286
|
+
var question_already_cut = $(this).data('question_already_cut');
|
287
|
+
//provides a way to check that this function is complete in tests. It disappears on complete when
|
288
|
+
//the contents of div#box are replaced.
|
289
|
+
$('div#box').addClass('jquery_cut_question_started');
|
290
|
+
$.get(cut_question_surveyform_url,
|
291
|
+
{},
|
292
|
+
function(response) {
|
293
|
+
replace_surveyform_contents(response);
|
294
|
+
}
|
295
|
+
);
|
296
|
+
});
|
297
|
+
|
298
|
+
$(document).on('click', '#paste_question', function() {
|
299
|
+
var paste_question_surveyform_url = $(this).data('paste_question_surveyform_url');
|
300
|
+
//provides a way to check that this function is complete in tests. It disappears on complete when
|
301
|
+
//the contents of div#box are replaced.
|
302
|
+
$('div#box').addClass('jquery_paste_question_started');
|
303
|
+
$.get(paste_question_surveyform_url,
|
304
|
+
{},
|
305
|
+
function(response) {
|
306
|
+
replace_surveyform_contents(response);
|
307
|
+
}
|
308
|
+
);
|
309
|
+
});
|
310
|
+
|
311
|
+
$(document).on('click', '#delete_question', function() {
|
312
|
+
var question_url = $(this).data('question_url');
|
313
|
+
var replace_form_surveyform_url = $(this).data('replace_form_surveyform_url');
|
314
|
+
$.ajax({
|
315
|
+
type: "DELETE",
|
316
|
+
url: question_url,
|
317
|
+
success: function(msg){
|
318
|
+
if (typeof msg !== undefined && msg.length>0) {
|
319
|
+
alert(msg);
|
320
|
+
}
|
321
|
+
else {
|
322
|
+
$.get(replace_form_surveyform_url,
|
323
|
+
{},
|
324
|
+
function(response) {
|
325
|
+
replace_surveyform_contents(response);
|
326
|
+
}
|
327
|
+
);
|
328
|
+
}
|
329
|
+
},
|
330
|
+
error: function(){
|
331
|
+
alert("This question cannot be deleted.");
|
332
|
+
}
|
333
|
+
});
|
334
|
+
});
|
335
|
+
|
336
|
+
$(document).on('click', '#edit_logic', function() {
|
337
|
+
var replace_question_url = $(this).data('replace_question_url');
|
338
|
+
var edit_dependency_url = $(this).data('edit_dependency_url');
|
339
|
+
var question_id = $(this).data('question_id');
|
340
|
+
$.colorbox({
|
341
|
+
width:"98%",
|
342
|
+
height:"80%",
|
343
|
+
scrolling:true,
|
344
|
+
iframe:true,
|
345
|
+
onClosed:function(){
|
346
|
+
submitted = $("input#pass_cbox_data").val();
|
347
|
+
if (submitted) {
|
348
|
+
|
349
|
+
$.get(replace_question_url,
|
350
|
+
{},
|
351
|
+
function(response) {
|
352
|
+
var question=$("#question_"+question_id).html(replace_idx($("#question_"+question_id),"questions", response));
|
353
|
+
refresh_stars(question);
|
354
|
+
update_question_numbers();
|
355
|
+
}
|
356
|
+
);
|
357
|
+
};
|
358
|
+
},
|
359
|
+
href: edit_dependency_url,
|
360
|
+
opacity:.3
|
361
|
+
});
|
362
|
+
});
|
363
|
+
|
364
|
+
$(document).on('click', '#delete_logic', function() {
|
365
|
+
var replace_question_url = $(this).data('replace_question_url');
|
366
|
+
var dependency_url = $(this).data('dependency_url');
|
367
|
+
var question_id = $(this).data('question_id');
|
368
|
+
$.ajax({
|
369
|
+
type: "DELETE",
|
370
|
+
url: dependency_url,
|
371
|
+
success: function(msg){
|
372
|
+
$.get(replace_question_url,
|
373
|
+
{},
|
374
|
+
function(response) {
|
375
|
+
var question=$("#question_"+question_id).html(replace_idx($("#question_"+question_id),"questions", response));
|
376
|
+
refresh_stars(question);
|
377
|
+
update_question_numbers();
|
378
|
+
}
|
379
|
+
);
|
380
|
+
},
|
381
|
+
error: function(){
|
382
|
+
alert("This logic cannot be deleted.");
|
383
|
+
}
|
384
|
+
});
|
385
|
+
});
|
386
|
+
|
387
|
+
$(document).on('click', '#add_logic', function() {
|
388
|
+
var replace_question_url = $(this).data('replace_question_url');
|
389
|
+
var new_dependency_url = $(this).data('new_dependency_url');
|
390
|
+
var question_id = $(this).data('question_id');
|
391
|
+
$.colorbox({
|
392
|
+
width:"98%",
|
393
|
+
height:"50%",
|
394
|
+
scrolling:true,
|
395
|
+
iframe:true,
|
396
|
+
onClosed:function(){
|
397
|
+
submitted = $("input#pass_cbox_data").val();
|
398
|
+
if (submitted) {
|
399
|
+
$.get(
|
400
|
+
replace_question_url,
|
401
|
+
{},
|
402
|
+
function(response) {
|
403
|
+
var question=$("#question_"+question_id).html(replace_idx($("#question_"+question_id),"questions", response));
|
404
|
+
refresh_stars(question);
|
405
|
+
update_question_numbers();
|
406
|
+
}
|
407
|
+
);
|
408
|
+
};
|
409
|
+
},
|
410
|
+
href: new_dependency_url,
|
411
|
+
opacity:.3
|
412
|
+
});
|
413
|
+
});
|
414
|
+
|
415
|
+
$(document).on('click', '.go_back', function() {
|
416
|
+
history.back();
|
417
|
+
});
|
418
|
+
|
419
|
+
sortable_sections_and_questions();
|
420
|
+
|
421
|
+
$.fn.sortable_answers = function(){
|
422
|
+
$('#sortable_answers').sortable({
|
423
|
+
axis:"y",
|
424
|
+
opacity: 0.6,
|
425
|
+
scroll: true,
|
426
|
+
update: function(){
|
427
|
+
update_answer_display_order();
|
428
|
+
}
|
429
|
+
});
|
430
|
+
};
|
431
|
+
|
432
|
+
|
433
|
+
update_uislider();
|
434
|
+
update_datepickers();
|
435
|
+
|
436
|
+
$.fn.check_dynamic_source = function (){
|
437
|
+
if ($(this).closest('#answer_choice').find('input[id^="question_dynamically_generate_true"]').prop('checked')) {
|
438
|
+
$(this).closest('div#answer_choice').find('div#dynamic_source').show();
|
439
|
+
$(this).closest('div#answer_choice').find('div#fixed_source').hide();
|
440
|
+
// $('#question_answers_attributes_0_text').val('String');
|
441
|
+
}
|
442
|
+
else{
|
443
|
+
$(this).closest('div#answer_choice').find('div#dynamic_source').hide();
|
444
|
+
$(this).closest('div#answer_choice').find('div#fixed_source').show();
|
445
|
+
}
|
446
|
+
};
|
447
|
+
|
448
|
+
$.fn.render_no_picks_partial = function (){
|
449
|
+
here = $(this)
|
450
|
+
$.get(
|
451
|
+
"/question/render_no_picks_partial?id=" + $(this).closest('.questions').find('input#question_id').val(),
|
452
|
+
function(data){
|
453
|
+
here.html(data);
|
454
|
+
}
|
455
|
+
);
|
456
|
+
}
|
457
|
+
|
458
|
+
$.fn.render_answer_fields_partial = function (add_row){
|
459
|
+
here = $(this);
|
460
|
+
if (add_row === true) {
|
461
|
+
var option = "&add_row=true";
|
462
|
+
}
|
463
|
+
else {
|
464
|
+
option = ' ';
|
465
|
+
}
|
466
|
+
$.get(
|
467
|
+
"/question/render_answer_fields_partial?id=" + $(this).closest('.questions').find('input#question_id').val() + option,
|
468
|
+
function(data){
|
469
|
+
if (add_row == true) {
|
470
|
+
data = replace_idx($(".question_answers_text"),"answers", data)
|
471
|
+
here.append(data);
|
472
|
+
}
|
473
|
+
else {
|
474
|
+
here.html(data);
|
475
|
+
}
|
476
|
+
here.check_dynamic_source();
|
477
|
+
here.sortable_answers();
|
478
|
+
}
|
479
|
+
);
|
480
|
+
}
|
481
|
+
|
482
|
+
$.fn.render_grid_fields_partial = function (question_type, index){
|
483
|
+
here = $(this);
|
484
|
+
index = typeof index !== 'undefined' ? index : null;
|
485
|
+
$.get(
|
486
|
+
"/question/render_grid_partial?id="
|
487
|
+
+ $(this).closest('.questions').find('input#question_id').val()
|
488
|
+
+ "&question_type_id="+question_type
|
489
|
+
+ "&index=" + parseInt(index)
|
490
|
+
,
|
491
|
+
function(data){
|
492
|
+
here.html(data);
|
493
|
+
here.check_dynamic_source();
|
494
|
+
here.sortable_answers();
|
495
|
+
update_uislider();
|
496
|
+
check_dropdown_column_count();
|
497
|
+
}
|
498
|
+
);
|
499
|
+
}
|
500
|
+
|
501
|
+
function render_question (){
|
502
|
+
var here = $('body');
|
503
|
+
var survey_section_id = $('input[id$="survey_section_id"]').val();
|
504
|
+
var text = $('textarea[id*="question"][id$="_text"]').val();
|
505
|
+
var display_order = $('input[id$="display_order"]').last().val();
|
506
|
+
var question_id = $('.questions').find('input#question_group_question_id').val()
|
507
|
+
var question_type_id = $('div.question_type input[id*="question_type_id"]:checked').val();
|
508
|
+
if (question_id != undefined && question_id != "") {
|
509
|
+
var question_clause = "/"+question_id+"/edit";
|
510
|
+
}
|
511
|
+
else
|
512
|
+
var question_clause = "/new";
|
513
|
+
window.location.href = "/questions"+question_clause +"?survey_section_id="+
|
514
|
+
survey_section_id+"&text="+text+
|
515
|
+
"&display_order="+display_order +
|
516
|
+
"&question_type_id="+question_type_id;
|
517
|
+
}
|
518
|
+
|
519
|
+
function render_question_group (){
|
520
|
+
var here = $('body');
|
521
|
+
//var original_question_id = $('input[id="question_id"]')
|
522
|
+
var survey_section_id = $('input[id$="survey_section_id"]').val();
|
523
|
+
var text = $('textarea[id*="question"][id$="_text"]').val();
|
524
|
+
var display_order = $('input[id$="display_order"]').last().val();
|
525
|
+
var question_id = $('input#question_id').val();
|
526
|
+
var question_group_id = $('.questions').find('input[id*="question_group_id"]').val();
|
527
|
+
var question_type_id = $('div.question_type input[id*="question_type_id"]:checked').val();
|
528
|
+
if (question_group_id != undefined && question_group_id != "") {
|
529
|
+
var question_group_clause = "/"+question_group_id+"/edit";
|
530
|
+
}
|
531
|
+
else
|
532
|
+
var question_group_clause = "/new";
|
533
|
+
|
534
|
+
window.location.href = "/question_groups"+question_group_clause+"?survey_section_id="+
|
535
|
+
survey_section_id+"&text="+text+
|
536
|
+
"&display_order="+display_order +
|
537
|
+
"&question_id="+question_id +
|
538
|
+
"&question_type_id="+question_type_id;
|
539
|
+
|
540
|
+
}
|
541
|
+
|
542
|
+
$.fn.render_group_inline_fields_partial = function (add_row){
|
543
|
+
here = $(this);
|
544
|
+
var survey_section_id = $('input#question_group_survey_section_id').val();
|
545
|
+
if (add_row === true) {
|
546
|
+
var option = "&add_row=true";
|
547
|
+
}
|
548
|
+
else {
|
549
|
+
option = ' ';
|
550
|
+
}
|
551
|
+
var last_question = $(this).closest('.questions').find('input#question_group_id').first();
|
552
|
+
var display_order = (this).closest('.questions').find('input[id$="display_order"]').last().val();
|
553
|
+
display_order = parseInt(display_order) + 1;
|
554
|
+
$.get(
|
555
|
+
"/question_group/render_group_inline_partial?id="
|
556
|
+
+ last_question.val() +
|
557
|
+
"&display_order=" + display_order +
|
558
|
+
option,
|
559
|
+
function(data){
|
560
|
+
if (add_row == true) {
|
561
|
+
data = replace_idx($(".group_inline_question"),"questions", data)
|
562
|
+
$('.sortable_group_questions').last().after(data);
|
563
|
+
}
|
564
|
+
else {
|
565
|
+
$('#answer_choice').html(data);
|
566
|
+
}
|
567
|
+
$('.group_inline_question').last().show_group_answers();
|
568
|
+
$('.group_inline_question').each(function(){
|
569
|
+
$('input[id$="survey_section_id"]').val(survey_section_id);
|
570
|
+
});
|
571
|
+
update_group_answers();
|
572
|
+
sortable_sections_and_questions();
|
573
|
+
}
|
574
|
+
);
|
575
|
+
}
|
576
|
+
|
577
|
+
//$.fn.render_grid_dropdown_columns = function (i){
|
578
|
+
// here = $(this);
|
579
|
+
// $.get(
|
580
|
+
// "/question/render_grid_dropdown_columns?id="
|
581
|
+
// + $(this).closest('.questions').find('input#question_id').val()+
|
582
|
+
// "&index=" + parseInt(i) + "&question_type_id='grid_dropdown'",
|
583
|
+
// function(data){
|
584
|
+
// here.append(data);
|
585
|
+
// here.check_dynamic_source();
|
586
|
+
// here.sortable_answers();
|
587
|
+
// update_uislider();
|
588
|
+
// }
|
589
|
+
// );
|
590
|
+
//}
|
591
|
+
|
592
|
+
$('#answer_choice').on('click', '.add_answer img', function () {
|
593
|
+
$('#sortable_answers').render_answer_fields_partial(true);
|
594
|
+
});
|
595
|
+
|
596
|
+
|
597
|
+
$('#answer_choice').on('click','.add_group_inline_question', function() {
|
598
|
+
$(this).render_group_inline_fields_partial(true);
|
599
|
+
});
|
600
|
+
|
601
|
+
$.fn.show_answers = function (){
|
602
|
+
if ($(this).val()
|
603
|
+
in {
|
604
|
+
'pick_one':1,
|
605
|
+
'pick_any':1,
|
606
|
+
'slider':1,
|
607
|
+
'dropdown':1}){
|
608
|
+
$('#question_answers_attributes_0_text').val($('#original_choice').data('original_choice'));
|
609
|
+
$('#answer_choice').show();
|
610
|
+
$(this).check_dynamic_source();
|
611
|
+
$(document).on('click','input[id^="question_dynamically_generate"]', function() {
|
612
|
+
$(this).check_dynamic_source();
|
613
|
+
});
|
614
|
+
$('#sortable_answers').render_answer_fields_partial();
|
615
|
+
if ($('input[id^="question_dynamically_generate"]:checked').val() in {'t':1,'true':1}){
|
616
|
+
$('#fixed_source').hide();
|
617
|
+
$('#dynamic_source').show();
|
618
|
+
}
|
619
|
+
}
|
620
|
+
else if ($(this).val() in {'grid_one':1, 'grid_any':1, 'grid_dropdown':1}){
|
621
|
+
$('#question_answers_attributes_0_text').val($('#original_choice').data('original_choice'));
|
622
|
+
$('#sortable_answers').render_grid_fields_partial((this).val());
|
623
|
+
$('#answer_choice').show();
|
624
|
+
}
|
625
|
+
else if ($(this).val() in {"group_inline":1, "group_default":1, "repeater":1}){
|
626
|
+
$('#question_answers_attributes_0_text').val($('#original_choice').data('original_choice'));
|
627
|
+
//$('#sortable_answers').render_group_inline_fields_partial((this).val());
|
628
|
+
render_question_group();
|
629
|
+
}
|
630
|
+
else
|
631
|
+
{
|
632
|
+
$('#answer_choice').hide();
|
633
|
+
$('#sortable_answers').html('');
|
634
|
+
switch($(this).val)
|
635
|
+
{
|
636
|
+
case 'Number':
|
637
|
+
$('#question_answers_attributes_0_text').val('Float');
|
638
|
+
break;
|
639
|
+
case 'Text':
|
640
|
+
$('#question_answers_attributes_0_text').val('Text');
|
641
|
+
break;
|
642
|
+
default:
|
643
|
+
$('#question_answers_attributes_0_text').val('String');
|
644
|
+
}
|
645
|
+
}
|
646
|
+
};
|
647
|
+
|
648
|
+
$.fn.show_group_answers = function () {
|
649
|
+
if ($(this).val()
|
650
|
+
in {
|
651
|
+
'pick_one':1,
|
652
|
+
'pick_any':1,
|
653
|
+
'slider':1,
|
654
|
+
'dropdown':1})
|
655
|
+
$(this).closest('.group_inline_question').find('.group_answers_textbox').show();
|
656
|
+
else
|
657
|
+
$(this).closest('.group_inline_question').find('.group_answers_textbox').hide();
|
658
|
+
}
|
659
|
+
|
660
|
+
$.fn.show_number_questions = function (){
|
661
|
+
if ($(this).val() === "number"){
|
662
|
+
$('#number_questions').render_no_picks_partial();
|
663
|
+
}
|
664
|
+
else
|
665
|
+
{
|
666
|
+
$('#number_questions').html('');
|
667
|
+
}
|
668
|
+
};
|
669
|
+
|
670
|
+
function update_group_answers(){
|
671
|
+
$('.group_inline_question').on('change', 'select[id^="question_group_questions_attributes_"]', function(){
|
672
|
+
$(this).show_group_answers();
|
673
|
+
});
|
674
|
+
}
|
675
|
+
|
676
|
+
/*
|
677
|
+
$.fn.update_widgets = function(){
|
678
|
+
$(this).find('select.uislider').each(function() {
|
679
|
+
$(this).selectToUISlider({
|
680
|
+
labels:2,
|
681
|
+
labelSrc: "text",
|
682
|
+
sliderOptions: {
|
683
|
+
stop: function(e, ui) { // handle stop sliding event
|
684
|
+
$(this).parents('form').trigger('slider_change');
|
685
|
+
}
|
686
|
+
}
|
687
|
+
}).hide();
|
688
|
+
});
|
689
|
+
$(this).find("input.date_picker").datepicker(
|
690
|
+
{ duration: 'fast', showOn: 'both', buttonImage: '../../assets/datepicker.gif', buttonImageOnly: true }
|
691
|
+
);
|
692
|
+
}
|
693
|
+
*/
|
694
|
+
$('input[id^="question_question_type_"],input[id^="question_group_question_type_"]').on('change', function(event){
|
695
|
+
if (!($(this).val() in {"group_inline":1,"group_default":1,"repeater":1}) && $('.edit_question_group, .new_question_group').length > 0){
|
696
|
+
render_question();
|
697
|
+
}
|
698
|
+
else {
|
699
|
+
$(this).show_answers();
|
700
|
+
$(this).show_number_questions();
|
701
|
+
}
|
702
|
+
});
|
703
|
+
|
704
|
+
$('.group_inline_question').each( function(){
|
705
|
+
$(this).find('select[id$="question_type_id"]').show_group_answers();
|
706
|
+
});
|
707
|
+
$('.group_inline_question').on('change', 'select[id^="question_group_questions_attributes_"]', function(){
|
708
|
+
$(this).show_group_answers();
|
709
|
+
});
|
710
|
+
|
711
|
+
|
712
|
+
|
713
|
+
$('input[id^="question_question_type_"]:checked').each(function(event){
|
714
|
+
$(this).show_number_questions();
|
715
|
+
$(this).show_answers();
|
716
|
+
});
|
717
|
+
|
718
|
+
$('input#dependency_submit').on('click').trigger('submit');
|
719
|
+
|
720
|
+
$('.surveyor_gui_report .report_data_display').hide();
|
721
|
+
|
722
|
+
$.fn.render_dependency_conditions_partial = function (add_row){
|
723
|
+
if ($(this).length > 0) {
|
724
|
+
here = $(this);
|
725
|
+
if (add_row === true) {
|
726
|
+
var option = "&add_row=true";
|
727
|
+
}
|
728
|
+
else {
|
729
|
+
option = ' ';
|
730
|
+
}
|
731
|
+
$.get(
|
732
|
+
"/dependency/render_dependency_conditions_partial?id=" + $(this).data('question_id') +
|
733
|
+
"&dependency_id=" + $(this).data('dependency_id') + option,
|
734
|
+
function(data){
|
735
|
+
if (add_row === true) {
|
736
|
+
data = replace_idx($(".question_dependency_dependency_conditions_question_id"),"dependency_conditions", data)
|
737
|
+
here.append(data);
|
738
|
+
}
|
739
|
+
else {
|
740
|
+
here.html(data);
|
741
|
+
}
|
742
|
+
$('select[id*="dependency_conditions_attributes"][id$="question_id"]').each( function() {
|
743
|
+
$(this).determine_dependency_question_type();
|
744
|
+
});
|
745
|
+
$('select[id$="join_operator"]').first().parents('tr').hide();
|
746
|
+
}
|
747
|
+
);
|
748
|
+
}
|
749
|
+
}
|
750
|
+
|
751
|
+
$('#dependency_conditions_partial').render_dependency_conditions_partial();
|
752
|
+
|
753
|
+
$('div.dependency_editor').on('click', '.add_condition img', function () {
|
754
|
+
$(this).closest('div').find('#dependency_conditions_partial').render_dependency_conditions_partial(true);
|
755
|
+
});
|
756
|
+
|
757
|
+
|
758
|
+
//when modifying dependency logic, change the answers based on the question selected
|
759
|
+
//and change the answer field from a pulldown to an entry field, depending on the question type
|
760
|
+
// $('select[id^="question_dependency_attributes_dependency_conditions_attributes"][id$="question_id"]').each( function() {
|
761
|
+
// $(this).determine_dependency_question_type();
|
762
|
+
// });
|
763
|
+
$('.dependency_editor').on('change', 'select[id*="dependency_conditions_attributes"][id$="question_id"]', function(event) {
|
764
|
+
$(event.target).determine_dependency_question_type();
|
765
|
+
});
|
766
|
+
$('.dependency_editor').on('change', 'select[id*="dependency_conditions_attributes"][id$="column_id"]', function(event) {
|
767
|
+
$(event.target).refresh_dependency_answers();
|
768
|
+
});
|
769
|
+
|
770
|
+
$('input.autocomplete').each(function(){
|
771
|
+
update_autocomplete_idx(this);
|
772
|
+
});
|
773
|
+
|
774
|
+
$("form[id^='survey_form']").find('.filename_with_link').find('a').each(function(){
|
775
|
+
var filenamediv = $(this).parent('.filename_with_link');
|
776
|
+
//regexp filter finds the input with the correct response id field, e.g. r_4, and extracts the id
|
777
|
+
var response_id = $(this).closest('ol').find('input').filter(function() {
|
778
|
+
return /r_\d+_id/.test( $(this).attr('id'));
|
779
|
+
}).val();
|
780
|
+
insert_file_delete_icon(filenamediv,response_id);
|
781
|
+
});
|
782
|
+
|
783
|
+
$('.surveyor_gui_report .show_data').on('click', function(){ show_survey_report_data(); });
|
784
|
+
$('.surveyor_gui_report .hide_data').on('click', function(){ hide_survey_report_data(); });
|
785
|
+
|
786
|
+
|
787
|
+
//when uploading a file, modify the view current name and link
|
788
|
+
//with new version of jquery, the jquery-ujs iframe call is coming back with an error on json results. Does not seem to affect surveyor.js
|
789
|
+
//and cannot figure out how to get the result to return without error.
|
790
|
+
//Seems to be interpreted by jquery as an xml result even though its json, and the <textarea> tag seems to throw off the parser.
|
791
|
+
$('form').bind("ajax:success, ajax:error", function(){
|
792
|
+
if ( $(this).data('remotipartSubmitted') ){
|
793
|
+
var object_names=$(this).find('input[type="file"]');
|
794
|
+
//if the upload is associated with a survey question, retrieve the response, extract filename, and display it, with a link to view file.
|
795
|
+
object_names.each(function(){
|
796
|
+
var object_name=$(this).attr('data-object-class');
|
797
|
+
var object_id = $(this).attr('id');
|
798
|
+
indexRegExp1 = /[0-9]+/g;
|
799
|
+
var idx = parseInt(indexRegExp1.exec(object_id));
|
800
|
+
indexRegExp1.lastIndex = 0;
|
801
|
+
if (object_name=='Response') {
|
802
|
+
var response_set_id=$(this).closest('ol').find('input[type="file"]').attr('data-response_set_id');
|
803
|
+
var question_id = $(this).closest('ol').find('input[type="file"]').closest('ol').find('input[id$="question_id"]').val();
|
804
|
+
$.get('/surveyor/get_response_id?question_id='+question_id+"&response_set_id="+response_set_id, function(data){
|
805
|
+
var response_id = data
|
806
|
+
if (response_id) {
|
807
|
+
//now get the the name of the file, so we can display the name of the file and a link to the user.
|
808
|
+
$.get('/pages/get_filename?object='+object_name+'&id='+response_id, function(data){
|
809
|
+
//we'll stuff the link into the div called filename_with_link
|
810
|
+
var filenamediv = $('input[id$="question_id"][value="'+question_id+'"]').closest('ol').find('.filename_with_link');
|
811
|
+
filenamediv.html('current file is: ' + data );
|
812
|
+
//add a delete icon
|
813
|
+
insert_file_delete_icon(filenamediv,response_id,idx);
|
814
|
+
|
815
|
+
//insert the response.id so we don't do insert when update needed
|
816
|
+
insert_id_if_missing(filenamediv.closest('ol').find('input'), response_id);
|
817
|
+
|
818
|
+
//now insert the response id inputs for star and slider fields, which also would be handled by jquery.surveyor.js, but were bypassed.
|
819
|
+
//nested associations will force an insert of these fields, and the response ids are necessary to avoid duplicate inserts in further
|
820
|
+
//further operations
|
821
|
+
selects = $("form[id^='survey_form'] select").add("form[id^='survey_form'] li.star");
|
822
|
+
selects.each(function(){
|
823
|
+
var question_id = $(this).closest('ol').find('input[id$="question_id"]').val();
|
824
|
+
var context = this
|
825
|
+
$.get('/surveyor/get_response_id?question_id='+question_id+"&response_set_id="+response_set_id, function(data2){
|
826
|
+
insert_id_if_missing($(context).closest('ol').find('input'), data2);
|
827
|
+
});
|
828
|
+
});
|
829
|
+
//ajax done, unblock
|
830
|
+
$('input, select, submit').unblock();
|
831
|
+
});
|
832
|
+
}
|
833
|
+
});
|
834
|
+
}
|
835
|
+
});
|
836
|
+
}
|
837
|
+
});
|
838
|
+
}
|
839
|
+
|
840
|
+
function replace_surveyform_contents(response) {
|
841
|
+
$("div#box").filter(":last").replaceWith(response);
|
842
|
+
sortable_sections_and_questions();
|
843
|
+
refresh_stars();
|
844
|
+
update_uislider();
|
845
|
+
update_datepickers();
|
846
|
+
}
|
847
|
+
|
848
|
+
function check_dropdown_column_count() {
|
849
|
+
$('select[id="question_dropdown_column_count"]').on('change', function(event){
|
850
|
+
count = $(this).val()
|
851
|
+
// for (var i = 0; i < count; i++) {
|
852
|
+
// var grid_dropdown_columns = $(this).closest('div').nextAll('.grid_dropdown_columns');
|
853
|
+
// grid_dropdown_columns.html("");
|
854
|
+
$(this).closest('#sortable_answers').render_grid_fields_partial('grid_dropdown', count);
|
855
|
+
// };
|
856
|
+
});
|
857
|
+
}
|
858
|
+
function getAllSerialize() {
|
859
|
+
$('.sortable_questions').each(function(index, value) {
|
860
|
+
if (index === 0) {
|
861
|
+
newarr = $(this).sortable('serialize',{key:$(this).attr('id')+'[]'});
|
862
|
+
}
|
863
|
+
else{
|
864
|
+
newarr = newarr+'&'+$(this).sortable('serialize',{key:$(this).attr('id')+'[]'});
|
865
|
+
}
|
866
|
+
});
|
867
|
+
return newarr;
|
868
|
+
}
|
869
|
+
|
870
|
+
function insert_id_if_missing(wrapped_set, response_id){
|
871
|
+
//get the id of the form element
|
872
|
+
var first_id = wrapped_set[0].id;
|
873
|
+
indexRegExp1 = /[0-9]+/g;
|
874
|
+
//extract the index
|
875
|
+
idx = parseInt(indexRegExp1.exec(first_id));
|
876
|
+
//determine if the r_<idx>_id input field exists.
|
877
|
+
var id_input_exists = wrapped_set.filter(function() {
|
878
|
+
return /r_\d+_id/.test( $(this).attr('id'));
|
879
|
+
}).length;
|
880
|
+
//if the input field does not exist, create it, to avoid inserting a duplicate response through the nested attributes processing
|
881
|
+
//this would normally be handled by the successfulSave method of jquery.surveyor.js, but gets bypassed by remotipart in
|
882
|
+
//order to process the file upload.
|
883
|
+
if (!id_input_exists) {
|
884
|
+
wrapped_set.filter('input[id$="question_id"]').after('<input id="r_'+idx+'_id" class="" type="hidden" value="'+response_id+'" name="r['+idx+'][id]">');
|
885
|
+
};
|
886
|
+
indexRegExp1.lastIndex = 0;
|
887
|
+
}
|
888
|
+
|
889
|
+
function insert_file_delete_icon(filenamediv, response_id, idx){
|
890
|
+
//retrieve the link to the delete icon
|
891
|
+
if (filenamediv.find('img').length==0 && response_id) {
|
892
|
+
var img = filenamediv.attr('data-image-path');
|
893
|
+
//create the link
|
894
|
+
var js = "remove_attachment('Response',"+response_id+","+idx+"); return false;";
|
895
|
+
var newclick = new Function(js);
|
896
|
+
filenamediv.append('<img src="'+img+'" />').find('img').attr('onclick', '').click(newclick);
|
897
|
+
}
|
898
|
+
}
|
899
|
+
|
900
|
+
function CurrencyFormatted(amount) {
|
901
|
+
var i = parseFloat(amount);
|
902
|
+
if(isNaN(i)) { i = 0.00; }
|
903
|
+
var minus = '';
|
904
|
+
if(i < 0) { minus = '-'; }
|
905
|
+
i = Math.abs(i);
|
906
|
+
i = parseInt((i + .005) * 100);
|
907
|
+
i = i / 100;
|
908
|
+
s = new String(i);
|
909
|
+
if(s.indexOf('.') < 0) { s += '.00'; }
|
910
|
+
if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
|
911
|
+
s = minus + s;
|
912
|
+
return s;
|
913
|
+
}
|
914
|
+
|
915
|
+
function copy_fieldset(link) {
|
916
|
+
var last_fieldset = link.closest('fieldset').filter(':last').find('input, select').filter(':first');
|
917
|
+
var idx = get_1st_index(link.closest('form').find('fieldset').filter(':last').find('tr.fields input').filter(':first'));
|
918
|
+
idx = idx+1;
|
919
|
+
var new_fieldset = link.closest('form').find('fieldset').filter(':last').clone();
|
920
|
+
new_fieldset.find('input, select').each(function(){
|
921
|
+
var old_id = this.id;
|
922
|
+
//replace first occurrence of a number (dont want to change anything but the lowest nested attribute)
|
923
|
+
var new_id = old_id.replace(/\d/,idx);
|
924
|
+
this.id = new_id;$('#sortable_answers')
|
925
|
+
var old_name = this.name;
|
926
|
+
var new_name = old_name.replace(/\d/,idx);
|
927
|
+
this.name = new_name;
|
928
|
+
$(this).removeAttr('value');
|
929
|
+
this.disabled = null;
|
930
|
+
});
|
931
|
+
last_fieldset.closest('fieldset').after(new_fieldset)
|
932
|
+
new_fieldset.before('<br />');
|
933
|
+
new_fieldset.focus();
|
934
|
+
return new_fieldset;
|
935
|
+
}
|
936
|
+
function copy_row(link_source,destination) {
|
937
|
+
var last_tr = link_source.closest('fieldset').find('tr.fields').filter(':last').find('input, select').filter(':first');
|
938
|
+
var fsindex = get_1st_index(link_source.closest('fieldset').find('tr.fields input').filter(':first'));
|
939
|
+
var idx = get_index(last_tr);
|
940
|
+
idx = idx+1;
|
941
|
+
var new_tr = link_source.closest('fieldset').find('tr.fields').filter(':last').clone();
|
942
|
+
new_tr.find('input, select').each(function(){
|
943
|
+
var old_id = this.id;
|
944
|
+
//replace last occurrence of a number (dont want to change anything but the lowest nested attribute)
|
945
|
+
var new_id = old_id.replace(/\d(?!.*\d)/g,idx);
|
946
|
+
new_id = new_id.replace(/\d+(?=_fs_products_attributes)/g,fsindex);
|
947
|
+
this.id = new_id;
|
948
|
+
var old_name = this.name;
|
949
|
+
var new_name = old_name.replace(/\d(?!.*\d)/g,idx);
|
950
|
+
new_name = new_name.replace(/\d+(?=_fs_products_attributes)/g,fsindex);
|
951
|
+
this.name = new_name;
|
952
|
+
$(this).removeAttr('value');
|
953
|
+
this.disabled = null;
|
954
|
+
});
|
955
|
+
$(destination).closest('tr').before(new_tr);
|
956
|
+
return new_tr;
|
957
|
+
}
|
958
|
+
|
959
|
+
function update_display_order(link) {
|
960
|
+
$(link).each(function(index, value){
|
961
|
+
$(value).find('input[id$="display_order"]').first().val(index+1);
|
962
|
+
});
|
963
|
+
}
|
964
|
+
|
965
|
+
function get_index(link) {
|
966
|
+
var object_id = link.attr('name');
|
967
|
+
var indexRegExp1 = /\d+(?!.*\d)/g;
|
968
|
+
var idx = parseInt(indexRegExp1.exec(object_id));
|
969
|
+
indexRegExp1.lastIndex = 0;
|
970
|
+
return idx;
|
971
|
+
}
|
972
|
+
|
973
|
+
|
974
|
+
function get_1st_index(link) {
|
975
|
+
//ugly hack. replace later with a more generalized function that pulls the nth index
|
976
|
+
var object_id = link.attr('name');
|
977
|
+
var indexRegExp1 = /\d+/;
|
978
|
+
var idx = parseInt(indexRegExp1.exec(object_id));
|
979
|
+
indexRegExp1.lastIndex = 0;
|
980
|
+
return idx;
|
981
|
+
}
|
982
|
+
|
983
|
+
|
984
|
+
function replace_idx(link, association, content) {
|
985
|
+
var indexRegExp1 = new RegExp("[0-9]+");
|
986
|
+
var idx = $(link).length+1;
|
987
|
+
indexRegExp1.lastIndex = 0;
|
988
|
+
var regexp = new RegExp(association+"_attributes_0", "g");
|
989
|
+
var content = content.replace(regexp, association+"_attributes_"+idx);
|
990
|
+
regexp = new RegExp(association+"_attributes\]\\[0", "g");
|
991
|
+
content = content.replace(regexp, association+"_attributes]["+idx);
|
992
|
+
return content;
|
993
|
+
}
|
994
|
+
|
995
|
+
function update_question_numbers() {
|
996
|
+
//span.questions gets the text for the question, e.g. "1) what is your name?"
|
997
|
+
$('span.questions').each(function(index, value){
|
998
|
+
var regexp = /\d+\)/g;
|
999
|
+
$(value).html($(value).html().replace(regexp, (index+1)+')'));
|
1000
|
+
//display order is a hidden field placed just before span.questions in the DOM
|
1001
|
+
$(value).prev('input[id$="display_order"]').val(index+1);
|
1002
|
+
});
|
1003
|
+
}
|
1004
|
+
|
1005
|
+
|
1006
|
+
function update_answer_display_order () {
|
1007
|
+
$('#sortable_answers').find('input[id$="display_order"]').each(function(index, value){
|
1008
|
+
$(value).val(index);
|
1009
|
+
});
|
1010
|
+
}
|
1011
|
+
|
1012
|
+
function update_dependency_questions() {
|
1013
|
+
$('.question_logic_notifier').closest('div.question').each(function(){
|
1014
|
+
var id = $(this).closest('div.question').attr('id').match(/\d+/)[0]
|
1015
|
+
$.get("/surveyforms/0/replace_question?question_id="+id,
|
1016
|
+
{},
|
1017
|
+
function(response) {
|
1018
|
+
$("#question_"+id).html(replace_idx($("#question_"+id),"questions", response));
|
1019
|
+
//update_question_numbers();
|
1020
|
+
$.unblockUI();
|
1021
|
+
}
|
1022
|
+
);
|
1023
|
+
});
|
1024
|
+
}
|
1025
|
+
|
1026
|
+
function refresh_stars(link) {
|
1027
|
+
if (link === undefined){
|
1028
|
+
$('input[type=radio].star').rating();
|
1029
|
+
}
|
1030
|
+
else {
|
1031
|
+
$(link).find('input[type=radio].star').rating();
|
1032
|
+
}
|
1033
|
+
|
1034
|
+
}
|
1035
|
+
|
1036
|
+
|
1037
|
+
function sortable_sections_and_questions() {
|
1038
|
+
var survey_locked = $('.sortable_sections').data('survey_locked');
|
1039
|
+
|
1040
|
+
if (!survey_locked) {
|
1041
|
+
$('.sortable_sections').sortable({
|
1042
|
+
axis:"y",
|
1043
|
+
opacity: 0.6,
|
1044
|
+
scroll: true,
|
1045
|
+
update: function(){
|
1046
|
+
$.ajax({
|
1047
|
+
type: 'post',
|
1048
|
+
data: $('.sortable_sections').sortable('serialize')+'&survey_id='+$('input#surveyform_id')[0].value,
|
1049
|
+
dataType: 'script',
|
1050
|
+
complete: function(request){
|
1051
|
+
$('#survey_section').effect('highlight');
|
1052
|
+
},
|
1053
|
+
url: '/survey_sections/sort'})
|
1054
|
+
}
|
1055
|
+
});
|
1056
|
+
|
1057
|
+
|
1058
|
+
$('.sortable_group_questions').sortable({
|
1059
|
+
axis:"y",
|
1060
|
+
opacity: 0.6,
|
1061
|
+
scroll: true,
|
1062
|
+
connectWith: ".sortable_group_questions",
|
1063
|
+
update: function(){
|
1064
|
+
var questions = $('.group_inline_question')
|
1065
|
+
var display_order = Math.min.apply(
|
1066
|
+
null,
|
1067
|
+
questions.find(
|
1068
|
+
'input[id*="display_order"]'
|
1069
|
+
).map(
|
1070
|
+
function(){
|
1071
|
+
return parseInt($(this).val());
|
1072
|
+
}
|
1073
|
+
).toArray()
|
1074
|
+
);
|
1075
|
+
$('.group_inline_question').each(function(index, value){
|
1076
|
+
questions.eq(index).find('input[id*="display_order"]').val(display_order+index);
|
1077
|
+
});
|
1078
|
+
}
|
1079
|
+
});
|
1080
|
+
|
1081
|
+
$('.sortable_questions').sortable({
|
1082
|
+
axis:"y",
|
1083
|
+
opacity: 0.6,
|
1084
|
+
scroll: true,
|
1085
|
+
connectWith: ".sortable_questions",
|
1086
|
+
update: function(){
|
1087
|
+
$.ajax({
|
1088
|
+
type: 'post',
|
1089
|
+
data: getAllSerialize()+'&survey_id='+$('input[id*="surveyform_id"]')[0].value,
|
1090
|
+
dataType: 'script',
|
1091
|
+
complete: function(request){
|
1092
|
+
$('#survey_section').effect('highlight');
|
1093
|
+
update_question_numbers();
|
1094
|
+
},
|
1095
|
+
url: '/questions/sort'
|
1096
|
+
})
|
1097
|
+
}
|
1098
|
+
});
|
1099
|
+
}
|
1100
|
+
}
|
1101
|
+
|
1102
|
+
|
1103
|
+
function show_dependency_value(data, target) {
|
1104
|
+
target = target.closest('tr').find('td.answer_field');
|
1105
|
+
data = data.split(',');
|
1106
|
+
var pick = data[0];
|
1107
|
+
var question_type = data[1];
|
1108
|
+
var question_id = data[2];
|
1109
|
+
target.find('.dependency_pick_multiple_choice').hide();
|
1110
|
+
target.find('.dependency_float').hide();
|
1111
|
+
target.find('.dependency_star').hide();
|
1112
|
+
target.find('.dependency_number').hide();
|
1113
|
+
target.find('.dependency_text_box').hide();
|
1114
|
+
target.find('.dependency_date').hide();
|
1115
|
+
target.find('.dependency_text').hide();
|
1116
|
+
target.closest('tr .column_id').hide();
|
1117
|
+
if (/(one|any)/.test(question_type)) {
|
1118
|
+
target.find('.dependency_pick_multiple_choice').show();
|
1119
|
+
}
|
1120
|
+
else if (question_type=="dropdown") {
|
1121
|
+
target.find('.dependency_pick_multiple_choice').show();
|
1122
|
+
}
|
1123
|
+
else if (question_type=="grid_dropdown") {
|
1124
|
+
target.find('.dependency_pick_multiple_choice').show();
|
1125
|
+
target.refresh_dependency_columns(question_type, question_id);
|
1126
|
+
}
|
1127
|
+
else if (question_type=="stars"){
|
1128
|
+
target.find('.dependency_star').show();
|
1129
|
+
}
|
1130
|
+
else if (question_type=='number'){
|
1131
|
+
target.find('.dependency_float').show();
|
1132
|
+
}
|
1133
|
+
else if (question_type=='box'){
|
1134
|
+
target.find('.dependency_text_box').show();
|
1135
|
+
}
|
1136
|
+
else if (question_type=='date'){
|
1137
|
+
target.find('.dependency_date').show();
|
1138
|
+
}
|
1139
|
+
else {
|
1140
|
+
target.find('.dependency_text').show();
|
1141
|
+
}
|
1142
|
+
target.refresh_dependency_answers();
|
1143
|
+
}
|
1144
|
+
|
1145
|
+
function remove_fields(link, dom_to_hide) {
|
1146
|
+
dom_to_hide = dom_to_hide || ".fields";
|
1147
|
+
$(link).prev("input[type=hidden]").val("1");
|
1148
|
+
$(link).closest(dom_to_hide).hide();
|
1149
|
+
}
|
1150
|
+
|
1151
|
+
function remove_dependency_condition(link) {
|
1152
|
+
$(link).prev("input[type=hidden]").val("1");
|
1153
|
+
$(link).closest("tr").hide().prev("tr").hide();
|
1154
|
+
}
|
1155
|
+
|
1156
|
+
|
1157
|
+
function remove_fieldset(link) {
|
1158
|
+
$(link).prev("input[type=hidden]").val("1");
|
1159
|
+
$(link).closest('fieldset').filter(':first').hide();
|
1160
|
+
}
|
1161
|
+
|
1162
|
+
function remove_relation(link, url) {
|
1163
|
+
var return_value =
|
1164
|
+
$.ajax( {
|
1165
|
+
type: "GET",
|
1166
|
+
url: url,
|
1167
|
+
async: false
|
1168
|
+
}
|
1169
|
+
).responseText;
|
1170
|
+
if (return_value === "success"){
|
1171
|
+
$(link).closest('tr').remove();
|
1172
|
+
}
|
1173
|
+
else {
|
1174
|
+
$(link).closest('tr').remove();
|
1175
|
+
}
|
1176
|
+
}
|
1177
|
+
|
1178
|
+
function add_fields(link, association, content) {
|
1179
|
+
var new_id = new Date().getTime();
|
1180
|
+
var regexp = new RegExp("new_" + association, "g");
|
1181
|
+
a=$(link).parent().before(content.replace(regexp, new_id)).prev().find('input[type!="hidden"]').first().focus();
|
1182
|
+
// alert($(link).parent().prev().find('select').last().attr('id'));
|
1183
|
+
}
|
1184
|
+
|
1185
|
+
|
1186
|
+
function update_autocomplete_idx(link) {
|
1187
|
+
elements = $(link).attr('data-update-elements');
|
1188
|
+
if (elements) {
|
1189
|
+
var regexp = new RegExp("autocompleteidx", "g");
|
1190
|
+
var id = $(link).attr('id');
|
1191
|
+
indexRegExp1 = /[0-9]+/g;
|
1192
|
+
idx = parseInt(indexRegExp1.exec(id));
|
1193
|
+
indexRegExp1.lastIndex = 0;
|
1194
|
+
elements = elements.replace(regexp,idx);
|
1195
|
+
$(link).attr('data-update-elements',elements);
|
1196
|
+
}
|
1197
|
+
}
|
1198
|
+
|
1199
|
+
function remove_attachment(object,id,idx) {
|
1200
|
+
//remove the carrierwave attachment, return the mandatory attribute
|
1201
|
+
$.get('/pages/remove_attachment?object='+object+'&id='+id, function(data){
|
1202
|
+
//clear the div containing the old name and delete icon
|
1203
|
+
$('.filename_with_link').html('');
|
1204
|
+
|
1205
|
+
//clear the filename from the form. Unlike other fields, HTML prohibits us from directly altering the value in a file field.
|
1206
|
+
//instead, we need to remove the current <input type='file'> and replace it with a freshly inserted input field.
|
1207
|
+
var file_input = $('input[id="r_'+idx+'_id"]').nextAll('li').find('input[type="file"]');
|
1208
|
+
var par=file_input.parent();
|
1209
|
+
var fi = $('<input>',{
|
1210
|
+
id: file_input.attr('id'),
|
1211
|
+
name: file_input.attr('name'),
|
1212
|
+
type: 'file'
|
1213
|
+
});
|
1214
|
+
fi.attr('data-response_set_id',file_input.attr('data-response_set_id'));
|
1215
|
+
fi.attr('data-object-id',file_input.attr('data-object-id'));
|
1216
|
+
fi.attr('data-object-class', file_input.attr('data-object-class'));
|
1217
|
+
//data returns true if mandatory field or nil
|
1218
|
+
if (data && data==="true") {
|
1219
|
+
fi.attr("required","required");
|
1220
|
+
}
|
1221
|
+
par.html(fi);
|
1222
|
+
|
1223
|
+
//since the response object is gone, need to remove the r_id to, or the controller will think
|
1224
|
+
//this question has a response. That would let a blank field pass even if mandatory, and,
|
1225
|
+
//since this is in a nested form, would get the controller to try an update when the object of the update no longer exists.
|
1226
|
+
$('input[id="r_'+idx+'_id"]').remove();
|
1227
|
+
});
|
1228
|
+
}
|
1229
|
+
|
1230
|
+
function go_back() {
|
1231
|
+
$('#initial_buttons').show();
|
1232
|
+
$('#deny_buttons').hide();
|
1233
|
+
$('#revise_buttons').hide();
|
1234
|
+
$('#show_schedule').show();
|
1235
|
+
$('#revise_schedule').hide();
|
1236
|
+
}
|
1237
|
+
function go_back_2() {
|
1238
|
+
$('#revision_requests').show();
|
1239
|
+
$('#revision_form').hide();
|
1240
|
+
$('#withdrawal_form').hide();
|
1241
|
+
$('#make_revisions_button').show();
|
1242
|
+
}
|
1243
|
+
function show_survey_report_data() {
|
1244
|
+
$('.non_repeater .report_data').show();
|
1245
|
+
$('.show_survey_report_data_button').hide();
|
1246
|
+
}
|
1247
|
+
function hide_survey_report_data() {
|
1248
|
+
$('.surveyor_gui_report .report_data').hide();
|
1249
|
+
$('.show_survey_report_data_button').show();
|
1250
|
+
}
|
1251
|
+
|
1252
|
+
function getGroups() {
|
1253
|
+
var result = {};
|
1254
|
+
var checkbox_names = {};
|
1255
|
+
var ols = $('input[type="checkbox"], input[type="radio"]').closest('ol');
|
1256
|
+
ols.each(function(i) {
|
1257
|
+
var checkbox_names = $.map(
|
1258
|
+
$(this).find('input[type="checkbox"]'),
|
1259
|
+
function(e,i) {
|
1260
|
+
return $(e).attr("name");
|
1261
|
+
}
|
1262
|
+
).join(" ");
|
1263
|
+
result['fieldPair_' + i] = checkbox_names;
|
1264
|
+
});
|
1265
|
+
return result;
|
1266
|
+
}
|
1267
|
+
|
1268
|
+
$.fn.update_single_uislider = function(){
|
1269
|
+
var slider_element = $(this).find('select.uislider').first();
|
1270
|
+
if(slider_element.length>0 && typeof slider_element.selectToUISlider == 'function') {
|
1271
|
+
slider_element.selectToUISlider({
|
1272
|
+
labels:2,
|
1273
|
+
labelSrc: "text",
|
1274
|
+
sliderOptions: {
|
1275
|
+
stop: function(e, ui) { // handle stop sliding event
|
1276
|
+
slider_element.parents('form').trigger('slider_change');
|
1277
|
+
}
|
1278
|
+
}
|
1279
|
+
}).hide();
|
1280
|
+
}
|
1281
|
+
}
|
1282
|
+
|
1283
|
+
function update_uislider(){
|
1284
|
+
$('select.uislider').each(function() {
|
1285
|
+
if(typeof $(this).selectToUISlider == 'function') {
|
1286
|
+
$(this).selectToUISlider({
|
1287
|
+
labels:2,
|
1288
|
+
labelSrc: "text",
|
1289
|
+
sliderOptions: {
|
1290
|
+
stop: function(e, ui) { // handle stop sliding event
|
1291
|
+
$(this).parents('form').trigger('slider_change');
|
1292
|
+
}
|
1293
|
+
}
|
1294
|
+
}).hide();
|
1295
|
+
}
|
1296
|
+
});
|
1297
|
+
}
|
1298
|
+
|
1299
|
+
function update_datepickers(){
|
1300
|
+
$("input.date_picker")
|
1301
|
+
.datepicker({
|
1302
|
+
duration: 'fast',
|
1303
|
+
showOn: 'both',
|
1304
|
+
buttonImage: '../../assets/datepicker.gif',
|
1305
|
+
buttonImageOnly: true
|
1306
|
+
});
|
1307
|
+
$("input.datetime_picker")
|
1308
|
+
.datetimepicker({
|
1309
|
+
duration: 'fast',
|
1310
|
+
showOn: 'both',
|
1311
|
+
buttonImage: '../../assets/datepicker.gif',
|
1312
|
+
buttonImageOnly: true
|
1313
|
+
});
|
1314
|
+
$("input.time_picker")
|
1315
|
+
.timepicker({
|
1316
|
+
duration: 'fast',
|
1317
|
+
showOn: 'both',
|
1318
|
+
buttonImage: '../../assets/datepicker.gif',
|
1319
|
+
buttonImageOnly: true
|
1320
|
+
});
|
1321
|
+
}
|
1322
|
+
|
1323
|
+
$.fn.determine_dependency_question_type = function () {
|
1324
|
+
var target = $(this);
|
1325
|
+
$.get('/dependencys/get_question_type',
|
1326
|
+
'question_id='+$(this).val(),
|
1327
|
+
function(data){
|
1328
|
+
show_dependency_value(data,target);
|
1329
|
+
}
|
1330
|
+
);
|
1331
|
+
}
|
1332
|
+
|
1333
|
+
$.fn.refresh_dependency_answers = function() {
|
1334
|
+
var question_id =
|
1335
|
+
$(this).closest("tr").find('[id*="dependency_attributes_dependency_conditions_attributes"][id$="question_id"]').val();
|
1336
|
+
var column_id =
|
1337
|
+
$(this).closest("tr").find('[id*="dependency_attributes_dependency_conditions_attributes"][id$="column_id"]').val();
|
1338
|
+
var dependency_condition_id =
|
1339
|
+
$(this).closest("tr").find('[id*="dependency_attributes_dependency_conditions_attributes"][id$="_id"]').val();
|
1340
|
+
$(this).closest('tr').find('[id*="dependency_attributes_dependency_conditions_attributes"][id$="answer_id"]')
|
1341
|
+
.load(
|
1342
|
+
'/dependencys/get_answers',
|
1343
|
+
'question_id='+question_id +
|
1344
|
+
'&dependency_condition_id='+dependency_condition_id +
|
1345
|
+
'&column_id='+column_id
|
1346
|
+
);
|
1347
|
+
}
|
1348
|
+
|
1349
|
+
$.fn.refresh_dependency_columns = function(question_type, question_id) {
|
1350
|
+
var column = $(this).closest('tr').find('[id*="dependency_attributes_dependency_conditions_attributes"][id$="column_id"]');
|
1351
|
+
var dependency_condition_id =
|
1352
|
+
$(this).closest("tr").find('[id*="dependency_attributes_dependency_conditions_attributes"][id$="_id"]').val();
|
1353
|
+
column.closest('.column_id').show()
|
1354
|
+
$.get(
|
1355
|
+
'/dependencys/get_columns',
|
1356
|
+
'question_id='+question_id +
|
1357
|
+
'&dependency_condition_id='+dependency_condition_id,
|
1358
|
+
function(data){
|
1359
|
+
column.html(data);
|
1360
|
+
column.refresh_dependency_answers();
|
1361
|
+
});
|
1362
|
+
}
|
1363
|
+
function modal_dialog(title, dialog_content,yes_callback,no_callback){
|
1364
|
+
/* var modal_response="";
|
1365
|
+
$('.modal_button').live('click',function(){
|
1366
|
+
$.colorbox.close();
|
1367
|
+
modal_response = $(this).text();
|
1368
|
+
});
|
1369
|
+
$.colorbox({
|
1370
|
+
html: dialog_content,
|
1371
|
+
width:"400px",
|
1372
|
+
height:"250px",
|
1373
|
+
fixed: true,
|
1374
|
+
scrolling:false,
|
1375
|
+
onLoad: function() {
|
1376
|
+
$('#cboxClose').remove();
|
1377
|
+
},
|
1378
|
+
onClosed:function(){
|
1379
|
+
if (modal_response==="No") {
|
1380
|
+
no_callback();
|
1381
|
+
}
|
1382
|
+
else {
|
1383
|
+
yes_callback();
|
1384
|
+
}
|
1385
|
+
},
|
1386
|
+
opacity:.3
|
1387
|
+
});
|
1388
|
+
*/
|
1389
|
+
$('<div></div>').appendTo('body')
|
1390
|
+
.html(dialog_content)
|
1391
|
+
.dialog({
|
1392
|
+
closeOnEscape: false,
|
1393
|
+
modal: true,
|
1394
|
+
title: title,
|
1395
|
+
zIndex: 10000,
|
1396
|
+
autoOpen: false,
|
1397
|
+
fixed: true,
|
1398
|
+
width: 'auto',
|
1399
|
+
resizable: false,
|
1400
|
+
buttons: {
|
1401
|
+
Yes: function() {
|
1402
|
+
$(this).dialog("close");
|
1403
|
+
yes_callback ();
|
1404
|
+
},
|
1405
|
+
No: function() {
|
1406
|
+
$(this).dialog("close");
|
1407
|
+
no_callback ();
|
1408
|
+
}
|
1409
|
+
},
|
1410
|
+
open: function(event, ui) {
|
1411
|
+
$(".ui-dialog-titlebar-close").hide();
|
1412
|
+
},
|
1413
|
+
close: function (event, ui) {
|
1414
|
+
$(this).remove();
|
1415
|
+
}
|
1416
|
+
}).parent().css({position:"fixed"}).end().dialog('open');
|
1417
|
+
}
|