diff --git a/dashboard-ui/photos.html b/dashboard-ui/photos.html index 7a03a2f1cc..f93be3238b 100644 --- a/dashboard-ui/photos.html +++ b/dashboard-ui/photos.html @@ -1,42 +1,10 @@ -
- -
- - ${TabAlbums} - ${TabPhotos} - ${TabVideos} - - -
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file diff --git a/dashboard-ui/scripts/itemlistpage.js b/dashboard-ui/scripts/itemlistpage.js index 7275ac1108..73f35bfae5 100644 --- a/dashboard-ui/scripts/itemlistpage.js +++ b/dashboard-ui/scripts/itemlistpage.js @@ -12,7 +12,7 @@ if (!pageData) { pageData = data = { query: { - SortBy: "SortName", + SortBy: "IsFolder,SortName", SortOrder: "Ascending", Fields: "DateCreated,PrimaryImageAspectRatio,MediaSourceCount,SyncInfo", ImageTypeLimit: 1, @@ -40,7 +40,7 @@ function getSavedQueryKey() { if (!view.savedQueryKey) { - view.savedQueryKey = libraryBrowser.getSavedQueryKey('items'); + view.savedQueryKey = libraryBrowser.getSavedQueryKey('itemsv1'); } return view.savedQueryKey; } diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 9fc341cd6a..23dd2d2e41 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -1877,418 +1877,6 @@ options.squareSize = squareSize; }, - setPosterViewDataOnItems: function (options, items) { - - LibraryBrowser.setPosterViewData(options); - - options.shape = options.shape || "portrait"; - - var html = ""; - - var primaryImageAspectRatio; - var thumbWidth = options.thumbWidth; - var posterWidth = options.posterWidth; - var squareSize = options.squareSize; - var bannerWidth = options.bannerWidth; - - var uiAspect = options.uiAspect; - - for (var i = 0, length = items.length; i < length; i++) { - - var item = items[i]; - - primaryImageAspectRatio = LibraryBrowser.getAveragePrimaryImageAspectRatio([item]); - - LibraryBrowser.setPosterViewDataOnItem(item, i, options, primaryImageAspectRatio, thumbWidth, posterWidth, squareSize, bannerWidth, uiAspect); - } - - return html; - }, - - setPosterViewDataOnItem: function (item, index, options, primaryImageAspectRatio, thumbWidth, posterWidth, squareSize, bannerWidth, uiAspect) { - - var imgUrl = null; - var icon; - var width = null; - var height = null; - - var forceName = false; - - var enableImageEnhancers = options.enableImageEnhancers !== false; - - var cssClass = "card"; - - if (options.fullWidthOnMobile) { - cssClass += " fullWidthCardOnMobile"; - } - - var showTitle = options.showTitle == 'auto' ? true : options.showTitle; - var coverImage = options.coverImage; - - if (options.autoThumb && item.ImageTags && item.ImageTags.Primary && item.PrimaryImageAspectRatio && item.PrimaryImageAspectRatio >= 1.34) { - - width = posterWidth; - height = primaryImageAspectRatio ? Math.round(posterWidth / primaryImageAspectRatio) : null; - - imgUrl = ApiClient.getImageUrl(item.Id, { - type: "Primary", - maxHeight: height, - maxWidth: width, - tag: item.ImageTags.Primary, - enableImageEnhancers: enableImageEnhancers - }); - - if (primaryImageAspectRatio) { - if (uiAspect) { - if (Math.abs(primaryImageAspectRatio - uiAspect) <= .2) { - coverImage = true; - } - } - } - - } else if (options.autoThumb && item.ImageTags && item.ImageTags.Thumb) { - - imgUrl = ApiClient.getScaledImageUrl(item.Id, { - type: "Thumb", - maxWidth: thumbWidth, - tag: item.ImageTags.Thumb, - enableImageEnhancers: enableImageEnhancers - }); - - } else if (options.preferBackdrop && item.BackdropImageTags && item.BackdropImageTags.length) { - - imgUrl = ApiClient.getScaledImageUrl(item.Id, { - type: "Backdrop", - maxWidth: thumbWidth, - tag: item.BackdropImageTags[0], - enableImageEnhancers: enableImageEnhancers - }); - - } else if (options.preferThumb && item.ImageTags && item.ImageTags.Thumb) { - - imgUrl = ApiClient.getScaledImageUrl(item.Id, { - type: "Thumb", - maxWidth: thumbWidth, - tag: item.ImageTags.Thumb, - enableImageEnhancers: enableImageEnhancers - }); - - } else if (options.preferBanner && item.ImageTags && item.ImageTags.Banner) { - - imgUrl = ApiClient.getScaledImageUrl(item.Id, { - type: "Banner", - maxWidth: bannerWidth, - tag: item.ImageTags.Banner, - enableImageEnhancers: enableImageEnhancers - }); - - } else if (options.preferThumb && item.SeriesThumbImageTag && options.inheritThumb !== false) { - - imgUrl = ApiClient.getScaledImageUrl(item.SeriesId, { - type: "Thumb", - maxWidth: thumbWidth, - tag: item.SeriesThumbImageTag, - enableImageEnhancers: enableImageEnhancers - }); - - } else if (options.preferThumb && item.ParentThumbItemId && options.inheritThumb !== false) { - - imgUrl = ApiClient.getThumbImageUrl(item.ParentThumbItemId, { - type: "Thumb", - maxWidth: thumbWidth, - enableImageEnhancers: enableImageEnhancers - }); - - } else if (options.preferThumb && item.BackdropImageTags && item.BackdropImageTags.length) { - - imgUrl = ApiClient.getScaledImageUrl(item.Id, { - type: "Backdrop", - maxWidth: thumbWidth, - tag: item.BackdropImageTags[0], - enableImageEnhancers: enableImageEnhancers - }); - - forceName = true; - - } else if (item.ImageTags && item.ImageTags.Primary) { - - width = posterWidth; - height = primaryImageAspectRatio ? Math.round(posterWidth / primaryImageAspectRatio) : null; - - imgUrl = ApiClient.getImageUrl(item.Id, { - type: "Primary", - maxHeight: height, - maxWidth: width, - tag: item.ImageTags.Primary, - enableImageEnhancers: enableImageEnhancers - }); - - if (primaryImageAspectRatio) { - if (uiAspect) { - if (Math.abs(primaryImageAspectRatio - uiAspect) <= .2) { - coverImage = true; - } - } - } - } - else if (item.ParentPrimaryImageTag) { - - imgUrl = ApiClient.getImageUrl(item.ParentPrimaryImageItemId, { - type: "Primary", - maxWidth: posterWidth, - tag: item.ParentPrimaryImageTag, - enableImageEnhancers: enableImageEnhancers - }); - } - else if (item.AlbumId && item.AlbumPrimaryImageTag) { - - height = squareSize; - width = primaryImageAspectRatio ? Math.round(height * primaryImageAspectRatio) : null; - - imgUrl = ApiClient.getScaledImageUrl(item.AlbumId, { - type: "Primary", - maxHeight: height, - maxWidth: width, - tag: item.AlbumPrimaryImageTag, - enableImageEnhancers: enableImageEnhancers - }); - - if (primaryImageAspectRatio) { - if (uiAspect) { - if (Math.abs(primaryImageAspectRatio - uiAspect) <= .2) { - coverImage = true; - } - } - } - } - else if (item.Type == 'Season' && item.ImageTags && item.ImageTags.Thumb) { - - imgUrl = ApiClient.getScaledImageUrl(item.Id, { - type: "Thumb", - maxWidth: thumbWidth, - tag: item.ImageTags.Thumb, - enableImageEnhancers: enableImageEnhancers - }); - - } - else if (item.BackdropImageTags && item.BackdropImageTags.length) { - - imgUrl = ApiClient.getScaledImageUrl(item.Id, { - type: "Backdrop", - maxWidth: thumbWidth, - tag: item.BackdropImageTags[0], - enableImageEnhancers: enableImageEnhancers - }); - - } else if (item.ImageTags && item.ImageTags.Thumb) { - - imgUrl = ApiClient.getScaledImageUrl(item.Id, { - type: "Thumb", - maxWidth: thumbWidth, - tag: item.ImageTags.Thumb, - enableImageEnhancers: enableImageEnhancers - }); - - } else if (item.SeriesThumbImageTag) { - - imgUrl = ApiClient.getScaledImageUrl(item.SeriesId, { - type: "Thumb", - maxWidth: thumbWidth, - tag: item.SeriesThumbImageTag, - enableImageEnhancers: enableImageEnhancers - }); - - } else if (item.ParentThumbItemId) { - - imgUrl = ApiClient.getThumbImageUrl(item, { - type: "Thumb", - maxWidth: thumbWidth, - enableImageEnhancers: enableImageEnhancers - }); - - } else if (item.MediaType == "Audio" || item.Type == "MusicAlbum" || item.Type == "MusicArtist") { - - if (item.Name && showTitle) { - icon = 'library-music'; - } - cssClass += " defaultBackground"; - - } else if (item.Type == "Recording" || item.Type == "Program" || item.Type == "TvChannel") { - - if (item.Name && showTitle) { - icon = 'folder-open'; - } - - cssClass += " defaultBackground"; - } else if (item.MediaType == "Video" || item.Type == "Season" || item.Type == "Series") { - - if (item.Name && showTitle) { - icon = 'videocam'; - } - cssClass += " defaultBackground"; - } else if (item.Type == "Person") { - - if (item.Name && showTitle) { - icon = 'person'; - } - cssClass += " defaultBackground"; - } else { - if (item.Name && showTitle) { - icon = 'folder-open'; - } - cssClass += " defaultBackground"; - } - - icon = item.icon || icon; - cssClass += ' ' + options.shape + 'Card'; - - var mediaSourceCount = item.MediaSourceCount || 1; - - var href = options.linkItem === false ? '#' : LibraryBrowser.getHref(item, options.context); - - if (options.showChildCountIndicator && item.ChildCount && options.showLatestItemsPopup !== false) { - cssClass += ' groupedCard'; - } - - if ((showTitle || options.showItemCounts) && !options.overlayText) { - cssClass += ' bottomPaddedCard'; - } - - var dataAttributes = LibraryBrowser.getItemDataAttributesList(item, options, index); - - for (var i = 0, length = dataAttributes.length; i < length; i++) { - var att = dataAttributes[i]; - if (att.value) { - item['data-' + att.name] = att.value; - } - } - - var defaultAction = options.defaultAction; - if (defaultAction == 'play' || defaultAction == 'playallfromhere') { - if (item.PlayAccess != 'Full') { - defaultAction = null; - } - } - - // card - //html += ''; - item.elemClass = cssClass; - item.defaultAction = defaultAction; - - var style = ""; - - if (imgUrl && !options.lazy) { - style += 'background-image:url(\'' + imgUrl + '\');'; - } - - var imageCssClass = 'cardImage'; - - if (icon) { - imageCssClass += " iconCardImage"; - } - - if (coverImage) { - imageCssClass += " coveredCardImage"; - if (item.MediaType == 'Photo' || item.Type == 'PhotoAlbum' || item.Type == 'Folder' || item.Type == 'Program' || item.Type == 'Recording') { - imageCssClass += " noScale"; - } - } - if (options.centerImage) { - imageCssClass += " centeredCardImage"; - } - - var dataSrc = ""; - - if (options.lazy && imgUrl) { - imageCssClass += " lazy"; - dataSrc = ' data-src="' + imgUrl + '"'; - } - - var cardboxCssClass = 'cardBox'; - - if (options.cardLayout) { - cardboxCssClass += ' visualCardBox'; - } - - item.cardBoxClass = cardboxCssClass; - - var anchorCssClass = "cardContent"; - - anchorCssClass += ' mediaItem'; - - if (defaultAction) { - anchorCssClass += ' itemWithAction'; - } - - item.anchorClass = anchorCssClass; - item.href = href; - item.imgUrl = imgUrl; - item.imageClass = imageCssClass; - - if (imgUrl) { - item.imageStyle = 'background-image:url("' + imgUrl + '");'; - } else { - item.imageStyle = null; - } - - var overlayHtml = ''; - - if (item.LocationType == "Virtual" || item.LocationType == "Offline") { - if (options.showLocationTypeIndicator !== false) { - overlayHtml += LibraryBrowser.getOfflineIndicatorHtml(item); - } - } else if (options.showUnplayedIndicator !== false) { - overlayHtml += LibraryBrowser.getPlayedIndicatorHtml(item); - } else if (options.showChildCountIndicator) { - overlayHtml += LibraryBrowser.getGroupCountIndicator(item); - } - - overlayHtml += LibraryBrowser.getSyncIndicator(item); - - if (mediaSourceCount > 1) { - overlayHtml += '
' + mediaSourceCount + '
'; - } - - var progressHtml = options.showProgress === false || item.IsFolder ? '' : LibraryBrowser.getItemProgressBarHtml((item.Type == 'Recording' ? item : item.UserData)); - - var footerOverlayed = false; - - if (options.overlayText || (forceName && !showTitle)) { - - var footerCssClass = progressHtml ? 'cardFooter fullCardFooter' : 'cardFooter'; - - overlayHtml += LibraryBrowser.getCardFooterText(item, options, showTitle, imgUrl, forceName, footerCssClass, progressHtml); - footerOverlayed = true; - } - else if (progressHtml) { - overlayHtml += '
'; - overlayHtml += "
"; - overlayHtml += progressHtml; - overlayHtml += "
"; - //cardFooter - overlayHtml += "
"; - - progressHtml = ''; - } - - if (options.overlayPlayButton && !item.IsPlaceHolder && (item.LocationType != 'Virtual' || !item.MediaType || item.Type == 'Program') && item.Type != 'Person') { - overlayHtml += '
'; - } - if (options.overlayMoreButton) { - overlayHtml += '
'; - } - - //// cardScalable - - if (!options.overlayText && !footerOverlayed) { - item.footerHtml = LibraryBrowser.getCardFooterText(item, options, showTitle, imgUrl, forceName, 'cardFooter outerCardFooter', progressHtml); - } else { - item.footerHtml = ''; - } - - item.overlayHtml = overlayHtml; - }, - getPosterViewHtml: function (options) { LibraryBrowser.setPosterViewData(options); @@ -2370,6 +1958,10 @@ } var showTitle = options.showTitle == 'auto' ? true : options.showTitle; + + if (item.Type == 'PhotoAlbum') { + showTitle = true; + } var coverImage = options.coverImage; if (options.autoThumb && item.ImageTags && item.ImageTags.Primary && item.PrimaryImageAspectRatio && item.PrimaryImageAspectRatio >= 1.34) { diff --git a/dashboard-ui/scripts/photos.js b/dashboard-ui/scripts/photos.js index 30f3596fa0..34ad242c9f 100644 --- a/dashboard-ui/scripts/photos.js +++ b/dashboard-ui/scripts/photos.js @@ -3,15 +3,15 @@ var view = 'Poster'; var data = {}; - function getQuery(tab) { + function getQuery() { - var key = getSavedQueryKey(tab); + var key = getSavedQueryKey(); var pageData = data[key]; if (!pageData) { pageData = data[key] = { query: { - SortBy: "SortName", + SortBy: "IsFolder,SortName", SortOrder: "Ascending", Fields: "PrimaryImageAspectRatio,SortName,SyncInfo", ImageTypeLimit: 1, @@ -20,24 +20,26 @@ Limit: LibraryBrowser.getDefaultPageSize() } }; - setQueryPerTab(tab, pageData.query); - pageData.query.ParentId = LibraryMenu.getTopParentId(); + + pageData.query.Recursive = false; + pageData.query.MediaTypes = null; + pageData.query.ParentId = getParameterByName('parentId') || LibraryMenu.getTopParentId(); + LibraryBrowser.loadSavedQueryValues(key, pageData.query); } return pageData.query; } - function getSavedQueryKey(tab) { + function getSavedQueryKey() { - return LibraryBrowser.getSavedQueryKey('tab=' + tab); + return LibraryBrowser.getSavedQueryKey('v1'); } - function reloadItems(page, tabIndex) { + function reloadItems(page) { Dashboard.showLoadingMsg(); - var query = getQuery(tabIndex); - + var query = getQuery(); ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) { // Scroll back up so they can see the results from the beginning @@ -63,7 +65,7 @@ overlayText: true, lazy: true, coverImage: true, - showTitle: tabIndex == 0, + showTitle: false, centerText: true }); } @@ -74,38 +76,20 @@ $('.btnNextPage', page).on('click', function () { query.StartIndex += query.Limit; - reloadItems(page, tabIndex); + reloadItems(page); }); $('.btnPreviousPage', page).on('click', function () { query.StartIndex -= query.Limit; - reloadItems(page, tabIndex); + reloadItems(page); }); - LibraryBrowser.saveQueryValues(getSavedQueryKey(tabIndex), query); + LibraryBrowser.saveQueryValues(getSavedQueryKey(), query); Dashboard.hideLoadingMsg(); }); } - function setQueryPerTab(tab, query) { - - if (tab == 1) { - query.Recursive = true; - query.MediaTypes = 'Photo'; - } - else if (tab == 2) { - query.Recursive = true; - query.MediaTypes = 'Video'; - } - else if (tab == 0) { - query.Recursive = false; - query.MediaTypes = null; - } - - query.ParentId = getParameterByName('parentId') || LibraryMenu.getTopParentId(); - } - function startSlideshow(page, itemQuery, startItemId) { var userId = Dashboard.getCurrentUserId(); @@ -155,54 +139,18 @@ var info = LibraryBrowser.getListItemInfo(this); if (info.mediaType == 'Photo') { - var query = getQuery(LibraryBrowser.selectedTab(page.querySelector('.pageTabsContainer'))); + var query = getQuery(); Photos.startSlideshow(page, query, info.id); return false; } } - function loadTab(page, index) { - - switch (index) { - - case 0: - { - reloadItems(page.querySelector('.albumTabContent'), 0); - } - break; - case 1: - { - reloadItems(page.querySelector('.photoTabContent'), 1); - } - break; - case 2: - { - reloadItems(page.querySelector('.videoTabContent'), 2); - } - break; - default: - break; - } - } - pageIdOn('pageinit', "photosPage", function () { var page = this; - var tabs = page.querySelector('paper-tabs'); - - var baseUrl = 'photos.html'; - var topParentId = LibraryMenu.getTopParentId(); - if (topParentId) { - baseUrl += '?topParentId=' + topParentId; - } - - LibraryBrowser.configurePaperLibraryTabs(page, tabs, page.querySelector('.pageTabsContainer'), baseUrl); - - page.querySelector('.pageTabsContainer').addEventListener('tabchange', function (e) { - loadTab(page, parseInt(e.detail.selectedTabIndex)); - }); + reloadItems(page, 0); $(page).on('click', '.mediaItem', onListItemClick);