diff --git a/dashboard-ui/bower_components/emby-apiclient/.bower.json b/dashboard-ui/bower_components/emby-apiclient/.bower.json
index c911f2a5c9..63c2505b90 100644
--- a/dashboard-ui/bower_components/emby-apiclient/.bower.json
+++ b/dashboard-ui/bower_components/emby-apiclient/.bower.json
@@ -16,12 +16,12 @@
},
"devDependencies": {},
"ignore": [],
- "version": "1.1.86",
- "_release": "1.1.86",
+ "version": "1.1.87",
+ "_release": "1.1.87",
"_resolution": {
"type": "version",
- "tag": "1.1.86",
- "commit": "a6eb0622d2498b239814205e3313531bdbe15ad7"
+ "tag": "1.1.87",
+ "commit": "21057764cdf82e9ef08514cca4e48c76d47e535f"
},
"_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git",
"_target": "^1.1.51",
diff --git a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js
index 35b3e9eb46..f594a455dc 100644
--- a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js
+++ b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js
@@ -1087,7 +1087,7 @@
Servers: [server]
});
- } if (result.Id != server.Id) {
+ } if (result.Id !== server.Id) {
// http request succeeded, but it's a different server than what was expected
testNextConnectionMode(tests, index + 1, server, options, resolve);
diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json
index 356b47e45d..69aad56c43 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.283",
- "_release": "1.4.283",
+ "version": "1.4.285",
+ "_release": "1.4.285",
"_resolution": {
"type": "version",
- "tag": "1.4.283",
- "commit": "52a82ab789f4650d3b0ab7ee41cba96d417cfa76"
+ "tag": "1.4.285",
+ "commit": "832eef9023fe34ea838262763ca6f4b70e7b39ae"
},
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.1",
diff --git a/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js b/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js
index 50107d16b9..06a6b5a03b 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js
@@ -558,7 +558,7 @@ define(['browser'], function (browser) {
}]
});
- if (browser.chrome) {
+ if (!browser.edgeUwp && !browser.tizen && !browser.web0s) {
profile.CodecProfiles[profile.CodecProfiles.length - 1].Conditions.push({
Condition: 'NotEquals',
Property: 'IsAVC',
diff --git a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css
index 2f135c2c19..fb80cba79d 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css
+++ b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css
@@ -82,6 +82,10 @@
transform: scale(1.16, 1.16);
}
+.cardBox-mobile {
+ margin: 1px;
+}
+
@media all and (min-width: 600px) {
.cardBox-mobile {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/confirm/confirm.js b/dashboard-ui/bower_components/emby-webcomponents/confirm/confirm.js
index 0891ada469..877a0716e9 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/confirm/confirm.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/confirm/confirm.js
@@ -1,4 +1,5 @@
define(['dialog', 'globalize'], function (dialog, globalize) {
+ 'use strict';
return function (text, title) {
@@ -17,19 +18,19 @@ define(['dialog', 'globalize'], function (dialog, globalize) {
items.push({
name: options.cancelText || globalize.translate('sharedcomponents#ButtonCancel'),
id: 'cancel',
- type: options.primary == 'cancel' ? 'submit' : 'cancel'
+ type: options.primary === 'cancel' ? 'submit' : 'cancel'
});
items.push({
name: options.confirmText || globalize.translate('sharedcomponents#ButtonOk'),
id: 'ok',
- type: options.primary == 'cancel' ? 'cancel' : 'submit'
+ type: options.primary === 'cancel' ? 'cancel' : 'submit'
});
options.buttons = items;
return dialog(options).then(function (result) {
- if (result == 'ok') {
+ if (result === 'ok') {
return Promise.resolve();
}
diff --git a/dashboard-ui/bower_components/emby-webcomponents/confirm/nativeconfirm.js b/dashboard-ui/bower_components/emby-webcomponents/confirm/nativeconfirm.js
index 3a2a82b6ab..fd586ad1d5 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/confirm/nativeconfirm.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/confirm/nativeconfirm.js
@@ -1,4 +1,5 @@
define([], function () {
+ 'use strict';
function replaceAll(str, find, replace) {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/datetime.js b/dashboard-ui/bower_components/emby-webcomponents/datetime.js
index be8ab7ed71..2a8273c8f1 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/datetime.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/datetime.js
@@ -1,4 +1,5 @@
define(['globalize'], function (globalize) {
+ 'use strict';
function parseISO8601Date(s, toLocal) {
@@ -40,12 +41,12 @@
}
// if there's a timezone, calculate it
- if (d[8] != "Z" && d[10]) {
+ if (d[8] !== "Z" && d[10]) {
var offset = d[10] * 60 * 60 * 1000;
if (d[11]) {
offset += d[11] * 60 * 1000;
}
- if (d[9] == "-") {
+ if (d[9] === "-") {
ms -= offset;
} else {
ms += offset;
@@ -161,7 +162,7 @@
yesterday.setDate(day); // automatically adjusts month/year appropriately
- return date.getFullYear() == yesterday.getFullYear() && date.getMonth() == yesterday.getMonth() && date.getDate() == day;
+ return date.getFullYear() === yesterday.getFullYear() && date.getMonth() === yesterday.getMonth() && date.getDate() === day;
}
return {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js b/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js
index 6c43b0f355..6c8275f09b 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js
@@ -1,4 +1,5 @@
define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function (dialogHelper, dom, layoutManager, scrollHelper, globalize, require) {
+ 'use strict';
function showDialog(options, template) {
@@ -50,7 +51,7 @@ define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 're
for (i = 0, length = options.buttons.length; i < length; i++) {
var item = options.buttons[i];
- var autoFocus = i == 0 ? ' autofocus' : '';
+ var autoFocus = i === 0 ? ' autofocus' : '';
var buttonClass = 'btnOption raised formDialogFooterItem formDialogFooterItem-autosize';
diff --git a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js
index 35b8093762..b5e7ce2e46 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js
@@ -1,4 +1,5 @@
define(['historyManager', 'focusManager', 'browser', 'layoutManager', 'inputManager', 'dom', 'css!./dialoghelper.css', 'scrollStyles'], function (historyManager, focusManager, browser, layoutManager, inputManager, dom) {
+ 'use strict';
var globalOnOpenCallback;
@@ -27,7 +28,7 @@
}
}
- function dialogHashHandler(dlg, hash, resolve) {
+ function DialogHashHandler(dlg, hash, resolve) {
var self = this;
self.originalUrl = window.location.href;
@@ -36,7 +37,7 @@
function onHashChange(e) {
- var isBack = self.originalUrl == window.location.href;
+ var isBack = self.originalUrl === window.location.href;
if (isBack || !isOpened(dlg)) {
window.removeEventListener('popstate', onHashChange);
@@ -50,7 +51,7 @@
function onBackCommand(e) {
- if (e.detail.command == 'back') {
+ if (e.detail.command === 'back') {
self.closedByBack = true;
e.preventDefault();
e.stopPropagation();
@@ -75,7 +76,7 @@
if (!self.closedByBack && isHistoryEnabled(dlg)) {
var state = history.state || {};
- if (state.dialogId == hash) {
+ if (state.dialogId === hash) {
history.back();
}
}
@@ -84,7 +85,7 @@
activeElement.focus();
}
- if (dlg.getAttribute('data-removeonclose') != 'false') {
+ if (dlg.getAttribute('data-removeonclose') !== 'false') {
removeCenterFocus(dlg);
var dialogContainer = dlg.dialogContainer;
@@ -123,7 +124,7 @@
cancelable: false
}));
- if (dlg.getAttribute('data-lockscroll') == 'true' && !document.body.classList.contains('noScroll')) {
+ if (dlg.getAttribute('data-lockscroll') === 'true' && !document.body.classList.contains('noScroll')) {
document.body.classList.add('noScroll');
removeScrollLockOnClose = true;
}
@@ -154,7 +155,7 @@
}, 0);
dom.addEventListener((dlg.dialogContainer || backdrop), 'click', function (e) {
- if (e.target == dlg.dialogContainer) {
+ if (e.target === dlg.dialogContainer) {
close(dlg);
}
}, {
@@ -163,7 +164,7 @@
}
function isHistoryEnabled(dlg) {
- return dlg.getAttribute('data-history') == 'true';
+ return dlg.getAttribute('data-history') === 'true';
}
function open(dlg) {
@@ -185,7 +186,7 @@
return new Promise(function (resolve, reject) {
- new dialogHashHandler(dlg, 'dlg' + new Date().getTime(), resolve);
+ new DialogHashHandler(dlg, 'dlg' + new Date().getTime(), resolve);
});
}
@@ -212,7 +213,7 @@
{ transform: 'scale(0)', offset: 0 },
{ transform: 'none', offset: 1 }];
var timing = elem.animationConfig.entry.timing;
- return elem.animate(keyframes, timing).onfinish = onFinish;
+ elem.animate(keyframes, timing).onfinish = onFinish;
}
function slideUp(elem, onFinish) {
@@ -221,7 +222,7 @@
{ transform: 'translate3d(0,30%,0)', opacity: 0, offset: 0 },
{ transform: 'none', opacity: 1, offset: 1 }];
var timing = elem.animationConfig.entry.timing;
- return elem.animate(keyframes, timing).onfinish = onFinish;
+ elem.animate(keyframes, timing).onfinish = onFinish;
}
function fadeIn(elem, onFinish) {
@@ -230,7 +231,7 @@
{ opacity: '0', offset: 0 },
{ opacity: '1', offset: 1 }];
var timing = elem.animationConfig.entry.timing;
- return elem.animate(keyframes, timing).onfinish = onFinish;
+ elem.animate(keyframes, timing).onfinish = onFinish;
}
function scaleDown(elem) {
@@ -289,11 +290,11 @@
var animation;
- if (dlg.animationConfig.exit.name == 'fadeout') {
+ if (dlg.animationConfig.exit.name === 'fadeout') {
animation = fadeOut(dlg);
- } else if (dlg.animationConfig.exit.name == 'scaledown') {
+ } else if (dlg.animationConfig.exit.name === 'scaledown') {
animation = scaleDown(dlg);
- } else if (dlg.animationConfig.exit.name == 'slidedown') {
+ } else if (dlg.animationConfig.exit.name === 'slidedown') {
animation = slideDown(dlg);
} else {
onAnimationFinish();
@@ -308,7 +309,7 @@
var onAnimationFinish = function () {
focusManager.pushScope(dlg);
- if (dlg.getAttribute('data-autofocus') == 'true') {
+ if (dlg.getAttribute('data-autofocus') === 'true') {
focusManager.autoFocus(dlg);
}
};
@@ -317,11 +318,11 @@
onAnimationFinish();
return;
}
- if (dlg.animationConfig.entry.name == 'fadein') {
+ if (dlg.animationConfig.entry.name === 'fadein') {
fadeIn(dlg, onAnimationFinish);
- } else if (dlg.animationConfig.entry.name == 'scaleup') {
+ } else if (dlg.animationConfig.entry.name === 'scaleup') {
scaleUp(dlg, onAnimationFinish);
- } else if (dlg.animationConfig.entry.name == 'slideup') {
+ } else if (dlg.animationConfig.entry.name === 'slideup') {
slideUp(dlg, onAnimationFinish);
}
}
@@ -332,7 +333,7 @@
return options.lockScroll;
}
- if (options.size == 'fullscreen') {
+ if (options.size === 'fullscreen') {
return true;
}
diff --git a/dashboard-ui/bower_components/emby-webcomponents/dom.js b/dashboard-ui/bower_components/emby-webcomponents/dom.js
index 1dc3ade5ee..d662735c23 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/dom.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/dom.js
@@ -1,8 +1,9 @@
define([], function () {
+ 'use strict';
function parentWithAttribute(elem, name, value) {
- while ((value ? elem.getAttribute(name) != value : !elem.getAttribute(name))) {
+ while ((value ? elem.getAttribute(name) !== value : !elem.getAttribute(name))) {
elem = elem.parentNode;
if (!elem || !elem.getAttribute) {
@@ -20,7 +21,7 @@ define([], function () {
tagNames = [tagNames];
}
- while (tagNames.indexOf(elem.tagName || '') == -1) {
+ while (tagNames.indexOf(elem.tagName || '') === -1) {
elem = elem.parentNode;
if (!elem) {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.js b/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.js
index ffb93c46ef..561f3a3215 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.js
@@ -1,4 +1,5 @@
define(['browser', 'dom', 'css!./emby-button', 'registerElement'], function (browser, dom) {
+ 'use strict';
var EmbyButtonPrototype = Object.create(HTMLButtonElement.prototype);
@@ -40,14 +41,14 @@
function onKeyDown(e) {
- if (e.keyCode == 13) {
+ if (e.keyCode === 13) {
animateButton.call(this, e);
}
}
function onMouseDown(e) {
- if (e.button == 0) {
+ if (e.button === 0) {
animateButton.call(this, e);
}
}
diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-button/paper-icon-button-light.js b/dashboard-ui/bower_components/emby-webcomponents/emby-button/paper-icon-button-light.js
index b414c68a26..705d88e421 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/emby-button/paper-icon-button-light.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/emby-button/paper-icon-button-light.js
@@ -1,4 +1,5 @@
define(['browser', 'dom', 'css!./emby-button', 'registerElement'], function (browser, dom) {
+ 'use strict';
var EmbyButtonPrototype = Object.create(HTMLButtonElement.prototype);
@@ -43,7 +44,7 @@
function onKeyDown(e) {
- if (e.keyCode == 13) {
+ if (e.keyCode === 13) {
animateButton.call(this, e);
}
}
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 d131335827..93eb7e78ea 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
@@ -1,11 +1,12 @@
define(['css!./emby-checkbox', 'registerElement'], function () {
+ 'use strict';
var EmbyCheckboxPrototype = Object.create(HTMLInputElement.prototype);
function onKeyDown(e) {
// Don't submit form on enter
- if (e.keyCode == 13) {
+ if (e.keyCode === 13) {
e.preventDefault();
this.checked = !this.checked;
@@ -20,7 +21,7 @@
EmbyCheckboxPrototype.attachedCallback = function () {
- if (this.getAttribute('data-embycheckbox') == 'true') {
+ if (this.getAttribute('data-embycheckbox') === 'true') {
return;
}
diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js b/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js
index 49cf07ee05..27ab9d3de2 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js
@@ -241,7 +241,9 @@
if (browser.touch) {
this.addEventListener('contextmenu', disableEvent);
} else {
- this.addEventListener('contextmenu', onContextMenu);
+ if (this.getAttribute('data-contextmenu') !== 'false') {
+ this.addEventListener('contextmenu', onContextMenu);
+ }
}
if (layoutManager.desktop) {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js
index c456606c25..4a8e962179 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js
@@ -346,6 +346,41 @@
return null;
}
+ function getTimerIndicator(item) {
+
+ var status;
+
+ if (item.Type == 'SeriesTimer') {
+ return '';
+ }
+ else if (item.TimerId) {
+
+ status = item.TimerStatus;
+ }
+ else if (item.Type == 'Timer') {
+
+ status = item.Status;
+ }
+ else {
+ return '';
+ }
+
+ if (item.SeriesTimerId) {
+
+ if (status != 'Cancelled' && status != 'Aborted') {
+ return '';
+ }
+
+ return '';
+ }
+
+ if (!isActive) {
+ return '';
+ }
+
+ return '';
+ }
+
function getChannelProgramsHtml(context, date, channel, programs, options) {
var html = '';
@@ -477,16 +512,7 @@
html += 'hd';
}
- if (program.SeriesTimerId) {
- if (program.TimerId) {
- html += '';
- } else {
- html += '';
- }
- }
- else if (program.TimerId) {
- html += '';
- }
+ html += getTimerIndicator(program);
if (accentCssClass) {
html += '
';
diff --git a/dashboard-ui/bower_components/emby-webcomponents/indicators/indicators.js b/dashboard-ui/bower_components/emby-webcomponents/indicators/indicators.js
index 2f5603f950..0796dd1651 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/indicators/indicators.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/indicators/indicators.js
@@ -98,18 +98,37 @@ define(['css!./indicators.css', 'material-icons'], function () {
function getTimerIndicator(item) {
- if (item.SeriesTimerId || item.Type == 'SeriesTimer') {
- if (item.TimerId || item.Type == 'Timer' || item.Type == 'SeriesTimer') {
- return '';
- } else {
- return '';
- }
+ var status;
+
+ if (item.Type == 'SeriesTimer') {
+ return '';
}
- else if (item.TimerId || item.Type == 'Timer') {
- return '';
+ else if (item.TimerId) {
+
+ status = item.TimerStatus;
+ }
+ else if (item.Type == 'Timer') {
+
+ status = item.Status;
+ }
+ else {
+ return '';
}
- return '';
+ if (item.SeriesTimerId) {
+
+ if (status != 'Cancelled' && status != 'Aborted') {
+ return '';
+ }
+
+ return '';
+ }
+
+ if (!isActive) {
+ return '';
+ }
+
+ return '';
}
function getSyncIndicator(item) {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js b/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js
index 55f1c12691..aa0cb71245 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js
@@ -8,6 +8,10 @@ define(['apphost'], function (appHost) {
options = options || {};
+ if (item.Type == 'Timer') {
+ item = item.ProgramInfo || item;
+ }
+
var name = (item.Type == 'Program' && item.IsSeries ? item.EpisodeTitle : item.Name) || '';
if (item.Type == "TvChannel") {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.css b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.css
index bbaa5939ef..0e038371ae 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.css
+++ b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.css
@@ -19,11 +19,6 @@
width: 100%;
}
-.listItem-nosidepadding {
- padding-left: 0;
- padding-right: 0;
-}
-
.listItem-largeImage {
padding: .5em !important;
}
@@ -59,8 +54,12 @@
justify-content: center;
}
+.listItemBody-noleftpadding {
+ padding-left: 0;
+}
+
.listItem-odd {
- background: #171717;
+ background: #1c1c1c;
}
.three-line {
@@ -148,6 +147,7 @@
/* Don't display if flex not supported */
display: none;
align-items: center;
+ margin-right: 1em;
}
.listGroupHeader {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js
index adb6e3887b..a5db2d695c 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js
@@ -111,6 +111,12 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
for (var i = 0, length = textlines.length; i < length; i++) {
+ var text = textlines[i];
+
+ if (!text) {
+ continue;
+ }
+
if (i === 0) {
if (isLargeStyle) {
html += '';
@@ -143,7 +149,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
var clickEntireItem = layoutManager.tv ? true : false;
var outerTagName = clickEntireItem ? 'button' : 'div';
- var enableSideMediaInfo = options.enableSideMediaInfo != null ? options.enableSideMediaInfo : clickEntireItem;
+ var enableSideMediaInfo = options.enableSideMediaInfo != null ? options.enableSideMediaInfo : true;
var outerHtml = '';
@@ -178,7 +184,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
}
}
- var cssClass = "listItem listItem-nosidepadding";
+ var cssClass = "listItem";
if (options.highlight !== false) {
if (i % 2 == 1) {
@@ -285,29 +291,31 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
parentTitle += ' - ' + displayName;
}
- textlines.push(parentTitle || ' ');
+ textlines.push(parentTitle || '');
}
else if (options.showParentTitle) {
- textlines.push(parentTitle || ' ');
+ textlines.push(parentTitle || '');
}
if (displayName && !options.parentTitleWithTitle) {
textlines.push(displayName);
}
- if (item.ArtistItems && item.Type != 'MusicAlbum') {
- textlines.push(item.ArtistItems.map(function (a) {
- return a.Name;
+ if (options.artist !== false) {
+ if (item.ArtistItems && item.Type != 'MusicAlbum') {
+ textlines.push(item.ArtistItems.map(function (a) {
+ return a.Name;
- }).join(', ') || ' ');
- }
+ }).join(', '));
+ }
- if (item.AlbumArtist && item.Type == 'MusicAlbum') {
- textlines.push(item.AlbumArtist || ' ');
+ if (item.AlbumArtist && item.Type == 'MusicAlbum') {
+ textlines.push(item.AlbumArtist);
+ }
}
if (item.Type == 'Game') {
- textlines.push(item.GameSystem || ' ');
+ textlines.push(item.GameSystem);
}
if (item.Type == 'TvChannel') {
@@ -317,11 +325,15 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
}
}
- cssClass = 'listItemBody two-line';
+ cssClass = 'listItemBody';
if (!clickEntireItem) {
cssClass += ' itemAction';
}
+ if (options.image === false) {
+ cssClass += ' itemAction listItemBody-noleftpadding';
+ }
+
html += '';
var moreIcon = appHost.moreIcon == 'dots-horiz' ? '' : '';
@@ -360,12 +372,21 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
}
}
+ if (!options.recordButton && (item.Type == 'Timer' || item.Type == 'Program')) {
+ html += indicators.getTimerIndicator(item).replace('indicatorIcon', 'indicatorIcon listItemAside');
+ }
+
if (!clickEntireItem) {
if (options.moreButton !== false) {
html += '
';
}
+ if (options.recordButton) {
+
+ html += '
';
+ }
+
if (options.enableUserDataButtons !== false) {
html += '
';
html += userdataButtons.getIconsHtml({
diff --git a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js
index 91ffb056b4..3457116478 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js
@@ -1,5 +1,40 @@
define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', 'css!./mediainfo.css', 'programStyles'], function (datetime, globalize, embyRouter, itemHelper) {
+ function getTimerIndicator(item) {
+
+ var status;
+
+ if (item.Type == 'SeriesTimer') {
+ return '';
+ }
+ else if (item.TimerId) {
+
+ status = item.TimerStatus;
+ }
+ else if (item.Type == 'Timer') {
+
+ status = item.Status;
+ }
+ else {
+ return '';
+ }
+
+ if (item.SeriesTimerId) {
+
+ if (status != 'Cancelled' && status != 'Aborted') {
+ return '';
+ }
+
+ return '';
+ }
+
+ if (!isActive) {
+ return '';
+ }
+
+ return '';
+ }
+
function getProgramInfoHtml(item, options) {
var html = '';
@@ -41,20 +76,10 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
}
if (options.timerIndicator !== false) {
- if (item.SeriesTimerId || item.Type == 'SeriesTimer') {
- if (item.TimerId || item.Type == 'Timer' || item.Type == 'SeriesTimer') {
- miscInfo.push({
- html: ''
- });
- } else {
- miscInfo.push({
- html: ''
- });
- }
- }
- else if (item.TimerId) {
+ var timerHtml = getTimerIndicator(item);
+ if (timerHtml) {
miscInfo.push({
- html: ''
+ html: timerHtml
});
}
}
@@ -206,20 +231,22 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
}
}
- if (item.Type != "Series" && item.Type != "Episode" && item.Type != "Person" && item.MediaType != 'Photo' && item.Type != 'Program') {
+ if (options.year !== false) {
+ if (item.Type != "Series" && item.Type != "Episode" && item.Type != "Person" && item.MediaType != 'Photo' && item.Type != 'Program') {
- if (item.ProductionYear) {
+ if (item.ProductionYear) {
- miscInfo.push(item.ProductionYear);
- }
- else if (item.PremiereDate) {
-
- try {
- text = datetime.parseISO8601Date(item.PremiereDate).getFullYear();
- miscInfo.push(text);
+ miscInfo.push(item.ProductionYear);
}
- catch (e) {
- console.log("Error parsing date: " + item.PremiereDate);
+ else if (item.PremiereDate) {
+
+ try {
+ text = datetime.parseISO8601Date(item.PremiereDate).getFullYear();
+ miscInfo.push(text);
+ }
+ catch (e) {
+ console.log("Error parsing date: " + item.PremiereDate);
+ }
}
}
}
diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js
index 0ef2c0d40d..34295f815a 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js
@@ -117,7 +117,7 @@
parent.querySelector('.seriesRecordingButton .buttonText').innerHTML = globalize.translate('sharedcomponents#RecordSeries');
}
- if (program.TimerId) {
+ if (program.TimerId && program.TimerStatus != 'Cancelled') {
parent.querySelector('.btnManageRecording').classList.remove('visibilityHide');
parent.querySelector('.singleRecordingButton .recordingIcon').classList.add('recordingIcon-active');
parent.querySelector('.singleRecordingButton .buttonText').innerHTML = globalize.translate('sharedcomponents#DoNotRecord');
@@ -138,6 +138,7 @@
return apiClient.getLiveTvProgram(options.programId, apiClient.getCurrentUserId()).then(function (program) {
instance.TimerId = program.TimerId;
+ instance.TimerStatus = program.TimerStatus;
instance.SeriesTimerId = program.SeriesTimerId;
loadData(options.parent, program, apiClient);
@@ -161,7 +162,7 @@
var options = this.options;
- if (!this.TimerId) {
+ if (!this.TimerId || this.TimerStatus == 'Cancelled') {
return;
}
@@ -212,8 +213,10 @@
var button = dom.parentWithTag(e.target, 'BUTTON');
var isChecked = !button.querySelector('i').classList.contains('recordingIcon-active');
+ var hasEnabledTimer = this.TimerId && this.TimerStatus != 'Cancelled';
+
if (isChecked) {
- if (!this.TimerId) {
+ if (!hasEnabledTimer) {
loading.show();
recordingHelper.createRecording(apiClient, options.programId, false).then(function () {
events.trigger(self, 'recordingchanged');
@@ -222,7 +225,7 @@
});
}
} else {
- if (this.TimerId) {
+ if (hasEnabledTimer) {
loading.show();
recordingHelper.cancelTimer(apiClient, this.TimerId, true).then(function () {
events.trigger(self, 'recordingchanged');
diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordinghelper.js b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordinghelper.js
index f41e1e21ca..687118076b 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordinghelper.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordinghelper.js
@@ -59,16 +59,18 @@
});
}
- function toggleRecording(serverId, programId, timerId, seriesTimerId) {
+ function toggleRecording(serverId, programId, timerId, timerStatus, seriesTimerId) {
var apiClient = connectionManager.getApiClient(serverId);
- if (seriesTimerId && timerId) {
+ var hasTimer = timerId && timerStatus != 'Cancelled';
+
+ if (seriesTimerId && hasTimer) {
// cancel
return cancelTimer(apiClient, timerId, true);
- } else if (timerId && programId) {
+ } else if (hasTimer && programId) {
// change to series recording, if possible
// otherwise cancel individual recording
diff --git a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js
index 25799389ef..f1cd83b9c1 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js
@@ -1,4 +1,5 @@
define(['connectionManager', 'globalize', 'dom', 'paper-icon-button-light', 'material-icons', 'emby-button', 'css!./userdatabuttons'], function (connectionManager, globalize, dom) {
+ 'use strict';
var userDataMethods = {
markPlayed: markPlayed,
@@ -9,13 +10,13 @@ define(['connectionManager', 'globalize', 'dom', 'paper-icon-button-light', 'mat
function getUserDataButtonHtml(method, itemId, buttonCssClass, iconCssClass, icon, tooltip, style) {
- if (style == 'fab-mini') {
+ if (style === 'fab-mini') {
style = 'fab';
buttonCssClass = buttonCssClass ? (buttonCssClass + ' mini') : 'mini';
}
- var is = style == 'fab' ? 'emby-button' : 'paper-icon-button-light';
- var className = style == 'fab' ? 'autoSize fab' : 'autoSize';
+ var is = style === 'fab' ? 'emby-button' : 'paper-icon-button-light';
+ var className = style === 'fab' ? 'autoSize fab' : 'autoSize';
if (buttonCssClass) {
className += ' ' + buttonCssClass;
@@ -29,9 +30,7 @@ define(['connectionManager', 'globalize', 'dom', 'paper-icon-button-light', 'mat
iconCssClass += 'md-icon';
- return '';
+ return '';
}
function onContainerClick(e) {
@@ -50,7 +49,7 @@ define(['connectionManager', 'globalize', 'dom', 'paper-icon-button-light', 'mat
var html = getIconsHtml(options);
- if (options.fillMode == 'insertAdjacent') {
+ if (options.fillMode === 'insertAdjacent') {
options.element.insertAdjacentHTML(options.insertLocation || 'beforeend', html);
} else {
options.element.innerHTML = html;
@@ -98,8 +97,8 @@ define(['connectionManager', 'globalize', 'dom', 'paper-icon-button-light', 'mat
if (includePlayed !== false) {
var tooltipPlayed = globalize.translate('sharedcomponents#MarkPlayed');
- if (item.MediaType == 'Video' || item.Type == 'Series' || item.Type == 'Season' || item.Type == 'BoxSet' || item.Type == 'Playlist') {
- if (item.Type != 'TvChannel') {
+ if (item.MediaType === 'Video' || item.Type === 'Series' || item.Type === 'Season' || item.Type === 'BoxSet' || item.Type === 'Playlist') {
+ if (item.Type !== 'TvChannel') {
if (userData.Played) {
html += getUserDataButtonHtml('markPlayed', itemId, btnCssClass + ' btnUserDataOn', iconCssClass, 'check', tooltipPlayed, style);
} else {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettings.js b/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettings.js
index d523e1474a..6b3dc90d49 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettings.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettings.js
@@ -1,4 +1,5 @@
define(['userSettingsBuilder'], function (userSettingsBuilder) {
+ 'use strict';
return new userSettingsBuilder();
});
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettingsbuilder.js b/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettingsbuilder.js
index 9acbb1a0ad..0ddcf0b78c 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettingsbuilder.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettingsbuilder.js
@@ -1,4 +1,5 @@
define(['appSettings', 'events', 'browser'], function (appsettings, events, browser) {
+ 'use strict';
return function () {
@@ -50,7 +51,7 @@ define(['appSettings', 'events', 'browser'], function (appsettings, events, brow
saveServerPreferences();
}
- if (currentValue != value) {
+ if (currentValue !== value) {
events.trigger(self, 'change', [name]);
}
};
@@ -79,7 +80,7 @@ define(['appSettings', 'events', 'browser'], function (appsettings, events, brow
val = self.get('enableCinemaMode', false);
if (val) {
- return val != 'false';
+ return val !== 'false';
}
return true;
@@ -94,7 +95,7 @@ define(['appSettings', 'events', 'browser'], function (appsettings, events, brow
val = self.get('enableThemeSongs', false);
if (val) {
- return val != 'false';
+ return val !== 'false';
}
return true;
@@ -109,7 +110,7 @@ define(['appSettings', 'events', 'browser'], function (appsettings, events, brow
val = self.get('enableThemeVideos', false);
if (val) {
- return val != 'false';
+ return val !== 'false';
}
return !browser.slow;
diff --git a/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js b/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js
index ca3b6ffb76..bfc03eff8c 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js
@@ -1,4 +1,5 @@
define(['browser', 'css!./viewcontainer-lite'], function (browser) {
+ 'use strict';
var mainAnimatedPages = document.querySelector('.mainAnimatedPages');
var allPages = [];
@@ -32,7 +33,7 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
cancelActiveAnimations();
var selected = selectedPageIndex;
- var previousAnimatable = selected == -1 ? null : allPages[selected];
+ var previousAnimatable = selected === -1 ? null : allPages[selected];
var pageIndex = selected + 1;
if (pageIndex >= pageContainerCount) {
@@ -81,7 +82,7 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
function beforeAnimate(allPages, newPageIndex, oldPageIndex) {
for (var i = 0, length = allPages.length; i < length; i++) {
- if (newPageIndex == i || oldPageIndex == i) {
+ if (newPageIndex === i || oldPageIndex === i) {
//allPages[i].classList.remove('hide');
} else {
allPages[i].classList.add('hide');
@@ -91,7 +92,7 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
function afterAnimate(allPages, newPageIndex) {
for (var i = 0, length = allPages.length; i < length; i++) {
- if (newPageIndex == i) {
+ if (newPageIndex === i) {
//allPages[i].classList.remove('hide');
} else {
allPages[i].classList.add('hide');
@@ -102,9 +103,9 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
function animate(newAnimatedPage, oldAnimatedPage, transition, isBack) {
if (enableAnimation() && oldAnimatedPage && newAnimatedPage.animate) {
- if (transition == 'slide') {
+ if (transition === 'slide') {
return slide(newAnimatedPage, oldAnimatedPage, transition, isBack);
- } else if (transition == 'fade') {
+ } else if (transition === 'fade') {
return fade(newAnimatedPage, oldAnimatedPage, transition, isBack);
}
}
@@ -120,7 +121,7 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
iterations: 1,
easing: 'ease-out',
fill: 'both'
- }
+ };
var animations = [];
@@ -158,7 +159,7 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
iterations: 1,
easing: 'ease-out',
fill: 'both'
- }
+ };
var animations = [];
@@ -212,7 +213,7 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
var url = options.url;
var index = currentUrls.indexOf(url);
- if (index != -1) {
+ if (index !== -1) {
var animatable = allPages[index];
var view = animatable;
@@ -226,7 +227,7 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
cancelActiveAnimations();
var selected = selectedPageIndex;
- var previousAnimatable = selected == -1 ? null : allPages[selected];
+ var previousAnimatable = selected === -1 ? null : allPages[selected];
if (onBeforeChange) {
onBeforeChange(view, true, options);
diff --git a/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewmanager.js b/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewmanager.js
index ae7666acb6..c22a6ca9b0 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewmanager.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewmanager.js
@@ -1,4 +1,5 @@
define(['viewcontainer', 'focusManager', 'queryString', 'layoutManager'], function (viewcontainer, focusManager, queryString, layoutManager) {
+ 'use strict';
var currentView;
var dispatchPageEvents;
@@ -94,7 +95,7 @@ define(['viewcontainer', 'focusManager', 'queryString', 'layoutManager'], functi
var url = options.url;
var state = options.state;
var index = url.indexOf('?');
- var params = index == -1 ? {} : queryString.parse(url.substring(index + 1));
+ var params = index === -1 ? {} : queryString.parse(url.substring(index + 1));
return {
detail: {
diff --git a/dashboard-ui/components/imagedownloader/imagedownloader.template.html b/dashboard-ui/components/imagedownloader/imagedownloader.template.html
index 07a741e521..94f29b1d8a 100644
--- a/dashboard-ui/components/imagedownloader/imagedownloader.template.html
+++ b/dashboard-ui/components/imagedownloader/imagedownloader.template.html
@@ -1,13 +1,13 @@
-
-
+
diff --git a/dashboard-ui/css/dashboard.css b/dashboard-ui/css/dashboard.css
index ab0896f97c..18bd01d976 100644
--- a/dashboard-ui/css/dashboard.css
+++ b/dashboard-ui/css/dashboard.css
@@ -1,4 +1,83 @@
-/* Tabs (e.g. advanced metadata page) */
+.dashboardFooter {
+ margin-top: 50px;
+ text-align: center;
+}
+
+ .dashboardFooter a {
+ text-decoration: none;
+ font-weight: normal;
+ margin: 0 .7em;
+ }
+
+ .dashboardFooter .appLinks a {
+ margin: .25em;
+ }
+
+ .dashboardFooter .appLinks img {
+ height: 16px;
+ }
+
+/*
+ * Gradient Shadow
+ */
+
+/* All HTML5 progress enabled browsers */
+progress {
+ /* Turns off styling - not usually needed, but good to know. */
+ appearance: none;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ /* gets rid of default border in Firefox and Opera. */
+ border: solid #cccccc 2px;
+ border-radius: 4px;
+ margin: 0;
+}
+
+ /* Polyfill */
+ progress[role]:after {
+ background-image: none; /* removes default background from polyfill */
+ }
+
+/*
+ * Background of the progress bar background
+ */
+
+/* Firefox and Polyfill */
+progress {
+ background: #cccccc !important; /* !important only needed in polyfill */
+}
+
+ /* Chrome */
+ progress::-webkit-progress-bar {
+ background: #cccccc;
+ }
+
+ /*
+ * Background of the progress bar value
+ */
+
+ /* Firefox */
+ progress::-moz-progress-bar {
+ border-radius: 5px;
+ background-image: -moz-linear-gradient( center bottom, rgb(43,194,83) 37%, rgb(84,240,84) 69% );
+ }
+
+ /* Chrome */
+ progress::-webkit-progress-value {
+ border-radius: 5px;
+ background-image: -webkit-gradient( linear, left bottom, left top, color-stop(0, rgb(43,194,83)), color-stop(1, rgb(84,240,84)) );
+ background-image: -webkit-linear-gradient( center bottom, rgb(43,194,83) 37%, rgb(84,240,84) 69% );
+ }
+
+ /* Polyfill */
+ progress[aria-valuenow]:before {
+ border-radius: 5px;
+ background-image: -moz-linear-gradient( center bottom, rgb(43,194,83) 37%, rgb(84,240,84) 69% );
+ background-image: -ms-linear-gradient( center bottom, rgb(43,194,83) 37%, rgb(84,240,84) 69% );
+ background-image: -o-linear-gradient( center bottom, rgb(43,194,83) 37%, rgb(84,240,84) 69% );
+ }
+
+/* Tabs (e.g. advanced metadata page) */
.localnav {
margin-bottom: 30px !important;
}
@@ -362,10 +441,10 @@ a[data-role='button'], .type-interior button:not([data-role='none']):not(.clearB
display: inline-block;
}
-.header .imageLink img {
- height: 28px;
- vertical-align: middle;
-}
+ .header .imageLink img {
+ height: 28px;
+ vertical-align: middle;
+ }
.ulForm {
margin: -1em !important;
diff --git a/dashboard-ui/css/librarybrowser.css b/dashboard-ui/css/librarybrowser.css
index 5b408d3185..41441f0260 100644
--- a/dashboard-ui/css/librarybrowser.css
+++ b/dashboard-ui/css/librarybrowser.css
@@ -8,13 +8,11 @@
}
.background-theme-b .backgroundContainer, .dialog.background-theme-b {
- background-color: #121314;
- /*background: radial-gradient(circle, #282828, #141414);*/
+ background-color: #161616;
}
.background-theme-b .backgroundContainer.withBackdrop {
background-color: rgba(6, 6,6, .9);
- /*background: radial-gradient(circle, #282828, #141414);*/
}
.ui-body-b {
diff --git a/dashboard-ui/css/librarymenu.css b/dashboard-ui/css/librarymenu.css
index 5087da3e17..b19a01104f 100644
--- a/dashboard-ui/css/librarymenu.css
+++ b/dashboard-ui/css/librarymenu.css
@@ -127,7 +127,6 @@
}
.ui-body-b .libraryViewNav {
- box-shadow: 0 2px 2px 0 rgba(0,0,0,.14),1px 5px 1px rgba(0,0,0,.12);
position: fixed;
right: 0;
left: 0;
@@ -156,7 +155,6 @@
}
.dashboardDocument .viewMenuBar {
- background-color: #333;
height: auto;
}
@@ -168,10 +166,6 @@
padding-bottom: 0;
}
- .dashboardDocument .viewMenuBar #selectionBar {
- height: 3px;
- }
-
.viewMenuBarTabs {
width: 100%;
}
diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css
index 46fc7cad20..73bf746deb 100644
--- a/dashboard-ui/css/site.css
+++ b/dashboard-ui/css/site.css
@@ -78,11 +78,6 @@ body {
background-color: transparent !important;
}
-/* Undo this from jqm which may cause the page to have it's own scrollbar */
-.ui-mobile .ui-page-active {
- overflow-x: visible;
-}
-
.bodyWithPopupOpen {
overflow-y: hidden !important;
}
@@ -170,11 +165,6 @@ input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='r
border-color: #ccc!important;
}
- .ui-body-b select option {
- background: #333;
- color: #fff;
- }
-
.ui-body-a .secondaryText {
color: #ccc;
}
@@ -227,10 +217,6 @@ div[data-role='page'] {
margin-left: 10px;
}
-.ui-popup-container {
- z-index: 99999;
-}
-
@media all and (max-height: 800px) {
.header {
@@ -261,7 +247,7 @@ div[data-role='page'] {
}
.background-theme-a .backgroundContainer {
- background-color: #f5f5f5;
+ background-color: #f6f6f6;
}
.dialog.background-theme-a {
@@ -340,113 +326,6 @@ div[data-role='page'] {
}
}
-/*
- * Gradient Shadow
- */
-
-/* All HTML5 progress enabled browsers */
-progress {
- /* Turns off styling - not usually needed, but good to know. */
- appearance: none;
- -moz-appearance: none;
- -webkit-appearance: none;
- /* gets rid of default border in Firefox and Opera. */
- border: solid #cccccc 2px;
- border-radius: 4px;
- margin: 0;
-}
-
- /* Polyfill */
- progress[role]:after {
- background-image: none; /* removes default background from polyfill */
- }
-
-/*
- * Background of the progress bar background
- */
-
-/* Firefox and Polyfill */
-progress {
- background: #cccccc !important; /* !important only needed in polyfill */
-}
-
- /* Chrome */
- progress::-webkit-progress-bar {
- background: #cccccc;
- }
-
- /*
- * Background of the progress bar value
- */
-
- /* Firefox */
- progress::-moz-progress-bar {
- border-radius: 5px;
- background-image: -moz-linear-gradient( center bottom, rgb(43,194,83) 37%, rgb(84,240,84) 69% );
- }
-
- /* Chrome */
- progress::-webkit-progress-value {
- border-radius: 5px;
- background-image: -webkit-gradient( linear, left bottom, left top, color-stop(0, rgb(43,194,83)), color-stop(1, rgb(84,240,84)) );
- background-image: -webkit-linear-gradient( center bottom, rgb(43,194,83) 37%, rgb(84,240,84) 69% );
- }
-
- /* Polyfill */
- progress[aria-valuenow]:before {
- border-radius: 5px;
- background-image: -moz-linear-gradient( center bottom, rgb(43,194,83) 37%, rgb(84,240,84) 69% );
- background-image: -ms-linear-gradient( center bottom, rgb(43,194,83) 37%, rgb(84,240,84) 69% );
- background-image: -o-linear-gradient( center bottom, rgb(43,194,83) 37%, rgb(84,240,84) 69% );
- }
-
-/* Detail Page*/
-
-.btnUserItemRating {
- vertical-align: middle;
- color: #aaa !important;
- display: inline-block !important;
-}
-
-.btnUserItemRatingOn {
- color: #cc3333 !important;
-}
-
-.imgUserItemRating {
- height: 16px;
- width: 16px;
- margin-right: .75em;
- cursor: pointer;
- vertical-align: top;
-}
-
- .imgUserItemRating:last-child {
- margin-right: 0;
- }
-
- .imgUserItemRating:hover {
- opacity: .5;
- }
-
-.dashboardFooter {
- margin-top: 50px;
- text-align: center;
-}
-
- .dashboardFooter a {
- text-decoration: none;
- font-weight: normal;
- margin: 0 .7em;
- }
-
- .dashboardFooter .appLinks a {
- margin: .25em;
- }
-
- .dashboardFooter .appLinks img {
- height: 16px;
- }
-
.supporterPromotionContainer {
margin: 0 0 2em;
}
diff --git a/dashboard-ui/livetvseriestimer.html b/dashboard-ui/livetvseriestimer.html
index 1da27d434b..6896dc7eef 100644
--- a/dashboard-ui/livetvseriestimer.html
+++ b/dashboard-ui/livetvseriestimer.html
@@ -20,11 +20,11 @@
${HeaderSchedule}
-
+
-
${WillRecord}
-
-
${NotScheduledToRecord}
+
${WillRecord}
+
+
${NotScheduledToRecord}
diff --git a/dashboard-ui/scripts/camerauploadsettings.js b/dashboard-ui/scripts/camerauploadsettings.js
index 896fd449bb..c6ba242453 100644
--- a/dashboard-ui/scripts/camerauploadsettings.js
+++ b/dashboard-ui/scripts/camerauploadsettings.js
@@ -29,6 +29,11 @@
appSettings.cameraUploadServers(cameraUploadServers);
+ if (window.MainActivity) {
+ // TODO: isolate into android app
+ MainActivity.authorizeStorage();
+ }
+
Dashboard.hideLoadingMsg();
}
diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js
index 23d88df174..bd96924a47 100644
--- a/dashboard-ui/scripts/itemdetailpage.js
+++ b/dashboard-ui/scripts/itemdetailpage.js
@@ -1113,7 +1113,8 @@
showIndexNumber: true,
playFromHere: true,
action: 'playallfromhere',
- lazy: true
+ image: false,
+ artist: false
});
isList = true;
}
diff --git a/dashboard-ui/scripts/livetvschedule.js b/dashboard-ui/scripts/livetvschedule.js
index 6a877c0093..909dfba8d6 100644
--- a/dashboard-ui/scripts/livetvschedule.js
+++ b/dashboard-ui/scripts/livetvschedule.js
@@ -59,7 +59,8 @@
});
upcomingRecordingsPromise = ApiClient.getLiveTvTimers({
- IsActive: false
+ IsActive: false,
+ IsScheduled: true
});
};
diff --git a/dashboard-ui/scripts/livetvseriestimer.js b/dashboard-ui/scripts/livetvseriestimer.js
index d1cbb314cb..a19578fa40 100644
--- a/dashboard-ui/scripts/livetvseriestimer.js
+++ b/dashboard-ui/scripts/livetvseriestimer.js
@@ -14,7 +14,7 @@
options = options || {};
var html = '';
- html += '
';
+ html += '
';
html += listView.getListViewHtml({
items: items,
enableUserDataButtons: false,
@@ -22,7 +22,8 @@
showProgramDateTime: true,
mediaInfo: false,
action: 'none',
- moreButton: false
+ moreButton: false,
+ recordButton: false
});
html += '
';
@@ -32,7 +33,7 @@
function renderSchedule(page) {
- ApiClient.getLiveTvPrograms({
+ ApiClient.getLiveTvTimers({
UserId: ApiClient.getCurrentUserId(),
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb",
@@ -40,8 +41,7 @@
EnableTotalRecordCount: false,
EnableUserData: false,
SeriesTimerId: params.id,
- Fields: "ChannelInfo",
- limit: 100
+ Fields: "ChannelInfo"
}).then(function (result) {
diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.popup.css b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.popup.css
index ff4ac38974..bd446f4dd6 100644
--- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.popup.css
+++ b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jqm.popup.css
@@ -1,4 +1,8 @@
-/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-popup-container {
+ z-index: 99999;
+}
+
+/* "page" containers - full-screen views, one should always be in view post-pageload */
.ui-mobile [data-role=dialog] {
top: 0;
left: 0;