mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
c79be9075a
77 changed files with 1575 additions and 1480 deletions
|
@ -14,6 +14,7 @@
|
|||
$('#txtPortNumber', page).val(config.HttpServerPortNumber);
|
||||
|
||||
$('#txtDdns', page).val(config.WanDdns || '');
|
||||
$('#txtServerName', page).val(config.ServerName || '');
|
||||
|
||||
$('#chkEnableUpnp', page).checked(config.EnableUPnP).checkboxradio('refresh');
|
||||
|
||||
|
@ -52,6 +53,7 @@
|
|||
config.EnableUPnP = $('#chkEnableUpnp', form).checked();
|
||||
|
||||
config.WanDdns = $('#txtDdns', form).val();
|
||||
config.ServerName = $('#txtServerName', form).val();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).done(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
|
|
@ -71,6 +71,9 @@
|
|||
$('#txtMultiEpisodePattern', page).val(tvOptions.MultiEpisodeNamePattern).trigger('change');
|
||||
|
||||
$('#txtDeleteLeftOverFiles', page).val(tvOptions.LeftOverFileExtensionsToDelete.join(';'));
|
||||
|
||||
$('#copyOrMoveFile', page).val(tvOptions.CopyOriginalFile.toString()).selectmenu('refresh');
|
||||
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#libraryFileOrganizerPage", function () {
|
||||
|
@ -150,6 +153,8 @@
|
|||
var watchLocation = $('#txtWatchFolder', form).val();
|
||||
tvOptions.WatchLocations = watchLocation ? [watchLocation] : [];
|
||||
|
||||
tvOptions.CopyOriginalFile = $('#copyOrMoveFile', form).val();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).done(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
var page = this;
|
||||
|
||||
DashboardPage.newsStartIndex = 0;
|
||||
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
DashboardPage.pollForInfo(page);
|
||||
DashboardPage.startInterval();
|
||||
|
@ -58,7 +58,7 @@
|
|||
pagingHtml += '<div>';
|
||||
pagingHtml += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount, false, [], false);
|
||||
pagingHtml += '</div>';
|
||||
|
||||
|
||||
html = html.join('') + pagingHtml;
|
||||
|
||||
var elem = $('.latestNewsItems', page).html(html).trigger('create');
|
||||
|
@ -135,9 +135,9 @@
|
|||
|
||||
var html = '';
|
||||
|
||||
var table = $('.tblConnections', page);
|
||||
var container = $('.connections', page);
|
||||
|
||||
$('.trSession', table).addClass('deadSession');
|
||||
$('.sessionPosterItem', container).addClass('deadSession');
|
||||
|
||||
var deviceId = ApiClient.deviceId();
|
||||
|
||||
|
@ -145,98 +145,181 @@
|
|||
|
||||
var connection = dashboardInfo.ActiveConnections[i];
|
||||
|
||||
var rowId = 'trSession' + connection.Id;
|
||||
var itemId = 'session' + connection.Id;
|
||||
|
||||
var elem = $('#' + rowId, page);
|
||||
var elem = $('#' + itemId, page);
|
||||
|
||||
if (elem.length) {
|
||||
DashboardPage.updateSession(elem, connection);
|
||||
continue;
|
||||
}
|
||||
|
||||
html += '<tr class="trSession" id="' + rowId + '">';
|
||||
|
||||
html += '<td class="clientType" style="text-align:center;">';
|
||||
html += DashboardPage.getClientType(connection);
|
||||
html += '</td>';
|
||||
|
||||
html += '<td>';
|
||||
|
||||
html += '<div>';
|
||||
|
||||
if (deviceId == connection.DeviceId) {
|
||||
html += connection.Client;
|
||||
} else {
|
||||
html += '<a href="#" onclick="RemoteControl.showMenu({sessionId:\'' + connection.Id + '\'});">' + connection.Client + '</a>';
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
html += '<div>' + connection.ApplicationVersion + '</div>';
|
||||
html += '<div>' + connection.DeviceName + '</div>';
|
||||
html += '</td>';
|
||||
|
||||
html += '<td class="username">';
|
||||
html += DashboardPage.getUsersHtml(connection);
|
||||
html += '</td>';
|
||||
html += '<div class="sessionPosterItem posterItem squarePosterItem" id="' + itemId + '" style="vertical-align:top;margin-bottom:2em;">';
|
||||
|
||||
var nowPlayingItem = connection.NowPlayingItem;
|
||||
var imageUrl = DashboardPage.getNowPlayingImage(nowPlayingItem);
|
||||
|
||||
html += '<td class="nowPlayingImage">';
|
||||
html += DashboardPage.getNowPlayingImage(nowPlayingItem);
|
||||
html += '</td>';
|
||||
var style = "";
|
||||
|
||||
html += '<td class="nowPlayingText">';
|
||||
html += DashboardPage.getNowPlayingText(connection, nowPlayingItem);
|
||||
html += '</td>';
|
||||
if (imageUrl) {
|
||||
style += 'background-image:url(\'' + imageUrl + '\');';
|
||||
}
|
||||
|
||||
html += '</tr>';
|
||||
var onclick = connection.DeviceId == deviceId ? '' : ' onclick="RemoteControl.showMenu({sessionId:\'' + connection.Id + '\'});"';
|
||||
|
||||
html += '<a' + onclick + ' data-imageurl="' + imageUrl + '" href="#" class="posterItemImage coveredPosterItemImage" style="' + style + 'background-color:#f2f2f2;display:block;">';
|
||||
|
||||
var defaultTextStyle = '';
|
||||
|
||||
if (nowPlayingItem) {
|
||||
defaultTextStyle = "display:none;";
|
||||
}
|
||||
html += '<div class="posterItemDefaultText" style="' + defaultTextStyle + '">Nothing currently playing</div>';
|
||||
|
||||
html += '<div class="posterItemTextOverlay">';
|
||||
|
||||
var itemNameStyle='';
|
||||
|
||||
if (!nowPlayingItem) {
|
||||
itemNameStyle = "display:none;";
|
||||
}
|
||||
html += '<div class="posterItemText posterItemName" style="' + itemNameStyle + '">' + (nowPlayingItem ? nowPlayingItem.Name : '') + '</div>';
|
||||
|
||||
var progressStyle='';
|
||||
|
||||
if (!nowPlayingItem) {
|
||||
progressStyle = "display:none;";
|
||||
}
|
||||
html += "<div class='posterItemText posterItemProgress' style='" + progressStyle + "'>";
|
||||
|
||||
html += '<progress class="itemProgressBar" min="0" max="100" value="' + DashboardPage.getPlaybackProgress(connection) + '" style="opacity:.9;"></progress>';
|
||||
html += "</div>";
|
||||
html += "</div>";
|
||||
|
||||
html += '<img src="' + DashboardPage.getClientImage(connection) + '" style="top:10px;left:10px;height:24px;position:absolute;opacity: .95;" />';
|
||||
|
||||
html += '</a>';
|
||||
|
||||
html += '<div class="sessionItemText">' + DashboardPage.getSessionItemText(connection) + '</div>';
|
||||
|
||||
//html += '<td class="clientType" style="text-align:center;">';
|
||||
//html += DashboardPage.getClientType(connection);
|
||||
//html += '</td>';
|
||||
|
||||
//html += '<td>';
|
||||
|
||||
//html += '<div>';
|
||||
|
||||
//if (deviceId == connection.DeviceId) {
|
||||
// html += connection.Client;
|
||||
//} else {
|
||||
// html += '<a href="#" onclick="RemoteControl.showMenu({sessionId:\'' + connection.Id + '\'});">' + connection.Client + '</a>';
|
||||
//}
|
||||
//html += '</div>';
|
||||
|
||||
//html += '</td>';
|
||||
|
||||
//html += '<td class="nowPlayingImage">';
|
||||
//html += DashboardPage.getNowPlayingImage(nowPlayingItem);
|
||||
//html += '</td>';
|
||||
|
||||
//html += '<td class="nowPlayingText">';
|
||||
//html += DashboardPage.getNowPlayingText(connection, nowPlayingItem);
|
||||
//html += '</td>';
|
||||
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
table.append(html).trigger('create');
|
||||
container.append(html).trigger('create');
|
||||
|
||||
$('.deadSession', table).remove();
|
||||
$('.deadSession', container).remove();
|
||||
},
|
||||
|
||||
getPlaybackProgress: function (session) {
|
||||
|
||||
if (session.NowPlayingItem) {
|
||||
if (session.NowPlayingItem.RunTimeTicks) {
|
||||
|
||||
var pct = (session.NowPlayingPositionTicks || 0) / session.NowPlayingItem.RunTimeTicks;
|
||||
|
||||
return pct * 100;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
getUsersHtml: function (session) {
|
||||
|
||||
var html = '';
|
||||
var html = '<div>';
|
||||
|
||||
if (session.UserId) {
|
||||
html += '<div><a href="useredit.html?userid=' + session.UserId + '">' + session.UserName + '</a><div>';
|
||||
html += session.UserName;
|
||||
}
|
||||
|
||||
html += session.AdditionalUsers.map(function (currentSession) {
|
||||
|
||||
return '<div><a href="useredit.html?userid=' + currentSession.UserId + '">' + currentSession.UserName + '</a><div>';
|
||||
return ', ' + currentSession.UserName;
|
||||
});
|
||||
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
},
|
||||
|
||||
updateSession: function (row, session) {
|
||||
updateSession: function (elem, session) {
|
||||
|
||||
row.removeClass('deadSession');
|
||||
elem.removeClass('deadSession');
|
||||
|
||||
$('.username', row).html(DashboardPage.getUsersHtml(session)).trigger('create');
|
||||
$('.sessionItemText', elem).html(DashboardPage.getSessionItemText(session));
|
||||
|
||||
var nowPlayingItem = session.NowPlayingItem;
|
||||
|
||||
$('.nowPlayingText', row).html(DashboardPage.getNowPlayingText(session, nowPlayingItem)).trigger('create');
|
||||
if (nowPlayingItem) {
|
||||
$('.posterItemDefaultText', elem).hide();
|
||||
$('.posterItemProgress', elem).show();
|
||||
$('.posterItemName', elem).show().html(nowPlayingItem.Name);
|
||||
|
||||
var imageRow = $('.nowPlayingImage', row);
|
||||
$('progress', elem).val(DashboardPage.getPlaybackProgress(session));
|
||||
} else {
|
||||
$('.posterItemDefaultText', elem).show();
|
||||
$('.posterItemProgress', elem).hide();
|
||||
$('.posterItemName', elem).hide().html('');
|
||||
}
|
||||
|
||||
var image = $('img', imageRow)[0];
|
||||
var imageUrl = DashboardPage.getNowPlayingImage(nowPlayingItem);
|
||||
|
||||
var nowPlayingItemId = nowPlayingItem ? nowPlayingItem.Id : null;
|
||||
var nowPlayingItemImageTag = nowPlayingItem ? nowPlayingItem.PrimaryImageTag : null;
|
||||
var image = $('.posterItemImage', elem)[0];
|
||||
|
||||
if (!image || image.getAttribute('data-itemid') != nowPlayingItemId || image.getAttribute('data-tag') != nowPlayingItemImageTag) {
|
||||
imageRow.html(DashboardPage.getNowPlayingImage(nowPlayingItem));
|
||||
if (imageUrl && imageUrl != image.getAttribute('data-imageurl')) {
|
||||
|
||||
image.style.backgroundImage = 'url(\'' + imageUrl + '\')';
|
||||
image.setAttribute('data-imageurl', imageUrl);
|
||||
|
||||
} else if (!imageUrl && image.getAttribute('data-imageurl')) {
|
||||
|
||||
image.style.backgroundImage = null;
|
||||
image.setAttribute('data-imageurl', '');
|
||||
}
|
||||
},
|
||||
|
||||
getClientType: function (connection) {
|
||||
getSessionItemText: function (connection) {
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<div class="posterItemText">';
|
||||
html += DashboardPage.getUsersHtml(connection);
|
||||
html += '</div>';
|
||||
|
||||
//html += '<div class="posterItemText">' + connection.Client + '</div>';
|
||||
//html += '<div class="posterItemText">' + connection.ApplicationVersion + '</div>';
|
||||
|
||||
html += '<div class="posterItemText">' + connection.DeviceName + '</div>';
|
||||
|
||||
return html;
|
||||
},
|
||||
|
||||
getClientImage: function (connection) {
|
||||
|
||||
var clientLowered = connection.Client.toLowerCase();
|
||||
|
||||
|
@ -262,91 +345,81 @@
|
|||
imgUrl = 'css/images/clients/html5.png';
|
||||
}
|
||||
|
||||
return "<img src='" + imgUrl + "' alt='Dashboard' />";
|
||||
return imgUrl;
|
||||
}
|
||||
if (clientLowered == "mb-classic") {
|
||||
|
||||
return "<img src='css/images/clients/mbc.png' alt='Media Browser Classic' />";
|
||||
return "css/images/clients/mbc.png";
|
||||
}
|
||||
if (clientLowered == "media browser theater") {
|
||||
|
||||
return "<img src='css/images/clients/mb.png' alt='Media Browser Theater' />";
|
||||
return "css/images/clients/mb.png";
|
||||
}
|
||||
if (clientLowered == "android") {
|
||||
|
||||
return "<img src='css/images/clients/android.png' alt='Android' />";
|
||||
return "css/images/clients/android.png";
|
||||
}
|
||||
if (clientLowered == "roku") {
|
||||
|
||||
return "<img src='css/images/clients/roku.jpg' alt='Roku' />";
|
||||
return "css/images/clients/roku.jpg";
|
||||
}
|
||||
if (clientLowered == "ios") {
|
||||
|
||||
return "<img src='css/images/clients/ios.png' alt='iOS' />";
|
||||
return "css/images/clients/ios.png";
|
||||
}
|
||||
if (clientLowered == "windows rt") {
|
||||
|
||||
return "<img src='css/images/clients/windowsrt.png' alt='Windows RT' />";
|
||||
return "css/images/clients/windowsrt.png";
|
||||
}
|
||||
if (clientLowered == "windows phone") {
|
||||
|
||||
return "<img src='css/images/clients/windowsphone.png' alt='Windows Phone' />";
|
||||
return "css/images/clients/windowsphone.png";
|
||||
}
|
||||
if (clientLowered == "dlna") {
|
||||
|
||||
return "<img src='css/images/clients/dlna.png' alt='Dlna' />";
|
||||
return "css/images/clients/dlna.png";
|
||||
}
|
||||
if (clientLowered == "mbkinect") {
|
||||
|
||||
return "<img src='css/images/clients/mbkinect.png' alt='MB Kinect' />";
|
||||
return "css/images/clients/mbkinect.png";
|
||||
}
|
||||
if (clientLowered == "xbmc") {
|
||||
|
||||
return "<img src='css/images/clients/xbmc.png' alt='Xbmc' />";
|
||||
return "css/images/clients/xbmc.png";
|
||||
}
|
||||
|
||||
return connection.Client;
|
||||
return "css/images/clients/mb.png";
|
||||
},
|
||||
|
||||
getNowPlayingImage: function (item) {
|
||||
|
||||
if (item && item.ThumbItemId) {
|
||||
return ApiClient.getImageUrl(item.ThumbItemId, {
|
||||
type: "Thumb",
|
||||
height: 300,
|
||||
tag: item.ThumbImageTag
|
||||
});
|
||||
}
|
||||
|
||||
if (item && item.BackdropItemId) {
|
||||
return ApiClient.getImageUrl(item.BackdropItemId, {
|
||||
type: "Backdrop",
|
||||
height: 300,
|
||||
tag: item.BackdropImageTag
|
||||
});
|
||||
}
|
||||
|
||||
if (item && item.PrimaryImageTag) {
|
||||
var url = ApiClient.getImageUrl(item.Id, {
|
||||
return ApiClient.getImageUrl(item.Id, {
|
||||
type: "Primary",
|
||||
height: 100,
|
||||
height: 300,
|
||||
tag: item.PrimaryImageTag
|
||||
});
|
||||
|
||||
url += "&xxx=" + new Date().getTime();
|
||||
|
||||
return "<img data-itemid='" + item.Id + "' data-tag='" + item.PrimaryImageTag + "' class='clientNowPlayingImage' src='" + url + "' alt='" + item.Name + "' title='" + item.Name + "' />";
|
||||
}
|
||||
|
||||
return "";
|
||||
},
|
||||
|
||||
getNowPlayingText: function (connection, item) {
|
||||
|
||||
var html = "";
|
||||
|
||||
if (item) {
|
||||
|
||||
html += "<div><a href='itemdetails.html?id=" + item.Id + "'>" + item.Name + "</a></div>";
|
||||
|
||||
html += "<div>";
|
||||
|
||||
if (item.RunTimeTicks) {
|
||||
html += Dashboard.getDisplayTime(connection.NowPlayingPositionTicks || 0) + " / ";
|
||||
|
||||
html += Dashboard.getDisplayTime(item.RunTimeTicks);
|
||||
}
|
||||
|
||||
html += "</div>";
|
||||
}
|
||||
|
||||
return html;
|
||||
},
|
||||
|
||||
renderRunningTasks: function (dashboardInfo) {
|
||||
|
||||
var page = $.mobile.activePage;
|
||||
|
@ -422,9 +495,9 @@
|
|||
DashboardPage.renderPluginUpdateInfo(page, dashboardInfo);
|
||||
DashboardPage.renderPendingInstallations(page, dashboardInfo.SystemInfo);
|
||||
},
|
||||
|
||||
|
||||
renderUrls: function (page, systemInfo) {
|
||||
|
||||
|
||||
var url = ApiClient.serverAddress() + "/mediabrowser";
|
||||
|
||||
$('#bookmarkUrl', page).html(url).attr("href", url);
|
||||
|
|
45
dashboard-ui/scripts/dlnasettings.js
Normal file
45
dashboard-ui/scripts/dlnasettings.js
Normal file
|
@ -0,0 +1,45 @@
|
|||
(function ($, document, window) {
|
||||
|
||||
function loadPage(page, config) {
|
||||
|
||||
$('#chkEnablePlayTo', page).checked(config.DlnaOptions.EnablePlayTo).checkboxradio("refresh");
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
$(document).on('pageshow', "#dlnaSettingsPage", function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
||||
ApiClient.getServerConfiguration().done(function (config) {
|
||||
|
||||
loadPage(page, config);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function onSubmit() {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var form = this;
|
||||
|
||||
ApiClient.getServerConfiguration().done(function (config) {
|
||||
|
||||
config.DlnaOptions.EnablePlayTo = $('#chkEnablePlayTo', form).checked();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).done(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
|
||||
window.DlnaSettingsPage = {
|
||||
onSubmit: onSubmit
|
||||
};
|
||||
|
||||
})(jQuery, document, window);
|
306
dashboard-ui/scripts/editcollectionitems.js
Normal file
306
dashboard-ui/scripts/editcollectionitems.js
Normal file
|
@ -0,0 +1,306 @@
|
|||
(function ($, document, window, FileReader, escape) {
|
||||
|
||||
var currentItem;
|
||||
|
||||
function updateTabs(page, item) {
|
||||
|
||||
var query = MetadataEditor.getEditQueryString(item);
|
||||
|
||||
$('#btnEditMetadata', page).attr('href', 'edititemmetadata.html?' + query);
|
||||
$('#btnEditImages', page).attr('href', 'edititemimages.html?' + query);
|
||||
}
|
||||
|
||||
function reload(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
$('#btnRemoveItems', page).buttonEnabled(false);
|
||||
|
||||
MetadataEditor.getItemPromise().done(function (item) {
|
||||
|
||||
currentItem = item;
|
||||
|
||||
LibraryBrowser.renderName(item, $('.itemName', page), true);
|
||||
|
||||
updateTabs(page, item);
|
||||
|
||||
reloadTitles(page, item);
|
||||
});
|
||||
}
|
||||
|
||||
function getTitleHtml(item) {
|
||||
|
||||
var html = '<div style="display:inline-block;margin:5px;vertical-align:top;">';
|
||||
|
||||
html += '<div style="width:120px;height:180px;">';
|
||||
if (item.ImageTags.Primary) {
|
||||
|
||||
var imgUrl = ApiClient.getImageUrl(item.Id, {
|
||||
type: "Primary",
|
||||
width: 300,
|
||||
tag: item.ImageTags.Primary
|
||||
});
|
||||
|
||||
html += '<img src="' + imgUrl + '" style="max-width:120px;max-height:180px;" />';
|
||||
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
html += '<div style="text-align:center;margin-top:4px;max-width:100px;overflow:hidden;height: 32px;">' + item.Name + '</div>';
|
||||
|
||||
if (item.ParentId != currentItem.Id) {
|
||||
html += '<label for="chkRemove' + item.Id + '">Remove</label><input id="chkRemove' + item.Id + '" class="chkRemoveItem" type="checkbox" data-itemid="' + item.Id + '" data-mini="true" />';
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function getSearchResultHtml(item) {
|
||||
|
||||
var html = '<div style="display:inline-block;margin:3px;vertical-align:top;">';
|
||||
|
||||
html += '<div style="width:100px;height:150px;">';
|
||||
|
||||
if (item.PrimaryImageTag) {
|
||||
|
||||
var imgUrl = ApiClient.getImageUrl(item.ItemId, {
|
||||
type: "Primary",
|
||||
width: 200,
|
||||
tag: item.PrimaryImageTag
|
||||
});
|
||||
|
||||
html += '<img src="' + imgUrl + '" style="max-width:100px;max-height:150px;" />';
|
||||
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
html += '<div style="text-align:center;margin-top:4px;max-width:100px;overflow:hidden;height: 32px;">' + item.Name + '</div>';
|
||||
|
||||
html += '<label for="chkAdd' + item.ItemId + '">Add</label><input id="chkAdd' + item.ItemId + '" class="chkAddItem" type="checkbox" data-itemid="' + item.ItemId + '" data-mini="true" />';
|
||||
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function reloadTitles(page, item) {
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), {
|
||||
|
||||
ParentId: item.Id
|
||||
|
||||
}).done(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
$(document).scrollTop(0);
|
||||
|
||||
var html = result.Items.map(getTitleHtml).join('');
|
||||
|
||||
var elem = $('.collectionItems', page).html(html).trigger('create');
|
||||
|
||||
$('.chkRemoveItem', elem).on('change', function () {
|
||||
|
||||
if ($('.chkRemoveItem:checked', elem).length) {
|
||||
$('#btnRemoveItems', page).buttonEnabled(true);
|
||||
} else {
|
||||
$('#btnRemoveItems', page).buttonEnabled(false);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function showSearchResults(page, searchTerm) {
|
||||
|
||||
ApiClient.getSearchHints({
|
||||
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
searchTerm: searchTerm,
|
||||
limit: 30,
|
||||
|
||||
includePeople: false,
|
||||
includeGenres: false,
|
||||
includeStudios: false,
|
||||
includeArtists: false,
|
||||
|
||||
IncludeItemTypes: "Movie,Series,Game,MusicAlbum,Book"
|
||||
|
||||
}).done(function (result) {
|
||||
|
||||
renderSearchResults(page, result.SearchHints);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function renderSearchResults(page, items) {
|
||||
|
||||
var existingIds = $('.chkRemoveItem', page).get().map(function (c) {
|
||||
return c.getAttribute('data-itemid');
|
||||
});
|
||||
|
||||
var html = items.filter(function (i) {
|
||||
|
||||
return existingIds.indexOf(i.ItemId) == -1;
|
||||
|
||||
}).map(getSearchResultHtml).join('');
|
||||
|
||||
var elem = $('.collectionItemSearchResults', page).html(html).trigger('create');
|
||||
|
||||
$('.chkAddItem', elem).on('change', function () {
|
||||
|
||||
if ($('.chkAddItem:checked', elem).length) {
|
||||
$('#btnAddItems', page).buttonEnabled(true);
|
||||
} else {
|
||||
$('#btnAddItems', page).buttonEnabled(false);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function addItemsToCollection(page) {
|
||||
|
||||
var items = $('.chkAddItem:checked', page).get().map(function (c) {
|
||||
|
||||
return c.getAttribute('data-itemid');
|
||||
|
||||
});
|
||||
|
||||
if (!items.length) {
|
||||
Dashboard.alert('Please select at least one item.');
|
||||
return;
|
||||
}
|
||||
|
||||
var url = ApiClient.getUrl("Collections/" + currentItem.Id + "/Items", {
|
||||
|
||||
Ids: items.join(',')
|
||||
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: url
|
||||
|
||||
}).done(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
$('.popupIdentify', page).popup('close');
|
||||
|
||||
reload(page);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function removeItemsFromCollection(page) {
|
||||
var items = $('.chkRemoveItem:checked', page).get().map(function (c) {
|
||||
|
||||
return c.getAttribute('data-itemid');
|
||||
|
||||
});
|
||||
|
||||
if (!items.length) {
|
||||
Dashboard.alert('Please select at least one item.');
|
||||
return;
|
||||
}
|
||||
|
||||
var url = ApiClient.getUrl("Collections/" + currentItem.Id + "/Items", {
|
||||
|
||||
Ids: items.join(',')
|
||||
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url: url
|
||||
|
||||
}).done(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
reload(page);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#editCollectionTitlesPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.libraryTree', page).on('itemclicked', function (event, data) {
|
||||
|
||||
if (data.itemType == "libraryreport") {
|
||||
Dashboard.navigate('libraryreport.html');
|
||||
return;
|
||||
}
|
||||
|
||||
if (data.itemType == "livetvservice") {
|
||||
return;
|
||||
}
|
||||
|
||||
if (data.id != currentItem.Id) {
|
||||
|
||||
MetadataEditor.currentItemId = data.id;
|
||||
MetadataEditor.currentItemName = data.itemName;
|
||||
MetadataEditor.currentItemType = data.itemType;
|
||||
//Dashboard.navigate('edititemmetadata.html?id=' + data.id);
|
||||
|
||||
//$.mobile.urlHistory.ignoreNextHashChange = true;
|
||||
window.location.hash = 'editItemImagesPage?id=' + data.id;
|
||||
|
||||
reload(page);
|
||||
}
|
||||
});
|
||||
|
||||
$('#btnAddItem', page).on('click', function () {
|
||||
|
||||
|
||||
var popup = $('.popupIdentify', page).popup('open');
|
||||
|
||||
$('#txtLookupName', popup).val('');
|
||||
$('.collectionItemSearchResults', popup).empty();
|
||||
$('#btnAddItems', popup).buttonEnabled(false);
|
||||
});
|
||||
|
||||
$('#btnAddItems', page).on('click', function () {
|
||||
|
||||
addItemsToCollection(page);
|
||||
});
|
||||
|
||||
$('#btnRemoveItems', page).on('click', function () {
|
||||
|
||||
|
||||
removeItemsFromCollection(page);
|
||||
});
|
||||
|
||||
}).on('pagebeforeshow', "#editCollectionTitlesPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
reload(page);
|
||||
|
||||
}).on('pagehide', "#editCollectionTitlesPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
currentItem = null;
|
||||
|
||||
});
|
||||
|
||||
window.EditCollectionItemsPage = {
|
||||
|
||||
onSearchFormSubmit: function () {
|
||||
|
||||
var page = $(this).parents('.page');
|
||||
|
||||
showSearchResults(page, $('#txtLookupName', page).val());
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
})(jQuery, document, window, window.FileReader, escape);
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
$('#btnEditPeople', page).attr('href', 'edititempeople.html?' + query);
|
||||
$('#btnEditMetadata', page).attr('href', 'edititemmetadata.html?' + query);
|
||||
$('#btnEditCollectionTitles', page).attr('href', 'editcollectionitems.html?' + query);
|
||||
}
|
||||
|
||||
function getBaseRemoteOptions() {
|
||||
|
@ -268,12 +269,18 @@
|
|||
|
||||
updateTabs(page, item);
|
||||
|
||||
if (item.Type == "Person" || item.Type == "Studio" || item.Type == "MusicGenre" || item.Type == "Genre" || item.Type == "MusicArtist" || item.Type == "GameGenre" || item.Type == "Channel") {
|
||||
if (item.Type == "Person" || item.Type == "Studio" || item.Type == "MusicGenre" || item.Type == "Genre" || item.Type == "MusicArtist" || item.Type == "GameGenre" || item.Type == "Channel" || item.Type == "BoxSet") {
|
||||
$('#btnEditPeople', page).hide();
|
||||
} else {
|
||||
$('#btnEditPeople', page).show();
|
||||
}
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
$('#btnEditCollectionTitles', page).show();
|
||||
} else {
|
||||
$('#btnEditCollectionTitles', page).hide();
|
||||
}
|
||||
|
||||
ApiClient.getRemoteImageProviders(getBaseRemoteOptions()).done(function (providers) {
|
||||
|
||||
if (providers.length) {
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
$('#btnEditPeople', page).attr('href', 'edititempeople.html?' + query);
|
||||
$('#btnEditImages', page).attr('href', 'edititemimages.html?' + query);
|
||||
$('#btnEditCollectionTitles', page).attr('href', 'editcollectionitems.html?' + query);
|
||||
}
|
||||
|
||||
function reload(page) {
|
||||
|
@ -82,12 +83,18 @@
|
|||
setFieldVisibilities(page, item);
|
||||
fillItemInfo(page, item);
|
||||
|
||||
if (item.Type == "Person" || item.Type == "Studio" || item.Type == "MusicGenre" || item.Type == "Genre" || item.Type == "MusicArtist" || item.Type == "GameGenre" || item.Type == "Channel") {
|
||||
if (item.Type == "Person" || item.Type == "Studio" || item.Type == "MusicGenre" || item.Type == "Genre" || item.Type == "MusicArtist" || item.Type == "GameGenre" || item.Type == "Channel" || item.Type == "BoxSet") {
|
||||
$('#btnEditPeople', page).hide();
|
||||
} else {
|
||||
$('#btnEditPeople', page).show();
|
||||
}
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
$('#btnEditCollectionTitles', page).show();
|
||||
} else {
|
||||
$('#btnEditCollectionTitles', page).hide();
|
||||
}
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
@ -280,7 +287,17 @@
|
|||
$('#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();
|
||||
} else {
|
||||
$('#btnIdentify', page).hide();
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
$('#btnEditMetadata', page).attr('href', 'edititemmetadata.html?' + query);
|
||||
$('#btnEditImages', page).attr('href', 'edititemimages.html?' + query);
|
||||
$('#btnEditCollectionTitles', page).attr('href', 'editcollectionitems.html?' + query);
|
||||
}
|
||||
|
||||
function reload(page) {
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
}
|
||||
|
||||
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." />';
|
||||
}
|
||||
}
|
||||
|
@ -114,6 +114,13 @@
|
|||
nodes.push({ attr: { id: 'libraryreport', rel: 'default', itemtype: 'libraryreport' }, data: 'Reports' });
|
||||
|
||||
callback(nodes);
|
||||
|
||||
if (!selectedId) {
|
||||
|
||||
if (window.location.toString().toLowerCase().indexOf('report.html') != -1) {
|
||||
selectedId = 'libraryreport';
|
||||
}
|
||||
}
|
||||
|
||||
if (selectedId && nodes.filter(function (f) {
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Episode",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,SeriesInfo,PrimaryImageAspectRatio",
|
||||
Fields: "SeriesInfo,PrimaryImageAspectRatio",
|
||||
StartIndex: 0,
|
||||
IsMissing: false,
|
||||
IsVirtualUnaired: false
|
||||
|
|
|
@ -25,9 +25,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
|
@ -65,36 +62,12 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#gameGenresPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
|
@ -66,36 +63,12 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#gameStudiosPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -174,7 +174,7 @@
|
|||
var views = [];
|
||||
|
||||
if (counts.MovieCount || counts.TrailerCount) {
|
||||
views.push({ id: "moviesView", name: "Movies", url: "moviesrecommended.html", img: "css/images/items/list/chapter.png", background: "#0094FF" });
|
||||
views.push({ id: "moviesView", name: "Movies", url: "movieslatest.html", img: "css/images/items/list/chapter.png", background: "#0094FF" });
|
||||
}
|
||||
|
||||
if (counts.EpisodeCount || counts.SeriesCount) {
|
||||
|
|
|
@ -396,7 +396,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio",
|
||||
Fields: "AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio",
|
||||
Limit: LibraryBrowser.getDefaultPageSize(),
|
||||
StartIndex: 0
|
||||
};
|
||||
|
@ -477,10 +477,11 @@
|
|||
}
|
||||
else {
|
||||
|
||||
html += LibraryBrowser.getPosterDetailViewHtml({
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
preferBackdrop: shape == "backdrop",
|
||||
shape: shape
|
||||
shape: "square",
|
||||
useAverageAspectRatio: true,
|
||||
showTitle: true
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
if (user.Configuration.IsAdministrator) {
|
||||
$('#editButtonContainer', page).show();
|
||||
|
||||
} else {
|
||||
$('#editButtonContainer', page).hide();
|
||||
}
|
||||
|
@ -122,7 +123,7 @@
|
|||
if (item.Type == "Episode" || item.Type == "Series" || item.Type == "Season") {
|
||||
return "tv";
|
||||
}
|
||||
if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "BoxSet") {
|
||||
if (item.Type == "Movie" || item.Type == "Trailer") {
|
||||
return "movies";
|
||||
}
|
||||
if (item.Type == "Audio" || item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "MusicVideo") {
|
||||
|
@ -131,6 +132,9 @@
|
|||
if (item.MediaType == "Game") {
|
||||
return "games";
|
||||
}
|
||||
if (item.Type == "BoxSet") {
|
||||
return "boxsets";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
@ -162,10 +166,6 @@
|
|||
$('#gameSystemTabs', page).show();
|
||||
}
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
$('#boxsetTabs', page).show();
|
||||
}
|
||||
|
||||
if (item.Type == "Trailer") {
|
||||
$('#trailerTabs', page).show();
|
||||
}
|
||||
|
@ -177,8 +177,15 @@
|
|||
|
||||
function setInitialCollapsibleState(page, item, context, user) {
|
||||
|
||||
$('.collectionItems', page).empty();
|
||||
|
||||
if (item.IsFolder) {
|
||||
$('#childrenCollapsible', page).removeClass('hide');
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
$('#childrenCollapsible', page).addClass('hide');
|
||||
} else {
|
||||
$('#childrenCollapsible', page).removeClass('hide');
|
||||
}
|
||||
renderChildren(page, item, user);
|
||||
}
|
||||
else {
|
||||
|
@ -346,7 +353,7 @@
|
|||
ApiClient.getItems(Dashboard.getCurrentUserId(), {
|
||||
|
||||
Ids: item.SoundtrackIds.join(","),
|
||||
ItemFields: "PrimaryImageAspectRatio,ItemCounts,DateCreated,AudioInfo",
|
||||
ItemFields: "PrimaryImageAspectRatio,ItemCounts,AudioInfo",
|
||||
SortBy: "SortName"
|
||||
|
||||
}).done(function (result) {
|
||||
|
@ -425,7 +432,7 @@
|
|||
var options = {
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
limit: item.Type == "MusicAlbum" ? 4 : 5,
|
||||
fields: "PrimaryImageAspectRatio,DateCreated,UserData"
|
||||
fields: "PrimaryImageAspectRatio,UserData"
|
||||
};
|
||||
|
||||
if (item.Type == "Movie") {
|
||||
|
@ -527,7 +534,7 @@
|
|||
|
||||
function renderChildren(page, item, user) {
|
||||
|
||||
var fields = "ItemCounts,DateCreated,AudioInfo,PrimaryImageAspectRatio";
|
||||
var fields = "ItemCounts,AudioInfo,PrimaryImageAspectRatio";
|
||||
|
||||
var query = {
|
||||
ParentId: item.Id,
|
||||
|
@ -570,15 +577,9 @@
|
|||
|
||||
} else {
|
||||
|
||||
var shape = "smallPoster";
|
||||
var html = '';
|
||||
|
||||
if (item.Type == "Season") {
|
||||
shape = "smallBackdrop";
|
||||
}
|
||||
|
||||
var html;
|
||||
|
||||
if (item.Type == "Series" || item.Type == "BoxSet") {
|
||||
if (item.Type == "Series") {
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
|
@ -606,18 +607,21 @@
|
|||
centerText: true
|
||||
});
|
||||
}
|
||||
else {
|
||||
html = LibraryBrowser.getPosterDetailViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true,
|
||||
shape: shape,
|
||||
showParentName: false,
|
||||
displayAsSpecial: item.Type == "Season" && item.IndexNumber
|
||||
});
|
||||
}
|
||||
|
||||
$('#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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -627,9 +631,6 @@
|
|||
else if (item.Type == "Series") {
|
||||
$('#childrenTitle', page).html('Seasons');
|
||||
}
|
||||
else if (item.Type == "BoxSet") {
|
||||
$('#childrenTitle', page).html('Titles');
|
||||
}
|
||||
else if (item.Type == "MusicAlbum") {
|
||||
$('#childrenTitle', page).html('Tracks');
|
||||
}
|
||||
|
@ -640,6 +641,82 @@
|
|||
$('#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) {
|
||||
$('.userDataIcons', page).html(LibraryBrowser.getUserDataIconsHtml(item));
|
||||
}
|
||||
|
|
|
@ -34,14 +34,23 @@
|
|||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
if (view == "Backdrop") {
|
||||
html += LibraryBrowser.getPosterDetailViewHtml({
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "smallBackdrop",
|
||||
useAverageAspectRatio: true,
|
||||
showTitle: true,
|
||||
centerText: true,
|
||||
preferBackdrop: true
|
||||
});
|
||||
}
|
||||
else if (view == "Poster") {
|
||||
html += LibraryBrowser.getPosterDetailViewHtml({
|
||||
items: result.Items
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
useAverageAspectRatio: true,
|
||||
showTitle: true,
|
||||
centerText: true
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -71,219 +71,6 @@
|
|||
return "" + d.getFullYear() + formatDigit(d.getMonth() + 1) + formatDigit(d.getDate()) + formatDigit(d.getHours()) + formatDigit(d.getMinutes()) + formatDigit(d.getSeconds());
|
||||
},
|
||||
|
||||
getPosterDetailViewHtml: function (options) {
|
||||
|
||||
var items = options.items;
|
||||
var currentIndexValue;
|
||||
|
||||
if (!options.shape) {
|
||||
options.shape = options.preferBackdrop ? "backdrop" : "poster";
|
||||
}
|
||||
|
||||
var html = '';
|
||||
|
||||
for (var i = 0, length = items.length; i < length; i++) {
|
||||
|
||||
var item = items[i];
|
||||
|
||||
if (options.timeline) {
|
||||
var year = item.ProductionYear || "Unknown Year";
|
||||
|
||||
if (year != currentIndexValue) {
|
||||
|
||||
html += '<h2 class="timelineHeader detailSectionHeader">' + year + '</h2>';
|
||||
currentIndexValue = year;
|
||||
}
|
||||
}
|
||||
|
||||
var imgUrl = null;
|
||||
var isDefault = false;
|
||||
var height = null;
|
||||
|
||||
var cssClass = "tileItem";
|
||||
|
||||
if (options.shape) {
|
||||
cssClass += " " + options.shape + "TileItem";
|
||||
}
|
||||
|
||||
html += '<a class="' + cssClass + '" href="' + LibraryBrowser.getHref(item, options.context) + '">';
|
||||
|
||||
if (options.preferBackdrop && item.BackdropImageTags && item.BackdropImageTags.length) {
|
||||
|
||||
imgUrl = LibraryBrowser.getImageUrl(item, 'Backdrop', 0, {
|
||||
height: 198,
|
||||
width: 352
|
||||
});
|
||||
|
||||
}
|
||||
else if (options.preferBackdrop && item.ImageTags && item.ImageTags.Thumb) {
|
||||
|
||||
imgUrl = ApiClient.getImageUrl(item.Id, {
|
||||
type: "Thumb",
|
||||
height: 198,
|
||||
width: 352,
|
||||
tag: item.ImageTags.Thumb
|
||||
});
|
||||
}
|
||||
else if (item.ImageTags && item.ImageTags.Primary) {
|
||||
|
||||
height = 300;
|
||||
|
||||
imgUrl = LibraryBrowser.getImageUrl(item, 'Primary', 0, {
|
||||
maxheight: height
|
||||
});
|
||||
|
||||
}
|
||||
else if (item.AlbumId && item.AlbumPrimaryImageTag) {
|
||||
|
||||
height = 300;
|
||||
|
||||
imgUrl = ApiClient.getImageUrl(item.AlbumId, {
|
||||
type: "Primary",
|
||||
height: 100,
|
||||
tag: item.AlbumPrimaryImageTag
|
||||
});
|
||||
|
||||
}
|
||||
else if (item.BackdropImageTags && item.BackdropImageTags.length) {
|
||||
|
||||
imgUrl = LibraryBrowser.getImageUrl(item, 'Backdrop', 0, {
|
||||
height: 198,
|
||||
width: 352
|
||||
});
|
||||
}
|
||||
else if (item.MediaType == "Audio" || item.Type == "MusicAlbum" || item.Type == "MusicArtist") {
|
||||
|
||||
imgUrl = "css/images/items/list/audio.png";
|
||||
isDefault = true;
|
||||
}
|
||||
else if (item.MediaType == "Video" || item.Type == "Season" || item.Type == "Series") {
|
||||
|
||||
imgUrl = "css/images/items/list/video.png";
|
||||
isDefault = true;
|
||||
}
|
||||
else if (item.Type == "Person") {
|
||||
|
||||
imgUrl = "css/images/items/list/person.png";
|
||||
isDefault = true;
|
||||
}
|
||||
else if (item.Type == "MusicArtist") {
|
||||
|
||||
imgUrl = "css/images/items/list/audiocollection.png";
|
||||
isDefault = true;
|
||||
}
|
||||
else if (item.MediaType == "Game") {
|
||||
|
||||
imgUrl = "css/images/items/list/game.png";
|
||||
isDefault = true;
|
||||
}
|
||||
else if (item.Type == "Studio" || item.Type == "Genre" || item.Type == "MusicGenre" || item.Type == "GameGenre") {
|
||||
|
||||
if (options.context == "games") {
|
||||
|
||||
imgUrl = "css/images/items/list/game.png";
|
||||
}
|
||||
else if (options.context == "music") {
|
||||
|
||||
imgUrl = "css/images/items/list/audio.png";
|
||||
}
|
||||
else if (options.context == "movies") {
|
||||
|
||||
imgUrl = "css/images/items/list/chapter.png";
|
||||
}
|
||||
else {
|
||||
imgUrl = "css/images/items/list/collection.png";
|
||||
}
|
||||
isDefault = true;
|
||||
}
|
||||
else {
|
||||
|
||||
imgUrl = "css/images/items/list/collection.png";
|
||||
isDefault = true;
|
||||
}
|
||||
|
||||
cssClass = isDefault ? "tileImage defaultTileImage" : "tileImage";
|
||||
|
||||
html += '<div class="' + cssClass + '" style="background-image: url(\'' + imgUrl + '\');"></div>';
|
||||
|
||||
html += '<div class="tileContent">';
|
||||
|
||||
if (options.showParentName !== false) {
|
||||
if (item.SeriesName || item.Album || item.AlbumArtist) {
|
||||
var seriesName = item.SeriesName || item.Album || item.AlbumArtist;
|
||||
html += '<div class="tileName">' + seriesName + '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
var name = LibraryBrowser.getPosterViewDisplayName(item, options.displayAsSpecial);
|
||||
|
||||
html += '<div class="tileName">' + name + '</div>';
|
||||
|
||||
if (item.CommunityRating || item.CriticRating) {
|
||||
html += '<p>' + LibraryBrowser.getRatingHtml(item) + '</p>';
|
||||
}
|
||||
|
||||
var childText = null;
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
|
||||
childText = item.ChildCount == 1 ? "1 Movie" : item.ChildCount + " Movies";
|
||||
|
||||
html += '<p class="itemMiscInfo">' + childText + '</p>';
|
||||
}
|
||||
else if (item.Type == "GameSystem") {
|
||||
|
||||
childText = item.ChildCount == 1 ? "1 Game" : item.ChildCount + " Games";
|
||||
|
||||
html += '<p class="itemMiscInfo">' + childText + '</p>';
|
||||
}
|
||||
else if (item.Type == "MusicAlbum") {
|
||||
|
||||
//childText = item.ChildCount == 1 ? "1 Song" : item.ChildCount + " Songs";
|
||||
|
||||
//html += '<p class="itemMiscInfo">' + childText + '</p>';
|
||||
}
|
||||
else if (item.Type == "Genre" || item.Type == "Studio" || item.Type == "Person" || item.Type == "MusicArtist" || item.Type == "MusicGenre" || item.Type == "GameGenre") {
|
||||
|
||||
var itemCountHtml = LibraryBrowser.getItemCountsHtml(options, item);
|
||||
|
||||
if (itemCountHtml) {
|
||||
html += '<p class="itemMiscInfo">' + itemCountHtml + '</p>';
|
||||
}
|
||||
}
|
||||
else if (item.Type == "Game") {
|
||||
|
||||
html += '<p class="itemMiscInfo">' + (item.GameSystem) + '</p>';
|
||||
}
|
||||
else if (item.Type == "Episode") {
|
||||
|
||||
// Skip it. Just clutter
|
||||
}
|
||||
else {
|
||||
html += '<p class="itemMiscInfo">' + LibraryBrowser.getMiscInfoHtml(item) + '</p>';
|
||||
}
|
||||
|
||||
if (item.Type == "MusicAlbum") {
|
||||
|
||||
html += '<p class="itemMiscInfo">' + LibraryBrowser.getMiscInfoHtml(item) + '</p>';
|
||||
}
|
||||
|
||||
html += '<p class="userDataIcons">' + LibraryBrowser.getUserDataIconsHtml(item) + '</p>';
|
||||
|
||||
html += '</div>';
|
||||
|
||||
if (item.LocationType == "Offline" || item.LocationType == "Virtual") {
|
||||
html += LibraryBrowser.getOfflineIndicatorHtml(item);
|
||||
} else {
|
||||
html += LibraryBrowser.getPlayedIndicatorHtml(item);
|
||||
}
|
||||
|
||||
html += "</a>";
|
||||
}
|
||||
|
||||
return html;
|
||||
},
|
||||
|
||||
getItemCountsHtml: function (options, item) {
|
||||
|
||||
var counts = [];
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
|
||||
if (counts.MovieCount) {
|
||||
|
||||
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'movies' ? selectedCssClass : '') + '" href="moviesrecommended.html">' + (view == 'movies' ? selectedHtml : '') + '<span class="viewName">Movies</span></a>';
|
||||
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'movies' ? selectedCssClass : '') + '" href="movieslatest.html">' + (view == 'movies' ? selectedHtml : '') + '<span class="viewName">Movies</span></a>';
|
||||
}
|
||||
|
||||
if (counts.SeriesCount) {
|
||||
|
@ -92,6 +92,10 @@
|
|||
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'games' ? selectedCssClass : '') + '" href="gamesrecommended.html">' + (view == 'games' ? selectedHtml : '') + '<span class="viewName">Games</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);
|
||||
}
|
||||
|
||||
|
@ -122,74 +126,33 @@
|
|||
|
||||
html += '<p class="libraryPanelHeader"><a href="index.html" class="imageLink"><img src="css/images/mblogoicon.png" /><span>MEDIA</span><span class="mediaBrowserAccent">BROWSER</span></a></p>';
|
||||
|
||||
html += '<div data-role="collapsible-set" data-inset="false" data-mini="true">';
|
||||
html += '<ul data-role="listview">';
|
||||
|
||||
if (counts.MovieCount) {
|
||||
|
||||
html += getCollapsibleHtml('Movies', [
|
||||
|
||||
{ text: 'Suggested', href: 'moviesrecommended.html' },
|
||||
{ text: 'Movies', href: 'movies.html' },
|
||||
{ text: 'Collections', href: 'boxsets.html' },
|
||||
{ text: 'Trailers', href: 'movietrailers.html' },
|
||||
{ text: 'Genres', href: 'moviegenres.html' },
|
||||
{ text: 'People', href: 'moviepeople.html' },
|
||||
{ text: 'Studios', href: 'moviestudios.html' }
|
||||
]);
|
||||
html += '<li><a class="libraryPanelLink" href="movieslatest.html">Movies</a></li>';
|
||||
}
|
||||
|
||||
if (counts.SeriesCount) {
|
||||
html += getCollapsibleHtml('TV', [
|
||||
|
||||
{ text: 'Suggested', href: 'tvrecommended.html' },
|
||||
{ text: 'Latest', href: 'tvlatest.html' },
|
||||
{ text: 'Upcoming', href: 'tvupcoming.html' },
|
||||
{ text: 'Shows', href: 'tvshows.html' },
|
||||
{ text: 'Episodes', href: 'episodes.html' },
|
||||
{ text: 'Genres', href: 'tvgenres.html' },
|
||||
{ text: 'People', href: 'tvpeople.html' },
|
||||
{ text: 'Networks', href: 'tvstudios.html' }
|
||||
]);
|
||||
html += '<li><a class="libraryPanelLink" href="tvrecommended.html">TV</a></li>';
|
||||
}
|
||||
|
||||
if (liveTvInfo.EnabledUsers.indexOf(Dashboard.getCurrentUserId()) != -1) {
|
||||
html += getCollapsibleHtml('Live TV', [
|
||||
|
||||
{ text: 'Suggested', href: 'livetvsuggested.html' },
|
||||
{ text: 'Guide', href: 'livetvguide.html' },
|
||||
{ text: 'Channels', href: 'livetvchannels.html' },
|
||||
{ text: 'Recordings', href: 'livetvrecordings.html' },
|
||||
{ text: 'Scheduled', href: 'livetvtimers.html' },
|
||||
{ text: 'Series', href: 'livetvseriestimers.html' }
|
||||
]);
|
||||
html += '<li><a class="libraryPanelLink" href="livetvsuggested.html">Live TV</a></li>';
|
||||
}
|
||||
|
||||
if (counts.SongCount || counts.MusicVideoCount) {
|
||||
html += getCollapsibleHtml('Music', [
|
||||
|
||||
{ text: 'Suggested', href: 'musicrecommended.html' },
|
||||
{ text: 'Songs', href: 'songs.html' },
|
||||
{ text: 'Albums', href: 'musicalbums.html' },
|
||||
{ text: 'Album Artists', href: 'musicalbumartists.html' },
|
||||
{ text: 'Artists', href: 'musicartists.html' },
|
||||
{ text: 'Music Videos', href: 'musicvideos.html' },
|
||||
{ text: 'Genres', href: 'musicgenres.html' }
|
||||
]);
|
||||
html += '<li><a class="libraryPanelLink" href="musicrecommended.html">Music</a></li>';
|
||||
}
|
||||
|
||||
if (counts.GameCount) {
|
||||
html += getCollapsibleHtml('Games', [
|
||||
|
||||
{ text: 'Suggested', href: 'gamesrecommended.html' },
|
||||
{ text: 'Games', href: 'games.html' },
|
||||
{ text: 'Game Systems', href: 'gamesystems.html' },
|
||||
{ text: 'Genres', href: 'gamegenres.html' },
|
||||
{ text: 'Studios', href: 'gamestudios.html' }
|
||||
]);
|
||||
html += '<li><a class="libraryPanelLink" href="gamesrecommended.html">Games</a></li>';
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
if (counts.BoxSetCount) {
|
||||
html += '<li><a class="libraryPanelLink" href="collections.html">Collections</a></li>';
|
||||
}
|
||||
|
||||
html += '</ul>';
|
||||
html += '</div>';
|
||||
|
||||
$(page).append(html);
|
||||
|
@ -200,50 +163,23 @@
|
|||
return panel;
|
||||
}
|
||||
|
||||
function getCollapsibleHtml(title, links) {
|
||||
|
||||
var i, length;
|
||||
var selectedIndex = -1;
|
||||
var collapsed = 'true';
|
||||
|
||||
var currentUrl = window.location.toString().toLowerCase();
|
||||
|
||||
for (i = 0, length = links.length; i < length; i++) {
|
||||
|
||||
if (currentUrl.indexOf(links[i].href.toLowerCase()) != -1) {
|
||||
collapsed = 'false';
|
||||
selectedIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<div data-role="collapsible" data-mini="true" data-collapsed="' + collapsed + '">';
|
||||
html += '<h4 class="libraryPanelCollapsibleHeader">' + title + '</h4>';
|
||||
|
||||
html += '<ul data-role="listview" data-inset="false">';
|
||||
|
||||
for (i = 0, length = links.length; i < length; i++) {
|
||||
|
||||
var link = links[i];
|
||||
|
||||
var href = selectedIndex == i ? '#' : link.href;
|
||||
|
||||
html += '<li><a class="libraryPanelLink" href="' + href + '">' + link.text + '</a></li>';
|
||||
}
|
||||
|
||||
html += '</ul>';
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
window.LibraryMenu = {
|
||||
showLibraryMenu: showLibraryMenu
|
||||
};
|
||||
|
||||
$(document).on('pagebeforeshow', ".libraryPage", function () {
|
||||
$(document).on('pageinit', ".libraryPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.libraryViewNav', page).wrapInner('<div class="libraryViewNavInner"></div>');
|
||||
|
||||
$('.libraryViewNav a', page).each(function () {
|
||||
|
||||
this.innerHTML = '<span class="libraryViewNavLinkContent">' + this.innerHTML + '</span>';
|
||||
|
||||
});
|
||||
|
||||
}).on('pagebeforeshow', ".libraryPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
(function ($, document, window) {
|
||||
|
||||
var defaultSortBy = "SortName";
|
||||
|
||||
// The base query options
|
||||
var query = {
|
||||
|
||||
SortBy: "SeriesSortName,SortName",
|
||||
SortBy: defaultSortBy,
|
||||
SortOrder: "Ascending",
|
||||
Recursive: true,
|
||||
Fields: "MediaStreams,DateCreated,Settings,Studios",
|
||||
|
@ -21,21 +23,22 @@
|
|||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Series' },
|
||||
{ name: 'Season' },
|
||||
{ name: 'Date Added' }
|
||||
{ name: 'Series', sortField: 'SeriesSortName,SortName' },
|
||||
{ name: 'Season', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' }
|
||||
];
|
||||
}
|
||||
case 'Series':
|
||||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Name' },
|
||||
{ name: 'Network' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Year' },
|
||||
{ name: 'Rating' },
|
||||
{ name: 'Runtime' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Network', sortField: 'Studio,SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Year', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||
{ name: 'Trailers' },
|
||||
{ name: 'Specials' }
|
||||
];
|
||||
|
@ -44,12 +47,13 @@
|
|||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Name' },
|
||||
{ name: 'Game System' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Rating' },
|
||||
{ name: 'Players' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Game System', sortField: 'GameSystem,SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,GameSystem,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,GameSystem,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,GameSystem,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,GameSystem,SortName' },
|
||||
{ name: 'Players', sortField: 'Players,GameSystem,SortName' },
|
||||
{ name: 'Trailers' }
|
||||
];
|
||||
}
|
||||
|
@ -57,13 +61,14 @@
|
|||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Album Artist' },
|
||||
{ name: 'Album' },
|
||||
{ name: 'Album Artist', sortField: 'AlbumArtist,Album,SortName' },
|
||||
{ name: 'Album', sortField: 'Album,SortName' },
|
||||
{ name: 'Disc' },
|
||||
{ name: 'Track' },
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Runtime' },
|
||||
{ name: 'Name', sortField: 'Name' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||
{ name: 'Audio' },
|
||||
{ name: 'Embedded Image' }
|
||||
];
|
||||
|
@ -72,13 +77,15 @@
|
|||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Series' },
|
||||
{ name: 'Series', sortField: 'SeriesSortName,SortName' },
|
||||
{ name: 'Season' },
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Runtime' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||
{ name: 'Video' },
|
||||
{ name: 'Resolution' },
|
||||
{ name: 'Audio' },
|
||||
{ name: 'Subtitles' }
|
||||
];
|
||||
|
@ -87,10 +94,11 @@
|
|||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Rating' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||
{ name: 'Trailers' }
|
||||
];
|
||||
}
|
||||
|
@ -99,42 +107,46 @@
|
|||
return [
|
||||
{},
|
||||
{ name: 'Series' },
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Rating' }
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' }
|
||||
];
|
||||
}
|
||||
case 'MusicArtist':
|
||||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' }
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' }
|
||||
];
|
||||
}
|
||||
case 'MusicAlbum':
|
||||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Album Artist' },
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Rating' },
|
||||
{ name: 'Runtime' }
|
||||
{ name: 'Album Artist', sortField: 'AlbumArtist,SortName' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||
{ name: 'Runtime', sortField: 'Runtime,SortName' }
|
||||
];
|
||||
}
|
||||
default:
|
||||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Rating' },
|
||||
{ name: 'Runtime' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||
{ name: 'Video' },
|
||||
{ name: 'Resolution' },
|
||||
{ name: 'Audio' },
|
||||
{ name: 'Subtitles' },
|
||||
{ name: 'Trailers' },
|
||||
|
@ -144,6 +156,53 @@
|
|||
}
|
||||
}
|
||||
|
||||
function getDefaultSortOrder(reportType) {
|
||||
|
||||
switch (reportType) {
|
||||
|
||||
case 'Season':
|
||||
{
|
||||
return "SeriesSortName,SortName";
|
||||
}
|
||||
case 'Series':
|
||||
{
|
||||
return "SortName";
|
||||
}
|
||||
case 'Game':
|
||||
{
|
||||
return "GameSystem,SortName";
|
||||
}
|
||||
case 'Audio':
|
||||
{
|
||||
return "AlbumArtist,Album,SortName";
|
||||
}
|
||||
case 'Episode':
|
||||
{
|
||||
return "SeriesSortName,SortName";
|
||||
}
|
||||
case 'BoxSet':
|
||||
{
|
||||
return "SortName";
|
||||
}
|
||||
case 'Book':
|
||||
{
|
||||
return "SortName";
|
||||
}
|
||||
case 'MusicArtist':
|
||||
{
|
||||
return "SortName";
|
||||
}
|
||||
case 'MusicAlbum':
|
||||
{
|
||||
return "AlbumArtist,SortName";
|
||||
}
|
||||
default:
|
||||
{
|
||||
return "SortName";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getItemCellsHtml(item, headercells) {
|
||||
|
||||
return headercells.map(function (cell) {
|
||||
|
@ -151,6 +210,8 @@
|
|||
var html = '';
|
||||
html += '<td>';
|
||||
|
||||
var stream;
|
||||
|
||||
switch (cell.type || cell.name) {
|
||||
|
||||
case 'Album Artist':
|
||||
|
@ -178,6 +239,11 @@
|
|||
html += item.Studios.length ? item.Studios[0].Name : ' ';
|
||||
break;
|
||||
}
|
||||
case 'Disc':
|
||||
{
|
||||
html += item.ParentIndexNumber == null ? '' : item.ParentIndexNumber;
|
||||
break;
|
||||
}
|
||||
case 'Track':
|
||||
{
|
||||
html += item.IndexNumber == null ? '' : item.IndexNumber;
|
||||
|
@ -190,7 +256,7 @@
|
|||
}
|
||||
case 'Audio':
|
||||
{
|
||||
var stream = (item.MediaStreams || []).filter(function (s) {
|
||||
stream = (item.MediaStreams || []).filter(function (s) {
|
||||
|
||||
return s.Type == 'Audio';
|
||||
|
||||
|
@ -205,7 +271,7 @@
|
|||
}
|
||||
case 'Video':
|
||||
{
|
||||
var stream = (item.MediaStreams || []).filter(function (s) {
|
||||
stream = (item.MediaStreams || []).filter(function (s) {
|
||||
|
||||
return s.Type == 'Video';
|
||||
|
||||
|
@ -216,6 +282,19 @@
|
|||
}
|
||||
break;
|
||||
}
|
||||
case 'Resolution':
|
||||
{
|
||||
stream = (item.MediaStreams || []).filter(function (s) {
|
||||
|
||||
return s.Type == 'Video';
|
||||
|
||||
})[0];
|
||||
|
||||
if (stream && stream.Width) {
|
||||
html += stream.Width + "*" + (stream.Height || "-");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'Embedded Image':
|
||||
{
|
||||
if ((item.MediaStreams || []).filter(function (s) {
|
||||
|
@ -265,7 +344,7 @@
|
|||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case 'Season':
|
||||
{
|
||||
if (item.Type == "Episode") {
|
||||
|
@ -281,12 +360,17 @@
|
|||
html += '<a href="edititemmetadata.html?id=' + item.Id + '">' + LibraryBrowser.getPosterViewDisplayName(item, false, false) + '</a>';
|
||||
break;
|
||||
}
|
||||
case 'Rating':
|
||||
case 'Community Rating':
|
||||
{
|
||||
html += item.CommunityRating || ' ';
|
||||
break;
|
||||
}
|
||||
case 'Parental Rating':
|
||||
{
|
||||
html += item.OfficialRating || ' ';
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case 'Year':
|
||||
case 'Release Date':
|
||||
{
|
||||
|
@ -357,7 +441,7 @@
|
|||
}
|
||||
|
||||
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>';
|
||||
}
|
||||
}
|
||||
|
@ -378,11 +462,11 @@
|
|||
}).join('');
|
||||
}
|
||||
|
||||
function getReportHtml(items, reportType) {
|
||||
function getReportHtml(items, reportType, currentSortField, currentSortDirection) {
|
||||
|
||||
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 += '<tr>';
|
||||
|
@ -391,7 +475,31 @@
|
|||
|
||||
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('');
|
||||
|
||||
|
@ -427,7 +535,7 @@
|
|||
|
||||
$('.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 () {
|
||||
query.StartIndex += query.Limit;
|
||||
|
@ -444,6 +552,34 @@
|
|||
query.StartIndex = 0;
|
||||
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) {
|
||||
|
@ -536,6 +672,9 @@
|
|||
query.StartIndex = 0;
|
||||
query.IncludeItemTypes = this.value;
|
||||
|
||||
query.SortBy = getDefaultSortOrder(this.value);
|
||||
query.SortOrder = "Ascending";
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
|
@ -710,6 +849,9 @@
|
|||
query.StartIndex = 0;
|
||||
}
|
||||
|
||||
query.SortBy = getDefaultSortOrder($('#selectView', page).val());
|
||||
query.SortOrder = "Ascending";
|
||||
|
||||
reloadItems(page);
|
||||
|
||||
}).on('pageshow', "#libraryReportPage", function () {
|
||||
|
|
|
@ -153,14 +153,15 @@
|
|||
|
||||
html += '<li><a href="livetvtimer.html?id=' + timer.Id + '">';
|
||||
|
||||
var program = timer.ProgramInfo;
|
||||
var program = timer.ProgramInfo || {};
|
||||
var imgUrl;
|
||||
|
||||
if (program.ImageTags && program.ImageTags.Primary) {
|
||||
var programImages = program.ImageTags || {};
|
||||
if (programImages.Primary) {
|
||||
|
||||
imgUrl = ApiClient.getImageUrl(program.Id, {
|
||||
height: 160,
|
||||
tag: program.ImageTags.Primary,
|
||||
tag: programImages.Primary,
|
||||
type: "Primary"
|
||||
});
|
||||
} else {
|
||||
|
@ -234,9 +235,9 @@
|
|||
userId: Dashboard.getCurrentUserId(),
|
||||
seriesTimerId: id
|
||||
|
||||
}).done(function (result) {
|
||||
}).done(function (recordingResult) {
|
||||
|
||||
renderRecordings(page, result);
|
||||
renderRecordings(page, recordingResult);
|
||||
|
||||
});
|
||||
|
||||
|
@ -244,9 +245,9 @@
|
|||
|
||||
seriesTimerId: id
|
||||
|
||||
}).done(function (result) {
|
||||
}).done(function (timerResult) {
|
||||
|
||||
renderSchedule(page, result);
|
||||
renderSchedule(page, timerResult);
|
||||
|
||||
});
|
||||
}
|
||||
|
|
|
@ -8,14 +8,14 @@
|
|||
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
IsAiring: true,
|
||||
limit: 10
|
||||
limit: 12
|
||||
|
||||
}).done(function (result) {
|
||||
|
||||
var html = LibraryBrowser.getPosterViewHtml({
|
||||
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
shape: "square",
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
overlayText: true,
|
||||
|
@ -31,14 +31,14 @@
|
|||
userId: Dashboard.getCurrentUserId(),
|
||||
IsAiring: false,
|
||||
HasAired: false,
|
||||
limit: 10
|
||||
limit: 12
|
||||
|
||||
}).done(function (result) {
|
||||
|
||||
var html = LibraryBrowser.getPosterViewHtml({
|
||||
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
shape: "square",
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
overlayText: true,
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "BoxSet",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,PrimaryImageAspectRatio",
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
|
@ -26,19 +26,26 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
if (result.TotalRecordCount) {
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
context: 'movies',
|
||||
useAverageAspectRatio: true,
|
||||
showTitle: true,
|
||||
centerText: true
|
||||
});
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
context: 'movies',
|
||||
useAverageAspectRatio: true,
|
||||
showTitle: true,
|
||||
centerText: true
|
||||
});
|
||||
|
||||
html += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount);
|
||||
|
||||
html += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount);
|
||||
} else {
|
||||
|
||||
html += '<p>Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the New button to start creating Collections.</p>';
|
||||
}
|
||||
|
||||
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
|
||||
|
||||
|
@ -60,6 +67,16 @@
|
|||
|
||||
LibraryBrowser.saveQueryValues('boxsets', query);
|
||||
|
||||
Dashboard.getCurrentUser().done(function(user) {
|
||||
|
||||
if (user.Configuration.IsAdministrator) {
|
||||
$('#btnNewCollection', page).removeClass('hide');
|
||||
} else {
|
||||
$('#btnNewCollection', page).addClass('hide');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
@ -95,6 +112,13 @@
|
|||
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
|
||||
}
|
||||
|
||||
function showNewCollectionPanel(page) {
|
||||
|
||||
$('#newCollectionPanel', page).panel('toggle');
|
||||
|
||||
$('#txtNewCollectionName', page).val('').focus();
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#boxsetsPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
@ -164,6 +188,11 @@
|
|||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('#btnNewCollection', page).on('click', function () {
|
||||
|
||||
showNewCollectionPanel(page);
|
||||
});
|
||||
|
||||
}).on('pagebeforeshow', "#boxsetsPage", function () {
|
||||
|
||||
var limit = LibraryBrowser.getDefaultPageSize();
|
||||
|
@ -183,4 +212,37 @@
|
|||
updateFilterControls(this);
|
||||
});
|
||||
|
||||
window.BoxSetsPage = {
|
||||
|
||||
onNewCollectionSubmit: function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = $(this).parents('.page');
|
||||
|
||||
var url = ApiClient.getUrl("Collections", {
|
||||
|
||||
Name: $('#txtNewCollectionName', page).val(),
|
||||
IsLocked: !$('#chkEnableInternetMetadata', page).checked()
|
||||
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: url
|
||||
|
||||
}).done(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
$('#newCollectionPanel', page).panel('toggle');
|
||||
|
||||
reloadItems(page);
|
||||
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
})(jQuery, document);
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
|
@ -66,36 +63,12 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#movieGenresPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -27,9 +27,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
|
@ -68,19 +65,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.chkPersonTypeFilter', page).each(function () {
|
||||
|
||||
var filters = "," + (query.PersonTypes || "");
|
||||
|
@ -97,18 +81,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,PrimaryImageAspectRatio",
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
|
|
60
dashboard-ui/scripts/movieslatest.js
Normal file
60
dashboard-ui/scripts/movieslatest.js
Normal file
|
@ -0,0 +1,60 @@
|
|||
(function ($, document) {
|
||||
|
||||
$(document).on('pagebeforeshow', "#moviesLatestPage", function () {
|
||||
|
||||
var screenWidth = $(window).width();
|
||||
|
||||
var page = this;
|
||||
|
||||
var options = {
|
||||
|
||||
SortBy: "DateCreated",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Limit: screenWidth >= 1920 ? 32 : (screenWidth >= 1440 ? 24 : (screenWidth >= 800 ? 18 : 12)),
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
Filters: "IsUnplayed"
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||
|
||||
$('#recentlyAddedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true
|
||||
|
||||
})).createPosterItemHoverMenu();
|
||||
});
|
||||
|
||||
|
||||
options = {
|
||||
|
||||
SortBy: "DateCreated",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Trailer",
|
||||
Limit: screenWidth >= 1920 ? 8 : (screenWidth >= 1440 ? 8 : 6),
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
Filters: "IsUnplayed"
|
||||
};
|
||||
|
||||
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,
|
||||
useAverageAspectRatio: true
|
||||
|
||||
})).createPosterItemHoverMenu();
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
})(jQuery, document);
|
|
@ -1,5 +1,41 @@
|
|||
(function ($, document) {
|
||||
|
||||
function getRecommendationHtml(recommendation) {
|
||||
|
||||
var html = '';
|
||||
|
||||
var title = '';
|
||||
|
||||
switch (recommendation.RecommendationType) {
|
||||
|
||||
case 'SimilarToRecentlyPlayed':
|
||||
title = 'Because you watched ' + recommendation.BaselineItemName;
|
||||
break;
|
||||
case 'SimilarToLikedItem':
|
||||
title = 'Because you like ' + recommendation.BaselineItemName;
|
||||
break;
|
||||
case 'HasDirectorFromRecentlyPlayed':
|
||||
case 'HasLikedDirector':
|
||||
title = 'Directed by ' + recommendation.BaselineItemName;
|
||||
break;
|
||||
case 'HasActorFromRecentlyPlayed':
|
||||
case 'HasLikedActor':
|
||||
title = 'Starring ' + recommendation.BaselineItemName;
|
||||
break;
|
||||
}
|
||||
|
||||
html += '<h1 class="listHeader">' + title + '</h1>';
|
||||
|
||||
html += '<div>';
|
||||
html += LibraryBrowser.getPosterViewHtml({
|
||||
items: recommendation.Items,
|
||||
useAverageAspectRatio: true
|
||||
});
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
$(document).on('pagebeforeshow', "#moviesRecommendedPage", function () {
|
||||
|
||||
var screenWidth = $(window).width();
|
||||
|
@ -8,34 +44,13 @@
|
|||
|
||||
var options = {
|
||||
|
||||
SortBy: "DateCreated",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Limit: screenWidth >= 1920 ? 21 : (screenWidth >= 1440 ? 16 : 12),
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,DateCreated,UserData",
|
||||
Filters: "IsUnplayed"
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||
|
||||
$('#recentlyAddedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true
|
||||
|
||||
})).createPosterItemHoverMenu();
|
||||
});
|
||||
|
||||
|
||||
options = {
|
||||
|
||||
SortBy: "DatePlayed",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Filters: "IsResumable",
|
||||
Limit: screenWidth >= 1920 ? 4 : (screenWidth >= 1440 ? 4 : 3),
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,UserData"
|
||||
Fields: "PrimaryImageAspectRatio"
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||
|
@ -57,33 +72,26 @@
|
|||
|
||||
});
|
||||
|
||||
options = {
|
||||
|
||||
SortBy: "DateCreated",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Trailer",
|
||||
Limit: screenWidth >= 1920 ? 7 : (screenWidth >= 1440 ? 8 : 6),
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,DateCreated,UserData",
|
||||
Filters: "IsUnplayed"
|
||||
};
|
||||
|
||||
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,
|
||||
useAverageAspectRatio: true
|
||||
|
||||
})).createPosterItemHoverMenu();
|
||||
|
||||
var url = ApiClient.getUrl("Movies/Recommendations", {
|
||||
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
categoryLimit: screenWidth >= 1200 ? 6 : 3,
|
||||
itemLimit: screenWidth >= 1920 ? 8 : (screenWidth >= 1440 ? 8 : 6),
|
||||
Fields: "PrimaryImageAspectRatio"
|
||||
});
|
||||
|
||||
$.getJSON(url).done(function(recommendations) {
|
||||
|
||||
if (!recommendations.length) {
|
||||
|
||||
$('.recommendations', page).html('<br/><p>No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.</p>');
|
||||
return;
|
||||
}
|
||||
|
||||
var html = recommendations.map(getRecommendationHtml).join('');
|
||||
|
||||
$('.recommendations', page).html(html).createPosterItemHoverMenu();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
|
@ -65,37 +62,12 @@
|
|||
}
|
||||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#movieStudiosPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Trailer",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,PrimaryImageAspectRatio",
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
|
@ -66,19 +63,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
|
||||
}
|
||||
|
||||
|
@ -86,18 +70,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "MusicAlbum",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,PrimaryImageAspectRatio",
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
|
|
|
@ -25,9 +25,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
|
@ -65,19 +62,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
|
||||
}
|
||||
|
||||
|
@ -85,18 +69,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
|
@ -66,36 +63,12 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#musicGenresPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
}
|
||||
html += "</div>";
|
||||
|
||||
html += "<div class='posterItemText' style='color:#000;font-weight:400;font-size:16px;'>";
|
||||
html += "<div class='posterItemText' style='color:#000;font-weight:400;font-size:14px;'>";
|
||||
|
||||
var installedPlugin = plugin.isApp ? null : installedPlugins.filter(function (ip) {
|
||||
return ip.Name == plugin.name;
|
||||
|
@ -108,7 +108,7 @@
|
|||
|
||||
html += "</div>";
|
||||
|
||||
html += "<div class='posterItemText packageReviewText' style='color:#000;font-weight:400;font-size:15px;'>";
|
||||
html += "<div class='posterItemText packageReviewText' style='color:#000;font-weight:400;font-size:14px;'>";
|
||||
html += plugin.price > 0 ? "$" + plugin.price.toFixed(2) : "Free";
|
||||
html += Dashboard.getStoreRatingHtml(plugin.avgRating, plugin.id, plugin.name);
|
||||
|
||||
|
|
|
@ -721,14 +721,18 @@ var Dashboard = {
|
|||
name: "Metadata",
|
||||
href: "metadata.html",
|
||||
selected: pageElem.id == "metadataConfigurationPage" || pageElem.id == "advancedMetadataConfigurationPage" || pageElem.id == "metadataImagesConfigurationPage"
|
||||
}, {
|
||||
name: "Plugins",
|
||||
href: "plugins.html",
|
||||
selected: page.hasClass("pluginConfigurationPage")
|
||||
}, {
|
||||
name: "Auto-Organize",
|
||||
href: "autoorganizelog.html",
|
||||
selected: page.hasClass("organizePage")
|
||||
}, {
|
||||
name: "Plugins",
|
||||
href: "plugins.html",
|
||||
selected: page.hasClass("pluginConfigurationPage")
|
||||
name: "DLNA",
|
||||
href: "dlnasettings.html",
|
||||
selected: page.hasClass("dlnaPage")
|
||||
}, {
|
||||
name: "Live TV",
|
||||
href: "livetvstatus.html",
|
||||
|
@ -1141,9 +1145,7 @@ var Dashboard = {
|
|||
return;
|
||||
}
|
||||
|
||||
var pageElem = page[0];
|
||||
|
||||
if (pageElem.hasPageTitle) {
|
||||
if ($('.pageTitle', page).length) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1154,8 +1156,6 @@ var Dashboard = {
|
|||
}
|
||||
|
||||
$(parent).prepend("<h2 class='pageTitle'>" + (document.title || " ") + "</h2>");
|
||||
|
||||
pageElem.hasPageTitle = true;
|
||||
},
|
||||
|
||||
setPageTitle: function (title) {
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Audio",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,AudioInfo,ParentId",
|
||||
Fields: "AudioInfo,ParentId",
|
||||
Limit: 200,
|
||||
StartIndex: 0
|
||||
};
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html += LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true,
|
||||
|
@ -69,19 +66,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.chkStandardFilter', page).each(function () {
|
||||
|
||||
var filters = "," + (query.Filters || "");
|
||||
|
@ -96,18 +80,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -27,9 +27,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
|
@ -68,19 +65,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.chkStandardFilter', page).each(function () {
|
||||
|
||||
var filters = "," + (query.Filters || "");
|
||||
|
@ -106,18 +90,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Series",
|
||||
Recursive: true,
|
||||
Fields: "SeriesInfo,DateCreated,PrimaryImageAspectRatio",
|
||||
Fields: "SeriesInfo,PrimaryImageAspectRatio",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html += LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true,
|
||||
|
@ -69,19 +66,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.chkStandardFilter', page).each(function () {
|
||||
|
||||
var filters = "," + (query.Filters || "");
|
||||
|
@ -96,18 +80,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -6,58 +6,29 @@
|
|||
|
||||
var query = {
|
||||
|
||||
SortBy: "PremiereDate,AirTime,SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Episode",
|
||||
Limit: 30,
|
||||
Recursive: true,
|
||||
Fields: "SeriesInfo,UserData"
|
||||
Limit: 32,
|
||||
Fields: "SeriesInfo,UserData",
|
||||
UserId: Dashboard.getCurrentUserId()
|
||||
};
|
||||
|
||||
var missedItemsQuery = $.extend({
|
||||
$.getJSON(ApiClient.getUrl("Shows/Upcoming", query)).done(function (result) {
|
||||
|
||||
IsUnaired: false
|
||||
var items = result.Items;
|
||||
|
||||
}, query);
|
||||
|
||||
var yesterday = new Date();
|
||||
|
||||
yesterday.setDate(yesterday.getDate() - 1);
|
||||
yesterday.setHours(0, 0, 0, 0);
|
||||
|
||||
missedItemsQuery.MinPremiereDate = yesterday.toISOString();
|
||||
|
||||
var unairedQuery = $.extend({
|
||||
|
||||
IsUnaired: true
|
||||
|
||||
}, query);
|
||||
|
||||
var promise1 = ApiClient.getItems(Dashboard.getCurrentUserId(), missedItemsQuery);
|
||||
var promise2 = ApiClient.getItems(Dashboard.getCurrentUserId(), unairedQuery);
|
||||
|
||||
$.when(promise1, promise2).done(function (response1, response2) {
|
||||
|
||||
var missedItems = response1[0].Items;
|
||||
var unairedItems = response2[0].Items;
|
||||
|
||||
for (var i = 0, length = unairedItems.length; i < length; i++) {
|
||||
missedItems.push(unairedItems[i]);
|
||||
}
|
||||
|
||||
if (!missedItems.length) {
|
||||
if (!items.length) {
|
||||
$('#upcomingItems', page).html("<p>Nothing here. Please ensure <a href='metadata.html'>downloading of internet metadata</a> is enabled.</p>").trigger('create');
|
||||
return;
|
||||
}
|
||||
|
||||
$('#upcomingItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||
items: missedItems,
|
||||
items: items,
|
||||
showLocationTypeIndicator: false,
|
||||
shape: "backdrop",
|
||||
showTitle: true,
|
||||
showPremiereDate: true,
|
||||
showPremiereDateIndex: true,
|
||||
preferThumb: true
|
||||
|
||||
})).createPosterItemHoverMenu();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -14,9 +14,10 @@
|
|||
// After saving chapter task, now save server config
|
||||
ApiClient.getServerConfiguration().done(function (config) {
|
||||
|
||||
config.ImageSavingConvention = $('#selectImageSavingConvention', page).val();
|
||||
config.EnableMovieChapterImageExtraction = $('#chkMovies', page).checked();
|
||||
|
||||
config.EnableUPnP = $('#chkEnableUpnp', page).checked();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).done(function (result) {
|
||||
|
||||
navigateToNextPage();
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
config.MetadataCountryCode = $('#selectCountry', page).val();
|
||||
config.SaveLocalMeta = $('#chkSaveLocalMetadata', page).checked();
|
||||
|
||||
config.EnableInternetProviders = $('#chkEnableInternetProviders', page).checked();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).done(function (result) {
|
||||
|
||||
navigateToNextPage();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue