diff --git a/app/assets/stylesheets/reports.scss b/app/assets/stylesheets/reports.scss index 7a260209c..f57bc6d17 100644 --- a/app/assets/stylesheets/reports.scss +++ b/app/assets/stylesheets/reports.scss @@ -365,6 +365,10 @@ label { margin-left: 15px; } } + + img { + max-width: 100%; + } } // Result table element style @@ -418,6 +422,11 @@ label { } } + + img { + max-width: 100%; + } + .report-element-children { height: 0; } diff --git a/app/assets/stylesheets/reports_print.scss b/app/assets/stylesheets/reports_print.scss index 06122fc40..32f41d3ae 100644 --- a/app/assets/stylesheets/reports_print.scss +++ b/app/assets/stylesheets/reports_print.scss @@ -93,6 +93,10 @@ div.print-report { &:hover > .report-element-header .attachment-icon { color: $color-black; } + + img { + max-width: 100%; + } } .report-step-table-element { @@ -195,6 +199,10 @@ div.print-report { } } + img { + max-width: 100%; + } + &:hover > .report-element-header { .result-icon, .result-name, diff --git a/app/helpers/reports_helper.rb b/app/helpers/reports_helper.rb index 23f96ffc3..269eed8bd 100644 --- a/app/helpers/reports_helper.rb +++ b/app/helpers/reports_helper.rb @@ -99,9 +99,9 @@ module ReportsHelper # "Hack" to omit file preview URL because of WKHTML issues def report_image_asset_url(asset) - image_tag(asset.medium_preview - .processed - .service_url(expires_in: Constants::URL_LONG_EXPIRE_TIME)) + preview = asset.inline? ? asset.large_preview : asset.medium_preview + image_tag(preview.processed + .service_url(expires_in: Constants::URL_LONG_EXPIRE_TIME)) end # "Hack" to load Glyphicons css directly from the CDN diff --git a/app/services/reports/docx/draw_result_asset.rb b/app/services/reports/docx/draw_result_asset.rb index fb5ffa88d..dc68ced22 100644 --- a/app/services/reports/docx/draw_result_asset.rb +++ b/app/services/reports/docx/draw_result_asset.rb @@ -17,7 +17,7 @@ module Reports::Docx::DrawResultAsset user: result.user.full_name, timestamp: I18n.l(timestamp, format: :full)), color: color[:gray] end - Reports::DocxRenderer.render_asset_image(@docx, asset) if asset.image? + Reports::DocxRenderer.render_asset_image(@docx, asset) if asset.previewable? && !asset.list? subject['children'].each do |child| public_send("draw_#{child['type_of']}", child, result) diff --git a/app/services/reports/docx/draw_step_asset.rb b/app/services/reports/docx/draw_step_asset.rb index 80a87c8da..6431dfe0a 100644 --- a/app/services/reports/docx/draw_step_asset.rb +++ b/app/services/reports/docx/draw_step_asset.rb @@ -15,6 +15,6 @@ module Reports::Docx::DrawStepAsset timestamp: I18n.l(timestamp, format: :full)), color: color[:gray] end - Reports::DocxRenderer.render_asset_image(@docx, asset) if asset.image? + Reports::DocxRenderer.render_asset_image(@docx, asset) if asset.previewable? && !asset.list? end end diff --git a/app/services/reports/docx_renderer.rb b/app/services/reports/docx_renderer.rb index 7defe7b73..3dba735e9 100644 --- a/app/services/reports/docx_renderer.rb +++ b/app/services/reports/docx_renderer.rb @@ -141,9 +141,9 @@ module Reports def self.render_asset_image(docx, asset) return unless asset - image_path = Reports::Utils.image_path(asset.file) + asset_preview = Reports::Utils.image_prepare(asset) - dimension = FastImage.size(image_path) + dimension = FastImage.size(asset_preview.service_url) return unless dimension x = dimension[0] @@ -152,8 +152,14 @@ module Reports y = y * 300 / x x = 300 end - docx.img image_path.split('&')[0] do - data asset.blob.download + blob_data = if asset_preview.class == ActiveStorage::Preview + asset_preview.image.download + else + asset_preview.blob.download + end + + docx.img asset_preview.service_url.split('&')[0] do + data blob_data width x height y end diff --git a/app/services/reports/html_to_word_converter.rb b/app/services/reports/html_to_word_converter.rb index d04e7e1a1..b4ccc55cb 100644 --- a/app/services/reports/html_to_word_converter.rb +++ b/app/services/reports/html_to_word_converter.rb @@ -121,7 +121,7 @@ module Reports image = TinyMceAsset.find_by(id: Base62.decode(elem.attributes['data-mce-token'].value)) return unless image - image_path = Reports::Utils.image_path(image.image) + image_path = Reports::Utils.image_prepare(image).service_url dimension = FastImage.size(image_path) return unless dimension diff --git a/app/services/reports/utils.rb b/app/services/reports/utils.rb index b61f1cf1c..51c3ad339 100644 --- a/app/services/reports/utils.rb +++ b/app/services/reports/utils.rb @@ -6,8 +6,16 @@ module Reports link[0] == '/' ? scinote_url + link : link end - def self.image_path(attachment) - attachment.service_url + def self.image_prepare(asset) + if asset.class == Asset + if asset.inline? + asset.large_preview + else + asset.medium_preview + end + elsif asset.class == TinyMceAsset + asset.image + end end def self.calculate_color_hsp(color) diff --git a/app/views/reports/elements/_my_module_result_asset_element.html.erb b/app/views/reports/elements/_my_module_result_asset_element.html.erb index 3ff08a35a..3e096f0d9 100644 --- a/app/views/reports/elements/_my_module_result_asset_element.html.erb +++ b/app/views/reports/elements/_my_module_result_asset_element.html.erb @@ -1,9 +1,8 @@ <% result ||= @result %> <% asset = result.asset %> -<% is_image = result.asset.image? %> <% comments = result.result_comments %> <% timestamp = asset.created_at %> -<% icon_class = 'fas ' + (is_image ? 'fa-image' : 'fa-file') %> +<% icon_class = 'fas ' + file_fa_icon_class(asset) if asset.file_name %>
- <% if is_image %> + <% if asset.previewable? && !asset.list? %>
diff --git a/app/views/reports/elements/_step_asset_element.html.erb b/app/views/reports/elements/_step_asset_element.html.erb index ef768927b..2dd309c00 100644 --- a/app/views/reports/elements/_step_asset_element.html.erb +++ b/app/views/reports/elements/_step_asset_element.html.erb @@ -1,12 +1,11 @@ <% asset ||= @asset %> -<% is_image = asset.image? %> <% timestamp = asset.created_at %> -<% icon_class = 'fas ' + (is_image ? 'fa-image' : 'fa-file') %> +<% icon_class = file_fa_icon_class(asset) if asset.file_name %>
" data-icon-class="<%= icon_class %>">
- +
<% if defined? export_all and export_all %> @@ -29,7 +28,7 @@
- <% if is_image %> + <% if asset.previewable? && !asset.list? %>
<% if defined?(export_all) && export_all %>