diff --git a/dashboard-ui/autoorganizelog.html b/dashboard-ui/autoorganizelog.html index f6cbf26bd7..6949a2de6c 100644 --- a/dashboard-ui/autoorganizelog.html +++ b/dashboard-ui/autoorganizelog.html @@ -21,7 +21,7 @@
- +
diff --git a/dashboard-ui/channelslatest.html b/dashboard-ui/channelslatest.html index 4432e03cf4..4359d5d857 100644 --- a/dashboard-ui/channelslatest.html +++ b/dashboard-ui/channelslatest.html @@ -12,7 +12,7 @@
-
+
diff --git a/dashboard-ui/css/librarybrowser.css b/dashboard-ui/css/librarybrowser.css index 33a88e5344..9572d45586 100644 --- a/dashboard-ui/css/librarybrowser.css +++ b/dashboard-ui/css/librarybrowser.css @@ -13,7 +13,7 @@ } .backdropPage { - background-color: rgba(15, 15,15, .92)!important; + background-color: rgba(15, 15,15, .94)!important; } .backdropContainer { @@ -73,25 +73,32 @@ top: 8px; } +@media all and (max-width: 800px) { + + .hiddenSectionOnMobile { + display: none; + } +} + .firstListHeader + .sectionHeaderButton { top: 3px; } -@media all and (min-width: 900px) { +@media all and (min-width: 800px) { .ehsContent { - width: 880px; + width: 770px; } .squareEhsContent { - width: 750px; + width: 760px; } } @media all and (min-width: 1000px) { .ehsContent { - width: 905px; + width: 900px; } .squareEhsContent { @@ -102,33 +109,11 @@ @media all and (min-width: 1200px) { .ehsContent { - width: 925px; + width: 1000px; } .squareEhsContent { - width: 900px; - } -} - -@media all and (min-width: 1400px) { - - .ehsContent { - width: 1080px; - } - - .squareEhsContent { - width: 1220px; - } -} - -@media all and (min-width: 1600px) { - - .homeEhsContent { - width: 1440px; - } - - .squareEhsContent { - width: 1420px; + width: 1000px; } } diff --git a/dashboard-ui/css/posteritem.css b/dashboard-ui/css/posteritem.css index 9aadfb013b..0497a0a21c 100644 --- a/dashboard-ui/css/posteritem.css +++ b/dashboard-ui/css/posteritem.css @@ -332,11 +332,11 @@ @media all and (min-width: 540px) { .backdropPosterItem { - width: 266px; + width: 246px; } .backdropPosterItem .posterItemImage { - height: 149.625px; + height: 138.375px; } .smallBackdropPosterItem { @@ -362,14 +362,6 @@ @media all and (min-width: 650px) { - .backdropPosterItem { - width: 282px; - } - - .backdropPosterItem .posterItemImage { - height: 158.625px; - } - .smallBackdropPosterItem { width: 190px; } @@ -415,12 +407,28 @@ min-width: 220px; } + .backdropPosterItem { + width: 290px; + } + + .backdropPosterItem .posterItemImage { + height: 163.125px; + } + .smallBackdropPosterItem { - width: 208px; + width: 290px; } .smallBackdropPosterItem .posterItemImage { - height: 117px; + height: 163.125px; + } + + .miniBackdropPosterItem { + width: 190px; + } + + .miniBackdropPosterItem .posterItemImage { + height: 106.875px; } } @@ -445,6 +453,30 @@ .bannerPosterItem .posterItemImage { height: 92.5px; } + + .backdropPosterItem { + width: 320px; + } + + .backdropPosterItem .posterItemImage { + height: 180px; + } + + .portraitPosterItem { + width: 156px; + } + + .portraitPosterItem .posterItemImage { + height: 234px; + } + + .squarePosterItem { + width: 190px; + } + + .squarePosterItem .posterItemImage { + height: 190px; + } } @media all and (min-width: 1440px) { @@ -454,41 +486,6 @@ /* Specify a min width just in case the container doesn't have a width */ min-width: 220px; } - - .backdropPosterItem { - width: 350px; - } - - .backdropPosterItem .posterItemImage { - height: 196.875px; - } - - .miniBackdropPosterItem { - width: 180px; - } - - .miniBackdropPosterItem .posterItemImage { - height: 101.25px; - } - - .squarePosterItem { - width: 192px; - } - - .squarePosterItem .posterItemImage { - height: 192px; - } - - .portraitPosterItem { - width: 170px; - } - - .portraitPosterItem .posterItemImage { - height: 255px; - } - - .posterItemText { - } } diff --git a/dashboard-ui/index.html b/dashboard-ui/index.html index 9d083808f5..bcec63a33c 100644 --- a/dashboard-ui/index.html +++ b/dashboard-ui/index.html @@ -24,7 +24,7 @@

- +
diff --git a/dashboard-ui/livetvsuggested.html b/dashboard-ui/livetvsuggested.html index afffece57e..4990ce064e 100644 --- a/dashboard-ui/livetvsuggested.html +++ b/dashboard-ui/livetvsuggested.html @@ -14,7 +14,7 @@ ${TabSeries}
- +
'; + + html += ''; + + html += ''; + + html += ''; + + html += ''; + + html += ''; + + html += ''; + + html += ''; + + return html; + + }).join(''); + + var elem = $('.resultBody', page).html(rows).parents('.tblApiKeys').table("refresh").trigger('create'); + + $('.btnRevoke', elem).on('click', function () { + + revoke(page, this.getAttribute('data-token')); + }); + + Dashboard.hideLoadingMsg(); + } + + function loadData(page) { + + Dashboard.showLoadingMsg(); + + ApiClient.getUsers().done(function (users) { + + ApiClient.getJSON(ApiClient.getUrl('Auth/Keys')).done(function (result) { + + renderKeys(page, result.Items, users); + }); + }); + } + + $(document).on('pageinit', "#serverSecurityPage", function () { + + var page = this; + + $('.btnNewKey', page).on('click', function () { + + $('.newKeyPanel', page).panel('toggle'); + + $('#txtAppName', page).val('').focus(); + + }); + + }).on('pageshow', "#serverSecurityPage", function () { + + var page = this; + + loadData(page); + }); + + window.ServerSecurityPage = { + + onSubmit: function(e) { + + var form = this; + var page = $(form).parents('.page'); + + Dashboard.showLoadingMsg(); + + ApiClient.ajax({ + type: "POST", + url: apiClient.getUrl('Auth/Keys/', { + + App: $('#txtAppName', form).val() + + }) + + }).done(function () { + + $('.newKeyPanel', page).panel('close'); + + loadData(page); + }); + + return false; + } + }; + +})(jQuery, document, ApiClient); \ No newline at end of file diff --git a/dashboard-ui/scripts/thememediaplayer.js b/dashboard-ui/scripts/thememediaplayer.js index 6995ac0fe1..574b243869 100644 --- a/dashboard-ui/scripts/thememediaplayer.js +++ b/dashboard-ui/scripts/thememediaplayer.js @@ -46,7 +46,8 @@ var val = LocalSettings.val('enableThemeSongs', userId); - return val == '1'; + // For bandwidth + return val == '1' || (val != '0' && !$.browser.mobile); } function getPlayer() { diff --git a/dashboard-ui/scripts/tvrecommended.js b/dashboard-ui/scripts/tvrecommended.js index abf98705c1..ace92963fc 100644 --- a/dashboard-ui/scripts/tvrecommended.js +++ b/dashboard-ui/scripts/tvrecommended.js @@ -95,7 +95,7 @@ SortOrder: "Descending", IncludeItemTypes: "Episode", Filters: "IsResumable", - Limit: screenWidth >= 1920 ? 6 : 4, + Limit: screenWidth >= 1200 ? 6 : 4, Recursive: true, Fields: "PrimaryImageAspectRatio,SeriesInfo,UserData", ExcludeLocationTypes: "Virtual", diff --git a/dashboard-ui/serversecurity.html b/dashboard-ui/serversecurity.html index c8da60bef2..ca25034532 100644 --- a/dashboard-ui/serversecurity.html +++ b/dashboard-ui/serversecurity.html @@ -16,9 +16,51 @@ ${TabSecurity} +

+ ${HeaderApiKeys} + +

+

${HeaderApiKeysHelp}

+
+
diff --git a/dashboard-ui/scripts/backdrops.js b/dashboard-ui/scripts/backdrops.js index eb43c87a85..a6901b278e 100644 --- a/dashboard-ui/scripts/backdrops.js +++ b/dashboard-ui/scripts/backdrops.js @@ -98,17 +98,13 @@ if ($.browser.msie) { return false; } - - // For bandwidth - if ($.browser.mobile) { - return false; - } var userId = Dashboard.getCurrentUserId(); var val = LocalSettings.val('enableBackdrops', userId); - return val != '0'; + // For bandwidth + return val == '1' || (val != '0' && !$.browser.mobile); } $(document).on('pagebeforeshow', ".page", function () { diff --git a/dashboard-ui/scripts/favorites.js b/dashboard-ui/scripts/favorites.js index 0a0c454ccc..b9aceafb07 100644 --- a/dashboard-ui/scripts/favorites.js +++ b/dashboard-ui/scripts/favorites.js @@ -22,7 +22,7 @@ SortOrder: "Ascending", IncludeItemTypes: section.types, Filters: "IsFavorite", - Limit: screenWidth >= 1920 ? 10 : (screenWidth >= 1440 ? 8 : 6), + Limit: screenWidth >= 1920 ? 9 : (screenWidth >= 1440 ? 8 : 6), Recursive: true, Fields: "PrimaryImageAspectRatio", CollapseBoxSetItems: false, diff --git a/dashboard-ui/scripts/indexpage.js b/dashboard-ui/scripts/indexpage.js index bbc5fbaf5d..b9c94c1834 100644 --- a/dashboard-ui/scripts/indexpage.js +++ b/dashboard-ui/scripts/indexpage.js @@ -192,8 +192,14 @@ }); } - function loadLibraryTiles(elem, userId, shape, index) { + function loadLibraryTiles(elem, userId, shape, index, autoHideOnMobile) { + if (autoHideOnMobile) { + $(elem).addClass('hiddenSectionOnMobile'); + } else { + $(elem).removeClass('hiddenSectionOnMobile'); + } + getUserViews(userId).done(function (items) { var html = ''; @@ -273,7 +279,7 @@ SortOrder: "Descending", MediaTypes: "Video", Filters: "IsResumable", - Limit: screenWidth >= 1920 ? 10 : (screenWidth >= 1440 ? 8 : 6), + Limit: (screenWidth >= 1200 ? 9 : 6), Recursive: true, Fields: "PrimaryImageAspectRatio", CollapseBoxSetItems: false, @@ -350,7 +356,7 @@ var options = { - Limit: screenWidth >= 1920 ? 7 : (screenWidth >= 1440 ? 5 : (screenWidth >= 800 ? 6 : 6)), + Limit: screenWidth >= 1920 ? 5 : (screenWidth >= 1440 ? 5 : (screenWidth >= 800 ? 6 : 6)), Fields: "PrimaryImageAspectRatio", Filters: "IsUnplayed", UserId: Dashboard.getCurrentUserId(), @@ -373,7 +379,7 @@ } html += LibraryBrowser.getPosterViewHtml({ items: result.Items, - shape: 'autosmall', + shape: 'auto', defaultShape: 'square', showTitle: true, centerText: true, @@ -390,7 +396,7 @@ ApiClient.getLiveTvRecordings({ userId: userId, - limit: 9, + limit: 5, IsInProgress: false }).done(function (result) { @@ -444,11 +450,11 @@ switch (index) { case 0: - return 'smalllibrarytiles'; + return 'smalllibrarytiles-automobile'; case 1: return 'resume'; case 2: - return ''; + return 'latestmedia'; case 3: return ''; default: @@ -470,7 +476,10 @@ Sections.loadLibraryTiles(elem, userId, 'backdrop', index); } else if (section == 'smalllibrarytiles') { - Sections.loadLibraryTiles(elem, userId, 'smallBackdrop', index); + Sections.loadLibraryTiles(elem, userId, 'miniBackdrop', index); + } + else if (section == 'smalllibrarytiles-automobile') { + Sections.loadLibraryTiles(elem, userId, 'miniBackdrop', index, true); } else if (section == 'librarybuttons') { Sections.loadlibraryButtons(elem, userId, index); @@ -484,7 +493,7 @@ } else if (section == 'folders') { - Sections.loadLibraryFolders(elem, userId, 'smallBackdrop', index); + Sections.loadLibraryFolders(elem, userId, 'backdrop', index); } else if (section == 'latestchannelmedia') { Sections.loadLatestChannelMedia(elem, userId); diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index 8791d664e2..6460a5ff49 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -311,7 +311,7 @@ $('#scenesCollapsible', page).hide(); } else { $('#scenesCollapsible', page).show(); - renderScenes(page, item, user, 4); + renderScenes(page, item, user, 3); } if (!item.SpecialFeatureCount || item.SpecialFeatureCount == 0 || item.Type == "Series") { diff --git a/dashboard-ui/scripts/librarylist.js b/dashboard-ui/scripts/librarylist.js index 8bc6162655..3e17690c4b 100644 --- a/dashboard-ui/scripts/librarylist.js +++ b/dashboard-ui/scripts/librarylist.js @@ -305,9 +305,15 @@ function onGroupedPosterItemClick(e) { + if ($(e.target).is('.posterItemOverlayTarget') || + $(e.target).parents('.posterItemOverlayTarget').length) { + e.preventDefault(); + return; + } + var posterItem = this; var itemId = posterItem.getAttribute('data-itemid'); - + $(posterItem).addClass('hasContextMenu'); var userId = Dashboard.getCurrentUserId(); diff --git a/dashboard-ui/scripts/livetvsuggested.js b/dashboard-ui/scripts/livetvsuggested.js index 911abdf3f5..c96019c6c3 100644 --- a/dashboard-ui/scripts/livetvsuggested.js +++ b/dashboard-ui/scripts/livetvsuggested.js @@ -9,7 +9,7 @@ userId: Dashboard.getCurrentUserId(), IsAiring: true, - limit: 12 + limit: 10 }).done(function (result) { @@ -32,7 +32,7 @@ userId: Dashboard.getCurrentUserId(), IsAiring: false, HasAired: false, - limit: 12 + limit: 10 }).done(function (result) { diff --git a/dashboard-ui/scripts/moviesrecommended.js b/dashboard-ui/scripts/moviesrecommended.js index 91a9dac5a7..cd9e61a48d 100644 --- a/dashboard-ui/scripts/moviesrecommended.js +++ b/dashboard-ui/scripts/moviesrecommended.js @@ -50,7 +50,7 @@ SortOrder: "Descending", IncludeItemTypes: "Movie", Filters: "IsResumable", - Limit: screenWidth >= 1920 ? 6 : (screenWidth >= 1440 ? 6 : 3), + Limit: (screenWidth >= 1200 ? 6 : 3), Recursive: true, Fields: "PrimaryImageAspectRatio", CollapseBoxSetItems: false, @@ -81,7 +81,7 @@ userId: Dashboard.getCurrentUserId(), categoryLimit: screenWidth >= 1200 ? 4 : 3, - itemLimit: screenWidth >= 1920 ? 6 : (screenWidth >= 1440 ? 6 : 7), + ItemLimit: (screenWidth >= 1200 ? 6 : 5), Fields: "PrimaryImageAspectRatio" }); diff --git a/dashboard-ui/scripts/musicrecommended.js b/dashboard-ui/scripts/musicrecommended.js index 52486be76c..8c423f9b42 100644 --- a/dashboard-ui/scripts/musicrecommended.js +++ b/dashboard-ui/scripts/musicrecommended.js @@ -11,7 +11,7 @@ var options = { IncludeItemTypes: "Audio", - Limit: screenWidth >= 1920 ? 14 : (screenWidth >= 1440 ? 14 : 12), + Limit: screenWidth >= 1920 ? 15 : (screenWidth >= 1200 ? 10 : 12), Fields: "PrimaryImageAspectRatio", ParentId: parentId }; @@ -34,7 +34,7 @@ SortBy: "DatePlayed", SortOrder: "Descending", IncludeItemTypes: "Audio", - Limit: screenWidth >= 1920 ? 7 : (screenWidth >= 1440 ? 7 : 6), + Limit: screenWidth >= 1920 ? 5 : (screenWidth >= 1200 ? 5 : 6), Recursive: true, Fields: "PrimaryImageAspectRatio,AudioInfo", Filters: "IsPlayed", @@ -64,7 +64,7 @@ SortBy: "PlayCount", SortOrder: "Descending", IncludeItemTypes: "Audio", - Limit: screenWidth >= 1920 ? 14 : (screenWidth >= 1440 ? 14 : 12), + Limit: screenWidth >= 1920 ? 10 : (screenWidth >= 1200 ? 10 : 12), Recursive: true, Fields: "PrimaryImageAspectRatio,AudioInfo", Filters: "IsPlayed", diff --git a/dashboard-ui/scripts/serversecurity.js b/dashboard-ui/scripts/serversecurity.js index 5f282702bb..0592032e37 100644 --- a/dashboard-ui/scripts/serversecurity.js +++ b/dashboard-ui/scripts/serversecurity.js @@ -1 +1,145 @@ - \ No newline at end of file +(function ($, document, apiClient) { + + function revoke(page, key) { + + Dashboard.confirm(Globalize.translate('MessageConfirmRevokeApiKey'), Globalize.translate('HeaderConfirmRevokeApiKey'), function (result) { + + if (result) { + + Dashboard.showLoadingMsg(); + + ApiClient.ajax({ + type: "DELETE", + url: apiClient.getUrl('Auth/Keys/' + key) + + }).done(function () { + + loadData(page); + }); + } + + }); + } + + function renderKeys(page, keys, users) { + + var rows = keys.map(function (item) { + + var html = ''; + + html += '
'; + html += ''; + html += ''; + html += (item.AccessToken); + html += ''; + html += (item.AppName || ''); + html += ''; + html += (item.DeviceName || ''); + html += ''; + + var user = users.filter(function (u) { + + return u.Id == item.UserId; + })[0]; + + if (user) { + html += user.Name; + } + + html += ''; + + var date = parseISO8601Date(item.DateCreated, { toLocal: true }); + + html += date.toLocaleDateString() + ' ' + LiveTvHelpers.getDisplayTime(date); + + html += '
+ + + + + + + + + + + + +
${HeaderApiKey}${HeaderApp}${HeaderDevice}${HeaderUser}${HeaderDateIssued}
+
+
+
+

${HeaderNewApiKey}

+ +

${HeaderNewApiKeyHelp}

+
+ + +
${LabelAppNameExample}
+
+ +
+

+ +

+
+
+ +