mirror of
https://github.com/lrsjng/h5ai.git
synced 2025-05-29 22:45:14 -04:00
Update thumbnail requests.
This commit is contained in:
parent
7c4f9d574c
commit
808b1bf657
1 changed files with 66 additions and 32 deletions
|
@ -9,25 +9,10 @@ modulejs.define('ext/thumbnails', ['_', 'core/event', 'core/server', 'core/setti
|
||||||
size: 100,
|
size: 100,
|
||||||
exif: false
|
exif: false
|
||||||
}, allsettings.thumbnails);
|
}, allsettings.thumbnails);
|
||||||
|
var landscapeRatio = 4 / 3;
|
||||||
|
|
||||||
|
|
||||||
function requestThumb(type, href, ratio, callback) {
|
function queueItem(queue, item) {
|
||||||
|
|
||||||
server.request({
|
|
||||||
action: 'get',
|
|
||||||
thumbs: [{
|
|
||||||
type: type,
|
|
||||||
href: href,
|
|
||||||
width: Math.round(settings.size * ratio),
|
|
||||||
height: settings.size
|
|
||||||
}]
|
|
||||||
}, function (json) {
|
|
||||||
|
|
||||||
callback(json && json.thumbs && json.thumbs[0] ? json.thumbs[0] : null);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function checkItem(item) {
|
|
||||||
|
|
||||||
var type = null;
|
var type = null;
|
||||||
|
|
||||||
|
@ -37,31 +22,80 @@ modulejs.define('ext/thumbnails', ['_', 'core/event', 'core/server', 'core/setti
|
||||||
type = 'mov';
|
type = 'mov';
|
||||||
} else if (_.contains(settings.doc, item.type)) {
|
} else if (_.contains(settings.doc, item.type)) {
|
||||||
type = 'doc';
|
type = 'doc';
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type) {
|
if (item.thumbSquare) {
|
||||||
if (item.thumbSquare) {
|
item.$view.find('.icon.square img').addClass('thumb').attr('src', item.thumbSquare);
|
||||||
item.$view.find('.icon.square img').addClass('thumb').attr('src', item.thumbSquare);
|
} else {
|
||||||
} else {
|
queue.push({
|
||||||
requestThumb(type, item.absHref, 1, function (src) {
|
type: type,
|
||||||
|
href: item.absHref,
|
||||||
|
ratio: 1,
|
||||||
|
callback: function (src) {
|
||||||
|
|
||||||
if (src && item.$view) {
|
if (src && item.$view) {
|
||||||
item.thumbSquare = src;
|
item.thumbSquare = src;
|
||||||
item.$view.find('.icon.square img').addClass('thumb').attr('src', src);
|
item.$view.find('.icon.square img').addClass('thumb').attr('src', src);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}
|
});
|
||||||
if (item.thumbRational) {
|
}
|
||||||
item.$view.find('.icon.landscape img').addClass('thumb').attr('src', item.thumbRational);
|
|
||||||
} else {
|
if (item.thumbRational) {
|
||||||
requestThumb(type, item.absHref, 4 / 3, function (src) {
|
item.$view.find('.icon.landscape img').addClass('thumb').attr('src', item.thumbRational);
|
||||||
|
} else {
|
||||||
|
queue.push({
|
||||||
|
type: type,
|
||||||
|
href: item.absHref,
|
||||||
|
ratio: landscapeRatio,
|
||||||
|
callback: function (src) {
|
||||||
|
|
||||||
if (src && item.$view) {
|
if (src && item.$view) {
|
||||||
item.thumbRational = src;
|
item.thumbRational = src;
|
||||||
item.$view.find('.icon.landscape img').addClass('thumb').attr('src', src);
|
item.$view.find('.icon.landscape img').addClass('thumb').attr('src', src);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function requestQueue(queue) {
|
||||||
|
|
||||||
|
var thumbs = _.map(queue, function (req) {
|
||||||
|
|
||||||
|
return {
|
||||||
|
type: req.type,
|
||||||
|
href: req.href,
|
||||||
|
width: Math.round(settings.size * req.ratio),
|
||||||
|
height: settings.size
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
server.request({
|
||||||
|
action: 'get',
|
||||||
|
thumbs: thumbs
|
||||||
|
}, function (json) {
|
||||||
|
|
||||||
|
_.each(queue, function (req, idx) {
|
||||||
|
|
||||||
|
req.callback(json && json.thumbs ? json.thumbs[idx] : null);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleItems(items) {
|
||||||
|
|
||||||
|
var queue = [];
|
||||||
|
|
||||||
|
_.each(items, function (item) {
|
||||||
|
|
||||||
|
queueItem(queue, item);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (queue.length) {
|
||||||
|
requestQueue(queue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,13 +103,13 @@ modulejs.define('ext/thumbnails', ['_', 'core/event', 'core/server', 'core/setti
|
||||||
|
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
|
|
||||||
_.each(item.content, checkItem);
|
handleItems(item.content);
|
||||||
}, settings.delay);
|
}, settings.delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onLocationRefreshed(item, added) {
|
function onLocationRefreshed(item, added) {
|
||||||
|
|
||||||
_.each(added, checkItem);
|
handleItems(added);
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue