From 08f249b007fdced273044ed695e92780e3812821 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 23 Oct 2019 00:36:04 +0300 Subject: [PATCH 1/7] diminify favorites.js --- src/controllers/favorites.js | 294 ++++++++++++++++++++++------------- 1 file changed, 187 insertions(+), 107 deletions(-) diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index 6c521f7bf..42b1fd85b 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -1,4 +1,4 @@ -define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "apphost", "layoutManager", "focusManager", "emby-itemscontainer", "emby-scroller"], function(appRouter, cardBuilder, dom, globalize, connectionManager, appHost, layoutManager, focusManager) { +define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "apphost", "layoutManager", "focusManager", "emby-itemscontainer", "emby-scroller"], function (appRouter, cardBuilder, dom, globalize, connectionManager, appHost, layoutManager, focusManager) { "use strict"; function enableScrollX() { @@ -22,92 +22,92 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap name: "HeaderFavoriteMovies", types: "Movie", shape: getPosterShape(), - showTitle: !0, - showYear: !0, - overlayPlayButton: !0, - overlayText: !1, - centerText: !0 + showTitle: true, + showYear: true, + overlayPlayButton: true, + overlayText: false, + centerText: true }, { name: "HeaderFavoriteShows", types: "Series", shape: getPosterShape(), - showTitle: !0, - showYear: !0, - overlayPlayButton: !0, - overlayText: !1, - centerText: !0 + showTitle: true, + showYear: true, + overlayPlayButton: true, + overlayText: false, + centerText: true }, { name: "HeaderFavoriteEpisodes", types: "Episode", shape: getThumbShape(), - preferThumb: !1, - showTitle: !0, - showParentTitle: !0, - overlayPlayButton: !0, - overlayText: !1, - centerText: !0 + preferThumb: false, + showTitle: true, + showParentTitle: true, + overlayPlayButton: true, + overlayText: false, + centerText: true }, { name: "HeaderFavoriteVideos", types: "Video", shape: getThumbShape(), - preferThumb: !0, - showTitle: !0, - overlayPlayButton: !0, - overlayText: !1, - centerText: !0 + preferThumb: true, + showTitle: true, + overlayPlayButton: true, + overlayText: false, + centerText: true }, { name: "HeaderFavoriteCollections", types: "BoxSet", shape: getPosterShape(), - showTitle: !0, - overlayPlayButton: !0, - overlayText: !1, - centerText: !0 + showTitle: true, + overlayPlayButton: true, + overlayText: false, + centerText: true }, { name: "HeaderFavoritePlaylists", types: "Playlist", shape: getSquareShape(), - preferThumb: !1, - showTitle: !0, - overlayText: !1, - showParentTitle: !1, - centerText: !0, - overlayPlayButton: !0, - coverImage: !0 + preferThumb: false, + showTitle: true, + overlayText: false, + showParentTitle: false, + centerText: true, + overlayPlayButton: true, + coverImage: true }, { name: "HeaderFavoriteArtists", types: "MusicArtist", shape: getSquareShape(), - preferThumb: !1, - showTitle: !0, - overlayText: !1, - showParentTitle: !1, - centerText: !0, - overlayPlayButton: !0, - coverImage: !0 + preferThumb: false, + showTitle: true, + overlayText: false, + showParentTitle: false, + centerText: true, + overlayPlayButton: true, + coverImage: true }, { name: "HeaderFavoriteAlbums", types: "MusicAlbum", shape: getSquareShape(), - preferThumb: !1, - showTitle: !0, - overlayText: !1, - showParentTitle: !0, - centerText: !0, - overlayPlayButton: !0, - coverImage: !0 + preferThumb: false, + showTitle: true, + overlayText: false, + showParentTitle: true, + centerText: true, + overlayPlayButton: true, + coverImage: true }, { name: "HeaderFavoriteSongs", types: "Audio", shape: getSquareShape(), - preferThumb: !1, - showTitle: !0, - overlayText: !1, - showParentTitle: !0, - centerText: !0, - overlayMoreButton: !0, + preferThumb: false, + showTitle: true, + overlayText: false, + showParentTitle: true, + centerText: true, + overlayMoreButton: true, action: "instantmix", - coverImage: !0 + coverImage: true }, { name: "HeaderFavoriteBooks", types: "Book", @@ -117,59 +117,78 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap overlayPlayButton: true, overlayText: false, centerText: true - }] + }]; } function getFetchDataFn(section) { - return function() { - var apiClient = this.apiClient, - options = { - SortBy: (section.types, "SeriesName,SortName"), - SortOrder: "Ascending", - Filters: "IsFavorite", - Recursive: !0, - Fields: "PrimaryImageAspectRatio,BasicSyncInfo", - CollapseBoxSetItems: !1, - ExcludeLocationTypes: "Virtual", - EnableTotalRecordCount: !1 - }; + return function () { + var apiClient = this.apiClient; + var options = { + SortBy: (section.types, "SeriesName,SortName"), + SortOrder: "Ascending", + Filters: "IsFavorite", + Recursive: true, + Fields: "PrimaryImageAspectRatio,BasicSyncInfo", + CollapseBoxSetItems: false, + ExcludeLocationTypes: "Virtual", + EnableTotalRecordCount: false + }; options.Limit = 20; var userId = apiClient.getCurrentUserId(); - return "MusicArtist" === section.types ? apiClient.getArtists(userId, options) : (options.IncludeItemTypes = section.types, apiClient.getItems(userId, options)) - } + + if ("MusicArtist" === section.types) { + return apiClient.getArtists(userId, options); + } + + options.IncludeItemTypes = section.types; + return apiClient.getItems(userId, options); + }; } function getRouteUrl(section, serverId) { return appRouter.getRouteUrl("list", { serverId: serverId, itemTypes: section.types, - isFavorite: !0 - }) + isFavorite: true + }); } function getItemsHtmlFn(section) { - return function(items) { - var supportsImageAnalysis = appHost.supports("imageanalysis"), - cardLayout = (appHost.preferVisualCards || supportsImageAnalysis) && section.autoCardLayout && section.showTitle; - cardLayout = !1; - var serverId = this.apiClient.serverId(), - leadingButtons = layoutManager.tv ? [{ - name: globalize.translate("All"), - id: "more", - icon: "", - routeUrl: getRouteUrl(section, serverId) - }] : null, - lines = 0; - return section.showTitle && lines++, section.showYear && lines++, section.showParentTitle && lines++, cardBuilder.getCardsHtml({ + return function (items) { + var supportsImageAnalysis = appHost.supports("imageanalysis"); + var cardLayout = (appHost.preferVisualCards || supportsImageAnalysis) && section.autoCardLayout && section.showTitle; + cardLayout = false; + var serverId = this.apiClient.serverId(); + var leadingButtons = layoutManager.tv ? [{ + name: globalize.translate("All"), + id: "more", + icon: "", + routeUrl: getRouteUrl(section, serverId) + }] : null; + var lines = 0; + + if (section.showTitle) { + lines++; + } + + if (section.showYear) { + lines++; + } + + if (section.showParentTitle) { + lines++; + } + + return cardBuilder.getCardsHtml({ items: items, preferThumb: section.preferThumb, shape: section.shape, centerText: section.centerText && !cardLayout, - overlayText: !1 !== section.overlayText, + overlayText: false !== section.overlayText, showTitle: section.showTitle, showYear: section.showYear, showParentTitle: section.showParentTitle, - scalable: !0, + scalable: true, coverImage: section.coverImage, overlayPlayButton: section.overlayPlayButton, overlayMoreButton: section.overlayMoreButton && !cardLayout, @@ -178,39 +197,100 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap cardLayout: cardLayout, leadingButtons: leadingButtons, lines: lines - }) - } + }); + }; } function FavoritesTab(view, params) { - this.view = view, this.params = params, this.apiClient = connectionManager.currentApiClient(), this.sectionsContainer = view.querySelector(".sections"), createSections(this, this.sectionsContainer, this.apiClient) + this.view = view; + this.params = params; + this.apiClient = connectionManager.currentApiClient(); + this.sectionsContainer = view.querySelector(".sections"); + createSections(this, this.sectionsContainer, this.apiClient); } function createSections(instance, elem, apiClient) { - var i, length, sections = getSections(), - html = ""; + var i; + var length; + var sections = getSections(); + var html = ""; + for (i = 0, length = sections.length; i < length; i++) { - var section = sections[i], - sectionClass = "verticalSection"; - section.showTitle || (sectionClass += " verticalSection-extrabottompadding"), html += '
', html += '
', layoutManager.tv ? html += '

' + globalize.translate(section.name) + "

" : (html += '', html += '

', html += globalize.translate(section.name), html += "

", html += '', html += "
"), html += "
", html += '
', html += "
" + var section = sections[i]; + var sectionClass = "verticalSection"; + + if (!section.showTitle) { + sectionClass += " verticalSection-extrabottompadding"; + } + + html += '
'; + html += '
'; + + if (layoutManager.tv) { + html += '

' + globalize.translate(section.name) + "

"; + } else { + html += ''; + html += '

'; + html += globalize.translate(section.name); + html += "

"; + html += ''; + html += "
"; + } + + html += "
"; + html += '
'; + html += "
"; } + elem.innerHTML = html; var elems = elem.querySelectorAll(".itemsContainer"); + for (i = 0, length = elems.length; i < length; i++) { var itemsContainer = elems[i]; - itemsContainer.fetchData = getFetchDataFn(sections[i]).bind(instance), itemsContainer.getItemsHtml = getItemsHtmlFn(sections[i]).bind(instance), itemsContainer.parentContainer = dom.parentWithClass(itemsContainer, "verticalSection") + itemsContainer.fetchData = getFetchDataFn(sections[i]).bind(instance); + itemsContainer.getItemsHtml = getItemsHtmlFn(sections[i]).bind(instance); + itemsContainer.parentContainer = dom.parentWithClass(itemsContainer, "verticalSection"); } } - return FavoritesTab.prototype.onResume = function(options) { - for (var promises = (this.apiClient, []), view = this.view, elems = this.sectionsContainer.querySelectorAll(".itemsContainer"), i = 0, length = elems.length; i < length; i++) promises.push(elems[i].resume(options)); - Promise.all(promises).then(function() { - options.autoFocus && focusManager.autoFocus(view) - }) - }, FavoritesTab.prototype.onPause = function() { - for (var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"), i = 0, length = elems.length; i < length; i++) elems[i].pause() - }, FavoritesTab.prototype.destroy = function() { - this.view = null, this.params = null, this.apiClient = null; - for (var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"), i = 0, length = elems.length; i < length; i++) elems[i].fetchData = null, elems[i].getItemsHtml = null, elems[i].parentContainer = null; - this.sectionsContainer = null - }, FavoritesTab + + FavoritesTab.prototype.onResume = function (options) { + var promises = (this.apiClient, []); + var view = this.view; + var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"); + + for (var i = 0, length = elems.length; i < length; i++) { + promises.push(elems[i].resume(options)); + } + + Promise.all(promises).then(function () { + if (options.autoFocus) { + focusManager.autoFocus(view); + } + }); + }; + + FavoritesTab.prototype.onPause = function () { + var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"); + + for (var i = 0, length = elems.length; i < length; i++) { + elems[i].pause(); + } + }; + + FavoritesTab.prototype.destroy = function () { + this.view = null; + this.params = null; + this.apiClient = null; + var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"); + + for (var i = 0, length = elems.length; i < length; i++) { + elems[i].fetchData = null; + elems[i].getItemsHtml = null; + elems[i].parentContainer = null; + } + + this.sectionsContainer = null; + }; + + return FavoritesTab; }); From e8af133ed2d9b65134dcc19d8427df0354b0ddbf Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 23 Oct 2019 01:14:32 +0300 Subject: [PATCH 2/7] add person to favorite section --- src/controllers/favorites.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index 42b1fd85b..95a4ec975 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -74,6 +74,17 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap centerText: true, overlayPlayButton: true, coverImage: true + }, { + name: "HeaderFavoritePeople", + types: "Person", + shape: getPosterShape(), + preferThumb: false, + showTitle: true, + overlayText: false, + showParentTitle: false, + centerText: true, + overlayPlayButton: true, + coverImage: true }, { name: "HeaderFavoriteArtists", types: "MusicArtist", @@ -140,6 +151,10 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap return apiClient.getArtists(userId, options); } + if ("Person" === section.types) { + return apiClient.getPeople(userId, options); + } + options.IncludeItemTypes = section.types; return apiClient.getItems(userId, options); }; From 5099c95c22d01e06e17fab9d3fbb519243797a5c Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 23 Oct 2019 01:19:14 +0300 Subject: [PATCH 3/7] disable favorites rate button on season and studio --- src/components/itemhelper.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/itemhelper.js b/src/components/itemhelper.js index f8bdb28ac..9707f5404 100644 --- a/src/components/itemhelper.js +++ b/src/components/itemhelper.js @@ -273,8 +273,13 @@ define(['apphost', 'globalize'], function (appHost, globalize) { }, canRate: function (item) { + var itemType = item.Type; - if (item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'SeriesTimer' || item.Type === 'CollectionFolder' || item.Type === 'UserView' || item.Type === 'Channel') { + if (item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'SeriesTimer' || item.Type === 'CollectionFolder' || item.Type === 'UserView' || item.Type === 'Channel' || itemType === 'Season' || itemType === 'Studio') { + return false; + } + + if (!item.UserData) { return false; } From 4999690d0c9d7467688772e35ebc766a8c7ca620 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 23 Oct 2019 01:20:07 +0300 Subject: [PATCH 4/7] add HeaderFavoritePeople strings --- src/strings/en-us.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 4d83b070d..d72b74971 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -354,6 +354,7 @@ "HeaderFavoriteShows": "Favorite Shows", "HeaderFavoriteEpisodes": "Favorite Episodes", "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoritePeople": "Favorite People", "HeaderFavoriteArtists": "Favorite Artists", "HeaderFavoriteSongs": "Favorite Songs", "HeaderFavoriteVideos": "Favorite Videos", From 58b09ca9994158da90ecd5c28f4036a3fb409c73 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 22 Nov 2019 00:04:02 +0300 Subject: [PATCH 5/7] fix padding --- src/controllers/favorites.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index 95a4ec975..25ca59da9 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -253,7 +253,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap } html += ""; - html += '
'; + html += '
'; html += ""; } From 8a360772a2504b7028a1f2153b30e0aaf597add5 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 22 Nov 2019 00:20:42 +0300 Subject: [PATCH 6/7] apply suggestion change --- src/components/itemhelper.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/components/itemhelper.js b/src/components/itemhelper.js index 9707f5404..7ea0c2b9e 100644 --- a/src/components/itemhelper.js +++ b/src/components/itemhelper.js @@ -273,13 +273,14 @@ define(['apphost', 'globalize'], function (appHost, globalize) { }, canRate: function (item) { - var itemType = item.Type; - if (item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'SeriesTimer' || item.Type === 'CollectionFolder' || item.Type === 'UserView' || item.Type === 'Channel' || itemType === 'Season' || itemType === 'Studio') { - return false; - } - - if (!item.UserData) { + if (item.Type === 'Program' || + item.Type === 'Timer' || + item.Type === 'SeriesTimer' || + item.Type === 'CollectionFolder' || + item.Type === 'UserView' || + item.Type === 'Channel' || + !item.UserData) { return false; } From b77143797c6b846f0c6074485b2acc899d4eb746 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 22 Nov 2019 21:32:51 +0300 Subject: [PATCH 7/7] apply suggestion change --- src/components/itemhelper.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/itemhelper.js b/src/components/itemhelper.js index 88f012a3c..8e0883474 100644 --- a/src/components/itemhelper.js +++ b/src/components/itemhelper.js @@ -272,13 +272,13 @@ define(['apphost', 'globalize'], function (appHost, globalize) { canRate: function (item) { - if (item.Type === 'Program' || - item.Type === 'Timer' || - item.Type === 'SeriesTimer' || - item.Type === 'CollectionFolder' || - item.Type === 'UserView' || - item.Type === 'Channel' || - !item.UserData) { + if (item.Type === 'Program' + || item.Type === 'Timer' + || item.Type === 'SeriesTimer' + || item.Type === 'CollectionFolder' + || item.Type === 'UserView' + || item.Type === 'Channel' + || !item.UserData) { return false; }