99 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #schedule-preview
 | |
| 	- @schedule.each do | day, data |
 | |
| 		%h4=date(day, :weekday)
 | |
| 		%table.schedule{class: data[:locations].present? ? 'has-locations' : 'no-locations'}
 | |
| 			- if data[:locations].present?
 | |
| 				%thead
 | |
| 					%tr
 | |
| 						%th.corner
 | |
| 						- data[:locations].each do | id, location |
 | |
| 							%th=location.title
 | |
| 						%th.status
 | |
| 			%tbody
 | |
| 				- data[:times].each do | time, time_data |
 | |
| 					%tr
 | |
| 						- rowspan = (time_data[:length] * 2).to_i
 | |
| 						%th=time(time)
 | |
| 						- if time_data[:type] == :workshop
 | |
| 							- if time_data[:item][:workshops].present?
 | |
| 								- data[:locations].each do | id, location |
 | |
| 									- if time_data[:item][:workshops][id].present?
 | |
| 										- workshop = time_data[:item][:workshops][id][:workshop]
 | |
| 										- status = time_data[:item][:workshops][id][:status]
 | |
| 									- else
 | |
| 										- workshop = status = nil
 | |
| 									%td{class: [time_data[:type], workshop.present? ? :filled : nil], rowspan: rowspan}
 | |
| 										- if workshop.present?
 | |
| 											= form_tag administration_update_path(@this_conference.slug, :schedule), class: 'js-xhr' do
 | |
| 												.title=workshop.title
 | |
| 												.status
 | |
| 													.conflict-score
 | |
| 														%span.title Conflict Score: 
 | |
| 														%span.value="#{status[:conflict_score] * 100.0}%"
 | |
| 													- if status[:errors].present?
 | |
| 														.errors
 | |
| 															- status[:errors].each do | error |
 | |
| 																.error=_"errors.messages.schedule.#{error[:name].to_s}", vars: error[:i18nVars]
 | |
| 												= hidden_field_tag :id, workshop.id
 | |
| 												= button_tag :deschedule, value: :deschedule_workshop, class: [:delete, :small]
 | |
| 										- else
 | |
| 											.title="Block #{time_data[:item][:block] + 1}"
 | |
| 							- else
 | |
| 								%td{class: time_data[:type], rowspan: rowspan, colspan: data[:locations].present? ? data[:locations].size : 1}
 | |
| 									.title="Block #{time_data[:item][:block] + 1}"
 | |
| 							%td.status{rowspan: rowspan}
 | |
| 								- if time_data[:status].present? && time_data[:status][:errors].present?
 | |
| 									%ul.errors
 | |
| 										- time_data[:status][:errors].each do | error |
 | |
| 											%li=error.to_json.to_s
 | |
| 						- elsif time_data[:type] != :nil
 | |
| 							%td{class: time_data[:type], rowspan: rowspan, colspan: data[:locations].present? ? data[:locations].size : 1}
 | |
| 								- case time_data[:type]
 | |
| 									- when :meal
 | |
| 										.title= time_data[:item]['title']
 | |
| 										.location= EventLocation.find(time_data[:item]['location'].to_i).title
 | |
| 									- when :event
 | |
| 										.title= time_data[:item].title
 | |
| 										.location= time_data[:item].event_location.title
 | |
| 							%td.status{rowspan: rowspan}
 | |
| - unless request.xhr?
 | |
| 	%ul.workshop-list
 | |
| 		- @workshops.each do | workshop |
 | |
| 			%li{id: "workshop-#{workshop.id}", class: workshop.block.present? ? 'booked' : 'not-booked'}
 | |
| 				%h4.title= workshop.title
 | |
| 				= form_tag administration_update_path(@this_conference.slug, :schedule), class: 'js-xhr' do
 | |
| 					.already-booked
 | |
| 						.field-error='This block is already booked'
 | |
| 					.workshop-description
 | |
| 						.details
 | |
| 							= data_set(:h5, 'articles.workshops.headings.interested_count') do
 | |
| 								= workshop.interested_count
 | |
| 							= data_set(:h5, 'articles.workshops.headings.facilitators') do
 | |
| 								- facilitators = []
 | |
| 								- workshop.active_facilitators.each do | facilitator |
 | |
| 									- facilitators << facilitator.name
 | |
| 								= facilitators.join ', '
 | |
| 							= data_set(:h5, 'articles.workshops.headings.needs') do
 | |
| 								- needs = []
 | |
| 								- JSON.parse(workshop.needs || '[]').each do | need |
 | |
| 									- needs << (_"workshop.options.needs.#{need}")
 | |
| 								= _!(needs.join ', ')
 | |
| 							= data_set(:h5, 'articles.workshops.headings.theme') do
 | |
| 								= workshop.theme.present? ? (_"workshop.options.theme.#{workshop.theme}") : ''
 | |
| 							= data_set(:h5, 'articles.workshops.headings.space') do
 | |
| 								= workshop.space.present? ? (_"workshop.options.space.#{workshop.space}") : ''
 | |
| 							= data_set(:h5, 'forms.labels.generic.info') do
 | |
| 								= link_info_dlg truncate(workshop.info), (richtext workshop.info.html_safe), workshop.title
 | |
| 							- if workshop.notes.present? && strip_tags(workshop.notes).length > 0
 | |
| 								= data_set(:h5, 'forms.labels.generic.notes') do
 | |
| 									= link_info_dlg truncate(workshop.notes), (richtext workshop.notes.html_safe), workshop.title
 | |
| 
 | |
| 						= hidden_field_tag :id, workshop.id
 | |
| 						.flex-inputs
 | |
| 							= location_select workshop.event_location_id, small: true, stretch: true
 | |
| 							= block_select workshop.block.present? ? "#{workshop.block['day']}:#{workshop.block['block']}" : nil, small: true
 | |
| 						.actions.next-prev
 | |
| 							= button_tag :deschedule, value: :deschedule_workshop, class: [:delete, 'booked-only']
 | |
| 							= button_tag :reschedule, value: :schedule_workshop, class: [:secondary, 'booked-only']
 | |
| 							= button_tag :schedule_workshop, value: :schedule_workshop, class: 'not-booked-only'
 |