diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 547f7dab24..34a9e9cc8d 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -320,7 +320,6 @@ div[data-role=controlgroup] a.ui-btn-active { .sessionCardFooter { padding-top: 0.5em !important; padding-bottom: 1em !important; - border-top: 1px solid #eee; text-align: center; position: relative; } @@ -346,15 +345,11 @@ div[data-role=controlgroup] a.ui-btn-active { right: 0; bottom: 0; font-weight: 400; + background: rgba(0, 0, 0, 0.7); display: flex; flex-direction: column; } -.sessionNowPlayingContent-withbackground + .sessionNowPlayingInnerContent { - color: #fff !important; - background: rgba(0, 0, 0, 0.7); -} - .sessionAppName { vertical-align: top; max-width: 200px; @@ -377,10 +372,6 @@ div[data-role=controlgroup] a.ui-btn-active { padding: 0.8em 0.5em; } -.sessionNowPlayingStreamInfo { - white-space: nowrap; -} - .playbackProgress, .transcodingProgress { margin: 0; @@ -393,6 +384,7 @@ div[data-role=controlgroup] a.ui-btn-active { margin: -0.6em; } +.activeSession .backgroundProgress, .activeSession .playbackProgress, .activeSession .transcodingProgress { position: absolute; @@ -409,9 +401,14 @@ div[data-role=controlgroup] a.ui-btn-active { } .transcodingProgress > div { + z-index: 900; background-color: #dd4919; } +.backgroundProgress > div { + background-color: #303030; +} + @media all and (max-width: 34.375em) { .sessionAppName { max-width: 160px; diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 0bc88b851b..bc7ae84986 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -30,6 +30,9 @@ import confirm from '../../components/confirm/confirm'; const text = []; const displayPlayMethod = playMethodHelper.getDisplayPlayMethod(session); + text.push(DashboardPage.getSessionNowPlayingStreamInfo(session)); + text.push('
'); + if (displayPlayMethod === 'Remux') { title = globalize.translate('Remuxing'); text.push(globalize.translate('RemuxHelp1')); @@ -251,12 +254,13 @@ import confirm from '../../components/confirm/confirm'; } else { const nowPlayingItem = session.NowPlayingItem; const className = 'scalableCard card activeSession backdropCard backdropCard-scalable'; + const imgUrl = DashboardPage.getNowPlayingImageUrl(nowPlayingItem); + html += '
'; html += '
'; html += '
'; html += '
'; - html += '
'; - const imgUrl = DashboardPage.getNowPlayingImageUrl(nowPlayingItem); + html += `
`; if (imgUrl) { html += '
'; html += '
'; - if (nowPlayingItem && nowPlayingItem.RunTimeTicks) { - const percent = 100 * (session.PlayState.PositionTicks || 0) / nowPlayingItem.RunTimeTicks; - html += indicators.getProgressHtml(percent, { - containerClass: 'playbackProgress' - }); - } else { - // need to leave the element in just in case the device starts playback - html += indicators.getProgressHtml(0, { - containerClass: 'playbackProgress hide' - }); - } + let percent = 100 * session?.PlayState?.PositionTicks / nowPlayingItem?.RunTimeTicks; + html += indicators.getProgressHtml(percent ?? 0, { + containerClass: 'playbackProgress' + }); - if (session.TranscodingInfo && session.TranscodingInfo.CompletionPercentage) { - const percent = session.TranscodingInfo.CompletionPercentage.toFixed(1); - html += indicators.getProgressHtml(percent, { - containerClass: 'transcodingProgress' - }); - } else { - // same issue as playbackProgress element above - html += indicators.getProgressHtml(0, { - containerClass: 'transcodingProgress hide' - }); - } + percent = session?.TranscodingInfo?.CompletionPercentage?.toFixed(1); + html += indicators.getProgressHtml(percent ?? 0, { + containerClass: 'transcodingProgress' + }); + + html += indicators.getProgressHtml(100, { + containerClass: 'backgroundProgress' + }); html += '
'; html += '
'; @@ -322,18 +316,12 @@ import confirm from '../../components/confirm/confirm'; html += ''; html += ''; - - btnCssClass = session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length ? '' : ' hide'; html += ''; btnCssClass = session.ServerId && session.SupportedCommands.indexOf('DisplayMessage') !== -1 && session.DeviceId !== ServerConnections.deviceId() ? '' : ' hide'; html += ''; html += '
'; - html += '
'; - html += DashboardPage.getSessionNowPlayingStreamInfo(session); - html += '
'; - html += '
'; const userImage = DashboardPage.getUserImage(session); html += userImage ? '
" : '
'; @@ -572,12 +560,6 @@ import confirm from '../../components/confirm/confirm'; row.querySelector('.btnSessionSendMessage').classList.add('hide'); } - if (session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo) { - row.querySelector('.btnSessionInfo').classList.remove('hide'); - } else { - row.querySelector('.btnSessionInfo').classList.add('hide'); - } - const btnSessionPlayPause = row.querySelector('.btnSessionPlayPause'); if (session.ServerId && nowPlayingItem && session.SupportsRemoteControl) { @@ -592,7 +574,6 @@ import confirm from '../../components/confirm/confirm'; btnSessionPlayPauseIcon.classList.remove('play_arrow', 'pause'); btnSessionPlayPauseIcon.classList.add(session.PlayState && session.PlayState.IsPaused ? 'play_arrow' : 'pause'); - row.querySelector('.sessionNowPlayingStreamInfo').innerHTML = DashboardPage.getSessionNowPlayingStreamInfo(session); row.querySelector('.sessionNowPlayingTime').innerHTML = DashboardPage.getSessionNowPlayingTime(session); row.querySelector('.sessionUserName').innerHTML = DashboardPage.getUsersHtml(session); row.querySelector('.sessionAppSecondaryText').innerHTML = DashboardPage.getAppSecondaryText(session); @@ -605,30 +586,17 @@ import confirm from '../../components/confirm/confirm'; } const playbackProgressElem = row.querySelector('.playbackProgress'); - - if (nowPlayingItem && nowPlayingItem.RunTimeTicks) { - const percent = 100 * (session.PlayState.PositionTicks || 0) / nowPlayingItem.RunTimeTicks; - playbackProgressElem.outerHTML = indicators.getProgressHtml(percent, { - containerClass: 'playbackProgress' - }); - } else { - playbackProgressElem.outerHTML = indicators.getProgressHtml(0, { - containerClass: 'playbackProgress hide' - }); - } - const transcodingProgress = row.querySelector('.transcodingProgress'); - if (session.TranscodingInfo && session.TranscodingInfo.CompletionPercentage) { - const percent = session.TranscodingInfo.CompletionPercentage.toFixed(1); - transcodingProgress.outerHTML = indicators.getProgressHtml(percent, { - containerClass: 'transcodingProgress' - }); - } else { - transcodingProgress.outerHTML = indicators.getProgressHtml(0, { - containerClass: 'transcodingProgress hide' - }); - } + let percent = 100 * session?.PlayState?.PositionTicks / nowPlayingItem?.RunTimeTicks; + playbackProgressElem.outerHTML = indicators.getProgressHtml(percent ?? 0, { + containerClass: 'playbackProgress' + }); + + percent = session?.TranscodingInfo?.CompletionPercentage?.toFixed(1); + transcodingProgress.outerHTML = indicators.getProgressHtml(percent ?? 0, { + containerClass: 'transcodingProgress' + }); const imgUrl = DashboardPage.getNowPlayingImageUrl(nowPlayingItem) || ''; const imgElem = row.querySelector('.sessionNowPlayingContent');