mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
exporting events to pdf, excel, and csv format
This commit is contained in:
parent
7cc2609662
commit
3da3fcccbb
6 changed files with 139 additions and 4 deletions
|
|
@ -23,11 +23,18 @@ module Admin
|
|||
@tracks_distribution_confirmed = @conference.tracks_distribution(:confirmed)
|
||||
@event_distribution = @conference.event_distribution
|
||||
@scheduled_event_distribution = @conference.scheduled_event_distribution
|
||||
@pdf_filename = "events_for_#{@conference.short_title}.pdf"
|
||||
@file_name = "events_for_#{@conference.short_title}"
|
||||
@csv_filename = "events_for_#{@conference.short_title}.csv"
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
# Explicity call #to_json to avoid the use of EventSerializer
|
||||
format.json { render json: Event.where(state: :confirmed, program: @program).to_json }
|
||||
format.xlsx { render xlsx: 'index', filename: "#{@file_name}.xlsx" }
|
||||
format.pdf
|
||||
format.csv
|
||||
# format.csv { send_data @events, filename:"#{@file_name}.csv" }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
%h1 Comments
|
||||
%br
|
||||
.row
|
||||
.col-md-12
|
||||
.page-header
|
||||
%h1
|
||||
Comments
|
||||
= "(#{@comments.length})" if @comments.any?
|
||||
.col-md-12
|
||||
%ul.nav.nav-tabs#commentsTable
|
||||
%li.active
|
||||
|
|
|
|||
25
app/views/admin/events/index.csv.haml
Normal file
25
app/views/admin/events/index.csv.haml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
- headers = ['Event ID',
|
||||
'Title',
|
||||
'Abstract',
|
||||
'Start time',
|
||||
'Submitter',
|
||||
'Speaker',
|
||||
'Event Type',
|
||||
'Track',
|
||||
'Difficulty Level',
|
||||
'Room',
|
||||
'State']
|
||||
= CSV.generate_line headers
|
||||
- @events.each do |event|
|
||||
= CSV.generate_line([event.id, event.title, event.abstract, event.time,
|
||||
event.submitter.name, event.speaker_names, event.event_type.title,
|
||||
(event.track.present? ? event.track.name : 'nil'),
|
||||
(event.difficulty_level.present? ? event.difficulty_level.title : 'nil'),
|
||||
(event.room.present? ? event.room.name : 'nil'), event.state])
|
||||
|
||||
= CSV.generate_line [nil]
|
||||
- headers = ['Comment ID', 'Event Title', 'Body', 'User Name']
|
||||
= CSV.generate_line headers
|
||||
- @events.each do |event|
|
||||
- event.root_comments.each do |comment|
|
||||
= CSV.generate_line([comment.id, event.title, comment.body, comment.user.name])
|
||||
|
|
@ -3,8 +3,12 @@
|
|||
.page-header
|
||||
%h1
|
||||
Events
|
||||
- if @events.any?
|
||||
= "(#{@events.length})"
|
||||
= "(#{@events.length})" if @events.any?
|
||||
.btn-group.pull-right
|
||||
- if can? :read, Event
|
||||
= link_to 'Export CSV', admin_conference_program_events_path(@conference.short_title, format: :csv), class: 'btn btn-success'
|
||||
= link_to 'Export PDF', admin_conference_program_events_path(@conference.short_title, format: :pdf), class: 'btn btn-success'
|
||||
= link_to 'Export XLS', admin_conference_program_events_path(@conference.short_title, format: :xlsx), class: 'btn btn-success'
|
||||
%p.text-muted
|
||||
All the submissions of your speakers
|
||||
.row
|
||||
|
|
|
|||
55
app/views/admin/events/index.pdf.prawn
Normal file
55
app/views/admin/events/index.pdf.prawn
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
prawn_document(force_download: true, filename: @pdf_filename, page_layout: :landscape) do |pdf|
|
||||
events_array = []
|
||||
c_array = []
|
||||
header_array = ['Event ID',
|
||||
'Title',
|
||||
'Abstract',
|
||||
'Start time',
|
||||
'Submitter',
|
||||
'Speaker',
|
||||
'Event Type',
|
||||
'Track',
|
||||
'Difficulty Level',
|
||||
'Room',
|
||||
'State'
|
||||
]
|
||||
events_array << header_array
|
||||
@events.each do |event|
|
||||
row = []
|
||||
row << event.id
|
||||
row << event.title
|
||||
row << event.abstract
|
||||
row << event.time.to_s
|
||||
row << event.submitter.name
|
||||
row << event.speaker_names
|
||||
row << event.event_type.title
|
||||
row << (event.track.present? ? event.track.name : '')
|
||||
row << (event.difficulty_level.present? ? event.difficulty_level.title : '')
|
||||
row << (event.room.present? ? event.room.name : '')
|
||||
row << event.state
|
||||
events_array << row
|
||||
end
|
||||
|
||||
comments_array = []
|
||||
header_array = ['Comment ID',
|
||||
'Event Title',
|
||||
'Body',
|
||||
'User name']
|
||||
comments_array << header_array
|
||||
@events.each do |event|
|
||||
event.root_comments.each do |comment|
|
||||
row = []
|
||||
row << comment.id
|
||||
row << event.title
|
||||
row << comment.body
|
||||
row << comment.user.name
|
||||
comments_array << row
|
||||
end
|
||||
end
|
||||
|
||||
pdf.text "#{@conference.short_title} Events", font_size: 25
|
||||
pdf.table events_array, header: true, cell_style: {size: 5, border_width: 1}
|
||||
pdf.move_down 10
|
||||
pdf.text "#{@conference.short_title} Comments", font_size: 25
|
||||
pdf.table comments_array, header: true, cell_style: {size: 5, border_width: 1}
|
||||
end
|
||||
41
app/views/admin/events/index.xlsx.axlsx
Normal file
41
app/views/admin/events/index.xlsx.axlsx
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
wb = xlsx_package.workbook
|
||||
wb.add_worksheet(name: 'events') do |sheet|
|
||||
bold_style = wb.styles.add_style(b: true)
|
||||
row = ['Event ID', 'Title', 'Abstract', 'Start time', 'Submitter', 'Speaker', 'Event Type', 'Track', 'Difficulty Level', 'Room', 'State']
|
||||
|
||||
sheet.add_row row, style: bold_style
|
||||
|
||||
@events.each do |event|
|
||||
row = []
|
||||
row << event.id
|
||||
row << event.title
|
||||
row << event.abstract
|
||||
row << event.time
|
||||
row << event.submitter.name
|
||||
row << event.speaker_names
|
||||
row << event.event_type.title
|
||||
row << (event.track.present? ? event.track.name : '')
|
||||
row << (event.difficulty_level.present? ? event.difficulty_level.title : '')
|
||||
row << (event.room.present? ? event.room.name : '')
|
||||
row << event.state
|
||||
sheet.add_row row
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: 'comments') do |sheet|
|
||||
bold_style = wb.styles.add_style(b: true)
|
||||
row = ['Comment ID', 'Event Title', 'Body', 'User Name']
|
||||
|
||||
sheet.add_row row, style: bold_style
|
||||
|
||||
@events.each do |event|
|
||||
event.root_comments.each do |comment|
|
||||
row = []
|
||||
row << comment.id
|
||||
row << event.title
|
||||
row << comment.body
|
||||
row << comment.user.name
|
||||
sheet.add_row row
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue