From 529e9102cdc5e55ced5c525a3ed1c4e0c2ae486d Mon Sep 17 00:00:00 2001 From: ferferga Date: Mon, 21 Oct 2019 16:24:36 +0200 Subject: [PATCH 01/43] Improved appearance of images and artworks - Part 3 --- src/components/cardbuilder/card.css | 2 +- src/controllers/dashboardpage.js | 10 ---------- src/controllers/itemdetailpage.js | 5 ----- src/scripts/librarymenu.js | 5 ----- 4 files changed, 1 insertion(+), 21 deletions(-) diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 942e05c77a..9c21d7727a 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -156,7 +156,7 @@ button { } .cardImageContainer { - background-size: contain; + background-size: cover; background-repeat: no-repeat; background-position: center center; display: -webkit-flex; diff --git a/src/controllers/dashboardpage.js b/src/controllers/dashboardpage.js index 229befdeda..f23fbb4953 100644 --- a/src/controllers/dashboardpage.js +++ b/src/controllers/dashboardpage.js @@ -507,7 +507,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (session.UserId && session.UserPrimaryImageTag) { return ApiClient.getUserImageUrl(session.UserId, { tag: session.UserPrimaryImageTag, - height: 24, type: "Primary" }); } @@ -602,7 +601,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.BackdropImageTags && item.BackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.Id, { type: "Backdrop", - width: 275, tag: item.BackdropImageTags[0] }); } @@ -610,7 +608,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.ParentBackdropItemId, { type: "Backdrop", - width: 275, tag: item.ParentBackdropImageTags[0] }); } @@ -618,7 +615,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.BackdropImageTag) { return ApiClient.getScaledImageUrl(item.BackdropItemId, { type: "Backdrop", - width: 275, tag: item.BackdropImageTag }); } @@ -628,7 +624,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && imageTags.Thumb) { return ApiClient.getScaledImageUrl(item.Id, { type: "Thumb", - width: 275, tag: imageTags.Thumb }); } @@ -636,7 +631,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ParentThumbImageTag) { return ApiClient.getScaledImageUrl(item.ParentThumbItemId, { type: "Thumb", - width: 275, tag: item.ParentThumbImageTag }); } @@ -644,7 +638,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ThumbImageTag) { return ApiClient.getScaledImageUrl(item.ThumbItemId, { type: "Thumb", - width: 275, tag: item.ThumbImageTag }); } @@ -652,7 +645,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && imageTags.Primary) { return ApiClient.getScaledImageUrl(item.Id, { type: "Primary", - width: 275, tag: imageTags.Primary }); } @@ -660,7 +652,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.PrimaryImageTag) { return ApiClient.getScaledImageUrl(item.PrimaryImageItemId, { type: "Primary", - width: 275, tag: item.PrimaryImageTag }); } @@ -668,7 +659,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.AlbumPrimaryImageTag) { return ApiClient.getScaledImageUrl(item.AlbumId, { type: "Primary", - width: 275, tag: item.AlbumPrimaryImageTag }); } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 03e0f68a9b..0cf7419c79 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -263,27 +263,22 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild return "Program" === item.Type && item.ImageTags && item.ImageTags.Thumb ? (imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", index: 0, - maxWidth: screenWidth, tag: item.ImageTags.Thumb }), itemBackdropElement.classList.remove("noBackdrop"), imageLoader.lazyImage(itemBackdropElement, imgUrl, !1), hasbackdrop = !0) : usePrimaryImage && item.ImageTags && item.ImageTags.Primary ? (imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Primary", index: 0, - maxWidth: screenWidth, tag: item.ImageTags.Primary }), itemBackdropElement.classList.remove("noBackdrop"), imageLoader.lazyImage(itemBackdropElement, imgUrl, !1), hasbackdrop = !0) : item.BackdropImageTags && item.BackdropImageTags.length ? (imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Backdrop", index: 0, - maxWidth: screenWidth, tag: item.BackdropImageTags[0] }), itemBackdropElement.classList.remove("noBackdrop"), imageLoader.lazyImage(itemBackdropElement, imgUrl, !1), hasbackdrop = !0) : item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length ? (imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, { type: "Backdrop", index: 0, tag: item.ParentBackdropImageTags[0], - maxWidth: screenWidth }), itemBackdropElement.classList.remove("noBackdrop"), imageLoader.lazyImage(itemBackdropElement, imgUrl, !1), hasbackdrop = !0) : item.ImageTags && item.ImageTags.Thumb ? (imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", index: 0, - maxWidth: screenWidth, tag: item.ImageTags.Thumb }), itemBackdropElement.classList.remove("noBackdrop"), imageLoader.lazyImage(itemBackdropElement, imgUrl, !1), hasbackdrop = !0) : (itemBackdropElement.classList.add("noBackdrop"), itemBackdropElement.style.backgroundImage = ""), hasbackdrop } diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 3c7918d66c..bc2c65e112 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -25,11 +25,6 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " if (user && user.name) { if (user.imageUrl) { var url = user.imageUrl; - - if (user.supportsImageParams) { - url += "&height=" + Math.round(26 * Math.max(window.devicePixelRatio || 1, 2)); - } - updateHeaderUserButton(url); hasImage = true; } From 08f249b007fdced273044ed695e92780e3812821 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 23 Oct 2019 00:36:04 +0300 Subject: [PATCH 02/43] 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 6c521f7bfe..42b1fd85b2 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 03/43] 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 42b1fd85b2..95a4ec975a 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 04/43] 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 f8bdb28ac5..9707f5404c 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 05/43] 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 4d83b070d1..d72b74971a 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 d3c3501632ba53ace26738896bdc219dc5bc5ab0 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 5 Nov 2019 18:00:47 +0300 Subject: [PATCH 06/43] update Icon --- src/controllers/medialibrarypage.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index 6b616ce58d..4da64641ef 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -88,27 +88,27 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl menuItems.push({ name: globalize.translate("ButtonEditImages"), id: "editimages", - ironIcon: "photo" + icon: "photo" }); menuItems.push({ name: globalize.translate("ManageLibrary"), id: "edit", - ironIcon: "folder_open" + icon: "folder_open" }); menuItems.push({ name: globalize.translate("ButtonRemove"), id: "delete", - ironIcon: "remove" + icon: "delete" }); menuItems.push({ name: globalize.translate("ButtonRename"), id: "rename", - ironIcon: "mode_edit" + icon: "mode_edit" }); menuItems.push({ name: globalize.translate("ScanLibrary"), id: "refresh", - ironIcon: "refresh" + icon: "refresh" }); require(["actionsheet"], function (actionsheet) { From faa1a263b9e9b803e6491f6d2360af8044d82a5a Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 5 Nov 2019 18:24:39 +0300 Subject: [PATCH 07/43] change ironicon to icon --- src/components/multiselect/multiselect.js | 10 +++++----- src/controllers/devices.js | 4 ++-- src/controllers/installedplugins.js | 4 ++-- src/controllers/userprofilespage.js | 10 +++++----- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index d706b76b99..b3fb2a7312 100644 --- a/src/components/multiselect/multiselect.js +++ b/src/components/multiselect/multiselect.js @@ -192,13 +192,13 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo menuItems.push({ name: globalize.translate('AddToCollection'), id: 'addtocollection', - ironIcon: 'add' + icon: 'add' }); menuItems.push({ name: globalize.translate('AddToPlaylist'), id: 'playlist', - ironIcon: 'playlist-add' + icon: 'playlist_add' }); // TODO: Be more dynamic based on what is selected @@ -206,7 +206,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo menuItems.push({ name: globalize.translate('Delete'), id: 'delete', - ironIcon: 'delete' + icon: 'delete' }); } @@ -214,7 +214,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo menuItems.push({ name: Globalize.translate('ButtonDownload'), id: 'download', - ironIcon: 'file-download' + icon: 'file_download' }); } @@ -222,7 +222,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo menuItems.push({ name: globalize.translate('GroupVersions'), id: 'groupvideos', - ironIcon: 'call-merge' + icon: 'call_merge' }); } diff --git a/src/controllers/devices.js b/src/controllers/devices.js index 94d7eb70ea..9048739f0f 100644 --- a/src/controllers/devices.js +++ b/src/controllers/devices.js @@ -31,11 +31,11 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu canEdit && menuItems.push({ name: globalize.translate("Edit"), id: "open", - ironIcon: "mode-edit" + icon: "mode_edit" }), canDelete(deviceId) && menuItems.push({ name: globalize.translate("Delete"), id: "delete", - ironIcon: "delete" + icon: "delete" }), require(["actionsheet"], function(actionsheet) { actionsheet.show({ items: menuItems, diff --git a/src/controllers/installedplugins.js b/src/controllers/installedplugins.js index f9653fe260..5127015e20 100644 --- a/src/controllers/installedplugins.js +++ b/src/controllers/installedplugins.js @@ -107,13 +107,13 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" menuItems.push({ name: globalize.translate("ButtonSettings"), id: "open", - ironIcon: "mode-edit" + icon: "mode_edit" }); } menuItems.push({ name: globalize.translate("ButtonUninstall"), id: "delete", - ironIcon: "delete" + icon: "delete" }); require(["actionsheet"], function(actionsheet) { actionsheet.show({ diff --git a/src/controllers/userprofilespage.js b/src/controllers/userprofilespage.js index 3c22ff3cbf..0e9a79a8b2 100644 --- a/src/controllers/userprofilespage.js +++ b/src/controllers/userprofilespage.js @@ -27,22 +27,22 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", menuItems.push({ name: globalize.translate("ButtonOpen"), id: "open", - ironIcon: "mode-edit" + icon: "mode_edit" }); menuItems.push({ name: globalize.translate("ButtonLibraryAccess"), id: "access", - ironIcon: "lock" + icon: "lock" }); menuItems.push({ name: globalize.translate("ButtonParentalControl"), id: "parentalcontrol", - ironIcon: "person" + icon: "person" }); menuItems.push({ name: globalize.translate("ButtonDelete"), id: "delete", - ironIcon: "delete" + icon: "delete" }); require(["actionsheet"], function (actionsheet) { @@ -149,7 +149,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", menuItems.push({ name: globalize.translate("ButtonCancel"), id: "delete", - ironIcon: "delete" + icon: "delete" }); require(["actionsheet"], function (actionsheet) { From d536866ed5bd70d0e753fac8aa885db0e12b15ae Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 5 Nov 2019 18:43:10 +0300 Subject: [PATCH 08/43] update muliselect icon --- src/components/multiselect/multiselect.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index b3fb2a7312..a614bfef8c 100644 --- a/src/components/multiselect/multiselect.js +++ b/src/components/multiselect/multiselect.js @@ -228,17 +228,20 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo menuItems.push({ name: globalize.translate('MarkPlayed'), - id: 'markplayed' + id: 'markplayed', + icon: "check_box" }); menuItems.push({ name: globalize.translate('MarkUnplayed'), - id: 'markunplayed' + id: 'markunplayed', + icon: "check_box_outline_blank" }); menuItems.push({ name: globalize.translate('RefreshMetadata'), - id: 'refresh' + id: 'refresh', + icon: "refresh" }); From dd109c3324970681f5f5fbcb231a062ac0d960ae Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 5 Nov 2019 18:50:41 +0300 Subject: [PATCH 09/43] change single quote to double quote --- src/components/multiselect/multiselect.js | 194 +++++++++++----------- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index a614bfef8c..f4a0d2a29d 100644 --- a/src/components/multiselect/multiselect.js +++ b/src/components/multiselect/multiselect.js @@ -1,5 +1,5 @@ -define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'globalize', 'appRouter', 'dom', 'css!./multiselect'], function (browser, appStorage, appHost, loading, connectionManager, globalize, appRouter, dom) { - 'use strict'; +define(["browser", "appStorage", "apphost", "loading", "connectionManager", "globalize", "appRouter", "dom", "css!./multiselect"], function (browser, appStorage, appHost, loading, connectionManager, globalize, appRouter, dom) { + "use strict"; var selectedItems = []; var selectedElements = []; @@ -15,12 +15,12 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo selectedItems = []; selectedElements = []; - var elems = document.querySelectorAll('.itemSelectionPanel'); + var elems = document.querySelectorAll(".itemSelectionPanel"); for (var i = 0, length = elems.length; i < length; i++) { var parent = elems[i].parentNode; parent.removeChild(elems[i]); - parent.classList.remove('withMultiSelect'); + parent.classList.remove("withMultiSelect"); } } } @@ -28,13 +28,13 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo function onItemSelectionPanelClick(e, itemSelectionPanel) { // toggle the checkbox, if it wasn't clicked on - if (!dom.parentWithClass(e.target, 'chkItemSelect')) { - var chkItemSelect = itemSelectionPanel.querySelector('.chkItemSelect'); + if (!dom.parentWithClass(e.target, "chkItemSelect")) { + var chkItemSelect = itemSelectionPanel.querySelector(".chkItemSelect"); if (chkItemSelect) { - if (chkItemSelect.classList.contains('checkedInitial')) { - chkItemSelect.classList.remove('checkedInitial'); + if (chkItemSelect.classList.contains("checkedInitial")) { + chkItemSelect.classList.remove("checkedInitial"); } else { var newValue = !chkItemSelect.checked; chkItemSelect.checked = newValue; @@ -50,7 +50,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo function updateItemSelection(chkItemSelect, selected) { - var id = dom.parentWithAttribute(chkItemSelect, 'data-id').getAttribute('data-id'); + var id = dom.parentWithAttribute(chkItemSelect, "data-id").getAttribute("data-id"); if (selected) { @@ -73,7 +73,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo } if (selectedItems.length) { - var itemSelectionCount = document.querySelector('.itemSelectionCount'); + var itemSelectionCount = document.querySelector(".itemSelectionCount"); if (itemSelectionCount) { itemSelectionCount.innerHTML = selectedItems.length; } @@ -88,27 +88,27 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo function showSelection(item, isChecked) { - var itemSelectionPanel = item.querySelector('.itemSelectionPanel'); + var itemSelectionPanel = item.querySelector(".itemSelectionPanel"); if (!itemSelectionPanel) { - itemSelectionPanel = document.createElement('div'); - itemSelectionPanel.classList.add('itemSelectionPanel'); + itemSelectionPanel = document.createElement("div"); + itemSelectionPanel.classList.add("itemSelectionPanel"); - var parent = item.querySelector('.cardBox') || item.querySelector('.cardContent'); - parent.classList.add('withMultiSelect'); + var parent = item.querySelector(".cardBox") || item.querySelector(".cardContent"); + parent.classList.add("withMultiSelect"); parent.appendChild(itemSelectionPanel); - var cssClass = 'chkItemSelect'; + var cssClass = "chkItemSelect"; if (isChecked && !browser.firefox) { // In firefox, the initial tap hold doesnt' get treated as a click // In other browsers it does, so we need to make sure that initial click is ignored - cssClass += ' checkedInitial'; + cssClass += " checkedInitial"; } - var checkedAttribute = isChecked ? ' checked' : ''; + var checkedAttribute = isChecked ? " checked" : ""; itemSelectionPanel.innerHTML = ''; - var chkItemSelect = itemSelectionPanel.querySelector('.chkItemSelect'); - chkItemSelect.addEventListener('change', onSelectionChange); + var chkItemSelect = itemSelectionPanel.querySelector(".chkItemSelect"); + chkItemSelect.addEventListener("change", onSelectionChange); } } @@ -118,27 +118,27 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo if (!selectionCommandsPanel) { - selectionCommandsPanel = document.createElement('div'); - selectionCommandsPanel.classList.add('selectionCommandsPanel'); + selectionCommandsPanel = document.createElement("div"); + selectionCommandsPanel.classList.add("selectionCommandsPanel"); document.body.appendChild(selectionCommandsPanel); currentSelectionCommandsPanel = selectionCommandsPanel; - var html = ''; + var html = ""; html += ''; html += '

'; - var moreIcon = ''; + var moreIcon = ""; html += ''; selectionCommandsPanel.innerHTML = html; - selectionCommandsPanel.querySelector('.btnCloseSelectionPanel').addEventListener('click', hideSelections); + selectionCommandsPanel.querySelector(".btnCloseSelectionPanel").addEventListener("click", hideSelections); - var btnSelectionPanelOptions = selectionCommandsPanel.querySelector('.btnSelectionPanelOptions'); + var btnSelectionPanelOptions = selectionCommandsPanel.querySelector(".btnSelectionPanelOptions"); - dom.addEventListener(btnSelectionPanelOptions, 'click', showMenuForSelectedItems, { passive: true }); + dom.addEventListener(btnSelectionPanelOptions, "click", showMenuForSelectedItems, { passive: true }); } } @@ -146,7 +146,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo return new Promise(function (resolve, reject) { - require(['alert'], function (alert) { + require(["alert"], function (alert) { alert(options).then(resolve, resolve); }); }); @@ -156,15 +156,15 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo return new Promise(function (resolve, reject) { - var msg = globalize.translate('ConfirmDeleteItem'); - var title = globalize.translate('HeaderDeleteItem'); + var msg = globalize.translate("ConfirmDeleteItem"); + var title = globalize.translate("HeaderDeleteItem"); if (itemIds.length > 1) { - msg = globalize.translate('ConfirmDeleteItems'); - title = globalize.translate('HeaderDeleteItems'); + msg = globalize.translate("ConfirmDeleteItems"); + title = globalize.translate("HeaderDeleteItems"); } - require(['confirm'], function (confirm) { + require(["confirm"], function (confirm) { confirm(msg, title).then(function () { var promises = itemIds.map(function (itemId) { @@ -173,7 +173,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo Promise.all(promises).then(resolve, function () { - alertText(globalize.translate('ErrorDeletingItem')).then(reject, reject); + alertText(globalize.translate("ErrorDeletingItem")).then(reject, reject); }); }, reject); @@ -190,63 +190,63 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo var menuItems = []; menuItems.push({ - name: globalize.translate('AddToCollection'), - id: 'addtocollection', - icon: 'add' + name: globalize.translate("AddToCollection"), + id: "addtocollection", + icon: "add" }); menuItems.push({ - name: globalize.translate('AddToPlaylist'), - id: 'playlist', - icon: 'playlist_add' + name: globalize.translate("AddToPlaylist"), + id: "playlist", + icon: "playlist_add" }); // TODO: Be more dynamic based on what is selected if (user.Policy.EnableContentDeletion) { menuItems.push({ - name: globalize.translate('Delete'), - id: 'delete', - icon: 'delete' + name: globalize.translate("Delete"), + id: "delete", + icon: "delete" }); } - if (user.Policy.EnableContentDownloading && appHost.supports('filedownload')) { + if (user.Policy.EnableContentDownloading && appHost.supports("filedownload")) { menuItems.push({ - name: Globalize.translate('ButtonDownload'), - id: 'download', - icon: 'file_download' + name: Globalize.translate("ButtonDownload"), + id: "download", + icon: "file_download" }); } if (user.Policy.IsAdministrator) { menuItems.push({ - name: globalize.translate('GroupVersions'), - id: 'groupvideos', - icon: 'call_merge' + name: globalize.translate("GroupVersions"), + id: "groupvideos", + icon: "call_merge" }); } menuItems.push({ - name: globalize.translate('MarkPlayed'), - id: 'markplayed', + name: globalize.translate("MarkPlayed"), + id: "markplayed", icon: "check_box" }); menuItems.push({ - name: globalize.translate('MarkUnplayed'), - id: 'markunplayed', + name: globalize.translate("MarkUnplayed"), + id: "markunplayed", icon: "check_box_outline_blank" }); menuItems.push({ - name: globalize.translate('RefreshMetadata'), - id: 'refresh', + name: globalize.translate("RefreshMetadata"), + id: "refresh", icon: "refresh" }); - require(['actionsheet'], function (actionsheet) { + require(["actionsheet"], function (actionsheet) { actionsheet.show({ items: menuItems, positionTo: e.target, @@ -255,8 +255,8 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo var serverId = apiClient.serverInfo().Id; switch (id) { - case 'addtocollection': - require(['collectionEditor'], function (collectionEditor) { + case "addtocollection": + require(["collectionEditor"], function (collectionEditor) { new collectionEditor().show({ items: items, serverId: serverId @@ -265,8 +265,8 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo hideSelections(); dispatchNeedsRefresh(); break; - case 'playlist': - require(['playlistEditor'], function (playlistEditor) { + case "playlist": + require(["playlistEditor"], function (playlistEditor) { new playlistEditor().show({ items: items, serverId: serverId @@ -275,30 +275,30 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo hideSelections(); dispatchNeedsRefresh(); break; - case 'delete': + case "delete": deleteItems(apiClient, items).then(dispatchNeedsRefresh); hideSelections(); dispatchNeedsRefresh(); break; - case 'groupvideos': + case "groupvideos": combineVersions(apiClient, items); break; - case 'markplayed': + case "markplayed": items.forEach(function (itemId) { apiClient.markPlayed(apiClient.getCurrentUserId(), itemId); }); hideSelections(); dispatchNeedsRefresh(); break; - case 'markunplayed': + case "markunplayed": items.forEach(function (itemId) { apiClient.markUnplayed(apiClient.getCurrentUserId(), itemId); }); hideSelections(); dispatchNeedsRefresh(); break; - case 'refresh': - require(['refreshDialog'], function (refreshDialog) { + case "refresh": + require(["refreshDialog"], function (refreshDialog) { new refreshDialog({ itemIds: items, serverId: serverId @@ -323,7 +323,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo [].forEach.call(selectedElements, function (i) { - var container = dom.parentWithAttribute(i, 'is', 'emby-itemscontainer'); + var container = dom.parentWithAttribute(i, "is", "emby-itemscontainer"); if (container && elems.indexOf(container) === -1) { elems.push(container); @@ -339,9 +339,9 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo if (selection.length < 2) { - require(['alert'], function (alert) { + require(["alert"], function (alert) { alert({ - text: globalize.translate('PleaseSelectTwoItems') + text: globalize.translate("PleaseSelectTwoItems") }); }); return; @@ -352,7 +352,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo apiClient.ajax({ type: "POST", - url: apiClient.getUrl("Videos/MergeVersions", { Ids: selection.join(',') }) + url: apiClient.getUrl("Videos/MergeVersions", { Ids: selection.join(",") }) }).then(function () { @@ -364,8 +364,8 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo function showSelections(initialCard) { - require(['emby-checkbox'], function () { - var cards = document.querySelectorAll('.card'); + require(["emby-checkbox"], function () { + var cards = document.querySelectorAll(".card"); for (var i = 0, length = cards.length; i < length; i++) { showSelection(cards[i], initialCard === cards[i]); } @@ -381,9 +381,9 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo if (selectedItems.length) { - var card = dom.parentWithClass(target, 'card'); + var card = dom.parentWithClass(target, "card"); if (card) { - var itemSelectionPanel = card.querySelector('.itemSelectionPanel'); + var itemSelectionPanel = card.querySelector(".itemSelectionPanel"); if (itemSelectionPanel) { return onItemSelectionPanelClick(e, itemSelectionPanel); } @@ -395,7 +395,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo } } - document.addEventListener('viewbeforehide', hideSelections); + document.addEventListener("viewbeforehide", hideSelections); return function (options) { @@ -405,7 +405,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo function onTapHold(e) { - var card = dom.parentWithClass(e.target, 'card'); + var card = dom.parentWithClass(e.target, "card"); if (card) { @@ -442,7 +442,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo var element = touch.target; if (element) { - var card = dom.parentWithClass(element, 'card'); + var card = dom.parentWithClass(element, "card"); if (card) { @@ -511,7 +511,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo return; } - var card = dom.parentWithClass(touchTarget, 'card'); + var card = dom.parentWithClass(touchTarget, "card"); touchTarget = null; if (card) { @@ -524,27 +524,27 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo // mobile safari doesn't allow contextmenu override if (browser.touch && !browser.safari) { - element.addEventListener('contextmenu', onTapHold); + element.addEventListener("contextmenu", onTapHold); } else { - dom.addEventListener(element, 'touchstart', onTouchStart, { + dom.addEventListener(element, "touchstart", onTouchStart, { passive: true }); - dom.addEventListener(element, 'touchmove', onTouchMove, { + dom.addEventListener(element, "touchmove", onTouchMove, { passive: true }); - dom.addEventListener(element, 'touchend', onTouchEnd, { + dom.addEventListener(element, "touchend", onTouchEnd, { passive: true }); - dom.addEventListener(element, 'touchcancel', onTouchEnd, { + dom.addEventListener(element, "touchcancel", onTouchEnd, { passive: true }); - dom.addEventListener(element, 'mousedown', onMouseDown, { + dom.addEventListener(element, "mousedown", onMouseDown, { passive: true }); - dom.addEventListener(element, 'mouseleave', onMouseOut, { + dom.addEventListener(element, "mouseleave", onMouseOut, { passive: true }); - dom.addEventListener(element, 'mouseup', onMouseOut, { + dom.addEventListener(element, "mouseup", onMouseOut, { passive: true }); } @@ -553,38 +553,38 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo initTapHold(container); if (options.bindOnClick !== false) { - container.addEventListener('click', onContainerClick); + container.addEventListener("click", onContainerClick); } self.onContainerClick = onContainerClick; self.destroy = function () { - container.removeEventListener('click', onContainerClick); - container.removeEventListener('contextmenu', onTapHold); + container.removeEventListener("click", onContainerClick); + container.removeEventListener("contextmenu", onTapHold); var element = container; - dom.removeEventListener(element, 'touchstart', onTouchStart, { + dom.removeEventListener(element, "touchstart", onTouchStart, { passive: true }); - dom.removeEventListener(element, 'touchmove', onTouchMove, { + dom.removeEventListener(element, "touchmove", onTouchMove, { passive: true }); - dom.removeEventListener(element, 'touchend', onTouchEnd, { + dom.removeEventListener(element, "touchend", onTouchEnd, { passive: true }); // this fires in safari due to magnifying class - //dom.removeEventListener(element, 'touchcancel', onTouchEnd, { + //dom.removeEventListener(element, "touchcancel", onTouchEnd, { // passive: true //}); - dom.removeEventListener(element, 'mousedown', onMouseDown, { + dom.removeEventListener(element, "mousedown", onMouseDown, { passive: true }); - dom.removeEventListener(element, 'mouseleave', onMouseOut, { + dom.removeEventListener(element, "mouseleave", onMouseOut, { passive: true }); - dom.removeEventListener(element, 'mouseup', onMouseOut, { + dom.removeEventListener(element, "mouseup", onMouseOut, { passive: true }); }; From 7a10be5933924b4ce0c3acfb602f89dd5c12056b Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 2 Nov 2019 20:38:58 +0300 Subject: [PATCH 10/43] Add autofocus on page load --- src/components/autoFocuser.js | 64 ++++++++++++++++++++++ src/controllers/addserver.js | 4 ++ src/controllers/itemdetailpage.js | 21 +------ src/controllers/loginpage.js | 4 ++ src/controllers/movies/moviecollections.js | 4 ++ src/controllers/movies/movies.js | 4 ++ src/controllers/music/musicalbums.js | 4 ++ src/controllers/music/musicartists.js | 4 ++ src/controllers/music/musicgenres.js | 4 ++ src/controllers/music/musicplaylists.js | 4 ++ src/controllers/music/musicrecommended.js | 4 ++ src/controllers/music/songs.js | 4 ++ src/controllers/shows/episodes.js | 4 ++ src/controllers/shows/tvlatest.js | 4 ++ src/controllers/shows/tvrecommended.js | 4 ++ src/controllers/shows/tvshows.js | 4 ++ src/controllers/shows/tvstudios.js | 4 ++ src/controllers/user/display.js | 3 +- src/controllers/user/home.js | 3 +- src/controllers/user/menu.js | 4 ++ src/controllers/user/playback.js | 3 +- src/controllers/user/subtitles.js | 3 +- src/controllers/userpasswordpage.js | 4 ++ src/scripts/site.js | 4 ++ 24 files changed, 147 insertions(+), 22 deletions(-) create mode 100644 src/components/autoFocuser.js diff --git a/src/components/autoFocuser.js b/src/components/autoFocuser.js new file mode 100644 index 0000000000..65358b1bc5 --- /dev/null +++ b/src/components/autoFocuser.js @@ -0,0 +1,64 @@ +define(["focusManager"], function (focusManager) { + "use strict"; + + /** + * Previously selected element. + */ + var activeElement; + + /** + * Start AutoFocuser + */ + function enable() { + window.addEventListener("focusin", function (e) { + activeElement = e.target; + }); + + console.log("AutoFocuser enabled"); + } + + /** + * Set focus on a suitable element, taking into account the previously selected. + */ + function autoFocus(container) { + container = container || document.body; + + var candidates = []; + + if (activeElement) { + // These elements are recreated + if (activeElement.classList.contains("btnPreviousPage")) { + candidates.push(container.querySelector(".btnPreviousPage")); + candidates.push(container.querySelector(".btnNextPage")); + } else if (activeElement.classList.contains("btnNextPage")) { + candidates.push(container.querySelector(".btnNextPage")); + candidates.push(container.querySelector(".btnPreviousPage")); + } else if (activeElement.classList.contains("btnSelectView")) { + candidates.push(container.querySelector(".btnSelectView")); + } + + candidates.push(activeElement); + } + + candidates = candidates.concat(Array.from(container.querySelectorAll(".btnResume"))); + candidates = candidates.concat(Array.from(container.querySelectorAll(".btnPlay"))); + + var notFound = candidates.every(function (element) { + if (focusManager.isCurrentlyFocusable(element)) { + focusManager.focus(element); + return false; + } + + return true; + }); + + if (notFound) { + focusManager.autoFocus(container); + } + } + + return { + enable: enable, + autoFocus: autoFocus + }; +}); diff --git a/src/controllers/addserver.js b/src/controllers/addserver.js index 55b670f546..a55ba3066c 100644 --- a/src/controllers/addserver.js +++ b/src/controllers/addserver.js @@ -46,6 +46,10 @@ define(["appSettings", "loading", "browser", "emby-button"], function(appSetting view.querySelector(".addServerForm").addEventListener("submit", onServerSubmit); view.querySelector(".btnCancel").addEventListener("click", goBack); + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(view); + }); + function onServerSubmit(e) { submitServer(view); e.preventDefault(); diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 5bc54edf74..b14591274d 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -617,24 +617,9 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild hideAll(page, "btnDownload", true); } - try { - require(["focusManager"], function (focusManager) { - [".btnResume", ".btnPlay"].every(function (cls) { - var elems = page.querySelectorAll(cls); - - for (var i = 0; i < elems.length; i++) { - if (focusManager.isCurrentlyFocusable(elems[i])) { - focusManager.focus(elems[i]); - return false; - } - } - - return true; - }); - }); - } catch (e) { - console.log(e); - } + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(page); + }); } function logoImageUrl(item, apiClient, options) { diff --git a/src/controllers/loginpage.js b/src/controllers/loginpage.js index ef54d20bf7..8dd041a9f1 100644 --- a/src/controllers/loginpage.js +++ b/src/controllers/loginpage.js @@ -116,6 +116,10 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout view.querySelector(".visualLoginForm").classList.remove("hide"); view.querySelector(".manualLoginForm").classList.add("hide"); view.querySelector(".btnManual").classList.remove("hide"); + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(view); + }); } view.querySelector("#divUsers").addEventListener("click", function(e) { diff --git a/src/controllers/movies/moviecollections.js b/src/controllers/movies/moviecollections.js index d5bd96d349..f17f64b7c8 100644 --- a/src/controllers/movies/moviecollections.js +++ b/src/controllers/movies/moviecollections.js @@ -172,6 +172,10 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(page); + }); }); } diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index b4e30602fd..3a365acc90 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -77,6 +77,10 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", isLoading = false; loading.hide(); + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(tabContent); + }); } function getItemsHtml(items) { diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index ac45d9a15b..0cfb61e2b6 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -160,6 +160,10 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser libraryBrowser.saveQueryValues(getSavedQueryKey(), query); loading.hide(); isLoading = false; + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(tabContent); + }); }); } diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index 5159f635f8..aaeea8c885 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -144,6 +144,10 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(tabContent); + }); }); } diff --git a/src/controllers/music/musicgenres.js b/src/controllers/music/musicgenres.js index ed1efc0a6a..e357cdabbd 100644 --- a/src/controllers/music/musicgenres.js +++ b/src/controllers/music/musicgenres.js @@ -87,6 +87,10 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f imageLoader.lazyChildren(elem); libraryBrowser.saveQueryValues(getSavedQueryKey(), query); loading.hide(); + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(context); + }); }); } diff --git a/src/controllers/music/musicplaylists.js b/src/controllers/music/musicplaylists.js index 964896077b..fd458c88ac 100644 --- a/src/controllers/music/musicplaylists.js +++ b/src/controllers/music/musicplaylists.js @@ -58,6 +58,10 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f imageLoader.lazyChildren(elem); libraryBrowser.saveQueryValues(getSavedQueryKey(), query); loading.hide(); + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(context); + }); }); } diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index fc3371833d..556877aa1b 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -59,6 +59,10 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " }); imageLoader.lazyChildren(elem); loading.hide(); + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(page); + }); }); } diff --git a/src/controllers/music/songs.js b/src/controllers/music/songs.js index 4806195edd..47263be0d2 100644 --- a/src/controllers/music/songs.js +++ b/src/controllers/music/songs.js @@ -104,6 +104,10 @@ define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "emby- libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(page); + }); }); } diff --git a/src/controllers/shows/episodes.js b/src/controllers/shows/episodes.js index 42d9d89f7a..9c61ac80d8 100644 --- a/src/controllers/shows/episodes.js +++ b/src/controllers/shows/episodes.js @@ -144,6 +144,10 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(page); + }); }); } diff --git a/src/controllers/shows/tvlatest.js b/src/controllers/shows/tvlatest.js index 2a1ed56bf4..5862fce45d 100644 --- a/src/controllers/shows/tvlatest.js +++ b/src/controllers/shows/tvlatest.js @@ -40,6 +40,10 @@ define(["loading", "components/groupedcards", "cardBuilder", "apphost", "imageLo elem.innerHTML = html; imageLoader.lazyChildren(elem); loading.hide(); + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(context); + }); }); } diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index 1386e76a31..d1adb04342 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -97,6 +97,10 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do cardLayout: false }); loading.hide(); + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(view); + }); }); } diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index adccd98234..1dec530540 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -172,6 +172,10 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(page); + }); }); } diff --git a/src/controllers/shows/tvstudios.js b/src/controllers/shows/tvstudios.js index 3c000a8e72..4e715e1fd7 100644 --- a/src/controllers/shows/tvstudios.js +++ b/src/controllers/shows/tvstudios.js @@ -46,6 +46,10 @@ define(["loading", "libraryBrowser", "cardBuilder", "apphost"], function (loadin context: "tvshows" }); loading.hide(); + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(context); + }); }); } diff --git a/src/controllers/user/display.js b/src/controllers/user/display.js index f91e874a89..aea471685e 100644 --- a/src/controllers/user/display.js +++ b/src/controllers/user/display.js @@ -24,7 +24,8 @@ define(["displaySettings", "userSettingsBuilder", "userSettings"], function (Dis element: view.querySelector(".settingsContainer"), userSettings: userSettings, enableSaveButton: false, - enableSaveConfirmation: false + enableSaveConfirmation: false, + autoFocus: true }); } }); diff --git a/src/controllers/user/home.js b/src/controllers/user/home.js index 5794d58723..7f1e1a4858 100644 --- a/src/controllers/user/home.js +++ b/src/controllers/user/home.js @@ -24,7 +24,8 @@ define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loadin element: view.querySelector(".homeScreenSettingsContainer"), userSettings: userSettings, enableSaveButton: false, - enableSaveConfirmation: false + enableSaveConfirmation: false, + autoFocus: true }); } }); diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js index d9fa2ab998..4e0a7824b7 100644 --- a/src/controllers/user/menu.js +++ b/src/controllers/user/menu.js @@ -35,6 +35,10 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio page.querySelector(".adminSection").classList.add("hide"); } }); + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(view); + }); }); }; }); diff --git a/src/controllers/user/playback.js b/src/controllers/user/playback.js index f2463ad8df..a3661e4096 100644 --- a/src/controllers/user/playback.js +++ b/src/controllers/user/playback.js @@ -24,7 +24,8 @@ define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading" element: view.querySelector(".settingsContainer"), userSettings: userSettings, enableSaveButton: false, - enableSaveConfirmation: false + enableSaveConfirmation: false, + autoFocus: true }); } }); diff --git a/src/controllers/user/subtitles.js b/src/controllers/user/subtitles.js index 205265efcd..2f48848593 100644 --- a/src/controllers/user/subtitles.js +++ b/src/controllers/user/subtitles.js @@ -24,7 +24,8 @@ define(["subtitleSettings", "userSettingsBuilder", "userSettings"], function (Su element: view.querySelector(".settingsContainer"), userSettings: userSettings, enableSaveButton: false, - enableSaveConfirmation: false + enableSaveConfirmation: false, + autoFocus: true }); } }); diff --git a/src/controllers/userpasswordpage.js b/src/controllers/userpasswordpage.js index 30ca063278..eeb9b25e3e 100644 --- a/src/controllers/userpasswordpage.js +++ b/src/controllers/userpasswordpage.js @@ -47,6 +47,10 @@ define(["loading", "libraryMenu", "emby-button"], function (loading, libraryMenu } page.querySelector(".chkEnableLocalEasyPassword").checked = user.Configuration.EnableLocalPassword; + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(page); + }); }); }); page.querySelector("#txtCurrentPassword").value = ""; diff --git a/src/scripts/site.js b/src/scripts/site.js index b5fa85ac6c..b25624add0 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -477,6 +477,9 @@ var AppInfo = {}; require(["keyboardnavigation"], function(keyboardnavigation) { keyboardnavigation.enable(); }); + require(["autoFocuser"], function(autoFocuser) { + autoFocuser.enable(); + }); }); }); } @@ -858,6 +861,7 @@ var AppInfo = {}; define("serverNotifications", [componentsPath + "/serverNotifications/serverNotifications"], returnFirstDependency); define("skinManager", [componentsPath + "/skinManager"], returnFirstDependency); define("keyboardnavigation", [componentsPath + "/keyboardnavigation"], returnFirstDependency); + define("autoFocuser", [componentsPath + "/autoFocuser"], returnFirstDependency); define("connectionManager", [], function () { return ConnectionManager; }); From 3962dcf58ef7bd3b2b831176fcba4ad9673f84b4 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 14 Nov 2019 16:41:50 +0300 Subject: [PATCH 11/43] Add autofocus on itemsContainer --- src/components/autoFocuser.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/components/autoFocuser.js b/src/components/autoFocuser.js index 65358b1bc5..40b2c90703 100644 --- a/src/components/autoFocuser.js +++ b/src/components/autoFocuser.js @@ -52,6 +52,15 @@ define(["focusManager"], function (focusManager) { return true; }); + if (notFound) { + // FIXME: Multiple itemsContainers + var itemsContainer = container.querySelector(".itemsContainer"); + + if (itemsContainer) { + notFound = !focusManager.autoFocus(itemsContainer); + } + } + if (notFound) { focusManager.autoFocus(container); } From e588edbccab75db422b0a8d6f60f0313f4dda53a Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 14 Nov 2019 18:33:31 +0300 Subject: [PATCH 12/43] Disable AutoFocuser on non-TV layouts --- src/components/autoFocuser.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/components/autoFocuser.js b/src/components/autoFocuser.js index 40b2c90703..29c5a6b5e6 100644 --- a/src/components/autoFocuser.js +++ b/src/components/autoFocuser.js @@ -1,4 +1,4 @@ -define(["focusManager"], function (focusManager) { +define(["focusManager", "layoutManager"], function (focusManager, layoutManager) { "use strict"; /** @@ -6,10 +6,21 @@ define(["focusManager"], function (focusManager) { */ var activeElement; + /** + * Returns true if AutoFocuser is enabled. + */ + function isEnabled() { + return layoutManager.tv; + }; + /** * Start AutoFocuser */ function enable() { + if (!isEnabled()) { + return; + } + window.addEventListener("focusin", function (e) { activeElement = e.target; }); @@ -21,6 +32,10 @@ define(["focusManager"], function (focusManager) { * Set focus on a suitable element, taking into account the previously selected. */ function autoFocus(container) { + if (!isEnabled()) { + return; + } + container = container || document.body; var candidates = []; @@ -67,6 +82,7 @@ define(["focusManager"], function (focusManager) { } return { + isEnabled: isEnabled, enable: enable, autoFocus: autoFocus }; From 472d3916415c3f7489b5f08ac183c4f3977414a1 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 14 Nov 2019 20:30:59 +0300 Subject: [PATCH 13/43] Add autofocus on page load --- src/controllers/itemdetailpage.js | 6 ++++++ src/controllers/livetv/livetvchannels.js | 4 ++++ src/controllers/livetv/livetvsuggested.js | 4 ++++ src/controllers/movies/moviesrecommended.js | 15 +++++++++++++++ 4 files changed, 29 insertions(+) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index b14591274d..e077f027e2 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1715,6 +1715,12 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild hideAll(page, "btnPlay", false); hideAll(page, "btnShuffle", false); } + + // HACK: Call autoFocuser again because btnPlay may be hidden, but focused by reloadFromItem + // FIXME: Sometimes focus does not move until all (?) sections are loaded + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(page); + }); } function renderCollectionItemType(page, parentItem, type, items) { diff --git a/src/controllers/livetv/livetvchannels.js b/src/controllers/livetv/livetvchannels.js index 3e310a17a3..2de7e81843 100644 --- a/src/controllers/livetv/livetvchannels.js +++ b/src/controllers/livetv/livetvchannels.js @@ -102,6 +102,10 @@ define(["cardBuilder", "imageLoader", "libraryBrowser", "loading", "events", "em renderChannels(context, result); loading.hide(); isLoading = false; + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(view); + }); }); } diff --git a/src/controllers/livetv/livetvsuggested.js b/src/controllers/livetv/livetvsuggested.js index 509b7f521c..8f65df7e6f 100644 --- a/src/controllers/livetv/livetvsuggested.js +++ b/src/controllers/livetv/livetvsuggested.js @@ -49,6 +49,10 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", showAirEndTime: true }); loading.hide(); + + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(page); + }); }); } diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 82c0b6a12d..0327217e44 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -36,6 +36,9 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" showYear: true, centerText: true }); + + // FIXME: Wait for all sections to load + autoFocus(page); }); } @@ -76,6 +79,9 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" showYear: true, centerText: true }); + + // FIXME: Wait for all sections to load + autoFocus(page); }); } @@ -147,6 +153,15 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" var recs = page.querySelector(".recommendations"); recs.innerHTML = html; imageLoader.lazyChildren(recs); + + // FIXME: Wait for all sections to load + autoFocus(page); + }); + } + + function autoFocus(page) { + require(["autoFocuser"], function (autoFocuser) { + autoFocuser.autoFocus(page); }); } From e9073507007d2d28b7fbc53783cee81ad50f000a Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 14 Nov 2019 20:34:17 +0300 Subject: [PATCH 14/43] Disable autoFocus in user settings on non-TV layouts (in sync with AutoFocuser) --- src/controllers/user/display.js | 4 ++-- src/controllers/user/home.js | 4 ++-- src/controllers/user/playback.js | 4 ++-- src/controllers/user/subtitles.js | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/controllers/user/display.js b/src/controllers/user/display.js index aea471685e..f348f28750 100644 --- a/src/controllers/user/display.js +++ b/src/controllers/user/display.js @@ -1,4 +1,4 @@ -define(["displaySettings", "userSettingsBuilder", "userSettings"], function (DisplaySettings, userSettingsBuilder, currentUserSettings) { +define(["displaySettings", "userSettingsBuilder", "userSettings", "autoFocuser"], function (DisplaySettings, userSettingsBuilder, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -25,7 +25,7 @@ define(["displaySettings", "userSettingsBuilder", "userSettings"], function (Dis userSettings: userSettings, enableSaveButton: false, enableSaveConfirmation: false, - autoFocus: true + autoFocus: autoFocuser.isEnabled() }); } }); diff --git a/src/controllers/user/home.js b/src/controllers/user/home.js index 7f1e1a4858..7f12efc7fb 100644 --- a/src/controllers/user/home.js +++ b/src/controllers/user/home.js @@ -1,4 +1,4 @@ -define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "listViewStyle"], function (HomescreenSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings) { +define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (HomescreenSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -25,7 +25,7 @@ define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loadin userSettings: userSettings, enableSaveButton: false, enableSaveConfirmation: false, - autoFocus: true + autoFocus: autoFocuser.isEnabled() }); } }); diff --git a/src/controllers/user/playback.js b/src/controllers/user/playback.js index a3661e4096..3def9d1931 100644 --- a/src/controllers/user/playback.js +++ b/src/controllers/user/playback.js @@ -1,4 +1,4 @@ -define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "listViewStyle"], function (PlaybackSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings) { +define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (PlaybackSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -25,7 +25,7 @@ define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading" userSettings: userSettings, enableSaveButton: false, enableSaveConfirmation: false, - autoFocus: true + autoFocus: autoFocuser.isEnabled() }); } }); diff --git a/src/controllers/user/subtitles.js b/src/controllers/user/subtitles.js index 2f48848593..1f1102194e 100644 --- a/src/controllers/user/subtitles.js +++ b/src/controllers/user/subtitles.js @@ -1,4 +1,4 @@ -define(["subtitleSettings", "userSettingsBuilder", "userSettings"], function (SubtitleSettings, userSettingsBuilder, currentUserSettings) { +define(["subtitleSettings", "userSettingsBuilder", "userSettings", "autoFocuser"], function (SubtitleSettings, userSettingsBuilder, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -25,7 +25,7 @@ define(["subtitleSettings", "userSettingsBuilder", "userSettings"], function (Su userSettings: userSettings, enableSaveButton: false, enableSaveConfirmation: false, - autoFocus: true + autoFocus: autoFocuser.isEnabled() }); } }); From 22d0a5705d4730f70bfb85310d87363030597531 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 14 Nov 2019 23:55:44 +0300 Subject: [PATCH 15/43] Fix compatibility with older browsers (webOS 2/3) --- src/components/autoFocuser.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/components/autoFocuser.js b/src/components/autoFocuser.js index 29c5a6b5e6..e3cec9281d 100644 --- a/src/components/autoFocuser.js +++ b/src/components/autoFocuser.js @@ -28,6 +28,13 @@ define(["focusManager", "layoutManager"], function (focusManager, layoutManager) console.log("AutoFocuser enabled"); } + /** + * Create an array from some source. + */ + var arrayFrom = Array.prototype.from || function (src) { + return Array.prototype.slice.call(src); + } + /** * Set focus on a suitable element, taking into account the previously selected. */ @@ -55,8 +62,8 @@ define(["focusManager", "layoutManager"], function (focusManager, layoutManager) candidates.push(activeElement); } - candidates = candidates.concat(Array.from(container.querySelectorAll(".btnResume"))); - candidates = candidates.concat(Array.from(container.querySelectorAll(".btnPlay"))); + candidates = candidates.concat(arrayFrom(container.querySelectorAll(".btnResume"))); + candidates = candidates.concat(arrayFrom(container.querySelectorAll(".btnPlay"))); var notFound = candidates.every(function (element) { if (focusManager.isCurrentlyFocusable(element)) { From 1da88768117e1f509b65f23eaa2117f609723473 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 20 Nov 2019 00:24:54 +0300 Subject: [PATCH 16/43] Replace all Unicode icon with there value --- .../accessschedule.template.html | 5 ++-- src/components/actionsheet/actionsheet.js | 4 +-- src/components/alphapicker/alphapicker.js | 6 ++-- src/components/cardbuilder/cardBuilder.js | 24 +++++++-------- .../cardbuilder/peoplecardbuilder.js | 4 +-- src/components/channelmapper/channelmapper.js | 2 +- .../collectioneditor/collectioneditor.js | 6 ++-- .../directorybrowser/directorybrowser.js | 2 +- src/components/emby-checkbox/emby-checkbox.js | 2 +- .../emby-scrollbuttons/emby-scrollbuttons.js | 4 +-- src/components/emby-select/emby-select.js | 2 +- src/components/favoriteitems.js | 2 +- src/components/filtermenu/filtermenu.js | 4 +-- .../guide/guide-settings.template.html | 4 +-- src/components/guide/guide.js | 16 +++++----- src/components/guide/tvguide.template.html | 8 ++--- .../homescreensettings/homescreensettings.js | 8 ++--- src/components/homesections/homesections.js | 6 ++-- .../imagedownloader/imagedownloader.js | 4 +-- .../imagedownloader.template.html | 2 +- .../imageeditor/imageeditor.template.html | 14 ++++----- .../imageoptionseditor.template.html | 4 +-- .../imageuploader/imageuploader.template.html | 4 +-- src/components/indicators/indicators.js | 22 +++++++------- .../itemMediaInfo/itemMediaInfo.template.html | 2 +- .../itemidentifier.template.html | 2 +- src/components/listview/listview.js | 16 +++++----- src/components/mediainfo/mediainfo.js | 12 ++++---- .../medialibrarycreator.template.html | 4 +-- .../medialibraryeditor.template.html | 4 +-- .../metadataeditor.template.html | 10 +++---- .../metadataeditor/personeditor.template.html | 4 +-- src/components/multiselect/multiselect.js | 2 +- src/components/nowplayingbar/nowplayingbar.js | 20 ++++++------- src/components/playback/brightnessosd.js | 10 +++---- .../playback/playerSelectionMenu.js | 14 ++++----- src/components/playback/volumeosd.js | 6 ++-- .../playlisteditor/playlisteditor.js | 4 +-- src/components/prompt/prompt.template.html | 4 +-- .../recordingcreator/recordingbutton.js | 12 ++++---- .../recordingcreator.template.html | 4 +-- .../recordingeditor.template.html | 4 +-- .../recordingfields.template.html | 6 ++-- .../seriesrecordingeditor.template.html | 4 +-- src/components/refreshdialog/refreshdialog.js | 4 +-- src/components/remotecontrol/remotecontrol.js | 8 ++--- .../search/searchfields.template.html | 4 +-- src/components/sortmenu/sortmenu.js | 4 +-- .../subtitleeditor/subtitleeditor.js | 2 +- .../subtitleeditor.template.html | 6 ++-- src/components/tabbedview/itemstab.js | 4 +-- src/components/tunerpicker.js | 2 +- .../userdatabuttons/emby-ratingbutton.js | 16 +++++----- .../userdatabuttons/userdatabuttons.js | 10 +++---- src/components/viewsettings/viewsettings.js | 4 +-- src/controllers/availableplugins.js | 2 +- src/controllers/dashboardpage.js | 12 ++++---- src/controllers/devices.js | 2 +- src/controllers/favorites.js | 4 +-- src/controllers/installedplugins.js | 2 +- src/controllers/itemdetailpage.js | 4 +-- src/controllers/list.js | 2 +- src/controllers/medialibrarypage.js | 2 +- src/controllers/movies/moviegenres.js | 2 +- src/controllers/selectserver.js | 2 +- src/controllers/shows/tvgenres.js | 2 +- src/controllers/userprofilespage.js | 2 +- src/controllers/videoosd.js | 12 ++++---- src/dashboard.html | 10 +++---- src/dlnaprofile.html | 4 +-- src/dlnaprofiles.html | 4 +-- src/itemdetails.html | 30 +++++++++---------- src/list.html | 20 ++++++------- src/livetv.html | 16 +++++----- src/livetvstatus.html | 6 ++-- src/music.html | 6 ++-- src/nowplaying.html | 12 ++++---- src/scheduledtask.html | 2 +- src/scripts/librarybrowser.js | 10 +++---- src/scripts/librarymenu.js | 18 +++++------ src/userprofiles.html | 4 +-- src/videoosd.html | 26 ++++++++-------- 82 files changed, 293 insertions(+), 292 deletions(-) diff --git a/src/components/accessschedule/accessschedule.template.html b/src/components/accessschedule/accessschedule.template.html index 8c01d35962..3dbb76f002 100644 --- a/src/components/accessschedule/accessschedule.template.html +++ b/src/components/accessschedule/accessschedule.template.html @@ -1,5 +1,6 @@
- +

${HeaderAccessSchedule}

@@ -36,4 +37,4 @@
- \ No newline at end of file + diff --git a/src/components/actionsheet/actionsheet.js b/src/components/actionsheet/actionsheet.js index 54b6aeddf2..7b179393b2 100644 --- a/src/components/actionsheet/actionsheet.js +++ b/src/components/actionsheet/actionsheet.js @@ -156,7 +156,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu } if (layoutManager.tv) { - html += ''; + html += ''; } // If any items have an icon, give them all an icon just to make sure they're all lined up evenly @@ -356,4 +356,4 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu return { show: show }; -}); \ No newline at end of file +}); diff --git a/src/components/alphapicker/alphapicker.js b/src/components/alphapicker/alphapicker.js index 4cf77f451a..f66e561c50 100644 --- a/src/components/alphapicker/alphapicker.js +++ b/src/components/alphapicker/alphapicker.js @@ -70,7 +70,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b html += '
'; if (options.mode === 'keyboard') { // space_bar icon - html += ''; + html += ''; } else { letters = ['#']; html += mapLetters(letters, vertical).join(''); @@ -81,7 +81,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b if (options.mode === 'keyboard') { // backspace icon - html += ''; + html += ''; html += '
'; letters = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; @@ -321,4 +321,4 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b }; return AlphaPicker; -}); \ No newline at end of file +}); diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 09ad8f1a6d..4c80f32f24 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -767,7 +767,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (isOuterFooter && options.cardLayout && layoutManager.mobile) { if (options.cardFooterAside !== 'none') { - html += ''; + html += ''; } } @@ -1332,15 +1332,15 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var btnCssClass = 'cardOverlayButton cardOverlayButton-br itemAction'; if (options.centerPlayButton) { - overlayButtons += ''; + overlayButtons += ''; } if (overlayPlayButton && !item.IsPlaceHolder && (item.LocationType !== 'Virtual' || !item.MediaType || item.Type === 'Program') && item.Type !== 'Person') { - overlayButtons += ''; + overlayButtons += ''; } if (options.overlayMoreButton) { - overlayButtons += ''; + overlayButtons += ''; } } @@ -1474,7 +1474,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var btnCssClass = 'cardOverlayButton cardOverlayButton-hover itemAction paper-icon-button-light'; if (playbackManager.canPlay(item)) { - html += ''; + html += ''; } html += '
'; @@ -1483,7 +1483,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (itemHelper.canMarkPlayed(item)) { require(['emby-playstatebutton']); - html += ''; + html += ''; } if (itemHelper.canRate(item)) { @@ -1491,10 +1491,10 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var likes = userData.Likes == null ? '' : userData.Likes; require(['emby-ratingbutton']); - html += ''; + html += ''; } - html += ''; + html += ''; html += '
'; html += ''; @@ -1507,10 +1507,10 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return '' + imageHelper.getLibraryIcon(item.CollectionType) + '' } if (item.Type === 'MusicAlbum') { - return ''; + return 'album'; } if (item.Type === 'MusicArtist' || item.Type === 'Person') { - return ''; + return 'person'; } if (options.defaultCardImageIcon) { return '' + options.defaultCardImageIcon + ''; @@ -1602,7 +1602,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana indicatorsElem = ensureIndicators(card, indicatorsElem); indicatorsElem.appendChild(playedIndicator); } - playedIndicator.innerHTML = ''; + playedIndicator.innerHTML = 'check'; } else { playedIndicator = card.querySelector('.playedIndicator'); @@ -1684,7 +1684,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var icon = cell.querySelector('.timerIndicator'); if (!icon) { var indicatorsElem = ensureIndicators(cell); - indicatorsElem.insertAdjacentHTML('beforeend', ''); + indicatorsElem.insertAdjacentHTML('beforeend', 'fiber_manual_record'); } cell.setAttribute('data-timerid', newTimerId); } diff --git a/src/components/cardbuilder/peoplecardbuilder.js b/src/components/cardbuilder/peoplecardbuilder.js index e0a5050dc5..5d34d29e6e 100644 --- a/src/components/cardbuilder/peoplecardbuilder.js +++ b/src/components/cardbuilder/peoplecardbuilder.js @@ -10,7 +10,7 @@ define(['cardBuilder'], function (cardBuilder) { cardFooterAside: 'none', showPersonRoleOrType: true, cardCssClass: 'personCard', - defaultCardImageIcon: '' + defaultCardImageIcon: 'person' }); cardBuilder.buildCards(items, options); } @@ -19,4 +19,4 @@ define(['cardBuilder'], function (cardBuilder) { buildPeopleCards: buildPeopleCards }; -}); \ No newline at end of file +}); diff --git a/src/components/channelmapper/channelmapper.js b/src/components/channelmapper/channelmapper.js index 841a6a81af..0247f79a55 100644 --- a/src/components/channelmapper/channelmapper.js +++ b/src/components/channelmapper/channelmapper.js @@ -127,7 +127,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee var html = ""; var title = globalize.translate("MapChannels"); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += "

"; diff --git a/src/components/collectioneditor/collectioneditor.js b/src/components/collectioneditor/collectioneditor.js index ccb1cdc286..a91594556e 100644 --- a/src/components/collectioneditor/collectioneditor.js +++ b/src/components/collectioneditor/collectioneditor.js @@ -243,13 +243,13 @@ define(['dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectionManage var title = items.length ? globalize.translate('HeaderAddToCollection') : globalize.translate('NewCollection'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; if (appHost.supports('externallinks')) { - html += '' + globalize.translate('Help') + ''; + html += 'info' + globalize.translate('Help') + ''; } html += '
'; @@ -284,4 +284,4 @@ define(['dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectionManage }; return CollectionEditor; -}); \ No newline at end of file +}); diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index aac45f86d6..15787c3dc2 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -265,7 +265,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- var html = ""; html += '
'; - html += ''; + html += ''; html += '

'; html += options.header || Globalize.translate("HeaderSelectPath"); html += "

"; diff --git a/src/components/emby-checkbox/emby-checkbox.js b/src/components/emby-checkbox/emby-checkbox.js index 1721bf3ca7..d6276e826c 100644 --- a/src/components/emby-checkbox/emby-checkbox.js +++ b/src/components/emby-checkbox/emby-checkbox.js @@ -54,7 +54,7 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b outlineClass += ' ' + customClass; } - var checkedIcon = this.getAttribute('data-checkedicon') || ''; + var checkedIcon = this.getAttribute('data-checkedicon') || 'check'; var uncheckedIcon = this.getAttribute('data-uncheckedicon') || ''; var checkHtml = '' + checkedIcon + ''; var uncheckedHtml = '' + uncheckedIcon + ''; diff --git a/src/components/emby-scrollbuttons/emby-scrollbuttons.js b/src/components/emby-scrollbuttons/emby-scrollbuttons.js index 37638a1b89..deec96d9a2 100644 --- a/src/components/emby-scrollbuttons/emby-scrollbuttons.js +++ b/src/components/emby-scrollbuttons/emby-scrollbuttons.js @@ -7,7 +7,7 @@ define(['layoutManager', 'dom', 'css!./emby-scrollbuttons', 'registerElement', ' function getScrollButtonHtml(direction) { var html = ''; - var icon = direction === 'left' ? '' : ''; + var icon = direction === 'left' ? 'chevron_left' : 'chevron_right'; html += ''; + html += ''; html += '

${Filters}

'; html += '
'; @@ -345,4 +345,4 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', }; return FilterMenu; -}); \ No newline at end of file +}); diff --git a/src/components/guide/guide-settings.template.html b/src/components/guide/guide-settings.template.html index 605c408a85..d85b4a71b9 100644 --- a/src/components/guide/guide-settings.template.html +++ b/src/components/guide/guide-settings.template.html @@ -1,5 +1,5 @@
- +

${Settings}

@@ -65,4 +65,4 @@
-
\ No newline at end of file + diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index d299d7fd7c..d3e1d4c38f 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -277,7 +277,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var nextDay = new Date(date.getTime() + msPerDay - 2000); // Normally we'd want to just let responsive css handle this, - // but since mobile browsers are often underpowered, + // but since mobile browsers are often underpowered, // it can help performance to get them out of the markup var allowIndicators = dom.getWindowSize().innerWidth >= 600; @@ -423,7 +423,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var status; if (item.Type === 'SeriesTimer') { - return ''; + return 'fiber_smart_record'; } else if (item.TimerId || item.SeriesTimerId) { @@ -440,13 +440,13 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return ''; + return 'fiber_smart_record'; } - return ''; + return 'fiber_smart_record'; } - return ''; + return 'fiber_manual_record'; } function getChannelProgramsHtml(context, date, channel, programs, options, listInfo) { @@ -562,7 +562,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += '
'; - html += '
'; + html += '
keyboard_arrow_left
'; html += '
' + program.Name; @@ -1126,7 +1126,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var icon = cell.querySelector('.timerIcon'); if (!icon) { - cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', ''); + cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', 'fiber_manual_record'); } if (newTimerId) { @@ -1287,4 +1287,4 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', }); return Guide; -}); \ No newline at end of file +}); diff --git a/src/components/guide/tvguide.template.html b/src/components/guide/tvguide.template.html index 8778fcd3f7..7edffec6d1 100644 --- a/src/components/guide/tvguide.template.html +++ b/src/components/guide/tvguide.template.html @@ -10,7 +10,7 @@
@@ -30,9 +30,9 @@
-
\ No newline at end of file +
diff --git a/src/components/homescreensettings/homescreensettings.js b/src/components/homescreensettings/homescreensettings.js index 633437d26e..9aeb1e35c0 100644 --- a/src/components/homescreensettings/homescreensettings.js +++ b/src/components/homescreensettings/homescreensettings.js @@ -152,7 +152,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa currentHtml += '
'; - currentHtml += ''; + currentHtml += 'folder_open'; currentHtml += '
'; @@ -162,8 +162,8 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa currentHtml += '
'; - currentHtml += ''; - currentHtml += ''; + currentHtml += ''; + currentHtml += ''; currentHtml += '
'; @@ -542,4 +542,4 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa }; return HomeScreenSettings; -}); \ No newline at end of file +}); diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 3fc549e6e4..91abafa545 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -259,7 +259,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('LatestFromLibrary', parent.Name); html += '

'; - html += ''; + html += 'chevron_right'; html += ''; } else { html += '

' + globalize.translate('LatestFromLibrary', parent.Name) + '

'; @@ -607,7 +607,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('HeaderOnNow'); html += '

'; - html += ''; + html += 'chevron_right'; html += ''; } else { @@ -682,7 +682,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('HeaderNextUp'); html += '

'; - html += ''; + html += 'chevron_right'; html += ''; } else { html += '

' + globalize.translate('HeaderNextUp') + '

'; diff --git a/src/components/imagedownloader/imagedownloader.js b/src/components/imagedownloader/imagedownloader.js index 182b72071f..7625b498f1 100644 --- a/src/components/imagedownloader/imagedownloader.js +++ b/src/components/imagedownloader/imagedownloader.js @@ -116,7 +116,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader' if (showControls) { html += '
'; - html += ''; + html += ''; html += ''; html += '
'; } @@ -283,7 +283,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader' if (enableFooterButtons) { html += '
'; - html += ''; + html += ''; html += '
'; } diff --git a/src/components/imagedownloader/imagedownloader.template.html b/src/components/imagedownloader/imagedownloader.template.html index 2adc573de6..c192fad299 100644 --- a/src/components/imagedownloader/imagedownloader.template.html +++ b/src/components/imagedownloader/imagedownloader.template.html @@ -1,5 +1,5 @@
- +

${Search}

diff --git a/src/components/imageeditor/imageeditor.template.html b/src/components/imageeditor/imageeditor.template.html index e25dc8789b..3524f449de 100644 --- a/src/components/imageeditor/imageeditor.template.html +++ b/src/components/imageeditor/imageeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderEditImages}

@@ -12,10 +12,10 @@

${Images}

@@ -27,10 +27,10 @@

${Backdrops}

@@ -42,10 +42,10 @@

${Screenshots}

diff --git a/src/components/imageoptionseditor/imageoptionseditor.template.html b/src/components/imageoptionseditor/imageoptionseditor.template.html index a247c773e7..9bb1f8426b 100644 --- a/src/components/imageoptionseditor/imageoptionseditor.template.html +++ b/src/components/imageoptionseditor/imageoptionseditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderImageOptions}

@@ -75,4 +75,4 @@
-
\ No newline at end of file +
diff --git a/src/components/imageuploader/imageuploader.template.html b/src/components/imageuploader/imageuploader.template.html index 90d9cf0def..b33355945a 100644 --- a/src/components/imageuploader/imageuploader.template.html +++ b/src/components/imageuploader/imageuploader.template.html @@ -1,5 +1,5 @@
- +

${HeaderUploadImage}

@@ -14,7 +14,7 @@

${HeaderAddUpdateImage}

diff --git a/src/components/indicators/indicators.js b/src/components/indicators/indicators.js index 2e8d28523e..8deedef6c8 100644 --- a/src/components/indicators/indicators.js +++ b/src/components/indicators/indicators.js @@ -90,7 +90,7 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun } if (userData.PlayedPercentage && userData.PlayedPercentage >= 100 || (userData.Played)) { - return '
'; + return '
check
'; } } @@ -119,7 +119,7 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun var status; if (item.Type === 'SeriesTimer') { - return ''; + return 'fiber_smart_record'; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; } else if (item.Type === 'Timer') { @@ -130,20 +130,20 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return ''; + return 'fiber_smart_record'; } - return ''; + return 'fiber_smart_record'; } - return ''; + return 'fiber_manual_record'; } function getSyncIndicator(item) { if (item.SyncPercent === 100) { - return '
'; + return '
file_download
'; } else if (item.SyncPercent != null) { - return '
'; + return '
file_download
'; } return ''; @@ -151,13 +151,13 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun function getTypeIndicator(item) { if (item.Type === 'Video') { - return '
'; + return '
videocam
'; } if (item.Type === 'Folder' || item.Type === 'PhotoAlbum') { - return '
'; + return '
folder
'; } if (item.Type === 'Photo') { - return '
'; + return '
photo
'; } return ''; @@ -232,4 +232,4 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun getTypeIndicator: getTypeIndicator, getMissingIndicator: getMissingIndicator }; -}); \ No newline at end of file +}); diff --git a/src/components/itemMediaInfo/itemMediaInfo.template.html b/src/components/itemMediaInfo/itemMediaInfo.template.html index 7e011b4cf4..a947a55d2e 100644 --- a/src/components/itemMediaInfo/itemMediaInfo.template.html +++ b/src/components/itemMediaInfo/itemMediaInfo.template.html @@ -1,5 +1,5 @@
- +

${HeaderMediaInfo}

diff --git a/src/components/itemidentifier/itemidentifier.template.html b/src/components/itemidentifier/itemidentifier.template.html index 9750bab57d..0081b543a4 100644 --- a/src/components/itemidentifier/itemidentifier.template.html +++ b/src/components/itemidentifier/itemidentifier.template.html @@ -1,6 +1,6 @@

${Identify} diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 257551abf6..53c061618f 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -265,9 +265,9 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (!clickEntireItem && options.dragHandle) { - //html += ''; + //html += ''; // Firefox and Edge are not allowing the button to be draggable - html += ''; + html += 'drag_handle'; } if (options.image !== false) { @@ -301,7 +301,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (playOnImageClick) { - html += ''; + html += ''; } var progressHtml = indicators.getProgressBarHtml(item, { @@ -434,7 +434,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += '
'; - var moreIcon = ''; + var moreIcon = 'more_horiz'; html += getTextLinesHtml(textlines, isLargeStyle); @@ -481,7 +481,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (!clickEntireItem) { if (options.addToListButton) { - html += ''; + html += ''; } if (options.moreButton !== false) { @@ -489,7 +489,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (options.infoButton) { - html += ''; + html += ''; } if (options.rightButtons) { @@ -504,11 +504,11 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var likes = userData.Likes == null ? '' : userData.Likes; if (itemHelper.canMarkPlayed(item)) { - html += ''; + html += ''; } if (itemHelper.canRate(item)) { - html += ''; + html += ''; } html += ''; diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index 441adac3dd..7b7eb37d1b 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -6,7 +6,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater var status; if (item.Type === 'SeriesTimer') { - return ''; + return 'fiber_smart_record'; } else if (item.TimerId || item.SeriesTimerId) { @@ -23,13 +23,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return ''; + return 'fiber_smart_record'; } - return ''; + return 'fiber_smart_record'; } - return ''; + return 'fiber_manual_record'; } function getProgramInfoHtml(item, options) { @@ -411,7 +411,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (rating) { html += '
'; - html += ''; + html += 'star'; html += rating; html += '
'; } @@ -665,4 +665,4 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater getMediaInfoStats: getMediaInfoStats, getResolutionText: getResolutionText }; -}); \ No newline at end of file +}); diff --git a/src/components/medialibrarycreator/medialibrarycreator.template.html b/src/components/medialibrarycreator/medialibrarycreator.template.html index 76b37a8f52..c7073bc9f2 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.template.html +++ b/src/components/medialibrarycreator/medialibrarycreator.template.html @@ -1,5 +1,5 @@
- +

${ButtonAddMediaLibrary}

@@ -40,4 +40,4 @@ -
\ No newline at end of file +

diff --git a/src/components/medialibraryeditor/medialibraryeditor.template.html b/src/components/medialibraryeditor/medialibraryeditor.template.html index 40238bf06e..dd13df4ca5 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.template.html +++ b/src/components/medialibraryeditor/medialibraryeditor.template.html @@ -1,5 +1,5 @@
- +

@@ -34,4 +34,4 @@ -
\ No newline at end of file +
diff --git a/src/components/metadataeditor/metadataeditor.template.html b/src/components/metadataeditor/metadataeditor.template.html index bb6e0bbcbd..d44136c6b6 100644 --- a/src/components/metadataeditor/metadataeditor.template.html +++ b/src/components/metadataeditor/metadataeditor.template.html @@ -1,5 +1,5 @@
- +

${Edit}

@@ -184,7 +184,7 @@ ${Genres}
@@ -193,7 +193,7 @@ ${People}
@@ -203,7 +203,7 @@ ${Studios}
@@ -212,7 +212,7 @@ ${Tags}
diff --git a/src/components/metadataeditor/personeditor.template.html b/src/components/metadataeditor/personeditor.template.html index 6a808db1f4..75b011aa73 100644 --- a/src/components/metadataeditor/personeditor.template.html +++ b/src/components/metadataeditor/personeditor.template.html @@ -1,5 +1,5 @@
- +

${Edit}

@@ -35,4 +35,4 @@
-
\ No newline at end of file +
diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index d706b76b99..d66e1093ba 100644 --- a/src/components/multiselect/multiselect.js +++ b/src/components/multiselect/multiselect.js @@ -129,7 +129,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo html += ''; html += '

'; - var moreIcon = ''; + var moreIcon = 'more_horiz'; html += ''; selectionCommandsPanel.innerHTML = html; diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 9fac61ba1f..5b76cce18a 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -42,31 +42,31 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', // The onclicks are needed due to the return false above html += '
'; - html += ''; + html += ''; - html += ''; + html += ''; html += ''; - html += ''; + html += ''; html += '
'; html += '
'; html += '
'; - html += ''; + html += ''; html += '
'; html += ''; html += '
'; - html += ''; + html += ''; html += '
'; html += '
'; - html += ''; - html += ''; + html += ''; + html += ''; html += '
'; html += ''; @@ -401,9 +401,9 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } if (isMuted) { - muteButton.querySelector('i').innerHTML = ''; + muteButton.querySelector('i').innerHTML = 'volume_off'; } else { - muteButton.querySelector('i').innerHTML = ''; + muteButton.querySelector('i').innerHTML = 'volume_up'; } if (progressElement) { @@ -572,7 +572,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', var userData = item.UserData || {}; var likes = userData.Likes == null ? '' : userData.Likes; - nowPlayingUserData.innerHTML = ''; + nowPlayingUserData.innerHTML = ''; }); } diff --git a/src/components/playback/brightnessosd.js b/src/components/playback/brightnessosd.js index 1797463f29..4601cd5302 100644 --- a/src/components/playback/brightnessosd.js +++ b/src/components/playback/brightnessosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += ''; + html += 'brightness_high'; html += '
'; @@ -102,12 +102,12 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia if (iconElement) { if (brightness >= 80) { - iconElement.innerHTML = ''; + iconElement.innerHTML = 'brightness_high'; } else if (brightness >= 20) { - iconElement.innerHTML = ''; + iconElement.innerHTML = 'brightness_medium'; } else { - iconElement.innerHTML = ''; + iconElement.innerHTML = 'brightness_low'; } } if (progressElement) { @@ -162,4 +162,4 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia bindToPlayer(playbackManager.getCurrentPlayer()); -}); \ No newline at end of file +}); diff --git a/src/components/playback/playerSelectionMenu.js b/src/components/playback/playerSelectionMenu.js index 2102720e9a..e06fb6a3e5 100644 --- a/src/components/playback/playerSelectionMenu.js +++ b/src/components/playback/playerSelectionMenu.js @@ -63,17 +63,17 @@ define(['appSettings', 'events', 'browser', 'loading', 'playbackManager', 'appRo switch (deviceType) { case 'smartphone': - return ''; + return 'smartphone'; case 'tablet': - return ''; + return 'tablet'; case 'tv': - return ''; + return 'tv'; case 'cast': - return ''; + return 'cast'; case 'desktop': - return ''; + return 'computer'; default: - return ''; + return 'tv'; } } @@ -320,4 +320,4 @@ define(['appSettings', 'events', 'browser', 'loading', 'playbackManager', 'appRo return { show: showPlayerSelection }; -}); \ No newline at end of file +}); diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index c7a3438d54..b622cc18b1 100644 --- a/src/components/playback/volumeosd.js +++ b/src/components/playback/volumeosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += ''; + html += 'volume_up'; html += '
'; @@ -101,7 +101,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function updatePlayerVolumeState(isMuted, volume) { if (iconElement) { - iconElement.innerHTML = isMuted ? '' : ''; + iconElement.innerHTML = isMuted ? 'volume_off' : 'volume_up'; } if (progressElement) { progressElement.style.width = (volume || 0) + '%'; @@ -155,4 +155,4 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia bindToPlayer(playbackManager.getCurrentPlayer()); -}); \ No newline at end of file +}); diff --git a/src/components/playlisteditor/playlisteditor.js b/src/components/playlisteditor/playlisteditor.js index 0379e56347..4738211a5e 100644 --- a/src/components/playlisteditor/playlisteditor.js +++ b/src/components/playlisteditor/playlisteditor.js @@ -258,7 +258,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager', var title = globalize.translate('HeaderAddToPlaylist'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; @@ -295,4 +295,4 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager', }; return PlaylistEditor; -}); \ No newline at end of file +}); diff --git a/src/components/prompt/prompt.template.html b/src/components/prompt/prompt.template.html index 200c98b116..b1e7f580f0 100644 --- a/src/components/prompt/prompt.template.html +++ b/src/components/prompt/prompt.template.html @@ -1,6 +1,6 @@

@@ -22,4 +22,4 @@
- \ No newline at end of file + diff --git a/src/components/recordingcreator/recordingbutton.js b/src/components/recordingcreator/recordingbutton.js index 0a76d3914c..45c49416a1 100644 --- a/src/components/recordingcreator/recordingbutton.js +++ b/src/components/recordingcreator/recordingbutton.js @@ -30,7 +30,7 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' this.refresh(options.itemId, options.serverId); } var button = options.button; - button.querySelector('i').innerHTML = ''; + button.querySelector('i').innerHTML = 'fiber_manual_record'; var clickFn = onRecordingButtonClick.bind(this); this.clickFn = clickFn; @@ -45,7 +45,7 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' var status; if (item.Type === 'SeriesTimer') { - return ''; + return 'fiber_smart_record'; } else if (item.TimerId || item.SeriesTimerId) { @@ -56,17 +56,17 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' status = item.Status; } else { - return ''; + return 'fiber_manual_record'; } if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return ''; + return 'fiber_smart_record'; } } - return ''; + return 'fiber_manual_record'; } RecordingButton.prototype.refresh = function (serverId, itemId) { @@ -113,4 +113,4 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' }; return RecordingButton; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/recordingcreator.template.html b/src/components/recordingcreator/recordingcreator.template.html index 386aa149cc..2a2840aecc 100644 --- a/src/components/recordingcreator/recordingcreator.template.html +++ b/src/components/recordingcreator/recordingcreator.template.html @@ -1,5 +1,5 @@
- +

@@ -28,4 +28,4 @@
- \ No newline at end of file + diff --git a/src/components/recordingcreator/recordingeditor.template.html b/src/components/recordingcreator/recordingeditor.template.html index e36dda3f57..6b853704f3 100644 --- a/src/components/recordingcreator/recordingeditor.template.html +++ b/src/components/recordingcreator/recordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderRecordingOptions}

@@ -43,4 +43,4 @@
- \ No newline at end of file + diff --git a/src/components/recordingcreator/recordingfields.template.html b/src/components/recordingcreator/recordingfields.template.html index 76ea5cee25..622b0d62e7 100644 --- a/src/components/recordingcreator/recordingfields.template.html +++ b/src/components/recordingcreator/recordingfields.template.html @@ -2,7 +2,7 @@
@@ -14,7 +14,7 @@
@@ -22,4 +22,4 @@ ${Settings}
-
\ No newline at end of file + diff --git a/src/components/recordingcreator/seriesrecordingeditor.template.html b/src/components/recordingcreator/seriesrecordingeditor.template.html index 54133ebbbb..c2e8ebd0ed 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.template.html +++ b/src/components/recordingcreator/seriesrecordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderSeriesOptions}

@@ -75,4 +75,4 @@
- \ No newline at end of file + diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index 6650170960..30074b4d0b 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -123,7 +123,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager' var title = globalize.translate('RefreshMetadata'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; @@ -172,4 +172,4 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager' }; return RefreshDialog; -}); \ No newline at end of file +}); diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index e586a1e124..d0cf092e15 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -135,7 +135,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) { var userData = fullItem.UserData || {}; var likes = null == userData.Likes ? "" : userData.Likes; - context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ''; + context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ''; }); } else { backdrop.clear(); @@ -291,10 +291,10 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL if (isMuted) { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute")); - view.querySelector(".buttonMute i").innerHTML = ""; + view.querySelector(".buttonMute i").innerHTML = "volume_off"; } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute")); - view.querySelector(".buttonMute i").innerHTML = ""; + view.querySelector(".buttonMute i").innerHTML = "volume_up"; } if (progressElement) { @@ -361,7 +361,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL action: "setplaylistindex", enableUserDataButtons: false, rightButtons: [{ - icon: "", + icon: "remove_circle_outline", title: globalize.translate("ButtonRemove"), id: "remove" }], diff --git a/src/components/search/searchfields.template.html b/src/components/search/searchfields.template.html index cb6f11499a..bad808cb7e 100644 --- a/src/components/search/searchfields.template.html +++ b/src/components/search/searchfields.template.html @@ -1,7 +1,7 @@
- + search
-
\ No newline at end of file +
diff --git a/src/components/sortmenu/sortmenu.js b/src/components/sortmenu/sortmenu.js index da2fcdaa7c..d4f75a0806 100644 --- a/src/components/sortmenu/sortmenu.js +++ b/src/components/sortmenu/sortmenu.js @@ -66,7 +66,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'layoutMana var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Sort}

'; html += '
'; @@ -121,4 +121,4 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'layoutMana }; return SortMenu; -}); \ No newline at end of file +}); diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 27055f5976..29c902c9eb 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -282,7 +282,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', html += '
'; if (!layoutManager.tv) { - html += ''; + html += ''; } html += ''; diff --git a/src/components/subtitleeditor/subtitleeditor.template.html b/src/components/subtitleeditor/subtitleeditor.template.html index 7891564449..dc8ae25701 100644 --- a/src/components/subtitleeditor/subtitleeditor.template.html +++ b/src/components/subtitleeditor/subtitleeditor.template.html @@ -1,8 +1,8 @@
- +

${Subtitles}

- ${Help} + info${Help}
@@ -28,4 +28,4 @@ ${NoSubtitleSearchResultsFound}
- \ No newline at end of file + diff --git a/src/components/tabbedview/itemstab.js b/src/components/tabbedview/itemstab.js index ec874c69e9..7aebd7c2ba 100644 --- a/src/components/tabbedview/itemstab.js +++ b/src/components/tabbedview/itemstab.js @@ -188,7 +188,7 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts return; } - btnSortIcon.innerHTML = values.sortOrder === 'Descending' ? '' : ''; + btnSortIcon.innerHTML = values.sortOrder === 'Descending' ? 'arrow_downward' : 'arrow_upward'; } function bindAll(elems, eventName, fn) { @@ -592,4 +592,4 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts }; return ItemsTab; -}); \ No newline at end of file +}); diff --git a/src/components/tunerpicker.js b/src/components/tunerpicker.js index 96bfc71dff..3882f2e85a 100644 --- a/src/components/tunerpicker.js +++ b/src/components/tunerpicker.js @@ -128,7 +128,7 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" dlg.classList.add("formDialog"); var html = ""; html += '
'; - html += ''; + html += ''; html += '

'; html += globalize.translate("HeaderLiveTvTunerSetup"); html += "

"; diff --git a/src/components/userdatabuttons/emby-ratingbutton.js b/src/components/userdatabuttons/emby-ratingbutton.js index 40cf033cd5..dfb412d7b1 100644 --- a/src/components/userdatabuttons/emby-ratingbutton.js +++ b/src/components/userdatabuttons/emby-ratingbutton.js @@ -63,7 +63,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby if (isFavorite) { if (icon) { - icon.innerHTML = ''; + icon.innerHTML = 'favorite'; icon.classList.add('ratingbutton-icon-withrating'); } @@ -72,27 +72,27 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby } else if (likes) { if (icon) { - icon.innerHTML = ''; + icon.innerHTML = 'favorite'; icon.classList.remove('ratingbutton-icon-withrating'); - //icon.innerHTML = ''; + //icon.innerHTML = 'thumb_up'; } button.classList.remove('ratingbutton-withrating'); } else if (likes === false) { if (icon) { - icon.innerHTML = ''; + icon.innerHTML = 'favorite'; icon.classList.remove('ratingbutton-icon-withrating'); - //icon.innerHTML = ''; + //icon.innerHTML = 'thumb_down'; } button.classList.remove('ratingbutton-withrating'); } else { if (icon) { - icon.innerHTML = ''; + icon.innerHTML = 'favorite'; icon.classList.remove('ratingbutton-icon-withrating'); - //icon.innerHTML = ''; + //icon.innerHTML = 'thumbs_up_down'; } button.classList.remove('ratingbutton-withrating'); } @@ -201,4 +201,4 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby prototype: EmbyRatingButtonPrototype, extends: 'button' }); -}); \ No newline at end of file +}); diff --git a/src/components/userdatabuttons/userdatabuttons.js b/src/components/userdatabuttons/userdatabuttons.js index ea88565015..1c00e50caf 100644 --- a/src/components/userdatabuttons/userdatabuttons.js +++ b/src/components/userdatabuttons/userdatabuttons.js @@ -105,9 +105,9 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto if (itemHelper.canMarkPlayed(item)) { if (userData.Played) { - html += getUserDataButtonHtml('markPlayed', itemId, serverId, btnCssClass + ' btnUserDataOn', iconCssClass, '', tooltipPlayed, style); + html += getUserDataButtonHtml('markPlayed', itemId, serverId, btnCssClass + ' btnUserDataOn', iconCssClass, 'check', tooltipPlayed, style); } else { - html += getUserDataButtonHtml('markPlayed', itemId, serverId, btnCssClass, iconCssClass, '', tooltipPlayed, style); + html += getUserDataButtonHtml('markPlayed', itemId, serverId, btnCssClass, iconCssClass, 'check', tooltipPlayed, style); } } } @@ -131,9 +131,9 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto var tooltipFavorite = globalize.translate('Favorite'); if (userData.IsFavorite) { - html += getUserDataButtonHtml('markFavorite', itemId, serverId, btnCssClass + ' btnUserData btnUserDataOn', iconCssClass, '', tooltipFavorite, style); + html += getUserDataButtonHtml('markFavorite', itemId, serverId, btnCssClass + ' btnUserData btnUserDataOn', iconCssClass, 'favorite', tooltipFavorite, style); } else { - html += getUserDataButtonHtml('markFavorite', itemId, serverId, btnCssClass + ' btnUserData', iconCssClass, '', tooltipFavorite, style); + html += getUserDataButtonHtml('markFavorite', itemId, serverId, btnCssClass + ' btnUserData', iconCssClass, 'favorite', tooltipFavorite, style); } return html; @@ -248,4 +248,4 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto getIconsHtml: getIconsHtml }; -}); \ No newline at end of file +}); diff --git a/src/components/viewsettings/viewsettings.js b/src/components/viewsettings/viewsettings.js index 617e021115..77ed01a936 100644 --- a/src/components/viewsettings/viewsettings.js +++ b/src/components/viewsettings/viewsettings.js @@ -77,7 +77,7 @@ define(['require', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'conne var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Settings}

'; html += '
'; @@ -143,4 +143,4 @@ define(['require', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'conne }; return ViewSettings; -}); \ No newline at end of file +}); diff --git a/src/controllers/availableplugins.js b/src/controllers/availableplugins.js index 62131456da..1679fec5e7 100644 --- a/src/controllers/availableplugins.js +++ b/src/controllers/availableplugins.js @@ -103,7 +103,7 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby html += '
"; html += "
"; } else { - html += ''; + html += 'folder'; } html += ""; diff --git a/src/controllers/dashboardpage.js b/src/controllers/dashboardpage.js index de86ffc2bd..f7a8d5cbf8 100644 --- a/src/controllers/dashboardpage.js +++ b/src/controllers/dashboardpage.js @@ -303,12 +303,12 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa html += '
'; var btnCssClass; btnCssClass = session.ServerId && session.NowPlayingItem && session.SupportsRemoteControl && session.DeviceId !== connectionManager.deviceId() ? "" : " hide"; - html += ''; - html += ''; + html += ''; + html += ''; btnCssClass = session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length ? "" : " hide"; - html += ''; + html += ''; btnCssClass = session.ServerId && -1 !== session.SupportedCommands.indexOf("DisplayMessage") && session.DeviceId !== connectionManager.deviceId() ? "" : " hide"; - html += ''; + html += ''; html += "
"; html += '
'; html += DashboardPage.getSessionNowPlayingStreamInfo(session); @@ -565,9 +565,9 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } if (session.PlayState && session.PlayState.IsPaused) { - btnSessionPlayPause.querySelector("i").innerHTML = ""; + btnSessionPlayPause.querySelector("i").innerHTML = "play_arrow"; } else { - btnSessionPlayPause.querySelector("i").innerHTML = ""; + btnSessionPlayPause.querySelector("i").innerHTML = "pause"; } row.querySelector(".sessionNowPlayingStreamInfo").innerHTML = DashboardPage.getSessionNowPlayingStreamInfo(session); diff --git a/src/controllers/devices.js b/src/controllers/devices.js index 36f2cf88a6..a09209e167 100644 --- a/src/controllers/devices.js +++ b/src/controllers/devices.js @@ -89,7 +89,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu if (canEdit || canDelete(device.Id)) { deviceHtml += '
'; - deviceHtml += ''; + deviceHtml += ''; deviceHtml += "
"; } diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index 6c521f7bfe..a4331ebf25 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -156,7 +156,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap leadingButtons = layoutManager.tv ? [{ name: globalize.translate("All"), id: "more", - icon: "", + icon: "favorite", routeUrl: getRouteUrl(section, serverId) }] : null, lines = 0; @@ -192,7 +192,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap 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 += "
" + section.showTitle || (sectionClass += " verticalSection-extrabottompadding"), html += '
', html += '
', layoutManager.tv ? html += '

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

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

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

", html += 'chevron_right', html += "
"), html += "
", html += '
', html += "
" } elem.innerHTML = html; var elems = elem.querySelectorAll(".itemsContainer"); diff --git a/src/controllers/installedplugins.js b/src/controllers/installedplugins.js index a88f49d186..148c63ca09 100644 --- a/src/controllers/installedplugins.js +++ b/src/controllers/installedplugins.js @@ -47,7 +47,7 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" html += '
"; html += "
"; } else { - html += ''; + html += 'folder'; } html += configPageUrl ? "" : "
"; diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 5bc54edf74..cd429c9633 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1739,7 +1739,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild html += '

'; html += "" + type.name + ""; html += "

"; - html += ''; + html += ''; html += "
"; html += '
'; var shape = "MusicAlbum" == type.type ? getSquareShape(false) : getPortraitShape(false); @@ -2075,7 +2075,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild bindAll(view, ".btnCancelTimer", "click", onCancelTimerClick); bindAll(view, ".btnDeleteItem", "click", onDeleteClick); bindAll(view, ".btnDownload", "click", onDownloadClick); - view.querySelector(".btnMoreCommands i").innerHTML = ""; + view.querySelector(".btnMoreCommands i").innerHTML = "more_horiz"; view.querySelector(".trackSelections").addEventListener("submit", onTrackSelectionsSubmit); view.querySelector(".btnSplitVersions").addEventListener("click", function () { splitVersions(self, view, apiClient, params); diff --git a/src/controllers/list.js b/src/controllers/list.js index d15ebd2444..a554bec611 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -175,7 +175,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" var btnSortIcon = instance.btnSortIcon; if (btnSortIcon) { - btnSortIcon.innerHTML = "Descending" === values.sortOrder ? "" : ""; + btnSortIcon.innerHTML = "Descending" === values.sortOrder ? "arrow_downward" : "arrow_upward"; } } } diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index 6b616ce58d..b64e1352b5 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -297,7 +297,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (virtualFolder.showMenu !== false) { html += '
'; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 80197b01cc..e51274d254 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -142,7 +142,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

'; html += item.Name; html += "

"; - html += ''; + html += 'chevron_right'; html += ""; html += "
"; if (enableScrollX()) { diff --git a/src/controllers/selectserver.js b/src/controllers/selectserver.js index 255f685572..b0ee5673e0 100644 --- a/src/controllers/selectserver.js +++ b/src/controllers/selectserver.js @@ -8,7 +8,7 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu return { name: server.Name, showIcon: true, - icon: "", + icon: "cast", cardType: "", id: server.Id, server: server diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index 956b8fa6fa..b6fa54f213 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -141,7 +141,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

'; html += item.Name; html += "

"; - html += ''; + html += 'chevron_right'; html += ""; html += ""; if (enableScrollX()) { diff --git a/src/controllers/userprofilespage.js b/src/controllers/userprofilespage.js index 3c22ff3cbf..8a744de32c 100644 --- a/src/controllers/userprofilespage.js +++ b/src/controllers/userprofilespage.js @@ -181,7 +181,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", html += '
"; html += "
"; } else { - html += ''; + html += 'person'; } html += ""; diff --git a/src/controllers/videoosd.js b/src/controllers/videoosd.js index 6232c1f2e0..51931c3214 100644 --- a/src/controllers/videoosd.js +++ b/src/controllers/videoosd.js @@ -532,10 +532,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function updateFullscreenIcon() { if (playbackManager.isFullscreen(currentPlayer)) { view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("ExitFullscreen")); - view.querySelector(".btnFullscreen i").innerHTML = ""; + view.querySelector(".btnFullscreen i").innerHTML = "fullscreen_exit"; } else { view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("Fullscreen") + " (f)"); - view.querySelector(".btnFullscreen i").innerHTML = ""; + view.querySelector(".btnFullscreen i").innerHTML = "fullscreen"; } } @@ -734,10 +734,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function updatePlayPauseState(isPaused) { var button = view.querySelector(".btnPause i"); if (isPaused) { - button.innerHTML = ""; + button.innerHTML = "play_arrow"; button.setAttribute("title", globalize.translate("ButtonPlay") + " (k)"); } else { - button.innerHTML = ""; + button.innerHTML = "pause"; button.setAttribute("title", globalize.translate("ButtonPause") + " (k)"); } } @@ -868,10 +868,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med if (isMuted) { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute") + " (m)"); - view.querySelector(".buttonMute i").innerHTML = ""; + view.querySelector(".buttonMute i").innerHTML = "volume_off"; } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute") + " (m)"); - view.querySelector(".buttonMute i").innerHTML = ""; + view.querySelector(".buttonMute i").innerHTML = "volume_up"; } if (progressElement) { diff --git a/src/dashboard.html b/src/dashboard.html index 67d269db3d..43a081f8db 100644 --- a/src/dashboard.html +++ b/src/dashboard.html @@ -5,7 +5,7 @@

${TabServer}

- + chevron_right
@@ -34,7 +34,7 @@

${HeaderActiveDevices}

- + chevron_right
@@ -45,7 +45,7 @@

${HeaderActivity}

- + chevron_right
@@ -62,7 +62,7 @@

${Alerts}

- + chevron_right
@@ -71,7 +71,7 @@

${HeaderPaths}

- + chevron_right
diff --git a/src/dlnaprofile.html b/src/dlnaprofile.html index 3c2ff16707..2054bce3db 100644 --- a/src/dlnaprofile.html +++ b/src/dlnaprofile.html @@ -98,7 +98,7 @@

${HeaderHttpHeaders}

@@ -221,7 +221,7 @@

${HeaderXmlDocumentAttributes}

diff --git a/src/dlnaprofiles.html b/src/dlnaprofiles.html index ef1c353d46..ac9e961370 100644 --- a/src/dlnaprofiles.html +++ b/src/dlnaprofiles.html @@ -9,7 +9,7 @@

${HeaderCustomDlnaProfiles}

