hyper-max-sys 0.0.1

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 (329) hide show
  1. checksums.yaml +7 -0
  2. data/hyper-max-sys.gemspec +12 -0
  3. data/rails_admin-3.3.0/Gemfile +56 -0
  4. data/rails_admin-3.3.0/LICENSE.md +20 -0
  5. data/rails_admin-3.3.0/README.md +105 -0
  6. data/rails_admin-3.3.0/Rakefile +37 -0
  7. data/rails_admin-3.3.0/app/assets/javascripts/rails_admin/application.js.erb +30 -0
  8. data/rails_admin-3.3.0/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
  9. data/rails_admin-3.3.0/app/assets/stylesheets/rails_admin/application.scss.erb +35 -0
  10. data/rails_admin-3.3.0/app/assets/stylesheets/rails_admin/custom/mixins.scss +11 -0
  11. data/rails_admin-3.3.0/app/assets/stylesheets/rails_admin/custom/theming.scss +13 -0
  12. data/rails_admin-3.3.0/app/assets/stylesheets/rails_admin/custom/variables.scss +15 -0
  13. data/rails_admin-3.3.0/app/controllers/rails_admin/application_controller.rb +84 -0
  14. data/rails_admin-3.3.0/app/controllers/rails_admin/main_controller.rb +153 -0
  15. data/rails_admin-3.3.0/app/helpers/rails_admin/application_helper.rb +264 -0
  16. data/rails_admin-3.3.0/app/helpers/rails_admin/form_builder.rb +157 -0
  17. data/rails_admin-3.3.0/app/helpers/rails_admin/main_helper.rb +61 -0
  18. data/rails_admin-3.3.0/app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb +5 -0
  19. data/rails_admin-3.3.0/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb +9 -0
  20. data/rails_admin-3.3.0/app/views/kaminari/ra-twitter-bootstrap/_page.html.erb +9 -0
  21. data/rails_admin-3.3.0/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb +15 -0
  22. data/rails_admin-3.3.0/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb +9 -0
  23. data/rails_admin-3.3.0/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb +9 -0
  24. data/rails_admin-3.3.0/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb +8 -0
  25. data/rails_admin-3.3.0/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb +9 -0
  26. data/rails_admin-3.3.0/app/views/layouts/rails_admin/_head.html.erb +32 -0
  27. data/rails_admin-3.3.0/app/views/layouts/rails_admin/_navigation.html.erb +17 -0
  28. data/rails_admin-3.3.0/app/views/layouts/rails_admin/_secondary_navigation.html.erb +26 -0
  29. data/rails_admin-3.3.0/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +5 -0
  30. data/rails_admin-3.3.0/app/views/layouts/rails_admin/application.html.erb +27 -0
  31. data/rails_admin-3.3.0/app/views/layouts/rails_admin/content.html.erb +22 -0
  32. data/rails_admin-3.3.0/app/views/layouts/rails_admin/modal.js.erb +7 -0
  33. data/rails_admin-3.3.0/app/views/rails_admin/main/_dashboard_history.html.erb +45 -0
  34. data/rails_admin-3.3.0/app/views/rails_admin/main/_delete_notice.html.erb +35 -0
  35. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_action_text.html.erb +8 -0
  36. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_boolean.html.erb +14 -0
  37. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_ck_editor.html.erb +10 -0
  38. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_code_mirror.html.erb +9 -0
  39. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_colorpicker.html.erb +5 -0
  40. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_datetime.html.erb +10 -0
  41. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_enumeration.html.erb +25 -0
  42. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_field.html.erb +1 -0
  43. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_file_upload.html.erb +17 -0
  44. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +19 -0
  45. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_filtering_select.html.erb +21 -0
  46. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_froala.html.erb +8 -0
  47. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_multiple_file_upload.html.erb +20 -0
  48. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_nested_many.html.erb +21 -0
  49. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_nested_one.html.erb +21 -0
  50. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_polymorphic_association.html.erb +23 -0
  51. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_simple_mde.html.erb +8 -0
  52. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_text.html.erb +1 -0
  53. data/rails_admin-3.3.0/app/views/rails_admin/main/_form_wysihtml5.html.erb +8 -0
  54. data/rails_admin-3.3.0/app/views/rails_admin/main/_submit_buttons.html.erb +25 -0
  55. data/rails_admin-3.3.0/app/views/rails_admin/main/bulk_delete.html.erb +19 -0
  56. data/rails_admin-3.3.0/app/views/rails_admin/main/dashboard.html.erb +64 -0
  57. data/rails_admin-3.3.0/app/views/rails_admin/main/delete.html.erb +21 -0
  58. data/rails_admin-3.3.0/app/views/rails_admin/main/edit.html.erb +3 -0
  59. data/rails_admin-3.3.0/app/views/rails_admin/main/export.html.erb +149 -0
  60. data/rails_admin-3.3.0/app/views/rails_admin/main/history.html.erb +80 -0
  61. data/rails_admin-3.3.0/app/views/rails_admin/main/index.html.erb +184 -0
  62. data/rails_admin-3.3.0/app/views/rails_admin/main/new.html.erb +3 -0
  63. data/rails_admin-3.3.0/app/views/rails_admin/main/show.html.erb +30 -0
  64. data/rails_admin-3.3.0/config/initializers/active_record_extensions.rb +23 -0
  65. data/rails_admin-3.3.0/config/initializers/mongoid_extensions.rb +6 -0
  66. data/rails_admin-3.3.0/config/locales/rails_admin.en.yml +158 -0
  67. data/rails_admin-3.3.0/config/routes.rb +14 -0
  68. data/rails_admin-3.3.0/lib/generators/rails_admin/importmap_formatter.rb +28 -0
  69. data/rails_admin-3.3.0/lib/generators/rails_admin/install_generator.rb +142 -0
  70. data/rails_admin-3.3.0/lib/generators/rails_admin/templates/initializer.erb +42 -0
  71. data/rails_admin-3.3.0/lib/generators/rails_admin/templates/rails_admin.js +1 -0
  72. data/rails_admin-3.3.0/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -0
  73. data/rails_admin-3.3.0/lib/generators/rails_admin/templates/rails_admin.vite.js +2 -0
  74. data/rails_admin-3.3.0/lib/generators/rails_admin/templates/rails_admin.webpacker.js +2 -0
  75. data/rails_admin-3.3.0/lib/generators/rails_admin/utils.rb +21 -0
  76. data/rails_admin-3.3.0/lib/rails_admin/abstract_model.rb +275 -0
  77. data/rails_admin-3.3.0/lib/rails_admin/adapters/active_record/association.rb +130 -0
  78. data/rails_admin-3.3.0/lib/rails_admin/adapters/active_record/object_extension.rb +13 -0
  79. data/rails_admin-3.3.0/lib/rails_admin/adapters/active_record/property.rb +58 -0
  80. data/rails_admin-3.3.0/lib/rails_admin/adapters/active_record.rb +367 -0
  81. data/rails_admin-3.3.0/lib/rails_admin/adapters/active_record.rb.bak +348 -0
  82. data/rails_admin-3.3.0/lib/rails_admin/adapters/mongoid/association.rb +161 -0
  83. data/rails_admin-3.3.0/lib/rails_admin/adapters/mongoid/bson.rb +31 -0
  84. data/rails_admin-3.3.0/lib/rails_admin/adapters/mongoid/extension.rb +49 -0
  85. data/rails_admin-3.3.0/lib/rails_admin/adapters/mongoid/object_extension.rb +29 -0
  86. data/rails_admin-3.3.0/lib/rails_admin/adapters/mongoid/property.rb +101 -0
  87. data/rails_admin-3.3.0/lib/rails_admin/adapters/mongoid.rb +312 -0
  88. data/rails_admin-3.3.0/lib/rails_admin/config/actions/base.rb +162 -0
  89. data/rails_admin-3.3.0/lib/rails_admin/config/actions/bulk_delete.rb +67 -0
  90. data/rails_admin-3.3.0/lib/rails_admin/config/actions/dashboard.rb +62 -0
  91. data/rails_admin-3.3.0/lib/rails_admin/config/actions/delete.rb +58 -0
  92. data/rails_admin-3.3.0/lib/rails_admin/config/actions/edit.rb +56 -0
  93. data/rails_admin-3.3.0/lib/rails_admin/config/actions/export.rb +41 -0
  94. data/rails_admin-3.3.0/lib/rails_admin/config/actions/history_index.rb +40 -0
  95. data/rails_admin-3.3.0/lib/rails_admin/config/actions/history_show.rb +40 -0
  96. data/rails_admin-3.3.0/lib/rails_admin/config/actions/index.rb +98 -0
  97. data/rails_admin-3.3.0/lib/rails_admin/config/actions/new.rb +69 -0
  98. data/rails_admin-3.3.0/lib/rails_admin/config/actions/show.rb +36 -0
  99. data/rails_admin-3.3.0/lib/rails_admin/config/actions/show_in_app.rb +37 -0
  100. data/rails_admin-3.3.0/lib/rails_admin/config/actions.rb +122 -0
  101. data/rails_admin-3.3.0/lib/rails_admin/config/configurable.rb +107 -0
  102. data/rails_admin-3.3.0/lib/rails_admin/config/const_load_suppressor.rb +78 -0
  103. data/rails_admin-3.3.0/lib/rails_admin/config/fields/association.rb +168 -0
  104. data/rails_admin-3.3.0/lib/rails_admin/config/fields/base.rb +391 -0
  105. data/rails_admin-3.3.0/lib/rails_admin/config/fields/collection_association.rb +90 -0
  106. data/rails_admin-3.3.0/lib/rails_admin/config/fields/factories/action_text.rb +14 -0
  107. data/rails_admin-3.3.0/lib/rails_admin/config/fields/factories/active_storage.rb +34 -0
  108. data/rails_admin-3.3.0/lib/rails_admin/config/fields/factories/association.rb +32 -0
  109. data/rails_admin-3.3.0/lib/rails_admin/config/fields/factories/carrierwave.rb +30 -0
  110. data/rails_admin-3.3.0/lib/rails_admin/config/fields/factories/devise.rb +28 -0
  111. data/rails_admin-3.3.0/lib/rails_admin/config/fields/factories/dragonfly.rb +28 -0
  112. data/rails_admin-3.3.0/lib/rails_admin/config/fields/factories/enum.rb +23 -0
  113. data/rails_admin-3.3.0/lib/rails_admin/config/fields/factories/paperclip.rb +29 -0
  114. data/rails_admin-3.3.0/lib/rails_admin/config/fields/factories/password.rb +19 -0
  115. data/rails_admin-3.3.0/lib/rails_admin/config/fields/factories/shrine.rb +29 -0
  116. data/rails_admin-3.3.0/lib/rails_admin/config/fields/group.rb +77 -0
  117. data/rails_admin-3.3.0/lib/rails_admin/config/fields/singular_association.rb +59 -0
  118. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/action_text.rb +36 -0
  119. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/active_record_enum.rb +62 -0
  120. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/active_storage.rb +70 -0
  121. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/all.rb +43 -0
  122. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/belongs_to_association.rb +48 -0
  123. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/boolean.rb +70 -0
  124. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/bson_object_id.rb +42 -0
  125. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/carrierwave.rb +34 -0
  126. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/citext.rb +15 -0
  127. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/ck_editor.rb +40 -0
  128. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/code_mirror.rb +48 -0
  129. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/color.rb +43 -0
  130. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/date.rb +41 -0
  131. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/datetime.rb +96 -0
  132. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/decimal.rb +23 -0
  133. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/dragonfly.rb +44 -0
  134. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/enum.rb +52 -0
  135. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/file_upload.rb +87 -0
  136. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/float.rb +23 -0
  137. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/froala.rb +37 -0
  138. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +16 -0
  139. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/has_many_association.rb +16 -0
  140. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/has_one_association.rb +35 -0
  141. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/hidden.rb +31 -0
  142. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/inet.rb +15 -0
  143. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/integer.rb +20 -0
  144. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/json.rb +37 -0
  145. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/multiple_active_storage.rb +82 -0
  146. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +59 -0
  147. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/multiple_file_upload.rb +134 -0
  148. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/numeric.rb +24 -0
  149. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/paperclip.rb +30 -0
  150. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/password.rb +45 -0
  151. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/polymorphic_association.rb +118 -0
  152. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/serialized.rb +28 -0
  153. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/shrine.rb +56 -0
  154. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/simple_mde.rb +38 -0
  155. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/string.rb +50 -0
  156. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/string_like.rb +25 -0
  157. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/text.rb +28 -0
  158. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/time.rb +36 -0
  159. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/timestamp.rb +16 -0
  160. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/uuid.rb +15 -0
  161. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types/wysihtml5.rb +43 -0
  162. data/rails_admin-3.3.0/lib/rails_admin/config/fields/types.rb +29 -0
  163. data/rails_admin-3.3.0/lib/rails_admin/config/fields.rb +92 -0
  164. data/rails_admin-3.3.0/lib/rails_admin/config/groupable.rb +20 -0
  165. data/rails_admin-3.3.0/lib/rails_admin/config/has_description.rb +14 -0
  166. data/rails_admin-3.3.0/lib/rails_admin/config/has_fields.rb +144 -0
  167. data/rails_admin-3.3.0/lib/rails_admin/config/has_groups.rb +27 -0
  168. data/rails_admin-3.3.0/lib/rails_admin/config/hideable.rb +30 -0
  169. data/rails_admin-3.3.0/lib/rails_admin/config/inspectable.rb +39 -0
  170. data/rails_admin-3.3.0/lib/rails_admin/config/lazy_model.rb +74 -0
  171. data/rails_admin-3.3.0/lib/rails_admin/config/model.rb +120 -0
  172. data/rails_admin-3.3.0/lib/rails_admin/config/proxyable/proxy.rb +39 -0
  173. data/rails_admin-3.3.0/lib/rails_admin/config/proxyable.rb +26 -0
  174. data/rails_admin-3.3.0/lib/rails_admin/config/sections/base.rb +36 -0
  175. data/rails_admin-3.3.0/lib/rails_admin/config/sections/create.rb +13 -0
  176. data/rails_admin-3.3.0/lib/rails_admin/config/sections/edit.rb +13 -0
  177. data/rails_admin-3.3.0/lib/rails_admin/config/sections/export.rb +13 -0
  178. data/rails_admin-3.3.0/lib/rails_admin/config/sections/list.rb +63 -0
  179. data/rails_admin-3.3.0/lib/rails_admin/config/sections/modal.rb +12 -0
  180. data/rails_admin-3.3.0/lib/rails_admin/config/sections/nested.rb +12 -0
  181. data/rails_admin-3.3.0/lib/rails_admin/config/sections/show.rb +12 -0
  182. data/rails_admin-3.3.0/lib/rails_admin/config/sections/update.rb +12 -0
  183. data/rails_admin-3.3.0/lib/rails_admin/config/sections.rb +39 -0
  184. data/rails_admin-3.3.0/lib/rails_admin/config.rb +403 -0
  185. data/rails_admin-3.3.0/lib/rails_admin/engine.rb +84 -0
  186. data/rails_admin-3.3.0/lib/rails_admin/extension.rb +35 -0
  187. data/rails_admin-3.3.0/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +90 -0
  188. data/rails_admin-3.3.0/lib/rails_admin/extensions/cancancan.rb +5 -0
  189. data/rails_admin-3.3.0/lib/rails_admin/extensions/controller_extension.rb +8 -0
  190. data/rails_admin-3.3.0/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +187 -0
  191. data/rails_admin-3.3.0/lib/rails_admin/extensions/paper_trail.rb +5 -0
  192. data/rails_admin-3.3.0/lib/rails_admin/extensions/pundit/authorization_adapter.rb +72 -0
  193. data/rails_admin-3.3.0/lib/rails_admin/extensions/pundit.rb +5 -0
  194. data/rails_admin-3.3.0/lib/rails_admin/extensions/url_for_extension.rb +15 -0
  195. data/rails_admin-3.3.0/lib/rails_admin/support/composite_keys_serializer.rb +15 -0
  196. data/rails_admin-3.3.0/lib/rails_admin/support/csv_converter.rb +107 -0
  197. data/rails_admin-3.3.0/lib/rails_admin/support/datetime.rb +66 -0
  198. data/rails_admin-3.3.0/lib/rails_admin/support/es_module_processor.rb +23 -0
  199. data/rails_admin-3.3.0/lib/rails_admin/support/hash_helper.rb +31 -0
  200. data/rails_admin-3.3.0/lib/rails_admin/version.rb +54 -0
  201. data/rails_admin-3.3.0/lib/rails_admin.rb +62 -0
  202. data/rails_admin-3.3.0/lib/tasks/rails_admin.rake +47 -0
  203. data/rails_admin-3.3.0/package.json +30 -0
  204. data/rails_admin-3.3.0/src/rails_admin/abstract-select.js +30 -0
  205. data/rails_admin-3.3.0/src/rails_admin/base.js +32 -0
  206. data/rails_admin-3.3.0/src/rails_admin/filter-box.js +360 -0
  207. data/rails_admin-3.3.0/src/rails_admin/filtering-multiselect.js +387 -0
  208. data/rails_admin-3.3.0/src/rails_admin/filtering-select.js +306 -0
  209. data/rails_admin-3.3.0/src/rails_admin/i18n.js +18 -0
  210. data/rails_admin-3.3.0/src/rails_admin/jquery.js +3 -0
  211. data/rails_admin-3.3.0/src/rails_admin/nested-form-hooks.js +110 -0
  212. data/rails_admin-3.3.0/src/rails_admin/remote-form.js +193 -0
  213. data/rails_admin-3.3.0/src/rails_admin/sidescroll.js +20 -0
  214. data/rails_admin-3.3.0/src/rails_admin/styles/base/README.txt +2 -0
  215. data/rails_admin-3.3.0/src/rails_admin/styles/base/mixins.scss +1 -0
  216. data/rails_admin-3.3.0/src/rails_admin/styles/base/theming.scss +342 -0
  217. data/rails_admin-3.3.0/src/rails_admin/styles/base/variables.scss +3 -0
  218. data/rails_admin-3.3.0/src/rails_admin/styles/base.scss +27 -0
  219. data/rails_admin-3.3.0/src/rails_admin/styles/filtering-multiselect.scss +53 -0
  220. data/rails_admin-3.3.0/src/rails_admin/styles/filtering-select.scss +70 -0
  221. data/rails_admin-3.3.0/src/rails_admin/styles/widgets.scss +26 -0
  222. data/rails_admin-3.3.0/src/rails_admin/ui.js +176 -0
  223. data/rails_admin-3.3.0/src/rails_admin/vendor/jquery_nested_form.js +122 -0
  224. data/rails_admin-3.3.0/src/rails_admin/widgets.js +507 -0
  225. data/rails_admin-3.3.0/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  226. data/rails_admin-3.3.0/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
  227. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/bootstrap.js +5046 -0
  228. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +11246 -0
  229. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +41 -0
  230. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +1637 -0
  231. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +17 -0
  232. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +47 -0
  233. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +500 -0
  234. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +42 -0
  235. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +47 -0
  236. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +51 -0
  237. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +17 -0
  238. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +735 -0
  239. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +689 -0
  240. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +680 -0
  241. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +230 -0
  242. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +1561 -0
  243. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/jquery3.js +10881 -0
  244. data/rails_admin-3.3.0/vendor/assets/javascripts/rails_admin/popper.js +1974 -0
  245. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +118 -0
  246. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_alert.scss +57 -0
  247. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_badge.scss +29 -0
  248. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumb.scss +28 -0
  249. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_button-group.scss +139 -0
  250. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +111 -0
  251. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_card.scss +216 -0
  252. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +229 -0
  253. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_close.scss +40 -0
  254. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_containers.scss +41 -0
  255. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdown.scss +240 -0
  256. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_forms.scss +9 -0
  257. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_functions.scss +302 -0
  258. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_grid.scss +33 -0
  259. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_helpers.scss +9 -0
  260. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_images.scss +42 -0
  261. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +174 -0
  262. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +43 -0
  263. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_modal.scss +209 -0
  264. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_nav.scss +139 -0
  265. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +335 -0
  266. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_offcanvas.scss +83 -0
  267. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +64 -0
  268. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_placeholders.scss +51 -0
  269. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_popover.scss +158 -0
  270. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_progress.scss +48 -0
  271. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_reboot.scss +625 -0
  272. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_root.scss +54 -0
  273. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_spinners.scss +69 -0
  274. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_tables.scss +155 -0
  275. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_toasts.scss +51 -0
  276. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +115 -0
  277. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_transitions.scss +27 -0
  278. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_type.scss +104 -0
  279. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +630 -0
  280. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/_variables.scss +1641 -0
  281. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +53 -0
  282. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_floating-labels.scss +63 -0
  283. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-check.scss +152 -0
  284. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-control.scss +219 -0
  285. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-range.scss +91 -0
  286. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-select.scss +72 -0
  287. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-text.scss +11 -0
  288. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_input-group.scss +121 -0
  289. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_labels.scss +36 -0
  290. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_validation.scss +12 -0
  291. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_clearfix.scss +3 -0
  292. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_colored-links.scss +12 -0
  293. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_position.scss +30 -0
  294. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_ratio.scss +26 -0
  295. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stacks.scss +15 -0
  296. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stretched-link.scss +15 -0
  297. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_text-truncation.scss +7 -0
  298. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_visually-hidden.scss +8 -0
  299. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_vr.scss +8 -0
  300. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alert.scss +11 -0
  301. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_backdrop.scss +14 -0
  302. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +78 -0
  303. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_box-shadow.scss +18 -0
  304. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_breakpoints.scss +127 -0
  305. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +133 -0
  306. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_caret.scss +64 -0
  307. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +9 -0
  308. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_color-scheme.scss +7 -0
  309. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_container.scss +9 -0
  310. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_deprecate.scss +10 -0
  311. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +144 -0
  312. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +47 -0
  313. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +151 -0
  314. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +16 -0
  315. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +24 -0
  316. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_lists.scss +7 -0
  317. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +31 -0
  318. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-text.scss +17 -0
  319. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +6 -0
  320. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-variants.scss +21 -0
  321. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_text-truncate.scss +8 -0
  322. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_transition.scss +26 -0
  323. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_utilities.scss +89 -0
  324. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_visually-hidden.scss +29 -0
  325. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/utilities/_api.scss +47 -0
  326. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/bootstrap/vendor/_rfs.scss +354 -0
  327. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/flatpickr.css +791 -0
  328. data/rails_admin-3.3.0/vendor/assets/stylesheets/rails_admin/font-awesome.scss +6351 -0
  329. metadata +368 -0
@@ -0,0 +1,101 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAdmin
4
+ module Adapters
5
+ module Mongoid
6
+ class Property
7
+ STRING_TYPE_COLUMN_NAMES = %i[name title subject].freeze
8
+ attr_reader :property, :model
9
+
10
+ def initialize(property, model)
11
+ @property = property
12
+ @model = model
13
+ end
14
+
15
+ def name
16
+ (property.options[:as] || property.name).to_sym
17
+ end
18
+
19
+ def pretty_name
20
+ (property.options[:as] || property.name).to_s.tr('_', ' ').capitalize
21
+ end
22
+
23
+ def type
24
+ case property.type.to_s
25
+ when 'Array', 'Hash', 'Money'
26
+ :serialized
27
+ when 'BigDecimal'
28
+ :decimal
29
+ when 'Boolean', 'Mongoid::Boolean'
30
+ :boolean
31
+ when 'BSON::ObjectId', 'Moped::BSON::ObjectId'
32
+ :bson_object_id
33
+ when 'Date'
34
+ :date
35
+ when 'ActiveSupport::TimeWithZone', 'DateTime', 'Time'
36
+ :datetime
37
+ when 'Float'
38
+ :float
39
+ when 'Integer'
40
+ :integer
41
+ when 'Object'
42
+ object_field_type
43
+ when 'String'
44
+ string_field_type
45
+ when 'Symbol'
46
+ :string
47
+ else
48
+ :string
49
+ end
50
+ end
51
+
52
+ def length
53
+ (length_validation_lookup || 255) if type == :string
54
+ end
55
+
56
+ def nullable?
57
+ true
58
+ end
59
+
60
+ def serial?
61
+ name == :_id
62
+ end
63
+
64
+ def association?
65
+ false
66
+ end
67
+
68
+ def read_only?
69
+ model.readonly_attributes.include? property.name.to_s
70
+ end
71
+
72
+ private
73
+
74
+ def object_field_type
75
+ association = Association.new model.relations.values.detect { |r| r.try(:foreign_key).try(:to_sym) == name }, model
76
+ if %i[belongs_to referenced_in embedded_in].include?(association.macro)
77
+ :bson_object_id
78
+ else
79
+ :string
80
+ end
81
+ end
82
+
83
+ def string_field_type
84
+ if ((length = length_validation_lookup) && length < 256) || STRING_TYPE_COLUMN_NAMES.include?(name)
85
+ :string
86
+ else
87
+ :text
88
+ end
89
+ end
90
+
91
+ def length_validation_lookup
92
+ shortest = model.validators.select { |validator| validator.respond_to?(:attributes) && validator.attributes.include?(name.to_sym) && validator.kind == :length && validator.options[:maximum] }.min do |a, b|
93
+ a.options[:maximum] <=> b.options[:maximum]
94
+ end
95
+
96
+ shortest && shortest.options[:maximum]
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,312 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mongoid'
4
+ require 'rails_admin/config/sections/list'
5
+ require 'rails_admin/adapters/mongoid/association'
6
+ require 'rails_admin/adapters/mongoid/object_extension'
7
+ require 'rails_admin/adapters/mongoid/property'
8
+ require 'rails_admin/adapters/mongoid/bson'
9
+
10
+ module RailsAdmin
11
+ module Adapters
12
+ module Mongoid
13
+ DISABLED_COLUMN_TYPES = %w[Range Moped::BSON::Binary BSON::Binary Mongoid::Geospatial::Point].freeze
14
+
15
+ def parse_object_id(value)
16
+ Bson.parse_object_id(value)
17
+ end
18
+
19
+ def new(params = {})
20
+ model.new(params).extend(ObjectExtension)
21
+ end
22
+
23
+ def get(id, scope = scoped)
24
+ object = scope.find(id)
25
+ return nil unless object
26
+
27
+ object.extend(ObjectExtension)
28
+ rescue StandardError => e
29
+ raise e if %w[
30
+ Mongoid::Errors::DocumentNotFound
31
+ Mongoid::Errors::InvalidFind
32
+ Moped::Errors::InvalidObjectId
33
+ BSON::InvalidObjectId
34
+ BSON::Error::InvalidObjectId
35
+ ].exclude?(e.class.to_s)
36
+ end
37
+
38
+ def scoped
39
+ model.scoped
40
+ end
41
+
42
+ def first(options = {}, scope = nil)
43
+ all(options, scope).first
44
+ end
45
+
46
+ def all(options = {}, scope = nil)
47
+ scope ||= scoped
48
+ scope = scope.includes(*options[:include]) if options[:include]
49
+ scope = scope.limit(options[:limit]) if options[:limit]
50
+ scope = scope.any_in(_id: options[:bulk_ids]) if options[:bulk_ids]
51
+ scope = query_scope(scope, options[:query]) if options[:query]
52
+ scope = filter_scope(scope, options[:filters]) if options[:filters]
53
+ scope = scope.send(Kaminari.config.page_method_name, options[:page]).per(options[:per]) if options[:page] && options[:per]
54
+ scope = sort_by(options, scope) if options[:sort]
55
+ scope
56
+ rescue NoMethodError => e
57
+ if /page/.match?(e.message)
58
+ e = e.exception <<~ERROR
59
+ #{e.message}
60
+ If you don't have kaminari-mongoid installed, add `gem 'kaminari-mongoid'` to your Gemfile.
61
+ ERROR
62
+ end
63
+ raise e
64
+ end
65
+
66
+ def count(options = {}, scope = nil)
67
+ all(options.merge(limit: false, page: false), scope).count
68
+ end
69
+
70
+ def destroy(objects)
71
+ Array.wrap(objects).each(&:destroy)
72
+ end
73
+
74
+ def primary_key
75
+ '_id'
76
+ end
77
+
78
+ def associations
79
+ model.relations.values.collect do |association|
80
+ Association.new(association, model)
81
+ end
82
+ end
83
+
84
+ def properties
85
+ fields = model.fields.reject { |_name, field| DISABLED_COLUMN_TYPES.include?(field.type.to_s) }
86
+ fields.collect { |_name, field| Property.new(field, model) }
87
+ end
88
+
89
+ def base_class
90
+ klass = model
91
+ klass = klass.superclass while klass.hereditary?
92
+ klass
93
+ end
94
+
95
+ def table_name
96
+ model.collection_name.to_s
97
+ end
98
+
99
+ def encoding
100
+ Encoding::UTF_8
101
+ end
102
+
103
+ def embedded?
104
+ associations.detect { |a| a.macro == :embedded_in }
105
+ end
106
+
107
+ def cyclic?
108
+ model.cyclic?
109
+ end
110
+
111
+ def adapter_supports_joins?
112
+ false
113
+ end
114
+
115
+ private
116
+
117
+ def build_statement(column, type, value, operator)
118
+ StatementBuilder.new(column, type, value, operator).to_statement
119
+ end
120
+
121
+ def make_field_conditions(field, value, operator)
122
+ conditions_per_collection = {}
123
+ field.searchable_columns.each do |column_infos|
124
+ collection_name, column_name = parse_collection_name(column_infos[:column])
125
+ statement = build_statement(column_name, column_infos[:type], value, operator)
126
+ next unless statement
127
+
128
+ conditions_per_collection[collection_name] ||= []
129
+ conditions_per_collection[collection_name] << statement
130
+ end
131
+ conditions_per_collection
132
+ end
133
+
134
+ def query_scope(scope, query, fields = config.list.fields.select(&:queryable?))
135
+ if config.list.search_by
136
+ scope.send(config.list.search_by, query)
137
+ else
138
+ statements = []
139
+
140
+ fields.each do |field|
141
+ value = parse_field_value(field, query)
142
+ conditions_per_collection = make_field_conditions(field, value, field.search_operator)
143
+ statements.concat make_condition_for_current_collection(field, conditions_per_collection)
144
+ end
145
+
146
+ scope.where(statements.any? ? {'$or' => statements} : {})
147
+ end
148
+ end
149
+
150
+ # filters example => {"string_field"=>{"0055"=>{"o"=>"like", "v"=>"test_value"}}, ...}
151
+ # "0055" is the filter index, no use here. o is the operator, v the value
152
+ def filter_scope(scope, filters, fields = config.list.fields.select(&:filterable?))
153
+ statements = []
154
+
155
+ filters.each_pair do |field_name, filters_dump|
156
+ filters_dump.each_value do |filter_dump|
157
+ field = fields.detect { |f| f.name.to_s == field_name }
158
+ next unless field
159
+
160
+ value = parse_field_value(field, filter_dump[:v])
161
+ conditions_per_collection = make_field_conditions(field, value, (filter_dump[:o] || 'default'))
162
+ field_statements = make_condition_for_current_collection(field, conditions_per_collection)
163
+ if field_statements.many?
164
+ statements << {'$or' => field_statements}
165
+ elsif field_statements.any?
166
+ statements << field_statements.first
167
+ end
168
+ end
169
+ end
170
+
171
+ scope.where(statements.any? ? {'$and' => statements} : {})
172
+ end
173
+
174
+ def parse_collection_name(column)
175
+ collection_name, column_name = column.split('.')
176
+ if associations.detect { |a| a.name == collection_name.to_sym }.try(:embeds?)
177
+ [table_name, column]
178
+ else
179
+ [collection_name, column_name]
180
+ end
181
+ end
182
+
183
+ def make_condition_for_current_collection(target_field, conditions_per_collection)
184
+ result = []
185
+ conditions_per_collection.each do |collection_name, conditions|
186
+ if collection_name == table_name
187
+ # conditions referring current model column are passed directly
188
+ result.concat conditions
189
+ else
190
+ # otherwise, collect ids of documents that satisfy search condition
191
+ result.concat perform_search_on_associated_collection(target_field.name, conditions)
192
+ end
193
+ end
194
+ result
195
+ end
196
+
197
+ def perform_search_on_associated_collection(field_name, conditions)
198
+ target_association = associations.detect { |a| a.name == field_name }
199
+ return [] unless target_association
200
+
201
+ model = target_association.klass
202
+ case target_association.type
203
+ when :belongs_to, :has_and_belongs_to_many
204
+ [{target_association.foreign_key.to_s => {'$in' => model.where('$or' => conditions).all.collect { |r| r.send(target_association.primary_key) }}}]
205
+ when :has_many, :has_one
206
+ [{target_association.primary_key.to_s => {'$in' => model.where('$or' => conditions).all.collect { |r| r.send(target_association.foreign_key) }}}]
207
+ end
208
+ end
209
+
210
+ def sort_by(options, scope)
211
+ return scope unless options[:sort]
212
+
213
+ case options[:sort]
214
+ when String
215
+ field_name, collection_name = options[:sort].split('.').reverse
216
+ raise 'sorting by associated model column is not supported in Non-Relational databases' if collection_name && collection_name != table_name
217
+ when Symbol
218
+ field_name = options[:sort].to_s
219
+ end
220
+ if options[:sort_reverse]
221
+ scope.asc field_name
222
+ else
223
+ scope.desc field_name
224
+ end
225
+ end
226
+
227
+ class StatementBuilder < RailsAdmin::AbstractModel::StatementBuilder
228
+ protected
229
+
230
+ def unary_operators
231
+ {
232
+ '_blank' => {@column => {'$in' => [nil, '']}},
233
+ '_present' => {@column => {'$nin' => [nil, '']}},
234
+ '_null' => {@column => nil},
235
+ '_not_null' => {@column => {'$ne' => nil}},
236
+ '_empty' => {@column => ''},
237
+ '_not_empty' => {@column => {'$ne' => ''}},
238
+ }
239
+ end
240
+
241
+ private
242
+
243
+ def build_statement_for_type
244
+ case @type
245
+ when :boolean then build_statement_for_boolean
246
+ when :integer, :decimal, :float then build_statement_for_integer_decimal_or_float
247
+ when :string, :text then build_statement_for_string_or_text
248
+ when :enum then build_statement_for_enum
249
+ when :belongs_to_association, :bson_object_id then build_statement_for_belongs_to_association_or_bson_object_id
250
+ end
251
+ end
252
+
253
+ def build_statement_for_boolean
254
+ case @value
255
+ when 'false', 'f', '0'
256
+ {@column => false}
257
+ when 'true', 't', '1'
258
+ {@column => true}
259
+ end
260
+ end
261
+
262
+ def column_for_value(value)
263
+ {@column => value}
264
+ end
265
+
266
+ def build_statement_for_string_or_text
267
+ return if @value.blank?
268
+
269
+ @value =
270
+ case @operator
271
+ when 'not_like'
272
+ Regexp.compile("^((?!#{Regexp.escape(@value)}).)*$", Regexp::IGNORECASE)
273
+ when 'default', 'like'
274
+ Regexp.compile(Regexp.escape(@value), Regexp::IGNORECASE)
275
+ when 'starts_with'
276
+ Regexp.compile("^#{Regexp.escape(@value)}", Regexp::IGNORECASE)
277
+ when 'ends_with'
278
+ Regexp.compile("#{Regexp.escape(@value)}$", Regexp::IGNORECASE)
279
+ when 'is', '='
280
+ @value.to_s
281
+ else
282
+ return
283
+ end
284
+
285
+ {@column => @value}
286
+ end
287
+
288
+ def build_statement_for_enum
289
+ return if @value.blank?
290
+
291
+ {@column => {'$in' => Array.wrap(@value)}}
292
+ end
293
+
294
+ def build_statement_for_belongs_to_association_or_bson_object_id
295
+ {@column => @value} if @value
296
+ end
297
+
298
+ def range_filter(min, max)
299
+ if min && max && min == max
300
+ {@column => min}
301
+ elsif min && max
302
+ {@column => {'$gte' => min, '$lte' => max}}
303
+ elsif min
304
+ {@column => {'$gte' => min}}
305
+ elsif max
306
+ {@column => {'$lte' => max}}
307
+ end
308
+ end
309
+ end
310
+ end
311
+ end
312
+ end
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_admin/config/proxyable'
4
+ require 'rails_admin/config/configurable'
5
+ require 'rails_admin/config/hideable'
6
+
7
+ module RailsAdmin
8
+ module Config
9
+ module Actions
10
+ class Base
11
+ include RailsAdmin::Config::Proxyable
12
+ include RailsAdmin::Config::Configurable
13
+ include RailsAdmin::Config::Hideable
14
+
15
+ register_instance_option :only do
16
+ nil
17
+ end
18
+
19
+ register_instance_option :except do
20
+ []
21
+ end
22
+
23
+ register_instance_option :show_in_navigation do
24
+ root?
25
+ end
26
+
27
+ register_instance_option :show_in_sidebar do
28
+ !show_in_navigation
29
+ end
30
+
31
+ register_instance_option :show_in_menu do
32
+ true
33
+ end
34
+
35
+ register_instance_option :sidebar_label do
36
+ nil
37
+ end
38
+
39
+ # http://getbootstrap.com/2.3.2/base-css.html#icons
40
+ register_instance_option :link_icon do
41
+ 'fas fa-question'
42
+ end
43
+
44
+ # Should the action be visible
45
+ register_instance_option :visible? do
46
+ authorized?
47
+ end
48
+
49
+ register_instance_option :enabled? do
50
+ bindings[:abstract_model].nil? || (
51
+ (only.nil? || [only].flatten.collect(&:to_s).include?(bindings[:abstract_model].to_s)) &&
52
+ ![except].flatten.collect(&:to_s).include?(bindings[:abstract_model].to_s) &&
53
+ !bindings[:abstract_model].config.excluded?
54
+ ) && (!respond_to?(:writable?) || writable?)
55
+ end
56
+
57
+ register_instance_option :authorized? do
58
+ enabled? && (
59
+ bindings[:controller].try(:authorization_adapter).nil? || bindings[:controller].authorization_adapter.authorized?(authorization_key, bindings[:abstract_model], bindings[:object])
60
+ )
61
+ end
62
+
63
+ # Is the action acting on the root level (Example: /admin/contact)
64
+ register_instance_option :root? do
65
+ false
66
+ end
67
+
68
+ # Is the action on a model scope (Example: /admin/team/export)
69
+ register_instance_option :collection? do
70
+ false
71
+ end
72
+
73
+ # Is the action on an object scope (Example: /admin/team/1/edit)
74
+ register_instance_option :member? do
75
+ false
76
+ end
77
+
78
+ # Target window [_self, _blank]
79
+ register_instance_option :link_target do
80
+ nil
81
+ end
82
+
83
+ # Determines whether to navigate via Turbo Drive or not
84
+ register_instance_option :turbo? do
85
+ true
86
+ end
87
+
88
+ # This block is evaluated in the context of the controller when action is called
89
+ # You can access:
90
+ # - @objects if you're on a model scope
91
+ # - @abstract_model & @model_config if you're on a model or object scope
92
+ # - @object if you're on an object scope
93
+ register_instance_option :controller do
94
+ proc do
95
+ render action: @action.template_name
96
+ end
97
+ end
98
+
99
+ # Model scoped actions only. You will need to handle params[:bulk_ids] in controller
100
+ register_instance_option :bulkable? do
101
+ false
102
+ end
103
+
104
+ # View partial name (called in default :controller block)
105
+ register_instance_option :template_name do
106
+ key.to_sym
107
+ end
108
+
109
+ # For CanCanCan and the like
110
+ register_instance_option :authorization_key do
111
+ key.to_sym
112
+ end
113
+
114
+ # List of methods allowed. Note that you are responsible for correctly handling them in :controller block
115
+ register_instance_option :http_methods do
116
+ [:get]
117
+ end
118
+
119
+ # Url fragment
120
+ register_instance_option :route_fragment do
121
+ custom_key.to_s
122
+ end
123
+
124
+ # Controller action name
125
+ register_instance_option :action_name do
126
+ custom_key.to_sym
127
+ end
128
+
129
+ # I18n key
130
+ register_instance_option :i18n_key do
131
+ key
132
+ end
133
+
134
+ # User should override only custom_key (action name and route fragment change, allows for duplicate actions)
135
+ register_instance_option :custom_key do
136
+ key
137
+ end
138
+
139
+ # Breadcrumb parent
140
+ register_instance_option :breadcrumb_parent do
141
+ if root?
142
+ [:dashboard]
143
+ elsif collection?
144
+ [:index, bindings[:abstract_model]]
145
+ elsif member?
146
+ [:show, bindings[:abstract_model], bindings[:object]]
147
+ end
148
+ end
149
+
150
+ # Off API.
151
+
152
+ def key
153
+ self.class.key
154
+ end
155
+
156
+ def self.key
157
+ name.to_s.demodulize.underscore.to_sym
158
+ end
159
+ end
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Actions
6
+ class BulkDelete < RailsAdmin::Config::Actions::Base
7
+ RailsAdmin::Config::Actions.register(self)
8
+
9
+ register_instance_option :collection do
10
+ true
11
+ end
12
+
13
+ register_instance_option :http_methods do
14
+ %i[post delete]
15
+ end
16
+
17
+ register_instance_option :controller do
18
+ proc do
19
+ if request.post? # BULK DELETE
20
+ @objects = list_entries(@model_config, :destroy)
21
+
22
+ if @objects.blank?
23
+ flash[:error] = t('admin.flash.error', name: pluralize(0, @model_config.label), action: t('admin.actions.delete.done'))
24
+ redirect_to index_path
25
+ else
26
+ render @action.template_name
27
+ end
28
+
29
+ elsif request.delete? # BULK DESTROY
30
+
31
+ destroyed = nil
32
+ not_destroyed = nil
33
+
34
+ unless params[:bulk_ids].blank?
35
+ @objects = list_entries(@model_config, :destroy)
36
+ unless @objects.blank?
37
+ processed_objects = @abstract_model.destroy(@objects)
38
+ destroyed = processed_objects.select(&:destroyed?)
39
+ not_destroyed = processed_objects - destroyed
40
+ destroyed.each do |object|
41
+ @auditing_adapter&.delete_object(object, @abstract_model, _current_user)
42
+ end
43
+ end
44
+ end
45
+
46
+ if destroyed.nil?
47
+ flash[:error] = t('admin.flash.error', name: pluralize(0, @model_config.label), action: t('admin.actions.delete.done'))
48
+ else
49
+ flash[:success] = t('admin.flash.successful', name: pluralize(destroyed.count, @model_config.label), action: t('admin.actions.delete.done')) unless destroyed.empty?
50
+ flash[:error] = t('admin.flash.error', name: pluralize(not_destroyed.count, @model_config.label), action: t('admin.actions.delete.done')) unless not_destroyed.empty?
51
+ end
52
+ redirect_to back_or_index
53
+ end
54
+ end
55
+ end
56
+
57
+ register_instance_option :authorization_key do
58
+ :destroy
59
+ end
60
+
61
+ register_instance_option :bulkable? do
62
+ true
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Actions
6
+ class Dashboard < RailsAdmin::Config::Actions::Base
7
+ RailsAdmin::Config::Actions.register(self)
8
+
9
+ register_instance_option :root? do
10
+ true
11
+ end
12
+
13
+ register_instance_option :breadcrumb_parent do
14
+ nil
15
+ end
16
+
17
+ register_instance_option :auditing_versions_limit do
18
+ 100
19
+ end
20
+
21
+ register_instance_option :controller do
22
+ proc do
23
+ @history = @auditing_adapter&.latest(@action.auditing_versions_limit) if @action.history?
24
+ if @action.statistics?
25
+ model_configs = RailsAdmin::Config.visible_models(controller: self)
26
+
27
+ @abstract_models = model_configs.map(&:abstract_model)
28
+ @most_recent_created = {}
29
+ @count = {}
30
+ @max = 0
31
+ model_configs.each do |config|
32
+ scope = @authorization_adapter&.query(:index, config.abstract_model)
33
+ current_count = config.abstract_model.count({}, scope)
34
+ @max = current_count > @max ? current_count : @max
35
+ name = config.abstract_model.model.name
36
+ @count[name] = current_count
37
+ @most_recent_created[name] = config.last_created_at
38
+ end
39
+ end
40
+ render @action.template_name, status: @status_code || :ok
41
+ end
42
+ end
43
+
44
+ register_instance_option :route_fragment do
45
+ ''
46
+ end
47
+
48
+ register_instance_option :link_icon do
49
+ 'fas fa-home'
50
+ end
51
+
52
+ register_instance_option :statistics? do
53
+ true
54
+ end
55
+
56
+ register_instance_option :history? do
57
+ true
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end