diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index 64a53a8524..2eb3bf6fa7 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/.bower.json +++ b/dashboard-ui/bower_components/emby-webcomponents/.bower.json @@ -16,12 +16,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.3.50", - "_release": "1.3.50", + "version": "1.3.51", + "_release": "1.3.51", "_resolution": { "type": "version", - "tag": "1.3.50", - "commit": "2c09d5bf9a8f9698095956faca9a8fa55886cb42" + "tag": "1.3.51", + "commit": "0c56ace6eb1ffd23624d7721b3fa8902022e4cc3" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.0", diff --git a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css index 82ef017a31..1da4198430 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css +++ b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css @@ -53,7 +53,6 @@ .actionSheetScroller { /* Override default style being applied by polymer */ margin-bottom: 0 !important; - flex-grow: 1; } .layout-tv .actionSheetScroller { diff --git a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js index b7da0a093e..e3f7349f53 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js +++ b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js @@ -148,15 +148,8 @@ dlg.classList.add('centered'); } - var enablePaperMenu = !layoutManager.tv; - enablePaperMenu = false; var itemTagName = 'paper-button'; - if (enablePaperMenu) { - html += ''; - itemTagName = 'paper-menu-item'; - } - for (var i = 0, length = options.items.length; i < length; i++) { var option = options.items[i]; @@ -174,10 +167,6 @@ html += ''; } - if (enablePaperMenu) { - html += ''; - } - if (options.showCancel) { html += '
'; html += '' + globalize.translate('sharedcomponents#ButtonCancel') + ''; diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js index b205787b12..d4e40f5952 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js @@ -190,7 +190,7 @@ return null; } - function getChannelProgramsHtml(context, date, channel, programs) { + function getChannelProgramsHtml(context, date, channel, programs, options) { var html = ''; @@ -255,20 +255,20 @@ html += '
'; - if (program.IsLive) { + if (program.IsLive && options.showLiveIndicator) { html += '' + globalize.translate('sharedcomponents#AttributeLive') + ' '; } - else if (program.IsPremiere) { + else if (program.IsPremiere && options.showPremiereIndicator) { html += '' + globalize.translate('sharedcomponents#AttributePremiere') + ' '; } - else if (program.IsSeries && !program.IsRepeat) { + else if (program.IsSeries && !program.IsRepeat && options.showNewIndicator) { html += '' + globalize.translate('sharedcomponents#AttributeNew') + ' '; } html += program.Name; html += '
'; - if (program.IsHD) { + if (program.IsHD && options.showHdIcon) { html += ''; } @@ -295,9 +295,21 @@ var html = []; + // Normally we'd want to just let responsive css handle this, + // but since mobile browsers are often underpowered, + // it can help performance to get them out of the markup + var showIndicators = window.innerWidth >= 800; + + var options = { + showHdIcon: showIndicators, + showLiveIndicator: showIndicators, + showPremiereIndicator: showIndicators, + showNewIndicator: showIndicators + }; + for (var i = 0, length = channels.length; i < length; i++) { - html.push(getChannelProgramsHtml(context, date, channels[i], programs)); + html.push(getChannelProgramsHtml(context, date, channels[i], programs, options)); } var programGrid = context.querySelector('.programGrid'); @@ -623,7 +635,7 @@ programGrid.addEventListener('focus', onProgramGridFocus, true); - addEventListenerWithOptions(programGrid, 'scroll', function () { + addEventListenerWithOptions(programGrid, 'scroll', function (e) { onProgramGridScroll(context, this, timeslotHeaders); }, { passive: true diff --git a/dashboard-ui/bower_components/polymer/.bower.json b/dashboard-ui/bower_components/polymer/.bower.json index 3e8a4009a3..bbad7fe7ba 100644 --- a/dashboard-ui/bower_components/polymer/.bower.json +++ b/dashboard-ui/bower_components/polymer/.bower.json @@ -34,6 +34,6 @@ "commit": "11c987b2eb3c73b388a79fc8aaea8ca01624f514" }, "_source": "git://github.com/Polymer/polymer.git", - "_target": "^1.0.0", + "_target": "^1.1.0", "_originalSource": "Polymer/polymer" } \ No newline at end of file diff --git a/dashboard-ui/scripts/livetvsettings.js b/dashboard-ui/scripts/livetvsettings.js index b172568f30..cdf7a7de0b 100644 --- a/dashboard-ui/scripts/livetvsettings.js +++ b/dashboard-ui/scripts/livetvsettings.js @@ -35,21 +35,49 @@ config.EnableAutoOrganize = $('#chkOrganize', form).checked(); config.EnableRecordingEncoding = $('#chkConvertRecordings', form).checked(); config.EnableOriginalAudioWithEncodedRecordings = $('#chkPreserveAudio', form).checked(); - config.RecordingPath = form.querySelector('#txtRecordingPath').value || null; - config.MovieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null; - config.SeriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null; + + var recordingPath = form.querySelector('#txtRecordingPath').value || null; + var movieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null; + var seriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null; + + var recordingPathChanged = recordingPath != config.RecordingPath || + movieRecordingPath != config.MovieRecordingPath || + seriesRecordingPath != config.SeriesRecordingPath; + + config.RecordingPath = recordingPath; + config.MovieRecordingPath = movieRecordingPath; + config.SeriesRecordingPath = seriesRecordingPath; config.PrePaddingSeconds = $('#txtPrePaddingMinutes', form).val() * 60; config.PostPaddingSeconds = $('#txtPostPaddingMinutes', form).val() * 60; config.EnableRecordingSubfolders = form.querySelector('#chkEnableRecordingSubfolders').checked; - ApiClient.updateNamedConfiguration("livetv", config).then(Dashboard.processServerConfigurationUpdateResult); + ApiClient.updateNamedConfiguration("livetv", config).then(function () { + Dashboard.processServerConfigurationUpdateResult(); + + showSaveMessage(recordingPathChanged); + }); }); // Disable default form submission return false; } + function showSaveMessage(recordingPathChanged) { + + var msg = ''; + + if (recordingPathChanged) { + msg += Globalize.translate('RecordingPathChangeMessage'); + } + + if (msg) { + require(['alert'], function (alert) { + alert(msg); + }); + } + } + function getTabs() { return [ { diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 8cd8d3a5e5..9aa586326d 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -2296,41 +2296,47 @@ var AppInfo = {}; dependencies: [], autoFocus: false, controller: 'scripts/aboutpage', - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/addplugin.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/appservices.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/autoorganizelog.html', dependencies: [], - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/autoorganizesmart.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/autoorganizetv.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ @@ -2351,34 +2357,39 @@ var AppInfo = {}; path: '/channelsettings.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/cinemamodeconfiguration.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/collections.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/connectlogin.html', dependencies: ['paper-button'], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/dashboard.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ @@ -2386,7 +2397,8 @@ var AppInfo = {}; dependencies: ['emby-collapsible', 'paper-textarea', 'paper-input', 'paper-checkbox'], controller: 'scripts/dashboardgeneral', autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ @@ -2394,56 +2406,64 @@ var AppInfo = {}; dependencies: ['paper-checkbox', 'paper-input', 'paper-button'], autoFocus: false, roles: 'admin', - controller: 'scripts/dashboardhosting' + controller: 'scripts/dashboardhosting', + transition: 'fade' }); defineRoute({ path: '/device.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/devices.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/devicesupload.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/dlnaprofile.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/dlnaprofiles.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/dlnaserversettings.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/dlnasettings.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ @@ -2456,57 +2476,66 @@ var AppInfo = {}; path: '/encodingsettings.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/favorites.html', dependencies: [], autoFocus: false, - controller: 'scripts/favorites' + controller: 'scripts/favorites', + transition: 'fade' }); defineRoute({ path: '/forgotpassword.html', dependencies: [], - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/forgotpasswordpin.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/gamegenres.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/games.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/gamesrecommended.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/gamestudios.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/gamesystems.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ @@ -2550,21 +2579,24 @@ var AppInfo = {}; path: '/library.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/librarypathmapping.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/librarysettings.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ @@ -2579,52 +2611,60 @@ var AppInfo = {}; path: '/livetvguideprovider.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/livetvitems.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/livetvrecordinglist.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/livetvseriestimer.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/livetvsettings.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/livetvstatus.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/livetvtunerprovider-hdhomerun.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/livetvtunerprovider-m3u.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ @@ -2632,14 +2672,16 @@ var AppInfo = {}; dependencies: ['paper-input', 'paper-checkbox'], autoFocus: false, roles: 'admin', - controller: 'scripts/livetvtunerprovider-satip' + controller: 'scripts/livetvtunerprovider-satip', + transition: 'fade' }); defineRoute({ path: '/log.html', dependencies: ['paper-toggle-button'], roles: 'admin', - controller: 'scripts/logpage' + controller: 'scripts/logpage', + transition: 'fade' }); defineRoute({ @@ -2647,42 +2689,48 @@ var AppInfo = {}; dependencies: ['paper-button', 'humanedate', 'paper-input'], autoFocus: false, anonymous: true, - controller: 'scripts/loginpage' + controller: 'scripts/loginpage', + transition: 'fade' }); defineRoute({ path: '/metadata.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/metadataadvanced.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/metadataimages.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/metadatanfo.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/metadatasubtitles.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ @@ -2760,14 +2808,16 @@ var AppInfo = {}; defineRoute({ path: '/notificationlist.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/notificationsetting.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ @@ -2775,7 +2825,8 @@ var AppInfo = {}; controller: 'scripts/notificationsettings', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ @@ -2797,7 +2848,8 @@ var AppInfo = {}; path: '/playbackconfiguration.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ @@ -2811,107 +2863,123 @@ var AppInfo = {}; path: '/plugincatalog.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/plugins.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/reports.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/scheduledtask.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/scheduledtasks.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/search.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/secondaryitems.html', dependencies: [], autoFocus: false, - controller: 'scripts/secondaryitems' + controller: 'scripts/secondaryitems', + transition: 'fade' }); defineRoute({ path: '/selectserver.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/serversecurity.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/shared.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/streamingsettings.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/support.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/supporterkey.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/syncactivity.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/syncjob.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/syncsettings.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ @@ -2926,104 +2994,119 @@ var AppInfo = {}; path: '/useredit.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/userlibraryaccess.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/usernew.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/userparentalcontrol.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/userpassword.html', dependencies: [], - autoFocus: false + autoFocus: false, + transition: 'fade' }); defineRoute({ path: '/userprofiles.html', dependencies: [], autoFocus: false, - roles: 'admin' + roles: 'admin', + transition: 'fade' }); defineRoute({ path: '/wizardagreement.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/wizardfinish.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/wizardlibrary.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/wizardlivetvguide.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/wizardlivetvtuner.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/wizardservice.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/wizardsettings.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/wizardstart.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ path: '/wizarduser.html', dependencies: [], autoFocus: false, - anonymous: true + anonymous: true, + transition: 'fade' }); defineRoute({ diff --git a/dashboard-ui/strings/en-US.json b/dashboard-ui/strings/en-US.json index d6b33c7354..a8c8aa9e28 100644 --- a/dashboard-ui/strings/en-US.json +++ b/dashboard-ui/strings/en-US.json @@ -2355,5 +2355,6 @@ "CreateCollectionHelp": "Collections allow you to create personalized groupings of movies and other library content.", "AddItemToCollectionHelp": "Add items to collections by searching for them and using their right-click or tap menus to add them to a collection.", "HeaderHealthMonitor": "Health Monitor", - "HealthMonitorNoAlerts": "There are no active alerts." + "HealthMonitorNoAlerts": "There are no active alerts.", + "RecordingPathChangeMessage": "Changing your recording folder will not migrate existing recordings from the old location to the new. You'll need to move them manually if desired." }