2018-10-23 01:05:09 +03:00
|
|
|
define(["backdrop", "mainTabsManager", "layoutManager", "emby-tabs"], function(backdrop, mainTabsManager, layoutManager) {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
function onViewDestroy(e) {
|
|
|
|
var tabControllers = this.tabControllers;
|
|
|
|
tabControllers && (tabControllers.forEach(function(t) {
|
|
|
|
t.destroy && t.destroy()
|
|
|
|
}), this.tabControllers = null), this.view = null, this.params = null, this.currentTabController = null, this.initialTabIndex = null
|
|
|
|
}
|
|
|
|
|
|
|
|
function onBeforeTabChange() {}
|
|
|
|
|
|
|
|
function TabbedView(view, params) {
|
|
|
|
function validateTabLoad(index) {
|
|
|
|
return self.validateTabLoad ? self.validateTabLoad(index) : Promise.resolve()
|
|
|
|
}
|
|
|
|
|
|
|
|
function loadTab(index, previousIndex) {
|
|
|
|
validateTabLoad(index).then(function() {
|
|
|
|
self.getTabController(index).then(function(controller) {
|
|
|
|
var refresh = !controller.refreshed;
|
|
|
|
controller.onResume({
|
|
|
|
autoFocus: null == previousIndex && layoutManager.tv,
|
|
|
|
refresh: refresh
|
|
|
|
}), controller.refreshed = !0, currentTabIndex = index, self.currentTabController = controller
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function getTabContainers() {
|
|
|
|
return view.querySelectorAll(".tabContent")
|
|
|
|
}
|
|
|
|
|
|
|
|
function onTabChange(e) {
|
|
|
|
var newIndex = parseInt(e.detail.selectedTabIndex),
|
|
|
|
previousIndex = e.detail.previousIndex,
|
|
|
|
previousTabController = null == previousIndex ? null : self.tabControllers[previousIndex];
|
|
|
|
previousTabController && previousTabController.onPause && previousTabController.onPause(), loadTab(newIndex, previousIndex)
|
|
|
|
}
|
|
|
|
this.tabControllers = [], this.view = view, this.params = params;
|
|
|
|
var self = this,
|
|
|
|
currentTabIndex = parseInt(params.tab || this.getDefaultTabIndex(params.parentId));
|
|
|
|
this.initialTabIndex = currentTabIndex, view.addEventListener("viewbeforehide", this.onPause.bind(this)), view.addEventListener("viewbeforeshow", function(e) {
|
|
|
|
mainTabsManager.setTabs(view, currentTabIndex, self.getTabs, getTabContainers, onBeforeTabChange, onTabChange, !1)
|
|
|
|
}), view.addEventListener("viewshow", function(e) {
|
|
|
|
self.onResume(e.detail)
|
|
|
|
}), view.addEventListener("viewdestroy", onViewDestroy.bind(this))
|
|
|
|
}
|
|
|
|
return TabbedView.prototype.onResume = function(options) {
|
|
|
|
this.setTitle(), backdrop.clear();
|
|
|
|
var currentTabController = this.currentTabController;
|
|
|
|
currentTabController ? currentTabController && currentTabController.onResume && currentTabController.onResume({}) : mainTabsManager.selectedTabIndex(this.initialTabIndex)
|
|
|
|
}, TabbedView.prototype.onPause = function() {
|
|
|
|
var currentTabController = this.currentTabController;
|
|
|
|
currentTabController && currentTabController.onPause && currentTabController.onPause()
|
|
|
|
}, TabbedView.prototype.setTitle = function() {
|
|
|
|
Emby.Page.setTitle("")
|
|
|
|
}, TabbedView
|
|
|
|
});
|