';
}
html += LibraryBrowser.getPosterViewHtml({
items: result.Items,
@@ -787,7 +786,6 @@
var similarContent = page.querySelector('#similarContent');
similarContent.innerHTML = html;
ImageLoader.lazyChildren(similarContent);
- LibraryBrowser.createCardMenus(similarContent);
});
}
@@ -1006,8 +1004,6 @@
elem.classList.remove('hiddenScrollX');
}
- LibraryBrowser.createCardMenus(elem);
-
if (item.Type == "BoxSet") {
var collectionItemTypes = [
@@ -1112,11 +1108,6 @@
if (!items.length) {
renderCollectionItemType(page, parentItem, { name: Globalize.translate('HeaderItems') }, items);
}
-
- var containers = page.querySelectorAll('.collectionItems .itemsContainer');
- for (i = 0, length = containers.length; i < length; i++) {
- LibraryBrowser.createCardMenus(containers[i]);
- }
}
function renderCollectionItemType(page, parentItem, type, items) {
@@ -1993,27 +1984,31 @@
}
}
+ function showPlayMenu(item, target) {
+
+ require(['playMenu'], function (playMenu) {
+
+ playMenu.show({
+
+ item: item,
+ positionTo: target
+ });
+ });
+ }
+
function playCurrentItem(button) {
if (currentItem.Type == 'Program') {
ApiClient.getLiveTvChannel(currentItem.ChannelId, Dashboard.getCurrentUserId()).then(function (channel) {
- LibraryBrowser.showPlayMenu(null, channel.Id, channel.Type, false, channel.MediaType, (channel.UserData || {}).PlaybackPositionTicks);
+ showPlayMenu(channel, button);
});
return;
}
- var userdata = currentItem.UserData || {};
-
- var mediaType = currentItem.MediaType;
-
- if (currentItem.Type == "MusicArtist" || currentItem.Type == "MusicAlbum") {
- mediaType = "Audio";
- }
-
- LibraryBrowser.showPlayMenu(button, currentItem.Id, currentItem.Type, currentItem.IsFolder, mediaType, userdata.PlaybackPositionTicks);
+ showPlayMenu(currentItem, button);
}
function deleteTimer(page, params, id) {
diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js
index ba382daa9..cccea2527 100644
--- a/dashboard-ui/scripts/librarybrowser.js
+++ b/dashboard-ui/scripts/librarybrowser.js
@@ -577,106 +577,6 @@
});
},
- showPlayMenu: function (positionTo, itemId, itemType, isFolder, mediaType, resumePositionTicks) {
-
- var externalPlayers = AppInfo.supportsExternalPlayers && appSettings.enableExternalPlayers();
-
- if (!resumePositionTicks && mediaType != "Audio" && !isFolder) {
-
- if (!externalPlayers || mediaType != "Video") {
-
- MediaController.play(itemId);
- return;
- }
- }
-
- var menuItems = [];
-
- if (resumePositionTicks) {
- menuItems.push({
- name: Globalize.translate('ButtonResume'),
- id: 'resume',
- ironIcon: 'play-arrow'
- });
- }
-
- menuItems.push({
- name: Globalize.translate('ButtonPlay'),
- id: 'play',
- ironIcon: 'play-arrow'
- });
-
- if (!isFolder && externalPlayers && mediaType != "Audio") {
- menuItems.push({
- name: Globalize.translate('ButtonPlayExternalPlayer'),
- id: 'externalplayer',
- ironIcon: 'airplay'
- });
- }
-
- if (MediaController.canQueueMediaType(mediaType, itemType)) {
- menuItems.push({
- name: Globalize.translate('ButtonQueue'),
- id: 'queue',
- ironIcon: 'playlist-add'
- });
- }
-
- if (itemType == "Audio" || itemType == "MusicAlbum" || itemType == "MusicArtist" || itemType == "MusicGenre") {
- menuItems.push({
- name: Globalize.translate('ButtonInstantMix'),
- id: 'instantmix',
- ironIcon: 'shuffle'
- });
- }
-
- if (isFolder || itemType == "MusicArtist" || itemType == "MusicGenre") {
- menuItems.push({
- name: Globalize.translate('ButtonShuffle'),
- id: 'shuffle',
- ironIcon: 'shuffle'
- });
- }
-
- require(['actionsheet'], function (actionsheet) {
-
- actionsheet.show({
- items: menuItems,
- positionTo: positionTo,
- callback: function (id) {
-
- switch (id) {
-
- case 'play':
- MediaController.play(itemId);
- break;
- case 'externalplayer':
- LibraryBrowser.playInExternalPlayer(itemId);
- break;
- case 'resume':
- MediaController.play({
- ids: [itemId],
- startPositionTicks: resumePositionTicks
- });
- break;
- case 'queue':
- MediaController.queue(itemId);
- break;
- case 'instantmix':
- MediaController.instantMix(itemId);
- break;
- case 'shuffle':
- MediaController.shuffle(itemId);
- break;
- default:
- break;
- }
- }
- });
-
- });
- },
-
deleteItems: function (itemIds) {
return new Promise(function (resolve, reject) {
@@ -896,14 +796,9 @@
var atts = [];
- atts.push({
- name: 'itemid',
- value: item.Id
- });
-
atts.push({
name: 'serverid',
- value: item.ServerId
+ value: item.ServerId || options.serverId
});
atts.push({
@@ -926,7 +821,7 @@
}
atts.push({
- name: 'itemtype',
+ name: 'type',
value: item.Type
});
@@ -1546,7 +1441,7 @@
anchorCssClass += ' mediaItem';
if (options.defaultAction) {
- anchorCssClass += ' itemWithAction';
+ anchorCssClass += ' itemAction';
}
var transition = options.transition === false || !AppInfo.enableSectionTransitions ? '' : ' data-transition="slide"';
@@ -1604,10 +1499,10 @@
html += '';
if (options.overlayPlayButton && !item.IsPlaceHolder && (item.LocationType != 'Virtual' || !item.MediaType || item.Type == 'Program') && item.Type != 'Person' && item.PlayAccess == 'Full') {
- html += '
play_arrow
';
+ html += '
play_arrow
';
}
if (options.overlayMoreButton) {
- html += '
';
+ html += '
' + AppInfo.moreIcon.replace('-', '_') + '
';
}
// cardScalable
@@ -1632,7 +1527,7 @@
if (options.cardLayout) {
html += '
';
- html += '';
+ html += '' + AppInfo.moreIcon.replace('-', '_') + ' ';
html += "
";
}
@@ -1795,11 +1690,11 @@
var elemWithAttributes = elem;
- while (!elemWithAttributes.getAttribute('data-itemid')) {
+ while (!elemWithAttributes.getAttribute('data-id')) {
elemWithAttributes = elemWithAttributes.parentNode;
}
- var itemId = elemWithAttributes.getAttribute('data-itemid');
+ var itemId = elemWithAttributes.getAttribute('data-id');
var index = elemWithAttributes.getAttribute('data-index');
var mediaType = elemWithAttributes.getAttribute('data-mediatype');
@@ -2375,10 +2270,10 @@
if (style == 'fab') {
var tagName = 'paper-fab';
- return '<' + tagName + ' title="' + tooltip + '" data-itemid="' + itemId + '" icon="' + icon + '" class="' + btnCssClass + '" onclick="LibraryBrowser.' + method + '(this);return false;">' + tagName + '>';
+ return '<' + tagName + ' title="' + tooltip + '" data-id="' + itemId + '" icon="' + icon + '" class="' + btnCssClass + '" onclick="LibraryBrowser.' + method + '(this);return false;">' + tagName + '>';
}
- return '
' + icon + ' ';
+ return '
' + icon + ' ';
},
getUserDataIconsHtml: function (item, includePlayed, style) {
@@ -2416,7 +2311,7 @@
markPlayed: function (link) {
- var id = link.getAttribute('data-itemid');
+ var id = link.getAttribute('data-id');
var markAsPlayed = !link.classList.contains('btnUserItemRatingOn');
@@ -2431,7 +2326,7 @@
markFavorite: function (link) {
- var id = link.getAttribute('data-itemid');
+ var id = link.getAttribute('data-id');
var markAsFavorite = !link.classList.contains('btnUserItemRatingOn');
diff --git a/dashboard-ui/scripts/librarylist.js b/dashboard-ui/scripts/librarylist.js
index 5d3a78a32..5934b796b 100644
--- a/dashboard-ui/scripts/librarylist.js
+++ b/dashboard-ui/scripts/librarylist.js
@@ -1,317 +1,4 @@
-define(['appSettings', 'appStorage', 'libraryBrowser', 'apphost', 'itemHelper', 'mediaInfo'], function (appSettings, appStorage, LibraryBrowser, appHost, itemHelper, mediaInfo) {
-
- var showOverlayTimeout;
-
- function onHoverOut(e) {
-
- var elem = e.target;
-
- if (!elem.classList.contains('card')) {
- return;
- }
-
- if (showOverlayTimeout) {
- clearTimeout(showOverlayTimeout);
- showOverlayTimeout = null;
- }
-
- elem = elem.querySelector('.cardOverlayTarget');
-
- if (elem) {
- slideDownToHide(elem);
- }
- }
-
- function slideDownToHide(elem) {
-
- if (elem.classList.contains('hide')) {
- return;
- }
-
- if (!elem.animate) {
- elem.classList.add('hide');
- return;
- }
-
- requestAnimationFrame(function () {
- var keyframes = [
- { transform: 'translateY(0)', offset: 0 },
- { transform: 'translateY(100%)', offset: 1 }];
- var timing = { duration: 300, iterations: 1, fill: 'forwards', easing: 'ease-out' };
-
- elem.animate(keyframes, timing).onfinish = function () {
- elem.classList.add('hide');
- };
- });
- }
-
- function slideUpToShow(elem) {
-
- if (!elem.classList.contains('hide')) {
- return;
- }
-
- elem.classList.remove('hide');
-
- if (!elem.animate) {
- return;
- }
-
- requestAnimationFrame(function () {
-
- var keyframes = [
- { transform: 'translateY(100%)', offset: 0 },
- { transform: 'translateY(0)', offset: 1 }];
- var timing = { duration: 300, iterations: 1, fill: 'forwards', easing: 'ease-out' };
- elem.animate(keyframes, timing);
- });
- }
-
- function getOverlayHtml(item, currentUser, card) {
-
- var html = '';
-
- html += '
';
-
- var className = card.className.toLowerCase();
-
- var isMiniItem = className.indexOf('mini') != -1;
- var isSmallItem = isMiniItem || className.indexOf('small') != -1;
- var isPortrait = className.indexOf('portrait') != -1;
- var isSquare = className.indexOf('square') != -1;
-
- var parentName = isSmallItem || isMiniItem || isPortrait ? null : item.SeriesName;
- var name = itemHelper.getDisplayName(item);
-
- html += '
';
- var logoHeight = isSmallItem || isMiniItem ? 20 : 26;
- var imgUrl;
-
- if (parentName && item.ParentLogoItemId) {
-
- imgUrl = ApiClient.getScaledImageUrl(item.ParentLogoItemId, {
- maxHeight: logoHeight,
- type: 'logo',
- tag: item.ParentLogoImageTag
- });
-
- html += '
';
-
- }
- else if (item.ImageTags.Logo) {
-
- imgUrl = ApiClient.getScaledImageUrl(item.Id, {
- maxHeight: logoHeight,
- type: 'logo',
- tag: item.ImageTags.Logo
- });
-
- html += '
';
- }
- else {
- html += parentName || name;
- }
- html += '
';
-
- if (parentName) {
- html += '
';
- html += name;
- html += '
';
- } else if (!isSmallItem && !isMiniItem) {
- html += '
';
- html += mediaInfo.getPrimaryMediaInfoHtml(item, {
- endsAt: false
- });
- html += '
';
- }
-
- if (!isMiniItem) {
- html += '
';
-
- if (isPortrait) {
- html += '
';
- html += LibraryBrowser.getUserDataIconsHtml(item);
- html += '
';
- } else {
-
- html += '
';
- html += LibraryBrowser.getUserDataIconsHtml(item);
- html += ' ';
- }
- html += '
';
- }
-
- html += '
';
-
- var buttonCount = 0;
-
- if (MediaController.canPlay(item)) {
-
- var resumePosition = (item.UserData || {}).PlaybackPositionTicks || 0;
-
- html += 'play_circle_outline ';
- buttonCount++;
- }
-
- if (item.LocalTrailerCount) {
- html += 'videocam ';
- buttonCount++;
- }
-
- html += 'more_vert ';
- buttonCount++;
-
- html += '
';
-
- html += '
';
-
- return html;
- }
-
- function onTrailerButtonClick(e) {
-
- var id = this.getAttribute('data-itemid');
-
- ApiClient.getLocalTrailers(Dashboard.getCurrentUserId(), id).then(function (trailers) {
- MediaController.play({ items: trailers });
- });
-
- e.preventDefault();
- e.stopPropagation();
- return false;
- }
-
- function onPlayItemButtonClick(e) {
-
- var target = this;
-
- var id = target.getAttribute('data-itemid');
- var type = target.getAttribute('data-itemtype');
- var isFolder = target.getAttribute('data-isfolder') == 'true';
- var mediaType = target.getAttribute('data-mediatype');
- var resumePosition = parseInt(target.getAttribute('data-resumeposition'));
-
- LibraryBrowser.showPlayMenu(this, id, type, isFolder, mediaType, resumePosition);
-
- e.preventDefault();
- e.stopPropagation();
- return false;
- }
-
- function onMoreButtonClick(e) {
-
- var card = parentWithClass(this, 'card');
-
- showContextMenu(card, {
- shuffle: false,
- instantMix: false,
- play: false,
- playAllFromHere: false,
- queue: false,
- queueAllFromHere: false
- });
-
- e.preventDefault();
- e.stopPropagation();
- return false;
- }
-
- function onContextMenu(e) {
-
- var card = parentWithClass(e.target, 'card');
-
- if (card) {
- var itemSelectionPanel = card.querySelector('.itemSelectionPanel');
-
- if (!itemSelectionPanel) {
- showContextMenu(card, {});
- }
-
- e.preventDefault();
- return false;
- }
- }
-
- function deleteTimer(id, itemsContainer) {
-
- require(['confirm'], function (confirm) {
-
- confirm(Globalize.translate('MessageConfirmRecordingCancellation'), Globalize.translate('HeaderConfirmRecordingCancellation')).then(function () {
-
- Dashboard.showLoadingMsg();
-
- ApiClient.cancelLiveTvTimer(id).then(function () {
-
- require(['toast'], function (toast) {
- toast(Globalize.translate('MessageRecordingCancelled'));
- });
-
- Dashboard.hideLoadingMsg();
- itemsContainer.dispatchEvent(new CustomEvent('timercancelled', {
- bubbles: true
- }));
- });
- });
- });
- }
-
- function showContextMenu(card, options) {
-
- var displayContextItem = card;
-
- card = parentWithClass(card, 'card');
-
- if (!card) {
- return;
- }
-
- var itemId = card.getAttribute('data-itemid');
- var serverId = ApiClient.serverInfo().Id;
- var type = card.getAttribute('data-itemtype');
-
- var apiClient = ConnectionManager.getApiClient(serverId);
-
- var promise = type == 'Timer' ? apiClient.getLiveTvTimer(itemId) : apiClient.getItem(apiClient.getCurrentUserId(), itemId);
-
- promise.then(function (item) {
-
- require(['itemContextMenu'], function (itemContextMenu) {
-
- itemContextMenu.show(Object.assign(options || {}, {
- item: item,
- positionTo: displayContextItem
- }));
- });
- });
- }
-
- function onListViewPlayButtonClick(e, playButton) {
-
- var card = e.target;
-
- if (!card.classList.contains('card') && !card.classList.contains('listItem')) {
- card = parentWithAnyClass(card, ['listItem', 'card']);
- }
-
- var id = card.getAttribute('data-itemid');
- var type = card.getAttribute('data-itemtype');
- var isFolder = card.getAttribute('data-isfolder') == 'true';
- var mediaType = card.getAttribute('data-mediatype');
- var resumePosition = parseInt(card.getAttribute('data-positionticks'));
-
- if (type == 'MusicAlbum' || type == 'MusicArtist' || type == 'MusicGenre' || type == 'Playlist') {
- isFolder = true;
- }
-
- if (type == 'Program') {
- id = card.getAttribute('data-channelid');
- }
-
- LibraryBrowser.showPlayMenu(playButton, id, type, isFolder, mediaType, resumePosition);
-
- e.preventDefault();
- return false;
- }
+define(['appSettings', 'appStorage', 'libraryBrowser', 'apphost', 'itemHelper'], function (appSettings, appStorage, LibraryBrowser, appHost, itemHelper) {
function isClickable(target) {
@@ -330,12 +17,6 @@
function onCardClick(e) {
- var playButton = parentWithClass(e.target, 'cardOverlayPlayButton');
-
- if (playButton) {
- return onListViewPlayButtonClick(e, playButton);
- }
-
var card = parentWithClass(e.target, 'card');
if (card) {
@@ -352,7 +33,7 @@
function onGroupedCardClick(e, card) {
- var itemId = card.getAttribute('data-itemid');
+ var itemId = card.getAttribute('data-id');
var context = card.getAttribute('data-context');
var userId = Dashboard.getCurrentUserId();
@@ -392,25 +73,6 @@
return false;
}
- function hasAnyClass(elem, classNames) {
- return classNames.filter(function (c) {
- return elem.classList.contains(c);
- }).length > 0;
- }
-
- function parentWithAnyClass(elem, classNames) {
-
- while (!elem.classList || !hasAnyClass(elem, classNames)) {
- elem = elem.parentNode;
-
- if (!elem) {
- return null;
- }
- }
-
- return elem;
- }
-
function parentWithClass(elem, className) {
while (!elem.classList || !elem.classList.contains(className)) {
@@ -426,125 +88,10 @@
LibraryBrowser.createCardMenus = function (curr, options) {
- var preventHover = false;
-
- function onShowTimerExpired(elem) {
-
- elem = elem.querySelector('a');
-
- if (elem.querySelector('.itemSelectionPanel')) {
- return;
- }
-
- var innerElem = elem.querySelector('.cardOverlayTarget');
-
- if (!innerElem) {
- innerElem = document.createElement('div');
- innerElem.classList.add('hide');
- innerElem.classList.add('cardOverlayTarget');
- parentWithClass(elem, 'cardContent').appendChild(innerElem);
- }
-
- var dataElement = elem;
- while (dataElement && !dataElement.getAttribute('data-itemid')) {
- dataElement = dataElement.parentNode;
- }
-
- var id = dataElement.getAttribute('data-itemid');
- var type = dataElement.getAttribute('data-itemtype');
-
- if (type == 'Timer') {
- return;
- }
-
- var promise1 = ApiClient.getItem(Dashboard.getCurrentUserId(), id);
- var promise2 = Dashboard.getCurrentUser();
-
- Promise.all([promise1, promise2]).then(function (responses) {
-
- var item = responses[0];
- var user = responses[1];
-
- var card = elem;
-
- while (!card.classList.contains('card')) {
- card = card.parentNode;
- }
-
- innerElem.innerHTML = getOverlayHtml(item, user, card);
-
- var btnPlayItem = innerElem.querySelector('.btnPlayItem');
- if (btnPlayItem) {
- btnPlayItem.addEventListener('click', onPlayItemButtonClick);
- }
- var btnPlayTrailer = innerElem.querySelector('.btnPlayTrailer');
- if (btnPlayTrailer) {
- btnPlayTrailer.addEventListener('click', onTrailerButtonClick);
- }
- var btnMoreCommands = innerElem.querySelector('.btnMoreCommands');
- if (btnMoreCommands) {
- btnMoreCommands.addEventListener('click', onMoreButtonClick);
- }
- });
-
- slideUpToShow(innerElem);
- }
-
- function onHoverIn(e) {
-
- var elem = e.target;
-
- if (!elem.classList.contains('cardImage')) {
- return;
- }
-
- if (preventHover === true) {
- preventHover = false;
- return;
- }
-
- if (showOverlayTimeout) {
- clearTimeout(showOverlayTimeout);
- showOverlayTimeout = null;
- }
-
- while (!elem.classList.contains('card')) {
- elem = elem.parentNode;
- }
-
- showOverlayTimeout = setTimeout(function () {
- onShowTimerExpired(elem);
-
- }, 1200);
- }
-
- function preventTouchHover() {
- preventHover = true;
- }
-
curr.removeEventListener('click', onCardClick);
curr.addEventListener('click', onCardClick);
- if (AppInfo.isTouchPreferred) {
-
- curr.removeEventListener('contextmenu', disableEvent);
- curr.addEventListener('contextmenu', disableEvent);
- }
- else {
- curr.removeEventListener('contextmenu', onContextMenu);
- curr.addEventListener('contextmenu', onContextMenu);
-
- curr.removeEventListener('mouseenter', onHoverIn);
- curr.addEventListener('mouseenter', onHoverIn, true);
-
- curr.removeEventListener('mouseleave', onHoverOut);
- curr.addEventListener('mouseleave', onHoverOut, true);
-
- curr.removeEventListener("touchstart", preventTouchHover);
- curr.addEventListener("touchstart", preventTouchHover);
- }
-
- initTapHoldMenus(curr);
+ //initTapHoldMenus(curr);
};
function initTapHoldMenus(elem) {
@@ -616,12 +163,6 @@
});
}
- function disableEvent(e) {
- e.preventDefault();
- e.stopPropagation();
- return false;
- }
-
function onTapHold(e) {
var card = parentWithClass(e.target, 'card');
@@ -781,7 +322,7 @@
var selectedItems = [];
function updateItemSelection(chkItemSelect, selected) {
- var id = parentWithClass(chkItemSelect, 'card').getAttribute('data-itemid');
+ var id = parentWithClass(chkItemSelect, 'card').getAttribute('data-id');
if (selected) {
@@ -989,80 +530,6 @@
});
}
- function onItemWithActionClick(e) {
-
- var elem = parentWithClass(e.target, 'itemWithAction');
-
- if (!elem) {
- return;
- }
-
- var action = elem.getAttribute('data-action');
- var elemWithAttributes = elem;
-
- if (action) {
- while (!elemWithAttributes.getAttribute('data-itemid')) {
- elemWithAttributes = elemWithAttributes.parentNode;
- }
- }
-
- var index;
- var itemsContainer;
-
- var itemId = elemWithAttributes.getAttribute('data-itemid');
-
- if (action == 'play') {
- MediaController.play(itemId);
- }
- else if (action == 'playallfromhere') {
-
- index = elemWithAttributes.getAttribute('data-index');
-
- itemsContainer = parentWithClass(elem, 'itemsContainer');
-
- playAllFromHere(index, itemsContainer, 'play');
- }
- else if (action == 'instantmix') {
-
- MediaController.instantMix(itemId);
- }
-
- e.stopPropagation();
- e.preventDefault();
- return false;
- }
-
- function playAllFromHere(index, itemsContainer, method) {
-
- var ids = [];
-
- var mediaItems = itemsContainer.querySelectorAll('.mediaItem');
- for (var i = 0, length = mediaItems.length; i < length; i++) {
- var node = mediaItems[i];
- var id = node.getAttribute('data-itemid');
- while (!id) {
- node = node.parentNode;
- id = node.getAttribute('data-itemid');
- }
- ids.push(id);
- }
-
- ids = ids.slice(index);
-
- ApiClient.getItems(Dashboard.getCurrentUserId(), {
-
- Ids: ids.join(','),
- Fields: 'MediaSources,Chapters',
- Limit: 100
-
- }).then(function (result) {
-
- MediaController[method]({
- items: result.Items
- });
- });
- }
-
function showSyncButtonsPerUser(page) {
var apiClient = window.ApiClient;
@@ -1106,16 +573,8 @@
var page = this;
- page.addEventListener('click', onItemWithActionClick);
-
- var itemsContainers = page.querySelectorAll('.itemsContainer:not(.noautoinit)');
- var i, length;
- for (i = 0, length = itemsContainers.length; i < length; i++) {
- LibraryBrowser.createCardMenus(itemsContainers[i]);
- }
-
var categorySyncButtons = page.querySelectorAll('.categorySyncButton');
- for (i = 0, length = categorySyncButtons.length; i < length; i++) {
+ for (var i = 0, length = categorySyncButtons.length; i < length; i++) {
categorySyncButtons[i].addEventListener('click', onCategorySyncButtonClick);
}
});
@@ -1136,105 +595,4 @@
hideSelections();
});
- function renderUserDataChanges(card, userData) {
-
- if (userData.Played) {
-
- var playedIndicator = card.querySelector('.playedIndicator');
-
- if (!playedIndicator) {
-
- playedIndicator = document.createElement('div');
- playedIndicator.classList.add('playedIndicator');
- card.querySelector('.cardContent').appendChild(playedIndicator);
- }
- playedIndicator.innerHTML = '
check ';
- }
- else if (userData.UnplayedItemCount) {
-
- var playedIndicator = card.querySelector('.playedIndicator');
-
- if (!playedIndicator) {
-
- playedIndicator = document.createElement('div');
- playedIndicator.classList.add('playedIndicator');
- card.querySelector('.cardContent').appendChild(playedIndicator);
- }
- playedIndicator.innerHTML = userData.UnplayedItemCount;
- }
-
- var progressHtml = LibraryBrowser.getItemProgressBarHtml(userData);
- var cardProgress;
-
- if (progressHtml) {
- cardProgress = card.querySelector('.cardProgress');
-
- if (!cardProgress) {
- cardProgress = document.createElement('div');
- cardProgress.classList.add('cardProgress');
-
- var cardFooter = card.querySelector('.cardFooter');
- if (cardFooter) {
- cardFooter.appendChild(cardProgress);
- }
- }
-
- cardProgress.innerHTML = progressHtml;
- }
- else {
- cardProgress = card.querySelector('.cardProgress');
- if (cardProgress) {
- cardProgress.parentNode.removeChild(cardProgress);
- }
- }
- }
-
- function onUserDataChanged(userData) {
-
- var elems = document.querySelectorAll("*[data-itemid='" + userData.ItemId + "']");
-
- for (var i = 0, length = elems.length; i < length; i++) {
-
- var elem = elems[i];
- var mediaType = elem.getAttribute('data-mediatype');
-
- if (mediaType == 'Video') {
- elem.setAttribute('data-positionticks', (userData.PlaybackPositionTicks || 0));
-
- if (elem.classList.contains('card')) {
- renderUserDataChanges(elem, userData);
- }
- }
- }
- }
-
- function onWebSocketMessage(e, data) {
-
- var msg = data;
-
- if (msg.MessageType === "UserDataChanged") {
-
- if (msg.Data.UserId == Dashboard.getCurrentUserId()) {
-
- for (var i = 0, length = msg.Data.UserDataList.length; i < length; i++) {
- onUserDataChanged(msg.Data.UserDataList[i]);
- }
- }
- }
-
- }
-
- function initializeApiClient(apiClient) {
- Events.off(apiClient, "websocketmessage", onWebSocketMessage);
- Events.on(apiClient, "websocketmessage", onWebSocketMessage);
- }
-
- if (window.ApiClient) {
- initializeApiClient(window.ApiClient);
- }
-
- Events.on(ConnectionManager, 'apiclientcreated', function (e, apiClient) {
- initializeApiClient(apiClient);
- });
-
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/livetvchannels.js b/dashboard-ui/scripts/livetvchannels.js
index 72da67bad..50785f927 100644
--- a/dashboard-ui/scripts/livetvchannels.js
+++ b/dashboard-ui/scripts/livetvchannels.js
@@ -1,4 +1,4 @@
-define([], function () {
+define(['emby-itemscontainer'], function () {
return function (view, params, tabContent) {
diff --git a/dashboard-ui/scripts/livetvcomponents.js b/dashboard-ui/scripts/livetvcomponents.js
index 593e772b3..a310a19f9 100644
--- a/dashboard-ui/scripts/livetvcomponents.js
+++ b/dashboard-ui/scripts/livetvcomponents.js
@@ -89,7 +89,6 @@
showChannelName: true,
lazy: true,
cardLayout: true,
- showDetailsMenu: true,
defaultAction: 'edit'
});
diff --git a/dashboard-ui/scripts/livetvitems.js b/dashboard-ui/scripts/livetvitems.js
index 71ce7d3d8..11be75fa0 100644
--- a/dashboard-ui/scripts/livetvitems.js
+++ b/dashboard-ui/scripts/livetvitems.js
@@ -1,4 +1,4 @@
-define([], function () {
+define(['emby-itemscontainer'], function () {
var view = LibraryBrowser.getDefaultItemsView('Poster', 'Poster');
diff --git a/dashboard-ui/scripts/livetvrecordings.js b/dashboard-ui/scripts/livetvrecordings.js
index b3b7cfc38..73f0c877c 100644
--- a/dashboard-ui/scripts/livetvrecordings.js
+++ b/dashboard-ui/scripts/livetvrecordings.js
@@ -149,7 +149,6 @@
elem.querySelector('.recordingItems').innerHTML = html;
ImageLoader.lazyChildren(elem);
- LibraryBrowser.createCardMenus(elem);
});
}
diff --git a/dashboard-ui/scripts/livetvsuggested.js b/dashboard-ui/scripts/livetvsuggested.js
index 6fe55a2be..902d3f536 100644
--- a/dashboard-ui/scripts/livetvsuggested.js
+++ b/dashboard-ui/scripts/livetvsuggested.js
@@ -1,4 +1,4 @@
-define(['libraryBrowser', 'scrollStyles'], function (libraryBrowser) {
+define(['libraryBrowser', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser) {
function enableScrollX() {
return browserInfo.mobile && AppInfo.enableAppLayouts;
@@ -133,7 +133,6 @@
} else {
containers[i].classList.remove('hiddenScrollX');
}
- LibraryBrowser.createCardMenus(containers[i]);
}
};
diff --git a/dashboard-ui/scripts/mediacontroller.js b/dashboard-ui/scripts/mediacontroller.js
index 547cdc777..a02cbc491 100644
--- a/dashboard-ui/scripts/mediacontroller.js
+++ b/dashboard-ui/scripts/mediacontroller.js
@@ -585,12 +585,23 @@
self.shuffle = function (id) {
+ // accept both id and item being passed in
+ if (id.Id) {
+ id = id.Id;
+ }
+
doWithPlaybackValidation(currentPlayer, function () {
currentPlayer.shuffle(id);
});
};
self.instantMix = function (id) {
+
+ // accept both id and item being passed in
+ if (id.Id) {
+ id = id.Id;
+ }
+
doWithPlaybackValidation(currentPlayer, function () {
currentPlayer.instantMix(id);
});
diff --git a/dashboard-ui/scripts/moviesrecommended.js b/dashboard-ui/scripts/moviesrecommended.js
index 9ceba4465..7fc2816eb 100644
--- a/dashboard-ui/scripts/moviesrecommended.js
+++ b/dashboard-ui/scripts/moviesrecommended.js
@@ -1,4 +1,4 @@
-define(['libraryBrowser', 'scrollStyles'], function (libraryBrowser) {
+define(['libraryBrowser', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser) {
function getView() {
@@ -167,9 +167,9 @@
html += '';
if (enableScrollX()) {
- html += '