wice_grid 3.6.2 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +41 -0
  3. data/.circleci/run-build-locally.sh +7 -0
  4. data/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
  5. data/.gitignore +5 -2
  6. data/Appraisals +11 -0
  7. data/CHANGELOG.md +38 -1
  8. data/Gemfile.lock +299 -0
  9. data/README.md +77 -34
  10. data/config/locales/ja.yml +3 -3
  11. data/gemfiles/rails_5.0.gemfile +7 -0
  12. data/gemfiles/rails_5.0.gemfile.lock +291 -0
  13. data/gemfiles/rails_5.1.gemfile +7 -0
  14. data/gemfiles/rails_5.1.gemfile.lock +291 -0
  15. data/gemfiles/rails_5.2.gemfile +7 -0
  16. data/gemfiles/rails_5.2.gemfile.lock +299 -0
  17. data/lib/wice/columns.rb +13 -6
  18. data/lib/wice/columns/column_integer.rb +11 -1
  19. data/lib/wice/columns/column_rails_datetime_helper.rb +3 -2
  20. data/lib/wice/columns/column_range.rb +6 -4
  21. data/lib/wice/grid_renderer.rb +23 -7
  22. data/lib/wice/helpers/bs_calendar_helpers.rb +9 -1
  23. data/lib/wice/helpers/wice_grid_view_helpers.rb +6 -6
  24. data/lib/wice/wice_grid_controller.rb +7 -5
  25. data/lib/wice/wice_grid_core_ext.rb +5 -1
  26. data/lib/wice/wice_grid_misc.rb +1 -1
  27. data/lib/wice_grid.rb +86 -59
  28. data/spec/acceptance_helper.rb +58 -0
  29. data/spec/features/action_column_request_spec.rb +280 -0
  30. data/spec/features/adding_rows_request_spec.rb +21 -0
  31. data/spec/features/all_records_request_spec.rb +18 -0
  32. data/spec/features/auto_reloads2_request_spec.rb +349 -0
  33. data/spec/features/auto_reloads3_request_spec.rb +130 -0
  34. data/spec/features/auto_reloads_request_spec.rb +348 -0
  35. data/spec/features/basics1_request_spec.rb +11 -0
  36. data/spec/features/basics2_request_spec.rb +10 -0
  37. data/spec/features/basics3_request_spec.rb +29 -0
  38. data/spec/features/basics4_request_spec.rb +19 -0
  39. data/spec/features/basics5_request_spec.rb +13 -0
  40. data/spec/features/basics6_request_spec.rb +22 -0
  41. data/spec/features/blockless_column_definition_spec.rb +27 -0
  42. data/spec/features/buttons_request_spec.rb +172 -0
  43. data/spec/features/csv_and_detached_filters_spec.rb +10 -0
  44. data/spec/features/csv_export_request_spec.rb +13 -0
  45. data/spec/features/custom_filter_params_request_spec.rb +29 -0
  46. data/spec/features/custom_filters1_request_spec.rb +155 -0
  47. data/spec/features/custom_filters2_request_spec.rb +53 -0
  48. data/spec/features/custom_filters3_request_spec.rb +50 -0
  49. data/spec/features/custom_filters4_request_spec.rb +13 -0
  50. data/spec/features/custom_ordering_on_calculated_request_spec.rb +30 -0
  51. data/spec/features/custom_ordering_request_spec.rb +36 -0
  52. data/spec/features/custom_ordering_with_arel_request_spec.rb +36 -0
  53. data/spec/features/custom_ordering_with_proc_request_spec.rb +44 -0
  54. data/spec/features/custom_ordering_with_ruby_request_spec.rb +30 -0
  55. data/spec/features/dates_request_spec.rb +56 -0
  56. data/spec/features/detached_filters_spec.rb +10 -0
  57. data/spec/features/detached_filters_two_grids_spec.rb +127 -0
  58. data/spec/features/disable_all_filters_spec.rb +22 -0
  59. data/spec/features/hiding_checkboxes_in_action_column_request_spec.rb +294 -0
  60. data/spec/features/integration_with_application_view_request_spec.rb +43 -0
  61. data/spec/features/integration_with_forms_request_spec.rb +141 -0
  62. data/spec/features/joining_tables_spec.rb +40 -0
  63. data/spec/features/localization_request_spec.rb +24 -0
  64. data/spec/features/many_grids_on_page_request_spec.rb +104 -0
  65. data/spec/features/negation_request_spec.rb +25 -0
  66. data/spec/features/no_records_request_spec.rb +26 -0
  67. data/spec/features/numeric_filters_request_spec.rb +10 -0
  68. data/spec/features/resultset_processings2_request_spec.rb +27 -0
  69. data/spec/features/resultset_processings_request_spec.rb +30 -0
  70. data/spec/features/saved_queries_request_spec.rb +120 -0
  71. data/spec/features/shared.rb +1005 -0
  72. data/spec/features/shared_detached_filters.rb +158 -0
  73. data/spec/features/styling_spec.rb +15 -0
  74. data/spec/features/two_associations_spec.rb +48 -0
  75. data/spec/features/upper_pagination_panel_request_spec.rb +23 -0
  76. data/spec/features/when_filtered_spec.rb +209 -0
  77. data/spec/fixtures/.gitkeep +0 -0
  78. data/spec/fixtures/companies.yml +21 -0
  79. data/spec/fixtures/priorities.yml +31 -0
  80. data/spec/fixtures/project_roles.yml +25 -0
  81. data/spec/fixtures/projects.yml +22 -0
  82. data/spec/fixtures/statuses.yml +55 -0
  83. data/spec/fixtures/tasks.yml +751 -0
  84. data/spec/fixtures/tasks_users.yml +2089 -0
  85. data/spec/fixtures/users.yml +61 -0
  86. data/spec/fixtures/versions.yml +78 -0
  87. data/spec/models/company_spec.rb +6 -0
  88. data/spec/models/priority_spec.rb +6 -0
  89. data/spec/models/project_spec.rb +11 -0
  90. data/spec/models/status_spec.rb +6 -0
  91. data/spec/models/task_spec.rb +12 -0
  92. data/spec/models/user_project_participation_spec.rb +7 -0
  93. data/spec/models/user_spec.rb +12 -0
  94. data/spec/models/version_spec.rb +5 -0
  95. data/spec/rails_helper.rb +15 -0
  96. data/spec/spec_helper.rb +10 -9
  97. data/spec/support/test_app/Rakefile +3 -0
  98. data/spec/support/test_app/app/assets/javascripts/application.js +20 -0
  99. data/spec/support/test_app/app/assets/javascripts/common.js.coffee +6 -0
  100. data/spec/support/test_app/app/assets/javascripts/jquery.ui.datepicker.locales.js +56 -0
  101. data/spec/support/test_app/app/assets/stylesheets/adding_rows.scss +3 -0
  102. data/spec/support/test_app/app/assets/stylesheets/application.scss +46 -0
  103. data/spec/support/test_app/app/assets/stylesheets/csv_and_detached_filters.scss +3 -0
  104. data/spec/support/test_app/app/assets/stylesheets/many_grids_on_page.scss +3 -0
  105. data/spec/support/test_app/app/controllers/action_column_controller.rb +15 -0
  106. data/spec/support/test_app/app/controllers/adding_rows_controller.rb +14 -0
  107. data/spec/support/test_app/app/controllers/all_records_controller.rb +14 -0
  108. data/spec/support/test_app/app/controllers/application_controller.rb +99 -0
  109. data/spec/support/test_app/app/controllers/auto_reloads2_controller.rb +14 -0
  110. data/spec/support/test_app/app/controllers/auto_reloads3_controller.rb +20 -0
  111. data/spec/support/test_app/app/controllers/auto_reloads_controller.rb +14 -0
  112. data/spec/support/test_app/app/controllers/basics1_controller.rb +6 -0
  113. data/spec/support/test_app/app/controllers/basics2_controller.rb +6 -0
  114. data/spec/support/test_app/app/controllers/basics3_controller.rb +6 -0
  115. data/spec/support/test_app/app/controllers/basics4_controller.rb +6 -0
  116. data/spec/support/test_app/app/controllers/basics5_controller.rb +6 -0
  117. data/spec/support/test_app/app/controllers/basics6_controller.rb +11 -0
  118. data/spec/support/test_app/app/controllers/blockless_column_definition_controller.rb +6 -0
  119. data/spec/support/test_app/app/controllers/buttons_controller.rb +6 -0
  120. data/spec/support/test_app/app/controllers/csv_and_detached_filters_controller.rb +13 -0
  121. data/spec/support/test_app/app/controllers/csv_export_controller.rb +28 -0
  122. data/spec/support/test_app/app/controllers/custom_filter_params_controller.rb +6 -0
  123. data/spec/support/test_app/app/controllers/custom_filters1_controller.rb +9 -0
  124. data/spec/support/test_app/app/controllers/custom_filters2_controller.rb +14 -0
  125. data/spec/support/test_app/app/controllers/custom_filters3_controller.rb +12 -0
  126. data/spec/support/test_app/app/controllers/custom_filters4_controller.rb +12 -0
  127. data/spec/support/test_app/app/controllers/custom_ordering_controller.rb +18 -0
  128. data/spec/support/test_app/app/controllers/custom_ordering_on_calculated_controller.rb +6 -0
  129. data/spec/support/test_app/app/controllers/custom_ordering_with_arel_controller.rb +18 -0
  130. data/spec/support/test_app/app/controllers/custom_ordering_with_proc_controller.rb +11 -0
  131. data/spec/support/test_app/app/controllers/custom_ordering_with_ruby_controller.rb +6 -0
  132. data/spec/support/test_app/app/controllers/dates_controller.rb +8 -0
  133. data/spec/support/test_app/app/controllers/detached_filters_controller.rb +6 -0
  134. data/spec/support/test_app/app/controllers/detached_filters_two_grids_controller.rb +7 -0
  135. data/spec/support/test_app/app/controllers/disable_all_filters_controller.rb +6 -0
  136. data/spec/support/test_app/app/controllers/hiding_checkboxes_in_action_column_controller.rb +13 -0
  137. data/spec/support/test_app/app/controllers/home_controller.rb +3 -0
  138. data/spec/support/test_app/app/controllers/integration_with_application_view_controller.rb +16 -0
  139. data/spec/support/test_app/app/controllers/integration_with_forms_controller.rb +11 -0
  140. data/spec/support/test_app/app/controllers/joining_tables_controller.rb +11 -0
  141. data/spec/support/test_app/app/controllers/localization_controller.rb +26 -0
  142. data/spec/support/test_app/app/controllers/many_grids_on_page_controller.rb +7 -0
  143. data/spec/support/test_app/app/controllers/negation_controller.rb +14 -0
  144. data/spec/support/test_app/app/controllers/no_records_controller.rb +8 -0
  145. data/spec/support/test_app/app/controllers/null_values_controller.rb +10 -0
  146. data/spec/support/test_app/app/controllers/numeric_filters_controller.rb +6 -0
  147. data/spec/support/test_app/app/controllers/queries_controller.rb +4 -0
  148. data/spec/support/test_app/app/controllers/resultset_processings2_controller.rb +29 -0
  149. data/spec/support/test_app/app/controllers/resultset_processings_controller.rb +30 -0
  150. data/spec/support/test_app/app/controllers/saved_queries_controller.rb +14 -0
  151. data/spec/support/test_app/app/controllers/styling_controller.rb +7 -0
  152. data/spec/support/test_app/app/controllers/tasks_controller.rb +14 -0
  153. data/spec/support/test_app/app/controllers/two_associations_controller.rb +6 -0
  154. data/spec/support/test_app/app/controllers/upper_pagination_panel_controller.rb +6 -0
  155. data/spec/support/test_app/app/controllers/when_filtered_controller.rb +6 -0
  156. data/spec/support/test_app/app/helpers/application_helper.rb +82 -0
  157. data/spec/support/test_app/app/mailers/.gitkeep +0 -0
  158. data/spec/support/test_app/app/models/.gitkeep +0 -0
  159. data/spec/support/test_app/app/models/company.rb +5 -0
  160. data/spec/support/test_app/app/models/populate.rb +84 -0
  161. data/spec/support/test_app/app/models/priority.rb +10 -0
  162. data/spec/support/test_app/app/models/project.rb +14 -0
  163. data/spec/support/test_app/app/models/project_role.rb +3 -0
  164. data/spec/support/test_app/app/models/status.rb +10 -0
  165. data/spec/support/test_app/app/models/task.rb +11 -0
  166. data/spec/support/test_app/app/models/to_dropdown_mixin.rb +16 -0
  167. data/spec/support/test_app/app/models/user.rb +8 -0
  168. data/spec/support/test_app/app/models/user_project_participation.rb +6 -0
  169. data/spec/support/test_app/app/models/version.rb +6 -0
  170. data/spec/support/test_app/app/views/action_column/_grid.html.erb +35 -0
  171. data/spec/support/test_app/app/views/action_column/index.html.haml +45 -0
  172. data/spec/support/test_app/app/views/adding_rows/_grid.html.erb +58 -0
  173. data/spec/support/test_app/app/views/adding_rows/index.html.haml +37 -0
  174. data/spec/support/test_app/app/views/all_records/_grid.html.erb +30 -0
  175. data/spec/support/test_app/app/views/all_records/index.html.haml +12 -0
  176. data/spec/support/test_app/app/views/auto_reloads/_grid.html.erb +32 -0
  177. data/spec/support/test_app/app/views/auto_reloads/index.html.haml +15 -0
  178. data/spec/support/test_app/app/views/auto_reloads2/_grid.html.erb +32 -0
  179. data/spec/support/test_app/app/views/auto_reloads2/index.html.haml +65 -0
  180. data/spec/support/test_app/app/views/auto_reloads3/_grid.html.erb +25 -0
  181. data/spec/support/test_app/app/views/auto_reloads3/index.html.haml +78 -0
  182. data/spec/support/test_app/app/views/basics1/_grid.html.erb +26 -0
  183. data/spec/support/test_app/app/views/basics1/index.html.haml +13 -0
  184. data/spec/support/test_app/app/views/basics2/_grid.html.erb +27 -0
  185. data/spec/support/test_app/app/views/basics2/index.html.haml +12 -0
  186. data/spec/support/test_app/app/views/basics3/_grid.html.erb +28 -0
  187. data/spec/support/test_app/app/views/basics3/index.html.haml +13 -0
  188. data/spec/support/test_app/app/views/basics4/_grid.html.erb +21 -0
  189. data/spec/support/test_app/app/views/basics4/index.html.haml +12 -0
  190. data/spec/support/test_app/app/views/basics5/_grid.html.erb +19 -0
  191. data/spec/support/test_app/app/views/basics5/index.html.haml +12 -0
  192. data/spec/support/test_app/app/views/basics6/_grid.html.erb +19 -0
  193. data/spec/support/test_app/app/views/basics6/index.html.haml +23 -0
  194. data/spec/support/test_app/app/views/blockless_column_definition/_grid.html.erb +19 -0
  195. data/spec/support/test_app/app/views/blockless_column_definition/index.html.haml +15 -0
  196. data/spec/support/test_app/app/views/buttons/_grid.html.erb +20 -0
  197. data/spec/support/test_app/app/views/buttons/index.html.haml +30 -0
  198. data/spec/support/test_app/app/views/csv_and_detached_filters/_grid.html.erb +23 -0
  199. data/spec/support/test_app/app/views/csv_and_detached_filters/index.html.haml +58 -0
  200. data/spec/support/test_app/app/views/csv_export/_projects_grid.html.erb +17 -0
  201. data/spec/support/test_app/app/views/csv_export/_tasks_grid.html.erb +43 -0
  202. data/spec/support/test_app/app/views/csv_export/index.html.haml +90 -0
  203. data/spec/support/test_app/app/views/custom_filter_params/_grid.html.erb +12 -0
  204. data/spec/support/test_app/app/views/custom_filter_params/index.html.haml +12 -0
  205. data/spec/support/test_app/app/views/custom_filters1/_g1.html.erb +8 -0
  206. data/spec/support/test_app/app/views/custom_filters1/_g2.html.erb +9 -0
  207. data/spec/support/test_app/app/views/custom_filters1/_g3.html.erb +9 -0
  208. data/spec/support/test_app/app/views/custom_filters1/_g4.html.erb +8 -0
  209. data/spec/support/test_app/app/views/custom_filters1/index.html.haml +30 -0
  210. data/spec/support/test_app/app/views/custom_filters2/_grid.html.erb +30 -0
  211. data/spec/support/test_app/app/views/custom_filters2/index.html.haml +41 -0
  212. data/spec/support/test_app/app/views/custom_filters3/_grid.html.erb +18 -0
  213. data/spec/support/test_app/app/views/custom_filters3/index.html.haml +16 -0
  214. data/spec/support/test_app/app/views/custom_filters4/_grid.html.erb +20 -0
  215. data/spec/support/test_app/app/views/custom_filters4/index.html.haml +12 -0
  216. data/spec/support/test_app/app/views/custom_ordering/_grid.html.erb +10 -0
  217. data/spec/support/test_app/app/views/custom_ordering/index.html.haml +24 -0
  218. data/spec/support/test_app/app/views/custom_ordering_on_calculated/_grid.html.erb +14 -0
  219. data/spec/support/test_app/app/views/custom_ordering_on_calculated/index.html.haml +23 -0
  220. data/spec/support/test_app/app/views/custom_ordering_with_arel/_grid.html.erb +10 -0
  221. data/spec/support/test_app/app/views/custom_ordering_with_arel/index.html.haml +24 -0
  222. data/spec/support/test_app/app/views/custom_ordering_with_proc/_grid.html.erb +10 -0
  223. data/spec/support/test_app/app/views/custom_ordering_with_proc/index.html.haml +21 -0
  224. data/spec/support/test_app/app/views/custom_ordering_with_ruby/_grid.html.erb +10 -0
  225. data/spec/support/test_app/app/views/custom_ordering_with_ruby/index.html.haml +23 -0
  226. data/spec/support/test_app/app/views/dates/_grid.html.erb +25 -0
  227. data/spec/support/test_app/app/views/dates/index.html.haml +52 -0
  228. data/spec/support/test_app/app/views/detached_filters/_grid.html.erb +23 -0
  229. data/spec/support/test_app/app/views/detached_filters/index.html.haml +79 -0
  230. data/spec/support/test_app/app/views/detached_filters_two_grids/_grid.html.erb +23 -0
  231. data/spec/support/test_app/app/views/detached_filters_two_grids/index.html.haml +85 -0
  232. data/spec/support/test_app/app/views/disable_all_filters/_grid.html.erb +21 -0
  233. data/spec/support/test_app/app/views/disable_all_filters/index.html.haml +14 -0
  234. data/spec/support/test_app/app/views/hiding_checkboxes_in_action_column/_grid.html.erb +34 -0
  235. data/spec/support/test_app/app/views/hiding_checkboxes_in_action_column/index.html.haml +32 -0
  236. data/spec/support/test_app/app/views/integration_with_application_view/_grid.html.erb +27 -0
  237. data/spec/support/test_app/app/views/integration_with_application_view/index.html.haml +33 -0
  238. data/spec/support/test_app/app/views/integration_with_forms/_grid.html.erb +23 -0
  239. data/spec/support/test_app/app/views/integration_with_forms/index.html.haml +18 -0
  240. data/spec/support/test_app/app/views/joining_tables/_grid.html.erb +23 -0
  241. data/spec/support/test_app/app/views/joining_tables/index.html.haml +26 -0
  242. data/spec/support/test_app/app/views/layouts/application.html.haml +61 -0
  243. data/spec/support/test_app/app/views/localization/_grid.html.erb +36 -0
  244. data/spec/support/test_app/app/views/localization/index.html.haml +20 -0
  245. data/spec/support/test_app/app/views/many_grids_on_page/_tasks_grid1.html.erb +12 -0
  246. data/spec/support/test_app/app/views/many_grids_on_page/_tasks_grid2.html.erb +12 -0
  247. data/spec/support/test_app/app/views/many_grids_on_page/index.html.haml +26 -0
  248. data/spec/support/test_app/app/views/negation/_grid.html.erb +30 -0
  249. data/spec/support/test_app/app/views/negation/index.html.haml +15 -0
  250. data/spec/support/test_app/app/views/no_records/_empty_grid.html.haml +1 -0
  251. data/spec/support/test_app/app/views/no_records/_grid1.html.erb +11 -0
  252. data/spec/support/test_app/app/views/no_records/_grid2.html.erb +9 -0
  253. data/spec/support/test_app/app/views/no_records/_grid3.html.erb +9 -0
  254. data/spec/support/test_app/app/views/no_records/index.html.haml +24 -0
  255. data/spec/support/test_app/app/views/null_values/_grid.html.erb +17 -0
  256. data/spec/support/test_app/app/views/null_values/index.html.haml +21 -0
  257. data/spec/support/test_app/app/views/numeric_filters/_grid.html.erb +19 -0
  258. data/spec/support/test_app/app/views/numeric_filters/index.html.haml +12 -0
  259. data/spec/support/test_app/app/views/resultset_processings/_grid.html.erb +27 -0
  260. data/spec/support/test_app/app/views/resultset_processings/index.html.haml +50 -0
  261. data/spec/support/test_app/app/views/resultset_processings2/_grid.html.erb +27 -0
  262. data/spec/support/test_app/app/views/resultset_processings2/index.html.haml +48 -0
  263. data/spec/support/test_app/app/views/saved_queries/_grid.html.erb +30 -0
  264. data/spec/support/test_app/app/views/saved_queries/index.html.haml +15 -0
  265. data/spec/support/test_app/app/views/styling/_grid1.html.erb +12 -0
  266. data/spec/support/test_app/app/views/styling/_grid2.html.erb +31 -0
  267. data/spec/support/test_app/app/views/styling/index.html.haml +65 -0
  268. data/spec/support/test_app/app/views/tasks/_grid.html.erb +19 -0
  269. data/spec/support/test_app/app/views/tasks/index.html.haml +1 -0
  270. data/spec/support/test_app/app/views/two_associations/_grid.html.erb +13 -0
  271. data/spec/support/test_app/app/views/two_associations/index.html.haml +13 -0
  272. data/spec/support/test_app/app/views/upper_pagination_panel/_grid.html.erb +27 -0
  273. data/spec/support/test_app/app/views/upper_pagination_panel/index.html.haml +14 -0
  274. data/spec/support/test_app/app/views/when_filtered/_grid.html.erb +19 -0
  275. data/spec/support/test_app/app/views/when_filtered/index.html.haml +15 -0
  276. data/spec/support/test_app/bin/rails +4 -0
  277. data/spec/support/test_app/bin/rake +4 -0
  278. data/spec/support/test_app/config.ru +5 -0
  279. data/spec/support/test_app/config/application.rb +70 -0
  280. data/spec/support/test_app/config/boot.rb +7 -0
  281. data/spec/support/test_app/config/database.travis.yml +27 -0
  282. data/spec/support/test_app/config/database.yml +16 -0
  283. data/spec/support/test_app/config/database.yml.mysql +19 -0
  284. data/spec/support/test_app/config/database.yml.postgresql +18 -0
  285. data/spec/support/test_app/config/environment.rb +6 -0
  286. data/spec/support/test_app/config/environments/development.rb +34 -0
  287. data/spec/support/test_app/config/environments/production.rb +66 -0
  288. data/spec/support/test_app/config/environments/test.rb +34 -0
  289. data/spec/support/test_app/config/initializers/backtrace_silencers.rb +8 -0
  290. data/spec/support/test_app/config/initializers/inflections.rb +16 -0
  291. data/spec/support/test_app/config/initializers/mime_types.rb +6 -0
  292. data/spec/support/test_app/config/initializers/secret_token.rb +12 -0
  293. data/spec/support/test_app/config/initializers/session_store.rb +9 -0
  294. data/spec/support/test_app/config/initializers/wice_grid_config.rb +163 -0
  295. data/spec/support/test_app/config/initializers/wrap_parameters.rb +15 -0
  296. data/spec/support/test_app/config/locales/en.yml +5 -0
  297. data/spec/support/test_app/config/locales/wice_grid.yml +550 -0
  298. data/spec/support/test_app/config/puma.rb +15 -0
  299. data/spec/support/test_app/config/routes.rb +125 -0
  300. data/spec/support/test_app/db/migrate/20120224193505_create_tasks.rb +27 -0
  301. data/spec/support/test_app/db/migrate/20120224193517_create_users.rb +12 -0
  302. data/spec/support/test_app/db/migrate/20120224193522_create_projects.rb +14 -0
  303. data/spec/support/test_app/db/migrate/20120224193529_create_priorities.rb +13 -0
  304. data/spec/support/test_app/db/migrate/20120224193537_create_statuses.rb +13 -0
  305. data/spec/support/test_app/db/migrate/20120224193543_create_versions.rb +15 -0
  306. data/spec/support/test_app/db/migrate/20120224193550_create_project_roles.rb +12 -0
  307. data/spec/support/test_app/db/migrate/20120224193610_create_companies.rb +12 -0
  308. data/spec/support/test_app/db/migrate/20120224195351_create_user_project_participations.rb +16 -0
  309. data/spec/support/test_app/db/migrate/20120224195521_add_tasks_users.rb +11 -0
  310. data/spec/support/test_app/db/migrate/20120610091944_create_wice_grid_serialized_queries.rb +14 -0
  311. data/spec/support/test_app/db/schema.rb +139 -0
  312. data/spec/support/test_app/db/seeds.rb +10 -0
  313. data/spec/support/test_app/lib/ar_fixtures.rb +100 -0
  314. data/spec/support/test_app/lib/assets/.gitkeep +0 -0
  315. data/spec/support/test_app/lib/tasks/.gitkeep +0 -0
  316. data/spec/support/test_app/lib/tasks/ar_fixtures.rake +45 -0
  317. data/spec/support/test_app/public/404.html +26 -0
  318. data/spec/support/test_app/public/422.html +26 -0
  319. data/spec/support/test_app/public/500.html +25 -0
  320. data/spec/support/test_app/public/favicon.ico +0 -0
  321. data/spec/support/test_app/public/robots.txt +5 -0
  322. data/spec/wice/grid_output_buffer_spec.rb +2 -2
  323. data/spec/wice/table_column_matrix_spec.rb +1 -1
  324. data/vendor/assets/javascripts/wice_grid_init.js.coffee +16 -4
  325. data/vendor/assets/javascripts/wice_grid_saved_queries_init.js.coffee +1 -0
  326. data/wice_grid.gemspec +29 -9
  327. metadata +606 -62
  328. data/release_notes/RELEASE_NOTES_3.2.pre1.rdoc +0 -81
  329. data/release_notes/RELEASE_NOTES_3.2.pre2.rdoc +0 -6
  330. data/release_notes/RELEASE_NOTES_3.3.0.rdoc +0 -21
  331. data/spec/support/wice_grid_test_config.rb +0 -173
  332. data/test/readme.txt +0 -1
@@ -0,0 +1,10 @@
1
+ # encoding: utf-8
2
+ class Priority < ActiveRecord::Base
3
+ has_many :tasks
4
+
5
+ include ToDropdownMixin
6
+
7
+ def self.urgent
8
+ find_by_name('Urgent')
9
+ end
10
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+ class Project < ActiveRecord::Base
3
+ has_many :tasks
4
+ has_many :user_project_participations
5
+
6
+ has_many :users, through: :user_project_participations
7
+
8
+ has_many :versions
9
+
10
+ belongs_to :customer, class_name: 'Company'
11
+ belongs_to :supplier, class_name: 'Company'
12
+
13
+ include ToDropdownMixin
14
+ end
@@ -0,0 +1,3 @@
1
+ # encoding: utf-8
2
+ class ProjectRole < ActiveRecord::Base
3
+ end
@@ -0,0 +1,10 @@
1
+ # encoding: utf-8
2
+ class Status < ActiveRecord::Base
3
+ has_many :tasks
4
+
5
+ include ToDropdownMixin
6
+
7
+ def number_of_vowels
8
+ name.scan(/[aeiou]/i).count
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+ class Task < ActiveRecord::Base
3
+ belongs_to :created_by, class_name: 'User'
4
+ belongs_to :project
5
+ belongs_to :priority
6
+ belongs_to :status
7
+ belongs_to :relevant_version, class_name: 'Version'
8
+ belongs_to :expected_version, class_name: 'Version'
9
+
10
+ has_and_belongs_to_many :assigned_users, -> { order('users.name') }, class_name: 'User'
11
+ end
@@ -0,0 +1,16 @@
1
+ # encoding: utf-8
2
+ module ToDropdownMixin
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ end
6
+
7
+ module ClassMethods
8
+ def to_dropdown
9
+ order('name').map(&:to_option)
10
+ end
11
+ end
12
+
13
+ def to_option
14
+ [name, id]
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ class User < ActiveRecord::Base
3
+ has_many :created_tasks, class_name: 'Task', foreign_key: :created_by_id
4
+ has_and_belongs_to_many :assigned_tasks, class_name: 'Task'
5
+
6
+ has_many :user_project_participations
7
+ has_many :projects, through: :user_project_participations
8
+ end
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ class UserProjectParticipation < ActiveRecord::Base
3
+ belongs_to :user
4
+ belongs_to :project
5
+ belongs_to :project_role
6
+ end
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ class Version < ActiveRecord::Base
3
+ belongs_to :project
4
+
5
+ include ToDropdownMixin
6
+ end
@@ -0,0 +1,35 @@
1
+ <%= grid(@tasks_grid) do |g|
2
+
3
+ g.action_column html_check_box: false
4
+ # The default param_name is 'selected', the complete HTTP parameter will be "#{grid_name}[#{param_name}][]"
5
+
6
+ # Or:
7
+ # g.action_column param_name: :foo, html: {class: 'my_class'},
8
+ # select_all_buttons: false, object_property: :id
9
+
10
+
11
+ g.column name: 'ID', attribute: 'id', filter_type: :range
12
+
13
+ g.column name: 'Title', attribute: 'title', negation: true
14
+
15
+ g.column name: 'Archived', attribute: 'archived' do |rec|
16
+ rec.archived? ? 'Yes' : 'No'
17
+ end
18
+
19
+
20
+ g.column name: 'Status', attribute: 'status_id', custom_filter: Status.to_dropdown do |task|
21
+ task.status.name if task.status
22
+ end
23
+
24
+ g.column name: 'Project Name', attribute: 'project_id', custom_filter: Project.to_dropdown do |task|
25
+ task.project.name if task.project
26
+ end
27
+
28
+ g.column name: 'Due Date', attribute: 'due_date'
29
+
30
+
31
+ g.column name: 'Added', attribute: 'created_at' do |task|
32
+ task.created_at.to_s(:db)
33
+ end
34
+
35
+ end -%>
@@ -0,0 +1,45 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ You can easily add a column with checkboxes for each row with
5
+ %code g.action_column
6
+ \.
7
+ Normally WiceGrid does not use a form, but its filters work correctly when placed inside a form, so you can use a form to process
8
+ the selected records while keeping the state of the filters. Another way could be reading the selected checkoxes with the help
9
+ of a simple javascript.
10
+ %p
11
+ By default the checkboxes have name
12
+ %code "grid_name[selected][]"
13
+ , but you can change
14
+ %code selected
15
+ to something else with parameter
16
+ %code param_name: 'my-parameter-name'
17
+ %p
18
+ The value of the checkox is the id by default, but you can change it with parameter
19
+ %code object_property: 'some_object_property'
20
+ \.
21
+ %p
22
+ %code select_all_buttons: false
23
+ hides the "(de)select all" icons, and
24
+ %code html: {class: 'my_class'}
25
+ changes the css class of the checkboxes.
26
+
27
+ = show_code
28
+
29
+ = dump_filter_parameters_as_hidden_fields(@tasks_grid)
30
+ = form_for '#', method: :get do
31
+
32
+ - if @selected
33
+ .well
34
+ Selected tasks:
35
+ = @selected.to_sentence
36
+
37
+ .row-fluid
38
+ .col-md-12
39
+ %p
40
+ %button.btn.btn-default{'type' => 'submit'} Process tasks
41
+
42
+ = render 'grid'
43
+
44
+ %p
45
+ %button.btn.btn-default{'type' => 'submit'} Process tasks
@@ -0,0 +1,58 @@
1
+ <%= grid(@tasks_grid) do |g|
2
+
3
+ g.after_row do |task, number_of_columns|
4
+ if task.priority == Priority.urgent
5
+ content_tag(:tr,
6
+ content_tag(:td,
7
+ content_tag(:button, "Panic! \"#{task.title}\" is urgent!", class: "btn btn-danger"),
8
+ colspan: number_of_columns),
9
+ class: 'extra-row')
10
+ else
11
+ nil
12
+ end
13
+ end
14
+
15
+ g.last_row do |number_of_columns|
16
+ content_tag(:tr,
17
+ content_tag(:td,
18
+ content_tag(:button, "Don't panic", class: "btn btn-info"),
19
+ colspan: 9),
20
+ class: 'last-row')
21
+ end
22
+
23
+ g.row_attributes do |task|
24
+ if task.priority == Priority.urgent
25
+ {class: 'urgent'}
26
+ end
27
+ end
28
+
29
+
30
+ g.column name: 'ID', attribute: 'id', filter: false
31
+
32
+ g.column name: 'Title', attribute: 'title'
33
+
34
+ g.column name: 'Priority', attribute: 'priority_id', custom_filter: Priority.to_dropdown do |task|
35
+ task.priority.name if task.priority
36
+ end
37
+
38
+ g.column name: 'Status', attribute: 'status_id', custom_filter: Status.to_dropdown do |task|
39
+ task.status.name if task.status
40
+ end
41
+
42
+ g.column name: 'Project Name', attribute: 'project_id', custom_filter: Project.to_dropdown do |task|
43
+ task.project.name if task.project
44
+ end
45
+
46
+ g.column name: 'Archived', attribute: 'archived' do |task|
47
+ task.archived? ? 'Yes' : 'No'
48
+ end
49
+
50
+ g.column name: 'Added', attribute: 'created_at' do |task|
51
+ task.created_at.to_s(:short)
52
+ end
53
+
54
+ g.column do |task|
55
+ link_to('Edit', edit_task_path(task))
56
+ end
57
+ end
58
+ -%>
@@ -0,0 +1,37 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ It is possible to insert a custom row at the bottom of the grid with
5
+ %code last_row
6
+ and a custom row before or after a certain row with
7
+ %code before_row
8
+ and
9
+ %code after_row.
10
+ %p
11
+ The block of
12
+ %code before_row
13
+ or
14
+ %code after_row
15
+ is executed for each record and if it returns a string.
16
+ %p
17
+ Both
18
+ %code before_row
19
+ and
20
+ %code last_row
21
+ are expected to return the complete markup for a table row starting with the
22
+ %code tr
23
+ tag.
24
+ %p
25
+ The first argument for a
26
+ %code last_row
27
+ block and the second argument for
28
+ %code before_row
29
+ and
30
+ %code after_row
31
+ blocks is the number of columns in the grid.
32
+
33
+ = show_code
34
+
35
+ .row-fluid
36
+ .col-md-12
37
+ = render 'grid'
@@ -0,0 +1,30 @@
1
+ <%= grid(@tasks_grid, allow_showing_all_records: false) do |g|
2
+
3
+ g.column name: 'ID', attribute: 'id', filter: false
4
+
5
+ g.column name: 'Title', attribute: 'title'
6
+
7
+ g.column name: 'Priority', attribute: 'priority_id', custom_filter: Priority.to_dropdown do |task|
8
+ task.priority.name if task.priority
9
+ end
10
+
11
+ g.column name: 'Status', attribute: 'status_id', custom_filter: Status.to_dropdown do |task|
12
+ task.status.name if task.status
13
+ end
14
+
15
+ g.column name: 'Project Name', attribute: 'project_id', custom_filter: Project.to_dropdown do |task|
16
+ task.project.name if task.project
17
+ end
18
+
19
+ g.column name: 'Archived', attribute: 'archived' do |task|
20
+ task.archived? ? 'Yes' : 'No'
21
+ end
22
+
23
+ g.column name: 'Added', attribute: 'created_at' do |task|
24
+ task.created_at.to_s(:short)
25
+ end
26
+
27
+ g.column do |task|
28
+ link_to('Edit', edit_task_path(task))
29
+ end
30
+ end -%>
@@ -0,0 +1,12 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ Use
5
+ %code allow_showing_all_records: false
6
+ to remove "show all" link from the grid.
7
+
8
+ = show_code
9
+
10
+ .row-fluid
11
+ .col-md-12
12
+ = render 'grid'
@@ -0,0 +1,32 @@
1
+ <%= grid(@tasks_grid, hide_submit_button: true) do |g|
2
+
3
+ g.column name: 'ID', attribute: 'id', auto_reload: true , filter_type: :range
4
+
5
+ g.column name: 'Title', attribute: 'title', auto_reload: true, negation: true
6
+
7
+ g.column name: 'Archived', attribute: 'archived', auto_reload: true do |rec|
8
+ rec.archived? ? 'Yes' : 'No'
9
+ end
10
+
11
+
12
+ g.column name: 'Status', attribute: 'status_id', custom_filter: Status.to_dropdown, auto_reload: true do |task|
13
+ task.status.name if task.status
14
+ end
15
+
16
+ g.column name: 'Project Name', attribute: 'project_id', custom_filter: Project.to_dropdown, auto_reload: true do |task|
17
+ task.project.name if task.project
18
+ end
19
+
20
+ g.column name: 'Due Date', attribute: 'due_date', auto_reload: true do |task|
21
+ task.due_date if task.due_date
22
+ end
23
+
24
+
25
+ g.column name: 'Added', attribute: 'created_at', auto_reload: true do |task|
26
+ task.created_at.to_s(:db)
27
+ end
28
+
29
+ g.column do |task|
30
+ link_to('Edit', edit_task_path(task))
31
+ end
32
+ end -%>
@@ -0,0 +1,15 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ It is possible to reload the grid on each filter action like changing the selected option in a dropdown filter or typing in a text filter.
5
+ One way to do it is to use
6
+ %code auto_reload: true
7
+ for each column. Another way is changing
8
+ %code Wice::Defaults::AUTO_RELOAD
9
+ in the WiceGrid config file.
10
+
11
+ = show_code
12
+
13
+ .row-fluid
14
+ .col-md-12
15
+ = render 'grid'
@@ -0,0 +1,32 @@
1
+ <%= define_grid(@tasks_grid, hide_submit_button: true) do |g|
2
+
3
+ g.column name: 'ID', attribute: 'id', auto_reload: true, detach_with_id: :id, filter_type: :range
4
+
5
+ g.column name: 'Title', attribute: 'title', auto_reload: true, negation: true, detach_with_id: :title
6
+
7
+ g.column name: 'Archived', attribute: 'archived', auto_reload: true, detach_with_id: :archived do |rec|
8
+ rec.archived? ? 'Yes' : 'No'
9
+ end
10
+
11
+
12
+ g.column name: 'Status', attribute: 'status_id', custom_filter: Status.to_dropdown, auto_reload: true, detach_with_id: :status_id do |task|
13
+ task.status.name if task.status
14
+ end
15
+
16
+ g.column name: 'Project Name', attribute: 'project_id', custom_filter: Project.to_dropdown, auto_reload: true, detach_with_id: :project_id do |task|
17
+ task.project.name if task.project
18
+ end
19
+
20
+ g.column name: 'Due Date', attribute: 'due_date', auto_reload: true, detach_with_id: :due_date do |task|
21
+ task.due_date if task.due_date
22
+ end
23
+
24
+
25
+ g.column name: 'Added', attribute: 'created_at', auto_reload: true, detach_with_id: :created_at do |task|
26
+ task.created_at.to_s(:db)
27
+ end
28
+
29
+ g.column do |task|
30
+ link_to('Edit', edit_task_path(task))
31
+ end
32
+ end -%>
@@ -0,0 +1,65 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ An example with an autoreloading grid with detached filters.
5
+
6
+ = show_code
7
+
8
+ = render 'grid'
9
+
10
+
11
+ .row
12
+ .col-md-2
13
+ ID:
14
+ .col-md-10
15
+ = grid_filter @tasks_grid, :id
16
+
17
+ .row
18
+ .col-md-2
19
+ Title:
20
+ .col-md-10
21
+ = grid_filter @tasks_grid, :title
22
+
23
+ .row
24
+ .col-md-2
25
+ Archived:
26
+ .col-md-10
27
+ = grid_filter @tasks_grid, :archived
28
+
29
+
30
+ .row
31
+ .col-md-2
32
+ Status:
33
+ .col-md-10
34
+ = grid_filter @tasks_grid, :status_id
35
+
36
+ .row
37
+ .col-md-2
38
+ Project:
39
+ .col-md-10
40
+ = grid_filter @tasks_grid, :project_id
41
+
42
+
43
+ .row
44
+ .col-md-2
45
+ Due date:
46
+ .col-md-10
47
+ = grid_filter @tasks_grid, :due_date
48
+
49
+
50
+ .row
51
+ .col-md-2
52
+ Added:
53
+ .col-md-10
54
+ = grid_filter @tasks_grid, :created_at
55
+
56
+
57
+ .row
58
+ .col-md-12
59
+ .external-buttons
60
+ %button.btn.btn-default.wg-external-reset-button{'data-grid-name' => 'grid'} Reset
61
+
62
+ .row
63
+ .col-md-12
64
+
65
+ = render_grid(@tasks_grid)