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

117 lines
3.3 KiB
JavaScript
Raw Normal View History

2016-07-18 02:45:29 -04:00
define(['libraryBrowser', 'itemHelper'], function (libraryBrowser, itemHelper) {
2014-03-17 10:48:16 -04:00
2015-07-06 03:06:09 -04:00
function isClickable(target) {
while (target != null) {
var tagName = target.tagName || '';
2015-07-14 12:39:34 -04:00
if (tagName == 'A' || tagName.indexOf('BUTTON') != -1 || tagName.indexOf('INPUT') != -1) {
2015-07-06 03:06:09 -04:00
return true;
}
return false;
//target = target.parentNode;
}
return false;
}
2015-09-27 19:32:09 -04:00
function onGroupedCardClick(e, card) {
var itemId = card.getAttribute('data-id');
2014-08-01 22:34:45 -04:00
var context = card.getAttribute('data-context');
2014-07-15 15:16:16 -04:00
var userId = Dashboard.getCurrentUserId();
2016-05-29 02:04:11 -04:00
var playedIndicator = card.querySelector('.playedIndicator');
var playedIndicatorHtml = playedIndicator ? playedIndicator.innerHTML : null;
var options = {
2016-05-29 02:04:11 -04:00
Limit: parseInt(playedIndicatorHtml || '10'),
2014-07-05 11:01:29 -04:00
Fields: "PrimaryImageAspectRatio,DateCreated",
ParentId: itemId,
GroupItems: false
};
2015-06-28 10:45:21 -04:00
var target = e.target;
2015-07-06 03:06:09 -04:00
if (isClickable(target)) {
2015-06-07 23:16:42 -04:00
return;
}
2015-12-14 10:43:03 -05:00
ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) {
2015-05-14 22:16:57 -04:00
2015-06-07 21:23:56 -04:00
if (items.length == 1) {
2016-07-18 02:45:29 -04:00
Dashboard.navigate(libraryBrowser.getHref(items[0], context));
2015-06-07 21:23:56 -04:00
return;
}
2015-09-21 11:43:10 -04:00
var url = 'itemdetails.html?id=' + itemId;
if (context) {
url += '&context=' + context;
}
2015-12-14 10:43:03 -05:00
Dashboard.navigate(url);
2015-05-14 22:16:57 -04:00
});
2015-12-14 10:43:03 -05:00
e.stopPropagation();
2015-05-14 22:16:57 -04:00
e.preventDefault();
return false;
}
2016-02-17 23:57:19 -05:00
function showSyncButtonsPerUser(page) {
var apiClient = window.ApiClient;
if (!apiClient || !apiClient.getCurrentUserId()) {
return;
}
Dashboard.getCurrentUser().then(function (user) {
var item = {
SupportsSync: true
};
2016-06-02 02:08:47 -04:00
var categorySyncButtons = page.querySelectorAll('.categorySyncButton');
for (var i = 0, length = categorySyncButtons.length; i < length; i++) {
2016-07-16 21:58:51 -04:00
if (itemHelper.canSync(user, item)) {
2016-06-02 02:08:47 -04:00
categorySyncButtons[i].classList.remove('hide');
} else {
categorySyncButtons[i].classList.add('hide');
}
2016-02-17 23:57:19 -05:00
}
});
}
2016-06-02 02:08:47 -04:00
function onCategorySyncButtonClick(e) {
2016-02-17 23:57:19 -05:00
2016-06-02 02:08:47 -04:00
var button = this;
2016-02-17 23:57:19 -05:00
var category = button.getAttribute('data-category');
var parentId = LibraryMenu.getTopParentId();
require(['syncDialog'], function (syncDialog) {
syncDialog.showMenu({
ParentId: parentId,
Category: category
});
});
}
2015-09-08 00:22:38 -04:00
pageClassOn('pageinit', "libraryPage", function () {
2014-03-17 21:45:41 -04:00
var page = this;
2016-06-02 02:08:47 -04:00
var categorySyncButtons = page.querySelectorAll('.categorySyncButton');
2016-07-17 14:55:07 -04:00
for (var i = 0, length = categorySyncButtons.length; i < length; i++) {
2016-06-02 02:08:47 -04:00
categorySyncButtons[i].addEventListener('click', onCategorySyncButtonClick);
}
2016-02-17 23:57:19 -05:00
});
pageClassOn('pageshow', "libraryPage", function () {
var page = this;
if (!Dashboard.isServerlessPage()) {
showSyncButtonsPerUser(page);
}
2015-09-08 00:22:38 -04:00
});
2016-03-01 01:02:03 -05:00
});