Improved image preview modal [SCI-694]

This commit is contained in:
Oleksii Kriuchykhin 2016-12-19 17:36:18 +01:00
parent b537feb8a0
commit d2b76d8385
9 changed files with 72 additions and 71 deletions

View file

@ -1,3 +1,5 @@
//= require my_modules/image_preview
function setupAssetsLoading() { function setupAssetsLoading() {
var DELAY = 2500; var DELAY = 2500;
var REPETITIONS = 60; var REPETITIONS = 60;
@ -26,9 +28,9 @@ function setupAssetsLoading() {
if (data.type === "image") { if (data.type === "image") {
$el.html( $el.html(
"<a href='" + data['download-url'] + "'>" + "<img src='" + data['preview-url'] + "' data-large-url='"
"<img src='" + data['preview-url'] + "'><p>" + + data['large-preview-url'] + "'><p>" +
data.filename + "</p></a>" data.filename + "</p>"
); );
} else { } else {
$el.html( $el.html(
@ -37,6 +39,7 @@ function setupAssetsLoading() {
); );
} }
animateSpinner(null, false); animateSpinner(null, false);
initPreviewModal();
}, },
error: function (ev) { error: function (ev) {
if (ev.status == 403) { if (ev.status == 403) {

View file

@ -1,7 +1,5 @@
$(document).ready(function() { function initPreviewModal() {
var modal = $('#imagePreviewModal'); $('.image-preview-link').off();
function initPreviewModal() {
$('.image-preview-link').click(function(e) { $('.image-preview-link').click(function(e) {
e.preventDefault(); e.preventDefault();
var name = $(this).find('p').text(); var name = $(this).find('p').text();
@ -10,9 +8,10 @@ $(document).ready(function() {
var description = $(this).data('description'); var description = $(this).data('description');
openPreviewModal(name, url, downloadUrl, description); openPreviewModal(name, url, downloadUrl, description);
}); });
} }
function openPreviewModal(name, url, downloadUrl, description) { function openPreviewModal(name, url, downloadUrl, description) {
var modal = $('#imagePreviewModal');
modal.find('.image-name').text(name); modal.find('.image-name').text(name);
var link = modal.find('.image-download-link'); var link = modal.find('.image-download-link');
link.attr('href', downloadUrl); link.attr('href', downloadUrl);
@ -21,7 +20,4 @@ $(document).ready(function() {
image.attr('alt', name); image.attr('alt', name);
modal.find('.modal-footer .image-description').text(description); modal.find('.modal-footer .image-description').text(description);
modal.modal(); modal.modal();
} }
initPreviewModal();
});

View file

@ -3,6 +3,7 @@
//= require canvas-to-blob.min //= require canvas-to-blob.min
//= require assets //= require assets
//= require comments //= require comments
//= require my_modules/image_preview
// Sets callbacks for toggling checkboxes // Sets callbacks for toggling checkboxes
function applyCheckboxCallBack() { function applyCheckboxCallBack() {
@ -567,6 +568,7 @@ $(document).ready(function() {
expandAllSteps(); expandAllSteps();
setupAssetsLoading(); setupAssetsLoading();
initStepsComments(); initStepsComments();
initPreviewModal();
$(function () { $(function () {

View file

@ -1,3 +1,5 @@
//= require my_modules/image_preview
// New result asset behaviour // New result asset behaviour
$("#new-result-asset").on("ajax:success", function(e, data) { $("#new-result-asset").on("ajax:success", function(e, data) {
var $form = $(data.html); var $form = $(data.html);
@ -64,6 +66,7 @@ function formAjaxResultAsset($form) {
expandResult($newResult); expandResult($newResult);
$imgs = $newResult.find("img"); $imgs = $newResult.find("img");
reloadImages($imgs); reloadImages($imgs);
initPreviewModal();
}) })
.on("ajax:error", function(e, data) { .on("ajax:error", function(e, data) {
$form.renderFormErrors("result", data.errors, true, e); $form.renderFormErrors("result", data.errors, true, e);
@ -71,3 +74,4 @@ function formAjaxResultAsset($form) {
} }
applyEditResultAssetCallback(); applyEditResultAssetCallback();
initPreviewModal();

View file

@ -34,6 +34,7 @@
.modal-image-preview { .modal-image-preview {
background: transparent; background: transparent;
font-size: 16px; font-size: 16px;
padding-right: 0px !important;
.preview-close { .preview-close {
background: transparent; background: transparent;
@ -43,21 +44,31 @@
float: right; float: right;
} }
.modal-dialog {
height: 100%;
margin: 0;
padding: 0;
width: auto;
}
.modal-content { .modal-content {
background: transparent; background: transparent;
border: 0; border: 0;
-webkit-box-shadow: none; -webkit-box-shadow: none;
box-shadow: none; box-shadow: none;
color: $color-white; color: $color-white;
padding: 0; height: 100%;
width: auto;
} }
.modal-dialog { img {
margin: 0; left: 50%;
margin-left: auto; margin-right: -50%;
margin-right: auto; max-height: 100%;
padding: 0; position: absolute;
width: 100%; top: 50%;
transform: translate(-50%, -50%);
width: auto;
} }
.modal-header { .modal-header {
@ -66,14 +77,18 @@
} }
.modal-body { .modal-body {
padding: 0; height: 85%;
text-align: center; position: relative;
width: auto;
} }
.modal-footer { .modal-footer {
background: $color-black; background: $color-black;
border: 0; border: 0;
bottom: 0;
position: fixed;
text-align: center; text-align: center;
width: 100%;
} }
.image-download-link { .image-download-link {
@ -92,21 +107,3 @@
opacity: .99; opacity: .99;
} }
} }
@media (min-width: 768px) {
.modal-image-preview .modal-dialog {
width: 760px;
}
}
@media (min-width: 992px) {
.modal-image-preview .modal-dialog {
width: 980px;
}
}
@media (min-width: 1200px) {
.modal-image-preview .modal-dialog {
width: 1180px;
}
}

View file

@ -20,6 +20,7 @@ class AssetsController < ApplicationController
# If check permission passes, return :ok # If check permission passes, return :ok
render json: { render json: {
'preview-url' => @asset.url(:medium), 'preview-url' => @asset.url(:medium),
'large-preview-url' => @asset.url(:large),
'filename' => truncate(@asset.file_file_name, 'filename' => truncate(@asset.file_file_name,
length: length:
Constants::FILENAME_TRUNCATION_LENGTH), Constants::FILENAME_TRUNCATION_LENGTH),

View file

@ -48,4 +48,3 @@
<%= stylesheet_link_tag 'datatables' %> <%= stylesheet_link_tag 'datatables' %>
<%= javascript_include_tag("my_modules/protocols") %> <%= javascript_include_tag("my_modules/protocols") %>
<%= javascript_include_tag("my_modules/image_preview") %>

View file

@ -55,7 +55,6 @@
<%= javascript_include_tag "results/result_texts" %> <%= javascript_include_tag "results/result_texts" %>
<%= javascript_include_tag "results/result_tables" %> <%= javascript_include_tag "results/result_tables" %>
<%= javascript_include_tag "results/result_assets" %> <%= javascript_include_tag "results/result_assets" %>
<%= javascript_include_tag("my_modules/image_preview") %>
<!-- Libraries for formulas --> <!-- Libraries for formulas -->
<%= javascript_include_tag "lodash" %> <%= javascript_include_tag "lodash" %>

View file

@ -1,15 +1,15 @@
<% if can_view_or_download_result_assets(result.my_module) %> <% if can_view_or_download_result_assets(result.my_module) %>
<%= link_to download_asset_path(result.asset),
class: 'image-preview-link',
id: "modal_link#{result.asset.id}",
data: {no_turbolink: true, description: "#{result.name}"} do %>
<% if result.asset.file.processing? %> <% if result.asset.file.processing? %>
<span data-status='asset-loading' <span data-status='asset-loading'
data-present-url='<%= file_present_asset_path(result.asset) %>'> data-present-url='<%= file_present_asset_path(result.asset) %>'>
<%= image_tag 'medium/processing.gif' %> <%= image_tag 'medium/processing.gif' %>
</span> </span>
<% else %> <% else %>
<%= link_to download_asset_path(result.asset), <%= image_tag result.asset.url(:medium), data: {large_url: result.asset.url(:large)} if result.asset.is_image? %>
class: 'image-preview-link',
id: "modal_link#{result.asset.id}",
data: {no_turbolink: true, description: "#{result.name}"} do %>
<%= image_tag(preview_asset_path result.asset) if result.asset.is_image? %>
<p><%= truncate(result.asset.file_file_name, <p><%= truncate(result.asset.file_file_name,
length: Constants::FILENAME_TRUNCATION_LENGTH) %></p> length: Constants::FILENAME_TRUNCATION_LENGTH) %></p>
<% end %> <% end %>
@ -21,7 +21,7 @@
<%= image_tag 'medium/processing.gif' %> <%= image_tag 'medium/processing.gif' %>
</span> </span>
<% else %> <% else %>
<%= image_tag(result.asset.url(:medium), data: {large_url: result.asset.url(:large)}) if result.asset.is_image? %> <%= image_tag result.asset.url(:medium) if result.asset.is_image? %>
<p><%= result.asset.file_file_name %></p> <p><%= result.asset.file_file_name %></p>
<% end %> <% end %>
<% end %> <% end %>