1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

fixes #689 - Support grouping latest items

This commit is contained in:
Luke Pulverenti 2014-07-05 01:21:13 -04:00
parent eeafc46d94
commit 46f9a6a331
28 changed files with 382 additions and 144 deletions

View file

@ -271,7 +271,7 @@
$($.mobile.activePage).append(html);
var elem = $('.tapHoldMenu').popup({ positionTo: e.target }).trigger('create').popup("open").on("popupafterclose", function () {
var elem = $('.tapHoldMenu').popup({ positionTo: posterItem }).trigger('create').popup("open").on("popupafterclose", function () {
$(this).off("popupafterclose").remove();
$(posterItem).removeClass('hasContextMenu');
@ -290,6 +290,161 @@
return false;
}
function getGroupingHeaderHtml(item) {
var itemHtml = '';
var href = LibraryBrowser.getHref(item);
itemHtml += '<li><a href="' + href + '">';
var imgUrl = "css/images/media/chapterflyout.png";
if (item.ImageTags.Primary) {
itemHtml += '<img src="' + imgUrl + '" style="visibility:hidden;" />';
imgUrl = ApiClient.getScaledImageUrl(item.Id, {
width: 160,
tag: item.ImageTags.Primary,
type: "Primary",
index: 0
});
itemHtml += '<div class="videoChapterPopupImage" style="background-image:url(\'' + imgUrl + '\');"></div>';
} else {
itemHtml += '<img src="' + imgUrl + '" />';
}
itemHtml += '<h3>';
itemHtml += LibraryBrowser.getPosterViewDisplayName(item);
itemHtml += '</h3>';
var date = parseISO8601Date(item.DateCreated, { toLocal: true });
itemHtml += '<p>';
itemHtml += Globalize.translate('LabelAddedOnDate').replace('{0}', date.toLocaleDateString());
itemHtml += '</p>';
itemHtml += '</a></li>';
return itemHtml;
}
function onGroupedPosterItemClick(e) {
var posterItem = this;
var itemId = posterItem.getAttribute('data-itemid');
$(posterItem).addClass('hasContextMenu');
var userId = Dashboard.getCurrentUserId();
var promise1 = ApiClient.getItem(userId, itemId);
var options = {
Limit: parseInt($('.playedIndicator', posterItem).html() || '10'),
Fields: "PrimaryImageAspectRatio",
ParentId: itemId,
IsFolder: false,
GroupItems: false
};
if ($(posterItem).hasClass('unplayedGroupings')) {
options.IsPlayed = false;
}
var promise2 = ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options));
$.when(promise1, promise2).done(function (response1, response2) {
var item = response1[0];
var latestItems = response2[0];
if (latestItems.length == 1) {
var first = latestItems[0];
Dashboard.navigate(LibraryBrowser.getHref(first));
return;
}
var html = '<div data-role="popup" class="groupingMenu" data-theme="a">';
html += '<a href="#" data-rel="back" class="ui-btn ui-corner-all ui-shadow ui-btn-b ui-icon-delete ui-btn-icon-notext ui-btn-right">Close</a>';
html += '<div>';
html += '<ul data-role="listview">';
var href = LibraryBrowser.getHref(item);
var header = Globalize.translate('HeaderLatestFromChannel').replace('{0}', '<a href="' + href + '">' + item.Name + '</a>');
html += '<li data-role="list-divider">' + header + '</li>';
html += '</ul>';
html += '<div class="groupingMenuScroller">';
html += '<ul data-role="listview">';
html += latestItems.map(function (latestItem) {
var itemHtml = '';
href = LibraryBrowser.getHref(latestItem);
itemHtml += '<li><a href="' + href + '">';
var imgUrl = "css/images/media/chapterflyout.png";
if (latestItem.ImageTags.Primary) {
itemHtml += '<img src="' + imgUrl + '" style="visibility:hidden;" />';
imgUrl = ApiClient.getScaledImageUrl(latestItem.Id, {
width: 160,
tag: latestItem.ImageTags.Primary,
type: "Primary",
index: 0
});
itemHtml += '<div class="videoChapterPopupImage" style="background-image:url(\'' + imgUrl + '\');"></div>';
} else {
itemHtml += '<img src="' + imgUrl + '" />';
}
itemHtml += '<h3>';
itemHtml += LibraryBrowser.getPosterViewDisplayName(latestItem);
itemHtml += '</h3>';
var date = parseISO8601Date(item.DateCreated, { toLocal: true });
itemHtml += '<p>';
itemHtml += Globalize.translate('LabelAddedOnDate').replace('{0}', date.toLocaleDateString());
itemHtml += '</p>';
itemHtml += '</a></li>';
return itemHtml;
}).join('');
html += '</ul>';
html += '</div>';
html += '</div>';
html += '</div>';
$($.mobile.activePage).append(html);
var elem = $('.groupingMenu').popup().trigger('create').popup("open").on("popupafterclose", function () {
$(this).off("popupafterclose").remove();
$(posterItem).removeClass('hasContextMenu');
});
});
e.preventDefault();
return false;
}
$.fn.createPosterItemMenus = function () {
var preventHover = false;
@ -355,8 +510,9 @@
var elems = '.backdropPosterItem,.smallBackdropPosterItem,.portraitPosterItem,.squarePosterItem,.miniBackdropPosterItem';
this.off('contextmenu.posterItemMenu', elems)
.on('contextmenu.posterItemMenu', elems, onPosterItemTapHold);
$('.posterItem', this).on('contextmenu.posterItemMenu', onPosterItemTapHold);
$('.groupedPosterItem', this).on('click', onGroupedPosterItemClick);
return this.off('.posterItemHoverMenu')
.on('mouseenter.posterItemHoverMenu', elems, onHoverIn)