mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-16 22:25:30 +08:00
53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
/* eslint-disable no-unused-vars */
|
|
|
|
var ActiveStoragePreviews = (function() {
|
|
const RETRY_COUNT = 50;
|
|
const RETRY_DELAY = 5000;
|
|
|
|
return Object.freeze({
|
|
reCheckPreview: function(ev) {
|
|
var img = ev.target;
|
|
var src = ev.target.src;
|
|
|
|
if (img.length === 0) return;
|
|
|
|
if (!img.retryCount) {
|
|
img.retryCount = 0;
|
|
}
|
|
|
|
if (img.retryCount >= RETRY_COUNT) return;
|
|
|
|
$(img).css('opacity', 0);
|
|
|
|
if (!$(img).parent().hasClass('processing')) $(img).parent().addClass('processing');
|
|
|
|
setTimeout(() => {
|
|
img.src = src;
|
|
img.retryCount += 1;
|
|
}, RETRY_DELAY);
|
|
},
|
|
showPreview: function(ev) {
|
|
$(ev.target).css('opacity', 1);
|
|
$(ev.target).parent().removeClass('processing');
|
|
},
|
|
reloadPreview: function(target) {
|
|
$(target)
|
|
.on('error', event => this.reCheckPreview(event))
|
|
.on('load', event => this.showPreview(event))
|
|
.trigger('error');
|
|
}
|
|
});
|
|
}());
|
|
|
|
$(document).on('turbolinks:load', function() {
|
|
$('.asset-preview-image')
|
|
.one('load', (event) => ActiveStoragePreviews.showPreview(event))
|
|
.one('error', (event) => ActiveStoragePreviews.reCheckPreview(event))
|
|
.each(function() {
|
|
if (this.complete) {
|
|
$(this).trigger('load');
|
|
} else if (this.error) {
|
|
$(this).trigger('error');
|
|
}
|
|
});
|
|
});
|