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

web client re-org

This commit is contained in:
Luke Pulverenti 2014-05-01 22:54:33 -04:00
parent ea285c28ef
commit d5780727eb
81 changed files with 571 additions and 550 deletions

View file

@ -13,6 +13,11 @@
IsVirtualUnaired: false
};
function getSavedQueryKey() {
return 'episodes' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -60,9 +65,7 @@
reloadItems(page);
});
if (getParameterByName('savequery') != 'false') {
LibraryBrowser.saveQueryValues('episodes', query);
}
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -269,6 +272,8 @@
}).on('pagebeforeshow', "#episodesPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -277,7 +282,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('episodes', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
var filters = getParameterByName('filters');
if (filters) {

View file

@ -251,6 +251,20 @@ function getParameterByName(name, url) {
return decodeURIComponent(results[1].replace(/\+/g, " "));
}
function replaceQueryString(url, param, value) {
var re = new RegExp("([?|&])" + param + "=.*?(&|$)", "i");
if (url.match(re))
return url.replace(re, '$1' + param + "=" + value + '$2');
else {
if (url.indexOf('?') == -1) {
return url + '?' + param + "=" + value;
}
return url + '&' + param + "=" + value;
}
}
function parseISO8601Date(s, options) {
options = options || {};

View file

@ -10,6 +10,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'gamegenres' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -54,7 +59,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('gamegenres', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -87,6 +92,8 @@
}).on('pagebeforeshow', "#gameGenresPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -95,7 +102,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('gamegenres', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -12,6 +12,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'games' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -56,7 +61,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('games', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -190,6 +195,8 @@
}).on('pagebeforeshow', "#gamesPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -198,7 +205,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('games', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -2,6 +2,8 @@
$(document).on('pagebeforeshow', "#gamesRecommendedPage", function () {
var parentId = LibraryMenu.getTopParentId();
var page = this;
var options = {
@ -11,7 +13,8 @@
MediaTypes: "Game",
Limit: 10,
Recursive: true,
Fields: "ItemCounts,AudioInfo,PrimaryImageAspectRatio"
Fields: "ItemCounts,AudioInfo,PrimaryImageAspectRatio",
ParentId: parentId
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
@ -32,7 +35,8 @@
Limit: 10,
Recursive: true,
Filters: "IsPlayed",
Fields: "ItemCounts,AudioInfo,PrimaryImageAspectRatio"
Fields: "ItemCounts,AudioInfo,PrimaryImageAspectRatio",
ParentId: parentId
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {

View file

@ -11,6 +11,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'gamestudios' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -55,7 +60,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('gamestudios', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -88,6 +93,8 @@
}).on('pagebeforeshow', "#gameStudiosPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -96,7 +103,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('gamestudios', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -11,6 +11,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'gamesystems' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -52,7 +57,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('gamesystems', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -65,6 +70,8 @@
$(document).on('pagebeforeshow', "#gamesystemsPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -73,7 +80,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('gamesystems', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -1,225 +1,71 @@
(function ($, document, apiClient) {
function getViewHtml(view) {
var html = '';
html += '<a id="' + view.id + '" class="posterItem backdropPosterItem" href="' + view.url + '">';
html += '<div class="posterItemImage" style="padding:1px;"></div><div class="posterItemText posterItemTextCentered">' + view.name + '</div>';
html += '</a>';
return html;
}
function appendViewImages(elem, urls) {
var html = '';
for (var i = 0, length = urls.length; i < length; i++) {
var url = urls[i];
html += '<div class="viewCollageImage" style="background-image: url(\'' + url + '\');"></div>';
}
elem.html(html);
}
function renderMovieViewImages(page, userId) {
apiClient.getItems(userId, {
SortBy: "random",
IncludeItemTypes: "Movie,Trailer",
Limit: 6,
ImageTypes: "Primary",
Recursive: true
}).done(function (result) {
var urls = [];
for (var i = 0, length = result.Items.length; i < length; i++) {
urls.push(LibraryBrowser.getImageUrl(result.Items[i], 'Primary', 0, {
width: 160,
EnableImageEnhancers: false
}));
}
appendViewImages($('#moviesView .posterItemImage', page), urls);
});
}
function renderMusicViewImages(page, userId) {
apiClient.getItems(userId, {
SortBy: "random",
IncludeItemTypes: "MusicAlbum",
Limit: 6,
ImageTypes: "Primary",
Recursive: true
}).done(function (result) {
var urls = [];
for (var i = 0, length = result.Items.length; i < length; i++) {
urls.push(LibraryBrowser.getImageUrl(result.Items[i], 'Primary', 0, {
width: 160,
EnableImageEnhancers: false
}));
}
appendViewImages($('#musicView .posterItemImage', page), urls);
});
}
function renderGamesViewImages(page, userId) {
apiClient.getItems(userId, {
SortBy: "random",
MediaTypes: "Game",
Limit: 6,
ImageTypes: "Primary",
Recursive: true
}).done(function (result) {
var urls = [];
for (var i = 0, length = result.Items.length; i < length; i++) {
urls.push(LibraryBrowser.getImageUrl(result.Items[i], 'Primary', 0, {
width: 160,
EnableImageEnhancers: false
}));
}
appendViewImages($('#gamesView .posterItemImage', page), urls);
});
}
function renderTvViewImages(page, userId) {
apiClient.getItems(userId, {
SortBy: "random",
IncludeItemTypes: "Series",
Limit: 6,
ImageTypes: "Primary",
Recursive: true
}).done(function (result) {
var urls = [];
for (var i = 0, length = result.Items.length; i < length; i++) {
urls.push(LibraryBrowser.getImageUrl(result.Items[i], 'Primary', 0, {
width: 160,
EnableImageEnhancers: false
}));
}
appendViewImages($('#tvView .posterItemImage', page), urls);
});
}
function renderViews(page, userId) {
apiClient.getItemCounts(userId).done(function (counts) {
var views = [];
if (counts.MovieCount || counts.TrailerCount) {
views.push({ id: "moviesView", name: "Movies", url: "movieslatest.html", img: "css/images/items/list/chapter.png", background: "#0094FF" });
}
if (counts.EpisodeCount || counts.SeriesCount) {
views.push({ id: "tvView", name: "TV Shows", url: "tvrecommended.html", img: "css/images/items/list/collection.png", background: "#FF870F" });
}
if (counts.SongCount || counts.MusicVideoCount) {
views.push({ id: "musicView", name: "Music", url: "musicrecommended.html", img: "css/images/items/list/audiocollection.png", background: "#6FBD45" });
}
if (counts.GameCount) {
views.push({ id: "gamesView", name: "Games", url: "gamesrecommended.html", img: "css/images/items/list/gamecollection.png", background: "#E12026" });
}
var html = '';
for (var i = 0, length = views.length; i < length; i++) {
html += getViewHtml(views[i]);
}
var elem = $('#views', page).html(html).trigger('create');
if (counts.MovieCount || counts.TrailerCount) {
renderMovieViewImages(elem, userId);
}
if (counts.EpisodeCount || counts.SeriesCount) {
renderTvViewImages(elem, userId);
}
if (counts.SongCount || counts.MusicVideoCount) {
renderMusicViewImages(elem, userId);
}
if (counts.GameCount) {
renderGamesViewImages(elem, userId);
}
});
}
$(document).on('pagebeforeshow', "#indexPage", function () {
var parentId = LibraryMenu.getTopParentId();
var screenWidth = $(window).width();
var page = this;
var userId = Dashboard.getCurrentUserId();
if (!userId) {
return;
}
renderViews(page, userId);
var options = {
sortBy: "SortName"
SortBy: "DatePlayed",
SortOrder: "Descending",
MediaTypes: "Video",
Filters: "IsResumable",
Limit: screenWidth >= 1920 ? 4 : (screenWidth >= 1440 ? 4 : 3),
Recursive: true,
Fields: "PrimaryImageAspectRatio",
CollapseBoxSetItems: false,
ExcludeLocationTypes: "Virtual",
ParentId: parentId
};
apiClient.getItems(userId, options).done(function (result) {
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
$('#divCollections', page).html(LibraryBrowser.getPosterViewHtml({
if (result.Items.length) {
$('#resumableSection', page).show();
} else {
$('#resumableSection', page).hide();
}
$('#resumableItems', page).html(LibraryBrowser.getPosterViewHtml({
items: result.Items,
showTitle: true,
shape: "backdrop",
centerText: true
}));
preferBackdrop: true,
shape: 'backdrop',
overlayText: true,
showTitle: true
})).createPosterItemMenus();
});
options = {
SortBy: "DateCreated",
SortOrder: "Descending",
Limit: screenWidth >= 1920 ? 24 : (screenWidth >= 1440 ? 24 : (screenWidth >= 800 ? 18 : 12)),
Recursive: true,
Fields: "PrimaryImageAspectRatio",
Filters: "IsUnplayed,IsNotFolder",
CollapseBoxSetItems: false,
ExcludeLocationTypes: "Virtual,Remote",
ParentId: parentId
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
$('#recentlyAddedItems', page).html(LibraryBrowser.getPosterViewHtml({
items: result.Items,
preferThumb: true,
shape: 'backdrop',
showTitle: true,
centerText: true
})).createPosterItemMenus();
});
});
})(jQuery, document, ApiClient);

View file

@ -192,10 +192,6 @@
$('#gameSystemTabs', page).show();
}
if (item.Type == "Trailer") {
$('#trailerTabs', page).show();
}
if (item.Type == "Episode" || item.Type == "Season" || item.Type == "Series") {
$('#tvShowsTabs', page).show();
}

View file

@ -74,7 +74,9 @@
Dashboard.hideLoadingMsg();
});
var promise = query.ParentId ? ApiClient.getItem(userId, query.ParentId) : ApiClient.getRootFolder(userId);
var promise = query.ParentId ?
ApiClient.getItem(userId, query.ParentId) :
ApiClient.getRootFolder(userId);
promise.done(function (item) {

View file

@ -742,7 +742,7 @@
html += "</div>";
}
var overlayText = forceName || options.overlayText;
var overlayText = options.overlayText || (forceName && !options.showTitle);
if (overlayText) {
html += '<div class="posterItemTextOverlay">';

View file

@ -2,17 +2,23 @@
var itemCountsPromise;
var liveTvInfoPromise;
var itemsPromise;
function ensurePromises() {
itemsPromise = itemsPromise || ApiClient.getItems(Dashboard.getCurrentUserId(), {
SortBy: "SortName"
});
itemCountsPromise = itemCountsPromise || ApiClient.getItemCounts(Dashboard.getCurrentUserId());
liveTvInfoPromise = liveTvInfoPromise || ApiClient.getLiveTvInfo();
}
function renderHeader(page, user) {
function renderHeader(user) {
var html = '<div class="viewMenuBar ui-bar-b">';
html += '<button type="button" data-icon="bars" data-iconpos="notext" data-inline="true" title="Menu" class="libraryMenuButton" onclick="LibraryMenu.showLibraryMenu($(this).parents(\'.page\'));">Menu</button>';
html += '<button type="button" data-icon="bars" data-iconpos="notext" data-inline="true" title="Menu" class="libraryMenuButton" onclick="LibraryMenu.showLibraryMenu();">Menu</button>';
html += '<a class="desktopHomeLink" href="index.html"><img src="css/images/mblogoicon.png" /></a>';
@ -53,72 +59,90 @@
html += '</div>';
var $page = $(page);
$(document.body).prepend(html);
$page.prepend(html);
$('.viewMenuBar').trigger('create');
$('.viewMenuBar', page).trigger('create');
$page.trigger('headercreated');
$(document).trigger('headercreated');
}
function insertViews(page, user, counts, liveTvInfo) {
function getItemHref(item) {
if (item.Type == 'ManualCollectionsFolder') {
return 'collections.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'boxsets') {
return 'moviecollections.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'trailers') {
return 'movietrailers.html?topParentId=' + item.Id;
}
if (item.Type == 'TrailerCollectionFolder') {
return 'movietrailers.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'movies') {
return 'movieslatest.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'tvshows') {
return 'tvrecommended.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'music') {
return 'musicrecommended.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'games') {
return 'gamesrecommended.html?topParentId=' + item.Id;
}
return 'itemlist.html?topParentId=' + item.Id + '&parentid=' + item.Id;
}
function insertViews(user, counts, items, liveTvInfo) {
var html = '';
var selectedCssClass = ' selectedViewLink';
var selectedHtml = "<span class='selectedViewIndicator'>&#9654;</span>";
html += items.map(function (i) {
var view = page.getAttribute('data-view') || getParameterByName('context');
return '<a data-itemid="' + i.Id + '" class="lnkMediaFolder viewMenuLink viewMenuTextLink desktopViewMenuLink" href="' + getItemHref(i) + '"><span class="viewName">' + i.Name + '</span></a>';
if (counts.MovieCount) {
}).join('');
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'movies' ? selectedCssClass : '') + '" href="movieslatest.html">' + (view == 'movies' ? selectedHtml : '') + '<span class="viewName">Movies</span></a>';
}
if (counts.SeriesCount) {
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'tv' ? selectedCssClass : '') + '" href="tvrecommended.html">' + (view == 'tv' ? selectedHtml : '') + '<span class="viewName">TV</span></a>';
if (counts.ChannelCount) {
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink lnkMediaFolder" href="channels.html"><span class="viewName">Channels</span></a>';
}
if (liveTvInfo.EnabledUsers.indexOf(user.Id) != -1) {
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'livetv' ? selectedCssClass : '') + '" href="livetvsuggested.html">' + (view == 'livetv' ? selectedHtml : '') + '<span class="viewName">Live TV</span></a>';
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink lnkMediaFolder" data-itemid="livetv" href="livetvsuggested.html"><span class="viewName">Live TV</span></a>';
}
if (counts.SongCount || counts.MusicVideoCount) {
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'music' ? selectedCssClass : '') + '" href="musicrecommended.html">' + (view == 'music' ? selectedHtml : '') + '<span class="viewName">Music</span></a>';
}
if (counts.GameCount) {
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'games' ? selectedCssClass : '') + '" href="gamesrecommended.html">' + (view == 'games' ? selectedHtml : '') + '<span class="viewName">Games</span></a>';
}
if (counts.ChannelCount) {
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'channels' ? selectedCssClass : '') + '" href="channels.html">' + (view == 'channels' ? selectedHtml : '') + '<span class="viewName">Channels</span></a>';
}
//if (counts.BoxSetCount) {
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'boxsets' ? selectedCssClass : '') + '" href="collections.html">' + (view == 'boxsets' ? selectedHtml : '') + '<span class="viewName">Collections</span></a>';
//}
$('.viewMenuRemoteControlButton', page).before(html);
$('.viewMenuRemoteControlButton').before(html);
}
function showLibraryMenu(page) {
function showLibraryMenu() {
ensurePromises();
$.when(itemCountsPromise, liveTvInfoPromise).done(function (response1, response2) {
$.when(itemCountsPromise, itemsPromise, liveTvInfoPromise).done(function (response1, response2, response3) {
var counts = response1[0];
var liveTvInfo = response2[0];
var items = response2[0].Items;
var liveTvInfo = response3[0];
var panel = getLibraryMenu(page, counts, liveTvInfo);
var page = $.mobile.activePage;
var panel = getLibraryMenu(page, counts, items, liveTvInfo);
$(panel).panel('toggle');
});
}
function getLibraryMenu(page, counts, liveTvInfo) {
function getLibraryMenu(page, counts, items, liveTvInfo) {
var panel = $('#libraryPanel', page);
@ -132,34 +156,20 @@
html += '<ul data-role="listview">';
if (counts.MovieCount) {
html += '<li><a class="libraryPanelLink" href="movieslatest.html">Movies</a></li>';
}
html += items.map(function (i) {
if (counts.SeriesCount) {
html += '<li><a class="libraryPanelLink" href="tvrecommended.html">TV</a></li>';
return '<li><a data-itemid="' + i.Id + '" class="libraryPanelLink lnkMediaFolder" href="' + getItemHref(i) + '">' + i.Name + '</a></li>';
}).join('');
if (counts.ChannelCount) {
html += '<li><a class="libraryPanelLink lnkMediaFolder" href="channels.html">Channels</a></li>';
}
if (liveTvInfo.EnabledUsers.indexOf(Dashboard.getCurrentUserId()) != -1) {
html += '<li><a class="libraryPanelLink" href="livetvsuggested.html">Live TV</a></li>';
html += '<li><a class="libraryPanelLink lnkMediaFolder" data-itemid="livetv" href="livetvsuggested.html">Live TV</a></li>';
}
if (counts.SongCount || counts.MusicVideoCount) {
html += '<li><a class="libraryPanelLink" href="musicrecommended.html">Music</a></li>';
}
if (counts.ChannelCount) {
html += '<li><a class="libraryPanelLink" href="channels.html">Channels</a></li>';
}
if (counts.GameCount) {
html += '<li><a class="libraryPanelLink" href="gamesrecommended.html">Games</a></li>';
}
//if (counts.BoxSetCount) {
html += '<li><a class="libraryPanelLink" href="collections.html">Collections</a></li>';
//}
html += '</ul>';
html += '</div>';
@ -171,12 +181,19 @@
return panel;
}
function getTopParentId() {
return getParameterByName('topParentId') || sessionStorage.getItem('topParentId') || null;
}
window.LibraryMenu = {
showLibraryMenu: showLibraryMenu
showLibraryMenu: showLibraryMenu,
getTopParentId: getTopParentId
};
function updateCastIcon() {
var info = MediaController.getPlayerInfo();
if (info.isLocalPlayer) {
@ -189,6 +206,48 @@
}
}
function updateLibraryNavLinks(page) {
page = $(page);
var isLiveTvPage = page.hasClass('liveTvPage');
var id = isLiveTvPage || page.hasClass('noLibraryMenuSelectionPage') ?
'' :
getTopParentId() || '';
sessionStorage.setItem('topParentId', id);
$('.lnkMediaFolder').each(function () {
var itemId = this.getAttribute('data-itemid');
if (isLiveTvPage && itemId == 'livetv') {
$(this).addClass('selectedMediaFolder');
}
else if (id && itemId == id) {
$(this).addClass('selectedMediaFolder');
}
else {
$(this).removeClass('selectedMediaFolder');
}
});
$('.scopedLibraryViewNav a', page).each(function () {
var src = this.href;
if (src.indexOf('#') != -1) {
return;
}
src = replaceQueryString(src, 'topParentId', id);
this.href = src;
});
}
$(document).on('pageinit', ".libraryPage", function () {
var page = this;
@ -201,31 +260,42 @@
});
}).on('pagebeforeshow', ".libraryPage", function () {
}).on('pagebeforeshow', ".page", function () {
var page = this;
if (!$('.viewMenuBar', page).length) {
if ($(page).hasClass('libraryPage')) {
Dashboard.getCurrentUser().done(function (user) {
if (!$('.viewMenuBar').length) {
renderHeader(page, user);
Dashboard.getCurrentUser().done(function (user) {
ensurePromises();
renderHeader(user);
$.when(itemCountsPromise, liveTvInfoPromise).done(function (response1, response2) {
ensurePromises();
var counts = response1[0];
var liveTvInfo = response2[0];
$.when(itemCountsPromise, itemsPromise, liveTvInfoPromise).done(function (response1, response2, response3) {
insertViews(page, user, counts, liveTvInfo);
var counts = response1[0];
var items = response2[0].Items;
var liveTvInfo = response3[0];
insertViews(user, counts, items, liveTvInfo);
updateLibraryNavLinks(page);
});
});
});
}
} else {
updateCastIcon();
$('.viewMenuBar').show();
updateLibraryNavLinks(page);
}
} else {
$('.viewMenuBar').hide();
}
}).on('pageshow', ".libraryPage", function () {
@ -239,15 +309,15 @@
// Scroll back up so in case vertical scroll was messed with
$(document).scrollTop(0);
}
});
$(function() {
$(function () {
$(MediaController).on('playerchange', function () {
updateCastIcon();
});
});
})(window, document, jQuery);

View file

@ -509,13 +509,11 @@
});
}
$(document).on('headercreated', ".libraryPage", function () {
$(document).on('headercreated', function () {
var page = this;
$('.btnCast').on('click', function () {
$('.btnCast', page).on('click', function () {
showPlayerSelection(page);
showPlayerSelection($.mobile.activePage);
});
});

View file

@ -1118,14 +1118,6 @@
}
});
function replaceQueryString(url, param, value) {
var re = new RegExp("([?|&])" + param + "=.*?(&|$)", "i");
if (url.match(re))
return url.replace(re, '$1' + param + "=" + value + '$2');
else
return url + '&' + param + "=" + value;
}
function sendProgressUpdate(itemId, mediaSourceId) {
ApiClient.reportPlaybackProgress({

View file

@ -11,6 +11,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'moviegenres' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -55,7 +60,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('moviegenres', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -88,6 +93,8 @@
}).on('pagebeforeshow', "#movieGenresPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -96,7 +103,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('moviegenres', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -13,6 +13,11 @@
Limit: 100
};
function getSavedQueryKey() {
return 'moviepeople' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -52,7 +57,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('moviepeople', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -126,7 +131,17 @@
}).on('pagebeforeshow', "#moviePeoplePage", function () {
LibraryBrowser.loadSavedQueryValues('moviepeople', query);
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
if (limit != query.Limit) {
query.Limit = limit;
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -13,6 +13,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'movies' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -96,7 +101,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('movies', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -203,7 +208,7 @@
reloadItems(page);
}
LibraryBrowser.saveViewSetting('movies', view);
LibraryBrowser.saveViewSetting(getSavedQueryKey(), view);
});
$('.chkVideoTypeFilter', this).on('change', function () {
@ -361,6 +366,8 @@
}).on('pagebeforeshow', "#moviesPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var page = this;
var limit = LibraryBrowser.getDefaultPageSize();
@ -370,9 +377,11 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('movies', query);
var viewkey = getSavedQueryKey();
LibraryBrowser.getSavedViewSetting('movies').done(function (val) {
LibraryBrowser.loadSavedQueryValues(viewkey, query);
LibraryBrowser.getSavedViewSetting(viewkey).done(function (val) {
if (val) {
$('#selectView', page).val(val).selectmenu('refresh').trigger('change');

View file

@ -2,6 +2,8 @@
$(document).on('pagebeforeshow', "#moviesLatestPage", function () {
var parentId = LibraryMenu.getTopParentId();
var screenWidth = $(window).width();
var page = this;
@ -11,11 +13,12 @@
SortBy: "DateCreated",
SortOrder: "Descending",
IncludeItemTypes: "Movie",
Limit: screenWidth >= 1920 ? 32 : (screenWidth >= 1440 ? 24 : (screenWidth >= 800 ? 18 : 12)),
Limit: screenWidth >= 1920 ? 32 : (screenWidth >= 1440 ? 32 : (screenWidth >= 800 ? 24 : 18)),
Recursive: true,
Fields: "PrimaryImageAspectRatio",
Filters: "IsUnplayed",
CollapseBoxSetItems: false
CollapseBoxSetItems: false,
ParentId: parentId
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
@ -26,34 +29,6 @@
})).createPosterItemMenus();
});
options = {
SortBy: "DateCreated",
SortOrder: "Descending",
IncludeItemTypes: "Trailer",
Limit: screenWidth >= 1920 ? 8 : (screenWidth >= 1440 ? 8 : 6),
Recursive: true,
Fields: "PrimaryImageAspectRatio",
Filters: "IsUnplayed",
CollapseBoxSetItems: false
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
if (result.Items.length) {
$('#trailerSection', page).show();
} else {
$('#trailerSection', page).hide();
}
$('#trailerItems', page).html(LibraryBrowser.getPosterViewHtml({
items: result.Items
})).createPosterItemMenus();
});
});

View file

@ -37,6 +37,8 @@
$(document).on('pagebeforeshow', "#moviesRecommendedPage", function () {
var parentId = LibraryMenu.getTopParentId();
var screenWidth = $(window).width();
var page = this;
@ -50,7 +52,8 @@
Limit: screenWidth >= 1920 ? 4 : (screenWidth >= 1440 ? 4 : 3),
Recursive: true,
Fields: "PrimaryImageAspectRatio",
CollapseBoxSetItems: false
CollapseBoxSetItems: false,
ParentId: parentId
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
@ -77,7 +80,8 @@
userId: Dashboard.getCurrentUserId(),
categoryLimit: screenWidth >= 1200 ? 6 : 3,
itemLimit: screenWidth >= 1920 ? 8 : (screenWidth >= 1440 ? 8 : 6),
Fields: "PrimaryImageAspectRatio"
Fields: "PrimaryImageAspectRatio",
ParentId: parentId
});
$.getJSON(url).done(function(recommendations) {

View file

@ -11,6 +11,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'moviestudios' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -55,7 +60,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('moviestudios', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -87,6 +92,8 @@
}).on('pagebeforeshow', "#movieStudiosPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -95,7 +102,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('moviestudios', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -11,6 +11,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'musicartists' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -56,7 +61,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('musicartists', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -104,6 +109,8 @@
}).on('pagebeforeshow', "#musicAlbumArtistsPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -112,7 +119,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('musicartists', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -13,6 +13,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'musicalbums' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -72,7 +77,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('musicalbums', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -157,7 +162,7 @@
} else {
reloadItems(page);
}
LibraryBrowser.saveViewSetting('musicalbums', view);
LibraryBrowser.saveViewSetting(getSavedQueryKey(), view);
});
$('.alphabetPicker', page).on('alphaselect', function (e, character) {
@ -184,6 +189,8 @@
}).on('pagebeforeshow', "#musicAlbumsPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var page = this;
var limit = LibraryBrowser.getDefaultPageSize();
@ -193,9 +200,10 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('musicalbums', query);
var viewKey = getSavedQueryKey();
LibraryBrowser.loadSavedQueryValues(viewKey, query);
LibraryBrowser.getSavedViewSetting('musicalbums').done(function (val) {
LibraryBrowser.getSavedViewSetting(viewKey).done(function (val) {
if (val) {
$('#selectView', page).val(val).selectmenu('refresh').trigger('change');

View file

@ -10,6 +10,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'musicartists' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -55,7 +60,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('musicartists', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -103,6 +108,8 @@
}).on('pagebeforeshow', "#musicArtistsPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -111,7 +118,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('musicartists', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -11,6 +11,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'musicgenres' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -56,7 +61,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('musicgenres', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -89,6 +94,8 @@
}).on('pagebeforeshow', "#musicGenresPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -97,7 +104,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('musicgenres', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -6,6 +6,8 @@
var page = this;
var parentId = LibraryMenu.getTopParentId();
var options = {
SortBy: "DateCreated",
@ -13,7 +15,8 @@
IncludeItemTypes: "MusicAlbum",
Limit: screenWidth >= 1920 ? 6 : (screenWidth >= 1440 ? 6 : 5),
Recursive: true,
Fields: "PrimaryImageAspectRatio"
Fields: "PrimaryImageAspectRatio",
ParentId: parentId
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
@ -35,7 +38,8 @@
IncludeItemTypes: "Audio",
Limit: screenWidth >= 1920 ? 6 : (screenWidth >= 1440 ? 6 : 5),
Recursive: true,
Fields: "PrimaryImageAspectRatio,AudioInfo"
Fields: "PrimaryImageAspectRatio,AudioInfo",
ParentId: parentId
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
@ -58,7 +62,8 @@
Limit: screenWidth >= 1920 ? 6 : (screenWidth >= 1440 ? 6 : 5),
Recursive: true,
Fields: "PrimaryImageAspectRatio,AudioInfo",
Filters: "IsPlayed"
Filters: "IsPlayed",
ParentId: parentId
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
@ -87,7 +92,8 @@
Limit: screenWidth >= 1920 ? 12 : (screenWidth >= 1440 ? 12 : 10),
Recursive: true,
Fields: "PrimaryImageAspectRatio,AudioInfo",
Filters: "IsPlayed"
Filters: "IsPlayed",
ParentId: parentId
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {

View file

@ -11,6 +11,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'musicvideos' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -54,7 +59,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('musicvideos', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -210,6 +215,8 @@
}).on('pagebeforeshow', "#musicVideosPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -218,7 +225,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('musicvideos', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -13,9 +13,12 @@
Limit: 200,
StartIndex: 0
};
LibraryBrowser.loadSavedQueryValues('songs', query);
function getSavedQueryKey() {
return 'songs' + (query.ParentId || '');
}
function updateFilterControls(page) {
// Reset form values using the last used query
@ -104,7 +107,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('songs', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -145,6 +148,10 @@
}).on('pagebeforeshow', "#songsPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);
}).on('pageshow', "#songsPage", function () {

View file

@ -11,6 +11,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'tvgenres' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -57,7 +62,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('tvgenres', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -98,6 +103,8 @@
}).on('pagebeforeshow', "#tvGenresPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -106,7 +113,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('tvgenres', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -4,6 +4,8 @@
var screenWidth = $(window).width();
var parentId = LibraryMenu.getTopParentId();
var page = this;
var options = {
@ -15,7 +17,8 @@
Recursive: true,
Fields: "PrimaryImageAspectRatio,SeriesInfo,UserData",
Filters: "IsUnplayed",
ExcludeLocationTypes: "Virtual"
ExcludeLocationTypes: "Virtual",
ParentId: parentId
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {

View file

@ -13,6 +13,11 @@
Limit: 100
};
function getSavedQueryKey() {
return 'tvpeople' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -52,7 +57,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('tvpeople', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -135,7 +140,9 @@
}).on('pagebeforeshow', "#tvPeoplePage", function () {
LibraryBrowser.loadSavedQueryValues('tvpeople', query);
query.ParentId = LibraryMenu.getTopParentId();
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -4,6 +4,8 @@
var screenWidth = $(window).width();
var parentId = LibraryMenu.getTopParentId();
var options = {
SortBy: "DatePlayed",
@ -13,7 +15,8 @@
Limit: screenWidth >= 1920 ? 4 : (screenWidth >= 1440 ? 4 : 3),
Recursive: true,
Fields: "PrimaryImageAspectRatio,SeriesInfo,UserData",
ExcludeLocationTypes: "Virtual"
ExcludeLocationTypes: "Virtual",
ParentId: parentId
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
@ -38,12 +41,15 @@
function loadNextUp(page) {
var parentId = LibraryMenu.getTopParentId();
var options = {
Limit: 24,
Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated",
UserId: Dashboard.getCurrentUserId(),
ExcludeLocationTypes: "Virtual"
ExcludeLocationTypes: "Virtual",
ParentId: parentId
};
ApiClient.getNextUpEpisodes(options).done(function (result) {

View file

@ -13,6 +13,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'tvshows' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -97,7 +102,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('tvshows', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -238,7 +243,7 @@
} else {
reloadItems(page);
}
LibraryBrowser.saveViewSetting('tvshows', view);
LibraryBrowser.saveViewSetting(getSavedQueryKey(), view);
});
$('#chkTrailer', this).on('change', function () {
@ -341,6 +346,8 @@
}).on('pagebeforeshow', "#tvShowsPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var page = this;
var limit = LibraryBrowser.getDefaultPageSize();
@ -350,9 +357,11 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('tvshows', query);
var viewKey = getSavedQueryKey();
LibraryBrowser.getSavedViewSetting('tvshows').done(function (val) {
LibraryBrowser.loadSavedQueryValues(viewKey, query);
LibraryBrowser.getSavedViewSetting(viewKey).done(function (val) {
if (val) {
$('#selectView', page).val(val).selectmenu('refresh').trigger('change');

View file

@ -11,6 +11,11 @@
StartIndex: 0
};
function getSavedQueryKey() {
return 'tvstudios' + (query.ParentId || '');
}
function reloadItems(page) {
Dashboard.showLoadingMsg();
@ -57,7 +62,7 @@
reloadItems(page);
});
LibraryBrowser.saveQueryValues('tvstudios', query);
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.hideLoadingMsg();
});
@ -98,6 +103,8 @@
}).on('pagebeforeshow', "#tvStudiosPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset
@ -106,7 +113,7 @@
query.StartIndex = 0;
}
LibraryBrowser.loadSavedQueryValues('tvstudios', query);
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this);

View file

@ -4,11 +4,14 @@
var page = this;
var parentId = LibraryMenu.getTopParentId();
var query = {
Limit: 32,
Fields: "SeriesInfo,UserData",
UserId: Dashboard.getCurrentUserId()
UserId: Dashboard.getCurrentUserId(),
ParentId: parentId
};
$.getJSON(ApiClient.getUrl("Shows/Upcoming", query)).done(function (result) {