1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

begin unifying card layouts

This commit is contained in:
Luke Pulverenti 2016-07-29 16:06:58 -04:00
parent 6503c7c6f8
commit 07d49e2573
34 changed files with 216 additions and 2228 deletions

View file

@ -429,15 +429,13 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
if (options.autoThumb && item.ImageTags && item.ImageTags.Primary && item.PrimaryImageAspectRatio && item.PrimaryImageAspectRatio >= 1.34) { if (options.autoThumb && item.ImageTags && item.ImageTags.Primary && item.PrimaryImageAspectRatio && item.PrimaryImageAspectRatio >= 1.34) {
width = posterWidth; height = primaryImageAspectRatio ? Math.round(width / primaryImageAspectRatio) : null;
height = primaryImageAspectRatio ? Math.round(posterWidth / primaryImageAspectRatio) : null;
imgUrl = ApiClient.getScaledImageUrl(item.Id, { imgUrl = ApiClient.getScaledImageUrl(item.Id, {
type: "Primary", type: "Primary",
maxHeight: height, maxHeight: height,
maxWidth: width, maxWidth: width,
tag: item.ImageTags.Primary, tag: item.ImageTags.Primary
enableImageEnhancers: enableImageEnhancers
}); });
if (primaryImageAspectRatio) { if (primaryImageAspectRatio) {
@ -452,9 +450,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
imgUrl = ApiClient.getScaledImageUrl(item.Id, { imgUrl = ApiClient.getScaledImageUrl(item.Id, {
type: "Thumb", type: "Thumb",
maxWidth: thumbWidth, maxWidth: width,
tag: item.ImageTags.Thumb, tag: item.ImageTags.Thumb
enableImageEnhancers: enableImageEnhancers
}); });
} else if (options.preferThumb && item.ImageTags && item.ImageTags.Thumb) { } else if (options.preferThumb && item.ImageTags && item.ImageTags.Thumb) {

View file

@ -6,6 +6,6 @@
<div class="listTopPaging"> <div class="listTopPaging">
</div> </div>
</div> </div>
<div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer" style="text-align:center;"></div> <div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer verticalItemsContainer" style="text-align:center;"></div>
</div> </div>
</div> </div>

View file

@ -10,7 +10,7 @@
<div class="pageTabContent ehsContent" id="channelsTab" data-index="1"> <div class="pageTabContent ehsContent" id="channelsTab" data-index="1">
<div class="viewSettings"> <div class="viewSettings">
</div> </div>
<div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer" style="text-align:center;"></div> <div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer verticalItemsContainer" style="text-align:center;"></div>
</div> </div>
<div data-role="content"> <div data-role="content">

View file

@ -1,4 +1,4 @@
define(['libraryBrowser', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser) { define(['libraryBrowser', 'cardBuilder', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser, cardBuilder) {
function enableScrollX() { function enableScrollX() {
return browserInfo.mobile && AppInfo.enableAppLayouts; return browserInfo.mobile && AppInfo.enableAppLayouts;
@ -85,23 +85,20 @@
if (enableScrollX()) { if (enableScrollX()) {
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">'; html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">';
} else { } else {
html += '<div is="emby-itemscontainer" class="itemsContainer">'; html += '<div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
} }
html += libraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml(result.Items, {
items: result.Items,
preferThumb: section.preferThumb, preferThumb: section.preferThumb,
shape: section.shape, shape: section.shape,
centerText: section.centerText,
overlayText: section.overlayText !== false, overlayText: section.overlayText !== false,
showTitle: section.showTitle, showTitle: section.showTitle,
showParentTitle: section.showParentTitle, showParentTitle: section.showParentTitle,
lazy: true, scalable: true,
showDetailsMenu: true,
centerText: section.centerText,
overlayPlayButton: section.overlayPlayButton, overlayPlayButton: section.overlayPlayButton,
overlayMoreButton: section.overlayMoreButton, overlayMoreButton: section.overlayMoreButton,
context: 'home-favorites', action: section.defaultAction
defaultAction: section.defaultAction
}); });
html += '</div>'; html += '</div>';

View file

@ -1,571 +0,0 @@
.card {
display: inline-block;
text-align: left;
position: relative;
contain: style;
}
.card, .card a {
text-decoration: none;
font-weight: 400 !important;
}
.buttonCard:hover .cardBox {
opacity: .6;
}
.cardBox {
margin: 6px;
}
@media all and (max-width: 500px) {
.cardBox {
margin: 3px;
}
}
.cardOverlayButtonContainer {
position: absolute;
bottom: 0;
right: 0;
padding: 1em .25em .5em 1em;
}
.cardOverlayMoreButton, .cardOverlayPlayButton {
color: #fff !important;
background-color: rgba(0,0,0,.7) !important;
border-radius: 500px;
}
.cardOverlayMoreButton:hover, .cardOverlayPlayButton:hover {
background-color: rgba(0,0,0,.9) !important;
transition: background-color .5s ease-out;
}
.grayscale {
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
filter: grayscale(100%);
}
.bottomPaddedCard .cardBox:not(.visualCardBox) {
margin-bottom: 24px;
}
.hiddenScrollX .bottomPaddedCard .cardBox {
margin-bottom: 0;
}
.visualCardBox {
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
-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);
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
background: #fff;
}
.ui-body-b .visualCardBox {
border-radius: 3px;
}
.defaultBackground .cardImage, .ui-body-b .visualCardBox {
background-color: #222326;
}
.cardScalable {
position: relative;
}
.backdropCard .cardPadder, .smallBackdropCard .cardPadder, .overflowBackdropCard .cardPadder {
padding-bottom: 56.25%;
}
.squareCard .cardPadder, .overflowSquareCard .cardPadder {
padding-bottom: 100%;
}
.letterBoxCard .cardPadder {
padding-bottom: 75%;
}
.portraitCard .cardPadder, .overflowPortraitCard .cardPadder {
padding-bottom: 150%;
}
.bannerCard .cardPadder {
padding-bottom: 18.5%;
}
.cardContent {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
/* Needed to keep the cardOverlayTarget from showing outside the bounds while it animates */
overflow: hidden;
}
.cardContent:not(.noHoverEffect):hover .cardImage {
opacity: .5;
}
.cardContent .cardFooter {
position: absolute;
bottom: 0;
left: 0;
color: #eee;
padding: 6px 0 2px 0;
max-width: 100%;
background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.7) 100%) !important; /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0)), color-stop(100%,rgba(0,0,0,0.7))) !important; /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0.7) 100%) !important; /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0.7) 100%) !important; /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0.7) 100%) !important; /* IE10+ */
background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,0.75) 100%) !important; /* W3C */
}
.cardContent .cardFooter:not(.fullCardFooter) {
background: rgba(0, 0, 0, .6) !important;
}
.lightCardFooter {
background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.7) 100%) !important; /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0)), color-stop(100%,rgba(0,0,0,0.7))) !important; /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0.7) 100%) !important; /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0.7) 100%) !important; /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0.7) 100%) !important; /* IE10+ */
background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,0.7) 100%) !important; /* W3C */
}
.fullCardFooter {
right: 0;
}
.visualCardBox .outerCardFooter {
padding: .5em .3em;
position: relative;
}
.btnCardOptions {
padding: 10px !important;
margin: 0 !important;
color: inherit;
}
.cardText {
text-overflow: ellipsis;
overflow: hidden;
text-wrap: none;
white-space: nowrap;
padding: 5px 5px 2px;
font-weight: 400;
line-height: 1.4;
}
.cardButtonContainer {
text-align: right;
float: right;
padding: 5px 0 2px;
}
.cardContent .cardFooter .cardText {
font-size: 115%;
}
.cardTextCentered {
text-align: center;
}
.cardDefaultText {
position: absolute;
top: 30%;
left: 0;
right: 0;
text-align: center;
line-height: initial;
}
.cardContent .cardText {
padding: 0 6px 4px 5px;
}
.outerCardFooter .cardText + .cardText {
opacity: .6;
}
.outerCardFooter .cardText:first-child {
padding-top: 7px;
}
.cardImage {
background-size: contain;
background-repeat: no-repeat;
background-position: center bottom;
width: 100%;
height: 100%;
border-radius: 2px;
}
.cardImage canvas {
width: 100%;
height: 100%;
}
.coveredCardImage {
background-size: 100% 100%;
background-position: center center;
}
.coveredCardImage.noScale {
background-size: cover;
}
.centeredCardImage {
background-position: center center;
}
.ui-body-b .iconCardImage {
color: #fff;
}
.iconCardImage {
display: flex;
align-items: center;
text-align: center;
justify-content: center;
}
.iconCardImage iron-icon {
width: 30%;
height: 30%;
}
.bannerCard {
width: 100%;
}
.squareCard {
width: 50%;
}
.backdropCard {
width: 50%;
}
.smallBackdropCard {
width: 50%;
}
.portraitCard {
width: 33.333%;
}
.overflowPortraitCard {
width: 40%;
max-width: 200px;
}
.overflowBackdropCard {
width: 84%;
max-width: 400px;
}
.cardProgress {
line-height: 7px;
}
.cardProgress .itemProgressBar {
height: 7px;
width: 100%;
opacity: .8;
}
.overflowSquareCard {
width: 42%;
}
@media all and (max-width: 420px) {
.backdropCard {
width: 100% !important;
}
}
@media all and (min-width: 500px) {
.smallBackdropCard {
width: 33.333%;
}
.squareCard {
width: 33.333%;
}
}
@media all and (min-width: 640px) {
.portraitCard {
width: 25%;
}
.overflowPortraitCard {
width: 36%;
}
.overflowBackdropCard {
width: 60%;
}
.overflowSquareCard {
width: 30%;
}
}
@media all and (min-width: 700px) {
.squareCard {
width: 25%;
}
}
@media all and (min-width: 770px) {
.backdropCard {
width: 33.333%;
}
}
@media all and (min-width: 800px) {
.bannerCard {
width: 50%;
}
.portraitCard {
width: 20%;
}
.smallBackdropCard {
width: 25%;
}
}
@media all and (min-width: 900px) {
.squareCard {
width: 20%;
}
}
@media all and (min-width: 1000px) {
.smallBackdropCard {
width: 20%;
}
.overflowPortraitCard {
width: 23%;
}
.overflowBackdropCard {
width: 40%;
}
.overflowSquareCard {
width: 22%;
}
}
@media all and (min-width: 1200px) {
.backdropCard {
width: 25%;
}
.squareCard {
width: 16.666666666666666666666666666667%;
}
.bannerCard {
width: 33.333%;
}
.portraitCard {
width: 16.666666666666666666666666666667%;
}
.smallBackdropCard {
width: 16.666666666666666666666666666667%;
}
}
@media all and (min-width: 1400px) {
.squareCard {
width: 14.285714285714285714285714285714%;
}
.portraitCard {
width: 14.285714285714285714285714285714%;
}
.smallBackdropCard {
width: 14.285714285714285714285714285714%;
}
}
@media all and (min-width: 1600px) {
.portraitCard {
width: 12.5%;
}
.smallBackdropCard {
width: 12.5%;
}
}
@media all and (min-width: 1800px) {
.squareCard {
width: 12.5%;
}
.smallBackdropCard {
width: 10%;
}
}
@media all and (min-width: 2100px) {
.squareCard {
width: 11.111111111111111111111111111111%;
}
.backdropCard {
width: 20%;
}
.portraitCard {
width: 11.111111111111111111111111111111%;
}
}
@media all and (min-width: 2200px) {
.bannerCard {
width: 25%;
}
.portraitCard {
width: 10%;
}
}
@media all and (min-width: 2500px) {
.backdropCard {
width: 16.666666666666666666666666666667%;
}
}
/** detailPage169 */
.detailPage169Card .cardPadder {
padding-bottom: 56.25%;
}
.detailPage169Card {
width: 50%;
}
@media all and (min-width: 800px) {
.detailPage169Card {
width: 33.333%;
}
}
@media all and (max-width: 420px) {
.detailPage169Card {
width: 100% !important;
}
}
/** detailPagePortrait */
.detailPagePortraitCard .cardPadder {
padding-bottom: 150%;
}
.detailPagePortraitCard {
width: 33.333%;
}
@media all and (min-width: 540px) {
.detailPagePortraitCard {
width: 25%;
}
}
/** detailPageSquare */
.detailPageSquareCard .cardPadder {
padding-bottom: 100%;
}
.detailPageSquareCard {
width: 33.333%;
}
@media all and (min-width: 540px) {
.detailPageSquareCard {
width: 25%;
}
}
/** horizontalBackdropCard */
.horizontalBackdropCard .cardPadder {
padding-bottom: 56.25%;
}
.horizontalBackdropCard {
width: 75%;
}
@media all and (min-width: 500px) {
.horizontalBackdropCard {
width: 50%;
}
}
@media all and (min-width: 800px) {
.horizontalBackdropCard {
width: 31%;
}
}
.horizontalBackdropCard .cardImage {
border-radius: 4px;
}
.horizontalBackdropCard .cardBox {
margin: 2px !important;
}

View file

@ -907,80 +907,6 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
line-height: 1.2; line-height: 1.2;
} }
.itemProgress {
vertical-align: top;
font-size: 19px;
margin-right: 15px;
font-weight: bold;
}
/* All HTML5 progress enabled browsers */
.itemProgressBar {
/* Turns off styling - not usually needed, but good to know. */
appearance: none;
-moz-appearance: none;
-webkit-appearance: none;
/* gets rid of default border in Firefox and Opera. */
border: 0;
margin: 0;
height: 14px;
border: 0 solid #222;
border-radius: 0;
width: 50px;
margin-right: 5px;
}
/* Undo these to original */
.listItem .itemProgressBar {
width: auto;
margin: 0;
height: .56vh;
}
/* Polyfill */
.itemProgressBar[role]:after {
background-image: none; /* removes default background from polyfill */
}
/*
* Background of the progress bar background
*/
/* Firefox and Polyfill */
.itemProgressBar {
background: #000 !important; /* !important only needed in polyfill */
}
/* Chrome */
.itemProgressBar::-webkit-progress-bar {
background: #000;
}
.pare
/*
* Background of the progress bar value
*/
/* Firefox */
.itemProgressBar::-moz-progress-bar {
border-radius: 0;
background-image: none;
background-color: #52B54B;
}
/* Chrome */
.itemProgressBar::-webkit-progress-value {
border-radius: 0;
background-image: none;
background-color: #52B54B;
}
/* Polyfill */
.itemProgressBar[aria-valuenow]:before {
border-radius: 0;
background-image: none;
background-color: #52B54B;
}
.recordingProgressBar::-moz-progress-bar { .recordingProgressBar::-moz-progress-bar {
background-color: #cc3333; background-color: #cc3333;
} }
@ -993,12 +919,6 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
background-color: #cc3333; background-color: #cc3333;
} }
.tileItem .itemProgressBar {
top: 2px;
width: 40px;
margin-right: 1em;
}
.timelineHeader { .timelineHeader {
margin-bottom: .25em; margin-bottom: .25em;
line-height: 1.25em; line-height: 1.25em;
@ -1007,7 +927,6 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
.itemsContainer { .itemsContainer {
margin: 0 auto; margin: 0 auto;
line-height: 0;
} }
.alphabetPicker { .alphabetPicker {

View file

@ -25,7 +25,7 @@
<span>${ButtonSync}</span> <span>${ButtonSync}</span>
</button> </button>
</div> </div>
<div is="emby-itemscontainer" id="nextUpItems" class="itemsContainer"> <div is="emby-itemscontainer" id="nextUpItems" class="itemsContainer verticalItemsContainer">
</div> </div>
</div> </div>
<p class="noNextUpItems hide">${NoNextUpItemsMessage}</p> <p class="noNextUpItems hide">${NoNextUpItemsMessage}</p>

View file

@ -52,7 +52,7 @@
<div class="paging"></div> <div class="paging"></div>
<button is="paper-icon-button-light" class="btnFilter autoSize" title="${ButtonFilter}"><i class="md-icon">filter_list</i></button> <button is="paper-icon-button-light" class="btnFilter autoSize" title="${ButtonFilter}"><i class="md-icon">filter_list</i></button>
</div> </div>
<div is="emby-itemscontainer" id="items" class="itemsContainer"></div> <div is="emby-itemscontainer" id="items" class="itemsContainer verticalItemsContainer"></div>
</div> </div>
<div class="pageTabContent ehsContent" id="recordingsTab" data-index="3"> <div class="pageTabContent ehsContent" id="recordingsTab" data-index="3">
<div id="activeRecordings" class="homePageSection hide"> <div id="activeRecordings" class="homePageSection hide">

View file

@ -4,7 +4,7 @@
<div class="viewSettings"> <div class="viewSettings">
<div class="listTopPaging"></div> <div class="listTopPaging"></div>
</div> </div>
<div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer"></div> <div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer verticalItemsContainer"></div>
</div> </div>
</div> </div>

View file

@ -98,14 +98,14 @@
<div style="text-align: center; display: flex; align-items: center; justify-content: center;"> <div style="text-align: center; display: flex; align-items: center; justify-content: center;">
<button is="paper-icon-button-light" class="btnSelectView autoSize" title="${ButtonSelectView}"><i class="md-icon">view_comfy</i></button> <button is="paper-icon-button-light" class="btnSelectView autoSize" title="${ButtonSelectView}"><i class="md-icon">view_comfy</i></button>
</div> </div>
<div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer"></div> <div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer verticalItemsContainer"></div>
</div> </div>
<div class="pageTabContent ehsContent" id="studiosTab" data-index="5"> <div class="pageTabContent ehsContent" id="studiosTab" data-index="5">
<div class="viewSettings"> <div class="viewSettings">
<div class="listTopPaging"> <div class="listTopPaging">
</div> </div>
</div> </div>
<div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer" style="text-align: center;"></div> <div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer verticalItemsContainer" style="text-align: center;"></div>
</div> </div>
<div data-role="content"> <div data-role="content">

View file

@ -115,7 +115,7 @@
<div class="paging"></div> <div class="paging"></div>
</div> </div>
<div is="emby-itemscontainer" class="itemsContainer itemsContainerWithAlphaPicker"> <div is="emby-itemscontainer" class="itemsContainer itemsContainerWithAlphaPicker verticalItemsContainer">
</div> </div>
<div style="text-align: center; display: flex; flex-wrap: wrap; align-items: center; justify-content: center;padding:.7em .5em;"> <div style="text-align: center; display: flex; flex-wrap: wrap; align-items: center; justify-content: center;padding:.7em .5em;">
<div class="paging"></div> <div class="paging"></div>

View file

@ -1,4 +1,4 @@
define(['jQuery', 'emby-itemscontainer'], function ($) { define(['jQuery', 'cardBuilder', 'emby-itemscontainer'], function ($, cardBuilder) {
var data = {}; var data = {};
@ -129,7 +129,7 @@
updateFilterControls(page); updateFilterControls(page);
html = LibraryBrowser.getPosterViewHtml({ html = cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
shape: "auto", shape: "auto",
defaultShape: 'square', defaultShape: 'square',

View file

@ -1,4 +1,4 @@
define(['libraryBrowser', 'emby-itemscontainer'], function (libraryBrowser) { define(['libraryBrowser', 'cardBuilder', 'emby-itemscontainer'], function (libraryBrowser, cardBuilder) {
// The base query options // The base query options
var query = { var query = {
@ -23,7 +23,7 @@
if (view == "Thumb") { if (view == "Thumb") {
html = libraryBrowser.getPosterViewHtml({ html = cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
shape: "backdrop", shape: "backdrop",
context: 'channels', context: 'channels',
@ -36,7 +36,7 @@
} }
else if (view == "ThumbCard") { else if (view == "ThumbCard") {
html = libraryBrowser.getPosterViewHtml({ html = cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,

View file

@ -1,4 +1,4 @@
define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, listView) { define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, listView, cardBuilder) {
return function (view, params, tabContent) { return function (view, params, tabContent) {
@ -83,27 +83,25 @@
}); });
} }
else if (viewStyle == "PosterCard") { else if (viewStyle == "PosterCard") {
html = libraryBrowser.getPosterViewHtml({ html = cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
shape: "backdrop", shape: "backdrop",
showTitle: true, showTitle: true,
showParentTitle: true, showParentTitle: true,
lazy: true, scalable: true,
cardLayout: true, cardLayout: true
showDetailsMenu: true
}); });
} }
else { else {
// poster // poster
html = libraryBrowser.getPosterViewHtml({ html = cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
shape: "backdrop", shape: "backdrop",
showTitle: true, showTitle: true,
showParentTitle: true, showParentTitle: true,
overlayText: true, overlayText: true,
lazy: true, scalable: true,
showDetailsMenu: true,
overlayPlayButton: true overlayPlayButton: true
}); });
} }

View file

@ -1,4 +1,4 @@
define(['components/categorysyncbuttons', 'emby-itemscontainer'], function (categorysyncbuttons) { define(['components/categorysyncbuttons', 'cardBuilder', 'emby-itemscontainer'], function (categorysyncbuttons, cardBuilder) {
function getNextUpPromise() { function getNextUpPromise() {
@ -25,7 +25,7 @@
var html = ''; var html = '';
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
shape: "backdrop", shape: "backdrop",
showTitle: true, showTitle: true,

View file

@ -1,4 +1,4 @@
define(['datetime', 'emby-itemscontainer', 'scrollStyles'], function (datetime) { define(['datetime', 'cardBuilder', 'emby-itemscontainer', 'scrollStyles'], function (datetime, cardBuilder) {
function getUpcomingPromise() { function getUpcomingPromise() {
@ -102,10 +102,10 @@
if (enableScrollX()) { if (enableScrollX()) {
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">'; html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">';
} else { } else {
html += '<div is="emby-itemscontainer" class="itemsContainer">'; html += '<div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
} }
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: group.items, items: group.items,
showLocationTypeIndicator: false, showLocationTypeIndicator: false,
shape: getThumbShape(), shape: getThumbShape(),

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
define(['emby-itemscontainer'], function () { define(['cardBuilder', 'emby-itemscontainer'], function (cardBuilder) {
return function (view, params, tabContent) { return function (view, params, tabContent) {
@ -38,7 +38,7 @@
function getChannelsHtml(channels) { function getChannelsHtml(channels) {
return LibraryBrowser.getPosterViewHtml({ return cardBuilder.getCardsHtml({
items: channels, items: channels,
shape: "square", shape: "square",
showTitle: true, showTitle: true,

View file

@ -1,6 +1,4 @@
define(['emby-itemscontainer'], function () { define(['cardBuilder', 'emby-itemscontainer'], function (cardBuilder) {
var view = LibraryBrowser.getDefaultItemsView('Poster', 'Poster');
var currentDate = new Date(); var currentDate = new Date();
currentDate.setHours(0, 0, 0, 0); currentDate.setHours(0, 0, 0, 0);
@ -37,33 +35,18 @@
page.querySelector('.listTopPaging').innerHTML = pagingHtml; page.querySelector('.listTopPaging').innerHTML = pagingHtml;
if (view == "Poster") { html = cardBuilder.getCardsHtml({
html = LibraryBrowser.getPosterViewHtml({ items: result.Items,
items: result.Items, shape: query.IsMovie ? 'portrait' : "auto",
shape: query.IsMovie ? 'portrait' : "auto", context: 'livetv',
context: 'livetv', showTitle: false,
showTitle: false, centerText: true,
centerText: true, lazy: true,
lazy: true, showStartDateIndex: true,
showStartDateIndex: true, overlayText: false,
overlayText: false, showProgramAirInfo: true,
showProgramAirInfo: true, overlayMoreButton: true
overlayMoreButton: true });
});
}
else if (view == "PosterCard") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "portrait",
context: 'livetv',
showTitle: true,
showStartDateIndex: true,
lazy: true,
cardLayout: true,
showProgramAirInfo: true,
overlayMoreButton: true
});
}
var elem = page.querySelector('.itemsContainer'); var elem = page.querySelector('.itemsContainer');
elem.innerHTML = html + pagingHtml; elem.innerHTML = html + pagingHtml;

View file

@ -1,4 +1,4 @@
define(['libraryBrowser', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser) { define(['libraryBrowser', 'cardBuilder', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser, cardBuilder) {
function enableScrollX() { function enableScrollX() {
return browserInfo.mobile && AppInfo.enableAppLayouts; return browserInfo.mobile && AppInfo.enableAppLayouts;
@ -99,7 +99,7 @@
function renderItems(page, items, sectionClass, overlayButton, shape) { function renderItems(page, items, sectionClass, overlayButton, shape) {
var html = libraryBrowser.getPosterViewHtml({ var html = cardBuilder.getCardsHtml({
items: items, items: items,
shape: shape || (enableScrollX() ? 'autooverflow' : 'auto'), shape: shape || (enableScrollX() ? 'autooverflow' : 'auto'),
showTitle: true, showTitle: true,
@ -130,8 +130,10 @@
for (var i = 0, length = containers.length; i < length; i++) { for (var i = 0, length = containers.length; i < length; i++) {
if (enableScrollX()) { if (enableScrollX()) {
containers[i].classList.add('hiddenScrollX'); containers[i].classList.add('hiddenScrollX');
containers[i].classList.remove('verticalItemsContainer');
} else { } else {
containers[i].classList.remove('hiddenScrollX'); containers[i].classList.remove('hiddenScrollX');
containers[i].classList.add('verticalItemsContainer');
} }
} }
}; };

View file

@ -1,4 +1,4 @@
define(['libraryBrowser'], function (libraryBrowser) { define(['libraryBrowser', 'cardBuilder'], function (libraryBrowser, cardBuilder) {
return function (view, params, tabContent) { return function (view, params, tabContent) {
@ -16,7 +16,7 @@
SortOrder: "Ascending", SortOrder: "Ascending",
IncludeItemTypes: "Movie", IncludeItemTypes: "Movie",
Recursive: true, Recursive: true,
Fields: "DateCreated,SyncInfo,ItemCounts", Fields: "DateCreated,SyncInfo,ItemCounts,PrimaryImageAspectRatio",
StartIndex: 0 StartIndex: 0
}, },
view: libraryBrowser.getSavedView(key) || libraryBrowser.getDefaultItemsView('Thumb', 'Thumb') view: libraryBrowser.getSavedView(key) || libraryBrowser.getDefaultItemsView('Thumb', 'Thumb')
@ -55,59 +55,56 @@
var html = ''; var html = '';
var viewStyle = self.getCurrentViewStyle(); var viewStyle = self.getCurrentViewStyle();
var elem = context.querySelector('#items');
if (viewStyle == "Thumb") { if (viewStyle == "Thumb") {
html = libraryBrowser.getPosterViewHtml({ cardBuilder.buildCards(result.Items, {
items: result.Items, itemsContainer: elem,
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,
context: 'movies', showTitle: false,
scalable: true,
showItemCounts: true, showItemCounts: true,
centerText: true, centerText: true,
lazy: true,
overlayMoreButton: true overlayMoreButton: true
}); });
} }
else if (viewStyle == "ThumbCard") { else if (viewStyle == "ThumbCard") {
html = libraryBrowser.getPosterViewHtml({ cardBuilder.buildCards(result.Items, {
items: result.Items, itemsContainer: elem,
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,
context: 'movies', showTitle: false,
scalable: true,
showItemCounts: true, showItemCounts: true,
cardLayout: true, centerText: true,
showTitle: true, cardLayout: true
lazy: true
}); });
} }
else if (viewStyle == "PosterCard") { else if (viewStyle == "PosterCard") {
html = libraryBrowser.getPosterViewHtml({ cardBuilder.buildCards(result.Items, {
items: result.Items, itemsContainer: elem,
shape: "portrait", shape: "auto",
context: 'movies', showTitle: false,
scalable: true,
showItemCounts: true, showItemCounts: true,
lazy: true, centerText: true,
cardLayout: true, cardLayout: true
showTitle: true
}); });
} }
else if (viewStyle == "Poster") { else if (viewStyle == "Poster") {
html = libraryBrowser.getPosterViewHtml({ cardBuilder.buildCards(result.Items, {
items: result.Items, itemsContainer: elem,
shape: "portrait", shape: "auto",
context: 'movies', showTitle: false,
centerText: true, scalable: true,
showItemCounts: true, showItemCounts: true,
lazy: true, centerText: true,
overlayMoreButton: true overlayMoreButton: true
}); });
} }
var elem = context.querySelector('#items');
elem.innerHTML = html;
ImageLoader.lazyChildren(elem);
libraryBrowser.saveQueryValues(getSavedQueryKey(), query); libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();

View file

@ -1,14 +1,4 @@
define(['libraryBrowser', 'components/categorysyncbuttons', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser, categorysyncbuttons) { define(['libraryBrowser', 'components/categorysyncbuttons', 'cardBuilder', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser, categorysyncbuttons, cardBuilder) {
function getView() {
return 'Poster';
}
function getResumeView() {
return 'Thumb';
}
function enableScrollX() { function enableScrollX() {
return browserInfo.mobile && AppInfo.enableAppLayouts; return browserInfo.mobile && AppInfo.enableAppLayouts;
@ -37,39 +27,13 @@
ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) { ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) {
var view = getView(); var container = page.querySelector('#recentlyAddedItems');
var html = ''; cardBuilder.buildCards(items, {
itemsContainer: container,
if (view == 'PosterCard') { shape: getPortraitShape(),
scalable: true,
html += libraryBrowser.getPosterViewHtml({ overlayPlayButton: true
items: items, });
lazy: true,
shape: getPortraitShape(),
overlayText: false,
showTitle: true,
showYear: true,
cardLayout: true,
showDetailsMenu: true
});
} else if (view == 'Poster') {
html += libraryBrowser.getPosterViewHtml({
items: items,
shape: getPortraitShape(),
centerText: true,
lazy: true,
overlayText: false,
showDetailsMenu: true,
overlayPlayButton: true
});
}
var recentlyAddedItems = page.querySelector('#recentlyAddedItems');
recentlyAddedItems.innerHTML = html;
ImageLoader.lazyChildren(recentlyAddedItems);
}); });
} }
@ -101,40 +65,14 @@
page.querySelector('#resumableSection').classList.add('hide'); page.querySelector('#resumableSection').classList.add('hide');
} }
var view = getResumeView(); var container = page.querySelector('#resumableItems');
var html = ''; cardBuilder.buildCards(result.Items, {
itemsContainer: container,
if (view == 'ThumbCard') { preferThumb: true,
shape: getThumbShape(),
html += libraryBrowser.getPosterViewHtml({ scalable: true,
items: result.Items, overlayPlayButton: true
preferThumb: true, });
shape: getThumbShape(),
showTitle: true,
showYear: true,
lazy: true,
cardLayout: true,
showDetailsMenu: true
});
} else if (view == 'Thumb') {
html += libraryBrowser.getPosterViewHtml({
items: result.Items,
preferThumb: true,
shape: getThumbShape(),
overlayText: true,
showTitle: false,
lazy: true,
showDetailsMenu: true,
overlayPlayButton: true
});
}
var resumableItems = page.querySelector('#resumableItems');
resumableItems.innerHTML = html;
ImageLoader.lazyChildren(resumableItems);
}); });
} }
@ -167,38 +105,17 @@
html += '<h1 class="listHeader">' + title + '</h1>'; html += '<h1 class="listHeader">' + title + '</h1>';
if (enableScrollX()) { if (enableScrollX()) {
html += '<div is="emby-itemscontainer" class="hiddenScrollX">'; html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">';
} else { } else {
html += '<div is="emby-itemscontainer">'; html += '<div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
} }
var view = getView(); html += cardBuilder.getCardsHtml(recommendation.Items, {
shape: getPortraitShape(),
scalable: true,
overlayPlayButton: true
});
if (view == 'PosterCard') {
html += libraryBrowser.getPosterViewHtml({
items: recommendation.Items,
lazy: true,
shape: getPortraitShape(),
overlayText: false,
showTitle: true,
showYear: true,
cardLayout: true,
showDetailsMenu: true
});
} else if (view == 'Poster') {
html += libraryBrowser.getPosterViewHtml({
items: recommendation.Items,
shape: getPortraitShape(),
centerText: true,
lazy: true,
showDetailsMenu: true,
overlayPlayButton: true
});
}
html += '</div>'; html += '</div>';
html += '</div>'; html += '</div>';
@ -244,8 +161,10 @@
for (var i = 0, length = containers.length; i < length; i++) { for (var i = 0, length = containers.length; i < length; i++) {
if (enableScrollX()) { if (enableScrollX()) {
containers[i].classList.add('hiddenScrollX'); containers[i].classList.add('hiddenScrollX');
containers[i].classList.remove('verticalItemsContainer');
} else { } else {
containers[i].classList.remove('hiddenScrollX'); containers[i].classList.remove('hiddenScrollX');
containers[i].classList.add('verticalItemsContainer');
} }
} }
} }

View file

@ -1,4 +1,4 @@
define(['libraryBrowser'], function (libraryBrowser) { define(['libraryBrowser', 'cardBuilder'], function (libraryBrowser, cardBuilder) {
// The base query options // The base query options
var data = {}; var data = {};
@ -15,7 +15,7 @@
SortOrder: "Ascending", SortOrder: "Ascending",
IncludeItemTypes: "Movie", IncludeItemTypes: "Movie",
Recursive: true, Recursive: true,
Fields: "DateCreated,ItemCounts", Fields: "DateCreated,ItemCounts,PrimaryImageAspectRatio",
StartIndex: 0 StartIndex: 0
} }
}; };
@ -42,24 +42,18 @@
promise.then(function (result) { promise.then(function (result) {
var html = ''; var elem = context.querySelector('#items');
cardBuilder.buildCards(result.Items, {
html += libraryBrowser.getPosterViewHtml({ itemsContainer: elem,
items: result.Items,
shape: "backdrop", shape: "backdrop",
showTitle: false,
context: 'movies',
preferThumb: true, preferThumb: true,
showTitle: false,
scalable: true,
showItemCounts: true, showItemCounts: true,
centerText: true, centerText: true,
lazy: true overlayMoreButton: true
}); });
var elem = context.querySelector('#items');
elem.innerHTML = html;
ImageLoader.lazyChildren(elem);
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
}); });
} }

View file

@ -1,4 +1,4 @@
define(['events', 'libraryBrowser', 'imageLoader'], function (events, libraryBrowser, imageLoader) { define(['events', 'libraryBrowser', 'imageLoader', 'cardBuilder'], function (events, libraryBrowser, imageLoader, cardBuilder) {
return function (view, params, tabContent) { return function (view, params, tabContent) {
@ -65,7 +65,7 @@
filterButton: false filterButton: false
}); });
var html = LibraryBrowser.getPosterViewHtml({ var html = cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
shape: "square", shape: "square",
context: 'folders', context: 'folders',

View file

@ -1,4 +1,4 @@
define(['libraryBrowser', 'listView', 'emby-itemscontainer'], function (libraryBrowser, listView) { define(['libraryBrowser', 'listView', 'cardBuilder', 'emby-itemscontainer'], function (libraryBrowser, listView, cardBuilder) {
return function (view, params) { return function (view, params) {
@ -160,7 +160,7 @@
} }
// Poster // Poster
html = libraryBrowser.getPosterViewHtml(posterOptions); html = cardBuilder.getCardsHtml(posterOptions);
} }
var elem = view.querySelector('#items'); var elem = view.querySelector('#items');

View file

@ -1,4 +1,4 @@
define(['libraryBrowser', 'appSettings', 'components/groupedcards', 'scrollStyles', 'emby-button', 'paper-icon-button-light', 'emby-itemscontainer'], function (LibraryBrowser, appSettings, groupedcards) { define(['libraryBrowser', 'cardBuilder', 'appSettings', 'components/groupedcards', 'scrollStyles', 'emby-button', 'paper-icon-button-light', 'emby-itemscontainer'], function (LibraryBrowser, cardBuilder, appSettings, groupedcards) {
function getUserViews(userId) { function getUserViews(userId) {
@ -302,9 +302,9 @@
html += '</div>'; html += '</div>';
html += '<div is="emby-itemscontainer" class="itemsContainer">'; html += '<div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: items, items: items,
preferThumb: true, preferThumb: true,
shape: 'backdrop', shape: 'backdrop',
@ -348,9 +348,9 @@
if (scrollX) { if (scrollX) {
html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">'; html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">';
} else { } else {
html += '<div is="emby-itemscontainer" class="itemsContainer">'; html += '<div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
} }
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: items, items: items,
shape: getPortraitShape(), shape: getPortraitShape(),
showUnplayedIndicator: false, showUnplayedIndicator: false,
@ -390,10 +390,10 @@
if (scrollX) { if (scrollX) {
html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">'; html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">';
} else { } else {
html += '<div is="emby-itemscontainer" class="itemsContainer">'; html += '<div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
} }
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: items, items: items,
preferThumb: true, preferThumb: true,
shape: getThumbShape(), shape: getThumbShape(),
@ -429,8 +429,9 @@
if (result.Items.length) { if (result.Items.length) {
html += '<h1 class="listHeader">' + Globalize.translate('HeaderLatestChannelMedia') + '</h1>'; html += '<h1 class="listHeader">' + Globalize.translate('HeaderLatestChannelMedia') + '</h1>';
html += '<div is="emby-itemscontainer" class="itemsContainer">'; html += '<div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
html += LibraryBrowser.getPosterViewHtml({
html += cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
shape: 'auto', shape: 'auto',
showTitle: true, showTitle: true,
@ -473,9 +474,9 @@
if (scrollX) { if (scrollX) {
html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer homeTopViews">'; html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer homeTopViews">';
} else { } else {
html += '<div is="emby-itemscontainer" class="itemsContainer homeTopViews">'; html += '<div is="emby-itemscontainer" class="itemsContainer homeTopViews verticalItemsContainer">';
} }
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: items, items: items,
shape: scrollX ? 'overflowBackdrop' : shape, shape: scrollX ? 'overflowBackdrop' : shape,
showTitle: showTitles, showTitle: showTitles,
@ -532,9 +533,9 @@
if (enableScrollX()) { if (enableScrollX()) {
html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">'; html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">';
} else { } else {
html += '<div is="emby-itemscontainer" class="itemsContainer">'; html += '<div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
} }
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
preferThumb: true, preferThumb: true,
shape: getThumbShape(), shape: getThumbShape(),
@ -576,9 +577,9 @@
if (enableScrollX()) { if (enableScrollX()) {
html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">'; html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">';
} else { } else {
html += '<div is="emby-itemscontainer" class="itemsContainer">'; html += '<div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
} }
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
preferThumb: true, preferThumb: true,
shape: getThumbShape(), shape: getThumbShape(),
@ -656,8 +657,8 @@
html += '<a href="channelitems.html?id=' + channel.Id + '" class="clearLink" style="margin-left:2em;"><button is="emby-button" type="button" class="raised more mini"><span>' + Globalize.translate('ButtonMore') + '</span></button></a>'; html += '<a href="channelitems.html?id=' + channel.Id + '" class="clearLink" style="margin-left:2em;"><button is="emby-button" type="button" class="raised more mini"><span>' + Globalize.translate('ButtonMore') + '</span></button></a>';
html += '</div>'; html += '</div>';
html += '<div is="emby-itemscontainer" is="emby-itemscontainer" class="itemsContainer">'; html += '<div is="emby-itemscontainer" is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
shape: 'autohome', shape: 'autohome',
defaultShape: 'square', defaultShape: 'square',
@ -704,9 +705,9 @@
if (enableScrollX()) { if (enableScrollX()) {
html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">'; html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">';
} else { } else {
html += '<div is="emby-itemscontainer" class="itemsContainer">'; html += '<div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
} }
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
shape: enableScrollX() ? 'autooverflow' : 'auto', shape: enableScrollX() ? 'autooverflow' : 'auto',
showTitle: true, showTitle: true,

View file

@ -2789,8 +2789,6 @@ var AppInfo = {};
deps.push('scripts/librarymenu'); deps.push('scripts/librarymenu');
deps.push('css!css/card.css');
console.log('onAppReady - loading dependencies'); console.log('onAppReady - loading dependencies');
require(deps, function (imageLoader, pageObjects) { require(deps, function (imageLoader, pageObjects) {

View file

@ -1,4 +1,4 @@
define(['libraryBrowser'], function (libraryBrowser) { define(['libraryBrowser', 'cardBuilder'], function (libraryBrowser, cardBuilder) {
return function (view, params, tabContent) { return function (view, params, tabContent) {
@ -16,7 +16,7 @@
SortOrder: "Ascending", SortOrder: "Ascending",
IncludeItemTypes: "Series", IncludeItemTypes: "Series",
Recursive: true, Recursive: true,
Fields: "DateCreated,SyncInfo,ItemCounts", Fields: "DateCreated,SyncInfo,ItemCounts,PrimaryImageAspectRatio",
StartIndex: 0 StartIndex: 0
}, },
view: libraryBrowser.getSavedView(key) || libraryBrowser.getDefaultItemsView('Thumb', 'Thumb') view: libraryBrowser.getSavedView(key) || libraryBrowser.getDefaultItemsView('Thumb', 'Thumb')
@ -55,59 +55,56 @@
var html = ''; var html = '';
var viewStyle = self.getCurrentViewStyle(); var viewStyle = self.getCurrentViewStyle();
var elem = context.querySelector('#items');
if (viewStyle == "Thumb") { if (viewStyle == "Thumb") {
html = libraryBrowser.getPosterViewHtml({ cardBuilder.buildCards(result.Items, {
items: result.Items, itemsContainer: elem,
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,
context: 'tv', showTitle: false,
scalable: true,
showItemCounts: true, showItemCounts: true,
centerText: true, centerText: true,
lazy: true,
overlayMoreButton: true overlayMoreButton: true
}); });
} }
else if (viewStyle == "ThumbCard") { else if (viewStyle == "ThumbCard") {
html = libraryBrowser.getPosterViewHtml({ cardBuilder.buildCards(result.Items, {
items: result.Items, itemsContainer: elem,
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,
context: 'tv', showTitle: false,
scalable: true,
showItemCounts: true, showItemCounts: true,
cardLayout: true, centerText: true,
showTitle: true, cardLayout: true
lazy: true
}); });
} }
else if (viewStyle == "PosterCard") { else if (viewStyle == "PosterCard") {
html = libraryBrowser.getPosterViewHtml({ cardBuilder.buildCards(result.Items, {
items: result.Items, itemsContainer: elem,
shape: "portrait", shape: "auto",
context: 'tv', showTitle: false,
scalable: true,
showItemCounts: true, showItemCounts: true,
lazy: true, centerText: true,
cardLayout: true, cardLayout: true
showTitle: true
}); });
} }
else if (viewStyle == "Poster") { else if (viewStyle == "Poster") {
html = libraryBrowser.getPosterViewHtml({ cardBuilder.buildCards(result.Items, {
items: result.Items, itemsContainer: elem,
shape: "portrait", shape: "auto",
context: 'tv', showTitle: false,
centerText: true, scalable: true,
showItemCounts: true, showItemCounts: true,
lazy: true, centerText: true,
overlayMoreButton: true overlayMoreButton: true
}); });
} }
var elem = context.querySelector('#items');
elem.innerHTML = html;
ImageLoader.lazyChildren(elem);
libraryBrowser.saveQueryValues(getSavedQueryKey(), query); libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
@ -121,7 +118,7 @@
return getPageData(tabContent).view; return getPageData(tabContent).view;
}; };
self.setCurrentViewStyle = function(viewStyle) { self.setCurrentViewStyle = function (viewStyle) {
getPageData(tabContent).view = viewStyle; getPageData(tabContent).view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
fullyReload(); fullyReload();

View file

@ -1,4 +1,4 @@
define(['components/categorysyncbuttons', 'components/groupedcards'], function (categorysyncbuttons, groupedcards) { define(['components/categorysyncbuttons', 'components/groupedcards', 'cardBuilder'], function (categorysyncbuttons, groupedcards, cardBuilder) {
function getView() { function getView() {
@ -35,7 +35,7 @@
if (view == 'ThumbCard') { if (view == 'ThumbCard') {
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: items, items: items,
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,
@ -51,7 +51,7 @@
} else if (view == 'Thumb') { } else if (view == 'Thumb') {
html += LibraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: items, items: items,
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,

View file

@ -1,19 +1,9 @@
define(['libraryBrowser', 'components/categorysyncbuttons', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser, categorysyncbuttons) { define(['libraryBrowser', 'components/categorysyncbuttons', 'cardBuilder', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser, categorysyncbuttons, cardBuilder) {
return function (view, params) { return function (view, params) {
var self = this; var self = this;
function getView() {
return 'Thumb';
}
function getResumeView() {
return 'Poster';
}
function reload() { function reload() {
Dashboard.showLoadingMsg(); Dashboard.showLoadingMsg();
@ -43,41 +33,19 @@
view.querySelector('.noNextUpItems').classList.remove('hide'); view.querySelector('.noNextUpItems').classList.remove('hide');
} }
var viewStyle = getView(); var container = view.querySelector('#nextUpItems');
var html = ''; cardBuilder.buildCards(result.Items, {
itemsContainer: container,
preferThumb: true,
shape: "backdrop",
scalable: true,
showTitle: true,
showParentTitle: true,
overlayText: false,
centerText: true,
overlayPlayButton: AppInfo.enableAppLayouts
});
if (viewStyle == 'ThumbCard') {
html += libraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "backdrop",
showTitle: true,
preferThumb: true,
showParentTitle: true,
lazy: true,
cardLayout: true,
showDetailsMenu: true
});
} else if (viewStyle == 'Thumb') {
html += libraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "backdrop",
showTitle: true,
showParentTitle: true,
overlayText: false,
lazy: true,
preferThumb: true,
showDetailsMenu: true,
centerText: true,
overlayPlayButton: AppInfo.enableAppLayouts
});
}
var elem = view.querySelector('#nextUpItems');
elem.innerHTML = html;
ImageLoader.lazyChildren(elem);
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
}); });
} }
@ -120,50 +88,33 @@
view.querySelector('#resumableSection').classList.add('hide'); view.querySelector('#resumableSection').classList.add('hide');
} }
var viewStyle = getResumeView(); var container = view.querySelector('#resumableItems');
var html = ''; cardBuilder.buildCards(result.Items, {
itemsContainer: container,
if (viewStyle == 'PosterCard') { preferThumb: true,
shape: getThumbShape(),
html += libraryBrowser.getPosterViewHtml({ scalable: true,
items: result.Items, showTitle: true,
shape: getThumbShape(), showParentTitle: true,
showTitle: true, overlayText: false,
showParentTitle: true, centerText: true,
lazy: true, overlayPlayButton: true
cardLayout: true, });
showDetailsMenu: true,
preferThumb: true
});
} else if (viewStyle == 'Poster') {
html += libraryBrowser.getPosterViewHtml({
items: result.Items,
shape: getThumbShape(),
showTitle: true,
showParentTitle: true,
lazy: true,
showDetailsMenu: true,
overlayPlayButton: true,
preferThumb: true,
centerText: true
});
}
var elem = view.querySelector('#resumableItems');
elem.innerHTML = html;
ImageLoader.lazyChildren(elem);
}); });
} }
self.initTab = function () { self.initTab = function () {
var tabContent = self.tabContent; var tabContent = self.tabContent;
var resumableItemsContainer = tabContent.querySelector('#resumableItems');
if (enableScrollX()) { if (enableScrollX()) {
tabContent.querySelector('#resumableItems').classList.add('hiddenScrollX'); resumableItemsContainer.classList.add('hiddenScrollX');
resumableItemsContainer.classList.remove('verticalItemsContainer');
} else { } else {
tabContent.querySelector('#resumableItems').classList.remove('hiddenScrollX'); resumableItemsContainer.classList.remove('hiddenScrollX');
resumableItemsContainer.classList.add('verticalItemsContainer');
} }
categorysyncbuttons.init(tabContent); categorysyncbuttons.init(tabContent);

View file

@ -1,4 +1,4 @@
define(['libraryBrowser'], function (libraryBrowser) { define(['libraryBrowser', 'cardBuilder'], function (libraryBrowser, cardBuilder) {
// The base query options // The base query options
var data = {}; var data = {};
@ -15,7 +15,7 @@
SortOrder: "Ascending", SortOrder: "Ascending",
IncludeItemTypes: "Series", IncludeItemTypes: "Series",
Recursive: true, Recursive: true,
Fields: "DateCreated,ItemCounts", Fields: "DateCreated,ItemCounts,PrimaryImageAspectRatio",
StartIndex: 0 StartIndex: 0
} }
}; };
@ -42,24 +42,18 @@
promise.then(function (result) { promise.then(function (result) {
var html = ''; var elem = context.querySelector('#items');
cardBuilder.buildCards(result.Items, {
html += libraryBrowser.getPosterViewHtml({ itemsContainer: elem,
items: result.Items,
shape: "backdrop", shape: "backdrop",
showTitle: false,
context: 'tv',
preferThumb: true, preferThumb: true,
showTitle: false,
scalable: true,
showItemCounts: true, showItemCounts: true,
centerText: true, centerText: true,
lazy: true overlayMoreButton: true
}); });
var elem = context.querySelector('#items');
elem.innerHTML = html;
ImageLoader.lazyChildren(elem);
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
}); });
} }

View file

@ -1,4 +1,4 @@
define(['datetime', 'libraryBrowser', 'scrollStyles', 'emby-itemscontainer'], function (datetime, libraryBrowser) { define(['datetime', 'libraryBrowser', 'cardBuilder', 'scrollStyles', 'emby-itemscontainer'], function (datetime, libraryBrowser, cardBuilder) {
function getUpcomingPromise(context, params) { function getUpcomingPromise(context, params) {
@ -104,10 +104,10 @@
if (enableScrollX()) { if (enableScrollX()) {
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">'; html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">';
} else { } else {
html += '<div is="emby-itemscontainer" class="itemsContainer">'; html += '<div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">';
} }
html += libraryBrowser.getPosterViewHtml({ html += cardBuilder.getCardsHtml({
items: group.items, items: group.items,
showLocationTypeIndicator: false, showLocationTypeIndicator: false,
shape: getThumbShape(), shape: getThumbShape(),

View file

@ -5,7 +5,7 @@
<div class="listTopPaging"> <div class="listTopPaging">
</div> </div>
</div> </div>
<div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer" style="text-align:center;"></div> <div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer verticalItemsContainer" style="text-align:center;"></div>
</div> </div>
</div> </div>

View file

@ -34,7 +34,7 @@
<span>${ButtonSync}</span> <span>${ButtonSync}</span>
</button> </button>
</div> </div>
<div is="emby-itemscontainer" id="nextUpItems" class="itemsContainer"> <div is="emby-itemscontainer" id="nextUpItems" class="itemsContainer verticalItemsContainer">
</div> </div>
</div> </div>
<p class="noNextUpItems" style="display: none;">${NoNextUpItemsMessage}</p> <p class="noNextUpItems" style="display: none;">${NoNextUpItemsMessage}</p>
@ -48,7 +48,7 @@
<span>${ButtonSync}</span> <span>${ButtonSync}</span>
</button> </button>
</div> </div>
<div is="emby-itemscontainer" id="latestEpisodes" class="itemsContainer"> <div is="emby-itemscontainer" id="latestEpisodes" class="itemsContainer verticalItemsContainer">
</div> </div>
</div> </div>
</div> </div>
@ -86,7 +86,7 @@
<button is="paper-icon-button-light" class="btnSort autoSize" title="${ButtonSort}"><i class="md-icon">sort_by_alpha</i></button> <button is="paper-icon-button-light" class="btnSort autoSize" title="${ButtonSort}"><i class="md-icon">sort_by_alpha</i></button>
<button is="paper-icon-button-light" class="btnFilter autoSize" title="${ButtonFilter}"><i class="md-icon">filter_list</i></button> <button is="paper-icon-button-light" class="btnFilter autoSize" title="${ButtonFilter}"><i class="md-icon">filter_list</i></button>
</div> </div>
<div is="emby-itemscontainer" class="itemsContainer"> <div is="emby-itemscontainer" class="itemsContainer verticalItemsContainer">
</div> </div>
<div style="text-align: center; display: flex; flex-wrap: wrap; align-items: center; justify-content: center;padding:.7em .5em;"> <div style="text-align: center; display: flex; flex-wrap: wrap; align-items: center; justify-content: center;padding:.7em .5em;">
<div class="paging"></div> <div class="paging"></div>
@ -96,14 +96,14 @@
<div style="text-align: center; display: flex; align-items: center; justify-content: center;"> <div style="text-align: center; display: flex; align-items: center; justify-content: center;">
<button is="paper-icon-button-light" class="btnSelectView autoSize" title="${ButtonSelectView}"><i class="md-icon">view_comfy</i></button> <button is="paper-icon-button-light" class="btnSelectView autoSize" title="${ButtonSelectView}"><i class="md-icon">view_comfy</i></button>
</div> </div>
<div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer"></div> <div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer verticalItemsContainer"></div>
</div> </div>
<div class="pageTabContent ehsContent" id="studiosTab" data-index="6"> <div class="pageTabContent ehsContent" id="studiosTab" data-index="6">
<div class="viewSettings"> <div class="viewSettings">
<div class="listTopPaging"> <div class="listTopPaging">
</div> </div>
</div> </div>
<div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer" style="text-align: center;"></div> <div is="emby-itemscontainer" id="items" class="itemsContainer paddedItemsContainer verticalItemsContainer" style="text-align: center;"></div>
</div> </div>
<div data-role="content"> <div data-role="content">