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-tabs/emby-tabs';
|
||||||
import 'elements/emby-button/emby-button';
|
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() {
|
function enableScrollX() {
|
||||||
return !layoutManager.desktop;
|
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) {
|
function getRecommendationHtml(recommendation) {
|
||||||
let html = '';
|
let html = '';
|
||||||
let title = '';
|
let title = '';
|
||||||
|
@ -232,7 +256,9 @@ function getTabs() {
|
||||||
}, {
|
}, {
|
||||||
name: globalize.translate('Suggestions')
|
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')
|
name: globalize.translate('Favorites')
|
||||||
}, {
|
}, {
|
||||||
|
@ -243,22 +269,7 @@ function getTabs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDefaultTabIndex(folderId) {
|
function getDefaultTabIndex(folderId) {
|
||||||
switch (userSettings.get('landing-' + folderId)) {
|
return TAB_INDEX_MAPPING[userSettings.get('landing-' + folderId)] ?? 0;
|
||||||
case LibraryTab.Suggestions:
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
case LibraryTab.Favorites:
|
|
||||||
return 3;
|
|
||||||
|
|
||||||
case LibraryTab.Collections:
|
|
||||||
return 4;
|
|
||||||
|
|
||||||
case LibraryTab.Genres:
|
|
||||||
return 5;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function (view, params) {
|
export default function (view, params) {
|
||||||
|
@ -277,33 +288,35 @@ export default function (view, params) {
|
||||||
|
|
||||||
function initTabs() {
|
function initTabs() {
|
||||||
mainTabsManager.setTabs(view, currentTabIndex, getTabs, getTabContainers, onBeforeTabChange, onTabChange);
|
mainTabsManager.setTabs(view, currentTabIndex, getTabs, getTabContainers, onBeforeTabChange, onTabChange);
|
||||||
|
|
||||||
|
enableTrailerTabIfTrailersExist();
|
||||||
}
|
}
|
||||||
|
|
||||||
const getTabController = (page, index, callback) => {
|
const getTabController = (page, index, callback) => {
|
||||||
let depends = '';
|
let depends = '';
|
||||||
|
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0:
|
case TAB_INDEX_MAPPING[LibraryTab.Movies]:
|
||||||
depends = 'movies';
|
depends = 'movies';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case TAB_INDEX_MAPPING[LibraryTab.Suggestions]:
|
||||||
depends = 'moviesrecommended.js';
|
depends = 'moviesrecommended.js';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case TAB_INDEX_MAPPING[LibraryTab.Trailers]:
|
||||||
depends = 'movietrailers';
|
depends = 'movietrailers';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case TAB_INDEX_MAPPING[LibraryTab.Favorites]:
|
||||||
depends = 'movies';
|
depends = 'movies';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case TAB_INDEX_MAPPING[LibraryTab.Collections]:
|
||||||
depends = 'moviecollections';
|
depends = 'moviecollections';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case TAB_INDEX_MAPPING[LibraryTab.Genres]:
|
||||||
depends = 'moviegenres';
|
depends = 'moviegenres';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -311,7 +324,7 @@ export default function (view, params) {
|
||||||
import(`../movies/${depends}`).then(({ default: ControllerFactory }) => {
|
import(`../movies/${depends}`).then(({ default: ControllerFactory }) => {
|
||||||
let tabContent;
|
let tabContent;
|
||||||
|
|
||||||
if (index === suggestionsTabIndex) {
|
if (index === TAB_INDEX_MAPPING[LibraryTab.Suggestions]) {
|
||||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||||
this.tabContent = tabContent;
|
this.tabContent = tabContent;
|
||||||
}
|
}
|
||||||
|
@ -321,14 +334,22 @@ export default function (view, params) {
|
||||||
if (!controller) {
|
if (!controller) {
|
||||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||||
|
|
||||||
if (index === suggestionsTabIndex) {
|
switch (index) {
|
||||||
controller = this;
|
case TAB_INDEX_MAPPING[LibraryTab.Suggestions]:
|
||||||
} else if (index == 0 || index == 3) {
|
controller = this;
|
||||||
controller = new ControllerFactory(view, params, tabContent, {
|
break;
|
||||||
mode: index ? 'favorites' : 'movies'
|
case TAB_INDEX_MAPPING[LibraryTab.Movies]:
|
||||||
});
|
controller = new ControllerFactory(
|
||||||
} else {
|
view, params, tabContent, { mode: 'movies' }
|
||||||
controller = new ControllerFactory(view, params, tabContent);
|
);
|
||||||
|
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;
|
tabControllers[index] = controller;
|
||||||
|
@ -375,15 +396,14 @@ export default function (view, params) {
|
||||||
}
|
}
|
||||||
|
|
||||||
let currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId), 10);
|
let currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId), 10);
|
||||||
const suggestionsTabIndex = 1;
|
|
||||||
|
|
||||||
this.initTab = function () {
|
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);
|
initSuggestedTab(view, tabContent);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.renderTab = function () {
|
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);
|
loadSuggestionsTab(view, params, tabContent);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue