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 @@
+
+
\ 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 @@
-
-
-
-
-
-
\ 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);