mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update cards
This commit is contained in:
parent
75e4bd0cc5
commit
a4a7f03459
8 changed files with 36 additions and 40 deletions
|
@ -167,9 +167,6 @@ button.cardContent {
|
|||
|
||||
.cardContent {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.scalableCard .cardContent {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
@ -202,7 +199,11 @@ button.cardContent {
|
|||
opacity: .6;
|
||||
}
|
||||
|
||||
.card:not(.round) .cardFooter:not(.transparent) {
|
||||
.visualCardBox .cardScalable {
|
||||
background-color: #222326;
|
||||
}
|
||||
|
||||
.visualCardBox .cardFooter {
|
||||
-moz-box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
-ms-box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
-webkit-box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
|
|
|
@ -631,12 +631,16 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
|||
}
|
||||
var index = String(sum).substr(-1);
|
||||
|
||||
return index % numRandomColors;
|
||||
return (index % numRandomColors) + 1;
|
||||
} else {
|
||||
return getRandomInt(1, numRandomColors);
|
||||
}
|
||||
}
|
||||
|
||||
function getDefaultColorClass(str) {
|
||||
return 'defaultCardColor' + getDefaultColorIndex(str);
|
||||
}
|
||||
|
||||
function getCardTextLines(lines, cssClass, forceLines) {
|
||||
|
||||
var html = '';
|
||||
|
@ -994,13 +998,13 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
|||
}
|
||||
|
||||
if (!imgUrl) {
|
||||
cardImageContainerClass += ' defaultCardColor' + getDefaultColorIndex(item.Name);
|
||||
cardImageContainerClass += ' ' + getDefaultColorClass(item.Name);
|
||||
}
|
||||
|
||||
var separateCardBox = scalable;
|
||||
|
||||
var cardBoxClass = options.cardLayout ? 'cardBox visualCardBox' : 'cardBox';
|
||||
if (!separateCardBox) {
|
||||
cardImageContainerClass += " cardBox";
|
||||
cardImageContainerClass += " " + cardBoxClass;
|
||||
}
|
||||
|
||||
// cardBox can be it's own separate element if an outer footer is ever needed
|
||||
|
@ -1020,7 +1024,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
|||
cardContentOpen = '<button type="button" class="clearButton cardContent itemAction" data-action="' + action + '">';
|
||||
cardContentClose = '</button>';
|
||||
}
|
||||
cardImageContainerOpen = '<div class="cardBox"><div class="cardScalable"><div class="cardPadder"></div>' + cardContentOpen + cardImageContainerOpen;
|
||||
cardImageContainerOpen = '<div class="' + cardBoxClass + '"><div class="cardScalable"><div class="cardPadder"></div>' + cardContentOpen + cardImageContainerOpen;
|
||||
cardBoxClose = '</div>';
|
||||
cardScalableClose = '</div>';
|
||||
cardImageContainerClose = '</div>';
|
||||
|
@ -1057,7 +1061,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
|||
cardImageContainerOpen += '<div class="cardText cardCenteredText">' + defaultName + '</div>';
|
||||
}
|
||||
|
||||
var innerCardFooterClass = 'innerCardFooter';
|
||||
var footerCssClass;
|
||||
var progressHtml = indicators.getProgressBarHtml(item);
|
||||
|
||||
var innerCardFooter = '';
|
||||
|
@ -1066,7 +1070,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
|||
|
||||
if (options.overlayText) {
|
||||
|
||||
var footerCssClass = progressHtml ? 'innerCardFooter fullInnerCardFooter' : 'innerCardFooter';
|
||||
footerCssClass = progressHtml ? 'innerCardFooter fullInnerCardFooter' : 'innerCardFooter';
|
||||
innerCardFooter += getCardFooterText(item, options, showTitle, imgUrl, footerCssClass, progressHtml, false);
|
||||
footerOverlayed = true;
|
||||
}
|
||||
|
@ -1080,7 +1084,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
|||
|
||||
var outerCardFooter = '';
|
||||
if (!options.overlayText && !footerOverlayed) {
|
||||
var footerCssClass = options.cardLayout ? 'cardFooter' : 'cardFooter transparent';
|
||||
footerCssClass = options.cardLayout ? 'cardFooter' : 'cardFooter transparent';
|
||||
outerCardFooter = getCardFooterText(item, options, showTitle, imgUrl, footerCssClass, progressHtml, true);
|
||||
}
|
||||
|
||||
|
@ -1328,6 +1332,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
|||
return {
|
||||
getCardsHtml: getCardsHtml,
|
||||
buildCards: buildCards,
|
||||
onUserDataChanged: onUserDataChanged
|
||||
onUserDataChanged: onUserDataChanged,
|
||||
getDefaultColorClass: getDefaultColorClass
|
||||
};
|
||||
});
|
|
@ -59,7 +59,7 @@ define(['imageLoader', 'itemShortcuts'], function (imageLoader, itemShortcuts) {
|
|||
|
||||
var html = '\
|
||||
<button type="button" data-isfolder="' + person.IsFolder + '" data-type="' + person.Type + '" data-action="link" data-id="' + person.Id + '" data-serverid="' + serverId + '" raised class="' + className + '"> \
|
||||
<div class="cardBox">\
|
||||
<div class="visualCardBox cardBox">\
|
||||
<div class="cardScalable">\
|
||||
<div class="cardPadder"></div>\
|
||||
<div class="cardContent">\
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['dialogHelper', 'loading', 'emby-input', 'emby-checkbox', 'paper-icon-button-light'], function (dialogHelper, loading) {
|
||||
define(['dialogHelper', 'loading', 'cardBuilder', 'emby-input', 'emby-checkbox', 'paper-icon-button-light'], function (dialogHelper, loading, cardBuilder) {
|
||||
|
||||
var currentItem;
|
||||
var currentItemType;
|
||||
|
@ -154,7 +154,7 @@
|
|||
function getSearchResultHtml(result, index) {
|
||||
|
||||
var html = '';
|
||||
var cssClass = "card";
|
||||
var cssClass = "card scalableCard";
|
||||
|
||||
if (currentItemType == "Episode") {
|
||||
cssClass += " backdropCard";
|
||||
|
@ -176,10 +176,10 @@
|
|||
if (result.ImageUrl) {
|
||||
var displayUrl = getSearchImageDisplayUrl(result.ImageUrl, result.SearchProviderName);
|
||||
|
||||
html += '<div class="cardImage" style="background-image:url(\'' + displayUrl + '\');"></div>';
|
||||
html += '<div class="cardImageContainer coveredImage" style="background-image:url(\'' + displayUrl + '\');"></div>';
|
||||
} else {
|
||||
|
||||
html += '<div class="cardImage iconCardImage"><i class="md-icon">search</i></div>';
|
||||
html += '<div class="cardImageContainer coveredImage ' + cardBuilder.getDefaultColorClass(result.Name) + '"><div class="cardText cardCenteredText">' + result.Name + '</div></div>';
|
||||
}
|
||||
html += '</a>';
|
||||
html += '</div>';
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
</form>
|
||||
<div class="identificationSearchResults hide" style="text-align: center;">
|
||||
|
||||
<div class="identificationSearchResultList"></div>
|
||||
<div class="identificationSearchResultList itemsContainer vertical-wrap"></div>
|
||||
</div>
|
||||
|
||||
<form class="identifyOptionsForm hide" style="margin:auto;">
|
||||
|
|
|
@ -146,7 +146,7 @@
|
|||
type: "Primary"
|
||||
});
|
||||
|
||||
html += '<div class="cardImage" style="background-image:url(\'' + imgUrl + '\');"></div>';
|
||||
html += '<div class="cardImageContainer coveredImage noScale" style="background-image:url(\'' + imgUrl + '\');"></div>';
|
||||
}
|
||||
else {
|
||||
|
||||
|
@ -154,7 +154,7 @@
|
|||
|
||||
imgUrl = 'css/images/logindefault.png';
|
||||
|
||||
html += '<div class="cardImage" style="background-image:url(\'' + imgUrl + '\');background-color:' + background + ';"></div>';
|
||||
html += '<div class="cardImageContainer coveredImage noScale" style="background-image:url(\'' + imgUrl + '\');background-color:' + background + ';"></div>';
|
||||
}
|
||||
|
||||
html += '</a>';
|
||||
|
|
|
@ -46,51 +46,40 @@
|
|||
var item = items[i];
|
||||
|
||||
var icon;
|
||||
var backgroundColor = 'rgba(82, 181, 75, 0.9)';
|
||||
|
||||
switch (item.CollectionType) {
|
||||
case "movies":
|
||||
icon = "local_movies";
|
||||
backgroundColor = 'rgba(176, 94, 81, 0.9)';
|
||||
break;
|
||||
case "music":
|
||||
icon = "library_music";
|
||||
backgroundColor = 'rgba(217, 145, 67, 0.9)';
|
||||
break;
|
||||
case "photos":
|
||||
icon = "photo";
|
||||
backgroundColor = 'rgba(127, 0, 0, 0.9)';
|
||||
break;
|
||||
case "livetv":
|
||||
icon = "live_tv";
|
||||
backgroundColor = 'rgba(217, 145, 67, 0.9)';
|
||||
break;
|
||||
case "tvshows":
|
||||
icon = "live_tv";
|
||||
backgroundColor = 'rgba(77, 88, 164, 0.9)';
|
||||
break;
|
||||
case "games":
|
||||
icon = "folder";
|
||||
backgroundColor = 'rgba(183, 202, 72, 0.9)';
|
||||
break;
|
||||
case "trailers":
|
||||
icon = "local_movies";
|
||||
backgroundColor = 'rgba(176, 94, 81, 0.9)';
|
||||
break;
|
||||
case "homevideos":
|
||||
icon = "video_library";
|
||||
backgroundColor = 'rgba(110, 52, 32, 0.9)';
|
||||
break;
|
||||
case "musicvideos":
|
||||
icon = "video_library";
|
||||
backgroundColor = 'rgba(143, 54, 168, 0.9)';
|
||||
break;
|
||||
case "books":
|
||||
icon = "folder";
|
||||
break;
|
||||
case "channels":
|
||||
icon = "folder";
|
||||
backgroundColor = 'rgba(51, 136, 204, 0.9)';
|
||||
break;
|
||||
case "playlists":
|
||||
icon = "folder";
|
||||
|
@ -111,10 +100,10 @@
|
|||
|
||||
icon = item.icon || icon;
|
||||
|
||||
html += '<a' + onclick + ' data-id="' + item.Id + '" class="' + cssClass + '" href="' + href + '">';
|
||||
html += '<div class="cardBox" style="background-color:' + backgroundColor + ';margin:4px;border-radius:4px;">';
|
||||
html += '<a' + onclick + ' data-id="' + item.Id + '" class="' + cssClass + '" href="' + href + '" style="min-width:12.5%;">';
|
||||
html += '<div class="cardBox ' + cardBuilder.getDefaultColorClass(item.Name) + '" style="margin:4px;">';
|
||||
|
||||
html += "<div class='cardText' style='padding:8px 10px;color:#fff;'>";
|
||||
html += "<div class='cardText'>";
|
||||
html += '<i class="md-icon">' + icon + '</i>';
|
||||
html += '<span style="margin-left:.7em;">' + item.Name + '</span>';
|
||||
html += "</div>";
|
||||
|
@ -136,7 +125,7 @@
|
|||
if (index) {
|
||||
html += '<h1 class="listHeader">' + Globalize.translate('HeaderMyMedia') + '</h1>';
|
||||
}
|
||||
html += '<div>';
|
||||
html += '<div style="display:flex;flex-wrap:wrap;">';
|
||||
html += getLibraryButtonsHtml(items);
|
||||
html += '</div>';
|
||||
|
||||
|
@ -203,7 +192,7 @@
|
|||
function getCard(img, target, shape) {
|
||||
|
||||
shape = shape || 'backdropCard';
|
||||
var html = '<div class="card ' + shape + '"><div class="cardBox"><div class="cardScalable"><div class="cardPadder"></div>';
|
||||
var html = '<div class="card scalableCard ' + shape + '"><div class="cardBox"><div class="cardScalable"><div class="cardPadder"></div>';
|
||||
|
||||
if (target) {
|
||||
html += '<a class="cardContent" href="' + target + '" target="_blank">';
|
||||
|
@ -232,7 +221,7 @@
|
|||
|
||||
var nameText = AppInfo.isNativeApp ? 'Emby Theater' : '<a href="https://emby.media/download" target="_blank">Emby Theater</a>';
|
||||
html += '<p>A beautiful app for your TV and large screen tablet. ' + nameText + ' runs on Windows, Xbox One, Google Chrome, FireFox, Microsoft Edge and Opera.</p>';
|
||||
html += '<div class="itemsContainer">';
|
||||
html += '<div class="itemsContainer vertical-wrap">';
|
||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater1.png', 'https://emby.media/download');
|
||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater2.png', 'https://emby.media/download');
|
||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater3.png', 'https://emby.media/download');
|
||||
|
@ -252,7 +241,7 @@
|
|||
var learnMoreText = AppInfo.isNativeApp ? '' : '<a href="https://emby.media/premiere" target="_blank">Learn more</a>';
|
||||
|
||||
html += '<p>Design beautiful Cover Art, enjoy free access to Emby apps, and more. ' + learnMoreText + '</p>';
|
||||
html += '<div class="itemsContainer">';
|
||||
html += '<div class="itemsContainer vertical-wrap">';
|
||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater1.png', cardTarget);
|
||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater2.png', cardTarget);
|
||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater3.png', cardTarget);
|
||||
|
@ -271,7 +260,7 @@
|
|||
var learnMoreText = AppInfo.isNativeApp ? '' : '<a href="https://emby.media/premiere" target="_blank">Learn more</a>';
|
||||
|
||||
html += '<p>Combined horizontal and vertical swiping, better detail layouts, and more. ' + learnMoreText + '</p>';
|
||||
html += '<div class="itemsContainer">';
|
||||
html += '<div class="itemsContainer vertical-wrap">';
|
||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/ms1.png', cardTarget, 'portraitCard');
|
||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/ms2.png', cardTarget, 'portraitCard');
|
||||
html += '</div>';
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
"LabelExit": "Exit",
|
||||
"LabelVisitCommunity": "Visit Community",
|
||||
"LabelGithub": "Github",
|
||||
"HeaderIdentifyItemHelp": "Enter one or more search criteria. Remove criteria to increase search results.",
|
||||
"LabelSwagger": "Swagger",
|
||||
"LabelStandard": "Standard",
|
||||
"LabelApiDocumentation": "Api Documentation",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue