mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-21 12:34:39 +08:00
Move PDF generation and export logic of export all PDF to the model
This commit is contained in:
parent
69f3a919db
commit
48a6a64502
3 changed files with 49 additions and 44 deletions
|
@ -11,7 +11,6 @@ class ReportsController < ApplicationController
|
|||
edit
|
||||
update
|
||||
generate
|
||||
export_whole_project_pdf
|
||||
save_modal
|
||||
project_contents_modal
|
||||
experiment_contents_modal
|
||||
|
@ -181,43 +180,6 @@ class ReportsController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def export_whole_project_pdf(project)
|
||||
@project = project
|
||||
@report = Report.generate_whole_project_report(
|
||||
@project, current_user, current_team
|
||||
)
|
||||
|
||||
page_html_string = render_to_string 'reports/new.html.erb',
|
||||
locals: { export_all: true }
|
||||
parsed_page_html = Nokogiri::HTML(page_html_string)
|
||||
parsed_pdf_html = parsed_page_html.at_css('#report-content')
|
||||
@report.destroy
|
||||
|
||||
filename = "#{@project.name}_Report.pdf"
|
||||
parsed_pdf = render_to_string(
|
||||
pdf: filename,
|
||||
header: { right: '[page] of [topage]' },
|
||||
locals: { content: parsed_pdf_html.to_s },
|
||||
template: 'reports/report.pdf.erb',
|
||||
disable_javascript: true,
|
||||
disable_internal_links: false
|
||||
)
|
||||
|
||||
# Dirty workaround to convert absolute links back to relative ones, since
|
||||
# WickedPdf does the opposite, based on the path where the file parsing is
|
||||
# done
|
||||
parsed_pdf_with_relative_links =
|
||||
parsed_pdf.gsub('/URI (file:////tmp/', '/URI (')
|
||||
|
||||
zip = ZipExport.create(user: current_user)
|
||||
zip.generate_exportable_zip(
|
||||
current_user,
|
||||
parsed_pdf_with_relative_links,
|
||||
:team,
|
||||
filename: filename
|
||||
)
|
||||
end
|
||||
|
||||
def save_pdf_to_inventory_item
|
||||
save_pdf_to_inventory_item = ReportActions::SavePdfToInventoryItem.new(
|
||||
current_user, current_team, save_PDF_params
|
||||
|
|
|
@ -221,4 +221,47 @@ class Project < ApplicationRecord
|
|||
end
|
||||
res
|
||||
end
|
||||
|
||||
def export_report(user, team)
|
||||
ActionController::Renderer::RACK_KEY_TRANSLATION['warden'] ||= 'warden'
|
||||
proxy = Warden::Proxy.new({}, Warden::Manager.new({}))
|
||||
renderer = ApplicationController.renderer.new(warden: proxy)
|
||||
|
||||
report = Report.generate_whole_project_report(
|
||||
self, user, team
|
||||
)
|
||||
|
||||
page_html_string = renderer.render 'reports/new.html.erb',
|
||||
locals: { export_all: true },
|
||||
assigns: { project: self,
|
||||
report: report }
|
||||
parsed_page_html = Nokogiri::HTML(page_html_string)
|
||||
parsed_pdf_html = parsed_page_html.at_css('#report-content')
|
||||
report.destroy
|
||||
|
||||
filename = "#{name}_Report.pdf"
|
||||
parsed_pdf = ApplicationController.render(
|
||||
pdf: filename,
|
||||
header: { right: '[page] of [topage]' },
|
||||
locals: { content: parsed_pdf_html.to_s },
|
||||
template: 'reports/report.pdf.erb',
|
||||
disable_javascript: true,
|
||||
disable_internal_links: false,
|
||||
current_user: user,
|
||||
current_team: team
|
||||
)
|
||||
# Dirty workaround to convert absolute links back to relative ones, since
|
||||
# WickedPdf does the opposite, based on the path where the file parsing is
|
||||
# done
|
||||
parsed_pdf_with_relative_links =
|
||||
parsed_pdf.gsub('/URI (file:////tmp/', '/URI (')
|
||||
|
||||
zip = ZipExport.create(user: user)
|
||||
zip.generate_exportable_zip(
|
||||
user,
|
||||
parsed_pdf_with_relative_links,
|
||||
:team,
|
||||
filename: filename
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -14,15 +14,15 @@
|
|||
id="data-holder"
|
||||
class="hidden"
|
||||
data-project-modal-title="<%=t "projects.reports.elements.modals.project_contents.head_title" %>"
|
||||
data-add-project-contents-url="<%= project_contents_modal_project_reports_url %>"
|
||||
data-add-experiment-contents-url="<%= experiment_contents_modal_project_reports_url %>"
|
||||
data-add-module-contents-url="<%= module_contents_modal_project_reports_url %>"
|
||||
data-add-step-contents-url="<%= step_contents_modal_project_reports_url %>"
|
||||
data-add-result-contents-url="<%= result_contents_modal_project_reports_url %>"
|
||||
data-add-project-contents-url="<%= project_contents_modal_project_reports_url(@project) %>"
|
||||
data-add-experiment-contents-url="<%= experiment_contents_modal_project_reports_url(@project) %>"
|
||||
data-add-module-contents-url="<%= module_contents_modal_project_reports_url(@project) %>"
|
||||
data-add-step-contents-url="<%= step_contents_modal_project_reports_url(@project) %>"
|
||||
data-add-result-contents-url="<%= result_contents_modal_project_reports_url(@project) %>"
|
||||
data-stylesheet-url="<%= stylesheet_path "application" %>"
|
||||
data-print-title="<%=t "projects.reports.print_title", project: @project.name %>"
|
||||
data-project-id="<%= @project.id %>"
|
||||
data-save-report-url="<%= save_modal_project_reports_url %>"
|
||||
data-save-report-url="<%= save_modal_project_reports_url(@project) %>"
|
||||
data-report-id="<%= @report.present? ? @report.id : "" %>"
|
||||
data-unsaved-work-text="<%=t "projects.reports.new.unsaved_work" %>"
|
||||
data-global-sort-text="<%=t "projects.reports.new.global_sort" %>"></div>
|
||||
|
|
Loading…
Add table
Reference in a new issue