diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index fa2c630980..082c27cdd7 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -1,24 +1,5 @@ (function (window, document, $) { - var channelsPromise; - var liveTvInfoPromise; - var itemsPromise; - - function ensurePromises() { - itemsPromise = itemsPromise || ApiClient.getItems(Dashboard.getCurrentUserId(), { - - SortBy: "SortName" - - }); - channelsPromise = channelsPromise || $.getJSON(ApiClient.getUrl("Channels", { - userId: Dashboard.getCurrentUserId(), - - // We just want the total record count - limit: 0 - })); - liveTvInfoPromise = liveTvInfoPromise || ApiClient.getLiveTvInfo(); - } - function renderHeader(page, user) { var html = '
'; @@ -72,63 +53,92 @@ return LibraryBrowser.getHref(item); } - function getViewsHtml(user, channelCount, items, liveTvInfo) { + function getViewsHtml() { var html = ''; - html += items.map(function (i) { + html += '
'; + html += '
'; - var viewMenuCssClass = (i.CollectionType || 'general') + 'ViewMenu'; + html += ''; - return '' + i.Name + ''; + html += ''; - }).join(''); + html += ''; - var showChannels = channelCount; - var showLiveTv = liveTvInfo.EnabledUsers.indexOf(user.Id) != -1; - - if (showChannels || showLiveTv) { - html += '
'; - } - - if (showChannels) { - html += 'Channels'; - } - - if (showLiveTv) { - html += 'Live TV'; - } - - if (user.Configuration.IsAdministrator) { - html += '
'; - html += 'Dashboard'; - html += 'Metadata Manager'; - html += 'Reports'; - } + html += '
'; + html += '
'; + html += 'Dashboard'; + html += 'Metadata Manager'; + html += 'Reports'; + html += '
'; return html; } function showLibraryMenu() { - ensurePromises(); + var userId = Dashboard.getCurrentUserId(); - var userPromise = Dashboard.getCurrentUser(); + ApiClient.getItems(userId, { - $.when(channelsPromise, itemsPromise, liveTvInfoPromise, userPromise).done(function (response1, response2, response3, response4) { + SortBy: "SortName" - var channelCount = response1[0].TotalRecordCount; - var items = response2[0].Items; - var liveTvInfo = response3[0]; - var user = response4[0]; + }).done(function (result) { - var page = $.mobile.activePage; + var items = result.Items; - var panel = getLibraryMenu(user, channelCount, items, liveTvInfo); + var html = items.map(function (i) { - updateLibraryNavLinks(page); + var viewMenuCssClass = (i.CollectionType || 'general') + 'ViewMenu'; - $(panel).panel('toggle'); + return '' + i.Name + ''; + + }).join(''); + + $('.libraryMenuOptions').html(html); + }); + + var page = $.mobile.activePage; + + var panel = getLibraryMenu(); + + updateLibraryNavLinks(page); + + $(panel).panel('toggle'); + + ApiClient.getLiveTvInfo().done(function (liveTvInfo) { + + var showLiveTv = liveTvInfo.EnabledUsers.indexOf(userId) != -1; + + if (showLiveTv) { + $('.liveTvMenuOption').show(); + $('.secondaryDivider').show(); + } + }); + + $.getJSON(ApiClient.getUrl("Channels", { + userId: userId, + + // We just want the total record count + limit: 0 + + })).done(function (response) { + + if (response.TotalRecordCount) { + $('.channelsMenuOption').show(); + $('.secondaryDivider').show(); + } + + }); + + Dashboard.getCurrentUser().done(function (user) { + + if (user.Configuration.IsAdministrator) { + $('.adminMenuOptions').show(); + } else { + $('.adminMenuOptions').hide(); + } }); }