diff --git a/dashboard-ui/bower_components/emby-apiclient/apiclient.js b/dashboard-ui/bower_components/emby-apiclient/apiclient.js index 446b700797..179b6933a4 100644 --- a/dashboard-ui/bower_components/emby-apiclient/apiclient.js +++ b/dashboard-ui/bower_components/emby-apiclient/apiclient.js @@ -940,6 +940,13 @@ return self.getJSON(url); }; + self.getLiveTvRecordingSeries = function (options) { + + var url = self.getUrl("LiveTv/Recordings/Series", options || {}); + + return self.getJSON(url); + }; + self.getLiveTvRecordingGroups = function (options) { var url = self.getUrl("LiveTv/Recordings/Groups", options || {}); diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index 91812bb598..57f144fe97 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/.bower.json +++ b/dashboard-ui/bower_components/emby-webcomponents/.bower.json @@ -14,12 +14,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.4.218", - "_release": "1.4.218", + "version": "1.4.219", + "_release": "1.4.219", "_resolution": { "type": "version", - "tag": "1.4.218", - "commit": "4374b68415ef644f1b9ef55c91744ad788d829a1" + "tag": "1.4.219", + "commit": "01b409b14bf53cb71f5af887266d0dec0645f7fe" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.1", diff --git a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js index 10189afd8a..cca34bcc09 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js +++ b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js @@ -970,8 +970,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo if (item.MovieCount) { childText = item.MovieCount == 1 ? - globalize.translate('ValueOneMovie') : - globalize.translate('ValueMovieCount', item.MovieCount); + globalize.translate('sharedcomponents#ValueOneMovie') : + globalize.translate('sharedcomponents#ValueMovieCount', item.MovieCount); counts.push(childText); } @@ -979,24 +979,24 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo if (item.SeriesCount) { childText = item.SeriesCount == 1 ? - globalize.translate('ValueOneSeries') : - globalize.translate('ValueSeriesCount', item.SeriesCount); + globalize.translate('sharedcomponents#ValueOneSeries') : + globalize.translate('sharedcomponents#ValueSeriesCount', item.SeriesCount); counts.push(childText); } if (item.EpisodeCount) { childText = item.EpisodeCount == 1 ? - globalize.translate('ValueOneEpisode') : - globalize.translate('ValueEpisodeCount', item.EpisodeCount); + globalize.translate('sharedcomponents#ValueOneEpisode') : + globalize.translate('sharedcomponents#ValueEpisodeCount', item.EpisodeCount); counts.push(childText); } if (item.GameCount) { childText = item.GameCount == 1 ? - globalize.translate('ValueOneGame') : - globalize.translate('ValueGameCount', item.GameCount); + globalize.translate('sharedcomponents#ValueOneGame') : + globalize.translate('sharedcomponents#ValueGameCount', item.GameCount); counts.push(childText); } @@ -1037,6 +1037,14 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo counts.push(childText); } + + } else if (item.Type == 'Series') { + + childText = item.RecursiveItemCount == 1 ? + globalize.translate('sharedcomponents#ValueOneEpisode') : + globalize.translate('sharedcomponents#ValueEpisodeCount', item.RecursiveItemCount); + + counts.push(childText); } return counts.join(', '); diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js index cf180f5202..c3d814dc38 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js @@ -807,7 +807,7 @@ // find guide cells by timer id, remove timer icon var cells = options.element.querySelectorAll('.programCell[data-timerid="' + id + '"]'); for (var i = 0, length = cells.length; i < length; i++) { - var cells = cells[i]; + var cell = cells[i]; var icon = cell.querySelector('.timerIcon'); if (icon) { icon.parentNode.removeChild(icon); @@ -821,7 +821,7 @@ // find guide cells by timer id, remove timer icon var cells = options.element.querySelectorAll('.programCell[data-seriestimerid="' + id + '"]'); for (var i = 0, length = cells.length; i < length; i++) { - var cells = cells[i]; + var cell = cells[i]; var icon = cell.querySelector('.seriesTimerIcon'); if (icon) { icon.parentNode.removeChild(icon); @@ -834,6 +834,13 @@ var context = options.element; context.innerHTML = globalize.translateDocument(template, 'sharedcomponents'); + if (layoutManager.desktop) { + var visibleGuideScrollers = context.querySelectorAll('.guideScroller'); + for (var i = 0, length = visibleGuideScrollers.length; i < length; i++) { + visibleGuideScrollers[i].classList.add('visibleGuideScroller'); + } + } + var programGrid = context.querySelector('.programGrid'); var timeslotHeaders = context.querySelector('.timeslotHeaders'); diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/tvguide.template.html b/dashboard-ui/bower_components/emby-webcomponents/guide/tvguide.template.html index 4030aa92ce..280e0cdbdd 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/tvguide.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/tvguide.template.html @@ -17,13 +17,13 @@
-
+
-
+
-
+
diff --git a/dashboard-ui/bower_components/iron-icon/.bower.json b/dashboard-ui/bower_components/iron-icon/.bower.json index f76855b27a..87e3dad5d3 100644 --- a/dashboard-ui/bower_components/iron-icon/.bower.json +++ b/dashboard-ui/bower_components/iron-icon/.bower.json @@ -32,14 +32,14 @@ "web-component-tester": "^4.0.0", "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" }, - "homepage": "https://github.com/PolymerElements/iron-icon", + "homepage": "https://github.com/polymerelements/iron-icon", "_release": "1.0.10", "_resolution": { "type": "version", "tag": "v1.0.10", "commit": "f4e146da4982ff96bb25db85290c09e8de4ec734" }, - "_source": "git://github.com/PolymerElements/iron-icon.git", + "_source": "git://github.com/polymerelements/iron-icon.git", "_target": "^1.0.0", - "_originalSource": "PolymerElements/iron-icon" + "_originalSource": "polymerelements/iron-icon" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/polymer/.bower.json b/dashboard-ui/bower_components/polymer/.bower.json index a96f0f050e..bc60e6e941 100644 --- a/dashboard-ui/bower_components/polymer/.bower.json +++ b/dashboard-ui/bower_components/polymer/.bower.json @@ -40,6 +40,6 @@ "commit": "1f197d9d7874b1e5808b2a5c26f34446a7d912fc" }, "_source": "git://github.com/Polymer/polymer.git", - "_target": "^1.1.0", + "_target": "^1.2.0", "_originalSource": "Polymer/polymer" } \ No newline at end of file diff --git a/dashboard-ui/dashboard/dashboardgeneral.js b/dashboard-ui/dashboard/dashboardgeneral.js index 898b04d165..f68f879201 100644 --- a/dashboard-ui/dashboard/dashboardgeneral.js +++ b/dashboard-ui/dashboard/dashboardgeneral.js @@ -55,10 +55,6 @@ $('.autoUpdatesContainer', page).addClass('hide'); } - $('#chkEnableDashboardResponseCache', page).checked(config.EnableDashboardResponseCaching); - $('#chkEnableMinification', page).checked(config.EnableDashboardResourceMinification); - $('#txtDashboardSourcePath', page).val(config.DashboardSourcePath).trigger('change'); - Dashboard.hideLoadingMsg(); } @@ -87,10 +83,6 @@ config.EnableAutomaticRestart = $('#chkEnableAutomaticRestart', form).checked(); config.EnableAutoUpdate = $('#chkEnableAutomaticServerUpdates', form).checked(); - config.EnableDashboardResourceMinification = $('#chkEnableMinification', form).checked(); - config.EnableDashboardResponseCaching = $('#chkEnableDashboardResponseCache', form).checked(); - config.DashboardSourcePath = $('#txtDashboardSourcePath', form).val(); - ApiClient.updateServerConfiguration(config).then(function () { ApiClient.getNamedConfiguration(brandingConfigKey).then(function (brandingConfig) { @@ -141,25 +133,6 @@ }); }); - $('#btnSelectDashboardSourcePath', view).on("click.selectDirectory", function () { - - require(['directorybrowser'], function (directoryBrowser) { - - var picker = new directoryBrowser(); - - picker.show({ - - callback: function (path) { - - if (path) { - view.querySelector('#txtDashboardSourcePath').value = path; - } - picker.close(); - } - }); - }); - }); - $('.dashboardGeneralForm', view).off('submit', onSubmit).on('submit', onSubmit); view.addEventListener('viewshow', function () { diff --git a/dashboard-ui/dashboardgeneral.html b/dashboard-ui/dashboardgeneral.html index 71aad6d77d..fefa788c08 100644 --- a/dashboard-ui/dashboardgeneral.html +++ b/dashboard-ui/dashboardgeneral.html @@ -90,32 +90,6 @@
- -
-
-
- -
- -
${OptionDisableForDevelopmentHelp}
-
-
-
-
- -
- -
-
${LabelDashboardSourcePathHelp}
-
-
-

diff --git a/dashboard-ui/livetv.html b/dashboard-ui/livetv.html index e1e204b409..f210d002dd 100644 --- a/dashboard-ui/livetv.html +++ b/dashboard-ui/livetv.html @@ -87,7 +87,7 @@
-

${HeaderRecordedMovies}

+

${TabMovies}

@@ -95,22 +95,35 @@
-

${HeaderRecordedEpisodes}

+

${TabSeries}


-
+
-

${HeaderRecordedPrograms}

- +

${Sports}

+ +
+
+
+
+
+
+

${HeaderForKids}

+

+
+

${HeaderActiveRecordings}

+
+
+

diff --git a/dashboard-ui/scripts/livetvitems.js b/dashboard-ui/scripts/livetvitems.js index 5d0edde4e3..f0f54accbc 100644 --- a/dashboard-ui/scripts/livetvitems.js +++ b/dashboard-ui/scripts/livetvitems.js @@ -108,19 +108,19 @@ if (params.IsMovie == 'true') { query.IsMovie = true; } - else if (params.IsMovie == 'true') { + else if (params.IsMovie == 'false') { query.IsMovie = false; } if (params.IsSports == 'true') { query.IsSports = true; } - else if (params.IsSports == 'true') { + else if (params.IsSports == 'false') { query.IsSports = false; } if (params.IsKids == 'true') { query.IsKids = true; } - else if (params.IsKids == 'true') { + else if (params.IsKids == 'false') { query.IsKids = false; } diff --git a/dashboard-ui/scripts/livetvrecordings.js b/dashboard-ui/scripts/livetvrecordings.js index 729e80f688..595d5de4d9 100644 --- a/dashboard-ui/scripts/livetvrecordings.js +++ b/dashboard-ui/scripts/livetvrecordings.js @@ -53,18 +53,6 @@ indexByDate: false }); }); - - //ApiClient.getLiveTvRecordings({ - - // userId: Dashboard.getCurrentUserId(), - // IsInProgress: true, - // Fields: 'CanDelete' - - //}).then(function (result) { - - // renderRecordings(context.querySelector('#activeRecordings'), result.Items); - - //}); } function renderLatestRecordings(context) { @@ -107,7 +95,7 @@ function renderEpisodeRecordings(context) { - ApiClient.getLiveTvRecordings({ + ApiClient.getLiveTvRecordingSeries({ UserId: Dashboard.getCurrentUserId(), Limit: enableScrollX() ? 12 : 8, @@ -118,11 +106,14 @@ }).then(function (result) { - renderRecordings(context.querySelector('#episodeRecordings'), result.Items); + renderRecordings(context.querySelector('#episodeRecordings'), result.Items, { + showItemCounts: true, + showParentTitle: false + }); }); } - function renderProgramRecordings(context) { + function renderSportsRecordings(context) { ApiClient.getLiveTvRecordings({ @@ -131,12 +122,31 @@ IsInProgress: false, Fields: 'CanDelete,PrimaryImageAspectRatio,BasicSyncInfo', EnableTotalRecordCount: false, - IsMovie: false, - IsSeries: false + IsSports: true }).then(function (result) { - renderRecordings(context.querySelector('#programRecordings'), result.Items, { + renderRecordings(context.querySelector('#sportsRecordings'), result.Items, { + showYear: true, + showParentTitle: false + }); + }); + } + + function renderKidsRecordings(context) { + + ApiClient.getLiveTvRecordings({ + + UserId: Dashboard.getCurrentUserId(), + Limit: enableScrollX() ? 12 : 8, + IsInProgress: false, + Fields: 'CanDelete,PrimaryImageAspectRatio,BasicSyncInfo', + EnableTotalRecordCount: false, + IsKids: true + + }).then(function (result) { + + renderRecordings(context.querySelector('#kidsRecordings'), result.Items, { showYear: true, showParentTitle: false }); @@ -169,7 +179,8 @@ renderLatestRecordings(context); renderMovieRecordings(context); renderEpisodeRecordings(context); - renderProgramRecordings(context); + renderSportsRecordings(context); + renderKidsRecordings(context); } function onMoreClick(e) { @@ -189,6 +200,12 @@ case 'programs': Dashboard.navigate('livetvitems.html?type=Recordings&IsSeries=false&IsMovie=false'); break; + case 'kids': + Dashboard.navigate('livetvitems.html?type=Recordings&IsKids=true'); + break; + case 'sports': + Dashboard.navigate('livetvitems.html?type=Recordings&IsSports=true'); + break; default: break; } diff --git a/dashboard-ui/scripts/livetvschedule.js b/dashboard-ui/scripts/livetvschedule.js index b5992d3587..87b4148421 100644 --- a/dashboard-ui/scripts/livetvschedule.js +++ b/dashboard-ui/scripts/livetvschedule.js @@ -1,5 +1,24 @@ define(['scripts/livetvcomponents', 'emby-button', 'emby-itemscontainer'], function () { + function renderActiveRecordings(context) { + + ApiClient.getLiveTvTimers({ + + IsActive: true + + }).then(function (result) { + + // The IsActive param is new, so handle older servers that don't support it + if (result.Items.length && result.Items[0].Status != 'InProgress') { + result.Items = []; + } + + renderTimers(context.querySelector('#activeRecordings'), result.Items, { + indexByDate: false + }); + }); + } + function renderTimers(context, timers, options) { LiveTvHelpers.getTimersHtml(timers, options).then(function (html) { @@ -33,6 +52,7 @@ Dashboard.showLoadingMsg(); + renderActiveRecordings(context); renderUpcomingRecordings(context); } diff --git a/dashboard-ui/strings/en-US.json b/dashboard-ui/strings/en-US.json index c9395ba0e0..9cbc5b23ef 100644 --- a/dashboard-ui/strings/en-US.json +++ b/dashboard-ui/strings/en-US.json @@ -2133,6 +2133,6 @@ "H264EncodingPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.", "LabelH264Crf": "H264 encoding CRF:", "H264CrfHelp": "The Constant Rate Factor (CRF) is the default quality setting for the x264 encoder. You can set the values between 0 and 51, where lower values would result in better quality (at the expense of higher file sizes). Sane values are between 18 and 28. The default for x264 is 23, so you can use this as a starting point.", - "HeaderRecordedMovies": "Recorded Movies", - "HeaderRecordedEpisodes": "Recorded Episodes" + "Sports": "Sports", + "HeaderForKids": "For Kids" }