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;