mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update sync menus
This commit is contained in:
parent
43a0e6ccea
commit
b2fa34662d
62 changed files with 275 additions and 144 deletions
|
@ -309,7 +309,7 @@
|
|||
|
||||
var nowPlayingItem = session.NowPlayingItem;
|
||||
|
||||
var className = nowPlayingItem ? 'scalableCard card activeSession' : 'scalableCard card activeSession';
|
||||
var className = nowPlayingItem ? 'scalableCard card activeSession backdropCard' : 'scalableCard card activeSession backdropCard';
|
||||
|
||||
if (session.TranscodingInfo && session.TranscodingInfo.CompletionPercentage) {
|
||||
className += ' transcodingSession';
|
||||
|
|
|
@ -99,7 +99,10 @@
|
|||
html += '<div class="homePageSection">';
|
||||
html += '<h1 class="listHeader">' + group.name + '</h1>';
|
||||
|
||||
var allowBottomPadding = true;
|
||||
|
||||
if (enableScrollX()) {
|
||||
allowBottomPadding = false;
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">';
|
||||
} else {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
||||
|
@ -116,7 +119,8 @@
|
|||
centerText: true,
|
||||
context: 'home-upcoming',
|
||||
overlayMoreButton: true,
|
||||
showParentTitle: true
|
||||
showParentTitle: true,
|
||||
allowBottomPadding: allowBottomPadding
|
||||
|
||||
});
|
||||
html += '</div>';
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['layoutManager', 'cardBuilder', 'datetime', 'mediaInfo', 'backdrop', 'listView', 'itemContextMenu', 'itemHelper', 'userdataButtons', 'dom', 'indicators', 'scrollStyles', 'emby-itemscontainer'], function (layoutManager, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, userdataButtons, dom, indicators) {
|
||||
define(['layoutManager', 'cardBuilder', 'datetime', 'mediaInfo', 'backdrop', 'listView', 'itemContextMenu', 'itemHelper', 'userdataButtons', 'dom', 'indicators', 'apphost', 'scrollStyles', 'emby-itemscontainer'], function (layoutManager, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, userdataButtons, dom, indicators, appHost) {
|
||||
|
||||
var currentItem;
|
||||
|
||||
|
@ -63,16 +63,41 @@
|
|||
|
||||
function getContextMenuOptions(item, button) {
|
||||
|
||||
return {
|
||||
var options = {
|
||||
item: item,
|
||||
open: false,
|
||||
play: false,
|
||||
queue: false,
|
||||
playAllFromHere: false,
|
||||
queueAllFromHere: false,
|
||||
sync: false,
|
||||
positionTo: button
|
||||
};
|
||||
|
||||
if (appHost.supports('sync')) {
|
||||
// Will be displayed via button
|
||||
options.syncLocal = false;
|
||||
} else {
|
||||
// Will be displayed via button
|
||||
options.sync = false;
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
function updateSyncStatus(page, item) {
|
||||
|
||||
var i, length;
|
||||
var elems = page.querySelectorAll('.btnSyncLocal');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
|
||||
if (item.SyncPercent == 100) {
|
||||
elems[i].querySelector('i').innerHTML = 'offline_pin';
|
||||
elems[i].classList.add('btnSyncComplete');
|
||||
} else {
|
||||
elems[i].querySelector('i').innerHTML = 'file_download';
|
||||
elems[i].classList.remove('btnSyncComplete');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function reloadFromItem(page, params, item) {
|
||||
|
@ -143,9 +168,17 @@
|
|||
}
|
||||
|
||||
if (itemHelper.canSync(user, item)) {
|
||||
hideAll(page, 'btnSync', true);
|
||||
if (appHost.supports('sync')) {
|
||||
hideAll(page, 'btnSyncLocal', true);
|
||||
hideAll(page, 'btnSync');
|
||||
} else {
|
||||
hideAll(page, 'btnSyncLocal');
|
||||
hideAll(page, 'btnSync', true);
|
||||
}
|
||||
updateSyncStatus(page, item);
|
||||
} else {
|
||||
hideAll(page, 'btnSync');
|
||||
hideAll(page, 'btnSyncLocal');
|
||||
}
|
||||
|
||||
if (item.Type == 'Program' && item.TimerId) {
|
||||
|
@ -2083,6 +2116,11 @@
|
|||
elems[i].addEventListener('click', onSyncClick);
|
||||
}
|
||||
|
||||
elems = view.querySelectorAll('.btnSyncLocal');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onSyncClick);
|
||||
}
|
||||
|
||||
elems = view.querySelectorAll('.btnRecord,.btnFloatingRecord');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onRecordClick);
|
||||
|
|
|
@ -83,7 +83,8 @@
|
|||
showParentTitle: true,
|
||||
coverImage: true,
|
||||
lazy: true,
|
||||
cardLayout: true
|
||||
cardLayout: true,
|
||||
allowBottomPadding: !enableScrollX()
|
||||
});
|
||||
|
||||
ImageLoader.lazyChildren(recordingItems);
|
||||
|
|
|
@ -108,7 +108,8 @@
|
|||
overlayText: false,
|
||||
lazy: true,
|
||||
overlayMoreButton: overlayButton != 'play',
|
||||
overlayPlayButton: overlayButton == 'play'
|
||||
overlayPlayButton: overlayButton == 'play',
|
||||
allowBottomPadding: !enableScrollX()
|
||||
});
|
||||
|
||||
var elem = page.querySelector('.' + sectionClass);
|
||||
|
@ -199,12 +200,6 @@
|
|||
|
||||
var mdlTabs = view.querySelector('.libraryViewNav');
|
||||
|
||||
var baseUrl = 'tv.html';
|
||||
var topParentId = params.topParentId;
|
||||
if (topParentId) {
|
||||
baseUrl += '?topParentId=' + topParentId;
|
||||
}
|
||||
|
||||
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 2, 3, 4]);
|
||||
|
||||
mdlTabs.addEventListener('tabchange', function (e) {
|
||||
|
|
|
@ -213,60 +213,6 @@
|
|||
MediaController.enableDisplayMirroring(this.checked);
|
||||
}
|
||||
|
||||
function bindKeys(controller) {
|
||||
|
||||
var self = this;
|
||||
var keyResult = {};
|
||||
|
||||
self.keyBinding = function (e) {
|
||||
|
||||
if (bypass()) return;
|
||||
|
||||
console.log("keyCode", e.keyCode);
|
||||
|
||||
if (keyResult[e.keyCode]) {
|
||||
e.preventDefault();
|
||||
keyResult[e.keyCode](e);
|
||||
}
|
||||
};
|
||||
|
||||
self.keyPrevent = function (e) {
|
||||
|
||||
if (bypass()) return;
|
||||
|
||||
var codes = [32, 38, 40, 37, 39, 81, 77, 65, 84, 83, 70];
|
||||
|
||||
if (codes.indexOf(e.keyCode) != -1) {
|
||||
e.preventDefault();
|
||||
}
|
||||
};
|
||||
|
||||
keyResult[32] = function () { // spacebar
|
||||
|
||||
var player = controller.getCurrentPlayer();
|
||||
|
||||
player.getPlayerState().then(function (result) {
|
||||
|
||||
var state = result;
|
||||
|
||||
if (state.NowPlayingItem && state.PlayState) {
|
||||
if (state.PlayState.IsPaused) {
|
||||
player.unpause();
|
||||
} else {
|
||||
player.pause();
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var bypass = function () {
|
||||
// Get active elem to see what type it is
|
||||
var active = document.activeElement;
|
||||
var type = active.type || active.tagName.toLowerCase();
|
||||
return (type === "text" || type === "select" || type === "textarea" || type == "password");
|
||||
};
|
||||
}
|
||||
|
||||
function mediaController() {
|
||||
|
||||
var self = this;
|
||||
|
@ -274,12 +220,6 @@
|
|||
var currentTargetInfo;
|
||||
var players = [];
|
||||
|
||||
var keys = new bindKeys(self);
|
||||
|
||||
window.addEventListener('keydown', keys.keyBinding);
|
||||
window.addEventListener('keypress', keys.keyPrevent);
|
||||
window.addEventListener('keyup', keys.keyPrevent);
|
||||
|
||||
self.registerPlayer = function (player) {
|
||||
|
||||
players.push(player);
|
||||
|
|
|
@ -27,12 +27,15 @@
|
|||
|
||||
ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) {
|
||||
|
||||
var allowBottomPadding = !enableScrollX();
|
||||
|
||||
var container = page.querySelector('#recentlyAddedItems');
|
||||
cardBuilder.buildCards(items, {
|
||||
itemsContainer: container,
|
||||
shape: getPortraitShape(),
|
||||
scalable: true,
|
||||
overlayPlayButton: true
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: allowBottomPadding
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -65,13 +68,16 @@
|
|||
page.querySelector('#resumableSection').classList.add('hide');
|
||||
}
|
||||
|
||||
var allowBottomPadding = !enableScrollX();
|
||||
|
||||
var container = page.querySelector('#resumableItems');
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: container,
|
||||
preferThumb: true,
|
||||
shape: getThumbShape(),
|
||||
scalable: true,
|
||||
overlayPlayButton: true
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: allowBottomPadding
|
||||
});
|
||||
|
||||
});
|
||||
|
@ -104,7 +110,10 @@
|
|||
html += '<div class="homePageSection">';
|
||||
html += '<h1 class="listHeader">' + title + '</h1>';
|
||||
|
||||
var allowBottomPadding = true;
|
||||
|
||||
if (enableScrollX()) {
|
||||
allowBottomPadding = false;
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">';
|
||||
} else {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
||||
|
@ -113,7 +122,8 @@
|
|||
html += cardBuilder.getCardsHtml(recommendation.Items, {
|
||||
shape: getPortraitShape(),
|
||||
scalable: true,
|
||||
overlayPlayButton: true
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: allowBottomPadding
|
||||
});
|
||||
|
||||
html += '</div>';
|
||||
|
|
|
@ -43,7 +43,8 @@
|
|||
showParentTitle: true,
|
||||
lazy: true,
|
||||
centerText: true,
|
||||
overlayPlayButton: true
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: !enableScrollX()
|
||||
|
||||
});
|
||||
ImageLoader.lazyChildren(elem);
|
||||
|
@ -89,7 +90,8 @@
|
|||
action: 'instantmix',
|
||||
lazy: true,
|
||||
centerText: true,
|
||||
overlayMoreButton: true
|
||||
overlayMoreButton: true,
|
||||
allowBottomPadding: !enableScrollX()
|
||||
|
||||
});
|
||||
ImageLoader.lazyChildren(itemsContainer);
|
||||
|
@ -135,7 +137,8 @@
|
|||
action: 'instantmix',
|
||||
lazy: true,
|
||||
centerText: true,
|
||||
overlayMoreButton: true
|
||||
overlayMoreButton: true,
|
||||
allowBottomPadding: !enableScrollX()
|
||||
|
||||
});
|
||||
ImageLoader.lazyChildren(itemsContainer);
|
||||
|
@ -177,7 +180,8 @@
|
|||
coverImage: true,
|
||||
showItemCounts: true,
|
||||
centerText: true,
|
||||
overlayPlayButton: true
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: !enableScrollX()
|
||||
|
||||
});
|
||||
ImageLoader.lazyChildren(itemsContainer);
|
||||
|
@ -243,10 +247,6 @@
|
|||
return browserInfo.mobile && AppInfo.enableAppLayouts;
|
||||
}
|
||||
|
||||
function getThumbShape() {
|
||||
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
|
||||
}
|
||||
|
||||
self.initTab = function () {
|
||||
|
||||
var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']');
|
||||
|
@ -351,12 +351,6 @@
|
|||
|
||||
var mdlTabs = view.querySelector('.libraryViewNav');
|
||||
|
||||
var baseUrl = 'music.html';
|
||||
var topParentId = params.topParentId;
|
||||
if (topParentId) {
|
||||
baseUrl += '?topParentId=' + topParentId;
|
||||
}
|
||||
|
||||
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 4, 5, 6]);
|
||||
|
||||
mdlTabs.addEventListener('beforetabchange', function (e) {
|
||||
|
|
|
@ -88,6 +88,8 @@
|
|||
view.querySelector('#resumableSection').classList.add('hide');
|
||||
}
|
||||
|
||||
var allowBottomPadding = !enableScrollX();
|
||||
|
||||
var container = view.querySelector('#resumableItems');
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: container,
|
||||
|
@ -98,7 +100,8 @@
|
|||
showParentTitle: true,
|
||||
overlayText: false,
|
||||
centerText: true,
|
||||
overlayPlayButton: true
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: allowBottomPadding
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -101,7 +101,10 @@
|
|||
html += '<div class="homePageSection">';
|
||||
html += '<h1 class="listHeader">' + group.name + '</h1>';
|
||||
|
||||
var allowBottomPadding = true;
|
||||
|
||||
if (enableScrollX()) {
|
||||
allowBottomPadding = false;
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">';
|
||||
} else {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
||||
|
@ -117,7 +120,8 @@
|
|||
showDetailsMenu: true,
|
||||
centerText: true,
|
||||
overlayMoreButton: true,
|
||||
showParentTitle: true
|
||||
showParentTitle: true,
|
||||
allowBottomPadding: allowBottomPadding
|
||||
|
||||
});
|
||||
html += '</div>';
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue