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 942e05c77..9c21d7727 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 229befded..f23fbb495 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 03e0f68a9..0cf7419c7 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 3c7918d66..bc2c65e11 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 6c521f7bf..42b1fd85b 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -1,4 +1,4 @@ -define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "apphost", "layoutManager", "focusManager", "emby-itemscontainer", "emby-scroller"], function(appRouter, cardBuilder, dom, globalize, connectionManager, appHost, layoutManager, focusManager) { +define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "apphost", "layoutManager", "focusManager", "emby-itemscontainer", "emby-scroller"], function (appRouter, cardBuilder, dom, globalize, connectionManager, appHost, layoutManager, focusManager) { "use strict"; function enableScrollX() { @@ -22,92 +22,92 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap name: "HeaderFavoriteMovies", types: "Movie", shape: getPosterShape(), - showTitle: !0, - showYear: !0, - overlayPlayButton: !0, - overlayText: !1, - centerText: !0 + showTitle: true, + showYear: true, + overlayPlayButton: true, + overlayText: false, + centerText: true }, { name: "HeaderFavoriteShows", types: "Series", shape: getPosterShape(), - showTitle: !0, - showYear: !0, - overlayPlayButton: !0, - overlayText: !1, - centerText: !0 + showTitle: true, + showYear: true, + overlayPlayButton: true, + overlayText: false, + centerText: true }, { name: "HeaderFavoriteEpisodes", types: "Episode", shape: getThumbShape(), - preferThumb: !1, - showTitle: !0, - showParentTitle: !0, - overlayPlayButton: !0, - overlayText: !1, - centerText: !0 + preferThumb: false, + showTitle: true, + showParentTitle: true, + overlayPlayButton: true, + overlayText: false, + centerText: true }, { name: "HeaderFavoriteVideos", types: "Video", shape: getThumbShape(), - preferThumb: !0, - showTitle: !0, - overlayPlayButton: !0, - overlayText: !1, - centerText: !0 + preferThumb: true, + showTitle: true, + overlayPlayButton: true, + overlayText: false, + centerText: true }, { name: "HeaderFavoriteCollections", types: "BoxSet", shape: getPosterShape(), - showTitle: !0, - overlayPlayButton: !0, - overlayText: !1, - centerText: !0 + showTitle: true, + overlayPlayButton: true, + overlayText: false, + centerText: true }, { name: "HeaderFavoritePlaylists", types: "Playlist", shape: getSquareShape(), - preferThumb: !1, - showTitle: !0, - overlayText: !1, - showParentTitle: !1, - centerText: !0, - overlayPlayButton: !0, - coverImage: !0 + preferThumb: false, + showTitle: true, + overlayText: false, + showParentTitle: false, + centerText: true, + overlayPlayButton: true, + coverImage: true }, { name: "HeaderFavoriteArtists", types: "MusicArtist", shape: getSquareShape(), - preferThumb: !1, - showTitle: !0, - overlayText: !1, - showParentTitle: !1, - centerText: !0, - overlayPlayButton: !0, - coverImage: !0 + preferThumb: false, + showTitle: true, + overlayText: false, + showParentTitle: false, + centerText: true, + overlayPlayButton: true, + coverImage: true }, { name: "HeaderFavoriteAlbums", types: "MusicAlbum", shape: getSquareShape(), - preferThumb: !1, - showTitle: !0, - overlayText: !1, - showParentTitle: !0, - centerText: !0, - overlayPlayButton: !0, - coverImage: !0 + preferThumb: false, + showTitle: true, + overlayText: false, + showParentTitle: true, + centerText: true, + overlayPlayButton: true, + coverImage: true }, { name: "HeaderFavoriteSongs", types: "Audio", shape: getSquareShape(), - preferThumb: !1, - showTitle: !0, - overlayText: !1, - showParentTitle: !0, - centerText: !0, - overlayMoreButton: !0, + preferThumb: false, + showTitle: true, + overlayText: false, + showParentTitle: true, + centerText: true, + overlayMoreButton: true, action: "instantmix", - coverImage: !0 + coverImage: true }, { name: "HeaderFavoriteBooks", types: "Book", @@ -117,59 +117,78 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap overlayPlayButton: true, overlayText: false, centerText: true - }] + }]; } function getFetchDataFn(section) { - return function() { - var apiClient = this.apiClient, - options = { - SortBy: (section.types, "SeriesName,SortName"), - SortOrder: "Ascending", - Filters: "IsFavorite", - Recursive: !0, - Fields: "PrimaryImageAspectRatio,BasicSyncInfo", - CollapseBoxSetItems: !1, - ExcludeLocationTypes: "Virtual", - EnableTotalRecordCount: !1 - }; + return function () { + var apiClient = this.apiClient; + var options = { + SortBy: (section.types, "SeriesName,SortName"), + SortOrder: "Ascending", + Filters: "IsFavorite", + Recursive: true, + Fields: "PrimaryImageAspectRatio,BasicSyncInfo", + CollapseBoxSetItems: false, + ExcludeLocationTypes: "Virtual", + EnableTotalRecordCount: false + }; options.Limit = 20; var userId = apiClient.getCurrentUserId(); - return "MusicArtist" === section.types ? apiClient.getArtists(userId, options) : (options.IncludeItemTypes = section.types, apiClient.getItems(userId, options)) - } + + if ("MusicArtist" === section.types) { + return apiClient.getArtists(userId, options); + } + + options.IncludeItemTypes = section.types; + return apiClient.getItems(userId, options); + }; } function getRouteUrl(section, serverId) { return appRouter.getRouteUrl("list", { serverId: serverId, itemTypes: section.types, - isFavorite: !0 - }) + isFavorite: true + }); } function getItemsHtmlFn(section) { - return function(items) { - var supportsImageAnalysis = appHost.supports("imageanalysis"), - cardLayout = (appHost.preferVisualCards || supportsImageAnalysis) && section.autoCardLayout && section.showTitle; - cardLayout = !1; - var serverId = this.apiClient.serverId(), - leadingButtons = layoutManager.tv ? [{ - name: globalize.translate("All"), - id: "more", - icon: "", - routeUrl: getRouteUrl(section, serverId) - }] : null, - lines = 0; - return section.showTitle && lines++, section.showYear && lines++, section.showParentTitle && lines++, cardBuilder.getCardsHtml({ + return function (items) { + var supportsImageAnalysis = appHost.supports("imageanalysis"); + var cardLayout = (appHost.preferVisualCards || supportsImageAnalysis) && section.autoCardLayout && section.showTitle; + cardLayout = false; + var serverId = this.apiClient.serverId(); + var leadingButtons = layoutManager.tv ? [{ + name: globalize.translate("All"), + id: "more", + icon: "", + routeUrl: getRouteUrl(section, serverId) + }] : null; + var lines = 0; + + if (section.showTitle) { + lines++; + } + + if (section.showYear) { + lines++; + } + + if (section.showParentTitle) { + lines++; + } + + return cardBuilder.getCardsHtml({ items: items, preferThumb: section.preferThumb, shape: section.shape, centerText: section.centerText && !cardLayout, - overlayText: !1 !== section.overlayText, + overlayText: false !== section.overlayText, showTitle: section.showTitle, showYear: section.showYear, showParentTitle: section.showParentTitle, - scalable: !0, + scalable: true, coverImage: section.coverImage, overlayPlayButton: section.overlayPlayButton, overlayMoreButton: section.overlayMoreButton && !cardLayout, @@ -178,39 +197,100 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap cardLayout: cardLayout, leadingButtons: leadingButtons, lines: lines - }) - } + }); + }; } function FavoritesTab(view, params) { - this.view = view, this.params = params, this.apiClient = connectionManager.currentApiClient(), this.sectionsContainer = view.querySelector(".sections"), createSections(this, this.sectionsContainer, this.apiClient) + this.view = view; + this.params = params; + this.apiClient = connectionManager.currentApiClient(); + this.sectionsContainer = view.querySelector(".sections"); + createSections(this, this.sectionsContainer, this.apiClient); } function createSections(instance, elem, apiClient) { - var i, length, sections = getSections(), - html = ""; + var i; + var length; + var sections = getSections(); + var html = ""; + for (i = 0, length = sections.length; i < length; i++) { - var section = sections[i], - sectionClass = "verticalSection"; - section.showTitle || (sectionClass += " verticalSection-extrabottompadding"), html += '
', html += '
', layoutManager.tv ? html += '

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

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

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

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

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

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

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

"; + html += ''; + html += "
"; + } + + html += "
"; + html += '
'; + html += "
"; } + elem.innerHTML = html; var elems = elem.querySelectorAll(".itemsContainer"); + for (i = 0, length = elems.length; i < length; i++) { var itemsContainer = elems[i]; - itemsContainer.fetchData = getFetchDataFn(sections[i]).bind(instance), itemsContainer.getItemsHtml = getItemsHtmlFn(sections[i]).bind(instance), itemsContainer.parentContainer = dom.parentWithClass(itemsContainer, "verticalSection") + itemsContainer.fetchData = getFetchDataFn(sections[i]).bind(instance); + itemsContainer.getItemsHtml = getItemsHtmlFn(sections[i]).bind(instance); + itemsContainer.parentContainer = dom.parentWithClass(itemsContainer, "verticalSection"); } } - return FavoritesTab.prototype.onResume = function(options) { - for (var promises = (this.apiClient, []), view = this.view, elems = this.sectionsContainer.querySelectorAll(".itemsContainer"), i = 0, length = elems.length; i < length; i++) promises.push(elems[i].resume(options)); - Promise.all(promises).then(function() { - options.autoFocus && focusManager.autoFocus(view) - }) - }, FavoritesTab.prototype.onPause = function() { - for (var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"), i = 0, length = elems.length; i < length; i++) elems[i].pause() - }, FavoritesTab.prototype.destroy = function() { - this.view = null, this.params = null, this.apiClient = null; - for (var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"), i = 0, length = elems.length; i < length; i++) elems[i].fetchData = null, elems[i].getItemsHtml = null, elems[i].parentContainer = null; - this.sectionsContainer = null - }, FavoritesTab + + FavoritesTab.prototype.onResume = function (options) { + var promises = (this.apiClient, []); + var view = this.view; + var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"); + + for (var i = 0, length = elems.length; i < length; i++) { + promises.push(elems[i].resume(options)); + } + + Promise.all(promises).then(function () { + if (options.autoFocus) { + focusManager.autoFocus(view); + } + }); + }; + + FavoritesTab.prototype.onPause = function () { + var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"); + + for (var i = 0, length = elems.length; i < length; i++) { + elems[i].pause(); + } + }; + + FavoritesTab.prototype.destroy = function () { + this.view = null; + this.params = null; + this.apiClient = null; + var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"); + + for (var i = 0, length = elems.length; i < length; i++) { + elems[i].fetchData = null; + elems[i].getItemsHtml = null; + elems[i].parentContainer = null; + } + + this.sectionsContainer = null; + }; + + return FavoritesTab; }); From e8af133ed2d9b65134dcc19d8427df0354b0ddbf Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 23 Oct 2019 01:14:32 +0300 Subject: [PATCH 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 42b1fd85b..95a4ec975 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -74,6 +74,17 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap centerText: true, overlayPlayButton: true, coverImage: true + }, { + name: "HeaderFavoritePeople", + types: "Person", + shape: getPosterShape(), + preferThumb: false, + showTitle: true, + overlayText: false, + showParentTitle: false, + centerText: true, + overlayPlayButton: true, + coverImage: true }, { name: "HeaderFavoriteArtists", types: "MusicArtist", @@ -140,6 +151,10 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap return apiClient.getArtists(userId, options); } + if ("Person" === section.types) { + return apiClient.getPeople(userId, options); + } + options.IncludeItemTypes = section.types; return apiClient.getItems(userId, options); }; From 5099c95c22d01e06e17fab9d3fbb519243797a5c Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 23 Oct 2019 01:19:14 +0300 Subject: [PATCH 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 f8bdb28ac..9707f5404 100644 --- a/src/components/itemhelper.js +++ b/src/components/itemhelper.js @@ -273,8 +273,13 @@ define(['apphost', 'globalize'], function (appHost, globalize) { }, canRate: function (item) { + var itemType = item.Type; - if (item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'SeriesTimer' || item.Type === 'CollectionFolder' || item.Type === 'UserView' || item.Type === 'Channel') { + if (item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'SeriesTimer' || item.Type === 'CollectionFolder' || item.Type === 'UserView' || item.Type === 'Channel' || itemType === 'Season' || itemType === 'Studio') { + return false; + } + + if (!item.UserData) { return false; } From 4999690d0c9d7467688772e35ebc766a8c7ca620 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 23 Oct 2019 01:20:07 +0300 Subject: [PATCH 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 4d83b070d..d72b74971 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -354,6 +354,7 @@ "HeaderFavoriteShows": "Favorite Shows", "HeaderFavoriteEpisodes": "Favorite Episodes", "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoritePeople": "Favorite People", "HeaderFavoriteArtists": "Favorite Artists", "HeaderFavoriteSongs": "Favorite Songs", "HeaderFavoriteVideos": "Favorite Videos", From 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 6b616ce58..4da64641e 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 d706b76b9..b3fb2a731 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 94d7eb70e..9048739f0 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 f9653fe26..5127015e2 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 3c22ff3cb..0e9a79a8b 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 b3fb2a731..a614bfef8 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 a614bfef8..f4a0d2a29 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 000000000..65358b1bc --- /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 55b670f54..a55ba3066 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 5bc54edf7..b14591274 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 ef54d20bf..8dd041a9f 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 d5bd96d34..f17f64b7c 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 b4e30602f..3a365acc9 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 ac45d9a15..0cfb61e2b 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 5159f635f..aaeea8c88 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 ed1efc0a6..e357cdabb 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 964896077..fd458c88a 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 fc3371833..556877aa1 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 4806195ed..47263be0d 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 42d9d89f7..9c61ac80d 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 2a1ed56bf..5862fce45 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 1386e76a3..d1adb0434 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 adccd9823..1dec53054 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 3c000a8e7..4e715e1fd 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 f91e874a8..aea471685 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 5794d5872..7f1e1a485 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 d9fa2ab99..4e0a7824b 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 f2463ad8d..a3661e409 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 205265efc..2f4884859 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 30ca06327..eeb9b25e3 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 b5fa85ac6..b25624add 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 65358b1bc..40b2c9070 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 40b2c9070..29c5a6b5e 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 b14591274..e077f027e 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 3e310a17a..2de7e8184 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 509b7f521..8f65df7e6 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 82c0b6a12..0327217e4 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 aea471685..f348f2875 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 7f1e1a485..7f12efc7f 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 a3661e409..3def9d193 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 2f4884859..1f1102194 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 29c5a6b5e..e3cec9281 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 8c01d3596..3dbb76f00 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 54b6aeddf..7b179393b 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 4cf77f451..f66e561c5 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 09ad8f1a6..4c80f32f2 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 e0a5050dc..5d34d29e6 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 841a6a81a..0247f79a5 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 ccb1cdc28..a91594556 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 aac45f86d..15787c3dc 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 1721bf3ca..d6276e826 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 37638a1b8..deec96d9a 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 605c408a8..d85b4a71b 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 d299d7fd7..d3e1d4c38 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 8778fcd3f..7edffec6d 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 633437d26..9aeb1e35c 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 3fc549e6e..91abafa54 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 182b72071..7625b498f 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 2adc573de..c192fad29 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 e25dc8789..3524f449d 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 a247c773e..9bb1f8426 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 90d9cf0de..b33355945 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 2e8d28523..8deedef6c 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 7e011b4cf..a947a55d2 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 9750bab57..0081b543a 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 257551abf..53c061618 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 441adac3d..7b7eb37d1 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 76b37a8f5..c7073bc9f 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 40238bf06..dd13df4ca 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 bb6e0bbcb..d44136c6b 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 6a808db1f..75b011aa7 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 d706b76b9..d66e1093b 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 9fac61ba1..5b76cce18 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 1797463f2..4601cd530 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 2102720e9..e06fb6a3e 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 c7a3438d5..b622cc18b 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 0379e5634..4738211a5 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 200c98b11..b1e7f580f 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 0a76d3914..45c49416a 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 386aa149c..2a2840aec 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 e36dda3f5..6b853704f 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 76ea5cee2..622b0d62e 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 54133ebbb..c2e8ebd0e 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 665017096..30074b4d0 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 e586a1e12..d0cf092e1 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 cb6f11499..bad808cb7 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 da2fcdaa7..d4f75a080 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 27055f597..29c902c9e 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 789156444..dc8ae2570 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 ec874c69e..7aebd7c2b 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 96bfc71df..3882f2e85 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 40cf033cd..dfb412d7b 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 ea8856501..1c00e50ca 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 617e02111..77ed01a93 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 62131456d..1679fec5e 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 de86ffc2b..f7a8d5cbf 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 36f2cf88a..a09209e16 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 6c521f7bf..a4331ebf2 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 a88f49d18..148c63ca0 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 5bc54edf7..cd429c963 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 d15ebd244..a554bec61 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 6b616ce58..b64e1352b 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 80197b01c..e51274d25 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 255f68557..b0ee5673e 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 956b8fa6f..b6fa54f21 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 3c22ff3cb..8a744de32 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 6232c1f2e..51931c321 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 67d269db3..43a081f8d 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 3c2ff1670..2054bce3d 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 ef1c353d4..ac9e96137 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 7025a7ff3..2a29cce96 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 516170424..e31efa27e 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 2bc99b2b8..2ff8990e4 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 9c2c8d2c9..3abd14de3 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 d7082e04c..e86f17920 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 fa8ade166..6be865d15 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 9aebd9b55..ee2a2c342 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 4f3eaf414..429cb1060 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 ad15b8538..b12cd5c50 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 bfa8c2e8e..6fa5f058c 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 34c73a301..0c7a91090 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 ee7087c3c..f29ddb74c 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 95a4ec975..25ca59da9 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -253,7 +253,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap } html += "
"; - html += '
'; + html += '
'; html += "
"; } From 8a360772a2504b7028a1f2153b30e0aaf597add5 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 22 Nov 2019 00:20:42 +0300 Subject: [PATCH 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 9707f5404..7ea0c2b9e 100644 --- a/src/components/itemhelper.js +++ b/src/components/itemhelper.js @@ -273,13 +273,14 @@ define(['apphost', 'globalize'], function (appHost, globalize) { }, canRate: function (item) { - var itemType = item.Type; - if (item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'SeriesTimer' || item.Type === 'CollectionFolder' || item.Type === 'UserView' || item.Type === 'Channel' || itemType === 'Season' || itemType === 'Studio') { - return false; - } - - if (!item.UserData) { + if (item.Type === 'Program' || + item.Type === 'Timer' || + item.Type === 'SeriesTimer' || + item.Type === 'CollectionFolder' || + item.Type === 'UserView' || + item.Type === 'Channel' || + !item.UserData) { return false; } From 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 ce12e7056..c7ce36190 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 6899e251d..c57acd0d7 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 b89cda001..e0b5528c5 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 749a5b0a8..eb3e6a818 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 000000000..52369be1e --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +libraries/ diff --git a/.eslintrc.yml b/.eslintrc.yml index 4110862a1..b215e1580 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 4643b23f0..6931b34dd 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 54b6aeddf..46a7cedf1 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 6cf7fea75..8a4dc11c2 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 4cf77f451..ac2ea9e67 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 09ad8f1a6..6e9340e1b 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 0beba824c..9d6f811cb 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 f3f7e6b86..7302b7412 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 4f13b2d1b..cfb5821b3 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 36bb23bfd..bddd83976 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 aac45f86d..9a3aed104 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 ea8902b98..da03b8742 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 acc915431..7d2ea63a0 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 7148079a1..80c545852 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 4a0060cf8..9fedf0bfe 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 7dec1f095..c500db6e1 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 89457aa4e..2f18223d4 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 8c2f0ad44..ec23a151c 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 360986cc5..8ae31073a 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 47eb026db..9ee43be9f 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 d299d7fd7..1e9484caf 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 a3cc5b043..9c058a8e8 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 633437d26..dc7769be3 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 3fc549e6e..0c92f34e3 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 2c649bdd1..fade0dd04 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 2a77daa21..a2906cca8 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 3a52d7110..98fcf0ebc 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 46a65cabc..a3aa8cac4 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 f8bdb28ac..f0b1de4a1 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 fa01a4ace..6f28de0b3 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 d9bef95b4..46956d2df 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 7ed74f220..8c0bb1a3a 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 261ca8426..1935f65a3 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 257551abf..974cb0ab0 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 ad9aea950..510f31121 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 441adac3d..0fb4a1e7b 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 54c13a4eb..183e22551 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 552c716c1..8843dc159 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 d706b76b9..a6a416d52 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 cbf5c1eeb..69adbd1f5 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 304eec7e0..62de365d9 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 9fac61ba1..d7be482c5 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 7a7a73a53..3610eef2a 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 1797463f2..c949743be 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 63e0bde6c..7f4b9f519 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 d5803b426..b1af977ab 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 13497e191..23f0d4572 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 731d9c3c4..3253d8acd 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 2102720e9..7e4352bcb 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 58458aa39..4e85f8709 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 2cbaf1d9f..ed2076a81 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 5e097f2fe..4179192dd 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 0a76d3914..f51f8f276 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 b3d16a0da..614d483b2 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 69b8b1023..3a1d4ba94 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 8c56b578c..4bfd316c7 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 9878081e6..73a98cf5e 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 e586a1e12..562ea7ea3 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 843ab31f0..d422a9553 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 de0ce6b93..65f33b8e8 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 e42088c06..d979a9469 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 5dafb2828..abf3ddb38 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 74c65cd47..ff571b1e1 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 6c7e5b738..4c20183b2 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 762039ac4..534a57b02 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 f6c1e9789..9d2b1847e 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 780b8273b..9f9651642 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 6bb485a61..a5acd042b 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 27055f597..b79bf4ba1 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 588f491a6..8a40bd134 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 3389b7bf8..904c61231 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 ec874c69e..7381232fc 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 bc656bc3e..33f1c6e6c 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 732cbb1cb..a8298fad3 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 66d115046..0f6d34aac 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 40cf033cd..190424d44 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 ece8da1ed..c2d060162 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 23612d5a1..a8e514e06 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 617e02111..5195598d9 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 23a2a9d73..376874017 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 1ed95e211..a2478cd3f 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