mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge a951434379
into 7d84185d0e
This commit is contained in:
commit
c1e75189ba
1 changed files with 55 additions and 35 deletions
|
@ -20,6 +20,15 @@ import 'elements/emby-itemscontainer/emby-itemscontainer';
|
|||
import 'elements/emby-tabs/emby-tabs';
|
||||
import 'elements/emby-button/emby-button';
|
||||
|
||||
const TAB_INDEX_MAPPING = {
|
||||
[LibraryTab.Movies]: 0,
|
||||
[LibraryTab.Suggestions]: 1,
|
||||
[LibraryTab.Trailers]: 2,
|
||||
[LibraryTab.Favorites]: 3,
|
||||
[LibraryTab.Collections]: 4,
|
||||
[LibraryTab.Genres]: 5
|
||||
};
|
||||
|
||||
function enableScrollX() {
|
||||
return !layoutManager.desktop;
|
||||
}
|
||||
|
@ -96,6 +105,21 @@ function loadResume(page, userId, parentId) {
|
|||
});
|
||||
}
|
||||
|
||||
function enableTrailerTabIfTrailersExist() {
|
||||
const options = {
|
||||
IncludeItemTypes: 'Trailer',
|
||||
Limit: 1,
|
||||
Recursive: true
|
||||
};
|
||||
ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function (result) {
|
||||
if (result.TotalRecordCount) {
|
||||
document.querySelector(
|
||||
`.emby-button[data-index='${TAB_INDEX_MAPPING[LibraryTab.Trailers]}']`
|
||||
)?.classList.remove('hide');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function getRecommendationHtml(recommendation) {
|
||||
let html = '';
|
||||
let title = '';
|
||||
|
@ -232,7 +256,9 @@ function getTabs() {
|
|||
}, {
|
||||
name: globalize.translate('Suggestions')
|
||||
}, {
|
||||
name: globalize.translate('Trailers')
|
||||
name: globalize.translate('Trailers'),
|
||||
// Disable trailers tab by default, we will re-enable if trailers exist
|
||||
enabled: false
|
||||
}, {
|
||||
name: globalize.translate('Favorites')
|
||||
}, {
|
||||
|
@ -243,22 +269,7 @@ function getTabs() {
|
|||
}
|
||||
|
||||
function getDefaultTabIndex(folderId) {
|
||||
switch (userSettings.get('landing-' + folderId)) {
|
||||
case LibraryTab.Suggestions:
|
||||
return 1;
|
||||
|
||||
case LibraryTab.Favorites:
|
||||
return 3;
|
||||
|
||||
case LibraryTab.Collections:
|
||||
return 4;
|
||||
|
||||
case LibraryTab.Genres:
|
||||
return 5;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
return TAB_INDEX_MAPPING[userSettings.get('landing-' + folderId)] ?? 0;
|
||||
}
|
||||
|
||||
export default function (view, params) {
|
||||
|
@ -277,33 +288,35 @@ export default function (view, params) {
|
|||
|
||||
function initTabs() {
|
||||
mainTabsManager.setTabs(view, currentTabIndex, getTabs, getTabContainers, onBeforeTabChange, onTabChange);
|
||||
|
||||
enableTrailerTabIfTrailersExist();
|
||||
}
|
||||
|
||||
const getTabController = (page, index, callback) => {
|
||||
let depends = '';
|
||||
|
||||
switch (index) {
|
||||
case 0:
|
||||
case TAB_INDEX_MAPPING[LibraryTab.Movies]:
|
||||
depends = 'movies';
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case TAB_INDEX_MAPPING[LibraryTab.Suggestions]:
|
||||
depends = 'moviesrecommended.js';
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case TAB_INDEX_MAPPING[LibraryTab.Trailers]:
|
||||
depends = 'movietrailers';
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case TAB_INDEX_MAPPING[LibraryTab.Favorites]:
|
||||
depends = 'movies';
|
||||
break;
|
||||
|
||||
case 4:
|
||||
case TAB_INDEX_MAPPING[LibraryTab.Collections]:
|
||||
depends = 'moviecollections';
|
||||
break;
|
||||
|
||||
case 5:
|
||||
case TAB_INDEX_MAPPING[LibraryTab.Genres]:
|
||||
depends = 'moviegenres';
|
||||
break;
|
||||
}
|
||||
|
@ -311,7 +324,7 @@ export default function (view, params) {
|
|||
import(`../movies/${depends}`).then(({ default: ControllerFactory }) => {
|
||||
let tabContent;
|
||||
|
||||
if (index === suggestionsTabIndex) {
|
||||
if (index === TAB_INDEX_MAPPING[LibraryTab.Suggestions]) {
|
||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||
this.tabContent = tabContent;
|
||||
}
|
||||
|
@ -321,14 +334,22 @@ export default function (view, params) {
|
|||
if (!controller) {
|
||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||
|
||||
if (index === suggestionsTabIndex) {
|
||||
controller = this;
|
||||
} else if (index == 0 || index == 3) {
|
||||
controller = new ControllerFactory(view, params, tabContent, {
|
||||
mode: index ? 'favorites' : 'movies'
|
||||
});
|
||||
} else {
|
||||
controller = new ControllerFactory(view, params, tabContent);
|
||||
switch (index) {
|
||||
case TAB_INDEX_MAPPING[LibraryTab.Suggestions]:
|
||||
controller = this;
|
||||
break;
|
||||
case TAB_INDEX_MAPPING[LibraryTab.Movies]:
|
||||
controller = new ControllerFactory(
|
||||
view, params, tabContent, { mode: 'movies' }
|
||||
);
|
||||
break;
|
||||
case TAB_INDEX_MAPPING[LibraryTab.Favorites]:
|
||||
controller = new ControllerFactory(
|
||||
view, params, tabContent, { mode: 'favorites' }
|
||||
);
|
||||
break;
|
||||
default:
|
||||
controller = new ControllerFactory(view, params, tabContent);
|
||||
}
|
||||
|
||||
tabControllers[index] = controller;
|
||||
|
@ -375,15 +396,14 @@ export default function (view, params) {
|
|||
}
|
||||
|
||||
let currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId), 10);
|
||||
const suggestionsTabIndex = 1;
|
||||
|
||||
this.initTab = function () {
|
||||
const tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
|
||||
const tabContent = view.querySelector(".pageTabContent[data-index='" + TAB_INDEX_MAPPING[LibraryTab.Suggestions] + "']");
|
||||
initSuggestedTab(view, tabContent);
|
||||
};
|
||||
|
||||
this.renderTab = function () {
|
||||
const tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
|
||||
const tabContent = view.querySelector(".pageTabContent[data-index='" + TAB_INDEX_MAPPING[LibraryTab.Suggestions] + "']");
|
||||
loadSuggestionsTab(view, params, tabContent);
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue