rails_event 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 (291) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/README.md +36 -0
  4. data/Rakefile +32 -0
  5. data/app/controllers/eventual/admin/base_controller.rb +4 -0
  6. data/app/controllers/eventual/admin/bookings_controller.rb +43 -0
  7. data/app/controllers/eventual/admin/crowd_members_controller.rb +43 -0
  8. data/app/controllers/eventual/admin/crowds_controller.rb +58 -0
  9. data/app/controllers/eventual/admin/event_crowds_controller.rb +71 -0
  10. data/app/controllers/eventual/admin/event_items_controller.rb +58 -0
  11. data/app/controllers/eventual/admin/event_participants_controller.rb +101 -0
  12. data/app/controllers/eventual/admin/event_taxons_controller.rb +55 -0
  13. data/app/controllers/eventual/admin/events_controller.rb +91 -0
  14. data/app/controllers/eventual/admin/place_taxons_controller.rb +57 -0
  15. data/app/controllers/eventual/admin/places_controller.rb +59 -0
  16. data/app/controllers/eventual/admin/plan_attenders_controller.rb +65 -0
  17. data/app/controllers/eventual/admin/plan_items_controller.rb +84 -0
  18. data/app/controllers/eventual/admin/plans_controller.rb +127 -0
  19. data/app/controllers/eventual/admin/seats_controller.rb +58 -0
  20. data/app/controllers/eventual/admin/time_items_controller.rb +82 -0
  21. data/app/controllers/eventual/admin/time_lists_controller.rb +72 -0
  22. data/app/controllers/eventual/base_controller.rb +4 -0
  23. data/app/controllers/eventual/me/base_controller.rb +4 -0
  24. data/app/controllers/eventual/me/plan_items_controller.rb +58 -0
  25. data/app/controllers/eventual/my/base_controller.rb +4 -0
  26. data/app/controllers/eventual/my/plan_items_controller.rb +55 -0
  27. data/app/controllers/eventual/places_controller.rb +27 -0
  28. data/app/controllers/eventual/time_controller.rb +14 -0
  29. data/app/models/eventual/application_record.rb +5 -0
  30. data/app/models/eventual/booking.rb +5 -0
  31. data/app/models/eventual/crowd.rb +5 -0
  32. data/app/models/eventual/crowd_member.rb +5 -0
  33. data/app/models/eventual/event.rb +6 -0
  34. data/app/models/eventual/event_crowd.rb +5 -0
  35. data/app/models/eventual/event_grant.rb +5 -0
  36. data/app/models/eventual/event_item.rb +5 -0
  37. data/app/models/eventual/event_participant.rb +6 -0
  38. data/app/models/eventual/event_taxon.rb +5 -0
  39. data/app/models/eventual/ext/recurrence.rb +86 -0
  40. data/app/models/eventual/model/agency.rb +18 -0
  41. data/app/models/eventual/model/booked.rb +10 -0
  42. data/app/models/eventual/model/booker.rb +15 -0
  43. data/app/models/eventual/model/booking.rb +37 -0
  44. data/app/models/eventual/model/crowd.rb +21 -0
  45. data/app/models/eventual/model/crowd_member.rb +20 -0
  46. data/app/models/eventual/model/event.rb +48 -0
  47. data/app/models/eventual/model/event_crowd.rb +54 -0
  48. data/app/models/eventual/model/event_grant.rb +14 -0
  49. data/app/models/eventual/model/event_item.rb +30 -0
  50. data/app/models/eventual/model/event_participant.rb +63 -0
  51. data/app/models/eventual/model/event_taxon.rb +13 -0
  52. data/app/models/eventual/model/member.rb +18 -0
  53. data/app/models/eventual/model/occurrence.rb +62 -0
  54. data/app/models/eventual/model/place.rb +25 -0
  55. data/app/models/eventual/model/place_taxon.rb +18 -0
  56. data/app/models/eventual/model/plan.rb +147 -0
  57. data/app/models/eventual/model/plan_attender.rb +31 -0
  58. data/app/models/eventual/model/plan_item.rb +84 -0
  59. data/app/models/eventual/model/plan_participant/crowd_participant.rb +17 -0
  60. data/app/models/eventual/model/plan_participant/normal_participant.rb +9 -0
  61. data/app/models/eventual/model/plan_participant.rb +30 -0
  62. data/app/models/eventual/model/planned.rb +11 -0
  63. data/app/models/eventual/model/planning.rb +44 -0
  64. data/app/models/eventual/model/recurrence.rb +64 -0
  65. data/app/models/eventual/model/seat.rb +17 -0
  66. data/app/models/eventual/model/time_item.rb +46 -0
  67. data/app/models/eventual/model/time_list.rb +57 -0
  68. data/app/models/eventual/place.rb +5 -0
  69. data/app/models/eventual/place_taxon.rb +6 -0
  70. data/app/models/eventual/plan.rb +7 -0
  71. data/app/models/eventual/plan_attender.rb +5 -0
  72. data/app/models/eventual/plan_item.rb +6 -0
  73. data/app/models/eventual/plan_participant.rb +5 -0
  74. data/app/models/eventual/seat.rb +5 -0
  75. data/app/models/eventual/time_item.rb +5 -0
  76. data/app/models/eventual/time_list.rb +5 -0
  77. data/app/models/eventual.rb +11 -0
  78. data/app/models/plan_participant/eventual/crowd_participant.rb +5 -0
  79. data/app/models/plan_participant/eventual/normal_participant.rb +5 -0
  80. data/app/views/admin/_event_nav.html.erb +14 -0
  81. data/app/views/admin/_nav_event.html.erb +9 -0
  82. data/app/views/eventual/admin/base/_nav.html.erb +3 -0
  83. data/app/views/eventual/admin/bookings/_booking.json.jbuilder +12 -0
  84. data/app/views/eventual/admin/bookings/_filter.html.erb +6 -0
  85. data/app/views/eventual/admin/bookings/_form.html.erb +8 -0
  86. data/app/views/eventual/admin/bookings/_show.json.jbuilder +1 -0
  87. data/app/views/eventual/admin/bookings/_show_table.html.erb +28 -0
  88. data/app/views/eventual/admin/bookings/index.html.erb +43 -0
  89. data/app/views/eventual/admin/bookings/index.json.jbuilder +1 -0
  90. data/app/views/eventual/admin/crowd_members/_filter_form.html.erb +7 -0
  91. data/app/views/eventual/admin/crowd_members/_form.html.erb +4 -0
  92. data/app/views/eventual/admin/crowd_members/index.html.erb +34 -0
  93. data/app/views/eventual/admin/crowds/_crowd.json.jbuilder +8 -0
  94. data/app/views/eventual/admin/crowds/_edit_form.html.erb +4 -0
  95. data/app/views/eventual/admin/crowds/_filter_form.html.erb +10 -0
  96. data/app/views/eventual/admin/crowds/_form.html.erb +4 -0
  97. data/app/views/eventual/admin/crowds/_index_tbody.html.erb +5 -0
  98. data/app/views/eventual/admin/crowds/_index_thead.html.erb +3 -0
  99. data/app/views/eventual/admin/crowds/_new_form.html.erb +4 -0
  100. data/app/views/eventual/admin/crowds/_show.json.jbuilder +1 -0
  101. data/app/views/eventual/admin/crowds/_show_table.html.erb +20 -0
  102. data/app/views/eventual/admin/crowds/index.html.erb +5 -0
  103. data/app/views/eventual/admin/crowds/index.json.jbuilder +1 -0
  104. data/app/views/eventual/admin/event_crowds/_breadcrumb.html.erb +7 -0
  105. data/app/views/eventual/admin/event_crowds/_crowd_student.html.erb +18 -0
  106. data/app/views/eventual/admin/event_crowds/_edit_form.html.erb +15 -0
  107. data/app/views/eventual/admin/event_crowds/_index_tbody.html.erb +19 -0
  108. data/app/views/eventual/admin/event_crowds/_index_thead.html.erb +10 -0
  109. data/app/views/eventual/admin/event_crowds/_new_form.html.erb +6 -0
  110. data/app/views/eventual/admin/event_crowds/_show_table.html.erb +12 -0
  111. data/app/views/eventual/admin/event_crowds/index.html.erb +2 -0
  112. data/app/views/eventual/admin/event_items/_breadcrumb.html.erb +7 -0
  113. data/app/views/eventual/admin/event_items/_edit_form.html.erb +4 -0
  114. data/app/views/eventual/admin/event_items/_event_item.json.jbuilder +12 -0
  115. data/app/views/eventual/admin/event_items/_filter_form.html.erb +9 -0
  116. data/app/views/eventual/admin/event_items/_form.html.erb +12 -0
  117. data/app/views/eventual/admin/event_items/_index_tbody.html.erb +8 -0
  118. data/app/views/eventual/admin/event_items/_index_thead.html.erb +5 -0
  119. data/app/views/eventual/admin/event_items/_new_form.html.erb +4 -0
  120. data/app/views/eventual/admin/event_items/_show.json.jbuilder +1 -0
  121. data/app/views/eventual/admin/event_items/_show_table.html.erb +12 -0
  122. data/app/views/eventual/admin/event_items/index.html.erb +1 -0
  123. data/app/views/eventual/admin/event_items/index.json.jbuilder +1 -0
  124. data/app/views/eventual/admin/event_participants/_breadcrumb.html.erb +7 -0
  125. data/app/views/eventual/admin/event_participants/_button.html.erb +3 -0
  126. data/app/views/eventual/admin/event_participants/_filter_form.html.erb +9 -0
  127. data/app/views/eventual/admin/event_participants/_filter_table.html.erb +11 -0
  128. data/app/views/eventual/admin/event_participants/_form.html.erb +4 -0
  129. data/app/views/eventual/admin/event_participants/_index_tbody.html.erb +15 -0
  130. data/app/views/eventual/admin/event_participants/_index_thead.html.erb +5 -0
  131. data/app/views/eventual/admin/event_participants/index.html.erb +1 -0
  132. data/app/views/eventual/admin/event_taxons/_breadcrumb.html.erb +6 -0
  133. data/app/views/eventual/admin/event_taxons/_edit_form.html.erb +4 -0
  134. data/app/views/eventual/admin/event_taxons/_event_taxon.json.jbuilder +5 -0
  135. data/app/views/eventual/admin/event_taxons/_filter_form.html.erb +10 -0
  136. data/app/views/eventual/admin/event_taxons/_form.html.erb +2 -0
  137. data/app/views/eventual/admin/event_taxons/_index_tbody.html.erb +1 -0
  138. data/app/views/eventual/admin/event_taxons/_index_thead.html.erb +2 -0
  139. data/app/views/eventual/admin/event_taxons/_new_form.html.erb +4 -0
  140. data/app/views/eventual/admin/event_taxons/_show.json.jbuilder +1 -0
  141. data/app/views/eventual/admin/event_taxons/index.html.erb +5 -0
  142. data/app/views/eventual/admin/event_taxons/index.json.jbuilder +1 -0
  143. data/app/views/eventual/admin/events/_edit_form.html.erb +4 -0
  144. data/app/views/eventual/admin/events/_event.json.jbuilder +17 -0
  145. data/app/views/eventual/admin/events/_filter_form.html.erb +9 -0
  146. data/app/views/eventual/admin/events/_filter_table.html.erb +15 -0
  147. data/app/views/eventual/admin/events/_form.html.erb +11 -0
  148. data/app/views/eventual/admin/events/_index_tbody.html.erb +11 -0
  149. data/app/views/eventual/admin/events/_index_thead.html.erb +10 -0
  150. data/app/views/eventual/admin/events/_new_form.html.erb +4 -0
  151. data/app/views/eventual/admin/events/_show/_breadcrumb.html.erb +7 -0
  152. data/app/views/eventual/admin/events/_show.json.jbuilder +1 -0
  153. data/app/views/eventual/admin/events/create.json.jbuilder +1 -0
  154. data/app/views/eventual/admin/events/index.html.erb +5 -0
  155. data/app/views/eventual/admin/events/index.json.jbuilder +1 -0
  156. data/app/views/eventual/admin/events/repeat_form.js.erb +14 -0
  157. data/app/views/eventual/admin/events/show.html.erb +16 -0
  158. data/app/views/eventual/admin/place_taxons/_breadcrumb.html.erb +6 -0
  159. data/app/views/eventual/admin/place_taxons/_edit_form.html.erb +4 -0
  160. data/app/views/eventual/admin/place_taxons/_filter_form.html.erb +9 -0
  161. data/app/views/eventual/admin/place_taxons/_form.html.erb +6 -0
  162. data/app/views/eventual/admin/place_taxons/_index_tbody.html.erb +17 -0
  163. data/app/views/eventual/admin/place_taxons/_index_thead.html.erb +4 -0
  164. data/app/views/eventual/admin/place_taxons/_new_form.html.erb +4 -0
  165. data/app/views/eventual/admin/place_taxons/_show_table.html.erb +12 -0
  166. data/app/views/eventual/admin/place_taxons/index.html.erb +5 -0
  167. data/app/views/eventual/admin/places/_breadcrumb.html.erb +5 -0
  168. data/app/views/eventual/admin/places/_edit_form.html.erb +4 -0
  169. data/app/views/eventual/admin/places/_filter_form.html.erb +10 -0
  170. data/app/views/eventual/admin/places/_form.html.erb +4 -0
  171. data/app/views/eventual/admin/places/_index_tbody.html.erb +6 -0
  172. data/app/views/eventual/admin/places/_index_thead.html.erb +10 -0
  173. data/app/views/eventual/admin/places/_index_tr.html.erb +19 -0
  174. data/app/views/eventual/admin/places/_new_form.html.erb +4 -0
  175. data/app/views/eventual/admin/places/_place.json.jbuilder +6 -0
  176. data/app/views/eventual/admin/places/_show.json.jbuilder +1 -0
  177. data/app/views/eventual/admin/places/_show_table.html.erb +8 -0
  178. data/app/views/eventual/admin/places/index.html.erb +5 -0
  179. data/app/views/eventual/admin/places/index.json.jbuilder +1 -0
  180. data/app/views/eventual/admin/plan_attenders/_breadcrumb.html.erb +9 -0
  181. data/app/views/eventual/admin/plan_attenders/_course_student.json.jbuilder +11 -0
  182. data/app/views/eventual/admin/plan_attenders/_edit_form.html.erb +4 -0
  183. data/app/views/eventual/admin/plan_attenders/_filter.html.erb +6 -0
  184. data/app/views/eventual/admin/plan_attenders/_form.html.erb +5 -0
  185. data/app/views/eventual/admin/plan_attenders/_new_form.html.erb +4 -0
  186. data/app/views/eventual/admin/plan_attenders/_plan_attender.json.jbuilder +9 -0
  187. data/app/views/eventual/admin/plan_attenders/_show.json.jbuilder +1 -0
  188. data/app/views/eventual/admin/plan_attenders/_show_table.html.erb +16 -0
  189. data/app/views/eventual/admin/plan_attenders/absent.json.jbuilder +0 -0
  190. data/app/views/eventual/admin/plan_attenders/attend.json.jbuilder +0 -0
  191. data/app/views/eventual/admin/plan_attenders/index.html.erb +51 -0
  192. data/app/views/eventual/admin/plan_attenders/index.json.jbuilder +2 -0
  193. data/app/views/eventual/admin/plan_attenders/indexs.json.jbuilder +6 -0
  194. data/app/views/eventual/admin/plan_items/_breadcrumb.html.erb +8 -0
  195. data/app/views/eventual/admin/plan_items/_edit.html.erb +23 -0
  196. data/app/views/eventual/admin/plan_items/_filter.html.erb +11 -0
  197. data/app/views/eventual/admin/plan_items/_menu.html.erb +4 -0
  198. data/app/views/eventual/admin/plan_items/_plan.html.erb +6 -0
  199. data/app/views/eventual/admin/plan_items/_plan_item.json.jbuilder +12 -0
  200. data/app/views/eventual/admin/plan_items/_plan_items.json.jbuilder +13 -0
  201. data/app/views/eventual/admin/plan_items/_show.json.jbuilder +1 -0
  202. data/app/views/eventual/admin/plan_items/_show_table.html.erb +20 -0
  203. data/app/views/eventual/admin/plan_items/index.html.erb +72 -0
  204. data/app/views/eventual/admin/plan_items/index.json.jbuilder +3 -0
  205. data/app/views/eventual/admin/plan_items/qrcode.js.erb +1 -0
  206. data/app/views/eventual/admin/plans/_edit_item.html.erb +24 -0
  207. data/app/views/eventual/admin/plans/_filter.html.erb +8 -0
  208. data/app/views/eventual/admin/plans/_index.html.erb +31 -0
  209. data/app/views/eventual/admin/plans/_plan.json.jbuilder +12 -0
  210. data/app/views/eventual/admin/plans/_select_table.html.erb +30 -0
  211. data/app/views/eventual/admin/plans/_show.json.jbuilder +1 -0
  212. data/app/views/eventual/admin/plans/_show_item.html.erb +22 -0
  213. data/app/views/eventual/admin/plans/_show_table.html.erb +20 -0
  214. data/app/views/eventual/admin/plans/_table.html.erb +34 -0
  215. data/app/views/eventual/admin/plans/calendar.js.erb +12 -0
  216. data/app/views/eventual/admin/plans/index.html.erb +3 -0
  217. data/app/views/eventual/admin/plans/index.js.erb +42 -0
  218. data/app/views/eventual/admin/plans/index.json.jbuilder +1 -0
  219. data/app/views/eventual/admin/plans/show.html.erb +3 -0
  220. data/app/views/eventual/admin/seats/_breadcrumb.html.erb +0 -0
  221. data/app/views/eventual/admin/seats/_edit_form.html.erb +4 -0
  222. data/app/views/eventual/admin/seats/_filter_form.html.erb +9 -0
  223. data/app/views/eventual/admin/seats/_form.html.erb +4 -0
  224. data/app/views/eventual/admin/seats/_index_tbody.html.erb +3 -0
  225. data/app/views/eventual/admin/seats/_index_thead.html.erb +4 -0
  226. data/app/views/eventual/admin/seats/_new_form.html.erb +4 -0
  227. data/app/views/eventual/admin/seats/_show_table.html.erb +12 -0
  228. data/app/views/eventual/admin/seats/index.html.erb +5 -0
  229. data/app/views/eventual/admin/time_items/_edit_form.html.erb +4 -0
  230. data/app/views/eventual/admin/time_items/_form.html.erb +3 -0
  231. data/app/views/eventual/admin/time_items/_new_form.html.erb +4 -0
  232. data/app/views/eventual/admin/time_items/_show.json.jbuilder +1 -0
  233. data/app/views/eventual/admin/time_items/_show_table.html.erb +12 -0
  234. data/app/views/eventual/admin/time_items/_time_item.json.jbuilder +3 -0
  235. data/app/views/eventual/admin/time_items/_time_items_options.html.erb +1 -0
  236. data/app/views/eventual/admin/time_items/default.json.jbuilder +1 -0
  237. data/app/views/eventual/admin/time_items/index.json.jbuilder +1 -0
  238. data/app/views/eventual/admin/time_items/select.js.erb +3 -0
  239. data/app/views/eventual/admin/time_lists/_edit_form.html.erb +4 -0
  240. data/app/views/eventual/admin/time_lists/_filter.html.erb +8 -0
  241. data/app/views/eventual/admin/time_lists/_form.html.erb +4 -0
  242. data/app/views/eventual/admin/time_lists/_index_tbody.html.erb +14 -0
  243. data/app/views/eventual/admin/time_lists/_index_thead.html.erb +8 -0
  244. data/app/views/eventual/admin/time_lists/_index_tr.html.erb +13 -0
  245. data/app/views/eventual/admin/time_lists/_new_form.html.erb +4 -0
  246. data/app/views/eventual/admin/time_lists/_show.json.jbuilder +1 -0
  247. data/app/views/eventual/admin/time_lists/_show_table.html.erb +8 -0
  248. data/app/views/eventual/admin/time_lists/_time_items.html.erb +27 -0
  249. data/app/views/eventual/admin/time_lists/_time_list.json.jbuilder +10 -0
  250. data/app/views/eventual/admin/time_lists/index.html.erb +5 -0
  251. data/app/views/eventual/admin/time_lists/index.json.jbuilder +1 -0
  252. data/app/views/eventual/me/plan_items/_plan_item.json.jbuilder +14 -0
  253. data/app/views/eventual/me/plan_items/index.json.jbuilder +3 -0
  254. data/app/views/eventual/my/plans/_show_table.html.erb +32 -0
  255. data/app/views/eventual/my/plans/_table.html.erb +34 -0
  256. data/app/views/eventual/my/plans/_time_plan.json.jbuilder +8 -0
  257. data/app/views/eventual/my/plans/calendar.js.erb +12 -0
  258. data/app/views/eventual/my/plans/edit.html.erb +9 -0
  259. data/app/views/eventual/my/plans/edit.js.erb +3 -0
  260. data/app/views/eventual/my/plans/index-ready.js +11 -0
  261. data/app/views/eventual/my/plans/index.html.erb +26 -0
  262. data/app/views/eventual/my/plans/index.js +35 -0
  263. data/app/views/eventual/my/plans/index.json.jbuilder +1 -0
  264. data/app/views/eventual/my/plans/new.html.erb +9 -0
  265. data/app/views/eventual/my/plans/show.html.erb +7 -0
  266. data/app/views/eventual/my/plans/show.js.erb +12 -0
  267. data/app/views/eventual/my/plans/show.json.jbuilder +1 -0
  268. data/app/views/eventual/places/_filter_table.html.erb +11 -0
  269. data/app/views/eventual/places/index.html.erb +35 -0
  270. data/app/views/eventual/places/show.html.erb +0 -0
  271. data/app/views/eventual/time/_finish_at.html.erb +1 -0
  272. data/app/views/eventual/time/_finish_at_once.html.erb +1 -0
  273. data/app/views/eventual/time/_form.html.erb +15 -0
  274. data/app/views/eventual/time/_monthly_checkboxes.html.erb +1 -0
  275. data/app/views/eventual/time/_once_date.html.erb +1 -0
  276. data/app/views/eventual/time/_start_at.html.erb +1 -0
  277. data/app/views/eventual/time/_start_at_once.html.erb +1 -0
  278. data/app/views/eventual/time/_weekly_checkboxes.html.erb +1 -0
  279. data/app/views/eventual/time/index.css +5 -0
  280. data/app/views/eventual/time/repeat_form.js.erb +14 -0
  281. data/app/views/eventual/time/show.css +3 -0
  282. data/config/locales/en.enum.yml +8 -0
  283. data/config/locales/zh.attributes.yml +50 -0
  284. data/config/locales/zh.controller.yml +59 -0
  285. data/config/locales/zh.enum.yml +12 -0
  286. data/config/routes.rb +98 -0
  287. data/lib/rails_event/config.rb +13 -0
  288. data/lib/rails_event/engine.rb +29 -0
  289. data/lib/rails_event/version.rb +5 -0
  290. data/lib/rails_event.rb +4 -0
  291. metadata +346 -0
@@ -0,0 +1,8 @@
1
+ json.extract! plan,
2
+ :id,
3
+ :plan_type,
4
+ :plan_id,
5
+ :begin_on,
6
+ :end_on,
7
+ :created_at,
8
+ :updated_at
@@ -0,0 +1,12 @@
1
+ <% @settings.except(:defaultDate).each do |key, value| %>
2
+ <% if value.is_a?(Hash) %>
3
+ calendar.setOption('<%= key %>', <%= raw value.to_json %>)
4
+ <% elsif value.is_a?(String) %>
5
+ calendar.setOption('<%= key %>', '<%= value %>')
6
+ <% else %>
7
+ calendar.setOption('<%= key %>', <%= value %>)
8
+ <% end %>
9
+ <% end %>
10
+ calendar.changeView('timeGrid', '<%= @settings[:defaultDate] %>')
11
+ calendar.removeAllEvents()
12
+ calendar.addEventSource(<%= raw @events.to_json %>)
@@ -0,0 +1,9 @@
1
+ <div class="ui segment breadcrumb">
2
+ <%= link_to 'Back', booking_time_plans_path, class: 'section' %>
3
+ <i class="fas fa-angle-right divider"></i>
4
+ <div class="active section">Edit</div>
5
+ </div>
6
+
7
+ <div class="ui segment">
8
+ <%= render 'form' %>
9
+ </div>
@@ -0,0 +1,3 @@
1
+ $('#modal').replaceWith('<%= j(render 'edit') %>');
2
+ $('#modal').modal({autofocus: false}).modal('show');
3
+ remote_js_load('<%= raw remote_js_load %>')
@@ -0,0 +1,11 @@
1
+ //= require moment/moment
2
+ //= require moment-timezone/builds/moment-timezone-with-data
3
+ //= require @fullcalendar/core
4
+ //= require @fullcalendar/core/locales/zh-cn
5
+ //= require @fullcalendar/daygrid
6
+ //= require @fullcalendar/timegrid
7
+ //= require @fullcalendar/resource-common
8
+ //= require @fullcalendar/resource-daygrid
9
+ //= require @fullcalendar/resource-timegrid
10
+ //= require @fullcalendar/moment
11
+ //= require @fullcalendar/moment-timezone
@@ -0,0 +1,26 @@
1
+ <% content_for :breadcrumb do %>
2
+ <div class="breadcrumb has-succeeds-separator">
3
+ <ul>
4
+ <li><%= link_to '课程列表', admin_events_path %></li>
5
+ <li class="is-active">排课</li>
6
+ </ul>
7
+ </div>
8
+ <% end %>
9
+
10
+ <div class="ui top attached fluid borderless menu">
11
+ <div class="item">
12
+ <div class="ui right labeled left labeled input">
13
+ <%= date_field_tag :'plan[begin_on]', Date.today, form: 'time_plan_form', data: { url: my_time_plans_path } %>
14
+ <div class="ui label">
15
+ <i class="arrow circle right icon"></i>
16
+ </div>
17
+ <%= date_field_tag :'plan[end_on]', nil, max: '2019-04-20', form: 'time_plan_form', data: { url: my_time_plans_path } %>
18
+ </div>
19
+ </div>
20
+ </div>
21
+
22
+ <div class="ui bottom attached segment">
23
+ <%= select_tag :'plan[place_id]', options_from_collection_for_select(@places, :id, :name), form: 'time_plan_form', data: { url: my_time_plans_path } %>
24
+ <div class="ui divider"></div>
25
+ <div id="calendar"></div>
26
+ </div>
@@ -0,0 +1,35 @@
1
+ var calendarEl = document.getElementById('calendar');
2
+ var calendar = new FullCalendar.Calendar(calendarEl, {
3
+ schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
4
+ locale: 'zh-cn',
5
+ plugins: [ 'timeGrid' ],
6
+ header: {
7
+ left: 'prev,today,next',
8
+ center: 'title',
9
+ right: ''
10
+ },
11
+ defaultView: 'timeGridWeek',
12
+ columnHeaderFormat: settings[columnHeaderFormat].to_json,
13
+ allDaySlot: false,
14
+ minTime: '<%= @settings[:minTime] %>',
15
+ maxTime: '<%= @settings[:maxTime] %>',
16
+ slotDuration: '<%= @settings[:slotDuration] %>',
17
+ slotLabelInterval: '<%= @settings[:slotLabelInterval] %>',
18
+ slotLabelFormat: {
19
+ hour: 'numeric',
20
+ minute: '2-digit',
21
+ omitZeroMinute: true,
22
+ hour12: false
23
+ },
24
+ events: events.to_json,
25
+ eventClick: function(info) {
26
+ var form = document.getElementById('time_plan_form')
27
+ var data = new FormData(form);
28
+ data.set('time_item_id', info.event.id);
29
+ data.set('time_item_start', info.event.start.toISOString());
30
+
31
+ Rails.ajax({url: form.action, type: 'POST', data: data, dataType: 'script'});
32
+ }
33
+ });
34
+
35
+ calendar.render()
@@ -0,0 +1 @@
1
+ json.time_plans @time_plans, partial: 'plan', as: :plan
@@ -0,0 +1,9 @@
1
+ <div class="ui segment breadcrumb">
2
+ <%= link_to 'Back', time_plans_path(params[:plan_type], params[:plan_id]), class: 'section' %>
3
+ <i class="fas fa-angle-right divider"></i>
4
+ <div class="active section">Add</div>
5
+ </div>
6
+
7
+ <div class="ui segment">
8
+ <%= render 'form' %>
9
+ </div>
@@ -0,0 +1,7 @@
1
+ <div class="ui segment breadcrumb">
2
+ <%= link_to 'Back', booking_time_plans_path, class: 'section' %>
3
+ <i class="fas fa-angle-right divider"></i>
4
+ <div class="active section">Show</div>
5
+ </div>
6
+
7
+ <%= render 'show_table' %>
@@ -0,0 +1,12 @@
1
+ <% @settings.except(:defaultDate).each do |key, value| %>
2
+ <% if value.is_a?(Hash) %>
3
+ calendar.setOption('<%= key %>', <%= raw value.to_json %>)
4
+ <% elsif value.is_a?(String) %>
5
+ calendar.setOption('<%= key %>', '<%= value %>')
6
+ <% else %>
7
+ calendar.setOption('<%= key %>', <%= value %>)
8
+ <% end %>
9
+ <% end %>
10
+ calendar.changeView('timeGrid', '<%= @settings[:defaultDate] %>')
11
+ calendar.removeAllEvents()
12
+ calendar.addEventSource(<%= raw @plan.events.to_json %>)
@@ -0,0 +1 @@
1
+ json.plan @plan, partial: 'plan', as: :plan
@@ -0,0 +1,11 @@
1
+ <table class="as-search">
2
+ <tr>
3
+ <th>类别</th>
4
+ <td>
5
+ <%= link_to '默认', filter_params(except: :place_taxon_id), class: active_helper(place_taxon_id: '', active: 'button is-info', item: 'button is-light') %>
6
+ <% @place_taxons.each do |place_taxon| %>
7
+ <%= link_to place_taxon.name, filter_params(place_taxon_id: place_taxon.id), class: active_helper(place_taxon_id: place_taxon.id, active: 'button is-info', item: 'button is-light') %>
8
+ <% end %>
9
+ </td>
10
+ </tr>
11
+ </table>
@@ -0,0 +1,35 @@
1
+ <div class="box">
2
+ <%= render 'filter_table' %>
3
+ </div>
4
+
5
+ <div class="columns">
6
+ <div class="column">
7
+ <div class="">
8
+ <% @places.each do |place| %>
9
+ <div class="media">
10
+ <div class="media-left">
11
+ </div>
12
+ <div class="media-content">
13
+ <%= link_to place.name, place_path(place) %>
14
+ <p><%= place.description %></p>
15
+ </div>
16
+ <div class="media-right">
17
+ <%= link_to '加入购物车', { controller: 'trade/my/trade_items', action: 'create', good_id: place.id, good_type: place.class_name }, method: :post, class: 'button' %>
18
+ </div>
19
+ </div>
20
+ <% end %>
21
+ </div>
22
+
23
+ <%= paginate @places %>
24
+ </div>
25
+
26
+
27
+ <div class="column is-narrow">
28
+ <div class="ui segment">
29
+ <div class="ui menu vertical">
30
+ <div class="item"><%= link_to '申请为供应商', new_my_place_path(place_taxon_id: params[:place_taxon_id]), class: 'button is-link is-small' %></div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+
File without changes
@@ -0,0 +1 @@
1
+ <%= f.time_field :finish_at if f.object.respond_to?(:finish_at) %>
@@ -0,0 +1 @@
1
+ <%= f.datetime_local_field :finish_at if f.object.respond_to?(:finish_at) %>
@@ -0,0 +1,15 @@
1
+ <%= f.select :repeat_type, options_for_select(f.object.class.options_i18n(:repeat_type), f.object.repeat_type || 'once'), {}, { data: { booking_type: f.object.class.base_class.name, title: 'repeat_type' } } %>
2
+ <% if f.object.repeat_type == 'monthly' %>
3
+ <%= render partial: 'event/time/month_checkboxes', locals: { f: f } %>
4
+ <% elsif f.object.repeat_type == 'weekly' %>
5
+ <%= render partial: 'event/time/week_checkboxes', locals: { f: f } %>
6
+ <% else %>
7
+ <div id="<%= f.object.class.base_class.name.underscore %>_repeat_days_wrapper"></div>
8
+ <% end %>
9
+ <% if ['once', nil].include? f.object.repeat_type %>
10
+ <%= f.datetime_field :start_at %>
11
+ <%= f.datetime_field :finish_at if f.object.respond_to?(:finish_at) %>
12
+ <% else %>
13
+ <%= f.time_field :start_at %>
14
+ <%= f.time_field :finish_at if f.object.respond_to?(:finish_at) %>
15
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= f.collection_check_boxes :repeat_days, 1..31, :to_i, :ordinalize, { include_hidden: false } %>
@@ -0,0 +1 @@
1
+ <%= f.date_field :repeat_days %>
@@ -0,0 +1 @@
1
+ <%= f.time_field :start_at %>
@@ -0,0 +1 @@
1
+ <%= f.datetime_local_field :start_at %>
@@ -0,0 +1 @@
1
+ <%= f.collection_check_boxes :repeat_days, Date::DAYS_INTO_WEEK, :second, :first, { include_hidden: false } %>
@@ -0,0 +1,5 @@
1
+ /*
2
+ *= require @fullcalendar/core/main
3
+ *= require @fullcalendar/timegrid/main
4
+ *= require @fullcalendar/daygrid/main
5
+ */
@@ -0,0 +1,14 @@
1
+ <% form_object = default_form_object(@booking, can: { wrap_all_id: true }) %>
2
+ <% if params[:repeat_type] == 'weekly' %>
3
+ $('#<%= @booking.class.base_class.name.underscore %>_repeat_days_wrapper').replaceWith('<%= j(render partial: 'booking/time/weekly_checkboxes', locals: { f: form_object }) %>');
4
+ $('#<%= @booking.class.base_class.name.underscore %>_start_at_wrapper').replaceWith('<%= j(render partial: 'booking/time/start_at', locals: { f: form_object }) %>');
5
+ $('#<%= @booking.class.base_class.name.underscore %>_finish_at_wrapper').replaceWith('<%= j(render partial: 'booking/time/finish_at', locals: { f: form_object }) %>');
6
+ <% elsif params[:repeat_type] == 'monthly' %>
7
+ $('#<%= @booking.class.base_class.name.underscore %>_repeat_days_wrapper').replaceWith('<%= j(render partial: 'booking/time/monthly_checkboxes', locals: { f: form_object }) %>');
8
+ $('#<%= @booking.class.base_class.name.underscore %>_start_at_wrapper').replaceWith('<%= j(render partial: 'booking/time/start_at', locals: { f: form_object }) %>');
9
+ $('#<%= @booking.class.base_class.name.underscore %>_finish_at_wrapper').replaceWith('<%= j(render partial: 'booking/time/finish_at', locals: { f: form_object }) %>');
10
+ <% elsif params[:repeat_type] == 'once' %>
11
+ $('#<%= @booking.class.base_class.name.underscore %>_repeat_days_wrapper').replaceWith('<%= j(render partial: 'booking/time/once_date', locals: { f: form_object }) %>');
12
+ $('#<%= @booking.class.base_class.name.underscore %>_start_at_wrapper').replaceWith('<%= j(render partial: 'booking/time/start_at_once', locals: { f: form_object }) %>');
13
+ $('#<%= @booking.class.base_class.name.underscore %>_finish_at_wrapper').replaceWith('<%= j(render partial: 'booking/time/finish_at_once', locals: { f: form_object }) %>');
14
+ <% end %>
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require ./index
3
+ */
@@ -0,0 +1,8 @@
1
+ en:
2
+ activerecord:
3
+ enum:
4
+ plan:
5
+ repeat_type:
6
+ weekly: Weekly
7
+ monthly: Monthly
8
+ yearly: Yearly
@@ -0,0 +1,50 @@
1
+ zh:
2
+ activerecord:
3
+ attributes:
4
+ eventual/plan:
5
+ begin_on: 开始日期
6
+ end_on: 截止日期
7
+ repeat_type: 重复类型
8
+ time_list_id: 时间方案
9
+ eventual/time_list:
10
+ name: 名称
11
+ code: 代码
12
+ item_minutes: 节次时间(分钟)
13
+ interval_minutes: 课间时间(分钟)
14
+ default: 默认选择
15
+ time_items: 明细
16
+ eventual/place:
17
+ place_taxon_id: 空间分类
18
+ seats_count: 座位数
19
+ eventual/event:
20
+ event_taxon_id: 活动分类
21
+ event_participants_count: 报名人数
22
+ price: 消耗课时
23
+ eventual/event_crowd:
24
+ teacher: 老师
25
+ members: 学生
26
+ crowd_id: 班级
27
+ teacher_id: 老师
28
+ room_id: 教室
29
+ eventual/event_participant:
30
+ state: 状态
31
+ score: 分数
32
+ eventual/event_plan:
33
+ booking_on: 日期
34
+ time_item: 时间段
35
+ room_id: 教室
36
+ lesson_id: 课程
37
+ teacher_id: 老师
38
+ qrcode: 二维码
39
+ eventual/event_item:
40
+ videos: 媒体资料
41
+ documents: 文件
42
+ author_id: 课程作者
43
+ eventual/plan_attender:
44
+ member_id: 学生
45
+ state: 状态
46
+ attended: 是否出勤
47
+ created_at: 入学时间
48
+ eventual/crowd:
49
+ member_type: 学生类型
50
+ crowd_members_count: 学生数
@@ -0,0 +1,59 @@
1
+ zh:
2
+ eventual:
3
+ title: 预约/事件
4
+ my:
5
+ time_plans:
6
+ index:
7
+ title:
8
+ admin:
9
+ title: 预约管理
10
+ time_lists:
11
+ index:
12
+ title: 时间表
13
+ place_taxons:
14
+ index:
15
+ title: 空间分类
16
+ places:
17
+ index:
18
+ title: 空间
19
+ seats:
20
+ index:
21
+ title: 桌子
22
+ events:
23
+ index:
24
+ title: 活动列表
25
+ show:
26
+ title: 活动详情
27
+ crowds:
28
+ index:
29
+ title: 班级
30
+ event_plans:
31
+ index:
32
+ title: 计划
33
+ plan: 排课
34
+ qrcode: 获取二维码
35
+ plan:
36
+ title: 排课
37
+ event_participants:
38
+ index:
39
+ title: 学生列表
40
+ event_taxons:
41
+ index:
42
+ title: 活动分类
43
+ new:
44
+ title: 添加课程分类
45
+ event_items:
46
+ index:
47
+ title: 课程内容
48
+ agencys:
49
+ index:
50
+ title: 园区学生
51
+ edit_crowd:
52
+ title: 分班
53
+ plans:
54
+ index:
55
+ title: 时间计划
56
+ plan_attenders:
57
+ index:
58
+ title: 点名
59
+ qrcode: 二维码
@@ -0,0 +1,12 @@
1
+ zh:
2
+ activerecord:
3
+ enum:
4
+ eventual/plan:
5
+ repeat_type:
6
+ weekly: 每周
7
+ monthly: 每月
8
+ yearly: 每年
9
+ eventual/crowd:
10
+ member_type:
11
+ Profile: 学生
12
+ Member: 老师
data/config/routes.rb ADDED
@@ -0,0 +1,98 @@
1
+ Rails.application.routes.draw do
2
+
3
+ scope module: :eventual, defaults: { business: 'eventual' } do
4
+ controller :time do
5
+ get 'repeat_form', action: 'repeat_form'
6
+ end
7
+ resources :plans do
8
+ collection do
9
+ get :calendar
10
+ end
11
+ member do
12
+ get 'calendar' => :show_calendar
13
+ end
14
+ end
15
+ resources :time_items, only: [:index] do
16
+ collection do
17
+ get :select
18
+ end
19
+ end
20
+ resources :places do
21
+ resources :seats
22
+ end
23
+ end
24
+
25
+ scope :admin, module: 'eventual/admin', as: :admin, defaults: { business: 'eventual', namespace: 'admin' } do
26
+ resources :time_lists do
27
+ resources :time_items
28
+ end
29
+ resources :time_items, only: [] do
30
+ collection do
31
+ get :default
32
+ end
33
+ end
34
+ resources :place_taxons
35
+ resources :places do
36
+ resources :seats
37
+ end
38
+ resources :plans
39
+ resources :plan_items do
40
+ patch :qrcode, on: :member
41
+ resources :bookings do
42
+ collection do
43
+ delete '' => :destroy
44
+ end
45
+ end
46
+ resources :plan_attenders do
47
+ collection do
48
+ delete '' => :destroy
49
+ end
50
+ member do
51
+ put :attend
52
+ put :absent
53
+ end
54
+ end
55
+ end
56
+ resources :crowds do
57
+ resources :crowd_members do
58
+ collection do
59
+ delete '' => :destroy
60
+ end
61
+ end
62
+ end
63
+ resources :event_taxons
64
+ resources :events do
65
+ collection do
66
+ get :plan
67
+ end
68
+ resources :event_participants do
69
+ collection do
70
+ post :check
71
+ post :attend
72
+ delete '' => :destroy
73
+ end
74
+ member do
75
+ patch :quit
76
+ end
77
+ end
78
+ resources :event_items
79
+ end
80
+ resources :event_items, only: [] do
81
+ member do
82
+ get 'plan' => :edit_plan
83
+ patch 'plan' => :update_plan
84
+ delete 'plan' => :destroy_plan
85
+ end
86
+ end
87
+ end
88
+
89
+ scope :my, module: 'eventual/my', as: :my, defaults: { business: 'eventual', namespace: 'my' } do
90
+ resources :time_plans
91
+ resources :places
92
+ end
93
+
94
+ scope :me, module: 'eventual/me', as: :me, defaults: { business: 'eventual', namespace: 'me' } do
95
+ resources :plan_items
96
+ end
97
+
98
+ end