- + add ${Help}
@@ -30,4 +30,4 @@
-
\ No newline at end of file +
diff --git a/src/itemdetails.html b/src/itemdetails.html index 7025a7ff37..2a29cce96b 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -12,7 +12,7 @@
- +
@@ -77,7 +77,7 @@ @@ -88,7 +88,7 @@ @@ -99,7 +99,7 @@ @@ -110,7 +110,7 @@ @@ -121,7 +121,7 @@ @@ -132,7 +132,7 @@ @@ -143,39 +143,39 @@
diff --git a/src/list.html b/src/list.html index 5161704249..e31efa27e6 100644 --- a/src/list.html +++ b/src/list.html @@ -7,48 +7,48 @@ ${HeaderPlayAll}
- \ No newline at end of file + diff --git a/src/livetv.html b/src/livetv.html index 2bc99b2b80..2ff8990e4a 100644 --- a/src/livetv.html +++ b/src/livetv.html @@ -7,7 +7,7 @@
@@ -16,7 +16,7 @@
@@ -25,7 +25,7 @@
@@ -34,7 +34,7 @@
@@ -43,7 +43,7 @@
@@ -52,7 +52,7 @@
@@ -72,7 +72,7 @@
@@ -94,4 +94,4 @@ - \ No newline at end of file + diff --git a/src/livetvstatus.html b/src/livetvstatus.html index 9c2c8d2c9a..3abd14de34 100644 --- a/src/livetvstatus.html +++ b/src/livetvstatus.html @@ -8,7 +8,7 @@ ${HeaderTunerDevices} ${Help} @@ -21,7 +21,7 @@

${HeaderGuideProviders}

@@ -38,4 +38,4 @@ - \ No newline at end of file + diff --git a/src/music.html b/src/music.html index d7082e04c4..e86f179208 100644 --- a/src/music.html +++ b/src/music.html @@ -37,8 +37,8 @@
- - + + @@ -107,4 +107,4 @@
-
\ No newline at end of file + diff --git a/src/nowplaying.html b/src/nowplaying.html index fa8ade166f..6be865d152 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -19,7 +19,7 @@
@@ -101,7 +101,7 @@
@@ -173,4 +173,4 @@

