mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Implement blurhash in listview
This commit is contained in:
parent
b46c48d4dc
commit
c3ce87ecb2
1 changed files with 17 additions and 17 deletions
|
@ -70,6 +70,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
|
||||||
function getImageUrl(item, width) {
|
function getImageUrl(item, width) {
|
||||||
|
|
||||||
var apiClient = connectionManager.getApiClient(item.ServerId);
|
var apiClient = connectionManager.getApiClient(item.ServerId);
|
||||||
|
let itemId;
|
||||||
|
|
||||||
var options = {
|
var options = {
|
||||||
maxWidth: width * 2,
|
maxWidth: width * 2,
|
||||||
|
@ -77,45 +78,37 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
|
||||||
};
|
};
|
||||||
|
|
||||||
if (item.ImageTags && item.ImageTags.Primary) {
|
if (item.ImageTags && item.ImageTags.Primary) {
|
||||||
|
|
||||||
options.tag = item.ImageTags.Primary;
|
options.tag = item.ImageTags.Primary;
|
||||||
return apiClient.getScaledImageUrl(item.Id, options);
|
itemId = item.Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.AlbumId && item.AlbumPrimaryImageTag) {
|
if (item.AlbumId && item.AlbumPrimaryImageTag) {
|
||||||
|
|
||||||
options.tag = item.AlbumPrimaryImageTag;
|
options.tag = item.AlbumPrimaryImageTag;
|
||||||
return apiClient.getScaledImageUrl(item.AlbumId, options);
|
itemId = item.AlbumId;
|
||||||
} else if (item.SeriesId && item.SeriesPrimaryImageTag) {
|
} else if (item.SeriesId && item.SeriesPrimaryImageTag) {
|
||||||
|
|
||||||
options.tag = item.SeriesPrimaryImageTag;
|
options.tag = item.SeriesPrimaryImageTag;
|
||||||
return apiClient.getScaledImageUrl(item.SeriesId, options);
|
itemId = item.SeriesId;
|
||||||
|
|
||||||
} else if (item.ParentPrimaryImageTag) {
|
} else if (item.ParentPrimaryImageTag) {
|
||||||
|
|
||||||
options.tag = item.ParentPrimaryImageTag;
|
options.tag = item.ParentPrimaryImageTag;
|
||||||
return apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, options);
|
itemId = item.ParentPrimaryImageItemId;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return { url: apiClient.getScaledImageUrl(itemId, options) || null, blurHash: (item.ImageBlurHashes || {})[options.tag] || null};
|
||||||
}
|
}
|
||||||
|
|
||||||
function getChannelImageUrl(item, width) {
|
function getChannelImageUrl(item, width) {
|
||||||
|
|
||||||
var apiClient = connectionManager.getApiClient(item.ServerId);
|
var apiClient = connectionManager.getApiClient(item.ServerId);
|
||||||
|
|
||||||
var options = {
|
var options = {
|
||||||
maxWidth: width * 2,
|
maxWidth: width * 2,
|
||||||
type: 'Primary'
|
type: 'Primary'
|
||||||
};
|
};
|
||||||
|
|
||||||
if (item.ChannelId && item.ChannelPrimaryImageTag) {
|
if (item.ChannelId && item.ChannelPrimaryImageTag) {
|
||||||
|
|
||||||
options.tag = item.ChannelPrimaryImageTag;
|
options.tag = item.ChannelPrimaryImageTag;
|
||||||
return apiClient.getScaledImageUrl(item.ChannelId, options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return { url: apiClient.getScaledImageUrl(item.ChannelId, options) || null, blurhash: (item.ImageBlurHashes || {})[options.tag] || null};
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTextLinesHtml(textlines, isLargeStyle) {
|
function getTextLinesHtml(textlines, isLargeStyle) {
|
||||||
|
@ -268,8 +261,10 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.image !== false) {
|
if (options.image !== false) {
|
||||||
var imgUrl = options.imageSource === 'channel' ? getChannelImageUrl(item, downloadWidth) : getImageUrl(item, downloadWidth);
|
let imgData = options.imageSource === 'channel' ? getChannelImageUrl(item, downloadWidth) : getImageUrl(item, downloadWidth);
|
||||||
var imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage';
|
let imgUrl = imgData.url;
|
||||||
|
let blurhash = imgData.blurhash;
|
||||||
|
let imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage';
|
||||||
|
|
||||||
if (isLargeStyle && layoutManager.tv) {
|
if (isLargeStyle && layoutManager.tv) {
|
||||||
imageClass += ' listItemImage-large-tv';
|
imageClass += ' listItemImage-large-tv';
|
||||||
|
@ -283,8 +278,13 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
|
||||||
|
|
||||||
var imageAction = playOnImageClick ? 'resume' : action;
|
var imageAction = playOnImageClick ? 'resume' : action;
|
||||||
|
|
||||||
|
let blurhashAttrib = '';
|
||||||
|
if (blurhash && blurhash.length > 0) {
|
||||||
|
blurhashAttrib = 'data-blurhash="' + blurhash + '"';
|
||||||
|
}
|
||||||
|
|
||||||
if (imgUrl) {
|
if (imgUrl) {
|
||||||
html += '<div data-action="' + imageAction + '" class="' + imageClass + ' lazy" data-src="' + imgUrl + '" item-icon>';
|
html += '<div data-action="' + imageAction + '" class="' + imageClass + ' lazy" data-src="' + imgUrl + '" ' + blurhashAttrib + ' item-icon>';
|
||||||
} else {
|
} else {
|
||||||
html += '<div class="' + imageClass + '">';
|
html += '<div class="' + imageClass + '">';
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue