mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
add column sorting to reports
This commit is contained in:
parent
67f909cd87
commit
fce65d5942
8 changed files with 246 additions and 87 deletions
|
@ -776,6 +776,10 @@ a.itemTag:hover {
|
||||||
max-width: 950px;
|
max-width: 950px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.detailPageContent {
|
||||||
|
max-width: 930px;
|
||||||
|
}
|
||||||
|
|
||||||
.primaryDetailPageContent {
|
.primaryDetailPageContent {
|
||||||
max-width: 850px;
|
max-width: 850px;
|
||||||
}
|
}
|
||||||
|
@ -788,9 +792,6 @@ a.itemTag:hover {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media all and (min-width: 1920px) {
|
|
||||||
}
|
|
||||||
|
|
||||||
.detailPageParentLink {
|
.detailPageParentLink {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
|
@ -308,14 +308,6 @@
|
||||||
|
|
||||||
@media all and (min-width: 1920px) {
|
@media all and (min-width: 1920px) {
|
||||||
|
|
||||||
.portraitPosterItem {
|
|
||||||
width: 160px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portraitPosterItem .posterItemImage {
|
|
||||||
height: 240px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.squarePosterItem {
|
.squarePosterItem {
|
||||||
width: 190px;
|
width: 190px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,10 +160,10 @@
|
||||||
<p class="itemTags"></p>
|
<p class="itemTags"></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="collectionItems"></div>
|
||||||
<div id="childrenCollapsible" class="hide detailSection">
|
<div id="childrenCollapsible" class="hide detailSection">
|
||||||
<div class="detailSectionHeader" style="position: relative;">
|
<div class="detailSectionHeader">
|
||||||
<span id="childrenTitle"></span>
|
<span id="childrenTitle"></span>
|
||||||
<a id="btnEditCollectionTitles" href="#" data-role="button" data-icon="edit" data-iconpos="notext" data-inline="true" style="display: none; position: absolute; right: 0; top: 6px; margin-top: 0; margin-bottom: 0;">Edit</a>
|
|
||||||
</div>
|
</div>
|
||||||
<div id="childrenContent" class="detailSectionContent"></div>
|
<div id="childrenContent" class="detailSectionContent"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -287,7 +287,17 @@
|
||||||
$('#fldYear', page).show();
|
$('#fldYear', page).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "AdultVideo" || item.Type == "Series" || item.Type == "Game" || item.Type == "BoxSet" || item.Type == "Person" || item.Type == "Book") {
|
if (item.Type == "Movie" ||
|
||||||
|
item.Type == "Trailer" ||
|
||||||
|
item.Type == "AdultVideo" ||
|
||||||
|
item.Type == "Series" ||
|
||||||
|
item.Type == "Game" ||
|
||||||
|
item.Type == "BoxSet" ||
|
||||||
|
item.Type == "Person" ||
|
||||||
|
item.Type == "Book" ||
|
||||||
|
item.Type == "MusicAlbum" ||
|
||||||
|
item.Type == "MusicArtist") {
|
||||||
|
|
||||||
$('#btnIdentify', page).show();
|
$('#btnIdentify', page).show();
|
||||||
} else {
|
} else {
|
||||||
$('#btnIdentify', page).hide();
|
$('#btnIdentify', page).hide();
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!item.BackdropImageTags || !item.BackdropImageTags.length) {
|
if (!item.BackdropImageTags || !item.BackdropImageTags.length) {
|
||||||
if (item.Type !== "Episode" && item.Type !== "Season" && item.MediaType !== "Audio" && item.Type !== "Channel") {
|
if (item.Type !== "Episode" && item.Type !== "Season" && item.MediaType !== "Audio" && item.Type !== "Channel" && item.Type !== "MusicAlbum") {
|
||||||
htmlName += '<img src="css/images/editor/missingbackdrop.png" title="Missing backdrop image." />';
|
htmlName += '<img src="css/images/editor/missingbackdrop.png" title="Missing backdrop image." />';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,13 +36,6 @@
|
||||||
$('#editButtonContainer', page).hide();
|
$('#editButtonContainer', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user.Configuration.IsAdministrator && item.Type == "BoxSet") {
|
|
||||||
$('#btnEditCollectionTitles', page).show().attr('href', 'editcollectionitems.html?id=' + item.Id);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$('#btnEditCollectionTitles', page).hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (MediaPlayer.canPlay(item, user)) {
|
if (MediaPlayer.canPlay(item, user)) {
|
||||||
|
|
||||||
var url = MediaPlayer.getPlayUrl(item);
|
var url = MediaPlayer.getPlayUrl(item);
|
||||||
|
@ -184,8 +177,15 @@
|
||||||
|
|
||||||
function setInitialCollapsibleState(page, item, context, user) {
|
function setInitialCollapsibleState(page, item, context, user) {
|
||||||
|
|
||||||
|
$('.collectionItems', page).empty();
|
||||||
|
|
||||||
if (item.IsFolder) {
|
if (item.IsFolder) {
|
||||||
$('#childrenCollapsible', page).removeClass('hide');
|
|
||||||
|
if (item.Type == "BoxSet") {
|
||||||
|
$('#childrenCollapsible', page).addClass('hide');
|
||||||
|
} else {
|
||||||
|
$('#childrenCollapsible', page).removeClass('hide');
|
||||||
|
}
|
||||||
renderChildren(page, item, user);
|
renderChildren(page, item, user);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -579,7 +579,7 @@
|
||||||
|
|
||||||
var html = '';
|
var html = '';
|
||||||
|
|
||||||
if (item.Type == "Series" || item.Type == "BoxSet") {
|
if (item.Type == "Series") {
|
||||||
html = LibraryBrowser.getPosterViewHtml({
|
html = LibraryBrowser.getPosterViewHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
shape: "portrait",
|
shape: "portrait",
|
||||||
|
@ -608,9 +608,20 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$('#childrenContent', page).html(html).createPosterItemHoverMenu();
|
$('#childrenContent', page).html(html).createPosterItemHoverMenu();
|
||||||
|
|
||||||
|
if (item.Type == "BoxSet") {
|
||||||
|
|
||||||
|
var collectionItemTypes = [
|
||||||
|
{ name: 'Movies', type: 'Movie' },
|
||||||
|
{ name: 'Series', type: 'Series' },
|
||||||
|
{ name: 'Albums', type: 'MusicAlbum' },
|
||||||
|
{ name: 'Games', type: 'Game' },
|
||||||
|
{ name: 'Books', type: 'Book' }
|
||||||
|
];
|
||||||
|
|
||||||
|
renderCollectionItems(page, collectionItemTypes, result.Items, user);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -620,9 +631,6 @@
|
||||||
else if (item.Type == "Series") {
|
else if (item.Type == "Series") {
|
||||||
$('#childrenTitle', page).html('Seasons');
|
$('#childrenTitle', page).html('Seasons');
|
||||||
}
|
}
|
||||||
else if (item.Type == "BoxSet") {
|
|
||||||
$('#childrenTitle', page).html('Titles');
|
|
||||||
}
|
|
||||||
else if (item.Type == "MusicAlbum") {
|
else if (item.Type == "MusicAlbum") {
|
||||||
$('#childrenTitle', page).html('Tracks');
|
$('#childrenTitle', page).html('Tracks');
|
||||||
}
|
}
|
||||||
|
@ -633,6 +641,82 @@
|
||||||
$('#childrenTitle', page).html('Items');
|
$('#childrenTitle', page).html('Items');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderCollectionItems(page, types, items, user) {
|
||||||
|
|
||||||
|
for (var i = 0, length = types.length; i < length; i++) {
|
||||||
|
|
||||||
|
var type = types[i];
|
||||||
|
|
||||||
|
var typeItems = items.filter(function (curr) {
|
||||||
|
|
||||||
|
return curr.Type == type.type;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!typeItems.length) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderCollectionItemType(page, type, typeItems, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
var otherType = { name: 'Other Items' };
|
||||||
|
|
||||||
|
var otherTypeItems = items.filter(function (curr) {
|
||||||
|
|
||||||
|
return !types.filter(function(t) {
|
||||||
|
|
||||||
|
return t.type == curr.Type;
|
||||||
|
|
||||||
|
}).length;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
if (otherTypeItems.length) {
|
||||||
|
renderCollectionItemType(page, otherType, otherTypeItems, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!items.length) {
|
||||||
|
renderCollectionItemType(page, {name: 'Titles'}, items, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.collectionItems', page).trigger('create').createPosterItemHoverMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderCollectionItemType(page, type, items, user) {
|
||||||
|
|
||||||
|
var html = '';
|
||||||
|
|
||||||
|
html += '<div class="detailSection">';
|
||||||
|
|
||||||
|
html += '<div class="detailSectionHeader" style="position: relative;">';
|
||||||
|
html += '<span>' + type.name + '</span>';
|
||||||
|
|
||||||
|
if (user.Configuration.IsAdministrator) {
|
||||||
|
html += '<a href="editcollectionitems.html?id=' + currentItem.Id + '" data-role="button" data-icon="edit" data-iconpos="notext" data-inline="true" style="position: absolute; right: 0; top: 6px; margin-top: 0; margin-bottom: 0;">Edit</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
html += '</div>';
|
||||||
|
|
||||||
|
html += '<div class="detailSectionContent">';
|
||||||
|
|
||||||
|
var shape = type.type == 'MusicAlbum' ? 'square' : 'portrait';
|
||||||
|
|
||||||
|
html += LibraryBrowser.getPosterViewHtml({
|
||||||
|
items: items,
|
||||||
|
shape: shape,
|
||||||
|
useAverageAspectRatio: true,
|
||||||
|
showTitle: true,
|
||||||
|
centerText: true
|
||||||
|
});
|
||||||
|
html += '</div>';
|
||||||
|
|
||||||
|
html += '</div>';
|
||||||
|
|
||||||
|
$('.collectionItems', page).append(html);
|
||||||
|
}
|
||||||
|
|
||||||
function renderUserDataIcons(page, item) {
|
function renderUserDataIcons(page, item) {
|
||||||
$('.userDataIcons', page).html(LibraryBrowser.getUserDataIconsHtml(item));
|
$('.userDataIcons', page).html(LibraryBrowser.getUserDataIconsHtml(item));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
(function ($, document, window) {
|
(function ($, document, window) {
|
||||||
|
|
||||||
|
var defaultSortBy = "SortName";
|
||||||
|
|
||||||
// The base query options
|
// The base query options
|
||||||
var query = {
|
var query = {
|
||||||
|
|
||||||
SortBy: "SeriesSortName,SortName",
|
SortBy: defaultSortBy,
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "MediaStreams,DateCreated,Settings,Studios",
|
Fields: "MediaStreams,DateCreated,Settings,Studios",
|
||||||
|
@ -21,21 +23,22 @@
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
{},
|
{},
|
||||||
{ name: 'Series' },
|
{ name: 'Series', sortField: 'SeriesSortName,SortName' },
|
||||||
{ name: 'Season' },
|
{ name: 'Season', sortField: 'SortName' },
|
||||||
{ name: 'Date Added' }
|
{ name: 'Date Added', sortField: 'DateCreated,SortName' }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
case 'Series':
|
case 'Series':
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
{},
|
{},
|
||||||
{ name: 'Name' },
|
{ name: 'Name', sortField: 'SortName' },
|
||||||
{ name: 'Network' },
|
{ name: 'Network', sortField: 'Studio,SortName' },
|
||||||
{ name: 'Date Added' },
|
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||||
{ name: 'Year' },
|
{ name: 'Year', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||||
{ name: 'Rating' },
|
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||||
{ name: 'Runtime' },
|
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||||
|
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||||
{ name: 'Trailers' },
|
{ name: 'Trailers' },
|
||||||
{ name: 'Specials' }
|
{ name: 'Specials' }
|
||||||
];
|
];
|
||||||
|
@ -44,12 +47,13 @@
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
{},
|
{},
|
||||||
{ name: 'Name' },
|
{ name: 'Name', sortField: 'SortName' },
|
||||||
{ name: 'Game System' },
|
{ name: 'Game System', sortField: 'GameSystem,SortName' },
|
||||||
{ name: 'Date Added' },
|
{ name: 'Date Added', sortField: 'DateCreated,GameSystem,SortName' },
|
||||||
{ name: 'Release Date' },
|
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,GameSystem,SortName' },
|
||||||
{ name: 'Rating' },
|
{ name: 'Parental Rating', sortField: 'OfficialRating,GameSystem,SortName' },
|
||||||
{ name: 'Players' },
|
{ name: 'Community Rating', sortField: 'CommunityRating,GameSystem,SortName' },
|
||||||
|
{ name: 'Players', sortField: 'Players,GameSystem,SortName' },
|
||||||
{ name: 'Trailers' }
|
{ name: 'Trailers' }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -57,13 +61,14 @@
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
{},
|
{},
|
||||||
{ name: 'Album Artist' },
|
{ name: 'Album Artist', sortField: 'AlbumArtist,SortName' },
|
||||||
{ name: 'Album' },
|
{ name: 'Album', sortField: 'Album,SortName' },
|
||||||
{ name: 'Track' },
|
{ name: 'Disc', sortField: 'Album,SortName' },
|
||||||
{ name: 'Name' },
|
{ name: 'Track', sortField: 'Album,SortName' },
|
||||||
{ name: 'Date Added' },
|
{ name: 'Name', sortField: 'Name' },
|
||||||
{ name: 'Release Date' },
|
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||||
{ name: 'Runtime' },
|
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||||
|
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||||
{ name: 'Audio' },
|
{ name: 'Audio' },
|
||||||
{ name: 'Embedded Image' }
|
{ name: 'Embedded Image' }
|
||||||
];
|
];
|
||||||
|
@ -72,12 +77,13 @@
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
{},
|
{},
|
||||||
{ name: 'Series' },
|
{ name: 'Series', sortField: 'SeriesSortName,SortName' },
|
||||||
{ name: 'Season' },
|
{ name: 'Season' },
|
||||||
{ name: 'Name' },
|
{ name: 'Name', sortField: 'SortName' },
|
||||||
{ name: 'Date Added' },
|
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||||
{ name: 'Release Date' },
|
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||||
{ name: 'Runtime' },
|
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||||
|
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||||
{ name: 'Video' },
|
{ name: 'Video' },
|
||||||
{ name: 'Audio' },
|
{ name: 'Audio' },
|
||||||
{ name: 'Subtitles' }
|
{ name: 'Subtitles' }
|
||||||
|
@ -87,10 +93,11 @@
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
{},
|
{},
|
||||||
{ name: 'Name' },
|
{ name: 'Name', sortField: 'SortName' },
|
||||||
{ name: 'Date Added' },
|
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||||
{ name: 'Release Date' },
|
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||||
{ name: 'Rating' },
|
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||||
|
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||||
{ name: 'Trailers' }
|
{ name: 'Trailers' }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -99,41 +106,44 @@
|
||||||
return [
|
return [
|
||||||
{},
|
{},
|
||||||
{ name: 'Series' },
|
{ name: 'Series' },
|
||||||
{ name: 'Name' },
|
{ name: 'Name', sortField: 'SortName' },
|
||||||
{ name: 'Date Added' },
|
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||||
{ name: 'Release Date' },
|
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||||
{ name: 'Rating' }
|
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||||
|
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
case 'MusicArtist':
|
case 'MusicArtist':
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
{},
|
{},
|
||||||
{ name: 'Name' },
|
{ name: 'Name', sortField: 'SortName' },
|
||||||
{ name: 'Date Added' }
|
{ name: 'Date Added', sortField: 'DateCreated,SortName' }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
case 'MusicAlbum':
|
case 'MusicAlbum':
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
{},
|
{},
|
||||||
{ name: 'Album Artist' },
|
{ name: 'Album Artist', sortField: 'AlbumArtist,SortName' },
|
||||||
{ name: 'Name' },
|
{ name: 'Name', sortField: 'SortName' },
|
||||||
{ name: 'Date Added' },
|
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||||
{ name: 'Release Date' },
|
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||||
{ name: 'Rating' },
|
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||||
{ name: 'Runtime' }
|
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||||
|
{ name: 'Runtime', sortField: 'Runtime,SortName' }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
{},
|
{},
|
||||||
{ name: 'Name' },
|
{ name: 'Name', sortField: 'SortName' },
|
||||||
{ name: 'Date Added' },
|
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||||
{ name: 'Release Date' },
|
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||||
{ name: 'Rating' },
|
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||||
{ name: 'Runtime' },
|
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||||
|
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||||
{ name: 'Video' },
|
{ name: 'Video' },
|
||||||
{ name: 'Audio' },
|
{ name: 'Audio' },
|
||||||
{ name: 'Subtitles' },
|
{ name: 'Subtitles' },
|
||||||
|
@ -178,6 +188,11 @@
|
||||||
html += item.Studios.length ? item.Studios[0].Name : ' ';
|
html += item.Studios.length ? item.Studios[0].Name : ' ';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 'Disc':
|
||||||
|
{
|
||||||
|
html += item.ParentIndexNumber == null ? '' : item.ParentIndexNumber;
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 'Track':
|
case 'Track':
|
||||||
{
|
{
|
||||||
html += item.IndexNumber == null ? '' : item.IndexNumber;
|
html += item.IndexNumber == null ? '' : item.IndexNumber;
|
||||||
|
@ -265,7 +280,7 @@
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'Season':
|
case 'Season':
|
||||||
{
|
{
|
||||||
if (item.Type == "Episode") {
|
if (item.Type == "Episode") {
|
||||||
|
@ -281,12 +296,17 @@
|
||||||
html += '<a href="edititemmetadata.html?id=' + item.Id + '">' + LibraryBrowser.getPosterViewDisplayName(item, false, false) + '</a>';
|
html += '<a href="edititemmetadata.html?id=' + item.Id + '">' + LibraryBrowser.getPosterViewDisplayName(item, false, false) + '</a>';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'Rating':
|
case 'Community Rating':
|
||||||
|
{
|
||||||
|
html += item.CommunityRating || ' ';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'Parental Rating':
|
||||||
{
|
{
|
||||||
html += item.OfficialRating || ' ';
|
html += item.OfficialRating || ' ';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'Year':
|
case 'Year':
|
||||||
case 'Release Date':
|
case 'Release Date':
|
||||||
{
|
{
|
||||||
|
@ -357,7 +377,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!item.BackdropImageTags || !item.BackdropImageTags.length) {
|
if (!item.BackdropImageTags || !item.BackdropImageTags.length) {
|
||||||
if (item.Type !== "Episode" && item.Type !== "Season" && item.MediaType !== "Audio" && item.Type !== "Channel") {
|
if (item.Type !== "Episode" && item.Type !== "Season" && item.MediaType !== "Audio" && item.Type !== "Channel" && item.Type !== "MusicAlbum") {
|
||||||
html += '<a href="edititemimages.html?id=' + item.Id + '"><img src="css/images/editor/missingbackdrop.png" title="Missing backdrop image." /></a>';
|
html += '<a href="edititemimages.html?id=' + item.Id + '"><img src="css/images/editor/missingbackdrop.png" title="Missing backdrop image." /></a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -378,11 +398,11 @@
|
||||||
}).join('');
|
}).join('');
|
||||||
}
|
}
|
||||||
|
|
||||||
function getReportHtml(items, reportType) {
|
function getReportHtml(items, reportType, currentSortField, currentSortDirection) {
|
||||||
|
|
||||||
var html = '';
|
var html = '';
|
||||||
|
|
||||||
html += '<table data-role="table" data-mode="reflow" class="tblLibraryReport detailTable stripedTable ui-responsive table-stroke" style="display: table;">';
|
html += '<table id="tblReport" data-role="table" data-mode="reflow" class="tblLibraryReport stripedTable ui-responsive table-stroke detailTable" style="display:table;">';
|
||||||
|
|
||||||
html += '<thead>';
|
html += '<thead>';
|
||||||
html += '<tr>';
|
html += '<tr>';
|
||||||
|
@ -391,7 +411,31 @@
|
||||||
|
|
||||||
html += cells.map(function (c) {
|
html += cells.map(function (c) {
|
||||||
|
|
||||||
return '<th>' + (c.name || ' ') + '</th>';
|
var cellHtml = '<th data-priority="' + (c.priority || 'persist') + '">';
|
||||||
|
|
||||||
|
if (c.sortField) {
|
||||||
|
cellHtml += '<a class="lnkColumnSort" href="#" data-sortfield="' + c.sortField + '" style="text-decoration:underline;">';
|
||||||
|
}
|
||||||
|
|
||||||
|
cellHtml += (c.name || ' ');
|
||||||
|
|
||||||
|
if (c.sortField) {
|
||||||
|
|
||||||
|
cellHtml += '</a>';
|
||||||
|
|
||||||
|
if (c.sortField == currentSortField) {
|
||||||
|
|
||||||
|
if (currentSortDirection == "Descending") {
|
||||||
|
cellHtml += '<span style="font-weight:bold;margin-left:5px;vertical-align:top;font-size:12px;">↓</span>';
|
||||||
|
} else {
|
||||||
|
cellHtml += '<span style="font-weight:bold;margin-left:5px;vertical-align:top;font-size:12px;">↑</span>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cellHtml += '</th>';
|
||||||
|
|
||||||
|
return cellHtml;
|
||||||
|
|
||||||
}).join('');
|
}).join('');
|
||||||
|
|
||||||
|
@ -427,7 +471,7 @@
|
||||||
|
|
||||||
$('.listBottomPaging', page).html(LibraryBrowser.getPagingHtml(query, result.TotalRecordCount)).trigger('create');
|
$('.listBottomPaging', page).html(LibraryBrowser.getPagingHtml(query, result.TotalRecordCount)).trigger('create');
|
||||||
|
|
||||||
$('.reportContainer', page).html(getReportHtml(result.Items, reportType)).trigger('create');
|
$('.reportContainer', page).html(getReportHtml(result.Items, reportType, query.SortBy, query.SortOrder)).trigger('create');
|
||||||
|
|
||||||
$('.btnNextPage', page).on('click', function () {
|
$('.btnNextPage', page).on('click', function () {
|
||||||
query.StartIndex += query.Limit;
|
query.StartIndex += query.Limit;
|
||||||
|
@ -444,6 +488,34 @@
|
||||||
query.StartIndex = 0;
|
query.StartIndex = 0;
|
||||||
reloadItems(page);
|
reloadItems(page);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('.lnkColumnSort', page).on('click', function () {
|
||||||
|
|
||||||
|
var order = this.getAttribute('data-sortfield');
|
||||||
|
|
||||||
|
if (query.SortBy == order) {
|
||||||
|
|
||||||
|
if (query.SortOrder == "Descending") {
|
||||||
|
|
||||||
|
query.SortOrder = "Ascending";
|
||||||
|
query.SortBy = defaultSortBy;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
query.SortOrder = "Descending";
|
||||||
|
query.SortBy = order;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
query.SortOrder = "Ascending";
|
||||||
|
query.SortBy = order;
|
||||||
|
}
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
|
||||||
|
reloadItems(page);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function reloadItems(page) {
|
function reloadItems(page) {
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
SortBy: "DateCreated",
|
SortBy: "DateCreated",
|
||||||
SortOrder: "Descending",
|
SortOrder: "Descending",
|
||||||
IncludeItemTypes: "Movie",
|
IncludeItemTypes: "Movie",
|
||||||
Limit: screenWidth >= 1920 ? 21 : (screenWidth >= 1440 ? 16 : 12),
|
Limit: screenWidth >= 1920 ? 24 : (screenWidth >= 1440 ? 16 : 12),
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "PrimaryImageAspectRatio,DateCreated,UserData",
|
Fields: "PrimaryImageAspectRatio,DateCreated,UserData",
|
||||||
Filters: "IsUnplayed"
|
Filters: "IsUnplayed"
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
SortBy: "DateCreated",
|
SortBy: "DateCreated",
|
||||||
SortOrder: "Descending",
|
SortOrder: "Descending",
|
||||||
IncludeItemTypes: "Trailer",
|
IncludeItemTypes: "Trailer",
|
||||||
Limit: screenWidth >= 1920 ? 7 : (screenWidth >= 1440 ? 8 : 6),
|
Limit: screenWidth >= 1920 ? 8 : (screenWidth >= 1440 ? 8 : 6),
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "PrimaryImageAspectRatio,DateCreated,UserData",
|
Fields: "PrimaryImageAspectRatio,DateCreated,UserData",
|
||||||
Filters: "IsUnplayed"
|
Filters: "IsUnplayed"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue