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.
Files changed (283) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +44 -0
  3. data/.travis.yml +17 -0
  4. data/Gemfile +7 -0
  5. data/LICENSE +21 -0
  6. data/MIT-LICENSE +20 -0
  7. data/README.md +159 -0
  8. data/Rakefile +66 -0
  9. data/app/controllers/answers_controller.rb +3 -0
  10. data/app/controllers/application_controller.rb +3 -0
  11. data/app/controllers/dependencys_controller.rb +286 -0
  12. data/app/controllers/question_groups_controller.rb +84 -0
  13. data/app/controllers/questions_controller.rb +187 -0
  14. data/app/controllers/survey_sections_controller.rb +80 -0
  15. data/app/controllers/surveyforms_controller.rb +4 -0
  16. data/app/controllers/surveyor_controller.rb +89 -0
  17. data/app/controllers/surveyor_gui/reports_controller.rb +339 -0
  18. data/app/controllers/surveyor_gui/responses_controller.rb +39 -0
  19. data/app/controllers/surveyor_gui/survey_controller.rb +16 -0
  20. data/app/facades/report_formatter.rb +44 -0
  21. data/app/facades/report_preview_wrapper.rb +11 -0
  22. data/app/facades/report_response_generator.rb +147 -0
  23. data/app/helpers/application_helper.rb +2 -0
  24. data/app/helpers/dependency_helper.rb +5 -0
  25. data/app/helpers/question_helper.rb +22 -0
  26. data/app/helpers/surveyform_helper.rb +179 -0
  27. data/app/helpers/surveyor_gui/report_helper.rb +19 -0
  28. data/app/helpers/surveyor_helper.rb +4 -0
  29. data/app/inputs/currency_input.rb +5 -0
  30. data/app/inputs/date_picker_input.rb +7 -0
  31. data/app/inputs/datetime_picker_input.rb +5 -0
  32. data/app/inputs/percent_input.rb +5 -0
  33. data/app/inputs/time_picker_input.rb +5 -0
  34. data/app/mailers/.gitkeep +0 -0
  35. data/app/models/.gitkeep +0 -0
  36. data/app/models/answer.rb +4 -0
  37. data/app/models/column.rb +3 -0
  38. data/app/models/dependency.rb +4 -0
  39. data/app/models/dependency_condition.rb +4 -0
  40. data/app/models/permitted_params_decorator.rb +80 -0
  41. data/app/models/question.rb +4 -0
  42. data/app/models/question_group.rb +4 -0
  43. data/app/models/question_type.rb +7 -0
  44. data/app/models/response.rb +4 -0
  45. data/app/models/response_set.rb +4 -0
  46. data/app/models/row.rb +3 -0
  47. data/app/models/survey.rb +4 -0
  48. data/app/models/survey_section.rb +4 -0
  49. data/app/models/surveyform.rb +103 -0
  50. data/app/uploaders/blob_uploader.rb +48 -0
  51. data/app/views/dependencys/_column.html.erb +1 -0
  52. data/app/views/dependencys/_dependency.html.erb +22 -0
  53. data/app/views/dependencys/_dependency_condition_fields.html.erb +48 -0
  54. data/app/views/dependencys/_form.html.erb +20 -0
  55. data/app/views/dependencys/blank.html.erb +0 -0
  56. data/app/views/dependencys/edit.html.erb +1 -0
  57. data/app/views/dependencys/new.html.erb +1 -0
  58. data/app/views/layouts/application.html.erb +14 -0
  59. data/app/views/layouts/surveyor_gui_blank.html.erb +12 -0
  60. data/app/views/layouts/surveyor_gui_default.html.erb +16 -0
  61. data/app/views/layouts/surveyor_modified.html.erb +14 -0
  62. data/app/views/partials/_answer.html.haml +33 -0
  63. data/app/views/partials/_question.html.haml +33 -0
  64. data/app/views/partials/_question_group.html.haml +73 -0
  65. data/app/views/partials/_section.html.haml +13 -0
  66. data/app/views/question_groups/_form.html.erb +56 -0
  67. data/app/views/question_groups/_group_inline_field.html.erb +21 -0
  68. data/app/views/question_groups/_group_inline_fields.html.erb +25 -0
  69. data/app/views/question_groups/blank.html.erb +0 -0
  70. data/app/views/question_groups/edit.html.erb +1 -0
  71. data/app/views/question_groups/new.html.erb +1 -0
  72. data/app/views/questions/_answer_fields.html.erb +23 -0
  73. data/app/views/questions/_answer_options.html.erb +28 -0
  74. data/app/views/questions/_form.html.erb +65 -0
  75. data/app/views/questions/_grid_dropdown_columns.html.erb +10 -0
  76. data/app/views/questions/_grid_dropdown_fields.html.erb +42 -0
  77. data/app/views/questions/_grid_fields.html.erb +9 -0
  78. data/app/views/questions/_no_picks.html.erb +29 -0
  79. data/app/views/questions/_pick.html +21 -0
  80. data/app/views/questions/_picks.html.erb +12 -0
  81. data/app/views/questions/blank.html.erb +0 -0
  82. data/app/views/questions/edit.html.erb +1 -0
  83. data/app/views/questions/new.html.erb +1 -0
  84. data/app/views/survey_sections/_form.html.erb +13 -0
  85. data/app/views/survey_sections/blank.html.erb +0 -0
  86. data/app/views/survey_sections/edit.html.erb +1 -0
  87. data/app/views/survey_sections/new.html.erb +1 -0
  88. data/app/views/surveyforms/_form.html.erb +50 -0
  89. data/app/views/surveyforms/_question_field.html.erb +148 -0
  90. data/app/views/surveyforms/_question_group.html.erb +116 -0
  91. data/app/views/surveyforms/_question_group_fields.html.erb +3 -0
  92. data/app/views/surveyforms/_question_name_and_number.html.erb +6 -0
  93. data/app/views/surveyforms/_question_section.html.erb +15 -0
  94. data/app/views/surveyforms/_question_wrapper.html.erb +109 -0
  95. data/app/views/surveyforms/_survey_section_fields.html.erb +138 -0
  96. data/app/views/surveyforms/clone_survey.html.erb +13 -0
  97. data/app/views/surveyforms/edit.html.erb +5 -0
  98. data/app/views/surveyforms/index.html.erb +40 -0
  99. data/app/views/surveyforms/new.html.erb +1 -0
  100. data/app/views/surveyforms/show.html.erb +5 -0
  101. data/app/views/surveyor_gui/reports/_graphs.html.haml +21 -0
  102. data/app/views/surveyor_gui/reports/_grid.html.haml +42 -0
  103. data/app/views/surveyor_gui/reports/_grid_dropdown.html.haml +56 -0
  104. data/app/views/surveyor_gui/reports/_repeater.html.haml +28 -0
  105. data/app/views/surveyor_gui/reports/_show_report.html.haml +33 -0
  106. data/app/views/surveyor_gui/reports/_single_question.html.haml +70 -0
  107. data/app/views/surveyor_gui/reports/show.html.erb +14 -0
  108. data/app/views/surveyor_gui/responses/_grid.html.haml +20 -0
  109. data/app/views/surveyor_gui/responses/_grid_dropdown.html.haml +20 -0
  110. data/app/views/surveyor_gui/responses/_repeater.html.haml +22 -0
  111. data/app/views/surveyor_gui/responses/_survey_results.html.haml +40 -0
  112. data/app/views/surveyor_gui/responses/index.html.haml +24 -0
  113. data/app/views/surveyor_gui/responses/show.html.haml +42 -0
  114. data/app/views/surveyor_gui/shared/_grid_comments.html.haml +10 -0
  115. data/app/views/surveyor_gui/shared/_new_line.html.haml +2 -0
  116. data/app/views/surveyor_gui/shared/_pick_comments.html.haml +15 -0
  117. data/app/views/surveyor_gui/shared/_question_number.html.haml +9 -0
  118. data/app/views/surveyor_gui/shared/_report_data.html.haml +24 -0
  119. data/app/views/surveyor_gui/shared/_stars_report_data.html.haml +14 -0
  120. data/config.ru +4 -0
  121. data/config/environment.rb +0 -0
  122. data/config/routes.rb +71 -0
  123. data/db/migrate/20140307204049_add_template_to_surveys.rb +5 -0
  124. data/db/migrate/20140307235607_add_test_data_to_response_sets.rb +5 -0
  125. data/db/migrate/20140308171947_add_original_choice_to_answers.rb +5 -0
  126. data/db/migrate/20140308172118_add_blob_to_responses.rb +5 -0
  127. data/db/migrate/20140308172417_add_modifiable_to_survey_section.rb +5 -0
  128. data/db/migrate/20140308174532_add_modifiable_to_question.rb +5 -0
  129. data/db/migrate/20140308175305_add_dynamically_generate_to_questions.rb +5 -0
  130. data/db/migrate/20140311032923_add_dummy_blob_to_questions.rb +5 -0
  131. data/db/migrate/20140311160609_add_dynamic_source_to_questions.rb +5 -0
  132. data/db/migrate/20140311161714_add_report_code_to_questions.rb +5 -0
  133. data/db/migrate/20140530181134_add_is_comment_to_questions.rb +5 -0
  134. data/db/migrate/20140531012006_add_is_comment_to_answers.rb +5 -0
  135. data/db/migrate/20140531225529_create_rows.rb +9 -0
  136. data/db/migrate/20140601011151_create_columns.rb +11 -0
  137. data/db/migrate/20140602030330_add_column_id_to_answers.rb +5 -0
  138. data/db/migrate/20140603155606_add_column_id_to_responses.rb +5 -0
  139. data/db/migrate/20140606023527_add_column_id_to_dependency_conditions.rb +5 -0
  140. data/db/migrate/20140815165307_add_user_id_to_survey.rb +5 -0
  141. data/lib/assets/.gitkeep +0 -0
  142. data/lib/assets/images/addicon.png +0 -0
  143. data/lib/assets/images/datepicker.gif +0 -0
  144. data/lib/assets/images/delete.gif +0 -0
  145. data/lib/assets/images/delete.png +0 -0
  146. data/lib/assets/images/images/border.png +0 -0
  147. data/lib/assets/images/images/controls.png +0 -0
  148. data/lib/assets/images/images/loading.gif +0 -0
  149. data/lib/assets/images/images/loading_background.png +0 -0
  150. data/lib/assets/images/images/overlay.png +0 -0
  151. data/lib/assets/images/rails.png +0 -0
  152. data/lib/assets/images/star.gif +0 -0
  153. data/lib/assets/javascripts/.gitkeep +0 -0
  154. data/lib/assets/javascripts/surveyor_gui/jquery.MetaData.js +121 -0
  155. data/lib/assets/javascripts/surveyor_gui/jquery.blockUI.js +619 -0
  156. data/lib/assets/javascripts/surveyor_gui/jquery.rating.js +377 -0
  157. data/lib/assets/javascripts/surveyor_gui/jquery.validate.js +1188 -0
  158. data/lib/assets/javascripts/surveyor_gui/surveyor_add_ons.js +10 -0
  159. data/lib/assets/javascripts/surveyor_gui/surveyor_gui.js +1417 -0
  160. data/lib/assets/stylesheets/.gitkeep +0 -0
  161. data/lib/assets/stylesheets/surveyor_gui/jquery.rating.css +12 -0
  162. data/lib/assets/stylesheets/surveyor_gui/surveyor_add_ons.css +3 -0
  163. data/lib/assets/stylesheets/surveyor_gui/surveyor_gui.sass +650 -0
  164. data/lib/enumerable_extenders.rb +31 -0
  165. data/lib/generators/surveyor_gui/install_generator.rb +57 -0
  166. data/lib/generators/surveyor_gui/templates/app/assets/javascripts/surveyor_add_ons.js +2 -0
  167. data/lib/generators/surveyor_gui/templates/app/assets/javascripts/surveyor_gui_all.js +24 -0
  168. data/lib/generators/surveyor_gui/templates/app/assets/stylesheets/surveyor_add_ons.css.sass +1 -0
  169. data/lib/generators/surveyor_gui/templates/app/assets/stylesheets/surveyor_gui_all.css.sass +8 -0
  170. data/lib/generators/surveyor_gui/templates/app/helpers/surveyor_helper.rb +4 -0
  171. data/lib/generators/surveyor_gui/templates/app/models/response_set_user.rb +13 -0
  172. data/lib/generators/surveyor_gui/templates/app/views/layouts/surveyor_gui_default.html.erb +16 -0
  173. data/lib/generators/surveyor_gui/templates/config/initializers/simple_form.rb +140 -0
  174. data/lib/generators/surveyor_gui/templates/config/locales/en.yml +5 -0
  175. data/lib/surveyor_gui.rb +17 -0
  176. data/lib/surveyor_gui/engine.rb +30 -0
  177. data/lib/surveyor_gui/helpers/surveyor_helper_methods.rb +19 -0
  178. data/lib/surveyor_gui/models/answer_methods.rb +24 -0
  179. data/lib/surveyor_gui/models/column_methods.rb +43 -0
  180. data/lib/surveyor_gui/models/dependency_condition_methods.rb +53 -0
  181. data/lib/surveyor_gui/models/dependency_methods.rb +83 -0
  182. data/lib/surveyor_gui/models/question_and_group_shared_methods.rb +11 -0
  183. data/lib/surveyor_gui/models/question_group_methods.rb +55 -0
  184. data/lib/surveyor_gui/models/question_methods.rb +435 -0
  185. data/lib/surveyor_gui/models/question_type_methods.rb +493 -0
  186. data/lib/surveyor_gui/models/response_methods.rb +67 -0
  187. data/lib/surveyor_gui/models/response_set_methods.rb +54 -0
  188. data/lib/surveyor_gui/models/row_methods.rb +11 -0
  189. data/lib/surveyor_gui/models/survey_methods.rb +32 -0
  190. data/lib/surveyor_gui/models/survey_section_methods.rb +32 -0
  191. data/lib/surveyor_gui/surveyforms_controller_methods.rb +258 -0
  192. data/lib/surveyor_gui/version.rb +3 -0
  193. data/lib/tasks/.gitkeep +0 -0
  194. data/lib/tasks/surveyor_gui_tasks.rake +4 -0
  195. data/lib/templates/erb/scaffold/_form.html.erb +13 -0
  196. data/spec/controllers/surveyforms_controller_spec.rb +361 -0
  197. data/spec/controllers/surveyor_controller_spec.rb +303 -0
  198. data/spec/factories.rb +181 -0
  199. data/spec/features/create_survey_spec.rb +418 -0
  200. data/spec/features/dependencies_spec.rb +61 -0
  201. data/spec/features/rearrange_survey_spec.rb +118 -0
  202. data/spec/features/ui_spec.rb +469 -0
  203. data/spec/fixtures/REDCapDemoDatabase_DataDictionary.csv +127 -0
  204. data/spec/fixtures/chinese_survey.rb +14 -0
  205. data/spec/fixtures/everything.rb +215 -0
  206. data/spec/fixtures/favorites-ish.rb +22 -0
  207. data/spec/fixtures/favorites.rb +22 -0
  208. data/spec/fixtures/feelings.rb +38 -0
  209. data/spec/fixtures/lifestyle.rb +55 -0
  210. data/spec/fixtures/numbers.rb +21 -0
  211. data/spec/fixtures/redcap_new_headers.csv +1 -0
  212. data/spec/fixtures/redcap_siblings.csv +1 -0
  213. data/spec/fixtures/redcap_whitespace.csv +1 -0
  214. data/spec/helpers/formtastic_custom_input_spec.rb +15 -0
  215. data/spec/helpers/surveyor_helper_spec.rb +116 -0
  216. data/spec/lib/common_spec.rb +37 -0
  217. data/spec/lib/parser_spec.rb +393 -0
  218. data/spec/lib/rake_kitchen_sink.rb +42 -0
  219. data/spec/lib/redcap_parser_spec.rb +129 -0
  220. data/spec/lib/unparser_spec.rb +126 -0
  221. data/spec/models/answer_spec.rb +144 -0
  222. data/spec/models/dependency_condition_spec.rb +428 -0
  223. data/spec/models/dependency_spec.rb +90 -0
  224. data/spec/models/question_group_spec.rb +66 -0
  225. data/spec/models/question_spec.rb +176 -0
  226. data/spec/models/response_set_spec.rb +452 -0
  227. data/spec/models/response_spec.rb +208 -0
  228. data/spec/models/survey_section_spec.rb +58 -0
  229. data/spec/models/survey_spec.rb +155 -0
  230. data/spec/models/surveyor_gui/question_spec.rb +60 -0
  231. data/spec/models/surveyor_gui/question_type_spec.rb +268 -0
  232. data/spec/models/validation_condition_spec.rb +98 -0
  233. data/spec/models/validation_spec.rb +64 -0
  234. data/spec/spec.opts +4 -0
  235. data/spec/spec_helper.rb +119 -0
  236. data/spec/support/scenario_outline_helper.rb +39 -0
  237. data/spec/support/shared.rb +10 -0
  238. data/spec/support/surveyforms_creation_helpers.rb +312 -0
  239. data/spec/support/surveyforms_rearrangement_helpers.rb +170 -0
  240. data/spec/support/surveyor_api_helpers.rb +15 -0
  241. data/spec/support/surveyor_ui_helpers.rb +108 -0
  242. data/spec/support/wait_for_ajax.rb +11 -0
  243. data/spec/views/questions/edit.html.erb_spec.rb +73 -0
  244. data/spec/views/surveyforms/edit.html.erb_spec.rb +126 -0
  245. data/surveyor_gui.gemspec +52 -0
  246. data/test/dummy/README.rdoc +261 -0
  247. data/test/dummy/Rakefile +7 -0
  248. data/test/dummy/app/assets/javascripts/application.js +15 -0
  249. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  250. data/test/dummy/app/controllers/application_controller.rb +3 -0
  251. data/test/dummy/app/helpers/application_helper.rb +2 -0
  252. data/test/dummy/app/mailers/.gitkeep +0 -0
  253. data/test/dummy/app/models/.gitkeep +0 -0
  254. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  255. data/test/dummy/config.ru +4 -0
  256. data/test/dummy/config/application.rb +59 -0
  257. data/test/dummy/config/boot.rb +10 -0
  258. data/test/dummy/config/database.yml +25 -0
  259. data/test/dummy/config/environment.rb +5 -0
  260. data/test/dummy/config/environments/development.rb +37 -0
  261. data/test/dummy/config/environments/production.rb +67 -0
  262. data/test/dummy/config/environments/test.rb +37 -0
  263. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  264. data/test/dummy/config/initializers/inflections.rb +15 -0
  265. data/test/dummy/config/initializers/mime_types.rb +5 -0
  266. data/test/dummy/config/initializers/secret_token.rb +7 -0
  267. data/test/dummy/config/initializers/session_store.rb +8 -0
  268. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  269. data/test/dummy/config/locales/en.yml +5 -0
  270. data/test/dummy/config/routes.rb +58 -0
  271. data/test/dummy/lib/assets/.gitkeep +0 -0
  272. data/test/dummy/log/.gitkeep +0 -0
  273. data/test/dummy/public/404.html +26 -0
  274. data/test/dummy/public/422.html +26 -0
  275. data/test/dummy/public/500.html +25 -0
  276. data/test/dummy/public/favicon.ico +0 -0
  277. data/test/dummy/script/rails +6 -0
  278. data/test/surveyor-gui_test.rb +7 -0
  279. data/test/test_helper.rb +15 -0
  280. data/vendor/assets/stylesheets/.gitkeep +0 -0
  281. data/vendor/assets/stylesheets/custom.sass +5 -0
  282. data/vendor/plugins/.gitkeep +0 -0
  283. metadata +664 -0
@@ -0,0 +1,31 @@
1
+ module Enumerable
2
+ def dups
3
+ inject({}) {|h,v| h[v]=h[v].to_i+1; h}.reject{|k,v| v==1}.keys
4
+ end
5
+
6
+ # sum of an array of numbers
7
+ def arraysum
8
+ return self.inject(0){|acc,i|acc +i}
9
+ end
10
+
11
+ # average of an array of numbers
12
+ def average
13
+ return self.sum/self.length.to_f
14
+ end
15
+
16
+ # variance of an array of numbers
17
+ def sample_variance
18
+ avg=self.average
19
+ sum=self.inject(0){|acc,i|acc +(i-avg)**2}
20
+ return(1/self.length.to_f*sum)
21
+ end
22
+
23
+ # standard deviation of an array of numbers
24
+ def standard_deviation
25
+ return Math.sqrt(self.sample_variance)
26
+ end
27
+
28
+
29
+ end
30
+
31
+
@@ -0,0 +1,57 @@
1
+ require 'rails/generators'
2
+
3
+ module SurveyorGui
4
+ class InstallGenerator < Rails::Generators::Base
5
+
6
+ source_root File.expand_path("../templates", __FILE__)
7
+ desc "Generate surveyor README, migrations, assets and sample survey"
8
+ class_option :skip_migrations, :type => :boolean, :desc => "skip migrations, but generate everything else"
9
+
10
+ def dependencies
11
+ generate "simple_form:install"
12
+ generate "surveyor:install"
13
+ rake "db:migrate db:test:prepare"
14
+ rake "highcharts:update"
15
+ unless options[:skip_migration]
16
+ rake 'railties:install:migrations'
17
+ end
18
+ rake "db:migrate db:test:prepare"
19
+ end
20
+
21
+ def configurations
22
+ replace_simple_forms_configuration_rb
23
+ add_i18n_enforce_locales
24
+ end
25
+
26
+ def routes
27
+ route('mount SurveyorGui::Engine => "/", :as => "surveyor_gui"')
28
+ end
29
+
30
+ def assets
31
+ directory "app/assets"
32
+ directory "app/models"
33
+ directory "app/views"
34
+ end
35
+
36
+ private
37
+
38
+ def replace_simple_forms_configuration_rb
39
+ #formatting of radio buttons and checkboxes sensitive to the configuration.
40
+ #The newer version of simple_forms defaults to a form_building approach
41
+ #that changes the wrapping of input fields; it breaks selectors in jquery
42
+ #code. Flipping a few switches in the configuration gets the code to work.
43
+ remove_file File.expand_path('config/initializers/simple_form.rb',Rails.root)
44
+ template "config/initializers/simple_form.rb"
45
+ end
46
+
47
+ def add_i18n_enforce_locales
48
+ #gets rid of 18n deprecation message:
49
+ #"I18n.enforce_available_locales will default to true in the future. If you really
50
+ #want to skip validation of your locale you can set I18n.enforce_available_locales
51
+ #= false to avoid this message."
52
+ inject_into_file "config/application.rb",
53
+ "config.i18n.enforce_available_locales = true",
54
+ :after => "config.encoding = \"utf-8\"\n"
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,2 @@
1
+ //= require surveyor_gui/jquery.rating
2
+ //= require surveyor_gui/surveyor_add_ons
@@ -0,0 +1,24 @@
1
+ //= require jquery
2
+ //= require jquery_ujs
3
+ //= require jquery.ui.draggable
4
+ //= require jquery.ui.droppable
5
+ //= require jquery.ui.sortable
6
+ //= require jquery.ui.accordion
7
+ //= require jquery.ui.autocomplete
8
+ //= require jquery.ui.button
9
+ //= require jquery.ui.datepicker
10
+ //= require jquery.ui.slider
11
+ //= require jquery.ui.tabs
12
+ //= require jquery.ui.tooltip
13
+ //= require jquery.ui.datepicker-pt-BR
14
+ //= require colorbox-rails
15
+ //= require jquery.form
16
+ //= require surveyor/jquery.selectToUISlider
17
+ //= require surveyor/jquery-ui-timepicker-addon
18
+ //= require surveyor_gui/jquery.validate
19
+ //= require surveyor_gui/jquery.blockUI
20
+ //= require surveyor_gui/jquery.MetaData.js
21
+ //= require surveyor_gui/jquery.rating
22
+ //= require surveyor_gui/surveyor_gui
23
+ //= require highcharts/highcharts
24
+ //= require highcharts/highcharts-more
@@ -0,0 +1,8 @@
1
+ @import surveyor_gui/surveyor_gui
2
+ @import jquery.ui.all
3
+ @import themes/jquery.ui.ui-lightness
4
+ @import colorbox-rails
5
+ @import surveyor/ui.slider.extras
6
+ @import surveyor/jquery-ui-timepicker-addon
7
+ @import surveyor_gui/jquery.rating
8
+ @import surveyor_gui/surveyor_add_ons
@@ -0,0 +1,4 @@
1
+ module SurveyorHelper
2
+ include Surveyor::Helpers::SurveyorHelperMethods
3
+ include SurveyorGui::Helpers::SurveyorGuiHelperMethods
4
+ end
@@ -0,0 +1,13 @@
1
+ class ResponseSetUser
2
+ def initialize(user_id)
3
+ #find the user. You can use the commented code below, but switch the model name
4
+ #if your user model is not User.
5
+ #
6
+ #@user = User.find_by_id(user_id)
7
+ end
8
+
9
+ def report_user_name
10
+ #return a value to identify users on a report, e.g.:
11
+ #@user ? @user.email : nil
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>SurveyorGui</title>
5
+ <%= stylesheet_link_tag "surveyor_gui_all", :media => "all" %>
6
+ <%= javascript_include_tag "surveyor_gui_all" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+ <% flash.each do |key, value| %>
11
+ <%= content_tag(:div, value, :class => "flash #{key}") %>
12
+ <% end %>
13
+ <%= yield %>
14
+
15
+ </body>
16
+ </html>
@@ -0,0 +1,140 @@
1
+ # surveyor_gui mods to the simple_form config
2
+ # Use this setup block to configure all options available in SimpleForm.
3
+ SimpleForm.setup do |config|
4
+ # Wrappers are used by the form builder to generate a
5
+ # complete input. You can remove any component from the
6
+ # wrapper, change the order or even add your own to the
7
+ # stack. The options given below are used to wrap the
8
+ # whole input.
9
+ config.wrappers :default, :class => :input,
10
+ :hint_class => :field_with_hint, :error_class => :field_with_errors do |b|
11
+ ## Extensions enabled by default
12
+ # Any of these extensions can be disabled for a
13
+ # given input by passing: `f.input EXTENSION_NAME => false`.
14
+ # You can make any of these extensions optional by
15
+ # renaming `b.use` to `b.optional`.
16
+
17
+ # Determines whether to use HTML5 (:email, :url, ...)
18
+ # and required attributes
19
+ b.use :html5
20
+
21
+ # Calculates placeholders automatically from I18n
22
+ # You can also pass a string as f.input :placeholder => "Placeholder"
23
+ b.use :placeholder
24
+
25
+ ## Optional extensions
26
+ # They are disabled unless you pass `f.input EXTENSION_NAME => :lookup`
27
+ # to the input. If so, they will retrieve the values from the model
28
+ # if any exists. If you want to enable the lookup for any of those
29
+ # extensions by default, you can change `b.optional` to `b.use`.
30
+
31
+ # Calculates maxlength from length validations for string inputs
32
+ b.optional :maxlength
33
+
34
+ # Calculates pattern from format validations for string inputs
35
+ b.optional :pattern
36
+
37
+ # Calculates min and max from length validations for numeric inputs
38
+ b.optional :min_max
39
+
40
+ # Calculates readonly automatically from readonly attributes
41
+ b.optional :readonly
42
+
43
+ ## Inputs
44
+ b.use :label_input
45
+ b.use :hint, :wrap_with => { :tag => :span, :class => :hint }
46
+ b.use :error, :wrap_with => { :tag => :span, :class => :error }
47
+ end
48
+
49
+ # The default wrapper to be used by the FormBuilder.
50
+ config.default_wrapper = :default
51
+
52
+ # Define the way to render check boxes / radio buttons with labels.
53
+ # Defaults to :nested for bootstrap config.
54
+ # :inline => input + label
55
+ # :nested => label > input
56
+ config.boolean_style = :inline
57
+
58
+ # Default class for buttons
59
+ config.button_class = 'btn'
60
+
61
+ # Method used to tidy up errors. Specify any Rails Array method.
62
+ # :first lists the first message for each field.
63
+ # Use :to_sentence to list all errors for each field.
64
+ # config.error_method = :first
65
+
66
+ # Default tag used for error notification helper.
67
+ config.error_notification_tag = :div
68
+
69
+ # CSS class to add for error notification helper.
70
+ config.error_notification_class = 'alert alert-error'
71
+
72
+ # ID to add for error notification helper.
73
+ # config.error_notification_id = nil
74
+
75
+ # Series of attempts to detect a default label method for collection.
76
+ # config.collection_label_methods = [ :to_label, :name, :title, :to_s ]
77
+
78
+ # Series of attempts to detect a default value method for collection.
79
+ # config.collection_value_methods = [ :id, :to_s ]
80
+
81
+ # You can wrap a collection of radio/check boxes in a pre-defined tag, defaulting to none.
82
+ # config.collection_wrapper_tag = nil
83
+
84
+ # You can define the class to use on all collection wrappers. Defaulting to none.
85
+ # config.collection_wrapper_class = nil
86
+
87
+ # You can wrap each item in a collection of radio/check boxes with a tag,
88
+ # defaulting to :span. Please note that when using :boolean_style = :nested,
89
+ # SimpleForm will force this option to be a label.
90
+ # config.item_wrapper_tag = :span
91
+
92
+ # You can define a class to use in all item wrappers. Defaulting to none.
93
+ # config.item_wrapper_class = nil
94
+
95
+ # How the label text should be generated altogether with the required text.
96
+ # config.label_text = lambda { |label, required| "#{required} #{label}" }
97
+
98
+ # You can define the class to use on all labels. Default is nil.
99
+ config.label_class = 'control-label'
100
+
101
+ # You can define the class to use on all forms. Default is simple_form.
102
+ # config.form_class = :simple_form
103
+
104
+ # You can define which elements should obtain additional classes
105
+ # config.generate_additional_classes_for = [:wrapper, :label, :input]
106
+
107
+ # Whether attributes are required by default (or not). Default is true.
108
+ # config.required_by_default = true
109
+
110
+ # Tell browsers whether to use default HTML5 validations (novalidate option).
111
+ # Default is enabled.
112
+ config.browser_validations = false
113
+
114
+ # Collection of methods to detect if a file type was given.
115
+ # config.file_methods = [ :mounted_as, :file?, :public_filename ]
116
+
117
+ # Custom mappings for input types. This should be a hash containing a regexp
118
+ # to match as key, and the input type that will be used when the field name
119
+ # matches the regexp as value.
120
+ # config.input_mappings = { /count/ => :integer }
121
+
122
+ # Custom wrappers for input types. This should be a hash containing an input
123
+ # type as key and the wrapper that will be used for all inputs with specified type.
124
+ # config.wrapper_mappings = { :string => :prepend }
125
+
126
+ # Default priority for time_zone inputs.
127
+ # config.time_zone_priority = nil
128
+
129
+ # Default priority for country inputs.
130
+ # config.country_priority = nil
131
+
132
+ # When false, do not use translations for labels.
133
+ # config.translate_labels = true
134
+
135
+ # Automatically discover new inputs in Rails' autoload path.
136
+ # config.inputs_discovery = true
137
+
138
+ # Cache SimpleForm inputs discovery
139
+ # config.cache_discovery = !Rails.env.development?
140
+ end
@@ -0,0 +1,5 @@
1
+ en:
2
+ activerecord:
3
+ attributes:
4
+ question:
5
+ text: "Question"
@@ -0,0 +1,17 @@
1
+ module SurveyorGui
2
+ require 'surveyor_gui/engine' if defined?(Rails) && Rails::VERSION::MAJOR >= 3
3
+ autoload :VERSION, 'surveyor_gui/version'
4
+ end
5
+ require 'jquery-rails'
6
+ require 'sass-rails'
7
+ require 'jquery-ui-sass-rails'
8
+
9
+ require 'will_paginate'
10
+ require 'simple_form'
11
+ require 'colorbox-rails'
12
+ require 'jquery-form-rails'
13
+ require 'carrierwave'
14
+ require 'surveyor'
15
+ require 'dynamic_form'
16
+ require 'lazy_high_charts'
17
+ require 'enumerable_extenders'
@@ -0,0 +1,30 @@
1
+ require 'rails'
2
+ require 'surveyor_gui'
3
+ require 'haml' # required for view resolution
4
+
5
+ module SurveyorGui
6
+ class Engine < Rails::Engine
7
+ root = File.expand_path('../../', __FILE__)
8
+ config.autoload_paths << root
9
+
10
+ config.to_prepare do
11
+ Dir.glob(root + "/surveyor_gui/models/*.rb").each do |c|
12
+ require_dependency(c)
13
+ end
14
+ Dir.glob(root + "/surveyor_gui/helpers/*.rb").each do |c|
15
+ require_dependency(c)
16
+ end
17
+ Dir.glob(root + "app/facades/*.rb").each do |c|
18
+ require_dependency(c)
19
+ end
20
+ c = Dir.glob(File.expand_path('../',root)+'/app/controllers/surveyor_controller.rb').first
21
+ require_dependency(c)
22
+ Dir.glob(File.expand_path('../',root)+'/app/models/*.rb').each do |c|
23
+ require_dependency(c)
24
+ end
25
+ end
26
+ initializer "surveyor_gui.assets.precompile" do |app|
27
+ app.config.assets.precompile += %w[surveyor_all.js surveyor_gui_all.js surveyor_all.css surveyor_gui_all.css surveyor_add_ons.js surveyor_add_ons.css *.png *.gif]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,19 @@
1
+ module SurveyorGui
2
+ module Helpers
3
+ module SurveyorGuiHelperMethods
4
+ # Responses
5
+ def response_for(response_set, question, answer = nil, response_group = nil, column_id = nil)
6
+ return nil unless response_set && question && question.id
7
+ result = response_set.responses.detect{|r|
8
+ (r.question_id == question.id) &&
9
+ (answer.blank? ? true : r.answer_id == answer.id) &&
10
+ (r.response_group.blank? ? true : r.response_group.to_i == response_group.to_i) &&
11
+ (r.column_id.blank? ? true : r.column_id == column_id.to_i)}
12
+ result.blank? ? response_set.responses.build(
13
+ question_id: question.id,
14
+ response_group: response_group,
15
+ column_id: column_id) : result
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ module SurveyorGui
2
+ module Models
3
+ module AnswerMethods
4
+
5
+ def self.included(base)
6
+ base.send :belongs_to, :question
7
+ base.send :has_many, :responses
8
+ base.send :belongs_to, :column
9
+ base.send :default_scope, lambda { base.order('display_order') }
10
+ base.send :attr_accessible, :text, :response_class, :display_order, :original_choice, :hide_label, :question_id,
11
+ :display_type, :is_comment, :column if defined? ActiveModel::MassAssignmentSecurity
12
+ base.send :scope, :is_not_comment, -> { base.where(is_comment: false) }
13
+ base.send :scope, :is_comment, -> { base.where(is_comment: true) }
14
+ end
15
+
16
+ def split_or_hidden_text(part = nil)
17
+ #return "" if hide_label.to_s == "true"
18
+ return "" if display_type.to_s == "hidden_label"
19
+ part == :pre ? text.split("|",2)[0] : (part == :post ? text.split("|",2)[1] : text)
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,43 @@
1
+ require 'surveyor/common'
2
+ module SurveyorGui
3
+ module Models
4
+ module ColumnMethods
5
+ extend ActiveSupport::Concern
6
+ include ActiveModel::Validations
7
+ include Surveyor::MustacheContext
8
+ include ActiveModel::ForbiddenAttributesProtection
9
+
10
+ included do
11
+ belongs_to :question_group
12
+ has_many :answers
13
+ attr_accessible *PermittedParams.new.column_attributes if defined? ActiveModel::MassAssignmentSecurity
14
+ end
15
+ def text_for(position = nil, context = nil, locale = nil)
16
+ split(in_context(translation(locale)[:text], context), position)
17
+ end
18
+ def help_text_for(context = nil, locale = nil)
19
+ in_context(translation(locale)[:help_text], context)
20
+ end
21
+ def split(text, position=nil)
22
+ case position
23
+ when :pre
24
+ text.split("|",2)[0]
25
+ when :post
26
+ text.split("|",2)[1]
27
+ else
28
+ text
29
+ end.to_s
30
+ end
31
+ def translation(locale)
32
+ {:text => self.text, :help_text => self.help_text}.with_indifferent_access.merge(
33
+ (self.question_group.questions.first.survey_section.translation(locale)[:columns] || {})[self.reference_identifier] || {}
34
+ )
35
+ end
36
+ def help_text
37
+ #stub
38
+ end
39
+ def reference_identifier
40
+ end
41
+ end
42
+ end
43
+ end