diff --git a/dashboard-ui/bower_components/emby-apiclient/apiclient.js b/dashboard-ui/bower_components/emby-apiclient/apiclient.js index 446b70079..179b6933a 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 91812bb59..57f144fe9 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 10189afd8..cca34bcc0 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 cf180f520..c3d814dc3 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 4030aa92c..280e0cdbd 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 f76855b27..87e3dad5d 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 a96f0f050..bc60e6e94 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 898b04d16..f68f87920 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 71aad6d77..fefa788c0 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 e1e204b40..f210d002d 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 5d0edde4e..f0f54accb 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 729e80f68..595d5de4d 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 b5992d358..87b414842 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 c9395ba0e..9cbc5b23e 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" }