mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
added season page
This commit is contained in:
parent
69fb2cdfba
commit
2cab873a9b
5 changed files with 248 additions and 29 deletions
|
@ -149,6 +149,9 @@
|
||||||
if (item.Type == "Series") {
|
if (item.Type == "Series") {
|
||||||
return "tvseries.html?id=" + item.Id;
|
return "tvseries.html?id=" + item.Id;
|
||||||
}
|
}
|
||||||
|
if (item.Type == "Season") {
|
||||||
|
return "tvseason.html?id=" + item.Id;
|
||||||
|
}
|
||||||
if (item.Type == "BoxSet") {
|
if (item.Type == "BoxSet") {
|
||||||
return "boxset.html?id=" + item.Id;
|
return "boxset.html?id=" + item.Id;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,17 +4,15 @@
|
||||||
|
|
||||||
MediaLibraryPage.lastVirtualFolderName = "";
|
MediaLibraryPage.lastVirtualFolderName = "";
|
||||||
|
|
||||||
MediaLibraryPage.reloadLibrary();
|
MediaLibraryPage.reloadLibrary(this);
|
||||||
},
|
},
|
||||||
|
|
||||||
reloadLibrary: function () {
|
reloadLibrary: function (page) {
|
||||||
|
|
||||||
Dashboard.showLoadingMsg();
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
var userId = getParameterByName("userId");
|
var userId = getParameterByName("userId");
|
||||||
|
|
||||||
var page = $.mobile.activePage;
|
|
||||||
|
|
||||||
if (userId) {
|
if (userId) {
|
||||||
|
|
||||||
$('#userProfileNavigation', page).show();
|
$('#userProfileNavigation', page).show();
|
||||||
|
@ -28,8 +26,11 @@
|
||||||
|
|
||||||
if (user.Configuration.UseCustomLibrary) {
|
if (user.Configuration.UseCustomLibrary) {
|
||||||
|
|
||||||
ApiClient.getVirtualFolders(userId).done(MediaLibraryPage.reloadVirtualFolders);
|
ApiClient.getVirtualFolders(userId).done(function (result) {
|
||||||
$(".editing_default").hide();
|
MediaLibraryPage.reloadVirtualFolders(page, result);
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".editing_default", page).hide();
|
||||||
$('#divMediaLibrary', page).show();
|
$('#divMediaLibrary', page).show();
|
||||||
} else {
|
} else {
|
||||||
$('#divMediaLibrary', page).hide();
|
$('#divMediaLibrary', page).hide();
|
||||||
|
@ -41,7 +42,9 @@
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$('#userProfileNavigation', page).hide();
|
$('#userProfileNavigation', page).hide();
|
||||||
ApiClient.getVirtualFolders().done(MediaLibraryPage.reloadVirtualFolders);
|
ApiClient.getVirtualFolders().done(function(result) {
|
||||||
|
MediaLibraryPage.reloadVirtualFolders(page, result);
|
||||||
|
});
|
||||||
|
|
||||||
$('#fldUseDefaultLibrary', page).hide();
|
$('#fldUseDefaultLibrary', page).hide();
|
||||||
$('#divMediaLibrary', page).show();
|
$('#divMediaLibrary', page).show();
|
||||||
|
@ -49,9 +52,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
reloadVirtualFolders: function (virtualFolders) {
|
reloadVirtualFolders: function (page, virtualFolders) {
|
||||||
|
|
||||||
var page = $.mobile.activePage;
|
|
||||||
|
|
||||||
if (virtualFolders) {
|
if (virtualFolders) {
|
||||||
MediaLibraryPage.virtualFolders = virtualFolders;
|
MediaLibraryPage.virtualFolders = virtualFolders;
|
||||||
|
@ -113,14 +114,17 @@
|
||||||
Dashboard.showLoadingMsg();
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
var userId = getParameterByName("userId");
|
var userId = getParameterByName("userId");
|
||||||
|
var page = $.mobile.activePage;
|
||||||
|
|
||||||
ApiClient.getUser(userId).done(function (user) {
|
ApiClient.getUser(userId).done(function (user) {
|
||||||
|
|
||||||
user.Configuration.UseCustomLibrary = !useDefaultLibrary;
|
user.Configuration.UseCustomLibrary = !useDefaultLibrary;
|
||||||
|
|
||||||
ApiClient.updateUser(user).done(MediaLibraryPage.reloadLibrary);
|
ApiClient.updateUser(user).done(function() {
|
||||||
|
MediaLibraryPage.reloadLibrary(page);
|
||||||
|
});
|
||||||
|
|
||||||
$(".editing_default").hide();
|
$(".editing_default", page).hide();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -266,7 +270,7 @@
|
||||||
|
|
||||||
$('#popupEnterText', page).popup("close");
|
$('#popupEnterText', page).popup("close");
|
||||||
$('#popupDirectoryPicker', page).popup("close");
|
$('#popupDirectoryPicker', page).popup("close");
|
||||||
MediaLibraryPage.reloadLibrary();
|
MediaLibraryPage.reloadLibrary(page);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
159
dashboard-ui/scripts/tvseason.js
Normal file
159
dashboard-ui/scripts/tvseason.js
Normal file
|
@ -0,0 +1,159 @@
|
||||||
|
(function ($, document, LibraryBrowser, window) {
|
||||||
|
|
||||||
|
var currentItem;
|
||||||
|
|
||||||
|
function reload(page) {
|
||||||
|
|
||||||
|
var id = getParameterByName('id');
|
||||||
|
|
||||||
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
|
ApiClient.getItem(Dashboard.getCurrentUserId(), id).done(function (item) {
|
||||||
|
|
||||||
|
currentItem = item;
|
||||||
|
|
||||||
|
var name = item.Name;
|
||||||
|
|
||||||
|
$('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item));
|
||||||
|
|
||||||
|
Dashboard.setPageTitle(name);
|
||||||
|
|
||||||
|
$('#itemName', page).html(name);
|
||||||
|
|
||||||
|
setInitialCollapsibleState(page, item);
|
||||||
|
renderDetails(page, item);
|
||||||
|
|
||||||
|
if (LibraryBrowser.shouldDisplayGallery(item)) {
|
||||||
|
$('#galleryCollapsible', page).show();
|
||||||
|
} else {
|
||||||
|
$('#galleryCollapsible', page).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
Dashboard.hideLoadingMsg();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function setInitialCollapsibleState(page, item) {
|
||||||
|
|
||||||
|
if (!item.People || !item.People.length) {
|
||||||
|
$('#castCollapsible', page).hide();
|
||||||
|
} else {
|
||||||
|
$('#castCollapsible', page).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderDetails(page, item) {
|
||||||
|
|
||||||
|
if (item.Taglines && item.Taglines.length) {
|
||||||
|
$('#itemTagline', page).html(item.Taglines[0]).show();
|
||||||
|
} else {
|
||||||
|
$('#itemTagline', page).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.Overview || item.OverviewHtml) {
|
||||||
|
var overview = item.OverviewHtml || item.Overview;
|
||||||
|
|
||||||
|
$('#itemOverview', page).html(overview).show();
|
||||||
|
$('#itemOverview a').each(function () {
|
||||||
|
$(this).attr("target", "_blank");
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$('#itemOverview', page).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.CommunityRating) {
|
||||||
|
$('#itemCommunityRating', page).html(LibraryBrowser.getStarRatingHtml(item)).show().attr('title', item.CommunityRating);
|
||||||
|
} else {
|
||||||
|
$('#itemCommunityRating', page).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#itemMiscInfo', page).html(LibraryBrowser.getMiscInfoHtml(item));
|
||||||
|
|
||||||
|
LibraryBrowser.renderGenres($('#itemGenres', page), item);
|
||||||
|
LibraryBrowser.renderStudios($('#itemStudios', page), item);
|
||||||
|
renderUserDataIcons(page, item);
|
||||||
|
LibraryBrowser.renderLinks($('#itemLinks', page), item);
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderUserDataIcons(page, item) {
|
||||||
|
$('#itemRatings', page).html(LibraryBrowser.getUserDataIconsHtml(item));
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderSeasons(page) {
|
||||||
|
|
||||||
|
ApiClient.getItems(Dashboard.getCurrentUserId(), {
|
||||||
|
|
||||||
|
ParentId: getParameterByName('id'),
|
||||||
|
SortBy: "SortName",
|
||||||
|
Fields: "PrimaryImageAspectRatio,ItemCounts,DisplayMediaType,DateCreated,UserData"
|
||||||
|
|
||||||
|
}).done(function (result) {
|
||||||
|
|
||||||
|
var html = LibraryBrowser.getPosterDetailViewHtml({
|
||||||
|
items: result.Items,
|
||||||
|
useAverageAspectRatio: true
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#episodesContent', page).html(html);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderGallery(page, item) {
|
||||||
|
|
||||||
|
var html = LibraryBrowser.getGalleryHtml(item);
|
||||||
|
|
||||||
|
$('#galleryContent', page).html(html).trigger('create');
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderCast(page, item) {
|
||||||
|
var html = '';
|
||||||
|
|
||||||
|
var casts = item.People || [];
|
||||||
|
|
||||||
|
for (var i = 0, length = casts.length; i < length; i++) {
|
||||||
|
|
||||||
|
var cast = casts[i];
|
||||||
|
|
||||||
|
html += LibraryBrowser.createCastImage(cast);
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#castContent', page).html(html);
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).on('pageshow', "#tvSeasonPage", function () {
|
||||||
|
|
||||||
|
var page = this;
|
||||||
|
|
||||||
|
reload(page);
|
||||||
|
|
||||||
|
$('#episodesCollapsible', page).on('expand.lazyload', function () {
|
||||||
|
|
||||||
|
renderSeasons(page);
|
||||||
|
|
||||||
|
$(this).off('expand.lazyload');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#castCollapsible', page).on('expand.lazyload', function () {
|
||||||
|
renderCast(page, currentItem);
|
||||||
|
|
||||||
|
$(this).off('expand.lazyload');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#galleryCollapsible', page).on('expand.lazyload', function () {
|
||||||
|
|
||||||
|
renderGallery(page, currentItem);
|
||||||
|
|
||||||
|
$(this).off('expand.lazyload');
|
||||||
|
});
|
||||||
|
|
||||||
|
}).on('pagehide', "#tvSeasonPage", function () {
|
||||||
|
|
||||||
|
currentItem = null;
|
||||||
|
var page = this;
|
||||||
|
|
||||||
|
$('#episodesCollapsible', page).off('expand.lazyload');
|
||||||
|
$('#castCollapsible', page).off('expand.lazyload');
|
||||||
|
$('#galleryCollapsible', page).off('expand.lazyload');
|
||||||
|
});
|
||||||
|
|
||||||
|
})(jQuery, document, LibraryBrowser, window);
|
|
@ -84,14 +84,14 @@
|
||||||
ApiClient.getItems(Dashboard.getCurrentUserId(), {
|
ApiClient.getItems(Dashboard.getCurrentUserId(), {
|
||||||
|
|
||||||
ParentId: getParameterByName('id'),
|
ParentId: getParameterByName('id'),
|
||||||
SortBy: "SortName"
|
SortBy: "SortName",
|
||||||
|
Fields: "PrimaryImageAspectRatio,ItemCounts,DisplayMediaType,DateCreated,UserData"
|
||||||
|
|
||||||
}).done(function(result) {
|
}).done(function(result) {
|
||||||
|
|
||||||
var html = LibraryBrowser.getPosterDetailViewHtml({
|
var html = LibraryBrowser.getPosterDetailViewHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
useAverageAspectRatio: true,
|
useAverageAspectRatio: true
|
||||||
Fields: "PrimaryImageAspectRatio,ItemCounts,DisplayMediaType,DateCreated,UserData"
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#seasonsContent', page).html(html);
|
$('#seasonsContent', page).html(html);
|
||||||
|
@ -120,11 +120,7 @@
|
||||||
$('#castContent', page).html(html);
|
$('#castContent', page).html(html);
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('pageinit', "#tvSeriesPage", function () {
|
$(document).on('pageshow', "#tvSeriesPage", function () {
|
||||||
|
|
||||||
var page = this;
|
|
||||||
|
|
||||||
}).on('pageshow', "#tvSeriesPage", function () {
|
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
|
||||||
|
@ -160,12 +156,4 @@
|
||||||
$('#galleryCollapsible', page).off('expand.lazyload');
|
$('#galleryCollapsible', page).off('expand.lazyload');
|
||||||
});
|
});
|
||||||
|
|
||||||
function tvSeriesPage() {
|
|
||||||
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
window.TvSeriesPage = new tvSeriesPage();
|
|
||||||
|
|
||||||
})(jQuery, document, LibraryBrowser, window);
|
})(jQuery, document, LibraryBrowser, window);
|
||||||
|
|
65
dashboard-ui/tvseason.html
Normal file
65
dashboard-ui/tvseason.html
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="tvSeasonPage" data-role="page" class="page libraryPage noLogoPage" data-theme="a">
|
||||||
|
<h1 class="libraryPageHeader"><a href="index.html" class="imageLink">
|
||||||
|
<img src="css/images/home.png"></a>TV Shows</h1>
|
||||||
|
|
||||||
|
<div data-role="content">
|
||||||
|
|
||||||
|
<div data-role="controlgroup" data-type="horizontal" class="libraryViewNav" data-mini="true">
|
||||||
|
<a href="tvrecommended.html" data-role="button">Suggested</a>
|
||||||
|
<a href="tvshows.html" data-role="button" class="ui-btn-active">Shows</a>
|
||||||
|
<a href="tvgenres.html" data-role="button">Genres</a>
|
||||||
|
<a href="tvpeople.html" data-role="button">Actors</a>
|
||||||
|
<a href="tvstudios.html" data-role="button">Networks</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="detailPagePrimaryInfo">
|
||||||
|
|
||||||
|
<h1 id="itemName" class="detailPageName"></h1>
|
||||||
|
|
||||||
|
<div class="itemImageBlock">
|
||||||
|
<div id="itemMedia" style="position: relative;">
|
||||||
|
<div id="itemImage"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="itemDetailBlock">
|
||||||
|
|
||||||
|
<p id="itemTagline" style="font-style: italic;"></p>
|
||||||
|
<p id="itemOverview"></p>
|
||||||
|
<p id="itemRatings"></p>
|
||||||
|
<p id="itemCommunityRating"></p>
|
||||||
|
<p id="itemMiscInfo" class="itemMiscInfo"></p>
|
||||||
|
|
||||||
|
<p id="itemGenres"></p>
|
||||||
|
<p id="itemStudios"></p>
|
||||||
|
<p id="itemLinks"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-role="collapsible" id="episodesCollapsible">
|
||||||
|
<h3>Episodes</h3>
|
||||||
|
<div id="episodesContent"></div>
|
||||||
|
</div>
|
||||||
|
<div data-role="collapsible" id="trailersCollapsible" class="hide">
|
||||||
|
<h3>Trailers</h3>
|
||||||
|
<div id="trailersContent"></div>
|
||||||
|
</div>
|
||||||
|
<div data-role="collapsible" id="castCollapsible" class="hide">
|
||||||
|
<h3>Cast & Crew</h3>
|
||||||
|
<div id="castContent"></div>
|
||||||
|
</div>
|
||||||
|
<div data-role="collapsible" id="galleryCollapsible">
|
||||||
|
<h3>Gallery</h3>
|
||||||
|
<div id="galleryContent"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Add table
Add a link
Reference in a new issue