diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index d78a6adda0..3fa52e9a4c 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.213", - "_release": "1.4.213", + "version": "1.4.215", + "_release": "1.4.215", "_resolution": { "type": "version", - "tag": "1.4.213", - "commit": "5db5ff0f3a13742f310688474a22b44e0d38cee5" + "tag": "1.4.215", + "commit": "fb6cffaa7905a6b6f431175868b58d4027b9a35c" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.1", diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.js b/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.js index 6a30f57c4e..d131335827 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.js @@ -10,6 +10,10 @@ this.checked = !this.checked; + this.dispatchEvent(new CustomEvent('change', { + bubbles: true + })); + return false; } } diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide-settings.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide-settings.js new file mode 100644 index 0000000000..165da63def --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide-settings.js @@ -0,0 +1,89 @@ +define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectionManager', 'require', 'loading', 'scrollHelper', 'emby-checkbox', 'css!./../formdialog', 'material-icons'], function (dialogHelper, globalize, userSettings, layoutManager, connectionManager, require, loading, scrollHelper) { + + function save(context) { + + var chkIndicators = context.querySelectorAll('.chkIndicator'); + for (var i = 0, length = chkIndicators.length; i < length; i++) { + + var type = chkIndicators[i].getAttribute('data-type'); + userSettings.set('guide-indicator-' + type, chkIndicators[i].checked); + + } + } + + function load(context) { + + var chkIndicators = context.querySelectorAll('.chkIndicator'); + for (var i = 0, length = chkIndicators.length; i < length; i++) { + + var type = chkIndicators[i].getAttribute('data-type'); + chkIndicators[i].checked = userSettings.get('guide-indicator-' + type) == 'true'; + } + } + + function showEditor() { + + return new Promise(function (resolve, reject) { + + var settingsChanged = false; + + require(['text!./guide-settings.template.html'], function (template) { + + var dialogOptions = { + removeOnClose: true, + scrollY: false + }; + + if (layoutManager.tv) { + dialogOptions.size = 'fullscreen'; + } else { + dialogOptions.size = 'small'; + } + + var dlg = dialogHelper.createDialog(dialogOptions); + + dlg.classList.add('formDialog'); + + var html = ''; + + html += globalize.translateDocument(template, 'sharedcomponents'); + + dlg.innerHTML = html; + document.body.appendChild(dlg); + + currentDialog = dlg; + + dlg.addEventListener('change', function () { + + settingsChanged = true; + }); + + dlg.addEventListener('close', function () { + + if (layoutManager.tv) { + scrollHelper.centerFocus.off(dlg.querySelector('.formDialogContent'), false); + } + + save(dlg); + + if (settingsChanged) { + resolve(); + } else { + reject(); + } + }); + + if (layoutManager.tv) { + scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false); + } + + load(dlg); + dialogHelper.open(dlg); + }); + }); + } + + return { + show: showEditor + }; +}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide-settings.template.html b/dashboard-ui/bower_components/emby-webcomponents/guide/guide-settings.template.html new file mode 100644 index 0000000000..ff2242b66c --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide-settings.template.html @@ -0,0 +1,18 @@ +
+ +
+ ${Settings} +
+
+
+
+ +

${ShowIndicatorsFor}

+
+ +
+
+
\ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.css b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.css index 84acb41e6b..d624d1e5f9 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.css +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.css @@ -221,8 +221,9 @@ } .btnSelectDate { - color: #fff; padding-left: .5em; + text-transform: none; + font-weight: normal; } .channelHeaderCell { @@ -234,10 +235,6 @@ @media all and (max-width: 800px) { - .guideCurrentDay { - display: none; - } - .newTvProgram, .liveTvProgram, .premiereTvProgram, .guideHdIcon { display: none; } @@ -267,7 +264,7 @@ } .timeslotHeader, .channelTimeslotHeader { - height: 3.5em; + height: 3em; } .pointerInput .channelHeaderCell:hover { @@ -402,3 +399,10 @@ -webkit-border-radius: 2px; background: #888 no-repeat center; } + +.guideOptions { + color: #eee; + flex-shrink: 0; + display: flex; + align-items: center; +} diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js index 18c8c7e225..cf180f5202 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js @@ -1,4 +1,13 @@ -define(['require', 'browser', 'globalize', 'connectionManager', 'serverNotifications', 'loading', 'datetime', 'focusManager', 'imageLoader', 'events', 'layoutManager', 'itemShortcuts', 'registrationservices', 'dom', 'clearButtonStyle', 'css!./guide.css', 'material-icons', 'scrollStyles', 'emby-button', 'paper-icon-button-light'], function (require, browser, globalize, connectionManager, serverNotifications, loading, datetime, focusManager, imageLoader, events, layoutManager, itemShortcuts, registrationServices, dom) { +define(['require', 'browser', 'globalize', 'connectionManager', 'serverNotifications', 'loading', 'datetime', 'focusManager', 'userSettings', 'imageLoader', 'events', 'layoutManager', 'itemShortcuts', 'registrationservices', 'dom', 'clearButtonStyle', 'css!./guide.css', 'material-icons', 'scrollStyles', 'emby-button', 'paper-icon-button-light'], function (require, browser, globalize, connectionManager, serverNotifications, loading, datetime, focusManager, userSettings, imageLoader, events, layoutManager, itemShortcuts, registrationServices, dom) { + + function showViewSettings(instance) { + + require(['guide-settings-dialog'], function (guideSettingsDialog) { + guideSettingsDialog.show().then(function () { + instance.refresh(); + }); + }); + } function Guide(options) { @@ -168,8 +177,13 @@ console.log(nextDay); channelsPromise.then(function (channelsResult) { + var btnPreviousPage = context.querySelector('.btnPreviousPage'); + var btnNextPage = context.querySelector('.btnNextPage'); + if (channelsResult.TotalRecordCount > channelLimit) { - context.querySelector('.guidePaging').classList.remove('hide'); + + btnPreviousPage.classList.remove('hide'); + btnNextPage.classList.remove('hide'); if (channelQuery.StartIndex) { context.querySelector('.btnPreviousPage').disabled = false; @@ -178,13 +192,14 @@ } if ((channelQuery.StartIndex + channelLimit) < channelsResult.TotalRecordCount) { - context.querySelector('.btnNextPage').disabled = false; + btnNextPage.disabled = false; } else { - context.querySelector('.btnNextPage').disabled = true; + btnNextPage.disabled = true; } } else { - context.querySelector('.guidePaging').classList.add('hide'); + btnPreviousPage.classList.add('hide'); + btnNextPage.classList.add('hide'); } apiClient.getLiveTvPrograms({ @@ -415,7 +430,7 @@ showHdIcon: showIndicators, showLiveIndicator: showIndicators, showPremiereIndicator: showIndicators, - showNewIndicator: showIndicators + showNewIndicator: userSettings.get('guide-indicator-new') == 'true' }; for (var i = 0, length = channels.length; i < length; i++) { @@ -611,13 +626,13 @@ function getFutureDateText(date) { var weekday = []; - weekday[0] = globalize.translate('sharedcomponents#OptionSundayShort'); - weekday[1] = globalize.translate('sharedcomponents#OptionMondayShort'); - weekday[2] = globalize.translate('sharedcomponents#OptionTuesdayShort'); - weekday[3] = globalize.translate('sharedcomponents#OptionWednesdayShort'); - weekday[4] = globalize.translate('sharedcomponents#OptionThursdayShort'); - weekday[5] = globalize.translate('sharedcomponents#OptionFridayShort'); - weekday[6] = globalize.translate('sharedcomponents#OptionSaturdayShort'); + weekday[0] = globalize.translate('sharedcomponents#Sunday'); + weekday[1] = globalize.translate('sharedcomponents#Monday'); + weekday[2] = globalize.translate('sharedcomponents#Tuesday'); + weekday[3] = globalize.translate('sharedcomponents#Wednesday'); + weekday[4] = globalize.translate('sharedcomponents#Thursday'); + weekday[5] = globalize.translate('sharedcomponents#Friday'); + weekday[6] = globalize.translate('sharedcomponents#Saturday'); var day = weekday[date.getDay()]; date = datetime.toLocaleDateString(date); @@ -638,9 +653,7 @@ reloadGuide(page, newStartDate); - var text = getFutureDateText(date); - text = '' + text.replace(' ', ' '); - page.querySelector('.btnSelectDate').innerHTML = text; + page.querySelector('.dateText').innerHTML = getFutureDateText(date); } var dateOptions = []; @@ -698,6 +711,11 @@ function selectDate(page) { + var selectedDate = currentDate || new Date(); + dateOptions.forEach(function (d) { + d.selected = new Date(d.id).getDate() == selectedDate.getDate(); + }); + require(['actionsheet'], function (actionsheet) { actionsheet.show({ @@ -739,7 +757,6 @@ return elem; } - var selectedMediaInfoTimeout; function onProgramGridFocus(e) { var programCell = parentWithClass(e.target, 'programCell'); @@ -838,10 +855,6 @@ selectDate(context); }); - context.querySelector('.btnSelectDateIcon').addEventListener('click', function () { - selectDate(context); - }); - context.querySelector('.btnUnlockGuide').addEventListener('click', function () { currentStartIndex = 0; channelsPromise = null; @@ -860,6 +873,10 @@ reloadPage(context); }); + context.querySelector('.btnViewSettings').addEventListener('click', function () { + showViewSettings(self); + }); + context.classList.add('tvguide'); setScrollEvents(context, true); 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 449cbd5063..4030aa92ce 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/tvguide.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/tvguide.template.html @@ -1,6 +1,21 @@ -
+
+ + + + +
+ +
-
@@ -18,16 +33,4 @@ check ${UnlockGuide} -
- -
- - -
\ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/inputmanager.js b/dashboard-ui/bower_components/emby-webcomponents/inputmanager.js index 229136740c..07c8886e4e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/inputmanager.js +++ b/dashboard-ui/bower_components/emby-webcomponents/inputmanager.js @@ -123,13 +123,13 @@ define(['playbackManager', 'focusManager', 'embyRouter', 'dom'], function (playb break; case 'next': if (playbackManager.isPlaying()) { - playbackManager.nextTrack(); + playbackManager.nextChapter(); } break; case 'previous': if (playbackManager.isPlaying()) { - playbackManager.previousTrack(); + playbackManager.previousChapter(); } break; case 'guide': diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js index 3c8337fb8c..cc188f6afc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js @@ -99,13 +99,12 @@ return false; } - function getRegistration(programId, apiClient) { + function getRegistration(apiClient) { loading.show(); return apiClient.getJSON(apiClient.getUrl('LiveTv/Registration', { - ProgramId: programId, Feature: 'seriesrecordings' })).then(function (result) { @@ -140,7 +139,7 @@ showSeriesDays(context); context.querySelector('.btnSubmit').classList.remove('hide'); - getRegistration(currentProgramId, apiClient).then(function (regInfo) { + getRegistration(apiClient).then(function (regInfo) { if (regInfo.IsValid) { context.querySelector('.btnSubmit').classList.remove('hide'); @@ -288,12 +287,8 @@ selectDays(context, defaultTimer.Days); - if (program.ServiceName == 'Emby') { - context.querySelector('.convertRecordingsContainer').classList.remove('hide'); - showConvertRecordingsUnlockMessage(context, apiClient); - } else { - context.querySelector('.convertRecordingsContainer').classList.add('hide'); - } + context.querySelector('.convertRecordingsContainer').classList.remove('hide'); + showConvertRecordingsUnlockMessage(context, apiClient); loading.hide(); } diff --git a/dashboard-ui/bower_components/emby-webcomponents/router.js b/dashboard-ui/bower_components/emby-webcomponents/router.js index e0349789d7..1cb6d2d59c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/router.js +++ b/dashboard-ui/bower_components/emby-webcomponents/router.js @@ -1,4 +1,4 @@ -define(['loading', 'viewManager', 'skinManager', 'pluginManager', 'backdrop', 'browser', 'pageJs', 'appSettings', 'apphost'], function (loading, viewManager, skinManager, pluginManager, backdrop, browser, page, appSettings, appHost) { +define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdrop', 'browser', 'pageJs', 'appSettings', 'apphost'], function (loading, dom, viewManager, skinManager, pluginManager, backdrop, browser, page, appSettings, appHost) { var embyRouter = { showLocalLogin: function (apiClient, serverId, manualLogin) { @@ -481,12 +481,26 @@ define(['loading', 'viewManager', 'skinManager', 'pluginManager', 'backdrop', 'b } } - page.show(path, options); return new Promise(function (resolve, reject) { - setTimeout(resolve, 500); + + resolveOnNextShow = resolve; + page.show(path, options); }); } + var resolveOnNextShow; + dom.addEventListener(document, 'viewshow', function () { + + var resolve = resolveOnNextShow; + if (resolve) { + resolveOnNextShow = null; + resolve(); + } + }, { + passive: true, + once: true + }); + var currentRouteInfo; function current() { return currentRouteInfo ? currentRouteInfo.route : null; diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json index 4799537484..ed2ab419a2 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json @@ -276,5 +276,8 @@ "MoveRight": "Move right", "MoveLeft": "Move left", "ConfirmDeleteImage": "Delete image?", - "HeaderEditImages": "Edit Images" + "HeaderEditImages": "Edit Images", + "Settings": "Settings", + "ShowIndicatorsFor": "Show indicators for:", + "NewEpisodes": "New episodes" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/requirejs/.bower.json b/dashboard-ui/bower_components/requirejs/.bower.json index 1360e75917..241a962b94 100644 --- a/dashboard-ui/bower_components/requirejs/.bower.json +++ b/dashboard-ui/bower_components/requirejs/.bower.json @@ -1,6 +1,6 @@ { "name": "requirejs", - "version": "2.3.0", + "version": "2.3.1", "ignore": [], "homepage": "http://requirejs.org", "authors": [ @@ -14,11 +14,11 @@ "license": [ "MIT" ], - "_release": "2.3.0", + "_release": "2.3.1", "_resolution": { "type": "version", - "tag": "2.3.0", - "commit": "49ddc059ef857de683315001bb8721d17c1686d6" + "tag": "2.3.1", + "commit": "94785e8633448b668f292009fd2c31e3338a0074" }, "_source": "https://github.com/jrburke/requirejs-bower.git", "_target": "^2.1.22", diff --git a/dashboard-ui/bower_components/requirejs/bower.json b/dashboard-ui/bower_components/requirejs/bower.json index f98013580a..61d2be43ee 100644 --- a/dashboard-ui/bower_components/requirejs/bower.json +++ b/dashboard-ui/bower_components/requirejs/bower.json @@ -1,6 +1,6 @@ { "name": "requirejs", - "version": "2.3.0", + "version": "2.3.1", "ignore": [], "homepage": "http://requirejs.org", "authors": [ diff --git a/dashboard-ui/bower_components/requirejs/require.js b/dashboard-ui/bower_components/requirejs/require.js index e755796dfd..929c0a869d 100644 --- a/dashboard-ui/bower_components/requirejs/require.js +++ b/dashboard-ui/bower_components/requirejs/require.js @@ -1,5 +1,5 @@ /** vim: et:ts=4:sw=4:sts=4 - * @license RequireJS 2.3.0 Copyright jQuery Foundation and other contributors. + * @license RequireJS 2.3.1 Copyright jQuery Foundation and other contributors. * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE */ //Not using strict: uneven strict support in browsers, #392, and causes @@ -11,7 +11,7 @@ var requirejs, require, define; (function (global, setTimeout) { var req, s, head, baseElement, dataMain, src, interactiveScript, currentlyAddingScript, mainScript, subPath, - version = '2.3.0', + version = '2.3.1', commentRegExp = /\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/mg, cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, jsSuffixRegExp = /\.js$/, diff --git a/dashboard-ui/scripts/livetvsuggested.js b/dashboard-ui/scripts/livetvsuggested.js index bdcb4460e9..34639d74c2 100644 --- a/dashboard-ui/scripts/livetvsuggested.js +++ b/dashboard-ui/scripts/livetvsuggested.js @@ -17,11 +17,16 @@ Dashboard.showLoadingMsg(); + var limit = getLimit(); + if (enableScrollX()) { + limit *= 2; + } + ApiClient.getLiveTvRecommendedPrograms({ userId: Dashboard.getCurrentUserId(), IsAiring: true, - limit: getLimit() * 2, + limit: limit, ImageTypeLimit: 1, EnableImageTypes: "Primary", EnableTotalRecordCount: false, diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 03e854d7dd..77a828f9b7 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1245,6 +1245,7 @@ var AppInfo = {}; define("chaptercardbuilder", [embyWebComponentsBowerPath + "/cardbuilder/chaptercardbuilder"], returnFirstDependency); define("tvguide", [embyWebComponentsBowerPath + "/guide/guide", 'embyRouter'], returnFirstDependency); + define("guide-settings-dialog", [embyWebComponentsBowerPath + "/guide/guide-settings"], returnFirstDependency); define("syncDialog", [embyWebComponentsBowerPath + "/sync/sync"], returnFirstDependency); define("voiceDialog", [embyWebComponentsBowerPath + "/voice/voicedialog"], returnFirstDependency); define("voiceReceiver", [embyWebComponentsBowerPath + "/voice/voicereceiver"], returnFirstDependency);