scinote-web/app/assets/javascripts/assets.js

103 lines
2.9 KiB
JavaScript
Raw Normal View History

/* global animateSpinner FilePreviewModal */
2016-07-21 19:11:15 +08:00
function setupAssetsLoading() {
var DELAY = 2500;
var REPETITIONS = 60;
var cntr = 0;
var intervalId;
2016-07-21 19:11:15 +08:00
function refreshAssets() {
var elements = $("[data-status='asset-loading']");
if (!elements.length) {
return false;
}
$.each(elements, function(_, el) {
var $el = $(el);
// Perform an AJAX call to present URL
// to check if file already exists
$.ajax({
url: $el.data('present-url'),
type: 'GET',
dataType: 'json',
success: function(data) {
if (data.processing === true) {
return;
}
if (data.processing === false) {
$el.html(data.placeholder_html);
$el.attr('data-status', 'asset-loaded');
return;
}
$el.attr('data-status', 'asset-loaded');
$el.find('img').hide();
$el.next().hide();
$el.html('');
2016-07-21 19:11:15 +08:00
2018-03-30 17:50:28 +08:00
if (data.type === 'image') {
2016-07-21 19:11:15 +08:00
$el.html(
"<a class='file-preview-link' id='modal_link"
+ data['asset-id'] + "' data-status='asset-present' "
+ "href='" + data['download-url'] + "' data-preview-url='" + data['preview-url'] + "'>"
+ "<img src='" + data['image-tag-url'] + "'><p>" + data.filename + '</p></a>'
2016-07-21 19:11:15 +08:00
);
} else {
$el.html(
"<a class='file-preview-link' id='modal_link"
+ data['asset-id'] + "' data-status='asset-present' "
+ "href='" + data['download-url'] + "' data-preview-url='"
+ data['preview-url'] + "'><p>" + data.filename + '</p></a>'
2016-07-21 19:11:15 +08:00
);
}
animateSpinner(null, false);
FilePreviewModal.init();
2016-07-21 19:11:15 +08:00
},
error: function(data) {
if (data.status === 403) {
$el.find('img').hide();
$el.next().hide();
2016-07-21 19:11:15 +08:00
// Image/file exists, but user doesn't have
// rights to download it
if (data.type === 'image') {
2016-07-21 19:11:15 +08:00
$el.html(
"<img src='" + data['image-tag-url'] + "'><p>" + data.filename + '</p>'
2016-07-21 19:11:15 +08:00
);
} else {
$el.html('<p>' + data.filename + '</p>');
2016-07-21 19:11:15 +08:00
}
} else {
// Do nothing, file is not yet present
animateSpinner(null, false);
2016-07-21 19:11:15 +08:00
}
}
});
});
return true;
}
function finalizeAssets() {
var elements = $("[data-status='asset-loading']");
$.each(elements, function(_, el) {
var $el = $(el);
$el.attr('data-status', 'asset-failed');
if ($el.data('filename')) {
$el.html($el.data('filename'));
}
2016-07-21 19:11:15 +08:00
});
}
intervalId = window.setInterval(function() {
cntr += 1;
2016-07-21 19:11:15 +08:00
if (cntr >= REPETITIONS || !refreshAssets()) {
finalizeAssets();
window.clearInterval(intervalId);
}
}, DELAY);
2016-08-19 21:36:12 +08:00
}