') : ('
');
+ cardImageContainerClose = '
';
+ }
}
var indicatorsHtml = '';
@@ -1082,26 +1118,18 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
progressHtml = '';
}
+ var mediaSourceCount = item.MediaSourceCount || 1;
+ if (mediaSourceCount > 1) {
+ innerCardFooter += '
' + mediaSourceCount + '
';
+ }
+
var outerCardFooter = '';
if (!options.overlayText && !footerOverlayed) {
footerCssClass = options.cardLayout ? 'cardFooter' : 'cardFooter transparent';
outerCardFooter = getCardFooterText(item, options, showTitle, imgUrl, footerCssClass, progressHtml, true);
}
- var overlayButtons = '';
- if (!layoutManager.tv && scalable) {
- if (options.overlayPlayButton && !item.IsPlaceHolder && (item.LocationType != 'Virtual' || !item.MediaType || item.Type == 'Program') && item.Type != 'Person' && item.PlayAccess == 'Full') {
- overlayButtons += '
';
- }
- if (options.overlayMoreButton) {
-
- var moreIcon = appHost.moreIcon == 'dots-horiz' ? '' : '';
-
- overlayButtons += '
';
- }
- }
-
- var tagName = layoutManager.tv || !scalable ? 'button' : 'div';
+ var tagName = (layoutManager.tv || !scalable) && !overlayButtons ? 'button' : 'div';
var prefix = (item.SortName || item.Name || '')[0];
@@ -1139,7 +1167,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
return '\
<' + tagName + ' data-index="' + index + '"' + timerAttributes + actionAttribute + ' data-isfolder="' + (item.IsFolder || false) + '" data-serverid="' + (item.ServerId) + '" data-id="' + (item.Id || item.ItemId) + '" data-type="' + item.Type + '"' + mediaTypeData + collectionTypeData + channelIdData + positionTicksData + collectionIdData + playlistIdData + ' data-prefix="' + prefix + '" class="' + className + '"> \
-' + cardImageContainerOpen + cardImageContainerClose + innerCardFooter + cardContentClose + overlayButtons + cardScalableClose + outerCardFooter + cardBoxClose + '\
+' + cardImageContainerOpen + innerCardFooter + cardImageContainerClose + cardContentClose + overlayButtons + cardScalableClose + outerCardFooter + cardBoxClose + '\
' + tagName + '>';
}
diff --git a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/chaptercardbuilder.js b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/chaptercardbuilder.js
index b7f20c9fe4..0d7d4eebff 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/chaptercardbuilder.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/chaptercardbuilder.js
@@ -1,4 +1,4 @@
-define(['datetime', 'imageLoader', 'itemShortcuts'], function (datetime, imageLoader, itemShortcuts) {
+define(['datetime', 'imageLoader', 'itemShortcuts', 'connectionManager'], function (datetime, imageLoader, itemShortcuts, connectionManager) {
function buildChapterCardsHtml(item, chapters, options) {
@@ -27,6 +27,8 @@ define(['datetime', 'imageLoader', 'itemShortcuts'], function (datetime, imageLo
var html = '';
var itemsInRow = 0;
+ var apiClient = connectionManager.getApiClient(item.ServerId);
+
for (var i = 0, length = chapters.length; i < length; i++) {
if (options.rows && itemsInRow == 0) {
@@ -35,7 +37,7 @@ define(['datetime', 'imageLoader', 'itemShortcuts'], function (datetime, imageLo
var chapter = chapters[i];
- html += buildChapterCard(item, chapter, options, className);
+ html += buildChapterCard(item, apiClient, chapter, i, options, className);
itemsInRow++;
if (options.rows && itemsInRow >= options.rows) {
@@ -47,9 +49,25 @@ define(['datetime', 'imageLoader', 'itemShortcuts'], function (datetime, imageLo
return html;
}
- function buildChapterCard(item, chapter, options, className) {
+ function getImgUrl(item, chapter, index, maxWidth, apiClient) {
- var imgUrl = chapter.images ? chapter.images.primary : '';
+ if (chapter.ImageTag) {
+
+ return apiClient.getScaledImageUrl(item.Id, {
+
+ maxWidth: maxWidth,
+ tag: chapter.ImageTag,
+ type: "Chapter",
+ index: index
+ });
+ }
+
+ return null;
+ }
+
+ function buildChapterCard(item, apiClient, chapter, index, options, className) {
+
+ var imgUrl = getImgUrl(item, chapter, index, options.width || 400, apiClient);
var cardImageContainerClass = 'cardImageContainer';
if (options.coverImage) {
@@ -84,12 +102,12 @@ define(['datetime', 'imageLoader', 'itemShortcuts'], function (datetime, imageLo
function buildChapterCards(item, chapters, options) {
- // Abort if the container has been disposed
- if (!document.body.contains(options.parentContainer)) {
- return;
- }
-
if (options.parentContainer) {
+ // Abort if the container has been disposed
+ if (!document.body.contains(options.parentContainer)) {
+ return;
+ }
+
if (chapters.length) {
options.parentContainer.classList.remove('hide');
} else {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.css b/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.css
index f3b6d79b14..b5c3bf1559 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.css
+++ b/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.css
@@ -34,3 +34,7 @@
top: 0 !important;
border-radius: 0 !important;
}
+
+.withMultiSelect {
+ position: relative;
+}
diff --git a/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.js b/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.js
index e214b75fa1..eea5733d4d 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/multiselect/multiselect.js
@@ -16,7 +16,10 @@
selectedElements = [];
var elems = document.querySelectorAll('.itemSelectionPanel');
for (var i = 0, length = elems.length; i < length; i++) {
- elems[i].parentNode.removeChild(elems[i]);
+
+ var parent = elems[i].parentNode;
+ parent.removeChild(elems[i]);
+ parent.classList.remove('withMultiSelect');
}
}
}
@@ -75,7 +78,7 @@
function updateItemSelection(chkItemSelect, selected) {
- var id = dom.parentWithClass(chkItemSelect, 'card').getAttribute('data-id');
+ var id = dom.parentWithAttribute(chkItemSelect, 'data-id').getAttribute('data-id');
if (selected) {
@@ -120,7 +123,9 @@
itemSelectionPanel = document.createElement('div');
itemSelectionPanel.classList.add('itemSelectionPanel');
- (item.querySelector('.cardBox') || item.querySelector('.cardContent')).appendChild(itemSelectionPanel);
+ var parent = item.querySelector('.cardBox') || item.querySelector('.cardContent');
+ parent.classList.add('withMultiSelect');
+ parent.appendChild(itemSelectionPanel);
var cssClass = 'chkItemSelect';
if (isChecked && !browser.firefox) {
diff --git a/dashboard-ui/css/librarybrowser.css b/dashboard-ui/css/librarybrowser.css
index cb66f955d9..7f48c2e6b4 100644
--- a/dashboard-ui/css/librarybrowser.css
+++ b/dashboard-ui/css/librarybrowser.css
@@ -884,23 +884,6 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
font-size: 180%;
}
-.mediaSourceIndicator {
- display: block;
- position: absolute;
- top: 5px;
- left: 5px;
- text-align: center;
- vertical-align: middle;
- width: 22px;
- height: 19px;
- padding-top: 3px;
- border-radius: 50%;
- color: #fff;
- background: rgb(51, 136, 204);
- background: rgba(51, 136, 204, .9);
- line-height: 1.2;
-}
-
.recordingProgressBar::-moz-progress-bar {
background-color: #cc3333;
}
diff --git a/dashboard-ui/itemdetails.html b/dashboard-ui/itemdetails.html
index 3b8cae5205..b63cbdb00b 100644
--- a/dashboard-ui/itemdetails.html
+++ b/dashboard-ui/itemdetails.html
@@ -153,7 +153,8 @@
-
+
+