diff --git a/dashboard-ui/components/favoriteitems.js b/dashboard-ui/components/favoriteitems.js
new file mode 100644
index 0000000000..9a0266fa35
--- /dev/null
+++ b/dashboard-ui/components/favoriteitems.js
@@ -0,0 +1,173 @@
+define(['libraryBrowser'], function (libraryBrowser) {
+
+ function enableScrollX() {
+ return browserInfo.mobile && AppInfo.enableAppLayouts;
+ }
+
+ function getThumbShape() {
+ return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
+ }
+
+ function getPosterShape() {
+ return enableScrollX() ? 'overflowPortrait' : 'portrait';
+ }
+
+ function getSquareShape() {
+ return enableScrollX() ? 'overflowSquare' : 'square';
+ }
+
+ function getSections() {
+
+ return [
+ { name: 'HeaderFavoriteMovies', types: "Movie", id: "favoriteMovies", shape: getPosterShape(), showTitle: false, overlayPlayButton: true },
+ { name: 'HeaderFavoriteShows', types: "Series", id: "favoriteShows", shape: getPosterShape(), showTitle: false, overlayPlayButton: true },
+ { name: 'HeaderFavoriteEpisodes', types: "Episode", id: "favoriteEpisode", shape: getThumbShape(), preferThumb: false, showTitle: true, showParentTitle: true, overlayPlayButton: true },
+ { name: 'HeaderFavoriteGames', types: "Game", id: "favoriteGames", shape: getSquareShape(), preferThumb: false, showTitle: true },
+ { name: 'HeaderFavoriteArtists', types: "MusicArtist", id: "favoriteArtists", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayPlayButton: true },
+ { name: 'HeaderFavoriteAlbums', types: "MusicAlbum", id: "favoriteAlbums", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayPlayButton: true },
+ { name: 'HeaderFavoriteSongs', types: "Audio", id: "favoriteSongs", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayMoreButton: true, defaultAction: 'instantmix' }
+ ];
+ }
+
+ function loadSection(elem, userId, topParentId, section, isSingleSection) {
+
+ var screenWidth = window.innerWidth;
+
var options = {
+
+ SortBy: "SortName",
+ SortOrder: "Ascending",
+ Filters: "IsFavorite",
+ Recursive: true,
+ Fields: "PrimaryImageAspectRatio,SyncInfo",
+ CollapseBoxSetItems: false,
+ ExcludeLocationTypes: "Virtual"
+ };
+
+ if (topParentId) {
+ options.ParentId = topParentId;
+ }
+
+ if (!isSingleSection) {
+ options.Limit = screenWidth >= 1920 ? 10 : (screenWidth >= 1440 ? 8 : 6);
+
+ if (enableScrollX()) {
+ options.Limit = 16;
+ }
+ }
+
+ var promise;
+ if (section.types == 'MusicArtist') {
+ promise = ApiClient.getArtists(userId, options);
+ } else {
+
+ options.IncludeItemTypes = section.types;
+ promise = ApiClient.getItems(userId, options);
+ }
+
+ return promise.then(function (result) {
+
+ var html = '';
+
+ if (result.Items.length) {
+
+ html += '
';
+ } else {
+ html += '
';
+ }
+
+ html += libraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ preferThumb: section.preferThumb,
+ shape: section.shape,
+ overlayText: section.overlayText !== false,
+ showTitle: section.showTitle,
+ showParentTitle: section.showParentTitle,
+ lazy: true,
+ showDetailsMenu: true,
+ centerText: section.centerText,
+ overlayPlayButton: section.overlayPlayButton,
+ overlayMoreButton: section.overlayMoreButton,
+ context: 'home-favorites',
+ defaultAction: section.defaultAction
+ });
+
+ html += '
';
+ }
+
+ elem.innerHTML = html;
+ ImageLoader.lazyChildren(elem);
+ libraryBrowser.createCardMenus(elem);
+ });
+ }
+
+ function loadSections(page, userId, topParentId, types) {
+
+ Dashboard.showLoadingMsg();
+
+ var sections = getSections();
+
+ var sectionid = getParameterByName('sectionid');
+
+ if (sectionid) {
+ sections = sections.filter(function (s) {
+
+ return s.id == sectionid;
+ });
+ }
+
+ if (types) {
+ sections = sections.filter(function (s) {
+
+ return types.indexOf(s.id) != -1;
+ });
+ }
+
+ var i, length;
+
+ var elem = page.querySelector('.favoriteSections');
+
+ if (!elem.innerHTML) {
+ var html = '';
+ for (i = 0, length = sections.length; i < length; i++) {
+
+ html += '
';
+ }
+
+ elem.innerHTML = html;
+ }
+
+ var promises = [];
+
+ for (i = 0, length = sections.length; i < length; i++) {
+
+ var section = sections[i];
+
+ elem = page.querySelector('.section' + section.id);
+
+ promises.push(loadSection(elem, userId, topParentId, section, sections.length == 1));
+ }
+
+ Promise.all(promises).then(function () {
+ Dashboard.hideLoadingMsg();
+
+ libraryBrowser.setLastRefreshed(page);
+ });
+ }
+
+ return {
+ render: loadSections
+ };
+
+});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/favorites.js b/dashboard-ui/scripts/favorites.js
index 96102590a5..78e4216ba6 100644
--- a/dashboard-ui/scripts/favorites.js
+++ b/dashboard-ui/scripts/favorites.js
@@ -1,197 +1,19 @@
-define(['libraryBrowser'], function (libraryBrowser) {
+define(['components/favoriteitems'], function (favoriteItems) {
- function enableScrollX() {
- return browserInfo.mobile && AppInfo.enableAppLayouts;
- }
+ return function (view, params) {
- function getThumbShape() {
- return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
- }
+ var self = this;
- function getPosterShape() {
- return enableScrollX() ? 'overflowPortrait' : 'portrait';
- }
+ view.addEventListener('viewshow', function (e) {
+
+ var isRestored = e.detail.isRestored;
- function getSquareShape() {
- return enableScrollX() ? 'overflowSquare' : 'square';
- }
+ if (!isRestored) {
- function getSections() {
-
- return [
- { name: 'HeaderFavoriteMovies', types: "Movie", id: "favoriteMovies", shape: getPosterShape(), showTitle: false, overlayPlayButton: true },
- { name: 'HeaderFavoriteShows', types: "Series", id: "favoriteShows", shape: getPosterShape(), showTitle: false, overlayPlayButton: true },
- { name: 'HeaderFavoriteEpisodes', types: "Episode", id: "favoriteEpisode", shape: getThumbShape(), preferThumb: false, showTitle: true, showParentTitle: true, overlayPlayButton: true },
- { name: 'HeaderFavoriteGames', types: "Game", id: "favoriteGames", shape: getSquareShape(), preferThumb: false, showTitle: true },
- { name: 'HeaderFavoriteArtists', types: "MusicArtist", id: "favoriteArtists", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayPlayButton: true },
- { name: 'HeaderFavoriteAlbums', types: "MusicAlbum", id: "favoriteAlbums", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayPlayButton: true },
- { name: 'HeaderFavoriteSongs', types: "Audio", id: "favoriteSongs", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayMoreButton: true, defaultAction: 'instantmix' }
- ];
- }
-
- function loadSection(elem, userId, topParentId, section, isSingleSection) {
-
- var screenWidth = window.innerWidth;
-
var options = {
-
- SortBy: "SortName",
- SortOrder: "Ascending",
- Filters: "IsFavorite",
- Recursive: true,
- Fields: "PrimaryImageAspectRatio,SyncInfo",
- CollapseBoxSetItems: false,
- ExcludeLocationTypes: "Virtual"
- };
-
- if (topParentId) {
- options.ParentId = topParentId;
- }
-
- if (!isSingleSection) {
- options.Limit = screenWidth >= 1920 ? 10 : (screenWidth >= 1440 ? 8 : 6);
-
- if (enableScrollX()) {
- options.Limit = 16;
+ var parentId = null;
+ favoriteItems.render(view, Dashboard.getCurrentUserId(), parentId);
}
- }
-
- var promise;
- if (section.types == 'MusicArtist') {
- promise = ApiClient.getArtists(userId, options);
- } else {
-
- options.IncludeItemTypes = section.types;
- promise = ApiClient.getItems(userId, options);
- }
-
- return promise.then(function (result) {
-
- var html = '';
-
- if (result.Items.length) {
-
- html += '
';
- html += '';
-
- if (result.TotalRecordCount > result.Items.length) {
- var href = "secondaryitems.html?type=" + section.types + "&filters=IsFavorite&titlekey=" + section.name;
-
- html += '
' + Globalize.translate('ButtonMore') + '';
- }
-
- html += '
';
-
- if (enableScrollX()) {
- html += '
';
- } else {
- html += '
';
- }
-
- html += libraryBrowser.getPosterViewHtml({
- items: result.Items,
- preferThumb: section.preferThumb,
- shape: section.shape,
- overlayText: section.overlayText !== false,
- showTitle: section.showTitle,
- showParentTitle: section.showParentTitle,
- lazy: true,
- showDetailsMenu: true,
- centerText: section.centerText,
- overlayPlayButton: section.overlayPlayButton,
- overlayMoreButton: section.overlayMoreButton,
- context: 'home-favorites',
- defaultAction: section.defaultAction
- });
-
- html += '
';
- }
-
- elem.innerHTML = html;
- ImageLoader.lazyChildren(elem);
- libraryBrowser.createCardMenus(elem);
});
- }
-
- function loadSections(page, userId, topParentId, types) {
-
- Dashboard.showLoadingMsg();
-
- var sections = getSections();
-
- var sectionid = getParameterByName('sectionid');
-
- if (sectionid) {
- sections = sections.filter(function (s) {
-
- return s.id == sectionid;
- });
- }
-
- if (types) {
- sections = sections.filter(function (s) {
-
- return types.indexOf(s.id) != -1;
- });
- }
-
- var i, length;
-
- var elem = page.querySelector('.favoriteSections');
-
- if (!elem.innerHTML) {
- var html = '';
- for (i = 0, length = sections.length; i < length; i++) {
-
- html += '
';
- }
-
- elem.innerHTML = html;
- }
-
- var promises = [];
-
- for (i = 0, length = sections.length; i < length; i++) {
-
- var section = sections[i];
-
- elem = page.querySelector('.section' + section.id);
-
- promises.push(loadSection(elem, userId, topParentId, section, sections.length == 1));
- }
-
- Promise.all(promises).then(function () {
- Dashboard.hideLoadingMsg();
-
- libraryBrowser.setLastRefreshed(page);
- });
- }
-
- function initHomePage() {
-
- if (window.HomePage) {
- window.HomePage.renderFavorites = function (page, tabContent) {
- if (libraryBrowser.needsRefresh(tabContent)) {
- loadSections(tabContent, Dashboard.getCurrentUserId());
- }
- };
- }
- }
-
- initHomePage();
-
- pageIdOn('pageinit', "indexPage", initHomePage);
-
- pageIdOn('pagebeforeshow', "favoritesPage", function () {
-
- var page = this;
-
- if (libraryBrowser.needsRefresh(page)) {
- loadSections(page, Dashboard.getCurrentUserId());
- }
- });
-
- window.FavoriteItems = {
- render: loadSections
};
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/homefavorites.js b/dashboard-ui/scripts/homefavorites.js
new file mode 100644
index 0000000000..85b14599dd
--- /dev/null
+++ b/dashboard-ui/scripts/homefavorites.js
@@ -0,0 +1,14 @@
+define(['components/favoriteitems'], function (favoriteItems) {
+
+ return function (view, params, tabContent) {
+
+ var self = this;
+
+ self.renderTab = function () {
+
+ var parentId = null;
+ favoriteItems.render(tabContent, Dashboard.getCurrentUserId(), parentId);
+ };
+ };
+
+});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/homenextup.js b/dashboard-ui/scripts/homenextup.js
index 104c89848e..ae7a38e4e6 100644
--- a/dashboard-ui/scripts/homenextup.js
+++ b/dashboard-ui/scripts/homenextup.js
@@ -1,64 +1,65 @@
-define(['jQuery'], function ($) {
-
- function reload(page) {
-
- Dashboard.showLoadingMsg();
-
- loadNextUp(page, 'home-nextup');
+define(['jQuery'], function ($) {
+
+ function reload(page) {
+
+ Dashboard.showLoadingMsg();
+
+ loadNextUp(page, 'home-nextup');
+ }
+
+ function loadNextUp(page) {
+
+ var limit = AppInfo.hasLowImageBandwidth ?
+ 16 :
+ 24;
+
+ var query = {
+
+ Limit: limit,
+ Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,SyncInfo",
+ UserId: Dashboard.getCurrentUserId(),
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
+ };
+
+ ApiClient.getNextUpEpisodes(query).then(function (result) {
+
+ if (result.Items.length) {
+ page.querySelector('.noNextUpItems').classList.add('hide');
+ } else {
+ page.querySelector('.noNextUpItems').classList.remove('hide');
+ }
+
+ var html = '';
+
+ html += LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "backdrop",
+ showTitle: true,
+ showParentTitle: true,
+ overlayText: false,
+ lazy: true,
+ preferThumb: true,
+ showDetailsMenu: true,
+ centerText: true,
+ overlayPlayButton: AppInfo.enableAppLayouts,
+ context: 'home-nextup'
+ });
+
+ var elem = page.querySelector('#nextUpItems');
+ elem.innerHTML = html;
+ ImageLoader.lazyChildren(elem);
+ Dashboard.hideLoadingMsg();
+ });
}
-
- function loadNextUp(page) {
-
- var limit = AppInfo.hasLowImageBandwidth ?
- 16 :
- 24;
-
- var query = {
-
- Limit: limit,
- Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,SyncInfo",
- UserId: Dashboard.getCurrentUserId(),
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
- };
-
- ApiClient.getNextUpEpisodes(query).then(function (result) {
-
- if (result.Items.length) {
- page.querySelector('.noNextUpItems').classList.add('hide');
- } else {
- page.querySelector('.noNextUpItems').classList.remove('hide');
- }
-
- var html = '';
-
- html += LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "backdrop",
- showTitle: true,
- showParentTitle: true,
- overlayText: false,
- lazy: true,
- preferThumb: true,
- showDetailsMenu: true,
- centerText: true,
- overlayPlayButton: AppInfo.enableAppLayouts,
- context: 'home-nextup'
- });
-
- var elem = page.querySelector('#nextUpItems');
- elem.innerHTML = html;
- ImageLoader.lazyChildren(elem);
- Dashboard.hideLoadingMsg();
-
- LibraryBrowser.setLastRefreshed(page);
- });
- }
-
- window.HomePage.renderNextUp = function (page, tabContent) {
- if (LibraryBrowser.needsRefresh(tabContent)) {
- reload(tabContent);
- }
- };
-
+
return function (view, params, tabContent) {
+
+ var self = this;
+
+ self.renderTab = function () {
+
+ reload(tabContent);
+ };
+ };
+
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/homeupcoming.js b/dashboard-ui/scripts/homeupcoming.js
index 57f43af530..65a7b880d4 100644
--- a/dashboard-ui/scripts/homeupcoming.js
+++ b/dashboard-ui/scripts/homeupcoming.js
@@ -1,130 +1,131 @@
-define(['jQuery'], function ($) {
-
- function loadUpcoming(page) {
- Dashboard.showLoadingMsg();
-
- var limit = AppInfo.hasLowImageBandwidth && !enableScrollX() ?
- 24 :
- 40;
-
- var query = {
-
- Limit: limit,
- Fields: "AirTime,UserData,SeriesStudio,SyncInfo",
- UserId: Dashboard.getCurrentUserId(),
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
- };
-
- ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query)).then(function (result) {
-
- var items = result.Items;
-
- if (items.length) {
- page.querySelector('.noItemsMessage').style.display = 'none';
- } else {
- page.querySelector('.noItemsMessage').style.display = 'block';
- }
-
- var elem = page.querySelector('#upcomingItems');
- renderUpcoming(elem, items);
-
- Dashboard.hideLoadingMsg();
-
- LibraryBrowser.setLastRefreshed(page);
- });
+define(['jQuery'], function ($) {
+
+ function loadUpcoming(page) {
+ Dashboard.showLoadingMsg();
+
+ var limit = AppInfo.hasLowImageBandwidth && !enableScrollX() ?
+ 24 :
+ 40;
+
+ var query = {
+
+ Limit: limit,
+ Fields: "AirTime,UserData,SeriesStudio,SyncInfo",
+ UserId: Dashboard.getCurrentUserId(),
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
+ };
+
+ ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query)).then(function (result) {
+
+ var items = result.Items;
+
+ if (items.length) {
+ page.querySelector('.noItemsMessage').style.display = 'none';
+ } else {
+ page.querySelector('.noItemsMessage').style.display = 'block';
+ }
+
+ var elem = page.querySelector('#upcomingItems');
+ renderUpcoming(elem, items);
+
+ Dashboard.hideLoadingMsg();
+ });
+ }
+
+ function enableScrollX() {
+ return browserInfo.mobile && AppInfo.enableAppLayouts;
+ }
+
+ function getThumbShape() {
+ return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
+ }
+
+ function renderUpcoming(elem, items) {
+
+ var groups = [];
+
+ var currentGroupName = '';
+ var currentGroup = [];
+
+ var i, length;
+
+ for (i = 0, length = items.length; i < length; i++) {
+
+ var item = items[i];
+
+ var dateText = '';
+
+ if (item.PremiereDate) {
+ try {
+
+ dateText = LibraryBrowser.getFutureDateText(parseISO8601Date(item.PremiereDate, { toLocal: true }), true);
+
+ } catch (err) {
+ }
+ }
+
+ if (dateText != currentGroupName) {
+
+ if (currentGroup.length) {
+ groups.push({
+ name: currentGroupName,
+ items: currentGroup
+ });
+ }
+
+ currentGroupName = dateText;
+ currentGroup = [item];
+ } else {
+ currentGroup.push(item);
+ }
+ }
+
+ var html = '';
+
+ for (i = 0, length = groups.length; i < length; i++) {
+
+ var group = groups[i];
+
+ html += '
';
+ html += '';
+
+ if (enableScrollX()) {
+ html += '
';
+ }
+
+ elem.innerHTML = html;
+ ImageLoader.lazyChildren(elem);
}
-
- function enableScrollX() {
- return browserInfo.mobile && AppInfo.enableAppLayouts;
- }
-
- function getThumbShape() {
- return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
- }
-
- function renderUpcoming(elem, items) {
-
- var groups = [];
-
- var currentGroupName = '';
- var currentGroup = [];
-
- var i, length;
-
- for (i = 0, length = items.length; i < length; i++) {
-
- var item = items[i];
-
- var dateText = '';
-
- if (item.PremiereDate) {
- try {
-
- dateText = LibraryBrowser.getFutureDateText(parseISO8601Date(item.PremiereDate, { toLocal: true }), true);
-
- } catch (err) {
- }
- }
-
- if (dateText != currentGroupName) {
-
- if (currentGroup.length) {
- groups.push({
- name: currentGroupName,
- items: currentGroup
- });
- }
-
- currentGroupName = dateText;
- currentGroup = [item];
- } else {
- currentGroup.push(item);
- }
- }
-
- var html = '';
-
- for (i = 0, length = groups.length; i < length; i++) {
-
- var group = groups[i];
-
- html += '
';
- html += '';
-
- if (enableScrollX()) {
- html += '
';
- }
-
- elem.innerHTML = html;
- ImageLoader.lazyChildren(elem);
- }
-
- window.HomePage.renderUpcoming = function (page, tabContent) {
- if (LibraryBrowser.needsRefresh(tabContent)) {
- loadUpcoming(tabContent);
- }
- };
-
+
return function (view, params, tabContent) {
+
+ var self = this;
+
+ self.renderTab = function () {
+
+ loadUpcoming(tabContent);
+ };
+ };
+
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/indexpage.js b/dashboard-ui/scripts/indexpage.js
index f63f1ca5df..61db7fe1da 100644
--- a/dashboard-ui/scripts/indexpage.js
+++ b/dashboard-ui/scripts/indexpage.js
@@ -237,41 +237,6 @@
}
}
- function loadTab(page, index) {
-
- var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']');
- var depends = [];
- var scope = 'HomePage';
- var method = '';
-
- switch (index) {
-
- case 0:
- depends.push('scripts/sections');
- method = 'renderHomeTab';
- break;
- case 1:
- depends.push('scripts/homenextup');
- method = 'renderNextUp';
- break;
- case 2:
- depends.push('scripts/favorites');
- method = 'renderFavorites';
- break;
- case 3:
- depends.push('scripts/homeupcoming');
- method = 'renderUpcoming';
- break;
- default:
- return;
- break;
- }
-
- require(depends, function () {
- window[scope][method](page, tabContent);
- });
- }
-
function onPlaybackStop(e, state) {
if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') {
@@ -291,18 +256,68 @@
return ApiClient.getDisplayPreferences(key, userId, displayPreferencesKey());
}
- window.HomePage = {
- renderHomeTab: loadHomeTab
- };
-
return function (view, params) {
var self = this;
+ self.renderTab = function () {
+ var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']');
+ loadHomeTab(view, tabContent);
+ };
+
var pageTabsContainer = view.querySelector('.pageTabsContainer');
libraryBrowser.configurePaperLibraryTabs(view, view.querySelector('paper-tabs'), pageTabsContainer, 'home.html');
+ var tabControllers = [];
+ var renderedTabs = [];
+
+ function loadTab(page, index) {
+
+ var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']');
+ var depends = [];
+
+ switch (index) {
+
+ case 0:
+ depends.push('scripts/sections');
+ break;
+ case 1:
+ depends.push('scripts/homenextup');
+ break;
+ case 2:
+ depends.push('scripts/homefavorites');
+ break;
+ case 3:
+ depends.push('scripts/homeupcoming');
+ break;
+ default:
+ return;
+ break;
+ }
+
+ require(depends, function (controllerFactory) {
+
+ if (index == 0) {
+ self.tabContent = tabContent;
+ }
+ var controller = tabControllers[index];
+ if (!controller) {
+ controller = index ? new controllerFactory(view, params, tabContent) : self;
+ tabControllers[index] = controller;
+
+ if (controller.initTab) {
+ controller.initTab();
+ }
+ }
+
+ if (renderedTabs.indexOf(index) == -1) {
+ renderedTabs.push(index);
+ controller.renderTab();
+ }
+ });
+ }
+
pageTabsContainer.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex));
});
diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js
index 01b3b61783..05d9433356 100644
--- a/dashboard-ui/scripts/librarymenu.js
+++ b/dashboard-ui/scripts/librarymenu.js
@@ -331,6 +331,8 @@
var html = '';
+ html += '
';
+
var homeHref = window.ApiClient ? 'home.html' : 'selectserver.html?showuser=1';
html += '