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,58 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ CSV export works with
5
+ %code define_grid
6
+ and external filters, too.
7
+
8
+ = show_code
9
+
10
+ = render 'grid'
11
+
12
+
13
+ .row
14
+ .col-md-2
15
+ ID:
16
+ .col-md-10
17
+ = grid_filter @tasks_grid, :id_filter
18
+
19
+ .row
20
+ .col-md-2
21
+ Title:
22
+ .col-md-10
23
+ = grid_filter @tasks_grid, :title_filter
24
+
25
+ .row
26
+ .col-md-2
27
+ Description:
28
+ .col-md-10
29
+ = grid_filter @tasks_grid, :description_filter
30
+
31
+ .row
32
+ .col-md-2
33
+ Archived:
34
+ .col-md-10
35
+ = grid_filter @tasks_grid, :archived_filter
36
+
37
+
38
+ .row
39
+ .col-md-2
40
+ Due date:
41
+ .col-md-10
42
+ = grid_filter @tasks_grid, :due_date
43
+
44
+
45
+ .row
46
+ .col-md-12
47
+ %button.btn.btn-primary.wg-external-submit-button{'data-grid-name' => 'grid'} Submit
48
+ %button.btn.btn-default.wg-external-reset-button{'data-grid-name' => 'grid'} Reset
49
+ %button.btn.btn-primary.wg-external-csv-export-button{'data-grid-name' => 'grid'} Export To CSV
50
+
51
+ %p
52
+
53
+ .row
54
+ .col-md-12
55
+
56
+
57
+
58
+ = render_grid(@tasks_grid)
@@ -0,0 +1,17 @@
1
+ <%= grid(@projects_grid, show_filters: :always, hide_csv_button: true) do |g|
2
+
3
+ g.column name: 'ID', attribute: 'id', filter: false
4
+
5
+ g.column name: 'Project Name', attribute: 'name'
6
+
7
+
8
+ g.column name: 'Customer company', assoc: :customer, attribute: 'name' do |task|
9
+ task.customer.name if task.customer
10
+ end
11
+
12
+ g.column name: 'Supplier company',
13
+ assoc: :supplier, attribute: 'name', table_alias: 'suppliers_projects' do |task|
14
+ task.supplier.name if task.supplier
15
+ end
16
+
17
+ end -%>
@@ -0,0 +1,43 @@
1
+ <%= grid(@tasks_grid, upper_pagination_panel: true) do |g|
2
+
3
+ g.column name: 'ID', attribute: 'id', filter: false
4
+
5
+ # html version
6
+ g.column name: 'Title', attribute: 'title', in_csv: false do |task|
7
+ link_to('Edit', edit_task_path(task.title))
8
+ end
9
+ # plain text version
10
+ g.column name: 'Title', in_html: false do |task|
11
+ task.title
12
+ end
13
+
14
+ g.column name: 'Priority', attribute: 'priority_id', custom_filter: Priority.to_dropdown do |task|
15
+ task.priority.name if task.priority
16
+ end
17
+
18
+ g.column name: 'Status', attribute: 'status_id', custom_filter: Status.to_dropdown do |task|
19
+ task.status.name if task.status
20
+ end
21
+
22
+ # html version
23
+ g.column name: 'Project Name', attribute: 'project_id', custom_filter: Project.to_dropdown, in_csv: false do |task|
24
+ link_to_if(task.project, task.project.name, project_path(task.project) )
25
+ end
26
+ # plain text version
27
+ g.column name: 'Project Name', in_html: false do |task|
28
+ task.project.name if task.project
29
+ end
30
+
31
+ g.column name: 'Archived', attribute: 'archived' do |task|
32
+ task.archived? ? 'Yes' : 'No'
33
+ end
34
+
35
+ g.column name: 'Added', attribute: 'created_at' do |task|
36
+ task.created_at.to_s(:short)
37
+ end
38
+
39
+ # is not included into csv
40
+ g.column in_csv: false do |task|
41
+ link_to('Edit', edit_task_path(task))
42
+ end
43
+ end -%>
@@ -0,0 +1,90 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ A grid can export itself in the form of a CSV file. The contents of the file corresponds to the selected subset of all records,
5
+ that is, the CSV export follows the state of filters and sorting.
6
+ %p
7
+ To enable CSV export for a grid please do the following:
8
+ %ol
9
+ %li Make sure that the grid helper is in its own partial and there are no other elements in that partial including whitespaces
10
+ %li
11
+ Enable CSV export by adding
12
+ %code enable_export_to_csv: true
13
+ to
14
+ %code initialize_grid
15
+ %li
16
+ Set the name of the exported file using option
17
+ %code :csv_file_name
18
+ in
19
+ %code initialize_grid
20
+ %li
21
+ Change the CSV field separator by adding
22
+ %code csv_field_separator: 'your-separator'
23
+ to
24
+ %code initialize_grid
25
+ \.
26
+ The default field separator is the comma, and you can change the default by editing the value of
27
+ %code Wice::Defaults::CSV_FIELD_SEPARATOR
28
+ in the config file
29
+
30
+ %li
31
+ The action code should be finished by a call to
32
+ %code export_grid_if_requested
33
+ \:
34
+ :plain
35
+ <pre>
36
+ export_grid_if_requested('g1' => 'tasks_grid', 'g2' => 'projects_grid') do
37
+ # usual render or redirect code executed if the request is not a CSV export request
38
+ end
39
+ </pre>
40
+ The block is executed if the call is not a request for a CSV file, so place your usual
41
+ %code redirect_to
42
+ ,
43
+ %code render
44
+ inside the block, or just skip it if your action does not have an explicit render:
45
+ :plain
46
+ <pre>
47
+ export_grid_if_requested('g1' => 'tasks_grid', 'g2' => 'projects_grid')
48
+ </pre>
49
+
50
+ The keys of the hash submitted as an argument to
51
+ %code export_grid_if_requested
52
+ are names of grids, and the values are names of partials where the grids are defined.
53
+
54
+ %li
55
+ If a column definition contains markup, first disable its export to CSV adding
56
+ %code in_csv: false
57
+ to the column definition, and then duplicate the column definition without the markup in the block while adding
58
+ %code in_html: false
59
+ to the column definition. Any filter related parameters like
60
+ %code :attribute
61
+ ,
62
+ %code :assoc
63
+ , or
64
+ %code :custom_filter
65
+ can be skipped in a CSV-only column.
66
+ %li
67
+ If you need an external CSV export button , add class
68
+ %code wg-external-csv-export-button
69
+ to any clickable element on page
70
+ and set its attribute
71
+ %code data-grid-name
72
+ to the name of the grid. If you need to disable the default export icon in the grid, add
73
+ %code hide_csv_button: true
74
+ to the
75
+ %code grid
76
+ helper.
77
+
78
+ = show_code
79
+
80
+ %p
81
+ %button.btn.btn-primary.wg-external-csv-export-button{'data-grid-name' => 'g1'} Export To CSV
82
+
83
+
84
+ .row-fluid
85
+ .col-md-12
86
+ =render 'projects_grid'
87
+
88
+ .row-fluid
89
+ .col-md-12
90
+ =render 'tasks_grid'
@@ -0,0 +1,12 @@
1
+ <%= grid(@projects_grid) do |g|
2
+
3
+ g.column name: 'Project Name', attribute: 'name' do |project|
4
+ link_to(project.name,
5
+ tasks_path(
6
+ wice_grid_custom_filter_params(
7
+ grid_name: 'grid',
8
+ attribute: 'project_id',
9
+ value: project.id )))
10
+ end
11
+
12
+ end -%>
@@ -0,0 +1,12 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ Helper
5
+ %code wice_grid_custom_filter_params
6
+ simplifies generation of links with HTTP parameters understood by WiceGrid custom filter parameters.
7
+
8
+ = show_code
9
+
10
+ .row-fluid
11
+ .col-md-4
12
+ = render 'grid'
@@ -0,0 +1,8 @@
1
+ <%= grid(@versions_grid1) do |g|
2
+
3
+ g.column name: 'Project', attribute: 'name', assoc: :project, filter: false
4
+
5
+ g.column name: 'Version name', attribute: 'name', filter: false
6
+
7
+ g.column name: 'Status', attribute: 'status', custom_filter: {'Development' => 'development', 'Testing' => 'testing', 'Production' => 'production'}
8
+ end -%>
@@ -0,0 +1,9 @@
1
+ <%= grid(@versions_grid2) do |g|
2
+
3
+ g.column name: 'Project', attribute: 'name', assoc: :project, filter: false
4
+
5
+ g.column name: 'Version name', attribute: 'name', filter: false
6
+
7
+ g.column name: 'Status', attribute: 'status',
8
+ custom_filter: [['Development', 'development'], ['Testing', 'testing'], ['Production', 'production']]
9
+ end -%>
@@ -0,0 +1,9 @@
1
+ <%= grid(@versions_grid3) do |g|
2
+
3
+ g.column name: 'Project', attribute: 'name', assoc: :project, filter: false
4
+
5
+ g.column name: 'Version name', attribute: 'name', filter: false
6
+
7
+ g.column name: 'Status', attribute: 'status',
8
+ custom_filter: ['development', 'testing', 'production']
9
+ end -%>
@@ -0,0 +1,8 @@
1
+ <%= grid(@versions_grid4) do |g|
2
+
3
+ g.column name: 'Project', attribute: 'name', assoc: :project, filter: false
4
+
5
+ g.column name: 'Version name', attribute: 'name', filter: false
6
+
7
+ g.column name: 'Status', attribute: 'status', custom_filter: :auto
8
+ end -%>
@@ -0,0 +1,30 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ Just like
5
+ %code options_for_select
6
+ ,
7
+ %code :custom_filter
8
+ can take arguments in the form of a hash, an array of two element arrays, or just an array.
9
+ %p
10
+ %code custom_filter: :auto
11
+ will instruct WiceGrid to figure out the list of possible values by running a
12
+ %code SELECT DISTINCT `column` FROM `table`
13
+ query on the table.
14
+
15
+ = show_code
16
+
17
+ .row-fluid
18
+ .col-md-6
19
+ = render 'g1'
20
+
21
+ .col-md-6
22
+ = render 'g2'
23
+
24
+
25
+ .row-fluid
26
+ .col-md-6
27
+ = render 'g3'
28
+
29
+ .col-md-6
30
+ = render 'g4'
@@ -0,0 +1,30 @@
1
+ <%= grid(@tasks_grid) 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: 'name', assoc: :priority, custom_filter: %w(Anecdotic High Low Normal Urgent) 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,41 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ There are two approaches to custom filters with joined tables. The first thing that comes to mind is to define
5
+ a column of a joined table with
6
+ %code :attribute
7
+ and
8
+ %code :assoc
9
+ , and submit a list of all possible values of this column to
10
+ %code :custom_filter
11
+ , like it is done in the example below in the Priority column:
12
+ %p
13
+ %code g.column name: 'Priority', attribute: 'name', assoc: :priority, custom_filter: %w(Anecdotic High Low Normal Urgent) do |task|
14
+
15
+ %p
16
+ This works but such a filter produces a query with a
17
+ %code WHERE
18
+ clause comparing a varchar field with one of the string values submitted to
19
+ %code :custom_filter
20
+ \.
21
+ This is not guaranteed to be as efficient as comparing an indexed integer foreign key with an integer primary key, thus, this approach is highly advised against.
22
+ %p
23
+ To implement filtering by foreign keys, define the column with the foreign key in
24
+ %code :attribute
25
+ and submit a hash or a two element array containing the IDs and labels of the joined table to
26
+ %code :attribute
27
+ \.
28
+ This has a negative side effect on sorting - the column will now be sorted according to the numerical value of the foreign key.
29
+ It can be dealt with by overiding sorting by
30
+ %code :custom_order
31
+ in
32
+ %code initialize_grid
33
+ \:
34
+ %p
35
+ %code custom_order: {'tasks.status_id' => 'statuses.position', 'tasks.project_id' => 'projects.name'}
36
+
37
+ = show_code
38
+
39
+ .row-fluid
40
+ .col-md-12
41
+ = render 'grid'
@@ -0,0 +1,18 @@
1
+ <%= grid(@tasks_grid) 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: 'Found in version', assoc: :relevant_version, attribute: 'name', custom_filter: :auto do |task|
8
+ task.relevant_version.name if task.relevant_version
9
+ end
10
+
11
+ g.column name: 'Expected in version', attribute: 'expected_version_id', custom_filter: [:expected_version, :to_option] do |task|
12
+ task.expected_version.name if task.expected_version
13
+ end
14
+
15
+ g.column do |task|
16
+ link_to('Edit', edit_task_path(task))
17
+ end
18
+ end -%>
@@ -0,0 +1,16 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ An array of symbols submitted to
5
+ %code :custom_filter
6
+ has a special meaning. The first symbol is sent as a method name to EVERY ActiveRecord object.
7
+ If an object responds to this method, the second method name is sent to the returned value unless it is nil, and so on.
8
+ The dropdown is populated by the list unique values.
9
+ The conditions set up by the user are ignored, that is, the records used are all those found on all pages without any active filters.
10
+ Naturally this can be extremely inneffective and should be used with caution.
11
+
12
+ = show_code
13
+
14
+ .row-fluid
15
+ .col-md-12
16
+ = render 'grid'
@@ -0,0 +1,20 @@
1
+ <%= grid(@tasks_grid) 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: 'Found in version', assoc: :relevant_version,
8
+ attribute: 'name', custom_filter: :auto, allow_multiple_selection: false do |task|
9
+ task.relevant_version.name if task.relevant_version
10
+ end
11
+
12
+ g.column name: 'Expected in version', attribute: 'expected_version_id',
13
+ custom_filter: [:expected_version, :to_option], allow_multiple_selection: false do |task|
14
+ task.expected_version.name if task.expected_version
15
+ end
16
+
17
+ g.column do |task|
18
+ link_to('Edit', edit_task_path(task))
19
+ end
20
+ end -%>
@@ -0,0 +1,12 @@
1
+ .well
2
+ %h2= current_page_title
3
+ %p
4
+ Use
5
+ %code allow_multiple_selection: false
6
+ to turn off mutiple selection in custom filters.
7
+
8
+ = show_code
9
+
10
+ .row-fluid
11
+ .col-md-12
12
+ = render 'grid'