1
0
Fork 0
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:
Luke Pulverenti 2013-04-17 00:21:24 -04:00
parent 69fb2cdfba
commit 2cab873a9b
5 changed files with 248 additions and 29 deletions

View file

@ -149,6 +149,9 @@
if (item.Type == "Series") {
return "tvseries.html?id=" + item.Id;
}
if (item.Type == "Season") {
return "tvseason.html?id=" + item.Id;
}
if (item.Type == "BoxSet") {
return "boxset.html?id=" + item.Id;
}

View file

@ -4,17 +4,15 @@
MediaLibraryPage.lastVirtualFolderName = "";
MediaLibraryPage.reloadLibrary();
MediaLibraryPage.reloadLibrary(this);
},
reloadLibrary: function () {
reloadLibrary: function (page) {
Dashboard.showLoadingMsg();
var userId = getParameterByName("userId");
var page = $.mobile.activePage;
if (userId) {
$('#userProfileNavigation', page).show();
@ -28,8 +26,11 @@
if (user.Configuration.UseCustomLibrary) {
ApiClient.getVirtualFolders(userId).done(MediaLibraryPage.reloadVirtualFolders);
$(".editing_default").hide();
ApiClient.getVirtualFolders(userId).done(function (result) {
MediaLibraryPage.reloadVirtualFolders(page, result);
});
$(".editing_default", page).hide();
$('#divMediaLibrary', page).show();
} else {
$('#divMediaLibrary', page).hide();
@ -41,7 +42,9 @@
} else {
$('#userProfileNavigation', page).hide();
ApiClient.getVirtualFolders().done(MediaLibraryPage.reloadVirtualFolders);
ApiClient.getVirtualFolders().done(function(result) {
MediaLibraryPage.reloadVirtualFolders(page, result);
});
$('#fldUseDefaultLibrary', page).hide();
$('#divMediaLibrary', page).show();
@ -49,9 +52,7 @@
}
},
reloadVirtualFolders: function (virtualFolders) {
var page = $.mobile.activePage;
reloadVirtualFolders: function (page, virtualFolders) {
if (virtualFolders) {
MediaLibraryPage.virtualFolders = virtualFolders;
@ -113,14 +114,17 @@
Dashboard.showLoadingMsg();
var userId = getParameterByName("userId");
var page = $.mobile.activePage;
ApiClient.getUser(userId).done(function (user) {
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");
$('#popupDirectoryPicker', page).popup("close");
MediaLibraryPage.reloadLibrary();
MediaLibraryPage.reloadLibrary(page);
}
};

View 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);

View file

@ -84,14 +84,14 @@
ApiClient.getItems(Dashboard.getCurrentUserId(), {
ParentId: getParameterByName('id'),
SortBy: "SortName"
SortBy: "SortName",
Fields: "PrimaryImageAspectRatio,ItemCounts,DisplayMediaType,DateCreated,UserData"
}).done(function(result) {
var html = LibraryBrowser.getPosterDetailViewHtml({
items: result.Items,
useAverageAspectRatio: true,
Fields: "PrimaryImageAspectRatio,ItemCounts,DisplayMediaType,DateCreated,UserData"
useAverageAspectRatio: true
});
$('#seasonsContent', page).html(html);
@ -120,11 +120,7 @@
$('#castContent', page).html(html);
}
$(document).on('pageinit', "#tvSeriesPage", function () {
var page = this;
}).on('pageshow', "#tvSeriesPage", function () {
$(document).on('pageshow', "#tvSeriesPage", function () {
var page = this;
@ -160,12 +156,4 @@
$('#galleryCollapsible', page).off('expand.lazyload');
});
function tvSeriesPage() {
var self = this;
}
window.TvSeriesPage = new tvSeriesPage();
})(jQuery, document, LibraryBrowser, window);

View 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>