Sprankelprachtig aan/afmeldsysteem

show.html.haml 8.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. - all_buttons = @activity.may_change?(current_person)
  2. .row
  3. .col-md-9
  4. .panel.panel-default
  5. .panel-heading
  6. .btn-group.pull-right
  7. %button.btn.btn-default.dropdown-toggle.btn-xs{data: {toggle: 'dropdown'}, 'aria-haspopup': true, 'aria-expanded': false}
  8. %i.fa.fa-cogs
  9. %span.caret
  10. %ul.dropdown-menu
  11. %li
  12. %a.copy-reactions{data: {activity: @activity.id, absent: true}}
  13. %i.fa.fa-files-o
  14. = t 'activities.participant.copy_absent'
  15. %a.copy-reactions{data: {activity: @activity.id, present: true, absent: true, unknown: true}}
  16. %i.fa.fa-files-o
  17. = t 'activities.participant.copy_responses'
  18. - if all_buttons
  19. %li.divider{role: 'separator'}
  20. %li
  21. = link_to edit_group_activity_path(@group, @activity) do
  22. %i.fa.fa-pencil
  23. = t :edit
  24. = @activity.name
  25. %table.table
  26. - unless @organizers.blank?
  27. %tr
  28. %td
  29. = t 'activities.attrs.organizers'
  30. %td
  31. = @organizers
  32. - unless @activity.description.blank?
  33. %tr
  34. %td
  35. = t 'activities.attrs.description'
  36. %td
  37. = @activity.description
  38. - unless @activity.location.blank?
  39. %tr
  40. %td
  41. = t 'activities.attrs.where'
  42. %td
  43. = @activity.location
  44. %tr
  45. %td
  46. = t 'activities.attrs.when'
  47. %td
  48. = l @activity.start, format: :long
  49. - if @activity.end
  50. \-
  51. - if @activity.end.to_date == @activity.start.to_date
  52. = l @activity.end, format: '%H:%M'
  53. - else
  54. = l @activity.end, format: :long
  55. - if @activity.deadline
  56. %tr
  57. %td
  58. = t 'activities.attrs.deadline'
  59. %td
  60. = l @activity.deadline, format: :long
  61. - if @assignable_subgroups.any?
  62. %tr
  63. %td
  64. = t 'activerecord.attributes.activity.subgroups'
  65. %td
  66. = @assignable_subgroups.join(', ')
  67. - if @ownparticipant&.subgroup
  68. %tr
  69. %td
  70. = t 'activities.participant.yoursubgroup'
  71. %td
  72. = @ownparticipant.subgroup.name
  73. - if @ownparticipant
  74. .col-md-3
  75. .panel.panel-default
  76. .panel-heading
  77. = t 'activities.participant.yourresponse'
  78. .panel-body
  79. = render partial: "activities/wide_presence_buttons", locals: {activity: @activity, person: @ownparticipant.person, state: @ownparticipant.attending}
  80. = editable @ownparticipant,
  81. :notes,
  82. url: presence_group_activity_path(@activity.group, @activity, person_id: @ownparticipant.person_id),
  83. title: t('activities.participant.notes'),
  84. value: @ownparticipant.notes,
  85. emptytext: t('activities.participant.add_notes')
  86. .hidden-xs
  87. .row
  88. .col-md-6
  89. %h2
  90. %span.state-count.all-count
  91. = @num_participants
  92. = t 'activities.participant.plural'
  93. = render partial: "state_counts", locals: {counts: @counts}
  94. .col-md-6
  95. - if @activity.subgroups.any?
  96. = select_tag(:subgroup_filter, options_for_select(@subgroup_ids), class: 'form-control subgroup-filter')
  97. %table.table.table-bordered
  98. - @participants.each do |p|
  99. %tr.participant-row.countable{class: p.row_class, data: {person_id: p.person.id, activity_id: @activity.id, subgroup_id: p.subgroup_id}}
  100. %td
  101. = p.person.full_name
  102. - if p.is_organizer
  103. %i.fa.fa-star-o
  104. %td
  105. = editable p, :notes, url: presence_group_activity_path(@activity.group, @activity, person_id: p.person_id), title: t('activities.participant.notes'), value: p.notes, emptytext: "--"
  106. %td
  107. - if p.person.id == current_person.id || all_buttons
  108. = render partial: "activities/presence_buttons", locals: {activity: @activity, person: p.person, state: p.attending}
  109. .hidden-sm.hidden-md.hidden-lg
  110. - if @activity.subgroups.any?
  111. .panel.panel-default
  112. .panel-heading
  113. = t 'activerecord.attrs.activities.subgroups'
  114. .panel-body
  115. = select_tag(:subgroup_filter, options_for_select(@subgroup_ids), class: 'form-control subgroup-filter')
  116. .panel.panel-default.panel-success
  117. .panel-heading
  118. %a{role: 'button', href: '#present-collapse', data: {toggle: 'collapse'}, 'aria-expanded': 'false'}
  119. %span.sv-show-collapsed
  120. %i.fa.fa-angle-down
  121. %span.sv-show-expanded
  122. %i.fa.fa-angle-up
  123. = t 'activities.state.present'
  124. %span.badge.state-count.present-count
  125. = @counts[true] || "0"
  126. %table.table.collapse#present-collapse
  127. %tbody
  128. - @participants.where(attending: true).each do |p|
  129. %tr.participant-row{data: {person_id: p.person.id, activity_id: @activity.id, subgroup_id: p.subgroup_id}}
  130. %td
  131. = p.person.full_name
  132. - if p.is_organizer
  133. %i.fa.fa-star-o
  134. %td
  135. - if p.person.id == current_person.id || all_buttons
  136. = render partial: "activities/presence_buttons", locals: {activity: @activity, person: p.person, state: p.attending}
  137. %tr.participant-row{data: {person_id: p.person_id, activity_id: @activity.id, subgroup_id: p.subgroup_id}}
  138. %td{colspan: "2"}
  139. = editable p, :notes, url: presence_group_activity_path(@activity.group, @activity, person_id: p.person_id), title: t('activities.participant.notes'), value: p.notes, emptytext: "--"
  140. .panel.panel-default
  141. .panel-heading
  142. %a{role: 'button', href: '#unknown-collapse', data: {toggle: 'collapse'}, 'aria-expanded': 'false'}
  143. %span.sv-show-collapsed
  144. %i.fa.fa-angle-down
  145. %span.sv-show-expanded
  146. %i.fa.fa-angle-up
  147. = t 'activities.state.need_response'
  148. %span.badge.state-count.unknown-count
  149. = @counts[nil] || "0"
  150. %table.table.collapse#unknown-collapse
  151. %tbody
  152. - @participants.where(attending: nil).each do |p|
  153. %tr.participant-row{data: {person_id: p.person.id, activity_id: @activity.id, subgroup_id: p.subgroup_id}}
  154. %td
  155. = p.person.full_name
  156. - if p.is_organizer
  157. %i.fa.fa-star-o
  158. %td
  159. - if p.person.id == current_person.id || all_buttons
  160. = render partial: "activities/presence_buttons", locals: {activity: @activity, person: p.person, state: p.attending}
  161. %tr.participant-row{data: {person_id: p.person_id, activity_id: @activity.id, subgroup_id: p.subgroup_id}}
  162. %td{colspan: "2"}
  163. = editable p, :notes, url: presence_group_activity_path(@activity.group, @activity, person_id: p.person_id), title: t('activities.participant.notes'), value: p.notes, emptytext: "--"
  164. .panel.panel-default.panel-danger
  165. .panel-heading
  166. %a{role: 'button', href: '#absent-collapse', data: {toggle: 'collapse'}, 'aria-expanded': 'false'}
  167. %span.sv-show-collapsed
  168. %i.fa.fa-angle-down
  169. %span.sv-show-expanded
  170. %i.fa.fa-angle-up
  171. = t 'activities.state.absent'
  172. %span.badge.state-count.absent-count
  173. = @counts[false] || "0"
  174. %table.table.collapse#absent-collapse
  175. %tbody
  176. - @participants.where(attending: false).each do |p|
  177. %tr.participant-row{data: {person_id: p.person.id, activity_id: @activity.id, subgroup_id: p.subgroup_id}}
  178. %td
  179. = p.person.full_name
  180. - if p.is_organizer
  181. %i.fa.fa-star-o
  182. %td
  183. - if p.person.id == current_person.id || all_buttons
  184. = render partial: "activities/presence_buttons", locals: {activity: @activity, person: p.person, state: p.attending}
  185. %tr.participant-row{data: {person_id: p.person_id, activity_id: @activity.id, subgroup_id: p.subgroup_id}}
  186. %td{colspan: "2"}
  187. = editable p, :notes, url: presence_group_activity_path(@activity.group, @activity, person_id: p.person_id), title: t('activities.participant.notes'), value: p.notes, emptytext: "--"