diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index 40745eb0c..330159c33 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -109,6 +109,7 @@ class ReportsController < ApplicationController @edit = true @templates = Extends::REPORT_TEMPLATES @repositories = Repository.accessible_by_teams(current_team).active.select(:id, :name) + @report.settings = Report::DEFAULT_SETTINGS if @report.settings.blank? @project_contents = { experiments: @report.report_elements.where(type_of: 'experiment').pluck(:experiment_id), diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index b170d5293..35c4b543e 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -214,6 +214,7 @@ module ApplicationHelper end rescue StandardError => e Rails.logger.error e.message + 'icon_small/missing.png' end def wopi_enabled? diff --git a/app/helpers/reports_helper.rb b/app/helpers/reports_helper.rb index f03923ce5..523c0c5ba 100644 --- a/app/helpers/reports_helper.rb +++ b/app/helpers/reports_helper.rb @@ -93,7 +93,6 @@ module ReportsHelper element.element_references.each do |el_ref| locals[el_ref.class.name.underscore.to_sym] = el_ref end - locals[:order] = element.sort_order if type.in? ReportExtends::SORTED_ELEMENTS end (render partial: view, locals: locals).html_safe @@ -102,8 +101,9 @@ module ReportsHelper # "Hack" to omit file preview URL because of WKHTML issues def report_image_asset_url(asset) preview = asset.inline? ? asset.large_preview : asset.medium_preview - image_tag(preview.processed - .service_url(expires_in: Constants::URL_LONG_EXPIRE_TIME)) + image_tag(preview.processed.service_url(expires_in: Constants::URL_LONG_EXPIRE_TIME)) + rescue ActiveStorage::FileNotFoundError + image_tag('icon_small/missing.png') end # "Hack" to load Glyphicons css directly from the CDN diff --git a/app/jobs/reports/pdf_job.rb b/app/jobs/reports/pdf_job.rb index ba892db5a..2244c746a 100644 --- a/app/jobs/reports/pdf_job.rb +++ b/app/jobs/reports/pdf_job.rb @@ -20,9 +20,10 @@ module Reports def perform(report, user) file = Tempfile.new(['report', '.pdf'], binmode: true) begin - template_name = Extends::REPORT_TEMPLATES[report.settings[:template]&.to_sym] + template = Extends::REPORT_TEMPLATES[report.settings[:template]&.to_sym] + template ||= Extends::REPORT_TEMPLATES.values.first - raise StandardError, 'Report template not found!' if template_name.blank? + raise StandardError, 'Report template not found!' if template.blank? ActionController::Renderer::RACK_KEY_TRANSLATION['warden'] ||= 'warden' proxy = Warden::Proxy.new({}, Warden::Manager.new({})) @@ -30,10 +31,10 @@ module Reports renderer = ApplicationController.renderer.new(warden: proxy) file << renderer.render( - pdf: 'report', header: { html: { template: "reports/templates/#{template_name}/header", + pdf: 'report', header: { html: { template: "reports/templates/#{template}/header", locals: { report: report, user: user }, layout: 'reports/footer_header.html.erb' } }, - footer: { html: { template: "reports/templates/#{template_name}/footer", + footer: { html: { template: "reports/templates/#{template}/footer", locals: { report: report, user: user }, layout: 'reports/footer_header.html.erb' } }, assigns: { settings: report.settings }, @@ -44,7 +45,7 @@ module Reports file.rewind - file = prepend_title_page(file, template_name, report, renderer) + file = prepend_title_page(file, template, report, renderer) file = append_result_asset_previews(report, file) if report.settings.dig(:task, :file_results_previews) @@ -103,9 +104,8 @@ module Reports merged_file end - def prepend_title_page(file, template_name, report, renderer) - - unless File.exists?(Rails.root.join('app', 'views', 'reports', 'templates', template_name, 'cover.html.erb')) + def prepend_title_page(file, template, report, renderer) + unless File.exist?(Rails.root.join('app', 'views', 'reports', 'templates', template, 'cover.html.erb')) return file end @@ -121,7 +121,7 @@ module Reports merged_file = Tempfile.new(['report', '.pdf'], binmode: true) title_page << renderer.render( - pdf: 'report', inline: renderer.render_to_string("reports/templates/#{template_name}/cover.html.erb", + pdf: 'report', inline: renderer.render_to_string("reports/templates/#{template}/cover.html.erb", layout: false, locals: { report: report, total_pages: total_pages.to_i }), disable_javascript: false, diff --git a/app/models/concerns/tiny_mce_images.rb b/app/models/concerns/tiny_mce_images.rb index 46feaccca..9f2f395d9 100644 --- a/app/models/concerns/tiny_mce_images.rb +++ b/app/models/concerns/tiny_mce_images.rb @@ -20,12 +20,16 @@ module TinyMceImages tiny_mce_assets.each do |tm_asset| next unless tm_asset&.image&.attached? - new_tm_asset_src = - if base64_encoded_imgs - tm_asset.convert_variant_to_base64(tm_asset.preview) - else - tm_asset.preview.processed.service_url(expires_in: Constants::URL_LONG_EXPIRE_TIME) - end + begin + new_tm_asset_src = + if base64_encoded_imgs + tm_asset.convert_variant_to_base64(tm_asset.preview) + else + tm_asset.preview.processed.service_url(expires_in: Constants::URL_LONG_EXPIRE_TIME) + end + rescue ActiveStorage::FileNotFoundError + next + end html_description = Nokogiri::HTML(description) tm_asset_to_update = html_description.css( "img[data-mce-token=\"#{Base62.encode(tm_asset.id)}\"]" diff --git a/app/models/report.rb b/app/models/report.rb index 3ade38cf6..c58b6ab26 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -35,6 +35,7 @@ class Report < ApplicationRecord dependent: :delete_all DEFAULT_SETTINGS = { + template: 'scinote_template', all_tasks: true, task: { protocol: { diff --git a/app/views/reports/elements/_my_module_repository_element.html.erb b/app/views/reports/elements/_my_module_repository_element.html.erb index 360a57206..e0a2f6a5c 100644 --- a/app/views/reports/elements/_my_module_repository_element.html.erb +++ b/app/views/reports/elements/_my_module_repository_element.html.erb @@ -11,7 +11,6 @@ data-type="my_module_repository" data-id='{ "my_module_id": <%= my_module.id %>, "repository_id": <%= repository.id %> }' data-scroll-id="<%= "#{my_module.id}_#{repository.id}" %>" - data-order="<%= order == :asc ? 'asc' : 'desc' %>" data-name="<%= repository.name %>" data-icon-class="fas fa-list-alt">
diff --git a/app/views/reports/elements/_result_comments_element.html.erb b/app/views/reports/elements/_result_comments_element.html.erb index c464711c0..b84928b00 100644 --- a/app/views/reports/elements/_result_comments_element.html.erb +++ b/app/views/reports/elements/_result_comments_element.html.erb @@ -1,9 +1,8 @@ -<% if result.blank? and @result.present? then result = @result end %> -<% if order.blank? and @order.present? then order = @order end %> -<% comments = result.result_comments.order(created_at: order) %> +<% result ||= @result %> +<% comments = result.result_comments.order(created_at: :desc) %> <% timestamp = Time.current + 1.year %> <% for_export_all = defined?(export_all) && export_all %> -
" data-type="result_comments" data-id='{ "result_id": <%= result.id %> }' data-scroll-id="<%= result.id %>" data-name="<%=t "projects.reports.elements.result_comments.sidebar_name" %>" data-icon-class="fas fa-comment"> +
" data-icon-class="fas fa-comment">
diff --git a/config/initializers/extends/report_extends.rb b/config/initializers/extends/report_extends.rb index 138b3fb5f..b235221e1 100644 --- a/config/initializers/extends/report_extends.rb +++ b/config/initializers/extends/report_extends.rb @@ -112,12 +112,6 @@ module ReportExtends # path: app/helpers/reports_helpers.rb # method: render_report_element - # adds :order local to listed elements views - # ADD REPORT ELEMENT TYPE WHICH YOU WANT TO PASS 'ORDER' LOCAL IN THE PARTIAL - SORTED_ELEMENTS = %w(my_module_activity - my_module_repository - step_comments - result_comments) # sets local :my_module to the listed my_module child elements MY_MODULE_ELEMENTS = %w(my_module my_module_protocol diff --git a/db/migrate/20210506125657_add_default_settings_to_old_reports.rb b/db/migrate/20210506125657_add_default_settings_to_old_reports.rb new file mode 100644 index 000000000..fdb5e7860 --- /dev/null +++ b/db/migrate/20210506125657_add_default_settings_to_old_reports.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddDefaultSettingsToOldReports < ActiveRecord::Migration[6.1] + def change + Report.find_each do |report| + report.update!(settings: Report::DEFAULT_SETTINGS) + end + end +end diff --git a/db/structure.sql b/db/structure.sql index 61a9cba1a..f501150c6 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -7233,6 +7233,7 @@ INSERT INTO "schema_migrations" (version) VALUES ('20210217114042'), ('20210312185911'), ('20210325152257'), -('20210407143303'); +('20210407143303'), +('20210506125657');