- \ No newline at end of file + diff --git a/src/scheduledtask.html b/src/scheduledtask.html index 9aebd9b55d..ee2a2c3420 100644 --- a/src/scheduledtask.html +++ b/src/scheduledtask.html @@ -16,7 +16,7 @@ ${HeaderTaskTriggers}
diff --git a/src/scripts/librarybrowser.js b/src/scripts/librarybrowser.js index 4f3eaf4144..429cb1060c 100644 --- a/src/scripts/librarybrowser.js +++ b/src/scripts/librarybrowser.js @@ -91,20 +91,20 @@ define(["userSettings"], function (userSettings) { html += '
'; if (showControls) { - html += ''; - html += ''; + html += ''; + html += ''; } if (options.addLayoutButton) { - html += ''; + html += ''; } if (options.sortButton) { - html += ''; + html += ''; } if (options.filterButton) { - html += ''; + html += ''; } html += "
"; diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index ad15b8538e..b12cd5c50e 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -71,7 +71,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " headerUserButton.innerHTML = '
"; } else { headerUserButton.classList.remove("headerUserButtonRound"); - headerUserButton.innerHTML = ''; + headerUserButton.innerHTML = 'person'; } } @@ -551,11 +551,11 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var icon = headerCastButton.querySelector("i"); if (info && !info.isLocalPlayer) { - icon.innerHTML = ""; + icon.innerHTML = "cast_connected"; headerCastButton.classList.add("castButton-active"); context.querySelector(".headerSelectedPlayer").innerHTML = info.deviceName || info.name; } else { - icon.innerHTML = ""; + icon.innerHTML = "cast"; headerCastButton.classList.remove("castButton-active"); context.querySelector(".headerSelectedPlayer").innerHTML = ""; } @@ -843,16 +843,16 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var html = ""; html += '
'; html += '
'; - html += '"; - html += ''; - html += ''; + html += '"; + html += ''; + html += ''; html += '

'; html += "
"; html += '
'; html += ''; - html += ''; - html += ''; - html += ''; + html += ''; + html += ''; + html += ''; html += "
"; html += "
"; html += '
'; diff --git a/src/userprofiles.html b/src/userprofiles.html index bfa8c2e8e4..6fa5f058ce 100644 --- a/src/userprofiles.html +++ b/src/userprofiles.html @@ -6,7 +6,7 @@

${HeaderUsers}

${Help}
@@ -21,4 +21,4 @@
- \ No newline at end of file + diff --git a/src/videoosd.html b/src/videoosd.html index 34c73a3019..0c7a910908 100644 --- a/src/videoosd.html +++ b/src/videoosd.html @@ -1,4 +1,4 @@ -
+
@@ -33,51 +33,51 @@
From e8875f8362eb74bbe1747b2af9ac248801c44c3f Mon Sep 17 00:00:00 2001 From: Thomas Vandemeulebroucke Date: Wed, 20 Nov 2019 15:13:15 +0100 Subject: [PATCH 17/43] Fixed set aspect ratio option in the player --- src/components/htmlvideoplayer/plugin.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index ee7087c3cc..f29ddb74c8 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -1481,6 +1481,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } list.push('SetBrightness'); + list.push("SetAspectRatio") return list; } @@ -1709,7 +1710,15 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; HtmlVideoPlayer.prototype.setAspectRatio = function (val) { - + var mediaElement = this._mediaElement; + if (mediaElement) { + if ("auto" === val) { + mediaElement.style.removeProperty("object-fit") + } else { + mediaElement.style["object-fit"] = val + } + } + this._currentAspectRatio = val }; HtmlVideoPlayer.prototype.getAspectRatio = function () { @@ -1717,7 +1726,16 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; HtmlVideoPlayer.prototype.getSupportedAspectRatios = function () { - return []; + return [{ + name: "Auto", + id: "auto" + }, { + name: "Cover", + id: "cover" + }, { + name: "Fill", + id: "fill" + }] }; HtmlVideoPlayer.prototype.togglePictureInPicture = function () { From 58b09ca9994158da90ecd5c28f4036a3fb409c73 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 22 Nov 2019 00:04:02 +0300 Subject: [PATCH 18/43] 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 95a4ec975a..25ca59da97 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 19/43] 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 9707f5404c..7ea0c2b9eb 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 ba22a1ecef21a90f392ca3a7570dad44a74bc672 Mon Sep 17 00:00:00 2001 From: AdmiralAnimE Date: Wed, 20 Nov 2019 16:03:15 +0000 Subject: [PATCH 20/43] Translated using Weblate (Bulgarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bg/ --- src/strings/bg-bg.json | 83 +++++++++++++++++++++++++++++++----------- 1 file changed, 61 insertions(+), 22 deletions(-) diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index ce12e70563..c7ce361903 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -59,7 +59,7 @@ "ButtonPlay": "Пускане", "ButtonPreviousTrack": "Предишна пътека", "ButtonProfile": "Профил", - "ButtonQuickStartGuide": "Ръководство за бързо започване", + "ButtonQuickStartGuide": "Първи стъпки", "ButtonRefresh": "Опресняване", "ButtonRefreshGuideData": "Обновяване на данните в справочника", "ButtonRemove": "Премахване", @@ -78,7 +78,7 @@ "ButtonSignIn": "Вписване", "ButtonSignOut": "Отписване", "ButtonSort": "Подреждане", - "ButtonStop": "Стоп", + "ButtonStop": "Спиране", "ButtonSubmit": "Подаване", "ButtonSubtitles": "Субтитри", "ButtonUninstall": "Деинсталиране", @@ -108,13 +108,13 @@ "Display": "Показване", "Download": "Изтегляне", "DownloadsValue": "{0} изтегляния", - "EasyPasswordHelp": "Вашият лесен пин код е използван за офлайн достъп със съвместими Jellyfin приложения, както и за влизане през същата мрежа.", + "EasyPasswordHelp": "Вашият лесен пин-код се използва за достъп извън линия със съвместими приложения, както и за влизане през същата мрежа.", "Edit": "Редактиране", "EditImages": "Редактиране на изображенията", "EditMetadata": "Редактиране на метаданните", "EditSubtitles": "Редактиране на субтитрите", "EnableBackdrops": "Фонове", - "EnableCinemaMode": "Включване на режим \"Киносалон\"", + "EnableCinemaMode": "Режим \"Киносалон\"", "EnableThemeSongs": "Тематични песни", "Ended": "Приключило", "EndsAtValue": "Свършва на {0}", @@ -209,7 +209,7 @@ "HeaderLiveTv": "Телевизия на живо", "HeaderMedia": "Медия", "HeaderMediaFolders": "Медийни папки", - "HeaderMediaInfo": "Данни", + "HeaderMediaInfo": "Сведения", "HeaderMetadataSettings": "Настройки на метаданните", "HeaderMoreLikeThis": "Подобни", "HeaderMovies": "Филми", @@ -248,7 +248,7 @@ "HeaderSecondsValue": "{0} секунди", "HeaderSelectPath": "Изберете път", "HeaderSendMessage": "Изпращане на съобщение", - "HeaderSeries": "Series:", + "HeaderSeries": "Сериал", "HeaderServerSettings": "Настройки на сървъра", "HeaderSettings": "Настройки", "HeaderSetupLibrary": "Настройте своите медийни библиотеки", @@ -256,7 +256,7 @@ "HeaderSortOrder": "Ред на подреждане", "HeaderSpecialFeatures": "Специални функции", "HeaderStartNow": "Пускане веднага", - "HeaderStatus": "Състояние:", + "HeaderStatus": "Състояние", "HeaderSubtitleAppearance": "Облик на субтитрите", "HeaderSystemDlnaProfiles": "Системни профили", "HeaderTags": "Етикети", @@ -289,7 +289,7 @@ "LabelAlbumArtPN": "ПН на албумното изкуство:", "LabelAlbumArtists": "Изпълнители на албума:", "LabelAllowServerAutoRestart": "Разрешаване на сървъра автоматично да се пуска повторно за прилагане на обновления", - "LabelAllowServerAutoRestartHelp": "Сървърът ще се рестартира само през свободното си време, когато няма активни потребители.", + "LabelAllowServerAutoRestartHelp": "Сървърът ще се пуска наново само през ненатоварено време, когато няма активни потребители.", "LabelAppName": "Име", "LabelArtists": "Изпълнители:", "LabelArtistsHelp": "Отделете няколко с ;", @@ -299,7 +299,7 @@ "LabelCertificatePassword": "Парола на сертификата:", "LabelCertificatePasswordHelp": "Ако сертификатът ви изисква парола, моля, въведете я тук.", "LabelCollection": "Колекция:", - "LabelCommunityRating": "Обществена оценка", + "LabelCommunityRating": "Обществена оценка:", "LabelContentType": "Тип на съдържанието:", "LabelCountry": "Държава:", "LabelCriticRating": "Оценка на критиците:", @@ -333,7 +333,7 @@ "LabelEnableDlnaClientDiscoveryIntervalHelp": "Определя времетраенето в секунди между SSDP търсения направени от Jellyfin.", "LabelEnableDlnaDebugLogging": "Включване на журналите за грешки на ДЛНА", "LabelEnableDlnaPlayTo": "Включване на функцията \"възпроизвеждане с ДЛНА\"", - "LabelEnableDlnaPlayToHelp": "Емби може да засича устройства в мрежата ви и да предлага възможност за дистанционен контрол.", + "LabelEnableDlnaPlayToHelp": "Засичане на устройства в мрежата ви и предлагане на възможност за дистанционно управление.", "LabelEnableDlnaServer": "Включване на ДЛНА-сървър", "LabelEnableDlnaServerHelp": "Разрешава на UPnP устройства в мрежата да разглеждат и пускат Jellyfin съдържание.", "LabelEnableRealtimeMonitor": "Активиране на наблюдение в реално време", @@ -414,7 +414,7 @@ "LabelPublicHttpPortHelp": "Публичният порт, който да бъде съпоставен с локалния HTTP порт.", "LabelPublicHttpsPort": "Публичен HTTPS порт:", "LabelPublicHttpsPortHelp": "Публичният порт, който да бъде съпоставен с локалния HTTPS порт.", - "LabelReadHowYouCanContribute": "Научете как можете да допринесете", + "LabelReadHowYouCanContribute": "Научете как можете да допринесете.", "LabelRecordingPath": "Път за запис по подразбиране:", "LabelReleaseDate": "Дата на издаване:", "LabelRemoteClientBitrateLimit": "Ограничение на интернетното излъчване (мбит/сек):", @@ -428,7 +428,7 @@ "LabelSkipIfAudioTrackPresent": "Да се пропусне, ако звуковата пътечка по подразбиране съвпада с езика", "LabelSkipIfGraphicalSubsPresent": "Да се пропусне, ако файлът съдържа вградени субтитри", "LabelSortBy": "Подреждане по:", - "LabelSortOrder": "Ред на подреждане", + "LabelSortOrder": "Ред на подреждане:", "LabelSource": "Източник:", "LabelSpecialSeasonsDisplayName": "Име на сезона със специални епизоди:", "LabelStartWhenPossible": "Започвай, когато е възможно:", @@ -460,7 +460,7 @@ "LabelYoureDone": "Готови сте!", "Large": "Голям", "LatestFromLibrary": "Последни {0}", - "LibraryAccessHelp": "Изберете медийните папки, които да споделите с потребителя. Администраторите ще могат да редактират всички папки, използвайки управлението на метаданни.", + "LibraryAccessHelp": "Изберете библиотеките, които да споделите с потребителя. Администраторите ще могат да редактират всички папки, използвайки управлението на метаданни.", "Like": "Харесване", "LinksValue": "Препратки: {0}", "List": "Списък", @@ -487,7 +487,7 @@ "MessageAlreadyInstalled": "Версията вече е инсталирана.", "MessageAreYouSureYouWishToRemoveMediaFolder": "Сигурни ли сте, че искате да премахнете медийната папка?", "MessageConfirmRestart": "Наистина ли искате да пуснете сървъра наново?", - "MessageConfirmShutdown": "Наистина ли искате да спрете Jellyfin сървърът?", + "MessageConfirmShutdown": "Наистина ли искате да загасите сървъра?", "MessageNoAvailablePlugins": "Няма налични приставки.", "MessageNoPluginsInstalled": "Нямате инсталирани приставки.", "MessageNothingHere": "Тук няма нищо.", @@ -501,7 +501,7 @@ "Mobile": "Мобилно устройство", "Monday": "Понеделник", "MoreFromValue": "Още от {0}", - "MoreUsersCanBeAddedLater": "Повече потребители могат да бъдат добавени по-късно от главния панел.", + "MoreUsersCanBeAddedLater": "Можете да добавите още потребители от таблото.", "Movies": "Филми", "Mute": "Заглушаване", "MySubtitles": "Моите субтитри", @@ -578,7 +578,7 @@ "OptionHasTrailer": "Трейлър", "OptionHideUser": "Скриване на потребителя от страниците за вход", "OptionHideUserFromLoginHelp": "Полезно за частни или скрити администраторски профили. Потребителят ще трябва да влезе ръчно чрез въвеждане на потребителско име и парола.", - "OptionHomeVideos": "Домашни клипове и снимки", + "OptionHomeVideos": "Снимки", "OptionImdbRating": "Оценка в IMDb", "OptionIsHD": "ВК", "OptionIsSD": "СК", @@ -608,7 +608,7 @@ "OptionSpecialEpisode": "Специални", "OptionSunday": "Неделя", "OptionThursday": "Четвъртък", - "OptionTrackName": "Име на песента:", + "OptionTrackName": "Име на песента", "OptionTuesday": "Вторник", "OptionUnairedEpisode": "Неизлъчени епизоди", "OptionUnplayed": "Непускано", @@ -672,7 +672,7 @@ "ShowAdvancedSettings": "Разширени настройки", "ShowTitle": "Показване на заглавието", "ShowYear": "Показване на годината", - "Shows": "Предавания", + "Shows": "Сериали", "Shuffle": "Пускане в разбъркан ред", "Small": "Малък", "Smart": "Умни", @@ -757,7 +757,7 @@ "Unmute": "Без заглушаване", "Unplayed": "Непускано", "Upload": "Качване", - "UserProfilesIntro": "Емби включва вградена поддръжка на потребителски профили, които позволяват на всеки потребител да има свои настройки на картината, място на пускане и родителски настройки.", + "UserProfilesIntro": "Джелифин включва поддръжка на потребителски профили със самостоятелни настройки на картината, пускането и родителските настройки.", "ValueAlbumCount": "{0} албума", "ValueAudioCodec": "Звуков кодек: {0}", "ValueCodec": "Кодек: {0}", @@ -784,9 +784,9 @@ "Watched": "Изгледано", "Wednesday": "Сряда", "WelcomeToProject": "Добре дошли в Емби!", - "WizardCompleted": "Това е всичко от което се нуждаем за момента. Емби започна да събира данни за медийната ви библиотека. Разгледайте някои от нашите приложения, после натиснете Готово, за да видите таблото на сървъра.", + "WizardCompleted": "Това е всичко, от което се нуждаем за момента. Джелифин започва да събира данни за библиотеката ви. Разгледайте някои от нашите приложения, после натиснете Готово, за да видите таблото на сървъра.", "Writer": "Писател", - "AllowMediaConversion": "Разрешаване на медиини преобразувания", + "AllowMediaConversion": "Разрешаване на медийни преобразувания", "AllLanguages": "Всички езици", "AllEpisodes": "Всички епизоди", "AllComplexFormats": "Всички комплексни формати (ASS, SSA, VOBSUB, PGS, SUB/IDX, и т.н.)", @@ -794,5 +794,44 @@ "Alerts": "Известия", "AdditionalNotificationServices": "Разгледайте каталога с добавки за допълнителни услуги за известяване.", "AddToPlayQueue": "Добавяне към опашка", - "AccessRestrictedTryAgainLater": "Достъпът е временно ограничен. Моля опитайте отново по-късно." + "AccessRestrictedTryAgainLater": "Достъпът е временно ограничен. Моля, опитайте отново по-късно.", + "HeaderFavoriteSongs": "Любими песни", + "HeaderFavoriteShows": "Любими сериали", + "HeaderFavoriteEpisodes": "Любими епизоди", + "HeaderFavoriteArtists": "Любими изпълнители", + "HeaderFavoriteAlbums": "Любими албуми", + "Folders": "Папки", + "No": "Не", + "Yes": "Да", + "MediaInfoStreamTypeSubtitle": "Субтитри", + "MediaInfoStreamTypeEmbeddedImage": "Вградено изображение", + "MediaInfoStreamTypeData": "Данни", + "MediaInfoStreamTypeAudio": "Звук", + "MediaInfoContainer": "Контейнер", + "MediaInfoInterlaced": "Презредово", + "MediaInfoForced": "Принудително", + "MediaInfoLayout": "Подредба", + "MusicVideo": "Музикален клип", + "MediaInfoStreamTypeVideo": "Видео", + "LabelVideo": "Видео:", + "HeaderVideoTypes": "Видове видеа", + "HeaderVideoType": "Вид на видеото", + "EnableExternalVideoPlayers": "Външни възпроизводители", + "HeaderLoginFailure": "Неуспешно вписване", + "Metadata": "Метаданни", + "ReplaceAllMetadata": "Заменяне на всички метаданни", + "ReplaceExistingImages": "Заменяне на текущите изображения", + "Channels": "Канали", + "Categories": "Категории", + "ButtonViewWebsite": "Преглед на сайта", + "ButtonUp": "Нагоре", + "ButtonTrailer": "Предварителен откъс", + "ButtonStart": "Пускане", + "ButtonSelectView": "Изберете изглед", + "ButtonSelectServer": "Изберете сървър", + "ButtonRepeat": "Повтаряне", + "ButtonNetwork": "Мрежа", + "ButtonFullscreen": "На цял екран", + "ButtonDown": "Надолу", + "ButtonConnect": "Свързване" } From 72c2be06ae10ce2e7d8746e7bdfedb3d3a4d5608 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20F=C3=A4th?= Date: Thu, 21 Nov 2019 10:52:21 +0000 Subject: [PATCH 21/43] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 6899e251d2..c57acd0d73 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -422,7 +422,7 @@ "HeaderSelectServerCachePathHelp": "Suche oder gib den Pfad für die Speicherung von Server Cache Dateien an. Das Verzeichnis muss beschreibbar sein.", "HeaderSelectTranscodingPath": "Wähle Pfad für temporäre Transkodierdateien", "HeaderSelectTranscodingPathHelp": "Suche oder gib den Pfad für die Speicherung von temporären Transkodierdateien an. Das Verzeichnis muss beschreibbar sein.", - "HeaderSendMessage": "sende Nachricht", + "HeaderSendMessage": "Nachricht senden", "HeaderSeries": "Serien", "HeaderSeriesOptions": "Serienoptionen", "HeaderSeriesStatus": "Serienstatus", From cd63b5ef3a828c3b957d2158efed1ced92843a72 Mon Sep 17 00:00:00 2001 From: rokoh Date: Wed, 20 Nov 2019 20:26:09 +0000 Subject: [PATCH 22/43] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index b89cda0015..e0b5528c5b 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -51,7 +51,7 @@ "BoxRear": "Dos de boîtier", "Browse": "Parcourir", "BrowsePluginCatalogMessage": "Explorer notre catalogue des plugins pour voir les plugins disponibles.", - "BurnSubtitlesHelp": "Détermine si le serveur doit graver les sous-titres lors de la conversion vidéo en fonction du format de sous-titre. Éviter la gravure des sous-titres améliorera les performances du serveur. Sélectionnez Auto pour graver les formats basés sur l'image (VOBSUB, PGS, SUB/IDX etc) ainsi que certains sous-titres ASS/SSA.", + "BurnSubtitlesHelp": "Détermine si le serveur doit incruster les sous-titres lors de la conversion vidéo en fonction du format de sous-titre. Éviter l'incrustation des sous-titres améliorera les performances du serveur. Sélectionnez Auto pour incruster les formats basés sur l'image (VOBSUB, PGS, SUB/IDX etc) ainsi que certains sous-titres ASS/SSA.", "ButtonAdd": "Ajouter", "ButtonAddMediaLibrary": "Ajouter une médiathèque", "ButtonAddScheduledTaskTrigger": "Ajouter un déclencheur", @@ -172,7 +172,7 @@ "DetectingDevices": "Détection des appareils", "DeviceAccessHelp": "Ceci ne s'applique qu'aux appareils qui peuvent être identifiés de manière unique et n'empêchera pas l'accès par navigateur. Le filtrage de l'accès aux appareil par utilisateur empêchera l'utilisation de nouveaux appareils jusqu'à ce qu'ils soient approuvés ici.", "DirectPlaying": "Lecture directe", - "DirectStreamHelp1": "Le média est compatible avec l'appareil en ce qui concerne la résolution et le type de média (H.264, AC3 etc), mais se trouve dans un conteneur de fichiers incompatible (mkv, avi, wmv, etc). La vidéo sera rempaquetée à la volée avant d'être diffusée à l'appareil.", + "DirectStreamHelp1": "Le média est compatible avec l'appareil en ce qui concerne la résolution et le type de média (H.264, AC3,etc), mais se trouve dans un conteneur de fichiers incompatible (mkv, avi, wmv, etc). La vidéo sera rempaquetée à la volée avant d'être diffusée à l'appareil.", "DirectStreamHelp2": "Le streaming en direct d'un fichier utilise très peu de puissance de traitement sans perte de qualité vidéo.", "DirectStreaming": "Streaming direct", "Director": "Réalisateur(trice)", @@ -1449,6 +1449,6 @@ "LabelAudioChannels": "Canaux audio :", "HeaderFavoriteBooks": "Livres Favoris", "FetchingData": "Récupération de données additionnelles", - "CopyStreamURLSuccess": "Lien copié avec succès.", - "CopyStreamURL": "Copier le lien du flux" + "CopyStreamURLSuccess": "URL copié avec succès.", + "CopyStreamURL": "Copier l'URL du flux" } From 0b0ea7f406563076ff3f8339351d0afdeb7e470a Mon Sep 17 00:00:00 2001 From: zhuzhe1983 Date: Thu, 21 Nov 2019 08:34:50 +0000 Subject: [PATCH 23/43] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 749a5b0a8a..eb3e6a8181 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -498,7 +498,7 @@ "LabelBurnSubtitles": "烧录字幕:", "LabelCache": "缓存:", "LabelCachePath": "缓存路径:", - "LabelCachePathHelp": "指定服务器缓存文件的自定义路径,比如图片。留空将使用服务器默认。", + "LabelCachePathHelp": "指定服务器缓存文件(如图片)的自定义路径。留空将使用服务器默认。", "LabelCancelled": "已取消", "LabelCertificatePassword": "证书密码:", "LabelCertificatePasswordHelp": "如果你的证书需要密码,请在此输入它。", @@ -585,7 +585,7 @@ "LabelHomeNetworkQuality": "家庭网络质量:", "LabelHomeScreenSectionValue": "主屏幕模块{0}:", "LabelHttpsPort": "本地 HTTPS 端口号:", - "LabelHttpsPortHelp": "Jellyfin HTTPS 服务器监听的 TCP 端口。", + "LabelHttpsPortHelp": "Jellyfin HTTPS 服务器监听端口。", "LabelIconMaxHeight": "图标最大高度:", "LabelIconMaxHeightHelp": "通过UPnP显示的图标最大分辨率。", "LabelIconMaxWidth": "图标最大宽度:", @@ -595,12 +595,12 @@ "LabelImageType": "图片类型:", "LabelImportOnlyFavoriteChannels": "限制标记频道为我的最爱", "LabelInNetworkSignInWithEasyPassword": "启用简易PIN码登录家庭网络", - "LabelInNetworkSignInWithEasyPasswordHelp": "如果启动该选项,你将可以在你的家庭网络中使用你的简易 PIN 码登录 Jellyfin 应用程序。仅在你使用外部网络时才需要输入常规密码。如果 PIN 码留空,那么在你的家庭网络中,你将不需要输入密码。", + "LabelInNetworkSignInWithEasyPasswordHelp": "在你的本地网络中使用简易 PIN 码登录客户端,如果 PIN 码留空,那么在本地网络中则不需要输入密码。外部网络中需要输入常规密码登陆。", "LabelInternetQuality": "网络质量:", "LabelKidsCategories": "儿童分类:", "LabelKodiMetadataDateFormat": "发行日期格式:", "LabelKodiMetadataDateFormatHelp": "Nfo的所有日期将使用这种格式。", - "LabelKodiMetadataEnableExtraThumbs": "复制同人画到extrathumbs文件夹", + "LabelKodiMetadataEnableExtraThumbs": "复制同人画到extrathumbs目录", "LabelKodiMetadataEnableExtraThumbsHelp": "为了最大化兼容Kodi皮肤,下载的图片同时保存在 extrafanart 和 extrathumbs 文件夹。", "LabelKodiMetadataEnablePathSubstitution": "启用路径替换", "LabelKodiMetadataEnablePathSubstitutionHelp": "允许图像的路径替换使用服务器的路径替换设置。", @@ -724,7 +724,7 @@ "LabelSerialNumber": "序列号", "LabelSeriesRecordingPath": "电视剧录制路径 (可选的):", "LabelServerHost": "主机:", - "LabelServerHostHelp": "192.168.1.100 或 https://myserver.com", + "LabelServerHostHelp": "192.168.1.100:8096 或 https://myserver.com", "LabelSimultaneousConnectionLimit": "并发流限制:", "LabelSkin": "皮肤:", "LabelSkipBackLength": "跳过长度:", @@ -764,7 +764,7 @@ "LabelTrackNumber": "音轨号码:", "LabelTranscodingAudioCodec": "音频编解码器:", "LabelTranscodingContainer": "容器:", - "LabelTranscodingTempPathHelp": "此文件夹包含用于转码的工作文件。请自定义路径,或留空以使用默认的服务器数据文件夹。", + "LabelTranscodingTempPathHelp": "设置转码文件存储目录。留空以使用服务器默认文件夹。", "LabelTranscodingThreadCount": "转码线程数:", "LabelTranscodingThreadCountHelp": "选择转码时使用的最大线程数。\n减少线程数量将会降低CPU使用率,可能无法快速进行转换并流畅的播放。", "LabelTranscodingVideoCodec": "视频编解码器:", @@ -779,7 +779,7 @@ "LabelUserAgent": "用户代理:", "LabelUserLibrary": "用户程序库:", "LabelUserLibraryHelp": "选择一个在设备上显示的用户媒体库。留空则使用默认设置。", - "LabelUserRemoteClientBitrateLimitHelp": "这将会覆盖服务器“播放”设置中为全局设置的默认值。", + "LabelUserRemoteClientBitrateLimitHelp": "覆盖服务器“播放”设置的全局默认值。", "LabelUsername": "用户名:", "LabelVaapiDevice": "VA API 设备:", "LabelVaapiDeviceHelp": "此渲染节点用来硬件加速。", @@ -801,7 +801,7 @@ "Large": "大", "LatestFromLibrary": "最新的{0}", "LearnHowYouCanContribute": "学习如何构建。", - "LibraryAccessHelp": "选择共享给此用户的媒体文件夹。管理员能使用媒体资料管理器来编辑所有文件夹。", + "LibraryAccessHelp": "选择共享给此用户的媒体库。管理员有权使用媒体资料管理器来编辑所有文件夹。", "Like": "喜欢", "List": "列表", "Live": "直播", @@ -845,20 +845,20 @@ "MessageConfirmRemoveMediaLocation": "你确定要移除此位置?", "MessageConfirmRestart": "你确定要重启 Jellyfin 服务端?", "MessageConfirmRevokeApiKey": "你确定你希望撤销这个 API 秘钥吗?这个应用程序与 Jellyfin 服务器的连接将会被立刻中断。", - "MessageConfirmShutdown": "你确定要关闭 Jellyfin 服务端?", + "MessageConfirmShutdown": "你确定要关闭服务端?", "MessageContactAdminToResetPassword": "请联系你的管理员以重置你的密码。", "MessageCreateAccountAt": "在 {0} 创建帐户", "MessageDeleteTaskTrigger": "你确定删除这个任务触发条件?", "MessageDirectoryPickerBSDInstruction": "对于 BSD 系统,你需要设置包含你的 FreeNAS Jail 虚拟机的存储以允许 Jellyfin 访问它。", "MessageDirectoryPickerInstruction": "网络按钮无法找到你的设备的情况下,网络路径可以手动输入。 例如, {0} 或者 {1}。", - "MessageDirectoryPickerLinuxInstruction": "对于 Arch Linux 上的 Linux 或是 CentOS、Debian、Fedora、OpenSuse、Ubuntu 这些系统,你必须授权 Jellyfin 系统用户至少拥有你存储位置的读取权限。", + "MessageDirectoryPickerLinuxInstruction": "对于 Arch Linux 上的 Linux 或是 CentOS、Debian、Fedora、OpenSuse、Ubuntu 这些系统,你必须授权系统服务用户访问你存储位置的权限。", "MessageDownloadQueued": "下载已列队。", "MessageEnablingOptionLongerScans": "启用此选项可能会大大延长媒体库扫描时间。", "MessageFileReadError": "读取文件发生错误。", "MessageForgotPasswordFileCreated": "已在服务器上创建了以下文件, 并包含有关后续步骤说明:", "MessageForgotPasswordInNetworkRequired": "请连接你的家庭网络后再试一次以开始密码重置流程。", "MessageInstallPluginFromApp": "这个插件必须从你打算使用的应用程序中安装。", - "MessageInvalidForgotPasswordPin": "你输入了一个无效的或过期的 pin 码。请再试一次。", + "MessageInvalidForgotPasswordPin": "无效的或过期的 pin 码。请再试一次。", "MessageInvalidUser": "用户名或密码不可用。请重试。", "MessageItemSaved": "项目已保存。", "MessageItemsAdded": "项目已添加。", @@ -875,7 +875,7 @@ "MessagePluginInstallDisclaimer": "安装 Jellyfin 社区成员构建的插件来获取额外的功能是增强你的 Jellyfin 体验的一种很好的方式。但在安装之前请意识到他们可能会对你的 Jellyfin 服务器造成的影响,如更长的媒体库扫描时间、额外的背景数据加工、降低系统稳定性等。", "MessageReenableUser": "请参阅以下以重新启用", "MessageSettingsSaved": "设置已保存。", - "MessageTheFollowingLocationWillBeRemovedFromLibrary": "以下媒体路径将从你的 Jellyfin 媒体库移除:", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "以下媒体路径将从你的媒体库移除:", "MessageUnableToConnectToServer": "现在无法连接所选择的服务器,请确保该服务器目前正在运行。", "MessageUnsetContentHelp": "内容将显示为纯文件夹。为取得最佳效果, 请使用元数据管理器设置子文件夹的内容类型。", "MessageYouHaveVersionInstalled": "你目前安装了 {0} 版本。", @@ -884,13 +884,13 @@ "MetadataSettingChangeHelp": "更改元数据设置将影响添加的新内容。要刷新现有内容, 请打开详细信息屏幕并单击 \"刷新\" 按钮, 或使用元数据管理器执行批量刷新。", "MinutesAfter": "分钟后", "MinutesBefore": "分钟前", - "Mobile": "手机/平板", + "Mobile": "移动设备", "Monday": "星期一", "MoreFromValue": "更多来自 {0}", "MoreUsersCanBeAddedLater": "稍后可以在控制台中添加更多用户。", "MoveLeft": "左移", "MoveRight": "右移", - "MovieLibraryHelp": "回顾{0}Jellyfin 电影命名指南{1}。", + "MovieLibraryHelp": "回顾{0}电影命名指南{1}。", "Movies": "电影", "Mute": "静音", "MySubtitles": "我的字幕", @@ -917,7 +917,7 @@ "OneChannel": "一个频道", "OnlyForcedSubtitles": "只显示强制字幕", "OnlyForcedSubtitlesHelp": "只有被标记为“强制”的字幕会被加载。", - "OnlyImageFormats": "仅图像格式(VOBSUB, PGS, SUB/IDX 等)", + "OnlyImageFormats": "仅图像格式(VOBSUB, PGS, SUB等)", "OptionAdminUsers": "管理员", "OptionAlbum": "专辑", "OptionAlbumArtist": "专辑艺术家", @@ -932,7 +932,7 @@ "OptionAllowMediaPlaybackTranscodingHelp": "由于不支持的媒体格式, 限制对代码转换的访问可能会导致 Jellyfin 应用程序中的播放失败。", "OptionAllowRemoteControlOthers": "允许其他用户全程控制", "OptionAllowRemoteSharedDevices": "允许远程控制共享的设备", - "OptionAllowRemoteSharedDevicesHelp": "DLNA 在有用户对它进行控制前设备被视为是共享的。", + "OptionAllowRemoteSharedDevicesHelp": "DLNA 设备在用户对他们进行控制前都被视为是共享的。", "OptionAllowSyncTranscoding": "允许需要转码的媒体下载和同步", "OptionAllowUserToManageServer": "运行此用户管理服务器", "OptionAllowVideoPlaybackRemuxing": "允许播放需转换但无需重新编码的视频", @@ -966,7 +966,7 @@ "OptionDisableUserHelp": "如果禁用该用户,服务器将不允许该用户连接。现有的连接将被终止。", "OptionDislikes": "不喜欢", "OptionDisplayFolderView": "显示一个“文件夹”类别用于按文件夹分类浏览你的媒体文件夹", - "OptionDisplayFolderViewHelp": "如果启用此项,Jellyfin 应用程序将在你的媒体库列表中显示一个“文件夹”类别。如果你有按文件夹分类进行浏览的需求,这个功能将是有帮助的。", + "OptionDisplayFolderViewHelp": "在你的媒体库列表中显示文件夹。如果你有按文件夹分类进行浏览的需求,这会非常有用。", "OptionDownloadArtImage": "艺术图", "OptionDownloadBackImage": "包装背面", "OptionDownloadBannerImage": "横幅", From 373974178614df5983dfa7741dbc6bed8d8ced27 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sat, 23 Nov 2019 00:29:38 +0900 Subject: [PATCH 24/43] Add some linting rules for the CI (#587) * enable one-var rule * enable indent rule * enable no-multiple-empty-lines rule * enable no-empty rule * enable no-trailing-spaces rule * enable no-extra-semi rule * add eslint rules to fix block spacing * enable max-statements-per-line rule * enable brace-style rule * fix some spacing issues and add future rules * add code suggestions --- .eslintignore | 1 + .eslintrc.yml | 23 ++ src/bundle.js | 56 +++- src/components/actionsheet/actionsheet.js | 7 +- src/components/alert.js | 2 +- src/components/alphapicker/alphapicker.js | 7 +- src/components/cardbuilder/cardBuilder.js | 65 ++-- .../chromecast/chromecasthelpers.js | 22 +- src/components/chromecast/chromecastplayer.js | 9 +- src/components/dialog/dialog.js | 3 +- src/components/dialogHelper/dialogHelper.js | 10 +- .../directorybrowser/directorybrowser.js | 14 +- src/components/dom.js | 12 +- src/components/emby-input/emby-input.js | 5 +- .../emby-progressring/emby-progressring.js | 10 +- src/components/emby-tabs/emby-tabs.js | 2 +- src/components/emby-textarea/emby-textarea.js | 12 +- src/components/filtermenu/filtermenu.js | 6 +- src/components/focusManager.js | 49 ++- src/components/fullscreenManager.js | 2 +- src/components/guide/guide-settings.js | 6 +- src/components/guide/guide.js | 54 +--- src/components/headroom/headroom.js | 15 +- .../homescreensettings/homescreensettings.js | 13 +- src/components/homesections/homesections.js | 7 +- src/components/htmlMediaHelper.js | 12 +- src/components/htmlaudioplayer/plugin.js | 3 +- src/components/htmlvideoplayer/plugin.js | 69 ++--- .../imagedownloader/imagedownloader.js | 18 +- src/components/imageeditor/imageeditor.js | 7 +- src/components/images/imageLoader.js | 7 +- src/components/imageuploader/imageuploader.js | 2 +- src/components/itemcontextmenu.js | 2 - src/components/itemhelper.js | 4 +- .../itemidentifier/itemidentifier.js | 17 +- src/components/itemsrefresher.js | 7 +- src/components/keyboardnavigation.js | 30 +- .../lazyloader-intersectionobserver.js | 2 +- src/components/listview/listview.js | 23 +- src/components/loading/loading.js | 6 +- src/components/mediainfo/mediainfo.js | 64 ++-- .../medialibrarycreator.js | 14 +- .../metadataeditor/metadataeditor.js | 24 +- src/components/multiselect/multiselect.js | 2 - src/components/navdrawer/navdrawer.js | 75 +++-- src/components/notifications/notifications.js | 12 +- src/components/nowplayingbar/nowplayingbar.js | 11 +- src/components/playback/autoplaydetect.js | 4 +- src/components/playback/brightnessosd.js | 3 +- src/components/playback/mediasession.js | 3 +- src/components/playback/nowplayinghelper.js | 6 +- src/components/playback/playbackmanager.js | 76 ++--- .../playback/playbackorientation.js | 6 +- .../playback/playerSelectionMenu.js | 5 +- src/components/playback/playmethodhelper.js | 9 +- src/components/playback/playqueuemanager.js | 12 +- src/components/playerstats/playerstats.js | 3 +- .../recordingcreator/recordingbutton.js | 9 +- .../recordingcreator/recordingcreator.js | 3 +- .../recordingcreator/recordingeditor.js | 2 - .../recordingcreator/recordinghelper.js | 3 +- .../recordingcreator/seriesrecordingeditor.js | 2 +- src/components/remotecontrol/remotecontrol.js | 10 +- src/components/sanitizefilename.js | 25 +- src/components/scroller.js | 19 +- src/components/search/searchresults.js | 293 +++++++++--------- .../serverNotifications/gamepadtokey.js | 78 ++--- .../serverNotifications.js | 39 +-- src/components/serverRestartDialog.js | 12 +- src/components/shell.js | 2 +- src/components/shortcuts.js | 59 +--- src/components/skinManager.js | 6 +- src/components/slideshow/slideshow.js | 3 +- .../subtitleeditor/subtitleeditor.js | 6 +- .../subtitleappearancehelper.js | 3 +- src/components/subtitlesync/subtitlesync.js | 48 +-- src/components/tabbedview/itemstab.js | 6 +- src/components/tabbedview/tabbedview.js | 3 +- src/components/thememediaplayer.js | 3 +- src/components/touchhelper.js | 9 +- .../userdatabuttons/emby-ratingbutton.js | 14 +- src/components/viewContainer.js | 1 - src/components/viewManager/viewManager.js | 3 +- src/components/viewsettings/viewsettings.js | 2 +- src/components/visibleinviewport.js | 18 +- src/components/youtubeplayer/plugin.js | 1 - src/controllers/favorites.js | 52 ++-- src/controllers/itemdetailpage.js | 3 +- src/controllers/librarydisplay.js | 10 +- src/controllers/music/musicgenres.js | 4 +- src/controllers/networking.js | 4 +- src/controllers/scheduledtaskpage.js | 6 +- src/controllers/scheduledtaskspage.js | 3 +- src/controllers/shows/tvupcoming.js | 4 +- src/controllers/videoosd.js | 133 ++++---- src/scripts/browser.js | 20 +- src/scripts/browserdeviceprofile.js | 16 +- src/scripts/editorsidebar.js | 41 ++- src/scripts/librarybrowser.js | 3 +- src/scripts/librarymenu.js | 1 - src/scripts/routes.js | 2 +- 101 files changed, 883 insertions(+), 1051 deletions(-) create mode 100644 .eslintignore diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000000..52369be1e3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +libraries/ diff --git a/.eslintrc.yml b/.eslintrc.yml index 4110862a11..b215e15800 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -2,3 +2,26 @@ env: es6: true browser: true amd: true + +rules: + block-spacing: ["error"] + brace-style: ["error"] + comma-dangle: ["error", "never"] + comma-spacing: ["error"] + eol-last: ["off"] + indent: ["error", 4, { "SwitchCase": 1 }] + keyword-spacing: ["error"] + line-comment-position: ["off"] + max-statements-per-line: ["error"] + no-empty: ["error"] + no-extra-semi: ["error"] + no-floating-decimal: ["error"] + no-multi-spaces: ["error"] + no-multiple-empty-lines: ["error", { "max": 1 }] + no-trailing-spaces: ["error"] + no-void: ["off"] + one-var: ["error", "never"] + padding-line-between-statements: ["off"] + semi: ["off"] + space-before-blocks: ["error"] + yoda: ["off"] diff --git a/src/bundle.js b/src/bundle.js index 4643b23f0d..6931b34dd0 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -6,59 +6,87 @@ var _define = window.define; // document-register-element var docRegister = require("document-register-element"); -_define("document-register-element", function() { return docRegister; }); +_define("document-register-element", function() { + return docRegister; +}); // fetch var fetch = require("whatwg-fetch"); -_define("fetch", function() { return fetch }); +_define("fetch", function() { + return fetch +}); // flvjs var flvjs = require("flv.js"); -_define("flvjs", function() { return flvjs; }); +_define("flvjs", function() { + return flvjs; +}); // jstree var jstree = require("jstree"); require("jstree/dist/themes/default/style.css"); -_define("jstree", function() { return jstree; }); +_define("jstree", function() { + return jstree; +}); // jquery var jquery = require("jquery"); -_define("jQuery", function() { return jquery; }); +_define("jQuery", function() { + return jquery; +}); // hlsjs var hlsjs = require("hls.js"); -_define("hlsjs", function() { return hlsjs; }); +_define("hlsjs", function() { + return hlsjs; +}); // howler var howler = require("howler"); -_define("howler", function() { return howler; }); +_define("howler", function() { + return howler; +}); // native-promise-only var nativePromise = require("native-promise-only"); -_define("native-promise-only", function() { return nativePromise; }); +_define("native-promise-only", function() { + return nativePromise; +}); // resize-observer-polyfill var resize = require("resize-observer-polyfill"); -_define("resize-observer-polyfill", function() { return resize; }); +_define("resize-observer-polyfill", function() { + return resize; +}); // shaka var shaka = require("shaka-player"); -_define("shaka", function() { return shaka; }); +_define("shaka", function() { + return shaka; +}); // swiper var swiper = require("swiper"); require("swiper/dist/css/swiper.min.css"); -_define("swiper", function() { return swiper; }); +_define("swiper", function() { + return swiper; +}); // sortable var sortable = require("sortablejs"); -_define("sortable", function() { return sortable; }); +_define("sortable", function() { + return sortable; +}); // webcomponents var webcomponents = require("webcomponents.js-2"); -_define("webcomponents", function() { return webcomponents }); +_define("webcomponents", function() { + return webcomponents +}); // libjass var libjass = require("libjass"); require("libjass/libjass.css"); -_define("libjass", function() { return libjass; }); +_define("libjass", function() { + return libjass; +}); diff --git a/src/components/actionsheet/actionsheet.js b/src/components/actionsheet/actionsheet.js index 54b6aeddf2..46a7cedf1e 100644 --- a/src/components/actionsheet/actionsheet.js +++ b/src/components/actionsheet/actionsheet.js @@ -139,7 +139,9 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu style += "min-width:" + minWidth + "px;"; } - var i, length, option; + var i; + var length; + var option; var renderIcon = false; var icons = []; var itemIcon; @@ -225,8 +227,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu if (itemIcon) { html += '' + itemIcon + ''; - } - else if (renderIcon && !center) { + } else if (renderIcon && !center) { html += ''; } diff --git a/src/components/alert.js b/src/components/alert.js index 6cf7fea75d..8a4dc11c20 100644 --- a/src/components/alert.js +++ b/src/components/alert.js @@ -35,7 +35,7 @@ define(['browser', 'dialog', 'globalize'], function (browser, dialog, globalize) if (result === 'ok') { return Promise.resolve(); } - + return Promise.reject(); }); } diff --git a/src/components/alphapicker/alphapicker.js b/src/components/alphapicker/alphapicker.js index 4cf77f451a..ac2ea9e676 100644 --- a/src/components/alphapicker/alphapicker.js +++ b/src/components/alphapicker/alphapicker.js @@ -50,9 +50,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b var vertical = element.classList.contains('alphaPicker-vertical'); - if (vertical) { - - } else { + if (!vertical) { element.classList.add('focuscontainer-x'); } @@ -230,7 +228,8 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b AlphaPicker.prototype.value = function (value, applyValue) { var element = this.options.element; - var btn, selected; + var btn; + var selected; if (value !== undefined) { if (value != null) { diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 09ad8f1a6d..6e9340e1b8 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -321,7 +321,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var apiClient; var lastServerId; - var i, length; + var i; + var length; for (i = 0, length = items.length; i < length; i++) { @@ -339,19 +340,14 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (options.indexBy === 'PremiereDate') { if (item.PremiereDate) { try { - newIndexValue = datetime.toLocaleDateString(datetime.parseISO8601Date(item.PremiereDate), { weekday: 'long', month: 'long', day: 'numeric' }); - } catch (err) { + console.log('error parsing timestamp for premiere date'); } } - } - - else if (options.indexBy === 'ProductionYear') { + } else if (options.indexBy === 'ProductionYear') { newIndexValue = item.ProductionYear; - } - - else if (options.indexBy === 'CommunityRating') { + } else if (options.indexBy === 'CommunityRating') { newIndexValue = item.CommunityRating ? (Math.floor(item.CommunityRating) + (item.CommunityRating % 1 >= 0.5 ? 0.5 : 0)) + '+' : null; } @@ -571,22 +567,19 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana coverImage = (Math.abs(primaryImageAspectRatio - uiAspect) / uiAspect) <= 0.2; } } - } - else if (item.ParentPrimaryImageTag) { + } else if (item.ParentPrimaryImageTag) { imgUrl = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, { type: "Primary", tag: item.ParentPrimaryImageTag }); - } - else if (item.SeriesPrimaryImageTag) { + } else if (item.SeriesPrimaryImageTag) { imgUrl = apiClient.getScaledImageUrl(item.SeriesId, { type: "Primary", tag: item.SeriesPrimaryImageTag }); - } - else if (item.AlbumId && item.AlbumPrimaryImageTag) { + } else if (item.AlbumId && item.AlbumPrimaryImageTag) { width = primaryImageAspectRatio ? Math.round(height * primaryImageAspectRatio) : null; @@ -601,16 +594,14 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana coverImage = (Math.abs(primaryImageAspectRatio - uiAspect) / uiAspect) <= 0.2; } } - } - else if (item.Type === 'Season' && item.ImageTags && item.ImageTags.Thumb) { + } else if (item.Type === 'Season' && item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Thumb", tag: item.ImageTags.Thumb }); - } - else if (item.BackdropImageTags && item.BackdropImageTags.length) { + } else if (item.BackdropImageTags && item.BackdropImageTags.length) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: "Backdrop", @@ -681,7 +672,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var html = ''; var valid = 0; - var i, length; + var i; + var length; for (i = 0, length = lines.length; i < length; i++) { @@ -745,8 +737,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana date = datetime.parseISO8601Date(item.EndDate); airTimeText += ' - ' + datetime.getDisplayTime(date); } - } - catch (e) { + } catch (e) { console.log("Error parsing date: " + item.StartDate); } } @@ -794,8 +785,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } else { lines.push(item.SeriesName); } - } - else { + } else { if (isUsingLiveTvNaming(item)) { @@ -976,8 +966,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (options.showSeriesTimerChannel) { if (item.RecordAnyChannel) { lines.push(globalize.translate('AllChannels')); - } - else { + } else { lines.push(item.ChannelName || globalize.translate('OneChannel')); } } @@ -985,8 +974,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (options.showPersonRoleOrType) { if (item.Role) { lines.push('as ' + item.Role); - } - else if (item.Type) { + } else if (item.Type) { lines.push(globalize.translate('' + item.Type)); } else { lines.push(''); @@ -1060,8 +1048,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana counts.push(childText); - } - else if (item.Type === 'Genre' || item.Type === 'Studio') { + } else if (item.Type === 'Genre' || item.Type === 'Studio') { if (item.MovieCount) { @@ -1140,8 +1127,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (item.IsPremiere) { html += '
' + globalize.translate('Premiere') + '
'; - } - else if (item.IsSeries && !item.IsRepeat) { + } else if (item.IsSeries && !item.IsRepeat) { html += '
' + globalize.translate('AttributeNew') + '
'; } //else if (item.IsRepeat) { @@ -1176,8 +1162,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (action === 'play' && item.IsFolder) { // If this hard-coding is ever removed make sure to test nested photo albums action = 'link'; - } - else if (item.MediaType === 'Photo') { + } else if (item.MediaType === 'Photo') { action = 'play'; } @@ -1272,8 +1257,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana height: logoHeight, tag: item.ChannelPrimaryImageTag }); - } - else if (options.showLogo && item.ParentLogoImageTag) { + } else if (options.showLogo && item.ParentLogoImageTag) { logoUrl = apiClient.getScaledImageUrl(item.ParentLogoItemId, { type: "Logo", height: logoHeight, @@ -1288,8 +1272,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana footerCssClass = progressHtml ? 'innerCardFooter fullInnerCardFooter' : 'innerCardFooter'; innerCardFooter += getCardFooterText(item, apiClient, options, showTitle, forceName, overlayText, imgUrl, footerCssClass, progressHtml, logoUrl, false); footerOverlayed = true; - } - else if (progressHtml) { + } else if (progressHtml) { innerCardFooter += '
'; innerCardFooter += progressHtml; innerCardFooter += '
'; @@ -1394,8 +1377,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana indicatorsHtml += indicators.getChildCountIndicatorHtml(item, { minCount: 1 }); - } - else { + } else { indicatorsHtml += indicators.getPlayedIndicatorHtml(item); } @@ -1656,8 +1638,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } itemProgressBar.innerHTML = progressHtml; - } - else { + } else { itemProgressBar = card.querySelector('.itemProgressBar'); if (itemProgressBar) { diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index 0beba824c0..9d6f811cb1 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -5,7 +5,7 @@ define(['events'], function (events) { // // https://github.com/ravisorg/LinkParser // - // Locate and extract almost any URL within a string. Handles protocol-less domains, IPv4 and + // Locate and extract almost any URL within a string. Handles protocol-less domains, IPv4 and // IPv6, unrecognised TLDs, and more. // // This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. @@ -14,26 +14,26 @@ define(['events'], function (events) { // Original URL regex from the Android android.text.util.Linkify function, found here: // http://stackoverflow.com/a/19696443 - // - // However there were problems with it, most probably related to the fact it was + // + // However there were problems with it, most probably related to the fact it was // written in 2007, and it's been highly modified. - // - // 1) I didn't like the fact that it was tied to specific TLDs, since new ones + // + // 1) I didn't like the fact that it was tied to specific TLDs, since new ones // are being added all the time it wouldn't be reasonable to expect developer to // be continually updating their regular expressions. - // - // 2) It didn't allow unicode characters in the domains which are now allowed in + // + // 2) It didn't allow unicode characters in the domains which are now allowed in // many languages, (including some IDN TLDs). Again these are constantly being // added to and it doesn't seem reasonable to hard-code them. Note this ended up // not being possible in standard JS due to the way it handles multibyte strings. // It is possible using XRegExp, however a big performance hit results. Disabled // for now. - // + // // 3) It didn't allow for IPv6 hostnames // IPv6 regex from http://stackoverflow.com/a/17871737 // // 4) It was very poorly commented - // + // // 5) It wasn't as smart as it could have been about what should be part of a // URL and what should be part of human language. @@ -102,8 +102,8 @@ define(['events'], function (events) { + "|(?:\\%[a-f0-9]{2})" // some characters are much more likely to be used AFTER a url and // were not intended to be included in the url itself. Mostly end - // of sentence type things. It's also likely that the URL would - // still work if any of these characters were missing from the end + // of sentence type things. It's also likely that the URL would + // still work if any of these characters were missing from the end // because we parsed it incorrectly. For these characters to be accepted // they must be followed by another character that we're reasonably // sure is part of the url diff --git a/src/components/chromecast/chromecastplayer.js b/src/components/chromecast/chromecastplayer.js index f3f7e6b865..7302b74124 100644 --- a/src/components/chromecast/chromecastplayer.js +++ b/src/components/chromecast/chromecastplayer.js @@ -479,8 +479,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' TotalRecordCount: 1 }; }); - } - else { + } else { query.Limit = query.Limit || 100; query.ExcludeLocationTypes = "Virtual"; @@ -752,8 +751,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' ChromecastPlayer.prototype.volumeDown = function () { var vol = this._castPlayer.session.receiver.volume.level; - if (vol == null) - { + if (vol == null) { vol = 0.5; } vol -= 0.05; @@ -776,8 +774,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' ChromecastPlayer.prototype.volumeUp = function () { var vol = this._castPlayer.session.receiver.volume.level; - if (vol == null) - { + if (vol == null) { vol = 0.5; } vol += 0.05; diff --git a/src/components/dialog/dialog.js b/src/components/dialog/dialog.js index 4f13b2d1bb..cfb5821b38 100644 --- a/src/components/dialog/dialog.js +++ b/src/components/dialog/dialog.js @@ -51,7 +51,8 @@ define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 're dlg.querySelector('.dialogContentInner').classList.add('hide'); } - var i, length; + var i; + var length; var html = ''; var hasDescriptions = false; diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index 36bb23bfd7..bddd839760 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -18,8 +18,7 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', if (layoutManager.tv) { if (dlg.classList.contains('scrollX')) { centerFocus(dlg, true, false); - } - else if (dlg.classList.contains('smoothScrollY')) { + } else if (dlg.classList.contains('smoothScrollY')) { centerFocus(dlg, false, false); } } @@ -168,8 +167,8 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', close(dlg); } }, { - passive: true - }); + passive: true + }); } function isHistoryEnabled(dlg) { @@ -433,8 +432,7 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', if (layoutManager.tv) { centerFocus(dlg, true, true); } - } - else if (options.scrollY !== false) { + } else if (options.scrollY !== false) { dlg.classList.add('smoothScrollY'); if (layoutManager.tv) { diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index aac45f86d6..9a3aed1045 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -115,7 +115,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- var readOnlyAttribute = options.pathReadOnly ? " readonly" : ""; html += ''; html += "
"; - if (!readOnlyAttribute) { + if (!readOnlyAttribute) { html += ''; } html += "
"; @@ -188,9 +188,9 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- var path = lnkPath.getAttribute("data-path"); if (lnkPath.classList.contains("lnkFile")) { content.querySelector("#txtDirectoryPickerPath").value = path; - } else { + } else { refreshDirectoryBrowser(content, path, fileOptions, true) - }; + } } }); @@ -254,10 +254,10 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- var systemInfo = responses[0]; var initialPath = responses[1]; var dlg = dialogHelper.createDialog({ - size: "medium-tall", - removeOnClose: true, - scrollY: false - }); + size: "medium-tall", + removeOnClose: true, + scrollY: false + }); dlg.classList.add("ui-body-a"); dlg.classList.add("background-theme-a"); dlg.classList.add("directoryPicker"); diff --git a/src/components/dom.js b/src/components/dom.js index ea8902b98e..da03b87428 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -68,7 +68,9 @@ define([], function () { } }); window.addEventListener("test", null, opts); - } catch (e) { } + } catch (e) { + console.log('error checking capture support'); + } function addEventListenerWithOptions(target, type, handler, options) { var optionsOrCapture = options; @@ -116,8 +118,8 @@ define([], function () { return _animationEvent; } - var t, - el = document.createElement("div"); + var t; + var el = document.createElement("div"); var animations = { "animation": "animationend", "OAnimation": "oAnimationEnd", @@ -146,8 +148,8 @@ define([], function () { return _transitionEvent; } - var t, - el = document.createElement("div"); + var t; + var el = document.createElement("div"); var transitions = { "transition": "transitionend", "OTransition": "oTransitionEnd", diff --git a/src/components/emby-input/emby-input.js b/src/components/emby-input/emby-input.js index acc9154318..7d2ea63a0d 100644 --- a/src/components/emby-input/emby-input.js +++ b/src/components/emby-input/emby-input.js @@ -28,11 +28,12 @@ define(['layoutManager', 'browser', 'dom', 'css!./emby-input', 'registerElement' } EmbyInputPrototype.createdCallback = function () { - if (!this.id) { this.id = 'embyinput' + inputId; inputId++; - } if (this.classList.contains('emby-input')) { + } + + if (this.classList.contains('emby-input')) { return; } diff --git a/src/components/emby-progressring/emby-progressring.js b/src/components/emby-progressring/emby-progressring.js index 7148079a19..80c5458528 100644 --- a/src/components/emby-progressring/emby-progressring.js +++ b/src/components/emby-progressring/emby-progressring.js @@ -47,8 +47,7 @@ define(['require', 'css!./emby-progressring', 'registerElement'], function (requ this.querySelector('.animate-25-50-b').style.transform = 'rotate(-90deg)'; this.querySelector('.animate-50-75-b').style.transform = 'rotate(-90deg)'; this.querySelector('.animate-75-100-b').style.transform = 'rotate(-90deg)'; - } - else if (progress >= 25 && progress < 50) { + } else if (progress >= 25 && progress < 50) { angle = -90 + ((progress - 25) / 100) * 360; @@ -57,8 +56,7 @@ define(['require', 'css!./emby-progressring', 'registerElement'], function (requ this.querySelector('.animate-50-75-b').style.transform = 'rotate(-90deg)'; this.querySelector('.animate-75-100-b').style.transform = 'rotate(-90deg)'; - } - else if (progress >= 50 && progress < 75) { + } else if (progress >= 50 && progress < 75) { angle = -90 + ((progress - 50) / 100) * 360; this.querySelector('.animate-0-25-b').style.transform = 'none'; @@ -66,8 +64,7 @@ define(['require', 'css!./emby-progressring', 'registerElement'], function (requ this.querySelector('.animate-50-75-b').style.transform = 'rotate(' + angle + 'deg)'; this.querySelector('.animate-75-100-b').style.transform = 'rotate(-90deg)'; - } - else if (progress >= 75 && progress <= 100) { + } else if (progress >= 75 && progress <= 100) { angle = -90 + ((progress - 75) / 100) * 360; this.querySelector('.animate-0-25-b').style.transform = 'none'; @@ -85,7 +82,6 @@ define(['require', 'css!./emby-progressring', 'registerElement'], function (requ EmbyProgressRing.detachedCallback = function () { - var observer = this.observer; if (observer) { diff --git a/src/components/emby-tabs/emby-tabs.js b/src/components/emby-tabs/emby-tabs.js index 4a0060cf88..9fedf0bfe9 100644 --- a/src/components/emby-tabs/emby-tabs.js +++ b/src/components/emby-tabs/emby-tabs.js @@ -142,7 +142,7 @@ define(['dom', 'scroller', 'browser', 'layoutManager', 'focusManager', 'register tabs.classList.add('scrollX'); tabs.classList.add('hiddenScrollX'); tabs.classList.add('smoothScrollX'); - } + } } EmbyTabs.createdCallback = function () { diff --git a/src/components/emby-textarea/emby-textarea.js b/src/components/emby-textarea/emby-textarea.js index 7dec1f0955..c500db6e1f 100644 --- a/src/components/emby-textarea/emby-textarea.js +++ b/src/components/emby-textarea/emby-textarea.js @@ -14,9 +14,9 @@ define(['layoutManager', 'browser', 'css!./emby-textarea', 'registerElement', 'e * @returns {number} */ self.getOffset = function (textarea) { - var style = window.getComputedStyle(textarea, null), - props = ['paddingTop', 'paddingBottom'], - offset = 0; + var style = window.getComputedStyle(textarea, null); + var props = ['paddingTop', 'paddingBottom']; + var offset = 0; for (var i = 0; i < props.length; i++) { offset += parseInt(style[props[i]]); @@ -43,13 +43,13 @@ define(['layoutManager', 'browser', 'css!./emby-textarea', 'registerElement', 'e textarea.rows = 3; return; } - var newHeight = 0, hasGrown = false; + var newHeight = 0; + var hasGrown = false; if ((textarea.scrollHeight - offset) > self.maxAllowedHeight) { textarea.style.overflowY = 'scroll'; newHeight = self.maxAllowedHeight; - } - else { + } else { textarea.style.overflowY = 'hidden'; textarea.style.height = 'auto'; newHeight = textarea.scrollHeight/* - offset*/; diff --git a/src/components/filtermenu/filtermenu.js b/src/components/filtermenu/filtermenu.js index 89457aa4e6..2f18223d41 100644 --- a/src/components/filtermenu/filtermenu.js +++ b/src/components/filtermenu/filtermenu.js @@ -94,7 +94,8 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', context.querySelector('form').addEventListener('submit', onSubmit); var elems = context.querySelectorAll('.simpleFilter'); - var i, length; + var i; + var length; for (i = 0, length = elems.length; i < length; i++) { @@ -137,7 +138,8 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', function saveValues(context, settings, settingsKey) { var elems = context.querySelectorAll('.simpleFilter'); - var i, length; + var i; + var length; for (i = 0, length = elems.length; i < length; i++) { if (elems[i].tagName === 'INPUT') { diff --git a/src/components/focusManager.js b/src/components/focusManager.js index 8c2f0ad442..ec23a151c2 100644 --- a/src/components/focusManager.js +++ b/src/components/focusManager.js @@ -99,7 +99,7 @@ define(['dom'], function (dom) { return normalizeFocusable(elem, originalElement); } - // Determines if a focusable element can be focused at a given point in time + // Determines if a focusable element can be focused at a given point in time function isCurrentlyFocusableInternal(elem) { // http://stackoverflow.com/questions/19669786/check-if-element-is-visible-in-dom @@ -110,7 +110,7 @@ define(['dom'], function (dom) { return true; } - // Determines if a focusable element can be focused at a given point in time + // Determines if a focusable element can be focused at a given point in time function isCurrentlyFocusable(elem) { if (elem.disabled) { @@ -181,21 +181,18 @@ define(['dom'], function (dom) { if (classList.contains('focuscontainer-left')) { return true; } - } - else if (direction === 1) { + } else if (direction === 1) { if (classList.contains('focuscontainer-x')) { return true; } if (classList.contains('focuscontainer-right')) { return true; } - } - else if (direction === 2) { + } else if (direction === 2) { if (classList.contains('focuscontainer-y')) { return true; } - } - else if (direction === 3) { + } else if (direction === 3) { if (classList.contains('focuscontainer-y')) { return true; } @@ -275,14 +272,14 @@ define(['dom'], function (dom) { var rect = getOffset(activeElement); // Get elements and work out x/y points - var cache = [], - point1x = parseFloat(rect.left) || 0, - point1y = parseFloat(rect.top) || 0, - point2x = parseFloat(point1x + rect.width - 1) || point1x, - point2y = parseFloat(point1y + rect.height - 1) || point1y, - // Shortcuts to help with compression - min = Math.min, - max = Math.max; + var cache = []; + var point1x = parseFloat(rect.left) || 0; + var point1y = parseFloat(rect.top) || 0; + var point2x = parseFloat(point1x + rect.width - 1) || point1x; + var point2y = parseFloat(point1y + rect.height - 1) || point1y; + // Shortcuts to help with compression + var min = Math.min; + var max = Math.max; var sourceMidX = rect.left + (rect.width / 2); var sourceMidY = rect.top + (rect.height / 2); @@ -357,10 +354,10 @@ define(['dom'], function (dom) { break; } - var x = elementRect.left, - y = elementRect.top, - x2 = x + elementRect.width - 1, - y2 = y + elementRect.height - 1; + var x = elementRect.left; + var y = elementRect.top; + var x2 = x + elementRect.width - 1; + var y2 = y + elementRect.height - 1; var intersectX = intersects(point1x, point2x, x, x2); var intersectY = intersects(point1y, point2y, y, y2); @@ -470,7 +467,9 @@ define(['dom'], function (dom) { var elems = container.querySelectorAll(focusableSelector); var list = []; - var i, length, elem; + var i; + var length; + var elem; for (i = 0, length = elems.length; i < length; i++) { @@ -513,32 +512,24 @@ define(['dom'], function (dom) { focusableParent: focusableParent, getFocusableElements: getFocusableElements, moveLeft: function (sourceElement, options) { - var container = options ? options.container : null; var focusableElements = options ? options.focusableElements : null; nav(sourceElement, 0, container, focusableElements); - }, moveRight: function (sourceElement, options) { - var container = options ? options.container : null; var focusableElements = options ? options.focusableElements : null; nav(sourceElement, 1, container, focusableElements); - }, moveUp: function (sourceElement, options) { - var container = options ? options.container : null; var focusableElements = options ? options.focusableElements : null; nav(sourceElement, 2, container, focusableElements); - }, moveDown: function (sourceElement, options) { - var container = options ? options.container : null; var focusableElements = options ? options.focusableElements : null; nav(sourceElement, 3, container, focusableElements); - }, sendText: sendText, isCurrentlyFocusable: isCurrentlyFocusable, diff --git a/src/components/fullscreenManager.js b/src/components/fullscreenManager.js index 360986cc54..8ae31073a2 100644 --- a/src/components/fullscreenManager.js +++ b/src/components/fullscreenManager.js @@ -55,7 +55,7 @@ define(['events', 'dom', 'apphost', 'browser'], function (events, dom, appHost, return document.fullscreen || document.mozFullScreen || document.webkitIsFullScreen || - document.msFullscreenElement || /* IE/Edge syntax */ + document.msFullscreenElement || /* IE/Edge syntax */ document.fullscreenElement || /* Standard syntax */ document.webkitFullscreenElement || /* Chrome, Safari and Opera syntax */ document.mozFullScreenElement; /* Firefox syntax */ diff --git a/src/components/guide/guide-settings.js b/src/components/guide/guide-settings.js index 47eb026db8..9ee43be9f1 100644 --- a/src/components/guide/guide-settings.js +++ b/src/components/guide/guide-settings.js @@ -39,7 +39,8 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio function save(context) { - var i, length; + var i; + var length; var chkIndicators = context.querySelectorAll('.chkIndicator'); for (i = 0, length = chkIndicators.length; i < length; i++) { @@ -62,7 +63,8 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio function load(context) { - var i, length; + var i; + var length; var chkIndicators = context.querySelectorAll('.chkIndicator'); for (i = 0, length = chkIndicators.length; i < length; i++) { diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index d299d7fd7c..1e9484caf8 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -277,7 +277,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var nextDay = new Date(date.getTime() + msPerDay - 2000); // Normally we'd want to just let responsive css handle this, - // but since mobile browsers are often underpowered, + // but since mobile browsers are often underpowered, // it can help performance to get them out of the markup var allowIndicators = dom.getWindowSize().innerWidth >= 600; @@ -392,27 +392,20 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } function parseDates(program) { - if (!program.StartDateLocal) { try { - program.StartDateLocal = datetime.parseISO8601Date(program.StartDate, { toLocal: true }); - } catch (err) { - + console.log('error parsing timestamp for start date'); } - } if (!program.EndDateLocal) { try { - program.EndDateLocal = datetime.parseISO8601Date(program.EndDate, { toLocal: true }); - } catch (err) { - + console.log('error parsing timestamp for end date'); } - } return null; @@ -424,16 +417,13 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', if (item.Type === 'SeriesTimer') { return ''; - } - else if (item.TimerId || item.SeriesTimerId) { + } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; - } - else if (item.Type === 'Timer') { + } else if (item.Type === 'Timer') { status = item.Status; - } - else { + } else { return ''; } @@ -529,11 +519,9 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } else if (program.IsMovie) { displayInnerContent = displayMovieContent; accentCssClass = 'movie'; - } - else if (program.IsSeries) { + } else if (program.IsSeries) { displayInnerContent = displaySeriesContent; - } - else { + } else { displayInnerContent = displayMovieContent && displayNewsContent && displaySportsContent && displayKidsContent && displaySeriesContent; } @@ -569,14 +557,11 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var indicatorHtml = null; if (program.IsLive && options.showLiveIndicator) { indicatorHtml = '' + globalize.translate('Live') + ''; - } - else if (program.IsPremiere && options.showPremiereIndicator) { + } else if (program.IsPremiere && options.showPremiereIndicator) { indicatorHtml = '' + globalize.translate('Premiere') + ''; - } - else if (program.IsSeries && !program.IsRepeat && options.showNewIndicator) { + } else if (program.IsSeries && !program.IsRepeat && options.showNewIndicator) { indicatorHtml = '' + globalize.translate('AttributeNew') + ''; - } - else if (program.IsSeries && program.IsRepeat && options.showRepeatIndicator) { + } else if (program.IsSeries && program.IsRepeat && options.showRepeatIndicator) { indicatorHtml = '' + globalize.translate('Repeat') + ''; } html += indicatorHtml || ''; @@ -614,7 +599,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', return html; } - function renderChannelHeaders(context, channels, apiClient) { var html = ''; @@ -1079,17 +1063,13 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', scrollHelper.toStart(programGrid, programCell, true, true); } - } - - else if (lastFocusDirection === 'right') { + } else if (lastFocusDirection === 'right') { if (programCell) { scrollHelper.toCenter(programGrid, programCell, true, true); } - } - - else if (lastFocusDirection === 'up' || lastFocusDirection === 'down') { + } else if (lastFocusDirection === 'up' || lastFocusDirection === 'down') { var verticalScroller = dom.parentWithClass(target, 'guideVerticalScroller'); if (verticalScroller) { @@ -1195,14 +1175,14 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', dom.addEventListener(programGrid, 'scroll', function (e) { onProgramGridScroll(context, this, timeslotHeaders); }, { - passive: true - }); + passive: true + }); dom.addEventListener(timeslotHeaders, 'scroll', function () { onTimeslotHeadersScroll(context, this); }, { - passive: true - }); + passive: true + }); programGrid.addEventListener('click', onProgramGridClick); diff --git a/src/components/headroom/headroom.js b/src/components/headroom/headroom.js index a3cc5b0435..9c058a8e82 100644 --- a/src/components/headroom/headroom.js +++ b/src/components/headroom/headroom.js @@ -255,8 +255,8 @@ define(['dom', 'layoutManager', 'browser', 'css!./headroom'], function (dom, lay * @return {bool} true if should unpin, false otherwise */ this.shouldUnpin = function (currentScrollY) { - var scrollingDown = currentScrollY > this.lastKnownScrollY, - pastOffset = currentScrollY >= this.offset; + var scrollingDown = currentScrollY > this.lastKnownScrollY; + var pastOffset = currentScrollY >= this.offset; return scrollingDown && pastOffset; }; @@ -267,8 +267,8 @@ define(['dom', 'layoutManager', 'browser', 'css!./headroom'], function (dom, lay * @return {bool} true if should pin, false otherwise */ this.shouldPin = function (currentScrollY) { - var scrollingUp = currentScrollY < this.lastKnownScrollY, - pastOffset = currentScrollY <= this.offset; + var scrollingUp = currentScrollY < this.lastKnownScrollY; + var pastOffset = currentScrollY <= this.offset; return scrollingUp || pastOffset; }; @@ -290,11 +290,9 @@ define(['dom', 'layoutManager', 'browser', 'css!./headroom'], function (dom, lay if (currentScrollY <= (isTv ? 120 : 10)) { this.clear(); - } - else if (this.shouldUnpin(currentScrollY)) { + } else if (this.shouldUnpin(currentScrollY)) { this.unpin(); - } - else if (this.shouldPin(currentScrollY)) { + } else if (this.shouldPin(currentScrollY)) { var toleranceExceeded = Math.abs(currentScrollY - lastKnownScrollY) >= 14; @@ -310,7 +308,6 @@ define(['dom', 'layoutManager', 'browser', 'css!./headroom'], function (dom, lay this.lastKnownScrollY = currentScrollY; }; - if (browser.supportsCssAnimation()) { for (var i = 0, length = this.elems.length; i < length; i++) { this.elems[i].classList.add(this.initialClass); diff --git a/src/components/homescreensettings/homescreensettings.js b/src/components/homescreensettings/homescreensettings.js index 633437d26e..dc7769be36 100644 --- a/src/components/homescreensettings/homescreensettings.js +++ b/src/components/homescreensettings/homescreensettings.js @@ -57,8 +57,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa name: globalize.translate('Collections'), value: 'collections' }); - } - else if (type === 'tvshows') { + } else if (type === 'tvshows') { list.push({ name: globalize.translate('Shows'), @@ -78,8 +77,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa name: globalize.translate('Favorites'), value: 'favorites' }); - } - else if (type === 'music') { + } else if (type === 'music') { list.push({ name: globalize.translate('Suggestions'), @@ -111,8 +109,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa name: globalize.translate('Genres'), value: 'genres' }); - } - else if (type === 'livetv') { + } else if (type === 'livetv') { list.push({ name: globalize.translate('Suggestions'), @@ -256,7 +253,6 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa html += '
'; } - return html; } @@ -384,7 +380,8 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa var viewItems = context.querySelectorAll('.viewItem'); var orderedViews = []; - var i, length; + var i; + var length; for (i = 0, length = viewItems.length; i < length; i++) { orderedViews.push(viewItems[i].getAttribute('data-viewid')); } diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 3fc549e6e4..0c92f34e3d 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -1,4 +1,4 @@ -define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'layoutManager', 'imageLoader', 'globalize', 'itemShortcuts', 'itemHelper', 'appRouter', 'scripts/imagehelper','paper-icon-button-light', 'emby-itemscontainer', 'emby-scroller', 'emby-button', 'css!./homesections'], function (connectionManager, cardBuilder, appSettings, dom, appHost, layoutManager, imageLoader, globalize, itemShortcuts, itemHelper, appRouter, imageHelper) { +define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'layoutManager', 'imageLoader', 'globalize', 'itemShortcuts', 'itemHelper', 'appRouter', 'scripts/imagehelper', 'paper-icon-button-light', 'emby-itemscontainer', 'emby-scroller', 'emby-button', 'css!./homesections'], function (connectionManager, cardBuilder, appSettings, dom, appHost, layoutManager, imageLoader, globalize, itemShortcuts, itemHelper, appRouter, imageHelper) { 'use strict'; function getDefaultSection(index) { @@ -83,7 +83,8 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la function resume(elem, options) { var elems = elem.querySelectorAll('.itemsContainer'); - var i, length; + var i; + var length; var promises = []; for (i = 0, length = elems.length; i < length; i++) { @@ -567,7 +568,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '' + globalize.translate('Programs') + ''; html += ''; - } - else { + } else { html += ''; } diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 2c649bdd16..fade0dd04c 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -24,8 +24,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', if (item) { apiClient = connectionManager.getApiClient(item.ServerId); reloadItem(page, item, apiClient, focusContext); - } - else { + } else { apiClient = connectionManager.getApiClient(currentItem.ServerId); apiClient.getItem(apiClient.getCurrentUserId(), currentItem.Id).then(function (item) { @@ -60,7 +59,6 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', } } - apiClient.getItemImageInfos(currentItem.Id).then(function (imageInfos) { renderStandardImages(page, apiClient, item, imageInfos, providers); @@ -167,8 +165,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', } else { html += ''; } - } - else { + } else { if (imageProviders.length) { html += ''; } diff --git a/src/components/images/imageLoader.js b/src/components/images/imageLoader.js index 2a77daa216..a2906cca85 100644 --- a/src/components/images/imageLoader.js +++ b/src/components/images/imageLoader.js @@ -70,7 +70,9 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings', } // Use the median - values.sort(function (a, b) { return a - b; }); + values.sort(function (a, b) { + return a - b; + }); var half = Math.floor(values.length / 2); @@ -78,8 +80,7 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings', if (values.length % 2) { result = values[half]; - } - else { + } else { result = (values[half - 1] + values[half]) / 2.0; } diff --git a/src/components/imageuploader/imageuploader.js b/src/components/imageuploader/imageuploader.js index 3a52d7110d..98fcf0ebce 100644 --- a/src/components/imageuploader/imageuploader.js +++ b/src/components/imageuploader/imageuploader.js @@ -150,7 +150,7 @@ define(['dialogHelper', 'connectionManager', 'dom', 'loading', 'scrollHelper', ' scrollHelper.centerFocus.on(dlg, false); } - // Has to be assigned a z-index after the call to .open() + // Has to be assigned a z-index after the call to .open() dlg.addEventListener('close', function () { if (layoutManager.tv) { diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index 46a65cabc3..a3aa8cac4f 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -52,8 +52,6 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", //} } - - if (item.IsFolder || item.Type === "MusicArtist" || item.Type === "MusicGenre") { if (item.CollectionType !== "livetv") { if (options.shuffle !== false) { diff --git a/src/components/itemhelper.js b/src/components/itemhelper.js index f8bdb28ac5..f0b1de4a12 100644 --- a/src/components/itemhelper.js +++ b/src/components/itemhelper.js @@ -250,9 +250,7 @@ define(['apphost', 'globalize'], function (appHost, globalize) { if (item.Type !== 'TvChannel') { return true; } - } - - else if (item.MediaType === 'Audio') { + } else if (item.MediaType === 'Audio') { if (item.Type === 'AudioPodcast') { return true; } diff --git a/src/components/itemidentifier/itemidentifier.js b/src/components/itemidentifier/itemidentifier.js index fa01a4aced..6f28de0b3b 100644 --- a/src/components/itemidentifier/itemidentifier.js +++ b/src/components/itemidentifier/itemidentifier.js @@ -21,7 +21,8 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", ProviderIds: {} }; - var i, length; + var i; + var length; var identifyField = page.querySelectorAll(".identifyField"); var value; for (i = 0, length = identifyField.length; i < length; i++) { @@ -64,8 +65,7 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", if (currentItem && currentItem.Id) { lookupInfo.ItemId = currentItem.Id; - } - else { + } else { lookupInfo.IncludeDisabledProviders = true; } @@ -97,7 +97,8 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", page.querySelector(".dialogContentInner").classList.remove("dialog-content-centered"); var html = ""; - var i, length; + var i; + var length; for (i = 0, length = results.length; i < length; i++) { var result = results[i]; @@ -184,12 +185,10 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", if (currentItemType === "Episode") { cssClass += " backdropCard backdropCard-scalable"; padderClass = "cardPadder-backdrop"; - } - else if (currentItemType === "MusicAlbum" || currentItemType === "MusicArtist") { + } else if (currentItemType === "MusicAlbum" || currentItemType === "MusicArtist") { cssClass += " squareCard squareCard-scalable"; padderClass = "cardPadder-square"; - } - else { + } else { cssClass += " portraitCard portraitCard-scalable"; padderClass = "cardPadder-portrait"; } @@ -452,8 +451,6 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"), false); } - - dialogHelper.open(dlg); dlg.querySelector(".btnCancel").addEventListener("click", function (e) { diff --git a/src/components/itemsrefresher.js b/src/components/itemsrefresher.js index d9bef95b4b..46956d2df5 100644 --- a/src/components/itemsrefresher.js +++ b/src/components/itemsrefresher.js @@ -11,8 +11,7 @@ define(['playbackManager', 'serverNotifications', 'events'], function (playbackM if (eventsToMonitor.indexOf('markfavorite') !== -1) { instance.notifyRefreshNeeded(); - } - else if (eventsToMonitor.indexOf('markplayed') !== -1) { + } else if (eventsToMonitor.indexOf('markplayed') !== -1) { instance.notifyRefreshNeeded(); } @@ -115,9 +114,7 @@ define(['playbackManager', 'serverNotifications', 'events'], function (playbackM instance.notifyRefreshNeeded(true); return; } - } - - else if (state.NowPlayingItem && state.NowPlayingItem.MediaType === 'Audio') { + } else if (state.NowPlayingItem && state.NowPlayingItem.MediaType === 'Audio') { if (eventsToMonitor.indexOf('audioplayback') !== -1) { diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js index 7ed74f2201..8c0bb1a3ae 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/keyboardnavigation.js @@ -8,20 +8,20 @@ define(['inputManager', 'focusManager'], function(inputManager, focusManager) { var capture = true; switch (e.keyCode) { - case 37: // ArrowLeft - inputManager.handle('left'); - break; - case 38: // ArrowUp - inputManager.handle('up'); - break; - case 39: // ArrowRight - inputManager.handle('right'); - break; - case 40: // ArrowDown - inputManager.handle('down'); - break; - default: - capture = false; + case 37: // ArrowLeft + inputManager.handle('left'); + break; + case 38: // ArrowUp + inputManager.handle('up'); + break; + case 39: // ArrowRight + inputManager.handle('right'); + break; + case 40: // ArrowDown + inputManager.handle('down'); + break; + default: + capture = false; } if (capture) { console.log("Disabling default event handling"); @@ -31,6 +31,6 @@ define(['inputManager', 'focusManager'], function(inputManager, focusManager) { } return { - enable: enable, + enable: enable }; }); diff --git a/src/components/lazyloader/lazyloader-intersectionobserver.js b/src/components/lazyloader/lazyloader-intersectionobserver.js index 261ca84261..1935f65a30 100644 --- a/src/components/lazyloader/lazyloader-intersectionobserver.js +++ b/src/components/lazyloader/lazyloader-intersectionobserver.js @@ -45,7 +45,7 @@ define(['require', 'browser'], function (require, browser) { } } }, - observerOptions + observerOptions ); this.observer = observer; diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 257551abf6..974cb0ab09 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -9,7 +9,8 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } var sortBy = (options.sortBy || '').toLowerCase(); - var code, name; + var code; + var name; if (sortBy.indexOf('sortname') === 0) { @@ -85,15 +86,12 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan options.tag = item.AlbumPrimaryImageTag; return apiClient.getScaledImageUrl(item.AlbumId, options); - } - - else if (item.SeriesId && item.SeriesPrimaryImageTag) { + } else if (item.SeriesId && item.SeriesPrimaryImageTag) { options.tag = item.SeriesPrimaryImageTag; return apiClient.getScaledImageUrl(item.SeriesId, options); - } - else if (item.ParentPrimaryImageTag) { + } else if (item.ParentPrimaryImageTag) { options.tag = item.ParentPrimaryImageTag; return apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, options); @@ -209,8 +207,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (i === 0) { html += '

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

'; } html += itemGroupTitle; @@ -349,9 +346,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (options.showParentTitle) { if (item.Type === 'Episode') { parentTitle = item.SeriesName; - } - - else if (item.IsSeries || (item.EpisodeTitle && item.Name)) { + } else if (item.IsSeries || (item.EpisodeTitle && item.Name)) { parentTitle = item.Name; } } @@ -375,8 +370,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } textlines.push(parentTitle || ''); - } - else if (options.showParentTitle) { + } else if (options.showParentTitle) { textlines.push(parentTitle || ''); } @@ -400,8 +394,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (!artistItems || !artistItems.length) { showArtist = true; - } - else if (artistItems.length > 1 || containerAlbumArtistIds.indexOf(artistItems[0].Id) === -1) { + } else if (artistItems.length > 1 || containerAlbumArtistIds.indexOf(artistItems[0].Id) === -1) { showArtist = true; } } diff --git a/src/components/loading/loading.js b/src/components/loading/loading.js index ad9aea950a..510f311217 100644 --- a/src/components/loading/loading.js +++ b/src/components/loading/loading.js @@ -45,7 +45,8 @@ define(['components/loading/loadingLegacy', 'browser', 'css!./loading'], functio layer3.classList.add('mdl-spinner__layer-3-active'); layer4.classList.add('mdl-spinner__layer-4-active'); - var i, length; + var i; + var length; for (i = 0, length = circleLefts.length; i < length; i++) { circleLefts[i].classList.add('mdl-spinner__circleLeft-active'); @@ -67,7 +68,8 @@ define(['components/loading/loadingLegacy', 'browser', 'css!./loading'], functio elem.classList.remove('mdl-spinner__layer-3-active'); elem.classList.remove('mdl-spinner__layer-4-active'); - var i, length; + var i; + var length; for (i = 0, length = circleLefts.length; i < length; i++) { circleLefts[i].classList.remove('mdl-spinner__circleLeft-active'); diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index 441adac3dd..0fb4a1e7be 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -7,16 +7,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.Type === 'SeriesTimer') { return ''; - } - else if (item.TimerId || item.SeriesTimerId) { + } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; - } - else if (item.Type === 'Timer') { + } else if (item.Type === 'Timer') { status = item.Status; - } - else { + } else { return ''; } @@ -36,7 +33,8 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater var html = ''; var miscInfo = []; - var text, date; + var text; + var date; if (item.StartDate && options.programTime !== false) { @@ -58,8 +56,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater } miscInfo.push(text); - } - catch (e) { + } catch (e) { console.log("Error parsing date: " + item.StartDate); } } @@ -107,7 +104,9 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater var miscInfo = []; options = options || {}; - var text, date, minutes; + var text; + var date; + var minutes; var count; var showFolderRuntime = item.Type === "MusicAlbum" || item.MediaType === 'MusicArtist' || item.MediaType === 'Playlist' || item.MediaType === 'MusicGenre'; @@ -124,9 +123,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.RunTimeTicks) { miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks)); } - } - - else if (item.Type === "PhotoAlbum" || item.Type === "BoxSet") { + } else if (item.Type === "PhotoAlbum" || item.Type === "BoxSet") { count = item.ChildCount; @@ -145,8 +142,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = datetime.toLocaleDateString(date); miscInfo.push(text); - } - catch (e) { + } catch (e) { console.log("Error parsing date: " + item.PremiereDate); } } @@ -162,8 +158,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.RecordAnyChannel) { miscInfo.push(globalize.translate('AllChannels')); - } - else { + } else { miscInfo.push(item.ChannelName || globalize.translate('OneChannel')); } } @@ -180,8 +175,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = datetime.getDisplayTime(date); miscInfo.push(text); } - } - catch (e) { + } catch (e) { console.log("Error parsing date: " + item.StartDate); } } @@ -191,8 +185,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.Status === "Continuing") { miscInfo.push(globalize.translate('SeriesYearToPresent', item.ProductionYear)); - } - else if (item.ProductionYear) { + } else if (item.ProductionYear) { text = item.ProductionYear; @@ -206,8 +199,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text += "-" + datetime.parseISO8601Date(item.EndDate).getFullYear(); } - } - catch (e) { + } catch (e) { console.log("Error parsing date: " + item.EndDate); } } @@ -223,18 +215,15 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater miscInfo.push({ html: '
' + globalize.translate('Live') + '
' }); - } - else if (item.IsPremiere) { + } else if (item.IsPremiere) { miscInfo.push({ html: '
' + globalize.translate('Premiere') + '
' }); - } - else if (item.IsSeries && !item.IsRepeat) { + } else if (item.IsSeries && !item.IsRepeat) { miscInfo.push({ html: '
' + globalize.translate('AttributeNew') + '
' }); - } - else if (item.IsSeries && item.IsRepeat) { + } else if (item.IsSeries && item.IsRepeat) { miscInfo.push({ html: '
' + globalize.translate('Repeat') + '
' }); @@ -250,20 +239,15 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (text) { miscInfo.push(text); } - } - - else if (item.IsMovie && item.ProductionYear && options.originalAirDate !== false) { + } else if (item.IsMovie && item.ProductionYear && options.originalAirDate !== false) { miscInfo.push(item.ProductionYear); - } - - else if (item.PremiereDate && options.originalAirDate !== false) { + } else if (item.PremiereDate && options.originalAirDate !== false) { try { date = datetime.parseISO8601Date(item.PremiereDate); text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date)); miscInfo.push(text); - } - catch (e) { + } catch (e) { console.log("Error parsing date: " + item.PremiereDate); } } else if (item.ProductionYear) { @@ -277,14 +261,12 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.ProductionYear) { miscInfo.push(item.ProductionYear); - } - else if (item.PremiereDate) { + } else if (item.PremiereDate) { try { text = datetime.parseISO8601Date(item.PremiereDate).getFullYear(); miscInfo.push(text); - } - catch (e) { + } catch (e) { console.log("Error parsing date: " + item.PremiereDate); } } diff --git a/src/components/medialibrarycreator/medialibrarycreator.js b/src/components/medialibrarycreator/medialibrarycreator.js index 54c13a4ebe..183e22551f 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.js +++ b/src/components/medialibrarycreator/medialibrarycreator.js @@ -151,13 +151,13 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed var xhr = new XMLHttpRequest; xhr.open("GET", "components/medialibrarycreator/medialibrarycreator.template.html", true); xhr.onload = function(e) { - var template = this.response, - dlg = dialogHelper.createDialog({ - size: "medium-tall", - modal: false, - removeOnClose: true, - scrollY: false - }); + var template = this.response; + var dlg = dialogHelper.createDialog({ + size: "medium-tall", + modal: false, + removeOnClose: true, + scrollY: false + }); dlg.classList.add("ui-body-a"); dlg.classList.add("background-theme-a"); dlg.classList.add("dlg-librarycreator"); diff --git a/src/components/metadataeditor/metadataeditor.js b/src/components/metadataeditor/metadataeditor.js index 552c716c1f..8843dc159c 100644 --- a/src/components/metadataeditor/metadataeditor.js +++ b/src/components/metadataeditor/metadataeditor.js @@ -144,7 +144,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi AirTime: form.querySelector('#txtAirTime').value, Genres: getListValues(form.querySelector("#listGenres")), Tags: getListValues(form.querySelector("#listTags")), - Studios: getListValues(form.querySelector("#listStudios")).map(function (element) { return { Name: element }; }), + Studios: getListValues(form.querySelector("#listStudios")).map(function (element) { + return { Name: element }; + }), PremiereDate: getDateValue(form, '#txtPremiereDate', 'PremiereDate'), DateCreated: getDateValue(form, '#txtDateAdded', 'DateCreated'), @@ -202,7 +204,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi } function getListValues(list) { - return Array.prototype.map.call(list.querySelectorAll('.textValue'), function (el) { return el.textContent; }); + return Array.prototype.map.call(list.querySelectorAll('.textValue'), function (el) { + return el.textContent; + }); } function addElementToList(source, sortCallback) { @@ -439,7 +443,6 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi var html = metadataInfo.ContentTypeOptions.map(function (i) { - return ''; }).join(''); @@ -744,7 +747,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi populateListView(context.querySelector('#listGenres'), item.Genres); populatePeople(context, item.People || []); - populateListView(context.querySelector('#listStudios'), (item.Studios || []).map(function (element) { return element.Name || ''; })); + populateListView(context.querySelector('#listStudios'), (item.Studios || []).map(function (element) { + return element.Name || ''; + })); populateListView(context.querySelector('#listTags'), item.Tags); @@ -783,8 +788,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi if (item.Type === 'Series') { context.querySelector('#selectDisplayOrder').value = item.DisplayOrder || ''; - } - else { + } else { context.querySelector('#selectDisplayOrder').value = item.DisplayOrder || ''; } @@ -859,7 +863,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += ""; var ratings = []; - var i, length, rating; + var i; + var length; + var rating; var currentValueFound = false; @@ -901,7 +907,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi items = items || []; if (typeof (sortCallback) === 'undefined') { - items.sort(function (a, b) { return a.toLowerCase().localeCompare(b.toLowerCase()); }); + items.sort(function (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()); + }); } else { items = sortCallback(items); } diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index d706b76b99..a6a416d528 100644 --- a/src/components/multiselect/multiselect.js +++ b/src/components/multiselect/multiselect.js @@ -241,8 +241,6 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo id: 'refresh' }); - - require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: menuItems, diff --git a/src/components/navdrawer/navdrawer.js b/src/components/navdrawer/navdrawer.js index cbf5c1eebc..69adbd1f5a 100644 --- a/src/components/navdrawer/navdrawer.js +++ b/src/components/navdrawer/navdrawer.js @@ -21,13 +21,13 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, } function onMenuTouchMove(e) { - var isOpen = self.visible, - touches = getTouches(e), - touch = touches[0] || {}, - endX = touch.clientX || 0, - endY = touch.clientY || 0, - deltaX = endX - (menuTouchStartX || 0), - deltaY = endY - (menuTouchStartY || 0); + var isOpen = self.visible; + var touches = getTouches(e); + var touch = touches[0] || {}; + var endX = touch.clientX || 0; + var endY = touch.clientY || 0; + var deltaX = endX - (menuTouchStartX || 0); + var deltaY = endY - (menuTouchStartY || 0); setVelocity(deltaX), isOpen && 1 !== dragMode && deltaX > 0 && (dragMode = 2), 0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5 ? (dragMode = 1, scrollContainer.addEventListener("scroll", disableEvent), self.showMask()) : 0 === dragMode && Math.abs(deltaY) >= 5 && (dragMode = 2), 1 === dragMode && (newPos = currentPos + deltaX, self.changeMenuPos()) } @@ -36,12 +36,12 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, scrollContainer.removeEventListener("scroll", disableEvent); dragMode = 0; - var touches = getTouches(e), - touch = touches[0] || {}, - endX = touch.clientX || 0, - endY = touch.clientY || 0, - deltaX = endX - (menuTouchStartX || 0), - deltaY = endY - (menuTouchStartY || 0); + var touches = getTouches(e); + var touch = touches[0] || {}; + var endX = touch.clientX || 0; + var endY = touch.clientY || 0; + var deltaX = endX - (menuTouchStartX || 0); + var deltaY = endY - (menuTouchStartY || 0); currentPos = deltaX; self.checkMenuState(deltaX, deltaY); @@ -78,15 +78,15 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, } function onBackgroundTouchStart(e) { - var touches = getTouches(e), - touch = touches[0] || {}; + var touches = getTouches(e); + var touch = touches[0] || {}; backgroundTouchStartX = touch.clientX, backgroundTouchStartTime = (new Date).getTime() } function onBackgroundTouchMove(e) { - var touches = getTouches(e), - touch = touches[0] || {}, - endX = touch.clientX || 0; + var touches = getTouches(e); + var touch = touches[0] || {}; + var endX = touch.clientX || 0; if (endX <= options.width && self.isVisible) { countStart++; var deltaX = endX - (backgroundTouchStartX || 0); @@ -100,10 +100,10 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, } function onBackgroundTouchEnd(e) { - var touches = getTouches(e), - touch = touches[0] || {}, - endX = touch.clientX || 0, - deltaX = endX - (backgroundTouchStartX || 0); + var touches = getTouches(e); + var touch = touches[0] || {}; + var endX = touch.clientX || 0; + var deltaX = endX - (backgroundTouchStartX || 0); self.checkMenuState(deltaX), countStart = 0 } @@ -111,21 +111,24 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, var classList = mask.classList; classList.contains("backdrop") || classList.add("hide") } - var self, defaults, mask, newPos = 0, - currentPos = 0, - startPoint = 0, - countStart = 0, - velocity = 0; + var self; + var defaults; + var mask; + var newPos = 0; + var currentPos = 0; + var startPoint = 0; + var countStart = 0; + var velocity = 0; options.target.classList.add("transition"); - var dragMode = 0, - scrollContainer = options.target.querySelector(".mainDrawer-scrollContainer"); + var dragMode = 0; + var scrollContainer = options.target.querySelector(".mainDrawer-scrollContainer"); scrollContainer.classList.add("scrollY"); var TouchMenuLA = function() { self = this, defaults = { width: 260, handleSize: 10, disableMask: !1, - maxMaskOpacity: .5 + maxMaskOpacity: 0.5 }, this.isVisible = !1, this.initialize() }; TouchMenuLA.prototype.initElements = function() { @@ -133,8 +136,11 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, passive: !0 })) }; - var menuTouchStartX, menuTouchStartY, menuTouchStartTime, edgeContainer = document.querySelector(".mainDrawerHandle"), - isPeeking = !1; + var menuTouchStartX; + var menuTouchStartY; + var menuTouchStartTime; + var edgeContainer = document.querySelector(".mainDrawerHandle"); + var isPeeking = false; TouchMenuLA.prototype.animateToPosition = function(pos) { requestAnimationFrame(function() { options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none" @@ -146,7 +152,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, self.close() }) }, TouchMenuLA.prototype.checkMenuState = function(deltaX, deltaY) { - velocity >= .4 ? deltaX >= 0 || Math.abs(deltaY || 0) >= 70 ? self.open() : self.close() : newPos >= 100 ? self.open() : newPos && self.close() + velocity >= 0.4 ? deltaX >= 0 || Math.abs(deltaY || 0) >= 70 ? self.open() : self.close() : newPos >= 100 ? self.open() : newPos && self.close() }, TouchMenuLA.prototype.open = function() { this.animateToPosition(options.width), currentPos = options.width, this.isVisible = !0, options.target.classList.add("drawer-open"), self.showMask(), self.invoke(options.onChange) }, TouchMenuLA.prototype.close = function() { @@ -154,7 +160,8 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, }, TouchMenuLA.prototype.toggle = function() { self.isVisible ? self.close() : self.open() }; - var backgroundTouchStartX, backgroundTouchStartTime; + var backgroundTouchStartX; + var backgroundTouchStartTime; TouchMenuLA.prototype.showMask = function() { mask.classList.remove("hide"), mask.offsetWidth, mask.classList.add("backdrop") }, TouchMenuLA.prototype.hideMask = function() { diff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js index 304eec7e08..62de365d99 100644 --- a/src/components/notifications/notifications.js +++ b/src/components/notifications/notifications.js @@ -21,8 +21,7 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir if (notification.close) { notification.close(); - } - else if (notification.cancel) { + } else if (notification.cancel) { notification.cancel(); } }, timeoutMs); @@ -180,15 +179,12 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir if (status === 'completed') { notification.title = globalize.translate('PackageInstallCompleted').replace('{0}', installation.Name + ' ' + installation.Version); notification.vibrate = true; - } - else if (status === 'cancelled') { + } else if (status === 'cancelled') { notification.title = globalize.translate('PackageInstallCancelled').replace('{0}', installation.Name + ' ' + installation.Version); - } - else if (status === 'failed') { + } else if (status === 'failed') { notification.title = globalize.translate('PackageInstallFailed').replace('{0}', installation.Name + ' ' + installation.Version); notification.vibrate = true; - } - else if (status === 'progress') { + } else if (status === 'progress') { notification.title = globalize.translate('InstallingPackage').replace('{0}', installation.Name + ' ' + installation.Version); notification.actions = diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 9fac61ba1f..d7be482c52 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -134,7 +134,8 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } }); - var i, length; + var i; + var length; playPauseButtons = elem.querySelectorAll('.playPauseButton'); for (i = 0, length = playPauseButtons.length; i < length; i++) { playPauseButtons[i].addEventListener('click', onPlayPauseClick); @@ -195,7 +196,6 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', volumeSlider.addEventListener('mousemove', setVolume); volumeSlider.addEventListener('touchmove', setVolume); - positionSlider = elem.querySelector('.nowPlayingBarPositionSlider'); positionSlider.addEventListener('change', function () { @@ -282,8 +282,8 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } function updatePlayPauseState(isPaused) { - - var i, length; + var i; + var length; if (playPauseButtons) { if (isPaused) { @@ -345,8 +345,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', if (repeatMode === 'RepeatAll') { toggleRepeatButtonIcon.innerHTML = "repeat"; toggleRepeatButton.classList.add('repeatButton-active'); - } - else if (repeatMode === 'RepeatOne') { + } else if (repeatMode === 'RepeatOne') { toggleRepeatButtonIcon.innerHTML = "repeat_one"; toggleRepeatButton.classList.add('repeatButton-active'); } else { diff --git a/src/components/playback/autoplaydetect.js b/src/components/playback/autoplaydetect.js index 7a7a73a538..3610eef2ab 100644 --- a/src/components/playback/autoplaydetect.js +++ b/src/components/playback/autoplaydetect.js @@ -48,9 +48,7 @@ define([], function () { } timeout = setTimeout(testAutoplay, 500); - } - - catch (e) { + } catch (e) { reject(); return; } diff --git a/src/components/playback/brightnessosd.js b/src/components/playback/brightnessosd.js index 1797463f29..c949743bec 100644 --- a/src/components/playback/brightnessosd.js +++ b/src/components/playback/brightnessosd.js @@ -103,8 +103,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia if (iconElement) { if (brightness >= 80) { iconElement.innerHTML = ''; - } - else if (brightness >= 20) { + } else if (brightness >= 20) { iconElement.innerHTML = ''; } else { iconElement.innerHTML = ''; diff --git a/src/components/playback/mediasession.js b/src/components/playback/mediasession.js index 63e0bde6c1..7f4b9f519e 100644 --- a/src/components/playback/mediasession.js +++ b/src/components/playback/mediasession.js @@ -158,7 +158,7 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f lastUpdateTime = now; - if (navigator.mediaSession){ + if (navigator.mediaSession) { navigator.mediaSession.metadata = new MediaMetadata({ title: title, artist: artist, @@ -278,7 +278,6 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f } if (navigator.mediaSession) { - navigator.mediaSession.setActionHandler('previoustrack', function () { execute('previousTrack'); }); diff --git a/src/components/playback/nowplayinghelper.js b/src/components/playback/nowplayinghelper.js index d5803b426f..b1af977ab0 100644 --- a/src/components/playback/nowplayinghelper.js +++ b/src/components/playback/nowplayinghelper.js @@ -43,8 +43,7 @@ define([], function () { } else if (nowPlayingItem.Artists && nowPlayingItem.Artists.length) { bottomText = nowPlayingItem.Artists.join(', '); - } - else if (nowPlayingItem.SeriesName || nowPlayingItem.Album) { + } else if (nowPlayingItem.SeriesName || nowPlayingItem.Album) { bottomText = topText; topText = nowPlayingItem.SeriesName || nowPlayingItem.Album; @@ -60,8 +59,7 @@ define([], function () { } else { topItem = null; } - } - else if (nowPlayingItem.ProductionYear && includeNonNameInfo !== false) { + } else if (nowPlayingItem.ProductionYear && includeNonNameInfo !== false) { bottomText = nowPlayingItem.ProductionYear; } diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 13497e1912..23f0d4572e 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -107,8 +107,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla TotalRecordCount: 1 }; }); - } - else { + } else { query.Limit = query.Limit || 300; query.Fields = "Chapters"; @@ -182,8 +181,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (container === 'm4a') { return 'audio/mp4'; } - } - else if (type === 'video') { + } else if (type === 'video') { if (container === 'mkv') { return 'video/x-matroska'; } @@ -212,8 +210,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla var results = regex.exec(url); if (results == null) { return ""; - } - else { + } else { return decodeURIComponent(results[1].replace(/\+/g, " ")); } } @@ -649,13 +646,10 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla // If this is the only way it can be played, then allow it if (!mediaSource.SupportsDirectStream && !mediaSource.SupportsTranscoding) { return Promise.resolve(true); - } - else { + } else { return isHostReachable(mediaSource, apiClient); } - } - - else if (mediaSource.Protocol === 'File') { + } else if (mediaSource.Protocol === 'File') { return new Promise(function (resolve, reject) { @@ -1272,7 +1266,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla var currentMediaSource = self.currentMediaSource(player); var mediaStreams = []; - var i, length; + var i; + var length; for (i = 0, length = currentMediaSource.MediaStreams.length; i < length; i++) { if (currentMediaSource.MediaStreams[i].Type === 'Audio') { mediaStreams.push(currentMediaSource.MediaStreams[i]); @@ -1316,7 +1311,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla var currentMediaSource = self.currentMediaSource(player); var mediaStreams = []; - var i, length; + var i; + var length; for (i = 0, length = currentMediaSource.MediaStreams.length; i < length; i++) { if (currentMediaSource.MediaStreams[i].Type === 'Subtitle') { mediaStreams.push(currentMediaSource.MediaStreams[i]); @@ -1360,7 +1356,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla function isAudioStreamSupported(mediaSource, index, deviceProfile) { var mediaStream; - var i, length; + var i; + var length; var mediaStreams = mediaSource.MediaStreams; for (i = 0, length = mediaStreams.length; i < length; i++) { @@ -1423,8 +1420,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (isAudioStreamSupported(self.currentMediaSource(player), index, profile)) { player.setAudioStreamIndex(index); getPlayerData(player).audioStreamIndex = index; - } - else { + } else { changeStream(player, getCurrentTicks(player), { AudioStreamIndex: index }); getPlayerData(player).audioStreamIndex = index; } @@ -1595,8 +1591,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla // Need to change the transcoded stream to remove subs changeStream(player, getCurrentTicks(player), { SubtitleStreamIndex: -1 }); } - } - else if (!currentStream && newStream) { + } else if (!currentStream && newStream) { if (getDeliveryMethod(newStream) === 'External') { selectedTrackElementIndex = index; @@ -1607,8 +1602,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla // Need to change the transcoded stream to add subs changeStream(player, getCurrentTicks(player), { SubtitleStreamIndex: index }); } - } - else if (currentStream && newStream) { + } else if (currentStream && newStream) { // Switching tracks // We can handle this clientside if the new track is external or the new track is embedded and we're not transcoding @@ -1645,7 +1639,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla player = player || self._currentPlayer; if (player.disableShowingSubtitleOffset) { player.disableShowingSubtitleOffset(); - } + } } self.isShowingSubtitleOffsetEnabled = function(player) { @@ -1674,7 +1668,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla self.canHandleOffsetOnCurrentSubtitle = function(player) { var index = self.getSubtitleStreamIndex(player); - return index !== -1 && self.isSubtitleStreamExternal(index, player); + return index !== -1 && self.isSubtitleStreamExternal(index, player); } self.seek = function (ticks, player) { @@ -1865,17 +1859,15 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (firstItem.Type === "Program") { promise = getItemsForPlayback(serverId, { - Ids: firstItem.ChannelId, + Ids: firstItem.ChannelId }); - } - else if (firstItem.Type === "Playlist") { + } else if (firstItem.Type === "Playlist") { promise = getItemsForPlayback(serverId, { ParentId: firstItem.Id, SortBy: options.shuffle ? 'Random' : null }); - } - else if (firstItem.Type === "MusicArtist") { + } else if (firstItem.Type === "MusicArtist") { promise = getItemsForPlayback(serverId, { ArtistIds: firstItem.Id, @@ -1885,8 +1877,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla MediaTypes: "Audio" }); - } - else if (firstItem.MediaType === "Photo") { + } else if (firstItem.MediaType === "Photo") { promise = getItemsForPlayback(serverId, { ParentId: firstItem.ParentId, @@ -1915,8 +1906,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return Promise.resolve(result); }); - } - else if (firstItem.Type === "PhotoAlbum") { + } else if (firstItem.Type === "PhotoAlbum") { promise = getItemsForPlayback(serverId, { ParentId: firstItem.Id, @@ -1928,8 +1918,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla Limit: 1000 }); - } - else if (firstItem.Type === "MusicGenre") { + } else if (firstItem.Type === "MusicGenre") { promise = getItemsForPlayback(serverId, { GenreIds: firstItem.Id, @@ -1938,8 +1927,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla SortBy: options.shuffle ? 'Random' : 'SortName', MediaTypes: "Audio" }); - } - else if (firstItem.IsFolder) { + } else if (firstItem.IsFolder) { promise = getItemsForPlayback(serverId, mergePlaybackQueries({ @@ -1951,8 +1939,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla MediaTypes: "Audio,Video" }, queryOptions)); - } - else if (firstItem.Type === "Episode" && items.length === 1 && getPlayer(firstItem, options).supportsProgress !== false) { + } else if (firstItem.Type === "Episode" && items.length === 1 && getPlayer(firstItem, options).supportsProgress !== false) { promise = new Promise(function (resolve, reject) { var apiClient = connectionManager.getApiClient(firstItem.ServerId); @@ -2537,16 +2524,12 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla playMethod = 'DirectPlay'; - } - - else if (mediaSource.StreamUrl) { + } else if (mediaSource.StreamUrl) { // Only used for audio playMethod = 'Transcode'; mediaUrl = mediaSource.StreamUrl; - } - - else if (mediaSource.SupportsDirectStream) { + } else if (mediaSource.SupportsDirectStream) { directOptions = { Static: true, @@ -2706,9 +2689,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return p.canPlayItem(item, playOptions); } return true; - } - - else if (item.Url && p.canPlayUrl) { + } else if (item.Url && p.canPlayUrl) { return p.canPlayUrl(item.Url); } } @@ -3222,8 +3203,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (displayErrorCode && typeof (displayErrorCode) === 'string') { showPlaybackInfoErrorMessage(self, displayErrorCode, nextItem); - } - else if (nextItem) { + } else if (nextItem) { self.nextTrack(); } } diff --git a/src/components/playback/playbackorientation.js b/src/components/playback/playbackorientation.js index 731d9c3c42..3253d8acdf 100644 --- a/src/components/playback/playbackorientation.js +++ b/src/components/playback/playbackorientation.js @@ -29,8 +29,7 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager // returns a boolean orientationLocked = promise; } - } - catch (err) { + } catch (err) { onOrientationChangeError(err); } } @@ -46,8 +45,7 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager if (unlockOrientation) { try { unlockOrientation(); - } - catch (err) { + } catch (err) { console.log('error unlocking orientation: ' + err); } orientationLocked = false; diff --git a/src/components/playback/playerSelectionMenu.js b/src/components/playback/playerSelectionMenu.js index 2102720e9a..7e4352bcb7 100644 --- a/src/components/playback/playerSelectionMenu.js +++ b/src/components/playback/playerSelectionMenu.js @@ -153,7 +153,6 @@ define(['appSettings', 'events', 'browser', 'loading', 'playbackManager', 'appRo }); } - function disconnectFromPlayer(currentDeviceName) { if (playbackManager.getSupportedCommands().indexOf('EndSession') !== -1) { @@ -193,7 +192,6 @@ define(['appSettings', 'events', 'browser', 'loading', 'playbackManager', 'appRo }); - } else { playbackManager.setDefaultPlayerActive(); @@ -275,8 +273,7 @@ define(['appSettings', 'events', 'browser', 'loading', 'playbackManager', 'appRo dialogHelper.open(dlg).then(function () { if (destination === 'nowplaying') { appRouter.showNowPlaying(); - } - else if (destination === 'disconnectFromPlayer') { + } else if (destination === 'disconnectFromPlayer') { disconnectFromPlayer(currentDeviceName); } }, emptyCallback); diff --git a/src/components/playback/playmethodhelper.js b/src/components/playback/playmethodhelper.js index 58458aa399..4e85f87093 100644 --- a/src/components/playback/playmethodhelper.js +++ b/src/components/playback/playmethodhelper.js @@ -9,14 +9,11 @@ define([], function () { if (session.TranscodingInfo && session.TranscodingInfo.IsVideoDirect) { return 'DirectStream'; - } - else if (session.PlayState.PlayMethod === 'Transcode') { + } else if (session.PlayState.PlayMethod === 'Transcode') { return 'Transcode'; - } - else if (session.PlayState.PlayMethod === 'DirectStream') { + } else if (session.PlayState.PlayMethod === 'DirectStream') { return 'DirectPlay'; - } - else if (session.PlayState.PlayMethod === 'DirectPlay') { + } else if (session.PlayState.PlayMethod === 'DirectPlay') { return 'DirectPlay'; } } diff --git a/src/components/playback/playqueuemanager.js b/src/components/playback/playqueuemanager.js index 2cbaf1d9f4..ed2076a814 100644 --- a/src/components/playback/playqueuemanager.js +++ b/src/components/playback/playqueuemanager.js @@ -58,15 +58,15 @@ define([], function () { function arrayInsertAt(destArray, pos, arrayToInsert) { var args = []; - args.push(pos); // where to insert - args.push(0); // nothing to remove - args = args.concat(arrayToInsert); // add on array to insert - destArray.splice.apply(destArray, args); // splice it in + args.push(pos); // where to insert + args.push(0); // nothing to remove + args = args.concat(arrayToInsert); // add on array to insert + destArray.splice.apply(destArray, args); // splice it in } PlayQueueManager.prototype.queueNext = function (items) { - - var i, length; + var i; + var length; for (i = 0, length = items.length; i < length; i++) { diff --git a/src/components/playerstats/playerstats.js b/src/components/playerstats/playerstats.js index 5e097f2fe2..4179192dd2 100644 --- a/src/components/playerstats/playerstats.js +++ b/src/components/playerstats/playerstats.js @@ -364,8 +364,7 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth var category = playerStats[i]; if (category.type === 'audio') { category.name = 'Audio Info'; - } - else if (category.type === 'video') { + } else if (category.type === 'video') { category.name = 'Video Info'; } categories.push(category); diff --git a/src/components/recordingcreator/recordingbutton.js b/src/components/recordingcreator/recordingbutton.js index 0a76d3914c..f51f8f2766 100644 --- a/src/components/recordingcreator/recordingbutton.js +++ b/src/components/recordingcreator/recordingbutton.js @@ -46,16 +46,13 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' if (item.Type === 'SeriesTimer') { return ''; - } - else if (item.TimerId || item.SeriesTimerId) { + } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; - } - else if (item.Type === 'Timer') { + } else if (item.Type === 'Timer') { status = item.Status; - } - else { + } else { return ''; } diff --git a/src/components/recordingcreator/recordingcreator.js b/src/components/recordingcreator/recordingcreator.js index b3d16a0dab..614d483b21 100644 --- a/src/components/recordingcreator/recordingcreator.js +++ b/src/components/recordingcreator/recordingcreator.js @@ -40,8 +40,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c maxHeight: imageHeight, tag: item.ImageTags.Primary }); - } - else if (imageTags.Thumb) { + } else if (imageTags.Thumb) { return apiClient.getScaledImageUrl(item.Id, { type: "Thumb", diff --git a/src/components/recordingcreator/recordingeditor.js b/src/components/recordingcreator/recordingeditor.js index 69b8b1023b..3a1d4ba943 100644 --- a/src/components/recordingcreator/recordingeditor.js +++ b/src/components/recordingcreator/recordingeditor.js @@ -95,7 +95,6 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c currentResolve = resolve; require(['text!./recordingeditor.template.html'], function (template) { - var dialogOptions = { removeOnClose: true, scrollY: false @@ -103,7 +102,6 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c if (layoutManager.tv) { dialogOptions.size = 'fullscreen'; - } else { } var dlg = dialogHelper.createDialog(dialogOptions); diff --git a/src/components/recordingcreator/recordinghelper.js b/src/components/recordingcreator/recordinghelper.js index 8c56b578c9..4bfd316c73 100644 --- a/src/components/recordingcreator/recordinghelper.js +++ b/src/components/recordingcreator/recordinghelper.js @@ -166,8 +166,7 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi loading.show(); cancelTimer(apiClient, timerId, true).then(resolve, reject); - } - else if (result === 'cancelseriestimer') { + } else if (result === 'cancelseriestimer') { loading.show(); diff --git a/src/components/recordingcreator/seriesrecordingeditor.js b/src/components/recordingcreator/seriesrecordingeditor.js index 9878081e67..73a98cf5e7 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.js +++ b/src/components/recordingcreator/seriesrecordingeditor.js @@ -139,7 +139,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c context.querySelector('.selectKeepUpTo').innerHTML = html; } - + function onFieldChange(e) { this.querySelector('.btnSubmit').click(); } diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index e586a1e124..562ea7ea35 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -179,15 +179,15 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL if (player) { switch (playbackManager.getRepeatMode(player)) { case "RepeatNone": - playbackManager.setRepeatMode("RepeatAll", player); - break; + playbackManager.setRepeatMode("RepeatAll", player); + break; case "RepeatAll": - playbackManager.setRepeatMode("RepeatOne", player); - break; + playbackManager.setRepeatMode("RepeatOne", player); + break; case "RepeatOne": - playbackManager.setRepeatMode("RepeatNone", player); + playbackManager.setRepeatMode("RepeatNone", player); } } } diff --git a/src/components/sanitizefilename.js b/src/components/sanitizefilename.js index 843ab31f04..d422a95533 100644 --- a/src/components/sanitizefilename.js +++ b/src/components/sanitizefilename.js @@ -34,18 +34,14 @@ define([], function () { // when parsing previous hi-surrogate, 3 is added to byteLength if (prevCodePoint != null && isHighSurrogate(prevCodePoint)) { byteLength += 1; - } - else { + } else { byteLength += 3; } - } - else if (codePoint <= 0x7f) { + } else if (codePoint <= 0x7f) { byteLength += 1; - } - else if (codePoint >= 0x80 && codePoint <= 0x7ff) { + } else if (codePoint >= 0x80 && codePoint <= 0x7ff) { byteLength += 2; - } - else if (codePoint >= 0x800 && codePoint <= 0xffff) { + } else if (codePoint >= 0x800 && codePoint <= 0xffff) { byteLength += 3; } prevCodePoint = codePoint; @@ -77,8 +73,7 @@ define([], function () { if (curByteLength === byteLength) { return string.slice(0, i + 1); - } - else if (curByteLength > byteLength) { + } else if (curByteLength > byteLength) { return string.slice(0, i - segment.length + 1); } } @@ -89,11 +84,11 @@ define([], function () { return { sanitize: function (input, replacement) { var sanitized = input - .replace(illegalRe, replacement) - .replace(controlRe, replacement) - .replace(reservedRe, replacement) - .replace(windowsReservedRe, replacement) - .replace(windowsTrailingRe, replacement); + .replace(illegalRe, replacement) + .replace(controlRe, replacement) + .replace(reservedRe, replacement) + .replace(windowsReservedRe, replacement) + .replace(windowsTrailingRe, replacement); return truncate(sanitized, 255); } }; diff --git a/src/components/scroller.js b/src/components/scroller.js index de0ce6b932..65f33b8e8d 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -82,7 +82,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc intervactive: null, // Selector for special interactive elements. // Mixed options - speed: 0, // Animations speed in milliseconds. 0 to disable animations. + speed: 0 // Animations speed in milliseconds. 0 to disable animations. }, options); @@ -93,17 +93,14 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc // in cases with firefox, if the smooth scroll api is supported then use that because their implementation is very good if (options.allowNativeScroll === false) { options.enableNativeScroll = false; - } - else if (isSmoothScrollSupported && ((browser.firefox && !layoutManager.tv) || options.allowNativeSmoothScroll)) { + } else if (isSmoothScrollSupported && ((browser.firefox && !layoutManager.tv) || options.allowNativeSmoothScroll)) { // native smooth scroll options.enableNativeScroll = true; - } - else if (options.requireAnimation && (browser.animate || browser.supportsCssAnimation())) { + } else if (options.requireAnimation && (browser.animate || browser.supportsCssAnimation())) { // transform is the only way to guarantee animation options.enableNativeScroll = false; - } - else if (!layoutManager.tv || !browser.animate) { + } else if (!layoutManager.tv || !browser.animate) { options.enableNativeScroll = true; } @@ -211,7 +208,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc self.frameResizeObserver.observe(frame); } - self.reload = function () { load(); }; + self.reload = function () { + load(); + }; self.getScrollEventName = function () { return transform ? 'scrollanimate' : 'scroll'; @@ -227,7 +226,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc function nativeScrollTo(container, pos, immediate) { - if (container.scroll) { if (o.horizontal) { @@ -242,8 +240,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc behavior: immediate ? 'instant' : 'smooth' }); } - } - else if (!immediate && container.scrollTo) { + } else if (!immediate && container.scrollTo) { if (o.horizontal) { container.scrollTo(Math.round(pos), 0); } else { diff --git a/src/components/search/searchresults.js b/src/components/search/searchresults.js index e42088c066..d979a94693 100644 --- a/src/components/search/searchresults.js +++ b/src/components/search/searchresults.js @@ -56,8 +56,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', if (instance.options.collectionType === 'tvshows') { if (query.IncludeArtists) { allowSearch = false; - } - else if (queryIncludeItemTypes === 'Movie' || + } else if (queryIncludeItemTypes === 'Movie' || queryIncludeItemTypes === 'LiveTvProgram' || queryIncludeItemTypes === 'MusicAlbum' || queryIncludeItemTypes === 'Audio' || @@ -69,12 +68,10 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', query.MediaTypes === 'Photo') { allowSearch = false; } - } - else if (instance.options.collectionType === 'movies') { + } else if (instance.options.collectionType === 'movies') { if (query.IncludeArtists) { allowSearch = false; - } - else if (queryIncludeItemTypes === 'Series' || + } else if (queryIncludeItemTypes === 'Series' || queryIncludeItemTypes === 'Episode' || queryIncludeItemTypes === 'LiveTvProgram' || queryIncludeItemTypes === 'MusicAlbum' || @@ -87,23 +84,19 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', query.MediaTypes === 'Photo') { allowSearch = false; } - } - else if (instance.options.collectionType === 'music') { + } else if (instance.options.collectionType === 'music') { if (query.People) { allowSearch = false; - } - else if (queryIncludeItemTypes === 'Series' || + } else if (queryIncludeItemTypes === 'Series' || queryIncludeItemTypes === 'Episode' || queryIncludeItemTypes === 'LiveTvProgram' || queryIncludeItemTypes === 'Movie') { allowSearch = false; } - } - else if (instance.options.collectionType === 'livetv') { + } else if (instance.options.collectionType === 'livetv') { if (query.IncludeArtists || query.IncludePeople) { allowSearch = false; - } - else if (queryIncludeItemTypes === 'Series' || + } else if (queryIncludeItemTypes === 'Series' || queryIncludeItemTypes === 'Episode' || queryIncludeItemTypes === 'MusicAlbum' || queryIncludeItemTypes === 'Audio' || @@ -142,7 +135,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', } else if (query.IncludeArtists) { methodName = 'getArtists'; - } + } } return apiClient[methodName](apiClient.getCurrentUserId(), query); @@ -179,19 +172,19 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.movieResults', { - preferThumb: true, - inheritThumb: false, - shape: (enableScrollX() ? 'overflowPortrait' : 'portrait'), - showParentTitleOrTitle: true, - showTitle: false, - centerText: true, - coverImage: true, - overlayText: false, - overlayMoreButton: true, - showAirTime: true, - showAirDateTime: true, - showChannelName: true - }); + preferThumb: true, + inheritThumb: false, + shape: (enableScrollX() ? 'overflowPortrait' : 'portrait'), + showParentTitleOrTitle: true, + showTitle: false, + centerText: true, + coverImage: true, + overlayText: false, + overlayMoreButton: true, + showAirTime: true, + showAirDateTime: true, + showChannelName: true + }); } else { searchType(instance, apiClient, { @@ -205,11 +198,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.movieResults', { - showTitle: true, - overlayText: false, - centerText: true, - showYear: true - }); + showTitle: true, + overlayText: false, + centerText: true, + showYear: true + }); } searchType(instance, apiClient, { @@ -223,11 +216,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.seriesResults', { - showTitle: true, - overlayText: false, - centerText: true, - showYear: true - }); + showTitle: true, + overlayText: false, + centerText: true, + showYear: true + }); if (instance.options.collectionType === 'livetv') { @@ -246,19 +239,19 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.episodeResults', { - preferThumb: true, - inheritThumb: false, - shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), - showParentTitleOrTitle: true, - showTitle: false, - centerText: true, - coverImage: true, - overlayText: false, - overlayMoreButton: true, - showAirTime: true, - showAirDateTime: true, - showChannelName: true - }); + preferThumb: true, + inheritThumb: false, + shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), + showParentTitleOrTitle: true, + showTitle: false, + centerText: true, + coverImage: true, + overlayText: false, + overlayMoreButton: true, + showAirTime: true, + showAirDateTime: true, + showChannelName: true + }); } else { @@ -273,10 +266,10 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.episodeResults', { - coverImage: true, - showTitle: true, - showParentTitle: true - }); + coverImage: true, + showTitle: true, + showParentTitle: true + }); } searchType(instance, apiClient, { @@ -292,20 +285,20 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.sportsResults', { - preferThumb: true, - inheritThumb: false, - shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), - showParentTitleOrTitle: true, - showTitle: false, - centerText: true, - coverImage: true, - overlayText: false, - overlayMoreButton: true, - showAirTime: true, - showAirDateTime: true, - showChannelName: true + preferThumb: true, + inheritThumb: false, + shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), + showParentTitleOrTitle: true, + showTitle: false, + centerText: true, + coverImage: true, + overlayText: false, + overlayMoreButton: true, + showAirTime: true, + showAirDateTime: true, + showChannelName: true - }); + }); searchType(instance, apiClient, { searchTerm: value, @@ -320,20 +313,20 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.kidsResults', { - preferThumb: true, - inheritThumb: false, - shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), - showParentTitleOrTitle: true, - showTitle: false, - centerText: true, - coverImage: true, - overlayText: false, - overlayMoreButton: true, - showAirTime: true, - showAirDateTime: true, - showChannelName: true + preferThumb: true, + inheritThumb: false, + shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), + showParentTitleOrTitle: true, + showTitle: false, + centerText: true, + coverImage: true, + overlayText: false, + overlayMoreButton: true, + showAirTime: true, + showAirDateTime: true, + showChannelName: true - }); + }); searchType(instance, apiClient, { searchTerm: value, @@ -348,20 +341,20 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.newsResults', { - preferThumb: true, - inheritThumb: false, - shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), - showParentTitleOrTitle: true, - showTitle: false, - centerText: true, - coverImage: true, - overlayText: false, - overlayMoreButton: true, - showAirTime: true, - showAirDateTime: true, - showChannelName: true + preferThumb: true, + inheritThumb: false, + shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), + showParentTitleOrTitle: true, + showTitle: false, + centerText: true, + coverImage: true, + overlayText: false, + overlayMoreButton: true, + showAirTime: true, + showAirDateTime: true, + showChannelName: true - }); + }); searchType(instance, apiClient, { searchTerm: value, @@ -379,20 +372,20 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.programResults', { - preferThumb: true, - inheritThumb: false, - shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), - showParentTitleOrTitle: true, - showTitle: false, - centerText: true, - coverImage: true, - overlayText: false, - overlayMoreButton: true, - showAirTime: true, - showAirDateTime: true, - showChannelName: true + preferThumb: true, + inheritThumb: false, + shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), + showParentTitleOrTitle: true, + showTitle: false, + centerText: true, + coverImage: true, + overlayText: false, + overlayMoreButton: true, + showAirTime: true, + showAirDateTime: true, + showChannelName: true - }); + }); searchType(instance, apiClient, { searchTerm: value, @@ -406,11 +399,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.videoResults', { - showParentTitle: true, - showTitle: true, - overlayText: false, - centerText: true - }); + showParentTitle: true, + showTitle: true, + overlayText: false, + centerText: true + }); searchType(instance, apiClient, { searchTerm: value, @@ -422,9 +415,9 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.peopleResults', { - coverImage: true, - showTitle: true - }); + coverImage: true, + showTitle: true + }); searchType(instance, apiClient, { searchTerm: value, @@ -435,9 +428,9 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeArtists: true }, context, '.artistResults', { - coverImage: true, - showTitle: true - }); + coverImage: true, + showTitle: true + }); searchType(instance, apiClient, { searchTerm: value, @@ -450,11 +443,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.albumResults', { - showParentTitle: true, - showTitle: true, - overlayText: false, - centerText: true - }); + showParentTitle: true, + showTitle: true, + overlayText: false, + centerText: true + }); searchType(instance, apiClient, { searchTerm: value, @@ -467,13 +460,13 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.songResults', { - showParentTitle: true, - showTitle: true, - overlayText: false, - centerText: true, - action: 'play' + showParentTitle: true, + showTitle: true, + overlayText: false, + centerText: true, + action: 'play' - }); + }); searchType(instance, apiClient, { searchTerm: value, @@ -486,11 +479,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.photoResults', { - showParentTitle: false, - showTitle: true, - overlayText: false, - centerText: true - }); + showParentTitle: false, + showTitle: true, + overlayText: false, + centerText: true + }); searchType(instance, apiClient, { searchTerm: value, @@ -503,10 +496,10 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.photoAlbumResults', { - showTitle: true, - overlayText: false, - centerText: true - }); + showTitle: true, + overlayText: false, + centerText: true + }); searchType(instance, apiClient, { searchTerm: value, @@ -519,11 +512,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.bookResults', { - showTitle: true, - overlayText: false, - centerText: true + showTitle: true, + overlayText: false, + centerText: true - }); + }); searchType(instance, apiClient, { searchTerm: value, @@ -536,10 +529,10 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.audioBookResults', { - showTitle: true, - overlayText: false, - centerText: true - }); + showTitle: true, + overlayText: false, + centerText: true + }); searchType(instance, apiClient, { searchTerm: value, @@ -552,10 +545,10 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', }, context, '.playlistResults', { - showTitle: true, - overlayText: false, - centerText: true - }); + showTitle: true, + overlayText: false, + centerText: true + }); } function searchType(instance, apiClient, query, context, section, cardOptions) { diff --git a/src/components/serverNotifications/gamepadtokey.js b/src/components/serverNotifications/gamepadtokey.js index 5dafb2828b..abf3ddb38b 100644 --- a/src/components/serverNotifications/gamepadtokey.js +++ b/src/components/serverNotifications/gamepadtokey.js @@ -22,44 +22,44 @@ require(['apphost'], function (appHost) { "use strict"; - var _GAMEPAD_A_BUTTON_INDEX = 0, - _GAMEPAD_B_BUTTON_INDEX = 1, - _GAMEPAD_DPAD_UP_BUTTON_INDEX = 12, - _GAMEPAD_DPAD_DOWN_BUTTON_INDEX = 13, - _GAMEPAD_DPAD_LEFT_BUTTON_INDEX = 14, - _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX = 15, - _GAMEPAD_A_KEY = "GamepadA", - _GAMEPAD_B_KEY = "GamepadB", - _GAMEPAD_DPAD_UP_KEY = "GamepadDPadUp", - _GAMEPAD_DPAD_DOWN_KEY = "GamepadDPadDown", - _GAMEPAD_DPAD_LEFT_KEY = "GamepadDPadLeft", - _GAMEPAD_DPAD_RIGHT_KEY = "GamepadDPadRight", - _GAMEPAD_LEFT_THUMBSTICK_UP_KEY = "GamepadLeftThumbStickUp", - _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY = "GamepadLeftThumbStickDown", - _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY = "GamepadLeftThumbStickLeft", - _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY = "GamepadLeftThumbStickRight", - _GAMEPAD_A_KEYCODE = 0, - _GAMEPAD_B_KEYCODE = 27, - _GAMEPAD_DPAD_UP_KEYCODE = 38, - _GAMEPAD_DPAD_DOWN_KEYCODE = 40, - _GAMEPAD_DPAD_LEFT_KEYCODE = 37, - _GAMEPAD_DPAD_RIGHT_KEYCODE = 39, - _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE = 38, - _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE = 40, - _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE = 37, - _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE = 39, - _THUMB_STICK_THRESHOLD = 0.75; + var _GAMEPAD_A_BUTTON_INDEX = 0; + var _GAMEPAD_B_BUTTON_INDEX = 1; + var _GAMEPAD_DPAD_UP_BUTTON_INDEX = 12; + var _GAMEPAD_DPAD_DOWN_BUTTON_INDEX = 13; + var _GAMEPAD_DPAD_LEFT_BUTTON_INDEX = 14; + var _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX = 15; + var _GAMEPAD_A_KEY = "GamepadA"; + var _GAMEPAD_B_KEY = "GamepadB"; + var _GAMEPAD_DPAD_UP_KEY = "GamepadDPadUp"; + var _GAMEPAD_DPAD_DOWN_KEY = "GamepadDPadDown"; + var _GAMEPAD_DPAD_LEFT_KEY = "GamepadDPadLeft"; + var _GAMEPAD_DPAD_RIGHT_KEY = "GamepadDPadRight"; + var _GAMEPAD_LEFT_THUMBSTICK_UP_KEY = "GamepadLeftThumbStickUp"; + var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY = "GamepadLeftThumbStickDown"; + var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY = "GamepadLeftThumbStickLeft"; + var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY = "GamepadLeftThumbStickRight"; + var _GAMEPAD_A_KEYCODE = 0; + var _GAMEPAD_B_KEYCODE = 27; + var _GAMEPAD_DPAD_UP_KEYCODE = 38; + var _GAMEPAD_DPAD_DOWN_KEYCODE = 40; + var _GAMEPAD_DPAD_LEFT_KEYCODE = 37; + var _GAMEPAD_DPAD_RIGHT_KEYCODE = 39; + var _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE = 38; + var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE = 40; + var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE = 37; + var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE = 39; + var _THUMB_STICK_THRESHOLD = 0.75; - var _leftThumbstickUpPressed = false, - _leftThumbstickDownPressed = false, - _leftThumbstickLeftPressed = false, - _leftThumbstickRightPressed = false, - _dPadUpPressed = false, - _dPadDownPressed = false, - _dPadLeftPressed = false, - _dPadRightPressed = false, - _gamepadAPressed = false, - _gamepadBPressed = false; + var _leftThumbstickUpPressed = false; + var _leftThumbstickDownPressed = false; + var _leftThumbstickLeftPressed = false; + var _leftThumbstickRightPressed = false; + var _dPadUpPressed = false; + var _dPadDownPressed = false; + var _dPadLeftPressed = false; + var _dPadRightPressed = false; + var _gamepadAPressed = false; + var _gamepadBPressed = false; // The set of buttons on the gamepad we listen for. var ProcessedButtons = [ @@ -260,7 +260,9 @@ require(['apphost'], function (appHost) { gamepads = navigator.webkitGetGamepads(); } gamepads = gamepads || []; - var i, j, len; + var i; + var j; + var len; for (i = 0, len = gamepads.length; i < len; i++) { var gamepad = gamepads[i]; if (gamepad) { diff --git a/src/components/serverNotifications/serverNotifications.js b/src/components/serverNotifications/serverNotifications.js index 74c65cd473..ff571b1e1a 100644 --- a/src/components/serverNotifications/serverNotifications.js +++ b/src/components/serverNotifications/serverNotifications.js @@ -18,8 +18,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus toast({ title: args.Header, text: args.Text }); }); - } - else { + } else { require(['alert'], function (alert) { alert({ title: args.Header, text: args.Text }); }); @@ -157,11 +156,9 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus if (msg.Data.PlayCommand === "PlayNext") { playbackManager.queueNext({ ids: msg.Data.ItemIds, serverId: serverId }); - } - else if (msg.Data.PlayCommand === "PlayLast") { + } else if (msg.Data.PlayCommand === "PlayLast") { playbackManager.queue({ ids: msg.Data.ItemIds, serverId: serverId }); - } - else { + } else { playbackManager.play({ ids: msg.Data.ItemIds, startPositionTicks: msg.Data.StartPositionTicks, @@ -173,38 +170,29 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus }); } - } - else if (msg.MessageType === "Playstate") { + } else if (msg.MessageType === "Playstate") { if (msg.Data.Command === 'Stop') { inputManager.trigger('stop'); - } - else if (msg.Data.Command === 'Pause') { + } else if (msg.Data.Command === 'Pause') { inputManager.trigger('pause'); - } - else if (msg.Data.Command === 'Unpause') { + } else if (msg.Data.Command === 'Unpause') { inputManager.trigger('play'); - } - else if (msg.Data.Command === 'PlayPause') { + } else if (msg.Data.Command === 'PlayPause') { inputManager.trigger('playpause'); - } - else if (msg.Data.Command === 'Seek') { + } else if (msg.Data.Command === 'Seek') { playbackManager.seek(msg.Data.SeekPositionTicks); - } - else if (msg.Data.Command === 'NextTrack') { + } else if (msg.Data.Command === 'NextTrack') { inputManager.trigger('next'); - } - else if (msg.Data.Command === 'PreviousTrack') { + } else if (msg.Data.Command === 'PreviousTrack') { inputManager.trigger('previous'); } else { notifyApp(); } - } - else if (msg.MessageType === "GeneralCommand") { + } else if (msg.MessageType === "GeneralCommand") { var cmd = msg.Data; processGeneralCommand(cmd, apiClient); - } - else if (msg.MessageType === "UserDataChanged") { + } else if (msg.MessageType === "UserDataChanged") { if (msg.Data.UserId === apiClient.getCurrentUserId()) { @@ -212,8 +200,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus events.trigger(serverNotifications, 'UserDataChanged', [apiClient, msg.Data.UserDataList[i]]); } } - } - else { + } else { events.trigger(serverNotifications, msg.MessageType, [apiClient, msg.Data]); } diff --git a/src/components/serverRestartDialog.js b/src/components/serverRestartDialog.js index 6c7e5b7386..4c20183b2a 100644 --- a/src/components/serverRestartDialog.js +++ b/src/components/serverRestartDialog.js @@ -6,9 +6,7 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp var currentInstance; function reloadPageWhenServerAvailable(retryCount) { - var apiClient = currentApiClient; - if (!apiClient) { return; } @@ -31,7 +29,6 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp function retryReload(retryCount) { setTimeout(function () { - retryCount = retryCount || 0; retryCount++; @@ -42,15 +39,12 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp } function startRestart(instance, apiClient, dlg) { - currentApiClient = apiClient; currentDlg = dlg; currentInstance = instance; apiClient.restartServer().then(function () { - setTimeout(reloadPageWhenServerAvailable, 250); - }); } @@ -94,7 +88,8 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp dlg.querySelector('.text').innerHTML = globalize.translate('RestartPleaseWaitMessage'); - var i, length; + var i; + var length; var html = ''; for (i = 0, length = configuredButtons.length; i < length; i++) { var item = configuredButtons[i]; @@ -138,12 +133,10 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp } function ServerRestartDialog(options) { - this.options = options; } ServerRestartDialog.prototype.show = function () { - var instance = this; loading.show(); @@ -155,7 +148,6 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp }; ServerRestartDialog.prototype.destroy = function () { - currentApiClient = null; currentDlg = null; currentInstance = null; diff --git a/src/components/shell.js b/src/components/shell.js index 762039ac42..534a57b027 100644 --- a/src/components/shell.js +++ b/src/components/shell.js @@ -8,7 +8,7 @@ define([], function () { } else { window.open(url, target || '_blank'); } - + }, canExec: false, exec: function (options) { diff --git a/src/components/shortcuts.js b/src/components/shortcuts.js index f6c1e97893..9d2b1847e5 100644 --- a/src/components/shortcuts.js +++ b/src/components/shortcuts.js @@ -128,8 +128,7 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl if (result.command === 'playallfromhere' || result.command === 'queueallfromhere') { executeAction(card, options.positionTo, result.command); - } - else if (result.updated || result.deleted) { + } else if (result.updated || result.deleted) { notifyRefreshNeeded(card, options.itemsContainer); } }); @@ -204,21 +203,15 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl context: card.getAttribute('data-context'), parentId: card.getAttribute('data-parentid') }); - } - - else if (action === 'programdialog') { + } else if (action === 'programdialog') { showProgramDialog(item); - } - - else if (action === 'instantmix') { + } else if (action === 'instantmix') { playbackManager.instantMix({ Id: playableItemId, ServerId: serverId }); - } - - else if (action === 'play' || action === 'resume') { + } else if (action === 'play' || action === 'resume') { var startPositionTicks = parseInt(card.getAttribute('data-positionticks') || '0'); @@ -227,9 +220,7 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl startPositionTicks: startPositionTicks, serverId: serverId }); - } - - else if (action === 'queue') { + } else if (action === 'queue') { if (playbackManager.isPlaying()) { playbackManager.queue({ @@ -243,25 +234,15 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl serverId: serverId }); } - } - - else if (action === 'playallfromhere') { + } else if (action === 'playallfromhere') { playAllFromHere(card, serverId); - } - - else if (action === 'queueallfromhere') { + } else if (action === 'queueallfromhere') { playAllFromHere(card, serverId, true); - } - - else if (action === 'setplaylistindex') { + } else if (action === 'setplaylistindex') { playbackManager.setCurrentPlaylistItem(card.getAttribute('data-playlistitemid')); - } - - else if (action === 'record') { + } else if (action === 'record') { onRecordCommand(serverId, id, type, card.getAttribute('data-timerid'), card.getAttribute('data-seriestimerid')); - } - - else if (action === 'menu') { + } else if (action === 'menu') { var options = target.getAttribute('data-playoptions') === 'false' ? { @@ -277,27 +258,17 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl options.positionTo = target; showContextMenu(card, options); - } - - else if (action === 'playmenu') { + } else if (action === 'playmenu') { showPlayMenu(card, target); - } - - else if (action === 'edit') { + } else if (action === 'edit') { getItem(target).then(function (item) { editItem(item, serverId); }); - } - - else if (action === 'playtrailer') { + } else if (action === 'playtrailer') { getItem(target).then(playTrailer); - } - - else if (action === 'addtoplaylist') { + } else if (action === 'addtoplaylist') { getItem(target).then(addToPlaylist); - } - - else if (action === 'custom') { + } else if (action === 'custom') { var customAction = target.getAttribute('data-customaction'); diff --git a/src/components/skinManager.js b/src/components/skinManager.js index 780b8273bb..9f96516422 100644 --- a/src/components/skinManager.js +++ b/src/components/skinManager.js @@ -20,7 +20,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr } else { Emby.Page.goHome(); } - }; + } function getThemes() { return [{ @@ -36,7 +36,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr isDefaultServerDashboard: true }, { name: "Emby", - id: "emby", + id: "emby" }, { name: "Light", id: "light" @@ -47,7 +47,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr name: "Windows Media Center", id: "wmc" }]; - }; + } var skinManager = { getThemes: getThemes, diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 6bb485a616..a5acd042b3 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -77,8 +77,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f try { appHost.setUserScalable(scalable); - } - catch (err) { + } catch (err) { console.log('error in appHost.setUserScalable: ' + err); } } diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 27055f5976..b79bf4ba1a 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -192,8 +192,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', var lastLanguage = userSettings.get('subtitleeditor-language'); if (lastLanguage) { selectLanguage.value = lastLanguage; - } - else { + } else { apiClient.getCurrentUser().then(function (user) { @@ -347,8 +346,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', if (typeof itemId === 'string') { apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(onGetItem); - } - else { + } else { onGetItem(itemId); } } diff --git a/src/components/subtitlesettings/subtitleappearancehelper.js b/src/components/subtitlesettings/subtitleappearancehelper.js index 588f491a67..8a40bd134b 100644 --- a/src/components/subtitlesettings/subtitleappearancehelper.js +++ b/src/components/subtitlesettings/subtitleappearancehelper.js @@ -33,7 +33,7 @@ define([], function () { case 'smaller': list.push({ name: 'font-size', value: '.8em' }); break; - case 'small': + case 'small': list.push({ name: 'font-size', value: 'inherit' }); break; case 'larger': @@ -132,7 +132,6 @@ define([], function () { function applyStyleList(styles, elem) { - for (var i = 0, length = styles.length; i < length; i++) { var style = styles[i]; diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index 3389b7bf89..904c612317 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -25,10 +25,10 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles subtitleSyncTextField.addEventListener("keypress", function(event) { - if(event.key === "Enter"){ + if (event.key === "Enter") { // if input key is enter search for float pattern var inputOffset = /[-+]?\d+\.?\d*/g.exec(this.textContent); - if(inputOffset) { + if (inputOffset) { inputOffset = inputOffset[0]; // replace current text by considered offset @@ -48,7 +48,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles } else { // keep focus to prevent fade with bottom layout this.hasFocus = true; - if(event.key.match(/[+-\d.s]/) === null) { + if (event.key.match(/[+-\d.s]/) === null) { event.preventDefault(); } } @@ -92,14 +92,13 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles instance.element = parent; } - function getOffsetFromPercentage(value) { // convert percent to fraction var offset = (value - 50) / 50; // multiply by offset min/max range value (-x to +x) : offset *= 30; return offset.toFixed(1); - }; + } function getPercentageFromOffset(value) { // divide by offset min/max range value (-x to +x) : @@ -108,16 +107,16 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles percentValue *= 50; percentValue += 50; return Math.min(100, Math.max(0, percentValue.toFixed())); - }; + } function SubtitleSync(currentPlayer) { player = currentPlayer; init(this); } - SubtitleSync.prototype.destroy = function(){ + SubtitleSync.prototype.destroy = function() { SubtitleSync.prototype.toggle("forceToHide"); - if(player){ + if (player) { playbackManager.disableShowingSubtitleOffset(player); playbackManager.setSubtitleOffset(0, player); } @@ -130,27 +129,30 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles SubtitleSync.prototype.toggle = function(action) { - if(player && playbackManager.supportSubtitleOffset(player)){ + if (player && playbackManager.supportSubtitleOffset(player)) { - switch(action) { + switch (action) { case undefined: // if showing subtitle sync is enabled - if(playbackManager.isShowingSubtitleOffsetEnabled(player) && + if (playbackManager.isShowingSubtitleOffsetEnabled(player) && // if there is an external subtitle stream enabled - playbackManager.canHandleOffsetOnCurrentSubtitle(player)){ - // if no subtitle offset is defined - if(!playbackManager.getPlayerSubtitleOffset(player)) { - // set default offset to '0' = 50% - subtitleSyncSlider.value = "50"; - subtitleSyncTextField.textContent = "0s"; - playbackManager.setSubtitleOffset(0, player); - } - // show subtitle sync - subtitleSyncContainer.classList.remove("hide"); - break; // stop here + playbackManager.canHandleOffsetOnCurrentSubtitle(player)) { + // if no subtitle offset is defined + if (!playbackManager.getPlayerSubtitleOffset(player)) { + // set default offset to '0' = 50% + subtitleSyncSlider.value = "50"; + subtitleSyncTextField.textContent = "0s"; + playbackManager.setSubtitleOffset(0, player); + } + // show subtitle sync + subtitleSyncContainer.classList.remove("hide"); + break; // stop here } // else continue and hide case "hide": - if(subtitleSyncTextField.hasFocus){break;} // else continue and hide + // only break if element has focus + if (subtitleSyncTextField.hasFocus) { + break; + } case "forceToHide": subtitleSyncContainer.classList.add("hide"); break; diff --git a/src/components/tabbedview/itemstab.js b/src/components/tabbedview/itemstab.js index ec874c69e9..7381232fc9 100644 --- a/src/components/tabbedview/itemstab.js +++ b/src/components/tabbedview/itemstab.js @@ -246,7 +246,8 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts this.itemsContainer.setAttribute('data-parentid', params.parentId); } - var i, length; + var i; + var length; var btnViewSettings = view.querySelectorAll('.btnViewSettings'); for (i = 0, length = btnViewSettings.length; i < length; i++) { @@ -559,7 +560,6 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts }; ItemsTab.prototype.onPause = function () { - var scroller = this.scroller; if (scroller && scroller.pause) { scroller.pause(); @@ -573,7 +573,6 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts }; ItemsTab.prototype.destroy = function () { - this.view = null; this.itemsContainer = null; this.params = null; @@ -585,6 +584,7 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts this.alphaPicker.destroy(); this.alphaPicker = null; } + this.sortButtons = null; this.btnSortText = null; this.btnSortIcon = null; diff --git a/src/components/tabbedview/tabbedview.js b/src/components/tabbedview/tabbedview.js index bc656bc3e2..33f1c6e6cc 100644 --- a/src/components/tabbedview/tabbedview.js +++ b/src/components/tabbedview/tabbedview.js @@ -101,8 +101,7 @@ define(['backdrop', 'mainTabsManager', 'layoutManager', 'emby-tabs'], function ( if (!currentTabController) { mainTabsManager.selectedTabIndex(this.initialTabIndex); - } - else if (currentTabController && currentTabController.onResume) { + } else if (currentTabController && currentTabController.onResume) { currentTabController.onResume({}); } }; diff --git a/src/components/thememediaplayer.js b/src/components/thememediaplayer.js index 732cbb1cb0..a8298fad37 100644 --- a/src/components/thememediaplayer.js +++ b/src/components/thememediaplayer.js @@ -94,8 +94,7 @@ define(['playbackManager', 'userSettings', 'connectionManager'], function (playb if (viewOptions.supportsThemeMedia) { // Do nothing here, allow it to keep playing - } - else { + } else { playThemeMedia([], null); } diff --git a/src/components/touchhelper.js b/src/components/touchhelper.js index 66d115046b..0f6d34aace 100644 --- a/src/components/touchhelper.js +++ b/src/components/touchhelper.js @@ -78,11 +78,9 @@ define(['dom', 'events'], function (dom, events) { if (deltaX > swipeXThreshold && Math.abs(deltaY) < swipeXMaxY) { events.trigger(self, 'swiperight', [touchTarget]); - } - else if (deltaX < (0 - swipeXThreshold) && Math.abs(deltaY) < swipeXMaxY) { + } else if (deltaX < (0 - swipeXThreshold) && Math.abs(deltaY) < swipeXMaxY) { events.trigger(self, 'swipeleft', [touchTarget]); - } - else if ((deltaY < (0 - swipeYThreshold) || thresholdYMet) && Math.abs(deltaX) < swipeXMaxY) { + } else if ((deltaY < (0 - swipeYThreshold) || thresholdYMet) && Math.abs(deltaX) < swipeXMaxY) { thresholdYMet = true; @@ -94,8 +92,7 @@ define(['dom', 'events'], function (dom, events) { currentDeltaX: currentDeltaX, currentDeltaY: currentDeltaY }]); - } - else if ((deltaY > swipeYThreshold || thresholdYMet) && Math.abs(deltaX) < swipeXMaxY) { + } else if ((deltaY > swipeYThreshold || thresholdYMet) && Math.abs(deltaX) < swipeXMaxY) { thresholdYMet = true; events.trigger(self, 'swipedown', [touchTarget, { diff --git a/src/components/userdatabuttons/emby-ratingbutton.js b/src/components/userdatabuttons/emby-ratingbutton.js index 40cf033cd5..190424d44d 100644 --- a/src/components/userdatabuttons/emby-ratingbutton.js +++ b/src/components/userdatabuttons/emby-ratingbutton.js @@ -33,8 +33,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby var isFavorite = this.getAttribute('data-isfavorite') === 'true'; if (likes === 'true') { likes = true; - } - else if (likes === 'false') { + } else if (likes === 'false') { likes = false; } else { likes = null; @@ -64,7 +63,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby if (icon) { icon.innerHTML = ''; - icon.classList.add('ratingbutton-icon-withrating'); + icon.classList.add('ratingbutton-icon-withrating'); } button.classList.add('ratingbutton-withrating'); @@ -73,7 +72,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby if (icon) { icon.innerHTML = ''; - icon.classList.remove('ratingbutton-icon-withrating'); + icon.classList.remove('ratingbutton-icon-withrating'); //icon.innerHTML = ''; } button.classList.remove('ratingbutton-withrating'); @@ -82,7 +81,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby if (icon) { icon.innerHTML = ''; - icon.classList.remove('ratingbutton-icon-withrating'); + icon.classList.remove('ratingbutton-icon-withrating'); //icon.innerHTML = ''; } button.classList.remove('ratingbutton-withrating'); @@ -91,7 +90,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby if (icon) { icon.innerHTML = ''; - icon.classList.remove('ratingbutton-icon-withrating'); + icon.classList.remove('ratingbutton-icon-withrating'); //icon.innerHTML = ''; } button.classList.remove('ratingbutton-withrating'); @@ -152,8 +151,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby var isFavorite = this.getAttribute('data-isfavorite') === 'true'; if (likes === 'true') { likes = true; - } - else if (likes === 'false') { + } else if (likes === 'false') { likes = false; } else { likes = null; diff --git a/src/components/viewContainer.js b/src/components/viewContainer.js index ece8da1ed6..c2d060162e 100644 --- a/src/components/viewContainer.js +++ b/src/components/viewContainer.js @@ -42,7 +42,6 @@ define(["browser", "dom", "layoutManager", "css!components/viewManager/viewConta var newViewInfo = normalizeNewView(options, isPluginpage); var newView = newViewInfo.elem; - if (isPluginpage) { require(["legacyDashboard"]); } diff --git a/src/components/viewManager/viewManager.js b/src/components/viewManager/viewManager.js index 23612d5a1e..a8e514e06e 100644 --- a/src/components/viewManager/viewManager.js +++ b/src/components/viewManager/viewManager.js @@ -50,8 +50,7 @@ define(['viewContainer', 'focusManager', 'queryString', 'layoutManager'], functi if (options.autoFocus !== false) { focusManager.autoFocus(view); } - } - else if (!layoutManager.mobile) { + } else if (!layoutManager.mobile) { if (view.activeElement && document.body.contains(view.activeElement) && focusManager.isCurrentlyFocusable(view.activeElement)) { focusManager.focus(view.activeElement); } else { diff --git a/src/components/viewsettings/viewsettings.js b/src/components/viewsettings/viewsettings.js index 617e021115..5195598d99 100644 --- a/src/components/viewsettings/viewsettings.js +++ b/src/components/viewsettings/viewsettings.js @@ -29,7 +29,7 @@ define(['require', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'conne } userSettings.set(settingsKey + '-imageType', context.querySelector('.selectImageType').value); - } + } function centerFocus(elem, horiz, on) { require(['scrollHelper'], function (scrollHelper) { diff --git a/src/components/visibleinviewport.js b/src/components/visibleinviewport.js index 23a2a9d73c..3768740175 100644 --- a/src/components/visibleinviewport.js +++ b/src/components/visibleinviewport.js @@ -22,17 +22,17 @@ define(['dom'], function (dom) { var windowSize = dom.getWindowSize(); - var vpWidth = windowSize.innerWidth, - vpHeight = windowSize.innerHeight; + var vpWidth = windowSize.innerWidth; + var vpHeight = windowSize.innerHeight; // Use this native browser method, if available. - var rec = elem.getBoundingClientRect(), - tViz = rec.top >= 0 && rec.top < vpHeight + thresholdY, - bViz = rec.bottom > 0 && rec.bottom <= vpHeight + thresholdY, - lViz = rec.left >= 0 && rec.left < vpWidth + thresholdX, - rViz = rec.right > 0 && rec.right <= vpWidth + thresholdX, - vVisible = partial ? tViz || bViz : tViz && bViz, - hVisible = partial ? lViz || rViz : lViz && rViz; + var rec = elem.getBoundingClientRect(); + var tViz = rec.top >= 0 && rec.top < vpHeight + thresholdY; + var bViz = rec.bottom > 0 && rec.bottom <= vpHeight + thresholdY; + var lViz = rec.left >= 0 && rec.left < vpWidth + thresholdX; + var rViz = rec.right > 0 && rec.right <= vpWidth + thresholdX; + var vVisible = partial ? tViz || bViz : tViz && bViz; + var hVisible = partial ? lViz || rViz : lViz && rViz; return vVisible && hVisible; } diff --git a/src/components/youtubeplayer/plugin.js b/src/components/youtubeplayer/plugin.js index 1ed95e2110..a2478cd3f4 100644 --- a/src/components/youtubeplayer/plugin.js +++ b/src/components/youtubeplayer/plugin.js @@ -135,7 +135,6 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi require(['queryString'], function (queryString) { - instance._currentSrc = options.url; var params = queryString.parse(options.url.split('?')[1]); // 3. This function creates an