diff --git a/dashboard-ui/scripts/mediacontroller.js b/dashboard-ui/scripts/mediacontroller.js index a02cbc4910..4ba9daccc5 100644 --- a/dashboard-ui/scripts/mediacontroller.js +++ b/dashboard-ui/scripts/mediacontroller.js @@ -813,10 +813,21 @@ }; // TOOD: This doesn't really belong here - self.getNowPlayingNameHtml = function (nowPlayingItem, includeNonNameInfo) { + self.getNowPlayingNames = function (nowPlayingItem, includeNonNameInfo) { + var topItem = nowPlayingItem; + var bottomItem = null; var topText = nowPlayingItem.Name; + if (nowPlayingItem.AlbumId && nowPlayingItem.MediaType == 'Audio') { + topItem = { + Id: nowPlayingItem.AlbumId, + Name: nowPlayingItem.Album, + Type: 'MusicAlbum', + IsFolder: true + }; + } + if (nowPlayingItem.MediaType == 'Video') { if (nowPlayingItem.IndexNumber != null) { topText = nowPlayingItem.IndexNumber + " - " + topText; @@ -829,18 +840,69 @@ var bottomText = ''; if (nowPlayingItem.Artists && nowPlayingItem.Artists.length) { - bottomText = topText; - topText = nowPlayingItem.Artists[0]; + + if (nowPlayingItem.ArtistItems && nowPlayingItem.ArtistItems.length) { + + bottomItem = { + Id: nowPlayingItem.ArtistItems[0].Id, + Name: nowPlayingItem.ArtistItems[0].Name, + Type: 'MusicArtist', + IsFolder: true + }; + + bottomText = bottomItem.Name; + } else { + bottomText = nowPlayingItem.Artists[0]; + } } else if (nowPlayingItem.SeriesName || nowPlayingItem.Album) { bottomText = topText; topText = nowPlayingItem.SeriesName || nowPlayingItem.Album; + + bottomItem = topItem; + + if (nowPlayingItem.SeriesId) { + topItem = { + Id: nowPlayingItem.SeriesId, + Name: nowPlayingItem.SeriesName, + Type: 'Series', + IsFolder: true + }; + } else { + topItem = null; + } } else if (nowPlayingItem.ProductionYear && includeNonNameInfo !== false) { bottomText = nowPlayingItem.ProductionYear; } - return bottomText ? topText + '
' + bottomText : topText; + var list = []; + + list.push({ + text: topText, + item: topItem + }); + + if (bottomText) { + list.push({ + text: bottomText, + item: bottomItem + }); + } + + return list; + }; + + // TOOD: This doesn't really belong here + self.getNowPlayingNameHtml = function (nowPlayingItem, includeNonNameInfo) { + + var names = self.getNowPlayingNames(nowPlayingItem, includeNonNameInfo); + + return names.map(function (i) { + + return i.text; + + }).join('
'); }; self.showPlaybackInfoErrorMessage = function (errorCode) { diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index 8740dcc32a..01c77a7aaf 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -1260,7 +1260,9 @@ define(['appSettings', 'userSettings', 'appStorage', 'datetime'], function (appS nowPlayingItem.PremiereDate = item.PremiereDate; nowPlayingItem.SeriesName = item.SeriesName; nowPlayingItem.Album = item.Album; + nowPlayingItem.AlbumId = item.AlbumId; nowPlayingItem.Artists = item.Artists; + nowPlayingItem.ArtistItems = item.ArtistItems; var imageTags = item.ImageTags || {}; diff --git a/dashboard-ui/scripts/nowplayingbar.js b/dashboard-ui/scripts/nowplayingbar.js index 5fc788eac7..91e1e738fd 100644 --- a/dashboard-ui/scripts/nowplayingbar.js +++ b/dashboard-ui/scripts/nowplayingbar.js @@ -288,14 +288,13 @@ var nowPlayingBarElement; function getNowPlayingBar() { + if (nowPlayingBarElement) { + return Promise.resolve(nowPlayingBarElement); + } + return new Promise(function (resolve, reject) { - if (nowPlayingBarElement) { - resolve(nowPlayingBarElement); - return; - } - - require(['css!css/nowplayingbar.css', 'emby-slider'], function () { + require(['itemShortcuts', 'css!css/nowplayingbar.css', 'emby-slider'], function (itemShortcuts) { nowPlayingBarElement = document.querySelector('.nowPlayingBar'); @@ -312,6 +311,8 @@ nowPlayingBarElement.classList.add('noMediaProgress'); } + itemShortcuts.on(nowPlayingBarElement); + bindEvents(nowPlayingBarElement); resolve(nowPlayingBarElement); }); @@ -507,19 +508,15 @@ var currentImgUrl; function updateNowPlayingInfo(state) { - var nameHtml = MediaController.getNowPlayingNameHtml(state.NowPlayingItem) || ''; + nowPlayingTextElement.innerHTML = MediaController.getNowPlayingNames(state.NowPlayingItem).map(function (nowPlayingName) { - if (nameHtml.indexOf('
') != -1) { - nowPlayingTextElement.classList.add('nowPlayingDoubleText'); - } else { - nowPlayingTextElement.classList.remove('nowPlayingDoubleText'); - } + if (nowPlayingName.item) { + return '
' + LibraryBrowser.getTextActionButton(nowPlayingName.item, nowPlayingName.text) + '
'; + } - if (state.NowPlayingItem.Id) { - nameHtml = '' + nameHtml + ''; - } + return '
' + nowPlayingName.text + '
'; - nowPlayingTextElement.innerHTML = nameHtml; + }).join(''); var url; var imgHeight = 80;