From d088f5ef05723aab209271e2352d11c04266cf18 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 25 Apr 2020 10:00:20 +0300 Subject: [PATCH 01/32] Move icons into class --- src/apikeys.html | 2 +- src/components/actionsheet/actionsheet.js | 4 +- src/components/activitylog.js | 8 ++-- src/components/alphapicker/alphapicker.js | 2 +- src/components/cardbuilder/cardBuilder.js | 20 ++++----- src/components/channelmapper/channelmapper.js | 2 +- .../collectioneditor/collectioneditor.js | 2 +- .../directorybrowser/directorybrowser.js | 2 +- src/components/guide/guide.js | 2 +- src/components/imageeditor/imageeditor.js | 4 +- .../imageeditor/imageeditor.template.html | 12 +++--- .../imageuploader/imageuploader.template.html | 2 +- src/components/indicators/indicators.js | 8 ++-- src/components/itemcontextmenu.js | 4 +- src/components/listview/listview.js | 10 ++--- src/components/mediainfo/mediainfo.js | 2 +- .../medialibrarycreator.js | 2 +- .../medialibrarycreator.template.html | 2 +- .../medialibraryeditor/medialibraryeditor.js | 2 +- .../medialibraryeditor.template.html | 2 +- .../metadataeditor/metadataeditor.js | 6 +-- .../metadataeditor.template.html | 10 ++--- src/components/multiselect/multiselect.js | 6 +-- src/components/nowplayingbar/nowplayingbar.js | 41 ++++++++----------- src/components/playback/volumeosd.js | 6 ++- src/components/playerstats/playerstats.js | 2 +- src/components/remotecontrol/remotecontrol.js | 22 +++++----- .../search/searchfields.template.html | 2 +- .../subtitleeditor/subtitleeditor.js | 2 +- .../subtitleeditor.template.html | 4 +- .../subtitlesync/subtitlesync.template.html | 2 +- src/components/tabbedview/itemstab.js | 4 +- src/components/tunerpicker.js | 2 +- .../tvproviders/xmltv.template.html | 2 +- .../userdatabuttons/userdatabuttons.js | 2 +- src/controllers/auth/selectserver.js | 2 +- src/controllers/dashboard/dashboard.js | 20 ++++----- .../dashboard/plugins/available.js | 2 +- .../dashboard/plugins/installed.js | 2 +- .../dashboard/scheduledtasks/scheduledtask.js | 4 +- .../scheduledtasks/scheduledtasks.js | 2 +- src/controllers/dlnaprofile.js | 22 +++++----- src/controllers/dlnaprofiles.js | 2 +- src/controllers/itemdetailpage.js | 3 +- src/controllers/livetvstatus.js | 4 +- src/controllers/medialibrarypage.js | 4 +- src/controllers/playback/videoosd.js | 12 +++--- src/controllers/userparentalcontrol.js | 4 +- src/controllers/userprofilespage.js | 4 +- src/dashboardgeneral.html | 4 +- src/dlnaprofile.html | 4 +- src/dlnaprofiles.html | 2 +- src/elements/emby-checkbox/emby-checkbox.js | 4 +- .../emby-ratingbutton/emby-ratingbutton.js | 8 ++-- .../emby-scrollbuttons/emby-scrollbuttons.js | 4 +- src/encodingsettings.html | 4 +- src/itemdetails.html | 18 ++++---- src/list.html | 6 +-- src/livetvsettings.html | 8 ++-- src/livetvstatus.html | 4 +- src/livetvtuner.html | 2 +- src/movies.html | 2 +- src/music.html | 2 +- src/mypreferencesmenu.html | 10 ++--- src/networking.html | 2 +- src/nowplaying.html | 18 ++++---- src/scheduledtask.html | 2 +- src/scripts/editorsidebar.js | 12 +++--- src/scripts/librarymenu.js | 28 ++++++------- src/userparentalcontrol.html | 4 +- src/userprofiles.html | 2 +- src/videoosd.html | 14 +++---- src/wizardfinish.html | 2 +- src/wizardlibrary.html | 2 +- 74 files changed, 229 insertions(+), 233 deletions(-) diff --git a/src/apikeys.html b/src/apikeys.html index 6f766ae6c9..93c3e57ef6 100644 --- a/src/apikeys.html +++ b/src/apikeys.html @@ -4,7 +4,7 @@

${HeaderApiKeys}

${HeaderApiKeysHelp}

diff --git a/src/components/actionsheet/actionsheet.js b/src/components/actionsheet/actionsheet.js index 926d63b637..30e15ffeb7 100644 --- a/src/components/actionsheet/actionsheet.js +++ b/src/components/actionsheet/actionsheet.js @@ -226,9 +226,9 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu if (itemIcon) { - html += '' + itemIcon + ''; + html += ''; } else if (renderIcon && !center) { - html += ''; + html += ''; } html += '
'; diff --git a/src/components/activitylog.js b/src/components/activitylog.js index 62eda74d5f..1a8707c808 100644 --- a/src/components/activitylog.js +++ b/src/components/activitylog.js @@ -13,12 +13,12 @@ define(["events", "globalize", "dom", "date-fns", "dfnshelper", "userSettings", } if (entry.UserId && entry.UserPrimaryImageTag) { - html += 'dvr"; + }) + "');background-repeat:no-repeat;background-position:center center;background-size: cover;\">"; } else { - html += '' + icon + ''; + html += ''; } html += '
'; @@ -34,7 +34,7 @@ define(["events", "globalize", "dom", "date-fns", "dfnshelper", "userSettings", html += "
"; if (entry.Overview) { - html += ''; + html += ''; } return html += "
"; diff --git a/src/components/alphapicker/alphapicker.js b/src/components/alphapicker/alphapicker.js index 455a43b46d..577047fca4 100644 --- a/src/components/alphapicker/alphapicker.js +++ b/src/components/alphapicker/alphapicker.js @@ -77,7 +77,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b html += mapLetters(letters, vertical).join(''); if (options.mode === 'keyboard') { - html += ''; + html += ''; html += ''; letters = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index a4cf6edadc..70abd5e39d 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1569,7 +1569,7 @@ import 'programStyles'; if (itemHelper.canMarkPlayed(item)) { require(['emby-playstatebutton']); - html += ''; + html += ''; } if (itemHelper.canRate(item)) { @@ -1577,7 +1577,7 @@ import 'programStyles'; const likes = userData.Likes == null ? '' : userData.Likes; require(['emby-ratingbutton']); - html += ''; + html += ''; } html += ''; @@ -1601,22 +1601,22 @@ import 'programStyles'; switch (item.Type) { case 'MusicAlbum': - return 'album'; + return ''; case 'MusicArtist': case 'Person': - return 'person'; + return ''; case 'Movie': - return 'movie'; + return ''; case 'Series': - return 'tv'; + return ''; case 'Book': - return 'book'; + return ''; case 'Folder': - return 'folder'; + return ''; } if (options && options.defaultCardImageIcon) { - return '' + options.defaultCardImageIcon + ''; + return ''; } const defaultName = isUsingLiveTvNaming(item) ? item.Name : itemHelper.getDisplayName(item); @@ -1718,7 +1718,7 @@ import 'programStyles'; indicatorsElem = ensureIndicators(card, indicatorsElem); indicatorsElem.appendChild(playedIndicator); } - playedIndicator.innerHTML = 'check'; + playedIndicator.innerHTML = ''; } else { playedIndicator = card.querySelector('.playedIndicator'); diff --git a/src/components/channelmapper/channelmapper.js b/src/components/channelmapper/channelmapper.js index 2ea7a3a13a..f7b3a101e9 100644 --- a/src/components/channelmapper/channelmapper.js +++ b/src/components/channelmapper/channelmapper.js @@ -60,7 +60,7 @@ define(["dom", "dialogHelper", "loading", "connectionManager", "globalize", "act function getTunerChannelHtml(channel, providerName) { var html = ""; html += '
'; - html += 'dvr'; + html += ''; html += '
'; html += '

'; html += channel.Name; diff --git a/src/components/collectioneditor/collectioneditor.js b/src/components/collectioneditor/collectioneditor.js index 49784df498..7a14c3666c 100644 --- a/src/components/collectioneditor/collectioneditor.js +++ b/src/components/collectioneditor/collectioneditor.js @@ -236,7 +236,7 @@ define(['dom', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectio html += '

'; if (appHost.supports('externallinks')) { - html += 'info' + globalize.translate('Help') + ''; + html += '' + globalize.translate('Help') + ''; } html += '
'; diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index fc976068e7..cd84dcb28d 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -116,7 +116,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- html += ''; html += "
"; if (!readOnlyAttribute) { - html += ''; + html += ''; } html += ""; if (!readOnlyAttribute) { diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index d6497e5f09..91ed83487a 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -577,7 +577,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += ''; if (program.IsHD && options.showHdIcon) { - //html += 'hd'; + //html += ''; if (layoutManager.tv) { html += '
HD
'; } else { diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 20aebf4305..b2c3ecc19f 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -167,11 +167,11 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', } } else { if (imageProviders.length) { - html += ''; + html += ''; } } - html += ''; + html += ''; html += ''; } diff --git a/src/components/imageeditor/imageeditor.template.html b/src/components/imageeditor/imageeditor.template.html index 37dce874c0..92a05ec062 100644 --- a/src/components/imageeditor/imageeditor.template.html +++ b/src/components/imageeditor/imageeditor.template.html @@ -12,10 +12,10 @@

${Images}

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

${Backdrops}

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

${Screenshots}

diff --git a/src/components/imageuploader/imageuploader.template.html b/src/components/imageuploader/imageuploader.template.html index 1b83b50955..0e2d884d5f 100644 --- a/src/components/imageuploader/imageuploader.template.html +++ b/src/components/imageuploader/imageuploader.template.html @@ -14,7 +14,7 @@

${HeaderAddUpdateImage}

diff --git a/src/components/indicators/indicators.js b/src/components/indicators/indicators.js index 633706d209..90520653c4 100644 --- a/src/components/indicators/indicators.js +++ b/src/components/indicators/indicators.js @@ -90,7 +90,7 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm } if (userData.PlayedPercentage && userData.PlayedPercentage >= 100 || (userData.Played)) { - return '
check
'; + return '
'; } } @@ -150,16 +150,16 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm function getTypeIndicator(item) { if (item.Type === 'Video') { - return '
videocam
'; + return '
'; } if (item.Type === 'Folder') { - return '
folder
'; + return '
'; } if (item.Type === 'PhotoAlbum') { return '
'; } if (item.Type === 'Photo') { - return '
photo
'; + return '
'; } return ''; diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index 5f95714d36..5b5f948bcc 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -15,7 +15,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", commands.push({ name: globalize.translate("Play"), id: "resume", - icon: "" + icon: "play_arrow" }); } @@ -23,7 +23,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", commands.push({ name: globalize.translate("PlayAllFromHere"), id: "playallfromhere", - icon: "" + icon: "play_arrow" }); } } diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 532ba094a8..99551245df 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -160,7 +160,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var button = options.rightButtons[i]; - html += ''; + html += ''; } return html; @@ -426,7 +426,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += '
'; - var moreIcon = ''; + const moreIcon = 'more_horiz'; html += getTextLinesHtml(textlines, isLargeStyle); @@ -479,7 +479,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (options.moreButton !== false) { - html += ''; + html += ''; } if (options.infoButton) { @@ -496,11 +496,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 += ''; } } } diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index 188ea9a07c..e2b7dfb353 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -390,7 +390,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.CommunityRating) { html += '
'; - html += 'star'; + html += ''; html += item.CommunityRating.toFixed(1); html += '
'; } diff --git a/src/components/medialibrarycreator/medialibrarycreator.js b/src/components/medialibrarycreator/medialibrarycreator.js index 0a8741387f..120e72bcfe 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.js +++ b/src/components/medialibrarycreator/medialibrarycreator.js @@ -116,7 +116,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } html += "
"; - html += ''; + html += ''; html += "
"; return html; } diff --git a/src/components/medialibrarycreator/medialibrarycreator.template.html b/src/components/medialibrarycreator/medialibrarycreator.template.html index 32c6b254b7..fe701b8c8c 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.template.html +++ b/src/components/medialibrarycreator/medialibrarycreator.template.html @@ -26,7 +26,7 @@

${HeadersFolders}

diff --git a/src/components/medialibraryeditor/medialibraryeditor.js b/src/components/medialibraryeditor/medialibraryeditor.js index 7c5c8d4080..7bf2453a6f 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.js +++ b/src/components/medialibraryeditor/medialibraryeditor.js @@ -107,7 +107,7 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed } html += "
"; - html += ''; + html += ''; html += ""; return html; } diff --git a/src/components/medialibraryeditor/medialibraryeditor.template.html b/src/components/medialibraryeditor/medialibraryeditor.template.html index 172c535fa1..faa15afe9f 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.template.html +++ b/src/components/medialibraryeditor/medialibraryeditor.template.html @@ -20,7 +20,7 @@

${HeadersFolders}

diff --git a/src/components/metadataeditor/metadataeditor.js b/src/components/metadataeditor/metadataeditor.js index 8a64cac7ef..2ee4248aa9 100644 --- a/src/components/metadataeditor/metadataeditor.js +++ b/src/components/metadataeditor/metadataeditor.js @@ -932,7 +932,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += ''; - html += ''; + html += ''; html += ''; } @@ -953,7 +953,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += '
'; - html += 'person'; + html += ''; html += '
'; html += ''; html += '
'; - html += ''; + html += ''; html += '
'; } diff --git a/src/components/metadataeditor/metadataeditor.template.html b/src/components/metadataeditor/metadataeditor.template.html index 8e36a824b7..87a929fa20 100644 --- a/src/components/metadataeditor/metadataeditor.template.html +++ b/src/components/metadataeditor/metadataeditor.template.html @@ -5,7 +5,7 @@
@@ -193,7 +193,7 @@ ${People}
@@ -203,7 +203,7 @@ ${Studios}
@@ -212,7 +212,7 @@ ${Tags}
diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index b4fa87c8a0..89550135b5 100644 --- a/src/components/multiselect/multiselect.js +++ b/src/components/multiselect/multiselect.js @@ -126,11 +126,11 @@ define(["browser", "appStorage", "apphost", "loading", "connectionManager", "glo var html = ""; - html += ''; + html += ''; html += '

'; - var moreIcon = ""; - html += ''; + const moreIcon = "more_horiz"; + html += ''; selectionCommandsPanel.innerHTML = html; diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index a3839a9342..b248a260ab 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -44,9 +44,9 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', html += ''; - html += ''; + html += ''; - html += ''; + html += ''; html += ''; html += '
'; @@ -54,18 +54,18 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', html += '
'; - html += ''; + html += ''; html += '
'; html += ''; html += '
'; - html += ''; + html += ''; html += '
'; html += '
'; - html += ''; + html += ''; html += ''; html += '
'; @@ -285,17 +285,11 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', var length; if (playPauseButtons) { - if (isPaused) { + let icons = ["play_arrow", "pause"]; + if (isPaused) icons = icons.reverse(); - for (i = 0, length = playPauseButtons.length; i < length; i++) { - playPauseButtons[i].querySelector('i').innerHTML = ''; - } - - } else { - - for (i = 0, length = playPauseButtons.length; i < length; i++) { - playPauseButtons[i].querySelector('i').innerHTML = 'pause'; - } + for (i = 0, length = playPauseButtons.length; i < length; i++) { + playPauseButtons[i].querySelector('i').classList.replace(icons[0], icons[1]); } } } @@ -340,15 +334,16 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } function updateRepeatModeDisplay(repeatMode) { + toggleRepeatButtonIcon.classList.remove("repeat", "repeat_one"); if (repeatMode === 'RepeatAll') { - toggleRepeatButtonIcon.innerHTML = "repeat"; + toggleRepeatButtonIcon.classList.add("repeat"); toggleRepeatButton.classList.add('repeatButton-active'); } else if (repeatMode === 'RepeatOne') { - toggleRepeatButtonIcon.innerHTML = "repeat_one"; + toggleRepeatButtonIcon.classList.add("repeat_one"); toggleRepeatButton.classList.add('repeatButton-active'); } else { - toggleRepeatButtonIcon.innerHTML = "repeat"; + toggleRepeatButtonIcon.classList.add("repeat"); toggleRepeatButton.classList.remove('repeatButton-active'); } } @@ -397,11 +392,9 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', showMuteButton = false; } - if (isMuted) { - muteButton.querySelector('i').innerHTML = ''; - } else { - muteButton.querySelector('i').innerHTML = ''; - } + let icons = ["volume_off", "volume_up"]; + if (isMuted) icons = icons.reverse(); + muteButton.querySelector('i').classList.replace(icons[0], icons[1]); if (supportedCommands.indexOf('SetVolume') === -1) { showVolumeSlider = false; @@ -564,7 +557,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', queue: false, positionTo: contextButton }; - nowPlayingUserData.innerHTML = ''; + nowPlayingUserData.innerHTML = ''; apiClient.getCurrentUser().then(function(user) { contextButton.addEventListener('click', function () { itemContextMenu.show(Object.assign({ diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index 5d2c90ddb7..1a0c566e55 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 += ''; html += '
'; @@ -101,7 +101,9 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function updatePlayerVolumeState(isMuted, volume) { if (iconElement) { - iconElement.innerHTML = isMuted ? '' : ''; + let icons = ["volume_off", "volume_up"]; + if (isMuted) icons = icons.reverse(); + iconElement.classList.replace(icons[0], icons[1]); } if (progressElement) { progressElement.style.width = (volume || 0) + '%'; diff --git a/src/components/playerstats/playerstats.js b/src/components/playerstats/playerstats.js index 89adf22624..572f653fc6 100644 --- a/src/components/playerstats/playerstats.js +++ b/src/components/playerstats/playerstats.js @@ -18,7 +18,7 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth if (layoutManager.tv) { button = ''; } else { - button = ''; + button = ''; } var contentClass = layoutManager.tv ? 'playerStats-content playerStats-content-tv' : 'playerStats-content'; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 8e2a382d1d..6b7a7d7738 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -171,8 +171,8 @@ 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(".nowPlayingPageUserDataButtonsTitle").innerHTML = ''; - context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ''; + context.querySelector(".nowPlayingPageUserDataButtonsTitle").innerHTML = ''; + context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ''; }); } else { backdrop.clear(); @@ -196,7 +196,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL context.querySelector(".nowPlayingPageImage").classList.remove("nowPlayingPageImageAudio"); } } else { - imgContainer.innerHTML = '
'; + imgContainer.innerHTML = '
'; } } @@ -319,13 +319,13 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var toggleRepeatButton = context.querySelector(".repeatToggleButton"); if ("RepeatAll" == repeatMode) { - toggleRepeatButton.innerHTML = "repeat"; + toggleRepeatButton.innerHTML = ""; toggleRepeatButton.classList.add("repeatButton-active"); } else if ("RepeatOne" == repeatMode) { toggleRepeatButton.innerHTML = ""; toggleRepeatButton.classList.add("repeatButton-active"); } else { - toggleRepeatButton.innerHTML = "repeat"; + toggleRepeatButton.innerHTML = ""; toggleRepeatButton.classList.remove("repeatButton-active"); } } @@ -351,10 +351,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").classList.replace("volume_up", "volume_off"); } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute")); - view.querySelector(".buttonMute i").innerHTML = ""; + view.querySelector(".buttonMute i").classList.replace("volume_off", "volume_up"); } if (showMuteButton) { @@ -382,7 +382,9 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function updatePlayPauseState(isPaused, isActive) { var context = dlg; var btnPlayPause = context.querySelector(".btnPlayPause"); - btnPlayPause.querySelector("i").innerHTML = isPaused ? "" : ""; + let icons = ["play_circle_filled", "pause_circle_filled"]; + if (isPaused) icons = icons.reverse(); + btnPlayPause.querySelector("i").classList.replace(icons[0], icons[1]); buttonVisible(btnPlayPause, isActive); } @@ -417,7 +419,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL action: "setplaylistindex", enableUserDataButtons: false, rightButtons: [{ - icon: "", + icon: "remove_circle_outline", title: globalize.translate("ButtonRemove"), id: "remove" }], @@ -674,7 +676,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var contextmenuHtml = ''; var volumecontrolHtml = '
'; - volumecontrolHtml += ''; + volumecontrolHtml += ''; volumecontrolHtml += '
'; volumecontrolHtml += '
'; if (!layoutManager.mobile) { diff --git a/src/components/search/searchfields.template.html b/src/components/search/searchfields.template.html index c1e9c64347..40b916882d 100644 --- a/src/components/search/searchfields.template.html +++ b/src/components/search/searchfields.template.html @@ -1,5 +1,5 @@
- search +
diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 1ff30712f6..ea1bee4f3e 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -149,7 +149,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', if (!layoutManager.tv) { if (s.Path) { - itemHtml += ''; + itemHtml += ''; } } diff --git a/src/components/subtitleeditor/subtitleeditor.template.html b/src/components/subtitleeditor/subtitleeditor.template.html index 8719cc9305..57d83d618c 100644 --- a/src/components/subtitleeditor/subtitleeditor.template.html +++ b/src/components/subtitleeditor/subtitleeditor.template.html @@ -2,7 +2,7 @@

${Subtitles}

- info${Help} + ${Help}
@@ -18,7 +18,7 @@
- +
diff --git a/src/components/subtitlesync/subtitlesync.template.html b/src/components/subtitlesync/subtitlesync.template.html index 999e4d0bb9..eaf4a2993b 100644 --- a/src/components/subtitlesync/subtitlesync.template.html +++ b/src/components/subtitlesync/subtitlesync.template.html @@ -1,5 +1,5 @@
- +
0s
diff --git a/src/components/tabbedview/itemstab.js b/src/components/tabbedview/itemstab.js index 6cfd408424..26da63c894 100644 --- a/src/components/tabbedview/itemstab.js +++ b/src/components/tabbedview/itemstab.js @@ -181,7 +181,9 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts return; } - btnSortIcon.innerHTML = values.sortOrder === 'Descending' ? '' : ''; + let icons = ["arrow_downward", "arrow_upward"]; + if (values.sortOrder === 'Descending') icons = icons.reverse(); + btnSortIcon.classList.replace(icons[0], icons[1]); } function bindAll(elems, eventName, fn) { diff --git a/src/components/tunerpicker.js b/src/components/tunerpicker.js index 4dd5ecd3de..bd4484abe0 100644 --- a/src/components/tunerpicker.js +++ b/src/components/tunerpicker.js @@ -41,7 +41,7 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" html += '
'; html += '
'; html += '
'; - html += '
dvr
'; + html += '
'; html += "
"; html += "
"; html += '
'; diff --git a/src/components/tvproviders/xmltv.template.html b/src/components/tvproviders/xmltv.template.html index 7f6490e621..f48bfb3857 100644 --- a/src/components/tvproviders/xmltv.template.html +++ b/src/components/tvproviders/xmltv.template.html @@ -12,7 +12,7 @@
- +
${XmlTvPathHelp}
diff --git a/src/components/userdatabuttons/userdatabuttons.js b/src/components/userdatabuttons/userdatabuttons.js index 2636be1e1d..1c1d794080 100644 --- a/src/components/userdatabuttons/userdatabuttons.js +++ b/src/components/userdatabuttons/userdatabuttons.js @@ -30,7 +30,7 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto iconCssClass += 'material-icons'; - return ''; + return ''; } function onContainerClick(e) { diff --git a/src/controllers/auth/selectserver.js b/src/controllers/auth/selectserver.js index 2d27742119..91eebf8cee 100644 --- a/src/controllers/auth/selectserver.js +++ b/src/controllers/auth/selectserver.js @@ -18,7 +18,7 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu var cardImageContainer; if (item.showIcon) { - cardImageContainer = '' + item.icon + ""; + cardImageContainer = ''; } else { cardImageContainer = '
'; } diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 78f5cdca01..7246b4871f 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -303,16 +303,16 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa html += '
'; var btnCssClass = session.ServerId && session.NowPlayingItem && session.SupportsRemoteControl ? "" : " hide"; - var playIcon = session.PlayState.IsPaused ? 'pause' : 'play'; + const playIcon = session.PlayState.IsPaused ? 'pause' : 'play_arrow'; - 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 += '
'; @@ -368,7 +368,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa html += progress + "%"; html += ""; html += "" + progress + "%"; - html += ''; + html += ''; } else if (task.State === "Cancelling") { html += '' + globalize.translate("LabelStopping") + ""; } @@ -571,11 +571,9 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa row.querySelector(".btnSessionStop").classList.add("hide"); } - if (session.PlayState && session.PlayState.IsPaused) { - btnSessionPlayPause.querySelector("i").innerHTML = ""; - } else { - btnSessionPlayPause.querySelector("i").innerHTML = "pause"; - } + let icons = ["play_arrow", "pause"]; + if (session.PlayState && session.PlayState.IsPaused) icons = icons.reverse(); + btnSessionPlayPause.querySelector("i").classList.replace(icons[0], icons[1]); row.querySelector(".sessionNowPlayingStreamInfo").innerHTML = DashboardPage.getSessionNowPlayingStreamInfo(session); row.querySelector(".sessionNowPlayingTime").innerHTML = DashboardPage.getSessionNowPlayingTime(session); diff --git a/src/controllers/dashboard/plugins/available.js b/src/controllers/dashboard/plugins/available.js index adccfa3935..54440aa85c 100644 --- a/src/controllers/dashboard/plugins/available.js +++ b/src/controllers/dashboard/plugins/available.js @@ -103,7 +103,7 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby html += '
"; html += "
"; } else { - html += 'folder'; + html += ''; } html += ""; diff --git a/src/controllers/dashboard/plugins/installed.js b/src/controllers/dashboard/plugins/installed.js index c381b2409e..a326e24777 100644 --- a/src/controllers/dashboard/plugins/installed.js +++ b/src/controllers/dashboard/plugins/installed.js @@ -47,7 +47,7 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" html += '
"; html += "
"; } else { - html += 'folder'; + html += ''; } html += configPageUrl ? "" : "
"; diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtask.js b/src/controllers/dashboard/scheduledtasks/scheduledtask.js index 8a3cdf5d69..aa56b0bc1a 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtask.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtask.js @@ -49,7 +49,7 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby var trigger = task.Triggers[i]; html += '
'; - html += 'schedule'; + html += ''; if (trigger.MaxRuntimeMs) { html += '
'; } else { @@ -68,7 +68,7 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby } html += "
"; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index b9c7ba413c..d70a49dba3 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -40,7 +40,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "date } html += '
'; html += ""; - html += 'schedule'; + html += ''; html += ""; html += '
'; html += ""; diff --git a/src/controllers/dlnaprofile.js b/src/controllers/dlnaprofile.js index ca0d3afdb1..06c3be74cc 100644 --- a/src/controllers/dlnaprofile.js +++ b/src/controllers/dlnaprofile.js @@ -76,12 +76,12 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in var index = 0; var html = '"; } @@ -415,7 +415,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -487,7 +487,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -567,7 +567,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/dlnaprofiles.js b/src/controllers/dlnaprofiles.js index e1719ea597..544ab0d450 100644 --- a/src/controllers/dlnaprofiles.js +++ b/src/controllers/dlnaprofiles.js @@ -40,7 +40,7 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby- html += ""; if ("User" == profile.Type) { - html += ''; + html += ''; } html += ""; diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index e9242c5119..6347aa3802 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1749,7 +1749,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti html += '

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

"; - html += ''; + html += ''; html += ""; html += '
'; var shape = "MusicAlbum" == type.type ? getSquareShape(false) : getPortraitShape(false); @@ -2078,7 +2078,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti bindAll(view, ".btnCancelTimer", "click", onCancelTimerClick); bindAll(view, ".btnDeleteItem", "click", onDeleteClick); bindAll(view, ".btnDownload", "click", onDownloadClick); - view.querySelector(".btnMoreCommands i").innerHTML = ""; view.querySelector(".trackSelections").addEventListener("submit", onTrackSelectionsSubmit); view.querySelector(".btnSplitVersions").addEventListener("click", function () { splitVersions(self, view, apiClient, params); diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index aee5876a45..7a8b499217 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -26,7 +26,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo html += '
'; html += '
'; html += '
'; - html += '
dvr
'; + html += '
'; html += "
"; html += "
"; html += '
'; @@ -101,7 +101,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo for (var i = 0, length = providers.length; i < length; i++) { var provider = providers[i]; html += '
'; - html += 'dvr'; + html += ''; html += '
'; html += ''; html += '

'; diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index d838c2145e..956e6e0d9e 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -268,7 +268,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl hasCardImageContainer = true; } else if (!virtualFolder.showNameWithIcon) { html += '
'; - html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; + html += ''; hasCardImageContainer = true; } @@ -281,7 +281,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (!imgUrl && virtualFolder.showNameWithIcon) { html += '

'; - html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; + html += ''; if (virtualFolder.showNameWithIcon) { html += '
'; diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 555e34c5b0..150f357b77 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -545,10 +545,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").classList.replace("fullscreen", "fullscreen_exit"); } else { view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("Fullscreen") + " (f)"); - view.querySelector(".btnFullscreen i").innerHTML = "fullscreen"; + view.querySelector(".btnFullscreen i").classList.replace("fullscreen_exit", "fullscreen"); } } @@ -748,10 +748,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function updatePlayPauseState(isPaused) { var button = view.querySelector(".btnPause i"); if (isPaused) { - button.innerHTML = ""; + button.classList.replace("pause", "play_arrow"); button.setAttribute("title", globalize.translate("ButtonPlay") + " (k)"); } else { - button.innerHTML = "pause"; + button.classList.replace("play_arrow", "pause"); button.setAttribute("title", globalize.translate("ButtonPause") + " (k)"); } } @@ -885,10 +885,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").classList.replace("volume_up", "volume_off"); } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute") + " (m)"); - view.querySelector(".buttonMute i").innerHTML = ""; + view.querySelector(".buttonMute i").classList.replace("volume_off", "volume_up"); } if (showMuteButton) { diff --git a/src/controllers/userparentalcontrol.js b/src/controllers/userparentalcontrol.js index 333c09f266..e3f1705ef5 100644 --- a/src/controllers/userparentalcontrol.js +++ b/src/controllers/userparentalcontrol.js @@ -108,7 +108,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper- li += h; li += "

"; li += "
"; - li += ''; + li += ''; return li += "

"; }).join(""); @@ -143,7 +143,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper- itemHtml += ""; itemHtml += '
' + getDisplayTime(a.StartHour) + " - " + getDisplayTime(a.EndHour) + "
"; itemHtml += "
"; - itemHtml += ''; + itemHtml += ''; itemHtml += "
"; index++; return itemHtml; diff --git a/src/controllers/userprofilespage.js b/src/controllers/userprofilespage.js index 180d0e62ae..b8dbc4fa60 100644 --- a/src/controllers/userprofilespage.js +++ b/src/controllers/userprofilespage.js @@ -104,7 +104,7 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but html += '
"; } else { html += '
'; - html += 'person'; + html += ''; } html += "
"; @@ -182,7 +182,7 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but html += '
"; html += "
"; } else { - html += 'person'; + html += ''; } html += "
"; diff --git a/src/dashboardgeneral.html b/src/dashboardgeneral.html index d0ef17385f..f850783f13 100644 --- a/src/dashboardgeneral.html +++ b/src/dashboardgeneral.html @@ -39,7 +39,7 @@
- +
${LabelCachePathHelp}
@@ -49,7 +49,7 @@
- +
${LabelMetadataPathHelp}
diff --git a/src/dlnaprofile.html b/src/dlnaprofile.html index 2420ab4c35..4a5629fd8c 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 c1ae38609c..764ac8e04d 100644 --- a/src/dlnaprofiles.html +++ b/src/dlnaprofiles.html @@ -9,7 +9,7 @@

${HeaderCustomDlnaProfiles}

- add + ${Help}
diff --git a/src/elements/emby-checkbox/emby-checkbox.js b/src/elements/emby-checkbox/emby-checkbox.js index b5e587d5a6..8067d33a74 100644 --- a/src/elements/emby-checkbox/emby-checkbox.js +++ b/src/elements/emby-checkbox/emby-checkbox.js @@ -57,8 +57,8 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b var checkedIcon = this.getAttribute('data-checkedicon') || 'check'; var uncheckedIcon = this.getAttribute('data-uncheckedicon') || ''; - var checkHtml = '' + checkedIcon + ''; - var uncheckedHtml = '' + uncheckedIcon + ''; + var checkHtml = ''; + var uncheckedHtml = ''; labelElement.insertAdjacentHTML('beforeend', '' + checkHtml + uncheckedHtml + ''); labelTextElement.classList.add('checkboxLabel'); diff --git a/src/elements/emby-ratingbutton/emby-ratingbutton.js b/src/elements/emby-ratingbutton/emby-ratingbutton.js index 84ae780de5..86c31ac871 100644 --- a/src/elements/emby-ratingbutton/emby-ratingbutton.js +++ b/src/elements/emby-ratingbutton/emby-ratingbutton.js @@ -62,7 +62,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby if (isFavorite) { if (icon) { - icon.innerHTML = 'favorite'; + icon.classList.add('favorite'); icon.classList.add('ratingbutton-icon-withrating'); } @@ -71,7 +71,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby } else if (likes) { if (icon) { - icon.innerHTML = 'favorite'; + icon.classList.add('favorite'); icon.classList.remove('ratingbutton-icon-withrating'); //icon.innerHTML = 'thumb_up'; } @@ -80,7 +80,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby } else if (likes === false) { if (icon) { - icon.innerHTML = 'favorite'; + icon.classList.add('favorite'); icon.classList.remove('ratingbutton-icon-withrating'); //icon.innerHTML = 'thumb_down'; } @@ -89,7 +89,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby } else { if (icon) { - icon.innerHTML = 'favorite'; + icon.classList.add('favorite'); icon.classList.remove('ratingbutton-icon-withrating'); //icon.innerHTML = 'thumbs_up_down'; } diff --git a/src/elements/emby-scrollbuttons/emby-scrollbuttons.js b/src/elements/emby-scrollbuttons/emby-scrollbuttons.js index af8261a632..229771b8ed 100644 --- a/src/elements/emby-scrollbuttons/emby-scrollbuttons.js +++ b/src/elements/emby-scrollbuttons/emby-scrollbuttons.js @@ -7,10 +7,10 @@ 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 += ''; return html; diff --git a/src/encodingsettings.html b/src/encodingsettings.html index 5a005d8001..ff064e4373 100644 --- a/src/encodingsettings.html +++ b/src/encodingsettings.html @@ -96,7 +96,7 @@
- +
${LabelffmpegPathHelp}
@@ -107,7 +107,7 @@
- +
${LabelTranscodingTempPathHelp}
diff --git a/src/itemdetails.html b/src/itemdetails.html index 0520c80d11..5bd8b40de6 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -38,56 +38,56 @@ @@ -101,7 +101,7 @@ diff --git a/src/list.html b/src/list.html index 375653c12d..5e47eeb7fc 100644 --- a/src/list.html +++ b/src/list.html @@ -19,13 +19,13 @@ ${Shuffle} +
${LabelRecordingPathHelp}
@@ -43,7 +43,7 @@
- +
@@ -51,7 +51,7 @@
- +
@@ -84,7 +84,7 @@
- +
diff --git a/src/livetvstatus.html b/src/livetvstatus.html index fc855f32b0..c1ae0d4703 100644 --- a/src/livetvstatus.html +++ b/src/livetvstatus.html @@ -8,7 +8,7 @@ ${HeaderTunerDevices} ${Help}
@@ -21,7 +21,7 @@

${HeaderGuideProviders}

diff --git a/src/livetvtuner.html b/src/livetvtuner.html index fecbda90aa..37d0f8c30f 100644 --- a/src/livetvtuner.html +++ b/src/livetvtuner.html @@ -24,7 +24,7 @@
- + diff --git a/src/movies.html b/src/movies.html index e552ca392f..7f86e2e0e9 100644 --- a/src/movies.html +++ b/src/movies.html @@ -76,7 +76,7 @@
- +
diff --git a/src/music.html b/src/music.html index 9a284a5f8f..a42a5bb7f0 100644 --- a/src/music.html +++ b/src/music.html @@ -38,7 +38,7 @@
- + diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index 4219059dd0..8e3cd40f6b 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -5,7 +5,7 @@

diff --git a/src/scheduledtask.html b/src/scheduledtask.html index f5bd6550f2..12b4e3b960 100644 --- a/src/scheduledtask.html +++ b/src/scheduledtask.html @@ -13,7 +13,7 @@

${HeaderTaskTriggers}

diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index b7cb4b5c57..22f1aa6125 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -43,20 +43,20 @@ define(["datetime", "jQuery", "material-icons"], function (datetime, $) { } var htmlName = "
"; if (item.IsFolder) { - htmlName += 'folder'; + htmlName += ''; } else if (item.MediaType === "Video") { - htmlName += 'movie'; + htmlName += ''; } else if (item.MediaType === "Audio") { - htmlName += 'audiotrack'; + htmlName += ''; } else if (item.Type === "TvChannel") { htmlName += ''; } else if (item.MediaType === "Photo") { - htmlName += 'photo'; + htmlName += ''; } else if (item.MediaType === "Book") { - htmlName += 'book'; + htmlName += ''; } if (item.LockData) { - htmlName += 'lock'; + htmlName += ''; } htmlName += name; htmlName += "
"; diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 79c4c09e78..c75dbd01f9 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -6,16 +6,16 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += '
'; html += '
'; html += ''; - html += ''; - html += ''; + html += ''; + html += ''; html += '

'; html += "
"; html += '
'; html += ''; html += ''; - html += ''; - html += ''; - html += ''; + html += ''; + html += ''; + html += ''; html += "
"; html += "
"; html += '
'; @@ -102,7 +102,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " headerUserButton.innerHTML = '
"; } else { headerUserButton.classList.remove("headerUserButtonRound"); - headerUserButton.innerHTML = 'person'; + headerUserButton.innerHTML = ''; } } @@ -217,7 +217,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " function refreshLibraryInfoInDrawer(user, drawer) { var html = ""; html += '
'; - html += '
home' + globalize.translate("ButtonHome") + ""; + html += '' + globalize.translate("ButtonHome") + ""; // libraries are added here html += '
'; @@ -228,7 +228,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += '

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

"; - html += 'dashboard' + globalize.translate("TabDashboard") + ""; + html += '' + globalize.translate("TabDashboard") + ""; html += '' + globalize.translate("Metadata") + ""; html += "
"; } @@ -240,7 +240,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += ""; if (appHost.supports("multiserver")) { - html += 'wifi' + globalize.translate("ButtonSelectServer") + ""; + html += '' + globalize.translate("ButtonSelectServer") + ""; } html += '' + globalize.translate("ButtonSettings") + ""; @@ -335,7 +335,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " icon: "folder" }, { name: globalize.translate("TabPlayback"), - icon: "", + icon: "play_arrow", href: "encodingsettings.html", pageIds: ["encodingSettingsPage", "playbackConfigurationPage", "streamingSettingsPage"] }]; @@ -452,7 +452,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " menuHtml += '"; if (item.icon) { - menuHtml += '' + item.icon + ""; + menuHtml += ''; } menuHtml += ''; @@ -579,7 +579,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " i.onclick; } - return '' + icon + '' + i.Name + ""; + return '' + i.Name + ""; }).join(""); libraryMenuOptions.innerHTML = html; var elem = libraryMenuOptions; @@ -617,11 +617,11 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var icon = headerCastButton.querySelector("i"); if (info && !info.isLocalPlayer) { - icon.innerHTML = ""; + icon.classList.replace("cast", "cast_connected"); headerCastButton.classList.add("castButton-active"); context.querySelector(".headerSelectedPlayer").innerHTML = info.deviceName || info.name; } else { - icon.innerHTML = "cast"; + icon.classList.replace("cast_connected", "cast"); headerCastButton.classList.remove("castButton-active"); context.querySelector(".headerSelectedPlayer").innerHTML = ""; } diff --git a/src/userparentalcontrol.html b/src/userparentalcontrol.html index 4cb5708db7..538de80a70 100644 --- a/src/userparentalcontrol.html +++ b/src/userparentalcontrol.html @@ -31,7 +31,7 @@

${LabelBlockContentWithTags}

@@ -41,7 +41,7 @@

${HeaderAccessSchedule}

diff --git a/src/userprofiles.html b/src/userprofiles.html index 022e06b95f..398d951db2 100644 --- a/src/userprofiles.html +++ b/src/userprofiles.html @@ -6,7 +6,7 @@

${HeaderUsers}

${Help}
diff --git a/src/videoosd.html b/src/videoosd.html index c200360c05..cb1e507541 100644 --- a/src/videoosd.html +++ b/src/videoosd.html @@ -8,7 +8,7 @@

- autorenew + ${FetchingData}
@@ -37,7 +37,7 @@
@@ -76,7 +76,7 @@
diff --git a/src/wizardfinish.html b/src/wizardfinish.html index d3a0c4a831..6bcec5ff0a 100644 --- a/src/wizardfinish.html +++ b/src/wizardfinish.html @@ -9,7 +9,7 @@ ${LabelPrevious}
diff --git a/src/wizardlibrary.html b/src/wizardlibrary.html index 4fad656581..7851f41f0a 100644 --- a/src/wizardlibrary.html +++ b/src/wizardlibrary.html @@ -3,7 +3,7 @@

${HeaderSetupLibrary}

- +

From ad5c7ec3b4c77a589141b700a01007171a9db2b6 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 25 Apr 2020 20:25:52 +0300 Subject: [PATCH 02/32] CSS cleanup --- src/assets/css/librarybrowser.css | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index f7a1160469..a9d8b2575b 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -644,11 +644,6 @@ div.itemDetailGalleryLink.defaultCardBackground { height: 23vw; /* Dirty hack to get it to look somewhat square. Less than ideal. */ } -.btnSyncComplete i { - -webkit-border-radius: 100em; - border-radius: 100em; -} - .itemDetailGalleryLink.defaultCardBackground > i { font-size: 15vw; margin-top: 50%; @@ -681,10 +676,6 @@ div.itemDetailGalleryLink.defaultCardBackground { } } -.btnSyncComplete { - background: #673ab7 !important; -} - .emby-button.detailFloatingButton { position: absolute; background-color: rgba(0, 0, 0, 0.5) !important; From 6fe9a8c3e98ba66613f668c0c97a4b57db57c512 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 26 Apr 2020 02:37:28 +0300 Subject: [PATCH 03/32] Change icon tag to span --- src/apikeys.html | 2 +- src/assets/css/librarybrowser.css | 4 +- .../accessschedule.template.html | 2 +- src/components/actionsheet/actionsheet.js | 6 +-- src/components/activitylog.js | 8 ++-- src/components/alphapicker/alphapicker.js | 4 +- src/components/cardbuilder/cardBuilder.js | 36 +++++++-------- .../cardbuilder/chaptercardbuilder.js | 2 +- src/components/channelmapper/channelmapper.js | 6 +-- .../collectioneditor/collectioneditor.js | 4 +- .../directorybrowser/directorybrowser.js | 6 +-- src/components/favoriteitems.js | 2 +- src/components/filtermenu/filtermenu.js | 2 +- .../guide/guide-settings.template.html | 2 +- src/components/guide/guide.js | 14 +++--- src/components/guide/tvguide.template.html | 6 +-- .../homescreensettings/homescreensettings.js | 6 +-- src/components/homesections/homesections.js | 8 ++-- .../imagedownloader/imagedownloader.js | 6 +-- .../imagedownloader.template.html | 2 +- src/components/imageeditor/imageeditor.js | 12 ++--- .../imageeditor/imageeditor.template.html | 14 +++--- .../imageoptionseditor.template.html | 2 +- .../imageuploader/imageuploader.template.html | 4 +- src/components/indicators/indicators.js | 22 +++++----- .../itemMediaInfo/itemMediaInfo.template.html | 2 +- .../itemidentifier.template.html | 2 +- .../libraryoptionseditor.js | 18 ++++---- src/components/listview/listview.js | 18 ++++---- src/components/mediainfo/mediainfo.js | 10 ++--- .../medialibrarycreator.js | 2 +- .../medialibrarycreator.template.html | 4 +- .../medialibraryeditor/medialibraryeditor.js | 2 +- .../medialibraryeditor.template.html | 4 +- .../metadataeditor/metadataeditor.js | 10 ++--- .../metadataeditor.template.html | 14 +++--- .../metadataeditor/personeditor.template.html | 2 +- src/components/multiselect/multiselect.js | 4 +- src/components/nowplayingbar/nowplayingbar.js | 24 +++++----- src/components/playback/brightnessosd.js | 4 +- src/components/playback/volumeosd.js | 4 +- src/components/playerstats/playerstats.js | 2 +- .../playlisteditor/playlisteditor.js | 2 +- src/components/prompt/prompt.template.html | 2 +- .../recordingcreator/recordingbutton.js | 2 +- .../recordingcreator.template.html | 2 +- .../recordingeditor.template.html | 2 +- .../recordingcreator/recordingfields.js | 4 +- .../recordingfields.template.html | 4 +- .../seriesrecordingeditor.template.html | 2 +- src/components/refreshdialog/refreshdialog.js | 2 +- .../remotecontrol/remotecontrol.css | 4 +- src/components/remotecontrol/remotecontrol.js | 26 +++++------ .../search/searchfields.template.html | 2 +- src/components/slideshow/slideshow.js | 8 ++-- src/components/sortmenu/sortmenu.js | 2 +- .../subtitleeditor/subtitleeditor.js | 8 ++-- .../subtitleeditor.template.html | 6 +-- .../subtitlesync/subtitlesync.template.html | 2 +- src/components/tunerpicker.js | 4 +- .../tvproviders/xmltv.template.html | 2 +- .../userdatabuttons/userdatabuttons.js | 2 +- src/components/viewsettings/viewsettings.js | 2 +- src/controllers/auth/selectserver.js | 2 +- src/controllers/dashboard/dashboard.js | 12 ++--- .../dashboard/notifications/notifications.js | 6 +-- .../dashboard/plugins/available.js | 2 +- .../dashboard/plugins/installed.js | 4 +- .../dashboard/scheduledtasks/scheduledtask.js | 4 +- .../scheduledtasks/scheduledtasks.js | 8 ++-- src/controllers/devices.js | 4 +- src/controllers/dlnaprofile.js | 22 +++++----- src/controllers/dlnaprofiles.js | 4 +- src/controllers/favorites.js | 2 +- src/controllers/itemdetailpage.js | 2 +- src/controllers/livetvstatus.js | 8 ++-- src/controllers/medialibrarypage.js | 6 +-- src/controllers/movies/moviegenres.js | 4 +- src/controllers/playback/videoosd.js | 10 ++--- src/controllers/shows/tvgenres.js | 4 +- src/controllers/userparentalcontrol.js | 4 +- src/controllers/userprofilespage.js | 8 ++-- src/dashboard.html | 10 ++--- src/dashboardgeneral.html | 4 +- src/dlnaprofile.html | 4 +- src/dlnaprofiles.html | 2 +- src/elements/emby-button/emby-button.css | 6 +-- src/elements/emby-checkbox/emby-checkbox.js | 4 +- src/elements/emby-collapse/emby-collapse.js | 6 +-- .../emby-playstatebutton.js | 2 +- .../emby-ratingbutton/emby-ratingbutton.js | 2 +- .../emby-scrollbuttons/emby-scrollbuttons.css | 2 +- .../emby-scrollbuttons/emby-scrollbuttons.js | 2 +- src/elements/emby-select/emby-select.js | 2 +- src/encodingsettings.html | 4 +- src/itemdetails.html | 28 ++++++------ src/list.html | 18 ++++---- src/livetv.html | 16 +++---- src/livetvsettings.html | 8 ++-- src/livetvstatus.html | 4 +- src/livetvtuner.html | 2 +- src/movies.html | 18 ++++---- src/music.html | 22 +++++----- src/mypreferencesmenu.html | 20 ++++----- src/networking.html | 2 +- src/nowplaying.html | 44 +++++++++---------- src/scheduledtask.html | 2 +- src/scripts/editorsidebar.js | 14 +++--- src/scripts/librarybrowser.js | 10 ++--- src/scripts/librarymenu.js | 36 +++++++-------- src/tv.html | 12 ++--- src/userparentalcontrol.html | 4 +- src/userprofiles.html | 2 +- src/videoosd.html | 28 ++++++------ src/wizardfinish.html | 4 +- src/wizardlibrary.html | 6 +-- src/wizardremoteaccess.html | 4 +- src/wizardsettings.html | 4 +- src/wizardstart.html | 2 +- src/wizarduser.html | 4 +- 120 files changed, 439 insertions(+), 439 deletions(-) diff --git a/src/apikeys.html b/src/apikeys.html index 93c3e57ef6..7ca490724b 100644 --- a/src/apikeys.html +++ b/src/apikeys.html @@ -4,7 +4,7 @@

${HeaderApiKeys}

${HeaderApiKeysHelp}

diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index a9d8b2575b..82e704f074 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -644,7 +644,7 @@ div.itemDetailGalleryLink.defaultCardBackground { height: 23vw; /* Dirty hack to get it to look somewhat square. Less than ideal. */ } -.itemDetailGalleryLink.defaultCardBackground > i { +.itemDetailGalleryLink.defaultCardBackground > .material-icons { font-size: 15vw; margin-top: 50%; transform: translateY(-50%); @@ -687,7 +687,7 @@ div.itemDetailGalleryLink.defaultCardBackground { color: rgba(255, 255, 255, 0.76); } -.emby-button.detailFloatingButton i { +.emby-button.detailFloatingButton .material-icons { font-size: 3.5em; } diff --git a/src/components/accessschedule/accessschedule.template.html b/src/components/accessschedule/accessschedule.template.html index 02f11942ed..906d20869c 100644 --- a/src/components/accessschedule/accessschedule.template.html +++ b/src/components/accessschedule/accessschedule.template.html @@ -1,6 +1,6 @@

${HeaderAccessSchedule} diff --git a/src/components/actionsheet/actionsheet.js b/src/components/actionsheet/actionsheet.js index 30e15ffeb7..0828c4bba2 100644 --- a/src/components/actionsheet/actionsheet.js +++ b/src/components/actionsheet/actionsheet.js @@ -158,7 +158,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 @@ -226,9 +226,9 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu if (itemIcon) { - html += ''; + html += ''; } else if (renderIcon && !center) { - html += ''; + html += ''; } html += '
'; diff --git a/src/components/activitylog.js b/src/components/activitylog.js index 1a8707c808..796f995bc7 100644 --- a/src/components/activitylog.js +++ b/src/components/activitylog.js @@ -13,12 +13,12 @@ define(["events", "globalize", "dom", "date-fns", "dfnshelper", "userSettings", } if (entry.UserId && entry.UserPrimaryImageTag) { - html += '"; + }) + "');background-repeat:no-repeat;background-position:center center;background-size: cover;\">"; } else { - html += ''; + html += ''; } html += '
'; @@ -34,7 +34,7 @@ define(["events", "globalize", "dom", "date-fns", "dfnshelper", "userSettings", html += "
"; if (entry.Overview) { - html += ''; + html += ''; } return html += "
"; diff --git a/src/components/alphapicker/alphapicker.js b/src/components/alphapicker/alphapicker.js index 577047fca4..61ca23b8bc 100644 --- a/src/components/alphapicker/alphapicker.js +++ b/src/components/alphapicker/alphapicker.js @@ -67,7 +67,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b html += '
'; if (options.mode === 'keyboard') { - html += ''; + html += ''; } else { letters = ['#']; html += mapLetters(letters, vertical).join(''); @@ -77,7 +77,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b html += mapLetters(letters, vertical).join(''); if (options.mode === 'keyboard') { - html += ''; + html += ''; html += '
'; letters = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 70abd5e39d..faafc6f70e 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -869,7 +869,7 @@ import 'programStyles'; if (isOuterFooter && options.cardLayout && layoutManager.mobile) { if (options.cardFooterAside !== 'none') { - html += ''; + html += ''; } } @@ -1418,15 +1418,15 @@ import 'programStyles'; const 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 += ''; } } @@ -1560,7 +1560,7 @@ import 'programStyles'; const btnCssClass = 'cardOverlayButton cardOverlayButton-hover itemAction paper-icon-button-light'; if (playbackManager.canPlay(item)) { - html += ''; + html += ''; } html += '
'; @@ -1569,7 +1569,7 @@ import 'programStyles'; if (itemHelper.canMarkPlayed(item)) { require(['emby-playstatebutton']); - html += ''; + html += ''; } if (itemHelper.canRate(item)) { @@ -1577,10 +1577,10 @@ import 'programStyles'; const likes = userData.Likes == null ? '' : userData.Likes; require(['emby-ratingbutton']); - html += ''; + html += ''; } - html += ''; + html += ''; html += '
'; html += '

'; @@ -1596,27 +1596,27 @@ import 'programStyles'; */ export function getDefaultText(item, options) { if (item.CollectionType) { - return ''; + return ''; } switch (item.Type) { case 'MusicAlbum': - return ''; + return ''; case 'MusicArtist': case 'Person': - return ''; + return ''; case 'Movie': - return ''; + return ''; case 'Series': - return ''; + return ''; case 'Book': - return ''; + return ''; case 'Folder': - return ''; + return ''; } if (options && options.defaultCardImageIcon) { - return ''; + return ''; } const defaultName = isUsingLiveTvNaming(item) ? item.Name : itemHelper.getDisplayName(item); @@ -1718,7 +1718,7 @@ import 'programStyles'; indicatorsElem = ensureIndicators(card, indicatorsElem); indicatorsElem.appendChild(playedIndicator); } - playedIndicator.innerHTML = ''; + playedIndicator.innerHTML = ''; } else { playedIndicator = card.querySelector('.playedIndicator'); @@ -1808,7 +1808,7 @@ import 'programStyles'; const icon = cell.querySelector('.timerIndicator'); if (!icon) { const indicatorsElem = ensureIndicators(cell); - indicatorsElem.insertAdjacentHTML('beforeend', ''); + indicatorsElem.insertAdjacentHTML('beforeend', ''); } cell.setAttribute('data-timerid', newTimerId); } diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js index 16326b6c59..d0383692c1 100644 --- a/src/components/cardbuilder/chaptercardbuilder.js +++ b/src/components/cardbuilder/chaptercardbuilder.js @@ -90,7 +90,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse var cardImageContainer = imgUrl ? ('
') : ('
'); if (!imgUrl) { - cardImageContainer += ''; + cardImageContainer += ''; } var nameHtml = ''; diff --git a/src/components/channelmapper/channelmapper.js b/src/components/channelmapper/channelmapper.js index f7b3a101e9..71d71a64ef 100644 --- a/src/components/channelmapper/channelmapper.js +++ b/src/components/channelmapper/channelmapper.js @@ -60,7 +60,7 @@ define(["dom", "dialogHelper", "loading", "connectionManager", "globalize", "act function getTunerChannelHtml(channel, providerName) { var html = ""; html += '
'; - html += ''; + html += ''; html += '
'; html += '

'; html += channel.Name; @@ -73,7 +73,7 @@ define(["dom", "dialogHelper", "loading", "connectionManager", "globalize", "act html += "

"; html += "
"; - html += ''; + html += ''; return html += "
"; } @@ -116,7 +116,7 @@ define(["dom", "dialogHelper", "loading", "connectionManager", "globalize", "act 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 7a14c3666c..e9aeac2001 100644 --- a/src/components/collectioneditor/collectioneditor.js +++ b/src/components/collectioneditor/collectioneditor.js @@ -230,13 +230,13 @@ define(['dom', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectio 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 += '' + globalize.translate('Help') + ''; } html += '
'; diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index cd84dcb28d..1d59418a95 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -76,7 +76,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- html += name; html += "
"; html += "
"; - html += ''; + html += ''; html += "
"; return html; } @@ -116,7 +116,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- html += ''; html += "
"; if (!readOnlyAttribute) { - html += ''; + html += ''; } html += "
"; if (!readOnlyAttribute) { @@ -264,7 +264,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/favoriteitems.js b/src/components/favoriteitems.js index 08c9d9acc5..d877cd274c 100644 --- a/src/components/favoriteitems.js +++ b/src/components/favoriteitems.js @@ -136,7 +136,7 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad html += '

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

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

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

"; diff --git a/src/components/filtermenu/filtermenu.js b/src/components/filtermenu/filtermenu.js index 6b08ddab16..c189856e7b 100644 --- a/src/components/filtermenu/filtermenu.js +++ b/src/components/filtermenu/filtermenu.js @@ -279,7 +279,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Filters}

'; html += '
'; diff --git a/src/components/guide/guide-settings.template.html b/src/components/guide/guide-settings.template.html index 02701db3d2..6888ca80de 100644 --- a/src/components/guide/guide-settings.template.html +++ b/src/components/guide/guide-settings.template.html @@ -1,5 +1,5 @@
- +

${Settings}

diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index 91ed83487a..66991d4c88 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -415,7 +415,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var status; if (item.Type === 'SeriesTimer') { - return ''; + return ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; @@ -429,13 +429,13 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return ''; + return ''; } - return ''; + return ''; } - return ''; + return ''; } function getChannelProgramsHtml(context, date, channel, programs, options, listInfo) { @@ -549,7 +549,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += '
'; - html += '
'; + html += '
'; html += '
' + program.Name; @@ -577,7 +577,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += '
'; if (program.IsHD && options.showHdIcon) { - //html += ''; + //html += ''; if (layoutManager.tv) { html += '
HD
'; } else { @@ -1105,7 +1105,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var icon = cell.querySelector('.timerIcon'); if (!icon) { - cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', ''); + cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', ''); } if (newTimerId) { diff --git a/src/components/guide/tvguide.template.html b/src/components/guide/tvguide.template.html index ef3c4b58ca..bd4c9cc3cc 100644 --- a/src/components/guide/tvguide.template.html +++ b/src/components/guide/tvguide.template.html @@ -10,7 +10,7 @@
@@ -30,9 +30,9 @@
diff --git a/src/components/homescreensettings/homescreensettings.js b/src/components/homescreensettings/homescreensettings.js index ccc6fa75f4..67a4ac165d 100644 --- a/src/components/homescreensettings/homescreensettings.js +++ b/src/components/homescreensettings/homescreensettings.js @@ -149,7 +149,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa currentHtml += '
'; - currentHtml += ''; + currentHtml += ''; currentHtml += '
'; @@ -159,8 +159,8 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa currentHtml += '
'; - currentHtml += ''; - currentHtml += ''; + currentHtml += ''; + currentHtml += ''; currentHtml += '
'; diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index cb4866a1cc..74f8bc6620 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -183,7 +183,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la for (var i = 0, length = items.length; i < length; i++) { var item = items[i]; var icon = imageHelper.getLibraryIcon(item.CollectionType); - html += '' + item.Name + ''; + html += '' + item.Name + ''; } html += '
'; @@ -282,7 +282,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

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

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

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

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

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

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

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

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

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

'; diff --git a/src/components/imagedownloader/imagedownloader.js b/src/components/imagedownloader/imagedownloader.js index 9df083aea2..01dd7e312b 100644 --- a/src/components/imagedownloader/imagedownloader.js +++ b/src/components/imagedownloader/imagedownloader.js @@ -116,8 +116,8 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image if (showControls) { html += '
'; - html += ''; - html += ''; + html += ''; + html += ''; html += '
'; } @@ -262,7 +262,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image if (enableFooterButtons) { html += '
'; - html += ''; + html += ''; html += '
'; } diff --git a/src/components/imagedownloader/imagedownloader.template.html b/src/components/imagedownloader/imagedownloader.template.html index dec796fb05..6ca2a2418c 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.js b/src/components/imageeditor/imageeditor.js index b2c3ecc19f..899a31cab1 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -155,23 +155,23 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', if (image.ImageType === "Backdrop" || image.ImageType === "Screenshot") { if (index > 0) { - html += ''; + html += ''; } else { - html += ''; + html += ''; } if (index < numImages - 1) { - html += ''; + html += ''; } else { - html += ''; + html += ''; } } else { if (imageProviders.length) { - html += ''; + html += ''; } } - html += ''; + html += ''; html += '
'; } diff --git a/src/components/imageeditor/imageeditor.template.html b/src/components/imageeditor/imageeditor.template.html index 92a05ec062..1bf34f1aac 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 910d8fdd6e..cbbc3b85f5 100644 --- a/src/components/imageoptionseditor/imageoptionseditor.template.html +++ b/src/components/imageoptionseditor/imageoptionseditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderImageOptions}

diff --git a/src/components/imageuploader/imageuploader.template.html b/src/components/imageuploader/imageuploader.template.html index 0e2d884d5f..75f5723751 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 90520653c4..e03900364a 100644 --- a/src/components/indicators/indicators.js +++ b/src/components/indicators/indicators.js @@ -90,7 +90,7 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm } if (userData.PlayedPercentage && userData.PlayedPercentage >= 100 || (userData.Played)) { - return '
'; + return '
'; } } @@ -118,7 +118,7 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm var status; if (item.Type === 'SeriesTimer') { - return ''; + return ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; } else if (item.Type === 'Timer') { @@ -129,20 +129,20 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return ''; + return ''; } - return ''; + return ''; } - return ''; + return ''; } function getSyncIndicator(item) { if (item.SyncPercent === 100) { - return '
'; + return '
'; } else if (item.SyncPercent != null) { - return '
'; + return '
'; } return ''; @@ -150,16 +150,16 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm function getTypeIndicator(item) { if (item.Type === 'Video') { - return '
'; + return '
'; } if (item.Type === 'Folder') { - return '
'; + return '
'; } if (item.Type === 'PhotoAlbum') { - return '
'; + return '
'; } if (item.Type === 'Photo') { - return '
'; + return '
'; } return ''; diff --git a/src/components/itemMediaInfo/itemMediaInfo.template.html b/src/components/itemMediaInfo/itemMediaInfo.template.html index d5f583dcab..bc8ce59680 100644 --- a/src/components/itemMediaInfo/itemMediaInfo.template.html +++ b/src/components/itemMediaInfo/itemMediaInfo.template.html @@ -1,6 +1,6 @@

${HeaderMediaInfo}

diff --git a/src/components/itemidentifier/itemidentifier.template.html b/src/components/itemidentifier/itemidentifier.template.html index 9b3e58a864..9ea0e945db 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/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 08197299e0..d1dab9cb74 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -58,16 +58,16 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; html += '
'; - html += ''; + html += ''; html += '
'; html += '

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

"; html += "
"; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += "
"; } @@ -120,7 +120,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += plugin.Name; html += ""; html += "
"; - i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
"; + i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
"; } html += "
"; html += '
' + globalize.translate("LabelMetadataDownloadersHelp") + "
"; @@ -181,9 +181,9 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += ""; html += "
"; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += "
"; } @@ -220,9 +220,9 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += ""; html += "
"; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += "
"; } @@ -273,7 +273,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct function adjustSortableListElement(elem) { var btnSortable = elem.querySelector(".btnSortable"); - var inner = btnSortable.querySelector("i"); + var inner = btnSortable.querySelector(".material-icons"); if (elem.previousSibling) { btnSortable.title = globalize.translate("ButtonUp"); btnSortable.classList.add("btnSortableMoveUp"); diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 99551245df..bb00cf65cb 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -160,7 +160,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var button = options.rightButtons[i]; - html += ''; + html += ''; } return html; @@ -262,9 +262,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 += ''; } if (options.image !== false) { @@ -297,7 +297,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (playOnImageClick) { - html += ''; + html += ''; } var progressHtml = indicators.getProgressBarHtml(item, { @@ -475,15 +475,15 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (!clickEntireItem) { if (options.addToListButton) { - html += ''; + html += ''; } if (options.moreButton !== false) { - html += ''; + html += ''; } if (options.infoButton) { - html += ''; + html += ''; } if (options.rightButtons) { @@ -496,11 +496,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 += ''; } } } diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index e2b7dfb353..db3b896f0e 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 ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; @@ -20,13 +20,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return ''; + return ''; } - return ''; + return ''; } - return ''; + return ''; } function getProgramInfoHtml(item, options) { @@ -390,7 +390,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.CommunityRating) { html += '
'; - html += ''; + html += ''; html += item.CommunityRating.toFixed(1); html += '
'; } diff --git a/src/components/medialibrarycreator/medialibrarycreator.js b/src/components/medialibrarycreator/medialibrarycreator.js index 120e72bcfe..3e607ec0dd 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.js +++ b/src/components/medialibrarycreator/medialibrarycreator.js @@ -116,7 +116,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } html += "
"; - html += ''; + html += ''; html += "
"; return html; } diff --git a/src/components/medialibrarycreator/medialibrarycreator.template.html b/src/components/medialibrarycreator/medialibrarycreator.template.html index fe701b8c8c..f92a63e403 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.template.html +++ b/src/components/medialibrarycreator/medialibrarycreator.template.html @@ -1,5 +1,5 @@
- +

${ButtonAddMediaLibrary}

@@ -26,7 +26,7 @@

${HeadersFolders}

diff --git a/src/components/medialibraryeditor/medialibraryeditor.js b/src/components/medialibraryeditor/medialibraryeditor.js index 7bf2453a6f..7a6d0bf598 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.js +++ b/src/components/medialibraryeditor/medialibraryeditor.js @@ -107,7 +107,7 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed } html += ""; - html += ''; + html += ''; html += ""; return html; } diff --git a/src/components/medialibraryeditor/medialibraryeditor.template.html b/src/components/medialibraryeditor/medialibraryeditor.template.html index faa15afe9f..6c814cf2dd 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.template.html +++ b/src/components/medialibraryeditor/medialibraryeditor.template.html @@ -1,5 +1,5 @@
- +

@@ -20,7 +20,7 @@

${HeadersFolders}

diff --git a/src/components/metadataeditor/metadataeditor.js b/src/components/metadataeditor/metadataeditor.js index 2ee4248aa9..db81423cf0 100644 --- a/src/components/metadataeditor/metadataeditor.js +++ b/src/components/metadataeditor/metadataeditor.js @@ -482,7 +482,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += ''; if (formatString) { - html += ''; + html += ''; } html += ''; @@ -922,7 +922,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi for (var i = 0; i < items.length; i++) { html += '
'; - html += ''; + html += ''; html += '
'; @@ -932,7 +932,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += '
'; - html += ''; + html += ''; html += '
'; } @@ -953,7 +953,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += '
'; - html += ''; + html += ''; html += '
'; html += ''; html += '
'; - html += ''; + html += ''; html += '
'; } diff --git a/src/components/metadataeditor/metadataeditor.template.html b/src/components/metadataeditor/metadataeditor.template.html index 87a929fa20..39894d4f6f 100644 --- a/src/components/metadataeditor/metadataeditor.template.html +++ b/src/components/metadataeditor/metadataeditor.template.html @@ -1,15 +1,15 @@
- +

${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 ec76f58c70..40b29767fa 100644 --- a/src/components/metadataeditor/personeditor.template.html +++ b/src/components/metadataeditor/personeditor.template.html @@ -1,5 +1,5 @@
- +

${Edit}

diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index 89550135b5..375c6c9e5b 100644 --- a/src/components/multiselect/multiselect.js +++ b/src/components/multiselect/multiselect.js @@ -126,11 +126,11 @@ define(["browser", "appStorage", "apphost", "loading", "connectionManager", "glo var html = ""; - html += ''; + html += ''; html += '

'; const moreIcon = "more_horiz"; - html += ''; + html += ''; selectionCommandsPanel.innerHTML = html; diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index b248a260ab..bfae96b027 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 += '
'; html += '
'; @@ -174,7 +174,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } }); - toggleRepeatButtonIcon = toggleRepeatButton.querySelector('i'); + toggleRepeatButtonIcon = toggleRepeatButton.querySelector('.material-icons'); volumeSlider = elem.querySelector('.nowPlayingBarVolumeSlider'); volumeSliderContainer = elem.querySelector('.nowPlayingBarVolumeSliderContainer'); @@ -289,7 +289,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', if (isPaused) icons = icons.reverse(); for (i = 0, length = playPauseButtons.length; i < length; i++) { - playPauseButtons[i].querySelector('i').classList.replace(icons[0], icons[1]); + playPauseButtons[i].querySelector('.material-icons').classList.replace(icons[0], icons[1]); } } } @@ -394,7 +394,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', let icons = ["volume_off", "volume_up"]; if (isMuted) icons = icons.reverse(); - muteButton.querySelector('i').classList.replace(icons[0], icons[1]); + muteButton.querySelector('.material-icons').classList.replace(icons[0], icons[1]); if (supportedCommands.indexOf('SetVolume') === -1) { showVolumeSlider = false; @@ -557,7 +557,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', queue: false, positionTo: contextButton }; - nowPlayingUserData.innerHTML = ''; + nowPlayingUserData.innerHTML = ''; apiClient.getCurrentUser().then(function(user) { contextButton.addEventListener('click', function () { itemContextMenu.show(Object.assign({ diff --git a/src/components/playback/brightnessosd.js b/src/components/playback/brightnessosd.js index e73fc39689..5ed2b8f81f 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 += ''; html += '
'; @@ -32,7 +32,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia elem.classList.add('brightnessOsd'); elem.innerHTML = getOsdElementHtml(); - iconElement = elem.querySelector('i'); + iconElement = elem.querySelector('.material-icons'); progressElement = elem.querySelector('.iconOsdProgressInner'); document.body.appendChild(elem); diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index 1a0c566e55..ab124ab22b 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 += ''; html += '
'; @@ -32,7 +32,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia elem.classList.add('volumeOsd'); elem.innerHTML = getOsdElementHtml(); - iconElement = elem.querySelector('i'); + iconElement = elem.querySelector('.material-icons'); progressElement = elem.querySelector('.iconOsdProgressInner'); document.body.appendChild(elem); diff --git a/src/components/playerstats/playerstats.js b/src/components/playerstats/playerstats.js index 572f653fc6..74c36597b1 100644 --- a/src/components/playerstats/playerstats.js +++ b/src/components/playerstats/playerstats.js @@ -18,7 +18,7 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth if (layoutManager.tv) { button = ''; } else { - button = ''; + button = ''; } var contentClass = layoutManager.tv ? 'playerStats-content playerStats-content-tv' : 'playerStats-content'; diff --git a/src/components/playlisteditor/playlisteditor.js b/src/components/playlisteditor/playlisteditor.js index 69356a38c9..93beb182de 100644 --- a/src/components/playlisteditor/playlisteditor.js +++ b/src/components/playlisteditor/playlisteditor.js @@ -228,7 +228,7 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackMan var title = globalize.translate('HeaderAddToPlaylist'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/prompt/prompt.template.html b/src/components/prompt/prompt.template.html index 23b918a1f2..981fa9f102 100644 --- a/src/components/prompt/prompt.template.html +++ b/src/components/prompt/prompt.template.html @@ -1,6 +1,6 @@

diff --git a/src/components/recordingcreator/recordingbutton.js b/src/components/recordingcreator/recordingbutton.js index e9c174bfd6..c4bfc43010 100644 --- a/src/components/recordingcreator/recordingbutton.js +++ b/src/components/recordingcreator/recordingbutton.js @@ -22,7 +22,7 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom' } function setButtonIcon(button, icon) { - var inner = button.querySelector('i'); + var inner = button.querySelector('.material-icons'); inner.classList.remove('fiber_smart_record'); inner.classList.remove('fiber_manual_record'); inner.classList.add(icon); diff --git a/src/components/recordingcreator/recordingcreator.template.html b/src/components/recordingcreator/recordingcreator.template.html index b99ead300a..8d7d75c8f6 100644 --- a/src/components/recordingcreator/recordingcreator.template.html +++ b/src/components/recordingcreator/recordingcreator.template.html @@ -1,5 +1,5 @@
- +

diff --git a/src/components/recordingcreator/recordingeditor.template.html b/src/components/recordingcreator/recordingeditor.template.html index 48256da0a2..f7a9f98ee6 100644 --- a/src/components/recordingcreator/recordingeditor.template.html +++ b/src/components/recordingcreator/recordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderRecordingOptions}

diff --git a/src/components/recordingcreator/recordingfields.js b/src/components/recordingcreator/recordingfields.js index 106fec36bf..b4cbdfab0a 100644 --- a/src/components/recordingcreator/recordingfields.js +++ b/src/components/recordingcreator/recordingfields.js @@ -151,7 +151,7 @@ define(['globalize', 'connectionManager', 'serverNotifications', 'require', 'loa var apiClient = connectionManager.getApiClient(options.serverId); var button = dom.parentWithTag(e.target, 'BUTTON'); - var isChecked = !button.querySelector('i').classList.contains('recordingIcon-active'); + var isChecked = !button.querySelector('.material-icons').classList.contains('recordingIcon-active'); var hasEnabledTimer = this.TimerId && this.Status !== 'Cancelled'; @@ -191,7 +191,7 @@ define(['globalize', 'connectionManager', 'serverNotifications', 'require', 'loa var apiClient = connectionManager.getApiClient(options.serverId); var button = dom.parentWithTag(e.target, 'BUTTON'); - var isChecked = !button.querySelector('i').classList.contains('recordingIcon-active'); + var isChecked = !button.querySelector('.material-icons').classList.contains('recordingIcon-active'); if (isChecked) { options.parent.querySelector('.recordSeriesContainer').classList.remove('hide'); diff --git a/src/components/recordingcreator/recordingfields.template.html b/src/components/recordingcreator/recordingfields.template.html index ce35960716..25a0c3c30d 100644 --- a/src/components/recordingcreator/recordingfields.template.html +++ b/src/components/recordingcreator/recordingfields.template.html @@ -2,7 +2,7 @@
@@ -14,7 +14,7 @@
diff --git a/src/components/recordingcreator/seriesrecordingeditor.template.html b/src/components/recordingcreator/seriesrecordingeditor.template.html index fa9f16561b..582c1a633c 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.template.html +++ b/src/components/recordingcreator/seriesrecordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderSeriesOptions}

diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index 1e54d98372..3edb725c4a 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -110,7 +110,7 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionM var title = globalize.translate('RefreshMetadata'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css index 9cdfcde151..073c925339 100644 --- a/src/components/remotecontrol/remotecontrol.css +++ b/src/components/remotecontrol/remotecontrol.css @@ -152,7 +152,7 @@ color: inherit !important; } -.contextMenuList i.listItemIcon { +.contextMenuList .material-icons.listItemIcon { font-size: x-large; } @@ -643,7 +643,7 @@ display: none !important; } - .navigationSection .collapseContent i { + .navigationSection .collapseContent .material-icons { font-size: 4em; } } diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 6b7a7d7738..3dce80ecde 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -124,8 +124,8 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL artistName = item.ArtistItems[0].Name; context.querySelector(".nowPlayingAlbum").innerHTML = '${albumName}`; context.querySelector(".nowPlayingArtist").innerHTML = '${artistName}`; - context.querySelector(".contextMenuAlbum").innerHTML = ' ` + globalize.translate("ViewAlbum") + ''; - context.querySelector(".contextMenuArtist").innerHTML = ' ` + globalize.translate("ViewArtist") + ''; + context.querySelector(".contextMenuAlbum").innerHTML = ' ` + globalize.translate("ViewAlbum") + ''; + context.querySelector(".contextMenuArtist").innerHTML = ' ` + globalize.translate("ViewArtist") + ''; } else { artistName = item.Artists; context.querySelector(".nowPlayingAlbum").innerHTML = albumName; @@ -171,8 +171,8 @@ 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(".nowPlayingPageUserDataButtonsTitle").innerHTML = ''; - context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ''; + context.querySelector(".nowPlayingPageUserDataButtonsTitle").innerHTML = ''; + context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ''; }); } else { backdrop.clear(); @@ -196,7 +196,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL context.querySelector(".nowPlayingPageImage").classList.remove("nowPlayingPageImageAudio"); } } else { - imgContainer.innerHTML = '
'; + imgContainer.innerHTML = '
'; } } @@ -319,13 +319,13 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var toggleRepeatButton = context.querySelector(".repeatToggleButton"); if ("RepeatAll" == repeatMode) { - toggleRepeatButton.innerHTML = ""; + toggleRepeatButton.innerHTML = ""; toggleRepeatButton.classList.add("repeatButton-active"); } else if ("RepeatOne" == repeatMode) { - toggleRepeatButton.innerHTML = ""; + toggleRepeatButton.innerHTML = ""; toggleRepeatButton.classList.add("repeatButton-active"); } else { - toggleRepeatButton.innerHTML = ""; + toggleRepeatButton.innerHTML = ""; toggleRepeatButton.classList.remove("repeatButton-active"); } } @@ -351,10 +351,10 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL if (isMuted) { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute")); - view.querySelector(".buttonMute i").classList.replace("volume_up", "volume_off"); + view.querySelector(".buttonMute .material-icons").classList.replace("volume_up", "volume_off"); } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute")); - view.querySelector(".buttonMute i").classList.replace("volume_off", "volume_up"); + view.querySelector(".buttonMute .material-icons").classList.replace("volume_off", "volume_up"); } if (showMuteButton) { @@ -384,7 +384,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var btnPlayPause = context.querySelector(".btnPlayPause"); let icons = ["play_circle_filled", "pause_circle_filled"]; if (isPaused) icons = icons.reverse(); - btnPlayPause.querySelector("i").classList.replace(icons[0], icons[1]); + btnPlayPause.querySelector(".material-icons").classList.replace(icons[0], icons[1]); buttonVisible(btnPlayPause, isActive); } @@ -674,9 +674,9 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL playbackManager.setVolume(this.value, currentPlayer); } - var contextmenuHtml = ''; + var contextmenuHtml = ''; var volumecontrolHtml = '
'; - volumecontrolHtml += ''; + volumecontrolHtml += ''; volumecontrolHtml += '
'; volumecontrolHtml += '
'; if (!layoutManager.mobile) { diff --git a/src/components/search/searchfields.template.html b/src/components/search/searchfields.template.html index 40b916882d..7da5e240c5 100644 --- a/src/components/search/searchfields.template.html +++ b/src/components/search/searchfields.template.html @@ -1,5 +1,5 @@
- +
diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 48ccee21c8..8a6e8069c1 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -92,7 +92,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f function getIcon(icon, cssClass, canFocus, autoFocus) { var tabIndex = canFocus ? '' : ' tabindex="-1"'; autoFocus = autoFocus ? ' autofocus' : ''; - return ''; + return ''; } /** @@ -224,7 +224,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f * Handles OSD changes when the autoplay is started. */ function onAutoplayStart() { - var btnSlideshowPause = dialog.querySelector('.btnSlideshowPause i'); + var btnSlideshowPause = dialog.querySelector('.btnSlideshowPause .material-icons'); if (btnSlideshowPause) { btnSlideshowPause.classList.replace("play_arrow", "pause"); } @@ -234,7 +234,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f * Handles OSD changes when the autoplay is stopped. */ function onAutoplayStop() { - var btnSlideshowPause = dialog.querySelector('.btnSlideshowPause i'); + var btnSlideshowPause = dialog.querySelector('.btnSlideshowPause .material-icons'); if (btnSlideshowPause) { btnSlideshowPause.classList.replace("pause", "play_arrow"); } @@ -418,7 +418,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f * Toggles the autoplay feature of the Swiper instance. */ function playPause() { - var paused = !dialog.querySelector('.btnSlideshowPause i').classList.contains("pause"); + var paused = !dialog.querySelector('.btnSlideshowPause .material-icons').classList.contains("pause"); if (paused) { play(); } else { diff --git a/src/components/sortmenu/sortmenu.js b/src/components/sortmenu/sortmenu.js index a0b40acaf6..9950afb89a 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 += '
'; diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index ea1bee4f3e..c8296998e8 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -132,7 +132,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', itemHtml += '<' + tagName + ' class="' + className + '" data-index="' + s.Index + '">'; - itemHtml += ''; + itemHtml += ''; itemHtml += '
'; @@ -149,7 +149,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', if (!layoutManager.tv) { if (s.Path) { - itemHtml += ''; + itemHtml += ''; } } @@ -248,7 +248,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', html += '<' + tagName + ' class="' + className + '" data-subid="' + result.Id + '">'; - html += ''; + html += ''; var bodyClass = result.Comment || result.IsHashMatch ? 'three-line' : 'two-line'; @@ -281,7 +281,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 57d83d618c..01066ecc66 100644 --- a/src/components/subtitleeditor/subtitleeditor.template.html +++ b/src/components/subtitleeditor/subtitleeditor.template.html @@ -1,8 +1,8 @@
- +

${Subtitles}

- ${Help} + ${Help}
@@ -18,7 +18,7 @@
- +
diff --git a/src/components/subtitlesync/subtitlesync.template.html b/src/components/subtitlesync/subtitlesync.template.html index eaf4a2993b..4ca039aa03 100644 --- a/src/components/subtitlesync/subtitlesync.template.html +++ b/src/components/subtitlesync/subtitlesync.template.html @@ -1,5 +1,5 @@
- +
0s
diff --git a/src/components/tunerpicker.js b/src/components/tunerpicker.js index bd4484abe0..310f75808c 100644 --- a/src/components/tunerpicker.js +++ b/src/components/tunerpicker.js @@ -41,7 +41,7 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" html += '
'; html += '
'; html += '
'; - html += '
'; + html += '
'; html += "
"; html += "
"; html += '
'; @@ -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/tvproviders/xmltv.template.html b/src/components/tvproviders/xmltv.template.html index f48bfb3857..e8dc434165 100644 --- a/src/components/tvproviders/xmltv.template.html +++ b/src/components/tvproviders/xmltv.template.html @@ -12,7 +12,7 @@
- +
${XmlTvPathHelp}
diff --git a/src/components/userdatabuttons/userdatabuttons.js b/src/components/userdatabuttons/userdatabuttons.js index 1c1d794080..c7890a2fcf 100644 --- a/src/components/userdatabuttons/userdatabuttons.js +++ b/src/components/userdatabuttons/userdatabuttons.js @@ -30,7 +30,7 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto iconCssClass += 'material-icons'; - return ''; + return ''; } function onContainerClick(e) { diff --git a/src/components/viewsettings/viewsettings.js b/src/components/viewsettings/viewsettings.js index d40c4d9618..441c35157b 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 += '
'; diff --git a/src/controllers/auth/selectserver.js b/src/controllers/auth/selectserver.js index 91eebf8cee..e808404926 100644 --- a/src/controllers/auth/selectserver.js +++ b/src/controllers/auth/selectserver.js @@ -18,7 +18,7 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu var cardImageContainer; if (item.showIcon) { - cardImageContainer = ''; + cardImageContainer = ''; } else { cardImageContainer = '
'; } diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 7246b4871f..ed16d90a38 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -305,14 +305,14 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa var btnCssClass = session.ServerId && session.NowPlayingItem && session.SupportsRemoteControl ? "" : " hide"; const playIcon = session.PlayState.IsPaused ? 'pause' : 'play_arrow'; - 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 += '
'; @@ -368,7 +368,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa html += progress + "%"; html += ""; html += "" + progress + "%"; - html += ''; + html += ''; } else if (task.State === "Cancelling") { html += '' + globalize.translate("LabelStopping") + ""; } @@ -573,7 +573,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa let icons = ["play_arrow", "pause"]; if (session.PlayState && session.PlayState.IsPaused) icons = icons.reverse(); - btnSessionPlayPause.querySelector("i").classList.replace(icons[0], icons[1]); + btnSessionPlayPause.querySelector(".material-icons").classList.replace(icons[0], icons[1]); row.querySelector(".sessionNowPlayingStreamInfo").innerHTML = DashboardPage.getSessionNowPlayingStreamInfo(session); row.querySelector(".sessionNowPlayingTime").innerHTML = DashboardPage.getSessionNowPlayingTime(session); diff --git a/src/controllers/dashboard/notifications/notifications.js b/src/controllers/dashboard/notifications/notifications.js index 3c0b5e9b36..85cf956305 100644 --- a/src/controllers/dashboard/notifications/notifications.js +++ b/src/controllers/dashboard/notifications/notifications.js @@ -31,14 +31,14 @@ define(["loading", "libraryMenu", "globalize", "listViewStyle", "emby-button"], } itemHtml += ''; if (notification.Enabled) { - itemHtml += ''; + itemHtml += ''; } else { - itemHtml += ''; + itemHtml += ''; } itemHtml += '
'; itemHtml += '
' + notification.Name + "
"; itemHtml += "
"; - itemHtml += ''; + itemHtml += ''; itemHtml += "
"; return itemHtml; }).join(""); diff --git a/src/controllers/dashboard/plugins/available.js b/src/controllers/dashboard/plugins/available.js index 54440aa85c..436a110316 100644 --- a/src/controllers/dashboard/plugins/available.js +++ b/src/controllers/dashboard/plugins/available.js @@ -103,7 +103,7 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby html += '
"; html += "
"; } else { - html += ''; + html += ''; } html += ""; diff --git a/src/controllers/dashboard/plugins/installed.js b/src/controllers/dashboard/plugins/installed.js index a326e24777..d046076325 100644 --- a/src/controllers/dashboard/plugins/installed.js +++ b/src/controllers/dashboard/plugins/installed.js @@ -47,14 +47,14 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" html += '
"; html += "
"; } else { - html += ''; + html += ''; } html += configPageUrl ? "" : "
"; html += "
"; html += '
'; html += '
'; - html += ''; + html += ''; html += "
"; html += "
"; html += configPage ? configPage.DisplayName || plugin.Name : plugin.Name; diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtask.js b/src/controllers/dashboard/scheduledtasks/scheduledtask.js index aa56b0bc1a..9f1394b112 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtask.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtask.js @@ -49,7 +49,7 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby var trigger = task.Triggers[i]; html += '
'; - html += ''; + html += ''; if (trigger.MaxRuntimeMs) { html += '
'; } else { @@ -68,7 +68,7 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby } html += "
"; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index d70a49dba3..d83f0ad241 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -40,7 +40,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "date } html += '
'; html += ""; - html += ''; + html += ''; html += ""; html += '"; if (task.State === "Running") { - html += ''; + html += ''; } else if (task.State === "Idle") { - html += ''; + html += ''; } html += "
"; } @@ -94,7 +94,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "date } function setTaskButtonIcon(button, icon) { - var inner = button.querySelector("i"); + var inner = button.querySelector(".material-icons"); inner.classList.remove("stop", "play_arrow"); inner.classList.add(icon); } diff --git a/src/controllers/devices.js b/src/controllers/devices.js index 8dd665f7fa..103b116df4 100644 --- a/src/controllers/devices.js +++ b/src/controllers/devices.js @@ -80,7 +80,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "da deviceHtml += '
"; deviceHtml += "
"; } else { - deviceHtml += ''; + deviceHtml += ''; } deviceHtml += ""; @@ -89,7 +89,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "da if (canEdit || canDelete(device.Id)) { deviceHtml += '
'; - deviceHtml += ''; + deviceHtml += ''; deviceHtml += "
"; } diff --git a/src/controllers/dlnaprofile.js b/src/controllers/dlnaprofile.js index 06c3be74cc..516a97da59 100644 --- a/src/controllers/dlnaprofile.js +++ b/src/controllers/dlnaprofile.js @@ -76,12 +76,12 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in var index = 0; var html = '
' + headers.map(function (h) { var li = '
'; - li += ''; + li += ''; li += '
'; li += '

' + h.Name + ": " + (h.Value || "") + "

"; li += '
' + (h.Match || "") + "
"; li += "
"; - li += ''; + li += ''; li += "
"; index++; return li; @@ -132,11 +132,11 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in function renderXmlDocumentAttributes(page, attribute) { var html = '
' + attribute.map(function (h) { var li = '
'; - li += ''; + li += ''; li += '
'; li += '

' + h.Name + " = " + (h.Value || "") + "

"; li += "
"; - li += ''; + li += ''; return li += "
"; }).join("") + "
"; var elem = $(".xmlDocumentAttributeList", page).html(html).trigger("create"); @@ -174,11 +174,11 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in var index = 0; var html = '
' + profiles.map(function (h) { var li = '
'; - li += ''; + li += ''; li += '
'; li += '

' + (h.Format || "") + "

"; li += "
"; - li += ''; + li += ''; li += "
"; index++; return li; @@ -270,7 +270,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -331,7 +331,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -415,7 +415,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -487,7 +487,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -567,7 +567,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/dlnaprofiles.js b/src/controllers/dlnaprofiles.js index 544ab0d450..c64f39d8b4 100644 --- a/src/controllers/dlnaprofiles.js +++ b/src/controllers/dlnaprofiles.js @@ -32,7 +32,7 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby- for (var i = 0, length = profiles.length; i < length; i++) { var profile = profiles[i]; html += '"; diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index c06b0bd8fb..dcfdc72bae 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -248,7 +248,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap html += '

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

"; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 6347aa3802..003d826beb 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1749,7 +1749,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti html += '

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

"; - html += ''; + html += ''; html += "
"; html += '
'; var shape = "MusicAlbum" == type.type ? getSquareShape(false) : getPortraitShape(false); diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index 7a8b499217..5ffc380bc6 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -26,11 +26,11 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo html += '
'; html += '
'; html += '
'; - html += '
'; + html += '
'; html += "
"; html += "
"; html += '
'; - html += ''; + html += ''; html += '
' + (device.FriendlyName || getTunerName(device.Type)) + "
"; html += '
'; html += device.Url || " "; @@ -101,7 +101,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo for (var i = 0, length = providers.length; i < length; i++) { var provider = providers[i]; html += '"; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index 956e6e0d9e..497fac3de9 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -268,7 +268,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl hasCardImageContainer = true; } else if (!virtualFolder.showNameWithIcon) { html += '
'; - html += ''; + html += ''; hasCardImageContainer = true; } @@ -281,7 +281,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (!imgUrl && virtualFolder.showNameWithIcon) { html += '

'; - html += ''; + html += ''; if (virtualFolder.showNameWithIcon) { html += '
'; @@ -298,7 +298,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 bb395f337c..734cc34c44 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -121,7 +121,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader }); } if (result.Items.length >= query.Limit) { - tabContent.querySelector(".btnMoreFromGenre" + id + " i").classList.remove("hide"); + tabContent.querySelector(".btnMoreFromGenre" + id + " .material-icons").classList.remove("hide"); } }); } @@ -145,7 +145,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

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

"; - html += ''; + html += ''; html += ""; html += "
"; if (enableScrollX()) { diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 150f357b77..ac6f796567 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -545,10 +545,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").classList.replace("fullscreen", "fullscreen_exit"); + view.querySelector(".btnFullscreen .material-icons").classList.replace("fullscreen", "fullscreen_exit"); } else { view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("Fullscreen") + " (f)"); - view.querySelector(".btnFullscreen i").classList.replace("fullscreen_exit", "fullscreen"); + view.querySelector(".btnFullscreen .material-icons").classList.replace("fullscreen_exit", "fullscreen"); } } @@ -746,7 +746,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function updatePlayPauseState(isPaused) { - var button = view.querySelector(".btnPause i"); + var button = view.querySelector(".btnPause .material-icons"); if (isPaused) { button.classList.replace("pause", "play_arrow"); button.setAttribute("title", globalize.translate("ButtonPlay") + " (k)"); @@ -885,10 +885,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med if (isMuted) { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute") + " (m)"); - view.querySelector(".buttonMute i").classList.replace("volume_up", "volume_off"); + view.querySelector(".buttonMute .material-icons").classList.replace("volume_up", "volume_off"); } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute") + " (m)"); - view.querySelector(".buttonMute i").classList.replace("volume_off", "volume_up"); + view.querySelector(".buttonMute .material-icons").classList.replace("volume_off", "volume_up"); } if (showMuteButton) { diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index 80e2f646b6..d59e7d80c1 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -121,7 +121,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader }); } if (result.Items.length >= query.Limit) { - tabContent.querySelector(".btnMoreFromGenre" + id + " i").classList.remove("hide"); + tabContent.querySelector(".btnMoreFromGenre" + id + " .material-icons").classList.remove("hide"); } }); } @@ -144,7 +144,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

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

"; - html += ''; + html += ''; html += ""; html += "
"; if (enableScrollX()) { diff --git a/src/controllers/userparentalcontrol.js b/src/controllers/userparentalcontrol.js index e3f1705ef5..a26acae51d 100644 --- a/src/controllers/userparentalcontrol.js +++ b/src/controllers/userparentalcontrol.js @@ -108,7 +108,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper- li += h; li += ""; li += "
"; - li += ''; + li += ''; return li += "
"; }).join(""); @@ -143,7 +143,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper- itemHtml += ""; itemHtml += '
' + getDisplayTime(a.StartHour) + " - " + getDisplayTime(a.EndHour) + "
"; itemHtml += "
"; - itemHtml += ''; + itemHtml += ''; itemHtml += "
"; index++; return itemHtml; diff --git a/src/controllers/userprofilespage.js b/src/controllers/userprofilespage.js index b8dbc4fa60..bdd5c6a461 100644 --- a/src/controllers/userprofilespage.js +++ b/src/controllers/userprofilespage.js @@ -104,7 +104,7 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but html += '
"; } else { html += '
'; - html += ''; + html += ''; } html += "
"; @@ -115,7 +115,7 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but html += '
'; html += user.Name; html += "
"; - html += ''; + html += ''; html += "
"; html += '
'; var lastSeen = getLastSeenText(user.LastActivityDate); @@ -182,14 +182,14 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but html += '
"; html += "
"; } else { - html += ''; + html += ''; } html += ""; html += "
"; html += '
'; html += '
'; - html += ''; + html += ''; html += "
"; html += '
'; html += user.UserName; diff --git a/src/dashboard.html b/src/dashboard.html index adb38a9ad3..8be9f54eba 100644 --- a/src/dashboard.html +++ b/src/dashboard.html @@ -5,7 +5,7 @@

${TabServer}

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

${HeaderActiveDevices}

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

${HeaderActivity}

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

${Alerts}

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

${HeaderPaths}

- +
diff --git a/src/dashboardgeneral.html b/src/dashboardgeneral.html index f850783f13..59c8e623d7 100644 --- a/src/dashboardgeneral.html +++ b/src/dashboardgeneral.html @@ -39,7 +39,7 @@
- +
${LabelCachePathHelp}
@@ -49,7 +49,7 @@
- +
${LabelMetadataPathHelp}
diff --git a/src/dlnaprofile.html b/src/dlnaprofile.html index 4a5629fd8c..45182fa59e 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 764ac8e04d..9f2a5e129e 100644 --- a/src/dlnaprofiles.html +++ b/src/dlnaprofiles.html @@ -9,7 +9,7 @@

${HeaderCustomDlnaProfiles}

- + ${Help}
diff --git a/src/elements/emby-button/emby-button.css b/src/elements/emby-button/emby-button.css index a19ce571e2..52520be6d9 100644 --- a/src/elements/emby-button/emby-button.css +++ b/src/elements/emby-button/emby-button.css @@ -58,12 +58,12 @@ text-decoration: underline; } -.emby-button > i { +.emby-button > .material-icons { /* For non-fab buttons that have icons */ font-size: 1.36em; } -.button-link > i { +.button-link > .material-icons { font-size: 1em; } @@ -136,7 +136,7 @@ cursor: default; } -.paper-icon-button-light > i { +.paper-icon-button-light > .material-icons { font-size: 1.66956521739130434em; /* Make sure its on top of the ripple */ diff --git a/src/elements/emby-checkbox/emby-checkbox.js b/src/elements/emby-checkbox/emby-checkbox.js index 8067d33a74..4d02d56163 100644 --- a/src/elements/emby-checkbox/emby-checkbox.js +++ b/src/elements/emby-checkbox/emby-checkbox.js @@ -57,8 +57,8 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b var checkedIcon = this.getAttribute('data-checkedicon') || 'check'; var uncheckedIcon = this.getAttribute('data-uncheckedicon') || ''; - var checkHtml = ''; - var uncheckedHtml = ''; + var checkHtml = ''; + var uncheckedHtml = ''; labelElement.insertAdjacentHTML('beforeend', '' + checkHtml + uncheckedHtml + ''); labelTextElement.classList.add('checkboxLabel'); diff --git a/src/elements/emby-collapse/emby-collapse.js b/src/elements/emby-collapse/emby-collapse.js index fdd77adf0b..707e81a786 100644 --- a/src/elements/emby-collapse/emby-collapse.js +++ b/src/elements/emby-collapse/emby-collapse.js @@ -24,7 +24,7 @@ define(['browser', 'css!./emby-collapse', 'registerElement', 'emby-button'], fun elem.style.height = 'auto'; }, 300); - var icon = button.querySelector('i'); + var icon = button.querySelector('.material-icons'); //icon.innerHTML = 'expand_less'; icon.classList.add('emby-collapse-expandIconExpanded'); } @@ -46,7 +46,7 @@ define(['browser', 'css!./emby-collapse', 'registerElement', 'emby-button'], fun } }, 300); - var icon = button.querySelector('i'); + var icon = button.querySelector('.material-icons'); //icon.innerHTML = 'expand_more'; icon.classList.remove('emby-collapse-expandIconExpanded'); } @@ -80,7 +80,7 @@ define(['browser', 'css!./emby-collapse', 'registerElement', 'emby-button'], fun var title = this.getAttribute('title'); - var html = ''; + var html = ''; this.insertAdjacentHTML('afterbegin', html); diff --git a/src/elements/emby-playstatebutton/emby-playstatebutton.js b/src/elements/emby-playstatebutton/emby-playstatebutton.js index 4c3e5b6b62..57f7eb76eb 100644 --- a/src/elements/emby-playstatebutton/emby-playstatebutton.js +++ b/src/elements/emby-playstatebutton/emby-playstatebutton.js @@ -41,7 +41,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby function setState(button, played, updateAttribute) { var icon = button.iconElement; if (!icon) { - button.iconElement = button.querySelector('i'); + button.iconElement = button.querySelector('.material-icons'); icon = button.iconElement; } diff --git a/src/elements/emby-ratingbutton/emby-ratingbutton.js b/src/elements/emby-ratingbutton/emby-ratingbutton.js index 86c31ac871..142920ca15 100644 --- a/src/elements/emby-ratingbutton/emby-ratingbutton.js +++ b/src/elements/emby-ratingbutton/emby-ratingbutton.js @@ -57,7 +57,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby function setState(button, likes, isFavorite, updateAttribute) { - var icon = button.querySelector('i'); + var icon = button.querySelector('.material-icons'); if (isFavorite) { diff --git a/src/elements/emby-scrollbuttons/emby-scrollbuttons.css b/src/elements/emby-scrollbuttons/emby-scrollbuttons.css index 32e60292ad..b2e0d3bc23 100644 --- a/src/elements/emby-scrollbuttons/emby-scrollbuttons.css +++ b/src/elements/emby-scrollbuttons/emby-scrollbuttons.css @@ -12,7 +12,7 @@ display: flex; } -.emby-scrollbuttons-button > i { +.emby-scrollbuttons-button > .material-icons { min-width: 24px; min-height: 24px; display: block; diff --git a/src/elements/emby-scrollbuttons/emby-scrollbuttons.js b/src/elements/emby-scrollbuttons/emby-scrollbuttons.js index 229771b8ed..a4c37384c8 100644 --- a/src/elements/emby-scrollbuttons/emby-scrollbuttons.js +++ b/src/elements/emby-scrollbuttons/emby-scrollbuttons.js @@ -10,7 +10,7 @@ define(['layoutManager', 'dom', 'css!./emby-scrollbuttons', 'registerElement', ' var icon = direction === 'left' ? 'chevron_left' : 'chevron_right'; html += ''; return html; diff --git a/src/elements/emby-select/emby-select.js b/src/elements/emby-select/emby-select.js index c772c0f960..ea90c4a77d 100644 --- a/src/elements/emby-select/emby-select.js +++ b/src/elements/emby-select/emby-select.js @@ -144,7 +144,7 @@ define(['layoutManager', 'browser', 'actionsheet', 'css!./emby-select', 'registe this.parentNode.insertBefore(label, this); if (this.classList.contains('emby-select-withcolor')) { - this.parentNode.insertAdjacentHTML('beforeend', '
0
'); + this.parentNode.insertAdjacentHTML('beforeend', '
0
'); } }; diff --git a/src/encodingsettings.html b/src/encodingsettings.html index ff064e4373..27cfe404c1 100644 --- a/src/encodingsettings.html +++ b/src/encodingsettings.html @@ -96,7 +96,7 @@
- +
${LabelffmpegPathHelp}
@@ -107,7 +107,7 @@
- +
${LabelTranscodingTempPathHelp}
diff --git a/src/itemdetails.html b/src/itemdetails.html index 5bd8b40de6..37f1432e23 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -1,7 +1,7 @@
@@ -17,91 +17,91 @@
diff --git a/src/list.html b/src/list.html index 5e47eeb7fc..efac2d891e 100644 --- a/src/list.html +++ b/src/list.html @@ -7,45 +7,45 @@ ${HeaderPlayAll}
diff --git a/src/livetv.html b/src/livetv.html index 9986529b7f..fdf19bd915 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 @@
@@ -63,7 +63,7 @@
- +
@@ -72,7 +72,7 @@
diff --git a/src/livetvsettings.html b/src/livetvsettings.html index 7c14b68238..bffd6ae4b6 100644 --- a/src/livetvsettings.html +++ b/src/livetvsettings.html @@ -34,7 +34,7 @@
- +
${LabelRecordingPathHelp}
@@ -43,7 +43,7 @@
- +
@@ -51,7 +51,7 @@
- +
@@ -84,7 +84,7 @@
- +
diff --git a/src/livetvstatus.html b/src/livetvstatus.html index c1ae0d4703..cc5f8ae0ba 100644 --- a/src/livetvstatus.html +++ b/src/livetvstatus.html @@ -8,7 +8,7 @@ ${HeaderTunerDevices} ${Help}
@@ -21,7 +21,7 @@

${HeaderGuideProviders}

diff --git a/src/livetvtuner.html b/src/livetvtuner.html index 37d0f8c30f..816d30f340 100644 --- a/src/livetvtuner.html +++ b/src/livetvtuner.html @@ -24,7 +24,7 @@
- +
diff --git a/src/movies.html b/src/movies.html index 7f86e2e0e9..a2221c510d 100644 --- a/src/movies.html +++ b/src/movies.html @@ -3,9 +3,9 @@
- - - + + +
@@ -46,8 +46,8 @@
- - + +
@@ -62,7 +62,7 @@
- +
@@ -74,9 +74,9 @@
- - - + + +
diff --git a/src/music.html b/src/music.html index a42a5bb7f0..1e22ae9f3a 100644 --- a/src/music.html +++ b/src/music.html @@ -37,11 +37,11 @@
- - - - - + + + + +
@@ -56,8 +56,8 @@
- - + +
@@ -72,8 +72,8 @@
- - + +
@@ -92,8 +92,8 @@
- - + +
diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index 8e3cd40f6b..2c3ca0edd9 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -5,7 +5,7 @@

- +
${ButtonProfile}
@@ -14,7 +14,7 @@
- +
${HeaderDisplay}
@@ -23,7 +23,7 @@
- +
${HeaderHome}
@@ -32,7 +32,7 @@
- +
${TitlePlayback}
@@ -41,7 +41,7 @@
- +
${Subtitles}
@@ -50,7 +50,7 @@
- +
${ClientSettings}
@@ -61,7 +61,7 @@

${HeaderAdmin}

- +
${TabDashboard}
@@ -69,7 +69,7 @@
- +
${Metadata}
@@ -80,7 +80,7 @@

${HeaderUser}

diff --git a/src/nowplaying.html b/src/nowplaying.html index 0982531d9e..f1147b4848 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -31,27 +31,27 @@
@@ -59,21 +59,21 @@
@@ -86,43 +86,43 @@



@@ -164,10 +164,10 @@
diff --git a/src/scheduledtask.html b/src/scheduledtask.html index 12b4e3b960..6cfc8ace4b 100644 --- a/src/scheduledtask.html +++ b/src/scheduledtask.html @@ -13,7 +13,7 @@

${HeaderTaskTriggers}

diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index 22f1aa6125..062bf6f349 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -43,20 +43,20 @@ define(["datetime", "jQuery", "material-icons"], function (datetime, $) { } var htmlName = "
"; if (item.IsFolder) { - htmlName += ''; + htmlName += ''; } else if (item.MediaType === "Video") { - htmlName += ''; + htmlName += ''; } else if (item.MediaType === "Audio") { - htmlName += ''; + htmlName += ''; } else if (item.Type === "TvChannel") { - htmlName += ''; + htmlName += ''; } else if (item.MediaType === "Photo") { - htmlName += ''; + htmlName += ''; } else if (item.MediaType === "Book") { - htmlName += ''; + htmlName += ''; } if (item.LockData) { - htmlName += ''; + htmlName += ''; } htmlName += name; htmlName += "
"; diff --git a/src/scripts/librarybrowser.js b/src/scripts/librarybrowser.js index bc8908fe6c..1ad9b2c82a 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 c75dbd01f9..16104eb34e 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -5,17 +5,17 @@ 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 += "
"; html += "
"; html += '
'; @@ -102,7 +102,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " headerUserButton.innerHTML = '
"; } else { headerUserButton.classList.remove("headerUserButtonRound"); - headerUserButton.innerHTML = ''; + headerUserButton.innerHTML = ''; } } @@ -217,7 +217,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " function refreshLibraryInfoInDrawer(user, drawer) { var html = ""; html += '
'; - html += '
' + globalize.translate("ButtonHome") + ""; + html += '' + globalize.translate("ButtonHome") + ""; // libraries are added here html += '
'; @@ -228,8 +228,8 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += '

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

"; - html += '' + globalize.translate("TabDashboard") + ""; - html += '' + globalize.translate("Metadata") + ""; + html += '' + globalize.translate("TabDashboard") + ""; + html += '' + globalize.translate("Metadata") + ""; html += "
"; } @@ -240,11 +240,11 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += ""; if (appHost.supports("multiserver")) { - html += '' + globalize.translate("ButtonSelectServer") + ""; + html += '' + globalize.translate("ButtonSelectServer") + ""; } - html += '' + globalize.translate("ButtonSettings") + ""; - html += '' + globalize.translate("ButtonSignOut") + ""; + html += '' + globalize.translate("ButtonSettings") + ""; + html += '' + globalize.translate("ButtonSignOut") + ""; html += "
"; } @@ -301,7 +301,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " if (selected) { link.classList.add("navMenuOption-selected"); var title = ""; - link = link.querySelector("span") || link; + link = link.querySelector(".navMenuOptionText") || link; title += (link.innerText || link.textContent).trim(); LibraryMenu.setTitle(title); } else { @@ -452,7 +452,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " menuHtml += '"; if (item.icon) { - menuHtml += ''; + menuHtml += ''; } menuHtml += ''; @@ -579,7 +579,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " i.onclick; } - return '' + i.Name + ""; + return '' + i.Name + ""; }).join(""); libraryMenuOptions.innerHTML = html; var elem = libraryMenuOptions; @@ -614,7 +614,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " function updateCastIcon() { var context = document; var info = playbackManager.getPlayerInfo(); - var icon = headerCastButton.querySelector("i"); + var icon = headerCastButton.querySelector(".material-icons"); if (info && !info.isLocalPlayer) { icon.classList.replace("cast", "cast_connected"); diff --git a/src/tv.html b/src/tv.html index 9a47c6fa8b..ceb5c51b44 100644 --- a/src/tv.html +++ b/src/tv.html @@ -3,9 +3,9 @@
- - - + + +
@@ -59,9 +59,9 @@
- - - + + +
diff --git a/src/userparentalcontrol.html b/src/userparentalcontrol.html index 538de80a70..f320c361f9 100644 --- a/src/userparentalcontrol.html +++ b/src/userparentalcontrol.html @@ -31,7 +31,7 @@

${LabelBlockContentWithTags}

@@ -41,7 +41,7 @@

${HeaderAccessSchedule}

diff --git a/src/userprofiles.html b/src/userprofiles.html index 398d951db2..1eaa1006dc 100644 --- a/src/userprofiles.html +++ b/src/userprofiles.html @@ -6,7 +6,7 @@

${HeaderUsers}

${Help}
diff --git a/src/videoosd.html b/src/videoosd.html index cb1e507541..452c8a9af8 100644 --- a/src/videoosd.html +++ b/src/videoosd.html @@ -8,7 +8,7 @@

- + ${FetchingData}
@@ -25,47 +25,47 @@
@@ -76,7 +76,7 @@
diff --git a/src/wizardfinish.html b/src/wizardfinish.html index 6bcec5ff0a..4d54a10cd4 100644 --- a/src/wizardfinish.html +++ b/src/wizardfinish.html @@ -5,11 +5,11 @@

${WizardCompleted}

diff --git a/src/wizardlibrary.html b/src/wizardlibrary.html index 7851f41f0a..b8a4fab9d5 100644 --- a/src/wizardlibrary.html +++ b/src/wizardlibrary.html @@ -3,7 +3,7 @@

${HeaderSetupLibrary}

- +

@@ -11,12 +11,12 @@
diff --git a/src/wizardremoteaccess.html b/src/wizardremoteaccess.html index c7ddfb7e84..f7ce47dc93 100644 --- a/src/wizardremoteaccess.html +++ b/src/wizardremoteaccess.html @@ -21,12 +21,12 @@
diff --git a/src/wizardsettings.html b/src/wizardsettings.html index f753919478..d4f537cf98 100644 --- a/src/wizardsettings.html +++ b/src/wizardsettings.html @@ -16,12 +16,12 @@
diff --git a/src/wizardstart.html b/src/wizardstart.html index 615feb3b04..c640b8eff8 100644 --- a/src/wizardstart.html +++ b/src/wizardstart.html @@ -20,7 +20,7 @@
diff --git a/src/wizarduser.html b/src/wizarduser.html index 90f492b0fe..3ce0b3ba74 100644 --- a/src/wizarduser.html +++ b/src/wizarduser.html @@ -22,12 +22,12 @@
From 33a6daf6b6391c441a42af03715562b774ac8dc6 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 28 Apr 2020 17:50:34 +0300 Subject: [PATCH 04/32] Update loop --- src/components/nowplayingbar/nowplayingbar.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index bfae96b027..10d7d508da 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -134,12 +134,10 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } }); - var i; - var length; playPauseButtons = elem.querySelectorAll('.playPauseButton'); - for (i = 0, length = playPauseButtons.length; i < length; i++) { - playPauseButtons[i].addEventListener('click', onPlayPauseClick); - } + playPauseButtons.forEach((button) => { + button.addEventListener('click', onPlayPauseClick); + }); elem.querySelector('.nextTrackButton').addEventListener('click', function () { @@ -281,16 +279,13 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } function updatePlayPauseState(isPaused) { - var i; - var length; - if (playPauseButtons) { let icons = ["play_arrow", "pause"]; if (isPaused) icons = icons.reverse(); - for (i = 0, length = playPauseButtons.length; i < length; i++) { - playPauseButtons[i].querySelector('.material-icons').classList.replace(icons[0], icons[1]); - } + playPauseButtons.forEach((button) => { + button.querySelector('.material-icons').classList.replace(icons[0], icons[1]); + }); } } From 6a258c055be1a02eada0c0ce0548677081481156 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 28 Apr 2020 18:02:29 +0300 Subject: [PATCH 05/32] Update quotes style --- src/components/nowplayingbar/nowplayingbar.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 10d7d508da..2f44e31986 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -280,7 +280,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function updatePlayPauseState(isPaused) { if (playPauseButtons) { - let icons = ["play_arrow", "pause"]; + let icons = ['play_arrow', 'pause']; if (isPaused) icons = icons.reverse(); playPauseButtons.forEach((button) => { @@ -329,16 +329,16 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } function updateRepeatModeDisplay(repeatMode) { - toggleRepeatButtonIcon.classList.remove("repeat", "repeat_one"); + toggleRepeatButtonIcon.classList.remove('repeat', 'repeat_one'); if (repeatMode === 'RepeatAll') { - toggleRepeatButtonIcon.classList.add("repeat"); + toggleRepeatButtonIcon.classList.add('repeat'); toggleRepeatButton.classList.add('repeatButton-active'); } else if (repeatMode === 'RepeatOne') { - toggleRepeatButtonIcon.classList.add("repeat_one"); + toggleRepeatButtonIcon.classList.add('repeat_one'); toggleRepeatButton.classList.add('repeatButton-active'); } else { - toggleRepeatButtonIcon.classList.add("repeat"); + toggleRepeatButtonIcon.classList.add('repeat'); toggleRepeatButton.classList.remove('repeatButton-active'); } } @@ -387,7 +387,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', showMuteButton = false; } - let icons = ["volume_off", "volume_up"]; + let icons = ['volume_off', 'volume_up']; if (isMuted) icons = icons.reverse(); muteButton.querySelector('.material-icons').classList.replace(icons[0], icons[1]); From 4defe293fd2c08d4be48e85915f7e8811daf8e9a Mon Sep 17 00:00:00 2001 From: Aragon Date: Fri, 1 May 2020 09:33:48 +0000 Subject: [PATCH 06/32] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/strings/he.json b/src/strings/he.json index 65fd22fd2a..2015201c79 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -511,7 +511,7 @@ "Books": "ספרים", "Absolute": "מוחלט", "AccessRestrictedTryAgainLater": "הגישה מוגבלת כרגע, נסה שוב במועד מאוחר יותר.", - "AddedOnValue": "התווספו {0}", + "AddedOnValue": "נוספו {0}", "Blacklist": "רשימה שחורה", "Banner": "באנר", "Auto": "אוטומטי", @@ -549,7 +549,7 @@ "AllowOnTheFlySubtitleExtraction": "אפשר חילוץ כתוביות בזמן אמת", "AllowHWTranscodingHelp": "אפשר למלקט לקודד הזרמות בזמן אמת. זה עשוי לעזור בהפחתת הקידוד שנעשה ע\"י השרת.", "AllComplexFormats": "כל הפורמטים המורכבים (ASS, SSA, VOBSUB, PGS, SUB/IDX)", - "AddItemToCollectionHelp": "הוסף חפצים לאוסף דרך חיפושם ושימוש בתפריט הלחצן הימני או כפתור התפריט כדי להוסיפם לאוסף.", + "AddItemToCollectionHelp": "הוסף חפצים לאוסף על ידי חיפושם ושימוש בתפריט הלחצן הימני או לחצן התפריט כדי להוסיפם לאוסף.", "Songs": "שירים", "Shows": "סדרות", "DownloadsValue": "{0} הורדות", @@ -766,5 +766,9 @@ "ShowYear": "הצג שנה", "ShowTitle": "הצג כותרת", "DropShadow": "הפעל צל", - "Playlists": "רשימות הפעלה" + "Playlists": "רשימות הפעלה", + "Raised": "מורם", + "LabelSpecialSeasonsDisplayName": "שם תצוגת \"עונה מיוחדת\":", + "LabelSource": "מקור:", + "LabelSoundEffects": "אפקטי סאונד:" } From cf759c0143128f8657a43047a9aeee4e9b78fed9 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Fri, 1 May 2020 09:58:04 +0000 Subject: [PATCH 07/32] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 8dd5d4d856..5dc7f02826 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1508,5 +1508,8 @@ "ReleaseGroup": "Kiadócsoport", "MessageUnauthorizedUser": "Jelenleg nincs jogosultságod a szerverhez való hozzáféréshez. Kérjük, lépj kapcsolatba az adminisztrátorral további információkért!", "ButtonTogglePlaylist": "Lejátszási listák", - "ButtonToggleContextMenu": "Továbbiak" + "ButtonToggleContextMenu": "Továbbiak", + "Filter": "Szűrés", + "New": "Új", + "HeaderFavoritePlaylists": "Kedvenc lejátszási listák" } From 96cfabeffe62401c86f3f1e967779eed3b735bd5 Mon Sep 17 00:00:00 2001 From: Tien Nguyen Date: Fri, 1 May 2020 09:42:37 +0000 Subject: [PATCH 08/32] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 6c7401b853..6d7fa3a9f1 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -321,5 +321,6 @@ "EasyPasswordHelp": "Mã PIN tiện lợi được sử dụng cho việc truy cập offline trên những thiết bị được hỗ trợ và cũng có thể sử dụng dành cho truy cập dễ dàng trong nội mạng.", "DropShadow": "Đổ Bóng", "DrmChannelsNotImported": "Những kênh được bảo vệ bản quyền sẽ không được nhập vào.", - "DownloadsValue": "{0} đã tải xuống" + "DownloadsValue": "{0} đã tải xuống", + "EnableColorCodedBackgrounds": "Màu nền theo loại kênh" } From 31f53d0855a606d550b70236b913c4e2b1ef5f0e Mon Sep 17 00:00:00 2001 From: Sarab Singh Date: Sat, 2 May 2020 00:57:51 +0530 Subject: [PATCH 09/32] download button only if permission --- CONTRIBUTORS.md | 1 + src/components/photoplayer/plugin.js | 30 ++++++++++++++++----------- src/components/slideshow/slideshow.js | 4 ++-- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index aa3ec707e3..2eae7e6933 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -34,6 +34,7 @@ - [Ryan Hartzell](https://github.com/ryan-hartzell) - [Thibault Nocchi](https://github.com/ThibaultNocchi) - [MrTimscampi](https://github.com/MrTimscampi) + - [Sarab Singh](https://github.com/sarab97) # Emby Contributors diff --git a/src/components/photoplayer/plugin.js b/src/components/photoplayer/plugin.js index 4ebdbbd6d2..8b980f3b16 100644 --- a/src/components/photoplayer/plugin.js +++ b/src/components/photoplayer/plugin.js @@ -21,19 +21,25 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var index = options.startIndex || 0; - var newSlideShow = new slideshow({ - showTitle: false, - cover: false, - items: options.items, - startIndex: index, - interval: 11000, - interactive: true + var apiClient = connectionManager.currentApiClient(); + + apiClient.getCurrentUser().then(function(result){ + + var newSlideShow = new slideshow({ + showTitle: false, + cover: false, + items: options.items, + startIndex: index, + interval: 11000, + interactive: true, + user: result + }); + + newSlideShow.show(); + + resolve(); + }); }); - - newSlideShow.show(); - - resolve(); - }); }); }; diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 48ccee21c8..9c5b1f0435 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -167,9 +167,9 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f if (!actionButtonsOnTop) { html += '
'; - + html += getIcon('play_arrow', 'btnSlideshowPause slideshowButton', true, true); - if (appHost.supports('filedownload')) { + if (appHost.supports('filedownload') && options.user.Policy.EnableContentDownloading) { html += getIcon('file_download', 'btnDownload slideshowButton', true); } if (appHost.supports('sharing')) { From 9cff51e1555baa101c255d59a5deaec0079a7fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Libor=20Fil=C3=ADpek?= Date: Fri, 1 May 2020 13:25:08 +0000 Subject: [PATCH 10/32] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index b7f2f7b9d2..5e52da3f55 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1604,5 +1604,9 @@ "LabelDeinterlaceMethod": "Metoda odstranění prokládání:", "DeinterlaceMethodHelp": "Vyberte metodu odstranění prokládání obrazu při překódování obsahu.", "UnsupportedPlayback": "Jellyfin nemůže dešifrovat obsah chráněný technologií DRM, ale pokusí se zobrazit o veškerý obsah, včetně chráněných titulů. Některé soubory se mohou zdát úplně černé kvůli šifrování nebo jiným nepodporovaným funkcím, jako jsou například interaktivní funkce.", - "MessageUnauthorizedUser": "Momentálně nemáte oprávnění k přístupu na server. Další informace získáte od správce serveru." + "MessageUnauthorizedUser": "Momentálně nemáte oprávnění k přístupu na server. Další informace získáte od správce serveru.", + "Filter": "Filtr", + "New": "Nové", + "ButtonTogglePlaylist": "Playlist", + "ButtonToggleContextMenu": "Více" } From 3177c72f0896a43ecfd094bdd5422973b65af91d Mon Sep 17 00:00:00 2001 From: Heikki Jetsonen Date: Fri, 1 May 2020 11:48:40 +0000 Subject: [PATCH 11/32] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 229 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 211 insertions(+), 18 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 8f3c5fb6e8..1c7147a50b 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -29,7 +29,7 @@ "LabelFinish": "Valmis", "LabelFolderType": "Kansion tyyppi:", "LabelLanguage": "Kieli:", - "LabelMaxParentalRating": "Suurin sallittu vanhempien arvostelu:", + "LabelMaxParentalRating": "Suurin sallittu ikäraja:", "LabelNewPassword": "Uusi salasana:", "LabelNewPasswordConfirm": "Uuden salasanan varmistus:", "LabelNext": "Seuraava", @@ -41,11 +41,11 @@ "LabelYourFirstName": "Etunimesi:", "LabelYoureDone": "Valmista!", "LibraryAccessHelp": "Valitse kirjastot, jotka haluat jakaa tämän käyttäjän kanssa. Järjestelmänvalvoja pystyy muokkaamaan kaikkia kansioita käyttäen metadatan hallintatyökalua.", - "MaxParentalRatingHelp": "", + "MaxParentalRatingHelp": "Suuremman luokituksen sisältö piilotetaan käyttäjältä.", "MoreUsersCanBeAddedLater": "Käyttäjiä voidaan lisätä myöhemmin lisää päänäkymästä.", "NoPluginsInstalledMessage": "Sinulla ei ole mitään lisäosia asennettuna.", "OptionRelease": "Virallinen Julkaisu", - "ParentalRating": "", + "ParentalRating": "Ikäraja", "Password": "Salasana", "PasswordMatchError": "Salasanan ja salasanan vahvistuksen on oltava samat.", "PasswordResetComplete": "Salasana on nollattu.", @@ -105,18 +105,18 @@ "Anytime": "Milloin tahansa", "AroundTime": "Noin {0}", "Art": "Taide", - "Artists": "Esiintyjät", + "Artists": "Artistit", "AsManyAsPossible": "Niin monta kuin mahdollista", "Ascending": "Nousevassa järjestyksessä", "AspectRatio": "Kuvasuhde", "AttributeNew": "Uusi", "Audio": "Ääni", "AuthProviderHelp": "Valitse todentamispalvelu, jota käytetään tämän käyttäjän salasanan todentamisessa.", - "Auto": "Automaattinen", + "Auto": "Auto", "AutoBasedOnLanguageSetting": "Automaattinen (perustuu kieliasetukseen)", "Backdrop": "Tausta", "Backdrops": "Taustat", - "Banner": "Juliste", + "Banner": "Lippu", "BirthDateValue": "Syntynyt: {0}", "BirthLocation": "Syntymäpaikka", "BirthPlaceValue": "Syntymäpaikka: {0}", @@ -145,9 +145,9 @@ "ButtonEdit": "Muokkaa", "ButtonEditImages": "Muokkaa kuvia", "ButtonEditOtherUserPreferences": "Muokkaa tämän käyttäjän profiilia, kuvaa ja henkilökohtaisia asetuksia.", - "ButtonFilter": "Suodin", - "ButtonForgotPassword": "Unohdin salasanani", - "ButtonFullscreen": "Täysi kuvaruutu", + "ButtonFilter": "Suodata", + "ButtonForgotPassword": "Unohtuiko salasana", + "ButtonFullscreen": "Kokonäyttötila", "ButtonGotIt": "Selvä", "ButtonGuide": "Opas", "ButtonHelp": "Apua", @@ -163,7 +163,7 @@ "ButtonNextTrack": "Seuraava raita", "ButtonOff": "Pois päältä", "ButtonOk": "Ok", - "ButtonOpen": "Avoin", + "ButtonOpen": "Avaa", "BurnSubtitlesHelp": "Määrittää mikäli palvelimen pitäisi polttaa tekstitykset suoraan videoon muunnoksen aikana riippuen tekstitysten formaatista. Tekstitysten polttamisen välttäminen parantaa palvelimen suorituskykyä. Valitse Automaattinen polttaaksesi sekä kuva- (esim. VOBSUB, PGS, SUB/IDX, jne.) että tekstipohjaiset (ASS/SSA) formaatit.", "ButtonParentalControl": "Lapsilukko", "ButtonPause": "Tauko", @@ -256,7 +256,7 @@ "DownloadsValue": "{0} latausta", "DrmChannelsNotImported": "Kanavia joissa on tekijänoikeusesto-ohjelmia, ei ladata.", "DropShadow": "Varjostus", - "EasyPasswordHelp": "Sinun helppoa PIN-koodia käytetään offline-käytössä tuetuissa Jellyfin-sovelluksissa, ja voi myös nopeuttaa lan yhteyden kautta kirjautumista.", + "EasyPasswordHelp": "Helppoa PIN-koodiasi käytetään offline-käyttöä tukevissa sovelluksissa, ja sitä voidaan myös käyttää verkossa kirjautumiseen.", "Edit": "Muokkaa", "EditImages": "Muokkaa kuvia", "EditMetadata": "Muokkaa metadataa", @@ -310,7 +310,7 @@ "CopyStreamURLError": "Osoitteen kopioidessa tapahtui virhe.", "ButtonSplit": "jaa", "AskAdminToCreateLibrary": "Pyydä järjestelmän ylläpitäjää luomaan kirjasto.", - "EnableStreamLooping": "Auto-toista suoralähetykset", + "EnableStreamLooping": "Looppaa suoralähetykset", "EnableNextVideoInfoOverlayHelp": "Näytä videon lopussa tietoja seuraavasta videosta soittolistalla.", "ClientSettings": "Pääte-asetukset", "AllowFfmpegThrottlingHelp": "Kun uudelleenkoodaus tai remux ehtii tarpeeksi toiston edelle, keskeytä laskenta jotta laskentaresursseja kuluu vähemmän. Tämä on hyödyllistä jos katselet hyppimättä eri kohtiin. Älä käytä jos toiston kanssa ilmenee ongelmia.", @@ -398,7 +398,7 @@ "OptionContinuing": "Jatkuvat", "OptionCommunityRating": "Yhteisön luokitus", "OptionBlockLiveTvChannels": "Live-TV kanavat", - "OptionBanner": "Juliste", + "OptionBanner": "Lippu", "OnlyForcedSubtitlesHelp": "Vain pakotetuiksi merkityt tekstitykset ladataan.", "OnlyImageFormats": "Vain kuvaformaatit (VOBSUB, PGS, SUB)", "OnlyForcedSubtitles": "Vain pakotetut", @@ -526,7 +526,7 @@ "OptionDownloadArtImage": "Taide", "OptionDownloadDiscImage": "Levy", "OptionDownloadBoxImage": "Laatikko", - "OptionDownloadBannerImage": "Juliste", + "OptionDownloadBannerImage": "Lippu", "OptionDownloadBackImage": "Tausta", "OptionDisableUser": "Poista tämä käyttäjä käytöstä", "OptionDescending": "Laskeva", @@ -732,7 +732,7 @@ "TabLogs": "Lokit", "TabLiveTV": "Live-TV", "TabLatest": "Uusimmat", - "TabInfo": "Info", + "TabInfo": "Tiedot", "TabGenres": "Tyylilajit", "TabFavorites": "Suosikit", "TabEpisodes": "Jaksot", @@ -755,7 +755,7 @@ "Sort": "Järjestä", "Smart": "Älykäs", "SkipEpisodesAlreadyInMyLibrary": "Älä tallenna jaksoja, jotka ovat jo kirjastossani", - "Shuffle": "Sekoita", + "Shuffle": "Satunnaistoisto", "ShowTitle": "Näytä nimi", "ShowYear": "Näytä vuosi", "ShowAdvancedSettings": "Näytä edistyneet asetukset", @@ -801,7 +801,7 @@ "Record": "Tallenna", "OptionAutomatic": "Auto", "OptionAuto": "Auto", - "OptionAscending": "Nouseva", + "OptionAscending": "Nousevassa järjestyksessä", "OptionArtist": "Artisti", "OptionAllowVideoPlaybackTranscoding": "Salli transkoodausta vaativan videon toistaminen", "OptionAllowVideoPlaybackRemuxing": "Salli videon toistaminen, joka vaatii muuntamista ilman koodausta", @@ -1058,5 +1058,198 @@ "Episode": "Jakso", "ButtonTogglePlaylist": "Soittolista", "ButtonToggleContextMenu": "Lisää", - "Artist": "Artisti" + "Artist": "Artisti", + "RefreshQueued": "Päivitys odottamassa.", + "SeriesCancelled": "Sarja peruttu.", + "MediaInfoRefFrames": "Ref frames", + "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaCap": "X-DLNA cap:", + "Guide": "Opas", + "DailyAt": "Päivittäin klo {0}", + "Uniform": "Yhtenäinen", + "TrackCount": "{0} raitaa", + "Track": "Raita", + "TitleHardwareAcceleration": "Laitteistokiihdytys", + "Thumb": "Pikkukuva", + "TabStreaming": "Suoratoisto", + "TabParentalControl": "Lapsilukko", + "TabOther": "Muut", + "TabNotifications": "Ilmoitukset", + "TabNetworking": "Verkkoasetukset", + "TabGuide": "Opas", + "TabContainers": "Säiliöt", + "TabCodecs": "Codecit", + "Suggestions": "Ehdotukset", + "Sports": "Urheilu", + "Smaller": "Pienin", + "SmallCaps": "Small Caps", + "Small": "Pieni", + "Filter": "Suodata", + "New": "Uusi", + "Runtime": "Kesto", + "PlayAllFromHere": "Toista kaikki tästä lähtien", + "PlayNextEpisodeAutomatically": "Toista seuraava jakso automaattisesti", + "PlayCount": "Toistokerrat", + "PlaybackData": "Toistamisen tiedot", + "PinCodeResetComplete": "PIN-koodi on nollattu.", + "Overview": "Yleiskatsaus", + "OptionWakeFromSleep": "Herätä lepotilasta", + "OptionUnairedEpisode": "Julkaisemattomat jaksot", + "OptionParentalRating": "Ikäraja", + "OptionNone": "Ei mitään", + "OptionIgnoreTranscodeByteRangeRequests": "Ohita transkoodauksen tavualuepyynnöt", + "OptionHlsSegmentedSubtitles": "HLS segmentoidut tekstitykset", + "OptionEnableExternalContentInSuggestions": "Ota käyttöön ulkoinen sisältö ehdotuksissa", + "OptionEmbedSubtitles": "Upota säiliöön", + "OptionForceRemoteSourceTranscoding": "Pakota etämedialähteiden transkoodaus (kuten Live-TV)", + "OneChannel": "Yksi kanava", + "Off": "Poissa päältä", + "Normal": "Normaali", + "None": "Ei mitään", + "NoSubtitles": "Ei mitään", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Seuraavat mediasijainnit tullaan poistamaan kirjastostasi:", + "MessageItemsAdded": "Kohteet lisätty.", + "MessageItemSaved": "Kohde tallennettu.", + "MessageEnablingOptionLongerScans": "Tämän vaihtoehdon käyttöönottaminen voi johtaa huomattavasti pidempiin kirjastojen skannauksiin.", + "MessageDownloadQueued": "Lataus asetettu jonoon.", + "MessageConfirmRevokeApiKey": "Haluatko varmasti perua tämän API-avaimen? Sovelluksen yhteys Jellyfin-palvelimeen lopetetaan äkillisesti.", + "MessageConfirmRemoveMediaLocation": "Haluatko varmasti poistaa tämän sijainnin?", + "MessageConfirmRecordingCancellation": "Peruuta tallennus?", + "MessageConfirmDeleteGuideProvider": "Haluatko varmasti poistaa tämän ohjelmaoppaan tarjoajan?", + "MediaInfoStreamTypeEmbeddedImage": "Upotettu kuva", + "MediaInfoSampleRate": "Näytteenottotaajuus", + "MediaInfoPixelFormat": "Pikseliformaatti", + "MediaInfoLayout": "Asettelu", + "MediaInfoContainer": "Säiliö", + "MediaInfoCodecTag": "Codec-tunniste", + "MediaInfoCodec": "Codec", + "MediaInfoBitrate": "Bitrate", + "Like": "Tykkää", + "LabelVideoBitrate": "Videon bitrate:", + "LabelWeb": "Web:", + "LabelVideoCodec": "Videon codec:", + "LabelTranscodingVideoCodec": "Video codec:", + "LabelSkipIfGraphicalSubsPresent": "Ohita, jos video sisältää upotetut tekstitykset", + "LabelInternetQuality": "Verkkoyhteyden laatu:", + "LabelEmbedAlbumArtDidl": "Upota albumin kuvamateriaali Didl:iin", + "LabelDeinterlaceMethod": "Lomituksen poistamismenetelmä:", + "LabelAudioBitDepth": "Audion bittisyvyys:", + "LabelAlbumArtists": "Albumin artistit:", + "Items": "Kohteet", + "ItemCount": "{0} kohdetta", + "Home": "Koti", + "Help": "Apua", + "HeaderXmlSettings": "Xml-asetukset", + "HeaderXmlDocumentAttributes": "Xml-dokumentin attribuutit", + "HeaderXmlDocumentAttribute": "Xml-dokumentin attribuutti", + "HeaderStopRecording": "Lopeta tallennus", + "HeaderRecordingPostProcessing": "Tallennuksen jälkikäsittely", + "HeaderParentalRatings": "Ikärajat", + "HeaderOtherItems": "Muut kohteet", + "HeaderLiveTvTunerSetup": "Live-TV virittimen määritys", + "HeaderLibrarySettings": "Kirjaston asetukset", + "HeaderItems": "Kohteet", + "HeaderGuideProviders": "TV-ohjelmaoppaiden tarjoajat", + "HeaderFavoritePlaylists": "Suosikki soittolistat", + "HeaderEnabledFields": "Käytössä olevat kentät", + "HeaderCodecProfile": "Codec-profiili", + "HeaderContainerProfile": "Säiliöprofiili", + "PleaseSelectTwoItems": "Valitse ainakin kaksi kohdetta.", + "PleaseRestartServerName": "Ole hyvä ja uudelleenkäynnistä Jellyfin-palvelin - {0}.", + "PleaseEnterNameOrId": "Anna nimi tai ulkoinen ID.", + "PreferEmbeddedTitlesOverFileNames": "Suosi upotettuja otsikoita tiedostonimien sijasta", + "PreferredNotRequired": "Suositeltava, mutta ei vaadittu", + "Premieres": "Ensiesitys", + "Primary": "Ensisijainen", + "Previous": "Edellinen", + "RecommendationBecauseYouWatched": "Koska katsoit {0}", + "RecommendationBecauseYouLike": "Koska pidät {0}", + "RecentlyWatched": "Äskettäin katsotut", + "Programs": "Ohjelmat", + "LabelServerNameHelp": "Tätä nimeä käytetään palvelimen tunnistamiseen. Jos tyhjä, käytetään tietokoneen nimeä.", + "LabelEnableRealtimeMonitorHelp": "Tiedostojen muutokset käsitellään välittömästi tuetuissa tiedostojärjestelmissä.", + "LabelEnableRealtimeMonitor": "Ota reaaliaikainen seuranta käyttöön", + "LabelDropImageHere": "Pudota kuva tähän, tai paina selataksesi.", + "LabelDroppedFrames": "Pudotettuja kuvia:", + "LabelDidlMode": "DIDL tila:", + "LabelCustomDeviceDisplayNameHelp": "Tätä nimeä käytetään laitteen tunnistamiseen. Jos tyhjä, käytetään laitteen nimeä.", + "LabelCustomCssHelp": "Käytä omaa CSS: ää web-käyttöliittymään.", + "LabelCorruptedFrames": "Korruptoituneita kuvia:", + "LabelCriticRating": "Kriitikoiden luokitus:", + "LabelCommunityRating": "Yhteisön luokitus:", + "LabelCancelled": "Peruttu", + "LabelBlockContentWithTags": "Estä kohteet tunnisteilla:", + "LabelBitrate": "Bitrate:", + "LabelAudioSampleRate": "Audion näytteenottotaajuus:", + "LabelAudioChannels": "Audiokanavia:", + "LabelAudioBitrate": "Audion bitrate:", + "LabelAudioCodec": "Audio codec:", + "LabelTranscodingContainer": "Säiliö:", + "LabelTranscodingAudioCodec": "Audio codec:", + "LabelSubtitleDownloaders": "Tekstitysten lataajat:", + "LabelSpecialSeasonsDisplayName": "Erikoiskauden näyttönimi:", + "LabelSoundEffects": "Ääniefektit:", + "LabelSortTitle": "Lajitteluotsikko:", + "LabelSkipIfAudioTrackPresent": "Ohita, jos oletusääniraita vastaa latauskieltä", + "LabelSkipBackLength": "Taaksepäin hyppäämisen pituus:", + "LabelSkipForwardLength": "Eteenpäin hyppäämisen pituus:", + "LabelScheduledTaskLastRan": "Viimeisin ajo {0}, kesto {1}.", + "LabelRemoteClientBitrateLimitHelp": "Valinnainen bittinopeusraja yksittäisille suoratoistaville laitteille lähiverkon ulkopuolella. Tämä on hyödyllistä estääkseen laitteita pyytämästä suurempia bittinopeuksia kuin Internet-yhteys voi käsitellä. Tämä voi johtaa palvelimen prosessorin kuormituksen lisääntymiseen, jotta videot voidaan transkoodata pienempiin bittinopeuksiin.", + "LabelRemoteClientBitrateLimit": "Internetistä suoratoiston enimmäisnopeus (Mbps):", + "LabelRefreshMode": "Päivitystila:", + "LabelRecordingPathHelp": "Määritä oletussijainti tallennuksille. Jätä tyhjäksi käyttääksesi palvelimen datakansiota.", + "LabelRecordingPath": "Oletustallennuspolku:", + "LabelProtocolInfoHelp": "Arvo, jota käytetään vastattaessa laitteen GetProtocolInfo-pyyntöihin.", + "LabelProfileCodecsHelp": "Pilkulla erotettuna. Jätä tyhjäksi käyttääksesi kaikissa codeceissa.", + "LabelProfileContainersHelp": "Pilkulla erotettuna. Jätä tyhjäksi käyttääksesi kaikissa säiliöissä.", + "LabelProfileVideoCodecs": "Video codecs:", + "LabelProfileContainer": "Säiliö:", + "LabelProfileCodecs": "Codecs:", + "LabelProfileAudioCodecs": "Audio codecs:", + "LabelPostProcessor": "Jälkikäsittelysovellus:", + "LabelPostProcessorArguments": "Jälkikäsittelysovelluksen komentoriviargumentit:", + "LabelPleaseRestart": "Muutokset tulevat voimaan kun web-asiakasohjelma päivitetään manuaalisesti (reload).", + "LabelPlayDefaultAudioTrack": "Toista oletusraita kielestä riippumatta", + "LabelOverview": "Yleiskatsaus:", + "LabelPasswordResetProvider": "Salasanan nollauksen palveluntarjoaja:", + "LabelParentalRating": "Ikäraja:", + "LabelOptionalNetworkPathHelp": "Jos tämä kansio on jaettu verkossa, polun jakaminen voi mahdollistaa Jellyfin-sovellusten muilla laitteilla käyttää mediatiedostoja suoraan.", + "LabelMovieRecordingPath": "Elokuvien tallenteiden polku (valinnainen):", + "LabelMusicStreamingTranscodingBitrateHelp": "Määritä enimmäisnopeus musiikkia suoratoistettaessa.", + "LabelMusicStreamingTranscodingBitrate": "Musiikin transkoodauksen bitrate:", + "LabelMinBackdropDownloadWidth": "Taustan latauksen vähimmäisleveys:", + "LabelMetadataReadersHelp": "Järjestä ensisijaiset paikallisen metadatan lähteet prioriteettijärjestykseen. Ensimmäinen löydetty tiedosto luetaan.", + "LabelMetadataPathHelp": "Määrää mukautettu sijainti ladatulle kuvamateriaalille ja metadatalle.", + "LabelMetadataDownloadersHelp": "Ota käyttöön ja järjestä ensisijaiset metadatan lataajat prioriteettijärjestykseen. Alemman prioriteetin omaavia lataajia käytetään vain täyttämään puuttuvia tietoja.", + "LabelMaxResumePercentageHelp": "Kohteita pidetään toistettuina, jos toisto pysäytetään tämän ajan kuluttua.", + "LabelMaxResumePercentage": "Enimmäisaika jatkoa varten (%):", + "LabelMaxChromecastBitrate": "Chromecastin suoratoiston laatu:", + "LabelMaxBackdropsPerItem": "Taustojen maksimimäärä per kohde:", + "LabelLoginDisclaimer": "Sisäänkirjautumisen vastuuvapauslauseke:", + "LabelLibraryPageSize": "Kirjastosivun kohteiden määrä:", + "LabelLibraryPageSizeHelp": "Asettaa kirjastosivulla näytettävien kohteiden määrän. Arvo 0 poistaa sivutuksen käytöstä.", + "LabelLineup": "", + "Unrated": "Luokittelematon", + "ExtractChapterImagesHelp": "Pikkukuvien luominen mahdollistaa sovellusten näyttää graafiikkaa valintavalikoissa. Prosessi voi olla hidas, prosessoria kuormittava ja saattaa vaatia useita gigatavuja tilaa. Se suoritetaan, kun videoita havaitaan, ja myös yöksi suunniteltuna tehtävänä. Aikataulu on konfiguroitavissa ajoitetuissa tehtävissä. Tätä tehtävää ei ole suositeltavaa suorittaa korkean kuormituksen aikana.", + "OnWakeFromSleep": "Lepotilasta poistuttaessa", + "WeeklyAt": "{0}sin klo {1}", + "Whitelist": "Sallitut", + "Watched": "Katsotut", + "ViewPlaybackInfo": "Näytä toistamisen tiedot", + "ValueVideoCodec": "Video Codec: {0}", + "ValueTimeLimitSingleHour": "Aikaraja: 1 tunti", + "ValueTimeLimitMultiHour": "Aikaraja: {0} tuntia", + "ValueContainer": "Säiliö: {0}", + "ValueConditions": "Ehdot: {0]", + "ValueCodec": "Codec: {0}", + "ValueAudioCodec": "Audio Codec: {0}", + "SeriesYearToPresent": "{0} - Nykyhetki", + "DeinterlaceMethodHelp": "Valitse lomituksen poistomenetelmä, jota käytetään lomitetun sisällön transkoodaukseen.", + "FormatValue": "Muoto: {0}", + "General": "Yleinen", + "FolderTypeUnset": "Sekalainen sisältö", + "FetchingData": "Noudetaan lisätietoja", + "Features": "Ominaisuudet", + "ErrorMessageStartHourGreaterThanEnd": "Loppumisajan on oltava myöhemmin kuin aloitusaika.", + "MediaInfoAnamorphic": "Anamorfinen" } From 147309b684ac95c7e31690eee71c33bda71fdfaf Mon Sep 17 00:00:00 2001 From: millallo Date: Fri, 1 May 2020 17:31:19 +0000 Subject: [PATCH 12/32] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index 8f54f4b41c..3adbeb2031 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1503,5 +1503,6 @@ "UnsupportedPlayback": "Jellyfin non è in grado di decriptare i contenuti protetti da DRM ma tutti i contenuti verranno tentati a prescindere, compresi quelli protetti. Alcuni file potrebbero apparire completamente neri a causa della crittografia o di altre funzionalità non supportate, come i titoli interattivi.", "MessageUnauthorizedUser": "Non sei autorizzato ad accedere in questo momento al server. Contatta l'amministratore per ulteriori dettagli.", "ButtonTogglePlaylist": "Playlist", - "ButtonToggleContextMenu": "Altro" + "ButtonToggleContextMenu": "Altro", + "HeaderFavoritePlaylists": "Playlist Favorite" } From bf91fc7a8951f2ad5c0771e5123a696913a379b7 Mon Sep 17 00:00:00 2001 From: xGigaa Date: Fri, 1 May 2020 17:58:56 +0000 Subject: [PATCH 13/32] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tran?= =?UTF-8?q?slate-URL:=20https://translate.jellyfin.org/projects/jellyfin/j?= =?UTF-8?q?ellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 1e410c9d2d..0a616ae2e1 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1473,5 +1473,12 @@ "BoxSet": "Samleboks", "Artist": "Artist", "AlbumArtist": "Albumartist", - "Album": "Album" + "Album": "Album", + "LabelLibraryPageSizeHelp": "Velger hvor mange elementer som skal bli vist på en bibliotek side. Velg 0 for å deaktivere.", + "LabelLibraryPageSize": "Biblioteks side størrelse:", + "LabelDeinterlaceMethod": "Deinterlacing metode:", + "HeaderFavoritePlaylists": "Favorittspillelister", + "DeinterlaceMethodHelp": "Velg deinterlacing metoden som skal bli brukt når man transkoder interlaced innhold.", + "ButtonTogglePlaylist": "Spilleliste", + "ButtonToggleContextMenu": "Mer" } From 03c0ae526fe3260e0eb5bdfdfcf619bc7ce4d1f8 Mon Sep 17 00:00:00 2001 From: Tien Nguyen Date: Fri, 1 May 2020 12:37:46 +0000 Subject: [PATCH 14/32] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 110 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 6d7fa3a9f1..569b3a36bb 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -322,5 +322,113 @@ "DropShadow": "Đổ Bóng", "DrmChannelsNotImported": "Những kênh được bảo vệ bản quyền sẽ không được nhập vào.", "DownloadsValue": "{0} đã tải xuống", - "EnableColorCodedBackgrounds": "Màu nền theo loại kênh" + "EnableColorCodedBackgrounds": "Màu nền theo loại kênh", + "HeaderDateIssued": "Ngày Phát Hành", + "HeaderContinueWatching": "Tiếp Tục Xem", + "HeaderContinueListening": "Tiếp Tục Nghe", + "HeaderCodecProfileHelp": "Bộ giải mã chỉ ra những kiểu mã hoá nhất định mà một thiết bị có thể phát. Nếu một nội dung không thể phát, nó sẽ được chuyển mã, thậm chí nếu kiểu mã hoá đó được thiết lập phát trực tiếp.", + "HeaderContainerProfileHelp": "Bộ định dạng chỉ ra những định dạng nhất định mà một thiết bị có thể phát. Nếu nội dung có định dạng không thể phát, nội dung sẽ được chuyển đổi định dạng, thậm chí định dạng đó được thiết lập phát trực tiếp.", + "HeaderContainerProfile": "Bộ Định Dạng", + "HeaderConnectionFailure": "Kế Nối Thất Bại", + "HeaderConnectToServer": "Kết Nối Đến Máy Chủ", + "HeaderConfirmRevokeApiKey": "Thu Hồi Quyền Truy Cập API Key", + "HeaderConfirmProfileDeletion": "Xác Nhận Xoá Hồ Sơ", + "HeaderConfirmPluginInstallation": "Xác Nhận Cài Đặt Plugin", + "HeaderConfigureRemoteAccess": "Thiết Lập Truy Cập Từ Xa", + "HeaderCodecProfile": "Bộ Giải Mã", + "HeaderChapterImages": "Hình Ảnh Phân Đoạn", + "HeaderChannels": "Kênh", + "HeaderChannelAccess": "Quyền Truy Cập Kênh", + "HeaderCastCrew": "Diễn Viên & Ê-kíp", + "HeaderCastAndCrew": "Diễn Viên & Ê-kíp", + "HeaderCancelSeries": "Huỷ Series", + "HeaderCancelRecording": "Dừng Ghi Âm/Ghi Hình", + "HeaderBranding": "Tạo Thương Hiệu", + "HeaderBooks": "Sách", + "HeaderBlockItemsWithNoRating": "Khoá những mục không có thông tin đánh giá hoặc thông tin không đáng tin cậy:", + "HeaderAudioSettings": "Cài Đặt Âm Thanh", + "HeaderAudioBooks": "Sách Nói", + "HeaderAppearsOn": "Xuất Bản Vào", + "HeaderApp": "Ứng dụng", + "HeaderApiKeysHelp": "Những ứng dụng khác cần có \"API key\" để tương tác với máy chủ Jellyfin. Những mã này được tạo ra bằng cách đăng nhập vào máy chủ Jellyfin, hoặc bạn có thể cung cấp cho ứng dụng một mã truy cập.", + "HeaderApiKeys": "API Keys", + "HeaderApiKey": "API Key", + "HeaderAllowMediaDeletionFrom": "Cho Phép Xoá Nội Dung", + "HeaderAlert": "Thông Báo", + "HeaderAlbums": "Albums", + "HeaderAlbumArtists": "Nghệ Sĩ Album", + "HeaderAdmin": "Quản Trị", + "HeaderAdditionalParts": "Phần Bổ Sung", + "HeaderAddUpdateImage": "Thêm/Thay Đổi Hình Ảnh", + "HeaderAddToPlaylist": "Thêm vào Danh Sách Phát", + "HeaderAddToCollection": "Thêm vào Bộ Sưu Tập", + "HeaderAddScheduledTaskTrigger": "Thêm Kích Hoạt Tác Vụ", + "HeaderActivity": "Hoạt Động", + "HeaderActiveRecordings": "Bản Ghi Hình/Ghi Âm Đang Hoạt Động", + "HardwareAccelerationWarning": "Bật tính năng hỗ trợ từ phần cứng có thể gây ra sự bất ổn trong một vài môi trường. Hãy chắc chắn rằng điều hành và driver thiết bị đồ hoạ đã được cập nhật mới nhất. Nếu gặp vấn đề khi phát video sau khi bật tính năng này, bạn nên tắt tính năng này.", + "HeaderActiveDevices": "Thiết Bị Đang Hoạt Động", + "HeaderAccessScheduleHelp": "Tạo một thời gian biểu để giới hạn quyền truy cập vào một số khung giờ nhất định.", + "HeaderAccessSchedule": "Thời Gian Truy Cập", + "HandledByProxy": "Được xử lý bằng phương thức đảo ngược proxy", + "HDPrograms": "Chương trình chất lượng cao (HD)", + "EncoderPresetHelp": "Chọn một giá trị nhanh hơn để cải thiện hiệu suất máy chủ, hoặc một giá trị chậm hơn để tăng chất lượng video.", + "H264CrfHelp": "Hệ Số Tỉ Lệ Cố Định (Constant Rate Factor (CRF)) là thiết lập chất lượng mặc định dành cho bộ mã hoá x264. Bạn có thể điều chỉnh giá trị trong khoảng 0 đến 51, trong đó giá trị càng nhỏ thì chất lượng càng tốt (đồng nghĩa với việc dung lượng tập tin lớn hơn). Giá trị vừa phải nằm trong khoảng từ 18 đến 28. Giá trị mặc định dành cho x264 là 23, vì thế bạn có thể sử dụng nó để bắt đầu điều chỉnh cho phù hợp.", + "GuideProviderSelectListings": "Chọn Danh Sách", + "GuideProviderLogin": "Đăng nhập", + "Guide": "Lịch phát sóng", + "GuestStar": "Ngôi sao khách mời", + "GroupVersions": "Chia nhóm theo phiên bản", + "GroupBySeries": "Chia nhóm theo bộ", + "Genres": "Thể loại", + "Genre": "Thể loại", + "General": "Tổng Hợp", + "Fullscreen": "Toàn màn hình", + "Friday": "Thứ Sáu", + "FormatValue": "Định dạng: {0}", + "Folders": "Thư mục", + "FolderTypeUnset": "Nội Dung Tổng Hợp", + "FolderTypeMusicVideos": "Video Âm Nhạc", + "FolderTypeMusic": "Nhạc", + "FolderTypeMovies": "Phim lẻ", + "FolderTypeBooks": "Sách", + "Filters": "Bộ lọc", + "File": "Tập tin", + "FetchingData": "Đang tải thêm thông tin", + "Features": "Mục đặc trưng", + "Favorites": "Mục yêu thích", + "Favorite": "Mục yêu thích", + "FastForward": "Tua nhanh", + "FFmpegSavePathNotFound": "Máy chủ không thể tìm thấy chương trình FFmpeg trong đường dẫn bạn đã nhập. FFprobe thì cũng cần thiết và phải nằm trong cùng thư mục bên trên. Những phần mềm này thường được tổng hợp cùng nhau trong một lượt tải. Hãy thử lại sau khi kiểm tra đường dẫn.", + "Extras": "Đặc biệt", + "ExtractChapterImagesHelp": "Trích xuất hình ảnh từ những phân đoạn chính sẽ cho phép thiết bị phát hiển thị bảng lựa chọn cảnh thông qua những hình ảnh đó. Quá trình đó có thể chậm, cần nhiều tài nguyên máy chủ, và có thể cần một vài gigabytes trống. Điều này sẽ được thực hiện khi video được tìm thấy, và cũng như trong tác vụ hàng đêm. Thời gian thực hiện tác vụ này có thể điều chỉnh trong phần cài đặt tác vụ thường xuyên. Không nên thực hiện quá trình này trong giờ sử dụng cao điểm.", + "ExtraLarge": "Rất Lớn", + "ExitFullscreen": "Thoát khỏi chế độ toàn màn hình", + "EveryNDays": "Mỗi {0} ngày", + "ErrorSavingTvProvider": "Có lỗi xảy ra khi lưu thông tin của nhà cung cấp TV này. Hãy thử lại khi chắc chắn rằng nó có thể truy cập.", + "ErrorPleaseSelectLineup": "Hãy chọn một danh sách và thử lại. Nếu không có danh sách nào sẵn sàng, hãy chắc chắn rằng thông tin tài khoản, mật khẩu, và mã bưu điện đều chính xác.", + "ErrorMessageStartHourGreaterThanEnd": "Thời gian kết thúc phải lớn hơn thời gian bắt đầu.", + "ErrorGettingTvLineups": "Có lỗi xảy ra khi tải danh sách TV này. Hãy thử lại khi chắc chắn rằng thông tin của bạn chính xác.", + "ErrorDeletingItem": "Có lỗi xảy ra khi xoá mục này khỏi máy chủ Jellyfin. Hãy thử lại sau khi kiểm tra chắc chắn rằng máy chủ Jellyfin có quyền ghi/xoá vào thư mục nội dung.", + "ErrorAddingXmlTvFile": "Có lỗi xảy ra khi truy cập tài liệu XMLTV. Hãy thử lại khi chắc chắn rằng tài liệu này tồn tại.", + "ErrorAddingTunerDevice": "Có lỗi xảy ra khi thêm vào thiết bị bắt sóng này. Hãy thử lại khi chắc chắn rằng nó có thể truy cập.", + "ErrorAddingMediaPathToVirtualFolder": "Có lỗi xảy ra khi thêm đường dẫn này. Hãy chắc chắn rằng đường dẫn này đúng và máy chủ Jellyfin có quyền truy cập dữ liệu ở đường dẫn đó.", + "ErrorAddingListingsToSchedulesDirect": "Có lỗi xảy ra khi thêm danh sách này vào tài khoản Schedules Direct của bạn. Schedules Direct chỉ cho phép một số lượng danh sách nhất định mỗi tài khoản. Bạn có thể cần phải đăng nhập vào trang web của Schedules Direct và xoá những danh sách khác trước khi có thể thêm danh sách mới.", + "Episodes": "Tập", + "Episode": "Tập", + "EndsAtValue": "Kết thúc tại {0}", + "Ended": "Đã kết thúc", + "EnableThemeVideosHelp": "Phát nền những video chủ đề khi lướt qua thư viện nội dung.", + "EnableThemeVideos": "Video chủ đề", + "EnableThemeSongsHelp": "Phát những bài hát chủ đề khi lướt qua thư viện nội dung.", + "EnableThemeSongs": "Nhạc chủ đề", + "EnableStreamLoopingHelp": "Cho phép tính năng này nếu live streams chỉ dài một vài giây và cần được lặp lại liên tục. Bật tính năng này khi không cần thiết có thể gây ra nhiều vấn đề khác.", + "EnableStreamLooping": "Tự động phát lại live streams", + "EnablePhotosHelp": "Hình ảnh sẽ được nhận diện và hiển thị bên cạnh những nội dung media.", + "EnablePhotos": "Hiển thị hình ảnh", + "EnableNextVideoInfoOverlayHelp": "Khi ở phần cuối video, hiển thị thông tin về video tiếp theo trong danh sách phát hiện tại.", + "EnableNextVideoInfoOverlay": "Hiển thị thông tin video tiếp theo ở phần cuối video", + "EnableHardwareEncoding": "Sử dụng phần cứng để hỗ trợ chuyển mã", + "EnableExternalVideoPlayersHelp": "Phần mềm phát video từ thiết bị sẽ được hiển thị khi bắt đầu phát video.", + "EnableExternalVideoPlayers": "Sử dụng phần mềm phát video từ thiết bị", + "EnableDisplayMirroring": "Cho phép trình chiếu trên thiết bị khác" } From 5a6b097ed90d4906f05edb1b196ee274453b0f36 Mon Sep 17 00:00:00 2001 From: Sarab Singh Date: Sat, 2 May 2020 02:28:58 +0530 Subject: [PATCH 15/32] image link from remote web client fix --- src/components/slideshow/slideshow.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 9c5b1f0435..bee1030f97 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -66,14 +66,14 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f * @param {object} item - Item used to generate the image URL. * @returns {string} URL of the item's image. */ - function getImgUrl(item) { + function getImgUrl(item, user) { var apiClient = connectionManager.getApiClient(item.ServerId); var imageOptions = {}; if (item.BackdropImageTags && item.BackdropImageTags.length) { return getBackdropImageUrl(item, imageOptions, apiClient); } else { - if (item.MediaType === 'Photo') { + if (item.MediaType === 'Photo' && user.Policy.EnableContentDownloading) { return apiClient.getItemDownloadUrl(item.Id); } imageOptions.type = "Primary"; @@ -167,7 +167,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f if (!actionButtonsOnTop) { html += '
'; - + html += getIcon('play_arrow', 'btnSlideshowPause slideshowButton', true, true); if (appHost.supports('filedownload') && options.user.Policy.EnableContentDownloading) { html += getIcon('file_download', 'btnDownload slideshowButton', true); @@ -312,7 +312,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f */ function getSwiperSlideHtmlFromItem(item) { return getSwiperSlideHtmlFromSlide({ - originalImage: getImgUrl(item), + originalImage: getImgUrl(item, currentOptions.user), //title: item.Name, //description: item.Overview Id: item.Id, From 779bb2094498b36b67f9c3c09afd608690fa8801 Mon Sep 17 00:00:00 2001 From: Sarab Singh Date: Sat, 2 May 2020 02:31:13 +0530 Subject: [PATCH 16/32] download button fix on top action bar --- src/components/slideshow/slideshow.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index bee1030f97..0550ccdda0 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -155,7 +155,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f html += '
'; if (actionButtonsOnTop) { - if (appHost.supports('filedownload')) { + if (appHost.supports('filedownload') && options.user.Policy.EnableContentDownloading) { html += getIcon('file_download', 'btnDownload slideshowButton', true); } if (appHost.supports('sharing')) { From d920afe61b2b385547854085e43c2bacba7b2cf5 Mon Sep 17 00:00:00 2001 From: Sarab Singh Date: Sat, 2 May 2020 02:40:48 +0530 Subject: [PATCH 17/32] spaces --- src/components/photoplayer/plugin.js | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/components/photoplayer/plugin.js b/src/components/photoplayer/plugin.js index 8b980f3b16..63dd2e4fbd 100644 --- a/src/components/photoplayer/plugin.js +++ b/src/components/photoplayer/plugin.js @@ -22,24 +22,24 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var index = options.startIndex || 0; var apiClient = connectionManager.currentApiClient(); - - apiClient.getCurrentUser().then(function(result){ - - var newSlideShow = new slideshow({ - showTitle: false, - cover: false, - items: options.items, - startIndex: index, - interval: 11000, - interactive: true, - user: result - }); - - newSlideShow.show(); - - resolve(); + + apiClient.getCurrentUser().then(function(result){ + + var newSlideShow = new slideshow({ + showTitle: false, + cover: false, + items: options.items, + startIndex: index, + interval: 11000, + interactive: true, + user: result }); + + newSlideShow.show(); + + resolve(); }); + }); }); }; From 52ab4338e721e4ea0428fad86601ad5f14353bbe Mon Sep 17 00:00:00 2001 From: Sarab Singh Date: Sat, 2 May 2020 02:54:14 +0530 Subject: [PATCH 18/32] stupid lint --- src/components/photoplayer/plugin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/photoplayer/plugin.js b/src/components/photoplayer/plugin.js index 63dd2e4fbd..06d2e3b391 100644 --- a/src/components/photoplayer/plugin.js +++ b/src/components/photoplayer/plugin.js @@ -23,7 +23,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var apiClient = connectionManager.currentApiClient(); - apiClient.getCurrentUser().then(function(result){ + apiClient.getCurrentUser().then(function(result) { var newSlideShow = new slideshow({ showTitle: false, From a3bc8c183ef7f693045e215c5fbad73dea2fee43 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 2 May 2020 14:02:44 +0300 Subject: [PATCH 19/32] Use remove+add pattern for icons --- src/components/nowplayingbar/nowplayingbar.js | 13 +++--- src/components/playback/volumeosd.js | 5 +-- src/components/remotecontrol/remotecontrol.js | 25 +++++++---- src/components/tabbedview/itemstab.js | 5 +-- src/controllers/dashboard/dashboard.js | 6 +-- src/controllers/playback/videoosd.js | 44 ++++++++++++------- src/scripts/librarymenu.js | 6 ++- 7 files changed, 62 insertions(+), 42 deletions(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 2f44e31986..0b369f1f3c 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -280,11 +280,10 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function updatePlayPauseState(isPaused) { if (playPauseButtons) { - let icons = ['play_arrow', 'pause']; - if (isPaused) icons = icons.reverse(); - playPauseButtons.forEach((button) => { - button.querySelector('.material-icons').classList.replace(icons[0], icons[1]); + const icon = button.querySelector('.material-icons'); + icon.classList.remove('play_arrow', 'pause'); + icon.classList.add(isPaused ? 'play_arrow' : 'pause'); }); } } @@ -387,9 +386,9 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', showMuteButton = false; } - let icons = ['volume_off', 'volume_up']; - if (isMuted) icons = icons.reverse(); - muteButton.querySelector('.material-icons').classList.replace(icons[0], icons[1]); + const muteButtonIcon = muteButton.querySelector('.material-icons'); + muteButtonIcon.classList.remove('volume_off', 'volume_up'); + muteButtonIcon.classList.add(isMuted ? 'volume_off' : 'volume_up'); if (supportedCommands.indexOf('SetVolume') === -1) { showVolumeSlider = false; diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index ab124ab22b..95a13d769d 100644 --- a/src/components/playback/volumeosd.js +++ b/src/components/playback/volumeosd.js @@ -101,9 +101,8 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function updatePlayerVolumeState(isMuted, volume) { if (iconElement) { - let icons = ["volume_off", "volume_up"]; - if (isMuted) icons = icons.reverse(); - iconElement.classList.replace(icons[0], icons[1]); + iconElement.classList.remove('volume_off', 'volume_up'); + iconElement.classList.add(isMuted ? 'volume_off' : 'volume_up'); } if (progressElement) { progressElement.style.width = (volume || 0) + '%'; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 3f3c4d1f1d..a9f0a4550f 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -349,18 +349,23 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL showVolumeSlider = false; } + const buttonMute = view.querySelector(".buttonMute"); + const buttonMuteIcon = buttonMute.querySelector(".material-icons"); + + buttonMuteIcon.classList.remove("volume_off", "volume_up"); + if (isMuted) { - view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute")); - view.querySelector(".buttonMute .material-icons").classList.replace("volume_up", "volume_off"); + buttonMute.setAttribute("title", globalize.translate("Unmute")); + buttonMuteIcon.classList.add("volume_off"); } else { - view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute")); - view.querySelector(".buttonMute .material-icons").classList.replace("volume_off", "volume_up"); + buttonMute.setAttribute("title", globalize.translate("Mute")); + buttonMuteIcon.classList.add("volume_up"); } if (showMuteButton) { - view.querySelector(".buttonMute").classList.remove("hide"); + buttonMute.classList.remove("hide"); } else { - view.querySelector(".buttonMute").classList.add("hide"); + buttonMute.classList.add("hide"); } var nowPlayingVolumeSlider = context.querySelector(".nowPlayingVolumeSlider"); @@ -382,9 +387,11 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function updatePlayPauseState(isPaused, isActive) { var context = dlg; var btnPlayPause = context.querySelector(".btnPlayPause"); - let icons = ["play_circle_filled", "pause_circle_filled"]; - if (isPaused) icons = icons.reverse(); - btnPlayPause.querySelector(".material-icons").classList.replace(icons[0], icons[1]); + const btnPlayPauseIcon = btnPlayPause.querySelector(".material-icons"); + + btnPlayPauseIcon.classList.remove("play_circle_filled", "pause_circle_filled"); + btnPlayPauseIcon.classList.add(isPaused ? "play_circle_filled" : "pause_circle_filled"); + buttonVisible(btnPlayPause, isActive); } diff --git a/src/components/tabbedview/itemstab.js b/src/components/tabbedview/itemstab.js index 26da63c894..884cfa2015 100644 --- a/src/components/tabbedview/itemstab.js +++ b/src/components/tabbedview/itemstab.js @@ -181,9 +181,8 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts return; } - let icons = ["arrow_downward", "arrow_upward"]; - if (values.sortOrder === 'Descending') icons = icons.reverse(); - btnSortIcon.classList.replace(icons[0], icons[1]); + btnSortIcon.classList.remove('arrow_downward', 'arrow_upward'); + btnSortIcon.classList.add(values.sortOrder === 'Descending' ? 'arrow_downward' : 'arrow_upward'); } function bindAll(elems, eventName, fn) { diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index ed16d90a38..6dd1ceae28 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -571,9 +571,9 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa row.querySelector(".btnSessionStop").classList.add("hide"); } - let icons = ["play_arrow", "pause"]; - if (session.PlayState && session.PlayState.IsPaused) icons = icons.reverse(); - btnSessionPlayPause.querySelector(".material-icons").classList.replace(icons[0], icons[1]); + const btnSessionPlayPauseIcon = btnSessionPlayPause.querySelector(".material-icons"); + btnSessionPlayPauseIcon.classList.remove("play_arrow", "pause"); + btnSessionPlayPauseIcon.classList.add(session.PlayState && session.PlayState.IsPaused ? "play_arrow" : "pause"); row.querySelector(".sessionNowPlayingStreamInfo").innerHTML = DashboardPage.getSessionNowPlayingStreamInfo(session); row.querySelector(".sessionNowPlayingTime").innerHTML = DashboardPage.getSessionNowPlayingTime(session); diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index ac6f796567..55c338b92f 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -543,12 +543,17 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function updateFullscreenIcon() { + const button = view.querySelector(".btnFullscreen"); + const icon = button.querySelector(".material-icons"); + + icon.classList.remove("fullscreen_exit", "fullscreen"); + if (playbackManager.isFullscreen(currentPlayer)) { - view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("ExitFullscreen")); - view.querySelector(".btnFullscreen .material-icons").classList.replace("fullscreen", "fullscreen_exit"); + button.setAttribute("title", globalize.translate("ExitFullscreen") + " (f)"); + icon.classList.add("fullscreen_exit"); } else { - view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("Fullscreen") + " (f)"); - view.querySelector(".btnFullscreen .material-icons").classList.replace("fullscreen_exit", "fullscreen"); + button.setAttribute("title", globalize.translate("Fullscreen") + " (f)"); + icon.classList.add("fullscreen"); } } @@ -746,13 +751,17 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function updatePlayPauseState(isPaused) { - var button = view.querySelector(".btnPause .material-icons"); + const btnPlayPause = view.querySelector(".btnPause"); + const btnPlayPauseIcon = btnPlayPause.querySelector(".material-icons"); + + btnPlayPauseIcon.classList.remove("play_arrow", "pause"); + if (isPaused) { - button.classList.replace("pause", "play_arrow"); - button.setAttribute("title", globalize.translate("ButtonPlay") + " (k)"); + btnPlayPauseIcon.classList.add("play_arrow"); + btnPlayPause.setAttribute("title", globalize.translate("ButtonPlay") + " (k)"); } else { - button.classList.replace("play_arrow", "pause"); - button.setAttribute("title", globalize.translate("ButtonPause") + " (k)"); + btnPlayPauseIcon.classList.add("pause"); + btnPlayPause.setAttribute("title", globalize.translate("ButtonPause") + " (k)"); } } @@ -883,18 +892,23 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med showVolumeSlider = false; } + const buttonMute = view.querySelector(".buttonMute"); + const buttonMuteIcon = buttonMute.querySelector(".material-icons"); + + buttonMuteIcon.classList.remove("volume_off", "volume_up"); + if (isMuted) { - view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute") + " (m)"); - view.querySelector(".buttonMute .material-icons").classList.replace("volume_up", "volume_off"); + buttonMute.setAttribute("title", globalize.translate("Unmute") + " (m)"); + buttonMuteIcon.classList.add("volume_off"); } else { - view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute") + " (m)"); - view.querySelector(".buttonMute .material-icons").classList.replace("volume_off", "volume_up"); + buttonMute.setAttribute("title", globalize.translate("Mute") + " (m)"); + buttonMuteIcon.classList.add("volume_up"); } if (showMuteButton) { - view.querySelector(".buttonMute").classList.remove("hide"); + buttonMute.classList.remove("hide"); } else { - view.querySelector(".buttonMute").classList.add("hide"); + buttonMute.classList.add("hide"); } if (nowPlayingVolumeSlider) { diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 16104eb34e..fbc641b741 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -616,12 +616,14 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var info = playbackManager.getPlayerInfo(); var icon = headerCastButton.querySelector(".material-icons"); + icon.classList.remove("cast_connected", "cast"); + if (info && !info.isLocalPlayer) { - icon.classList.replace("cast", "cast_connected"); + icon.classList.add("cast_connected"); headerCastButton.classList.add("castButton-active"); context.querySelector(".headerSelectedPlayer").innerHTML = info.deviceName || info.name; } else { - icon.classList.replace("cast_connected", "cast"); + icon.classList.add("cast"); headerCastButton.classList.remove("castButton-active"); context.querySelector(".headerSelectedPlayer").innerHTML = ""; } From d16e11ea7796a101797f4ed74820cf10ff2d6cad Mon Sep 17 00:00:00 2001 From: Andrey Sinitsyn Date: Sat, 2 May 2020 09:27:51 +0000 Subject: [PATCH 20/32] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 1611572754..9fc2a00df6 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1505,5 +1505,6 @@ "LabelDeinterlaceMethod": "Метод устранения гребёнки:", "DeinterlaceMethodHelp": "Выберите метод устранения гребёнки, который будет использоваться при перекодировании чересстрочного содержания.", "UnsupportedPlayback": "Jellyfin не может расшифровать содержимое, защищенное DRM, но в любом случае будет предпринята попытка расшифровки всего содержимого, включая защищенные заголовки. Некоторые файлы могут выглядеть полностью черными из-за шифрования или других неподдерживаемых функций, таких как интерактивные заголовки.", - "MessageUnauthorizedUser": "В настоящее время у вас нет доступа к серверу. Пожалуйста, свяжитесь с администратором сервера для получения дополнительной информации." + "MessageUnauthorizedUser": "В настоящее время у вас нет доступа к серверу. Пожалуйста, свяжитесь с администратором сервера для получения дополнительной информации.", + "HeaderFavoritePlaylists": "Избранные плей-листы" } From 28ada7dc89258dcced3a53f4f0cbd5badc4e3902 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Sat, 2 May 2020 10:06:52 +0000 Subject: [PATCH 21/32] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 7b80e3264b..d56b9fc59a 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1500,5 +1500,12 @@ "Artist": "Umelec", "AlbumArtist": "Umelec albumu", "LabelLibraryPageSizeHelp": "Určuje množstvo položiek na zobrazenie na stránke knižnice. Nastavte 0 pre vypnutie stránkovania.", - "LabelLibraryPageSize": "Veľkosť stránky knižnice:" + "LabelLibraryPageSize": "Veľkosť stránky knižnice:", + "MessageUnauthorizedUser": "Momentálne nemáte oprávnenie na prístup k serveru. Prosím, kontaktujte svojho administrátora serveru pre viac informácií.", + "UnsupportedPlayback": "Jellyfin nemôže dešifrovať obsah chránený technológiou DRM, ale pokúsi sa o to, vrátane chránených titulov. Niektoré súbory sa môžu zobraziť ako kompletne čierne z dôvodu, že sú zašifrované alebo obsahujú nepodporované funckie, ako napríklad interaktívne funkcie.", + "Filter": "Filter", + "New": "Nové", + "HeaderFavoritePlaylists": "Obľúbené playlisty", + "ButtonTogglePlaylist": "Playlist", + "ButtonToggleContextMenu": "Viac" } From 6331709e3e8e27da232386b946257924452ad327 Mon Sep 17 00:00:00 2001 From: Pan Renzhou <1773834430@qq.com> Date: Sat, 2 May 2020 06:05:58 +0000 Subject: [PATCH 22/32] 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index fd0afb77ab..41eb27c9bf 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1506,5 +1506,10 @@ "LabelLibraryPageSize": "媒体库分页阈值:", "LabelLibraryPageSizeHelp": "设置媒体库页面每页要显示的最多媒体个数。设置为 0 以禁用分页。", "UnsupportedPlayback": "Jellyfin无法解密被DRM保护的内容,但仍然会尝试播放包括受保护内容在内的所有内容。某些文件由于被加密或包含不受支持的特性(如互动标题),在播放时可能显示为黑屏。", - "MessageUnauthorizedUser": "您目前无权访问服务器。更多有关信息,请与服务器管理员联系。" + "MessageUnauthorizedUser": "您目前无权访问服务器。更多有关信息,请与服务器管理员联系。", + "Filter": "过滤", + "New": "新的", + "HeaderFavoritePlaylists": "收藏的播放列表", + "ButtonTogglePlaylist": "播放列表", + "ButtonToggleContextMenu": "更多" } From ffcb04e75376a67713e99fbbbdd4a9167540a153 Mon Sep 17 00:00:00 2001 From: Sarab Singh Date: Sun, 3 May 2020 03:20:40 +0530 Subject: [PATCH 23/32] no more breaking of screensaver --- src/components/slideshow/slideshow.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 0550ccdda0..715e16325a 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -73,7 +73,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f if (item.BackdropImageTags && item.BackdropImageTags.length) { return getBackdropImageUrl(item, imageOptions, apiClient); } else { - if (item.MediaType === 'Photo' && user.Policy.EnableContentDownloading) { + if (item.MediaType === 'Photo' && user && user.Policy.EnableContentDownloading) { return apiClient.getItemDownloadUrl(item.Id); } imageOptions.type = "Primary"; @@ -155,7 +155,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f html += '
'; if (actionButtonsOnTop) { - if (appHost.supports('filedownload') && options.user.Policy.EnableContentDownloading) { + if (appHost.supports('filedownload') && options.user && options.user.Policy.EnableContentDownloading) { html += getIcon('file_download', 'btnDownload slideshowButton', true); } if (appHost.supports('sharing')) { @@ -169,7 +169,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f html += '
'; html += getIcon('play_arrow', 'btnSlideshowPause slideshowButton', true, true); - if (appHost.supports('filedownload') && options.user.Policy.EnableContentDownloading) { + if (appHost.supports('filedownload') && options.user && options.user.Policy.EnableContentDownloading) { html += getIcon('file_download', 'btnDownload slideshowButton', true); } if (appHost.supports('sharing')) { From c590461f283f790adf836e03ead95e1cb99d188f Mon Sep 17 00:00:00 2001 From: Aragon Date: Sun, 3 May 2020 21:25:23 +0000 Subject: [PATCH 24/32] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/he.json b/src/strings/he.json index 2015201c79..8d507070a8 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -765,7 +765,7 @@ "LabelSortOrder": "מיין סדר:", "ShowYear": "הצג שנה", "ShowTitle": "הצג כותרת", - "DropShadow": "הפעל צל", + "DropShadow": "צייר צל", "Playlists": "רשימות הפעלה", "Raised": "מורם", "LabelSpecialSeasonsDisplayName": "שם תצוגת \"עונה מיוחדת\":", From 86dc0c9da0e325599227fe5ce592bcfbcadccc41 Mon Sep 17 00:00:00 2001 From: Tin Pavelic Date: Sun, 3 May 2020 11:10:43 +0000 Subject: [PATCH 25/32] Translated using Weblate (Croatian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hr/ --- src/strings/hr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/hr.json b/src/strings/hr.json index 9710c13454..107014626e 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -1009,5 +1009,6 @@ "AllComplexFormats": "Svi kompleksni formati (ASS, SSA, VOBSUB, PGS, SUB/IDX, itd.)", "Books": "Knjige", "Channels": "Kanali", - "Collections": "Kolekcije" + "Collections": "Kolekcije", + "Artists": "Izvođači" } From db6f37d8b04bb39f2ca132a17e24f8d2385f0911 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Sun, 3 May 2020 09:14:07 +0000 Subject: [PATCH 26/32] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 5dc7f02826..065460a644 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -101,8 +101,8 @@ "EnableBackdrops": "Háttérképek", "EnableBackdropsHelp": "A háttérképek a könyvtár böngészése közben néhány oldal hátterében jelennek meg.", "EnableHardwareEncoding": "Hardveres kódolás engedélyezése", - "EnableThemeSongs": "Főcím dalok", - "EnableThemeSongsHelp": "Főcím dalok lejátszása háttérben a könyvtár böngészése közben.", + "EnableThemeSongs": "Főcímdalok", + "EnableThemeSongsHelp": "Főcímdalok lejátszása háttérben a könyvtár böngészése közben.", "EndsAtValue": "Várható befejezés {0}", "Episodes": "Epizódok", "ExitFullscreen": "Kilépés a teljes képernyőből", @@ -167,7 +167,7 @@ "HeaderLibrarySettings": "Médiatár beállítások", "HeaderLiveTvTunerSetup": "Élő TV tuner beállítása", "HeaderMedia": "Média", - "HeaderMediaFolders": "Média Könyvtárak", + "HeaderMediaFolders": "Médiakönyvtárak", "HeaderMediaInfo": "Média Infó", "HeaderMetadataSettings": "Metaadat Beállítások", "HeaderMoreLikeThis": "Több ehhez hasonló", @@ -244,7 +244,7 @@ "LabelCustomDeviceDisplayName": "Megjelenítendő név:", "LabelCustomDeviceDisplayNameHelp": "Adj meg egy egyedi nevet, vagy hagyd üresen a készülék által elküldött név használatához.", "LabelCustomRating": "Egyéni értékelés:", - "LabelDashboardTheme": "Szerver vezérlőpult kinézet:", + "LabelDashboardTheme": "Szerver vezérlőpult kinézete:", "LabelDateAdded": "Hozzáadva:", "LabelDateTimeLocale": "Dátum és idő formátum:", "LabelDay": "Nap:", @@ -630,7 +630,7 @@ "ChannelAccessHelp": "Válaszd ki a megosztani kívánt csatornákat a felhasználóval. A rendszergazdák a metaadatkezelő segítségével szerkeszthetik az összes csatornát.", "ChannelNameOnly": "Csak {0} csatorna", "ChannelNumber": "Csatorna száma", - "CinemaModeConfigurationHelp": "A Cinema Mode igazi mozi élményt nyújt előzetessel és egyedi intróval a film vetítése előtt.", + "CinemaModeConfigurationHelp": "A Mozi mód igazi mozi élményt nyújt előzetessel és egyedi intróval a film vetítése előtt.", "ColorSpace": "Színtér", "ColorTransfer": "Színátvitel", "Composer": "Zeneszerző", @@ -669,7 +669,7 @@ "DrmChannelsNotImported": "A csatornák DRM-el nem kerülnek importálásra.", "DropShadow": "Árnyék", "EasyPasswordHelp": "Az egyszerű PIN kódot az offline hozzáféréshez használják a támogatott kliens alkalmazásokban, valamint hálózaton belüli bejelentkezéshez is használható.", - "EnableCinemaMode": "Cinema Mode", + "EnableCinemaMode": "Mozi mód", "EnableColorCodedBackgrounds": "Színkódolt háttérképek", "EnableDisplayMirroring": "Kijelző tükrözés", "EnableExternalVideoPlayers": "Külső videolejátszók", @@ -789,7 +789,7 @@ "Shows": "Sorozatok", "Songs": "Dalok", "ValueSpecialEpisodeName": "Special - {0}", - "EnableThemeVideos": "Videók témák", + "EnableThemeVideos": "Videótémák", "EnableThemeVideosHelp": "Videó témájának lejátszása háttérben a könyvtár böngészése közben.", "HeaderBlockItemsWithNoRating": "Blokkolja azokat az elemeket amelyek tiltott, vagy nem felismerhető minősítésűek:", "HeaderSchedule": "Ütemezés", From 8b6dc05d647a06adf625dac47b5d44394504a821 Mon Sep 17 00:00:00 2001 From: Tien Nguyen Date: Sun, 3 May 2020 09:02:58 +0000 Subject: [PATCH 27/32] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 104 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 102 insertions(+), 2 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 569b3a36bb..66dabce654 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -327,7 +327,7 @@ "HeaderContinueWatching": "Tiếp Tục Xem", "HeaderContinueListening": "Tiếp Tục Nghe", "HeaderCodecProfileHelp": "Bộ giải mã chỉ ra những kiểu mã hoá nhất định mà một thiết bị có thể phát. Nếu một nội dung không thể phát, nó sẽ được chuyển mã, thậm chí nếu kiểu mã hoá đó được thiết lập phát trực tiếp.", - "HeaderContainerProfileHelp": "Bộ định dạng chỉ ra những định dạng nhất định mà một thiết bị có thể phát. Nếu nội dung có định dạng không thể phát, nội dung sẽ được chuyển đổi định dạng, thậm chí định dạng đó được thiết lập phát trực tiếp.", + "HeaderContainerProfileHelp": "Bộ định dạng chỉ ra những định dạng nhất định mà một thiết bị có thể phát. Nếu nội dung có định dạng không thể phát, nội dung sẽ được chuyển đổi định dạng, kể cả khi định dạng đó được thiết lập phát trực tiếp.", "HeaderContainerProfile": "Bộ Định Dạng", "HeaderConnectionFailure": "Kế Nối Thất Bại", "HeaderConnectToServer": "Kết Nối Đến Máy Chủ", @@ -430,5 +430,105 @@ "EnableHardwareEncoding": "Sử dụng phần cứng để hỗ trợ chuyển mã", "EnableExternalVideoPlayersHelp": "Phần mềm phát video từ thiết bị sẽ được hiển thị khi bắt đầu phát video.", "EnableExternalVideoPlayers": "Sử dụng phần mềm phát video từ thiết bị", - "EnableDisplayMirroring": "Cho phép trình chiếu trên thiết bị khác" + "EnableDisplayMirroring": "Cho phép trình chiếu trên thiết bị khác", + "HeaderProfileInformation": "Thông Tin Hồ Sơ", + "HeaderProfile": "Hồ Sơ", + "HeaderPreferredMetadataLanguage": "Ngôn Ngữ Dữ Liệu Bổ Trợ Yêu Thích", + "HeaderPluginInstallation": "Cài Đặt Plugin", + "HeaderPleaseSignIn": "Hãy đăng nhập", + "HeaderPlaybackError": "Lỗi Phát Sóng", + "HeaderPlayback": "Phát Nội Dung", + "HeaderPlayOn": "Phát Trên", + "HeaderPlayAll": "Phát Tất Cả", + "HeaderPinCodeReset": "Đặt Lại Mã PIN", + "HeaderPhotoAlbums": "Album Ảnh", + "HeaderPeople": "Nhân Vật", + "HeaderPendingInvitations": "Những Lời Mời Đang Chờ", + "HeaderPaths": "Đường Dẫn", + "HeaderPasswordReset": "Đặt Lại Mật Khẩu", + "HeaderPassword": "Mật Khẩu", + "HeaderParentalRatings": "Đánh Giá Của Phụ Huynh", + "HeaderOtherItems": "Những Mục Khác", + "HeaderOnNow": "Phát Sóng Hiện Tại", + "HeaderNextVideoPlayingInValue": "Video Tiếp Theo Sẽ Phát trong {0}", + "HeaderNextUp": "Tiếp Theo", + "HeaderNextEpisodePlayingInValue": "Tập Tiếp Theo Sẽ Được Chạy trong {0}", + "HeaderNewDevices": "Thiết Bị Mới", + "HeaderNewApiKey": "Mã API Mới", + "HeaderNavigation": "Điều Hướng", + "HeaderMyMediaSmall": "Nội Dung Của Tôi (cỡ nhỏ)", + "HeaderMyMedia": "Nội Dung Của Tôi", + "HeaderMyDevice": "Thiết Bị Của Tôi", + "HeaderMusicVideos": "Video Âm Nhạc", + "HeaderMusicQuality": "Chất Lượng Âm Nhạc", + "HeaderMovies": "Phim", + "HeaderMoreLikeThis": "Nội Dung Tương Tự", + "HeaderMetadataSettings": "Cài Đặt Dữ Liệu Bổ Trợ", + "HeaderMediaInfo": "Thông Tin Nội Dung", + "HeaderMediaFolders": "Thư Mục Chứa Nội Dung", + "HeaderMedia": "Nội Dung", + "HeaderLoginFailure": "Đăng Nhập Không Thành Công", + "HeaderLiveTvTunerSetup": "Cài Đặt Bộ Bắt Sóng TV", + "HeaderLiveTv": "Truyền Hình Trực Tiếp", + "HeaderLiveTV": "Truyền Hình Trực Tiếp", + "HeaderLibrarySettings": "Cài Đặt Thư Viện", + "HeaderLibraryOrder": "Thứ Tự Thư Viện", + "HeaderLibraryFolders": "Thư Mục Của Thư Viện", + "HeaderLibraryAccess": "Truy Cập Thư Viện", + "HeaderLibraries": "Thư Viện", + "HeaderLatestRecordings": "Bản Ghi Âm/Ghi Hình Mới Nhất", + "HeaderLatestMusic": "Âm Nhạc Mới Nhất", + "HeaderLatestMedia": "Nội Dung Mới Nhất", + "HeaderKodiMetadataHelp": "Để bật hoặc tắt dữ liệu từ NFO, hãy chỉnh sửa thư viện trong phần cài đặt thư viện của Jellyfin và điều chỉnh phần lưu trữ dữ liệu bổ trợ.", + "HeaderKeepSeries": "Lưu Series", + "HeaderKeepRecording": "Tiếp Tục Ghi Âm/Ghi Hình", + "HeaderItems": "Mục", + "HeaderInstantMix": "Trộn Lẫn Nhanh", + "HeaderInstall": "Cài Đặt", + "HeaderImageSettings": "Thiết Lập Hình Ảnh", + "HeaderImageOptions": "Tuỳ Chọn Hình Ảnh", + "HeaderIdentifyItemHelp": "Hãy nhập một hoặc nhiều điều kiện tìm kiếm. Xoá điều kiện để tăng số lượng kết quả tìm kiếm.", + "HeaderIdentificationHeader": "Thông Tin Nhận Biết Trong Phần Đầu", + "HeaderIdentificationCriteriaHelp": "Nhập vào ít nhật một thông tin nhận biết.", + "HeaderIdentification": "Thông Tin Nhận Biết", + "HeaderHttpHeaders": "HTTP Headers", + "HeaderHome": "Trang Chủ", + "HeaderGuideProviders": "Nhà Cung Cấp Lịch Phát Sóng TV", + "HeaderGenres": "Thể Loại", + "HeaderForgotPassword": "Quên Mật Khẩu", + "HeaderForKids": "Dành Cho Trẻ Em", + "HeaderFilters": "Bộ Lọc", + "HeaderFetcherSettings": "Cài Đặt Chương Trình Tải Xuống", + "HeaderFetchImages": "Tải Hình Ảnh:", + "HeaderFeatures": "Nổi Bật", + "HeaderFavoritePeople": "Nhân Vật Yêu Thích", + "HeaderFavoriteAlbums": "Album Yêu Thích", + "HeaderFavoriteBooks": "Sách Yêu Thích", + "HeaderFavoriteVideos": "Video Yêu Thích", + "HeaderFavoriteSongs": "Bài Hát Yêu Thích", + "HeaderFavoriteArtists": "Nghệ Sĩ Yêu Thích", + "HeaderFavoriteEpisodes": "Tập Phim Yêu Thích", + "HeaderFavoriteShows": "Chương Trình Yêu Thích", + "HeaderFavoriteMovies": "Phim Yêu Thích", + "HeaderExternalIds": "Mã Định Danh Từ Bên Ngoài:", + "HeaderError": "Lỗi", + "HeaderEpisodes": "Tập", + "HeaderEnabledFieldsHelp": "Bỏ chọn một mục để khoá lựa chọn đó và không để nó thay đổi.", + "HeaderEnabledFields": "Những Mục Được Kích Hoạt", + "HeaderEditImages": "Chỉnh Sửa Hình Ảnh", + "HeaderEasyPinCode": "Mã PIN Đơn Giản", + "HeaderDownloadSync": "Tải Xuống Và Đồng Bộ", + "HeaderDisplay": "Hiển Thị", + "HeaderDirectPlayProfileHelp": "Thêm thiết lập phát trực tiếp để chỉ ra những định dạng mà thiết bị có thể phát trực tiếp mà không cần chuyển mã.", + "HeaderDirectPlayProfile": "Thiết Lập Phát Trực Tiếp", + "HeaderDevices": "Thiết Bị", + "HeaderDeviceAccess": "Truy Cập Thiết Bị", + "HeaderDeveloperInfo": "Thông Tin Nhà Phát Triển", + "HeaderDetectMyDevices": "Tìm Kiếm Những Thiết Bị Của Tôi", + "HeaderDeleteTaskTrigger": "Xoá Kích Hoạt Tác Vụ", + "HeaderDeleteProvider": "Xoá Nhà Cung Cấp", + "HeaderDeleteItems": "Xoá Những Mục Này", + "HeaderDeleteItem": "Xoá Mục Này", + "HeaderDeleteDevice": "Xoá Thiết Bị", + "HeaderDefaultRecordingSettings": "Thiết Lập Ghi Âm/Ghi Hình Mặc Định" } From 9e3ca706c45cbca23bc55709dd623e58c090eb3e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 4 May 2020 12:44:12 +0200 Subject: [PATCH 28/32] Force the use of single quotes --- .eslintrc.js | 1 + gulpfile.js | 6 +- src/bundle.js | 104 +- .../accessschedule/accessschedule.js | 42 +- src/components/actionsheet/actionsheet.js | 2 +- src/components/activitylog.js | 72 +- src/components/alphapicker/alphapicker.js | 4 +- src/components/appRouter.js | 14 +- src/components/apphost.js | 156 +-- src/components/autoFocuser.js | 30 +- src/components/backdrop/backdrop.js | 6 +- src/components/backdropscreensaver/plugin.js | 20 +- src/components/cardbuilder/cardBuilder.js | 66 +- .../cardbuilder/chaptercardbuilder.js | 2 +- src/components/castSenderApi.js | 10 +- src/components/channelmapper/channelmapper.js | 74 +- .../chromecast/chromecasthelpers.js | 66 +- src/components/chromecast/chromecastplayer.js | 86 +- .../collectioneditor/collectioneditor.js | 14 +- src/components/confirm/confirm.js | 2 +- src/components/dialogHelper/dialogHelper.js | 2 +- .../directorybrowser/directorybrowser.js | 166 +-- .../displaysettings/displaysettings.js | 2 +- src/components/favoriteitems.js | 94 +- src/components/fetchhelper.js | 4 +- src/components/filedownloader.js | 2 +- src/components/filterdialog/filterdialog.js | 272 ++-- src/components/focusManager.js | 2 +- src/components/groupedcards.js | 24 +- src/components/guide/guide.js | 18 +- .../homescreensettings/homescreensettings.js | 10 +- src/components/homesections/homesections.js | 40 +- src/components/htmlMediaHelper.js | 12 +- src/components/htmlaudioplayer/plugin.js | 2 +- src/components/htmlvideoplayer/plugin.js | 64 +- .../imagedownloader/imagedownloader.js | 24 +- src/components/imageeditor/imageeditor.js | 16 +- .../imageoptionseditor/imageoptionseditor.js | 68 +- src/components/images/imageFetcher.js | 4 +- src/components/images/imageLoader.js | 2 +- src/components/imageuploader/imageuploader.js | 12 +- src/components/indicators/indicators.js | 2 +- src/components/itemMediaInfo/itemMediaInfo.js | 112 +- src/components/itemcontextmenu.js | 334 ++--- src/components/itemhelper.js | 48 +- .../itemidentifier/itemidentifier.js | 210 ++-- .../lazyloader-intersectionobserver.js | 2 +- .../lazyloader/lazyloader-scroll.js | 4 +- .../libraryoptionseditor.js | 412 +++--- src/components/listview/listview.js | 10 +- src/components/loading/loading.js | 2 +- src/components/loading/loadingLegacy.js | 2 +- src/components/logoscreensaver/plugin.js | 128 +- src/components/mediainfo/mediainfo.js | 40 +- .../medialibrarycreator.js | 110 +- .../medialibraryeditor/medialibraryeditor.js | 96 +- .../metadataeditor/metadataeditor.js | 174 +-- src/components/multiselect/multiselect.js | 198 +-- src/components/notifications/notifications.js | 32 +- src/components/nowplayingbar/nowplayingbar.js | 6 +- src/components/photoplayer/plugin.js | 2 +- .../playback/experimentalwarnings.js | 8 +- src/components/playback/mediasession.js | 6 +- src/components/playback/nowplayinghelper.js | 4 +- .../playback/playaccessvalidation.js | 2 +- src/components/playback/playbackmanager.js | 100 +- .../playback/playbackorientation.js | 2 +- .../playback/playerSelectionMenu.js | 2 +- src/components/playback/playersettingsmenu.js | 4 +- src/components/playback/playqueuemanager.js | 2 +- .../playbacksettings/playbacksettings.js | 12 +- src/components/playerstats/playerstats.js | 36 +- .../playlisteditor/playlisteditor.js | 12 +- src/components/prompt/prompt.js | 2 +- .../recordingcreator/recordingcreator.js | 4 +- src/components/remotecontrol/remotecontrol.js | 396 +++--- src/components/sanitizefilename.js | 8 +- src/components/scrollManager.js | 40 +- src/components/search/searchresults.js | 34 +- src/components/serverNotifications.js | 16 +- src/components/serverRestartDialog.js | 2 +- src/components/serviceworker/notifications.js | 4 +- src/components/sessionplayer.js | 4 +- src/components/skinManager.js | 26 +- src/components/slideshow/slideshow.js | 12 +- .../subtitleeditor/subtitleeditor.js | 4 +- .../subtitleappearancehelper.js | 2 +- .../subtitlesettings/subtitlesettings.js | 12 +- src/components/subtitlesync/subtitlesync.js | 50 +- src/components/toast/toast.js | 2 +- src/components/tunerpicker.js | 112 +- src/components/tvproviders/schedulesdirect.js | 162 +-- src/components/tvproviders/xmltv.js | 118 +- src/components/upnextdialog/upnextdialog.js | 4 +- .../userdatabuttons/userdatabuttons.js | 4 +- src/components/viewContainer.js | 60 +- src/components/youtubeplayer/plugin.js | 4 +- src/controllers/auth/addserver.js | 38 +- src/controllers/auth/forgotpassword.js | 44 +- src/controllers/auth/forgotpasswordpin.js | 30 +- src/controllers/auth/login.js | 124 +- src/controllers/auth/selectserver.js | 80 +- src/controllers/dashboard/apikeys.js | 60 +- src/controllers/dashboard/dashboard.js | 444 +++---- src/controllers/dashboard/devices/device.js | 30 +- src/controllers/dashboard/devices/devices.js | 88 +- src/controllers/dashboard/dlna/dlnaprofile.js | 698 +++++------ .../dashboard/dlna/dlnaprofiles.js | 54 +- .../dashboard/dlna/dlnasettings.js | 58 +- src/controllers/dashboard/encodingsettings.js | 158 +-- src/controllers/dashboard/general.js | 86 +- src/controllers/dashboard/librarydisplay.js | 62 +- src/controllers/dashboard/logs.js | 32 +- src/controllers/dashboard/medialibrarypage.js | 238 ++-- .../dashboard/metadataimagespage.js | 42 +- src/controllers/dashboard/metadatanfo.js | 62 +- src/controllers/dashboard/networking.js | 154 +-- .../dashboard/notifications/notification.js | 78 +- .../dashboard/notifications/notifications.js | 40 +- .../dashboard/playbackconfiguration.js | 30 +- src/controllers/dashboard/plugins/add.js | 72 +- .../dashboard/plugins/available.js | 78 +- .../dashboard/plugins/installed.js | 104 +- .../dashboard/scheduledtasks/scheduledtask.js | 178 +-- .../scheduledtasks/scheduledtasks.js | 130 +- src/controllers/dashboard/serveractivity.js | 20 +- .../dashboard/streamingsettings.js | 28 +- src/controllers/edititemmetadata.js | 14 +- src/controllers/favorites.js | 108 +- src/controllers/home.js | 18 +- src/controllers/hometab.js | 10 +- src/controllers/itemdetailpage.js | 1100 ++++++++--------- src/controllers/list.js | 586 ++++----- src/controllers/livetv/livetvchannels.js | 30 +- src/controllers/livetv/livetvguide.js | 4 +- src/controllers/livetv/livetvrecordings.js | 48 +- src/controllers/livetv/livetvschedule.js | 52 +- src/controllers/livetv/livetvseriestimers.js | 20 +- src/controllers/livetv/livetvsuggested.js | 132 +- src/controllers/livetvguideprovider.js | 20 +- src/controllers/livetvsettings.js | 84 +- src/controllers/livetvstatus.js | 218 ++-- src/controllers/livetvtuner.js | 172 +-- src/controllers/movies/moviecollections.js | 114 +- src/controllers/movies/moviegenres.js | 66 +- src/controllers/movies/movies.js | 150 +-- src/controllers/movies/moviesrecommended.js | 174 +-- src/controllers/movies/movietrailers.js | 116 +- src/controllers/music/musicalbums.js | 124 +- src/controllers/music/musicartists.js | 82 +- src/controllers/music/musicgenres.js | 38 +- src/controllers/music/musicplaylists.js | 24 +- src/controllers/music/musicrecommended.js | 162 +-- src/controllers/music/songs.js | 78 +- src/controllers/playback/nowplaying.js | 10 +- src/controllers/playback/videoosd.js | 568 ++++----- src/controllers/searchpage.js | 14 +- src/controllers/shows/episodes.js | 104 +- src/controllers/shows/tvgenres.js | 66 +- src/controllers/shows/tvlatest.js | 24 +- src/controllers/shows/tvrecommended.js | 136 +- src/controllers/shows/tvshows.js | 134 +- src/controllers/shows/tvstudios.js | 22 +- src/controllers/shows/tvupcoming.js | 44 +- src/controllers/user/display.js | 20 +- src/controllers/user/home.js | 18 +- src/controllers/user/menu.js | 50 +- src/controllers/user/playback.js | 18 +- src/controllers/user/profile.js | 64 +- src/controllers/user/subtitles.js | 18 +- src/controllers/useredit.js | 176 +-- src/controllers/userlibraryaccess.js | 118 +- src/controllers/usernew.js | 82 +- src/controllers/userparentalcontrol.js | 144 +-- src/controllers/userpasswordpage.js | 110 +- src/controllers/userprofilespage.js | 162 +-- src/controllers/wizard/finish.js | 12 +- src/controllers/wizard/remoteaccess.js | 24 +- src/controllers/wizard/settings.js | 44 +- src/controllers/wizard/start.js | 34 +- src/controllers/wizard/user.js | 40 +- .../emby-itemscontainer.js | 2 +- src/elements/emby-select/emby-select.js | 4 +- src/elements/emby-tabs/emby-tabs.js | 10 +- src/legacy/dashboard.js | 12 +- src/legacy/fnchecked.js | 4 +- src/legacy/focusPreventScroll.js | 8 +- src/legacy/selectmenu.js | 4 +- src/scripts/apploader.js | 10 +- src/scripts/autobackdrops.js | 22 +- src/scripts/browser.js | 24 +- src/scripts/browserdeviceprofile.js | 4 +- src/scripts/datetime.js | 18 +- src/scripts/dom.js | 24 +- src/scripts/editorsidebar.js | 116 +- src/scripts/gamepadtokey.js | 44 +- src/scripts/imagehelper.js | 112 +- src/scripts/inputManager.js | 2 +- src/scripts/itembynamedetailpage.js | 276 ++--- src/scripts/keyboardnavigation.js | 110 +- src/scripts/librarybrowser.js | 92 +- src/scripts/librarymenu.js | 530 ++++---- src/scripts/livetvcomponents.js | 44 +- src/scripts/mouseManager.js | 2 +- src/scripts/playlistedit.js | 20 +- src/scripts/playlists.js | 74 +- src/scripts/routes.js | 398 +++--- src/scripts/searchtab.js | 10 +- src/scripts/settings/webSettings.js | 4 +- src/scripts/site.js | 832 ++++++------- src/scripts/taskbutton.js | 32 +- src/scripts/themeloader.js | 14 +- src/serviceworker.js | 2 +- src/standalone.js | 2 +- webpack.common.js | 34 +- webpack.dev.js | 20 +- webpack.prod.js | 12 +- 217 files changed, 8541 insertions(+), 8540 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 6a01fe5bf7..cd5dc01457 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -40,6 +40,7 @@ module.exports = { 'no-multiple-empty-lines': ["error", { "max": 1 }], 'no-trailing-spaces': ["error"], 'one-var': ["error", "never"], + 'quotes': ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": false }], 'semi': ["error"], 'space-before-blocks': ["error"] }, diff --git a/gulpfile.js b/gulpfile.js index 0e97324553..6c33167386 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -8,8 +8,8 @@ const htmlmin = require('gulp-htmlmin'); const imagemin = require('gulp-imagemin'); const sourcemaps = require('gulp-sourcemaps'); const mode = require('gulp-mode')({ - modes: ["development", "production"], - default: "development", + modes: ['development', 'production'], + default: 'development', verbose: false }); const stream = require('webpack-stream'); @@ -55,7 +55,7 @@ const options = { function serve() { browserSync.init({ server: { - baseDir: "./dist" + baseDir: './dist' }, port: 8080 }); diff --git a/src/bundle.js b/src/bundle.js index 8a829103fa..c05778fd9b 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -5,150 +5,150 @@ var _define = window.define; // document-register-element -var docRegister = require("document-register-element"); -_define("document-register-element", function() { +var docRegister = require('document-register-element'); +_define('document-register-element', function() { return docRegister; }); // fetch -var fetch = require("whatwg-fetch"); -_define("fetch", function() { +var fetch = require('whatwg-fetch'); +_define('fetch', function() { return fetch; }); // query-string -var query = require("query-string"); -_define("queryString", function() { +var query = require('query-string'); +_define('queryString', function() { return query; }); // flvjs -var flvjs = require("flv.js/dist/flv").default; -_define("flvjs", function() { +var flvjs = require('flv.js/dist/flv').default; +_define('flvjs', function() { return flvjs; }); // jstree -var jstree = require("jstree"); -require("jstree/dist/themes/default/style.css"); -_define("jstree", function() { +var jstree = require('jstree'); +require('jstree/dist/themes/default/style.css'); +_define('jstree', function() { return jstree; }); // jquery -var jquery = require("jquery"); -_define("jQuery", function() { +var jquery = require('jquery'); +_define('jQuery', function() { return jquery; }); // hlsjs -var hlsjs = require("hls.js"); -_define("hlsjs", function() { +var hlsjs = require('hls.js'); +_define('hlsjs', function() { return hlsjs; }); // howler -var howler = require("howler"); -_define("howler", function() { +var howler = require('howler'); +_define('howler', function() { return howler; }); // resize-observer-polyfill -var resize = require("resize-observer-polyfill").default; -_define("resize-observer-polyfill", function() { +var resize = require('resize-observer-polyfill').default; +_define('resize-observer-polyfill', function() { return resize; }); // shaka -var shaka = require("shaka-player"); -_define("shaka", function() { +var shaka = require('shaka-player'); +_define('shaka', function() { return shaka; }); // swiper -var swiper = require("swiper/js/swiper"); -require("swiper/css/swiper.min.css"); -_define("swiper", function() { +var swiper = require('swiper/js/swiper'); +require('swiper/css/swiper.min.css'); +_define('swiper', function() { return swiper; }); // sortable -var sortable = require("sortablejs").default; -_define("sortable", function() { +var sortable = require('sortablejs').default; +_define('sortable', function() { return sortable; }); // webcomponents -var webcomponents = require("webcomponents.js/webcomponents-lite"); -_define("webcomponents", function() { +var webcomponents = require('webcomponents.js/webcomponents-lite'); +_define('webcomponents', function() { return webcomponents; }); // libass-wasm -var libassWasm = require("libass-wasm"); -_define("JavascriptSubtitlesOctopus", function() { +var libassWasm = require('libass-wasm'); +_define('JavascriptSubtitlesOctopus', function() { return libassWasm; }); // material-icons -var materialIcons = require("material-design-icons-iconfont/dist/material-design-icons.css"); -_define("material-icons", function() { +var materialIcons = require('material-design-icons-iconfont/dist/material-design-icons.css'); +_define('material-icons', function() { return materialIcons; }); // noto font -var noto = require("jellyfin-noto"); -_define("jellyfin-noto", function () { +var noto = require('jellyfin-noto'); +_define('jellyfin-noto', function () { return noto; }); // page.js -var page = require("page"); -_define("page", function() { +var page = require('page'); +_define('page', function() { return page; }); -var polyfill = require("@babel/polyfill/dist/polyfill"); -_define("polyfill", function () { +var polyfill = require('@babel/polyfill/dist/polyfill'); +_define('polyfill', function () { return polyfill; }); // domtokenlist-shim -var classlist = require("classlist.js"); -_define("classlist-polyfill", function () { +var classlist = require('classlist.js'); +_define('classlist-polyfill', function () { return classlist; }); // Date-FNS -var dateFns = require("date-fns"); -_define("date-fns", function () { +var dateFns = require('date-fns'); +_define('date-fns', function () { return dateFns; }); -var dateFnsLocale = require("date-fns/locale"); -_define("date-fns/locale", function () { +var dateFnsLocale = require('date-fns/locale'); +_define('date-fns/locale', function () { return dateFnsLocale; }); -var fast_text_encoding = require("fast-text-encoding"); -_define("fast-text-encoding", function () { +var fast_text_encoding = require('fast-text-encoding'); +_define('fast-text-encoding', function () { return fast_text_encoding; }); // intersection-observer -var intersection_observer = require("intersection-observer"); -_define("intersection-observer", function () { +var intersection_observer = require('intersection-observer'); +_define('intersection-observer', function () { return intersection_observer; }); // screenfull -var screenfull = require("screenfull"); -_define("screenfull", function () { +var screenfull = require('screenfull'); +_define('screenfull', function () { return screenfull; }); // headroom.js -var headroom = require("headroom.js/dist/headroom"); -_define("headroom", function () { +var headroom = require('headroom.js/dist/headroom'); +_define('headroom', function () { return headroom; }); diff --git a/src/components/accessschedule/accessschedule.js b/src/components/accessschedule/accessschedule.js index 28b09b893b..870231cf03 100644 --- a/src/components/accessschedule/accessschedule.js +++ b/src/components/accessschedule/accessschedule.js @@ -1,5 +1,5 @@ -define(["dialogHelper", "datetime", "globalize", "emby-select", "paper-icon-button-light", "formDialogStyle"], function (dialogHelper, datetime, globalize) { - "use strict"; +define(['dialogHelper', 'datetime', 'globalize', 'emby-select', 'paper-icon-button-light', 'formDialogStyle'], function (dialogHelper, datetime, globalize) { + 'use strict'; function getDisplayTime(hours) { var minutes = 0; @@ -13,32 +13,32 @@ define(["dialogHelper", "datetime", "globalize", "emby-select", "paper-icon-butt } function populateHours(context) { - var html = ""; + var html = ''; for (var i = 0; i < 24; i++) { - html += '"; + html += ''; } - html += '"; - context.querySelector("#selectStart").innerHTML = html; - context.querySelector("#selectEnd").innerHTML = html; + html += ''; + context.querySelector('#selectStart').innerHTML = html; + context.querySelector('#selectEnd').innerHTML = html; } function loadSchedule(context, schedule) { - context.querySelector("#selectDay").value = schedule.DayOfWeek || "Sunday"; - context.querySelector("#selectStart").value = schedule.StartHour || 0; - context.querySelector("#selectEnd").value = schedule.EndHour || 0; + context.querySelector('#selectDay').value = schedule.DayOfWeek || 'Sunday'; + context.querySelector('#selectStart').value = schedule.StartHour || 0; + context.querySelector('#selectEnd').value = schedule.EndHour || 0; } function submitSchedule(context, options) { var updatedSchedule = { - DayOfWeek: context.querySelector("#selectDay").value, - StartHour: context.querySelector("#selectStart").value, - EndHour: context.querySelector("#selectEnd").value + DayOfWeek: context.querySelector('#selectDay').value, + StartHour: context.querySelector('#selectStart').value, + EndHour: context.querySelector('#selectEnd').value }; if (parseFloat(updatedSchedule.StartHour) >= parseFloat(updatedSchedule.EndHour)) { - return void alert(globalize.translate("ErrorMessageStartHourGreaterThanEnd")); + return void alert(globalize.translate('ErrorMessageStartHourGreaterThanEnd')); } context.submitted = true; @@ -50,32 +50,32 @@ define(["dialogHelper", "datetime", "globalize", "emby-select", "paper-icon-butt show: function (options) { return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(); - xhr.open("GET", "components/accessschedule/accessschedule.template.html", true); + xhr.open('GET', 'components/accessschedule/accessschedule.template.html', true); xhr.onload = function (e) { var template = this.response; var dlg = dialogHelper.createDialog({ removeOnClose: true, - size: "small" + size: 'small' }); - dlg.classList.add("formDialog"); - var html = ""; + dlg.classList.add('formDialog'); + var html = ''; html += globalize.translateDocument(template); dlg.innerHTML = html; populateHours(dlg); loadSchedule(dlg, options.schedule); dialogHelper.open(dlg); - dlg.addEventListener("close", function () { + dlg.addEventListener('close', function () { if (dlg.submitted) { resolve(options.schedule); } else { reject(); } }); - dlg.querySelector(".btnCancel").addEventListener("click", function (e) { + dlg.querySelector('.btnCancel').addEventListener('click', function (e) { dialogHelper.close(dlg); }); - dlg.querySelector("form").addEventListener("submit", function (e) { + dlg.querySelector('form').addEventListener('submit', function (e) { submitSchedule(dlg, options); e.preventDefault(); return false; diff --git a/src/components/actionsheet/actionsheet.js b/src/components/actionsheet/actionsheet.js index 0828c4bba2..e08fbf4a25 100644 --- a/src/components/actionsheet/actionsheet.js +++ b/src/components/actionsheet/actionsheet.js @@ -136,7 +136,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu // Admittedly a hack but right now the scrollbar is being factored into the width which is causing truncation if (options.items.length > 20) { var minWidth = dom.getWindowSize().innerWidth >= 300 ? 240 : 200; - style += "min-width:" + minWidth + "px;"; + style += 'min-width:' + minWidth + 'px;'; } var i; diff --git a/src/components/activitylog.js b/src/components/activitylog.js index 796f995bc7..a7b3f48bc2 100644 --- a/src/components/activitylog.js +++ b/src/components/activitylog.js @@ -1,20 +1,20 @@ -define(["events", "globalize", "dom", "date-fns", "dfnshelper", "userSettings", "serverNotifications", "connectionManager", "emby-button", "listViewStyle"], function (events, globalize, dom, datefns, dfnshelper, userSettings, serverNotifications, connectionManager) { - "use strict"; +define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings', 'serverNotifications', 'connectionManager', 'emby-button', 'listViewStyle'], function (events, globalize, dom, datefns, dfnshelper, userSettings, serverNotifications, connectionManager) { + 'use strict'; function getEntryHtml(entry, apiClient) { - var html = ""; + var html = ''; html += '
'; - var color = "#00a4dc"; - var icon = "notifications"; + var color = '#00a4dc'; + var icon = 'notifications'; - if ("Error" == entry.Severity || "Fatal" == entry.Severity || "Warn" == entry.Severity) { - color = "#cc0000"; - icon = "notification_important"; + if ('Error' == entry.Severity || 'Fatal' == entry.Severity || 'Warn' == entry.Severity) { + color = '#cc0000'; + icon = 'notification_important'; } if (entry.UserId && entry.UserPrimaryImageTag) { html += '"; } else { @@ -24,36 +24,36 @@ define(["events", "globalize", "dom", "date-fns", "dfnshelper", "userSettings", html += '
'; html += '
'; html += entry.Name; - html += "
"; + html += '
'; html += '
'; html += datefns.formatRelative(Date.parse(entry.Date), Date.parse(new Date()), { locale: dfnshelper.getLocale() }); - html += "
"; + html += '
'; html += '
'; - html += entry.ShortOverview || ""; - html += "
"; - html += "
"; + html += entry.ShortOverview || ''; + html += '
'; + html += '
'; if (entry.Overview) { - html += ''; + html += ''; } - return html += "
"; + return html += '
'; } function renderList(elem, apiClient, result, startIndex, limit) { elem.innerHTML = result.Items.map(function (i) { return getEntryHtml(i, apiClient); - }).join(""); + }).join(''); } function reloadData(instance, elem, apiClient, startIndex, limit) { if (null == startIndex) { - startIndex = parseInt(elem.getAttribute("data-activitystartindex") || "0"); + startIndex = parseInt(elem.getAttribute('data-activitystartindex') || '0'); } - limit = limit || parseInt(elem.getAttribute("data-activitylimit") || "7"); + limit = limit || parseInt(elem.getAttribute('data-activitylimit') || '7'); var minDate = new Date(); - var hasUserId = "false" !== elem.getAttribute("data-useractivity"); + var hasUserId = 'false' !== elem.getAttribute('data-useractivity'); if (hasUserId) { minDate.setTime(minDate.getTime() - 24 * 60 * 60 * 1000); // one day back @@ -61,22 +61,22 @@ define(["events", "globalize", "dom", "date-fns", "dfnshelper", "userSettings", minDate.setTime(minDate.getTime() - 7 * 24 * 60 * 60 * 1000); // one week back } - ApiClient.getJSON(ApiClient.getUrl("System/ActivityLog/Entries", { + ApiClient.getJSON(ApiClient.getUrl('System/ActivityLog/Entries', { startIndex: startIndex, limit: limit, minDate: minDate.toISOString(), hasUserId: hasUserId })).then(function (result) { - elem.setAttribute("data-activitystartindex", startIndex); - elem.setAttribute("data-activitylimit", limit); + elem.setAttribute('data-activitystartindex', startIndex); + elem.setAttribute('data-activitylimit', limit); if (!startIndex) { - var activityContainer = dom.parentWithClass(elem, "activityContainer"); + var activityContainer = dom.parentWithClass(elem, 'activityContainer'); if (activityContainer) { if (result.Items.length) { - activityContainer.classList.remove("hide"); + activityContainer.classList.remove('hide'); } else { - activityContainer.classList.add("hide"); + activityContainer.classList.add('hide'); } } } @@ -95,10 +95,10 @@ define(["events", "globalize", "dom", "date-fns", "dfnshelper", "userSettings", } function onListClick(e) { - var btnEntryInfo = dom.parentWithClass(e.target, "btnEntryInfo"); + var btnEntryInfo = dom.parentWithClass(e.target, 'btnEntryInfo'); if (btnEntryInfo) { - var id = btnEntryInfo.getAttribute("data-id"); + var id = btnEntryInfo.getAttribute('data-id'); var items = this.items; if (items) { @@ -114,7 +114,7 @@ define(["events", "globalize", "dom", "date-fns", "dfnshelper", "userSettings", } function showItemOverview(item) { - require(["alert"], function (alert) { + require(['alert'], function (alert) { alert({ text: item.Overview }); @@ -124,28 +124,28 @@ define(["events", "globalize", "dom", "date-fns", "dfnshelper", "userSettings", function ActivityLog(options) { this.options = options; var element = options.element; - element.classList.add("activityLogListWidget"); - element.addEventListener("click", onListClick.bind(this)); + element.classList.add('activityLogListWidget'); + element.addEventListener('click', onListClick.bind(this)); var apiClient = connectionManager.getApiClient(options.serverId); reloadData(this, element, apiClient); var onUpdate = onActivityLogUpdate.bind(this); this.updateFn = onUpdate; - events.on(serverNotifications, "ActivityLogEntry", onUpdate); - apiClient.sendMessage("ActivityLogEntryStart", "0,1500"); + events.on(serverNotifications, 'ActivityLogEntry', onUpdate); + apiClient.sendMessage('ActivityLogEntryStart', '0,1500'); } ActivityLog.prototype.destroy = function () { var options = this.options; if (options) { - options.element.classList.remove("activityLogListWidget"); - connectionManager.getApiClient(options.serverId).sendMessage("ActivityLogEntryStop", "0,1500"); + options.element.classList.remove('activityLogListWidget'); + connectionManager.getApiClient(options.serverId).sendMessage('ActivityLogEntryStop', '0,1500'); } var onUpdate = this.updateFn; if (onUpdate) { - events.off(serverNotifications, "ActivityLogEntry", onUpdate); + events.off(serverNotifications, 'ActivityLogEntry', onUpdate); } this.items = null; diff --git a/src/components/alphapicker/alphapicker.js b/src/components/alphapicker/alphapicker.js index 61ca23b8bc..79f74879e5 100644 --- a/src/components/alphapicker/alphapicker.js +++ b/src/components/alphapicker/alphapicker.js @@ -132,7 +132,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b if (alphaPickerButton) { var value = alphaPickerButton.getAttribute('data-value'); - element.dispatchEvent(new CustomEvent("alphavalueclicked", { + element.dispatchEvent(new CustomEvent('alphavalueclicked', { cancelable: false, detail: { value: value @@ -262,7 +262,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b } if (applyValue) { - element.dispatchEvent(new CustomEvent("alphavaluechanged", { + element.dispatchEvent(new CustomEvent('alphavaluechanged', { cancelable: false, detail: { value: value diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 17b51b376d..2e11ef88d9 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -16,7 +16,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM show('/settings/settings.html'); }, showNowPlaying: function () { - show("/nowplaying.html"); + show('/nowplaying.html'); } }; @@ -201,7 +201,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM var apiClient = this; if (data.status === 403) { - if (data.errorCode === "ParentalControl") { + if (data.errorCode === 'ParentalControl') { var isCurrentAllowed = currentRouteInfo ? (currentRouteInfo.route.anonymous || currentRouteInfo.route.startup) : true; @@ -541,15 +541,15 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM } function param(name, url) { - name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); - var regexS = "[\\?&]" + name + "=([^&#]*)"; - var regex = new RegExp(regexS, "i"); + name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); + var regexS = '[\\?&]' + name + '=([^&#]*)'; + var regex = new RegExp(regexS, 'i'); var results = regex.exec(url || getWindowLocationSearch()); if (results == null) { - return ""; + return ''; } else { - return decodeURIComponent(results[1].replace(/\+/g, " ")); + return decodeURIComponent(results[1].replace(/\+/g, ' ')); } } diff --git a/src/components/apphost.js b/src/components/apphost.js index e5f48ac42e..75e8ba17f1 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -1,17 +1,17 @@ -define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "globalize"], function (appSettings, browser, events, htmlMediaHelper, webSettings, globalize) { - "use strict"; +define(['appSettings', 'browser', 'events', 'htmlMediaHelper', 'webSettings', 'globalize'], function (appSettings, browser, events, htmlMediaHelper, webSettings, globalize) { + 'use strict'; function getBaseProfileOptions(item) { var disableHlsVideoAudioCodecs = []; if (item && htmlMediaHelper.enableHlsJsPlayer(item.RunTimeTicks, item.MediaType)) { if (browser.edge || browser.msie) { - disableHlsVideoAudioCodecs.push("mp3"); + disableHlsVideoAudioCodecs.push('mp3'); } - disableHlsVideoAudioCodecs.push("ac3"); - disableHlsVideoAudioCodecs.push("eac3"); - disableHlsVideoAudioCodecs.push("opus"); + disableHlsVideoAudioCodecs.push('ac3'); + disableHlsVideoAudioCodecs.push('eac3'); + disableHlsVideoAudioCodecs.push('opus'); } return { @@ -22,7 +22,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g function getDeviceProfileForWindowsUwp(item) { return new Promise(function (resolve, reject) { - require(["browserdeviceprofile", "environments/windows-uwp/mediacaps"], function (profileBuilder, uwpMediaCaps) { + require(['browserdeviceprofile', 'environments/windows-uwp/mediacaps'], function (profileBuilder, uwpMediaCaps) { var profileOptions = getBaseProfileOptions(item); profileOptions.supportsDts = uwpMediaCaps.supportsDTS(); profileOptions.supportsTrueHd = uwpMediaCaps.supportsDolby(); @@ -40,14 +40,14 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g } return new Promise(function (resolve) { - require(["browserdeviceprofile"], function (profileBuilder) { + require(['browserdeviceprofile'], function (profileBuilder) { var profile; if (window.NativeShell) { profile = window.NativeShell.AppHost.getDeviceProfile(profileBuilder); } else { var builderOpts = getBaseProfileOptions(item); - builderOpts.enableSsaRender = (item && !options.isRetry && "allcomplexformats" !== appSettings.get("subtitleburnin")); + builderOpts.enableSsaRender = (item && !options.isRetry && 'allcomplexformats' !== appSettings.get('subtitleburnin')); profile = profileBuilder(builderOpts); } @@ -57,12 +57,12 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g } function escapeRegExp(str) { - return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"); + return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1'); } function replaceAll(originalString, strReplace, strWith) { var strReplace2 = escapeRegExp(strReplace); - var reg = new RegExp(strReplace2, "ig"); + var reg = new RegExp(strReplace2, 'ig'); return originalString.replace(reg, strWith); } @@ -70,7 +70,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g var keys = []; if (keys.push(navigator.userAgent), keys.push(new Date().getTime()), self.btoa) { - var result = replaceAll(btoa(keys.join("|")), "=", "1"); + var result = replaceAll(btoa(keys.join('|')), '=', '1'); return Promise.resolve(result); } @@ -78,7 +78,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g } function getDeviceId() { - var key = "_deviceId2"; + var key = '_deviceId2'; var deviceId = appSettings.get(key); if (deviceId) { @@ -93,16 +93,16 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g function getDeviceName() { var deviceName; - deviceName = browser.tizen ? "Samsung Smart TV" : browser.web0s ? "LG Smart TV" : browser.operaTv ? "Opera TV" : browser.xboxOne ? "Xbox One" : browser.ps4 ? "Sony PS4" : browser.chrome ? "Chrome" : browser.edge ? "Edge" : browser.firefox ? "Firefox" : browser.msie ? "Internet Explorer" : browser.opera ? "Opera" : browser.safari ? "Safari" : "Web Browser"; + deviceName = browser.tizen ? 'Samsung Smart TV' : browser.web0s ? 'LG Smart TV' : browser.operaTv ? 'Opera TV' : browser.xboxOne ? 'Xbox One' : browser.ps4 ? 'Sony PS4' : browser.chrome ? 'Chrome' : browser.edge ? 'Edge' : browser.firefox ? 'Firefox' : browser.msie ? 'Internet Explorer' : browser.opera ? 'Opera' : browser.safari ? 'Safari' : 'Web Browser'; if (browser.ipad) { - deviceName += " iPad"; + deviceName += ' iPad'; } else { if (browser.iphone) { - deviceName += " iPhone"; + deviceName += ' iPhone'; } else { if (browser.android) { - deviceName += " Android"; + deviceName += ' Android'; } } } @@ -124,12 +124,12 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g } var element = document.documentElement; - return (element.requestFullscreen || element.mozRequestFullScreen || element.webkitRequestFullscreen || element.msRequestFullscreen) || document.createElement("video").webkitEnterFullscreen; + return (element.requestFullscreen || element.mozRequestFullScreen || element.webkitRequestFullscreen || element.msRequestFullscreen) || document.createElement('video').webkitEnterFullscreen; } function getSyncProfile() { return new Promise(function (resolve) { - require(["browserdeviceprofile", "appSettings"], function (profileBuilder, appSettings) { + require(['browserdeviceprofile', 'appSettings'], function (profileBuilder, appSettings) { var profile; if (window.NativeShell) { @@ -145,7 +145,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g } function getDefaultLayout() { - return "desktop"; + return 'desktop'; } function supportsHtmlMediaAutoplay() { @@ -162,20 +162,20 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g function supportsCue() { try { - var video = document.createElement("video"); - var style = document.createElement("style"); + var video = document.createElement('video'); + var style = document.createElement('style'); - style.textContent = "video::cue {background: inherit}"; + style.textContent = 'video::cue {background: inherit}'; document.body.appendChild(style); document.body.appendChild(video); - var cue = window.getComputedStyle(video, "::cue").background; + var cue = window.getComputedStyle(video, '::cue').background; document.body.removeChild(style); document.body.removeChild(video); return !!cue.length; } catch (err) { - console.error("error detecting cue support: " + err); + console.error('error detecting cue support: ' + err); return false; } } @@ -183,15 +183,15 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g function onAppVisible() { if (isHidden) { isHidden = false; - console.debug("triggering app resume event"); - events.trigger(appHost, "resume"); + console.debug('triggering app resume event'); + events.trigger(appHost, 'resume'); } } function onAppHidden() { if (!isHidden) { isHidden = true; - console.debug("app is hidden"); + console.debug('app is hidden'); } } @@ -199,88 +199,88 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g var features = []; if (navigator.share) { - features.push("sharing"); + features.push('sharing'); } if (!browser.edgeUwp && !browser.tv && !browser.xboxOne && !browser.ps4) { - features.push("filedownload"); + features.push('filedownload'); } if (browser.operaTv || browser.tizen || browser.orsay || browser.web0s) { - features.push("exit"); + features.push('exit'); } else { - features.push("exitmenu"); - features.push("plugins"); + features.push('exitmenu'); + features.push('plugins'); } if (!browser.operaTv && !browser.tizen && !browser.orsay && !browser.web0s && !browser.ps4) { - features.push("externallinks"); - features.push("externalpremium"); + features.push('externallinks'); + features.push('externalpremium'); } if (!browser.operaTv) { - features.push("externallinkdisplay"); + features.push('externallinkdisplay'); } if (supportsVoiceInput()) { - features.push("voiceinput"); + features.push('voiceinput'); } if (supportsHtmlMediaAutoplay()) { - features.push("htmlaudioautoplay"); - features.push("htmlvideoautoplay"); + features.push('htmlaudioautoplay'); + features.push('htmlvideoautoplay'); } if (browser.edgeUwp) { - features.push("sync"); + features.push('sync'); } if (supportsFullscreen()) { - features.push("fullscreenchange"); + features.push('fullscreenchange'); } if (browser.chrome || browser.edge && !browser.slow) { if (!browser.noAnimation && !browser.edgeUwp && !browser.xboxOne) { - features.push("imageanalysis"); + features.push('imageanalysis'); } } if (browser.tv || browser.xboxOne || browser.ps4 || browser.mobile) { - features.push("physicalvolumecontrol"); + features.push('physicalvolumecontrol'); } if (!browser.tv && !browser.xboxOne && !browser.ps4) { - features.push("remotecontrol"); + features.push('remotecontrol'); } if (!browser.operaTv && !browser.tizen && !browser.orsay && !browser.web0s && !browser.edgeUwp) { - features.push("remotevideo"); + features.push('remotevideo'); } - features.push("displaylanguage"); - features.push("otherapppromotions"); - features.push("displaymode"); - features.push("targetblank"); - features.push("screensaver"); + features.push('displaylanguage'); + features.push('otherapppromotions'); + features.push('displaymode'); + features.push('targetblank'); + features.push('screensaver'); webSettings.enableMultiServer().then(enabled => { - if (enabled) features.push("multiserver"); + if (enabled) features.push('multiserver'); }); if (!browser.orsay && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || supportsCue())) { - features.push("subtitleappearancesettings"); + features.push('subtitleappearancesettings'); } if (!browser.orsay) { - features.push("subtitleburnsettings"); + features.push('subtitleburnsettings'); } if (!browser.tv && !browser.ps4 && !browser.xboxOne) { - features.push("fileinput"); + features.push('fileinput'); } if (browser.chrome) { - features.push("chromecast"); + features.push('chromecast'); } return features; @@ -301,7 +301,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g window.close(); } } catch (err) { - console.error("error closing application: " + err); + console.error('error closing application: ' + err); } } @@ -315,15 +315,15 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g return; } - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { exitPromise = actionsheet.show({ - title: globalize.translate("MessageConfirmAppExit"), + title: globalize.translate('MessageConfirmAppExit'), items: [ - {id: "yes", name: globalize.translate("Yes")}, - {id: "no", name: globalize.translate("No")} + {id: 'yes', name: globalize.translate('Yes')}, + {id: 'no', name: globalize.translate('No')} ] }).then(function (value) { - if (value === "yes") { + if (value === 'yes') { doExit(); } }).finally(function () { @@ -334,15 +334,15 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g var deviceId; var deviceName; - var appName = "Jellyfin Web"; - var appVersion = "10.6.0"; + var appName = 'Jellyfin Web'; + var appVersion = '10.6.0'; var appHost = { getWindowState: function () { - return document.windowState || "Normal"; + return document.windowState || 'Normal'; }, setWindowState: function (state) { - alert("setWindowState is not supported and should not be called"); + alert('setWindowState is not supported and should not be called'); }, exit: function () { if (!!window.appMode && browser.tizen) { @@ -359,7 +359,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g return -1 !== supportedFeatures.indexOf(command.toLowerCase()); }, preferVisualCards: browser.android || browser.chrome, - moreIcon: browser.android ? "more_vert" : "more_horiz", + moreIcon: browser.android ? 'more_vert' : 'more_horiz', getSyncProfile: getSyncProfile, getDefaultLayout: function () { if (window.NativeShell) { @@ -395,16 +395,16 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g return {}; }, setThemeColor: function (color) { - var metaThemeColor = document.querySelector("meta[name=theme-color]"); + var metaThemeColor = document.querySelector('meta[name=theme-color]'); if (metaThemeColor) { - metaThemeColor.setAttribute("content", color); + metaThemeColor.setAttribute('content', color); } }, setUserScalable: function (scalable) { if (!browser.tv) { - var att = scalable ? "width=device-width, initial-scale=1, minimum-scale=1, user-scalable=yes" : "width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"; - document.querySelector("meta[name=viewport]").setAttribute("content", att); + var att = scalable ? 'width=device-width, initial-scale=1, minimum-scale=1, user-scalable=yes' : 'width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no'; + document.querySelector('meta[name=viewport]').setAttribute('content', att); } } }; @@ -413,12 +413,12 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g var hidden; var visibilityChange; - if (typeof document.hidden !== "undefined") { /* eslint-disable-line compat/compat */ - hidden = "hidden"; - visibilityChange = "visibilitychange"; - } else if (typeof document.webkitHidden !== "undefined") { - hidden = "webkitHidden"; - visibilityChange = "webkitvisibilitychange"; + if (typeof document.hidden !== 'undefined') { /* eslint-disable-line compat/compat */ + hidden = 'hidden'; + visibilityChange = 'visibilitychange'; + } else if (typeof document.webkitHidden !== 'undefined') { + hidden = 'webkitHidden'; + visibilityChange = 'webkitvisibilitychange'; } document.addEventListener(visibilityChange, function () { @@ -431,8 +431,8 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "g }, false); if (self.addEventListener) { - self.addEventListener("focus", onAppVisible); - self.addEventListener("blur", onAppHidden); + self.addEventListener('focus', onAppVisible); + self.addEventListener('blur', onAppHidden); } return appHost; diff --git a/src/components/autoFocuser.js b/src/components/autoFocuser.js index 43c341bfdf..0a10cabd2f 100644 --- a/src/components/autoFocuser.js +++ b/src/components/autoFocuser.js @@ -5,8 +5,8 @@ * @module components/autoFocuser */ -import focusManager from "focusManager"; -import layoutManager from "layoutManager"; +import focusManager from 'focusManager'; +import layoutManager from 'layoutManager'; /** * Previously selected element. @@ -28,11 +28,11 @@ import layoutManager from "layoutManager"; return; } - window.addEventListener("focusin", function (e) { + window.addEventListener('focusin', function (e) { activeElement = e.target; }); - console.debug("AutoFocuser enabled"); + console.debug('AutoFocuser enabled'); } /** @@ -51,21 +51,21 @@ import layoutManager from "layoutManager"; 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")); + 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"))); + candidates = candidates.concat(Array.from(container.querySelectorAll('.btnResume'))); + candidates = candidates.concat(Array.from(container.querySelectorAll('.btnPlay'))); let focusedElement; @@ -81,7 +81,7 @@ import layoutManager from "layoutManager"; if (!focusedElement) { // FIXME: Multiple itemsContainers - const itemsContainer = container.querySelector(".itemsContainer"); + const itemsContainer = container.querySelector('.itemsContainer'); if (itemsContainer) { focusedElement = focusManager.autoFocus(itemsContainer); diff --git a/src/components/backdrop/backdrop.js b/src/components/backdrop/backdrop.js index ec5b411853..c15e35524c 100644 --- a/src/components/backdrop/backdrop.js +++ b/src/components/backdrop/backdrop.js @@ -1,4 +1,4 @@ -define(['browser', 'connectionManager', 'playbackManager', 'dom', "userSettings", 'css!./backdrop'], function (browser, connectionManager, playbackManager, dom, userSettings) { +define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings', 'css!./backdrop'], function (browser, connectionManager, playbackManager, dom, userSettings) { 'use strict'; function enableAnimation(elem) { @@ -180,7 +180,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', "userSettings" if (item.BackdropImageTags && item.BackdropImageTags.length > 0) { return item.BackdropImageTags.map(function (imgTag, index) { return apiClient.getScaledImageUrl(item.BackdropItemId || item.Id, Object.assign(imageOptions, { - type: "Backdrop", + type: 'Backdrop', tag: imgTag, maxWidth: dom.getScreenWidth(), index: index @@ -191,7 +191,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', "userSettings" if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { return item.ParentBackdropImageTags.map(function (imgTag, index) { return apiClient.getScaledImageUrl(item.ParentBackdropItemId, Object.assign(imageOptions, { - type: "Backdrop", + type: 'Backdrop', tag: imgTag, maxWidth: dom.getScreenWidth(), index: index diff --git a/src/components/backdropscreensaver/plugin.js b/src/components/backdropscreensaver/plugin.js index 55de27a138..dc0a906ddb 100644 --- a/src/components/backdropscreensaver/plugin.js +++ b/src/components/backdropscreensaver/plugin.js @@ -1,12 +1,12 @@ -define(["connectionManager"], function (connectionManager) { +define(['connectionManager'], function (connectionManager) { return function () { var self = this; - self.name = "Backdrop ScreenSaver"; - self.type = "screensaver"; - self.id = "backdropscreensaver"; + self.name = 'Backdrop ScreenSaver'; + self.type = 'screensaver'; + self.id = 'backdropscreensaver'; self.supportsAnonymous = false; var currentSlideshow; @@ -14,12 +14,12 @@ define(["connectionManager"], function (connectionManager) { self.show = function () { var query = { - ImageTypes: "Backdrop", - EnableImageTypes: "Backdrop", - IncludeItemTypes: "Movie,Series,MusicArtist", - SortBy: "Random", + ImageTypes: 'Backdrop', + EnableImageTypes: 'Backdrop', + IncludeItemTypes: 'Movie,Series,MusicArtist', + SortBy: 'Random', Recursive: true, - Fields: "Taglines", + Fields: 'Taglines', ImageTypeLimit: 1, StartIndex: 0, Limit: 200 @@ -30,7 +30,7 @@ define(["connectionManager"], function (connectionManager) { if (result.Items.length) { - require(["slideshow"], function (slideshow) { + require(['slideshow'], function (slideshow) { var newSlideShow = new slideshow({ showTitle: true, diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index faafc6f70e..43ca28f01d 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -286,7 +286,7 @@ import 'programStyles'; * @param {Object} options - Options for handling the items. */ function setCardData(items, options) { - options.shape = options.shape || "auto"; + options.shape = options.shape || 'auto'; const primaryImageAspectRatio = imageLoader.getPrimaryImageAspectRatio(items); @@ -509,7 +509,7 @@ import 'programStyles'; if (options.preferThumb && item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Thumb", + type: 'Thumb', maxWidth: width, tag: item.ImageTags.Thumb }); @@ -517,7 +517,7 @@ import 'programStyles'; } else if ((options.preferBanner || shape === 'banner') && item.ImageTags && item.ImageTags.Banner) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Banner", + type: 'Banner', maxWidth: width, tag: item.ImageTags.Banner }); @@ -525,7 +525,7 @@ import 'programStyles'; } else if (options.preferDisc && item.ImageTags && item.ImageTags.Disc) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Disc", + type: 'Disc', maxWidth: width, tag: item.ImageTags.Disc }); @@ -533,7 +533,7 @@ import 'programStyles'; } else if (options.preferLogo && item.ImageTags && item.ImageTags.Logo) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Logo", + type: 'Logo', maxWidth: width, tag: item.ImageTags.Logo }); @@ -541,7 +541,7 @@ import 'programStyles'; } else if (options.preferLogo && item.ParentLogoImageTag && item.ParentLogoItemId) { imgUrl = apiClient.getScaledImageUrl(item.ParentLogoItemId, { - type: "Logo", + type: 'Logo', maxWidth: width, tag: item.ParentLogoImageTag }); @@ -549,7 +549,7 @@ import 'programStyles'; } else if (options.preferThumb && item.SeriesThumbImageTag && options.inheritThumb !== false) { imgUrl = apiClient.getScaledImageUrl(item.SeriesId, { - type: "Thumb", + type: 'Thumb', maxWidth: width, tag: item.SeriesThumbImageTag }); @@ -557,7 +557,7 @@ import 'programStyles'; } else if (options.preferThumb && item.ParentThumbItemId && options.inheritThumb !== false && item.MediaType !== 'Photo') { imgUrl = apiClient.getScaledImageUrl(item.ParentThumbItemId, { - type: "Thumb", + type: 'Thumb', maxWidth: width, tag: item.ParentThumbImageTag }); @@ -565,7 +565,7 @@ import 'programStyles'; } else if (options.preferThumb && item.BackdropImageTags && item.BackdropImageTags.length) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Backdrop", + type: 'Backdrop', maxWidth: width, tag: item.BackdropImageTags[0] }); @@ -575,7 +575,7 @@ import 'programStyles'; } else if (options.preferThumb && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length && options.inheritThumb !== false && item.Type === 'Episode') { imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, { - type: "Backdrop", + type: 'Backdrop', maxWidth: width, tag: item.ParentBackdropImageTags[0] }); @@ -585,7 +585,7 @@ import 'programStyles'; height = width && primaryImageAspectRatio ? Math.round(width / primaryImageAspectRatio) : null; imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Primary", + type: 'Primary', maxHeight: height, maxWidth: width, tag: item.ImageTags.Primary @@ -607,7 +607,7 @@ import 'programStyles'; height = width && primaryImageAspectRatio ? Math.round(width / primaryImageAspectRatio) : null; imgUrl = apiClient.getScaledImageUrl(item.PrimaryImageItemId || item.Id || item.ItemId, { - type: "Primary", + type: 'Primary', maxHeight: height, maxWidth: width, tag: item.PrimaryImageTag @@ -626,14 +626,14 @@ import 'programStyles'; } else if (item.ParentPrimaryImageTag) { imgUrl = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, { - type: "Primary", + type: 'Primary', maxWidth: width, tag: item.ParentPrimaryImageTag }); } else if (item.SeriesPrimaryImageTag) { imgUrl = apiClient.getScaledImageUrl(item.SeriesId, { - type: "Primary", + type: 'Primary', maxWidth: width, tag: item.SeriesPrimaryImageTag }); @@ -642,7 +642,7 @@ import 'programStyles'; height = width && primaryImageAspectRatio ? Math.round(width / primaryImageAspectRatio) : null; imgUrl = apiClient.getScaledImageUrl(item.AlbumId, { - type: "Primary", + type: 'Primary', maxHeight: height, maxWidth: width, tag: item.AlbumPrimaryImageTag @@ -657,7 +657,7 @@ import 'programStyles'; } else if (item.Type === 'Season' && item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Thumb", + type: 'Thumb', maxWidth: width, tag: item.ImageTags.Thumb }); @@ -665,7 +665,7 @@ import 'programStyles'; } else if (item.BackdropImageTags && item.BackdropImageTags.length) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Backdrop", + type: 'Backdrop', maxWidth: width, tag: item.BackdropImageTags[0] }); @@ -673,7 +673,7 @@ import 'programStyles'; } else if (item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Thumb", + type: 'Thumb', maxWidth: width, tag: item.ImageTags.Thumb }); @@ -681,7 +681,7 @@ import 'programStyles'; } else if (item.SeriesThumbImageTag && options.inheritThumb !== false) { imgUrl = apiClient.getScaledImageUrl(item.SeriesId, { - type: "Thumb", + type: 'Thumb', maxWidth: width, tag: item.SeriesThumbImageTag }); @@ -689,7 +689,7 @@ import 'programStyles'; } else if (item.ParentThumbItemId && options.inheritThumb !== false) { imgUrl = apiClient.getScaledImageUrl(item.ParentThumbItemId, { - type: "Thumb", + type: 'Thumb', maxWidth: width, tag: item.ParentThumbImageTag }); @@ -697,7 +697,7 @@ import 'programStyles'; } else if (item.ParentBackdropImageTags && item.ParentBackdropImageTags.length && options.inheritThumb !== false) { imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, { - type: "Backdrop", + type: 'Backdrop', maxWidth: width, tag: item.ParentBackdropImageTags[0] }); @@ -778,7 +778,7 @@ import 'programStyles'; if (text) { html += "
"; html += text; - html += "
"; + html += '
'; valid++; if (maxLines && valid >= maxLines) { @@ -835,7 +835,7 @@ import 'programStyles'; airTimeText += ' - ' + datetime.getDisplayTime(date); } } catch (e) { - console.error("error parsing date: " + item.StartDate); + console.error('error parsing date: ' + item.StartDate); } } @@ -873,7 +873,7 @@ import 'programStyles'; } } - const cssClass = options.centerText ? "cardText cardTextCentered" : "cardText"; + const cssClass = options.centerText ? 'cardText cardTextCentered' : 'cardText'; const serverId = item.ServerId || options.serverId; let lines = []; @@ -907,7 +907,7 @@ import 'programStyles'; } } else { - const parentTitle = item.SeriesName || item.Series || item.Album || item.AlbumArtist || ""; + const parentTitle = item.SeriesName || item.Series || item.Album || item.AlbumArtist || ''; if (parentTitle || showTitle) { lines.push(parentTitle); @@ -946,7 +946,7 @@ import 'programStyles'; item.AlbumArtists[0].IsFolder = true; lines.push(getTextActionButton(item.AlbumArtists[0], null, serverId)); } else { - lines.push(isUsingLiveTvNaming(item) ? item.Name : (item.SeriesName || item.Series || item.Album || item.AlbumArtist || "")); + lines.push(isUsingLiveTvNaming(item) ? item.Name : (item.SeriesName || item.Series || item.Album || item.AlbumArtist || '')); } } @@ -993,7 +993,7 @@ import 'programStyles'; if (options.showYear || options.showSeriesYear) { if (item.Type === 'Series') { - if (item.Status === "Continuing") { + if (item.Status === 'Continuing') { lines.push(globalize.translate('SeriesYearToPresent', item.ProductionYear || '')); @@ -1105,7 +1105,7 @@ import 'programStyles'; html = '
' + html; //cardFooter - html += "
"; + html += '
'; } } @@ -1191,7 +1191,7 @@ import 'programStyles'; counts.push(childText); } - } else if (item.Type === 'MusicGenre' || options.context === "MusicArtist") { + } else if (item.Type === 'MusicGenre' || options.context === 'MusicArtist') { if (item.AlbumCount) { @@ -1304,7 +1304,7 @@ import 'programStyles'; } if (options.cardClass) { - className += " " + options.cardClass; + className += ' ' + options.cardClass; } if (layoutManager.desktop) { @@ -1356,13 +1356,13 @@ import 'programStyles'; if (options.showChannelLogo && item.ChannelPrimaryImageTag) { logoUrl = apiClient.getScaledImageUrl(item.ChannelId, { - type: "Primary", + type: 'Primary', height: logoHeight, tag: item.ChannelPrimaryImageTag }); } else if (options.showLogo && item.ParentLogoImageTag) { logoUrl = apiClient.getScaledImageUrl(item.ParentLogoItemId, { - type: "Logo", + type: 'Logo', height: logoHeight, tag: item.ParentLogoImageTag }); @@ -1518,7 +1518,7 @@ import 'programStyles'; let actionAttribute; if (tagName === 'button') { - className += " itemAction"; + className += ' itemAction'; actionAttribute = ' data-action="' + action + '"'; } else { actionAttribute = ''; diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js index d0383692c1..eae60574b3 100644 --- a/src/components/cardbuilder/chaptercardbuilder.js +++ b/src/components/cardbuilder/chaptercardbuilder.js @@ -70,7 +70,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse maxWidth: maxWidth * 2, tag: chapter.ImageTag, - type: "Chapter", + type: 'Chapter', index: index }); } diff --git a/src/components/castSenderApi.js b/src/components/castSenderApi.js index a1e7bd8755..b541c1f87a 100644 --- a/src/components/castSenderApi.js +++ b/src/components/castSenderApi.js @@ -1,7 +1,7 @@ define([], function() { 'use strict'; - if (window.appMode === "cordova" || window.appMode === "android") { + if (window.appMode === 'cordova' || window.appMode === 'android') { return { load: function () { window.chrome = window.chrome || {}; @@ -17,16 +17,16 @@ define([], function() { } return new Promise(function (resolve, reject) { - var fileref = document.createElement("script"); - fileref.setAttribute("type", "text/javascript"); + var fileref = document.createElement('script'); + fileref.setAttribute('type', 'text/javascript'); fileref.onload = function () { ccLoaded = true; resolve(); }; - fileref.setAttribute("src", "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"); - document.querySelector("head").appendChild(fileref); + fileref.setAttribute('src', 'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js'); + document.querySelector('head').appendChild(fileref); }); } }; diff --git a/src/components/channelmapper/channelmapper.js b/src/components/channelmapper/channelmapper.js index 71d71a64ef..83ae4d09c6 100644 --- a/src/components/channelmapper/channelmapper.js +++ b/src/components/channelmapper/channelmapper.js @@ -1,33 +1,33 @@ -define(["dom", "dialogHelper", "loading", "connectionManager", "globalize", "actionsheet", "emby-input", "paper-icon-button-light", "emby-button", "listViewStyle", "material-icons", "formDialogStyle"], function (dom, dialogHelper, loading, connectionManager, globalize, actionsheet) { - "use strict"; +define(['dom', 'dialogHelper', 'loading', 'connectionManager', 'globalize', 'actionsheet', 'emby-input', 'paper-icon-button-light', 'emby-button', 'listViewStyle', 'material-icons', 'formDialogStyle'], function (dom, dialogHelper, loading, connectionManager, globalize, actionsheet) { + 'use strict'; return function (options) { function mapChannel(button, channelId, providerChannelId) { loading.show(); var providerId = options.providerId; connectionManager.getApiClient(options.serverId).ajax({ - type: "POST", - url: ApiClient.getUrl("LiveTv/ChannelMappings"), + type: 'POST', + url: ApiClient.getUrl('LiveTv/ChannelMappings'), data: { providerId: providerId, tunerChannelId: channelId, providerChannelId: providerChannelId }, - dataType: "json" + dataType: 'json' }).then(function (mapping) { - var listItem = dom.parentWithClass(button, "listItem"); - button.setAttribute("data-providerid", mapping.ProviderChannelId); - listItem.querySelector(".secondary").innerHTML = getMappingSecondaryName(mapping, currentMappingOptions.ProviderName); + var listItem = dom.parentWithClass(button, 'listItem'); + button.setAttribute('data-providerid', mapping.ProviderChannelId); + listItem.querySelector('.secondary').innerHTML = getMappingSecondaryName(mapping, currentMappingOptions.ProviderName); loading.hide(); }); } function onChannelsElementClick(e) { - var btnMap = dom.parentWithClass(e.target, "btnMap"); + var btnMap = dom.parentWithClass(e.target, 'btnMap'); if (btnMap) { - var channelId = btnMap.getAttribute("data-id"); - var providerChannelId = btnMap.getAttribute("data-providerid"); + var channelId = btnMap.getAttribute('data-id'); + var providerChannelId = btnMap.getAttribute('data-providerid'); var menuItems = currentMappingOptions.ProviderChannels.map(function (m) { return { name: m.Name, @@ -48,56 +48,56 @@ define(["dom", "dialogHelper", "loading", "connectionManager", "globalize", "act function getChannelMappingOptions(serverId, providerId) { var apiClient = connectionManager.getApiClient(serverId); - return apiClient.getJSON(apiClient.getUrl("LiveTv/ChannelMappingOptions", { + return apiClient.getJSON(apiClient.getUrl('LiveTv/ChannelMappingOptions', { providerId: providerId })); } function getMappingSecondaryName(mapping, providerName) { - return (mapping.ProviderChannelName || "") + " - " + providerName; + return (mapping.ProviderChannelName || '') + ' - ' + providerName; } function getTunerChannelHtml(channel, providerName) { - var html = ""; + var html = ''; html += '
'; html += ''; html += '
'; html += '

'; html += channel.Name; - html += "

"; + html += ''; html += '
'; if (channel.ProviderChannelName) { html += getMappingSecondaryName(channel, providerName); } - html += "
"; - html += "
"; + html += '
'; + html += '
'; html += ''; - return html += "
"; + return html += '
'; } function getEditorHtml() { - var html = ""; + var html = ''; html += '
'; html += '
'; html += '
'; - html += "

" + globalize.translate("HeaderChannels") + "

"; + html += '

' + globalize.translate('HeaderChannels') + '

'; html += '
'; - html += "
"; - html += "
"; - html += "
"; - return html += "
"; + html += '
'; + html += ''; + html += '
'; + return html += '
'; } function initEditor(dlg, options) { getChannelMappingOptions(options.serverId, options.providerId).then(function (result) { currentMappingOptions = result; - var channelsElement = dlg.querySelector(".channels"); + var channelsElement = dlg.querySelector('.channels'); channelsElement.innerHTML = result.TunerChannels.map(function (channel) { return getTunerChannelHtml(channel, result.ProviderName); - }).join(""); - channelsElement.addEventListener("click", onChannelsElementClick); + }).join(''); + channelsElement.addEventListener('click', onChannelsElementClick); }); } @@ -108,27 +108,27 @@ define(["dom", "dialogHelper", "loading", "connectionManager", "globalize", "act var dialogOptions = { removeOnClose: true }; - dialogOptions.size = "small"; + dialogOptions.size = 'small'; var dlg = dialogHelper.createDialog(dialogOptions); - dlg.classList.add("formDialog"); - dlg.classList.add("ui-body-a"); - dlg.classList.add("background-theme-a"); - var html = ""; - var title = globalize.translate("MapChannels"); + dlg.classList.add('formDialog'); + dlg.classList.add('ui-body-a'); + dlg.classList.add('background-theme-a'); + var html = ''; + var title = globalize.translate('MapChannels'); html += '
'; html += ''; html += '

'; html += title; - html += "

"; - html += "
"; + html += ''; + html += '
'; html += getEditorHtml(); dlg.innerHTML = html; initEditor(dlg, options); - dlg.querySelector(".btnCancel").addEventListener("click", function () { + dlg.querySelector('.btnCancel').addEventListener('click', function () { dialogHelper.close(dlg); }); return new Promise(function (resolve, reject) { - dlg.addEventListener("close", resolve); + dlg.addEventListener('close', resolve); dialogHelper.open(dlg); }); }; diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index 9967a4d96c..ca2d27c977 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -37,69 +37,69 @@ define(['events'], function (events) { // 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. - var protocols = "(?:(?:http|https|rtsp|ftp):\\/\\/)"; + var protocols = '(?:(?:http|https|rtsp|ftp):\\/\\/)'; var credentials = "(?:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,64}" // username (1-64 normal or url escaped characters) + "(?:\\:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,25})?" // followed by optional password (: + 1-25 normal or url escaped characters) - + "\\@)"; + + '\\@)'; // IPv6 Regex http://forums.intermapper.com/viewtopic.php?t=452 // by Dartware, LLC is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License // http://intermapper.com/ - var ipv6 = "(" - + "(([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))" - + "|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))" - + "|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))" - + "|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))" - + "|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))" - + "|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))" - + "|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))" - + "|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))" - + ")(%.+)?"; + var ipv6 = '(' + + '(([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))' + + '|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))' + + '|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))' + + '|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + ')(%.+)?'; - var ipv4 = "(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\." - + "(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\." - + "(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\." - + "(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])"; + var ipv4 = '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.' + + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.' + + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.' + + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])'; // This would have been a lot cleaner if JS RegExp supported conditionals... var linkRegExpString = // begin match for protocol / username / password / host - "(?:" + '(?:' // ============================ // If we have a recognized protocol at the beginning of the URL, we're // more relaxed about what we accept, because we assume the user wants // this to be a URL, and we're not accidentally matching human language - + protocols + "?" + + protocols + '?' // optional username:password@ - + credentials + "?" + + credentials + '?' // IP address (both v4 and v6) - + "(?:" + + '(?:' // IPv6 + ipv6 // IPv4 - + "|" + ipv4 + + '|' + ipv4 - + ")" + + ')' // end match for protocol / username / password / host - + ")" + + ')' // optional port number - + "(?:\\:\\d{1,5})?" + + '(?:\\:\\d{1,5})?' // plus optional path and query params (no unicode allowed here?) - + "(?:" - + "\\/(?:" + + '(?:' + + '\\/(?:' // some characters we'll accept because it's unlikely human language // would use them after a URL unless they were part of the url - + "(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])" - + "|(?:\\%[a-f0-9]{2})" + + '(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])' + + '|(?:\\%[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 @@ -108,9 +108,9 @@ define(['events'], function (events) { // they must be followed by another character that we're reasonably // sure is part of the url + "|(?:[\\;\\?\\:\\.\\!\\'\\(\\)\\,\\=]+(?=(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])|(?:\\%[a-f0-9]{2})))" - + ")*" - + "|\\b|\$" - + ")"; + + ')*' + + '|\\b|\$' + + ')'; // regex = XRegExp(regex,'gi'); var linkRegExp = RegExp(linkRegExpString, 'gi'); @@ -120,7 +120,7 @@ define(['events'], function (events) { // if url doesn't begin with a known protocol, add http by default function ensureProtocol(url) { if (!url.match(protocolRegExp)) { - url = "http://" + url; + url = 'http://' + url; } return url; } @@ -190,7 +190,7 @@ define(['events'], function (events) { return apiClient.getPublicSystemInfo().then(function (info) { var localAddress = info.LocalAddress; if (!localAddress) { - console.debug("No valid local address returned, defaulting to external one"); + console.debug('No valid local address returned, defaulting to external one'); localAddress = serverAddress; } addToCache(serverAddress, localAddress); diff --git a/src/components/chromecast/chromecastplayer.js b/src/components/chromecast/chromecastplayer.js index 71058cf01b..52fa4f6bcb 100644 --- a/src/components/chromecast/chromecastplayer.js +++ b/src/components/chromecast/chromecastplayer.js @@ -54,7 +54,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' // production version registered with google // replace this value if you want to test changes on another instance - var applicationID = "F007D354"; + var applicationID = 'F007D354'; var messageNamespace = 'urn:x-cast:com.connectsdk'; @@ -114,14 +114,14 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.onInitSuccess = function () { this.isInitialized = true; - console.debug("chromecast init success"); + console.debug('chromecast init success'); }; /** * Generic error callback function */ CastPlayer.prototype.onError = function () { - console.debug("chromecast error"); + console.debug('chromecast error'); }; /** @@ -177,10 +177,10 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.receiverListener = function (e) { if (e === 'available') { - console.debug("chromecast receiver found"); + console.debug('chromecast receiver found'); this.hasReceivers = true; } else { - console.debug("chromecast receiver list empty"); + console.debug('chromecast receiver list empty'); this.hasReceivers = false; } }; @@ -195,8 +195,8 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' this.session = null; this.deviceState = DEVICE_STATE.IDLE; this.castPlayerState = PLAYER_STATE.IDLE; - document.removeEventListener("volumeupbutton", onVolumeUpKeyDown, false); - document.removeEventListener("volumedownbutton", onVolumeDownKeyDown, false); + document.removeEventListener('volumeupbutton', onVolumeUpKeyDown, false); + document.removeEventListener('volumedownbutton', onVolumeDownKeyDown, false); console.debug('sessionUpdateListener: setting currentMediaSession to null'); this.currentMediaSession = null; @@ -211,7 +211,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * session request in opt_sessionRequest. */ CastPlayer.prototype.launchApp = function () { - console.debug("chromecast launching app..."); + console.debug('chromecast launching app...'); chrome.cast.requestSession(this.onRequestSessionSuccess.bind(this), this.onLaunchError.bind(this)); }; @@ -220,7 +220,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * @param {Object} e A chrome.cast.Session object */ CastPlayer.prototype.onRequestSessionSuccess = function (e) { - console.debug("chromecast session success: " + e.sessionId); + console.debug('chromecast session success: ' + e.sessionId); this.onSessionConnected(e); }; @@ -232,8 +232,8 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' this.session.addMediaListener(this.sessionMediaListener.bind(this)); this.session.addUpdateListener(this.sessionUpdateListener.bind(this)); - document.addEventListener("volumeupbutton", onVolumeUpKeyDown, false); - document.addEventListener("volumedownbutton", onVolumeDownKeyDown, false); + document.addEventListener('volumeupbutton', onVolumeUpKeyDown, false); + document.addEventListener('volumedownbutton', onVolumeDownKeyDown, false); events.trigger(this, 'connect'); this.sendMessage({ @@ -262,7 +262,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for launch error */ CastPlayer.prototype.onLaunchError = function () { - console.debug("chromecast launch error"); + console.debug('chromecast launch error'); this.deviceState = DEVICE_STATE.ERROR; sendConnectionResult(false); }; @@ -284,8 +284,8 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' this.deviceState = DEVICE_STATE.IDLE; this.castPlayerState = PLAYER_STATE.IDLE; - document.removeEventListener("volumeupbutton", onVolumeUpKeyDown, false); - document.removeEventListener("volumedownbutton", onVolumeDownKeyDown, false); + document.removeEventListener('volumeupbutton', onVolumeUpKeyDown, false); + document.removeEventListener('volumedownbutton', onVolumeDownKeyDown, false); this.currentMediaSession = null; }; @@ -296,7 +296,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.loadMedia = function (options, command) { if (!this.session) { - console.debug("no session"); + console.debug('no session'); return Promise.reject(); } @@ -386,7 +386,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.onMediaDiscovered = function (how, mediaSession) { - console.debug("chromecast new media session ID:" + mediaSession.mediaSessionId + ' (' + how + ')'); + console.debug('chromecast new media session ID:' + mediaSession.mediaSessionId + ' (' + how + ')'); this.currentMediaSession = mediaSession; if (how === 'loadMedia') { @@ -405,7 +405,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * @param {!Boolean} e true/false */ CastPlayer.prototype.onMediaStatusUpdate = function (e) { - console.debug("chromecast updating media: " + e); + console.debug('chromecast updating media: ' + e); if (e === false) { this.castPlayerState = PLAYER_STATE.IDLE; } @@ -482,7 +482,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' } else { query.Limit = query.Limit || 100; - query.ExcludeLocationTypes = "Virtual"; + query.ExcludeLocationTypes = 'Virtual'; query.EnableTotalRecordCount = false; return apiClient.getItems(userId, query); @@ -506,13 +506,13 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' instance._castPlayer = new CastPlayer(); // To allow the native android app to override - document.dispatchEvent(new CustomEvent("chromecastloaded", { + document.dispatchEvent(new CustomEvent('chromecastloaded', { detail: { player: instance } })); - events.on(instance._castPlayer, "connect", function (e) { + events.on(instance._castPlayer, 'connect', function (e) { if (currentResolve) { sendConnectionResult(true); @@ -525,22 +525,22 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' instance.lastPlayerData = null; }); - events.on(instance._castPlayer, "playbackstart", function (e, data) { + events.on(instance._castPlayer, 'playbackstart', function (e, data) { console.debug('cc: playbackstart'); instance._castPlayer.initializeCastPlayer(); var state = instance.getPlayerStateInternal(data); - events.trigger(instance, "playbackstart", [state]); + events.trigger(instance, 'playbackstart', [state]); }); - events.on(instance._castPlayer, "playbackstop", function (e, data) { + events.on(instance._castPlayer, 'playbackstop', function (e, data) { console.debug('cc: playbackstop'); var state = instance.getPlayerStateInternal(data); - events.trigger(instance, "playbackstop", [state]); + events.trigger(instance, 'playbackstop', [state]); var state = instance.lastPlayerData.PlayState || {}; var volume = state.VolumeLevel || 0.5; @@ -553,12 +553,12 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' instance.lastPlayerData.PlayState.IsMuted = mute; }); - events.on(instance._castPlayer, "playbackprogress", function (e, data) { + events.on(instance._castPlayer, 'playbackprogress', function (e, data) { console.debug('cc: positionchange'); var state = instance.getPlayerStateInternal(data); - events.trigger(instance, "timeupdate", [state]); + events.trigger(instance, 'timeupdate', [state]); }); bindEventForRelay(instance, 'timeupdate'); @@ -567,12 +567,12 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' bindEventForRelay(instance, 'volumechange'); bindEventForRelay(instance, 'repeatmodechange'); - events.on(instance._castPlayer, "playstatechange", function (e, data) { + events.on(instance._castPlayer, 'playstatechange', function (e, data) { console.debug('cc: playstatechange'); var state = instance.getPlayerStateInternal(data); - events.trigger(instance, "pause", [state]); + events.trigger(instance, 'pause', [state]); }); } @@ -630,24 +630,24 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' name: PlayerName, id: PlayerName, playerName: PlayerName, - playableMediaTypes: ["Audio", "Video"], + playableMediaTypes: ['Audio', 'Video'], isLocalPlayer: false, appName: PlayerName, deviceName: appName, supportedCommands: [ - "VolumeUp", - "VolumeDown", - "Mute", - "Unmute", - "ToggleMute", - "SetVolume", - "SetAudioStreamIndex", - "SetSubtitleStreamIndex", - "DisplayContent", - "SetRepeatMode", - "EndSession", - "PlayMediaSource", - "PlayTrailers" + 'VolumeUp', + 'VolumeDown', + 'Mute', + 'Unmute', + 'ToggleMute', + 'SetVolume', + 'SetAudioStreamIndex', + 'SetSubtitleStreamIndex', + 'DisplayContent', + 'SetRepeatMode', + 'EndSession', + 'PlayMediaSource', + 'PlayTrailers' ] }; }; @@ -667,7 +667,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' console.debug(JSON.stringify(data)); if (triggerStateChange) { - events.trigger(this, "statechange", [data]); + events.trigger(this, 'statechange', [data]); } return data; diff --git a/src/components/collectioneditor/collectioneditor.js b/src/components/collectioneditor/collectioneditor.js index e9aeac2001..46b0640305 100644 --- a/src/components/collectioneditor/collectioneditor.js +++ b/src/components/collectioneditor/collectioneditor.js @@ -24,7 +24,7 @@ define(['dom', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectio function createCollection(apiClient, dlg) { - var url = apiClient.getUrl("Collections", { + var url = apiClient.getUrl('Collections', { Name: dlg.querySelector('#txtNewCollectionName').value, IsLocked: !dlg.querySelector('#chkEnableInternetMetadata').checked, @@ -32,9 +32,9 @@ define(['dom', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectio }); apiClient.ajax({ - type: "POST", + type: 'POST', url: url, - dataType: "json" + dataType: 'json' }).then(function (result) { @@ -56,13 +56,13 @@ define(['dom', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectio function addToCollection(apiClient, dlg, id) { - var url = apiClient.getUrl("Collections/" + id + "/Items", { + var url = apiClient.getUrl('Collections/' + id + '/Items', { Ids: dlg.querySelector('.fldSelectedItemIds').value || '' }); apiClient.ajax({ - type: "POST", + type: 'POST', url: url }).then(function () { @@ -93,8 +93,8 @@ define(['dom', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectio var options = { Recursive: true, - IncludeItemTypes: "BoxSet", - SortBy: "SortName", + IncludeItemTypes: 'BoxSet', + SortBy: 'SortName', EnableTotalRecordCount: false }; diff --git a/src/components/confirm/confirm.js b/src/components/confirm/confirm.js index fa9a156679..517d6fa9be 100644 --- a/src/components/confirm/confirm.js +++ b/src/components/confirm/confirm.js @@ -1,4 +1,4 @@ -define(["browser", "dialog", "globalize"], function(browser, dialog, globalize) { +define(['browser', 'dialog', 'globalize'], function(browser, dialog, globalize) { 'use strict'; function replaceAll(str, find, replace) { diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index e3410776a8..8b08cde678 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -141,7 +141,7 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', animateDialogOpen(dlg); if (isHistoryEnabled(dlg)) { - appRouter.pushState({ dialogId: hash }, "Dialog", '#' + hash); + appRouter.pushState({ dialogId: hash }, 'Dialog', '#' + hash); window.addEventListener('popstate', onHashChange); } else { diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 4cbcdb8082..7f13f89ef5 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -16,14 +16,14 @@ define(['loading', 'dialogHelper', 'dom', 'globalize', 'listViewStyle', 'emby-in function refreshDirectoryBrowser(page, path, fileOptions, updatePathOnError) { if (path && typeof path !== 'string') { - throw new Error("invalid path"); + throw new Error('invalid path'); } loading.show(); var promises = []; - if ("Network" === path) { + if ('Network' === path) { promises.push(ApiClient.getNetworkDevices()); } else { if (path) { @@ -37,31 +37,31 @@ define(['loading', 'dialogHelper', 'dom', 'globalize', 'listViewStyle', 'emby-in Promise.all(promises).then( function(responses) { var folders = responses[0]; - var parentPath = responses[1] || ""; - var html = ""; + var parentPath = responses[1] || ''; + var html = ''; - page.querySelector(".results").scrollTop = 0; - page.querySelector("#txtDirectoryPickerPath").value = path || ""; + page.querySelector('.results').scrollTop = 0; + page.querySelector('#txtDirectoryPickerPath').value = path || ''; if (path) { - html += getItem("lnkPath lnkDirectory", "", parentPath, "..."); + html += getItem('lnkPath lnkDirectory', '', parentPath, '...'); } for (var i = 0, length = folders.length; i < length; i++) { var folder = folders[i]; - var cssClass = "File" === folder.Type ? "lnkPath lnkFile" : "lnkPath lnkDirectory"; + var cssClass = 'File' === folder.Type ? 'lnkPath lnkFile' : 'lnkPath lnkDirectory'; html += getItem(cssClass, folder.Type, folder.Path, folder.Name); } if (!path) { - html += getItem("lnkPath lnkDirectory", "", "Network", globalize.translate("ButtonNetwork")); + html += getItem('lnkPath lnkDirectory', '', 'Network', globalize.translate('ButtonNetwork')); } - page.querySelector(".results").innerHTML = html; + page.querySelector('.results').innerHTML = html; loading.hide(); }, function() { if (updatePathOnError) { - page.querySelector("#txtDirectoryPickerPath").value = ""; - page.querySelector(".results").innerHTML = ""; + page.querySelector('#txtDirectoryPickerPath').value = ''; + page.querySelector('.results').innerHTML = ''; loading.hide(); } } @@ -69,74 +69,74 @@ define(['loading', 'dialogHelper', 'dom', 'globalize', 'listViewStyle', 'emby-in } function getItem(cssClass, type, path, name) { - var html = ""; + var html = ''; html += '
'; html += '
'; html += '
'; html += name; - html += "
"; - html += "
"; + html += '
'; + html += '
'; html += ''; - html += "
"; + html += '
'; return html; } function getEditorHtml(options, systemInfo) { - var html = ""; + var html = ''; html += '
'; html += '
'; if (!options.pathReadOnly) { - var instruction = options.instruction ? options.instruction + "

" : ""; + var instruction = options.instruction ? options.instruction + '

' : ''; html += '
'; html += instruction; - html += globalize.translate("MessageDirectoryPickerInstruction", "\\\\server", "\\\\192.168.1.101"); - if ("bsd" === systemInfo.OperatingSystem.toLowerCase()) { - html += "
"; - html += "
"; - html += globalize.translate("MessageDirectoryPickerBSDInstruction"); - html += "
"; - } else if ("linux" === systemInfo.OperatingSystem.toLowerCase()) { - html += "
"; - html += "
"; - html += globalize.translate("MessageDirectoryPickerLinuxInstruction"); - html += "
"; + html += globalize.translate('MessageDirectoryPickerInstruction', '\\\\server', '\\\\192.168.1.101'); + if ('bsd' === systemInfo.OperatingSystem.toLowerCase()) { + html += '
'; + html += '
'; + html += globalize.translate('MessageDirectoryPickerBSDInstruction'); + html += '
'; + } else if ('linux' === systemInfo.OperatingSystem.toLowerCase()) { + html += '
'; + html += '
'; + html += globalize.translate('MessageDirectoryPickerLinuxInstruction'); + html += '
'; } - html += "
"; + html += '
'; } html += '
'; html += '
'; html += '
'; var labelKey; if (options.includeFiles !== true) { - labelKey = "LabelFolder"; + labelKey = 'LabelFolder'; } else { - labelKey = "LabelPath"; + labelKey = 'LabelPath'; } - var readOnlyAttribute = options.pathReadOnly ? " readonly" : ""; + var readOnlyAttribute = options.pathReadOnly ? ' readonly' : ''; html += ''; - html += "
"; + html += '
'; if (!readOnlyAttribute) { - html += ''; + html += ''; } - html += "
"; + html += '
'; if (!readOnlyAttribute) { html += '
'; } if (options.enableNetworkSharePath) { html += '
'; - html += ''; + html += ''; html += '
'; - html += globalize.translate("LabelOptionalNetworkPathHelp"); - html += "
"; - html += "
"; + html += globalize.translate('LabelOptionalNetworkPathHelp'); + html += '
'; + html += '
'; } html += '
'; - html += '"; - html += "
"; - html += ""; - html += "
"; - html += "
"; - html += "
"; + html += ''; + html += '
'; + html += ''; + html += '
'; + html += '
'; + html += '
'; return html; } @@ -148,15 +148,15 @@ define(['loading', 'dialogHelper', 'dom', 'globalize', 'listViewStyle', 'emby-in } function alertTextWithOptions(options) { - require(["alert"], function(alert) { + require(['alert'], function(alert) { alert(options); }); } function validatePath(path, validateWriteable, apiClient) { return apiClient.ajax({ - type: "POST", - url: apiClient.getUrl("Environment/ValidatePath"), + type: 'POST', + url: apiClient.getUrl('Environment/ValidatePath'), data: { ValidateWriteable: validateWriteable, Path: path @@ -164,14 +164,14 @@ define(['loading', 'dialogHelper', 'dom', 'globalize', 'listViewStyle', 'emby-in }).catch(function(response) { if (response) { if (response.status === 404) { - alertText(globalize.translate("PathNotFound")); + alertText(globalize.translate('PathNotFound')); return Promise.reject(); } if (response.status === 500) { if (validateWriteable) { - alertText(globalize.translate("WriteAccessRequired")); + alertText(globalize.translate('WriteAccessRequired')); } else { - alertText(globalize.translate("PathNotFound")); + alertText(globalize.translate('PathNotFound')); } return Promise.reject(); } @@ -181,37 +181,37 @@ define(['loading', 'dialogHelper', 'dom', 'globalize', 'listViewStyle', 'emby-in } function initEditor(content, options, fileOptions) { - content.addEventListener("click", function(e) { - var lnkPath = dom.parentWithClass(e.target, "lnkPath"); + content.addEventListener('click', function(e) { + var lnkPath = dom.parentWithClass(e.target, 'lnkPath'); if (lnkPath) { - var path = lnkPath.getAttribute("data-path"); - if (lnkPath.classList.contains("lnkFile")) { - content.querySelector("#txtDirectoryPickerPath").value = path; + var path = lnkPath.getAttribute('data-path'); + if (lnkPath.classList.contains('lnkFile')) { + content.querySelector('#txtDirectoryPickerPath').value = path; } else { refreshDirectoryBrowser(content, path, fileOptions, true); } } }); - content.addEventListener("click", function(e) { - if (dom.parentWithClass(e.target, "btnRefreshDirectories")) { - var path = content.querySelector("#txtDirectoryPickerPath").value; + content.addEventListener('click', function(e) { + if (dom.parentWithClass(e.target, 'btnRefreshDirectories')) { + var path = content.querySelector('#txtDirectoryPickerPath').value; refreshDirectoryBrowser(content, path, fileOptions); } }); - content.addEventListener("change", function(e) { - var txtDirectoryPickerPath = dom.parentWithTag(e.target, "INPUT"); - if (txtDirectoryPickerPath && "txtDirectoryPickerPath" === txtDirectoryPickerPath.id) { + content.addEventListener('change', function(e) { + var txtDirectoryPickerPath = dom.parentWithTag(e.target, 'INPUT'); + if (txtDirectoryPickerPath && 'txtDirectoryPickerPath' === txtDirectoryPickerPath.id) { refreshDirectoryBrowser(content, txtDirectoryPickerPath.value, fileOptions); } }); - content.querySelector("form").addEventListener("submit", function(e) { + content.querySelector('form').addEventListener('submit', function(e) { if (options.callback) { - var networkSharePath = this.querySelector("#txtNetworkPath"); + var networkSharePath = this.querySelector('#txtNetworkPath'); networkSharePath = networkSharePath ? networkSharePath.value : null; - var path = this.querySelector("#txtDirectoryPickerPath").value; + var path = this.querySelector('#txtDirectoryPickerPath').value; validatePath(path, options.validateWriteable, ApiClient).then(options.callback(path, networkSharePath)); } e.preventDefault(); @@ -224,11 +224,11 @@ define(['loading', 'dialogHelper', 'dom', 'globalize', 'listViewStyle', 'emby-in if (options.path) { return Promise.resolve(options.path); } else { - return ApiClient.getJSON(ApiClient.getUrl("Environment/DefaultDirectoryBrowser")).then( + return ApiClient.getJSON(ApiClient.getUrl('Environment/DefaultDirectoryBrowser')).then( function(result) { - return result.Path || ""; + return result.Path || ''; }, function() { - return ""; + return ''; } ); } @@ -253,35 +253,35 @@ define(['loading', 'dialogHelper', 'dom', 'globalize', 'listViewStyle', 'emby-in var systemInfo = responses[0]; var initialPath = responses[1]; var dlg = dialogHelper.createDialog({ - size: "medium-tall", + size: 'medium-tall', removeOnClose: true, scrollY: false }); - dlg.classList.add("ui-body-a"); - dlg.classList.add("background-theme-a"); - dlg.classList.add("directoryPicker"); - dlg.classList.add("formDialog"); + dlg.classList.add('ui-body-a'); + dlg.classList.add('background-theme-a'); + dlg.classList.add('directoryPicker'); + dlg.classList.add('formDialog'); - var html = ""; + var html = ''; html += '
'; html += ''; html += '

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

"; - html += "
"; + html += options.header || globalize.translate('HeaderSelectPath'); + html += ''; + html += '
'; html += getEditorHtml(options, systemInfo); dlg.innerHTML = html; initEditor(dlg, options, fileOptions); - dlg.addEventListener("close", onDialogClosed); + dlg.addEventListener('close', onDialogClosed); dialogHelper.open(dlg); - dlg.querySelector(".btnCloseDialog").addEventListener("click", function() { + dlg.querySelector('.btnCloseDialog').addEventListener('click', function() { dialogHelper.close(dlg); }); currentDialog = dlg; - dlg.querySelector("#txtDirectoryPickerPath").value = initialPath; - var txtNetworkPath = dlg.querySelector("#txtNetworkPath"); + dlg.querySelector('#txtDirectoryPickerPath').value = initialPath; + var txtNetworkPath = dlg.querySelector('#txtNetworkPath'); if (txtNetworkPath) { - txtNetworkPath.value = options.networkSharePath || ""; + txtNetworkPath.value = options.networkSharePath || ''; } if (!options.pathReadOnly) { refreshDirectoryBrowser(dlg, initialPath, fileOptions, true); diff --git a/src/components/displaysettings/displaysettings.js b/src/components/displaysettings/displaysettings.js index 682e60f604..2b7b4bb60c 100644 --- a/src/components/displaysettings/displaysettings.js +++ b/src/components/displaysettings/displaysettings.js @@ -1,5 +1,5 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', 'apphost', 'focusManager', 'datetime', 'globalize', 'loading', 'connectionManager', 'skinManager', 'dom', 'events', 'emby-select', 'emby-checkbox', 'emby-button'], function (require, browser, layoutManager, appSettings, pluginManager, appHost, focusManager, datetime, globalize, loading, connectionManager, skinManager, dom, events) { - "use strict"; + 'use strict'; function fillThemes(select, isDashboard) { select.innerHTML = skinManager.getThemes().map(function (t) { diff --git a/src/components/favoriteitems.js b/src/components/favoriteitems.js index d877cd274c..38715043e7 100644 --- a/src/components/favoriteitems.js +++ b/src/components/favoriteitems.js @@ -1,41 +1,41 @@ -define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoader", "globalize", "layoutManager", "scrollStyles", "emby-itemscontainer"], function (loading, libraryBrowser, cardBuilder, dom, appHost, imageLoader, globalize, layoutManager) { - "use strict"; +define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoader', 'globalize', 'layoutManager', 'scrollStyles', 'emby-itemscontainer'], function (loading, libraryBrowser, cardBuilder, dom, appHost, imageLoader, globalize, layoutManager) { + 'use strict'; function enableScrollX() { return !layoutManager.desktop; } function getThumbShape() { - return enableScrollX() ? "overflowBackdrop" : "backdrop"; + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; } function getPosterShape() { - return enableScrollX() ? "overflowPortrait" : "portrait"; + return enableScrollX() ? 'overflowPortrait' : 'portrait'; } function getSquareShape() { - return enableScrollX() ? "overflowSquare" : "square"; + return enableScrollX() ? 'overflowSquare' : 'square'; } function getSections() { return [{ - name: "HeaderFavoriteMovies", - types: "Movie", - id: "favoriteMovies", + name: 'HeaderFavoriteMovies', + types: 'Movie', + id: 'favoriteMovies', shape: getPosterShape(), showTitle: false, overlayPlayButton: true }, { - name: "HeaderFavoriteShows", - types: "Series", - id: "favoriteShows", + name: 'HeaderFavoriteShows', + types: 'Series', + id: 'favoriteShows', shape: getPosterShape(), showTitle: false, overlayPlayButton: true }, { - name: "HeaderFavoriteEpisodes", - types: "Episode", - id: "favoriteEpisode", + name: 'HeaderFavoriteEpisodes', + types: 'Episode', + id: 'favoriteEpisode', shape: getThumbShape(), preferThumb: false, showTitle: true, @@ -44,9 +44,9 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad overlayText: false, centerText: true }, { - name: "HeaderFavoriteVideos", - types: "Video,MusicVideo", - id: "favoriteVideos", + name: 'HeaderFavoriteVideos', + types: 'Video,MusicVideo', + id: 'favoriteVideos', shape: getThumbShape(), preferThumb: true, showTitle: true, @@ -54,9 +54,9 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad overlayText: false, centerText: true }, { - name: "HeaderFavoriteArtists", - types: "MusicArtist", - id: "favoriteArtists", + name: 'HeaderFavoriteArtists', + types: 'MusicArtist', + id: 'favoriteArtists', shape: getSquareShape(), preferThumb: false, showTitle: true, @@ -66,9 +66,9 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad overlayPlayButton: true, coverImage: true }, { - name: "HeaderFavoriteAlbums", - types: "MusicAlbum", - id: "favoriteAlbums", + name: 'HeaderFavoriteAlbums', + types: 'MusicAlbum', + id: 'favoriteAlbums', shape: getSquareShape(), preferThumb: false, showTitle: true, @@ -78,9 +78,9 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad overlayPlayButton: true, coverImage: true }, { - name: "HeaderFavoriteSongs", - types: "Audio", - id: "favoriteSongs", + name: 'HeaderFavoriteSongs', + types: 'Audio', + id: 'favoriteSongs', shape: getSquareShape(), preferThumb: false, showTitle: true, @@ -88,7 +88,7 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad showParentTitle: true, centerText: true, overlayMoreButton: true, - action: "instantmix", + action: 'instantmix', coverImage: true }]; } @@ -96,13 +96,13 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad function loadSection(elem, userId, topParentId, section, isSingleSection) { var screenWidth = dom.getWindowSize().innerWidth; var options = { - SortBy: "SortName", - SortOrder: "Ascending", - Filters: "IsFavorite", + SortBy: 'SortName', + SortOrder: 'Ascending', + Filters: 'IsFavorite', Recursive: true, - Fields: "PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,BasicSyncInfo', CollapseBoxSetItems: false, - ExcludeLocationTypes: "Virtual", + ExcludeLocationTypes: 'Virtual', EnableTotalRecordCount: false }; @@ -120,7 +120,7 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad var promise; - if ("MusicArtist" === section.types) { + if ('MusicArtist' === section.types) { promise = ApiClient.getArtists(userId, options); } else { options.IncludeItemTypes = section.types; @@ -128,25 +128,25 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad } return promise.then(function (result) { - var html = ""; + var html = ''; if (result.Items.length) { if (html += '
', !layoutManager.tv && options.Limit && result.Items.length >= options.Limit) { - html += ''; + html += ''; html += '

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

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

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

"; + html += '

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

'; } - html += "
"; + html += '
'; if (enableScrollX()) { - var scrollXClass = "scrollX hiddenScrollX"; + var scrollXClass = 'scrollX hiddenScrollX'; if (layoutManager.tv) { - scrollXClass += " smoothScrollX"; + scrollXClass += ' smoothScrollX'; } html += '
'; @@ -154,7 +154,7 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad html += '
'; } - var supportsImageAnalysis = appHost.supports("imageanalysis"); + var supportsImageAnalysis = appHost.supports('imageanalysis'); var cardLayout = (appHost.preferVisualCards || supportsImageAnalysis) && section.autoCardLayout && section.showTitle; cardLayout = false; html += cardBuilder.getCardsHtml(result.Items, { @@ -172,7 +172,7 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad allowBottomPadding: !enableScrollX(), cardLayout: cardLayout }); - html += "
"; + html += '
'; } elem.innerHTML = html; @@ -183,7 +183,7 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad function loadSections(page, userId, topParentId, types) { loading.show(); var sections = getSections(); - var sectionid = getParameterByName("sectionid"); + var sectionid = getParameterByName('sectionid'); if (sectionid) { sections = sections.filter(function (s) { @@ -199,10 +199,10 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad var i; var length; - var elem = page.querySelector(".favoriteSections"); + var elem = page.querySelector('.favoriteSections'); if (!elem.innerHTML) { - var html = ""; + var html = ''; for (i = 0, length = sections.length; i < length; i++) { html += '
'; @@ -215,7 +215,7 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad for (i = 0, length = sections.length; i < length; i++) { var section = sections[i]; - elem = page.querySelector(".section" + section.id); + elem = page.querySelector('.section' + section.id); promises.push(loadSection(elem, userId, topParentId, section, 1 === sections.length)); } diff --git a/src/components/fetchhelper.js b/src/components/fetchhelper.js index 0b8d451736..08fe803ecf 100644 --- a/src/components/fetchhelper.js +++ b/src/components/fetchhelper.js @@ -86,7 +86,7 @@ define([], function () { var value = params[key]; if (value !== null && value !== undefined && value !== '') { - values.push(encodeURIComponent(key) + "=" + encodeURIComponent(value)); + values.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); } } return values.join('&'); @@ -94,7 +94,7 @@ define([], function () { function ajax(request) { if (!request) { - throw new Error("Request cannot be null"); + throw new Error('Request cannot be null'); } request.headers = request.headers || {}; diff --git a/src/components/filedownloader.js b/src/components/filedownloader.js index 6f1bd3ff2a..f2ca42211f 100644 --- a/src/components/filedownloader.js +++ b/src/components/filedownloader.js @@ -1,4 +1,4 @@ -import multiDownload from "multi-download"; +import multiDownload from 'multi-download'; export function download(items) { diff --git a/src/components/filterdialog/filterdialog.js b/src/components/filterdialog/filterdialog.js index c534ba4745..1dfd04c679 100644 --- a/src/components/filterdialog/filterdialog.js +++ b/src/components/filterdialog/filterdialog.js @@ -1,49 +1,49 @@ -define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "browser", "require", "emby-checkbox", "emby-collapse", "css!./style"], function (dom, dialogHelper, globalize, connectionManager, events, browser, require) { - "use strict"; +define(['dom', 'dialogHelper', 'globalize', 'connectionManager', 'events', 'browser', 'require', 'emby-checkbox', 'emby-collapse', 'css!./style'], function (dom, dialogHelper, globalize, connectionManager, events, browser, require) { + 'use strict'; function renderOptions(context, selector, cssClass, items, isCheckedFn) { var elem = context.querySelector(selector); if (items.length) { - elem.classList.remove("hide"); + elem.classList.remove('hide'); } else { - elem.classList.add("hide"); + elem.classList.add('hide'); } - var html = ""; + var html = ''; html += '
'; html += items.map(function (filter) { - var itemHtml = ""; - var checkedHtml = isCheckedFn(filter) ? " checked" : ""; - itemHtml += "'; return itemHtml; - }).join(""); - html += "
"; - elem.querySelector(".filterOptions").innerHTML = html; + }).join(''); + html += '
'; + elem.querySelector('.filterOptions').innerHTML = html; } function renderFilters(context, result, query) { - renderOptions(context, ".genreFilters", "chkGenreFilter", result.Genres, function (i) { - var delimeter = "|"; - return (delimeter + (query.Genres || "") + delimeter).indexOf(delimeter + i + delimeter) != -1; + renderOptions(context, '.genreFilters', 'chkGenreFilter', result.Genres, function (i) { + var delimeter = '|'; + return (delimeter + (query.Genres || '') + delimeter).indexOf(delimeter + i + delimeter) != -1; }); - renderOptions(context, ".officialRatingFilters", "chkOfficialRatingFilter", result.OfficialRatings, function (i) { - var delimeter = "|"; - return (delimeter + (query.OfficialRatings || "") + delimeter).indexOf(delimeter + i + delimeter) != -1; + renderOptions(context, '.officialRatingFilters', 'chkOfficialRatingFilter', result.OfficialRatings, function (i) { + var delimeter = '|'; + return (delimeter + (query.OfficialRatings || '') + delimeter).indexOf(delimeter + i + delimeter) != -1; }); - renderOptions(context, ".tagFilters", "chkTagFilter", result.Tags, function (i) { - var delimeter = "|"; - return (delimeter + (query.Tags || "") + delimeter).indexOf(delimeter + i + delimeter) != -1; + renderOptions(context, '.tagFilters', 'chkTagFilter', result.Tags, function (i) { + var delimeter = '|'; + return (delimeter + (query.Tags || '') + delimeter).indexOf(delimeter + i + delimeter) != -1; }); - renderOptions(context, ".yearFilters", "chkYearFilter", result.Years, function (i) { - var delimeter = ","; - return (delimeter + (query.Years || "") + delimeter).indexOf(delimeter + i + delimeter) != -1; + renderOptions(context, '.yearFilters', 'chkYearFilter', result.Years, function (i) { + var delimeter = ','; + return (delimeter + (query.Years || '') + delimeter).indexOf(delimeter + i + delimeter) != -1; }); } function loadDynamicFilters(context, apiClient, userId, itemQuery) { - return apiClient.getJSON(apiClient.getUrl("Items/Filters", { + return apiClient.getJSON(apiClient.getUrl('Items/Filters', { UserId: userId, ParentId: itemQuery.ParentId, IncludeItemTypes: itemQuery.IncludeItemTypes @@ -58,98 +58,98 @@ define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "brow var length; var query = options.query; - if (options.mode == "livetvchannels") { - context.querySelector(".chkFavorite").checked = query.IsFavorite == true; - context.querySelector(".chkLikes").checked = query.IsLiked == true; - context.querySelector(".chkDislikes").checked = query.IsDisliked == true; + if (options.mode == 'livetvchannels') { + context.querySelector('.chkFavorite').checked = query.IsFavorite == true; + context.querySelector('.chkLikes').checked = query.IsLiked == true; + context.querySelector('.chkDislikes').checked = query.IsDisliked == true; } else { - elems = context.querySelectorAll(".chkStandardFilter"); + elems = context.querySelectorAll('.chkStandardFilter'); for (i = 0, length = elems.length; i < length; i++) { var chkStandardFilter = elems[i]; - var filters = "," + (query.Filters || ""); - var filterName = chkStandardFilter.getAttribute("data-filter"); - chkStandardFilter.checked = filters.indexOf("," + filterName) != -1; + var filters = ',' + (query.Filters || ''); + var filterName = chkStandardFilter.getAttribute('data-filter'); + chkStandardFilter.checked = filters.indexOf(',' + filterName) != -1; } } - elems = context.querySelectorAll(".chkVideoTypeFilter"); + elems = context.querySelectorAll('.chkVideoTypeFilter'); for (i = 0, length = elems.length; i < length; i++) { var chkVideoTypeFilter = elems[i]; - var filters = "," + (query.VideoTypes || ""); - var filterName = chkVideoTypeFilter.getAttribute("data-filter"); - chkVideoTypeFilter.checked = filters.indexOf("," + filterName) != -1; + var filters = ',' + (query.VideoTypes || ''); + var filterName = chkVideoTypeFilter.getAttribute('data-filter'); + chkVideoTypeFilter.checked = filters.indexOf(',' + filterName) != -1; } - context.querySelector(".chk3DFilter").checked = query.Is3D == true; - context.querySelector(".chkHDFilter").checked = query.IsHD == true; - context.querySelector(".chk4KFilter").checked = query.Is4K == true; - context.querySelector(".chkSDFilter").checked = query.IsHD == true; - context.querySelector("#chkSubtitle").checked = query.HasSubtitles == true; - context.querySelector("#chkTrailer").checked = query.HasTrailer == true; - context.querySelector("#chkThemeSong").checked = query.HasThemeSong == true; - context.querySelector("#chkThemeVideo").checked = query.HasThemeVideo == true; - context.querySelector("#chkSpecialFeature").checked = query.HasSpecialFeature == true; - context.querySelector("#chkSpecialEpisode").checked = query.ParentIndexNumber == 0; - context.querySelector("#chkMissingEpisode").checked = query.IsMissing == true; - context.querySelector("#chkFutureEpisode").checked = query.IsUnaired == true; + context.querySelector('.chk3DFilter').checked = query.Is3D == true; + context.querySelector('.chkHDFilter').checked = query.IsHD == true; + context.querySelector('.chk4KFilter').checked = query.Is4K == true; + context.querySelector('.chkSDFilter').checked = query.IsHD == true; + context.querySelector('#chkSubtitle').checked = query.HasSubtitles == true; + context.querySelector('#chkTrailer').checked = query.HasTrailer == true; + context.querySelector('#chkThemeSong').checked = query.HasThemeSong == true; + context.querySelector('#chkThemeVideo').checked = query.HasThemeVideo == true; + context.querySelector('#chkSpecialFeature').checked = query.HasSpecialFeature == true; + context.querySelector('#chkSpecialEpisode').checked = query.ParentIndexNumber == 0; + context.querySelector('#chkMissingEpisode').checked = query.IsMissing == true; + context.querySelector('#chkFutureEpisode').checked = query.IsUnaired == true; for (i = 0, length = elems.length; i < length; i++) { var chkStatus = elems[i]; - var filters = "," + (query.SeriesStatus || ""); - var filterName = chkStatus.getAttribute("data-filter"); - chkStatus.checked = filters.indexOf("," + filterName) != -1; + var filters = ',' + (query.SeriesStatus || ''); + var filterName = chkStatus.getAttribute('data-filter'); + chkStatus.checked = filters.indexOf(',' + filterName) != -1; } } function triggerChange(instance) { - events.trigger(instance, "filterchange"); + events.trigger(instance, 'filterchange'); } function setVisibility(context, options) { - if (options.mode == "livetvchannels" || options.mode == "albums" || options.mode == "artists" || options.mode == "albumartists" || options.mode == "songs") { - hideByClass(context, "videoStandard"); + if (options.mode == 'livetvchannels' || options.mode == 'albums' || options.mode == 'artists' || options.mode == 'albumartists' || options.mode == 'songs') { + hideByClass(context, 'videoStandard'); } if (enableDynamicFilters(options.mode)) { - context.querySelector(".genreFilters").classList.remove("hide"); - context.querySelector(".officialRatingFilters").classList.remove("hide"); - context.querySelector(".tagFilters").classList.remove("hide"); - context.querySelector(".yearFilters").classList.remove("hide"); + context.querySelector('.genreFilters').classList.remove('hide'); + context.querySelector('.officialRatingFilters').classList.remove('hide'); + context.querySelector('.tagFilters').classList.remove('hide'); + context.querySelector('.yearFilters').classList.remove('hide'); } - if (options.mode == "movies" || options.mode == "episodes") { - context.querySelector(".videoTypeFilters").classList.remove("hide"); + if (options.mode == 'movies' || options.mode == 'episodes') { + context.querySelector('.videoTypeFilters').classList.remove('hide'); } - if (options.mode == "movies" || options.mode == "series" || options.mode == "episodes") { - context.querySelector(".features").classList.remove("hide"); + if (options.mode == 'movies' || options.mode == 'series' || options.mode == 'episodes') { + context.querySelector('.features').classList.remove('hide'); } - if (options.mode == "series") { - context.querySelector(".seriesStatus").classList.remove("hide"); + if (options.mode == 'series') { + context.querySelector('.seriesStatus').classList.remove('hide'); } - if (options.mode == "episodes") { - showByClass(context, "episodeFilter"); + if (options.mode == 'episodes') { + showByClass(context, 'episodeFilter'); } } function showByClass(context, className) { - var elems = context.querySelectorAll("." + className); + var elems = context.querySelectorAll('.' + className); for (var i = 0, length = elems.length; i < length; i++) { - elems[i].classList.remove("hide"); + elems[i].classList.remove('hide'); } } function hideByClass(context, className) { - var elems = context.querySelectorAll("." + className); + var elems = context.querySelectorAll('.' + className); for (var i = 0, length = elems.length; i < length; i++) { - elems[i].classList.add("hide"); + elems[i].classList.add('hide'); } } function enableDynamicFilters(mode) { - return mode == "movies" || mode == "series" || mode == "albums" || mode == "albumartists" || mode == "artists" || mode == "songs" || mode == "episodes"; + return mode == 'movies' || mode == 'series' || mode == 'albums' || mode == 'albumartists' || mode == 'artists' || mode == 'songs' || mode == 'episodes'; } return function (options) { @@ -162,12 +162,12 @@ define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "brow function onStandardFilterChange() { var query = options.query; - var filterName = this.getAttribute("data-filter"); - var filters = query.Filters || ""; - filters = ("," + filters).replace("," + filterName, "").substring(1); + var filterName = this.getAttribute('data-filter'); + var filters = query.Filters || ''; + filters = (',' + filters).replace(',' + filterName, '').substring(1); if (this.checked) { - filters = filters ? filters + "," + filterName : filterName; + filters = filters ? filters + ',' + filterName : filterName; } query.StartIndex = 0; @@ -177,12 +177,12 @@ define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "brow function onVideoTypeFilterChange() { var query = options.query; - var filterName = this.getAttribute("data-filter"); - var filters = query.VideoTypes || ""; - filters = ("," + filters).replace("," + filterName, "").substring(1); + var filterName = this.getAttribute('data-filter'); + var filters = query.VideoTypes || ''; + filters = (',' + filters).replace(',' + filterName, '').substring(1); if (this.checked) { - filters = filters ? filters + "," + filterName : filterName; + filters = filters ? filters + ',' + filterName : filterName; } query.StartIndex = 0; @@ -192,12 +192,12 @@ define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "brow function onStatusChange() { var query = options.query; - var filterName = this.getAttribute("data-filter"); - var filters = query.SeriesStatus || ""; - filters = ("," + filters).replace("," + filterName, "").substring(1); + var filterName = this.getAttribute('data-filter'); + var filters = query.SeriesStatus || ''; + filters = (',' + filters).replace(',' + filterName, '').substring(1); if (this.checked) { - filters = filters ? filters + "," + filterName : filterName; + filters = filters ? filters + ',' + filterName : filterName; } query.SeriesStatus = filters; @@ -211,86 +211,86 @@ define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "brow var length; var query = options.query; - if (options.mode == "livetvchannels") { - elems = context.querySelectorAll(".chkFavorite"); + if (options.mode == 'livetvchannels') { + elems = context.querySelectorAll('.chkFavorite'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("change", onFavoriteChange); + elems[i].addEventListener('change', onFavoriteChange); } - context.querySelector(".chkLikes").addEventListener("change", function () { + context.querySelector('.chkLikes').addEventListener('change', function () { query.StartIndex = 0; query.IsLiked = this.checked ? true : null; triggerChange(self); }); - context.querySelector(".chkDislikes").addEventListener("change", function () { + context.querySelector('.chkDislikes').addEventListener('change', function () { query.StartIndex = 0; query.IsDisliked = this.checked ? true : null; triggerChange(self); }); } else { - elems = context.querySelectorAll(".chkStandardFilter"); + elems = context.querySelectorAll('.chkStandardFilter'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("change", onStandardFilterChange); + elems[i].addEventListener('change', onStandardFilterChange); } } - elems = context.querySelectorAll(".chkVideoTypeFilter"); + elems = context.querySelectorAll('.chkVideoTypeFilter'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("change", onVideoTypeFilterChange); + elems[i].addEventListener('change', onVideoTypeFilterChange); } - context.querySelector(".chk3DFilter").addEventListener("change", function () { + context.querySelector('.chk3DFilter').addEventListener('change', function () { query.StartIndex = 0; query.Is3D = this.checked ? true : null; triggerChange(self); }); - context.querySelector(".chk4KFilter").addEventListener("change", function () { + context.querySelector('.chk4KFilter').addEventListener('change', function () { query.StartIndex = 0; query.Is4K = this.checked ? true : null; triggerChange(self); }); - context.querySelector(".chkHDFilter").addEventListener("change", function () { + context.querySelector('.chkHDFilter').addEventListener('change', function () { query.StartIndex = 0; query.IsHD = this.checked ? true : null; triggerChange(self); }); - context.querySelector(".chkSDFilter").addEventListener("change", function () { + context.querySelector('.chkSDFilter').addEventListener('change', function () { query.StartIndex = 0; query.IsHD = this.checked ? false : null; triggerChange(self); }); - elems = context.querySelectorAll(".chkStatus"); + elems = context.querySelectorAll('.chkStatus'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("change", onStatusChange); + elems[i].addEventListener('change', onStatusChange); } - context.querySelector("#chkTrailer").addEventListener("change", function () { + context.querySelector('#chkTrailer').addEventListener('change', function () { query.StartIndex = 0; query.HasTrailer = this.checked ? true : null; triggerChange(self); }); - context.querySelector("#chkThemeSong").addEventListener("change", function () { + context.querySelector('#chkThemeSong').addEventListener('change', function () { query.StartIndex = 0; query.HasThemeSong = this.checked ? true : null; triggerChange(self); }); - context.querySelector("#chkSpecialFeature").addEventListener("change", function () { + context.querySelector('#chkSpecialFeature').addEventListener('change', function () { query.StartIndex = 0; query.HasSpecialFeature = this.checked ? true : null; triggerChange(self); }); - context.querySelector("#chkThemeVideo").addEventListener("change", function () { + context.querySelector('#chkThemeVideo').addEventListener('change', function () { query.StartIndex = 0; query.HasThemeVideo = this.checked ? true : null; triggerChange(self); }); - context.querySelector("#chkMissingEpisode").addEventListener("change", function () { + context.querySelector('#chkMissingEpisode').addEventListener('change', function () { query.StartIndex = 0; query.IsMissing = this.checked ? true : false; triggerChange(self); }); - context.querySelector("#chkSpecialEpisode").addEventListener("change", function () { + context.querySelector('#chkSpecialEpisode').addEventListener('change', function () { query.StartIndex = 0; query.ParentIndexNumber = this.checked ? 0 : null; triggerChange(self); }); - context.querySelector("#chkFutureEpisode").addEventListener("change", function () { + context.querySelector('#chkFutureEpisode').addEventListener('change', function () { query.StartIndex = 0; if (this.checked) { query.IsUnaired = true; @@ -301,18 +301,18 @@ define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "brow } triggerChange(self); }); - context.querySelector("#chkSubtitle").addEventListener("change", function () { + context.querySelector('#chkSubtitle').addEventListener('change', function () { query.StartIndex = 0; query.HasSubtitles = this.checked ? true : null; triggerChange(self); }); - context.addEventListener("change", function (e) { - var chkGenreFilter = dom.parentWithClass(e.target, "chkGenreFilter"); + context.addEventListener('change', function (e) { + var chkGenreFilter = dom.parentWithClass(e.target, 'chkGenreFilter'); if (chkGenreFilter) { - var filterName = chkGenreFilter.getAttribute("data-filter"); - var filters = query.Genres || ""; - var delimiter = "|"; - filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1); + var filterName = chkGenreFilter.getAttribute('data-filter'); + var filters = query.Genres || ''; + var delimiter = '|'; + filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1); if (chkGenreFilter.checked) { filters = filters ? (filters + delimiter + filterName) : filterName; } @@ -321,12 +321,12 @@ define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "brow triggerChange(self); return; } - var chkTagFilter = dom.parentWithClass(e.target, "chkTagFilter"); + var chkTagFilter = dom.parentWithClass(e.target, 'chkTagFilter'); if (chkTagFilter) { - var filterName = chkTagFilter.getAttribute("data-filter"); - var filters = query.Tags || ""; - var delimiter = "|"; - filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1); + var filterName = chkTagFilter.getAttribute('data-filter'); + var filters = query.Tags || ''; + var delimiter = '|'; + filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1); if (chkTagFilter.checked) { filters = filters ? (filters + delimiter + filterName) : filterName; } @@ -335,12 +335,12 @@ define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "brow triggerChange(self); return; } - var chkYearFilter = dom.parentWithClass(e.target, "chkYearFilter"); + var chkYearFilter = dom.parentWithClass(e.target, 'chkYearFilter'); if (chkYearFilter) { - var filterName = chkYearFilter.getAttribute("data-filter"); - var filters = query.Years || ""; - var delimiter = ","; - filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1); + var filterName = chkYearFilter.getAttribute('data-filter'); + var filters = query.Years || ''; + var delimiter = ','; + filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1); if (chkYearFilter.checked) { filters = filters ? (filters + delimiter + filterName) : filterName; } @@ -349,12 +349,12 @@ define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "brow triggerChange(self); return; } - var chkOfficialRatingFilter = dom.parentWithClass(e.target, "chkOfficialRatingFilter"); + var chkOfficialRatingFilter = dom.parentWithClass(e.target, 'chkOfficialRatingFilter'); if (chkOfficialRatingFilter) { - var filterName = chkOfficialRatingFilter.getAttribute("data-filter"); - var filters = query.OfficialRatings || ""; - var delimiter = "|"; - filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1); + var filterName = chkOfficialRatingFilter.getAttribute('data-filter'); + var filters = query.OfficialRatings || ''; + var delimiter = '|'; + filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1); if (chkOfficialRatingFilter.checked) { filters = filters ? (filters + delimiter + filterName) : filterName; } @@ -370,23 +370,23 @@ define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "brow self.show = function () { return new Promise(function (resolve, reject) { - require(["text!./filterdialog.template.html"], function (template) { + require(['text!./filterdialog.template.html'], function (template) { var dlg = dialogHelper.createDialog({ removeOnClose: true, modal: false }); - dlg.classList.add("ui-body-a"); - dlg.classList.add("background-theme-a"); - dlg.classList.add("formDialog"); - dlg.classList.add("filterDialog"); + dlg.classList.add('ui-body-a'); + dlg.classList.add('background-theme-a'); + dlg.classList.add('formDialog'); + dlg.classList.add('filterDialog'); dlg.innerHTML = globalize.translateDocument(template); setVisibility(dlg, options); dialogHelper.open(dlg); - dlg.addEventListener("close", resolve); + dlg.addEventListener('close', resolve); updateFilterControls(dlg, options); bindEvents(dlg); if (enableDynamicFilters(options.mode)) { - dlg.classList.add("dynamicFilterDialog"); + dlg.classList.add('dynamicFilterDialog'); var apiClient = connectionManager.getApiClient(options.serverId); loadDynamicFilters(dlg, apiClient, apiClient.getCurrentUserId(), options.query); } diff --git a/src/components/focusManager.js b/src/components/focusManager.js index 1da58d75c8..f2022cc445 100644 --- a/src/components/focusManager.js +++ b/src/components/focusManager.js @@ -117,7 +117,7 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { return false; } - if (elem.getAttribute('tabindex') === "-1") { + if (elem.getAttribute('tabindex') === '-1') { return false; } diff --git a/src/components/groupedcards.js b/src/components/groupedcards.js index ad638ecdd9..602c4310f4 100644 --- a/src/components/groupedcards.js +++ b/src/components/groupedcards.js @@ -1,28 +1,28 @@ -define(["dom", "appRouter", "connectionManager"], function (dom, appRouter, connectionManager) { - "use strict"; +define(['dom', 'appRouter', 'connectionManager'], function (dom, appRouter, connectionManager) { + 'use strict'; function onGroupedCardClick(e, card) { - var itemId = card.getAttribute("data-id"); - var serverId = card.getAttribute("data-serverid"); + var itemId = card.getAttribute('data-id'); + var serverId = card.getAttribute('data-serverid'); var apiClient = connectionManager.getApiClient(serverId); var userId = apiClient.getCurrentUserId(); - var playedIndicator = card.querySelector(".playedIndicator"); + var playedIndicator = card.querySelector('.playedIndicator'); var playedIndicatorHtml = playedIndicator ? playedIndicator.innerHTML : null; var options = { - Limit: parseInt(playedIndicatorHtml || "10"), - Fields: "PrimaryImageAspectRatio,DateCreated", + Limit: parseInt(playedIndicatorHtml || '10'), + Fields: 'PrimaryImageAspectRatio,DateCreated', ParentId: itemId, GroupItems: false }; - var actionableParent = dom.parentWithTag(e.target, ["A", "BUTTON", "INPUT"]); + var actionableParent = dom.parentWithTag(e.target, ['A', 'BUTTON', 'INPUT']); - if (!actionableParent || actionableParent.classList.contains("cardContent")) { - apiClient.getJSON(apiClient.getUrl("Users/" + userId + "/Items/Latest", options)).then(function (items) { + if (!actionableParent || actionableParent.classList.contains('cardContent')) { + apiClient.getJSON(apiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) { if (1 === items.length) { return void appRouter.showItem(items[0]); } - var url = "itemdetails.html?id=" + itemId + "&serverId=" + serverId; + var url = 'itemdetails.html?id=' + itemId + '&serverId=' + serverId; Dashboard.navigate(url); }); e.stopPropagation(); @@ -32,7 +32,7 @@ define(["dom", "appRouter", "connectionManager"], function (dom, appRouter, conn } function onItemsContainerClick(e) { - var groupedCard = dom.parentWithClass(e.target, "groupedCard"); + var groupedCard = dom.parentWithClass(e.target, 'groupedCard'); if (groupedCard) { onGroupedCardClick(e, groupedCard); diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index 66991d4c88..223d3a2063 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -227,7 +227,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', channelQuery.Limit = channelLimit; channelQuery.AddCurrentProgram = false; channelQuery.EnableUserData = false; - channelQuery.EnableImageTypes = "Primary"; + channelQuery.EnableImageTypes = 'Primary'; var categories = self.categoryOptions.categories || []; var displayMovieContent = !categories.length || categories.indexOf('movies') !== -1; @@ -261,8 +261,8 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } if (userSettings.get('livetv-channelorder') === 'DatePlayed') { - channelQuery.SortBy = "DatePlayed"; - channelQuery.SortOrder = "Descending"; + channelQuery.SortBy = 'DatePlayed'; + channelQuery.SortOrder = 'Descending'; } else { channelQuery.SortBy = null; channelQuery.SortOrder = null; @@ -329,7 +329,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', ImageTypeLimit: 1, EnableImages: false, //EnableImageTypes: layoutManager.tv ? "Primary,Backdrop" : "Primary", - SortBy: "StartDate", + SortBy: 'StartDate', EnableTotalRecordCount: false, EnableUserData: false }; @@ -502,7 +502,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var endPercent = (renderEndMs - renderStartMs) / msPerDay; endPercent *= 100; - var cssClass = "programCell itemAction"; + var cssClass = 'programCell itemAction'; var accentCssClass = null; var displayInnerContent = true; @@ -525,11 +525,11 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } if (displayInnerContent && enableColorCodedBackgrounds && accentCssClass) { - cssClass += " programCell-" + accentCssClass; + cssClass += ' programCell-' + accentCssClass; } if (now >= startDateLocalMs && now < endDateLocalMs) { - cssClass += " programCell-active"; + cssClass += ' programCell-active'; } var timerAttributes = ''; @@ -545,7 +545,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += ''; if (displayInnerContent) { - var guideProgramNameClass = "guideProgramName"; + var guideProgramNameClass = 'guideProgramName'; html += '
'; @@ -630,7 +630,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var url = apiClient.getScaledImageUrl(channel.Id, { maxHeight: 220, tag: channel.ImageTags.Primary, - type: "Primary" + type: 'Primary' }); html += '
'; diff --git a/src/components/homescreensettings/homescreensettings.js b/src/components/homescreensettings/homescreensettings.js index 67a4ac165d..15812647cc 100644 --- a/src/components/homescreensettings/homescreensettings.js +++ b/src/components/homescreensettings/homescreensettings.js @@ -1,5 +1,5 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loading', 'connectionManager', 'homeSections', 'dom', 'events', 'listViewStyle', 'emby-select', 'emby-checkbox'], function (require, appHost, layoutManager, focusManager, globalize, loading, connectionManager, homeSections, dom, events) { - "use strict"; + 'use strict'; var numConfigurableSections = 7; @@ -276,7 +276,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa updateHomeSectionValues(context, userSettings); var promise1 = apiClient.getUserViews({ IncludeHidden: true }, user.Id); - var promise2 = apiClient.getJSON(apiClient.getUrl("Users/" + user.Id + "/GroupingOptions")); + var promise2 = apiClient.getJSON(apiClient.getUrl('Users/' + user.Id + '/GroupingOptions')); Promise.all([promise1, promise2]).then(function (responses) { @@ -363,17 +363,17 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa user.Configuration.HidePlayedInLatest = context.querySelector('.chkHidePlayedFromLatest').checked; - user.Configuration.LatestItemsExcludes = getCheckboxItems(".chkIncludeInLatest", context, false).map(function (i) { + user.Configuration.LatestItemsExcludes = getCheckboxItems('.chkIncludeInLatest', context, false).map(function (i) { return i.getAttribute('data-folderid'); }); - user.Configuration.MyMediaExcludes = getCheckboxItems(".chkIncludeInMyMedia", context, false).map(function (i) { + user.Configuration.MyMediaExcludes = getCheckboxItems('.chkIncludeInMyMedia', context, false).map(function (i) { return i.getAttribute('data-folderid'); }); - user.Configuration.GroupedFolders = getCheckboxItems(".chkGroupFolder", context, true).map(function (i) { + user.Configuration.GroupedFolders = getCheckboxItems('.chkGroupFolder', context, true).map(function (i) { return i.getAttribute('data-folderid'); }); diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 0370777e58..3cd30893b9 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -64,21 +64,21 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } else { var noLibDescription; if (user['Policy'] && user['Policy']['IsAdministrator']) { - noLibDescription = globalize.translate("NoCreatedLibraries", '
', ''); + noLibDescription = globalize.translate('NoCreatedLibraries', '
', ''); } else { - noLibDescription = globalize.translate("AskAdminToCreateLibrary"); + noLibDescription = globalize.translate('AskAdminToCreateLibrary'); } html += '
'; - html += '

' + globalize.translate("MessageNothingHere") + '

'; + html += '

' + globalize.translate('MessageNothingHere') + '

'; html += '

' + noLibDescription + '

'; html += '
'; elem.innerHTML = html; - var createNowLink = elem.querySelector("#button-createLibrary"); + var createNowLink = elem.querySelector('#button-createLibrary'); if (createNowLink) { - createNowLink.addEventListener("click", function () { - Dashboard.navigate("library.html"); + createNowLink.addEventListener('click', function () { + Dashboard.navigate('library.html'); }); } } @@ -172,7 +172,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function getLibraryButtonsHtml(items) { - var html = ""; + var html = ''; html += '
'; html += '

' + globalize.translate('HeaderMyMedia') + '

'; @@ -229,9 +229,9 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la var options = { Limit: limit, - Fields: "PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,BasicSyncInfo', ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Thumb", + EnableImageTypes: 'Primary,Backdrop,Thumb', ParentId: parentId }; @@ -386,9 +386,9 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la var options = { Limit: limit, Recursive: true, - Fields: "PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,BasicSyncInfo', ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Thumb", + EnableImageTypes: 'Primary,Backdrop,Thumb', EnableTotalRecordCount: false, MediaTypes: 'Video' }; @@ -459,9 +459,9 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la var options = { Limit: limit, Recursive: true, - Fields: "PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,BasicSyncInfo', ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Thumb", + EnableImageTypes: 'Primary,Backdrop,Thumb', EnableTotalRecordCount: false, MediaTypes: 'Audio' }; @@ -524,9 +524,9 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la IsAiring: true, limit: 24, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Thumb,Backdrop", + EnableImageTypes: 'Primary,Thumb,Backdrop', EnableTotalRecordCount: false, - Fields: "ChannelInfo,PrimaryImageAspectRatio" + Fields: 'ChannelInfo,PrimaryImageAspectRatio' }); }; } @@ -565,9 +565,9 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la IsAiring: true, limit: 1, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Thumb,Backdrop", + EnableImageTypes: 'Primary,Thumb,Backdrop', EnableTotalRecordCount: false, - Fields: "ChannelInfo,PrimaryImageAspectRatio" + Fields: 'ChannelInfo,PrimaryImageAspectRatio' }).then(function (result) { var html = ''; if (result.Items.length) { @@ -667,10 +667,10 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la var apiClient = connectionManager.getApiClient(serverId); return apiClient.getNextUpEpisodes({ Limit: enableScrollX() ? 24 : 15, - Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo', UserId: apiClient.getCurrentUserId(), ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableTotalRecordCount: false }); }; @@ -739,7 +739,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la return apiClient.getLiveTvRecordings({ userId: apiClient.getCurrentUserId(), Limit: enableScrollX() ? 12 : 5, - Fields: "PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,BasicSyncInfo', EnableTotalRecordCount: false, IsLibraryItem: activeRecordingsOnly ? null : false, IsInProgress: activeRecordingsOnly ? true : null diff --git a/src/components/htmlMediaHelper.js b/src/components/htmlMediaHelper.js index 8026110e21..2756b6f348 100644 --- a/src/components/htmlMediaHelper.js +++ b/src/components/htmlMediaHelper.js @@ -2,12 +2,12 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve 'use strict'; function getSavedVolume() { - return appSettings.get("volume") || 1; + return appSettings.get('volume') || 1; } function saveVolume(value) { if (value) { - appSettings.set("volume", value); + appSettings.set('volume', value); } } @@ -178,7 +178,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve if (onMediaReady) onMediaReady(); } else { // update video player position when media is ready to be sought - var events = ["durationchange", "loadeddata", "play", "loadedmetadata"]; + var events = ['durationchange', 'loadeddata', 'play', 'loadedmetadata']; var onMediaChange = function(e) { if (element.currentTime === 0 && element.duration >= seconds) { // seek only when video position is exactly zero, @@ -373,13 +373,13 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve onErrorInternal(instance, 'network'); } } else { - console.debug("fatal network error encountered, try to recover"); + console.debug('fatal network error encountered, try to recover'); hls.startLoad(); } break; case Hls.ErrorTypes.MEDIA_ERROR: - console.debug("fatal media error encountered, try to recover"); + console.debug('fatal media error encountered, try to recover'); var currentReject = reject; reject = null; handleHlsJsMediaError(instance, currentReject); @@ -409,7 +409,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve elem.src = ''; elem.innerHTML = ''; - elem.removeAttribute("src"); + elem.removeAttribute('src'); destroyHlsPlayer(instance); destroyFlvPlayer(instance); diff --git a/src/components/htmlaudioplayer/plugin.js b/src/components/htmlaudioplayer/plugin.js index 90f954d503..c3a5484aca 100644 --- a/src/components/htmlaudioplayer/plugin.js +++ b/src/components/htmlaudioplayer/plugin.js @@ -1,5 +1,5 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelper'], function (events, browser, require, appHost, appSettings, htmlMediaHelper) { - "use strict"; + 'use strict'; function getDefaultProfile() { return new Promise(function (resolve, reject) { diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index d3e3b3640f..e5c11c9879 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -1,5 +1,5 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackManager', 'appRouter', 'appSettings', 'connectionManager', 'htmlMediaHelper', 'itemHelper', 'screenfull', 'globalize'], function (browser, require, events, appHost, loading, dom, playbackManager, appRouter, appSettings, connectionManager, htmlMediaHelper, itemHelper, screenfull, globalize) { - "use strict"; + 'use strict'; /* globals cast */ var mediaManager; @@ -212,7 +212,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function incrementFetchQueue() { if (self._fetchQueue <= 0) { self.isFetching = true; - events.trigger(self, "beginFetch"); + events.trigger(self, 'beginFetch'); } self._fetchQueue++; @@ -223,7 +223,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (self._fetchQueue <= 0) { self.isFetching = false; - events.trigger(self, "endFetch"); + events.trigger(self, 'endFetch'); } } @@ -466,7 +466,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa console.debug('content type: ' + contentType); host.onError = function (errorCode) { - console.error("fatal Error - " + errorCode); + console.error('fatal Error - ' + errorCode); }; mediaElement.autoplay = false; @@ -611,7 +611,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } else if (currentTrackEvents) { setTrackEventsSubtitleOffset(currentTrackEvents, offsetValue); } else { - console.debug("No available track, cannot apply offset: ", offsetValue); + console.debug('No available track, cannot apply offset: ', offsetValue); } } }; @@ -1061,8 +1061,8 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa fonts: attachments.map(function (i) { return apiClient.getUrl(i.DeliveryUrl); }), - workerUrl: appRouter.baseUrl() + "/libraries/subtitles-octopus-worker.js", - legacyWorkerUrl: appRouter.baseUrl() + "/libraries/subtitles-octopus-worker-legacy.js", + workerUrl: appRouter.baseUrl() + '/libraries/subtitles-octopus-worker.js', + legacyWorkerUrl: appRouter.baseUrl() + '/libraries/subtitles-octopus-worker-legacy.js', onError: function() { htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror'); }, @@ -1412,12 +1412,12 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var list = []; var video = document.createElement('video'); - if (video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function" || document.pictureInPictureEnabled) { + if (video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === 'function' || document.pictureInPictureEnabled) { list.push('PictureInPicture'); } else if (browser.ipad) { // Unfortunately this creates a false positive on devices where its' not actually supported if (navigator.userAgent.toLowerCase().indexOf('os 9') === -1) { - if (video.webkitSupportsPresentationMode && video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function") { + if (video.webkitSupportsPresentationMode && video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === 'function') { list.push('PictureInPicture'); } } @@ -1432,7 +1432,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } list.push('SetBrightness'); - list.push("SetAspectRatio"); + list.push('SetAspectRatio'); return list; } @@ -1517,8 +1517,8 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa Windows.UI.ViewManagement.ApplicationView.getForCurrentView().tryEnterViewModeAsync(Windows.UI.ViewManagement.ApplicationViewMode.default); } } else { - if (video && video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function") { - video.webkitSetPresentationMode(isEnabled ? "picture-in-picture" : "inline"); + if (video && video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === 'function') { + video.webkitSetPresentationMode(isEnabled ? 'picture-in-picture' : 'inline'); } } }; @@ -1532,7 +1532,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } else { var video = this._mediaElement; if (video) { - return video.webkitPresentationMode === "picture-in-picture"; + return video.webkitPresentationMode === 'picture-in-picture'; } } @@ -1555,11 +1555,11 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (video) { if (isEnabled) { video.requestAirPlay().catch(function(err) { - console.error("Error requesting AirPlay", err); + console.error('Error requesting AirPlay', err); }); } else { document.exitAirPLay().catch(function(err) { - console.error("Error exiting AirPlay", err); + console.error('Error exiting AirPlay', err); }); } } @@ -1691,29 +1691,29 @@ 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"); + if ('auto' === val) { + mediaElement.style.removeProperty('object-fit'); } else { - mediaElement.style["object-fit"] = val; + mediaElement.style['object-fit'] = val; } } this._currentAspectRatio = val; }; HtmlVideoPlayer.prototype.getAspectRatio = function () { - return this._currentAspectRatio || "auto"; + return this._currentAspectRatio || 'auto'; }; HtmlVideoPlayer.prototype.getSupportedAspectRatios = function () { return [{ - name: "Auto", - id: "auto" + name: 'Auto', + id: 'auto' }, { - name: "Cover", - id: "cover" + name: 'Cover', + id: 'cover' }, { - name: "Fill", - id: "fill" + name: 'Fill', + id: 'fill' }]; }; @@ -1762,7 +1762,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (protocol) { mediaCategory.stats.push({ - label: globalize.translate("LabelProtocol"), + label: globalize.translate('LabelProtocol'), value: protocol }); } @@ -1772,12 +1772,12 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (this._hlsPlayer || this._shakaPlayer) { mediaCategory.stats.push({ - label: globalize.translate("LabelStreamType"), + label: globalize.translate('LabelStreamType'), value: 'HLS' }); } else { mediaCategory.stats.push({ - label: globalize.translate("LabelStreamType"), + label: globalize.translate('LabelStreamType'), value: 'Video' }); } @@ -1795,7 +1795,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa // Don't show player dimensions on smart TVs because the app UI could be lower resolution than the video and this causes users to think there is a problem if (width && height && !browser.tv) { videoCategory.stats.push({ - label: globalize.translate("LabelPlayerDimensions"), + label: globalize.translate('LabelPlayerDimensions'), value: width + 'x' + height }); } @@ -1805,7 +1805,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (width && height) { videoCategory.stats.push({ - label: globalize.translate("LabelVideoResolution"), + label: globalize.translate('LabelVideoResolution'), value: width + 'x' + height }); } @@ -1815,13 +1815,13 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var droppedVideoFrames = playbackQuality.droppedVideoFrames || 0; videoCategory.stats.push({ - label: globalize.translate("LabelDroppedFrames"), + label: globalize.translate('LabelDroppedFrames'), value: droppedVideoFrames }); var corruptedVideoFrames = playbackQuality.corruptedVideoFrames || 0; videoCategory.stats.push({ - label: globalize.translate("LabelCorruptedFrames"), + label: globalize.translate('LabelCorruptedFrames'), value: corruptedVideoFrames }); } diff --git a/src/components/imagedownloader/imagedownloader.js b/src/components/imagedownloader/imagedownloader.js index 01dd7e312b..3e0d00ac2d 100644 --- a/src/components/imagedownloader/imagedownloader.js +++ b/src/components/imagedownloader/imagedownloader.js @@ -109,7 +109,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image html += ''; var startAtDisplay = totalRecordCount ? startIndex + 1 : 0; - html += globalize.translate("ListPaging", startAtDisplay, recordsEnd, totalRecordCount); + html += globalize.translate('ListPaging', startAtDisplay, recordsEnd, totalRecordCount); html += ''; @@ -144,7 +144,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image } function getDisplayUrl(url, apiClient) { - return apiClient.getUrl("Images/Remote", { imageUrl: url }); + return apiClient.getUrl('Images/Remote', { imageUrl: url }); } function getRemoteImageHtml(image, imageType, apiClient) { @@ -155,21 +155,21 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image var html = ''; - var cssClass = "card scalableCard imageEditorCard"; + var cssClass = 'card scalableCard imageEditorCard'; var cardBoxCssClass = 'cardBox visualCardBox'; var shape = 'backdrop'; - if (imageType === "Backdrop" || imageType === "Art" || imageType === "Thumb" || imageType === "Logo") { + if (imageType === 'Backdrop' || imageType === 'Art' || imageType === 'Thumb' || imageType === 'Logo') { shape = 'backdrop'; - } else if (imageType === "Banner") { + } else if (imageType === 'Banner') { shape = 'banner'; - } else if (imageType === "Disc") { + } else if (imageType === 'Disc') { shape = 'square'; } else { - if (currentItemType === "Episode") { + if (currentItemType === 'Episode') { shape = 'backdrop'; - } else if (currentItemType === "MusicAlbum" || currentItemType === "MusicArtist") { + } else if (currentItemType === 'MusicAlbum' || currentItemType === 'MusicArtist') { shape = 'square'; } else { shape = 'portrait'; @@ -241,18 +241,18 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image html += '
'; - if (image.RatingType === "Likes") { - html += image.CommunityRating + (image.CommunityRating === 1 ? " like" : " likes"); + if (image.RatingType === 'Likes') { + html += image.CommunityRating + (image.CommunityRating === 1 ? ' like' : ' likes'); } else { if (image.CommunityRating) { html += image.CommunityRating.toFixed(1); if (image.VoteCount) { - html += ' • ' + image.VoteCount + (image.VoteCount === 1 ? " vote" : " votes"); + html += ' • ' + image.VoteCount + (image.VoteCount === 1 ? ' vote' : ' votes'); } } else { - html += "Unrated"; + html += 'Unrated'; } } diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 899a31cab1..606cdfa716 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -99,10 +99,10 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', var html = ''; - var cssClass = "card scalableCard imageEditorCard"; + var cssClass = 'card scalableCard imageEditorCard'; var cardBoxCssClass = 'cardBox visualCardBox'; - cssClass += " backdropCard backdropCard-scalable"; + cssClass += ' backdropCard backdropCard-scalable'; if (tagName === 'button') { cssClass += ' btnImageCard'; @@ -152,7 +152,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', if (enableFooterButtons) { html += '
'; - if (image.ImageType === "Backdrop" || image.ImageType === "Screenshot") { + if (image.ImageType === 'Backdrop' || image.ImageType === 'Screenshot') { if (index > 0) { html += ''; @@ -171,7 +171,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', } } - html += ''; + html += ''; html += '
'; } @@ -251,7 +251,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', function renderStandardImages(page, apiClient, item, imageInfos, imageProviders) { var images = imageInfos.filter(function (i) { - return i.ImageType !== "Screenshot" && i.ImageType !== "Backdrop" && i.ImageType !== "Chapter"; + return i.ImageType !== 'Screenshot' && i.ImageType !== 'Backdrop' && i.ImageType !== 'Chapter'; }); renderImages(page, item, apiClient, images, imageProviders, page.querySelector('#images')); @@ -260,7 +260,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', function renderBackdrops(page, apiClient, item, imageInfos, imageProviders) { var images = imageInfos.filter(function (i) { - return i.ImageType === "Backdrop"; + return i.ImageType === 'Backdrop'; }).sort(function (a, b) { return a.ImageIndex - b.ImageIndex; @@ -277,7 +277,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', function renderScreenshots(page, apiClient, item, imageInfos, imageProviders) { var images = imageInfos.filter(function (i) { - return i.ImageType === "Screenshot"; + return i.ImageType === 'Screenshot'; }).sort(function (a, b) { return a.ImageIndex - b.ImageIndex; @@ -425,7 +425,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', addListeners(context, 'btnDeleteImage', 'click', function () { var type = this.getAttribute('data-imagetype'); var index = this.getAttribute('data-index'); - index = index === "null" ? null : parseInt(index); + index = index === 'null' ? null : parseInt(index); var apiClient = connectionManager.getApiClient(currentItem.ServerId); deleteImage(context, currentItem.Id, type, index, apiClient, true); }); diff --git a/src/components/imageoptionseditor/imageoptionseditor.js b/src/components/imageoptionseditor/imageoptionseditor.js index c9dc678099..73a6d119df 100644 --- a/src/components/imageoptionseditor/imageoptionseditor.js +++ b/src/components/imageoptionseditor/imageoptionseditor.js @@ -1,11 +1,11 @@ -define(["globalize", "dom", "dialogHelper", "emby-checkbox", "emby-select", "emby-input"], function (globalize, dom, dialogHelper) { - "use strict"; +define(['globalize', 'dom', 'dialogHelper', 'emby-checkbox', 'emby-select', 'emby-input'], function (globalize, dom, dialogHelper) { + 'use strict'; function getDefaultImageConfig(itemType, type) { return { Type: type, MinWidth: 0, - Limit: "Primary" === type ? 1 : 0 + Limit: 'Primary' === type ? 1 : 0 }; } @@ -21,27 +21,27 @@ define(["globalize", "dom", "dialogHelper", "emby-checkbox", "emby-select", "emb function setVisibilityOfBackdrops(elem, visible) { if (visible) { - elem.classList.remove("hide"); - elem.querySelector("input").setAttribute("required", "required"); + elem.classList.remove('hide'); + elem.querySelector('input').setAttribute('required', 'required'); } else { - elem.classList.add("hide"); - elem.querySelector("input").setAttribute("required", ""); - elem.querySelector("input").removeAttribute("required"); + elem.classList.add('hide'); + elem.querySelector('input').setAttribute('required', ''); + elem.querySelector('input').removeAttribute('required'); } } function loadValues(context, itemType, options, availableOptions) { var supportedImageTypes = availableOptions.SupportedImageTypes || []; - setVisibilityOfBackdrops(context.querySelector(".backdropFields"), -1 != supportedImageTypes.indexOf("Backdrop")); - setVisibilityOfBackdrops(context.querySelector(".screenshotFields"), -1 != supportedImageTypes.indexOf("Screenshot")); - Array.prototype.forEach.call(context.querySelectorAll(".imageType"), function (i) { - var imageType = i.getAttribute("data-imagetype"); - var container = dom.parentWithTag(i, "LABEL"); + setVisibilityOfBackdrops(context.querySelector('.backdropFields'), -1 != supportedImageTypes.indexOf('Backdrop')); + setVisibilityOfBackdrops(context.querySelector('.screenshotFields'), -1 != supportedImageTypes.indexOf('Screenshot')); + Array.prototype.forEach.call(context.querySelectorAll('.imageType'), function (i) { + var imageType = i.getAttribute('data-imagetype'); + var container = dom.parentWithTag(i, 'LABEL'); if (-1 == supportedImageTypes.indexOf(imageType)) { - container.classList.add("hide"); + container.classList.add('hide'); } else { - container.classList.remove("hide"); + container.classList.remove('hide'); } if (getImageConfig(options, availableOptions, imageType, itemType).Limit) { @@ -50,31 +50,31 @@ define(["globalize", "dom", "dialogHelper", "emby-checkbox", "emby-select", "emb i.checked = false; } }); - var backdropConfig = getImageConfig(options, availableOptions, "Backdrop", itemType); - context.querySelector("#txtMaxBackdrops").value = backdropConfig.Limit; - context.querySelector("#txtMinBackdropDownloadWidth").value = backdropConfig.MinWidth; - var screenshotConfig = getImageConfig(options, availableOptions, "Screenshot", itemType); - context.querySelector("#txtMaxScreenshots").value = screenshotConfig.Limit; - context.querySelector("#txtMinScreenshotDownloadWidth").value = screenshotConfig.MinWidth; + var backdropConfig = getImageConfig(options, availableOptions, 'Backdrop', itemType); + context.querySelector('#txtMaxBackdrops').value = backdropConfig.Limit; + context.querySelector('#txtMinBackdropDownloadWidth').value = backdropConfig.MinWidth; + var screenshotConfig = getImageConfig(options, availableOptions, 'Screenshot', itemType); + context.querySelector('#txtMaxScreenshots').value = screenshotConfig.Limit; + context.querySelector('#txtMinScreenshotDownloadWidth').value = screenshotConfig.MinWidth; } function saveValues(context, options) { - options.ImageOptions = Array.prototype.map.call(context.querySelectorAll(".imageType:not(.hide)"), function (c) { + options.ImageOptions = Array.prototype.map.call(context.querySelectorAll('.imageType:not(.hide)'), function (c) { return { - Type: c.getAttribute("data-imagetype"), + Type: c.getAttribute('data-imagetype'), Limit: c.checked ? 1 : 0, MinWidth: 0 }; }); options.ImageOptions.push({ - Type: "Backdrop", - Limit: context.querySelector("#txtMaxBackdrops").value, - MinWidth: context.querySelector("#txtMinBackdropDownloadWidth").value + Type: 'Backdrop', + Limit: context.querySelector('#txtMaxBackdrops').value, + MinWidth: context.querySelector('#txtMinBackdropDownloadWidth').value }); options.ImageOptions.push({ - Type: "Screenshot", - Limit: context.querySelector("#txtMaxScreenshots").value, - MinWidth: context.querySelector("#txtMinScreenshotDownloadWidth").value + Type: 'Screenshot', + Limit: context.querySelector('#txtMaxScreenshots').value, + MinWidth: context.querySelector('#txtMinScreenshotDownloadWidth').value }); } @@ -82,23 +82,23 @@ define(["globalize", "dom", "dialogHelper", "emby-checkbox", "emby-select", "emb this.show = function (itemType, options, availableOptions) { return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(); - xhr.open("GET", "components/imageoptionseditor/imageoptionseditor.template.html", true); + xhr.open('GET', 'components/imageoptionseditor/imageoptionseditor.template.html', true); xhr.onload = function (e) { var template = this.response; var dlg = dialogHelper.createDialog({ - size: "medium-tall", + size: 'medium-tall', removeOnClose: true, scrollY: false }); - dlg.classList.add("formDialog"); + dlg.classList.add('formDialog'); dlg.innerHTML = globalize.translateDocument(template); - dlg.addEventListener("close", function () { + dlg.addEventListener('close', function () { saveValues(dlg, options); }); loadValues(dlg, itemType, options, availableOptions); dialogHelper.open(dlg).then(resolve, resolve); - dlg.querySelector(".btnCancel").addEventListener("click", function () { + dlg.querySelector('.btnCancel').addEventListener('click', function () { dialogHelper.close(dlg); }); }; diff --git a/src/components/images/imageFetcher.js b/src/components/images/imageFetcher.js index 1e13cebc77..c6882ddb7c 100644 --- a/src/components/images/imageFetcher.js +++ b/src/components/images/imageFetcher.js @@ -7,7 +7,7 @@ define(['dom'], function (dom) { return Promise.reject('elem cannot be null'); } - if (elem.tagName !== "IMG") { + if (elem.tagName !== 'IMG') { elem.style.backgroundImage = "url('" + url + "')"; return Promise.resolve(); @@ -27,7 +27,7 @@ define(['dom'], function (dom) { dom.addEventListener(elem, 'load', resolve, { once: true }); - elem.setAttribute("src", url); + elem.setAttribute('src', url); }); } diff --git a/src/components/images/imageLoader.js b/src/components/images/imageLoader.js index 28b6923c33..74e07c7669 100644 --- a/src/components/images/imageLoader.js +++ b/src/components/images/imageLoader.js @@ -27,7 +27,7 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings', fadeIn(elem); } - elem.removeAttribute("data-src"); + elem.removeAttribute('data-src'); }); } diff --git a/src/components/imageuploader/imageuploader.js b/src/components/imageuploader/imageuploader.js index 400646f669..87ecc1bc32 100644 --- a/src/components/imageuploader/imageuploader.js +++ b/src/components/imageuploader/imageuploader.js @@ -74,7 +74,7 @@ define(['dialogHelper', 'connectionManager', 'dom', 'loading', 'scrollHelper', ' return false; } - if (!file.type.startsWith("image/")) { + if (!file.type.startsWith('image/')) { require(['toast'], function (toast) { toast(globalize.translate('MessageImageFileTypeAllowed')); }); @@ -87,9 +87,9 @@ define(['dialogHelper', 'connectionManager', 'dom', 'loading', 'scrollHelper', ' var dlg = dom.parentWithClass(this, 'dialog'); var imageType = dlg.querySelector('#selectImageType').value; - if (imageType === "None") { - require(["toast"], function(toast) { - toast(globalize.translate("MessageImageTypeNotSelected")); + if (imageType === 'None') { + require(['toast'], function(toast) { + toast(globalize.translate('MessageImageTypeNotSelected')); }); e.preventDefault(); return false; @@ -112,11 +112,11 @@ define(['dialogHelper', 'connectionManager', 'dom', 'loading', 'scrollHelper', ' page.querySelector('form').addEventListener('submit', onSubmit); - page.querySelector('#uploadImage').addEventListener("change", function () { + page.querySelector('#uploadImage').addEventListener('change', function () { setFiles(page, this.files); }); - page.querySelector('.btnBrowse').addEventListener("click", function () { + page.querySelector('.btnBrowse').addEventListener('click', function () { page.querySelector('#uploadImage').click(); }); } diff --git a/src/components/indicators/indicators.js b/src/components/indicators/indicators.js index e03900364a..b4391fd4a6 100644 --- a/src/components/indicators/indicators.js +++ b/src/components/indicators/indicators.js @@ -44,7 +44,7 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm function getProgressBarHtml(item, options) { var pct; - if (enableProgressIndicator(item) && item.Type !== "Recording") { + if (enableProgressIndicator(item) && item.Type !== 'Recording') { var userData = options ? (options.userData || item.UserData) : item.UserData; if (userData) { pct = userData.PlayedPercentage; diff --git a/src/components/itemMediaInfo/itemMediaInfo.js b/src/components/itemMediaInfo/itemMediaInfo.js index ff2ec626d6..81c84b6a23 100644 --- a/src/components/itemMediaInfo/itemMediaInfo.js +++ b/src/components/itemMediaInfo/itemMediaInfo.js @@ -1,145 +1,145 @@ -define(["dialogHelper", "require", "layoutManager", "globalize", "userSettings", "connectionManager", "loading", "focusManager", "dom", "apphost", "emby-select", "listViewStyle", "paper-icon-button-light", "css!./../formdialog", "material-icons", "emby-button", "flexStyles"], function (dialogHelper, require, layoutManager, globalize, userSettings, connectionManager, loading, focusManager, dom, appHost) { - "use strict"; +define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', 'connectionManager', 'loading', 'focusManager', 'dom', 'apphost', 'emby-select', 'listViewStyle', 'paper-icon-button-light', 'css!./../formdialog', 'material-icons', 'emby-button', 'flexStyles'], function (dialogHelper, require, layoutManager, globalize, userSettings, connectionManager, loading, focusManager, dom, appHost) { + 'use strict'; function setMediaInfo(user, page, item) { var html = item.MediaSources.map(function (version) { return getMediaSourceHtml(user, item, version); }).join('
'); if (item.MediaSources.length > 1) { - html = "
" + html; + html = '
' + html; } - var mediaInfoContent = page.querySelector("#mediaInfoContent"); + var mediaInfoContent = page.querySelector('#mediaInfoContent'); mediaInfoContent.innerHTML = html; } function getMediaSourceHtml(user, item, version) { - var html = ""; + var html = ''; if (version.Name) { - html += '

' + version.Name + "

"; + html += '

' + version.Name + '

'; } if (version.Container) { - html += createAttribute(globalize.translate("MediaInfoContainer"), version.Container) + "
"; + html += createAttribute(globalize.translate('MediaInfoContainer'), version.Container) + '
'; } if (version.Formats && version.Formats.length) { - html += createAttribute(globalize.translate("MediaInfoFormat"), version.Formats.join(",")) + "
"; + html += createAttribute(globalize.translate('MediaInfoFormat'), version.Formats.join(',')) + '
'; } if (version.Path && user && user.Policy.IsAdministrator) { - html += createAttribute(globalize.translate("MediaInfoPath"), version.Path) + "
"; + html += createAttribute(globalize.translate('MediaInfoPath'), version.Path) + '
'; } if (version.Size) { - var size = (version.Size / (1024 * 1024)).toFixed(0) + " MB"; - html += createAttribute(globalize.translate("MediaInfoSize"), size) + "
"; + var size = (version.Size / (1024 * 1024)).toFixed(0) + ' MB'; + html += createAttribute(globalize.translate('MediaInfoSize'), size) + '
'; } for (var i = 0, length = version.MediaStreams.length; i < length; i++) { var stream = version.MediaStreams[i]; - if (stream.Type === "Data") { + if (stream.Type === 'Data') { continue; } html += '
'; - var displayType = globalize.translate("MediaInfoStreamType" + stream.Type); - html += '

' + displayType + "

"; + var displayType = globalize.translate('MediaInfoStreamType' + stream.Type); + html += '

' + displayType + '

'; var attributes = []; if (stream.DisplayTitle) { - attributes.push(createAttribute("Title", stream.DisplayTitle)); + attributes.push(createAttribute('Title', stream.DisplayTitle)); } - if (stream.Language && stream.Type !== "Video") { - attributes.push(createAttribute(globalize.translate("MediaInfoLanguage"), stream.Language)); + if (stream.Language && stream.Type !== 'Video') { + attributes.push(createAttribute(globalize.translate('MediaInfoLanguage'), stream.Language)); } if (stream.Codec) { - attributes.push(createAttribute(globalize.translate("MediaInfoCodec"), stream.Codec.toUpperCase())); + attributes.push(createAttribute(globalize.translate('MediaInfoCodec'), stream.Codec.toUpperCase())); } if (stream.CodecTag) { - attributes.push(createAttribute(globalize.translate("MediaInfoCodecTag"), stream.CodecTag)); + attributes.push(createAttribute(globalize.translate('MediaInfoCodecTag'), stream.CodecTag)); } if (stream.IsAVC != null) { - attributes.push(createAttribute("AVC", (stream.IsAVC ? "Yes" : "No"))); + attributes.push(createAttribute('AVC', (stream.IsAVC ? 'Yes' : 'No'))); } if (stream.Profile) { - attributes.push(createAttribute(globalize.translate("MediaInfoProfile"), stream.Profile)); + attributes.push(createAttribute(globalize.translate('MediaInfoProfile'), stream.Profile)); } if (stream.Level) { - attributes.push(createAttribute(globalize.translate("MediaInfoLevel"), stream.Level)); + attributes.push(createAttribute(globalize.translate('MediaInfoLevel'), stream.Level)); } if (stream.Width || stream.Height) { - attributes.push(createAttribute(globalize.translate("MediaInfoResolution"), stream.Width + "x" + stream.Height)); + attributes.push(createAttribute(globalize.translate('MediaInfoResolution'), stream.Width + 'x' + stream.Height)); } - if (stream.AspectRatio && stream.Codec !== "mjpeg") { - attributes.push(createAttribute(globalize.translate("MediaInfoAspectRatio"), stream.AspectRatio)); + if (stream.AspectRatio && stream.Codec !== 'mjpeg') { + attributes.push(createAttribute(globalize.translate('MediaInfoAspectRatio'), stream.AspectRatio)); } - if (stream.Type === "Video") { + if (stream.Type === 'Video') { if (stream.IsAnamorphic != null) { - attributes.push(createAttribute(globalize.translate("MediaInfoAnamorphic"), (stream.IsAnamorphic ? "Yes" : "No"))); + attributes.push(createAttribute(globalize.translate('MediaInfoAnamorphic'), (stream.IsAnamorphic ? 'Yes' : 'No'))); } - attributes.push(createAttribute(globalize.translate("MediaInfoInterlaced"), (stream.IsInterlaced ? "Yes" : "No"))); + attributes.push(createAttribute(globalize.translate('MediaInfoInterlaced'), (stream.IsInterlaced ? 'Yes' : 'No'))); } if (stream.AverageFrameRate || stream.RealFrameRate) { - attributes.push(createAttribute(globalize.translate("MediaInfoFramerate"), (stream.AverageFrameRate || stream.RealFrameRate))); + attributes.push(createAttribute(globalize.translate('MediaInfoFramerate'), (stream.AverageFrameRate || stream.RealFrameRate))); } if (stream.ChannelLayout) { - attributes.push(createAttribute(globalize.translate("MediaInfoLayout"), stream.ChannelLayout)); + attributes.push(createAttribute(globalize.translate('MediaInfoLayout'), stream.ChannelLayout)); } if (stream.Channels) { - attributes.push(createAttribute(globalize.translate("MediaInfoChannels"), stream.Channels + " ch")); + attributes.push(createAttribute(globalize.translate('MediaInfoChannels'), stream.Channels + ' ch')); } - if (stream.BitRate && stream.Codec !== "mjpeg") { - attributes.push(createAttribute(globalize.translate("MediaInfoBitrate"), (parseInt(stream.BitRate / 1000)) + " kbps")); + if (stream.BitRate && stream.Codec !== 'mjpeg') { + attributes.push(createAttribute(globalize.translate('MediaInfoBitrate'), (parseInt(stream.BitRate / 1000)) + ' kbps')); } if (stream.SampleRate) { - attributes.push(createAttribute(globalize.translate("MediaInfoSampleRate"), stream.SampleRate + " Hz")); + attributes.push(createAttribute(globalize.translate('MediaInfoSampleRate'), stream.SampleRate + ' Hz')); } if (stream.BitDepth) { - attributes.push(createAttribute(globalize.translate("MediaInfoBitDepth"), stream.BitDepth + " bit")); + attributes.push(createAttribute(globalize.translate('MediaInfoBitDepth'), stream.BitDepth + ' bit')); } if (stream.PixelFormat) { - attributes.push(createAttribute(globalize.translate("MediaInfoPixelFormat"), stream.PixelFormat)); + attributes.push(createAttribute(globalize.translate('MediaInfoPixelFormat'), stream.PixelFormat)); } if (stream.RefFrames) { - attributes.push(createAttribute(globalize.translate("MediaInfoRefFrames"), stream.RefFrames)); + attributes.push(createAttribute(globalize.translate('MediaInfoRefFrames'), stream.RefFrames)); } if (stream.NalLengthSize) { - attributes.push(createAttribute("NAL", stream.NalLengthSize)); + attributes.push(createAttribute('NAL', stream.NalLengthSize)); } - if (stream.Type !== "Video") { - attributes.push(createAttribute(globalize.translate("MediaInfoDefault"), (stream.IsDefault ? "Yes" : "No"))); + if (stream.Type !== 'Video') { + attributes.push(createAttribute(globalize.translate('MediaInfoDefault'), (stream.IsDefault ? 'Yes' : 'No'))); } - if (stream.Type === "Subtitle") { - attributes.push(createAttribute(globalize.translate("MediaInfoForced"), (stream.IsForced ? "Yes" : "No"))); - attributes.push(createAttribute(globalize.translate("MediaInfoExternal"), (stream.IsExternal ? "Yes" : "No"))); + if (stream.Type === 'Subtitle') { + attributes.push(createAttribute(globalize.translate('MediaInfoForced'), (stream.IsForced ? 'Yes' : 'No'))); + attributes.push(createAttribute(globalize.translate('MediaInfoExternal'), (stream.IsExternal ? 'Yes' : 'No'))); } - if (stream.Type === "Video" && version.Timestamp) { - attributes.push(createAttribute(globalize.translate("MediaInfoTimestamp"), version.Timestamp)); + if (stream.Type === 'Video' && version.Timestamp) { + attributes.push(createAttribute(globalize.translate('MediaInfoTimestamp'), version.Timestamp)); } - html += attributes.join("
"); - html += "
"; + html += attributes.join('
'); + html += '
'; } return html; } function createAttribute(label, value) { - return '' + label + '' + value + ""; + return '' + label + '' + value + ''; } function showMediaInfoMore(itemId, serverId, template) { var apiClient = connectionManager.getApiClient(serverId); return apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) { var dialogOptions = { - size: "small", + size: 'small', removeOnClose: true, scrollY: false }; if (layoutManager.tv) { - dialogOptions.size = "fullscreen"; + dialogOptions.size = 'fullscreen'; } var dlg = dialogHelper.createDialog(dialogOptions); - dlg.classList.add("formDialog"); - var html = ""; - html += globalize.translateDocument(template, "core"); + dlg.classList.add('formDialog'); + var html = ''; + html += globalize.translateDocument(template, 'core'); dlg.innerHTML = html; if (layoutManager.tv) { - dlg.querySelector(".formDialogContent"); + dlg.querySelector('.formDialogContent'); } dialogHelper.open(dlg); - dlg.querySelector(".btnCancel").addEventListener("click", function (e) { + dlg.querySelector('.btnCancel').addEventListener('click', function (e) { dialogHelper.close(dlg); }); apiClient.getCurrentUser().then(function (user) { @@ -152,7 +152,7 @@ define(["dialogHelper", "require", "layoutManager", "globalize", "userSettings", function showMediaInfo(itemId, serverId) { loading.show(); return new Promise(function (resolve, reject) { - require(["text!./itemMediaInfo.template.html"], function (template) { + require(['text!./itemMediaInfo.template.html'], function (template) { showMediaInfoMore(itemId, serverId, template).then(resolve, reject); }); }); diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index 2645db1869..8c809a0966 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -1,5 +1,5 @@ -define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", "playbackManager", "loading", "appSettings", "browser", "actionsheet"], function (appHost, globalize, connectionManager, itemHelper, appRouter, playbackManager, loading, appSettings, browser, actionsheet) { - "use strict"; +define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter', 'playbackManager', 'loading', 'appSettings', 'browser', 'actionsheet'], function (appHost, globalize, connectionManager, itemHelper, appRouter, playbackManager, loading, appSettings, browser, actionsheet) { + 'use strict'; function getCommands(options) { var item = options.item; @@ -10,20 +10,20 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", var commands = []; - if (canPlay && item.MediaType !== "Photo") { + if (canPlay && item.MediaType !== 'Photo') { if (options.play !== false) { commands.push({ - name: globalize.translate("Play"), - id: "resume", - icon: "play_arrow" + name: globalize.translate('Play'), + id: 'resume', + icon: 'play_arrow' }); } - if (options.playAllFromHere && item.Type !== "Program" && item.Type !== "TvChannel") { + if (options.playAllFromHere && item.Type !== 'Program' && item.Type !== 'TvChannel') { commands.push({ - name: globalize.translate("PlayAllFromHere"), - id: "playallfromhere", - icon: "play_arrow" + name: globalize.translate('PlayAllFromHere'), + id: 'playallfromhere', + icon: 'play_arrow' }); } } @@ -31,17 +31,17 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", if (playbackManager.canQueue(item)) { if (options.queue !== false) { commands.push({ - name: globalize.translate("AddToPlayQueue"), - id: "queue", - icon: "playlist_add" + name: globalize.translate('AddToPlayQueue'), + id: 'queue', + icon: 'playlist_add' }); } if (options.queue !== false) { commands.push({ - name: globalize.translate("PlayNext"), - id: "queuenext", - icon: "playlist_add" + name: globalize.translate('PlayNext'), + id: 'queuenext', + icon: 'playlist_add' }); } @@ -53,24 +53,24 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", //} } - if (item.IsFolder || item.Type === "MusicArtist" || item.Type === "MusicGenre") { - if (item.CollectionType !== "livetv") { + if (item.IsFolder || item.Type === 'MusicArtist' || item.Type === 'MusicGenre') { + if (item.CollectionType !== 'livetv') { if (options.shuffle !== false) { commands.push({ - name: globalize.translate("Shuffle"), - id: "shuffle", - icon: "shuffle" + name: globalize.translate('Shuffle'), + id: 'shuffle', + icon: 'shuffle' }); } } } - if (item.MediaType === "Audio" || item.Type === "MusicAlbum" || item.Type === "MusicArtist" || item.Type === "MusicGenre") { + if (item.MediaType === 'Audio' || item.Type === 'MusicAlbum' || item.Type === 'MusicArtist' || item.Type === 'MusicGenre') { if (options.instantMix !== false && !itemHelper.isLocalItem(item)) { commands.push({ - name: globalize.translate("InstantMix"), - id: "instantmix", - icon: "explore" + name: globalize.translate('InstantMix'), + id: 'instantmix', + icon: 'explore' }); } } @@ -84,74 +84,74 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", if (!restrictOptions) { if (itemHelper.supportsAddingToCollection(item)) { commands.push({ - name: globalize.translate("AddToCollection"), - id: "addtocollection", - icon: "playlist_add" + name: globalize.translate('AddToCollection'), + id: 'addtocollection', + icon: 'playlist_add' }); } if (itemHelper.supportsAddingToPlaylist(item) && options.playlist !== false) { commands.push({ - name: globalize.translate("AddToPlaylist"), - id: "addtoplaylist", - icon: "playlist_add" + name: globalize.translate('AddToPlaylist'), + id: 'addtoplaylist', + icon: 'playlist_add' }); } } - if ((item.Type === "Timer") && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) { + if ((item.Type === 'Timer') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) { commands.push({ - name: globalize.translate("CancelRecording"), - id: "canceltimer", - icon: "cancel" + name: globalize.translate('CancelRecording'), + id: 'canceltimer', + icon: 'cancel' }); } - if ((item.Type === "Recording" && item.Status === "InProgress") && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) { + if ((item.Type === 'Recording' && item.Status === 'InProgress') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) { commands.push({ - name: globalize.translate("CancelRecording"), - id: "canceltimer", - icon: "cancel" + name: globalize.translate('CancelRecording'), + id: 'canceltimer', + icon: 'cancel' }); } - if ((item.Type === "SeriesTimer") && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) { + if ((item.Type === 'SeriesTimer') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) { commands.push({ - name: globalize.translate("CancelSeries"), - id: "cancelseriestimer", - icon: "cancel" + name: globalize.translate('CancelSeries'), + id: 'cancelseriestimer', + icon: 'cancel' }); } if (item.CanDelete && options.deleteItem !== false) { - if (item.Type === "Playlist" || item.Type === "BoxSet") { + if (item.Type === 'Playlist' || item.Type === 'BoxSet') { commands.push({ - name: globalize.translate("Delete"), - id: "delete", - icon: "delete" + name: globalize.translate('Delete'), + id: 'delete', + icon: 'delete' }); } else { commands.push({ - name: globalize.translate("DeleteMedia"), - id: "delete", - icon: "delete" + name: globalize.translate('DeleteMedia'), + id: 'delete', + icon: 'delete' }); } } // Books are promoted to major download Button and therefor excluded in the context menu - if ((item.CanDownload && appHost.supports("filedownload")) && item.Type !== "Book") { + if ((item.CanDownload && appHost.supports('filedownload')) && item.Type !== 'Book') { commands.push({ - name: globalize.translate("Download"), - id: "download", - icon: "file_download" + name: globalize.translate('Download'), + id: 'download', + icon: 'file_download' }); commands.push({ - name: globalize.translate("CopyStreamURL"), - id: "copy-stream", - icon: "content_copy" + name: globalize.translate('CopyStreamURL'), + id: 'copy-stream', + icon: 'content_copy' }); } @@ -163,12 +163,12 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", var canEdit = itemHelper.canEdit(user, item); if (canEdit) { - if (options.edit !== false && item.Type !== "SeriesTimer") { - var text = (item.Type === "Timer" || item.Type === "SeriesTimer") ? globalize.translate("Edit") : globalize.translate("EditMetadata"); + if (options.edit !== false && item.Type !== 'SeriesTimer') { + var text = (item.Type === 'Timer' || item.Type === 'SeriesTimer') ? globalize.translate('Edit') : globalize.translate('EditMetadata'); commands.push({ name: text, - id: "edit", - icon: "edit" + id: 'edit', + icon: 'edit' }); } } @@ -176,20 +176,20 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", if (itemHelper.canEditImages(user, item)) { if (options.editImages !== false) { commands.push({ - name: globalize.translate("EditImages"), - id: "editimages", - icon: "image" + name: globalize.translate('EditImages'), + id: 'editimages', + icon: 'image' }); } } if (canEdit) { - if (item.MediaType === "Video" && item.Type !== "TvChannel" && item.Type !== "Program" && item.LocationType !== "Virtual" && !(item.Type === "Recording" && item.Status !== "Completed")) { + if (item.MediaType === 'Video' && item.Type !== 'TvChannel' && item.Type !== 'Program' && item.LocationType !== 'Virtual' && !(item.Type === 'Recording' && item.Status !== 'Completed')) { if (options.editSubtitles !== false) { commands.push({ - name: globalize.translate("EditSubtitles"), - id: "editsubtitles", - icon: "closed_caption" + name: globalize.translate('EditSubtitles'), + id: 'editsubtitles', + icon: 'closed_caption' }); } } @@ -198,9 +198,9 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", if (options.identify !== false) { if (itemHelper.canIdentify(user, item)) { commands.push({ - name: globalize.translate("Identify"), - id: "identify", - icon: "edit" + name: globalize.translate('Identify'), + id: 'identify', + icon: 'edit' }); } } @@ -208,54 +208,54 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", if (item.MediaSources) { if (options.moremediainfo !== false) { commands.push({ - name: globalize.translate("MoreMediaInfo"), - id: "moremediainfo", - icon: "info" + name: globalize.translate('MoreMediaInfo'), + id: 'moremediainfo', + icon: 'info' }); } } - if (item.Type === "Program" && options.record !== false) { + if (item.Type === 'Program' && options.record !== false) { if (item.TimerId) { commands.push({ - name: globalize.translate("ManageRecording"), - id: "record", - icon: "fiber_manual_record" + name: globalize.translate('ManageRecording'), + id: 'record', + icon: 'fiber_manual_record' }); } } - if (item.Type === "Program" && options.record !== false) { + if (item.Type === 'Program' && options.record !== false) { if (!item.TimerId) { commands.push({ - name: globalize.translate("Record"), - id: "record", - icon: "fiber_manual_record" + name: globalize.translate('Record'), + id: 'record', + icon: 'fiber_manual_record' }); } } if (itemHelper.canRefreshMetadata(item, user)) { commands.push({ - name: globalize.translate("RefreshMetadata"), - id: "refresh", - icon: "refresh" + name: globalize.translate('RefreshMetadata'), + id: 'refresh', + icon: 'refresh' }); } if (item.PlaylistItemId && options.playlistId) { commands.push({ - name: globalize.translate("RemoveFromPlaylist"), - id: "removefromplaylist", - icon: "remove" + name: globalize.translate('RemoveFromPlaylist'), + id: 'removefromplaylist', + icon: 'remove' }); } if (options.collectionId) { commands.push({ - name: globalize.translate("RemoveFromCollection"), - id: "removefromcollection", - icon: "remove" + name: globalize.translate('RemoveFromCollection'), + id: 'removefromcollection', + icon: 'remove' }); } @@ -263,9 +263,9 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", if (options.share === true) { if (itemHelper.canShare(item, user)) { commands.push({ - name: globalize.translate("Share"), - id: "share", - icon: "share" + name: globalize.translate('Share'), + id: 'share', + icon: 'share' }); } } @@ -274,26 +274,26 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", if (options.sync !== false) { if (itemHelper.canSync(user, item)) { commands.push({ - name: globalize.translate("Sync"), - id: "sync", - icon: "sync" + name: globalize.translate('Sync'), + id: 'sync', + icon: 'sync' }); } } - if (options.openAlbum !== false && item.AlbumId && item.MediaType !== "Photo") { + if (options.openAlbum !== false && item.AlbumId && item.MediaType !== 'Photo') { commands.push({ - name: globalize.translate("ViewAlbum"), - id: "album", - icon: "album" + name: globalize.translate('ViewAlbum'), + id: 'album', + icon: 'album' }); } if (options.openArtist !== false && item.ArtistItems && item.ArtistItems.length) { commands.push({ - name: globalize.translate("ViewArtist"), - id: "artist", - icon: "person" + name: globalize.translate('ViewArtist'), + id: 'artist', + icon: 'person' }); } @@ -317,24 +317,24 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", return new Promise(function (resolve, reject) { switch (id) { - case "addtocollection": - require(["collectionEditor"], function (collectionEditor) { + case 'addtocollection': + require(['collectionEditor'], function (collectionEditor) { new collectionEditor().show({ items: [itemId], serverId: serverId }).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id)); }); break; - case "addtoplaylist": - require(["playlistEditor"], function (playlistEditor) { + case 'addtoplaylist': + require(['playlistEditor'], function (playlistEditor) { new playlistEditor().show({ items: [itemId], serverId: serverId }).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id)); }); break; - case "download": - require(["fileDownloader"], function (fileDownloader) { + case 'download': + require(['fileDownloader'], function (fileDownloader) { var downloadHref = apiClient.getItemDownloadUrl(itemId); fileDownloader.download([{ url: downloadHref, @@ -346,21 +346,21 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", getResolveFunction(getResolveFunction(resolve, id), id)(); }); break; - case "copy-stream": + case 'copy-stream': var downloadHref = apiClient.getItemDownloadUrl(itemId); var textAreaCopy = function () { - var textArea = document.createElement("textarea"); + var textArea = document.createElement('textarea'); textArea.value = downloadHref; document.body.appendChild(textArea); textArea.focus(); textArea.select(); - if (document.execCommand("copy")) { - require(["toast"], function (toast) { - toast(globalize.translate("CopyStreamURLSuccess")); + if (document.execCommand('copy')) { + require(['toast'], function (toast) { + toast(globalize.translate('CopyStreamURLSuccess')); }); } else { - prompt(globalize.translate("CopyStreamURL"), downloadHref); + prompt(globalize.translate('CopyStreamURL'), downloadHref); } document.body.removeChild(textArea); }; @@ -371,8 +371,8 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", } else { /* eslint-disable-next-line compat/compat */ navigator.clipboard.writeText(downloadHref).then(function () { - require(["toast"], function (toast) { - toast(globalize.translate("CopyStreamURLSuccess")); + require(['toast'], function (toast) { + toast(globalize.translate('CopyStreamURLSuccess')); }); }).catch(function () { textAreaCopy(); @@ -380,118 +380,118 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", } getResolveFunction(resolve, id)(); break; - case "editsubtitles": - require(["subtitleEditor"], function (subtitleEditor) { + case 'editsubtitles': + require(['subtitleEditor'], function (subtitleEditor) { subtitleEditor.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id)); }); break; - case "edit": + case 'edit': editItem(apiClient, item).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id)); break; - case "editimages": - require(["imageEditor"], function (imageEditor) { + case 'editimages': + require(['imageEditor'], function (imageEditor) { imageEditor.show({ itemId: itemId, serverId: serverId }).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id)); }); break; - case "identify": - require(["itemIdentifier"], function (itemIdentifier) { + case 'identify': + require(['itemIdentifier'], function (itemIdentifier) { itemIdentifier.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id)); }); break; - case "moremediainfo": - require(["itemMediaInfo"], function (itemMediaInfo) { + case 'moremediainfo': + require(['itemMediaInfo'], function (itemMediaInfo) { itemMediaInfo.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id)); }); break; - case "refresh": + case 'refresh': refresh(apiClient, item); getResolveFunction(resolve, id)(); break; - case "open": + case 'open': appRouter.showItem(item); getResolveFunction(resolve, id)(); break; - case "play": + case 'play': play(item, false); getResolveFunction(resolve, id)(); break; - case "resume": + case 'resume': play(item, true); getResolveFunction(resolve, id)(); break; - case "queue": + case 'queue': play(item, false, true); getResolveFunction(resolve, id)(); break; - case "queuenext": + case 'queuenext': play(item, false, true, true); getResolveFunction(resolve, id)(); break; - case "record": - require(["recordingCreator"], function (recordingCreator) { + case 'record': + require(['recordingCreator'], function (recordingCreator) { recordingCreator.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id)); }); break; - case "shuffle": + case 'shuffle': playbackManager.shuffle(item); getResolveFunction(resolve, id)(); break; - case "instantmix": + case 'instantmix': playbackManager.instantMix(item); getResolveFunction(resolve, id)(); break; - case "delete": + case 'delete': deleteItem(apiClient, item).then(getResolveFunction(resolve, id, true, true), getResolveFunction(resolve, id)); break; - case "share": + case 'share': navigator.share({ title: item.Name, text: item.Overview, - url: "https://github.com/jellyfin/jellyfin" + url: 'https://github.com/jellyfin/jellyfin' }); break; - case "album": + case 'album': appRouter.showItem(item.AlbumId, item.ServerId); getResolveFunction(resolve, id)(); break; - case "artist": + case 'artist': appRouter.showItem(item.ArtistItems[0].Id, item.ServerId); getResolveFunction(resolve, id)(); break; - case "playallfromhere": + case 'playallfromhere': getResolveFunction(resolve, id)(); break; - case "queueallfromhere": + case 'queueallfromhere': getResolveFunction(resolve, id)(); break; - case "removefromplaylist": + case 'removefromplaylist': apiClient.ajax({ - url: apiClient.getUrl("Playlists/" + options.playlistId + "/Items", { - EntryIds: [item.PlaylistItemId].join(",") + url: apiClient.getUrl('Playlists/' + options.playlistId + '/Items', { + EntryIds: [item.PlaylistItemId].join(',') }), - type: "DELETE" + type: 'DELETE' }).then(function () { getResolveFunction(resolve, id, true)(); }); break; - case "removefromcollection": + case 'removefromcollection': apiClient.ajax({ - type: "DELETE", - url: apiClient.getUrl("Collections/" + options.collectionId + "/Items", { + type: 'DELETE', + url: apiClient.getUrl('Collections/' + options.collectionId + '/Items', { - Ids: [item.Id].join(",") + Ids: [item.Id].join(',') }) }).then(function () { getResolveFunction(resolve, id, true)(); }); break; - case "canceltimer": + case 'canceltimer': deleteTimer(apiClient, item, resolve, id); break; - case "cancelseriestimer": + case 'cancelseriestimer': deleteSeriesTimer(apiClient, item, resolve, id); break; default: @@ -502,7 +502,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", } function deleteTimer(apiClient, item, resolve, command) { - require(["recordingHelper"], function (recordingHelper) { + require(['recordingHelper'], function (recordingHelper) { var timerId = item.TimerId || item.Id; recordingHelper.cancelTimerWithConfirmation(timerId, item.ServerId).then(function () { getResolveFunction(resolve, command, true)(); @@ -511,7 +511,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", } function deleteSeriesTimer(apiClient, item, resolve, command) { - require(["recordingHelper"], function (recordingHelper) { + require(['recordingHelper'], function (recordingHelper) { recordingHelper.cancelSeriesTimerWithConfirmation(item.Id, item.ServerId).then(function () { getResolveFunction(resolve, command, true)(); }); @@ -519,14 +519,14 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", } function play(item, resume, queue, queueNext) { - var method = queue ? (queueNext ? "queueNext" : "queue") : "play"; + var method = queue ? (queueNext ? 'queueNext' : 'queue') : 'play'; var startPosition = 0; if (resume && item.UserData && item.UserData.PlaybackPositionTicks) { startPosition = item.UserData.PlaybackPositionTicks; } - if (item.Type === "Program") { + if (item.Type === 'Program') { playbackManager[method]({ ids: [item.ChannelId], startPositionTicks: startPosition, @@ -544,16 +544,16 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", return new Promise(function (resolve, reject) { var serverId = apiClient.serverInfo().Id; - if (item.Type === "Timer") { - require(["recordingEditor"], function (recordingEditor) { + if (item.Type === 'Timer') { + require(['recordingEditor'], function (recordingEditor) { recordingEditor.show(item.Id, serverId).then(resolve, reject); }); - } else if (item.Type === "SeriesTimer") { - require(["seriesRecordingEditor"], function (recordingEditor) { + } else if (item.Type === 'SeriesTimer') { + require(['seriesRecordingEditor'], function (recordingEditor) { recordingEditor.show(item.Id, serverId).then(resolve, reject); }); } else { - require(["metadataEditor"], function (metadataEditor) { + require(['metadataEditor'], function (metadataEditor) { metadataEditor.show(item.Id, serverId).then(resolve, reject); }); } @@ -562,7 +562,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", function deleteItem(apiClient, item) { return new Promise(function (resolve, reject) { - require(["deleteHelper"], function (deleteHelper) { + require(['deleteHelper'], function (deleteHelper) { deleteHelper.deleteItem({ item: item, navigate: false @@ -574,11 +574,11 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", } function refresh(apiClient, item) { - require(["refreshDialog"], function (refreshDialog) { + require(['refreshDialog'], function (refreshDialog) { new refreshDialog({ itemIds: [item.Id], serverId: apiClient.serverInfo().Id, - mode: item.Type === "CollectionFolder" ? "scan" : null + mode: item.Type === 'CollectionFolder' ? 'scan' : null }).show(); }); } @@ -592,7 +592,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", return actionsheet.show({ items: commands, positionTo: options.positionTo, - resolveOnClick: ["share"] + resolveOnClick: ['share'] }).then(function (id) { return executeCommand(options.item, id, options); }); diff --git a/src/components/itemhelper.js b/src/components/itemhelper.js index 8e0883474a..b18f37110c 100644 --- a/src/components/itemhelper.js +++ b/src/components/itemhelper.js @@ -4,7 +4,7 @@ define(['apphost', 'globalize'], function (appHost, globalize) { function getDisplayName(item, options) { if (!item) { - throw new Error("null item passed into getDisplayName"); + throw new Error('null item passed into getDisplayName'); } options = options || {}; @@ -15,31 +15,31 @@ define(['apphost', 'globalize'], function (appHost, globalize) { var name = ((item.Type === 'Program' || item.Type === 'Recording') && (item.IsSeries || item.EpisodeTitle) ? item.EpisodeTitle : item.Name) || ''; - if (item.Type === "TvChannel") { + if (item.Type === 'TvChannel') { if (item.ChannelNumber) { return item.ChannelNumber + ' ' + name; } return name; } - if (item.Type === "Episode" && item.ParentIndexNumber === 0) { + if (item.Type === 'Episode' && item.ParentIndexNumber === 0) { name = globalize.translate('ValueSpecialEpisodeName', name); - } else if ((item.Type === "Episode" || item.Type === 'Program') && item.IndexNumber != null && item.ParentIndexNumber != null && options.includeIndexNumber !== false) { + } else if ((item.Type === 'Episode' || item.Type === 'Program') && item.IndexNumber != null && item.ParentIndexNumber != null && options.includeIndexNumber !== false) { var displayIndexNumber = item.IndexNumber; var number = displayIndexNumber; - var nameSeparator = " - "; + var nameSeparator = ' - '; if (options.includeParentInfo !== false) { - number = "S" + item.ParentIndexNumber + ":E" + number; + number = 'S' + item.ParentIndexNumber + ':E' + number; } else { - nameSeparator = ". "; + nameSeparator = '. '; } if (item.IndexNumberEnd) { displayIndexNumber = item.IndexNumberEnd; - number += "-" + displayIndexNumber; + number += '-' + displayIndexNumber; } if (number) { @@ -94,14 +94,14 @@ define(['apphost', 'globalize'], function (appHost, globalize) { return false; } - return item.MediaType || item.IsFolder || item.Type === "Genre" || item.Type === "MusicGenre" || item.Type === "MusicArtist"; + return item.MediaType || item.IsFolder || item.Type === 'Genre' || item.Type === 'MusicGenre' || item.Type === 'MusicArtist'; } function canEdit(user, item) { var itemType = item.Type; - if (itemType === "UserRootFolder" || itemType === "UserView") { + if (itemType === 'UserRootFolder' || itemType === 'UserView') { return false; } @@ -149,15 +149,15 @@ define(['apphost', 'globalize'], function (appHost, globalize) { var itemType = item.Type; - if (itemType === "Movie" || - itemType === "Trailer" || - itemType === "Series" || - itemType === "BoxSet" || - itemType === "Person" || - itemType === "Book" || - itemType === "MusicAlbum" || - itemType === "MusicArtist" || - itemType === "MusicVideo") { + if (itemType === 'Movie' || + itemType === 'Trailer' || + itemType === 'Series' || + itemType === 'BoxSet' || + itemType === 'Person' || + itemType === 'Book' || + itemType === 'MusicAlbum' || + itemType === 'MusicArtist' || + itemType === 'MusicVideo') { if (user.Policy.IsAdministrator) { @@ -259,11 +259,11 @@ define(['apphost', 'globalize'], function (appHost, globalize) { } } - if (item.Type === "Series" || - item.Type === "Season" || - item.Type === "BoxSet" || - item.MediaType === "Book" || - item.MediaType === "Recording") { + if (item.Type === 'Series' || + item.Type === 'Season' || + item.Type === 'BoxSet' || + item.MediaType === 'Book' || + item.MediaType === 'Recording') { return true; } diff --git a/src/components/itemidentifier/itemidentifier.js b/src/components/itemidentifier/itemidentifier.js index 9f89aef947..8710936028 100644 --- a/src/components/itemidentifier/itemidentifier.js +++ b/src/components/itemidentifier/itemidentifier.js @@ -1,5 +1,5 @@ -define(["dialogHelper", "loading", "connectionManager", "require", "globalize", "scrollHelper", "layoutManager", "focusManager", "browser", "emby-input", "emby-checkbox", "paper-icon-button-light", "css!./../formdialog", "material-icons", "cardStyle"], function (dialogHelper, loading, connectionManager, require, globalize, scrollHelper, layoutManager, focusManager, browser) { - "use strict"; +define(['dialogHelper', 'loading', 'connectionManager', 'require', 'globalize', 'scrollHelper', 'layoutManager', 'focusManager', 'browser', 'emby-input', 'emby-checkbox', 'paper-icon-button-light', 'css!./../formdialog', 'material-icons', 'cardStyle'], function (dialogHelper, loading, connectionManager, require, globalize, scrollHelper, layoutManager, focusManager, browser) { + 'use strict'; var enableFocusTransform = !browser.slow && !browser.edge; @@ -23,7 +23,7 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", var i; var length; - var identifyField = page.querySelectorAll(".identifyField"); + var identifyField = page.querySelectorAll('.identifyField'); var value; for (i = 0, length = identifyField.length; i < length; i++) { @@ -31,17 +31,17 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", if (value) { - if (identifyField[i].type === "number") { + if (identifyField[i].type === 'number') { value = parseInt(value); } - lookupInfo[identifyField[i].getAttribute("data-lookup")] = value; + lookupInfo[identifyField[i].getAttribute('data-lookup')] = value; } } var hasId = false; - var txtLookupId = page.querySelectorAll(".txtLookupId"); + var txtLookupId = page.querySelectorAll('.txtLookupId'); for (i = 0, length = txtLookupId.length; i < length; i++) { value = txtLookupId[i].value; @@ -49,12 +49,12 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", if (value) { hasId = true; } - lookupInfo.ProviderIds[txtLookupId[i].getAttribute("data-providerkey")] = value; + lookupInfo.ProviderIds[txtLookupId[i].getAttribute('data-providerkey')] = value; } if (!hasId && !lookupInfo.Name) { - require(["toast"], function (toast) { - toast(globalize.translate("PleaseEnterNameOrId")); + require(['toast'], function (toast) { + toast(globalize.translate('PleaseEnterNameOrId')); }); return; } @@ -74,11 +74,11 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", var apiClient = getApiClient(); apiClient.ajax({ - type: "POST", - url: apiClient.getUrl("Items/RemoteSearch/" + currentItemType), + type: 'POST', + url: apiClient.getUrl('Items/RemoteSearch/' + currentItemType), data: JSON.stringify(lookupInfo), - contentType: "application/json", - dataType: "json" + contentType: 'application/json', + dataType: 'json' }).then(function (results) { @@ -89,14 +89,14 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", function showIdentificationSearchResults(page, results) { - var identificationSearchResults = page.querySelector(".identificationSearchResults"); + var identificationSearchResults = page.querySelector('.identificationSearchResults'); - page.querySelector(".popupIdentifyForm").classList.add("hide"); - identificationSearchResults.classList.remove("hide"); - page.querySelector(".identifyOptionsForm").classList.add("hide"); - page.querySelector(".dialogContentInner").classList.remove("dialog-content-centered"); + page.querySelector('.popupIdentifyForm').classList.add('hide'); + identificationSearchResults.classList.remove('hide'); + page.querySelector('.identifyOptionsForm').classList.add('hide'); + page.querySelector('.dialogContentInner').classList.remove('dialog-content-centered'); - var html = ""; + var html = ''; var i; var length; for (i = 0, length = results.length; i < length; i++) { @@ -105,11 +105,11 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", html += getSearchResultHtml(result, i); } - var elem = page.querySelector(".identificationSearchResultList"); + var elem = page.querySelector('.identificationSearchResultList'); elem.innerHTML = html; function onSearchImageClick() { - var index = parseInt(this.getAttribute("data-index")); + var index = parseInt(this.getAttribute('data-index')); var currentResult = results[index]; @@ -122,10 +122,10 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", } } - var searchImages = elem.querySelectorAll(".card"); + var searchImages = elem.querySelectorAll('.card'); for (i = 0, length = searchImages.length; i < length; i++) { - searchImages[i].addEventListener("click", onSearchImageClick); + searchImages[i].addEventListener('click', onSearchImageClick); } if (layoutManager.tv) { @@ -143,13 +143,13 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", function showIdentifyOptions(page, identifyResult) { - var identifyOptionsForm = page.querySelector(".identifyOptionsForm"); + var identifyOptionsForm = page.querySelector('.identifyOptionsForm'); - page.querySelector(".popupIdentifyForm").classList.add("hide"); - page.querySelector(".identificationSearchResults").classList.add("hide"); - identifyOptionsForm.classList.remove("hide"); - page.querySelector("#chkIdentifyReplaceImages").checked = true; - page.querySelector(".dialogContentInner").classList.add("dialog-content-centered"); + page.querySelector('.popupIdentifyForm').classList.add('hide'); + page.querySelector('.identificationSearchResults').classList.add('hide'); + identifyOptionsForm.classList.remove('hide'); + page.querySelector('#chkIdentifyReplaceImages').checked = true; + page.querySelector('.dialogContentInner').classList.add('dialog-content-centered'); currentSearchResult = identifyResult; @@ -160,48 +160,48 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", lines.push(identifyResult.ProductionYear); } - var resultHtml = lines.join("
"); + var resultHtml = lines.join('
'); if (identifyResult.ImageUrl) { var displayUrl = getSearchImageDisplayUrl(identifyResult.ImageUrl, identifyResult.SearchProviderName); - resultHtml = '
' + resultHtml + "
"; + resultHtml = '
' + resultHtml + '
'; } - page.querySelector(".selectedSearchResult").innerHTML = resultHtml; + page.querySelector('.selectedSearchResult').innerHTML = resultHtml; - focusManager.focus(identifyOptionsForm.querySelector(".btnSubmit")); + focusManager.focus(identifyOptionsForm.querySelector('.btnSubmit')); } function getSearchResultHtml(result, index) { // TODO move card creation code to Card component - var html = ""; - var cssClass = "card scalableCard"; - var cardBoxCssClass = "cardBox"; + var html = ''; + var cssClass = 'card scalableCard'; + var cardBoxCssClass = 'cardBox'; var padderClass; - if (currentItemType === "Episode") { - cssClass += " backdropCard backdropCard-scalable"; - padderClass = "cardPadder-backdrop"; - } else if (currentItemType === "MusicAlbum" || currentItemType === "MusicArtist") { - cssClass += " squareCard squareCard-scalable"; - padderClass = "cardPadder-square"; + if (currentItemType === 'Episode') { + cssClass += ' backdropCard backdropCard-scalable'; + padderClass = 'cardPadder-backdrop'; + } else if (currentItemType === 'MusicAlbum' || currentItemType === 'MusicArtist') { + cssClass += ' squareCard squareCard-scalable'; + padderClass = 'cardPadder-square'; } else { - cssClass += " portraitCard portraitCard-scalable"; - padderClass = "cardPadder-portrait"; + cssClass += ' portraitCard portraitCard-scalable'; + padderClass = 'cardPadder-portrait'; } if (layoutManager.tv) { - cssClass += " show-focus"; + cssClass += ' show-focus'; if (enableFocusTransform) { - cssClass += " show-animation"; + cssClass += ' show-animation'; } } - cardBoxCssClass += " cardBox-bottompadded"; + cardBoxCssClass += ' cardBox-bottompadded'; html += '
"; + html += '
'; + html += '
'; var numLines = 2; - if (currentItemType === "MusicAlbum") { + if (currentItemType === 'MusicAlbum') { numLines++; } @@ -242,19 +242,19 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", } else { html += '
'; } - html += lines[i] || " "; - html += "
"; + html += lines[i] || ' '; + html += '
'; } - html += "
"; - html += ""; + html += '
'; + html += ''; return html; } function getSearchImageDisplayUrl(url, provider) { var apiClient = getApiClient(); - return apiClient.getUrl("Items/RemoteSearch/Image", { imageUrl: url, ProviderName: provider }); + return apiClient.getUrl('Items/RemoteSearch/Image', { imageUrl: url, ProviderName: provider }); } function submitIdentficationResult(page) { @@ -262,16 +262,16 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", loading.show(); var options = { - ReplaceAllImages: page.querySelector("#chkIdentifyReplaceImages").checked + ReplaceAllImages: page.querySelector('#chkIdentifyReplaceImages').checked }; var apiClient = getApiClient(); apiClient.ajax({ - type: "POST", - url: apiClient.getUrl("Items/RemoteSearch/Apply/" + currentItem.Id, options), + type: 'POST', + url: apiClient.getUrl('Items/RemoteSearch/Apply/' + currentItem.Id, options), data: JSON.stringify(currentSearchResult), - contentType: "application/json" + contentType: 'application/json' }).then(function () { @@ -292,45 +292,45 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", var apiClient = getApiClient(); - apiClient.getJSON(apiClient.getUrl("Items/" + item.Id + "/ExternalIdInfos")).then(function (idList) { + apiClient.getJSON(apiClient.getUrl('Items/' + item.Id + '/ExternalIdInfos')).then(function (idList) { - var html = ""; + var html = ''; for (var i = 0, length = idList.length; i < length; i++) { var idInfo = idList[i]; - var id = "txtLookup" + idInfo.Key; + var id = 'txtLookup' + idInfo.Key; html += '
'; var fullName = idInfo.Name; if (idInfo.Type) { - fullName = idInfo.Name + " " + globalize.translate(idInfo.Type); + fullName = idInfo.Name + ' ' + globalize.translate(idInfo.Type); } - var idLabel = globalize.translate("LabelDynamicExternalId", fullName); + var idLabel = globalize.translate('LabelDynamicExternalId', fullName); html += ''; - html += "
"; + html += '
'; } - page.querySelector("#txtLookupName").value = ""; + page.querySelector('#txtLookupName').value = ''; - if (item.Type === "Person" || item.Type === "BoxSet") { + if (item.Type === 'Person' || item.Type === 'BoxSet') { - page.querySelector(".fldLookupYear").classList.add("hide"); - page.querySelector("#txtLookupYear").value = ""; + page.querySelector('.fldLookupYear').classList.add('hide'); + page.querySelector('#txtLookupYear').value = ''; } else { - page.querySelector(".fldLookupYear").classList.remove("hide"); - page.querySelector("#txtLookupYear").value = ""; + page.querySelector('.fldLookupYear').classList.remove('hide'); + page.querySelector('#txtLookupYear').value = ''; } - page.querySelector(".identifyProviderIds").innerHTML = html; + page.querySelector('.identifyProviderIds').innerHTML = html; - page.querySelector(".formDialogHeaderTitle").innerHTML = globalize.translate("Identify"); + page.querySelector('.formDialogHeaderTitle').innerHTML = globalize.translate('Identify'); }); } @@ -338,7 +338,7 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", loading.show(); - require(["text!./itemidentifier.template.html"], function (template) { + require(['text!./itemidentifier.template.html'], function (template) { var apiClient = getApiClient(); @@ -348,30 +348,30 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", currentItemType = currentItem.Type; var dialogOptions = { - size: "fullscreen-border", + size: 'fullscreen-border', removeOnClose: true, scrollY: false }; if (layoutManager.tv) { - dialogOptions.size = "fullscreen"; + dialogOptions.size = 'fullscreen'; } var dlg = dialogHelper.createDialog(dialogOptions); - dlg.classList.add("formDialog"); - dlg.classList.add("recordingDialog"); + dlg.classList.add('formDialog'); + dlg.classList.add('recordingDialog'); - var html = ""; - html += globalize.translateDocument(template, "core"); + var html = ''; + html += globalize.translateDocument(template, 'core'); dlg.innerHTML = html; // Has to be assigned a z-index after the call to .open() - dlg.addEventListener("close", onDialogClosed); + dlg.addEventListener('close', onDialogClosed); if (layoutManager.tv) { - scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"), false); + scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false); } if (item.Path) { @@ -384,26 +384,26 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", dialogHelper.open(dlg); - dlg.querySelector(".popupIdentifyForm").addEventListener("submit", function (e) { + dlg.querySelector('.popupIdentifyForm').addEventListener('submit', function (e) { e.preventDefault(); searchForIdentificationResults(dlg); return false; }); - dlg.querySelector(".identifyOptionsForm").addEventListener("submit", function (e) { + dlg.querySelector('.identifyOptionsForm').addEventListener('submit', function (e) { e.preventDefault(); submitIdentficationResult(dlg); return false; }); - dlg.querySelector(".btnCancel").addEventListener("click", function (e) { + dlg.querySelector('.btnCancel').addEventListener('click', function (e) { dialogHelper.close(dlg); }); - dlg.classList.add("identifyDialog"); + dlg.classList.add('identifyDialog'); showIdentificationForm(dlg, item); loading.hide(); @@ -426,47 +426,47 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", currentItem = null; currentItemType = itemType; - require(["text!./itemidentifier.template.html"], function (template) { + require(['text!./itemidentifier.template.html'], function (template) { var dialogOptions = { - size: "fullscreen-border", + size: 'fullscreen-border', removeOnClose: true, scrollY: false }; if (layoutManager.tv) { - dialogOptions.size = "fullscreen"; + dialogOptions.size = 'fullscreen'; } var dlg = dialogHelper.createDialog(dialogOptions); - dlg.classList.add("formDialog"); - dlg.classList.add("recordingDialog"); + dlg.classList.add('formDialog'); + dlg.classList.add('recordingDialog'); - var html = ""; - html += globalize.translateDocument(template, "core"); + var html = ''; + html += globalize.translateDocument(template, 'core'); dlg.innerHTML = html; if (layoutManager.tv) { - scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"), false); + scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false); } dialogHelper.open(dlg); - dlg.querySelector(".btnCancel").addEventListener("click", function (e) { + dlg.querySelector('.btnCancel').addEventListener('click', function (e) { dialogHelper.close(dlg); }); - dlg.querySelector(".popupIdentifyForm").addEventListener("submit", function (e) { + dlg.querySelector('.popupIdentifyForm').addEventListener('submit', function (e) { e.preventDefault(); searchForIdentificationResults(dlg); return false; }); - dlg.addEventListener("close", function () { + dlg.addEventListener('close', function () { loading.hide(); var foundItem = hasChanges ? currentSearchResult : null; @@ -474,7 +474,7 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", resolveFunc(foundItem); }); - dlg.classList.add("identifyDialog"); + dlg.classList.add('identifyDialog'); showIdentificationFormFindNew(dlg, itemName, itemYear, itemType); }); @@ -482,20 +482,20 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize", function showIdentificationFormFindNew(dlg, itemName, itemYear, itemType) { - dlg.querySelector("#txtLookupName").value = itemName; + dlg.querySelector('#txtLookupName').value = itemName; - if (itemType === "Person" || itemType === "BoxSet") { + if (itemType === 'Person' || itemType === 'BoxSet') { - dlg.querySelector(".fldLookupYear").classList.add("hide"); - dlg.querySelector("#txtLookupYear").value = ""; + dlg.querySelector('.fldLookupYear').classList.add('hide'); + dlg.querySelector('#txtLookupYear').value = ''; } else { - dlg.querySelector(".fldLookupYear").classList.remove("hide"); - dlg.querySelector("#txtLookupYear").value = itemYear; + dlg.querySelector('.fldLookupYear').classList.remove('hide'); + dlg.querySelector('#txtLookupYear').value = itemYear; } - dlg.querySelector(".formDialogHeaderTitle").innerHTML = globalize.translate("Search"); + dlg.querySelector('.formDialogHeaderTitle').innerHTML = globalize.translate('Search'); } return { diff --git a/src/components/lazyloader/lazyloader-intersectionobserver.js b/src/components/lazyloader/lazyloader-intersectionobserver.js index 5f83742601..8fe0d377d0 100644 --- a/src/components/lazyloader/lazyloader-intersectionobserver.js +++ b/src/components/lazyloader/lazyloader-intersectionobserver.js @@ -17,7 +17,7 @@ define(['require', 'browser'], function (require, browser) { var loadedCount = 0; var callback = options.callback; - observerOptions.rootMargin = "50%"; + observerOptions.rootMargin = '50%'; var observerId = 'obs' + new Date().getTime(); diff --git a/src/components/lazyloader/lazyloader-scroll.js b/src/components/lazyloader/lazyloader-scroll.js index 4930f6376c..2704c0f7be 100644 --- a/src/components/lazyloader/lazyloader-scroll.js +++ b/src/components/lazyloader/lazyloader-scroll.js @@ -18,10 +18,10 @@ define(['visibleinviewport', 'dom', 'browser'], function (visibleinviewport, dom } if (browser.iOS) { - dom.addEventListener(window, "orientationchange", resetThresholdsOnTimer, { passive: true }); + dom.addEventListener(window, 'orientationchange', resetThresholdsOnTimer, { passive: true }); dom.addEventListener(window, 'resize', resetThresholdsOnTimer, { passive: true }); } else { - dom.addEventListener(window, "orientationchange", resetThresholds, { passive: true }); + dom.addEventListener(window, 'orientationchange', resetThresholds, { passive: true }); dom.addEventListener(window, 'resize', resetThresholds, { passive: true }); } resetThresholds(); diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index d1dab9cb74..6fc93b3bd9 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -1,59 +1,59 @@ -define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], function(globalize, dom) { - "use strict"; +define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], function(globalize, dom) { + 'use strict'; function populateLanguages(parent) { return ApiClient.getCultures().then(function(languages) { - populateLanguagesIntoSelect(parent.querySelector("#selectLanguage"), languages); - populateLanguagesIntoList(parent.querySelector(".subtitleDownloadLanguages"), languages); + populateLanguagesIntoSelect(parent.querySelector('#selectLanguage'), languages); + populateLanguagesIntoList(parent.querySelector('.subtitleDownloadLanguages'), languages); }); } function populateLanguagesIntoSelect(select, languages) { - var html = ""; + var html = ''; html += ""; for (var i = 0; i < languages.length; i++) { var culture = languages[i]; - html += ""; + html += "'; } select.innerHTML = html; } function populateLanguagesIntoList(element, languages) { - var html = ""; + var html = ''; for (var i = 0; i < languages.length; i++) { var culture = languages[i]; - html += '"; + html += ''; } element.innerHTML = html; } function populateCountries(select) { return ApiClient.getCountries().then(function(allCountries) { - var html = ""; + var html = ''; html += ""; for (var i = 0; i < allCountries.length; i++) { var culture = allCountries[i]; - html += ""; + html += "'; } select.innerHTML = html; }); } function populateRefreshInterval(select) { - var html = ""; - html += ""; + var html = ''; + html += "'; html += [30, 60, 90].map(function(val) { - return ""; - }).join(""); + return "'; + }).join(''); select.innerHTML = html; } function renderMetadataReaders(page, plugins) { - var html = ""; - var elem = page.querySelector(".metadataReaders"); + var html = ''; + var elem = page.querySelector('.metadataReaders'); - if (plugins.length < 1) return elem.innerHTML = "", elem.classList.add("hide"), !1; - html += '

' + globalize.translate("LabelMetadataReaders") + "

"; + if (plugins.length < 1) return elem.innerHTML = '', elem.classList.add('hide'), !1; + html += '

' + globalize.translate('LabelMetadataReaders') + '

'; html += '
'; for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; @@ -62,69 +62,69 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += '
'; html += '

'; html += plugin.Name; - html += "

"; - html += "
"; + html += ''; + html += '
'; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } - html += "
"; + html += '
'; } - html += "
"; - html += '
' + globalize.translate("LabelMetadataReadersHelp") + "
"; + html += '
'; + html += '
' + globalize.translate('LabelMetadataReadersHelp') + '
'; if (plugins.length < 2) { - elem.classList.add("hide"); + elem.classList.add('hide'); } else { - elem.classList.remove("hide"); + elem.classList.remove('hide'); } elem.innerHTML = html; return true; } function renderMetadataSavers(page, metadataSavers) { - var html = ""; - var elem = page.querySelector(".metadataSavers"); - if (!metadataSavers.length) return elem.innerHTML = "", elem.classList.add("hide"), false; - html += '

' + globalize.translate("LabelMetadataSavers") + "

"; + var html = ''; + var elem = page.querySelector('.metadataSavers'); + if (!metadataSavers.length) return elem.innerHTML = '', elem.classList.add('hide'), false; + html += '

' + globalize.translate('LabelMetadataSavers') + '

'; html += '
'; for (var i = 0; i < metadataSavers.length; i++) { var plugin = metadataSavers[i]; - html += '"; + html += ''; } - html += "
"; - html += '
' + globalize.translate("LabelMetadataSaversHelp") + "
"; + html += ''; + html += '
' + globalize.translate('LabelMetadataSaversHelp') + '
'; elem.innerHTML = html; - elem.classList.remove("hide"); + elem.classList.remove('hide'); return true; } function getMetadataFetchersForTypeHtml(availableTypeOptions, libraryOptionsForType) { - var html = ""; + var html = ''; var plugins = availableTypeOptions.MetadataFetchers; plugins = getOrderedPlugins(plugins, libraryOptionsForType.MetadataFetcherOrder || []); if (!plugins.length) return html; html += '
'; - html += '

' + globalize.translate("LabelTypeMetadataDownloaders", globalize.translate(availableTypeOptions.Type)) + "

"; + html += '

' + globalize.translate('LabelTypeMetadataDownloaders', globalize.translate(availableTypeOptions.Type)) + '

'; html += '
'; for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; html += '
'; var isChecked = libraryOptionsForType.MetadataFetchers ? -1 !== libraryOptionsForType.MetadataFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled; - var checkedHtml = isChecked ? ' checked="checked"' : ""; - html += '"; + var checkedHtml = isChecked ? ' checked="checked"' : ''; + html += ''; html += '
'; html += '

'; html += plugin.Name; - html += "

"; - html += "
"; - i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
"; + html += ''; + html += '
'; + i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += '
'; } - html += ""; - html += '
' + globalize.translate("LabelMetadataDownloadersHelp") + "
"; - html += ""; + html += ''; + html += '
' + globalize.translate('LabelMetadataDownloadersHelp') + '
'; + html += ''; return html; } @@ -138,62 +138,62 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct } function renderMetadataFetchers(page, availableOptions, libraryOptions) { - var html = ""; - var elem = page.querySelector(".metadataFetchers"); + var html = ''; + var elem = page.querySelector('.metadataFetchers'); for (var i = 0; i < availableOptions.TypeOptions.length; i++) { var availableTypeOptions = availableOptions.TypeOptions[i]; html += getMetadataFetchersForTypeHtml(availableTypeOptions, getTypeOptions(libraryOptions, availableTypeOptions.Type) || {}); } elem.innerHTML = html; if (html) { - elem.classList.remove("hide"); - page.querySelector(".fldAutoRefreshInterval").classList.remove("hide"); - page.querySelector(".fldMetadataLanguage").classList.remove("hide"); - page.querySelector(".fldMetadataCountry").classList.remove("hide"); + elem.classList.remove('hide'); + page.querySelector('.fldAutoRefreshInterval').classList.remove('hide'); + page.querySelector('.fldMetadataLanguage').classList.remove('hide'); + page.querySelector('.fldMetadataCountry').classList.remove('hide'); } else { - elem.classList.add("hide"); - page.querySelector(".fldAutoRefreshInterval").classList.add("hide"); - page.querySelector(".fldMetadataLanguage").classList.add("hide"); - page.querySelector(".fldMetadataCountry").classList.add("hide"); + elem.classList.add('hide'); + page.querySelector('.fldAutoRefreshInterval').classList.add('hide'); + page.querySelector('.fldMetadataLanguage').classList.add('hide'); + page.querySelector('.fldMetadataCountry').classList.add('hide'); } return true; } function renderSubtitleFetchers(page, availableOptions, libraryOptions) { - var html = ""; - var elem = page.querySelector(".subtitleFetchers"); + var html = ''; + var elem = page.querySelector('.subtitleFetchers'); var plugins = availableOptions.SubtitleFetchers; plugins = getOrderedPlugins(plugins, libraryOptions.SubtitleFetcherOrder || []); if (!plugins.length) return html; - html += '

' + globalize.translate("LabelSubtitleDownloaders") + "

"; + html += '

' + globalize.translate('LabelSubtitleDownloaders') + '

'; html += '
'; for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; html += '
'; var isChecked = libraryOptions.DisabledSubtitleFetchers ? -1 === libraryOptions.DisabledSubtitleFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled; - var checkedHtml = isChecked ? ' checked="checked"' : ""; - html += '"; + var checkedHtml = isChecked ? ' checked="checked"' : ''; + html += ''; html += '
'; html += '

'; html += plugin.Name; - html += "

"; - html += "
"; + html += ''; + html += '
'; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } - html += "
"; + html += ''; } - html += ""; - html += '
' + globalize.translate("SubtitleDownloadersHelp") + "
"; + html += ''; + html += '
' + globalize.translate('SubtitleDownloadersHelp') + '
'; elem.innerHTML = html; } function getImageFetchersForTypeHtml(availableTypeOptions, libraryOptionsForType) { - var html = ""; + var html = ''; var plugins = availableTypeOptions.ImageFetchers; plugins = getOrderedPlugins(plugins, libraryOptionsForType.ImageFetcherOrder || []); @@ -201,60 +201,60 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += '
'; html += '
'; - html += '

' + globalize.translate("HeaderTypeImageFetchers", availableTypeOptions.Type) + "

"; + html += '

' + globalize.translate('HeaderTypeImageFetchers', availableTypeOptions.Type) + '

'; var supportedImageTypes = availableTypeOptions.SupportedImageTypes || []; - if (supportedImageTypes.length > 1 || 1 === supportedImageTypes.length && "Primary" !== supportedImageTypes[0]) { - html += '"; + if (supportedImageTypes.length > 1 || 1 === supportedImageTypes.length && 'Primary' !== supportedImageTypes[0]) { + html += ''; } - html += "
"; + html += '
'; html += '
'; for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; html += '
'; var isChecked = libraryOptionsForType.ImageFetchers ? -1 !== libraryOptionsForType.ImageFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled; - var checkedHtml = isChecked ? ' checked="checked"' : ""; - html += '"; + var checkedHtml = isChecked ? ' checked="checked"' : ''; + html += ''; html += '
'; html += '

'; html += plugin.Name; - html += "

"; - html += "
"; + html += ''; + html += '
'; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } - html += "
"; + html += ''; } - html += ""; - html += '
' + globalize.translate("LabelImageFetchersHelp") + "
"; - html += ""; + html += ''; + html += '
' + globalize.translate('LabelImageFetchersHelp') + '
'; + html += ''; return html; } function renderImageFetchers(page, availableOptions, libraryOptions) { - var html = ""; - var elem = page.querySelector(".imageFetchers"); + var html = ''; + var elem = page.querySelector('.imageFetchers'); for (var i = 0; i < availableOptions.TypeOptions.length; i++) { var availableTypeOptions = availableOptions.TypeOptions[i]; html += getImageFetchersForTypeHtml(availableTypeOptions, getTypeOptions(libraryOptions, availableTypeOptions.Type) || {}); } elem.innerHTML = html; if (html) { - elem.classList.remove("hide"); - page.querySelector(".chkDownloadImagesInAdvanceContainer").classList.remove("hide"); - page.querySelector(".chkSaveLocalContainer").classList.remove("hide"); + elem.classList.remove('hide'); + page.querySelector('.chkDownloadImagesInAdvanceContainer').classList.remove('hide'); + page.querySelector('.chkSaveLocalContainer').classList.remove('hide'); } else { - elem.classList.add("hide"); - page.querySelector(".chkDownloadImagesInAdvanceContainer").classList.add("hide"); - page.querySelector(".chkSaveLocalContainer").classList.add("hide"); + elem.classList.add('hide'); + page.querySelector('.chkDownloadImagesInAdvanceContainer').classList.add('hide'); + page.querySelector('.chkSaveLocalContainer').classList.add('hide'); } return true; } function populateMetadataSettings(parent, contentType, isNewLibrary) { - var isNewLibrary = parent.classList.contains("newlibrary"); - return ApiClient.getJSON(ApiClient.getUrl("Libraries/AvailableOptions", { + var isNewLibrary = parent.classList.contains('newlibrary'); + return ApiClient.getJSON(ApiClient.getUrl('Libraries/AvailableOptions', { LibraryContentType: contentType, IsNewLibrary: isNewLibrary })).then(function(availableOptions) { @@ -265,32 +265,32 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct renderMetadataFetchers(parent, availableOptions, {}); renderSubtitleFetchers(parent, availableOptions, {}); renderImageFetchers(parent, availableOptions, {}); - availableOptions.SubtitleFetchers.length ? parent.querySelector(".subtitleDownloadSettings").classList.remove("hide") : parent.querySelector(".subtitleDownloadSettings").classList.add("hide"); + availableOptions.SubtitleFetchers.length ? parent.querySelector('.subtitleDownloadSettings').classList.remove('hide') : parent.querySelector('.subtitleDownloadSettings').classList.add('hide'); }).catch(function() { return Promise.resolve(); }); } function adjustSortableListElement(elem) { - var btnSortable = elem.querySelector(".btnSortable"); - var inner = btnSortable.querySelector(".material-icons"); + var btnSortable = elem.querySelector('.btnSortable'); + var inner = btnSortable.querySelector('.material-icons'); if (elem.previousSibling) { - btnSortable.title = globalize.translate("ButtonUp"); - btnSortable.classList.add("btnSortableMoveUp"); - btnSortable.classList.remove("btnSortableMoveDown"); - inner.classList.remove("keyboard_arrow_down"); - inner.classList.add("keyboard_arrow_up"); + btnSortable.title = globalize.translate('ButtonUp'); + btnSortable.classList.add('btnSortableMoveUp'); + btnSortable.classList.remove('btnSortableMoveDown'); + inner.classList.remove('keyboard_arrow_down'); + inner.classList.add('keyboard_arrow_up'); } else { - btnSortable.title = globalize.translate("ButtonDown"); - btnSortable.classList.remove("btnSortableMoveUp"); - btnSortable.classList.add("btnSortableMoveDown"); - inner.classList.remove("keyboard_arrow_up"); - inner.classList.add("keyboard_arrow_down"); + btnSortable.title = globalize.translate('ButtonDown'); + btnSortable.classList.remove('btnSortableMoveUp'); + btnSortable.classList.add('btnSortableMoveDown'); + inner.classList.remove('keyboard_arrow_up'); + inner.classList.add('keyboard_arrow_down'); } } function showImageOptionsForType(type) { - require(["imageoptionseditor"], function(ImageOptionsEditor) { + require(['imageoptionseditor'], function(ImageOptionsEditor) { var typeOptions = getTypeOptions(currentLibraryOptions, type); typeOptions || (typeOptions = { Type: type @@ -301,34 +301,34 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct } function onImageFetchersContainerClick(e) { - var btnImageOptionsForType = dom.parentWithClass(e.target, "btnImageOptionsForType"); + var btnImageOptionsForType = dom.parentWithClass(e.target, 'btnImageOptionsForType'); if (btnImageOptionsForType) { - return void showImageOptionsForType(dom.parentWithClass(btnImageOptionsForType, "imageFetcher").getAttribute("data-type")); + return void showImageOptionsForType(dom.parentWithClass(btnImageOptionsForType, 'imageFetcher').getAttribute('data-type')); } onSortableContainerClick.call(this, e); } function onSortableContainerClick(e) { - var btnSortable = dom.parentWithClass(e.target, "btnSortable"); + var btnSortable = dom.parentWithClass(e.target, 'btnSortable'); if (btnSortable) { - var li = dom.parentWithClass(btnSortable, "sortableOption"); - var list = dom.parentWithClass(li, "paperList"); - if (btnSortable.classList.contains("btnSortableMoveDown")) { + var li = dom.parentWithClass(btnSortable, 'sortableOption'); + var list = dom.parentWithClass(li, 'paperList'); + if (btnSortable.classList.contains('btnSortableMoveDown')) { var next = li.nextSibling; next && (li.parentNode.removeChild(li), next.parentNode.insertBefore(li, next.nextSibling)); } else { var prev = li.previousSibling; prev && (li.parentNode.removeChild(li), prev.parentNode.insertBefore(li, prev)); } - Array.prototype.forEach.call(list.querySelectorAll(".sortableOption"), adjustSortableListElement); + Array.prototype.forEach.call(list.querySelectorAll('.sortableOption'), adjustSortableListElement); } } function bindEvents(parent) { - parent.querySelector(".metadataReaders").addEventListener("click", onSortableContainerClick); - parent.querySelector(".subtitleFetchers").addEventListener("click", onSortableContainerClick); - parent.querySelector(".metadataFetchers").addEventListener("click", onSortableContainerClick); - parent.querySelector(".imageFetchers").addEventListener("click", onImageFetchersContainerClick); + parent.querySelector('.metadataReaders').addEventListener('click', onSortableContainerClick); + parent.querySelector('.subtitleFetchers').addEventListener('click', onSortableContainerClick); + parent.querySelector('.metadataFetchers').addEventListener('click', onSortableContainerClick); + parent.querySelector('.imageFetchers').addEventListener('click', onImageFetchersContainerClick); } function embed(parent, contentType, libraryOptions) { @@ -337,15 +337,15 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct }; currentAvailableOptions = null; var isNewLibrary = null === libraryOptions; - isNewLibrary && parent.classList.add("newlibrary"); + isNewLibrary && parent.classList.add('newlibrary'); return new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest; - xhr.open("GET", "components/libraryoptionseditor/libraryoptionseditor.template.html", true); + xhr.open('GET', 'components/libraryoptionseditor/libraryoptionseditor.template.html', true); xhr.onload = function(e) { var template = this.response; parent.innerHTML = globalize.translateDocument(template); - populateRefreshInterval(parent.querySelector("#selectAutoRefreshInterval")); - var promises = [populateLanguages(parent), populateCountries(parent.querySelector("#selectCountry"))]; + populateRefreshInterval(parent.querySelector('#selectAutoRefreshInterval')); + var promises = [populateLanguages(parent), populateCountries(parent.querySelector('#selectCountry'))]; Promise.all(promises).then(function() { return setContentType(parent, contentType).then(function() { libraryOptions && setLibraryOptions(parent, libraryOptions); @@ -359,69 +359,69 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct } function setAdvancedVisible(parent, visible) { - var elems = parent.querySelectorAll(".advanced"); + var elems = parent.querySelectorAll('.advanced'); for (var i = 0; i < elems.length; i++) { - visible ? elems[i].classList.remove("advancedHide") : elems[i].classList.add("advancedHide"); + visible ? elems[i].classList.remove('advancedHide') : elems[i].classList.add('advancedHide'); } } function setContentType(parent, contentType) { - if (contentType === "homevideos" || contentType === "photos") { - parent.querySelector(".chkEnablePhotosContainer").classList.remove("hide"); + if (contentType === 'homevideos' || contentType === 'photos') { + parent.querySelector('.chkEnablePhotosContainer').classList.remove('hide'); } else { - parent.querySelector(".chkEnablePhotosContainer").classList.add("hide"); + parent.querySelector('.chkEnablePhotosContainer').classList.add('hide'); } - if (contentType !== "tvshows" && contentType !== "movies" && contentType !== "homevideos" && contentType !== "musicvideos" && contentType !== "mixed") { - parent.querySelector(".chapterSettingsSection").classList.add("hide"); + if (contentType !== 'tvshows' && contentType !== 'movies' && contentType !== 'homevideos' && contentType !== 'musicvideos' && contentType !== 'mixed') { + parent.querySelector('.chapterSettingsSection').classList.add('hide'); } else { - parent.querySelector(".chapterSettingsSection").classList.remove("hide"); + parent.querySelector('.chapterSettingsSection').classList.remove('hide'); } - if (contentType === "tvshows") { - parent.querySelector(".chkImportMissingEpisodesContainer").classList.remove("hide"); - parent.querySelector(".chkAutomaticallyGroupSeriesContainer").classList.remove("hide"); - parent.querySelector(".fldSeasonZeroDisplayName").classList.remove("hide"); - parent.querySelector("#txtSeasonZeroName").setAttribute("required", "required"); + if (contentType === 'tvshows') { + parent.querySelector('.chkImportMissingEpisodesContainer').classList.remove('hide'); + parent.querySelector('.chkAutomaticallyGroupSeriesContainer').classList.remove('hide'); + parent.querySelector('.fldSeasonZeroDisplayName').classList.remove('hide'); + parent.querySelector('#txtSeasonZeroName').setAttribute('required', 'required'); } else { - parent.querySelector(".chkImportMissingEpisodesContainer").classList.add("hide"); - parent.querySelector(".chkAutomaticallyGroupSeriesContainer").classList.add("hide"); - parent.querySelector(".fldSeasonZeroDisplayName").classList.add("hide"); - parent.querySelector("#txtSeasonZeroName").removeAttribute("required"); + parent.querySelector('.chkImportMissingEpisodesContainer').classList.add('hide'); + parent.querySelector('.chkAutomaticallyGroupSeriesContainer').classList.add('hide'); + parent.querySelector('.fldSeasonZeroDisplayName').classList.add('hide'); + parent.querySelector('#txtSeasonZeroName').removeAttribute('required'); } - if (contentType === "books" || contentType === "boxsets" || contentType === "playlists" || contentType === "music") { - parent.querySelector(".chkEnableEmbeddedTitlesContainer").classList.add("hide"); + if (contentType === 'books' || contentType === 'boxsets' || contentType === 'playlists' || contentType === 'music') { + parent.querySelector('.chkEnableEmbeddedTitlesContainer').classList.add('hide'); } else { - parent.querySelector(".chkEnableEmbeddedTitlesContainer").classList.remove("hide"); + parent.querySelector('.chkEnableEmbeddedTitlesContainer').classList.remove('hide'); } - if (contentType === "tvshows") { - parent.querySelector(".chkEnableEmbeddedEpisodeInfosContainer").classList.remove("hide"); + if (contentType === 'tvshows') { + parent.querySelector('.chkEnableEmbeddedEpisodeInfosContainer').classList.remove('hide'); } else { - parent.querySelector(".chkEnableEmbeddedEpisodeInfosContainer").classList.add("hide"); + parent.querySelector('.chkEnableEmbeddedEpisodeInfosContainer').classList.add('hide'); } return populateMetadataSettings(parent, contentType); } function setSubtitleFetchersIntoOptions(parent, options) { - options.DisabledSubtitleFetchers = Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll(".chkSubtitleFetcher"), function(elem) { + options.DisabledSubtitleFetchers = Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll('.chkSubtitleFetcher'), function(elem) { return !elem.checked; }), function(elem) { - return elem.getAttribute("data-pluginname"); + return elem.getAttribute('data-pluginname'); }); - options.SubtitleFetcherOrder = Array.prototype.map.call(parent.querySelectorAll(".subtitleFetcherItem"), function(elem) { - return elem.getAttribute("data-pluginname"); + options.SubtitleFetcherOrder = Array.prototype.map.call(parent.querySelectorAll('.subtitleFetcherItem'), function(elem) { + return elem.getAttribute('data-pluginname'); }); } function setMetadataFetchersIntoOptions(parent, options) { - var sections = parent.querySelectorAll(".metadataFetcher"); + var sections = parent.querySelectorAll('.metadataFetcher'); for (var i = 0; i < sections.length; i++) { var section = sections[i]; - var type = section.getAttribute("data-type"); + var type = section.getAttribute('data-type'); var typeOptions = getTypeOptions(options, type); if (!typeOptions) { typeOptions = { @@ -429,23 +429,23 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct }; options.TypeOptions.push(typeOptions); } - typeOptions.MetadataFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll(".chkMetadataFetcher"), function(elem) { + typeOptions.MetadataFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll('.chkMetadataFetcher'), function(elem) { return elem.checked; }), function(elem) { - return elem.getAttribute("data-pluginname"); + return elem.getAttribute('data-pluginname'); }); - typeOptions.MetadataFetcherOrder = Array.prototype.map.call(section.querySelectorAll(".metadataFetcherItem"), function(elem) { - return elem.getAttribute("data-pluginname"); + typeOptions.MetadataFetcherOrder = Array.prototype.map.call(section.querySelectorAll('.metadataFetcherItem'), function(elem) { + return elem.getAttribute('data-pluginname'); }); } } function setImageFetchersIntoOptions(parent, options) { - var sections = parent.querySelectorAll(".imageFetcher"); + var sections = parent.querySelectorAll('.imageFetcher'); for (var i = 0; i < sections.length; i++) { var section = sections[i]; - var type = section.getAttribute("data-type"); + var type = section.getAttribute('data-type'); var typeOptions = getTypeOptions(options, type); if (!typeOptions) { typeOptions = { @@ -454,14 +454,14 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct options.TypeOptions.push(typeOptions); } - typeOptions.ImageFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll(".chkImageFetcher"), function(elem) { + typeOptions.ImageFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll('.chkImageFetcher'), function(elem) { return elem.checked; }), function(elem) { - return elem.getAttribute("data-pluginname"); + return elem.getAttribute('data-pluginname'); }); - typeOptions.ImageFetcherOrder = Array.prototype.map.call(section.querySelectorAll(".imageFetcherItem"), function(elem) { - return elem.getAttribute("data-pluginname"); + typeOptions.ImageFetcherOrder = Array.prototype.map.call(section.querySelectorAll('.imageFetcherItem'), function(elem) { + return elem.getAttribute('data-pluginname'); }); } } @@ -485,40 +485,40 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct function getLibraryOptions(parent) { var options = { EnableArchiveMediaFiles: false, - EnablePhotos: parent.querySelector(".chkEnablePhotos").checked, - EnableRealtimeMonitor: parent.querySelector(".chkEnableRealtimeMonitor").checked, - ExtractChapterImagesDuringLibraryScan: parent.querySelector(".chkExtractChaptersDuringLibraryScan").checked, - EnableChapterImageExtraction: parent.querySelector(".chkExtractChapterImages").checked, - DownloadImagesInAdvance: parent.querySelector("#chkDownloadImagesInAdvance").checked, + EnablePhotos: parent.querySelector('.chkEnablePhotos').checked, + EnableRealtimeMonitor: parent.querySelector('.chkEnableRealtimeMonitor').checked, + ExtractChapterImagesDuringLibraryScan: parent.querySelector('.chkExtractChaptersDuringLibraryScan').checked, + EnableChapterImageExtraction: parent.querySelector('.chkExtractChapterImages').checked, + DownloadImagesInAdvance: parent.querySelector('#chkDownloadImagesInAdvance').checked, EnableInternetProviders: true, - ImportMissingEpisodes: parent.querySelector("#chkImportMissingEpisodes").checked, - SaveLocalMetadata: parent.querySelector("#chkSaveLocal").checked, - EnableAutomaticSeriesGrouping: parent.querySelector(".chkAutomaticallyGroupSeries").checked, - PreferredMetadataLanguage: parent.querySelector("#selectLanguage").value, - MetadataCountryCode: parent.querySelector("#selectCountry").value, - SeasonZeroDisplayName: parent.querySelector("#txtSeasonZeroName").value, - AutomaticRefreshIntervalDays: parseInt(parent.querySelector("#selectAutoRefreshInterval").value), - EnableEmbeddedTitles: parent.querySelector("#chkEnableEmbeddedTitles").checked, - EnableEmbeddedEpisodeInfos: parent.querySelector("#chkEnableEmbeddedEpisodeInfos").checked, - SkipSubtitlesIfEmbeddedSubtitlesPresent: parent.querySelector("#chkSkipIfGraphicalSubsPresent").checked, - SkipSubtitlesIfAudioTrackMatches: parent.querySelector("#chkSkipIfAudioTrackPresent").checked, - SaveSubtitlesWithMedia: parent.querySelector("#chkSaveSubtitlesLocally").checked, - RequirePerfectSubtitleMatch: parent.querySelector("#chkRequirePerfectMatch").checked, - MetadataSavers: Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll(".chkMetadataSaver"), function(elem) { + ImportMissingEpisodes: parent.querySelector('#chkImportMissingEpisodes').checked, + SaveLocalMetadata: parent.querySelector('#chkSaveLocal').checked, + EnableAutomaticSeriesGrouping: parent.querySelector('.chkAutomaticallyGroupSeries').checked, + PreferredMetadataLanguage: parent.querySelector('#selectLanguage').value, + MetadataCountryCode: parent.querySelector('#selectCountry').value, + SeasonZeroDisplayName: parent.querySelector('#txtSeasonZeroName').value, + AutomaticRefreshIntervalDays: parseInt(parent.querySelector('#selectAutoRefreshInterval').value), + EnableEmbeddedTitles: parent.querySelector('#chkEnableEmbeddedTitles').checked, + EnableEmbeddedEpisodeInfos: parent.querySelector('#chkEnableEmbeddedEpisodeInfos').checked, + SkipSubtitlesIfEmbeddedSubtitlesPresent: parent.querySelector('#chkSkipIfGraphicalSubsPresent').checked, + SkipSubtitlesIfAudioTrackMatches: parent.querySelector('#chkSkipIfAudioTrackPresent').checked, + SaveSubtitlesWithMedia: parent.querySelector('#chkSaveSubtitlesLocally').checked, + RequirePerfectSubtitleMatch: parent.querySelector('#chkRequirePerfectMatch').checked, + MetadataSavers: Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll('.chkMetadataSaver'), function(elem) { return elem.checked; }), function(elem) { - return elem.getAttribute("data-pluginname"); + return elem.getAttribute('data-pluginname'); }), TypeOptions: [] }; - options.LocalMetadataReaderOrder = Array.prototype.map.call(parent.querySelectorAll(".localReaderOption"), function(elem) { - return elem.getAttribute("data-pluginname"); + options.LocalMetadataReaderOrder = Array.prototype.map.call(parent.querySelectorAll('.localReaderOption'), function(elem) { + return elem.getAttribute('data-pluginname'); }); - options.SubtitleDownloadLanguages = Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll(".chkSubtitleLanguage"), function(elem) { + options.SubtitleDownloadLanguages = Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll('.chkSubtitleLanguage'), function(elem) { return elem.checked; }), function(elem) { - return elem.getAttribute("data-lang"); + return elem.getAttribute('data-lang'); }); setSubtitleFetchersIntoOptions(parent, options); setMetadataFetchersIntoOptions(parent, options); @@ -539,29 +539,29 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct function setLibraryOptions(parent, options) { currentLibraryOptions = options; currentAvailableOptions = parent.availableOptions; - parent.querySelector("#selectLanguage").value = options.PreferredMetadataLanguage || ""; - parent.querySelector("#selectCountry").value = options.MetadataCountryCode || ""; - parent.querySelector("#selectAutoRefreshInterval").value = options.AutomaticRefreshIntervalDays || "0"; - parent.querySelector("#txtSeasonZeroName").value = options.SeasonZeroDisplayName || "Specials"; - parent.querySelector(".chkEnablePhotos").checked = options.EnablePhotos; - parent.querySelector(".chkEnableRealtimeMonitor").checked = options.EnableRealtimeMonitor; - parent.querySelector(".chkExtractChaptersDuringLibraryScan").checked = options.ExtractChapterImagesDuringLibraryScan; - parent.querySelector(".chkExtractChapterImages").checked = options.EnableChapterImageExtraction; - parent.querySelector("#chkDownloadImagesInAdvance").checked = options.DownloadImagesInAdvance; - parent.querySelector("#chkSaveLocal").checked = options.SaveLocalMetadata; - parent.querySelector("#chkImportMissingEpisodes").checked = options.ImportMissingEpisodes; - parent.querySelector(".chkAutomaticallyGroupSeries").checked = options.EnableAutomaticSeriesGrouping; - parent.querySelector("#chkEnableEmbeddedTitles").checked = options.EnableEmbeddedTitles; - parent.querySelector("#chkEnableEmbeddedEpisodeInfos").checked = options.EnableEmbeddedEpisodeInfos; - parent.querySelector("#chkSkipIfGraphicalSubsPresent").checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent; - parent.querySelector("#chkSaveSubtitlesLocally").checked = options.SaveSubtitlesWithMedia; - parent.querySelector("#chkSkipIfAudioTrackPresent").checked = options.SkipSubtitlesIfAudioTrackMatches; - parent.querySelector("#chkRequirePerfectMatch").checked = options.RequirePerfectSubtitleMatch; - Array.prototype.forEach.call(parent.querySelectorAll(".chkMetadataSaver"), function(elem) { - elem.checked = options.MetadataSavers ? -1 !== options.MetadataSavers.indexOf(elem.getAttribute("data-pluginname")) : "true" === elem.getAttribute("data-defaultenabled"); + parent.querySelector('#selectLanguage').value = options.PreferredMetadataLanguage || ''; + parent.querySelector('#selectCountry').value = options.MetadataCountryCode || ''; + parent.querySelector('#selectAutoRefreshInterval').value = options.AutomaticRefreshIntervalDays || '0'; + parent.querySelector('#txtSeasonZeroName').value = options.SeasonZeroDisplayName || 'Specials'; + parent.querySelector('.chkEnablePhotos').checked = options.EnablePhotos; + parent.querySelector('.chkEnableRealtimeMonitor').checked = options.EnableRealtimeMonitor; + parent.querySelector('.chkExtractChaptersDuringLibraryScan').checked = options.ExtractChapterImagesDuringLibraryScan; + parent.querySelector('.chkExtractChapterImages').checked = options.EnableChapterImageExtraction; + parent.querySelector('#chkDownloadImagesInAdvance').checked = options.DownloadImagesInAdvance; + parent.querySelector('#chkSaveLocal').checked = options.SaveLocalMetadata; + parent.querySelector('#chkImportMissingEpisodes').checked = options.ImportMissingEpisodes; + parent.querySelector('.chkAutomaticallyGroupSeries').checked = options.EnableAutomaticSeriesGrouping; + parent.querySelector('#chkEnableEmbeddedTitles').checked = options.EnableEmbeddedTitles; + parent.querySelector('#chkEnableEmbeddedEpisodeInfos').checked = options.EnableEmbeddedEpisodeInfos; + parent.querySelector('#chkSkipIfGraphicalSubsPresent').checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent; + parent.querySelector('#chkSaveSubtitlesLocally').checked = options.SaveSubtitlesWithMedia; + parent.querySelector('#chkSkipIfAudioTrackPresent').checked = options.SkipSubtitlesIfAudioTrackMatches; + parent.querySelector('#chkRequirePerfectMatch').checked = options.RequirePerfectSubtitleMatch; + Array.prototype.forEach.call(parent.querySelectorAll('.chkMetadataSaver'), function(elem) { + elem.checked = options.MetadataSavers ? -1 !== options.MetadataSavers.indexOf(elem.getAttribute('data-pluginname')) : 'true' === elem.getAttribute('data-defaultenabled'); }); - Array.prototype.forEach.call(parent.querySelectorAll(".chkSubtitleLanguage"), function(elem) { - elem.checked = !!options.SubtitleDownloadLanguages && -1 !== options.SubtitleDownloadLanguages.indexOf(elem.getAttribute("data-lang")); + Array.prototype.forEach.call(parent.querySelectorAll('.chkSubtitleLanguage'), function(elem) { + elem.checked = !!options.SubtitleDownloadLanguages && -1 !== options.SubtitleDownloadLanguages.indexOf(elem.getAttribute('data-lang')); }); renderMetadataReaders(parent, getOrderedPlugins(parent.availableOptions.MetadataReaders, options.LocalMetadataReaderOrder || [])); renderMetadataFetchers(parent, parent.availableOptions, options); diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index bb00cf65cb..0743b35280 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -73,7 +73,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var options = { maxWidth: width * 2, - type: "Primary" + type: 'Primary' }; if (item.ImageTags && item.ImageTags.Primary) { @@ -106,7 +106,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var options = { maxWidth: width * 2, - type: "Primary" + type: 'Primary' }; if (item.ChannelId && item.ChannelPrimaryImageTag) { @@ -219,7 +219,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } } - var cssClass = "listItem"; + var cssClass = 'listItem'; if (options.border || (options.highlight !== false && !layoutManager.tv)) { cssClass += ' listItem-border'; @@ -236,7 +236,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var downloadWidth = 80; if (isLargeStyle) { - cssClass += " listItem-largeImage"; + cssClass += ' listItem-largeImage'; downloadWidth = 500; } @@ -355,7 +355,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan }); if (options.showIndexNumber && item.IndexNumber != null) { - displayName = item.IndexNumber + ". " + displayName; + displayName = item.IndexNumber + '. ' + displayName; } if (options.showParentTitle && options.parentTitleWithTitle) { diff --git a/src/components/loading/loading.js b/src/components/loading/loading.js index d6c00347c7..9a9aa3ca7d 100644 --- a/src/components/loading/loading.js +++ b/src/components/loading/loading.js @@ -19,7 +19,7 @@ define(['components/loading/loadingLegacy', 'browser', 'css!./loading'], functio if (!elem) { - elem = document.createElement("div"); + elem = document.createElement('div'); loadingElem = elem; elem.classList.add('docspinner'); diff --git a/src/components/loading/loadingLegacy.js b/src/components/loading/loadingLegacy.js index 757cea0160..d766a4aca4 100644 --- a/src/components/loading/loadingLegacy.js +++ b/src/components/loading/loadingLegacy.js @@ -7,7 +7,7 @@ define(['require', 'css!./loadingLegacy'], function (require) { show: function () { var elem = loadingElem; if (!elem) { - elem = document.createElement("img"); + elem = document.createElement('img'); elem.src = require.toUrl('.').split('?')[0] + '/loader.gif'; loadingElem = elem; diff --git a/src/components/logoscreensaver/plugin.js b/src/components/logoscreensaver/plugin.js index 2becfad0c3..f9dd901982 100644 --- a/src/components/logoscreensaver/plugin.js +++ b/src/components/logoscreensaver/plugin.js @@ -1,12 +1,12 @@ -define(["pluginManager"], function (pluginManager) { +define(['pluginManager'], function (pluginManager) { return function () { var self = this; - self.name = "Logo ScreenSaver"; - self.type = "screensaver"; - self.id = "logoscreensaver"; + self.name = 'Logo ScreenSaver'; + self.type = 'screensaver'; + self.id = 'logoscreensaver'; self.supportsAnonymous = true; var interval; @@ -24,7 +24,7 @@ define(["pluginManager"], function (pluginManager) { rotateOut ]; - var elem = document.querySelector(".logoScreenSaverImage"); + var elem = document.querySelector('.logoScreenSaverImage'); if (elem && elem.animate) { var random = getRandomInt(0, animations.length - 1); @@ -39,96 +39,96 @@ define(["pluginManager"], function (pluginManager) { function bounceInLeft(elem, iterations) { var keyframes = [ - { transform: "translate3d(-3000px, 0, 0)", opacity: "0", offset: 0 }, - { transform: "translate3d(25px, 0, 0)", opacity: "1", offset: 0.6 }, - { transform: "translate3d(-100px, 0, 0)", offset: 0.75 }, - { transform: "translate3d(5px, 0, 0)", offset: 0.9 }, - { transform: "none", opacity: "1", offset: 1 }]; - var timing = { duration: 900, iterations: iterations, easing: "cubic-bezier(0.215, 0.610, 0.355, 1.000)" }; + { transform: 'translate3d(-3000px, 0, 0)', opacity: '0', offset: 0 }, + { transform: 'translate3d(25px, 0, 0)', opacity: '1', offset: 0.6 }, + { transform: 'translate3d(-100px, 0, 0)', offset: 0.75 }, + { transform: 'translate3d(5px, 0, 0)', offset: 0.9 }, + { transform: 'none', opacity: '1', offset: 1 }]; + var timing = { duration: 900, iterations: iterations, easing: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)' }; return elem.animate(keyframes, timing); } function bounceInRight(elem, iterations) { var keyframes = [ - { transform: "translate3d(3000px, 0, 0)", opacity: "0", offset: 0 }, - { transform: "translate3d(-25px, 0, 0)", opacity: "1", offset: 0.6 }, - { transform: "translate3d(100px, 0, 0)", offset: 0.75 }, - { transform: "translate3d(-5px, 0, 0)", offset: 0.9 }, - { transform: "none", opacity: "1", offset: 1 }]; - var timing = { duration: 900, iterations: iterations, easing: "cubic-bezier(0.215, 0.610, 0.355, 1.000)" }; + { transform: 'translate3d(3000px, 0, 0)', opacity: '0', offset: 0 }, + { transform: 'translate3d(-25px, 0, 0)', opacity: '1', offset: 0.6 }, + { transform: 'translate3d(100px, 0, 0)', offset: 0.75 }, + { transform: 'translate3d(-5px, 0, 0)', offset: 0.9 }, + { transform: 'none', opacity: '1', offset: 1 }]; + var timing = { duration: 900, iterations: iterations, easing: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)' }; return elem.animate(keyframes, timing); } function shake(elem, iterations) { var keyframes = [ - { transform: "translate3d(0, 0, 0)", offset: 0 }, - { transform: "translate3d(-10px, 0, 0)", offset: 0.1 }, - { transform: "translate3d(10px, 0, 0)", offset: 0.2 }, - { transform: "translate3d(-10px, 0, 0)", offset: 0.3 }, - { transform: "translate3d(10px, 0, 0)", offset: 0.4 }, - { transform: "translate3d(-10px, 0, 0)", offset: 0.5 }, - { transform: "translate3d(10px, 0, 0)", offset: 0.6 }, - { transform: "translate3d(-10px, 0, 0)", offset: 0.7 }, - { transform: "translate3d(10px, 0, 0)", offset: 0.8 }, - { transform: "translate3d(-10px, 0, 0)", offset: 0.9 }, - { transform: "translate3d(0, 0, 0)", offset: 1 }]; + { transform: 'translate3d(0, 0, 0)', offset: 0 }, + { transform: 'translate3d(-10px, 0, 0)', offset: 0.1 }, + { transform: 'translate3d(10px, 0, 0)', offset: 0.2 }, + { transform: 'translate3d(-10px, 0, 0)', offset: 0.3 }, + { transform: 'translate3d(10px, 0, 0)', offset: 0.4 }, + { transform: 'translate3d(-10px, 0, 0)', offset: 0.5 }, + { transform: 'translate3d(10px, 0, 0)', offset: 0.6 }, + { transform: 'translate3d(-10px, 0, 0)', offset: 0.7 }, + { transform: 'translate3d(10px, 0, 0)', offset: 0.8 }, + { transform: 'translate3d(-10px, 0, 0)', offset: 0.9 }, + { transform: 'translate3d(0, 0, 0)', offset: 1 }]; var timing = { duration: 900, iterations: iterations }; return elem.animate(keyframes, timing); } function swing(elem, iterations) { var keyframes = [ - { transform: "translate(0%)", offset: 0 }, - { transform: "rotate3d(0, 0, 1, 15deg)", offset: 0.2 }, - { transform: "rotate3d(0, 0, 1, -10deg)", offset: 0.4 }, - { transform: "rotate3d(0, 0, 1, 5deg)", offset: 0.6 }, - { transform: "rotate3d(0, 0, 1, -5deg)", offset: 0.8 }, - { transform: "rotate3d(0, 0, 1, 0deg)", offset: 1 }]; + { transform: 'translate(0%)', offset: 0 }, + { transform: 'rotate3d(0, 0, 1, 15deg)', offset: 0.2 }, + { transform: 'rotate3d(0, 0, 1, -10deg)', offset: 0.4 }, + { transform: 'rotate3d(0, 0, 1, 5deg)', offset: 0.6 }, + { transform: 'rotate3d(0, 0, 1, -5deg)', offset: 0.8 }, + { transform: 'rotate3d(0, 0, 1, 0deg)', offset: 1 }]; var timing = { duration: 900, iterations: iterations }; return elem.animate(keyframes, timing); } function tada(elem, iterations) { var keyframes = [ - { transform: "scale3d(1, 1, 1)", offset: 0 }, - { transform: "scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg)", offset: 0.1 }, - { transform: "scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg)", offset: 0.2 }, - { transform: "scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)", offset: 0.3 }, - { transform: "scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)", offset: 0.4 }, - { transform: "scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)", offset: 0.5 }, - { transform: "scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)", offset: 0.6 }, - { transform: "scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)", offset: 0.7 }, - { transform: "scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)", offset: 0.8 }, - { transform: "scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)", offset: 0.9 }, - { transform: "scale3d(1, 1, 1)", offset: 1 }]; + { transform: 'scale3d(1, 1, 1)', offset: 0 }, + { transform: 'scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg)', offset: 0.1 }, + { transform: 'scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg)', offset: 0.2 }, + { transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)', offset: 0.3 }, + { transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)', offset: 0.4 }, + { transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)', offset: 0.5 }, + { transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)', offset: 0.6 }, + { transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)', offset: 0.7 }, + { transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)', offset: 0.8 }, + { transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)', offset: 0.9 }, + { transform: 'scale3d(1, 1, 1)', offset: 1 }]; var timing = { duration: 900, iterations: iterations }; return elem.animate(keyframes, timing); } function wobble(elem, iterations) { var keyframes = [ - { transform: "translate(0%)", offset: 0 }, - { transform: "translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg)", offset: 0.15 }, - { transform: "translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg)", offset: 0.45 }, - { transform: "translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg)", offset: 0.6 }, - { transform: "translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg)", offset: 0.75 }, - { transform: "translateX(0%)", offset: 1 }]; + { transform: 'translate(0%)', offset: 0 }, + { transform: 'translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg)', offset: 0.15 }, + { transform: 'translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg)', offset: 0.45 }, + { transform: 'translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg)', offset: 0.6 }, + { transform: 'translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg)', offset: 0.75 }, + { transform: 'translateX(0%)', offset: 1 }]; var timing = { duration: 900, iterations: iterations }; return elem.animate(keyframes, timing); } function rotateIn(elem, iterations) { - var transformOrigin = elem.style["transform-origin"]; - var keyframes = [{ transform: "rotate3d(0, 0, 1, -200deg)", opacity: "0", transformOrigin: "center", offset: 0 }, - { transform: "none", opacity: "1", transformOrigin: "center", offset: 1 }]; + var transformOrigin = elem.style['transform-origin']; + var keyframes = [{ transform: 'rotate3d(0, 0, 1, -200deg)', opacity: '0', transformOrigin: 'center', offset: 0 }, + { transform: 'none', opacity: '1', transformOrigin: 'center', offset: 1 }]; var timing = { duration: 900, iterations: iterations }; return elem.animate(keyframes, timing); } function rotateOut(elem, iterations) { - var transformOrigin = elem.style["transform-origin"]; - var keyframes = [{ transform: "none", opacity: "1", transformOrigin: "center", offset: 0 }, - { transform: "rotate3d(0, 0, 1, 200deg)", opacity: "0", transformOrigin: "center", offset: 1 }]; + var transformOrigin = elem.style['transform-origin']; + var keyframes = [{ transform: 'none', opacity: '1', transformOrigin: 'center', offset: 0 }, + { transform: 'rotate3d(0, 0, 1, 200deg)', opacity: '0', transformOrigin: 'center', offset: 1 }]; var timing = { duration: 900, iterations: iterations }; return elem.animate(keyframes, timing); @@ -136,8 +136,8 @@ define(["pluginManager"], function (pluginManager) { function fadeOut(elem, iterations) { var keyframes = [ - { opacity: "1", offset: 0 }, - { opacity: "0", offset: 1 }]; + { opacity: '1', offset: 0 }, + { opacity: '0', offset: 1 }]; var timing = { duration: 400, iterations: iterations }; return elem.animate(keyframes, timing); } @@ -151,13 +151,13 @@ define(["pluginManager"], function (pluginManager) { self.show = function () { - require(["css!" + pluginManager.mapPath(self, "style.css")], function () { + require(['css!' + pluginManager.mapPath(self, 'style.css')], function () { - var elem = document.querySelector(".logoScreenSaver"); + var elem = document.querySelector('.logoScreenSaver'); if (!elem) { - elem = document.createElement("div"); - elem.classList.add("logoScreenSaver"); + elem = document.createElement('div'); + elem.classList.add('logoScreenSaver'); document.body.appendChild(elem); elem.innerHTML = ''; @@ -172,7 +172,7 @@ define(["pluginManager"], function (pluginManager) { stopInterval(); - var elem = document.querySelector(".logoScreenSaver"); + var elem = document.querySelector('.logoScreenSaver'); if (elem) { diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index db3b896f0e..0c9a87e800 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -57,7 +57,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater miscInfo.push(text); } catch (e) { - console.error("error parsing date: " + item.StartDate); + console.error('error parsing date: ' + item.StartDate); } } @@ -109,7 +109,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater var minutes; var count; - var showFolderRuntime = item.Type === "MusicAlbum" || item.MediaType === 'MusicArtist' || item.MediaType === 'Playlist' || item.MediaType === 'MusicGenre'; + var showFolderRuntime = item.Type === 'MusicAlbum' || item.MediaType === 'MusicArtist' || item.MediaType === 'Playlist' || item.MediaType === 'MusicGenre'; if (showFolderRuntime) { @@ -123,7 +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; @@ -133,7 +133,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater } } - if ((item.Type === "Episode" || item.MediaType === 'Photo') && options.originalAirDate !== false) { + if ((item.Type === 'Episode' || item.MediaType === 'Photo') && options.originalAirDate !== false) { if (item.PremiereDate) { @@ -143,7 +143,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = datetime.toLocaleDateString(date); miscInfo.push(text); } catch (e) { - console.error("error parsing date: " + item.PremiereDate); + console.error('error parsing date: ' + item.PremiereDate); } } } @@ -171,18 +171,18 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = datetime.toLocaleDateString(date); miscInfo.push(text); - if (item.Type !== "Recording") { + if (item.Type !== 'Recording') { text = datetime.getDisplayTime(date); miscInfo.push(text); } } catch (e) { - console.error("error parsing date: " + item.StartDate); + console.error('error parsing date: ' + item.StartDate); } } - if (options.year !== false && item.ProductionYear && item.Type === "Series") { + if (options.year !== false && item.ProductionYear && item.Type === 'Series') { - if (item.Status === "Continuing") { + if (item.Status === 'Continuing') { miscInfo.push(globalize.translate('SeriesYearToPresent', item.ProductionYear)); } else if (item.ProductionYear) { @@ -196,11 +196,11 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater var endYear = datetime.parseISO8601Date(item.EndDate).getFullYear(); if (endYear !== item.ProductionYear) { - text += "-" + datetime.parseISO8601Date(item.EndDate).getFullYear(); + text += '-' + datetime.parseISO8601Date(item.EndDate).getFullYear(); } } catch (e) { - console.error("error parsing date: " + item.EndDate); + console.error('error parsing date: ' + item.EndDate); } } @@ -248,7 +248,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date)); miscInfo.push(text); } catch (e) { - console.error("error parsing date: " + item.PremiereDate); + console.error('error parsing date: ' + item.PremiereDate); } } else if (item.ProductionYear) { miscInfo.push(item.ProductionYear); @@ -256,7 +256,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater } if (options.year !== false) { - if (item.Type !== "Series" && item.Type !== "Episode" && item.Type !== "Person" && item.MediaType !== 'Photo' && item.Type !== 'Program' && item.Type !== 'Season') { + if (item.Type !== 'Series' && item.Type !== 'Episode' && item.Type !== 'Person' && item.MediaType !== 'Photo' && item.Type !== 'Program' && item.Type !== 'Season') { if (item.ProductionYear) { @@ -267,15 +267,15 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = datetime.parseISO8601Date(item.PremiereDate).getFullYear(); miscInfo.push(text); } catch (e) { - console.error("error parsing date: " + item.PremiereDate); + console.error('error parsing date: ' + item.PremiereDate); } } } } - if (item.RunTimeTicks && item.Type !== "Series" && item.Type !== 'Program' && !showFolderRuntime && options.runtime !== false) { + if (item.RunTimeTicks && item.Type !== 'Series' && item.Type !== 'Program' && !showFolderRuntime && options.runtime !== false) { - if (item.Type === "Audio") { + if (item.Type === 'Audio') { miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks)); @@ -284,11 +284,11 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater minutes = minutes || 1; - miscInfo.push(Math.round(minutes) + " mins"); + miscInfo.push(Math.round(minutes) + ' mins'); } } - if (item.OfficialRating && item.Type !== "Season" && item.Type !== "Episode") { + if (item.OfficialRating && item.Type !== 'Season' && item.Type !== 'Episode') { miscInfo.push({ text: item.OfficialRating, cssClass: 'mediaInfoOfficialRating' @@ -296,11 +296,11 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater } if (item.Video3DFormat) { - miscInfo.push("3D"); + miscInfo.push('3D'); } if (item.MediaType === 'Photo' && item.Width && item.Height) { - miscInfo.push(item.Width + "x" + item.Height); + miscInfo.push(item.Width + 'x' + item.Height); } if (options.container !== false && item.Type === 'Audio' && item.Container) { diff --git a/src/components/medialibrarycreator/medialibrarycreator.js b/src/components/medialibrarycreator/medialibrarycreator.js index 0146cb3500..450f5a64e6 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.js +++ b/src/components/medialibrarycreator/medialibrarycreator.js @@ -1,5 +1,5 @@ -define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionseditor/libraryoptionseditor", "globalize", "emby-toggle", "emby-input", "emby-select", "paper-icon-button-light", "listViewStyle", "formDialogStyle", "emby-button", "flexStyles"], function (loading, dialogHelper, dom, $, libraryoptionseditor, globalize) { - "use strict"; +define(['loading', 'dialogHelper', 'dom', 'jQuery', 'components/libraryoptionseditor/libraryoptionseditor', 'globalize', 'emby-toggle', 'emby-input', 'emby-select', 'paper-icon-button-light', 'listViewStyle', 'formDialogStyle', 'emby-button', 'flexStyles'], function (loading, dialogHelper, dom, $, libraryoptionseditor, globalize) { + 'use strict'; function onAddLibrary() { if (isCreating) { @@ -7,10 +7,10 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } if (pathInfos.length == 0) { - require(["alert"], function (alert) { + require(['alert'], function (alert) { alert({ - text: globalize.translate("PleaseAddAtLeastOneFolder"), - type: "error" + text: globalize.translate('PleaseAddAtLeastOneFolder'), + type: 'error' }); }); @@ -19,15 +19,15 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed isCreating = true; loading.show(); - var dlg = dom.parentWithClass(this, "dlg-librarycreator"); - var name = $("#txtValue", dlg).val(); - var type = $("#selectCollectionType", dlg).val(); + var dlg = dom.parentWithClass(this, 'dlg-librarycreator'); + var name = $('#txtValue', dlg).val(); + var type = $('#selectCollectionType', dlg).val(); - if (type == "mixed") { + if (type == 'mixed') { type = null; } - var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); + var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector('.libraryOptions')); libraryOptions.PathInfos = pathInfos; ApiClient.addVirtualFolder(name, type, currentOptions.refresh, libraryOptions).then(function () { hasChanges = true; @@ -35,8 +35,8 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed loading.hide(); dialogHelper.close(dlg); }, function () { - require(["toast"], function (toast) { - toast(globalize.translate("ErrorAddingMediaPathToVirtualFolder")); + require(['toast'], function (toast) { + toast(globalize.translate('ErrorAddingMediaPathToVirtualFolder')); }); isCreating = false; @@ -47,50 +47,50 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed function getCollectionTypeOptionsHtml(collectionTypeOptions) { return collectionTypeOptions.map(function (i) { - return '"; - }).join(""); + return ''; + }).join(''); } function initEditor(page, collectionTypeOptions) { - $("#selectCollectionType", page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change", function () { + $('#selectCollectionType', page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val('').on('change', function () { var value = this.value; - var dlg = $(this).parents(".dialog")[0]; - libraryoptionseditor.setContentType(dlg.querySelector(".libraryOptions"), value == "mixed" ? "" : value); + var dlg = $(this).parents('.dialog')[0]; + libraryoptionseditor.setContentType(dlg.querySelector('.libraryOptions'), value == 'mixed' ? '' : value); if (value) { - dlg.querySelector(".libraryOptions").classList.remove("hide"); + dlg.querySelector('.libraryOptions').classList.remove('hide'); } else { - dlg.querySelector(".libraryOptions").classList.add("hide"); + dlg.querySelector('.libraryOptions').classList.add('hide'); } - if (value != "mixed") { + if (value != 'mixed') { var index = this.selectedIndex; if (index != -1) { - var name = this.options[index].innerHTML.replace("*", "").replace("&", "&"); - $("#txtValue", dlg).val(name); + var name = this.options[index].innerHTML.replace('*', '').replace('&', '&'); + $('#txtValue', dlg).val(name); var folderOption = collectionTypeOptions.filter(function (i) { return i.value == value; })[0]; - $(".collectionTypeFieldDescription", dlg).html(folderOption.message || ""); + $('.collectionTypeFieldDescription', dlg).html(folderOption.message || ''); } } }); - page.querySelector(".btnAddFolder").addEventListener("click", onAddButtonClick); - page.querySelector(".btnSubmit").addEventListener("click", onAddLibrary); - page.querySelector(".folderList").addEventListener("click", onRemoveClick); - page.querySelector(".chkAdvanced").addEventListener("change", onToggleAdvancedChange); + page.querySelector('.btnAddFolder').addEventListener('click', onAddButtonClick); + page.querySelector('.btnSubmit').addEventListener('click', onAddLibrary); + page.querySelector('.folderList').addEventListener('click', onRemoveClick); + page.querySelector('.chkAdvanced').addEventListener('change', onToggleAdvancedChange); } function onToggleAdvancedChange() { - var dlg = dom.parentWithClass(this, "dlg-librarycreator"); - libraryoptionseditor.setAdvancedVisible(dlg.querySelector(".libraryOptions"), this.checked); + var dlg = dom.parentWithClass(this, 'dlg-librarycreator'); + libraryoptionseditor.setAdvancedVisible(dlg.querySelector('.libraryOptions'), this.checked); } function onAddButtonClick() { - var page = dom.parentWithClass(this, "dlg-librarycreator"); + var page = dom.parentWithClass(this, 'dlg-librarycreator'); - require(["directorybrowser"], function (directoryBrowser) { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ enableNetworkSharePath: true, @@ -106,30 +106,30 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } function getFolderHtml(pathInfo, index) { - var html = ""; + var html = ''; html += '
'; - html += '
'; - html += '
' + pathInfo.Path + "
"; + html += '
'; + html += '
' + pathInfo.Path + '
'; if (pathInfo.NetworkPath) { - html += '
' + pathInfo.NetworkPath + "
"; + html += '
' + pathInfo.NetworkPath + '
'; } - html += "
"; + html += '
'; html += ''; - html += "
"; + html += ''; return html; } function renderPaths(page) { - var foldersHtml = pathInfos.map(getFolderHtml).join(""); - var folderList = page.querySelector(".folderList"); + var foldersHtml = pathInfos.map(getFolderHtml).join(''); + var folderList = page.querySelector('.folderList'); folderList.innerHTML = foldersHtml; if (foldersHtml) { - folderList.classList.remove("hide"); + folderList.classList.remove('hide'); } else { - folderList.classList.add("hide"); + folderList.classList.add('hide'); } } @@ -154,14 +154,14 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } function onRemoveClick(e) { - var button = dom.parentWithClass(e.target, "btnRemovePath"); - var index = parseInt(button.getAttribute("data-index")); + var button = dom.parentWithClass(e.target, 'btnRemovePath'); + var index = parseInt(button.getAttribute('data-index')); var location = pathInfos[index].Path; var locationLower = location.toLowerCase(); pathInfos = pathInfos.filter(function (p) { return p.Path.toLowerCase() != locationLower; }); - renderPaths(dom.parentWithClass(button, "dlg-librarycreator")); + renderPaths(dom.parentWithClass(button, 'dlg-librarycreator')); } function onDialogClosed() { @@ -169,9 +169,9 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } function initLibraryOptions(dlg) { - libraryoptionseditor.embed(dlg.querySelector(".libraryOptions")).then(function () { - $("#selectCollectionType", dlg).trigger("change"); - onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced")); + libraryoptionseditor.embed(dlg.querySelector('.libraryOptions')).then(function () { + $('#selectCollectionType', dlg).trigger('change'); + onToggleAdvancedChange.call(dlg.querySelector('.chkAdvanced')); }); } @@ -182,25 +182,25 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed currentResolve = resolve; hasChanges = false; var xhr = new XMLHttpRequest(); - xhr.open("GET", "components/medialibrarycreator/medialibrarycreator.template.html", true); + xhr.open('GET', 'components/medialibrarycreator/medialibrarycreator.template.html', true); xhr.onload = function (e) { var template = this.response; var dlg = dialogHelper.createDialog({ - size: "medium-tall", + 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"); - dlg.classList.add("formDialog"); + dlg.classList.add('ui-body-a'); + dlg.classList.add('background-theme-a'); + dlg.classList.add('dlg-librarycreator'); + dlg.classList.add('formDialog'); dlg.innerHTML = globalize.translateDocument(template); initEditor(dlg, options.collectionTypeOptions); - dlg.addEventListener("close", onDialogClosed); + dlg.addEventListener('close', onDialogClosed); dialogHelper.open(dlg); - dlg.querySelector(".btnCancel").addEventListener("click", function () { + dlg.querySelector('.btnCancel').addEventListener('click', function () { dialogHelper.close(dlg); }); pathInfos = []; diff --git a/src/components/medialibraryeditor/medialibraryeditor.js b/src/components/medialibraryeditor/medialibraryeditor.js index 55c2e150c6..3141509629 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.js +++ b/src/components/medialibraryeditor/medialibraryeditor.js @@ -1,5 +1,5 @@ -define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionseditor/libraryoptionseditor", "globalize", "emby-button", "listViewStyle", "paper-icon-button-light", "formDialogStyle", "emby-toggle", "flexStyles"], function (jQuery, loading, dialogHelper, dom, libraryoptionseditor, globalize) { - "use strict"; +define(['jQuery', 'loading', 'dialogHelper', 'dom', 'components/libraryoptionseditor/libraryoptionseditor', 'globalize', 'emby-button', 'listViewStyle', 'paper-icon-button-light', 'formDialogStyle', 'emby-toggle', 'flexStyles'], function (jQuery, loading, dialogHelper, dom, libraryoptionseditor, globalize) { + 'use strict'; function onEditLibrary() { if (isCreating) { @@ -8,8 +8,8 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed isCreating = true; loading.show(); - var dlg = dom.parentWithClass(this, "dlg-libraryeditor"); - var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); + var dlg = dom.parentWithClass(this, 'dlg-libraryeditor'); + var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector('.libraryOptions')); libraryOptions = Object.assign(currentOptions.library.LibraryOptions || {}, libraryOptions); ApiClient.updateVirtualFolderOptions(currentOptions.library.ItemId, libraryOptions).then(function () { hasChanges = true; @@ -30,8 +30,8 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed hasChanges = true; refreshLibraryFromServer(page); }, function () { - require(["toast"], function (toast) { - toast(globalize.translate("ErrorAddingMediaPathToVirtualFolder")); + require(['toast'], function (toast) { + toast(globalize.translate('ErrorAddingMediaPathToVirtualFolder')); }); }); } @@ -45,8 +45,8 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed hasChanges = true; refreshLibraryFromServer(page); }, function () { - require(["toast"], function (toast) { - toast(globalize.translate("ErrorAddingMediaPathToVirtualFolder")); + require(['toast'], function (toast) { + toast(globalize.translate('ErrorAddingMediaPathToVirtualFolder')); }); }); } @@ -55,20 +55,20 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed var button = btnRemovePath; var virtualFolder = currentOptions.library; - require(["confirm"], function (confirm) { + require(['confirm'], function (confirm) { confirm({ - title: globalize.translate("HeaderRemoveMediaLocation"), - text: globalize.translate("MessageConfirmRemoveMediaLocation"), - confirmText: globalize.translate("ButtonDelete"), - primary: "delete" + title: globalize.translate('HeaderRemoveMediaLocation'), + text: globalize.translate('MessageConfirmRemoveMediaLocation'), + confirmText: globalize.translate('ButtonDelete'), + primary: 'delete' }).then(function () { var refreshAfterChange = currentOptions.refresh; ApiClient.removeMediaPath(virtualFolder.Name, location, refreshAfterChange).then(function () { hasChanges = true; - refreshLibraryFromServer(dom.parentWithClass(button, "dlg-libraryeditor")); + refreshLibraryFromServer(dom.parentWithClass(button, 'dlg-libraryeditor')); }, function () { - require(["toast"], function (toast) { - toast(globalize.translate("DefaultErrorMessage")); + require(['toast'], function (toast) { + toast(globalize.translate('DefaultErrorMessage')); }); }); }); @@ -76,39 +76,39 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed } function onListItemClick(e) { - var listItem = dom.parentWithClass(e.target, "listItem"); + var listItem = dom.parentWithClass(e.target, 'listItem'); if (listItem) { - var index = parseInt(listItem.getAttribute("data-index")); + var index = parseInt(listItem.getAttribute('data-index')); var pathInfos = (currentOptions.library.LibraryOptions || {}).PathInfos || []; var pathInfo = null == index ? {} : pathInfos[index] || {}; var originalPath = pathInfo.Path || (null == index ? null : currentOptions.library.Locations[index]); - var btnRemovePath = dom.parentWithClass(e.target, "btnRemovePath"); + var btnRemovePath = dom.parentWithClass(e.target, 'btnRemovePath'); if (btnRemovePath) { onRemoveClick(btnRemovePath, originalPath); return; } - showDirectoryBrowser(dom.parentWithClass(listItem, "dlg-libraryeditor"), originalPath, pathInfo.NetworkPath); + showDirectoryBrowser(dom.parentWithClass(listItem, 'dlg-libraryeditor'), originalPath, pathInfo.NetworkPath); } } function getFolderHtml(pathInfo, index) { - var html = ""; + var html = ''; html += '
'; - html += '
'; + html += '
'; html += '

'; html += pathInfo.Path; - html += "

"; + html += ''; if (pathInfo.NetworkPath) { - html += '
' + pathInfo.NetworkPath + "
"; + html += '
' + pathInfo.NetworkPath + '
'; } - html += "
"; + html += '
'; html += ''; - html += "
"; + html += ''; return html; } @@ -137,20 +137,20 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed } if (options.library.CollectionType === 'boxsets') { - page.querySelector(".folders").classList.add("hide"); + page.querySelector('.folders').classList.add('hide'); } else { - page.querySelector(".folders").classList.remove("hide"); + page.querySelector('.folders').classList.remove('hide'); } - page.querySelector(".folderList").innerHTML = pathInfos.map(getFolderHtml).join(""); + page.querySelector('.folderList').innerHTML = pathInfos.map(getFolderHtml).join(''); } function onAddButtonClick() { - showDirectoryBrowser(dom.parentWithClass(this, "dlg-libraryeditor")); + showDirectoryBrowser(dom.parentWithClass(this, 'dlg-libraryeditor')); } function showDirectoryBrowser(context, originalPath, networkPath) { - require(["directorybrowser"], function (directoryBrowser) { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ enableNetworkSharePath: true, @@ -173,18 +173,18 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed } function onToggleAdvancedChange() { - var dlg = dom.parentWithClass(this, "dlg-libraryeditor"); - libraryoptionseditor.setAdvancedVisible(dlg.querySelector(".libraryOptions"), this.checked); + var dlg = dom.parentWithClass(this, 'dlg-libraryeditor'); + libraryoptionseditor.setAdvancedVisible(dlg.querySelector('.libraryOptions'), this.checked); } function initEditor(dlg, options) { renderLibrary(dlg, options); - dlg.querySelector(".btnAddFolder").addEventListener("click", onAddButtonClick); - dlg.querySelector(".folderList").addEventListener("click", onListItemClick); - dlg.querySelector(".chkAdvanced").addEventListener("change", onToggleAdvancedChange); - dlg.querySelector(".btnSubmit").addEventListener("click", onEditLibrary); - libraryoptionseditor.embed(dlg.querySelector(".libraryOptions"), options.library.CollectionType, options.library.LibraryOptions).then(function () { - onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced")); + dlg.querySelector('.btnAddFolder').addEventListener('click', onAddButtonClick); + dlg.querySelector('.folderList').addEventListener('click', onListItemClick); + dlg.querySelector('.chkAdvanced').addEventListener('change', onToggleAdvancedChange); + dlg.querySelector('.btnSubmit').addEventListener('click', onEditLibrary); + libraryoptionseditor.embed(dlg.querySelector('.libraryOptions'), options.library.CollectionType, options.library.LibraryOptions).then(function () { + onToggleAdvancedChange.call(dlg.querySelector('.chkAdvanced')); }); } @@ -199,26 +199,26 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed currentDeferred = deferred; hasChanges = false; var xhr = new XMLHttpRequest(); - xhr.open("GET", "components/medialibraryeditor/medialibraryeditor.template.html", true); + xhr.open('GET', 'components/medialibraryeditor/medialibraryeditor.template.html', true); xhr.onload = function (e) { var template = this.response; var dlg = dialogHelper.createDialog({ - size: "medium-tall", + size: 'medium-tall', modal: false, removeOnClose: true, scrollY: false }); - dlg.classList.add("dlg-libraryeditor"); - dlg.classList.add("ui-body-a"); - dlg.classList.add("background-theme-a"); - dlg.classList.add("formDialog"); + dlg.classList.add('dlg-libraryeditor'); + dlg.classList.add('ui-body-a'); + dlg.classList.add('background-theme-a'); + dlg.classList.add('formDialog'); dlg.innerHTML = globalize.translateDocument(template); - dlg.querySelector(".formDialogHeaderTitle").innerHTML = options.library.Name; + dlg.querySelector('.formDialogHeaderTitle').innerHTML = options.library.Name; initEditor(dlg, options); - dlg.addEventListener("close", onDialogClosed); + dlg.addEventListener('close', onDialogClosed); dialogHelper.open(dlg); - dlg.querySelector(".btnCancel").addEventListener("click", function () { + dlg.querySelector('.btnCancel').addEventListener('click', function () { dialogHelper.close(dlg); }); refreshLibraryFromServer(dlg); diff --git a/src/components/metadataeditor/metadataeditor.js b/src/components/metadataeditor/metadataeditor.js index db81423cf0..7f1e50b5ff 100644 --- a/src/components/metadataeditor/metadataeditor.js +++ b/src/components/metadataeditor/metadataeditor.js @@ -142,9 +142,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi Status: form.querySelector('#selectStatus').value, AirDays: getSelectedAirDays(form), AirTime: form.querySelector('#txtAirTime').value, - Genres: getListValues(form.querySelector("#listGenres")), - Tags: getListValues(form.querySelector("#listTags")), - Studios: getListValues(form.querySelector("#listStudios")).map(function (element) { + Genres: getListValues(form.querySelector('#listGenres')), + Tags: getListValues(form.querySelector('#listTags')), + Studios: getListValues(form.querySelector('#listStudios')).map(function (element) { return { Name: element }; }), @@ -158,7 +158,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi OfficialRating: form.querySelector('#selectOfficialRating').value, CustomRating: form.querySelector('#selectCustomRating').value, People: currentItem.People, - LockData: form.querySelector("#chkLockData").checked, + LockData: form.querySelector('#chkLockData').checked, LockedFields: Array.prototype.filter.call(form.querySelectorAll('.selectLockedField'), function (c) { return !c.checked; }).map(function (c) { @@ -177,14 +177,14 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi item.PreferredMetadataLanguage = form.querySelector('#selectLanguage').value; item.PreferredMetadataCountryCode = form.querySelector('#selectCountry').value; - if (currentItem.Type === "Person") { + if (currentItem.Type === 'Person') { var placeOfBirth = form.querySelector('#txtPlaceOfBirth').value; item.ProductionLocations = placeOfBirth ? [placeOfBirth] : []; } - if (currentItem.Type === "Series") { + if (currentItem.Type === 'Series') { // 600000000 var seriesRuntime = form.querySelector('#txtSeriesRuntime').value; @@ -356,7 +356,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi form.removeEventListener('submit', onSubmit); form.addEventListener('submit', onSubmit); - context.querySelector("#btnAddPerson").addEventListener('click', function (event, data) { + context.querySelector('#btnAddPerson').addEventListener('click', function (event, data) { editPerson(context, {}, -1); }); @@ -403,7 +403,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function populateCountries(select, allCountries) { - var html = ""; + var html = ''; html += ""; @@ -411,7 +411,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi var culture = allCountries[i]; - html += ""; + html += "'; } select.innerHTML = html; @@ -419,7 +419,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function populateLanguages(select, languages) { - var html = ""; + var html = ''; html += ""; @@ -427,7 +427,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi var culture = languages[i]; - html += ""; + html += "'; } select.innerHTML = html; @@ -462,12 +462,12 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi var idInfo = externalIds[i]; - var id = "txt1" + idInfo.Key; + var id = 'txt1' + idInfo.Key; var formatString = idInfo.UrlFormatString || ''; var fullName = idInfo.Name; if (idInfo.Type) { - fullName = idInfo.Name + " " + globalize.translate(idInfo.Type); + fullName = idInfo.Name + ' ' + globalize.translate(idInfo.Type); } var labelText = globalize.translate('LabelDynamicExternalId', fullName); @@ -544,37 +544,37 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi hideElement('#fldPath', context); } - if (item.Type === "Series" || item.Type === "Movie" || item.Type === "Trailer") { + if (item.Type === 'Series' || item.Type === 'Movie' || item.Type === 'Trailer') { showElement('#fldOriginalName', context); } else { hideElement('#fldOriginalName', context); } - if (item.Type === "Series") { + if (item.Type === 'Series') { showElement('#fldSeriesRuntime', context); } else { hideElement('#fldSeriesRuntime', context); } - if (item.Type === "Series" || item.Type === "Person") { + if (item.Type === 'Series' || item.Type === 'Person') { showElement('#fldEndDate', context); } else { hideElement('#fldEndDate', context); } - if (item.Type === "MusicAlbum") { + if (item.Type === 'MusicAlbum') { showElement('#albumAssociationMessage', context); } else { hideElement('#albumAssociationMessage', context); } - if (item.Type === "Movie" || item.Type === "Trailer") { + if (item.Type === 'Movie' || item.Type === 'Trailer') { showElement('#fldCriticRating', context); } else { hideElement('#fldCriticRating', context); } - if (item.Type === "Series") { + if (item.Type === 'Series') { showElement('#fldStatus', context); showElement('#fldAirDays', context); showElement('#fldAirTime', context); @@ -584,19 +584,19 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi hideElement('#fldAirTime', context); } - if (item.MediaType === "Video" && item.Type !== "TvChannel") { + if (item.MediaType === 'Video' && item.Type !== 'TvChannel') { showElement('#fld3dFormat', context); } else { hideElement('#fld3dFormat', context); } - if (item.Type === "Audio") { + if (item.Type === 'Audio') { showElement('#fldAlbumArtist', context); } else { hideElement('#fldAlbumArtist', context); } - if (item.Type === "Audio" || item.Type === "MusicVideo") { + if (item.Type === 'Audio' || item.Type === 'MusicVideo') { showElement('#fldArtist', context); showElement('#fldAlbum', context); } else { @@ -604,29 +604,29 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi hideElement('#fldAlbum', context); } - if (item.Type === "Episode" && item.ParentIndexNumber === 0) { + if (item.Type === 'Episode' && item.ParentIndexNumber === 0) { showElement('#collapsibleSpecialEpisodeInfo', context); } else { hideElement('#collapsibleSpecialEpisodeInfo', context); } - if (item.Type === "Person" || - item.Type === "Genre" || - item.Type === "Studio" || - item.Type === "MusicGenre" || - item.Type === "TvChannel" || - item.Type === "Book") { + if (item.Type === 'Person' || + item.Type === 'Genre' || + item.Type === 'Studio' || + item.Type === 'MusicGenre' || + item.Type === 'TvChannel' || + item.Type === 'Book') { hideElement('#peopleCollapsible', context); } else { showElement('#peopleCollapsible', context); } - if (item.Type === "Person" || item.Type === "Genre" || item.Type === "Studio" || item.Type === "MusicGenre" || item.Type === "TvChannel") { + if (item.Type === 'Person' || item.Type === 'Genre' || item.Type === 'Studio' || item.Type === 'MusicGenre' || item.Type === 'TvChannel') { hideElement('#fldCommunityRating', context); hideElement('#genresCollapsible', context); hideElement('#studiosCollapsible', context); - if (item.Type === "TvChannel") { + if (item.Type === 'TvChannel') { showElement('#fldOfficialRating', context); } else { hideElement('#fldOfficialRating', context); @@ -642,7 +642,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi showElement('#tagsCollapsible', context); - if (item.Type === "TvChannel") { + if (item.Type === 'TvChannel') { hideElement('#metadataSettingsCollapsible', context); hideElement('#fldPremiereDate', context); hideElement('#fldDateAdded', context); @@ -654,39 +654,39 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi showElement('#fldYear', context); } - if (item.Type === "TvChannel") { + if (item.Type === 'TvChannel') { hideElement('.overviewContainer', context); } else { showElement('.overviewContainer', context); } - if (item.Type === "Person") { + if (item.Type === 'Person') { //todo context.querySelector('#txtProductionYear').label(globalize.translate('LabelBirthYear')); - context.querySelector("#txtPremiereDate").label(globalize.translate('LabelBirthDate')); - context.querySelector("#txtEndDate").label(globalize.translate('LabelDeathDate')); + context.querySelector('#txtPremiereDate').label(globalize.translate('LabelBirthDate')); + context.querySelector('#txtEndDate').label(globalize.translate('LabelDeathDate')); showElement('#fldPlaceOfBirth'); } else { context.querySelector('#txtProductionYear').label(globalize.translate('LabelYear')); - context.querySelector("#txtPremiereDate").label(globalize.translate('LabelReleaseDate')); - context.querySelector("#txtEndDate").label(globalize.translate('LabelEndDate')); + context.querySelector('#txtPremiereDate').label(globalize.translate('LabelReleaseDate')); + context.querySelector('#txtEndDate').label(globalize.translate('LabelEndDate')); hideElement('#fldPlaceOfBirth'); } - if (item.MediaType === "Video" && item.Type !== "TvChannel") { + if (item.MediaType === 'Video' && item.Type !== 'TvChannel') { showElement('#fldOriginalAspectRatio'); } else { hideElement('#fldOriginalAspectRatio'); } - if (item.Type === "Audio" || item.Type === "Episode" || item.Type === "Season") { + if (item.Type === 'Audio' || item.Type === 'Episode' || item.Type === 'Season') { showElement('#fldIndexNumber'); - if (item.Type === "Episode") { + if (item.Type === 'Episode') { context.querySelector('#txtIndexNumber').label(globalize.translate('LabelEpisodeNumber')); - } else if (item.Type === "Season") { + } else if (item.Type === 'Season') { context.querySelector('#txtIndexNumber').label(globalize.translate('LabelSeasonNumber')); - } else if (item.Type === "Audio") { + } else if (item.Type === 'Audio') { context.querySelector('#txtIndexNumber').label(globalize.translate('LabelTrackNumber')); } else { context.querySelector('#txtIndexNumber').label(globalize.translate('LabelNumber')); @@ -695,12 +695,12 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi hideElement('#fldIndexNumber'); } - if (item.Type === "Audio" || item.Type === "Episode") { + if (item.Type === 'Audio' || item.Type === 'Episode') { showElement('#fldParentIndexNumber'); - if (item.Type === "Episode") { + if (item.Type === 'Episode') { context.querySelector('#txtParentIndexNumber').label(globalize.translate('LabelSeasonNumber')); - } else if (item.Type === "Audio") { + } else if (item.Type === 'Audio') { context.querySelector('#txtParentIndexNumber').label(globalize.translate('LabelDiscNumber')); } else { context.querySelector('#txtParentIndexNumber').label(globalize.translate('LabelParentNumber')); @@ -709,12 +709,12 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi hideElement('#fldParentIndexNumber', context); } - if (item.Type === "BoxSet") { + if (item.Type === 'BoxSet') { showElement('#fldDisplayOrder', context); hideElement('.seriesDisplayOrderDescription', context); context.querySelector('#selectDisplayOrder').innerHTML = ''; - } else if (item.Type === "Series") { + } else if (item.Type === 'Series') { showElement('#fldDisplayOrder', context); showElement('.seriesDisplayOrderDescription', context); @@ -731,19 +731,19 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi populateRatings(parentalRatingOptions, select, item.OfficialRating); - select.value = item.OfficialRating || ""; + select.value = item.OfficialRating || ''; select = context.querySelector('#selectCustomRating'); populateRatings(parentalRatingOptions, select, item.CustomRating); - select.value = item.CustomRating || ""; + select.value = item.CustomRating || ''; var selectStatus = context.querySelector('#selectStatus'); populateStatus(selectStatus); - selectStatus.value = item.Status || ""; + selectStatus.value = item.Status || ''; - context.querySelector('#select3dFormat', context).value = item.Video3DFormat || ""; + context.querySelector('#select3dFormat', context).value = item.Video3DFormat || ''; Array.prototype.forEach.call(context.querySelectorAll('.chkAirDay', context), function (el) { el.checked = (item.AirDays || []).indexOf(el.getAttribute('data-day')) !== -1; @@ -759,7 +759,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi populateListView(context.querySelector('#listTags'), item.Tags); var lockData = (item.LockData || false); - var chkLockData = context.querySelector("#chkLockData"); + var chkLockData = context.querySelector('#chkLockData'); chkLockData.checked = lockData; if (chkLockData.checked) { hideElement('.providerSettingsContainer', context); @@ -769,23 +769,23 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi fillMetadataSettings(context, item, item.LockedFields); context.querySelector('#txtPath').value = item.Path || ''; - context.querySelector('#txtName').value = item.Name || ""; - context.querySelector('#txtOriginalName').value = item.OriginalTitle || ""; + context.querySelector('#txtName').value = item.Name || ''; + context.querySelector('#txtOriginalName').value = item.OriginalTitle || ''; context.querySelector('#txtOverview').value = item.Overview || ''; context.querySelector('#txtTagline').value = (item.Taglines && item.Taglines.length ? item.Taglines[0] : ''); - context.querySelector('#txtSortName').value = item.ForcedSortName || ""; - context.querySelector('#txtCommunityRating').value = item.CommunityRating || ""; + context.querySelector('#txtSortName').value = item.ForcedSortName || ''; + context.querySelector('#txtCommunityRating').value = item.CommunityRating || ''; - context.querySelector('#txtCriticRating').value = item.CriticRating || ""; + context.querySelector('#txtCriticRating').value = item.CriticRating || ''; context.querySelector('#txtIndexNumber').value = item.IndexNumber == null ? '' : item.IndexNumber; context.querySelector('#txtParentIndexNumber').value = item.ParentIndexNumber == null ? '' : item.ParentIndexNumber; - context.querySelector('#txtAirsBeforeSeason').value = ('AirsBeforeSeasonNumber' in item) ? item.AirsBeforeSeasonNumber : ""; - context.querySelector('#txtAirsAfterSeason').value = ('AirsAfterSeasonNumber' in item) ? item.AirsAfterSeasonNumber : ""; - context.querySelector('#txtAirsBeforeEpisode').value = ('AirsBeforeEpisodeNumber' in item) ? item.AirsBeforeEpisodeNumber : ""; + context.querySelector('#txtAirsBeforeSeason').value = ('AirsBeforeSeasonNumber' in item) ? item.AirsBeforeSeasonNumber : ''; + context.querySelector('#txtAirsAfterSeason').value = ('AirsAfterSeasonNumber' in item) ? item.AirsAfterSeasonNumber : ''; + context.querySelector('#txtAirsBeforeEpisode').value = ('AirsBeforeEpisodeNumber' in item) ? item.AirsBeforeEpisodeNumber : ''; - context.querySelector('#txtAlbum').value = item.Album || ""; + context.querySelector('#txtAlbum').value = item.Album || ''; context.querySelector('#txtAlbumArtist').value = (item.AlbumArtists || []).map(function (a) { return a.Name; @@ -839,17 +839,17 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi context.querySelector('#txtEndDate').value = ''; } - context.querySelector('#txtProductionYear').value = item.ProductionYear || ""; + context.querySelector('#txtProductionYear').value = item.ProductionYear || ''; context.querySelector('#txtAirTime').value = item.AirTime || ''; var placeofBirth = item.ProductionLocations && item.ProductionLocations.length ? item.ProductionLocations[0] : ''; context.querySelector('#txtPlaceOfBirth').value = placeofBirth; - context.querySelector('#txtOriginalAspectRatio').value = item.AspectRatio || ""; + context.querySelector('#txtOriginalAspectRatio').value = item.AspectRatio || ''; - context.querySelector('#selectLanguage').value = item.PreferredMetadataLanguage || ""; - context.querySelector('#selectCountry').value = item.PreferredMetadataCountryCode || ""; + context.querySelector('#selectLanguage').value = item.PreferredMetadataLanguage || ''; + context.querySelector('#selectCountry').value = item.PreferredMetadataCountryCode || ''; if (item.RunTimeTicks) { @@ -857,13 +857,13 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi context.querySelector('#txtSeriesRuntime').value = Math.round(minutes); } else { - context.querySelector('#txtSeriesRuntime', context).value = ""; + context.querySelector('#txtSeriesRuntime', context).value = ''; } } function populateRatings(allParentalRatings, select, currentValue) { - var html = ""; + var html = ''; html += ""; @@ -893,18 +893,18 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi rating = ratings[i]; - html += ""; + html += "'; } select.innerHTML = html; } function populateStatus(select) { - var html = ""; + var html = ''; html += ""; - html += ""; - html += ""; + html += "'; + html += "'; select.innerHTML = html; } @@ -999,30 +999,30 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi lockedFields = lockedFields || []; var lockedFieldsList = [ - { name: globalize.translate('Name'), value: "Name" }, - { name: globalize.translate('Overview'), value: "Overview" }, - { name: globalize.translate('Genres'), value: "Genres" }, - { name: globalize.translate('ParentalRating'), value: "OfficialRating" }, - { name: globalize.translate('People'), value: "Cast" } + { name: globalize.translate('Name'), value: 'Name' }, + { name: globalize.translate('Overview'), value: 'Overview' }, + { name: globalize.translate('Genres'), value: 'Genres' }, + { name: globalize.translate('ParentalRating'), value: 'OfficialRating' }, + { name: globalize.translate('People'), value: 'Cast' } ]; - if (item.Type === "Person") { - lockedFieldsList.push({ name: globalize.translate('BirthLocation'), value: "ProductionLocations" }); + if (item.Type === 'Person') { + lockedFieldsList.push({ name: globalize.translate('BirthLocation'), value: 'ProductionLocations' }); } else { - lockedFieldsList.push({ name: globalize.translate('ProductionLocations'), value: "ProductionLocations" }); + lockedFieldsList.push({ name: globalize.translate('ProductionLocations'), value: 'ProductionLocations' }); } - if (item.Type === "Series") { - lockedFieldsList.push({ name: globalize.translate('Runtime'), value: "Runtime" }); + if (item.Type === 'Series') { + lockedFieldsList.push({ name: globalize.translate('Runtime'), value: 'Runtime' }); } - lockedFieldsList.push({ name: globalize.translate('Studios'), value: "Studios" }); - lockedFieldsList.push({ name: globalize.translate('Tags'), value: "Tags" }); + lockedFieldsList.push({ name: globalize.translate('Studios'), value: 'Studios' }); + lockedFieldsList.push({ name: globalize.translate('Tags'), value: 'Tags' }); var html = ''; - html += "

" + globalize.translate('HeaderEnabledFields') + "

"; - html += "

" + globalize.translate('HeaderEnabledFieldsHelp') + "

"; + html += '

' + globalize.translate('HeaderEnabledFields') + '

'; + html += '

' + globalize.translate('HeaderEnabledFieldsHelp') + '

'; html += getLockedFieldsHtml(lockedFieldsList, lockedFields); container.innerHTML = html; } @@ -1051,7 +1051,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi setFieldVisibilities(context, item); fillItemInfo(context, item, metadataEditorInfo.ParentalRatingOptions); - if (item.MediaType === "Video" && item.Type !== "Episode" && item.Type !== "TvChannel") { + if (item.MediaType === 'Video' && item.Type !== 'Episode' && item.Type !== 'TvChannel') { showElement('#fldTagline', context); } else { hideElement('#fldTagline', context); diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index 67d2f4d473..70a0924bc1 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 += '

'; - const moreIcon = "more_horiz"; + const moreIcon = 'more_horiz'; 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,58 +190,58 @@ 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", - icon: "check_box" + name: globalize.translate('MarkPlayed'), + id: 'markplayed', + icon: 'check_box' }); menuItems.push({ - name: globalize.translate("MarkUnplayed"), - id: "markunplayed", - icon: "check_box_outline_blank" + name: globalize.translate('MarkUnplayed'), + id: 'markunplayed', + icon: 'check_box_outline_blank' }); menuItems.push({ - name: globalize.translate("RefreshMetadata"), - id: "refresh", - icon: "refresh" + name: globalize.translate('RefreshMetadata'), + id: 'refresh', + icon: 'refresh' }); require(['actionsheet'], function (actionsheet) { @@ -253,8 +253,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 @@ -263,8 +263,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 @@ -273,30 +273,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 @@ -321,7 +321,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); @@ -337,9 +337,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; @@ -349,8 +349,8 @@ define(["browser", "appStorage", "apphost", "loading", "connectionManager", "glo apiClient.ajax({ - type: "POST", - url: apiClient.getUrl("Videos/MergeVersions", { Ids: selection.join(",") }) + type: 'POST', + url: apiClient.getUrl('Videos/MergeVersions', { Ids: selection.join(',') }) }).then(function () { @@ -362,8 +362,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]); } @@ -379,9 +379,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); } @@ -393,7 +393,7 @@ define(["browser", "appStorage", "apphost", "loading", "connectionManager", "glo } } - document.addEventListener("viewbeforehide", hideSelections); + document.addEventListener('viewbeforehide', hideSelections); return function (options) { @@ -403,7 +403,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) { @@ -440,7 +440,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) { @@ -509,7 +509,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) { @@ -522,27 +522,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 }); } @@ -551,38 +551,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, { // 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 }); }; diff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js index 4b00171aee..3ac891b5e7 100644 --- a/src/components/notifications/notifications.js +++ b/src/components/notifications/notifications.js @@ -6,7 +6,7 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir document.removeEventListener('keydown', onOneDocumentClick); // don't request notification permissions if they're already granted or denied - if (window.Notification && window.Notification.permission === "default") { + if (window.Notification && window.Notification.permission === 'default') { /* eslint-disable-next-line compat/compat */ Notification.requestPermission(); } @@ -97,10 +97,10 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir } var notification = { - title: "New " + item.Type, + title: 'New ' + item.Type, body: body, vibrate: true, - tag: "newItem" + item.Id, + tag: 'newItem' + item.Id, data: { //options: { // url: LibraryBrowser.getHref(item) @@ -115,7 +115,7 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir notification.icon = apiClient.getScaledImageUrl(item.Id, { width: 80, tag: imageTags.Primary, - type: "Primary" + type: 'Primary' }); } @@ -139,11 +139,11 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir Recursive: true, Limit: 3, - Filters: "IsNotFolder", - SortBy: "DateCreated", - SortOrder: "Descending", + Filters: 'IsNotFolder', + SortBy: 'DateCreated', + SortOrder: 'Descending', Ids: newItems.join(','), - MediaTypes: "Audio,Video", + MediaTypes: 'Audio,Video', EnableTotalRecordCount: false }).then(function (result) { @@ -171,7 +171,7 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir } var notification = { - tag: "install" + installation.Id, + tag: 'install' + installation.Id, data: {} }; @@ -216,25 +216,25 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir }); events.on(serverNotifications, 'PackageInstallationCompleted', function (e, apiClient, data) { - showPackageInstallNotification(apiClient, data, "completed"); + showPackageInstallNotification(apiClient, data, 'completed'); }); events.on(serverNotifications, 'PackageInstallationFailed', function (e, apiClient, data) { - showPackageInstallNotification(apiClient, data, "failed"); + showPackageInstallNotification(apiClient, data, 'failed'); }); events.on(serverNotifications, 'PackageInstallationCancelled', function (e, apiClient, data) { - showPackageInstallNotification(apiClient, data, "cancelled"); + showPackageInstallNotification(apiClient, data, 'cancelled'); }); events.on(serverNotifications, 'PackageInstalling', function (e, apiClient, data) { - showPackageInstallNotification(apiClient, data, "progress"); + showPackageInstallNotification(apiClient, data, 'progress'); }); events.on(serverNotifications, 'ServerShuttingDown', function (e, apiClient, data) { var serverId = apiClient.serverInfo().Id; var notification = { - tag: "restart" + serverId, + tag: 'restart' + serverId, title: globalize.translate('ServerNameIsShuttingDown', apiClient.serverInfo().Name) }; showNotification(notification, 0, apiClient); @@ -243,7 +243,7 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir events.on(serverNotifications, 'ServerRestarting', function (e, apiClient, data) { var serverId = apiClient.serverInfo().Id; var notification = { - tag: "restart" + serverId, + tag: 'restart' + serverId, title: globalize.translate('ServerNameIsRestarting', apiClient.serverInfo().Name) }; showNotification(notification, 0, apiClient); @@ -253,7 +253,7 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir var serverId = apiClient.serverInfo().Id; var notification = { - tag: "restart" + serverId, + tag: 'restart' + serverId, title: globalize.translate('PleaseRestartServerName', apiClient.serverInfo().Name) }; diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 0b369f1f3c..546029a982 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -368,7 +368,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', var timeText = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks); if (runtimeTicks) { - timeText += " / " + datetime.getDisplayRunningTime(runtimeTicks); + timeText += ' / ' + datetime.getDisplayRunningTime(runtimeTicks); } currentTimeElement.innerHTML = timeText; @@ -440,7 +440,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } options = options || {}; - options.type = options.type || "Primary"; + options.type = options.type || 'Primary'; if (options.type === 'Primary') { @@ -478,7 +478,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } options = options || {}; - options.type = options.type || "Primary"; + options.type = options.type || 'Primary'; if (item.ImageTags && item.ImageTags[options.type]) { diff --git a/src/components/photoplayer/plugin.js b/src/components/photoplayer/plugin.js index 06d2e3b391..4dc00809dc 100644 --- a/src/components/photoplayer/plugin.js +++ b/src/components/photoplayer/plugin.js @@ -1,5 +1,5 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackManager', 'appRouter', 'appSettings', 'connectionManager'], function (browser, require, events, appHost, loading, dom, playbackManager, appRouter, appSettings, connectionManager) { - "use strict"; + 'use strict'; function PhotoPlayer() { diff --git a/src/components/playback/experimentalwarnings.js b/src/components/playback/experimentalwarnings.js index 02a7b82caf..632e38208c 100644 --- a/src/components/playback/experimentalwarnings.js +++ b/src/components/playback/experimentalwarnings.js @@ -1,5 +1,5 @@ define(['connectionManager', 'globalize', 'userSettings', 'apphost'], function (connectionManager, globalize, userSettings, appHost) { - "use strict"; + 'use strict'; function getRequirePromise(deps) { @@ -44,15 +44,15 @@ define(['connectionManager', 'globalize', 'userSettings', 'apphost'], function ( } function showBlurayMessage() { - return showMessage(globalize.translate("UnsupportedPlayback"), 'blurayexpirementalinfo', 'nativeblurayplayback'); + return showMessage(globalize.translate('UnsupportedPlayback'), 'blurayexpirementalinfo', 'nativeblurayplayback'); } function showDvdMessage() { - return showMessage(globalize.translate("UnsupportedPlayback"), 'dvdexpirementalinfo', 'nativedvdplayback'); + return showMessage(globalize.translate('UnsupportedPlayback'), 'dvdexpirementalinfo', 'nativedvdplayback'); } function showIsoMessage() { - return showMessage(globalize.translate("UnsupportedPlayback"), 'isoexpirementalinfo', 'nativeisoplayback'); + return showMessage(globalize.translate('UnsupportedPlayback'), 'isoexpirementalinfo', 'nativeisoplayback'); } function ExpirementalPlaybackWarnings() { diff --git a/src/components/playback/mediasession.js b/src/components/playback/mediasession.js index c03420c85a..937f08dbfe 100644 --- a/src/components/playback/mediasession.js +++ b/src/components/playback/mediasession.js @@ -1,5 +1,5 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], function (playbackManager, nowPlayingHelper, events, connectionManager) { - "use strict"; + 'use strict'; // no support for mediaSession if (!navigator.mediaSession && !window.NativeShell) { @@ -18,7 +18,7 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f } options = options || {}; - options.type = options.type || "Primary"; + options.type = options.type || 'Primary'; if (options.type === 'Primary') { @@ -52,7 +52,7 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f function imageUrl(item, options) { options = options || {}; - options.type = options.type || "Primary"; + options.type = options.type || 'Primary'; if (item.ImageTags && item.ImageTags[options.type]) { diff --git a/src/components/playback/nowplayinghelper.js b/src/components/playback/nowplayinghelper.js index b1af977ab0..9bba23c294 100644 --- a/src/components/playback/nowplayinghelper.js +++ b/src/components/playback/nowplayinghelper.js @@ -18,10 +18,10 @@ define([], function () { if (nowPlayingItem.MediaType === 'Video') { if (nowPlayingItem.IndexNumber != null) { - topText = nowPlayingItem.IndexNumber + " - " + topText; + topText = nowPlayingItem.IndexNumber + ' - ' + topText; } if (nowPlayingItem.ParentIndexNumber != null) { - topText = nowPlayingItem.ParentIndexNumber + "." + topText; + topText = nowPlayingItem.ParentIndexNumber + '.' + topText; } } diff --git a/src/components/playback/playaccessvalidation.js b/src/components/playback/playaccessvalidation.js index 46a6f7546c..5148d2b821 100644 --- a/src/components/playback/playaccessvalidation.js +++ b/src/components/playback/playaccessvalidation.js @@ -1,5 +1,5 @@ define(['connectionManager', 'globalize'], function (connectionManager, globalize) { - "use strict"; + 'use strict'; function getRequirePromise(deps) { return new Promise(function (resolve, reject) { diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 0312312858..ee85f9acb1 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -128,8 +128,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } else { query.Limit = query.Limit || 300; - query.Fields = "Chapters"; - query.ExcludeLocationTypes = "Virtual"; + query.Fields = 'Chapters'; + query.ExcludeLocationTypes = 'Virtual'; query.EnableTotalRecordCount = false; query.CollapseBoxSetItems = false; @@ -164,7 +164,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla function backdropImageUrl(apiClient, item, options) { options = options || {}; - options.type = options.type || "Backdrop"; + options.type = options.type || 'Backdrop'; // If not resizing, get the original image if (!options.maxWidth && !options.width && !options.maxHeight && !options.height) { @@ -221,15 +221,15 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function getParam(name, url) { - name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); - var regexS = "[\\?&]" + name + "=([^&#]*)"; - var regex = new RegExp(regexS, "i"); + name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); + var regexS = '[\\?&]' + name + '=([^&#]*)'; + var regex = new RegExp(regexS, 'i'); var results = regex.exec(url); if (results == null) { - return ""; + return ''; } else { - return decodeURIComponent(results[1].replace(/\+/g, " ")); + return decodeURIComponent(results[1].replace(/\+/g, ' ')); } } @@ -616,8 +616,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla url: apiClient.getUrl('LiveStreams/Open', query), type: 'POST', data: JSON.stringify(postData), - contentType: "application/json", - dataType: "json" + contentType: 'application/json', + dataType: 'json' }); } @@ -1129,17 +1129,17 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla var itemType = item.Type; - if (itemType === "PhotoAlbum" || itemType === "MusicGenre" || itemType === "Season" || itemType === "Series" || itemType === "BoxSet" || itemType === "MusicAlbum" || itemType === "MusicArtist" || itemType === "Playlist") { + if (itemType === 'PhotoAlbum' || itemType === 'MusicGenre' || itemType === 'Season' || itemType === 'Series' || itemType === 'BoxSet' || itemType === 'MusicAlbum' || itemType === 'MusicArtist' || itemType === 'Playlist') { return true; } - if (item.LocationType === "Virtual") { - if (itemType !== "Program") { + if (item.LocationType === 'Virtual') { + if (itemType !== 'Program') { return false; } } - if (itemType === "Program") { + if (itemType === 'Program') { if (!item.EndDate || !item.StartDate) { return false; @@ -1877,36 +1877,36 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla var queryOptions = options.queryOptions || {}; - if (firstItem.Type === "Program") { + if (firstItem.Type === 'Program') { promise = getItemsForPlayback(serverId, { 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, - Filters: "IsNotFolder", + Filters: 'IsNotFolder', Recursive: true, SortBy: options.shuffle ? 'Random' : 'SortName', - MediaTypes: "Audio" + MediaTypes: 'Audio' }); - } else if (firstItem.MediaType === "Photo") { + } else if (firstItem.MediaType === 'Photo') { promise = getItemsForPlayback(serverId, { ParentId: firstItem.ParentId, - Filters: "IsNotFolder", + Filters: 'IsNotFolder', // Setting this to true may cause some incorrect sorting Recursive: false, SortBy: options.shuffle ? 'Random' : 'SortName', - MediaTypes: "Photo,Video", + MediaTypes: 'Photo,Video', Limit: 500 }).then(function (result) { @@ -1927,40 +1927,40 @@ 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, - Filters: "IsNotFolder", + Filters: 'IsNotFolder', // Setting this to true may cause some incorrect sorting Recursive: false, SortBy: options.shuffle ? 'Random' : 'SortName', - MediaTypes: "Photo,Video", + MediaTypes: 'Photo,Video', Limit: 1000 }); - } else if (firstItem.Type === "MusicGenre") { + } else if (firstItem.Type === 'MusicGenre') { promise = getItemsForPlayback(serverId, { GenreIds: firstItem.Id, - Filters: "IsNotFolder", + Filters: 'IsNotFolder', Recursive: true, SortBy: options.shuffle ? 'Random' : 'SortName', - MediaTypes: "Audio" + MediaTypes: 'Audio' }); } else if (firstItem.IsFolder) { promise = getItemsForPlayback(serverId, mergePlaybackQueries({ ParentId: firstItem.Id, - Filters: "IsNotFolder", + Filters: 'IsNotFolder', Recursive: true, // These are pre-sorted SortBy: options.shuffle ? 'Random' : (['BoxSet'].indexOf(firstItem.Type) === -1 ? 'SortName' : null), - MediaTypes: "Audio,Video" + 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); @@ -1976,7 +1976,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla IsVirtualUnaired: false, IsMissing: false, UserId: apiClient.getCurrentUserId(), - Fields: "Chapters" + Fields: 'Chapters' }).then(function (episodesResult) { @@ -2213,7 +2213,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return Promise.reject(); } - if (firstItem.MediaType === "Photo") { + if (firstItem.MediaType === 'Photo') { return playPhotos(items, options, user); } @@ -3851,23 +3851,23 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (player.isLocalPlayer) { var list = [ - "GoHome", - "GoToSettings", - "VolumeUp", - "VolumeDown", - "Mute", - "Unmute", - "ToggleMute", - "SetVolume", - "SetAudioStreamIndex", - "SetSubtitleStreamIndex", - "SetMaxStreamingBitrate", - "DisplayContent", - "GoToSearch", - "DisplayMessage", - "SetRepeatMode", - "PlayMediaSource", - "PlayTrailers" + 'GoHome', + 'GoToSettings', + 'VolumeUp', + 'VolumeDown', + 'Mute', + 'Unmute', + 'ToggleMute', + 'SetVolume', + 'SetAudioStreamIndex', + 'SetSubtitleStreamIndex', + 'SetMaxStreamingBitrate', + 'DisplayContent', + 'GoToSearch', + 'DisplayMessage', + 'SetRepeatMode', + 'PlayMediaSource', + 'PlayTrailers' ]; if (apphost.supports('fullscreenchange')) { diff --git a/src/components/playback/playbackorientation.js b/src/components/playback/playbackorientation.js index 5836298ead..654ac29848 100644 --- a/src/components/playback/playbackorientation.js +++ b/src/components/playback/playbackorientation.js @@ -1,5 +1,5 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager, layoutManager, events) { - "use strict"; + 'use strict'; var orientationLocked; diff --git a/src/components/playback/playerSelectionMenu.js b/src/components/playback/playerSelectionMenu.js index 97e6e46230..329cc11f92 100644 --- a/src/components/playback/playerSelectionMenu.js +++ b/src/components/playback/playerSelectionMenu.js @@ -99,7 +99,7 @@ define(['appSettings', 'events', 'browser', 'loading', 'playbackManager', 'appRo var name = t.name; if (t.appName && t.appName !== t.name) { - name += " - " + t.appName; + name += ' - ' + t.appName; } return { diff --git a/src/components/playback/playersettingsmenu.js b/src/components/playback/playersettingsmenu.js index 086f98c2d4..b89631f63a 100644 --- a/src/components/playback/playersettingsmenu.js +++ b/src/components/playback/playersettingsmenu.js @@ -4,7 +4,7 @@ define(['connectionManager', 'actionsheet', 'datetime', 'playbackManager', 'glob function showQualityMenu(player, btn) { var videoStream = playbackManager.currentMediaSource(player).MediaStreams.filter(function (stream) { - return stream.Type === "Video"; + return stream.Type === 'Video'; })[0]; var videoWidth = videoStream ? videoStream.Width : null; @@ -87,7 +87,7 @@ define(['connectionManager', 'actionsheet', 'datetime', 'playbackManager', 'glob var currentMaxBitrate = playbackManager.getMaxStreamingBitrate(player); var videoStream = playbackManager.currentMediaSource(player).MediaStreams.filter(function (stream) { - return stream.Type === "Video"; + return stream.Type === 'Video'; })[0]; var videoWidth = videoStream ? videoStream.Width : null; diff --git a/src/components/playback/playqueuemanager.js b/src/components/playback/playqueuemanager.js index 429c4027f1..565cb6993e 100644 --- a/src/components/playback/playqueuemanager.js +++ b/src/components/playback/playqueuemanager.js @@ -6,7 +6,7 @@ define([], function () { if (!item.PlaylistItemId) { - item.PlaylistItemId = "playlistItem" + currentId; + item.PlaylistItemId = 'playlistItem' + currentId; currentId++; } } diff --git a/src/components/playbacksettings/playbacksettings.js b/src/components/playbacksettings/playbacksettings.js index d249b5b989..259386397d 100644 --- a/src/components/playbacksettings/playbacksettings.js +++ b/src/components/playbacksettings/playbacksettings.js @@ -1,5 +1,5 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'qualityoptions', 'globalize', 'loading', 'connectionManager', 'dom', 'events', 'emby-select', 'emby-checkbox'], function (require, browser, appSettings, appHost, focusManager, qualityoptions, globalize, loading, connectionManager, dom, events) { - "use strict"; + 'use strict'; function fillSkipLengths(select) { @@ -17,15 +17,15 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'quality function populateLanguages(select, languages) { - var html = ""; + var html = ''; - html += ""; + html += "'; for (var i = 0, length = languages.length; i < length; i++) { var culture = languages[i]; - html += ""; + html += "'; } select.innerHTML = html; @@ -154,12 +154,12 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'quality populateLanguages(context.querySelector('#selectAudioLanguage'), allCultures); - context.querySelector('#selectAudioLanguage', context).value = user.Configuration.AudioLanguagePreference || ""; + context.querySelector('#selectAudioLanguage', context).value = user.Configuration.AudioLanguagePreference || ''; context.querySelector('.chkEpisodeAutoPlay').checked = user.Configuration.EnableNextEpisodeAutoPlay || false; }); // hide cinema mode options if disabled at server level - apiClient.getNamedConfiguration("cinemamode").then(function (cinemaConfig) { + apiClient.getNamedConfiguration('cinemamode').then(function (cinemaConfig) { if (cinemaConfig.EnableIntrosForMovies || cinemaConfig.EnableIntrosForEpisodes) { context.querySelector('.cinemaModeOptions').classList.remove('hide'); diff --git a/src/components/playerstats/playerstats.js b/src/components/playerstats/playerstats.js index 74c36597b1..c0fb369c6c 100644 --- a/src/components/playerstats/playerstats.js +++ b/src/components/playerstats/playerstats.js @@ -132,7 +132,7 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth if (videoCodec) { sessionStats.push({ - label: globalize.translate("LabelVideoCodec"), + label: globalize.translate('LabelVideoCodec'), value: session.TranscodingInfo.IsVideoDirect ? (videoCodec.toUpperCase() + ' (direct)') : videoCodec.toUpperCase() }); } @@ -140,7 +140,7 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth if (audioCodec) { sessionStats.push({ - label: globalize.translate("LabelAudioCodec"), + label: globalize.translate('LabelAudioCodec'), value: session.TranscodingInfo.IsAudioDirect ? (audioCodec.toUpperCase() + ' (direct)') : audioCodec.toUpperCase() }); } @@ -157,28 +157,28 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth if (totalBitrate) { sessionStats.push({ - label: globalize.translate("LabelBitrate"), + label: globalize.translate('LabelBitrate'), value: getDisplayBitrate(totalBitrate) }); } if (session.TranscodingInfo.CompletionPercentage) { sessionStats.push({ - label: globalize.translate("LabelTranscodingProgress"), + label: globalize.translate('LabelTranscodingProgress'), value: session.TranscodingInfo.CompletionPercentage.toFixed(1) + '%' }); } if (session.TranscodingInfo.Framerate) { sessionStats.push({ - label: globalize.translate("LabelTranscodingFramerate"), + label: globalize.translate('LabelTranscodingFramerate'), value: session.TranscodingInfo.Framerate + ' fps' }); } if (session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length) { sessionStats.push({ - label: globalize.translate("LabelReasonForTranscoding"), + label: globalize.translate('LabelReasonForTranscoding'), value: session.TranscodingInfo.TranscodeReasons.map(translateReason).join('
') }); } @@ -216,14 +216,14 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth if (mediaSource.Container) { sessionStats.push({ - label: globalize.translate("LabelProfileContainer"), + label: globalize.translate('LabelProfileContainer'), value: mediaSource.Container }); } if (mediaFileSize) { sessionStats.push({ - label: globalize.translate("LabelSize"), + label: globalize.translate('LabelSize'), value: getReadableSize(mediaFileSize) }); } @@ -231,7 +231,7 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth if (totalBitrate) { sessionStats.push({ - label: globalize.translate("LabelBitrate"), + label: globalize.translate('LabelBitrate'), value: getDisplayBitrate(totalBitrate) }); } @@ -267,14 +267,14 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth if (videoInfos.length) { sessionStats.push({ - label: globalize.translate("LabelVideoCodec"), + label: globalize.translate('LabelVideoCodec'), value: videoInfos.join(' ') }); } if (videoStream.BitRate) { sessionStats.push({ - label: globalize.translate("LabelVideoBitrate"), + label: globalize.translate('LabelVideoBitrate'), value: getDisplayBitrate(videoStream.BitRate) }); } @@ -291,35 +291,35 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth if (audioInfos.length) { sessionStats.push({ - label: globalize.translate("LabelAudioCodec"), + label: globalize.translate('LabelAudioCodec'), value: audioInfos.join(' ') }); } if (audioStream.BitRate) { sessionStats.push({ - label: globalize.translate("LabelAudioBitrate"), + label: globalize.translate('LabelAudioBitrate'), value: getDisplayBitrate(audioStream.BitRate) }); } if (audioChannels) { sessionStats.push({ - label: globalize.translate("LabelAudioChannels"), + label: globalize.translate('LabelAudioChannels'), value: audioChannels }); } if (audioStream.SampleRate) { sessionStats.push({ - label: globalize.translate("LabelAudioSampleRate"), + label: globalize.translate('LabelAudioSampleRate'), value: audioStream.SampleRate + ' Hz' }); } if (audioStream.BitDepth) { sessionStats.push({ - label: globalize.translate("LabelAudioBitDepth"), + label: globalize.translate('LabelAudioBitDepth'), value: audioStream.BitDepth }); } @@ -346,12 +346,12 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth }; baseCategory.stats.unshift({ - label: globalize.translate("LabelPlayMethod"), + label: globalize.translate('LabelPlayMethod'), value: displayPlayMethod }); baseCategory.stats.unshift({ - label: globalize.translate("LabelPlayer"), + label: globalize.translate('LabelPlayer'), value: player.name }); diff --git a/src/components/playlisteditor/playlisteditor.js b/src/components/playlisteditor/playlisteditor.js index 93beb182de..56d7142ad3 100644 --- a/src/components/playlisteditor/playlisteditor.js +++ b/src/components/playlisteditor/playlisteditor.js @@ -23,7 +23,7 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackMan function createPlaylist(apiClient, dlg) { loading.show(); - var url = apiClient.getUrl("Playlists", { + var url = apiClient.getUrl('Playlists', { Name: dlg.querySelector('#txtNewPlaylistName').value, Ids: dlg.querySelector('.fldSelectedItemIds').value || '', userId: apiClient.getCurrentUserId() @@ -31,9 +31,9 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackMan }); apiClient.ajax({ - type: "POST", + type: 'POST', url: url, - dataType: "json" + dataType: 'json' }).then(function (result) { loading.hide(); @@ -63,13 +63,13 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackMan loading.show(); - var url = apiClient.getUrl("Playlists/" + id + "/Items", { + var url = apiClient.getUrl('Playlists/' + id + '/Items', { Ids: itemIds, userId: apiClient.getCurrentUserId() }); apiClient.ajax({ - type: "POST", + type: 'POST', url: url }).then(function () { @@ -93,7 +93,7 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackMan var options = { Recursive: true, - IncludeItemTypes: "Playlist", + IncludeItemTypes: 'Playlist', SortBy: 'SortName', EnableTotalRecordCount: false }; diff --git a/src/components/prompt/prompt.js b/src/components/prompt/prompt.js index 41d40c4a48..a76083cf04 100644 --- a/src/components/prompt/prompt.js +++ b/src/components/prompt/prompt.js @@ -1,4 +1,4 @@ -define(["browser", 'dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function(browser, dialogHelper, layoutManager, scrollHelper, globalize, dom, require) { +define(['browser', 'dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function(browser, dialogHelper, layoutManager, scrollHelper, globalize, dom, require) { 'use strict'; function replaceAll(str, find, replace) { diff --git a/src/components/recordingcreator/recordingcreator.js b/src/components/recordingcreator/recordingcreator.js index a51fac4305..ae26d0debc 100644 --- a/src/components/recordingcreator/recordingcreator.js +++ b/src/components/recordingcreator/recordingcreator.js @@ -36,14 +36,14 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c if (imageTags.Primary) { return apiClient.getScaledImageUrl(item.Id, { - type: "Primary", + type: 'Primary', maxHeight: imageHeight, tag: item.ImageTags.Primary }); } else if (imageTags.Thumb) { return apiClient.getScaledImageUrl(item.Id, { - type: "Thumb", + type: 'Thumb', maxHeight: imageHeight, tag: item.ImageTags.Thumb }); diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index a9f0a4550f..a4f25a774c 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -1,5 +1,5 @@ -define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageLoader", "playbackManager", "nowPlayingHelper", "events", "connectionManager", "apphost", "globalize", "layoutManager", "userSettings", "cardBuilder", "cardStyle", "emby-itemscontainer", "css!./remotecontrol.css", "emby-ratingbutton"], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize, layoutManager, userSettings, cardBuilder) { - "use strict"; +define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageLoader', 'playbackManager', 'nowPlayingHelper', 'events', 'connectionManager', 'apphost', 'globalize', 'layoutManager', 'userSettings', 'cardBuilder', 'cardStyle', 'emby-itemscontainer', 'css!./remotecontrol.css', 'emby-ratingbutton'], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize, layoutManager, userSettings, cardBuilder) { + 'use strict'; function showAudioMenu(context, player, button, item) { var currentIndex = playbackManager.getAudioStreamIndex(player); @@ -17,7 +17,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL return menuItem; }); - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: menuItems, positionTo: button, @@ -45,11 +45,11 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL }); menuItems.unshift({ id: -1, - name: globalize.translate("ButtonOff"), + name: globalize.translate('ButtonOff'), selected: null == currentIndex }); - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: menuItems, positionTo: button, @@ -63,22 +63,22 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function getNowPlayingNameHtml(nowPlayingItem, includeNonNameInfo) { return nowPlayingHelper.getNowPlayingNames(nowPlayingItem, includeNonNameInfo).map(function (i) { return i.text; - }).join("
"); + }).join('
'); } function seriesImageUrl(item, options) { - if ("Episode" !== item.Type) { + if ('Episode' !== item.Type) { return null; } options = options || {}; - options.type = options.type || "Primary"; - if ("Primary" === options.type && item.SeriesPrimaryImageTag) { + options.type = options.type || 'Primary'; + if ('Primary' === options.type && item.SeriesPrimaryImageTag) { options.tag = item.SeriesPrimaryImageTag; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } - if ("Thumb" === options.type) { + if ('Thumb' === options.type) { if (item.SeriesThumbImageTag) { options.tag = item.SeriesThumbImageTag; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); @@ -95,7 +95,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function imageUrl(item, options) { options = options || {}; - options.type = options.type || "Primary"; + options.type = options.type || 'Primary'; if (item.ImageTags && item.ImageTags[options.type]) { options.tag = item.ImageTags[options.type]; @@ -112,49 +112,49 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function updateNowPlayingInfo(context, state, serverId) { var item = state.NowPlayingItem; - var displayName = item ? getNowPlayingNameHtml(item).replace("
", " - ") : ""; + var displayName = item ? getNowPlayingNameHtml(item).replace('
', ' - ') : ''; if (typeof item !== 'undefined') { var nowPlayingServerId = (item.ServerId || serverId); - if (item.Type == "Audio" || item.MediaStreams[0].Type == "Audio") { + if (item.Type == 'Audio' || item.MediaStreams[0].Type == 'Audio') { var songName = item.Name; if (item.Album != null && item.Artists != null) { var albumName = item.Album; var artistName; if (item.ArtistItems != null) { artistName = item.ArtistItems[0].Name; - context.querySelector(".nowPlayingAlbum").innerHTML = '${albumName}`; - context.querySelector(".nowPlayingArtist").innerHTML = '${artistName}`; - context.querySelector(".contextMenuAlbum").innerHTML = ' ` + globalize.translate("ViewAlbum") + ''; - context.querySelector(".contextMenuArtist").innerHTML = ' ` + globalize.translate("ViewArtist") + ''; + context.querySelector('.nowPlayingAlbum').innerHTML = '${albumName}`; + context.querySelector('.nowPlayingArtist').innerHTML = '${artistName}`; + context.querySelector('.contextMenuAlbum').innerHTML = ' ` + globalize.translate('ViewAlbum') + ''; + context.querySelector('.contextMenuArtist').innerHTML = ' ` + globalize.translate('ViewArtist') + ''; } else { artistName = item.Artists; - context.querySelector(".nowPlayingAlbum").innerHTML = albumName; - context.querySelector(".nowPlayingArtist").innerHTML = artistName; + context.querySelector('.nowPlayingAlbum').innerHTML = albumName; + context.querySelector('.nowPlayingArtist').innerHTML = artistName; } } - context.querySelector(".nowPlayingSongName").innerHTML = songName; - } else if (item.Type == "Episode") { + context.querySelector('.nowPlayingSongName').innerHTML = songName; + } else if (item.Type == 'Episode') { if (item.SeasonName != null) { var seasonName = item.SeasonName; - context.querySelector(".nowPlayingSeason").innerHTML = '${seasonName}`; + context.querySelector('.nowPlayingSeason').innerHTML = '${seasonName}`; } if (item.SeriesName != null) { var seriesName = item.SeriesName; if (item.SeriesId !=null) { - context.querySelector(".nowPlayingSerie").innerHTML = '${seriesName}`; + context.querySelector('.nowPlayingSerie').innerHTML = '${seriesName}`; } else { - context.querySelector(".nowPlayingSerie").innerHTML = seriesName; + context.querySelector('.nowPlayingSerie').innerHTML = seriesName; } } - context.querySelector(".nowPlayingEpisode").innerHTML = item.Name; + context.querySelector('.nowPlayingEpisode').innerHTML = item.Name; } else { - context.querySelector(".nowPlayingPageTitle").innerHTML = displayName; + context.querySelector('.nowPlayingPageTitle').innerHTML = displayName; } - if (displayName.length > 0 && item.Type != "Audio" && item.Type != "Episode") { - context.querySelector(".nowPlayingPageTitle").classList.remove("hide"); + if (displayName.length > 0 && item.Type != 'Audio' && item.Type != 'Episode') { + context.querySelector('.nowPlayingPageTitle').classList.remove('hide'); } else { - context.querySelector(".nowPlayingPageTitle").classList.add("hide"); + context.querySelector('.nowPlayingPageTitle').classList.add('hide'); } var url = item ? seriesImageUrl(item, { @@ -163,20 +163,20 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL maxHeight: 300 * 2 }) : null; - console.debug("updateNowPlayingInfo"); + console.debug('updateNowPlayingInfo'); setImageUrl(context, state, url); if (item) { backdrop.setBackdrops([item]); var apiClient = connectionManager.getApiClient(item.ServerId); apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) { var userData = fullItem.UserData || {}; - var likes = null == userData.Likes ? "" : userData.Likes; - context.querySelector(".nowPlayingPageUserDataButtonsTitle").innerHTML = ''; - context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ''; + var likes = null == userData.Likes ? '' : userData.Likes; + context.querySelector('.nowPlayingPageUserDataButtonsTitle').innerHTML = ''; + context.querySelector('.nowPlayingPageUserDataButtons').innerHTML = ''; }); } else { backdrop.clear(); - context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ""; + context.querySelector('.nowPlayingPageUserDataButtons').innerHTML = ''; } } } @@ -184,16 +184,16 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function setImageUrl(context, state, url) { currentImgUrl = url; var item = state.NowPlayingItem; - var imgContainer = context.querySelector(".nowPlayingPageImageContainer"); + var imgContainer = context.querySelector('.nowPlayingPageImageContainer'); if (url) { imgContainer.innerHTML = ''; - if (item.Type == "Audio") { - context.querySelector(".nowPlayingPageImage").classList.add("nowPlayingPageImageAudio"); - context.querySelector(".nowPlayingPageImageContainer").classList.remove("nowPlayingPageImageAudio"); + if (item.Type == 'Audio') { + context.querySelector('.nowPlayingPageImage').classList.add('nowPlayingPageImageAudio'); + context.querySelector('.nowPlayingPageImageContainer').classList.remove('nowPlayingPageImageAudio'); } else { - context.querySelector(".nowPlayingPageImageContainer").classList.add("nowPlayingPageImagePoster"); - context.querySelector(".nowPlayingPageImage").classList.remove("nowPlayingPageImageAudio"); + context.querySelector('.nowPlayingPageImageContainer').classList.add('nowPlayingPageImagePoster'); + context.querySelector('.nowPlayingPageImage').classList.remove('nowPlayingPageImageAudio'); } } else { imgContainer.innerHTML = '
'; @@ -202,17 +202,17 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function buttonVisible(btn, enabled) { if (enabled) { - btn.classList.remove("hide"); + btn.classList.remove('hide'); } else { - btn.classList.add("hide"); + btn.classList.add('hide'); } } function updateSupportedCommands(context, commands) { - var all = context.querySelectorAll(".btnCommand"); + var all = context.querySelectorAll('.btnCommand'); for (var i = 0, length = all.length; i < length; i++) { - var enableButton = -1 !== commands.indexOf(all[i].getAttribute("data-command")); + var enableButton = -1 !== commands.indexOf(all[i].getAttribute('data-command')); all[i].disabled = !enableButton; } } @@ -222,16 +222,16 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function toggleRepeat(player) { if (player) { switch (playbackManager.getRepeatMode(player)) { - case "RepeatNone": - playbackManager.setRepeatMode("RepeatAll", player); + case 'RepeatNone': + playbackManager.setRepeatMode('RepeatAll', player); break; - case "RepeatAll": - playbackManager.setRepeatMode("RepeatOne", player); + case 'RepeatAll': + playbackManager.setRepeatMode('RepeatOne', player); break; - case "RepeatOne": - playbackManager.setRepeatMode("RepeatNone", player); + case 'RepeatOne': + playbackManager.setRepeatMode('RepeatNone', player); } } } @@ -243,41 +243,41 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var supportedCommands = playerInfo.supportedCommands; currentPlayerSupportedCommands = supportedCommands; var playState = state.PlayState || {}; - var isSupportedCommands = supportedCommands.includes("DisplayMessage") || supportedCommands.includes("SendString") || supportedCommands.includes("Select"); - buttonVisible(context.querySelector(".btnToggleFullscreen"), item && "Video" == item.MediaType && supportedCommands.includes("ToggleFullscreen")); + var isSupportedCommands = supportedCommands.includes('DisplayMessage') || supportedCommands.includes('SendString') || supportedCommands.includes('Select'); + buttonVisible(context.querySelector('.btnToggleFullscreen'), item && 'Video' == item.MediaType && supportedCommands.includes('ToggleFullscreen')); updateAudioTracksDisplay(player, context); updateSubtitleTracksDisplay(player, context); - if (supportedCommands.includes("DisplayMessage") && !currentPlayer.isLocalPlayer) { - context.querySelector(".sendMessageSection").classList.remove("hide"); + if (supportedCommands.includes('DisplayMessage') && !currentPlayer.isLocalPlayer) { + context.querySelector('.sendMessageSection').classList.remove('hide'); } else { - context.querySelector(".sendMessageSection").classList.add("hide"); + context.querySelector('.sendMessageSection').classList.add('hide'); } - if (supportedCommands.includes("SendString") && !currentPlayer.isLocalPlayer) { - context.querySelector(".sendTextSection").classList.remove("hide"); + if (supportedCommands.includes('SendString') && !currentPlayer.isLocalPlayer) { + context.querySelector('.sendTextSection').classList.remove('hide'); } else { - context.querySelector(".sendTextSection").classList.add("hide"); + context.querySelector('.sendTextSection').classList.add('hide'); } - if (supportedCommands.includes("Select") && !currentPlayer.isLocalPlayer) { - context.querySelector(".navigationSection").classList.remove("hide"); + if (supportedCommands.includes('Select') && !currentPlayer.isLocalPlayer) { + context.querySelector('.navigationSection').classList.remove('hide'); } else { - context.querySelector(".navigationSection").classList.add("hide"); + context.querySelector('.navigationSection').classList.add('hide'); } if (isSupportedCommands && !currentPlayer.isLocalPlayer) { - context.querySelector(".remoteControlSection").classList.remove("hide"); + context.querySelector('.remoteControlSection').classList.remove('hide'); } else { - context.querySelector(".remoteControlSection").classList.add("hide"); + context.querySelector('.remoteControlSection').classList.add('hide'); } - buttonVisible(context.querySelector(".btnStop"), null != item); - buttonVisible(context.querySelector(".btnNextTrack"), null != item); - buttonVisible(context.querySelector(".btnPreviousTrack"), null != item); - buttonVisible(context.querySelector(".btnRewind"), null != item); - buttonVisible(context.querySelector(".btnFastForward"), null != item); - var positionSlider = context.querySelector(".nowPlayingPositionSlider"); + buttonVisible(context.querySelector('.btnStop'), null != item); + buttonVisible(context.querySelector('.btnNextTrack'), null != item); + buttonVisible(context.querySelector('.btnPreviousTrack'), null != item); + buttonVisible(context.querySelector('.btnRewind'), null != item); + buttonVisible(context.querySelector('.btnFastForward'), null != item); + var positionSlider = context.querySelector('.nowPlayingPositionSlider'); if (positionSlider && item && item.RunTimeTicks) { positionSlider.setKeyboardSteps(userSettings.skipBackLength() * 1000000 / item.RunTimeTicks, @@ -294,10 +294,10 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL updateTimeDisplay(playState.PositionTicks, item ? item.RunTimeTicks : null); updatePlayerVolumeState(context, playState.IsMuted, playState.VolumeLevel); - if (item && "Video" == item.MediaType) { - context.classList.remove("hideVideoButtons"); + if (item && 'Video' == item.MediaType) { + context.classList.remove('hideVideoButtons'); } else { - context.classList.add("hideVideoButtons"); + context.classList.add('hideVideoButtons'); } updateRepeatModeDisplay(playState.RepeatMode); @@ -306,27 +306,27 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function updateAudioTracksDisplay(player, context) { var supportedCommands = currentPlayerSupportedCommands; - buttonVisible(context.querySelector(".btnAudioTracks"), playbackManager.audioTracks(player).length > 1 && -1 != supportedCommands.indexOf("SetAudioStreamIndex")); + buttonVisible(context.querySelector('.btnAudioTracks'), playbackManager.audioTracks(player).length > 1 && -1 != supportedCommands.indexOf('SetAudioStreamIndex')); } function updateSubtitleTracksDisplay(player, context) { var supportedCommands = currentPlayerSupportedCommands; - buttonVisible(context.querySelector(".btnSubtitles"), playbackManager.subtitleTracks(player).length && -1 != supportedCommands.indexOf("SetSubtitleStreamIndex")); + buttonVisible(context.querySelector('.btnSubtitles'), playbackManager.subtitleTracks(player).length && -1 != supportedCommands.indexOf('SetSubtitleStreamIndex')); } function updateRepeatModeDisplay(repeatMode) { var context = dlg; - var toggleRepeatButton = context.querySelector(".repeatToggleButton"); + var toggleRepeatButton = context.querySelector('.repeatToggleButton'); - if ("RepeatAll" == repeatMode) { + if ('RepeatAll' == repeatMode) { toggleRepeatButton.innerHTML = ""; - toggleRepeatButton.classList.add("repeatButton-active"); - } else if ("RepeatOne" == repeatMode) { + toggleRepeatButton.classList.add('repeatButton-active'); + } else if ('RepeatOne' == repeatMode) { toggleRepeatButton.innerHTML = ""; - toggleRepeatButton.classList.add("repeatButton-active"); + toggleRepeatButton.classList.add('repeatButton-active'); } else { toggleRepeatButton.innerHTML = ""; - toggleRepeatButton.classList.remove("repeatButton-active"); + toggleRepeatButton.classList.remove('repeatButton-active'); } } @@ -336,46 +336,46 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var showMuteButton = true; var showVolumeSlider = true; - if (-1 === supportedCommands.indexOf("Mute")) { + if (-1 === supportedCommands.indexOf('Mute')) { showMuteButton = false; } - if (-1 === supportedCommands.indexOf("SetVolume")) { + if (-1 === supportedCommands.indexOf('SetVolume')) { showVolumeSlider = false; } - if (currentPlayer.isLocalPlayer && appHost.supports("physicalvolumecontrol")) { + if (currentPlayer.isLocalPlayer && appHost.supports('physicalvolumecontrol')) { showMuteButton = false; showVolumeSlider = false; } - const buttonMute = view.querySelector(".buttonMute"); - const buttonMuteIcon = buttonMute.querySelector(".material-icons"); + const buttonMute = view.querySelector('.buttonMute'); + const buttonMuteIcon = buttonMute.querySelector('.material-icons'); - buttonMuteIcon.classList.remove("volume_off", "volume_up"); + buttonMuteIcon.classList.remove('volume_off', 'volume_up'); if (isMuted) { - buttonMute.setAttribute("title", globalize.translate("Unmute")); - buttonMuteIcon.classList.add("volume_off"); + buttonMute.setAttribute('title', globalize.translate('Unmute')); + buttonMuteIcon.classList.add('volume_off'); } else { - buttonMute.setAttribute("title", globalize.translate("Mute")); - buttonMuteIcon.classList.add("volume_up"); + buttonMute.setAttribute('title', globalize.translate('Mute')); + buttonMuteIcon.classList.add('volume_up'); } if (showMuteButton) { - buttonMute.classList.remove("hide"); + buttonMute.classList.remove('hide'); } else { - buttonMute.classList.add("hide"); + buttonMute.classList.add('hide'); } - var nowPlayingVolumeSlider = context.querySelector(".nowPlayingVolumeSlider"); - var nowPlayingVolumeSliderContainer = context.querySelector(".nowPlayingVolumeSliderContainer"); + var nowPlayingVolumeSlider = context.querySelector('.nowPlayingVolumeSlider'); + var nowPlayingVolumeSliderContainer = context.querySelector('.nowPlayingVolumeSliderContainer'); if (nowPlayingVolumeSlider) { if (showVolumeSlider) { - nowPlayingVolumeSliderContainer.classList.remove("hide"); + nowPlayingVolumeSliderContainer.classList.remove('hide'); } else { - nowPlayingVolumeSliderContainer.classList.add("hide"); + nowPlayingVolumeSliderContainer.classList.add('hide'); } if (!nowPlayingVolumeSlider.dragging) { @@ -386,18 +386,18 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function updatePlayPauseState(isPaused, isActive) { var context = dlg; - var btnPlayPause = context.querySelector(".btnPlayPause"); - const btnPlayPauseIcon = btnPlayPause.querySelector(".material-icons"); + var btnPlayPause = context.querySelector('.btnPlayPause'); + const btnPlayPauseIcon = btnPlayPause.querySelector('.material-icons'); - btnPlayPauseIcon.classList.remove("play_circle_filled", "pause_circle_filled"); - btnPlayPauseIcon.classList.add(isPaused ? "play_circle_filled" : "pause_circle_filled"); + btnPlayPauseIcon.classList.remove('play_circle_filled', 'pause_circle_filled'); + btnPlayPauseIcon.classList.add(isPaused ? 'play_circle_filled' : 'pause_circle_filled'); buttonVisible(btnPlayPause, isActive); } function updateTimeDisplay(positionTicks, runtimeTicks) { var context = dlg; - var positionSlider = context.querySelector(".nowPlayingPositionSlider"); + var positionSlider = context.querySelector('.nowPlayingPositionSlider'); if (positionSlider && !positionSlider.dragging) { if (runtimeTicks) { @@ -409,8 +409,8 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } } - context.querySelector(".positionTime").innerHTML = null == positionTicks ? "--:--" : datetime.getDisplayRunningTime(positionTicks); - context.querySelector(".runtime").innerHTML = null != runtimeTicks ? datetime.getDisplayRunningTime(runtimeTicks) : "--:--"; + context.querySelector('.positionTime').innerHTML = null == positionTicks ? '--:--' : datetime.getDisplayRunningTime(positionTicks); + context.querySelector('.runtime').innerHTML = null != runtimeTicks ? datetime.getDisplayRunningTime(runtimeTicks) : '--:--'; } function getPlaylistItems(player) { @@ -419,27 +419,27 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function loadPlaylist(context, player) { getPlaylistItems(player).then(function (items) { - var html = ""; + var html = ''; html += listView.getListViewHtml({ items: items, smallIcon: true, - action: "setplaylistindex", + action: 'setplaylistindex', enableUserDataButtons: false, rightButtons: [{ - icon: "remove_circle_outline", - title: globalize.translate("ButtonRemove"), - id: "remove" + icon: 'remove_circle_outline', + title: globalize.translate('ButtonRemove'), + id: 'remove' }], dragHandle: true }); if (items.length) { - context.querySelector(".btnTogglePlaylist").classList.remove("hide"); + context.querySelector('.btnTogglePlaylist').classList.remove('hide'); } else { - context.querySelector(".btnTogglePlaylist").classList.add("hide"); + context.querySelector('.btnTogglePlaylist').classList.add('hide'); } - var itemsContainer = context.querySelector(".playlist"); + var itemsContainer = context.querySelector('.playlist'); itemsContainer.innerHTML = html; var playlistItemId = playbackManager.getCurrentPlaylistItemId(player); @@ -447,20 +447,20 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var img = itemsContainer.querySelector('.listItem[data-playlistItemId="' + playlistItemId + '"] .listItemImage'); if (img) { - img.classList.remove("lazy"); - img.classList.add("playlistIndexIndicatorImage"); + img.classList.remove('lazy'); + img.classList.add('playlistIndexIndicatorImage'); } } imageLoader.lazyChildren(itemsContainer); - context.querySelector(".playlist").classList.add("hide"); - context.querySelector(".contextMenu").classList.add("hide"); - context.querySelector(".btnSavePlaylist").classList.add("hide"); + context.querySelector('.playlist').classList.add('hide'); + context.querySelector('.contextMenu').classList.add('hide'); + context.querySelector('.btnSavePlaylist').classList.add('hide'); }); } function onPlaybackStart(e, state) { - console.debug("remotecontrol event: " + e.type); + console.debug('remotecontrol event: ' + e.type); var player = this; onStateChanged.call(player, e, state); } @@ -488,7 +488,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } function onPlaybackStopped(e, state) { - console.debug("remotecontrol event: " + e.type); + console.debug('remotecontrol event: ' + e.type); var player = this; if (!state.NextMediaType) { @@ -528,16 +528,16 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var player = currentPlayer; if (player) { - events.off(player, "playbackstart", onPlaybackStart); - events.off(player, "statechange", onStateChanged); - events.off(player, "repeatmodechange", onRepeatModeChange); - events.off(player, "playlistitemremove", onPlaylistUpdate); - events.off(player, "playlistitemmove", onPlaylistUpdate); - events.off(player, "playbackstop", onPlaybackStopped); - events.off(player, "volumechange", onVolumeChanged); - events.off(player, "pause", onPlayPauseStateChanged); - events.off(player, "unpause", onPlayPauseStateChanged); - events.off(player, "timeupdate", onTimeUpdate); + events.off(player, 'playbackstart', onPlaybackStart); + events.off(player, 'statechange', onStateChanged); + events.off(player, 'repeatmodechange', onRepeatModeChange); + events.off(player, 'playlistitemremove', onPlaylistUpdate); + events.off(player, 'playlistitemmove', onPlaylistUpdate); + events.off(player, 'playbackstop', onPlaybackStopped); + events.off(player, 'volumechange', onVolumeChanged); + events.off(player, 'pause', onPlayPauseStateChanged); + events.off(player, 'unpause', onPlayPauseStateChanged); + events.off(player, 'timeupdate', onTimeUpdate); currentPlayer = null; } } @@ -546,18 +546,18 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL if (releaseCurrentPlayer(), currentPlayer = player, player) { var state = playbackManager.getPlayerState(player); onStateChanged.call(player, { - type: "init" + type: 'init' }, state); - events.on(player, "playbackstart", onPlaybackStart); - events.on(player, "statechange", onStateChanged); - events.on(player, "repeatmodechange", onRepeatModeChange); - events.on(player, "playlistitemremove", onPlaylistItemRemoved); - events.on(player, "playlistitemmove", onPlaylistUpdate); - events.on(player, "playbackstop", onPlaybackStopped); - events.on(player, "volumechange", onVolumeChanged); - events.on(player, "pause", onPlayPauseStateChanged); - events.on(player, "unpause", onPlayPauseStateChanged); - events.on(player, "timeupdate", onTimeUpdate); + events.on(player, 'playbackstart', onPlaybackStart); + events.on(player, 'statechange', onStateChanged); + events.on(player, 'repeatmodechange', onRepeatModeChange); + events.on(player, 'playlistitemremove', onPlaylistItemRemoved); + events.on(player, 'playlistitemmove', onPlaylistUpdate); + events.on(player, 'playbackstop', onPlaybackStopped); + events.on(player, 'volumechange', onVolumeChanged); + events.on(player, 'pause', onPlayPauseStateChanged); + events.on(player, 'unpause', onPlayPauseStateChanged); + events.on(player, 'timeupdate', onTimeUpdate); var playerInfo = playbackManager.getPlayerInfo(); var supportedCommands = playerInfo.supportedCommands; currentPlayerSupportedCommands = supportedCommands; @@ -567,11 +567,11 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function onBtnCommandClick() { if (currentPlayer) { - if (this.classList.contains("repeatToggleButton")) { + if (this.classList.contains('repeatToggleButton')) { toggleRepeat(currentPlayer); } else { playbackManager.sendCommand({ - Name: this.getAttribute("data-command") + Name: this.getAttribute('data-command') }, currentPlayer); } } @@ -586,7 +586,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } function savePlaylist() { - require(["playlistEditor"], function (playlistEditor) { + require(['playlistEditor'], function (playlistEditor) { getSaveablePlaylistItems().then(function (items) { var serverId = items.length ? items[0].ServerId : ApiClient.serverId(); new playlistEditor().show({ @@ -595,67 +595,67 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL }), serverId: serverId, enableAddToPlayQueue: false, - defaultValue: "new" + defaultValue: 'new' }); }); }); } function bindEvents(context) { - var btnCommand = context.querySelectorAll(".btnCommand"); + var btnCommand = context.querySelectorAll('.btnCommand'); for (var i = 0, length = btnCommand.length; i < length; i++) { - btnCommand[i].addEventListener("click", onBtnCommandClick); + btnCommand[i].addEventListener('click', onBtnCommandClick); } - context.querySelector(".btnToggleFullscreen").addEventListener("click", function (e) { + context.querySelector('.btnToggleFullscreen').addEventListener('click', function (e) { if (currentPlayer) { playbackManager.sendCommand({ - Name: e.target.getAttribute("data-command") + Name: e.target.getAttribute('data-command') }, currentPlayer); } }); - context.querySelector(".btnAudioTracks").addEventListener("click", function (e) { + context.querySelector('.btnAudioTracks').addEventListener('click', function (e) { if (currentPlayer && lastPlayerState && lastPlayerState.NowPlayingItem) { showAudioMenu(context, currentPlayer, e.target, lastPlayerState.NowPlayingItem); } }); - context.querySelector(".btnSubtitles").addEventListener("click", function (e) { + context.querySelector('.btnSubtitles').addEventListener('click', function (e) { if (currentPlayer && lastPlayerState && lastPlayerState.NowPlayingItem) { showSubtitleMenu(context, currentPlayer, e.target, lastPlayerState.NowPlayingItem); } }); - context.querySelector(".btnStop").addEventListener("click", function () { + context.querySelector('.btnStop').addEventListener('click', function () { if (currentPlayer) { playbackManager.stop(currentPlayer); } }); - context.querySelector(".btnPlayPause").addEventListener("click", function () { + context.querySelector('.btnPlayPause').addEventListener('click', function () { if (currentPlayer) { playbackManager.playPause(currentPlayer); } }); - context.querySelector(".btnNextTrack").addEventListener("click", function () { + context.querySelector('.btnNextTrack').addEventListener('click', function () { if (currentPlayer) { playbackManager.nextTrack(currentPlayer); } }); - context.querySelector(".btnRewind").addEventListener("click", function () { + context.querySelector('.btnRewind').addEventListener('click', function () { if (currentPlayer) { playbackManager.rewind(currentPlayer); } }); - context.querySelector(".btnFastForward").addEventListener("click", function () { + context.querySelector('.btnFastForward').addEventListener('click', function () { if (currentPlayer) { playbackManager.fastForward(currentPlayer); } }); - context.querySelector(".btnPreviousTrack").addEventListener("click", function () { + context.querySelector('.btnPreviousTrack').addEventListener('click', function () { if (currentPlayer) { playbackManager.previousTrack(currentPlayer); } }); - context.querySelector(".nowPlayingPositionSlider").addEventListener("change", function () { + context.querySelector('.nowPlayingPositionSlider').addEventListener('change', function () { var value = this.value; if (currentPlayer) { @@ -664,11 +664,11 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } }); - context.querySelector(".nowPlayingPositionSlider").getBubbleText = function (value) { + context.querySelector('.nowPlayingPositionSlider').getBubbleText = function (value) { var state = lastPlayerState; if (!state || !state.NowPlayingItem || !currentRuntimeTicks) { - return "--:--"; + return '--:--'; } var ticks = currentRuntimeTicks; @@ -681,41 +681,41 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL playbackManager.setVolume(this.value, currentPlayer); } - context.querySelector(".nowPlayingVolumeSlider").addEventListener("change", setVolume); - context.querySelector(".nowPlayingVolumeSlider").addEventListener("mousemove", setVolume); - context.querySelector(".nowPlayingVolumeSlider").addEventListener("touchmove", setVolume); - context.querySelector(".buttonMute").addEventListener("click", function () { + context.querySelector('.nowPlayingVolumeSlider').addEventListener('change', setVolume); + context.querySelector('.nowPlayingVolumeSlider').addEventListener('mousemove', setVolume); + context.querySelector('.nowPlayingVolumeSlider').addEventListener('touchmove', setVolume); + context.querySelector('.buttonMute').addEventListener('click', function () { playbackManager.toggleMute(currentPlayer); }); - var playlistContainer = context.querySelector(".playlist"); - playlistContainer.addEventListener("action-remove", function (e) { + var playlistContainer = context.querySelector('.playlist'); + playlistContainer.addEventListener('action-remove', function (e) { playbackManager.removeFromPlaylist([e.detail.playlistItemId], currentPlayer); }); - playlistContainer.addEventListener("itemdrop", function (e) { + playlistContainer.addEventListener('itemdrop', function (e) { var newIndex = e.detail.newIndex; var playlistItemId = e.detail.playlistItemId; playbackManager.movePlaylistItem(playlistItemId, newIndex, currentPlayer); }); - context.querySelector(".btnSavePlaylist").addEventListener("click", savePlaylist); - context.querySelector(".btnTogglePlaylist").addEventListener("click", function () { - if (context.querySelector(".playlist").classList.contains("hide")) { - context.querySelector(".playlist").classList.remove("hide"); - context.querySelector(".btnSavePlaylist").classList.remove("hide"); - context.querySelector(".contextMenu").classList.add("hide"); - context.querySelector(".volumecontrol").classList.add("hide"); + context.querySelector('.btnSavePlaylist').addEventListener('click', savePlaylist); + context.querySelector('.btnTogglePlaylist').addEventListener('click', function () { + if (context.querySelector('.playlist').classList.contains('hide')) { + context.querySelector('.playlist').classList.remove('hide'); + context.querySelector('.btnSavePlaylist').classList.remove('hide'); + context.querySelector('.contextMenu').classList.add('hide'); + context.querySelector('.volumecontrol').classList.add('hide'); } else { - context.querySelector(".playlist").classList.add("hide"); - context.querySelector(".btnSavePlaylist").classList.add("hide"); - context.querySelector(".volumecontrol").classList.remove("hide"); + context.querySelector('.playlist').classList.add('hide'); + context.querySelector('.btnSavePlaylist').classList.add('hide'); + context.querySelector('.volumecontrol').classList.remove('hide'); } }); - context.querySelector(".btnToggleContextMenu").addEventListener("click", function () { - if (context.querySelector(".contextMenu").classList.contains("hide")) { - context.querySelector(".contextMenu").classList.remove("hide"); - context.querySelector(".btnSavePlaylist").classList.add("hide"); - context.querySelector(".playlist").classList.add("hide"); + context.querySelector('.btnToggleContextMenu').addEventListener('click', function () { + if (context.querySelector('.contextMenu').classList.contains('hide')) { + context.querySelector('.contextMenu').classList.remove('hide'); + context.querySelector('.btnSavePlaylist').classList.add('hide'); + context.querySelector('.playlist').classList.add('hide'); } else { - context.querySelector(".contextMenu").classList.add("hide"); + context.querySelector('.contextMenu').classList.add('hide'); } }); } @@ -727,16 +727,16 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function onMessageSubmit(e) { var form = e.target; playbackManager.sendCommand({ - Name: "DisplayMessage", + Name: 'DisplayMessage', Arguments: { - Header: form.querySelector("#txtMessageTitle").value, - Text: form.querySelector("#txtMessageText", form).value + Header: form.querySelector('#txtMessageTitle').value, + Text: form.querySelector('#txtMessageText', form).value } }, currentPlayer); - form.querySelector("input").value = ""; + form.querySelector('input').value = ''; - require(["toast"], function (toast) { - toast("Message sent."); + require(['toast'], function (toast) { + toast('Message sent.'); }); e.preventDefault(); @@ -747,15 +747,15 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function onSendStringSubmit(e) { var form = e.target; playbackManager.sendCommand({ - Name: "SendString", + Name: 'SendString', Arguments: { - String: form.querySelector("#txtTypeText", form).value + String: form.querySelector('#txtTypeText', form).value } }, currentPlayer); - form.querySelector("input").value = ""; + form.querySelector('input').value = ''; - require(["toast"], function (toast) { - toast("Text sent."); + require(['toast'], function (toast) { + toast('Text sent.'); }); e.preventDefault(); @@ -777,20 +777,20 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } bindEvents(context); - context.querySelector(".sendMessageForm").addEventListener("submit", onMessageSubmit); - context.querySelector(".typeTextForm").addEventListener("submit", onSendStringSubmit); - events.on(playbackManager, "playerchange", onPlayerChange); + context.querySelector('.sendMessageForm').addEventListener('submit', onMessageSubmit); + context.querySelector('.typeTextForm').addEventListener('submit', onSendStringSubmit); + events.on(playbackManager, 'playerchange', onPlayerChange); if (layoutManager.tv) { - var positionSlider = context.querySelector(".nowPlayingPositionSlider"); - positionSlider.classList.add("focusable"); + var positionSlider = context.querySelector('.nowPlayingPositionSlider'); + positionSlider.classList.add('focusable'); positionSlider.enableKeyboardDragging(); } } function onDialogClosed(e) { releaseCurrentPlayer(); - events.off(playbackManager, "playerchange", onPlayerChange); + events.off(playbackManager, 'playerchange', onPlayerChange); lastPlayerState = null; } diff --git a/src/components/sanitizefilename.js b/src/components/sanitizefilename.js index adfb852e1f..de7b1a0782 100644 --- a/src/components/sanitizefilename.js +++ b/src/components/sanitizefilename.js @@ -16,8 +16,8 @@ function isLowSurrogate(codePoint) { } function getByteLength(string) { - if (typeof string !== "string") { - throw new Error("Input must be string"); + if (typeof string !== 'string') { + throw new Error('Input must be string'); } const charLength = string.length; @@ -49,8 +49,8 @@ function getByteLength(string) { } function truncate(string, byteLength) { - if (typeof string !== "string") { - throw new Error("Input must be string"); + if (typeof string !== 'string') { + throw new Error('Input must be string'); } const charLength = string.length; diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index 6a626cd254..f7bd41ff8b 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -5,9 +5,9 @@ * @module components/scrollManager */ -import dom from "dom"; -import browser from "browser"; -import layoutManager from "layoutManager"; +import dom from 'dom'; +import browser from 'browser'; +import layoutManager from 'layoutManager'; /** * Scroll time in ms. @@ -27,20 +27,20 @@ import layoutManager from "layoutManager"; * @return {number} Minimum vertical scroll. */ function minimumScrollY() { - const topMenu = document.querySelector(".headerTop"); + const topMenu = document.querySelector('.headerTop'); if (topMenu) { return topMenu.clientHeight; } return 0; } - const supportsSmoothScroll = "scrollBehavior" in document.documentElement.style; + const supportsSmoothScroll = 'scrollBehavior' in document.documentElement.style; let supportsScrollToOptions = false; try { - const elem = document.createElement("div"); + const elem = document.createElement('div'); - const opts = Object.defineProperty({}, "behavior", { + const opts = Object.defineProperty({}, 'behavior', { // eslint-disable-next-line getter-return get: function () { supportsScrollToOptions = true; @@ -49,7 +49,7 @@ import layoutManager from "layoutManager"; elem.scrollTo(opts); } catch (e) { - console.error("error checking ScrollToOptions support"); + console.error('error checking ScrollToOptions support'); } /** @@ -210,21 +210,21 @@ import layoutManager from "layoutManager"; */ function getScrollableParent(element, vertical) { if (element) { - let nameScroll = "scrollWidth"; - let nameClient = "clientWidth"; - let nameClass = "scrollX"; + let nameScroll = 'scrollWidth'; + let nameClient = 'clientWidth'; + let nameClass = 'scrollX'; if (vertical) { - nameScroll = "scrollHeight"; - nameClient = "clientHeight"; - nameClass = "scrollY"; + nameScroll = 'scrollHeight'; + nameClient = 'clientHeight'; + nameClass = 'scrollY'; } let parent = element.parentElement; while (parent) { // Skip 'emby-scroller' because it scrolls by itself - if (!parent.classList.contains("emby-scroller") && + if (!parent.classList.contains('emby-scroller') && parent[nameScroll] > parent[nameClient] && parent.classList.contains(nameClass)) { return parent; } @@ -316,7 +316,7 @@ import layoutManager from "layoutManager"; * @param {ScrollToOptions} options - Scroll options. */ function scrollToHelper(scroller, options) { - if ("scrollTo" in scroller) { + if ('scrollTo' in scroller) { if (!supportsScrollToOptions) { const scrollX = (options.left !== undefined ? options.left : scroller.scrollLeft); const scrollY = (options.top !== undefined ? options.top : scroller.scrollTop); @@ -324,7 +324,7 @@ import layoutManager from "layoutManager"; } else { scroller.scrollTo(options); } - } else if ("scrollLeft" in scroller) { + } else if ('scrollLeft' in scroller) { if (options.left !== undefined) { scroller.scrollLeft = options.left; } @@ -344,7 +344,7 @@ import layoutManager from "layoutManager"; * @param {boolean} smooth - Smooth scrolling. */ function builtinScroll(xScroller, scrollX, yScroller, scrollY, smooth) { - const scrollBehavior = smooth ? "smooth" : "instant"; + const scrollBehavior = smooth ? 'smooth' : 'instant'; if (xScroller !== yScroller) { scrollToHelper(xScroller, {left: scrollX, behavior: scrollBehavior}); @@ -500,7 +500,7 @@ import layoutManager from "layoutManager"; const offsetParent = element.offsetParent; // In Firefox offsetParent.offsetParent is BODY - const isFixed = offsetParent && (!offsetParent.offsetParent || window.getComputedStyle(offsetParent).position === "fixed"); + const isFixed = offsetParent && (!offsetParent.offsetParent || window.getComputedStyle(offsetParent).position === 'fixed'); // Scroll fixed elements to nearest edge (or do not scroll at all) if (isFixed) { @@ -537,7 +537,7 @@ import layoutManager from "layoutManager"; } if (isEnabled()) { - dom.addEventListener(window, "focusin", function(e) { + dom.addEventListener(window, 'focusin', function(e) { setTimeout(function() { scrollToElement(e.target, useSmoothScroll()); }, 0); diff --git a/src/components/search/searchresults.js b/src/components/search/searchresults.js index 02f1feefe1..d4de2349a4 100644 --- a/src/components/search/searchresults.js +++ b/src/components/search/searchresults.js @@ -5,8 +5,8 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', var options = { - SortBy: "IsFavoriteOrLiked,Random", - IncludeItemTypes: "Movie,Series,MusicArtist", + SortBy: 'IsFavoriteOrLiked,Random', + IncludeItemTypes: 'Movie,Series,MusicArtist', Limit: 20, Recursive: true, ImageTypeLimit: 0, @@ -165,7 +165,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "LiveTvProgram", + IncludeItemTypes: 'LiveTvProgram', IsMovie: true, IsKids: false, IsNews: false @@ -194,7 +194,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "Movie" + IncludeItemTypes: 'Movie' }, context, '.movieResults', { @@ -212,7 +212,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "Series" + IncludeItemTypes: 'Series' }, context, '.seriesResults', { @@ -231,7 +231,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "LiveTvProgram", + IncludeItemTypes: 'LiveTvProgram', IsSeries: true, IsSports: false, IsKids: false, @@ -262,7 +262,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "Episode" + IncludeItemTypes: 'Episode' }, context, '.episodeResults', { @@ -363,7 +363,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "LiveTvProgram", + IncludeItemTypes: 'LiveTvProgram', IsMovie: instance.options.collectionType === 'livetv' ? false : null, IsSeries: instance.options.collectionType === 'livetv' ? false : null, IsSports: instance.options.collectionType === 'livetv' ? false : null, @@ -394,8 +394,8 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - MediaTypes: "Video", - ExcludeItemTypes: "Movie,Episode" + MediaTypes: 'Video', + ExcludeItemTypes: 'Movie,Episode' }, context, '.videoResults', { @@ -439,7 +439,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "MusicAlbum" + IncludeItemTypes: 'MusicAlbum' }, context, '.albumResults', { @@ -456,7 +456,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "Audio" + IncludeItemTypes: 'Audio' }, context, '.songResults', { @@ -475,7 +475,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - MediaTypes: "Photo" + MediaTypes: 'Photo' }, context, '.photoResults', { @@ -492,7 +492,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "PhotoAlbum" + IncludeItemTypes: 'PhotoAlbum' }, context, '.photoAlbumResults', { @@ -508,7 +508,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "Book" + IncludeItemTypes: 'Book' }, context, '.bookResults', { @@ -525,7 +525,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "AudioBook" + IncludeItemTypes: 'AudioBook' }, context, '.audioBookResults', { @@ -541,7 +541,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager', IncludeGenres: false, IncludeStudios: false, IncludeArtists: false, - IncludeItemTypes: "Playlist" + IncludeItemTypes: 'Playlist' }, context, '.playlistResults', { diff --git a/src/components/serverNotifications.js b/src/components/serverNotifications.js index 5554925272..e60f98475b 100644 --- a/src/components/serverNotifications.js +++ b/src/components/serverNotifications.js @@ -142,12 +142,12 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus function onMessageReceived(e, msg) { var apiClient = this; - if (msg.MessageType === "Play") { + if (msg.MessageType === 'Play') { notifyApp(); var serverId = apiClient.serverInfo().Id; - if (msg.Data.PlayCommand === "PlayNext") { + 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 { playbackManager.play({ @@ -160,7 +160,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus serverId: serverId }); } - } else if (msg.MessageType === "Playstate") { + } else if (msg.MessageType === 'Playstate') { if (msg.Data.Command === 'Stop') { inputManager.trigger('stop'); } else if (msg.Data.Command === 'Pause') { @@ -178,10 +178,10 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus } 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()) { for (var i = 0, length = msg.Data.UserDataList.length; i < length; i++) { events.trigger(serverNotifications, 'UserDataChanged', [apiClient, msg.Data.UserDataList[i]]); @@ -192,8 +192,8 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus } } function bindEvents(apiClient) { - events.off(apiClient, "message", onMessageReceived); - events.on(apiClient, "message", onMessageReceived); + events.off(apiClient, 'message', onMessageReceived); + events.on(apiClient, 'message', onMessageReceived); } connectionManager.getApiClients().forEach(bindEvents); diff --git a/src/components/serverRestartDialog.js b/src/components/serverRestartDialog.js index ef012fe44a..4c52d5f01b 100644 --- a/src/components/serverRestartDialog.js +++ b/src/components/serverRestartDialog.js @@ -12,7 +12,7 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp } // Don't use apiclient method because we don't want it reporting authentication under the old version - apiClient.getJSON(apiClient.getUrl("System/Info")).then(function (info) { + apiClient.getJSON(apiClient.getUrl('System/Info')).then(function (info) { // If this is back to false, the restart completed if (!info.IsShuttingDown) { diff --git a/src/components/serviceworker/notifications.js b/src/components/serviceworker/notifications.js index 33f54bb64d..5f96d01a4d 100644 --- a/src/components/serviceworker/notifications.js +++ b/src/components/serviceworker/notifications.js @@ -20,7 +20,7 @@ case 'restart': return apiClient.restartServer(); default: - clients.openWindow("/"); + clients.openWindow('/'); return Promise.resolve(); } }); @@ -35,7 +35,7 @@ var action = event.action; if (!action) { - clients.openWindow("/"); + clients.openWindow('/'); event.waitUntil(Promise.resolve()); return; } diff --git a/src/components/sessionplayer.js b/src/components/sessionplayer.js index bbb22a9654..489b57493d 100644 --- a/src/components/sessionplayer.js +++ b/src/components/sessionplayer.js @@ -79,7 +79,7 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] instance.isUpdating = true; var apiClient = getCurrentApiClient(instance); - apiClient.sendMessage("SessionsStop"); + apiClient.sendMessage('SessionsStop'); if (instance.pollInterval) { clearInterval(instance.pollInterval); instance.pollInterval = null; @@ -158,7 +158,7 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] instance.isUpdating = true; var apiClient = getCurrentApiClient(instance); - apiClient.sendMessage("SessionsStart", "100,800"); + apiClient.sendMessage('SessionsStart', '100,800'); if (instance.pollInterval) { clearInterval(instance.pollInterval); instance.pollInterval = null; diff --git a/src/components/skinManager.js b/src/components/skinManager.js index d5b045c44e..871b6d999f 100644 --- a/src/components/skinManager.js +++ b/src/components/skinManager.js @@ -24,25 +24,25 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr function getThemes() { return [{ - name: "Apple TV", - id: "appletv" + name: 'Apple TV', + id: 'appletv' }, { - name: "Blue Radiance", - id: "blueradiance" + name: 'Blue Radiance', + id: 'blueradiance' }, { - name: "Dark", - id: "dark", + name: 'Dark', + id: 'dark', isDefault: true, isDefaultServerDashboard: true }, { - name: "Light", - id: "light" + name: 'Light', + id: 'light' }, { - name: "Purple Haze", - id: "purplehaze" + name: 'Purple Haze', + id: 'purplehaze' }, { - name: "Windows Media Center", - id: "wmc" + name: 'Windows Media Center', + id: 'wmc' }]; } @@ -91,7 +91,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr function onThemeLoaded() { document.documentElement.classList.remove('preload'); try { - var color = getComputedStyle(document.querySelector('.skinHeader')).getPropertyValue("background-color"); + var color = getComputedStyle(document.querySelector('.skinHeader')).getPropertyValue('background-color'); if (color) { appHost.setThemeColor(color); } diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index b88564ba82..cee43560ea 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -14,7 +14,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f */ function getImageUrl(item, options, apiClient) { options = options || {}; - options.type = options.type || "Primary"; + options.type = options.type || 'Primary'; if (typeof (item) === 'string') { return apiClient.getScaledImageUrl(item, options); @@ -45,7 +45,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f */ function getBackdropImageUrl(item, options, apiClient) { options = options || {}; - options.type = options.type || "Backdrop"; + options.type = options.type || 'Backdrop'; // If not resizing, get the original image if (!options.maxWidth && !options.width && !options.maxHeight && !options.height) { @@ -76,7 +76,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f if (item.MediaType === 'Photo' && user && user.Policy.EnableContentDownloading) { return apiClient.getItemDownloadUrl(item.Id); } - imageOptions.type = "Primary"; + imageOptions.type = 'Primary'; return getImageUrl(item, imageOptions, apiClient); } } @@ -226,7 +226,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f function onAutoplayStart() { var btnSlideshowPause = dialog.querySelector('.btnSlideshowPause .material-icons'); if (btnSlideshowPause) { - btnSlideshowPause.classList.replace("play_arrow", "pause"); + btnSlideshowPause.classList.replace('play_arrow', 'pause'); } } @@ -236,7 +236,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f function onAutoplayStop() { var btnSlideshowPause = dialog.querySelector('.btnSlideshowPause .material-icons'); if (btnSlideshowPause) { - btnSlideshowPause.classList.replace("pause", "play_arrow"); + btnSlideshowPause.classList.replace('pause', 'play_arrow'); } } @@ -418,7 +418,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f * Toggles the autoplay feature of the Swiper instance. */ function playPause() { - var paused = !dialog.querySelector('.btnSlideshowPause .material-icons').classList.contains("pause"); + var paused = !dialog.querySelector('.btnSlideshowPause .material-icons').classList.contains('pause'); if (paused) { play(); } else { diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 10c34784fe..8ce1fd5803 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -48,7 +48,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', var apiClient = connectionManager.getApiClient(currentItem.ServerId); apiClient.ajax({ - type: "POST", + type: 'POST', url: apiClient.getUrl(url) }).then(function () { @@ -87,7 +87,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', apiClient.ajax({ - type: "DELETE", + type: 'DELETE', url: apiClient.getUrl(url) }).then(function () { diff --git a/src/components/subtitlesettings/subtitleappearancehelper.js b/src/components/subtitlesettings/subtitleappearancehelper.js index fdc64f0dfa..bec8156aca 100644 --- a/src/components/subtitlesettings/subtitleappearancehelper.js +++ b/src/components/subtitlesettings/subtitleappearancehelper.js @@ -1,5 +1,5 @@ define([], function () { - "use strict"; + 'use strict'; function getTextStyles(settings, isCue) { diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index 2c86929192..d728360d05 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -1,13 +1,13 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loading', 'connectionManager', 'subtitleAppearanceHelper', 'dom', 'events', 'listViewStyle', 'emby-select', 'emby-input', 'emby-checkbox', 'flexStyles'], function (require, globalize, appSettings, appHost, focusManager, loading, connectionManager, subtitleAppearanceHelper, dom, events) { - "use strict"; + 'use strict'; function populateLanguages(select, languages) { - var html = ""; + var html = ''; - html += ""; + html += "'; for (var i = 0, length = languages.length; i < length; i++) { var culture = languages[i]; - html += ""; + html += "'; } select.innerHTML = html; @@ -37,8 +37,8 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi populateLanguages(selectSubtitleLanguage, allCultures); - selectSubtitleLanguage.value = user.Configuration.SubtitleLanguagePreference || ""; - context.querySelector('#selectSubtitlePlaybackMode').value = user.Configuration.SubtitleMode || ""; + selectSubtitleLanguage.value = user.Configuration.SubtitleLanguagePreference || ''; + context.querySelector('#selectSubtitlePlaybackMode').value = user.Configuration.SubtitleMode || ''; context.querySelector('#selectSubtitlePlaybackMode').dispatchEvent(new CustomEvent('change', {})); diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index 29d110f12e..4927029189 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -1,5 +1,5 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', 'css!./subtitlesync'], function (playbackManager, layoutManager, template, css) { - "use strict"; + 'use strict'; var player; var subtitleSyncSlider; @@ -13,35 +13,35 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', document.body.appendChild(parent); parent.innerHTML = template; - subtitleSyncSlider = parent.querySelector(".subtitleSyncSlider"); - subtitleSyncTextField = parent.querySelector(".subtitleSyncTextField"); - subtitleSyncCloseButton = parent.querySelector(".subtitleSync-closeButton"); - subtitleSyncContainer = parent.querySelector(".subtitleSyncContainer"); + subtitleSyncSlider = parent.querySelector('.subtitleSyncSlider'); + subtitleSyncTextField = parent.querySelector('.subtitleSyncTextField'); + subtitleSyncCloseButton = parent.querySelector('.subtitleSync-closeButton'); + subtitleSyncContainer = parent.querySelector('.subtitleSyncContainer'); if (layoutManager.tv) { - subtitleSyncSlider.classList.add("focusable"); + subtitleSyncSlider.classList.add('focusable'); // HACK: Delay to give time for registered element attach (Firefox) setTimeout(function () { subtitleSyncSlider.enableKeyboardDragging(); }, 0); } - subtitleSyncContainer.classList.add("hide"); + subtitleSyncContainer.classList.add('hide'); subtitleSyncTextField.updateOffset = function(offset) { - this.textContent = offset + "s"; + this.textContent = offset + 's'; }; - subtitleSyncTextField.addEventListener("keypress", function(event) { + 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) { inputOffset = inputOffset[0]; // replace current text by considered offset - this.textContent = inputOffset + "s"; + this.textContent = inputOffset + 's'; inputOffset = parseFloat(inputOffset); // set new offset @@ -50,7 +50,7 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', subtitleSyncSlider.updateOffset( getPercentageFromOffset(inputOffset)); } else { - this.textContent = (playbackManager.getPlayerSubtitleOffset(player) || 0) + "s"; + this.textContent = (playbackManager.getPlayerSubtitleOffset(player) || 0) + 's'; } this.hasFocus = false; event.preventDefault(); @@ -68,7 +68,7 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', this.value = percent === undefined ? 50 : percent; }; - subtitleSyncSlider.addEventListener("change", function () { + subtitleSyncSlider.addEventListener('change', function () { // set new offset playbackManager.setSubtitleOffset(getOffsetFromPercentage(this.value), player); // synchronize with textField value @@ -76,7 +76,7 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', getOffsetFromPercentage(this.value)); }); - subtitleSyncSlider.addEventListener("touchmove", function () { + subtitleSyncSlider.addEventListener('touchmove', function () { // set new offset playbackManager.setSubtitleOffset(getOffsetFromPercentage(this.value), player); // synchronize with textField value @@ -87,13 +87,13 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', subtitleSyncSlider.getBubbleHtml = function (value) { var newOffset = getOffsetFromPercentage(value); return '

' + - (newOffset > 0 ? "+" : "") + parseFloat(newOffset) + "s" + - "

"; + (newOffset > 0 ? '+' : '') + parseFloat(newOffset) + 's' + + ''; }; - subtitleSyncCloseButton.addEventListener("click", function() { + subtitleSyncCloseButton.addEventListener('click', function() { playbackManager.disableShowingSubtitleOffset(player); - SubtitleSync.prototype.toggle("forceToHide"); + SubtitleSync.prototype.toggle('forceToHide'); }); instance.element = parent; @@ -122,7 +122,7 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', } SubtitleSync.prototype.destroy = function() { - SubtitleSync.prototype.toggle("forceToHide"); + SubtitleSync.prototype.toggle('forceToHide'); if (player) { playbackManager.disableShowingSubtitleOffset(player); playbackManager.setSubtitleOffset(0, player); @@ -147,21 +147,21 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', // if no subtitle offset is defined if (!playbackManager.getPlayerSubtitleOffset(player)) { // set default offset to '0' = 50% - subtitleSyncSlider.value = "50"; - subtitleSyncTextField.textContent = "0s"; + subtitleSyncSlider.value = '50'; + subtitleSyncTextField.textContent = '0s'; playbackManager.setSubtitleOffset(0, player); } // show subtitle sync - subtitleSyncContainer.classList.remove("hide"); + subtitleSyncContainer.classList.remove('hide'); break; // stop here } // else continue and hide - case "hide": + case 'hide': // only break if element has focus if (subtitleSyncTextField.hasFocus) { break; } - case "forceToHide": - subtitleSyncContainer.classList.add("hide"); + case 'forceToHide': + subtitleSyncContainer.classList.add('hide'); break; } /* eslint-enable no-fallthrough */ diff --git a/src/components/toast/toast.js b/src/components/toast/toast.js index 22eb53396c..7b8e49e4d2 100644 --- a/src/components/toast/toast.js +++ b/src/components/toast/toast.js @@ -26,7 +26,7 @@ define(['css!./toast'], function () { }; } - var elem = document.createElement("div"); + var elem = document.createElement('div'); elem.classList.add('toast'); elem.innerHTML = options.text; diff --git a/src/components/tunerpicker.js b/src/components/tunerpicker.js index 310f75808c..e7c92851a4 100644 --- a/src/components/tunerpicker.js +++ b/src/components/tunerpicker.js @@ -1,38 +1,38 @@ -define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize", "loading", "browser", "focusManager", "scrollHelper", "material-icons", "formDialogStyle", "emby-button", "emby-itemscontainer", "cardStyle"], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser, focusManager, scrollHelper) { - "use strict"; +define(['dialogHelper', 'dom', 'layoutManager', 'connectionManager', 'globalize', 'loading', 'browser', 'focusManager', 'scrollHelper', 'material-icons', 'formDialogStyle', 'emby-button', 'emby-itemscontainer', 'cardStyle'], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser, focusManager, scrollHelper) { + 'use strict'; var enableFocusTransform = !browser.slow && !browser.edge; function getEditorHtml() { - var html = ""; + var html = ''; html += '
'; html += '
'; html += '
'; - html += "

" + globalize.translate("DetectingDevices") + "...

"; - html += "

" + globalize.translate("MessagePleaseWait") + "

"; - html += "
"; - html += '

' + globalize.translate("HeaderNewDevices") + "

"; + html += '

' + globalize.translate('DetectingDevices') + '...

'; + html += '

' + globalize.translate('MessagePleaseWait') + '

'; + html += '
'; + html += '

' + globalize.translate('HeaderNewDevices') + '

'; html += '
'; - html += "
"; - html += "
"; - return html += ""; + html += ''; + html += ''; + return html += ''; } function getDeviceHtml(device) { var padderClass; - var html = ""; - var cssClass = "card scalableCard"; - var cardBoxCssClass = "cardBox visualCardBox"; - cssClass += " backdropCard backdropCard-scalable"; - padderClass = "cardPadder-backdrop"; + var html = ''; + var cssClass = 'card scalableCard'; + var cardBoxCssClass = 'cardBox visualCardBox'; + cssClass += ' backdropCard backdropCard-scalable'; + padderClass = 'cardPadder-backdrop'; // TODO move card creation code to Card component if (layoutManager.tv) { - cssClass += " show-focus"; + cssClass += ' show-focus'; if (enableFocusTransform) { - cssClass += " show-animation"; + cssClass += ' show-animation'; } } @@ -42,55 +42,55 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" html += '
'; html += '
'; html += '
'; - html += "
"; - html += ""; + html += ''; + html += ''; html += '
'; - html += '
' + getTunerName(device.Type) + "
"; - html += '
' + device.FriendlyName + "
"; + html += '
' + getTunerName(device.Type) + '
'; + html += '
' + device.FriendlyName + '
'; html += '
'; - html += device.Url || " "; - html += "
"; - html += "
"; - html += ""; - return html += ""; + html += device.Url || ' '; + html += ''; + html += ''; + html += ''; + return html += ''; } function getTunerName(providerId) { switch (providerId = providerId.toLowerCase()) { - case "m3u": - return "M3U"; + case 'm3u': + return 'M3U'; - case "hdhomerun": - return "HDHomerun"; + case 'hdhomerun': + return 'HDHomerun'; - case "hauppauge": - return "Hauppauge"; + case 'hauppauge': + return 'Hauppauge'; - case "satip": - return "DVB"; + case 'satip': + return 'DVB'; default: - return "Unknown"; + return 'Unknown'; } } function renderDevices(view, devices) { var i; var length; - var html = ""; + var html = ''; for (i = 0, length = devices.length; i < length; i++) { html += getDeviceHtml(devices[i]); } if (devices.length) { - view.querySelector(".devicesHeader").classList.remove("hide"); + view.querySelector('.devicesHeader').classList.remove('hide'); } else { - html = "


" + globalize.translate("NoNewDevicesFound") + "

"; - view.querySelector(".devicesHeader").classList.add("hide"); + html = '


' + globalize.translate('NoNewDevicesFound') + '

'; + view.querySelector('.devicesHeader').classList.add('hide'); } - var elem = view.querySelector(".results"); + var elem = view.querySelector('.results'); elem.innerHTML = html; if (layoutManager.tv) { @@ -100,13 +100,13 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" function discoverDevices(view, apiClient) { loading.show(); - view.querySelector(".loadingContent").classList.remove("hide"); - return ApiClient.getJSON(ApiClient.getUrl("LiveTv/Tuners/Discvover", { + view.querySelector('.loadingContent').classList.remove('hide'); + return ApiClient.getJSON(ApiClient.getUrl('LiveTv/Tuners/Discvover', { NewDevicesOnly: true })).then(function (devices) { currentDevices = devices; renderDevices(view, devices); - view.querySelector(".loadingContent").classList.add("hide"); + view.querySelector('.loadingContent').classList.add('hide'); loading.hide(); }); } @@ -119,31 +119,31 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" }; if (layoutManager.tv) { - dialogOptions.size = "fullscreen"; + dialogOptions.size = 'fullscreen'; } else { - dialogOptions.size = "small"; + dialogOptions.size = 'small'; } var dlg = dialogHelper.createDialog(dialogOptions); - dlg.classList.add("formDialog"); - var html = ""; + dlg.classList.add('formDialog'); + var html = ''; html += '
'; html += ''; html += '

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

"; - html += "
"; + html += globalize.translate('HeaderLiveTvTunerSetup'); + html += ''; + html += ''; html += getEditorHtml(); dlg.innerHTML = html; - dlg.querySelector(".btnCancel").addEventListener("click", function () { + dlg.querySelector('.btnCancel').addEventListener('click', function () { dialogHelper.close(dlg); }); var deviceResult; - dlg.querySelector(".results").addEventListener("click", function (e) { - var tunerCard = dom.parentWithClass(e.target, "card"); + dlg.querySelector('.results').addEventListener('click', function (e) { + var tunerCard = dom.parentWithClass(e.target, 'card'); if (tunerCard) { - var deviceId = tunerCard.getAttribute("data-id"); + var deviceId = tunerCard.getAttribute('data-id'); deviceResult = currentDevices.filter(function (d) { return d.DeviceId === deviceId; })[0]; @@ -152,14 +152,14 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" }); if (layoutManager.tv) { - scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"), false); + scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false); } var apiClient = connectionManager.getApiClient(options.serverId); discoverDevices(dlg, apiClient); if (layoutManager.tv) { - scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"), false); + scrollHelper.centerFocus.off(dlg.querySelector('.formDialogContent'), false); } return dialogHelper.open(dlg).then(function () { diff --git a/src/components/tvproviders/schedulesdirect.js b/src/components/tvproviders/schedulesdirect.js index 649ac5017b..be1cdf575b 100644 --- a/src/components/tvproviders/schedulesdirect.js +++ b/src/components/tvproviders/schedulesdirect.js @@ -1,31 +1,31 @@ -define(["jQuery", "loading", "globalize", "emby-checkbox", "listViewStyle", "emby-input", "emby-select", "emby-button", "flexStyles"], function ($, loading, globalize) { - "use strict"; +define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emby-input', 'emby-select', 'emby-button', 'flexStyles'], function ($, loading, globalize) { + 'use strict'; return function (page, providerId, options) { function reload() { loading.show(); - ApiClient.getNamedConfiguration("livetv").then(function (config) { + ApiClient.getNamedConfiguration('livetv').then(function (config) { var info = config.ListingProviders.filter(function (i) { return i.Id === providerId; })[0] || {}; listingsId = info.ListingsId; - $("#selectListing", page).val(info.ListingsId || ""); - page.querySelector(".txtUser").value = info.Username || ""; - page.querySelector(".txtPass").value = ""; - page.querySelector(".txtZipCode").value = info.ZipCode || ""; + $('#selectListing', page).val(info.ListingsId || ''); + page.querySelector('.txtUser').value = info.Username || ''; + page.querySelector('.txtPass').value = ''; + page.querySelector('.txtZipCode').value = info.ZipCode || ''; if (info.Username && info.Password) { - page.querySelector(".listingsSection").classList.remove("hide"); + page.querySelector('.listingsSection').classList.remove('hide'); } else { - page.querySelector(".listingsSection").classList.add("hide"); + page.querySelector('.listingsSection').classList.add('hide'); } - page.querySelector(".chkAllTuners").checked = info.EnableAllTuners; + page.querySelector('.chkAllTuners').checked = info.EnableAllTuners; if (info.EnableAllTuners) { - page.querySelector(".selectTunersSection").classList.add("hide"); + page.querySelector('.selectTunersSection').classList.add('hide'); } else { - page.querySelector(".selectTunersSection").classList.remove("hide"); + page.querySelector('.selectTunersSection').classList.remove('hide'); } setCountry(info); @@ -34,7 +34,7 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "listViewStyle", "emb } function setCountry(info) { - ApiClient.getJSON(ApiClient.getUrl("LiveTv/ListingProviders/SchedulesDirect/Countries")).then(function (result) { + ApiClient.getJSON(ApiClient.getUrl('LiveTv/ListingProviders/SchedulesDirect/Countries')).then(function (result) { var i; var length; var countryList = []; @@ -42,7 +42,7 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "listViewStyle", "emb for (var region in result) { var countries = result[region]; - if (countries.length && "ZZZ" !== region) { + if (countries.length && 'ZZZ' !== region) { for (i = 0, length = countries.length; i < length; i++) { countryList.push({ name: countries[i].fullName, @@ -63,13 +63,13 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "listViewStyle", "emb return 0; }); - $("#selectCountry", page).html(countryList.map(function (c) { - return '"; - }).join("")).val(info.Country || ""); - $(page.querySelector(".txtZipCode")).trigger("change"); + $('#selectCountry', page).html(countryList.map(function (c) { + return ''; + }).join('')).val(info.Country || ''); + $(page.querySelector('.txtZipCode')).trigger('change'); }, function () { // ApiClient.getJSON() error handler Dashboard.alert({ - message: globalize.translate("ErrorGettingTvLineups") + message: globalize.translate('ErrorGettingTvLineups') }); }); loading.hide(); @@ -77,11 +77,11 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "listViewStyle", "emb function sha256(str) { if (!self.TextEncoder) { - return Promise.resolve(""); + return Promise.resolve(''); } - var buffer = new TextEncoder("utf-8").encode(str); - return crypto.subtle.digest("SHA-256", buffer).then(function (hash) { + var buffer = new TextEncoder('utf-8').encode(str); + return crypto.subtle.digest('SHA-256', buffer).then(function (hash) { return hex(hash); }); } @@ -93,22 +93,22 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "listViewStyle", "emb for (var i = 0; i < view.byteLength; i += 4) { var value = view.getUint32(i); var stringValue = value.toString(16); - var paddedValue = ("00000000" + stringValue).slice(-"00000000".length); + var paddedValue = ('00000000' + stringValue).slice(-'00000000'.length); hexCodes.push(paddedValue); } - return hexCodes.join(""); + return hexCodes.join(''); } function submitLoginForm() { loading.show(); - sha256(page.querySelector(".txtPass").value).then(function (passwordHash) { + sha256(page.querySelector('.txtPass').value).then(function (passwordHash) { var info = { - Type: "SchedulesDirect", - Username: page.querySelector(".txtUser").value, + Type: 'SchedulesDirect', + Username: page.querySelector('.txtUser').value, EnableAllTuners: true, Password: passwordHash, - Pw: page.querySelector(".txtPass").value + Pw: page.querySelector('.txtPass').value }; var id = providerId; @@ -117,56 +117,56 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "listViewStyle", "emb } ApiClient.ajax({ - type: "POST", - url: ApiClient.getUrl("LiveTv/ListingProviders", { + type: 'POST', + url: ApiClient.getUrl('LiveTv/ListingProviders', { ValidateLogin: true }), data: JSON.stringify(info), - contentType: "application/json", - dataType: "json" + contentType: 'application/json', + dataType: 'json' }).then(function (result) { Dashboard.processServerConfigurationUpdateResult(); providerId = result.Id; reload(); }, function () { Dashboard.alert({ // ApiClient.ajax() error handler - message: globalize.translate("ErrorSavingTvProvider") + message: globalize.translate('ErrorSavingTvProvider') }); }); }); } function submitListingsForm() { - var selectedListingsId = $("#selectListing", page).val(); + var selectedListingsId = $('#selectListing', page).val(); if (!selectedListingsId) { return void Dashboard.alert({ - message: globalize.translate("ErrorPleaseSelectLineup") + message: globalize.translate('ErrorPleaseSelectLineup') }); } loading.show(); var id = providerId; - ApiClient.getNamedConfiguration("livetv").then(function (config) { + ApiClient.getNamedConfiguration('livetv').then(function (config) { var info = config.ListingProviders.filter(function (i) { return i.Id === id; })[0]; - info.ZipCode = page.querySelector(".txtZipCode").value; - info.Country = $("#selectCountry", page).val(); + info.ZipCode = page.querySelector('.txtZipCode').value; + info.Country = $('#selectCountry', page).val(); info.ListingsId = selectedListingsId; - info.EnableAllTuners = page.querySelector(".chkAllTuners").checked; - info.EnabledTuners = info.EnableAllTuners ? [] : $(".chkTuner", page).get().filter(function (i) { + info.EnableAllTuners = page.querySelector('.chkAllTuners').checked; + info.EnabledTuners = info.EnableAllTuners ? [] : $('.chkTuner', page).get().filter(function (i) { return i.checked; }).map(function (i) { - return i.getAttribute("data-id"); + return i.getAttribute('data-id'); }); ApiClient.ajax({ - type: "POST", - url: ApiClient.getUrl("LiveTv/ListingProviders", { + type: 'POST', + url: ApiClient.getUrl('LiveTv/ListingProviders', { ValidateListings: true }), data: JSON.stringify(info), - contentType: "application/json" + contentType: 'application/json' }).then(function (result) { loading.hide(); @@ -174,11 +174,11 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "listViewStyle", "emb Dashboard.processServerConfigurationUpdateResult(); } - Events.trigger(self, "submitted"); + Events.trigger(self, 'submitted'); }, function () { loading.hide(); Dashboard.alert({ - message: globalize.translate("ErrorAddingListingsToSchedulesDirect") + message: globalize.translate('ErrorAddingListingsToSchedulesDirect') }); }); }); @@ -186,79 +186,79 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "listViewStyle", "emb function refreshListings(value) { if (!value) { - return void $("#selectListing", page).html(""); + return void $('#selectListing', page).html(''); } loading.show(); ApiClient.ajax({ - type: "GET", - url: ApiClient.getUrl("LiveTv/ListingProviders/Lineups", { + type: 'GET', + url: ApiClient.getUrl('LiveTv/ListingProviders/Lineups', { Id: providerId, Location: value, - Country: $("#selectCountry", page).val() + Country: $('#selectCountry', page).val() }), - dataType: "json" + dataType: 'json' }).then(function (result) { - $("#selectListing", page).html(result.map(function (o) { - return '"; + $('#selectListing', page).html(result.map(function (o) { + return ''; })); if (listingsId) { - $("#selectListing", page).val(listingsId); + $('#selectListing', page).val(listingsId); } loading.hide(); }, function (result) { Dashboard.alert({ - message: globalize.translate("ErrorGettingTvLineups") + message: globalize.translate('ErrorGettingTvLineups') }); - refreshListings(""); + refreshListings(''); loading.hide(); }); } function getTunerName(providerId) { switch (providerId = providerId.toLowerCase()) { - case "m3u": - return "M3U Playlist"; - case "hdhomerun": - return "HDHomerun"; - case "satip": - return "DVB"; + case 'm3u': + return 'M3U Playlist'; + case 'hdhomerun': + return 'HDHomerun'; + case 'satip': + return 'DVB'; default: - return "Unknown"; + return 'Unknown'; } } function refreshTunerDevices(page, providerInfo, devices) { - var html = ""; + var html = ''; for (var i = 0, length = devices.length; i < length; i++) { var device = devices[i]; html += '
'; var enabledTuners = providerInfo.EnabledTuners || []; var isChecked = providerInfo.EnableAllTuners || -1 !== enabledTuners.indexOf(device.Id); - var checkedAttribute = isChecked ? " checked" : ""; - html += '"; + var checkedAttribute = isChecked ? ' checked' : ''; + html += ''; html += '
'; html += '
'; html += device.FriendlyName || getTunerName(device.Type); - html += "
"; + html += '
'; html += '
'; html += device.Url; - html += "
"; - html += "
"; - html += ""; + html += ''; + html += ''; + html += ''; } - page.querySelector(".tunerList").innerHTML = html; + page.querySelector('.tunerList').innerHTML = html; } var listingsId; var self = this; self.submit = function () { - page.querySelector(".btnSubmitListingsContainer").click(); + page.querySelector('.btnSubmitListingsContainer').click(); }; self.init = function () { @@ -267,30 +267,30 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "listViewStyle", "emb // Only hide the buttons if explicitly set to false; default to showing if undefined or null // FIXME: rename this option to clarify logic var hideCancelButton = options.showCancelButton === false; - page.querySelector(".btnCancel").classList.toggle("hide", hideCancelButton); + page.querySelector('.btnCancel').classList.toggle('hide', hideCancelButton); var hideSubmitButton = options.showSubmitButton === false; - page.querySelector(".btnSubmitListings").classList.toggle("hide", hideSubmitButton); + page.querySelector('.btnSubmitListings').classList.toggle('hide', hideSubmitButton); - $(".formLogin", page).on("submit", function () { + $('.formLogin', page).on('submit', function () { submitLoginForm(); return false; }); - $(".formListings", page).on("submit", function () { + $('.formListings', page).on('submit', function () { submitListingsForm(); return false; }); - $(".txtZipCode", page).on("change", function () { + $('.txtZipCode', page).on('change', function () { refreshListings(this.value); }); - page.querySelector(".chkAllTuners").addEventListener("change", function (e) { + page.querySelector('.chkAllTuners').addEventListener('change', function (e) { if (e.target.checked) { - page.querySelector(".selectTunersSection").classList.add("hide"); + page.querySelector('.selectTunersSection').classList.add('hide'); } else { - page.querySelector(".selectTunersSection").classList.remove("hide"); + page.querySelector('.selectTunersSection').classList.remove('hide'); } }); - $(".createAccountHelp", page).html(globalize.translate("MessageCreateAccountAt", 'http://www.schedulesdirect.org')); + $('.createAccountHelp', page).html(globalize.translate('MessageCreateAccountAt', 'http://www.schedulesdirect.org')); reload(); }; }; diff --git a/src/components/tvproviders/xmltv.js b/src/components/tvproviders/xmltv.js index 991ed49a49..4c39b14430 100644 --- a/src/components/tvproviders/xmltv.js +++ b/src/components/tvproviders/xmltv.js @@ -1,5 +1,5 @@ -define(["jQuery", "loading", "globalize", "emby-checkbox", "emby-input", "listViewStyle", "paper-icon-button-light"], function ($, loading, globalize) { - "use strict"; +define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listViewStyle', 'paper-icon-button-light'], function ($, loading, globalize) { + 'use strict'; return function (page, providerId, options) { function getListingProvider(config, id) { @@ -15,26 +15,26 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "emby-input", "listVi return getListingProvider(); } - return ApiClient.getJSON(ApiClient.getUrl("LiveTv/ListingProviders/Default")); + return ApiClient.getJSON(ApiClient.getUrl('LiveTv/ListingProviders/Default')); } function reload() { loading.show(); - ApiClient.getNamedConfiguration("livetv").then(function (config) { + ApiClient.getNamedConfiguration('livetv').then(function (config) { getListingProvider(config, providerId).then(function (info) { - page.querySelector(".txtPath").value = info.Path || ""; - page.querySelector(".txtKids").value = (info.KidsCategories || []).join("|"); - page.querySelector(".txtNews").value = (info.NewsCategories || []).join("|"); - page.querySelector(".txtSports").value = (info.SportsCategories || []).join("|"); - page.querySelector(".txtMovies").value = (info.MovieCategories || []).join("|"); - page.querySelector(".txtMoviePrefix").value = info.MoviePrefix || ""; - page.querySelector(".txtUserAgent").value = info.UserAgent || ""; - page.querySelector(".chkAllTuners").checked = info.EnableAllTuners; + page.querySelector('.txtPath').value = info.Path || ''; + page.querySelector('.txtKids').value = (info.KidsCategories || []).join('|'); + page.querySelector('.txtNews').value = (info.NewsCategories || []).join('|'); + page.querySelector('.txtSports').value = (info.SportsCategories || []).join('|'); + page.querySelector('.txtMovies').value = (info.MovieCategories || []).join('|'); + page.querySelector('.txtMoviePrefix').value = info.MoviePrefix || ''; + page.querySelector('.txtUserAgent').value = info.UserAgent || ''; + page.querySelector('.chkAllTuners').checked = info.EnableAllTuners; - if (page.querySelector(".chkAllTuners").checked) { - page.querySelector(".selectTunersSection").classList.add("hide"); + if (page.querySelector('.chkAllTuners').checked) { + page.querySelector('.selectTunersSection').classList.add('hide'); } else { - page.querySelector(".selectTunersSection").classList.remove("hide"); + page.querySelector('.selectTunersSection').classList.remove('hide'); } refreshTunerDevices(page, info, config.TunerHosts); @@ -47,7 +47,7 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "emby-input", "listVi var value = txtInput.value; if (value) { - return value.split("|"); + return value.split('|'); } return []; @@ -56,31 +56,31 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "emby-input", "listVi function submitListingsForm() { loading.show(); var id = providerId; - ApiClient.getNamedConfiguration("livetv").then(function (config) { + ApiClient.getNamedConfiguration('livetv').then(function (config) { var info = config.ListingProviders.filter(function (provider) { return provider.Id === id; })[0] || {}; - info.Type = "xmltv"; - info.Path = page.querySelector(".txtPath").value; - info.MoviePrefix = page.querySelector(".txtMoviePrefix").value || null; - info.UserAgent = page.querySelector(".txtUserAgent").value || null; - info.MovieCategories = getCategories(page.querySelector(".txtMovies")); - info.KidsCategories = getCategories(page.querySelector(".txtKids")); - info.NewsCategories = getCategories(page.querySelector(".txtNews")); - info.SportsCategories = getCategories(page.querySelector(".txtSports")); - info.EnableAllTuners = page.querySelector(".chkAllTuners").checked; - info.EnabledTuners = info.EnableAllTuners ? [] : $(".chkTuner", page).get().filter(function (tuner) { + info.Type = 'xmltv'; + info.Path = page.querySelector('.txtPath').value; + info.MoviePrefix = page.querySelector('.txtMoviePrefix').value || null; + info.UserAgent = page.querySelector('.txtUserAgent').value || null; + info.MovieCategories = getCategories(page.querySelector('.txtMovies')); + info.KidsCategories = getCategories(page.querySelector('.txtKids')); + info.NewsCategories = getCategories(page.querySelector('.txtNews')); + info.SportsCategories = getCategories(page.querySelector('.txtSports')); + info.EnableAllTuners = page.querySelector('.chkAllTuners').checked; + info.EnabledTuners = info.EnableAllTuners ? [] : $('.chkTuner', page).get().filter(function (tuner) { return tuner.checked; }).map(function (tuner) { - return tuner.getAttribute("data-id"); + return tuner.getAttribute('data-id'); }); ApiClient.ajax({ - type: "POST", - url: ApiClient.getUrl("LiveTv/ListingProviders", { + type: 'POST', + url: ApiClient.getUrl('LiveTv/ListingProviders', { ValidateListings: true }), data: JSON.stringify(info), - contentType: "application/json" + contentType: 'application/json' }).then(function (result) { loading.hide(); @@ -88,11 +88,11 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "emby-input", "listVi Dashboard.processServerConfigurationUpdateResult(); } - Events.trigger(self, "submitted"); + Events.trigger(self, 'submitted'); }, function () { loading.hide(); Dashboard.alert({ - message: globalize.translate("ErrorAddingXmlTvFile") + message: globalize.translate('ErrorAddingXmlTvFile') }); }); }); @@ -100,51 +100,51 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "emby-input", "listVi function getTunerName(providerId) { switch (providerId = providerId.toLowerCase()) { - case "m3u": - return "M3U Playlist"; - case "hdhomerun": - return "HDHomerun"; - case "satip": - return "DVB"; + case 'm3u': + return 'M3U Playlist'; + case 'hdhomerun': + return 'HDHomerun'; + case 'satip': + return 'DVB'; default: - return "Unknown"; + return 'Unknown'; } } function refreshTunerDevices(page, providerInfo, devices) { - var html = ""; + var html = ''; for (var i = 0, length = devices.length; i < length; i++) { var device = devices[i]; html += '
'; var enabledTuners = providerInfo.EnabledTuners || []; var isChecked = providerInfo.EnableAllTuners || -1 !== enabledTuners.indexOf(device.Id); - var checkedAttribute = isChecked ? " checked" : ""; - html += '"; + var checkedAttribute = isChecked ? ' checked' : ''; + html += ''; html += '
'; html += '
'; html += device.FriendlyName || getTunerName(device.Type); - html += "
"; + html += '
'; html += '
'; html += device.Url; - html += "
"; - html += "
"; - html += ""; + html += ''; + html += ''; + html += ''; } - page.querySelector(".tunerList").innerHTML = html; + page.querySelector('.tunerList').innerHTML = html; } function onSelectPathClick(e) { - var page = $(e.target).parents(".xmltvForm")[0]; + var page = $(e.target).parents('.xmltvForm')[0]; - require(["directorybrowser"], function (directoryBrowser) { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { if (path) { - var txtPath = page.querySelector(".txtPath"); + var txtPath = page.querySelector('.txtPath'); txtPath.value = path; txtPath.focus(); } @@ -157,7 +157,7 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "emby-input", "listVi var self = this; self.submit = function () { - page.querySelector(".btnSubmitListings").click(); + page.querySelector('.btnSubmitListings').click(); }; self.init = function () { @@ -166,21 +166,21 @@ define(["jQuery", "loading", "globalize", "emby-checkbox", "emby-input", "listVi // Only hide the buttons if explicitly set to false; default to showing if undefined or null // FIXME: rename this option to clarify logic var hideCancelButton = options.showCancelButton === false; - page.querySelector(".btnCancel").classList.toggle("hide", hideCancelButton); + page.querySelector('.btnCancel').classList.toggle('hide', hideCancelButton); var hideSubmitButton = options.showSubmitButton === false; - page.querySelector(".btnSubmitListings").classList.toggle("hide", hideSubmitButton); + page.querySelector('.btnSubmitListings').classList.toggle('hide', hideSubmitButton); - $("form", page).on("submit", function () { + $('form', page).on('submit', function () { submitListingsForm(); return false; }); - page.querySelector("#btnSelectPath").addEventListener("click", onSelectPathClick); - page.querySelector(".chkAllTuners").addEventListener("change", function (evt) { + page.querySelector('#btnSelectPath').addEventListener('click', onSelectPathClick); + page.querySelector('.chkAllTuners').addEventListener('change', function (evt) { if (evt.target.checked) { - page.querySelector(".selectTunersSection").classList.add("hide"); + page.querySelector('.selectTunersSection').classList.add('hide'); } else { - page.querySelector(".selectTunersSection").classList.remove("hide"); + page.querySelector('.selectTunersSection').classList.remove('hide'); } }); reload(); diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index 225859e0b3..3e9c9f9c5e 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -10,7 +10,7 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l } options = options || {}; - options.type = options.type || "Primary"; + options.type = options.type || 'Primary'; if (options.type === 'Primary') { @@ -44,7 +44,7 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l function imageUrl(item, options) { options = options || {}; - options.type = options.type || "Primary"; + options.type = options.type || 'Primary'; if (item.ImageTags && item.ImageTags[options.type]) { diff --git a/src/components/userdatabuttons/userdatabuttons.js b/src/components/userdatabuttons/userdatabuttons.js index c7890a2fcf..86b9902133 100644 --- a/src/components/userdatabuttons/userdatabuttons.js +++ b/src/components/userdatabuttons/userdatabuttons.js @@ -90,10 +90,10 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto return html; } - var btnCssClass = "btnUserData"; + var btnCssClass = 'btnUserData'; if (cssClass) { - btnCssClass += " " + cssClass; + btnCssClass += ' ' + cssClass; } var iconCssClass = options.iconCssClass; diff --git a/src/components/viewContainer.js b/src/components/viewContainer.js index 607e7029d1..6c83e4a3ba 100644 --- a/src/components/viewContainer.js +++ b/src/components/viewContainer.js @@ -1,16 +1,16 @@ -define(["browser", "dom", "layoutManager", "css!components/viewManager/viewContainer"], function (browser, dom, layoutManager) { - "use strict"; +define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewContainer'], function (browser, dom, layoutManager) { + 'use strict'; function setControllerClass(view, options) { if (options.controllerFactory) { return Promise.resolve(); } - var controllerUrl = view.getAttribute("data-controller"); + var controllerUrl = view.getAttribute('data-controller'); if (controllerUrl) { - if (0 === controllerUrl.indexOf("__plugin/")) { - controllerUrl = controllerUrl.substring("__plugin/".length); + if (0 === controllerUrl.indexOf('__plugin/')) { + controllerUrl = controllerUrl.substring('__plugin/'.length); } controllerUrl = Dashboard.getConfigurationResourceUrl(controllerUrl); @@ -38,21 +38,21 @@ define(["browser", "dom", "layoutManager", "css!components/viewManager/viewConta pageIndex = 0; } - var isPluginpage = -1 !== options.url.toLowerCase().indexOf("/configurationpage"); + var isPluginpage = -1 !== options.url.toLowerCase().indexOf('/configurationpage'); var newViewInfo = normalizeNewView(options, isPluginpage); var newView = newViewInfo.elem; var modulesToLoad = []; if (isPluginpage) { - modulesToLoad.push("legacyDashboard"); + modulesToLoad.push('legacyDashboard'); } if (newViewInfo.hasjQuerySelect) { - modulesToLoad.push("legacySelectMenu"); + modulesToLoad.push('legacySelectMenu'); } if (newViewInfo.hasjQueryChecked) { - modulesToLoad.push("fnchecked"); + modulesToLoad.push('fnchecked'); } return new Promise(function (resolve) { @@ -65,12 +65,12 @@ define(["browser", "dom", "layoutManager", "css!components/viewManager/viewConta var view = newView; - if ("string" == typeof view) { - view = document.createElement("div"); + if ('string' == typeof view) { + view = document.createElement('div'); view.innerHTML = newView; } - view.classList.add("mainAnimatedPage"); + view.classList.add('mainAnimatedPage'); if (currentPage) { if (newViewInfo.hasScript && window.$) { @@ -88,17 +88,17 @@ define(["browser", "dom", "layoutManager", "css!components/viewManager/viewConta } if (options.type) { - view.setAttribute("data-type", options.type); + view.setAttribute('data-type', options.type); } var properties = []; if (options.fullscreen) { - properties.push("fullscreen"); + properties.push('fullscreen'); } if (properties.length) { - view.setAttribute("data-properties", properties.join(",")); + view.setAttribute('data-properties', properties.join(',')); } allPages[pageIndex] = view; @@ -133,11 +133,11 @@ define(["browser", "dom", "layoutManager", "css!components/viewManager/viewConta function parseHtml(html, hasScript) { if (hasScript) { - html = replaceAll(html, "\x3c!----\x3e", "<\/script>"); + html = replaceAll(html, '\x3c!----\x3e', '<\/script>'); } - var wrapper = document.createElement("div"); + var wrapper = document.createElement('div'); wrapper.innerHTML = html; return wrapper.querySelector('div[data-role="page"]'); } @@ -149,11 +149,11 @@ define(["browser", "dom", "layoutManager", "css!components/viewManager/viewConta return viewHtml; } - var hasScript = -1 !== viewHtml.indexOf("https://github.com/jellyfin/jellyfin') + message: globalize.translate('ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin') }); break; - case "Unavailable": + case 'Unavailable': Dashboard.alert({ - message: globalize.translate("MessageUnableToConnectToServer"), - title: globalize.translate("HeaderConnectionFailure") + message: globalize.translate('MessageUnableToConnectToServer'), + title: globalize.translate('HeaderConnectionFailure') }); } } function submitServer(page) { loading.show(); - var host = page.querySelector("#txtServerHost").value; + var host = page.querySelector('#txtServerHost').value; ConnectionManager.connectToAddress(host, { enableAutoLogin: appSettings.enableAutoLogin() }).then(function(result) { handleConnectionResult(page, result); }, function() { handleConnectionResult(page, { - State: "Unavailable" + State: 'Unavailable' }); }); } return function(view, params) { - view.querySelector(".addServerForm").addEventListener("submit", onServerSubmit); - view.querySelector(".btnCancel").addEventListener("click", goBack); + view.querySelector('.addServerForm').addEventListener('submit', onServerSubmit); + view.querySelector('.btnCancel').addEventListener('click', goBack); - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(view); }); @@ -57,7 +57,7 @@ define(["appSettings", "loading", "browser", "globalize", "emby-button"], functi } function goBack() { - require(["appRouter"], function(appRouter) { + require(['appRouter'], function(appRouter) { appRouter.back(); }); } diff --git a/src/controllers/auth/forgotpassword.js b/src/controllers/auth/forgotpassword.js index 32052d1f77..3756bf814d 100644 --- a/src/controllers/auth/forgotpassword.js +++ b/src/controllers/auth/forgotpassword.js @@ -1,34 +1,34 @@ -define(["globalize"], function (globalize) { - "use strict"; +define(['globalize'], function (globalize) { + 'use strict'; function processForgotPasswordResult(result) { - if ("ContactAdmin" == result.Action) { + if ('ContactAdmin' == result.Action) { return void Dashboard.alert({ - message: globalize.translate("MessageContactAdminToResetPassword"), - title: globalize.translate("HeaderForgotPassword") + message: globalize.translate('MessageContactAdminToResetPassword'), + title: globalize.translate('HeaderForgotPassword') }); } - if ("InNetworkRequired" == result.Action) { + if ('InNetworkRequired' == result.Action) { return void Dashboard.alert({ - message: globalize.translate("MessageForgotPasswordInNetworkRequired"), - title: globalize.translate("HeaderForgotPassword") + message: globalize.translate('MessageForgotPasswordInNetworkRequired'), + title: globalize.translate('HeaderForgotPassword') }); } - if ("PinCode" == result.Action) { - var msg = globalize.translate("MessageForgotPasswordFileCreated"); - msg += "
"; - msg += "
"; - msg += "Enter PIN here to finish Password Reset
"; - msg += "
"; + if ('PinCode' == result.Action) { + var msg = globalize.translate('MessageForgotPasswordFileCreated'); + msg += '
'; + msg += '
'; + msg += 'Enter PIN here to finish Password Reset
'; + msg += '
'; msg += result.PinFile; - msg += "
"; + msg += '
'; return void Dashboard.alert({ message: msg, - title: globalize.translate("HeaderForgotPassword"), + title: globalize.translate('HeaderForgotPassword'), callback: function () { - Dashboard.navigate("forgotpasswordpin.html"); + Dashboard.navigate('forgotpasswordpin.html'); } }); } @@ -37,17 +37,17 @@ define(["globalize"], function (globalize) { return function (view, params) { function onSubmit(e) { ApiClient.ajax({ - type: "POST", - url: ApiClient.getUrl("Users/ForgotPassword"), - dataType: "json", + type: 'POST', + url: ApiClient.getUrl('Users/ForgotPassword'), + dataType: 'json', data: { - EnteredUsername: view.querySelector("#txtName").value + EnteredUsername: view.querySelector('#txtName').value } }).then(processForgotPasswordResult); e.preventDefault(); return false; } - view.querySelector("form").addEventListener("submit", onSubmit); + view.querySelector('form').addEventListener('submit', onSubmit); }; }); diff --git a/src/controllers/auth/forgotpasswordpin.js b/src/controllers/auth/forgotpasswordpin.js index f88f57ad77..2a51890d2f 100644 --- a/src/controllers/auth/forgotpasswordpin.js +++ b/src/controllers/auth/forgotpasswordpin.js @@ -1,41 +1,41 @@ -define(["globalize"], function (globalize) { - "use strict"; +define(['globalize'], function (globalize) { + 'use strict'; function processForgotPasswordResult(result) { if (result.Success) { - var msg = globalize.translate("MessagePasswordResetForUsers"); - msg += "
"; - msg += "
"; - msg += result.UsersReset.join("
"); + var msg = globalize.translate('MessagePasswordResetForUsers'); + msg += '
'; + msg += '
'; + msg += result.UsersReset.join('
'); return void Dashboard.alert({ message: msg, - title: globalize.translate("HeaderPasswordReset"), + title: globalize.translate('HeaderPasswordReset'), callback: function () { - window.location.href = "index.html"; + window.location.href = 'index.html'; } }); } Dashboard.alert({ - message: globalize.translate("MessageInvalidForgotPasswordPin"), - title: globalize.translate("HeaderPasswordReset") + message: globalize.translate('MessageInvalidForgotPasswordPin'), + title: globalize.translate('HeaderPasswordReset') }); } return function (view, params) { function onSubmit(e) { ApiClient.ajax({ - type: "POST", - url: ApiClient.getUrl("Users/ForgotPassword/Pin"), - dataType: "json", + type: 'POST', + url: ApiClient.getUrl('Users/ForgotPassword/Pin'), + dataType: 'json', data: { - Pin: view.querySelector("#txtPin").value + Pin: view.querySelector('#txtPin').value } }).then(processForgotPasswordResult); e.preventDefault(); return false; } - view.querySelector("form").addEventListener("submit", onSubmit); + view.querySelector('form').addEventListener('submit', onSubmit); }; }); diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index 05075efe52..c0c37e27d6 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -1,5 +1,5 @@ -define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layoutManager", "browser", "globalize", "cardStyle", "emby-checkbox"], function (appHost, appSettings, dom, connectionManager, loading, layoutManager, browser, globalize) { - "use strict"; +define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layoutManager', 'browser', 'globalize', 'cardStyle', 'emby-checkbox'], function (appHost, appSettings, dom, connectionManager, loading, layoutManager, browser, globalize) { + 'use strict'; var enableFocusTransform = !browser.slow && !browser.edge; @@ -7,58 +7,58 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout loading.show(); apiClient.authenticateUserByName(username, password).then(function (result) { var user = result.User; - var serverId = getParameterByName("serverid"); + var serverId = getParameterByName('serverid'); var newUrl; if (user.Policy.IsAdministrator && !serverId) { - newUrl = "dashboard.html"; + newUrl = 'dashboard.html'; } else { - newUrl = "home.html"; + newUrl = 'home.html'; } loading.hide(); Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); Dashboard.navigate(newUrl); }, function (response) { - page.querySelector("#txtManualName").value = ""; - page.querySelector("#txtManualPassword").value = ""; + page.querySelector('#txtManualName').value = ''; + page.querySelector('#txtManualPassword').value = ''; loading.hide(); const UnauthorizedOrForbidden = [401, 403]; if (UnauthorizedOrForbidden.includes(response.status)) { - require(["toast"], function (toast) { - const messageKey = response.status === 401 ? "MessageInvalidUser" : "MessageUnauthorizedUser"; + require(['toast'], function (toast) { + const messageKey = response.status === 401 ? 'MessageInvalidUser' : 'MessageUnauthorizedUser'; toast(globalize.translate(messageKey)); }); } else { Dashboard.alert({ - message: globalize.translate("MessageUnableToConnectToServer"), - title: globalize.translate("HeaderConnectionFailure") + message: globalize.translate('MessageUnableToConnectToServer'), + title: globalize.translate('HeaderConnectionFailure') }); } }); } function showManualForm(context, showCancel, focusPassword) { - context.querySelector(".chkRememberLogin").checked = appSettings.enableAutoLogin(); - context.querySelector(".manualLoginForm").classList.remove("hide"); - context.querySelector(".visualLoginForm").classList.add("hide"); - context.querySelector(".btnManual").classList.add("hide"); + context.querySelector('.chkRememberLogin').checked = appSettings.enableAutoLogin(); + context.querySelector('.manualLoginForm').classList.remove('hide'); + context.querySelector('.visualLoginForm').classList.add('hide'); + context.querySelector('.btnManual').classList.add('hide'); if (focusPassword) { - context.querySelector("#txtManualPassword").focus(); + context.querySelector('#txtManualPassword').focus(); } else { - context.querySelector("#txtManualName").focus(); + context.querySelector('#txtManualName').focus(); } if (showCancel) { - context.querySelector(".btnCancel").classList.remove("hide"); + context.querySelector('.btnCancel').classList.remove('hide'); } else { - context.querySelector(".btnCancel").classList.add("hide"); + context.querySelector('.btnCancel').classList.add('hide'); } } - var metroColors = ["#6FBD45", "#4BB3DD", "#4164A5", "#E12026", "#800080", "#E1B222", "#008040", "#0094FF", "#FF00C7", "#FF870F", "#7F0037"]; + var metroColors = ['#6FBD45', '#4BB3DD', '#4164A5', '#E12026', '#800080', '#E1B222', '#008040', '#0094FF', '#FF00C7', '#FF870F', '#7F0037']; function getRandomMetroColor() { var index = Math.floor(Math.random() * (metroColors.length - 1)); @@ -82,23 +82,23 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout } function loadUserList(context, apiClient, users) { - var html = ""; + var html = ''; for (var i = 0; i < users.length; i++) { var user = users[i]; // TODO move card creation code to Card component - var cssClass = "card squareCard scalableCard squareCard-scalable"; + var cssClass = 'card squareCard scalableCard squareCard-scalable'; if (layoutManager.tv) { - cssClass += " show-focus"; + cssClass += ' show-focus'; if (enableFocusTransform) { - cssClass += " show-animation"; + cssClass += ' show-animation'; } } - var cardBoxCssClass = "cardBox cardBox-bottompadded"; + var cardBoxCssClass = 'cardBox cardBox-bottompadded'; html += '"; + html += '
' + user.Name + '
'; + html += ''; + html += ''; + html += ''; } - context.querySelector("#divUsers").innerHTML = html; + context.querySelector('#divUsers').innerHTML = html; } return function (view, params) { @@ -143,60 +143,60 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout } function showVisualForm() { - view.querySelector(".visualLoginForm").classList.remove("hide"); - view.querySelector(".manualLoginForm").classList.add("hide"); - view.querySelector(".btnManual").classList.remove("hide"); + view.querySelector('.visualLoginForm').classList.remove('hide'); + view.querySelector('.manualLoginForm').classList.add('hide'); + view.querySelector('.btnManual').classList.remove('hide'); - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(view); }); } - view.querySelector("#divUsers").addEventListener("click", function (e) { - var card = dom.parentWithClass(e.target, "card"); - var cardContent = card ? card.querySelector(".cardContent") : null; + view.querySelector('#divUsers').addEventListener('click', function (e) { + var card = dom.parentWithClass(e.target, 'card'); + var cardContent = card ? card.querySelector('.cardContent') : null; if (cardContent) { var context = view; - var id = cardContent.getAttribute("data-userid"); - var name = cardContent.getAttribute("data-username"); - var haspw = cardContent.getAttribute("data-haspw"); + var id = cardContent.getAttribute('data-userid'); + var name = cardContent.getAttribute('data-username'); + var haspw = cardContent.getAttribute('data-haspw'); if (id === 'manual') { - context.querySelector("#txtManualName").value = ""; + context.querySelector('#txtManualName').value = ''; showManualForm(context, true); } else if (haspw == 'false') { - authenticateUserByName(context, getApiClient(), name, ""); + authenticateUserByName(context, getApiClient(), name, ''); } else { - context.querySelector("#txtManualName").value = name; - context.querySelector("#txtManualPassword").value = ""; + context.querySelector('#txtManualName').value = name; + context.querySelector('#txtManualPassword').value = ''; showManualForm(context, true, true); } } }); - view.querySelector(".manualLoginForm").addEventListener("submit", function (e) { - appSettings.enableAutoLogin(view.querySelector(".chkRememberLogin").checked); + view.querySelector('.manualLoginForm').addEventListener('submit', function (e) { + appSettings.enableAutoLogin(view.querySelector('.chkRememberLogin').checked); var apiClient = getApiClient(); - authenticateUserByName(view, apiClient, view.querySelector("#txtManualName").value, view.querySelector("#txtManualPassword").value); + authenticateUserByName(view, apiClient, view.querySelector('#txtManualName').value, view.querySelector('#txtManualPassword').value); e.preventDefault(); return false; }); - view.querySelector(".btnForgotPassword").addEventListener("click", function () { - Dashboard.navigate("forgotpassword.html"); + view.querySelector('.btnForgotPassword').addEventListener('click', function () { + Dashboard.navigate('forgotpassword.html'); }); - view.querySelector(".btnCancel").addEventListener("click", showVisualForm); - view.querySelector(".btnManual").addEventListener("click", function () { - view.querySelector("#txtManualName").value = ""; + view.querySelector('.btnCancel').addEventListener('click', showVisualForm); + view.querySelector('.btnManual').addEventListener('click', function () { + view.querySelector('#txtManualName').value = ''; showManualForm(view, true); }); - view.querySelector(".btnSelectServer").addEventListener("click", function () { + view.querySelector('.btnSelectServer').addEventListener('click', function () { Dashboard.selectServer(); }); - view.addEventListener("viewshow", function (e) { + view.addEventListener('viewshow', function (e) { loading.show(); if (!appHost.supports('multiserver')) { - view.querySelector(".btnSelectServer").classList.add("hide"); + view.querySelector('.btnSelectServer').classList.add('hide'); } var apiClient = getApiClient(); @@ -205,14 +205,14 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout showVisualForm(); loadUserList(view, apiClient, users); } else { - view.querySelector("#txtManualName").value = ""; + view.querySelector('#txtManualName').value = ''; showManualForm(view, false, false); } }).catch().then(function () { loading.hide(); }); - apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function (options) { - view.querySelector(".disclaimer").textContent = options.LoginDisclaimer || ""; + apiClient.getJSON(apiClient.getUrl('Branding/Configuration')).then(function (options) { + view.querySelector('.disclaimer').textContent = options.LoginDisclaimer || ''; }); }); }; diff --git a/src/controllers/auth/selectserver.js b/src/controllers/auth/selectserver.js index e808404926..ba88313484 100644 --- a/src/controllers/auth/selectserver.js +++ b/src/controllers/auth/selectserver.js @@ -1,5 +1,5 @@ -define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focusManager", "connectionManager", "globalize", "actionsheet", "dom", "browser", "material-icons", "flexStyles", "emby-scroller", "emby-itemscontainer", "cardStyle", "emby-button"], function (loading, appRouter, layoutManager, appSettings, appHost, focusManager, connectionManager, globalize, actionSheet, dom, browser) { - "use strict"; +define(['loading', 'appRouter', 'layoutManager', 'appSettings', 'apphost', 'focusManager', 'connectionManager', 'globalize', 'actionsheet', 'dom', 'browser', 'material-icons', 'flexStyles', 'emby-scroller', 'emby-itemscontainer', 'cardStyle', 'emby-button'], function (loading, appRouter, layoutManager, appSettings, appHost, focusManager, connectionManager, globalize, actionSheet, dom, browser) { + 'use strict'; var enableFocusTransform = !browser.slow && !browser.edge; @@ -8,8 +8,8 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu return { name: server.Name, showIcon: true, - icon: "cast", - cardType: "", + icon: 'cast', + cardType: '', id: server.Id, server: server }; @@ -25,21 +25,21 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu // TODO move card creation code to Card component - var cssClass = "card overflowSquareCard loginSquareCard scalableCard overflowSquareCard-scalable"; + var cssClass = 'card overflowSquareCard loginSquareCard scalableCard overflowSquareCard-scalable'; if (layoutManager.tv) { - cssClass += " show-focus"; + cssClass += ' show-focus'; if (enableFocusTransform) { - cssClass += " show-animation"; + cssClass += ' show-animation'; } } - var cardBoxCssClass = "cardBox"; + var cardBoxCssClass = 'cardBox'; var innerOpening = '
'; var cardContainer = ''; - cardContainer += ''; return cardContainer; - }).join(""); - var itemsContainer = view.querySelector(".servers"); + }).join(''); + var itemsContainer = view.querySelector('.servers'); if (!items.length) { - html = '

' + globalize.translate("MessageNoServersAvailable") + "

"; + html = '

' + globalize.translate('MessageNoServersAvailable') + '

'; } itemsContainer.innerHTML = html; @@ -66,20 +66,20 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu } function updatePageStyle(view, params) { - if (params.showuser == "1") { - view.classList.add("libraryPage"); - view.classList.remove("standalonePage"); - view.classList.add("noSecondaryNavPage"); + if (params.showuser == '1') { + view.classList.add('libraryPage'); + view.classList.remove('standalonePage'); + view.classList.add('noSecondaryNavPage'); } else { - view.classList.add("standalonePage"); - view.classList.remove("libraryPage"); - view.classList.remove("noSecondaryNavPage"); + view.classList.add('standalonePage'); + view.classList.remove('libraryPage'); + view.classList.remove('noSecondaryNavPage'); } } function showGeneralError() { loading.hide(); - alertText(globalize.translate("DefaultErrorMessage")); + alertText(globalize.translate('DefaultErrorMessage')); } function alertText(text) { @@ -89,13 +89,13 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu } function alertTextWithOptions(options) { - require(["alert"], function (alert) { + require(['alert'], function (alert) { alert(options); }); } function showServerConnectionFailure() { - alertText(globalize.translate("MessageUnableToConnectToServer")); + alertText(globalize.translate('MessageUnableToConnectToServer')); } return function (view, params) { @@ -108,20 +108,20 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu var apiClient = result.ApiClient; switch (result.State) { - case "SignedIn": + case 'SignedIn': Dashboard.onServerChanged(apiClient.getCurrentUserId(), apiClient.accessToken(), apiClient); - Dashboard.navigate("home.html"); + Dashboard.navigate('home.html'); break; - case "ServerSignIn": + case 'ServerSignIn': Dashboard.onServerChanged(null, null, apiClient); - Dashboard.navigate("login.html?serverid=" + result.Servers[0].Id); + Dashboard.navigate('login.html?serverid=' + result.Servers[0].Id); break; - case "ServerUpdateNeeded": + case 'ServerUpdateNeeded': alertTextWithOptions({ - text: globalize.translate("core#ServerUpdateNeeded", "https://github.com/jellyfin/jellyfin"), - html: globalize.translate("core#ServerUpdateNeeded", 'https://github.com/jellyfin/jellyfin') + text: globalize.translate('core#ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin'), + html: globalize.translate('core#ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin') }); break; @@ -142,23 +142,23 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu function onServerClick(server) { var menuItems = []; menuItems.push({ - name: globalize.translate("Connect"), - id: "connect" + name: globalize.translate('Connect'), + id: 'connect' }); menuItems.push({ - name: globalize.translate("Delete"), - id: "delete" + name: globalize.translate('Delete'), + id: 'delete' }); actionSheet.show({ items: menuItems, title: server.Name }).then(function (id) { switch (id) { - case "connect": + case 'connect': connectToServer(server); break; - case "delete": + case 'delete': deleteServer(server); } }); @@ -180,7 +180,7 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu var servers; updatePageStyle(view, params); - view.addEventListener("viewshow", function (e) { + view.addEventListener('viewshow', function (e) { var isRestored = e.detail.isRestored; appRouter.setTitle(null); @@ -188,16 +188,16 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu loadServers(); } }); - view.querySelector(".servers").addEventListener("click", function (e) { - var card = dom.parentWithClass(e.target, "card"); + view.querySelector('.servers').addEventListener('click', function (e) { + var card = dom.parentWithClass(e.target, 'card'); if (card) { - var url = card.getAttribute("data-url"); + var url = card.getAttribute('data-url'); if (url) { appRouter.show(url); } else { - var id = card.getAttribute("data-id"); + var id = card.getAttribute('data-id'); onServerClick(servers.filter(function (s) { return s.Id === id; })[0]); diff --git a/src/controllers/dashboard/apikeys.js b/src/controllers/dashboard/apikeys.js index 448ffa29a7..f43bfd0329 100644 --- a/src/controllers/dashboard/apikeys.js +++ b/src/controllers/dashboard/apikeys.js @@ -1,13 +1,13 @@ -define(["datetime", "loading", "libraryMenu", "dom", "globalize", "emby-button"], function (datetime, loading, libraryMenu, dom, globalize) { - "use strict"; +define(['datetime', 'loading', 'libraryMenu', 'dom', 'globalize', 'emby-button'], function (datetime, loading, libraryMenu, dom, globalize) { + 'use strict'; function revoke(page, key) { - require(["confirm"], function (confirm) { - confirm(globalize.translate("MessageConfirmRevokeApiKey"), globalize.translate("HeaderConfirmRevokeApiKey")).then(function () { + require(['confirm'], function (confirm) { + confirm(globalize.translate('MessageConfirmRevokeApiKey'), globalize.translate('HeaderConfirmRevokeApiKey')).then(function () { loading.show(); ApiClient.ajax({ - type: "DELETE", - url: ApiClient.getUrl("Auth/Keys/" + key) + type: 'DELETE', + url: ApiClient.getUrl('Auth/Keys/' + key) }).then(function () { loadData(page); }); @@ -17,44 +17,44 @@ define(["datetime", "loading", "libraryMenu", "dom", "globalize", "emby-button"] function renderKeys(page, keys) { var rows = keys.map(function (item) { - var html = ""; + var html = ''; html += ''; html += ''; - html += '"; - html += ""; + html += ''; + html += ''; html += ''; html += item.AccessToken; - html += ""; + html += ''; html += ''; - html += item.AppName || ""; - html += ""; + html += item.AppName || ''; + html += ''; html += ''; var date = datetime.parseISO8601Date(item.DateCreated, true); - html += datetime.toLocaleDateString(date) + " " + datetime.getDisplayTime(date); - html += ""; - return html += ""; - }).join(""); - page.querySelector(".resultBody").innerHTML = rows; + html += datetime.toLocaleDateString(date) + ' ' + datetime.getDisplayTime(date); + html += ''; + return html += ''; + }).join(''); + page.querySelector('.resultBody').innerHTML = rows; loading.hide(); } function loadData(page) { loading.show(); - ApiClient.getJSON(ApiClient.getUrl("Auth/Keys")).then(function (result) { + ApiClient.getJSON(ApiClient.getUrl('Auth/Keys')).then(function (result) { renderKeys(page, result.Items); }); } function showNewKeyPrompt(page) { - require(["prompt"], function (prompt) { + require(['prompt'], function (prompt) { prompt({ - title: globalize.translate("HeaderNewApiKey"), - label: globalize.translate("LabelAppName"), - description: globalize.translate("LabelAppNameExample") + title: globalize.translate('HeaderNewApiKey'), + label: globalize.translate('LabelAppName'), + description: globalize.translate('LabelAppNameExample') }).then(function (value) { ApiClient.ajax({ - type: "POST", - url: ApiClient.getUrl("Auth/Keys", { + type: 'POST', + url: ApiClient.getUrl('Auth/Keys', { App: value }) }).then(function () { @@ -64,20 +64,20 @@ define(["datetime", "loading", "libraryMenu", "dom", "globalize", "emby-button"] }); } - pageIdOn("pageinit", "apiKeysPage", function () { + pageIdOn('pageinit', 'apiKeysPage', function () { var page = this; - page.querySelector(".btnNewKey").addEventListener("click", function () { + page.querySelector('.btnNewKey').addEventListener('click', function () { showNewKeyPrompt(page); }); - page.querySelector(".tblApiKeys").addEventListener("click", function (e) { - var btnRevoke = dom.parentWithClass(e.target, "btnRevoke"); + page.querySelector('.tblApiKeys').addEventListener('click', function (e) { + var btnRevoke = dom.parentWithClass(e.target, 'btnRevoke'); if (btnRevoke) { - revoke(page, btnRevoke.getAttribute("data-token")); + revoke(page, btnRevoke.getAttribute('data-token')); } }); }); - pageIdOn("pagebeforeshow", "apiKeysPage", function () { + pageIdOn('pagebeforeshow', 'apiKeysPage', function () { loadData(this); }); }); diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 6dd1ceae28..1256f60074 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -1,24 +1,24 @@ -define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globalize", "date-fns", "dfnshelper", "loading", "connectionManager", "playMethodHelper", "cardBuilder", "imageLoader", "components/activitylog", "scripts/imagehelper", "indicators", "listViewStyle", "emby-button", "flexStyles", "emby-button", "emby-itemscontainer"], function (datetime, events, itemHelper, serverNotifications, dom, globalize, datefns, dfnshelper, loading, connectionManager, playMethodHelper, cardBuilder, imageLoader, ActivityLog, imageHelper, indicators) { - "use strict"; +define(['datetime', 'events', 'itemHelper', 'serverNotifications', 'dom', 'globalize', 'date-fns', 'dfnshelper', 'loading', 'connectionManager', 'playMethodHelper', 'cardBuilder', 'imageLoader', 'components/activitylog', 'scripts/imagehelper', 'indicators', 'listViewStyle', 'emby-button', 'flexStyles', 'emby-button', 'emby-itemscontainer'], function (datetime, events, itemHelper, serverNotifications, dom, globalize, datefns, dfnshelper, loading, connectionManager, playMethodHelper, cardBuilder, imageLoader, ActivityLog, imageHelper, indicators) { + 'use strict'; function showPlaybackInfo(btn, session) { - require(["alert"], function (alert) { + require(['alert'], function (alert) { var title; var text = []; var displayPlayMethod = playMethodHelper.getDisplayPlayMethod(session); - if (displayPlayMethod === "DirectStream") { - title = globalize.translate("DirectStreaming"); - text.push(globalize.translate("DirectStreamHelp1")); - text.push("
"); - text.push(globalize.translate("DirectStreamHelp2")); - } else if (displayPlayMethod === "Transcode") { - title = globalize.translate("Transcoding"); - text.push(globalize.translate("MediaIsBeingConverted")); + if (displayPlayMethod === 'DirectStream') { + title = globalize.translate('DirectStreaming'); + text.push(globalize.translate('DirectStreamHelp1')); + text.push('
'); + text.push(globalize.translate('DirectStreamHelp2')); + } else if (displayPlayMethod === 'Transcode') { + title = globalize.translate('Transcoding'); + text.push(globalize.translate('MediaIsBeingConverted')); if (session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length) { - text.push("
"); - text.push(globalize.translate("LabelReasonForTranscoding")); + text.push('
'); + text.push(globalize.translate('LabelReasonForTranscoding')); session.TranscodingInfo.TranscodeReasons.forEach(function (transcodeReason) { text.push(globalize.translate(transcodeReason)); }); @@ -26,18 +26,18 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } alert({ - text: text.join("
"), + text: text.join('
'), title: title }); }); } function showSendMessageForm(btn, session) { - require(["prompt"], function (prompt) { + require(['prompt'], function (prompt) { prompt({ - title: globalize.translate("HeaderSendMessage"), - label: globalize.translate("LabelMessageText"), - confirmText: globalize.translate("ButtonSend") + title: globalize.translate('HeaderSendMessage'), + label: globalize.translate('LabelMessageText'), + confirmText: globalize.translate('ButtonSend') }).then(function (text) { if (text) { connectionManager.getApiClient(session.ServerId).sendMessageCommand(session.Id, { @@ -50,20 +50,20 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } function showOptionsMenu(btn, session) { - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { var menuItems = []; if (session.ServerId && session.DeviceId !== connectionManager.deviceId()) { menuItems.push({ - name: globalize.translate("SendMessage"), - id: "sendmessage" + name: globalize.translate('SendMessage'), + id: 'sendmessage' }); } if (session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length) { menuItems.push({ - name: globalize.translate("ViewPlaybackInfo"), - id: "transcodinginfo" + name: globalize.translate('ViewPlaybackInfo'), + id: 'transcodinginfo' }); } @@ -72,11 +72,11 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa positionTo: btn }).then(function (id) { switch (id) { - case "sendmessage": + case 'sendmessage': showSendMessageForm(btn, session); break; - case "transcodinginfo": + case 'transcodinginfo': showPlaybackInfo(btn, session); } }); @@ -84,28 +84,28 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } function onActiveDevicesClick(evt) { - var btn = dom.parentWithClass(evt.target, "sessionCardButton"); + var btn = dom.parentWithClass(evt.target, 'sessionCardButton'); if (btn) { - var card = dom.parentWithClass(btn, "card"); + var card = dom.parentWithClass(btn, 'card'); if (card) { var sessionId = card.id; var session = (DashboardPage.sessionsList || []).filter(function (dashboardSession) { - return "session" + dashboardSession.Id === sessionId; + return 'session' + dashboardSession.Id === sessionId; })[0]; if (session) { - if (btn.classList.contains("btnCardOptions")) { + if (btn.classList.contains('btnCardOptions')) { showOptionsMenu(btn, session); - } else if (btn.classList.contains("btnSessionInfo")) { + } else if (btn.classList.contains('btnSessionInfo')) { showPlaybackInfo(btn, session); - } else if (btn.classList.contains("btnSessionSendMessage")) { + } else if (btn.classList.contains('btnSessionSendMessage')) { showSendMessageForm(btn, session); - } else if (btn.classList.contains("btnSessionStop")) { - connectionManager.getApiClient(session.ServerId).sendPlayStateCommand(session.Id, "Stop"); - } else if (btn.classList.contains("btnSessionPlayPause") && session.PlayState) { - connectionManager.getApiClient(session.ServerId).sendPlayStateCommand(session.Id, "PlayPause"); + } else if (btn.classList.contains('btnSessionStop')) { + connectionManager.getApiClient(session.ServerId).sendPlayStateCommand(session.Id, 'Stop'); + } else if (btn.classList.contains('btnSessionPlayPause') && session.PlayState) { + connectionManager.getApiClient(session.ServerId).sendPlayStateCommand(session.Id, 'PlayPause'); } } } @@ -135,31 +135,31 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa apiClient.getLiveTvRecordings({ UserId: Dashboard.getCurrentUserId(), IsInProgress: true, - Fields: "CanDelete,PrimaryImageAspectRatio", + Fields: 'CanDelete,PrimaryImageAspectRatio', EnableTotalRecordCount: false, - EnableImageTypes: "Primary,Thumb,Backdrop" + EnableImageTypes: 'Primary,Thumb,Backdrop' }).then(function (result) { - var itemsContainer = view.querySelector(".activeRecordingItems"); + var itemsContainer = view.querySelector('.activeRecordingItems'); if (!result.Items.length) { - view.querySelector(".activeRecordingsSection").classList.add("hide"); - return void(itemsContainer.innerHTML = ""); + view.querySelector('.activeRecordingsSection').classList.add('hide'); + return void(itemsContainer.innerHTML = ''); } - view.querySelector(".activeRecordingsSection").classList.remove("hide"); + view.querySelector('.activeRecordingsSection').classList.remove('hide'); itemsContainer.innerHTML = cardBuilder.getCardsHtml({ items: result.Items, - shape: "auto", - defaultShape: "backdrop", + shape: 'auto', + defaultShape: 'backdrop', showTitle: true, showParentTitle: true, coverImage: true, cardLayout: false, centerText: true, - preferThumb: "auto", + preferThumb: 'auto', overlayText: false, overlayMoreButton: true, - action: "none", + action: 'none', centerPlayButton: true }); imageLoader.lazyChildren(itemsContainer); @@ -168,28 +168,28 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa function reloadSystemInfo(view, apiClient) { apiClient.getSystemInfo().then(function (systemInfo) { - view.querySelector("#serverName").innerHTML = globalize.translate("DashboardServerName", systemInfo.ServerName); - var localizedVersion = globalize.translate("DashboardVersionNumber", systemInfo.Version); + view.querySelector('#serverName').innerHTML = globalize.translate('DashboardServerName', systemInfo.ServerName); + var localizedVersion = globalize.translate('DashboardVersionNumber', systemInfo.Version); - if (systemInfo.SystemUpdateLevel !== "Release") { - localizedVersion += " " + systemInfo.SystemUpdateLevel; + if (systemInfo.SystemUpdateLevel !== 'Release') { + localizedVersion += ' ' + systemInfo.SystemUpdateLevel; } - view.querySelector("#versionNumber").innerHTML = localizedVersion; - view.querySelector("#operatingSystem").innerHTML = globalize.translate("DashboardOperatingSystem", systemInfo.OperatingSystem); - view.querySelector("#architecture").innerHTML = globalize.translate("DashboardArchitecture", systemInfo.SystemArchitecture); + view.querySelector('#versionNumber').innerHTML = localizedVersion; + view.querySelector('#operatingSystem').innerHTML = globalize.translate('DashboardOperatingSystem', systemInfo.OperatingSystem); + view.querySelector('#architecture').innerHTML = globalize.translate('DashboardArchitecture', systemInfo.SystemArchitecture); if (systemInfo.CanSelfRestart) { - view.querySelector("#btnRestartServer").classList.remove("hide"); + view.querySelector('#btnRestartServer').classList.remove('hide'); } else { - view.querySelector("#btnRestartServer").classList.add("hide"); + view.querySelector('#btnRestartServer').classList.add('hide'); } - view.querySelector("#cachePath").innerHTML = systemInfo.CachePath; - view.querySelector("#logPath").innerHTML = systemInfo.LogPath; - view.querySelector("#transcodePath").innerHTML = systemInfo.TranscodingTempPath; - view.querySelector("#metadataPath").innerHTML = systemInfo.InternalMetadataPath; - view.querySelector("#webPath").innerHTML = systemInfo.WebPath; + view.querySelector('#cachePath').innerHTML = systemInfo.CachePath; + view.querySelector('#logPath').innerHTML = systemInfo.LogPath; + view.querySelector('#transcodePath').innerHTML = systemInfo.TranscodingTempPath; + view.querySelector('#metadataPath').innerHTML = systemInfo.InternalMetadataPath; + view.querySelector('#webPath').innerHTML = systemInfo.WebPath; }); } @@ -211,25 +211,25 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } function renderActiveConnections(view, sessions) { - var html = ""; + var html = ''; DashboardPage.sessionsList = sessions; - var parentElement = view.querySelector(".activeDevices"); - var cardElem = parentElement.querySelector(".card"); + var parentElement = view.querySelector('.activeDevices'); + var cardElem = parentElement.querySelector('.card'); if (cardElem) { - cardElem.classList.add("deadSession"); + cardElem.classList.add('deadSession'); } for (var i = 0, length = sessions.length; i < length; i++) { var session = sessions[i]; - var rowId = "session" + session.Id; - var elem = view.querySelector("#" + rowId); + var rowId = 'session' + session.Id; + var elem = view.querySelector('#' + rowId); if (elem) { DashboardPage.updateSession(elem, session); } else { var nowPlayingItem = session.NowPlayingItem; - var className = "scalableCard card activeSession backdropCard backdropCard-scalable"; + var className = 'scalableCard card activeSession backdropCard backdropCard-scalable'; html += '
'; html += '
'; html += '
'; @@ -253,13 +253,13 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } html += '
'; - html += '
' + session.DeviceName + "
"; - html += '
' + DashboardPage.getAppSecondaryText(session) + "
"; - html += "
"; - html += "
"; + html += '
' + session.DeviceName + '
'; + html += '
' + DashboardPage.getAppSecondaryText(session) + '
'; + html += '
'; + html += '
'; if (session.TranscodingInfo && session.TranscodingInfo.Framerate) { - html += '
' + session.TranscodingInfo.Framerate + " fps
"; + html += '
' + session.TranscodingInfo.Framerate + ' fps
'; } else { html += '
'; } @@ -268,56 +268,56 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa var nowPlayingName = DashboardPage.getNowPlayingName(session); html += '
'; html += nowPlayingName.html; - html += "
"; - html += '
' + DashboardPage.getSessionNowPlayingTime(session) + "
"; + html += '
'; + html += '
' + DashboardPage.getSessionNowPlayingTime(session) + '
'; html += ''; if (nowPlayingItem && nowPlayingItem.RunTimeTicks) { var percent = 100 * (session.PlayState.PositionTicks || 0) / nowPlayingItem.RunTimeTicks; html += indicators.getProgressHtml(percent, { - containerClass: "playbackProgress" + containerClass: 'playbackProgress' }); } else { // need to leave the element in just in case the device starts playback html += indicators.getProgressHtml(0, { - containerClass: "playbackProgress hide" + containerClass: 'playbackProgress hide' }); } if (session.TranscodingInfo && session.TranscodingInfo.CompletionPercentage) { var percent = session.TranscodingInfo.CompletionPercentage.toFixed(1); html += indicators.getProgressHtml(percent, { - containerClass: "transcodingProgress" + containerClass: 'transcodingProgress' }); } else { // same issue as playbackProgress element above html += indicators.getProgressHtml(0, { - containerClass: "transcodingProgress hide" + containerClass: 'transcodingProgress hide' }); } - html += ""; - html += ""; - html += ""; + html += ''; + html += ''; + html += ''; html += '
'; html += '
'; - var btnCssClass = session.ServerId && session.NowPlayingItem && session.SupportsRemoteControl ? "" : " hide"; + var btnCssClass = session.ServerId && session.NowPlayingItem && session.SupportsRemoteControl ? '' : ' hide'; const playIcon = session.PlayState.IsPaused ? 'pause' : 'play_arrow'; html += ''; html += ''; - btnCssClass = session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length ? "" : " hide"; - html += ''; + btnCssClass = session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length ? '' : ' hide'; + html += ''; - btnCssClass = session.ServerId && -1 !== session.SupportedCommands.indexOf("DisplayMessage") && session.DeviceId !== connectionManager.deviceId() ? "" : " hide"; - html += ''; - html += "
"; + btnCssClass = session.ServerId && -1 !== session.SupportedCommands.indexOf('DisplayMessage') && session.DeviceId !== connectionManager.deviceId() ? '' : ' hide'; + html += ''; + html += '
'; html += '
'; html += DashboardPage.getSessionNowPlayingStreamInfo(session); - html += "
"; + html += ''; html += '
'; var userImage = DashboardPage.getUserImage(session); @@ -325,16 +325,16 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa html += '
'; html += DashboardPage.getUsersHtml(session); - html += "
"; - html += "
"; - html += ""; - html += ""; - html += ""; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; } } - parentElement.insertAdjacentHTML("beforeend", html); - var deadSessionElem = parentElement.querySelector(".deadSession"); + parentElement.insertAdjacentHTML('beforeend', html); + var deadSessionElem = parentElement.querySelector('.deadSession'); if (deadSessionElem) { deadSessionElem.parentNode.removeChild(deadSessionElem); @@ -342,9 +342,9 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } function renderRunningTasks(view, tasks) { - var html = ""; + var html = ''; tasks = tasks.filter(function (task) { - if ("Idle" != task.State) { + if ('Idle' != task.State) { return !task.IsHidden; } @@ -352,59 +352,59 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa }); if (tasks.length) { - view.querySelector(".runningTasksContainer").classList.remove("hide"); + view.querySelector('.runningTasksContainer').classList.remove('hide'); } else { - view.querySelector(".runningTasksContainer").classList.add("hide"); + view.querySelector('.runningTasksContainer').classList.add('hide'); } for (var i = 0, length = tasks.length; i < length; i++) { var task = tasks[i]; - html += "

"; - html += task.Name + "
"; + html += '

'; + html += task.Name + '
'; - if (task.State === "Running") { + if (task.State === 'Running') { var progress = (task.CurrentProgressPercentage || 0).toFixed(1); html += ''; - html += progress + "%"; - html += ""; - html += "" + progress + "%"; - html += ''; - } else if (task.State === "Cancelling") { - html += '' + globalize.translate("LabelStopping") + ""; + html += progress + '%'; + html += ''; + html += "" + progress + '%'; + html += ''; + } else if (task.State === 'Cancelling') { + html += '' + globalize.translate('LabelStopping') + ''; } - html += "

"; + html += '

'; } - view.querySelector("#divRunningTasks").innerHTML = html; + view.querySelector('#divRunningTasks').innerHTML = html; } window.DashboardPage = { startInterval: function (apiClient) { - apiClient.sendMessage("SessionsStart", "0,1500"); - apiClient.sendMessage("ScheduledTasksInfoStart", "0,1000"); + apiClient.sendMessage('SessionsStart', '0,1500'); + apiClient.sendMessage('ScheduledTasksInfoStart', '0,1000'); }, stopInterval: function (apiClient) { - apiClient.sendMessage("SessionsStop"); - apiClient.sendMessage("ScheduledTasksInfoStop"); + apiClient.sendMessage('SessionsStop'); + apiClient.sendMessage('ScheduledTasksInfoStop'); }, getSessionNowPlayingStreamInfo: function (session) { - var html = ""; + var html = ''; var showTranscodingInfo = false; var displayPlayMethod = playMethodHelper.getDisplayPlayMethod(session); - if (displayPlayMethod === "DirectStream") { - html += globalize.translate("DirectStreaming"); - } else if (displayPlayMethod === "Transcode") { - html += globalize.translate("Transcoding"); + if (displayPlayMethod === 'DirectStream') { + html += globalize.translate('DirectStreaming'); + } else if (displayPlayMethod === 'Transcode') { + html += globalize.translate('Transcoding'); if (session.TranscodingInfo && session.TranscodingInfo.Framerate) { - html += " (" + session.TranscodingInfo.Framerate + " fps)"; + html += ' (' + session.TranscodingInfo.Framerate + ' fps)'; } showTranscodingInfo = true; - } else if (displayPlayMethod === "DirectPlay") { - html += globalize.translate("DirectPlaying"); + } else if (displayPlayMethod === 'DirectPlay') { + html += globalize.translate('DirectPlaying'); } if (showTranscodingInfo) { @@ -413,9 +413,9 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (session.TranscodingInfo) { if (session.TranscodingInfo.Bitrate) { if (session.TranscodingInfo.Bitrate > 1e6) { - line.push((session.TranscodingInfo.Bitrate / 1e6).toFixed(1) + " Mbps"); + line.push((session.TranscodingInfo.Bitrate / 1e6).toFixed(1) + ' Mbps'); } else { - line.push(Math.floor(session.TranscodingInfo.Bitrate / 1e3) + " Kbps"); + line.push(Math.floor(session.TranscodingInfo.Bitrate / 1e3) + ' Kbps'); } } @@ -433,7 +433,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } if (line.length) { - html += " - " + line.join(" "); + html += ' - ' + line.join(' '); } } @@ -441,43 +441,43 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa }, getSessionNowPlayingTime: function (session) { var nowPlayingItem = session.NowPlayingItem; - var html = ""; + var html = ''; if (nowPlayingItem) { if (session.PlayState.PositionTicks) { html += datetime.getDisplayRunningTime(session.PlayState.PositionTicks); } else { - html += "0:00"; + html += '0:00'; } - html += " / "; + html += ' / '; if (nowPlayingItem && nowPlayingItem.RunTimeTicks) { html += datetime.getDisplayRunningTime(nowPlayingItem.RunTimeTicks); } else { - html += "0:00"; + html += '0:00'; } } return html; }, getAppSecondaryText: function (session) { - return session.Client + " " + session.ApplicationVersion; + return session.Client + ' ' + session.ApplicationVersion; }, getNowPlayingName: function (session) { - var imgUrl = ""; + var imgUrl = ''; var nowPlayingItem = session.NowPlayingItem; // FIXME: It seems that, sometimes, server sends date in the future, so date-fns displays messages like 'in less than a minute'. We should fix // how dates are returned by the server when the session is active and show something like 'Active now', instead of past/future sentences if (!nowPlayingItem) { return { - html: globalize.translate("LastSeen", datefns.formatDistanceToNow(Date.parse(session.LastActivityDate), dfnshelper.localeWithSuffix)), + html: globalize.translate('LastSeen', datefns.formatDistanceToNow(Date.parse(session.LastActivityDate), dfnshelper.localeWithSuffix)), image: imgUrl }; } var topText = itemHelper.getDisplayName(nowPlayingItem); - var bottomText = ""; + var bottomText = ''; if (nowPlayingItem.Artists && nowPlayingItem.Artists.length) { bottomText = topText; @@ -496,14 +496,14 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa tag: nowPlayingItem.ImageTags.Logo, maxHeight: 24, maxWidth: 130, - type: "Logo" + type: 'Logo' }); } else if (nowPlayingItem.ParentLogoImageTag) { imgUrl = ApiClient.getScaledImageUrl(nowPlayingItem.ParentLogoItemId, { tag: nowPlayingItem.ParentLogoImageTag, maxHeight: 24, maxWidth: 130, - type: "Logo" + type: 'Logo' }); } @@ -512,7 +512,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } return { - html: bottomText ? topText + "
" + bottomText : topText, + html: bottomText ? topText + '
' + bottomText : topText, image: imgUrl }; }, @@ -527,104 +527,104 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa html.push(session.AdditionalUsers[i].UserName); } - return html.join(", "); + return html.join(', '); }, getUserImage: function (session) { if (session.UserId && session.UserPrimaryImageTag) { return ApiClient.getUserImageUrl(session.UserId, { tag: session.UserPrimaryImageTag, - type: "Primary" + type: 'Primary' }); } return null; }, updateSession: function (row, session) { - row.classList.remove("deadSession"); + row.classList.remove('deadSession'); var nowPlayingItem = session.NowPlayingItem; if (nowPlayingItem) { - row.classList.add("playingSession"); + row.classList.add('playingSession'); } else { - row.classList.remove("playingSession"); + row.classList.remove('playingSession'); } - if (session.ServerId && -1 !== session.SupportedCommands.indexOf("DisplayMessage") && session.DeviceId !== connectionManager.deviceId()) { - row.querySelector(".btnSessionSendMessage").classList.remove("hide"); + if (session.ServerId && -1 !== session.SupportedCommands.indexOf('DisplayMessage') && session.DeviceId !== connectionManager.deviceId()) { + row.querySelector('.btnSessionSendMessage').classList.remove('hide'); } else { - row.querySelector(".btnSessionSendMessage").classList.add("hide"); + row.querySelector('.btnSessionSendMessage').classList.add('hide'); } if (session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons.length) { - row.querySelector(".btnSessionInfo").classList.remove("hide"); + row.querySelector('.btnSessionInfo').classList.remove('hide'); } else { - row.querySelector(".btnSessionInfo").classList.add("hide"); + row.querySelector('.btnSessionInfo').classList.add('hide'); } - var btnSessionPlayPause = row.querySelector(".btnSessionPlayPause"); + var btnSessionPlayPause = row.querySelector('.btnSessionPlayPause'); if (session.ServerId && nowPlayingItem && session.SupportsRemoteControl && session.DeviceId !== connectionManager.deviceId()) { - btnSessionPlayPause.classList.remove("hide"); - row.querySelector(".btnSessionStop").classList.remove("hide"); + btnSessionPlayPause.classList.remove('hide'); + row.querySelector('.btnSessionStop').classList.remove('hide'); } else { - btnSessionPlayPause.classList.add("hide"); - row.querySelector(".btnSessionStop").classList.add("hide"); + btnSessionPlayPause.classList.add('hide'); + row.querySelector('.btnSessionStop').classList.add('hide'); } - const btnSessionPlayPauseIcon = btnSessionPlayPause.querySelector(".material-icons"); - btnSessionPlayPauseIcon.classList.remove("play_arrow", "pause"); - btnSessionPlayPauseIcon.classList.add(session.PlayState && session.PlayState.IsPaused ? "play_arrow" : "pause"); + const btnSessionPlayPauseIcon = btnSessionPlayPause.querySelector('.material-icons'); + btnSessionPlayPauseIcon.classList.remove('play_arrow', 'pause'); + btnSessionPlayPauseIcon.classList.add(session.PlayState && session.PlayState.IsPaused ? 'play_arrow' : 'pause'); - row.querySelector(".sessionNowPlayingStreamInfo").innerHTML = DashboardPage.getSessionNowPlayingStreamInfo(session); - row.querySelector(".sessionNowPlayingTime").innerHTML = DashboardPage.getSessionNowPlayingTime(session); - row.querySelector(".sessionUserName").innerHTML = DashboardPage.getUsersHtml(session); - row.querySelector(".sessionAppSecondaryText").innerHTML = DashboardPage.getAppSecondaryText(session); - row.querySelector(".sessionTranscodingFramerate").innerHTML = session.TranscodingInfo && session.TranscodingInfo.Framerate ? session.TranscodingInfo.Framerate + " fps" : ""; + row.querySelector('.sessionNowPlayingStreamInfo').innerHTML = DashboardPage.getSessionNowPlayingStreamInfo(session); + row.querySelector('.sessionNowPlayingTime').innerHTML = DashboardPage.getSessionNowPlayingTime(session); + row.querySelector('.sessionUserName').innerHTML = DashboardPage.getUsersHtml(session); + row.querySelector('.sessionAppSecondaryText').innerHTML = DashboardPage.getAppSecondaryText(session); + row.querySelector('.sessionTranscodingFramerate').innerHTML = session.TranscodingInfo && session.TranscodingInfo.Framerate ? session.TranscodingInfo.Framerate + ' fps' : ''; var nowPlayingName = DashboardPage.getNowPlayingName(session); - var nowPlayingInfoElem = row.querySelector(".sessionNowPlayingInfo"); + var nowPlayingInfoElem = row.querySelector('.sessionNowPlayingInfo'); - if (!(nowPlayingName.image && nowPlayingName.image == nowPlayingInfoElem.getAttribute("data-imgsrc"))) { + if (!(nowPlayingName.image && nowPlayingName.image == nowPlayingInfoElem.getAttribute('data-imgsrc'))) { nowPlayingInfoElem.innerHTML = nowPlayingName.html; - nowPlayingInfoElem.setAttribute("data-imgsrc", nowPlayingName.image || ""); + nowPlayingInfoElem.setAttribute('data-imgsrc', nowPlayingName.image || ''); } - var playbackProgressElem = row.querySelector(".playbackProgress"); + var playbackProgressElem = row.querySelector('.playbackProgress'); if (nowPlayingItem && nowPlayingItem.RunTimeTicks) { var percent = 100 * (session.PlayState.PositionTicks || 0) / nowPlayingItem.RunTimeTicks; playbackProgressElem.outerHTML = indicators.getProgressHtml(percent, { - containerClass: "playbackProgress" + containerClass: 'playbackProgress' }); } else { playbackProgressElem.outerHTML = indicators.getProgressHtml(0, { - containerClass: "playbackProgress hide" + containerClass: 'playbackProgress hide' }); } - var transcodingProgress = row.querySelector(".transcodingProgress"); + var transcodingProgress = row.querySelector('.transcodingProgress'); if (session.TranscodingInfo && session.TranscodingInfo.CompletionPercentage) { var percent = session.TranscodingInfo.CompletionPercentage.toFixed(1); transcodingProgress.outerHTML = indicators.getProgressHtml(percent, { - containerClass: "transcodingProgress" + containerClass: 'transcodingProgress' }); } else { transcodingProgress.outerHTML = indicators.getProgressHtml(0, { - containerClass: "transcodingProgress hide" + containerClass: 'transcodingProgress hide' }); } - var imgUrl = DashboardPage.getNowPlayingImageUrl(nowPlayingItem) || ""; - var imgElem = row.querySelector(".sessionNowPlayingContent"); + var imgUrl = DashboardPage.getNowPlayingImageUrl(nowPlayingItem) || ''; + var imgElem = row.querySelector('.sessionNowPlayingContent'); - if (imgUrl != imgElem.getAttribute("data-src")) { - imgElem.style.backgroundImage = imgUrl ? "url('" + imgUrl + "')" : ""; - imgElem.setAttribute("data-src", imgUrl); + if (imgUrl != imgElem.getAttribute('data-src')) { + imgElem.style.backgroundImage = imgUrl ? "url('" + imgUrl + "')" : ''; + imgElem.setAttribute('data-src', imgUrl); if (imgUrl) { - imgElem.classList.add("sessionNowPlayingContent-withbackground"); + imgElem.classList.add('sessionNowPlayingContent-withbackground'); } else { - imgElem.classList.remove("sessionNowPlayingContent-withbackground"); + imgElem.classList.remove('sessionNowPlayingContent-withbackground'); } } }, @@ -638,7 +638,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.BackdropImageTags && item.BackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.Id, { maxWidth: Math.round(dom.getScreenWidth() * 0.20), - type: "Backdrop", + type: 'Backdrop', tag: item.BackdropImageTags[0] }); } @@ -646,7 +646,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { return ApiClient.getScaledImageUrl(item.ParentBackdropItemId, { maxWidth: Math.round(dom.getScreenWidth() * 0.20), - type: "Backdrop", + type: 'Backdrop', tag: item.ParentBackdropImageTags[0] }); } @@ -654,7 +654,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.BackdropImageTag) { return ApiClient.getScaledImageUrl(item.BackdropItemId, { maxWidth: Math.round(dom.getScreenWidth() * 0.20), - type: "Backdrop", + type: 'Backdrop', tag: item.BackdropImageTag }); } @@ -664,7 +664,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && imageTags.Thumb) { return ApiClient.getScaledImageUrl(item.Id, { maxWidth: Math.round(dom.getScreenWidth() * 0.20), - type: "Thumb", + type: 'Thumb', tag: imageTags.Thumb }); } @@ -672,7 +672,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ParentThumbImageTag) { return ApiClient.getScaledImageUrl(item.ParentThumbItemId, { maxWidth: Math.round(dom.getScreenWidth() * 0.20), - type: "Thumb", + type: 'Thumb', tag: item.ParentThumbImageTag }); } @@ -680,7 +680,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.ThumbImageTag) { return ApiClient.getScaledImageUrl(item.ThumbItemId, { maxWidth: Math.round(dom.getScreenWidth() * 0.20), - type: "Thumb", + type: 'Thumb', tag: item.ThumbImageTag }); } @@ -688,7 +688,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && imageTags.Primary) { return ApiClient.getScaledImageUrl(item.Id, { maxWidth: Math.round(dom.getScreenWidth() * 0.20), - type: "Primary", + type: 'Primary', tag: imageTags.Primary }); } @@ -696,7 +696,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.PrimaryImageTag) { return ApiClient.getScaledImageUrl(item.PrimaryImageItemId, { maxWidth: Math.round(dom.getScreenWidth() * 0.20), - type: "Primary", + type: 'Primary', tag: item.PrimaryImageTag }); } @@ -704,46 +704,46 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa if (item && item.AlbumPrimaryImageTag) { return ApiClient.getScaledImageUrl(item.AlbumId, { maxWidth: Math.round(dom.getScreenWidth() * 0.20), - type: "Primary", + type: 'Primary', tag: item.AlbumPrimaryImageTag }); } return null; }, - systemUpdateTaskKey: "SystemUpdateTask", + systemUpdateTaskKey: 'SystemUpdateTask', stopTask: function (btn, id) { - var page = dom.parentWithClass(btn, "page"); + var page = dom.parentWithClass(btn, 'page'); ApiClient.stopScheduledTask(id).then(function () { pollForInfo(page, ApiClient); }); }, restart: function (btn) { - require(["confirm"], function (confirm) { + require(['confirm'], function (confirm) { confirm({ - title: globalize.translate("HeaderRestart"), - text: globalize.translate("MessageConfirmRestart"), - confirmText: globalize.translate("ButtonRestart"), - primary: "delete" + title: globalize.translate('HeaderRestart'), + text: globalize.translate('MessageConfirmRestart'), + confirmText: globalize.translate('ButtonRestart'), + primary: 'delete' }).then(function () { - var page = dom.parentWithClass(btn, "page"); - page.querySelector("#btnRestartServer").disabled = true; - page.querySelector("#btnShutdown").disabled = true; + var page = dom.parentWithClass(btn, 'page'); + page.querySelector('#btnRestartServer').disabled = true; + page.querySelector('#btnShutdown').disabled = true; ApiClient.restartServer(); }); }); }, shutdown: function (btn) { - require(["confirm"], function (confirm) { + require(['confirm'], function (confirm) { confirm({ - title: globalize.translate("HeaderShutdown"), - text: globalize.translate("MessageConfirmShutdown"), - confirmText: globalize.translate("ButtonShutdown"), - primary: "delete" + title: globalize.translate('HeaderShutdown'), + text: globalize.translate('MessageConfirmShutdown'), + confirmText: globalize.translate('ButtonShutdown'), + primary: 'delete' }).then(function () { - var page = dom.parentWithClass(btn, "page"); - page.querySelector("#btnRestartServer").disabled = true; - page.querySelector("#btnShutdown").disabled = true; + var page = dom.parentWithClass(btn, 'page'); + page.querySelector('#btnRestartServer').disabled = true; + page.querySelector('#btnShutdown').disabled = true; ApiClient.shutdownServer(); }); }); @@ -789,8 +789,8 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } var serverId = ApiClient.serverId(); - view.querySelector(".activeDevices").addEventListener("click", onActiveDevicesClick); - view.addEventListener("viewshow", function () { + view.querySelector('.activeDevices').addEventListener('click', onActiveDevicesClick); + view.addEventListener('viewshow', function () { var page = this; var apiClient = ApiClient; @@ -798,28 +798,28 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa loading.show(); pollForInfo(page, apiClient); DashboardPage.startInterval(apiClient); - events.on(serverNotifications, "RestartRequired", onRestartRequired); - events.on(serverNotifications, "ServerShuttingDown", onServerShuttingDown); - events.on(serverNotifications, "ServerRestarting", onServerRestarting); - events.on(serverNotifications, "PackageInstalling", onPackageInstalling); - events.on(serverNotifications, "PackageInstallationCompleted", onPackageInstallationCompleted); - events.on(serverNotifications, "Sessions", onSessionsUpdate); - events.on(serverNotifications, "ScheduledTasksInfo", onScheduledTasksUpdate); + events.on(serverNotifications, 'RestartRequired', onRestartRequired); + events.on(serverNotifications, 'ServerShuttingDown', onServerShuttingDown); + events.on(serverNotifications, 'ServerRestarting', onServerRestarting); + events.on(serverNotifications, 'PackageInstalling', onPackageInstalling); + events.on(serverNotifications, 'PackageInstallationCompleted', onPackageInstallationCompleted); + events.on(serverNotifications, 'Sessions', onSessionsUpdate); + events.on(serverNotifications, 'ScheduledTasksInfo', onScheduledTasksUpdate); DashboardPage.lastAppUpdateCheck = null; reloadSystemInfo(page, ApiClient); if (!page.userActivityLog) { page.userActivityLog = new ActivityLog({ serverId: ApiClient.serverId(), - element: page.querySelector(".userActivityItems") + element: page.querySelector('.userActivityItems') }); } - if (ApiClient.isMinServerVersion("3.4.1.25")) { + if (ApiClient.isMinServerVersion('3.4.1.25')) { if (!page.serverActivityLog) { page.serverActivityLog = new ActivityLog({ serverId: ApiClient.serverId(), - element: page.querySelector(".serverActivityItems") + element: page.querySelector('.serverActivityItems') }); } } @@ -828,21 +828,21 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa loading.hide(); } }); - view.addEventListener("viewbeforehide", function () { + view.addEventListener('viewbeforehide', function () { var apiClient = ApiClient; - events.off(serverNotifications, "RestartRequired", onRestartRequired); - events.off(serverNotifications, "ServerShuttingDown", onServerShuttingDown); - events.off(serverNotifications, "ServerRestarting", onServerRestarting); - events.off(serverNotifications, "PackageInstalling", onPackageInstalling); - events.off(serverNotifications, "PackageInstallationCompleted", onPackageInstallationCompleted); - events.off(serverNotifications, "Sessions", onSessionsUpdate); - events.off(serverNotifications, "ScheduledTasksInfo", onScheduledTasksUpdate); + events.off(serverNotifications, 'RestartRequired', onRestartRequired); + events.off(serverNotifications, 'ServerShuttingDown', onServerShuttingDown); + events.off(serverNotifications, 'ServerRestarting', onServerRestarting); + events.off(serverNotifications, 'PackageInstalling', onPackageInstalling); + events.off(serverNotifications, 'PackageInstallationCompleted', onPackageInstallationCompleted); + events.off(serverNotifications, 'Sessions', onSessionsUpdate); + events.off(serverNotifications, 'ScheduledTasksInfo', onScheduledTasksUpdate); if (apiClient) { DashboardPage.stopInterval(apiClient); } }); - view.addEventListener("viewdestroy", function () { + view.addEventListener('viewdestroy', function () { var page = this; var userActivityLog = page.userActivityLog; diff --git a/src/controllers/dashboard/devices/device.js b/src/controllers/dashboard/devices/device.js index cfe7efbe73..9ff3f5902e 100644 --- a/src/controllers/dashboard/devices/device.js +++ b/src/controllers/dashboard/devices/device.js @@ -1,19 +1,19 @@ -define(["loading", "libraryMenu", "dom", "emby-input", "emby-button"], function (loading, libraryMenu, dom) { - "use strict"; +define(['loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button'], function (loading, libraryMenu, dom) { + 'use strict'; function load(page, device, deviceOptions) { - page.querySelector("#txtCustomName", page).value = deviceOptions.CustomName || ""; - page.querySelector(".reportedName", page).innerHTML = device.Name || ""; + page.querySelector('#txtCustomName', page).value = deviceOptions.CustomName || ''; + page.querySelector('.reportedName', page).innerHTML = device.Name || ''; } function loadData() { var page = this; loading.show(); - var id = getParameterByName("id"); - var promise1 = ApiClient.getJSON(ApiClient.getUrl("Devices/Info", { + var id = getParameterByName('id'); + var promise1 = ApiClient.getJSON(ApiClient.getUrl('Devices/Info', { Id: id })); - var promise2 = ApiClient.getJSON(ApiClient.getUrl("Devices/Options", { + var promise2 = ApiClient.getJSON(ApiClient.getUrl('Devices/Options', { Id: id })); Promise.all([promise1, promise2]).then(function (responses) { @@ -23,28 +23,28 @@ define(["loading", "libraryMenu", "dom", "emby-input", "emby-button"], function } function save(page) { - var id = getParameterByName("id"); + var id = getParameterByName('id'); ApiClient.ajax({ - url: ApiClient.getUrl("Devices/Options", { + url: ApiClient.getUrl('Devices/Options', { Id: id }), - type: "POST", + type: 'POST', data: JSON.stringify({ - CustomName: page.querySelector("#txtCustomName").value + CustomName: page.querySelector('#txtCustomName').value }), - contentType: "application/json" + contentType: 'application/json' }).then(Dashboard.processServerConfigurationUpdateResult); } function onSubmit(e) { var form = this; - save(dom.parentWithClass(form, "page")); + save(dom.parentWithClass(form, 'page')); e.preventDefault(); return false; } return function (view, params) { - view.querySelector("form").addEventListener("submit", onSubmit); - view.addEventListener("viewshow", loadData); + view.querySelector('form').addEventListener('submit', onSubmit); + view.addEventListener('viewshow', loadData); }; }); diff --git a/src/controllers/dashboard/devices/devices.js b/src/controllers/dashboard/devices/devices.js index 103b116df4..da65ef6219 100644 --- a/src/controllers/dashboard/devices/devices.js +++ b/src/controllers/dashboard/devices/devices.js @@ -1,24 +1,24 @@ -define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "date-fns", "dfnshelper", "emby-button", "emby-itemscontainer", "cardStyle"], function (loading, dom, libraryMenu, globalize, imageHelper, datefns, dfnshelper) { - "use strict"; +define(['loading', 'dom', 'libraryMenu', 'globalize', 'scripts/imagehelper', 'date-fns', 'dfnshelper', 'emby-button', 'emby-itemscontainer', 'cardStyle'], function (loading, dom, libraryMenu, globalize, imageHelper, datefns, dfnshelper) { + 'use strict'; function canDelete(deviceId) { return deviceId !== ApiClient.deviceId(); } function deleteDevice(page, id) { - var msg = globalize.translate("DeleteDeviceConfirmation"); + var msg = globalize.translate('DeleteDeviceConfirmation'); - require(["confirm"], function (confirm) { + require(['confirm'], function (confirm) { confirm({ text: msg, - title: globalize.translate("HeaderDeleteDevice"), - confirmText: globalize.translate("ButtonDelete"), - primary: "delete" + title: globalize.translate('HeaderDeleteDevice'), + confirmText: globalize.translate('ButtonDelete'), + primary: 'delete' }).then(function () { loading.show(); ApiClient.ajax({ - type: "DELETE", - url: ApiClient.getUrl("Devices", { + type: 'DELETE', + url: ApiClient.getUrl('Devices', { Id: id }) }).then(function () { @@ -33,31 +33,31 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "da if (canEdit) { menuItems.push({ - name: globalize.translate("Edit"), - id: "open", - icon: "mode_edit" + name: globalize.translate('Edit'), + id: 'open', + icon: 'mode_edit' }); } if (canDelete(deviceId)) { menuItems.push({ - name: globalize.translate("Delete"), - id: "delete", - icon: "delete" + name: globalize.translate('Delete'), + id: 'delete', + icon: 'delete' }); } - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: menuItems, positionTo: btn, callback: function (id) { switch (id) { - case "open": - Dashboard.navigate("device.html?id=" + deviceId); + case 'open': + Dashboard.navigate('device.html?id=' + deviceId); break; - case "delete": + case 'delete': deleteDevice(view, deviceId); } } @@ -66,74 +66,74 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "da } function load(page, devices) { - var html = ""; + var html = ''; html += devices.map(function (device) { - var deviceHtml = ""; + var deviceHtml = ''; deviceHtml += "
"; deviceHtml += '"; + deviceHtml += ''; + deviceHtml += '
'; deviceHtml += '
'; if (canEdit || canDelete(device.Id)) { deviceHtml += '
'; - deviceHtml += ''; - deviceHtml += "
"; + deviceHtml += ''; + deviceHtml += '
'; } deviceHtml += "
"; deviceHtml += device.Name; - deviceHtml += "
"; + deviceHtml += ''; deviceHtml += "
"; - deviceHtml += device.AppName + " " + device.AppVersion; - deviceHtml += "
"; + deviceHtml += device.AppName + ' ' + device.AppVersion; + deviceHtml += ''; deviceHtml += "
"; if (device.LastUserName) { deviceHtml += device.LastUserName; - deviceHtml += ", " + datefns.formatDistanceToNow(Date.parse(device.DateLastActivity), dfnshelper.localeWithSuffix); + deviceHtml += ', ' + datefns.formatDistanceToNow(Date.parse(device.DateLastActivity), dfnshelper.localeWithSuffix); } - deviceHtml += " "; - deviceHtml += "
"; - deviceHtml += ""; - deviceHtml += ""; - deviceHtml += ""; + deviceHtml += ' '; + deviceHtml += ''; + deviceHtml += ''; + deviceHtml += ''; + deviceHtml += ''; return deviceHtml; - }).join(""); - page.querySelector(".devicesList").innerHTML = html; + }).join(''); + page.querySelector('.devicesList').innerHTML = html; } function loadData(page) { loading.show(); - ApiClient.getJSON(ApiClient.getUrl("Devices")).then(function (result) { + ApiClient.getJSON(ApiClient.getUrl('Devices')).then(function (result) { load(page, result.Items); loading.hide(); }); } - var canEdit = ApiClient.isMinServerVersion("3.4.1.31"); + var canEdit = ApiClient.isMinServerVersion('3.4.1.31'); return function (view, params) { - view.querySelector(".devicesList").addEventListener("click", function (e) { - var btnDeviceMenu = dom.parentWithClass(e.target, "btnDeviceMenu"); + view.querySelector('.devicesList').addEventListener('click', function (e) { + var btnDeviceMenu = dom.parentWithClass(e.target, 'btnDeviceMenu'); if (btnDeviceMenu) { - showDeviceMenu(view, btnDeviceMenu, btnDeviceMenu.getAttribute("data-id")); + showDeviceMenu(view, btnDeviceMenu, btnDeviceMenu.getAttribute('data-id')); } }); - view.addEventListener("viewshow", function () { + view.addEventListener('viewshow', function () { loadData(this); }); }; diff --git a/src/controllers/dashboard/dlna/dlnaprofile.js b/src/controllers/dashboard/dlna/dlnaprofile.js index 126e22ddfa..3fe238c8ad 100644 --- a/src/controllers/dashboard/dlna/dlnaprofile.js +++ b/src/controllers/dashboard/dlna/dlnaprofile.js @@ -1,5 +1,5 @@ -define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-button", "emby-input", "emby-checkbox", "listViewStyle", "emby-button"], function ($, loading, globalize) { - "use strict"; +define(['jQuery', 'loading', 'globalize', 'fnchecked', 'emby-select', 'emby-button', 'emby-input', 'emby-checkbox', 'listViewStyle', 'emby-button'], function ($, loading, globalize) { + 'use strict'; function loadProfile(page) { loading.show(); @@ -13,62 +13,62 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt } function getProfile() { - var id = getParameterByName("id"); - var url = id ? "Dlna/Profiles/" + id : "Dlna/Profiles/Default"; + var id = getParameterByName('id'); + var url = id ? 'Dlna/Profiles/' + id : 'Dlna/Profiles/Default'; return ApiClient.getJSON(ApiClient.getUrl(url)); } function renderProfile(page, profile, users) { - $("#txtName", page).val(profile.Name); - $(".chkMediaType", page).each(function () { - this.checked = -1 != (profile.SupportedMediaTypes || "").split(",").indexOf(this.getAttribute("data-value")); + $('#txtName', page).val(profile.Name); + $('.chkMediaType', page).each(function () { + this.checked = -1 != (profile.SupportedMediaTypes || '').split(',').indexOf(this.getAttribute('data-value')); }); - $("#chkEnableAlbumArtInDidl", page).checked(profile.EnableAlbumArtInDidl); - $("#chkEnableSingleImageLimit", page).checked(profile.EnableSingleAlbumArtLimit); + $('#chkEnableAlbumArtInDidl', page).checked(profile.EnableAlbumArtInDidl); + $('#chkEnableSingleImageLimit', page).checked(profile.EnableSingleAlbumArtLimit); renderXmlDocumentAttributes(page, profile.XmlRootAttributes || []); var idInfo = profile.Identification || {}; renderIdentificationHeaders(page, idInfo.Headers || []); renderSubtitleProfiles(page, profile.SubtitleProfiles || []); - $("#txtInfoFriendlyName", page).val(profile.FriendlyName || ""); - $("#txtInfoModelName", page).val(profile.ModelName || ""); - $("#txtInfoModelNumber", page).val(profile.ModelNumber || ""); - $("#txtInfoModelDescription", page).val(profile.ModelDescription || ""); - $("#txtInfoModelUrl", page).val(profile.ModelUrl || ""); - $("#txtInfoManufacturer", page).val(profile.Manufacturer || ""); - $("#txtInfoManufacturerUrl", page).val(profile.ManufacturerUrl || ""); - $("#txtInfoSerialNumber", page).val(profile.SerialNumber || ""); - $("#txtIdFriendlyName", page).val(idInfo.FriendlyName || ""); - $("#txtIdModelName", page).val(idInfo.ModelName || ""); - $("#txtIdModelNumber", page).val(idInfo.ModelNumber || ""); - $("#txtIdModelDescription", page).val(idInfo.ModelDescription || ""); - $("#txtIdModelUrl", page).val(idInfo.ModelUrl || ""); - $("#txtIdManufacturer", page).val(idInfo.Manufacturer || ""); - $("#txtIdManufacturerUrl", page).val(idInfo.ManufacturerUrl || ""); - $("#txtIdSerialNumber", page).val(idInfo.SerialNumber || ""); - $("#txtIdDeviceDescription", page).val(idInfo.DeviceDescription || ""); - $("#txtAlbumArtPn", page).val(profile.AlbumArtPn || ""); - $("#txtAlbumArtMaxWidth", page).val(profile.MaxAlbumArtWidth || ""); - $("#txtAlbumArtMaxHeight", page).val(profile.MaxAlbumArtHeight || ""); - $("#txtIconMaxWidth", page).val(profile.MaxIconWidth || ""); - $("#txtIconMaxHeight", page).val(profile.MaxIconHeight || ""); - $("#chkIgnoreTranscodeByteRangeRequests", page).checked(profile.IgnoreTranscodeByteRangeRequests); - $("#txtMaxAllowedBitrate", page).val(profile.MaxStreamingBitrate || ""); - $("#txtMusicStreamingTranscodingBitrate", page).val(profile.MusicStreamingTranscodingBitrate || ""); - $("#chkRequiresPlainFolders", page).checked(profile.RequiresPlainFolders); - $("#chkRequiresPlainVideoItems", page).checked(profile.RequiresPlainVideoItems); - $("#txtProtocolInfo", page).val(profile.ProtocolInfo || ""); - $("#txtXDlnaCap", page).val(profile.XDlnaCap || ""); - $("#txtXDlnaDoc", page).val(profile.XDlnaDoc || ""); - $("#txtSonyAggregationFlags", page).val(profile.SonyAggregationFlags || ""); + $('#txtInfoFriendlyName', page).val(profile.FriendlyName || ''); + $('#txtInfoModelName', page).val(profile.ModelName || ''); + $('#txtInfoModelNumber', page).val(profile.ModelNumber || ''); + $('#txtInfoModelDescription', page).val(profile.ModelDescription || ''); + $('#txtInfoModelUrl', page).val(profile.ModelUrl || ''); + $('#txtInfoManufacturer', page).val(profile.Manufacturer || ''); + $('#txtInfoManufacturerUrl', page).val(profile.ManufacturerUrl || ''); + $('#txtInfoSerialNumber', page).val(profile.SerialNumber || ''); + $('#txtIdFriendlyName', page).val(idInfo.FriendlyName || ''); + $('#txtIdModelName', page).val(idInfo.ModelName || ''); + $('#txtIdModelNumber', page).val(idInfo.ModelNumber || ''); + $('#txtIdModelDescription', page).val(idInfo.ModelDescription || ''); + $('#txtIdModelUrl', page).val(idInfo.ModelUrl || ''); + $('#txtIdManufacturer', page).val(idInfo.Manufacturer || ''); + $('#txtIdManufacturerUrl', page).val(idInfo.ManufacturerUrl || ''); + $('#txtIdSerialNumber', page).val(idInfo.SerialNumber || ''); + $('#txtIdDeviceDescription', page).val(idInfo.DeviceDescription || ''); + $('#txtAlbumArtPn', page).val(profile.AlbumArtPn || ''); + $('#txtAlbumArtMaxWidth', page).val(profile.MaxAlbumArtWidth || ''); + $('#txtAlbumArtMaxHeight', page).val(profile.MaxAlbumArtHeight || ''); + $('#txtIconMaxWidth', page).val(profile.MaxIconWidth || ''); + $('#txtIconMaxHeight', page).val(profile.MaxIconHeight || ''); + $('#chkIgnoreTranscodeByteRangeRequests', page).checked(profile.IgnoreTranscodeByteRangeRequests); + $('#txtMaxAllowedBitrate', page).val(profile.MaxStreamingBitrate || ''); + $('#txtMusicStreamingTranscodingBitrate', page).val(profile.MusicStreamingTranscodingBitrate || ''); + $('#chkRequiresPlainFolders', page).checked(profile.RequiresPlainFolders); + $('#chkRequiresPlainVideoItems', page).checked(profile.RequiresPlainVideoItems); + $('#txtProtocolInfo', page).val(profile.ProtocolInfo || ''); + $('#txtXDlnaCap', page).val(profile.XDlnaCap || ''); + $('#txtXDlnaDoc', page).val(profile.XDlnaDoc || ''); + $('#txtSonyAggregationFlags', page).val(profile.SonyAggregationFlags || ''); profile.DirectPlayProfiles = profile.DirectPlayProfiles || []; profile.TranscodingProfiles = profile.TranscodingProfiles || []; profile.ContainerProfiles = profile.ContainerProfiles || []; profile.CodecProfiles = profile.CodecProfiles || []; profile.ResponseProfiles = profile.ResponseProfiles || []; - var usersHtml = "" + users.map(function (u) { - return '"; - }).join(""); - $("#selectUser", page).html(usersHtml).val(profile.UserId || ""); + var usersHtml = '' + users.map(function (u) { + return ''; + }).join(''); + $('#selectUser', page).html(usersHtml).val(profile.UserId || ''); renderSubProfiles(page, profile); } @@ -78,45 +78,45 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt var li = '
'; li += ''; li += '
'; - li += '

' + h.Name + ": " + (h.Value || "") + "

"; - li += '
' + (h.Match || "") + "
"; - li += "
"; + li += '

' + h.Name + ': ' + (h.Value || '') + '

'; + li += '
' + (h.Match || '') + '
'; + li += '
'; li += ''; - li += ""; + li += ''; index++; return li; - }).join("") + ""; - var elem = $(".httpHeaderIdentificationList", page).html(html).trigger("create"); - $(".btnDeleteIdentificationHeader", elem).on("click", function () { - var itemIndex = parseInt(this.getAttribute("data-index")); + }).join('') + ''; + var elem = $('.httpHeaderIdentificationList', page).html(html).trigger('create'); + $('.btnDeleteIdentificationHeader', elem).on('click', function () { + var itemIndex = parseInt(this.getAttribute('data-index')); currentProfile.Identification.Headers.splice(itemIndex, 1); renderIdentificationHeaders(page, currentProfile.Identification.Headers); }); } function openPopup(elem) { - elem.classList.remove("hide"); + elem.classList.remove('hide'); } function closePopup(elem) { - elem.classList.add("hide"); + elem.classList.add('hide'); } function editIdentificationHeader(page, header) { isSubProfileNew = null == header; header = header || {}; currentSubProfile = header; - var popup = $("#identificationHeaderPopup", page); - $("#txtIdentificationHeaderName", popup).val(header.Name || ""); - $("#txtIdentificationHeaderValue", popup).val(header.Value || ""); - $("#selectMatchType", popup).val(header.Match || "Equals"); + var popup = $('#identificationHeaderPopup', page); + $('#txtIdentificationHeaderName', popup).val(header.Name || ''); + $('#txtIdentificationHeaderValue', popup).val(header.Value || ''); + $('#selectMatchType', popup).val(header.Match || 'Equals'); openPopup(popup[0]); } function saveIdentificationHeader(page) { - currentSubProfile.Name = $("#txtIdentificationHeaderName", page).val(); - currentSubProfile.Value = $("#txtIdentificationHeaderValue", page).val(); - currentSubProfile.Match = $("#selectMatchType", page).val(); + currentSubProfile.Name = $('#txtIdentificationHeaderName', page).val(); + currentSubProfile.Value = $('#txtIdentificationHeaderValue', page).val(); + currentSubProfile.Match = $('#selectMatchType', page).val(); if (isSubProfileNew) { currentProfile.Identification = currentProfile.Identification || {}; @@ -126,7 +126,7 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt renderIdentificationHeaders(page, currentProfile.Identification.Headers); currentSubProfile = null; - closePopup($("#identificationHeaderPopup", page)[0]); + closePopup($('#identificationHeaderPopup', page)[0]); } function renderXmlDocumentAttributes(page, attribute) { @@ -134,14 +134,14 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt var li = '
'; li += ''; li += '
'; - li += '

' + h.Name + " = " + (h.Value || "") + "

"; - li += "
"; + li += '

' + h.Name + ' = ' + (h.Value || '') + '

'; + li += '
'; li += ''; - return li += ""; - }).join("") + ""; - var elem = $(".xmlDocumentAttributeList", page).html(html).trigger("create"); - $(".btnDeleteXmlAttribute", elem).on("click", function () { - var itemIndex = parseInt(this.getAttribute("data-index")); + return li += ''; + }).join('') + ''; + var elem = $('.xmlDocumentAttributeList', page).html(html).trigger('create'); + $('.btnDeleteXmlAttribute', elem).on('click', function () { + var itemIndex = parseInt(this.getAttribute('data-index')); currentProfile.XmlRootAttributes.splice(itemIndex, 1); renderXmlDocumentAttributes(page, currentProfile.XmlRootAttributes); }); @@ -151,15 +151,15 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt isSubProfileNew = null == attribute; attribute = attribute || {}; currentSubProfile = attribute; - var popup = $("#xmlAttributePopup", page); - $("#txtXmlAttributeName", popup).val(attribute.Name || ""); - $("#txtXmlAttributeValue", popup).val(attribute.Value || ""); + var popup = $('#xmlAttributePopup', page); + $('#txtXmlAttributeName', popup).val(attribute.Name || ''); + $('#txtXmlAttributeValue', popup).val(attribute.Value || ''); openPopup(popup[0]); } function saveXmlDocumentAttribute(page) { - currentSubProfile.Name = $("#txtXmlAttributeName", page).val(); - currentSubProfile.Value = $("#txtXmlAttributeValue", page).val(); + currentSubProfile.Name = $('#txtXmlAttributeName', page).val(); + currentSubProfile.Value = $('#txtXmlAttributeValue', page).val(); if (isSubProfileNew) { currentProfile.XmlRootAttributes.push(currentSubProfile); @@ -167,7 +167,7 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt renderXmlDocumentAttributes(page, currentProfile.XmlRootAttributes); currentSubProfile = null; - closePopup($("#xmlAttributePopup", page)[0]); + closePopup($('#xmlAttributePopup', page)[0]); } function renderSubtitleProfiles(page, profiles) { @@ -176,21 +176,21 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt var li = '
'; li += ''; li += '
'; - li += '

' + (h.Format || "") + "

"; - li += "
"; + li += '

' + (h.Format || '') + '

'; + li += '
'; li += ''; - li += ""; + li += ''; index++; return li; - }).join("") + ""; - var elem = $(".subtitleProfileList", page).html(html).trigger("create"); - $(".btnDeleteProfile", elem).on("click", function () { - var itemIndex = parseInt(this.getAttribute("data-index")); + }).join('') + ''; + var elem = $('.subtitleProfileList', page).html(html).trigger('create'); + $('.btnDeleteProfile', elem).on('click', function () { + var itemIndex = parseInt(this.getAttribute('data-index')); currentProfile.SubtitleProfiles.splice(itemIndex, 1); renderSubtitleProfiles(page, currentProfile.SubtitleProfiles); }); - $(".lnkEditSubProfile", elem).on("click", function () { - var itemIndex = parseInt(this.getAttribute("data-index")); + $('.lnkEditSubProfile', elem).on('click', function () { + var itemIndex = parseInt(this.getAttribute('data-index')); editSubtitleProfile(page, currentProfile.SubtitleProfiles[itemIndex]); }); } @@ -199,17 +199,17 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt isSubProfileNew = null == profile; profile = profile || {}; currentSubProfile = profile; - var popup = $("#subtitleProfilePopup", page); - $("#txtSubtitleProfileFormat", popup).val(profile.Format || ""); - $("#selectSubtitleProfileMethod", popup).val(profile.Method || ""); - $("#selectSubtitleProfileDidlMode", popup).val(profile.DidlMode || ""); + var popup = $('#subtitleProfilePopup', page); + $('#txtSubtitleProfileFormat', popup).val(profile.Format || ''); + $('#selectSubtitleProfileMethod', popup).val(profile.Method || ''); + $('#selectSubtitleProfileDidlMode', popup).val(profile.DidlMode || ''); openPopup(popup[0]); } function saveSubtitleProfile(page) { - currentSubProfile.Format = $("#txtSubtitleProfileFormat", page).val(); - currentSubProfile.Method = $("#selectSubtitleProfileMethod", page).val(); - currentSubProfile.DidlMode = $("#selectSubtitleProfileDidlMode", page).val(); + currentSubProfile.Format = $('#txtSubtitleProfileFormat', page).val(); + currentSubProfile.Method = $('#selectSubtitleProfileMethod', page).val(); + currentSubProfile.DidlMode = $('#selectSubtitleProfileDidlMode', page).val(); if (isSubProfileNew) { currentProfile.SubtitleProfiles.push(currentSubProfile); @@ -217,7 +217,7 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt renderSubtitleProfiles(page, currentProfile.SubtitleProfiles); currentSubProfile = null; - closePopup($("#subtitleProfilePopup", page)[0]); + closePopup($('#subtitleProfilePopup', page)[0]); } function renderSubProfiles(page, profile) { @@ -229,10 +229,10 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt } function saveDirectPlayProfile(page) { - currentSubProfile.Type = $("#selectDirectPlayProfileType", page).val(); - currentSubProfile.Container = $("#txtDirectPlayContainer", page).val(); - currentSubProfile.AudioCodec = $("#txtDirectPlayAudioCodec", page).val(); - currentSubProfile.VideoCodec = $("#txtDirectPlayVideoCodec", page).val(); + currentSubProfile.Type = $('#selectDirectPlayProfileType', page).val(); + currentSubProfile.Container = $('#txtDirectPlayContainer', page).val(); + currentSubProfile.AudioCodec = $('#txtDirectPlayAudioCodec', page).val(); + currentSubProfile.VideoCodec = $('#txtDirectPlayVideoCodec', page).val(); if (isSubProfileNew) { currentProfile.DirectPlayProfiles.push(currentSubProfile); @@ -240,11 +240,11 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt renderSubProfiles(page, currentProfile); currentSubProfile = null; - closePopup($("#popupEditDirectPlayProfile", page)[0]); + closePopup($('#popupEditDirectPlayProfile', page)[0]); } function renderDirectPlayProfiles(page, profiles) { - var html = ""; + var html = ''; html += '"; - var elem = $(".directPlayProfiles", page).html(html).trigger("create"); - $(".btnDeleteProfile", elem).on("click", function () { - var index = this.getAttribute("data-profileindex"); + html += ''; + var elem = $('.directPlayProfiles', page).html(html).trigger('create'); + $('.btnDeleteProfile', elem).on('click', function () { + var index = this.getAttribute('data-profileindex'); deleteDirectPlayProfile(page, index); }); - $(".lnkEditSubProfile", elem).on("click", function () { - var index = parseInt(this.getAttribute("data-profileindex")); + $('.lnkEditSubProfile', elem).on('click', function () { + var index = parseInt(this.getAttribute('data-profileindex')); editDirectPlayProfile(page, currentProfile.DirectPlayProfiles[index]); }); } @@ -295,16 +295,16 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt isSubProfileNew = null == directPlayProfile; directPlayProfile = directPlayProfile || {}; currentSubProfile = directPlayProfile; - var popup = $("#popupEditDirectPlayProfile", page); - $("#selectDirectPlayProfileType", popup).val(directPlayProfile.Type || "Video").trigger("change"); - $("#txtDirectPlayContainer", popup).val(directPlayProfile.Container || ""); - $("#txtDirectPlayAudioCodec", popup).val(directPlayProfile.AudioCodec || ""); - $("#txtDirectPlayVideoCodec", popup).val(directPlayProfile.VideoCodec || ""); + var popup = $('#popupEditDirectPlayProfile', page); + $('#selectDirectPlayProfileType', popup).val(directPlayProfile.Type || 'Video').trigger('change'); + $('#txtDirectPlayContainer', popup).val(directPlayProfile.Container || ''); + $('#txtDirectPlayAudioCodec', popup).val(directPlayProfile.AudioCodec || ''); + $('#txtDirectPlayVideoCodec', popup).val(directPlayProfile.VideoCodec || ''); openPopup(popup[0]); } function renderTranscodingProfiles(page, profiles) { - var html = ""; + var html = ''; html += '"; - var elem = $(".transcodingProfiles", page).html(html).trigger("create"); - $(".btnDeleteProfile", elem).on("click", function () { - var index = this.getAttribute("data-profileindex"); + html += ''; + var elem = $('.transcodingProfiles', page).html(html).trigger('create'); + $('.btnDeleteProfile', elem).on('click', function () { + var index = this.getAttribute('data-profileindex'); deleteTranscodingProfile(page, index); }); - $(".lnkEditSubProfile", elem).on("click", function () { - var index = parseInt(this.getAttribute("data-profileindex")); + $('.lnkEditSubProfile', elem).on('click', function () { + var index = parseInt(this.getAttribute('data-profileindex')); editTranscodingProfile(page, currentProfile.TranscodingProfiles[index]); }); } @@ -351,16 +351,16 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt isSubProfileNew = null == transcodingProfile; transcodingProfile = transcodingProfile || {}; currentSubProfile = transcodingProfile; - var popup = $("#transcodingProfilePopup", page); - $("#selectTranscodingProfileType", popup).val(transcodingProfile.Type || "Video").trigger("change"); - $("#txtTranscodingContainer", popup).val(transcodingProfile.Container || ""); - $("#txtTranscodingAudioCodec", popup).val(transcodingProfile.AudioCodec || ""); - $("#txtTranscodingVideoCodec", popup).val(transcodingProfile.VideoCodec || ""); - $("#selectTranscodingProtocol", popup).val(transcodingProfile.Protocol || "Http"); - $("#chkEnableMpegtsM2TsMode", popup).checked(transcodingProfile.EnableMpegtsM2TsMode || false); - $("#chkEstimateContentLength", popup).checked(transcodingProfile.EstimateContentLength || false); - $("#chkReportByteRangeRequests", popup).checked("Bytes" == transcodingProfile.TranscodeSeekInfo); - $(".radioTabButton:first", popup).trigger("click"); + var popup = $('#transcodingProfilePopup', page); + $('#selectTranscodingProfileType', popup).val(transcodingProfile.Type || 'Video').trigger('change'); + $('#txtTranscodingContainer', popup).val(transcodingProfile.Container || ''); + $('#txtTranscodingAudioCodec', popup).val(transcodingProfile.AudioCodec || ''); + $('#txtTranscodingVideoCodec', popup).val(transcodingProfile.VideoCodec || ''); + $('#selectTranscodingProtocol', popup).val(transcodingProfile.Protocol || 'Http'); + $('#chkEnableMpegtsM2TsMode', popup).checked(transcodingProfile.EnableMpegtsM2TsMode || false); + $('#chkEstimateContentLength', popup).checked(transcodingProfile.EstimateContentLength || false); + $('#chkReportByteRangeRequests', popup).checked('Bytes' == transcodingProfile.TranscodeSeekInfo); + $('.radioTabButton:first', popup).trigger('click'); openPopup(popup[0]); } @@ -370,15 +370,15 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt } function saveTranscodingProfile(page) { - currentSubProfile.Type = $("#selectTranscodingProfileType", page).val(); - currentSubProfile.Container = $("#txtTranscodingContainer", page).val(); - currentSubProfile.AudioCodec = $("#txtTranscodingAudioCodec", page).val(); - currentSubProfile.VideoCodec = $("#txtTranscodingVideoCodec", page).val(); - currentSubProfile.Protocol = $("#selectTranscodingProtocol", page).val(); - currentSubProfile.Context = "Streaming"; - currentSubProfile.EnableMpegtsM2TsMode = $("#chkEnableMpegtsM2TsMode", page).checked(); - currentSubProfile.EstimateContentLength = $("#chkEstimateContentLength", page).checked(); - currentSubProfile.TranscodeSeekInfo = $("#chkReportByteRangeRequests", page).checked() ? "Bytes" : "Auto"; + currentSubProfile.Type = $('#selectTranscodingProfileType', page).val(); + currentSubProfile.Container = $('#txtTranscodingContainer', page).val(); + currentSubProfile.AudioCodec = $('#txtTranscodingAudioCodec', page).val(); + currentSubProfile.VideoCodec = $('#txtTranscodingVideoCodec', page).val(); + currentSubProfile.Protocol = $('#selectTranscodingProtocol', page).val(); + currentSubProfile.Context = 'Streaming'; + currentSubProfile.EnableMpegtsM2TsMode = $('#chkEnableMpegtsM2TsMode', page).checked(); + currentSubProfile.EstimateContentLength = $('#chkEstimateContentLength', page).checked(); + currentSubProfile.TranscodeSeekInfo = $('#chkReportByteRangeRequests', page).checked() ? 'Bytes' : 'Auto'; if (isSubProfileNew) { currentProfile.TranscodingProfiles.push(currentSubProfile); @@ -386,11 +386,11 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt renderSubProfiles(page, currentProfile); currentSubProfile = null; - closePopup($("#transcodingProfilePopup", page)[0]); + closePopup($('#transcodingProfilePopup', page)[0]); } function renderContainerProfiles(page, profiles) { - var html = ""; + var html = ''; html += '"; - var elem = $(".containerProfiles", page).html(html).trigger("create"); - $(".btnDeleteProfile", elem).on("click", function () { - var index = this.getAttribute("data-profileindex"); + html += ''; + var elem = $('.containerProfiles', page).html(html).trigger('create'); + $('.btnDeleteProfile', elem).on('click', function () { + var index = this.getAttribute('data-profileindex'); deleteContainerProfile(page, index); }); - $(".lnkEditSubProfile", elem).on("click", function () { - var index = parseInt(this.getAttribute("data-profileindex")); + $('.lnkEditSubProfile', elem).on('click', function () { + var index = parseInt(this.getAttribute('data-profileindex')); editContainerProfile(page, currentProfile.ContainerProfiles[index]); }); } @@ -440,16 +440,16 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt isSubProfileNew = null == containerProfile; containerProfile = containerProfile || {}; currentSubProfile = containerProfile; - var popup = $("#containerProfilePopup", page); - $("#selectContainerProfileType", popup).val(containerProfile.Type || "Video").trigger("change"); - $("#txtContainerProfileContainer", popup).val(containerProfile.Container || ""); - $(".radioTabButton:first", popup).trigger("click"); + var popup = $('#containerProfilePopup', page); + $('#selectContainerProfileType', popup).val(containerProfile.Type || 'Video').trigger('change'); + $('#txtContainerProfileContainer', popup).val(containerProfile.Container || ''); + $('.radioTabButton:first', popup).trigger('click'); openPopup(popup[0]); } function saveContainerProfile(page) { - currentSubProfile.Type = $("#selectContainerProfileType", page).val(); - currentSubProfile.Container = $("#txtContainerProfileContainer", page).val(); + currentSubProfile.Type = $('#selectContainerProfileType', page).val(); + currentSubProfile.Container = $('#txtContainerProfileContainer', page).val(); if (isSubProfileNew) { currentProfile.ContainerProfiles.push(currentSubProfile); @@ -457,48 +457,48 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt renderSubProfiles(page, currentProfile); currentSubProfile = null; - closePopup($("#containerProfilePopup", page)[0]); + closePopup($('#containerProfilePopup', page)[0]); } function renderCodecProfiles(page, profiles) { - var html = ""; + var html = ''; html += '"; - var elem = $(".codecProfiles", page).html(html).trigger("create"); - $(".btnDeleteProfile", elem).on("click", function () { - var index = this.getAttribute("data-profileindex"); + html += ''; + var elem = $('.codecProfiles', page).html(html).trigger('create'); + $('.btnDeleteProfile', elem).on('click', function () { + var index = this.getAttribute('data-profileindex'); deleteCodecProfile(page, index); }); - $(".lnkEditSubProfile", elem).on("click", function () { - var index = parseInt(this.getAttribute("data-profileindex")); + $('.lnkEditSubProfile', elem).on('click', function () { + var index = parseInt(this.getAttribute('data-profileindex')); editCodecProfile(page, currentProfile.CodecProfiles[index]); }); } @@ -512,16 +512,16 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt isSubProfileNew = null == codecProfile; codecProfile = codecProfile || {}; currentSubProfile = codecProfile; - var popup = $("#codecProfilePopup", page); - $("#selectCodecProfileType", popup).val(codecProfile.Type || "Video").trigger("change"); - $("#txtCodecProfileCodec", popup).val(codecProfile.Codec || ""); - $(".radioTabButton:first", popup).trigger("click"); + var popup = $('#codecProfilePopup', page); + $('#selectCodecProfileType', popup).val(codecProfile.Type || 'Video').trigger('change'); + $('#txtCodecProfileCodec', popup).val(codecProfile.Codec || ''); + $('.radioTabButton:first', popup).trigger('click'); openPopup(popup[0]); } function saveCodecProfile(page) { - currentSubProfile.Type = $("#selectCodecProfileType", page).val(); - currentSubProfile.Codec = $("#txtCodecProfileCodec", page).val(); + currentSubProfile.Type = $('#selectCodecProfileType', page).val(); + currentSubProfile.Codec = $('#txtCodecProfileCodec', page).val(); if (isSubProfileNew) { currentProfile.CodecProfiles.push(currentSubProfile); @@ -529,11 +529,11 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt renderSubProfiles(page, currentProfile); currentSubProfile = null; - closePopup($("#codecProfilePopup", page)[0]); + closePopup($('#codecProfilePopup', page)[0]); } function renderResponseProfiles(page, profiles) { - var html = ""; + var html = ''; html += '"; - var elem = $(".mediaProfiles", page).html(html).trigger("create"); - $(".btnDeleteProfile", elem).on("click", function () { - var index = this.getAttribute("data-profileindex"); + html += ''; + var elem = $('.mediaProfiles', page).html(html).trigger('create'); + $('.btnDeleteProfile', elem).on('click', function () { + var index = this.getAttribute('data-profileindex'); deleteResponseProfile(page, index); }); - $(".lnkEditSubProfile", elem).on("click", function () { - var index = parseInt(this.getAttribute("data-profileindex")); + $('.lnkEditSubProfile', elem).on('click', function () { + var index = parseInt(this.getAttribute('data-profileindex')); editResponseProfile(page, currentProfile.ResponseProfiles[index]); }); } @@ -592,20 +592,20 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt isSubProfileNew = null == responseProfile; responseProfile = responseProfile || {}; currentSubProfile = responseProfile; - var popup = $("#responseProfilePopup", page); - $("#selectResponseProfileType", popup).val(responseProfile.Type || "Video").trigger("change"); - $("#txtResponseProfileContainer", popup).val(responseProfile.Container || ""); - $("#txtResponseProfileAudioCodec", popup).val(responseProfile.AudioCodec || ""); - $("#txtResponseProfileVideoCodec", popup).val(responseProfile.VideoCodec || ""); - $(".radioTabButton:first", popup).trigger("click"); + var popup = $('#responseProfilePopup', page); + $('#selectResponseProfileType', popup).val(responseProfile.Type || 'Video').trigger('change'); + $('#txtResponseProfileContainer', popup).val(responseProfile.Container || ''); + $('#txtResponseProfileAudioCodec', popup).val(responseProfile.AudioCodec || ''); + $('#txtResponseProfileVideoCodec', popup).val(responseProfile.VideoCodec || ''); + $('.radioTabButton:first', popup).trigger('click'); openPopup(popup[0]); } function saveResponseProfile(page) { - currentSubProfile.Type = $("#selectResponseProfileType", page).val(); - currentSubProfile.Container = $("#txtResponseProfileContainer", page).val(); - currentSubProfile.AudioCodec = $("#txtResponseProfileAudioCodec", page).val(); - currentSubProfile.VideoCodec = $("#txtResponseProfileVideoCodec", page).val(); + currentSubProfile.Type = $('#selectResponseProfileType', page).val(); + currentSubProfile.Container = $('#txtResponseProfileContainer', page).val(); + currentSubProfile.AudioCodec = $('#txtResponseProfileAudioCodec', page).val(); + currentSubProfile.VideoCodec = $('#txtResponseProfileVideoCodec', page).val(); if (isSubProfileNew) { currentProfile.ResponseProfiles.push(currentSubProfile); @@ -613,32 +613,32 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt renderSubProfiles(page, currentProfile); currentSubProfile = null; - closePopup($("#responseProfilePopup", page)[0]); + closePopup($('#responseProfilePopup', page)[0]); } function saveProfile(page, profile) { updateProfile(page, profile); - var id = getParameterByName("id"); + var id = getParameterByName('id'); if (id) { ApiClient.ajax({ - type: "POST", - url: ApiClient.getUrl("Dlna/Profiles/" + id), + type: 'POST', + url: ApiClient.getUrl('Dlna/Profiles/' + id), data: JSON.stringify(profile), - contentType: "application/json" + contentType: 'application/json' }).then(function () { - require(["toast"], function (toast) { - toast("Settings saved."); + require(['toast'], function (toast) { + toast('Settings saved.'); }); }, Dashboard.processErrorResponse); } else { ApiClient.ajax({ - type: "POST", - url: ApiClient.getUrl("Dlna/Profiles"), + type: 'POST', + url: ApiClient.getUrl('Dlna/Profiles'), data: JSON.stringify(profile), - contentType: "application/json" + contentType: 'application/json' }).then(function () { - Dashboard.navigate("dlnaprofiles.html"); + Dashboard.navigate('dlnaprofiles.html'); }, Dashboard.processErrorResponse); } @@ -646,183 +646,183 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-butt } function updateProfile(page, profile) { - profile.Name = $("#txtName", page).val(); - profile.EnableAlbumArtInDidl = $("#chkEnableAlbumArtInDidl", page).checked(); - profile.EnableSingleAlbumArtLimit = $("#chkEnableSingleImageLimit", page).checked(); - profile.SupportedMediaTypes = $(".chkMediaType:checked", page).get().map(function (c) { - return c.getAttribute("data-value"); - }).join(","); + profile.Name = $('#txtName', page).val(); + profile.EnableAlbumArtInDidl = $('#chkEnableAlbumArtInDidl', page).checked(); + profile.EnableSingleAlbumArtLimit = $('#chkEnableSingleImageLimit', page).checked(); + profile.SupportedMediaTypes = $('.chkMediaType:checked', page).get().map(function (c) { + return c.getAttribute('data-value'); + }).join(','); profile.Identification = profile.Identification || {}; - profile.FriendlyName = $("#txtInfoFriendlyName", page).val(); - profile.ModelName = $("#txtInfoModelName", page).val(); - profile.ModelNumber = $("#txtInfoModelNumber", page).val(); - profile.ModelDescription = $("#txtInfoModelDescription", page).val(); - profile.ModelUrl = $("#txtInfoModelUrl", page).val(); - profile.Manufacturer = $("#txtInfoManufacturer", page).val(); - profile.ManufacturerUrl = $("#txtInfoManufacturerUrl", page).val(); - profile.SerialNumber = $("#txtInfoSerialNumber", page).val(); - profile.Identification.FriendlyName = $("#txtIdFriendlyName", page).val(); - profile.Identification.ModelName = $("#txtIdModelName", page).val(); - profile.Identification.ModelNumber = $("#txtIdModelNumber", page).val(); - profile.Identification.ModelDescription = $("#txtIdModelDescription", page).val(); - profile.Identification.ModelUrl = $("#txtIdModelUrl", page).val(); - profile.Identification.Manufacturer = $("#txtIdManufacturer", page).val(); - profile.Identification.ManufacturerUrl = $("#txtIdManufacturerUrl", page).val(); - profile.Identification.SerialNumber = $("#txtIdSerialNumber", page).val(); - profile.Identification.DeviceDescription = $("#txtIdDeviceDescription", page).val(); - profile.AlbumArtPn = $("#txtAlbumArtPn", page).val(); - profile.MaxAlbumArtWidth = $("#txtAlbumArtMaxWidth", page).val(); - profile.MaxAlbumArtHeight = $("#txtAlbumArtMaxHeight", page).val(); - profile.MaxIconWidth = $("#txtIconMaxWidth", page).val(); - profile.MaxIconHeight = $("#txtIconMaxHeight", page).val(); - profile.RequiresPlainFolders = $("#chkRequiresPlainFolders", page).checked(); - profile.RequiresPlainVideoItems = $("#chkRequiresPlainVideoItems", page).checked(); - profile.IgnoreTranscodeByteRangeRequests = $("#chkIgnoreTranscodeByteRangeRequests", page).checked(); - profile.MaxStreamingBitrate = $("#txtMaxAllowedBitrate", page).val(); - profile.MusicStreamingTranscodingBitrate = $("#txtMusicStreamingTranscodingBitrate", page).val(); - profile.ProtocolInfo = $("#txtProtocolInfo", page).val(); - profile.XDlnaCap = $("#txtXDlnaCap", page).val(); - profile.XDlnaDoc = $("#txtXDlnaDoc", page).val(); - profile.SonyAggregationFlags = $("#txtSonyAggregationFlags", page).val(); - profile.UserId = $("#selectUser", page).val(); + profile.FriendlyName = $('#txtInfoFriendlyName', page).val(); + profile.ModelName = $('#txtInfoModelName', page).val(); + profile.ModelNumber = $('#txtInfoModelNumber', page).val(); + profile.ModelDescription = $('#txtInfoModelDescription', page).val(); + profile.ModelUrl = $('#txtInfoModelUrl', page).val(); + profile.Manufacturer = $('#txtInfoManufacturer', page).val(); + profile.ManufacturerUrl = $('#txtInfoManufacturerUrl', page).val(); + profile.SerialNumber = $('#txtInfoSerialNumber', page).val(); + profile.Identification.FriendlyName = $('#txtIdFriendlyName', page).val(); + profile.Identification.ModelName = $('#txtIdModelName', page).val(); + profile.Identification.ModelNumber = $('#txtIdModelNumber', page).val(); + profile.Identification.ModelDescription = $('#txtIdModelDescription', page).val(); + profile.Identification.ModelUrl = $('#txtIdModelUrl', page).val(); + profile.Identification.Manufacturer = $('#txtIdManufacturer', page).val(); + profile.Identification.ManufacturerUrl = $('#txtIdManufacturerUrl', page).val(); + profile.Identification.SerialNumber = $('#txtIdSerialNumber', page).val(); + profile.Identification.DeviceDescription = $('#txtIdDeviceDescription', page).val(); + profile.AlbumArtPn = $('#txtAlbumArtPn', page).val(); + profile.MaxAlbumArtWidth = $('#txtAlbumArtMaxWidth', page).val(); + profile.MaxAlbumArtHeight = $('#txtAlbumArtMaxHeight', page).val(); + profile.MaxIconWidth = $('#txtIconMaxWidth', page).val(); + profile.MaxIconHeight = $('#txtIconMaxHeight', page).val(); + profile.RequiresPlainFolders = $('#chkRequiresPlainFolders', page).checked(); + profile.RequiresPlainVideoItems = $('#chkRequiresPlainVideoItems', page).checked(); + profile.IgnoreTranscodeByteRangeRequests = $('#chkIgnoreTranscodeByteRangeRequests', page).checked(); + profile.MaxStreamingBitrate = $('#txtMaxAllowedBitrate', page).val(); + profile.MusicStreamingTranscodingBitrate = $('#txtMusicStreamingTranscodingBitrate', page).val(); + profile.ProtocolInfo = $('#txtProtocolInfo', page).val(); + profile.XDlnaCap = $('#txtXDlnaCap', page).val(); + profile.XDlnaDoc = $('#txtXDlnaDoc', page).val(); + profile.SonyAggregationFlags = $('#txtSonyAggregationFlags', page).val(); + profile.UserId = $('#selectUser', page).val(); } var currentProfile; var currentSubProfile; var isSubProfileNew; - var allText = globalize.translate("LabelAll"); + var allText = globalize.translate('LabelAll'); - $(document).on("pageinit", "#dlnaProfilePage", function () { + $(document).on('pageinit', '#dlnaProfilePage', function () { var page = this; - $(".radioTabButton", page).on("click", function () { - $(this).siblings().removeClass("ui-btn-active"); - $(this).addClass("ui-btn-active"); - var value = "A" == this.tagName ? this.getAttribute("data-value") : this.value; - var elem = $("." + value, page); - elem.siblings(".tabContent").hide(); + $('.radioTabButton', page).on('click', function () { + $(this).siblings().removeClass('ui-btn-active'); + $(this).addClass('ui-btn-active'); + var value = 'A' == this.tagName ? this.getAttribute('data-value') : this.value; + var elem = $('.' + value, page); + elem.siblings('.tabContent').hide(); elem.show(); }); - $("#selectDirectPlayProfileType", page).on("change", function () { - if ("Video" == this.value) { - $("#fldDirectPlayVideoCodec", page).show(); + $('#selectDirectPlayProfileType', page).on('change', function () { + if ('Video' == this.value) { + $('#fldDirectPlayVideoCodec', page).show(); } else { - $("#fldDirectPlayVideoCodec", page).hide(); + $('#fldDirectPlayVideoCodec', page).hide(); } - if ("Photo" == this.value) { - $("#fldDirectPlayAudioCodec", page).hide(); + if ('Photo' == this.value) { + $('#fldDirectPlayAudioCodec', page).hide(); } else { - $("#fldDirectPlayAudioCodec", page).show(); + $('#fldDirectPlayAudioCodec', page).show(); } }); - $("#selectTranscodingProfileType", page).on("change", function () { - if ("Video" == this.value) { - $("#fldTranscodingVideoCodec", page).show(); - $("#fldTranscodingProtocol", page).show(); - $("#fldEnableMpegtsM2TsMode", page).show(); + $('#selectTranscodingProfileType', page).on('change', function () { + if ('Video' == this.value) { + $('#fldTranscodingVideoCodec', page).show(); + $('#fldTranscodingProtocol', page).show(); + $('#fldEnableMpegtsM2TsMode', page).show(); } else { - $("#fldTranscodingVideoCodec", page).hide(); - $("#fldTranscodingProtocol", page).hide(); - $("#fldEnableMpegtsM2TsMode", page).hide(); + $('#fldTranscodingVideoCodec', page).hide(); + $('#fldTranscodingProtocol', page).hide(); + $('#fldEnableMpegtsM2TsMode', page).hide(); } - if ("Photo" == this.value) { - $("#fldTranscodingAudioCodec", page).hide(); - $("#fldEstimateContentLength", page).hide(); - $("#fldReportByteRangeRequests", page).hide(); + if ('Photo' == this.value) { + $('#fldTranscodingAudioCodec', page).hide(); + $('#fldEstimateContentLength', page).hide(); + $('#fldReportByteRangeRequests', page).hide(); } else { - $("#fldTranscodingAudioCodec", page).show(); - $("#fldEstimateContentLength", page).show(); - $("#fldReportByteRangeRequests", page).show(); + $('#fldTranscodingAudioCodec', page).show(); + $('#fldEstimateContentLength', page).show(); + $('#fldReportByteRangeRequests', page).show(); } }); - $("#selectResponseProfileType", page).on("change", function () { - if ("Video" == this.value) { - $("#fldResponseProfileVideoCodec", page).show(); + $('#selectResponseProfileType', page).on('change', function () { + if ('Video' == this.value) { + $('#fldResponseProfileVideoCodec', page).show(); } else { - $("#fldResponseProfileVideoCodec", page).hide(); + $('#fldResponseProfileVideoCodec', page).hide(); } - if ("Photo" == this.value) { - $("#fldResponseProfileAudioCodec", page).hide(); + if ('Photo' == this.value) { + $('#fldResponseProfileAudioCodec', page).hide(); } else { - $("#fldResponseProfileAudioCodec", page).show(); + $('#fldResponseProfileAudioCodec', page).show(); } }); - $(".btnAddDirectPlayProfile", page).on("click", function () { + $('.btnAddDirectPlayProfile', page).on('click', function () { editDirectPlayProfile(page); }); - $(".btnAddTranscodingProfile", page).on("click", function () { + $('.btnAddTranscodingProfile', page).on('click', function () { editTranscodingProfile(page); }); - $(".btnAddContainerProfile", page).on("click", function () { + $('.btnAddContainerProfile', page).on('click', function () { editContainerProfile(page); }); - $(".btnAddCodecProfile", page).on("click", function () { + $('.btnAddCodecProfile', page).on('click', function () { editCodecProfile(page); }); - $(".btnAddResponseProfile", page).on("click", function () { + $('.btnAddResponseProfile', page).on('click', function () { editResponseProfile(page); }); - $(".btnAddIdentificationHttpHeader", page).on("click", function () { + $('.btnAddIdentificationHttpHeader', page).on('click', function () { editIdentificationHeader(page); }); - $(".btnAddXmlDocumentAttribute", page).on("click", function () { + $('.btnAddXmlDocumentAttribute', page).on('click', function () { editXmlDocumentAttribute(page); }); - $(".btnAddSubtitleProfile", page).on("click", function () { + $('.btnAddSubtitleProfile', page).on('click', function () { editSubtitleProfile(page); }); - $(".dlnaProfileForm").off("submit", DlnaProfilePage.onSubmit).on("submit", DlnaProfilePage.onSubmit); - $(".editDirectPlayProfileForm").off("submit", DlnaProfilePage.onDirectPlayFormSubmit).on("submit", DlnaProfilePage.onDirectPlayFormSubmit); - $(".transcodingProfileForm").off("submit", DlnaProfilePage.onTranscodingProfileFormSubmit).on("submit", DlnaProfilePage.onTranscodingProfileFormSubmit); - $(".containerProfileForm").off("submit", DlnaProfilePage.onContainerProfileFormSubmit).on("submit", DlnaProfilePage.onContainerProfileFormSubmit); - $(".codecProfileForm").off("submit", DlnaProfilePage.onCodecProfileFormSubmit).on("submit", DlnaProfilePage.onCodecProfileFormSubmit); - $(".editResponseProfileForm").off("submit", DlnaProfilePage.onResponseProfileFormSubmit).on("submit", DlnaProfilePage.onResponseProfileFormSubmit); - $(".identificationHeaderForm").off("submit", DlnaProfilePage.onIdentificationHeaderFormSubmit).on("submit", DlnaProfilePage.onIdentificationHeaderFormSubmit); - $(".xmlAttributeForm").off("submit", DlnaProfilePage.onXmlAttributeFormSubmit).on("submit", DlnaProfilePage.onXmlAttributeFormSubmit); - $(".subtitleProfileForm").off("submit", DlnaProfilePage.onSubtitleProfileFormSubmit).on("submit", DlnaProfilePage.onSubtitleProfileFormSubmit); - }).on("pageshow", "#dlnaProfilePage", function () { + $('.dlnaProfileForm').off('submit', DlnaProfilePage.onSubmit).on('submit', DlnaProfilePage.onSubmit); + $('.editDirectPlayProfileForm').off('submit', DlnaProfilePage.onDirectPlayFormSubmit).on('submit', DlnaProfilePage.onDirectPlayFormSubmit); + $('.transcodingProfileForm').off('submit', DlnaProfilePage.onTranscodingProfileFormSubmit).on('submit', DlnaProfilePage.onTranscodingProfileFormSubmit); + $('.containerProfileForm').off('submit', DlnaProfilePage.onContainerProfileFormSubmit).on('submit', DlnaProfilePage.onContainerProfileFormSubmit); + $('.codecProfileForm').off('submit', DlnaProfilePage.onCodecProfileFormSubmit).on('submit', DlnaProfilePage.onCodecProfileFormSubmit); + $('.editResponseProfileForm').off('submit', DlnaProfilePage.onResponseProfileFormSubmit).on('submit', DlnaProfilePage.onResponseProfileFormSubmit); + $('.identificationHeaderForm').off('submit', DlnaProfilePage.onIdentificationHeaderFormSubmit).on('submit', DlnaProfilePage.onIdentificationHeaderFormSubmit); + $('.xmlAttributeForm').off('submit', DlnaProfilePage.onXmlAttributeFormSubmit).on('submit', DlnaProfilePage.onXmlAttributeFormSubmit); + $('.subtitleProfileForm').off('submit', DlnaProfilePage.onSubtitleProfileFormSubmit).on('submit', DlnaProfilePage.onSubtitleProfileFormSubmit); + }).on('pageshow', '#dlnaProfilePage', function () { var page = this; - $("#radioInfo", page).trigger("click"); + $('#radioInfo', page).trigger('click'); loadProfile(page); }); window.DlnaProfilePage = { onSubmit: function () { loading.show(); - saveProfile($(this).parents(".page"), currentProfile); + saveProfile($(this).parents('.page'), currentProfile); return false; }, onDirectPlayFormSubmit: function () { - saveDirectPlayProfile($(this).parents(".page")); + saveDirectPlayProfile($(this).parents('.page')); return false; }, onTranscodingProfileFormSubmit: function () { - saveTranscodingProfile($(this).parents(".page")); + saveTranscodingProfile($(this).parents('.page')); return false; }, onContainerProfileFormSubmit: function () { - saveContainerProfile($(this).parents(".page")); + saveContainerProfile($(this).parents('.page')); return false; }, onCodecProfileFormSubmit: function () { - saveCodecProfile($(this).parents(".page")); + saveCodecProfile($(this).parents('.page')); return false; }, onResponseProfileFormSubmit: function () { - saveResponseProfile($(this).parents(".page")); + saveResponseProfile($(this).parents('.page')); return false; }, onIdentificationHeaderFormSubmit: function () { - saveIdentificationHeader($(this).parents(".page")); + saveIdentificationHeader($(this).parents('.page')); return false; }, onXmlAttributeFormSubmit: function () { - saveXmlDocumentAttribute($(this).parents(".page")); + saveXmlDocumentAttribute($(this).parents('.page')); return false; }, onSubtitleProfileFormSubmit: function () { - saveSubtitleProfile($(this).parents(".page")); + saveSubtitleProfile($(this).parents('.page')); return false; } }; diff --git a/src/controllers/dashboard/dlna/dlnaprofiles.js b/src/controllers/dashboard/dlna/dlnaprofiles.js index c64f39d8b4..fb4caadeb9 100644 --- a/src/controllers/dashboard/dlna/dlnaprofiles.js +++ b/src/controllers/dashboard/dlna/dlnaprofiles.js @@ -1,9 +1,9 @@ -define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby-button"], function ($, globalize, loading, libraryMenu) { - "use strict"; +define(['jQuery', 'globalize', 'loading', 'libraryMenu', 'listViewStyle', 'emby-button'], function ($, globalize, loading, libraryMenu) { + 'use strict'; function loadProfiles(page) { loading.show(); - ApiClient.getJSON(ApiClient.getUrl("Dlna/ProfileInfos")).then(function (result) { + ApiClient.getJSON(ApiClient.getUrl('Dlna/ProfileInfos')).then(function (result) { renderUserProfiles(page, result); renderSystemProfiles(page, result); loading.hide(); @@ -11,19 +11,19 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby- } function renderUserProfiles(page, profiles) { - renderProfiles(page, page.querySelector(".customProfiles"), profiles.filter(function (p) { - return "User" == p.Type; + renderProfiles(page, page.querySelector('.customProfiles'), profiles.filter(function (p) { + return 'User' == p.Type; })); } function renderSystemProfiles(page, profiles) { - renderProfiles(page, page.querySelector(".systemProfiles"), profiles.filter(function (p) { - return "System" == p.Type; + renderProfiles(page, page.querySelector('.systemProfiles'), profiles.filter(function (p) { + return 'System' == p.Type; })); } function renderProfiles(page, element, profiles) { - var html = ""; + var html = ''; if (profiles.length) { html += '
'; @@ -35,35 +35,35 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby- html += ''; html += '"; + html += '
' + profile.Name + '
'; + html += ''; + html += '
'; - if ("User" == profile.Type) { - html += ''; + if ('User' == profile.Type) { + html += ''; } - html += ""; + html += ''; } if (profiles.length) { - html += ""; + html += ''; } element.innerHTML = html; - $(".btnDeleteProfile", element).on("click", function () { - var id = this.getAttribute("data-profileid"); + $('.btnDeleteProfile', element).on('click', function () { + var id = this.getAttribute('data-profileid'); deleteProfile(page, id); }); } function deleteProfile(page, id) { - require(["confirm"], function (confirm) { - confirm(globalize.translate("MessageConfirmProfileDeletion"), globalize.translate("HeaderConfirmProfileDeletion")).then(function () { + require(['confirm'], function (confirm) { + confirm(globalize.translate('MessageConfirmProfileDeletion'), globalize.translate('HeaderConfirmProfileDeletion')).then(function () { loading.show(); ApiClient.ajax({ - type: "DELETE", - url: ApiClient.getUrl("Dlna/Profiles/" + id) + type: 'DELETE', + url: ApiClient.getUrl('Dlna/Profiles/' + id) }).then(function () { loading.hide(); loadProfiles(page); @@ -74,16 +74,16 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby- function getTabs() { return [{ - href: "dlnasettings.html", - name: globalize.translate("TabSettings") + href: 'dlnasettings.html', + name: globalize.translate('TabSettings') }, { - href: "dlnaprofiles.html", - name: globalize.translate("TabProfiles") + href: 'dlnaprofiles.html', + name: globalize.translate('TabProfiles') }]; } - $(document).on("pageshow", "#dlnaProfilesPage", function () { - libraryMenu.setTabs("dlna", 1, getTabs); + $(document).on('pageshow', '#dlnaProfilesPage', function () { + libraryMenu.setTabs('dlna', 1, getTabs); loadProfiles(this); }); }); diff --git a/src/controllers/dashboard/dlna/dlnasettings.js b/src/controllers/dashboard/dlna/dlnasettings.js index dd71b9ed1a..a818002d01 100644 --- a/src/controllers/dashboard/dlna/dlnasettings.js +++ b/src/controllers/dashboard/dlna/dlnasettings.js @@ -1,53 +1,53 @@ -define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function ($, loading, libraryMenu, globalize) { - "use strict"; +define(['jQuery', 'loading', 'libraryMenu', 'globalize', 'fnchecked'], function ($, loading, libraryMenu, globalize) { + 'use strict'; function loadPage(page, config, users) { - page.querySelector("#chkEnablePlayTo").checked = config.EnablePlayTo; - page.querySelector("#chkEnableDlnaDebugLogging").checked = config.EnableDebugLog; - $("#txtClientDiscoveryInterval", page).val(config.ClientDiscoveryIntervalSeconds); - $("#chkEnableServer", page).checked(config.EnableServer); - $("#chkBlastAliveMessages", page).checked(config.BlastAliveMessages); - $("#txtBlastInterval", page).val(config.BlastAliveMessageIntervalSeconds); + page.querySelector('#chkEnablePlayTo').checked = config.EnablePlayTo; + page.querySelector('#chkEnableDlnaDebugLogging').checked = config.EnableDebugLog; + $('#txtClientDiscoveryInterval', page).val(config.ClientDiscoveryIntervalSeconds); + $('#chkEnableServer', page).checked(config.EnableServer); + $('#chkBlastAliveMessages', page).checked(config.BlastAliveMessages); + $('#txtBlastInterval', page).val(config.BlastAliveMessageIntervalSeconds); var usersHtml = users.map(function (u) { - return '"; - }).join(""); - $("#selectUser", page).html(usersHtml).val(config.DefaultUserId || ""); + return ''; + }).join(''); + $('#selectUser', page).html(usersHtml).val(config.DefaultUserId || ''); loading.hide(); } function onSubmit() { loading.show(); var form = this; - ApiClient.getNamedConfiguration("dlna").then(function (config) { - config.EnablePlayTo = form.querySelector("#chkEnablePlayTo").checked; - config.EnableDebugLog = form.querySelector("#chkEnableDlnaDebugLogging").checked; - config.ClientDiscoveryIntervalSeconds = $("#txtClientDiscoveryInterval", form).val(); - config.EnableServer = $("#chkEnableServer", form).checked(); - config.BlastAliveMessages = $("#chkBlastAliveMessages", form).checked(); - config.BlastAliveMessageIntervalSeconds = $("#txtBlastInterval", form).val(); - config.DefaultUserId = $("#selectUser", form).val(); - ApiClient.updateNamedConfiguration("dlna", config).then(Dashboard.processServerConfigurationUpdateResult); + ApiClient.getNamedConfiguration('dlna').then(function (config) { + config.EnablePlayTo = form.querySelector('#chkEnablePlayTo').checked; + config.EnableDebugLog = form.querySelector('#chkEnableDlnaDebugLogging').checked; + config.ClientDiscoveryIntervalSeconds = $('#txtClientDiscoveryInterval', form).val(); + config.EnableServer = $('#chkEnableServer', form).checked(); + config.BlastAliveMessages = $('#chkBlastAliveMessages', form).checked(); + config.BlastAliveMessageIntervalSeconds = $('#txtBlastInterval', form).val(); + config.DefaultUserId = $('#selectUser', form).val(); + ApiClient.updateNamedConfiguration('dlna', config).then(Dashboard.processServerConfigurationUpdateResult); }); return false; } function getTabs() { return [{ - href: "dlnasettings.html", - name: globalize.translate("TabSettings") + href: 'dlnasettings.html', + name: globalize.translate('TabSettings') }, { - href: "dlnaprofiles.html", - name: globalize.translate("TabProfiles") + href: 'dlnaprofiles.html', + name: globalize.translate('TabProfiles') }]; } - $(document).on("pageinit", "#dlnaSettingsPage", function () { - $(".dlnaSettingsForm").off("submit", onSubmit).on("submit", onSubmit); - }).on("pageshow", "#dlnaSettingsPage", function () { - libraryMenu.setTabs("dlna", 0, getTabs); + $(document).on('pageinit', '#dlnaSettingsPage', function () { + $('.dlnaSettingsForm').off('submit', onSubmit).on('submit', onSubmit); + }).on('pageshow', '#dlnaSettingsPage', function () { + libraryMenu.setTabs('dlna', 0, getTabs); loading.show(); var page = this; - var promise1 = ApiClient.getNamedConfiguration("dlna"); + var promise1 = ApiClient.getNamedConfiguration('dlna'); var promise2 = ApiClient.getUsers(); Promise.all([promise1, promise2]).then(function (responses) { loadPage(page, responses[0], responses[1]); diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index 9820d7401f..65f4e4401d 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -1,23 +1,23 @@ -define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, loading, globalize, dom, libraryMenu) { - "use strict"; +define(['jQuery', 'loading', 'globalize', 'dom', 'libraryMenu'], function ($, loading, globalize, dom, libraryMenu) { + 'use strict'; function loadPage(page, config, systemInfo) { - Array.prototype.forEach.call(page.querySelectorAll(".chkDecodeCodec"), function (c) { - c.checked = -1 !== (config.HardwareDecodingCodecs || []).indexOf(c.getAttribute("data-codec")); + Array.prototype.forEach.call(page.querySelectorAll('.chkDecodeCodec'), function (c) { + c.checked = -1 !== (config.HardwareDecodingCodecs || []).indexOf(c.getAttribute('data-codec')); }); - page.querySelector("#chkHardwareEncoding").checked = config.EnableHardwareEncoding; - $("#selectVideoDecoder", page).val(config.HardwareAccelerationType); - $("#selectThreadCount", page).val(config.EncodingThreadCount); - $("#txtDownMixAudioBoost", page).val(config.DownMixAudioBoost); - page.querySelector(".txtEncoderPath").value = config.EncoderAppPathDisplay || ""; - $("#txtTranscodingTempPath", page).val(systemInfo.TranscodingTempPath || ""); - $("#txtVaapiDevice", page).val(config.VaapiDevice || ""); - page.querySelector("#selectEncoderPreset").value = config.EncoderPreset || ""; - page.querySelector("#txtH264Crf").value = config.H264Crf || ""; - page.querySelector("#selectDeinterlaceMethod").value = config.DeinterlaceMethod || ""; - page.querySelector("#chkEnableSubtitleExtraction").checked = config.EnableSubtitleExtraction || false; - page.querySelector("#chkEnableThrottling").checked = config.EnableThrottling || false; - page.querySelector("#selectVideoDecoder").dispatchEvent(new CustomEvent("change", { + page.querySelector('#chkHardwareEncoding').checked = config.EnableHardwareEncoding; + $('#selectVideoDecoder', page).val(config.HardwareAccelerationType); + $('#selectThreadCount', page).val(config.EncodingThreadCount); + $('#txtDownMixAudioBoost', page).val(config.DownMixAudioBoost); + page.querySelector('.txtEncoderPath').value = config.EncoderAppPathDisplay || ''; + $('#txtTranscodingTempPath', page).val(systemInfo.TranscodingTempPath || ''); + $('#txtVaapiDevice', page).val(config.VaapiDevice || ''); + page.querySelector('#selectEncoderPreset').value = config.EncoderPreset || ''; + page.querySelector('#txtH264Crf').value = config.H264Crf || ''; + page.querySelector('#selectDeinterlaceMethod').value = config.DeinterlaceMethod || ''; + page.querySelector('#chkEnableSubtitleExtraction').checked = config.EnableSubtitleExtraction || false; + page.querySelector('#chkEnableThrottling').checked = config.EnableThrottling || false; + page.querySelector('#selectVideoDecoder').dispatchEvent(new CustomEvent('change', { bubbles: true })); loading.hide(); @@ -25,10 +25,10 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo function onSaveEncodingPathFailure(response) { loading.hide(); - var msg = ""; - msg = globalize.translate("FFmpegSavePathNotFound"); + var msg = ''; + msg = globalize.translate('FFmpegSavePathNotFound'); - require(["alert"], function (alert) { + require(['alert'], function (alert) { alert(msg); }); } @@ -36,11 +36,11 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo function updateEncoder(form) { return ApiClient.getSystemInfo().then(function (systemInfo) { return ApiClient.ajax({ - url: ApiClient.getUrl("System/MediaEncoder/Path"), - type: "POST", + url: ApiClient.getUrl('System/MediaEncoder/Path'), + type: 'POST', data: { - Path: form.querySelector(".txtEncoderPath").value, - PathType: "Custom" + Path: form.querySelector('.txtEncoderPath').value, + PathType: 'Custom' } }).then(Dashboard.processServerConfigurationUpdateResult, onSaveEncodingPathFailure); }); @@ -51,28 +51,28 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo var onDecoderConfirmed = function () { loading.show(); - ApiClient.getNamedConfiguration("encoding").then(function (config) { - config.DownMixAudioBoost = $("#txtDownMixAudioBoost", form).val(); - config.TranscodingTempPath = $("#txtTranscodingTempPath", form).val(); - config.EncodingThreadCount = $("#selectThreadCount", form).val(); - config.HardwareAccelerationType = $("#selectVideoDecoder", form).val(); - config.VaapiDevice = $("#txtVaapiDevice", form).val(); - config.EncoderPreset = form.querySelector("#selectEncoderPreset").value; - config.H264Crf = parseInt(form.querySelector("#txtH264Crf").value || "0"); - config.DeinterlaceMethod = form.querySelector("#selectDeinterlaceMethod").value; - config.EnableSubtitleExtraction = form.querySelector("#chkEnableSubtitleExtraction").checked; - config.EnableThrottling = form.querySelector("#chkEnableThrottling").checked; - config.HardwareDecodingCodecs = Array.prototype.map.call(Array.prototype.filter.call(form.querySelectorAll(".chkDecodeCodec"), function (c) { + ApiClient.getNamedConfiguration('encoding').then(function (config) { + config.DownMixAudioBoost = $('#txtDownMixAudioBoost', form).val(); + config.TranscodingTempPath = $('#txtTranscodingTempPath', form).val(); + config.EncodingThreadCount = $('#selectThreadCount', form).val(); + config.HardwareAccelerationType = $('#selectVideoDecoder', form).val(); + config.VaapiDevice = $('#txtVaapiDevice', form).val(); + config.EncoderPreset = form.querySelector('#selectEncoderPreset').value; + config.H264Crf = parseInt(form.querySelector('#txtH264Crf').value || '0'); + config.DeinterlaceMethod = form.querySelector('#selectDeinterlaceMethod').value; + config.EnableSubtitleExtraction = form.querySelector('#chkEnableSubtitleExtraction').checked; + config.EnableThrottling = form.querySelector('#chkEnableThrottling').checked; + config.HardwareDecodingCodecs = Array.prototype.map.call(Array.prototype.filter.call(form.querySelectorAll('.chkDecodeCodec'), function (c) { return c.checked; }), function (c) { - return c.getAttribute("data-codec"); + return c.getAttribute('data-codec'); }); - config.EnableHardwareEncoding = form.querySelector("#chkHardwareEncoding").checked; - ApiClient.updateNamedConfiguration("encoding", config).then(function () { + config.EnableHardwareEncoding = form.querySelector('#chkHardwareEncoding').checked; + ApiClient.updateNamedConfiguration('encoding', config).then(function () { updateEncoder(form); }, function () { - require(["alert"], function (alert) { - alert(globalize.translate("DefaultErrorMessage")); + require(['alert'], function (alert) { + alert(globalize.translate('DefaultErrorMessage')); }); Dashboard.processServerConfigurationUpdateResult(); @@ -80,11 +80,11 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo }); }; - if ($("#selectVideoDecoder", form).val()) { - require(["alert"], function (alert) { + if ($('#selectVideoDecoder', form).val()) { + require(['alert'], function (alert) { alert({ - title: globalize.translate("TitleHardwareAcceleration"), - text: globalize.translate("HardwareAccelerationWarning") + title: globalize.translate('TitleHardwareAcceleration'), + text: globalize.translate('HardwareAccelerationWarning') }).then(onDecoderConfirmed); }); } else { @@ -95,64 +95,64 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo } function setDecodingCodecsVisible(context, value) { - value = value || ""; + value = value || ''; var any; - Array.prototype.forEach.call(context.querySelectorAll(".chkDecodeCodec"), function (c) { - if (-1 === c.getAttribute("data-types").split(",").indexOf(value)) { - dom.parentWithTag(c, "LABEL").classList.add("hide"); + Array.prototype.forEach.call(context.querySelectorAll('.chkDecodeCodec'), function (c) { + if (-1 === c.getAttribute('data-types').split(',').indexOf(value)) { + dom.parentWithTag(c, 'LABEL').classList.add('hide'); } else { - dom.parentWithTag(c, "LABEL").classList.remove("hide"); + dom.parentWithTag(c, 'LABEL').classList.remove('hide'); any = true; } }); if (any) { - context.querySelector(".decodingCodecsList").classList.remove("hide"); + context.querySelector('.decodingCodecsList').classList.remove('hide'); } else { - context.querySelector(".decodingCodecsList").classList.add("hide"); + context.querySelector('.decodingCodecsList').classList.add('hide'); } } function getTabs() { return [{ - href: "encodingsettings.html", - name: globalize.translate("Transcoding") + href: 'encodingsettings.html', + name: globalize.translate('Transcoding') }, { - href: "playbackconfiguration.html", - name: globalize.translate("TabResumeSettings") + href: 'playbackconfiguration.html', + name: globalize.translate('TabResumeSettings') }, { - href: "streamingsettings.html", - name: globalize.translate("TabStreaming") + href: 'streamingsettings.html', + name: globalize.translate('TabStreaming') }]; } - $(document).on("pageinit", "#encodingSettingsPage", function () { + $(document).on('pageinit', '#encodingSettingsPage', function () { var page = this; - page.querySelector("#selectVideoDecoder").addEventListener("change", function () { - if ("vaapi" == this.value) { - page.querySelector(".fldVaapiDevice").classList.remove("hide"); - page.querySelector("#txtVaapiDevice").setAttribute("required", "required"); + page.querySelector('#selectVideoDecoder').addEventListener('change', function () { + if ('vaapi' == this.value) { + page.querySelector('.fldVaapiDevice').classList.remove('hide'); + page.querySelector('#txtVaapiDevice').setAttribute('required', 'required'); } else { - page.querySelector(".fldVaapiDevice").classList.add("hide"); - page.querySelector("#txtVaapiDevice").removeAttribute("required"); + page.querySelector('.fldVaapiDevice').classList.add('hide'); + page.querySelector('#txtVaapiDevice').removeAttribute('required'); } if (this.value) { - page.querySelector(".hardwareAccelerationOptions").classList.remove("hide"); + page.querySelector('.hardwareAccelerationOptions').classList.remove('hide'); } else { - page.querySelector(".hardwareAccelerationOptions").classList.add("hide"); + page.querySelector('.hardwareAccelerationOptions').classList.add('hide'); } setDecodingCodecsVisible(page, this.value); }); - $("#btnSelectEncoderPath", page).on("click.selectDirectory", function () { - require(["directorybrowser"], function (directoryBrowser) { + $('#btnSelectEncoderPath', page).on('click.selectDirectory', function () { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { if (path) { - $(".txtEncoderPath", page).val(path); + $('.txtEncoderPath', page).val(path); } picker.close(); @@ -160,29 +160,29 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo }); }); }); - $("#btnSelectTranscodingTempPath", page).on("click.selectDirectory", function () { - require(["directorybrowser"], function (directoryBrowser) { + $('#btnSelectTranscodingTempPath', page).on('click.selectDirectory', function () { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ callback: function (path) { if (path) { - $("#txtTranscodingTempPath", page).val(path); + $('#txtTranscodingTempPath', page).val(path); } picker.close(); }, validateWriteable: true, - header: globalize.translate("HeaderSelectTranscodingPath"), - instruction: globalize.translate("HeaderSelectTranscodingPathHelp") + header: globalize.translate('HeaderSelectTranscodingPath'), + instruction: globalize.translate('HeaderSelectTranscodingPathHelp') }); }); }); - $(".encodingSettingsForm").off("submit", onSubmit).on("submit", onSubmit); - }).on("pageshow", "#encodingSettingsPage", function () { + $('.encodingSettingsForm').off('submit', onSubmit).on('submit', onSubmit); + }).on('pageshow', '#encodingSettingsPage', function () { loading.show(); - libraryMenu.setTabs("playback", 0, getTabs); + libraryMenu.setTabs('playback', 0, getTabs); var page = this; - ApiClient.getNamedConfiguration("encoding").then(function (config) { + ApiClient.getNamedConfiguration('encoding').then(function (config) { ApiClient.getSystemInfo().then(function (systemInfo) { loadPage(page, config, systemInfo); }); diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index 68d72d4322..98ca260f21 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -1,27 +1,27 @@ -define(["jQuery", "loading", "globalize", "fnchecked", "emby-checkbox", "emby-textarea", "emby-input", "emby-select", "emby-button"], function ($, loading, globalize) { - "use strict"; +define(['jQuery', 'loading', 'globalize', 'fnchecked', 'emby-checkbox', 'emby-textarea', 'emby-input', 'emby-select', 'emby-button'], function ($, loading, globalize) { + 'use strict'; function loadPage(page, config, languageOptions, systemInfo) { - page.querySelector("#txtServerName").value = systemInfo.ServerName; - $("#chkAutoRunWebApp", page).checked(config.AutoRunWebApp); + page.querySelector('#txtServerName').value = systemInfo.ServerName; + $('#chkAutoRunWebApp', page).checked(config.AutoRunWebApp); if (systemInfo.CanLaunchWebBrowser) { - page.querySelector("#fldAutoRunWebApp").classList.remove("hide"); + page.querySelector('#fldAutoRunWebApp').classList.remove('hide'); } else { - page.querySelector("#fldAutoRunWebApp").classList.add("hide"); + page.querySelector('#fldAutoRunWebApp').classList.add('hide'); } - page.querySelector("#txtCachePath").value = systemInfo.CachePath || ""; - $("#txtMetadataPath", page).val(systemInfo.InternalMetadataPath || ""); - $("#txtMetadataNetworkPath", page).val(systemInfo.MetadataNetworkPath || ""); - $("#selectLocalizationLanguage", page).html(languageOptions.map(function (language) { - return '"; + page.querySelector('#txtCachePath').value = systemInfo.CachePath || ''; + $('#txtMetadataPath', page).val(systemInfo.InternalMetadataPath || ''); + $('#txtMetadataNetworkPath', page).val(systemInfo.MetadataNetworkPath || ''); + $('#selectLocalizationLanguage', page).html(languageOptions.map(function (language) { + return ''; })).val(config.UICulture); currentLanguage = config.UICulture; if (systemInfo.CanSelfRestart || systemInfo.CanSelfUpdate) { - $(".autoUpdatesContainer", page).removeClass("hide"); + $('.autoUpdatesContainer', page).removeClass('hide'); } else { - $(".autoUpdatesContainer", page).addClass("hide"); + $('.autoUpdatesContainer', page).addClass('hide'); } loading.hide(); @@ -30,19 +30,19 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-checkbox", "emby-te function onSubmit() { loading.show(); var form = this; - $(form).parents(".page"); + $(form).parents('.page'); ApiClient.getServerConfiguration().then(function (config) { - config.ServerName = $("#txtServerName", form).val(); - config.UICulture = $("#selectLocalizationLanguage", form).val(); - config.CachePath = form.querySelector("#txtCachePath").value; - config.MetadataPath = $("#txtMetadataPath", form).val(); - config.MetadataNetworkPath = $("#txtMetadataNetworkPath", form).val(); + config.ServerName = $('#txtServerName', form).val(); + config.UICulture = $('#selectLocalizationLanguage', form).val(); + config.CachePath = form.querySelector('#txtCachePath').value; + config.MetadataPath = $('#txtMetadataPath', form).val(); + config.MetadataNetworkPath = $('#txtMetadataNetworkPath', form).val(); var requiresReload = config.UICulture !== currentLanguage; - config.AutoRunWebApp = $("#chkAutoRunWebApp", form).checked(); + config.AutoRunWebApp = $('#chkAutoRunWebApp', form).checked(); ApiClient.updateServerConfiguration(config).then(function() { ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig) { - brandingConfig.LoginDisclaimer = form.querySelector("#txtLoginDisclaimer").value; - brandingConfig.CustomCss = form.querySelector("#txtCustomCss").value; + brandingConfig.LoginDisclaimer = form.querySelector('#txtLoginDisclaimer').value; + brandingConfig.CustomCss = form.querySelector('#txtCustomCss').value; if (currentBrandingOptions && brandingConfig.CustomCss !== currentBrandingOptions.CustomCss) { requiresReload = true; @@ -57,8 +57,8 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-checkbox", "emby-te }); }); }, function () { - require(["alert"], function (alert) { - alert(globalize.translate("DefaultErrorMessage")); + require(['alert'], function (alert) { + alert(globalize.translate('DefaultErrorMessage')); }); Dashboard.processServerConfigurationUpdateResult(); @@ -69,61 +69,61 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-checkbox", "emby-te var currentBrandingOptions; var currentLanguage; - var brandingConfigKey = "branding"; + var brandingConfigKey = 'branding'; return function (view, params) { - $("#btnSelectCachePath", view).on("click.selectDirectory", function () { - require(["directorybrowser"], function (directoryBrowser) { + $('#btnSelectCachePath', view).on('click.selectDirectory', function () { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ callback: function (path) { if (path) { - view.querySelector("#txtCachePath").value = path; + view.querySelector('#txtCachePath').value = path; } picker.close(); }, validateWriteable: true, - header: globalize.translate("HeaderSelectServerCachePath"), - instruction: globalize.translate("HeaderSelectServerCachePathHelp") + header: globalize.translate('HeaderSelectServerCachePath'), + instruction: globalize.translate('HeaderSelectServerCachePathHelp') }); }); }); - $("#btnSelectMetadataPath", view).on("click.selectDirectory", function () { - require(["directorybrowser"], function (directoryBrowser) { + $('#btnSelectMetadataPath', view).on('click.selectDirectory', function () { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ - path: $("#txtMetadataPath", view).val(), - networkSharePath: $("#txtMetadataNetworkPath", view).val(), + path: $('#txtMetadataPath', view).val(), + networkSharePath: $('#txtMetadataNetworkPath', view).val(), callback: function (path, networkPath) { if (path) { - $("#txtMetadataPath", view).val(path); + $('#txtMetadataPath', view).val(path); } if (networkPath) { - $("#txtMetadataNetworkPath", view).val(networkPath); + $('#txtMetadataNetworkPath', view).val(networkPath); } picker.close(); }, validateWriteable: true, - header: globalize.translate("HeaderSelectMetadataPath"), - instruction: globalize.translate("HeaderSelectMetadataPathHelp"), + header: globalize.translate('HeaderSelectMetadataPath'), + instruction: globalize.translate('HeaderSelectMetadataPathHelp'), enableNetworkSharePath: true }); }); }); - $(".dashboardGeneralForm", view).off("submit", onSubmit).on("submit", onSubmit); - view.addEventListener("viewshow", function () { + $('.dashboardGeneralForm', view).off('submit', onSubmit).on('submit', onSubmit); + view.addEventListener('viewshow', function () { var promiseConfig = ApiClient.getServerConfiguration(); - var promiseLanguageOptions = ApiClient.getJSON(ApiClient.getUrl("Localization/Options")); + var promiseLanguageOptions = ApiClient.getJSON(ApiClient.getUrl('Localization/Options')); var promiseSystemInfo = ApiClient.getSystemInfo(); Promise.all([promiseConfig, promiseLanguageOptions, promiseSystemInfo]).then(function (responses) { loadPage(view, responses[0], responses[1], responses[2]); }); ApiClient.getNamedConfiguration(brandingConfigKey).then(function (config) { currentBrandingOptions = config; - view.querySelector("#txtLoginDisclaimer").value = config.LoginDisclaimer || ""; - view.querySelector("#txtCustomCss").value = config.CustomCss || ""; + view.querySelector('#txtLoginDisclaimer').value = config.LoginDisclaimer || ''; + view.querySelector('#txtCustomCss').value = config.CustomCss || ''; }); }); }; diff --git a/src/controllers/dashboard/librarydisplay.js b/src/controllers/dashboard/librarydisplay.js index 603ab1ee67..a820c37528 100644 --- a/src/controllers/dashboard/librarydisplay.js +++ b/src/controllers/dashboard/librarydisplay.js @@ -1,50 +1,50 @@ -define(["globalize", "loading", "libraryMenu", "emby-checkbox", "emby-button", "emby-button"], function(globalize, loading, libraryMenu) { - "use strict"; +define(['globalize', 'loading', 'libraryMenu', 'emby-checkbox', 'emby-button', 'emby-button'], function(globalize, loading, libraryMenu) { + 'use strict'; function getTabs() { return [{ - href: "library.html", - name: globalize.translate("HeaderLibraries") + href: 'library.html', + name: globalize.translate('HeaderLibraries') }, { - href: "librarydisplay.html", - name: globalize.translate("TabDisplay") + href: 'librarydisplay.html', + name: globalize.translate('TabDisplay') }, { - href: "metadataimages.html", - name: globalize.translate("TabMetadata") + href: 'metadataimages.html', + name: globalize.translate('TabMetadata') }, { - href: "metadatanfo.html", - name: globalize.translate("TabNfoSettings") + href: 'metadatanfo.html', + name: globalize.translate('TabNfoSettings') }]; } return function(view, params) { function loadData() { ApiClient.getServerConfiguration().then(function(config) { - view.querySelector(".chkFolderView").checked = config.EnableFolderView; - view.querySelector(".chkGroupMoviesIntoCollections").checked = config.EnableGroupingIntoCollections; - view.querySelector(".chkDisplaySpecialsWithinSeasons").checked = config.DisplaySpecialsWithinSeasons; - view.querySelector(".chkExternalContentInSuggestions").checked = config.EnableExternalContentInSuggestions; - view.querySelector("#chkSaveMetadataHidden").checked = config.SaveMetadataHidden; + view.querySelector('.chkFolderView').checked = config.EnableFolderView; + view.querySelector('.chkGroupMoviesIntoCollections').checked = config.EnableGroupingIntoCollections; + view.querySelector('.chkDisplaySpecialsWithinSeasons').checked = config.DisplaySpecialsWithinSeasons; + view.querySelector('.chkExternalContentInSuggestions').checked = config.EnableExternalContentInSuggestions; + view.querySelector('#chkSaveMetadataHidden').checked = config.SaveMetadataHidden; }); - ApiClient.getNamedConfiguration("metadata").then(function(metadata) { - view.querySelector("#selectDateAdded").selectedIndex = metadata.UseFileCreationTimeForDateAdded ? 1 : 0; + ApiClient.getNamedConfiguration('metadata').then(function(metadata) { + view.querySelector('#selectDateAdded').selectedIndex = metadata.UseFileCreationTimeForDateAdded ? 1 : 0; }); } - view.querySelector("form").addEventListener("submit", function(e) { + view.querySelector('form').addEventListener('submit', function(e) { loading.show(); var form = this; ApiClient.getServerConfiguration().then(function(config) { - config.EnableFolderView = form.querySelector(".chkFolderView").checked; - config.EnableGroupingIntoCollections = form.querySelector(".chkGroupMoviesIntoCollections").checked; - config.DisplaySpecialsWithinSeasons = form.querySelector(".chkDisplaySpecialsWithinSeasons").checked; - config.EnableExternalContentInSuggestions = form.querySelector(".chkExternalContentInSuggestions").checked; - config.SaveMetadataHidden = form.querySelector("#chkSaveMetadataHidden").checked; + config.EnableFolderView = form.querySelector('.chkFolderView').checked; + config.EnableGroupingIntoCollections = form.querySelector('.chkGroupMoviesIntoCollections').checked; + config.DisplaySpecialsWithinSeasons = form.querySelector('.chkDisplaySpecialsWithinSeasons').checked; + config.EnableExternalContentInSuggestions = form.querySelector('.chkExternalContentInSuggestions').checked; + config.SaveMetadataHidden = form.querySelector('#chkSaveMetadataHidden').checked; ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult); }); - ApiClient.getNamedConfiguration("metadata").then(function(config) { - config.UseFileCreationTimeForDateAdded = "1" === $("#selectDateAdded", form).val(); - ApiClient.updateNamedConfiguration("metadata", config); + ApiClient.getNamedConfiguration('metadata').then(function(config) { + config.UseFileCreationTimeForDateAdded = '1' === $('#selectDateAdded', form).val(); + ApiClient.updateNamedConfiguration('metadata', config); }); e.preventDefault(); @@ -52,14 +52,14 @@ define(["globalize", "loading", "libraryMenu", "emby-checkbox", "emby-button", " return false; }); - view.addEventListener("viewshow", function() { - libraryMenu.setTabs("librarysetup", 1, getTabs); + view.addEventListener('viewshow', function() { + libraryMenu.setTabs('librarysetup', 1, getTabs); loadData(); ApiClient.getSystemInfo().then(function(info) { - if ("Windows" === info.OperatingSystem) { - view.querySelector(".fldSaveMetadataHidden").classList.remove("hide"); + if ('Windows' === info.OperatingSystem) { + view.querySelector('.fldSaveMetadataHidden').classList.remove('hide'); } else { - view.querySelector(".fldSaveMetadataHidden").classList.add("hide"); + view.querySelector('.fldSaveMetadataHidden').classList.add('hide'); } }); }); diff --git a/src/controllers/dashboard/logs.js b/src/controllers/dashboard/logs.js index 46b5e1ac2e..e0b000a130 100644 --- a/src/controllers/dashboard/logs.js +++ b/src/controllers/dashboard/logs.js @@ -1,31 +1,31 @@ -define(["datetime", "loading", "apphost", "listViewStyle", "emby-button", "flexStyles"], function(datetime, loading, appHost) { - "use strict"; +define(['datetime', 'loading', 'apphost', 'listViewStyle', 'emby-button', 'flexStyles'], function(datetime, loading, appHost) { + 'use strict'; return function(view, params) { - view.addEventListener("viewbeforeshow", function() { + view.addEventListener('viewbeforeshow', function() { loading.show(); var apiClient = ApiClient; - apiClient.getJSON(apiClient.getUrl("System/Logs")).then(function(logs) { - var html = ""; + apiClient.getJSON(apiClient.getUrl('System/Logs')).then(function(logs) { + var html = ''; html += '
'; html += logs.map(function(log) { - var logUrl = apiClient.getUrl("System/Logs/Log", { + var logUrl = apiClient.getUrl('System/Logs/Log', { name: log.Name }); - logUrl += "&api_key=" + apiClient.accessToken(); - var logHtml = ""; + logUrl += '&api_key=' + apiClient.accessToken(); + var logHtml = ''; logHtml += ''; logHtml += '
'; - logHtml += "

" + log.Name + "

"; + logHtml += "

" + log.Name + '

'; var date = datetime.parseISO8601Date(log.DateModified, true); var text = datetime.toLocaleDateString(date); - text += " " + datetime.getDisplayTime(date); - logHtml += '
' + text + "
"; - logHtml += "
"; - logHtml += "
"; + text += ' ' + datetime.getDisplayTime(date); + logHtml += '
' + text + '
'; + logHtml += '
'; + logHtml += ''; return logHtml; - }).join(""); - html += ""; - view.querySelector(".serverLogs").innerHTML = html; + }).join(''); + html += ''; + view.querySelector('.serverLogs').innerHTML = html; loading.hide(); }); }); diff --git a/src/controllers/dashboard/medialibrarypage.js b/src/controllers/dashboard/medialibrarypage.js index 497fac3de9..0788fa4cad 100644 --- a/src/controllers/dashboard/medialibrarypage.js +++ b/src/controllers/dashboard/medialibrarypage.js @@ -1,8 +1,8 @@ -define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "globalize", "dom", "indicators", "scripts/imagehelper", "cardStyle", "emby-itemrefreshindicator"], function ($, appHost, taskButton, loading, libraryMenu, globalize, dom, indicators, imageHelper) { - "use strict"; +define(['jQuery', 'apphost', 'scripts/taskbutton', 'loading', 'libraryMenu', 'globalize', 'dom', 'indicators', 'scripts/imagehelper', 'cardStyle', 'emby-itemrefreshindicator'], function ($, appHost, taskButton, loading, libraryMenu, globalize, dom, indicators, imageHelper) { + 'use strict'; function addVirtualFolder(page) { - require(["medialibrarycreator"], function (medialibrarycreator) { + require(['medialibrarycreator'], function (medialibrarycreator) { new medialibrarycreator().show({ collectionTypeOptions: getCollectionTypeOptions().filter(function (f) { return !f.hidden; @@ -17,7 +17,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl } function editVirtualFolder(page, virtualFolder) { - require(["medialibraryeditor"], function (medialibraryeditor) { + require(['medialibraryeditor'], function (medialibraryeditor) { new medialibraryeditor().show({ refresh: shouldRefreshLibraryAfterChanges(page), library: virtualFolder @@ -30,14 +30,14 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl } function deleteVirtualFolder(page, virtualFolder) { - var msg = globalize.translate("MessageAreYouSureYouWishToRemoveMediaFolder"); + var msg = globalize.translate('MessageAreYouSureYouWishToRemoveMediaFolder'); if (virtualFolder.Locations.length) { - msg += "

" + globalize.translate("MessageTheFollowingLocationWillBeRemovedFromLibrary") + "

"; - msg += virtualFolder.Locations.join("
"); + msg += '

' + globalize.translate('MessageTheFollowingLocationWillBeRemovedFromLibrary') + '

'; + msg += virtualFolder.Locations.join('
'); } - require(["confirm"], function (confirm) { + require(['confirm'], function (confirm) { confirm({ text: msg, @@ -55,20 +55,20 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl } function refreshVirtualFolder(page, virtualFolder) { - require(["refreshDialog"], function (refreshDialog) { + require(['refreshDialog'], function (refreshDialog) { new refreshDialog({ itemIds: [virtualFolder.ItemId], serverId: ApiClient.serverId(), - mode: "scan" + mode: 'scan' }).show(); }); } function renameVirtualFolder(page, virtualFolder) { - require(["prompt"], function (prompt) { + require(['prompt'], function (prompt) { prompt({ - label: globalize.translate("LabelNewName"), - confirmText: globalize.translate("ButtonRename") + label: globalize.translate('LabelNewName'), + confirmText: globalize.translate('ButtonRename') }).then(function (newName) { if (newName && newName != virtualFolder.Name) { var refreshAfterChange = shouldRefreshLibraryAfterChanges(page); @@ -81,59 +81,59 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl } function showCardMenu(page, elem, virtualFolders) { - var card = dom.parentWithClass(elem, "card"); - var index = parseInt(card.getAttribute("data-index")); + var card = dom.parentWithClass(elem, 'card'); + var index = parseInt(card.getAttribute('data-index')); var virtualFolder = virtualFolders[index]; var menuItems = []; menuItems.push({ - name: globalize.translate("ButtonEditImages"), - id: "editimages", - icon: "photo" + name: globalize.translate('ButtonEditImages'), + id: 'editimages', + icon: 'photo' }); menuItems.push({ - name: globalize.translate("ManageLibrary"), - id: "edit", - icon: "folder_open" + name: globalize.translate('ManageLibrary'), + id: 'edit', + icon: 'folder_open' }); menuItems.push({ - name: globalize.translate("ButtonRemove"), - id: "delete", - icon: "delete" + name: globalize.translate('ButtonRemove'), + id: 'delete', + icon: 'delete' }); menuItems.push({ - name: globalize.translate("ButtonRename"), - id: "rename", - icon: "mode_edit" + name: globalize.translate('ButtonRename'), + id: 'rename', + icon: 'mode_edit' }); menuItems.push({ - name: globalize.translate("ScanLibrary"), - id: "refresh", - icon: "refresh" + name: globalize.translate('ScanLibrary'), + id: 'refresh', + icon: 'refresh' }); - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: menuItems, positionTo: elem, callback: function (resultId) { switch (resultId) { - case "edit": + case 'edit': editVirtualFolder(page, virtualFolder); break; - case "editimages": + case 'editimages': editImages(page, virtualFolder); break; - case "rename": + case 'rename': renameVirtualFolder(page, virtualFolder); break; - case "delete": + case 'delete': deleteVirtualFolder(page, virtualFolder); break; - case "refresh": + case 'refresh': refreshVirtualFolder(page, virtualFolder); } } @@ -149,14 +149,14 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl } function shouldRefreshLibraryAfterChanges(page) { - return "mediaLibraryPage" === page.id; + return 'mediaLibraryPage' === page.id; } function reloadVirtualFolders(page, virtualFolders) { - var html = ""; + var html = ''; virtualFolders.push({ - Name: globalize.translate("ButtonAddMediaLibrary"), - icon: "add_circle", + Name: globalize.translate('ButtonAddMediaLibrary'), + icon: 'add_circle', Locations: [], showType: false, showLocations: false, @@ -169,19 +169,19 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl html += getVirtualFolderHtml(page, virtualFolder, i); } - var divVirtualFolders = page.querySelector("#divVirtualFolders"); + var divVirtualFolders = page.querySelector('#divVirtualFolders'); divVirtualFolders.innerHTML = html; - divVirtualFolders.classList.add("itemsContainer"); - divVirtualFolders.classList.add("vertical-wrap"); - $(".btnCardMenu", divVirtualFolders).on("click", function () { + divVirtualFolders.classList.add('itemsContainer'); + divVirtualFolders.classList.add('vertical-wrap'); + $('.btnCardMenu', divVirtualFolders).on('click', function () { showCardMenu(page, this, virtualFolders); }); - divVirtualFolders.querySelector(".addLibrary").addEventListener("click", function () { + divVirtualFolders.querySelector('.addLibrary').addEventListener('click', function () { addVirtualFolder(page); }); - $(".editLibrary", divVirtualFolders).on("click", function () { - var card = $(this).parents(".card")[0]; - var index = parseInt(card.getAttribute("data-index")); + $('.editLibrary', divVirtualFolders).on('click', function () { + var card = $(this).parents('.card')[0]; + var index = parseInt(card.getAttribute('data-index')); var virtualFolder = virtualFolders[index]; if (virtualFolder.ItemId) { @@ -192,7 +192,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl } function editImages(page, virtualFolder) { - require(["imageEditor"], function (imageEditor) { + require(['imageEditor'], function (imageEditor) { imageEditor.show({ itemId: virtualFolder.ItemId, serverId: ApiClient.serverId() @@ -203,48 +203,48 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl } function getLink(text, url) { - return globalize.translate(text, '', ""); + return globalize.translate(text, '', ''); } function getCollectionTypeOptions() { return [{ - name: "", - value: "" + name: '', + value: '' }, { - name: globalize.translate("FolderTypeMovies"), - value: "movies", - message: getLink("MovieLibraryHelp", "https://docs.jellyfin.org/general/server/media/movies.html") + name: globalize.translate('FolderTypeMovies'), + value: 'movies', + message: getLink('MovieLibraryHelp', 'https://docs.jellyfin.org/general/server/media/movies.html') }, { - name: globalize.translate("FolderTypeMusic"), - value: "music", - message: getLink("MusicLibraryHelp", "https://docs.jellyfin.org/general/server/media/music.html") + name: globalize.translate('FolderTypeMusic'), + value: 'music', + message: getLink('MusicLibraryHelp', 'https://docs.jellyfin.org/general/server/media/music.html') }, { - name: globalize.translate("FolderTypeTvShows"), - value: "tvshows", - message: getLink("TvLibraryHelp", "https://docs.jellyfin.org/general/server/media/shows.html") + name: globalize.translate('FolderTypeTvShows'), + value: 'tvshows', + message: getLink('TvLibraryHelp', 'https://docs.jellyfin.org/general/server/media/shows.html') }, { - name: globalize.translate("FolderTypeBooks"), - value: "books", - message: getLink("BookLibraryHelp", "https://docs.jellyfin.org/general/server/media/books.html") + name: globalize.translate('FolderTypeBooks'), + value: 'books', + message: getLink('BookLibraryHelp', 'https://docs.jellyfin.org/general/server/media/books.html') }, { - name: globalize.translate("OptionHomeVideos"), - value: "homevideos" + name: globalize.translate('OptionHomeVideos'), + value: 'homevideos' }, { - name: globalize.translate("FolderTypeMusicVideos"), - value: "musicvideos" + name: globalize.translate('FolderTypeMusicVideos'), + value: 'musicvideos' }, { - name: globalize.translate("FolderTypeUnset"), - value: "mixed", - message: globalize.translate("MessageUnsetContentHelp") + name: globalize.translate('FolderTypeUnset'), + value: 'mixed', + message: globalize.translate('MessageUnsetContentHelp') }]; } function getVirtualFolderHtml(page, virtualFolder, index) { - var html = ""; - var style = ""; + var html = ''; + var style = ''; - if (page.classList.contains("wizardPage")) { - style += "min-width:33.3%;"; + if (page.classList.contains('wizardPage')) { + style += 'min-width:33.3%;'; } html += '
'; @@ -252,12 +252,12 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl html += '
'; html += '
'; html += '
'; - var imgUrl = ""; + var imgUrl = ''; if (virtualFolder.PrimaryImageItemId) { imgUrl = ApiClient.getScaledImageUrl(virtualFolder.PrimaryImageItemId, { maxWidth: Math.round(dom.getScreenWidth() * 0.40), - type: "Primary" + type: 'Primary' }); } @@ -274,9 +274,9 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (hasCardImageContainer) { html += '
'; - html += '
'; - html += "
"; - html += "
"; + html += '
'; + html += '
'; + html += '
'; } if (!imgUrl && virtualFolder.showNameWithIcon) { @@ -286,106 +286,106 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (virtualFolder.showNameWithIcon) { html += '
'; html += virtualFolder.Name; - html += "
"; + html += ''; } - html += ""; + html += ''; } - html += ""; - html += ""; + html += ''; + html += ''; html += '
'; // always show menu unless explicitly hidden if (virtualFolder.showMenu !== false) { html += '
'; html += ''; - html += "
"; + html += '
'; } html += "
"; if (virtualFolder.showNameWithIcon) { - html += " "; + html += ' '; } else { html += virtualFolder.Name; } - html += "
"; + html += ''; var typeName = getCollectionTypeOptions().filter(function (t) { return t.value == virtualFolder.CollectionType; })[0]; - typeName = typeName ? typeName.name : globalize.translate("FolderTypeUnset"); + typeName = typeName ? typeName.name : globalize.translate('FolderTypeUnset'); html += "
"; if (virtualFolder.showType === false) { - html += " "; + html += ' '; } else { html += typeName; } - html += "
"; + html += ''; if (virtualFolder.showLocations === false) { html += "
"; - html += " "; - html += "
"; + html += ' '; + html += ''; } else if (virtualFolder.Locations.length && virtualFolder.Locations.length === 1) { html += "
"; html += virtualFolder.Locations[0]; - html += "
"; + html += ''; } else { html += "
"; - html += globalize.translate("NumLocationsValue", virtualFolder.Locations.length); - html += "
"; + html += globalize.translate('NumLocationsValue', virtualFolder.Locations.length); + html += ''; } - html += ""; - html += ""; - html += ""; + html += ''; + html += ''; + html += ''; return html; } function getTabs() { return [{ - href: "library.html", - name: globalize.translate("HeaderLibraries") + href: 'library.html', + name: globalize.translate('HeaderLibraries') }, { - href: "librarydisplay.html", - name: globalize.translate("TabDisplay") + href: 'librarydisplay.html', + name: globalize.translate('TabDisplay') }, { - href: "metadataimages.html", - name: globalize.translate("TabMetadata") + href: 'metadataimages.html', + name: globalize.translate('TabMetadata') }, { - href: "metadatanfo.html", - name: globalize.translate("TabNfoSettings") + href: 'metadatanfo.html', + name: globalize.translate('TabNfoSettings') }]; } window.WizardLibraryPage = { next: function () { - Dashboard.navigate("wizardsettings.html"); + Dashboard.navigate('wizardsettings.html'); } }; - pageClassOn("pageshow", "mediaLibraryPage", function () { + pageClassOn('pageshow', 'mediaLibraryPage', function () { reloadLibrary(this); }); - pageIdOn("pageshow", "mediaLibraryPage", function () { - libraryMenu.setTabs("librarysetup", 0, getTabs); + pageIdOn('pageshow', 'mediaLibraryPage', function () { + libraryMenu.setTabs('librarysetup', 0, getTabs); var page = this; taskButton({ - mode: "on", - progressElem: page.querySelector(".refreshProgress"), - taskKey: "RefreshLibrary", - button: page.querySelector(".btnRefresh") + mode: 'on', + progressElem: page.querySelector('.refreshProgress'), + taskKey: 'RefreshLibrary', + button: page.querySelector('.btnRefresh') }); }); - pageIdOn("pagebeforehide", "mediaLibraryPage", function () { + pageIdOn('pagebeforehide', 'mediaLibraryPage', function () { var page = this; taskButton({ - mode: "off", - progressElem: page.querySelector(".refreshProgress"), - taskKey: "RefreshLibrary", - button: page.querySelector(".btnRefresh") + mode: 'off', + progressElem: page.querySelector('.refreshProgress'), + taskKey: 'RefreshLibrary', + button: page.querySelector('.btnRefresh') }); }); }); diff --git a/src/controllers/dashboard/metadataimagespage.js b/src/controllers/dashboard/metadataimagespage.js index 42d751a248..277eecb42a 100644 --- a/src/controllers/dashboard/metadataimagespage.js +++ b/src/controllers/dashboard/metadataimagespage.js @@ -1,13 +1,13 @@ -define(["jQuery", "dom", "loading", "libraryMenu", "globalize", "listViewStyle"], function($, dom, loading, libraryMenu, globalize) { - "use strict"; +define(['jQuery', 'dom', 'loading', 'libraryMenu', 'globalize', 'listViewStyle'], function($, dom, loading, libraryMenu, globalize) { + 'use strict'; function populateLanguages(select) { return ApiClient.getCultures().then(function(languages) { - var html = ""; + var html = ''; html += ""; for (var i = 0, length = languages.length; i < length; i++) { var culture = languages[i]; - html += ""; + html += "'; } select.innerHTML = html; }); @@ -15,50 +15,50 @@ define(["jQuery", "dom", "loading", "libraryMenu", "globalize", "listViewStyle"] function populateCountries(select) { return ApiClient.getCountries().then(function(allCountries) { - var html = ""; + var html = ''; html += ""; for (var i = 0, length = allCountries.length; i < length; i++) { var culture = allCountries[i]; - html += ""; + html += "'; } select.innerHTML = html; }); } function loadPage(page) { - var promises = [ApiClient.getServerConfiguration(), populateLanguages(page.querySelector("#selectLanguage")), populateCountries(page.querySelector("#selectCountry"))]; + var promises = [ApiClient.getServerConfiguration(), populateLanguages(page.querySelector('#selectLanguage')), populateCountries(page.querySelector('#selectCountry'))]; Promise.all(promises).then(function(responses) { var config = responses[0]; - page.querySelector("#selectLanguage").value = config.PreferredMetadataLanguage || "", page.querySelector("#selectCountry").value = config.MetadataCountryCode || "", loading.hide(); + page.querySelector('#selectLanguage').value = config.PreferredMetadataLanguage || '', page.querySelector('#selectCountry').value = config.MetadataCountryCode || '', loading.hide(); }); } function onSubmit() { var form = this; return loading.show(), ApiClient.getServerConfiguration().then(function(config) { - config.PreferredMetadataLanguage = form.querySelector("#selectLanguage").value, config.MetadataCountryCode = form.querySelector("#selectCountry").value, ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult); + config.PreferredMetadataLanguage = form.querySelector('#selectLanguage').value, config.MetadataCountryCode = form.querySelector('#selectCountry').value, ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult); }), !1; } function getTabs() { return [{ - href: "library.html", - name: globalize.translate("HeaderLibraries") + href: 'library.html', + name: globalize.translate('HeaderLibraries') }, { - href: "librarydisplay.html", - name: globalize.translate("TabDisplay") + href: 'librarydisplay.html', + name: globalize.translate('TabDisplay') }, { - href: "metadataimages.html", - name: globalize.translate("TabMetadata") + href: 'metadataimages.html', + name: globalize.translate('TabMetadata') }, { - href: "metadatanfo.html", - name: globalize.translate("TabNfoSettings") + href: 'metadatanfo.html', + name: globalize.translate('TabNfoSettings') }]; } - $(document).on("pageinit", "#metadataImagesConfigurationPage", function() { - $(".metadataImagesConfigurationForm").off("submit", onSubmit).on("submit", onSubmit); - }).on("pageshow", "#metadataImagesConfigurationPage", function() { - libraryMenu.setTabs("metadata", 2, getTabs), loading.show(), loadPage(this); + $(document).on('pageinit', '#metadataImagesConfigurationPage', function() { + $('.metadataImagesConfigurationForm').off('submit', onSubmit).on('submit', onSubmit); + }).on('pageshow', '#metadataImagesConfigurationPage', function() { + libraryMenu.setTabs('metadata', 2, getTabs), loading.show(), loadPage(this); }); }); diff --git a/src/controllers/dashboard/metadatanfo.js b/src/controllers/dashboard/metadatanfo.js index 586663218a..a936192618 100644 --- a/src/controllers/dashboard/metadatanfo.js +++ b/src/controllers/dashboard/metadatanfo.js @@ -1,16 +1,16 @@ -define(["jQuery", "loading", "libraryMenu", "globalize"], function ($, loading, libraryMenu, globalize) { - "use strict"; +define(['jQuery', 'loading', 'libraryMenu', 'globalize'], function ($, loading, libraryMenu, globalize) { + 'use strict'; function loadPage(page, config, users) { - var html = '"; + var html = ''; html += users.map(function (user) { - return '"; - }).join(""); - $("#selectUser", page).html(html).val(config.UserId || ""); - $("#selectReleaseDateFormat", page).val(config.ReleaseDateFormat); - page.querySelector("#chkSaveImagePaths").checked = config.SaveImagePathsInNfo; - page.querySelector("#chkEnablePathSubstitution").checked = config.EnablePathSubstitution; - page.querySelector("#chkEnableExtraThumbs").checked = config.EnableExtraThumbsDuplication; + return ''; + }).join(''); + $('#selectUser', page).html(html).val(config.UserId || ''); + $('#selectReleaseDateFormat', page).val(config.ReleaseDateFormat); + page.querySelector('#chkSaveImagePaths').checked = config.SaveImagePathsInNfo; + page.querySelector('#chkEnablePathSubstitution').checked = config.EnablePathSubstitution; + page.querySelector('#chkEnableExtraThumbs').checked = config.EnableExtraThumbsDuplication; loading.hide(); } @@ -18,11 +18,11 @@ define(["jQuery", "loading", "libraryMenu", "globalize"], function ($, loading, loading.show(); var form = this; ApiClient.getNamedConfiguration(metadataKey).then(function (config) { - config.UserId = $("#selectUser", form).val() || null; - config.ReleaseDateFormat = $("#selectReleaseDateFormat", form).val(); - config.SaveImagePathsInNfo = form.querySelector("#chkSaveImagePaths").checked; - config.EnablePathSubstitution = form.querySelector("#chkEnablePathSubstitution").checked; - config.EnableExtraThumbsDuplication = form.querySelector("#chkEnableExtraThumbs").checked; + config.UserId = $('#selectUser', form).val() || null; + config.ReleaseDateFormat = $('#selectReleaseDateFormat', form).val(); + config.SaveImagePathsInNfo = form.querySelector('#chkSaveImagePaths').checked; + config.EnablePathSubstitution = form.querySelector('#chkEnablePathSubstitution').checked; + config.EnableExtraThumbsDuplication = form.querySelector('#chkEnableExtraThumbs').checked; ApiClient.updateNamedConfiguration(metadataKey, config).then(function () { Dashboard.processServerConfigurationUpdateResult(); showConfirmMessage(config); @@ -33,36 +33,36 @@ define(["jQuery", "loading", "libraryMenu", "globalize"], function ($, loading, function showConfirmMessage(config) { var msg = []; - msg.push(globalize.translate("MetadataSettingChangeHelp")); + msg.push(globalize.translate('MetadataSettingChangeHelp')); - require(["alert"], function (alert) { + require(['alert'], function (alert) { alert({ - text: msg.join("

") + text: msg.join('

') }); }); } function getTabs() { return [{ - href: "library.html", - name: globalize.translate("HeaderLibraries") + href: 'library.html', + name: globalize.translate('HeaderLibraries') }, { - href: "librarydisplay.html", - name: globalize.translate("TabDisplay") + href: 'librarydisplay.html', + name: globalize.translate('TabDisplay') }, { - href: "metadataimages.html", - name: globalize.translate("TabMetadata") + href: 'metadataimages.html', + name: globalize.translate('TabMetadata') }, { - href: "metadatanfo.html", - name: globalize.translate("TabNfoSettings") + href: 'metadatanfo.html', + name: globalize.translate('TabNfoSettings') }]; } - var metadataKey = "xbmcmetadata"; - $(document).on("pageinit", "#metadataNfoPage", function () { - $(".metadataNfoForm").off("submit", onSubmit).on("submit", onSubmit); - }).on("pageshow", "#metadataNfoPage", function () { - libraryMenu.setTabs("metadata", 3, getTabs); + var metadataKey = 'xbmcmetadata'; + $(document).on('pageinit', '#metadataNfoPage', function () { + $('.metadataNfoForm').off('submit', onSubmit).on('submit', onSubmit); + }).on('pageshow', '#metadataNfoPage', function () { + libraryMenu.setTabs('metadata', 3, getTabs); loading.show(); var page = this; var promise1 = ApiClient.getUsers(); diff --git a/src/controllers/dashboard/networking.js b/src/controllers/dashboard/networking.js index c0e4d76d0d..9cf638ceee 100644 --- a/src/controllers/dashboard/networking.js +++ b/src/controllers/dashboard/networking.js @@ -1,10 +1,10 @@ -define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], function (loading, libraryMenu, globalize) { - "use strict"; +define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'], function (loading, libraryMenu, globalize) { + 'use strict'; function onSubmit(e) { var form = this; - var localAddress = form.querySelector("#txtLocalAddress").value; - var enableUpnp = form.querySelector("#chkEnableUpnp").checked; + var localAddress = form.querySelector('#txtLocalAddress').value; + var enableUpnp = form.querySelector('#chkEnableUpnp').checked; confirmSelections(localAddress, enableUpnp, function () { var validationResult = getValidationAlert(form); @@ -16,35 +16,35 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], validateHttps(form).then(function () { loading.show(); ApiClient.getServerConfiguration().then(function (config) { - config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function (s) { + config.LocalNetworkSubnets = form.querySelector('#txtLanNetworks').value.split(',').map(function (s) { return s.trim(); }).filter(function (s) { return s.length > 0; }); - config.RemoteIPFilter = form.querySelector("#txtExternalAddressFilter").value.split(",").map(function (s) { + config.RemoteIPFilter = form.querySelector('#txtExternalAddressFilter').value.split(',').map(function (s) { return s.trim(); }).filter(function (s) { return s.length > 0; }); - config.IsRemoteIPFilterBlacklist = "blacklist" === form.querySelector("#selectExternalAddressFilterMode").value; - config.PublicPort = form.querySelector("#txtPublicPort").value; - config.PublicHttpsPort = form.querySelector("#txtPublicHttpsPort").value; - var httpsMode = form.querySelector("#selectHttpsMode").value; + config.IsRemoteIPFilterBlacklist = 'blacklist' === form.querySelector('#selectExternalAddressFilterMode').value; + config.PublicPort = form.querySelector('#txtPublicPort').value; + config.PublicHttpsPort = form.querySelector('#txtPublicHttpsPort').value; + var httpsMode = form.querySelector('#selectHttpsMode').value; switch (httpsMode) { - case "proxy": + case 'proxy': config.EnableHttps = true; config.RequireHttps = false; config.IsBehindProxy = true; break; - case "required": + case 'required': config.EnableHttps = true; config.RequireHttps = true; config.IsBehindProxy = false; break; - case "enabled": + case 'enabled': config.EnableHttps = true; config.RequireHttps = false; config.IsBehindProxy = false; @@ -56,13 +56,13 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], config.IsBehindProxy = false; } - config.HttpsPortNumber = form.querySelector("#txtHttpsPort").value; - config.HttpServerPortNumber = form.querySelector("#txtPortNumber").value; + config.HttpsPortNumber = form.querySelector('#txtHttpsPort').value; + config.HttpServerPortNumber = form.querySelector('#txtPortNumber').value; config.EnableUPnP = enableUpnp; - config.BaseUrl = form.querySelector("#txtBaseUrl").value; - config.EnableRemoteAccess = form.querySelector("#chkRemoteAccess").checked; - config.CertificatePath = form.querySelector("#txtCertificatePath").value || null; - config.CertificatePassword = form.querySelector("#txtCertPassword").value || null; + config.BaseUrl = form.querySelector('#txtBaseUrl').value; + config.EnableRemoteAccess = form.querySelector('#chkRemoteAccess').checked; + config.CertificatePath = form.querySelector('#txtCertificatePath').value || null; + config.CertificatePassword = form.querySelector('#txtCertPassword').value || null; config.LocalNetworkAddresses = localAddress ? [localAddress] : []; ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse); }); @@ -72,43 +72,43 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], } function triggerChange(select) { - var evt = document.createEvent("HTMLEvents"); - evt.initEvent("change", false, true); + var evt = document.createEvent('HTMLEvents'); + evt.initEvent('change', false, true); select.dispatchEvent(evt); } function getValidationAlert(form) { - if (form.querySelector("#txtPublicPort").value === form.querySelector("#txtPublicHttpsPort").value) { - return "The public http and https ports must be different."; + if (form.querySelector('#txtPublicPort').value === form.querySelector('#txtPublicHttpsPort').value) { + return 'The public http and https ports must be different.'; } - if (form.querySelector("#txtPortNumber").value === form.querySelector("#txtHttpsPort").value) { - return "The http and https ports must be different."; + if (form.querySelector('#txtPortNumber').value === form.querySelector('#txtHttpsPort').value) { + return 'The http and https ports must be different.'; } return null; } function validateHttps(form) { - var remoteAccess = form.querySelector("#chkRemoteAccess").checked; - var certPath = form.querySelector("#txtCertificatePath").value || null; - var httpsMode = form.querySelector("#selectHttpsMode").value; + var remoteAccess = form.querySelector('#chkRemoteAccess').checked; + var certPath = form.querySelector('#txtCertificatePath').value || null; + var httpsMode = form.querySelector('#selectHttpsMode').value; - if (!remoteAccess || ("enabled" !== httpsMode && "required" !== httpsMode || certPath)) { + if (!remoteAccess || ('enabled' !== httpsMode && 'required' !== httpsMode || certPath)) { return Promise.resolve(); } return new Promise(function (resolve, reject) { return alertText({ - title: globalize.translate("TitleHostingSettings"), - text: globalize.translate("HttpsRequiresCert") + title: globalize.translate('TitleHostingSettings'), + text: globalize.translate('HttpsRequiresCert') }).then(reject, reject); }); } function alertText(options) { return new Promise(function (resolve, reject) { - require(["alert"], function (alert) { + require(['alert'], function (alert) { alert(options).then(resolve, reject); }); }); @@ -117,8 +117,8 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], function confirmSelections(localAddress, enableUpnp, callback) { if (localAddress || !enableUpnp) { alertText({ - title: globalize.translate("TitleHostingSettings"), - text: globalize.translate("SettingsWarning") + title: globalize.translate('TitleHostingSettings'), + text: globalize.translate('SettingsWarning') }).then(callback); } else { callback(); @@ -127,76 +127,76 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], return function (view, params) { function loadPage(page, config) { - page.querySelector("#txtPortNumber").value = config.HttpServerPortNumber; - page.querySelector("#txtPublicPort").value = config.PublicPort; - page.querySelector("#txtPublicHttpsPort").value = config.PublicHttpsPort; - page.querySelector("#txtLocalAddress").value = config.LocalNetworkAddresses[0] || ""; - page.querySelector("#txtLanNetworks").value = (config.LocalNetworkSubnets || []).join(", "); - page.querySelector("#txtExternalAddressFilter").value = (config.RemoteIPFilter || []).join(", "); - page.querySelector("#selectExternalAddressFilterMode").value = config.IsRemoteIPFilterBlacklist ? "blacklist" : "whitelist"; - page.querySelector("#chkRemoteAccess").checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess; - var selectHttpsMode = page.querySelector("#selectHttpsMode"); + page.querySelector('#txtPortNumber').value = config.HttpServerPortNumber; + page.querySelector('#txtPublicPort').value = config.PublicPort; + page.querySelector('#txtPublicHttpsPort').value = config.PublicHttpsPort; + page.querySelector('#txtLocalAddress').value = config.LocalNetworkAddresses[0] || ''; + page.querySelector('#txtLanNetworks').value = (config.LocalNetworkSubnets || []).join(', '); + page.querySelector('#txtExternalAddressFilter').value = (config.RemoteIPFilter || []).join(', '); + page.querySelector('#selectExternalAddressFilterMode').value = config.IsRemoteIPFilterBlacklist ? 'blacklist' : 'whitelist'; + page.querySelector('#chkRemoteAccess').checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess; + var selectHttpsMode = page.querySelector('#selectHttpsMode'); if (config.IsBehindProxy) { - selectHttpsMode.value = "proxy"; + selectHttpsMode.value = 'proxy'; } else if (config.RequireHttps) { - selectHttpsMode.value = "required"; + selectHttpsMode.value = 'required'; } else if (config.EnableHttps) { - selectHttpsMode.value = "enabled"; + selectHttpsMode.value = 'enabled'; } else { - selectHttpsMode.value = "disabled"; + selectHttpsMode.value = 'disabled'; } - page.querySelector("#txtHttpsPort").value = config.HttpsPortNumber; - page.querySelector("#txtBaseUrl").value = config.BaseUrl || ""; - var txtCertificatePath = page.querySelector("#txtCertificatePath"); - txtCertificatePath.value = config.CertificatePath || ""; - page.querySelector("#txtCertPassword").value = config.CertificatePassword || ""; - page.querySelector("#chkEnableUpnp").checked = config.EnableUPnP; - triggerChange(page.querySelector("#chkRemoteAccess")); + page.querySelector('#txtHttpsPort').value = config.HttpsPortNumber; + page.querySelector('#txtBaseUrl').value = config.BaseUrl || ''; + var txtCertificatePath = page.querySelector('#txtCertificatePath'); + txtCertificatePath.value = config.CertificatePath || ''; + page.querySelector('#txtCertPassword').value = config.CertificatePassword || ''; + page.querySelector('#chkEnableUpnp').checked = config.EnableUPnP; + triggerChange(page.querySelector('#chkRemoteAccess')); loading.hide(); } - view.querySelector("#chkRemoteAccess").addEventListener("change", function () { + view.querySelector('#chkRemoteAccess').addEventListener('change', function () { if (this.checked) { - view.querySelector(".fldExternalAddressFilter").classList.remove("hide"); - view.querySelector(".fldExternalAddressFilterMode").classList.remove("hide"); - view.querySelector(".fldPublicPort").classList.remove("hide"); - view.querySelector(".fldPublicHttpsPort").classList.remove("hide"); - view.querySelector(".fldCertificatePath").classList.remove("hide"); - view.querySelector(".fldCertPassword").classList.remove("hide"); - view.querySelector(".fldHttpsMode").classList.remove("hide"); - view.querySelector(".fldEnableUpnp").classList.remove("hide"); + view.querySelector('.fldExternalAddressFilter').classList.remove('hide'); + view.querySelector('.fldExternalAddressFilterMode').classList.remove('hide'); + view.querySelector('.fldPublicPort').classList.remove('hide'); + view.querySelector('.fldPublicHttpsPort').classList.remove('hide'); + view.querySelector('.fldCertificatePath').classList.remove('hide'); + view.querySelector('.fldCertPassword').classList.remove('hide'); + view.querySelector('.fldHttpsMode').classList.remove('hide'); + view.querySelector('.fldEnableUpnp').classList.remove('hide'); } else { - view.querySelector(".fldExternalAddressFilter").classList.add("hide"); - view.querySelector(".fldExternalAddressFilterMode").classList.add("hide"); - view.querySelector(".fldPublicPort").classList.add("hide"); - view.querySelector(".fldPublicHttpsPort").classList.add("hide"); - view.querySelector(".fldCertificatePath").classList.add("hide"); - view.querySelector(".fldCertPassword").classList.add("hide"); - view.querySelector(".fldHttpsMode").classList.add("hide"); - view.querySelector(".fldEnableUpnp").classList.add("hide"); + view.querySelector('.fldExternalAddressFilter').classList.add('hide'); + view.querySelector('.fldExternalAddressFilterMode').classList.add('hide'); + view.querySelector('.fldPublicPort').classList.add('hide'); + view.querySelector('.fldPublicHttpsPort').classList.add('hide'); + view.querySelector('.fldCertificatePath').classList.add('hide'); + view.querySelector('.fldCertPassword').classList.add('hide'); + view.querySelector('.fldHttpsMode').classList.add('hide'); + view.querySelector('.fldEnableUpnp').classList.add('hide'); } }); - view.querySelector("#btnSelectCertPath").addEventListener("click", function () { - require(["directorybrowser"], function (directoryBrowser) { + view.querySelector('#btnSelectCertPath').addEventListener('click', function () { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ includeFiles: true, includeDirectories: true, callback: function (path) { if (path) { - view.querySelector("#txtCertificatePath").value = path; + view.querySelector('#txtCertificatePath').value = path; } picker.close(); }, - header: globalize.translate("HeaderSelectCertificatePath") + header: globalize.translate('HeaderSelectCertificatePath') }); }); }); - view.querySelector(".dashboardHostingForm").addEventListener("submit", onSubmit); - view.addEventListener("viewshow", function (e) { + view.querySelector('.dashboardHostingForm').addEventListener('submit', onSubmit); + view.addEventListener('viewshow', function (e) { loading.show(); ApiClient.getServerConfiguration().then(function (config) { loadPage(view, config); diff --git a/src/controllers/dashboard/notifications/notification.js b/src/controllers/dashboard/notifications/notification.js index 70e6adaf61..90d453cdae 100644 --- a/src/controllers/dashboard/notifications/notification.js +++ b/src/controllers/dashboard/notifications/notification.js @@ -1,23 +1,23 @@ -define(["jQuery", "emby-checkbox", "fnchecked"], function ($) { - "use strict"; +define(['jQuery', 'emby-checkbox', 'fnchecked'], function ($) { + 'use strict'; function fillItems(elem, items, cssClass, idPrefix, currentList, isEnabledList) { var html = '
'; html += items.map(function (u) { var isChecked = isEnabledList ? currentList.indexOf(u.Id) != -1 : currentList.indexOf(u.Id) == -1; - var checkedHtml = isChecked ? ' checked="checked"' : ""; - return '"; - }).join(""); - html += "
"; - elem.html(html).trigger("create"); + var checkedHtml = isChecked ? ' checked="checked"' : ''; + return ''; + }).join(''); + html += ''; + elem.html(html).trigger('create'); } function reload(page) { - var type = getParameterByName("type"); + var type = getParameterByName('type'); var promise1 = ApiClient.getUsers(); var promise2 = ApiClient.getNamedConfiguration(notificationsConfigurationKey); - var promise3 = ApiClient.getJSON(ApiClient.getUrl("Notifications/Types")); - var promise4 = ApiClient.getJSON(ApiClient.getUrl("Notifications/Services")); + var promise3 = ApiClient.getJSON(ApiClient.getUrl('Notifications/Types')); + var promise4 = ApiClient.getJSON(ApiClient.getUrl('Notifications/Services')); Promise.all([promise1, promise2, promise3, promise4]).then(function (responses) { var users = responses[0]; var notificationOptions = responses[1]; @@ -31,34 +31,34 @@ define(["jQuery", "emby-checkbox", "fnchecked"], function ($) { })[0] || {}; if (typeInfo.IsBasedOnUserEvent) { - $(".monitorUsers", page).show(); + $('.monitorUsers', page).show(); } else { - $(".monitorUsers", page).hide(); + $('.monitorUsers', page).hide(); } - $(".notificationType", page).html(typeInfo.Name || "Unknown Notification"); + $('.notificationType', page).html(typeInfo.Name || 'Unknown Notification'); if (!notificationConfig) { notificationConfig = { DisabledMonitorUsers: [], SendToUsers: [], DisabledServices: [], - SendToUserMode: "Admins" + SendToUserMode: 'Admins' }; } - fillItems($(".monitorUsersList", page), users, "chkMonitor", "chkMonitor", notificationConfig.DisabledMonitorUsers); - fillItems($(".sendToUsersList", page), users, "chkSendTo", "chkSendTo", notificationConfig.SendToUsers, true); - fillItems($(".servicesList", page), services, "chkService", "chkService", notificationConfig.DisabledServices); - $("#chkEnabled", page).checked(notificationConfig.Enabled || false); - $("#selectUsers", page).val(notificationConfig.SendToUserMode).trigger("change"); + fillItems($('.monitorUsersList', page), users, 'chkMonitor', 'chkMonitor', notificationConfig.DisabledMonitorUsers); + fillItems($('.sendToUsersList', page), users, 'chkSendTo', 'chkSendTo', notificationConfig.SendToUsers, true); + fillItems($('.servicesList', page), services, 'chkService', 'chkService', notificationConfig.DisabledServices); + $('#chkEnabled', page).checked(notificationConfig.Enabled || false); + $('#selectUsers', page).val(notificationConfig.SendToUserMode).trigger('change'); }); } function save(page) { - var type = getParameterByName("type"); + var type = getParameterByName('type'); var promise1 = ApiClient.getNamedConfiguration(notificationsConfigurationKey); - var promise2 = ApiClient.getJSON(ApiClient.getUrl("Notifications/Types")); + var promise2 = ApiClient.getJSON(ApiClient.getUrl('Notifications/Types')); Promise.all([promise1, promise2]).then(function (responses) { var notificationOptions = responses[0]; var types = responses[1]; @@ -76,47 +76,47 @@ define(["jQuery", "emby-checkbox", "fnchecked"], function ($) { types.filter(function (n) { return n.Type == type; })[0]; - notificationConfig.Enabled = $("#chkEnabled", page).checked(); - notificationConfig.SendToUserMode = $("#selectUsers", page).val(); - notificationConfig.DisabledMonitorUsers = $(".chkMonitor", page).get().filter(function (c) { + notificationConfig.Enabled = $('#chkEnabled', page).checked(); + notificationConfig.SendToUserMode = $('#selectUsers', page).val(); + notificationConfig.DisabledMonitorUsers = $('.chkMonitor', page).get().filter(function (c) { return !c.checked; }).map(function (c) { - return c.getAttribute("data-itemid"); + return c.getAttribute('data-itemid'); }); - notificationConfig.SendToUsers = $(".chkSendTo", page).get().filter(function (c) { + notificationConfig.SendToUsers = $('.chkSendTo', page).get().filter(function (c) { return c.checked; }).map(function (c) { - return c.getAttribute("data-itemid"); + return c.getAttribute('data-itemid'); }); - notificationConfig.DisabledServices = $(".chkService", page).get().filter(function (c) { + notificationConfig.DisabledServices = $('.chkService', page).get().filter(function (c) { return !c.checked; }).map(function (c) { - return c.getAttribute("data-itemid"); + return c.getAttribute('data-itemid'); }); ApiClient.updateNamedConfiguration(notificationsConfigurationKey, notificationOptions).then(function (r) { Dashboard.processServerConfigurationUpdateResult(); - Dashboard.navigate("notificationsettings.html"); + Dashboard.navigate('notificationsettings.html'); }); }); } function onSubmit() { - save($(this).parents(".page")); + save($(this).parents('.page')); return false; } - var notificationsConfigurationKey = "notifications"; - $(document).on("pageinit", "#notificationSettingPage", function () { + var notificationsConfigurationKey = 'notifications'; + $(document).on('pageinit', '#notificationSettingPage', function () { var page = this; - $("#selectUsers", page).on("change", function () { - if ("Custom" == this.value) { - $(".selectCustomUsers", page).show(); + $('#selectUsers', page).on('change', function () { + if ('Custom' == this.value) { + $('.selectCustomUsers', page).show(); } else { - $(".selectCustomUsers", page).hide(); + $('.selectCustomUsers', page).hide(); } }); - $(".notificationSettingForm").off("submit", onSubmit).on("submit", onSubmit); - }).on("pageshow", "#notificationSettingPage", function () { + $('.notificationSettingForm').off('submit', onSubmit).on('submit', onSubmit); + }).on('pageshow', '#notificationSettingPage', function () { reload(this); }); }); diff --git a/src/controllers/dashboard/notifications/notifications.js b/src/controllers/dashboard/notifications/notifications.js index 85cf956305..4e049bc106 100644 --- a/src/controllers/dashboard/notifications/notifications.js +++ b/src/controllers/dashboard/notifications/notifications.js @@ -1,32 +1,32 @@ -define(["loading", "libraryMenu", "globalize", "listViewStyle", "emby-button"], function(loading, libraryMenu, globalize) { - "use strict"; +define(['loading', 'libraryMenu', 'globalize', 'listViewStyle', 'emby-button'], function(loading, libraryMenu, globalize) { + 'use strict'; function reload(page) { loading.show(); - ApiClient.getJSON(ApiClient.getUrl("Notifications/Types")).then(function(list) { - var html = ""; - var lastCategory = ""; + ApiClient.getJSON(ApiClient.getUrl('Notifications/Types')).then(function(list) { + var html = ''; + var lastCategory = ''; var showHelp = true; html += list.map(function(notification) { - var itemHtml = ""; + var itemHtml = ''; if (notification.Category !== lastCategory) { lastCategory = notification.Category; if (lastCategory) { - itemHtml += ""; - itemHtml += ""; + itemHtml += ''; + itemHtml += ''; } itemHtml += '
'; itemHtml += '
'; itemHtml += '

'; itemHtml += notification.Category; - itemHtml += "

"; + itemHtml += ''; if (showHelp) { showHelp = false; itemHtml += ''; - itemHtml += globalize.translate("Help"); - itemHtml += ""; + itemHtml += globalize.translate('Help'); + itemHtml += ''; } - itemHtml += "
"; + itemHtml += '
'; itemHtml += ''; itemHtml += ''; - itemHtml += ""; + itemHtml += ''; return itemHtml; - }).join(""); + }).join(''); if (list.length) { - html += ""; - html += ""; + html += ''; + html += ''; } - page.querySelector(".notificationList").innerHTML = html; + page.querySelector('.notificationList').innerHTML = html; loading.hide(); }); } return function(view, params) { - view.addEventListener("viewshow", function() { + view.addEventListener('viewshow', function() { reload(view); }); }; diff --git a/src/controllers/dashboard/playbackconfiguration.js b/src/controllers/dashboard/playbackconfiguration.js index a4ba6bb625..d5b67a2961 100644 --- a/src/controllers/dashboard/playbackconfiguration.js +++ b/src/controllers/dashboard/playbackconfiguration.js @@ -1,10 +1,10 @@ -define(["jQuery", "loading", "libraryMenu", "globalize"], function ($, loading, libraryMenu, globalize) { - "use strict"; +define(['jQuery', 'loading', 'libraryMenu', 'globalize'], function ($, loading, libraryMenu, globalize) { + 'use strict'; function loadPage(page, config) { - $("#txtMinResumePct", page).val(config.MinResumePct); - $("#txtMaxResumePct", page).val(config.MaxResumePct); - $("#txtMinResumeDuration", page).val(config.MinResumeDurationSeconds); + $('#txtMinResumePct', page).val(config.MinResumePct); + $('#txtMaxResumePct', page).val(config.MaxResumePct); + $('#txtMinResumeDuration', page).val(config.MinResumeDurationSeconds); loading.hide(); } @@ -24,22 +24,22 @@ define(["jQuery", "loading", "libraryMenu", "globalize"], function ($, loading, function getTabs() { return [{ - href: "encodingsettings.html", - name: globalize.translate("Transcoding") + href: 'encodingsettings.html', + name: globalize.translate('Transcoding') }, { - href: "playbackconfiguration.html", - name: globalize.translate("TabResumeSettings") + href: 'playbackconfiguration.html', + name: globalize.translate('TabResumeSettings') }, { - href: "streamingsettings.html", - name: globalize.translate("TabStreaming") + href: 'streamingsettings.html', + name: globalize.translate('TabStreaming') }]; } - $(document).on("pageinit", "#playbackConfigurationPage", function () { - $(".playbackConfigurationForm").off("submit", onSubmit).on("submit", onSubmit); - }).on("pageshow", "#playbackConfigurationPage", function () { + $(document).on('pageinit', '#playbackConfigurationPage', function () { + $('.playbackConfigurationForm').off('submit', onSubmit).on('submit', onSubmit); + }).on('pageshow', '#playbackConfigurationPage', function () { loading.show(); - libraryMenu.setTabs("playback", 1, getTabs); + libraryMenu.setTabs('playback', 1, getTabs); var page = this; ApiClient.getServerConfiguration().then(function (config) { loadPage(page, config); diff --git a/src/controllers/dashboard/plugins/add.js b/src/controllers/dashboard/plugins/add.js index 3b2bf9e765..1ceee102e3 100644 --- a/src/controllers/dashboard/plugins/add.js +++ b/src/controllers/dashboard/plugins/add.js @@ -1,31 +1,31 @@ -define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "emby-button"], function ($, loading, libraryMenu, globalize, connectionManager) { - "use strict"; +define(['jQuery', 'loading', 'libraryMenu', 'globalize', 'connectionManager', 'emby-button'], function ($, loading, libraryMenu, globalize, connectionManager) { + 'use strict'; function populateHistory(packageInfo, page) { - var html = ""; + var html = ''; var length = Math.min(packageInfo.versions.length, 10); for (var i = 0; i < length; i++) { var version = packageInfo.versions[i]; - html += '

' + version.version + "

"; - html += '
' + version.changelog + "
"; + html += '

' + version.version + '

'; + html += '
' + version.changelog + '
'; } - $("#revisionHistory", page).html(html); + $('#revisionHistory', page).html(html); } function populateVersions(packageInfo, page, installedPlugin) { - var html = ""; + var html = ''; for (var i = 0; i < packageInfo.versions.length; i++) { var version = packageInfo.versions[i]; - html += '"; + html += ''; } - var selectmenu = $("#selectVersion", page).html(html); + var selectmenu = $('#selectVersion', page).html(html); if (!installedPlugin) { - $("#pCurrentVersion", page).hide().html(""); + $('#pCurrentVersion', page).hide().html(''); } var packageVersion = packageInfo.versions[0]; @@ -42,56 +42,56 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "e populateVersions(pkg, page, installedPlugin); populateHistory(pkg, page); - $(".pluginName", page).html(pkg.name); - $("#btnInstallDiv", page).removeClass("hide"); - $("#pSelectVersion", page).removeClass("hide"); + $('.pluginName', page).html(pkg.name); + $('#btnInstallDiv', page).removeClass('hide'); + $('#pSelectVersion', page).removeClass('hide'); if (pkg.overview) { - $("#overview", page).show().html(pkg.overview); + $('#overview', page).show().html(pkg.overview); } else { - $("#overview", page).hide(); + $('#overview', page).hide(); } - $("#description", page).html(pkg.description); - $("#developer", page).html(pkg.owner); + $('#description', page).html(pkg.description); + $('#developer', page).html(pkg.owner); if (installedPlugin) { - var currentVersionText = globalize.translate("MessageYouHaveVersionInstalled", "" + installedPlugin.Version + ""); - $("#pCurrentVersion", page).show().html(currentVersionText); + var currentVersionText = globalize.translate('MessageYouHaveVersionInstalled', '' + installedPlugin.Version + ''); + $('#pCurrentVersion', page).show().html(currentVersionText); } else { - $("#pCurrentVersion", page).hide().html(""); + $('#pCurrentVersion', page).hide().html(''); } loading.hide(); } function alertText(options) { - require(["alert"], function (alert) { + require(['alert'], function (alert) { alert(options); }); } function performInstallation(page, packageName, guid, updateClass, version) { - var developer = $("#developer", page).html().toLowerCase(); + var developer = $('#developer', page).html().toLowerCase(); var alertCallback = function () { loading.show(); - page.querySelector("#btnInstall").disabled = true; + page.querySelector('#btnInstall').disabled = true; ApiClient.installPlugin(packageName, guid, updateClass, version).then(function () { loading.hide(); - alertText(globalize.translate("PluginInstalledMessage")); + alertText(globalize.translate('PluginInstalledMessage')); }); }; if (developer !== 'jellyfin') { loading.hide(); - var msg = globalize.translate("MessagePluginInstallDisclaimer"); - msg += "
"; - msg += "
"; - msg += globalize.translate("PleaseConfirmPluginInstallation"); + var msg = globalize.translate('MessagePluginInstallDisclaimer'); + msg += '
'; + msg += '
'; + msg += globalize.translate('PleaseConfirmPluginInstallation'); - require(["confirm"], function (confirm) { - confirm(msg, globalize.translate("HeaderConfirmPluginInstallation")).then(function () { + require(['confirm'], function (confirm) { + confirm(msg, globalize.translate('HeaderConfirmPluginInstallation')).then(function () { alertCallback(); }, function () { console.debug('plugin not installed'); @@ -103,24 +103,24 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "e } return function (view, params) { - $(".addPluginForm", view).on("submit", function () { + $('.addPluginForm', view).on('submit', function () { loading.show(); - var page = $(this).parents("#addPluginPage")[0]; + var page = $(this).parents('#addPluginPage')[0]; var name = params.name; var guid = params.guid; ApiClient.getInstalledPlugins().then(function (plugins) { var installedPlugin = plugins.filter(function (plugin) { return plugin.Name == name; })[0]; - var vals = $("#selectVersion", page).val().split("|"); + var vals = $('#selectVersion', page).val().split('|'); var version = vals[0]; if (installedPlugin) { if (installedPlugin.Version === version) { loading.hide(); Dashboard.alert({ - message: globalize.translate("MessageAlreadyInstalled"), - title: globalize.translate("HeaderPluginInstallation") + message: globalize.translate('MessageAlreadyInstalled'), + title: globalize.translate('HeaderPluginInstallation') }); } } else { @@ -129,7 +129,7 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "e }); return false; }); - view.addEventListener("viewshow", function () { + view.addEventListener('viewshow', function () { var page = this; loading.show(); var name = params.name; diff --git a/src/controllers/dashboard/plugins/available.js b/src/controllers/dashboard/plugins/available.js index 699262bc43..82fea00b58 100644 --- a/src/controllers/dashboard/plugins/available.js +++ b/src/controllers/dashboard/plugins/available.js @@ -1,5 +1,5 @@ -define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby-checkbox", "emby-select"], function (loading, libraryMenu, globalize) { - "use strict"; +define(['loading', 'libraryMenu', 'globalize', 'cardStyle', 'emby-button', 'emby-checkbox', 'emby-select'], function (loading, libraryMenu, globalize) { + 'use strict'; function reloadList(page) { loading.show(); @@ -7,8 +7,8 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby var promise2 = ApiClient.getInstalledPlugins(); Promise.all([promise1, promise2]).then(function (responses) { populateList({ - catalogElement: page.querySelector("#pluginTiles"), - noItemsElement: page.querySelector("#noPlugins"), + catalogElement: page.querySelector('#pluginTiles'), + noItemsElement: page.querySelector('#noPlugins'), availablePlugins: responses[0], installedPlugins: responses[1] }); @@ -16,15 +16,15 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby } function getHeaderText(category) { - category = category.replace(" ", ""); - if ("Channel" === category) { - category = "Channels"; - } else if ("Theme" === category) { - category = "Themes"; - } else if ("LiveTV" === category) { - category = "HeaderLiveTV"; - } else if ("ScreenSaver" === category) { - category = "HeaderScreenSavers"; + category = category.replace(' ', ''); + if ('Channel' === category) { + category = 'Channels'; + } else if ('Theme' === category) { + category = 'Themes'; + } else if ('LiveTV' === category) { + category = 'HeaderLiveTV'; + } else if ('ScreenSaver' === category) { + category = 'HeaderScreenSavers'; } return globalize.translate(category); @@ -56,28 +56,28 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby }); var currentCategory = null; - var html = ""; + var html = ''; for (var i = 0; i < availablePlugins.length; i++) { var plugin = availablePlugins[i]; var category = plugin.categoryDisplayName; if (category != currentCategory) { if (currentCategory) { - html += ""; - html += ""; + html += ''; + html += ''; } html += '
'; - html += '

' + category + "

"; + html += '

' + category + '

'; html += '
'; currentCategory = category; } html += getPluginHtml(plugin, options, installedPlugins); } - html += "
"; - html += "
"; + html += ''; + html += ''; if (!availablePlugins.length && options.noItemsElement) { - options.noItemsElement.classList.remove("hide"); + options.noItemsElement.classList.remove('hide'); } options.catalogElement.innerHTML = html; @@ -85,44 +85,44 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby } function getPluginHtml(plugin, options, installedPlugins) { - var html = ""; - var href = plugin.externalUrl ? plugin.externalUrl : "addplugin.html?name=" + encodeURIComponent(plugin.name) + "&guid=" + plugin.guid; + var html = ''; + var href = plugin.externalUrl ? plugin.externalUrl : 'addplugin.html?name=' + encodeURIComponent(plugin.name) + '&guid=' + plugin.guid; if (options.context) { - href += "&context=" + options.context; + href += '&context=' + options.context; } - var target = plugin.externalUrl ? ' target="_blank"' : ""; + var target = plugin.externalUrl ? ' target="_blank"' : ''; html += "
"; html += '
'; html += '
'; html += '
'; - html += '"; + html += ''; html += ''; - html += ""; - html += "
"; + html += ''; + html += '
'; html += '
'; html += "
"; html += plugin.name; - html += "
"; + html += '
'; var installedPlugin = installedPlugins.filter(function (ip) { return ip.Id == plugin.guid; })[0]; html += "
"; - html += installedPlugin ? globalize.translate("LabelVersionInstalled", installedPlugin.Version) : " "; - html += "
"; - html += "
"; - html += ""; - return html += ""; + html += installedPlugin ? globalize.translate('LabelVersionInstalled', installedPlugin.Version) : ' '; + html += ''; + html += ''; + html += ''; + return html += ''; } function getTabs() { return [{ - href: "installedplugins.html", - name: globalize.translate("TabMyPlugins") + href: 'installedplugins.html', + name: globalize.translate('TabMyPlugins') }, { - href: "availableplugins.html", - name: globalize.translate("TabCatalog") + href: 'availableplugins.html', + name: globalize.translate('TabCatalog') }]; } @@ -131,8 +131,8 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby }; return function (view, params) { - view.addEventListener("viewshow", function () { - libraryMenu.setTabs("plugins", 1, getTabs); + view.addEventListener('viewshow', function () { + libraryMenu.setTabs('plugins', 1, getTabs); reloadList(this); }); }; diff --git a/src/controllers/dashboard/plugins/installed.js b/src/controllers/dashboard/plugins/installed.js index 39b7e7270d..427ce7d94b 100644 --- a/src/controllers/dashboard/plugins/installed.js +++ b/src/controllers/dashboard/plugins/installed.js @@ -1,15 +1,15 @@ -define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button"], function (loading, libraryMenu, dom, globalize) { - "use strict"; +define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button'], function (loading, libraryMenu, dom, globalize) { + 'use strict'; function deletePlugin(page, uniqueid, name) { - var msg = globalize.translate("UninstallPluginConfirmation", name); + var msg = globalize.translate('UninstallPluginConfirmation', name); - require(["confirm"], function (confirm) { + require(['confirm'], function (confirm) { confirm({ - title: globalize.translate("UninstallPluginHeader"), + title: globalize.translate('UninstallPluginHeader'), text: msg, - primary: "delete", - confirmText: globalize.translate("UninstallPluginHeader") + primary: 'delete', + confirmText: globalize.translate('UninstallPluginHeader') }).then(function () { loading.show(); ApiClient.uninstallPlugin(uniqueid).then(function () { @@ -21,13 +21,13 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" function showNoConfigurationMessage() { Dashboard.alert({ - message: globalize.translate("NoPluginConfigurationMessage") + message: globalize.translate('NoPluginConfigurationMessage') }); } function showConnectMessage() { Dashboard.alert({ - message: globalize.translate("MessagePluginConfigurationRequiresLocalAccess") + message: globalize.translate('MessagePluginConfigurationRequiresLocalAccess') }); } @@ -36,33 +36,33 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" return pluginConfigurationPage.PluginId == plugin.Id; })[0]; var configPageUrl = configPage ? Dashboard.getConfigurationPageUrl(configPage.Name) : null; - var html = ""; + var html = ''; html += "
"; html += '
'; html += '
'; html += '
'; html += configPageUrl ? '' : '"; - html += "
"; + html += configPageUrl ? '' : '
'; + html += '
'; html += '
'; html += '
'; html += ''; - html += "
"; + html += '
'; html += "
"; html += configPage.DisplayName || plugin.Name; - html += "
"; + html += ''; html += "
"; html += plugin.Version; - html += "
"; - html += ""; - html += ""; - html += ""; + html += ''; + html += ''; + html += ''; + html += ''; return html; } function renderPlugins(page, plugins) { - ApiClient.getJSON(ApiClient.getUrl("web/configurationpages") + "?pageType=PluginConfiguration").then(function (configPages) { + ApiClient.getJSON(ApiClient.getUrl('web/configurationpages') + '?pageType=PluginConfiguration').then(function (configPages) { populateList(page, plugins, configPages); }); } @@ -78,22 +78,22 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" var html = plugins.map(function (p) { return getPluginCardHtml(p, pluginConfigurationPages); - }).join(""); + }).join(''); - var installedPluginsElement = page.querySelector(".installedPlugins"); - installedPluginsElement.removeEventListener("click", onInstalledPluginsClick); - installedPluginsElement.addEventListener("click", onInstalledPluginsClick); + var installedPluginsElement = page.querySelector('.installedPlugins'); + installedPluginsElement.removeEventListener('click', onInstalledPluginsClick); + installedPluginsElement.addEventListener('click', onInstalledPluginsClick); if (plugins.length) { - installedPluginsElement.classList.add("itemsContainer"); - installedPluginsElement.classList.add("vertical-wrap"); + installedPluginsElement.classList.add('itemsContainer'); + installedPluginsElement.classList.add('vertical-wrap'); } else { html += '
'; - html += "

" + globalize.translate("MessageNoPluginsInstalled") + "

"; + html += '

' + globalize.translate('MessageNoPluginsInstalled') + '

'; html += '

'; - html += globalize.translate("BrowsePluginCatalogMessage"); - html += "

"; - html += "
"; + html += globalize.translate('BrowsePluginCatalogMessage'); + html += '

'; + html += ''; } installedPluginsElement.innerHTML = html; @@ -101,36 +101,36 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" } function showPluginMenu(page, elem) { - var card = dom.parentWithClass(elem, "card"); - var id = card.getAttribute("data-id"); - var name = card.getAttribute("data-name"); - var configHref = card.querySelector(".cardContent").getAttribute("href"); + var card = dom.parentWithClass(elem, 'card'); + var id = card.getAttribute('data-id'); + var name = card.getAttribute('data-name'); + var configHref = card.querySelector('.cardContent').getAttribute('href'); var menuItems = []; if (configHref) { menuItems.push({ - name: globalize.translate("ButtonSettings"), - id: "open", - icon: "mode_edit" + name: globalize.translate('ButtonSettings'), + id: 'open', + icon: 'mode_edit' }); } menuItems.push({ - name: globalize.translate("ButtonUninstall"), - id: "delete", - icon: "delete" + name: globalize.translate('ButtonUninstall'), + id: 'delete', + icon: 'delete' }); - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: menuItems, positionTo: elem, callback: function (resultId) { switch (resultId) { - case "open": + case 'open': Dashboard.navigate(configHref); break; - case "delete": + case 'delete': deletePlugin(page, id, name); break; } @@ -148,29 +148,29 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" function getTabs() { return [{ - href: "installedplugins.html", - name: globalize.translate("TabMyPlugins") + href: 'installedplugins.html', + name: globalize.translate('TabMyPlugins') }, { - href: "availableplugins.html", - name: globalize.translate("TabCatalog") + href: 'availableplugins.html', + name: globalize.translate('TabCatalog') }]; } function onInstalledPluginsClick(e) { - if (dom.parentWithClass(e.target, "noConfigPluginCard")) { + if (dom.parentWithClass(e.target, 'noConfigPluginCard')) { showNoConfigurationMessage(); - } else if (dom.parentWithClass(e.target, "connectModePluginCard")) { + } else if (dom.parentWithClass(e.target, 'connectModePluginCard')) { showConnectMessage(); } else { - var btnCardMenu = dom.parentWithClass(e.target, "btnCardMenu"); + var btnCardMenu = dom.parentWithClass(e.target, 'btnCardMenu'); if (btnCardMenu) { - showPluginMenu(dom.parentWithClass(btnCardMenu, "page"), btnCardMenu); + showPluginMenu(dom.parentWithClass(btnCardMenu, 'page'), btnCardMenu); } } } - pageIdOn("pageshow", "pluginsPage", function () { - libraryMenu.setTabs("plugins", 0, getTabs); + pageIdOn('pageshow', 'pluginsPage', function () { + libraryMenu.setTabs('plugins', 0, getTabs); reloadList(this); }); diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtask.js b/src/controllers/dashboard/scheduledtasks/scheduledtask.js index 9f1394b112..52050d1f80 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtask.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtask.js @@ -1,5 +1,5 @@ -define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby-button", "emby-select"], function ($, loading, datetime, dom, globalize) { - "use strict"; +define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby-button', 'emby-select'], function ($, loading, datetime, dom, globalize) { + 'use strict'; function fillTimeOfDay(select) { @@ -14,7 +14,7 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby select.innerHTML = options.map(function (o) { return ''; - }).join(""); + }).join(''); } Array.prototype.remove = function (from, to) { @@ -26,23 +26,23 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby var ScheduledTaskPage = { refreshScheduledTask: function (view) { loading.show(); - var id = getParameterByName("id"); + var id = getParameterByName('id'); ApiClient.getScheduledTask(id).then(function (task) { ScheduledTaskPage.loadScheduledTask(view, task); }); }, loadScheduledTask: function (view, task) { - $(".taskName", view).html(task.Name); - $("#pTaskDescription", view).html(task.Description); + $('.taskName', view).html(task.Name); + $('#pTaskDescription', view).html(task.Description); - require(["listViewStyle"], function () { + require(['listViewStyle'], function () { ScheduledTaskPage.loadTaskTriggers(view, task); }); loading.hide(); }, loadTaskTriggers: function (context, task) { - var html = ""; + var html = ''; html += '
'; for (var i = 0, length = task.Triggers.length; i < length; i++) { @@ -55,63 +55,63 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby } else { html += '
'; } - html += "
" + ScheduledTaskPage.getTriggerFriendlyName(trigger) + "
"; + html += "
" + ScheduledTaskPage.getTriggerFriendlyName(trigger) + '
'; if (trigger.MaxRuntimeMs) { html += '
'; var hours = trigger.MaxRuntimeTicks / 36e9; if (hours == 1) { - html += globalize.translate("ValueTimeLimitSingleHour"); + html += globalize.translate('ValueTimeLimitSingleHour'); } else { - html += globalize.translate("ValueTimeLimitMultiHour", hours); + html += globalize.translate('ValueTimeLimitMultiHour', hours); } - html += "
"; + html += '
'; } - html += "
"; - html += ''; - html += ""; + html += ''; + html += ''; + html += ''; } - html += ""; - context.querySelector(".taskTriggers").innerHTML = html; + html += ''; + context.querySelector('.taskTriggers').innerHTML = html; }, // TODO: Replace this mess with date-fns and remove datetime completely getTriggerFriendlyName: function (trigger) { - if ("DailyTrigger" == trigger.Type) { - return globalize.translate("DailyAt", ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks)); + if ('DailyTrigger' == trigger.Type) { + return globalize.translate('DailyAt', ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks)); } - if ("WeeklyTrigger" == trigger.Type) { + if ('WeeklyTrigger' == trigger.Type) { // TODO: The day of week isn't localised as well - return globalize.translate("WeeklyAt", trigger.DayOfWeek, ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks)); + return globalize.translate('WeeklyAt', trigger.DayOfWeek, ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks)); } - if ("SystemEventTrigger" == trigger.Type && "WakeFromSleep" == trigger.SystemEvent) { - return globalize.translate("OnWakeFromSleep"); + if ('SystemEventTrigger' == trigger.Type && 'WakeFromSleep' == trigger.SystemEvent) { + return globalize.translate('OnWakeFromSleep'); } - if (trigger.Type == "IntervalTrigger") { + if (trigger.Type == 'IntervalTrigger') { var hours = trigger.IntervalTicks / 36e9; if (hours == 0.25) { - return globalize.translate("EveryXMinutes", "15"); + return globalize.translate('EveryXMinutes', '15'); } if (hours == 0.5) { - return globalize.translate("EveryXMinutes", "30"); + return globalize.translate('EveryXMinutes', '30'); } if (hours == 0.75) { - return globalize.translate("EveryXMinutes", "45"); + return globalize.translate('EveryXMinutes', '45'); } if (hours == 1) { - return globalize.translate("EveryHour"); + return globalize.translate('EveryHour'); } - return globalize.translate("EveryXHours", hours); + return globalize.translate('EveryXHours', hours); } - if (trigger.Type == "StartupTrigger") { - return globalize.translate("OnApplicationStartup"); + if (trigger.Type == 'StartupTrigger') { + return globalize.translate('OnApplicationStartup'); } return trigger.Type; @@ -124,20 +124,20 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby return datetime.getDisplayTime(now); }, showAddTriggerPopup: function (view) { - $("#selectTriggerType", view).val("DailyTrigger"); - view.querySelector("#selectTriggerType").dispatchEvent(new CustomEvent("change", {})); - $("#popupAddTrigger", view).removeClass("hide"); + $('#selectTriggerType', view).val('DailyTrigger'); + view.querySelector('#selectTriggerType').dispatchEvent(new CustomEvent('change', {})); + $('#popupAddTrigger', view).removeClass('hide'); }, confirmDeleteTrigger: function (view, index) { - require(["confirm"], function (confirm) { - confirm(globalize.translate("MessageDeleteTaskTrigger"), globalize.translate("HeaderDeleteTaskTrigger")).then(function () { + require(['confirm'], function (confirm) { + confirm(globalize.translate('MessageDeleteTaskTrigger'), globalize.translate('HeaderDeleteTaskTrigger')).then(function () { ScheduledTaskPage.deleteTrigger(view, index); }); }); }, deleteTrigger: function (view, index) { loading.show(); - var id = getParameterByName("id"); + var id = getParameterByName('id'); ApiClient.getScheduledTask(id).then(function (task) { task.Triggers.remove(index); ApiClient.updateScheduledTaskTriggers(task.Id, task.Triggers).then(function () { @@ -146,55 +146,55 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby }); }, refreshTriggerFields: function (page, triggerType) { - if (triggerType == "DailyTrigger") { - $("#fldTimeOfDay", page).show(); - $("#fldDayOfWeek", page).hide(); - $("#fldSelectSystemEvent", page).hide(); - $("#fldSelectInterval", page).hide(); - $("#selectTimeOfDay", page).attr("required", "required"); - } else if (triggerType == "WeeklyTrigger") { - $("#fldTimeOfDay", page).show(); - $("#fldDayOfWeek", page).show(); - $("#fldSelectSystemEvent", page).hide(); - $("#fldSelectInterval", page).hide(); - $("#selectTimeOfDay", page).attr("required", "required"); - } else if (triggerType == "SystemEventTrigger") { - $("#fldTimeOfDay", page).hide(); - $("#fldDayOfWeek", page).hide(); - $("#fldSelectSystemEvent", page).show(); - $("#fldSelectInterval", page).hide(); - $("#selectTimeOfDay", page).removeAttr("required"); - } else if (triggerType == "IntervalTrigger") { - $("#fldTimeOfDay", page).hide(); - $("#fldDayOfWeek", page).hide(); - $("#fldSelectSystemEvent", page).hide(); - $("#fldSelectInterval", page).show(); - $("#selectTimeOfDay", page).removeAttr("required"); - } else if (triggerType == "StartupTrigger") { - $("#fldTimeOfDay", page).hide(); - $("#fldDayOfWeek", page).hide(); - $("#fldSelectSystemEvent", page).hide(); - $("#fldSelectInterval", page).hide(); - $("#selectTimeOfDay", page).removeAttr("required"); + if (triggerType == 'DailyTrigger') { + $('#fldTimeOfDay', page).show(); + $('#fldDayOfWeek', page).hide(); + $('#fldSelectSystemEvent', page).hide(); + $('#fldSelectInterval', page).hide(); + $('#selectTimeOfDay', page).attr('required', 'required'); + } else if (triggerType == 'WeeklyTrigger') { + $('#fldTimeOfDay', page).show(); + $('#fldDayOfWeek', page).show(); + $('#fldSelectSystemEvent', page).hide(); + $('#fldSelectInterval', page).hide(); + $('#selectTimeOfDay', page).attr('required', 'required'); + } else if (triggerType == 'SystemEventTrigger') { + $('#fldTimeOfDay', page).hide(); + $('#fldDayOfWeek', page).hide(); + $('#fldSelectSystemEvent', page).show(); + $('#fldSelectInterval', page).hide(); + $('#selectTimeOfDay', page).removeAttr('required'); + } else if (triggerType == 'IntervalTrigger') { + $('#fldTimeOfDay', page).hide(); + $('#fldDayOfWeek', page).hide(); + $('#fldSelectSystemEvent', page).hide(); + $('#fldSelectInterval', page).show(); + $('#selectTimeOfDay', page).removeAttr('required'); + } else if (triggerType == 'StartupTrigger') { + $('#fldTimeOfDay', page).hide(); + $('#fldDayOfWeek', page).hide(); + $('#fldSelectSystemEvent', page).hide(); + $('#fldSelectInterval', page).hide(); + $('#selectTimeOfDay', page).removeAttr('required'); } }, getTriggerToAdd: function (page) { var trigger = { - Type: $("#selectTriggerType", page).val() + Type: $('#selectTriggerType', page).val() }; - if (trigger.Type == "DailyTrigger") { - trigger.TimeOfDayTicks = $("#selectTimeOfDay", page).val(); - } else if (trigger.Type == "WeeklyTrigger") { - trigger.DayOfWeek = $("#selectDayOfWeek", page).val(); - trigger.TimeOfDayTicks = $("#selectTimeOfDay", page).val(); - } else if (trigger.Type == "SystemEventTrigger") { - trigger.SystemEvent = $("#selectSystemEvent", page).val(); - } else if (trigger.Type == "IntervalTrigger") { - trigger.IntervalTicks = $("#selectInterval", page).val(); + if (trigger.Type == 'DailyTrigger') { + trigger.TimeOfDayTicks = $('#selectTimeOfDay', page).val(); + } else if (trigger.Type == 'WeeklyTrigger') { + trigger.DayOfWeek = $('#selectDayOfWeek', page).val(); + trigger.TimeOfDayTicks = $('#selectTimeOfDay', page).val(); + } else if (trigger.Type == 'SystemEventTrigger') { + trigger.SystemEvent = $('#selectSystemEvent', page).val(); + } else if (trigger.Type == 'IntervalTrigger') { + trigger.IntervalTicks = $('#selectInterval', page).val(); } - var timeLimit = $("#txtTimeLimit", page).val() || "0"; + var timeLimit = $('#txtTimeLimit', page).val() || '0'; timeLimit = parseFloat(timeLimit) * 3600000; trigger.MaxRuntimeMs = timeLimit || null; @@ -205,34 +205,34 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby return function (view, params) { function onSubmit(e) { loading.show(); - var id = getParameterByName("id"); + var id = getParameterByName('id'); ApiClient.getScheduledTask(id).then(function (task) { task.Triggers.push(ScheduledTaskPage.getTriggerToAdd(view)); ApiClient.updateScheduledTaskTriggers(task.Id, task.Triggers).then(function () { - $("#popupAddTrigger").addClass("hide"); + $('#popupAddTrigger').addClass('hide'); ScheduledTaskPage.refreshScheduledTask(view); }); }); e.preventDefault(); } - view.querySelector(".addTriggerForm").addEventListener("submit", onSubmit); - fillTimeOfDay(view.querySelector("#selectTimeOfDay")); - $(view.querySelector("#popupAddTrigger").parentNode).trigger("create"); - view.querySelector(".selectTriggerType").addEventListener("change", function () { + view.querySelector('.addTriggerForm').addEventListener('submit', onSubmit); + fillTimeOfDay(view.querySelector('#selectTimeOfDay')); + $(view.querySelector('#popupAddTrigger').parentNode).trigger('create'); + view.querySelector('.selectTriggerType').addEventListener('change', function () { ScheduledTaskPage.refreshTriggerFields(view, this.value); }); - view.querySelector(".btnAddTrigger").addEventListener("click", function () { + view.querySelector('.btnAddTrigger').addEventListener('click', function () { ScheduledTaskPage.showAddTriggerPopup(view); }); - view.addEventListener("click", function (e) { - var btnDeleteTrigger = dom.parentWithClass(e.target, "btnDeleteTrigger"); + view.addEventListener('click', function (e) { + var btnDeleteTrigger = dom.parentWithClass(e.target, 'btnDeleteTrigger'); if (btnDeleteTrigger) { - ScheduledTaskPage.confirmDeleteTrigger(view, parseInt(btnDeleteTrigger.getAttribute("data-index"))); + ScheduledTaskPage.confirmDeleteTrigger(view, parseInt(btnDeleteTrigger.getAttribute('data-index'))); } }); - view.addEventListener("viewshow", function () { + view.addEventListener('viewshow', function () { ScheduledTaskPage.refreshScheduledTask(view); }); }; diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index d83f0ad241..5ce53cf6fe 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -1,5 +1,5 @@ -define(["jQuery", "loading", "events", "globalize", "serverNotifications", "date-fns", "dfnshelper", "listViewStyle", "emby-button"], function ($, loading, events, globalize, serverNotifications, datefns, dfnshelper) { - "use strict"; +define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date-fns', 'dfnshelper', 'listViewStyle', 'emby-button'], function ($, loading, events, globalize, serverNotifications, datefns, dfnshelper) { + 'use strict'; function reloadList(page) { ApiClient.getScheduledTasks({ @@ -12,114 +12,114 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "date function populateList(page, tasks) { tasks = tasks.sort(function(a, b) { - a = a.Category + " " + a.Name; - b = b.Category + " " + b.Name; + a = a.Category + ' ' + a.Name; + b = b.Category + ' ' + b.Name; return a == b ? 0 : a < b ? -1 : 1; }); var currentCategory; - var html = ""; + var html = ''; for (var i = 0; i < tasks.length; i++) { var task = tasks[i]; if (task.Category != currentCategory) { currentCategory = task.Category; if (currentCategory) { - html += ""; - html += ""; + html += ''; + html += ''; } html += '
'; html += '
'; html += '

'; html += currentCategory; - html += "

"; + html += ''; if (i === 0) { - html += '' + globalize.translate("Help") + ""; + html += '' + globalize.translate('Help') + ''; } - html += "
"; + html += '
'; html += '
'; } html += '
'; html += ""; html += ''; - html += ""; + html += ''; html += '"; - if (task.State === "Running") { - html += ''; - } else if (task.State === "Idle") { - html += ''; + html += "

" + task.Name + '

'; + html += "
" + getTaskProgressHtml(task) + '
'; + html += ''; + html += '
'; + if (task.State === 'Running') { + html += ''; + } else if (task.State === 'Idle') { + html += ''; } - html += "
"; + html += ''; } if (tasks.length) { - html += ""; - html += ""; + html += ''; + html += ''; } - page.querySelector(".divScheduledTasks").innerHTML = html; + page.querySelector('.divScheduledTasks').innerHTML = html; } function getTaskProgressHtml(task) { - var html = ""; - if (task.State === "Idle") { + var html = ''; + if (task.State === 'Idle') { if (task.LastExecutionResult) { var endtime = Date.parse(task.LastExecutionResult.EndTimeUtc); var starttime = Date.parse(task.LastExecutionResult.StartTimeUtc); - html += globalize.translate("LabelScheduledTaskLastRan", datefns.formatDistanceToNow(endtime, dfnshelper.localeWithSuffix), + html += globalize.translate('LabelScheduledTaskLastRan', datefns.formatDistanceToNow(endtime, dfnshelper.localeWithSuffix), datefns.formatDistance(starttime, endtime, { locale: dfnshelper.getLocale() })); - if (task.LastExecutionResult.Status === "Failed") { - html += " (" + globalize.translate("LabelFailed") + ")"; - } else if (task.LastExecutionResult.Status === "Cancelled") { - html += " (" + globalize.translate("LabelCancelled") + ")"; - } else if (task.LastExecutionResult.Status === "Aborted") { - html += " " + globalize.translate("LabelAbortedByServerShutdown") + ""; + if (task.LastExecutionResult.Status === 'Failed') { + html += " (" + globalize.translate('LabelFailed') + ')'; + } else if (task.LastExecutionResult.Status === 'Cancelled') { + html += " (" + globalize.translate('LabelCancelled') + ')'; + } else if (task.LastExecutionResult.Status === 'Aborted') { + html += " " + globalize.translate('LabelAbortedByServerShutdown') + ''; } } - } else if (task.State === "Running") { + } else if (task.State === 'Running') { var progress = (task.CurrentProgressPercentage || 0).toFixed(1); html += '
'; html += '
'; html += '
'; - html += "
"; - html += "
"; - html += "" + progress + "%"; - html += "
"; + html += ''; + html += ''; + html += "" + progress + '%'; + html += ''; } else { - html += "" + globalize.translate("LabelStopping") + ""; + html += "" + globalize.translate('LabelStopping') + ''; } return html; } function setTaskButtonIcon(button, icon) { - var inner = button.querySelector(".material-icons"); - inner.classList.remove("stop", "play_arrow"); + var inner = button.querySelector('.material-icons'); + inner.classList.remove('stop', 'play_arrow'); inner.classList.add(icon); } function updateTaskButton(elem, state) { - if (state === "Running") { - elem.classList.remove("btnStartTask"); - elem.classList.add("btnStopTask"); - setTaskButtonIcon(elem, "stop"); - elem.title = globalize.translate("ButtonStop"); - } else if (state === "Idle") { - elem.classList.add("btnStartTask"); - elem.classList.remove("btnStopTask"); - setTaskButtonIcon(elem, "play_arrow"); - elem.title = globalize.translate("ButtonStart"); + if (state === 'Running') { + elem.classList.remove('btnStartTask'); + elem.classList.add('btnStopTask'); + setTaskButtonIcon(elem, 'stop'); + elem.title = globalize.translate('ButtonStop'); + } else if (state === 'Idle') { + elem.classList.add('btnStartTask'); + elem.classList.remove('btnStopTask'); + setTaskButtonIcon(elem, 'play_arrow'); + elem.title = globalize.translate('ButtonStart'); } - $(elem).parents(".listItem")[0].setAttribute("data-status", state); + $(elem).parents('.listItem')[0].setAttribute('data-status', state); } return function(view, params) { function updateTasks(tasks) { for (var i = 0; i < tasks.length; i++) { var task = tasks[i]; - view.querySelector("#taskProgress" + task.Id).innerHTML = getTaskProgressHtml(task); - updateTaskButton(view.querySelector("#btnTask" + task.Id), task.State); + view.querySelector('#taskProgress' + task.Id).innerHTML = getTaskProgressHtml(task); + updateTaskButton(view.querySelector('#btnTask' + task.Id), task.State); } } @@ -136,47 +136,47 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "date } function startInterval() { - ApiClient.sendMessage("ScheduledTasksInfoStart", "1000,1000"); + ApiClient.sendMessage('ScheduledTasksInfoStart', '1000,1000'); pollInterval && clearInterval(pollInterval); pollInterval = setInterval(onPollIntervalFired, 1e4); } function stopInterval() { - ApiClient.sendMessage("ScheduledTasksInfoStop"); + ApiClient.sendMessage('ScheduledTasksInfoStop'); pollInterval && clearInterval(pollInterval); } var pollInterval; var serverId = ApiClient.serverId(); - $(".divScheduledTasks", view).on("click", ".btnStartTask", function() { + $('.divScheduledTasks', view).on('click', '.btnStartTask', function() { var button = this; - var id = button.getAttribute("data-taskid"); + var id = button.getAttribute('data-taskid'); ApiClient.startScheduledTask(id).then(function() { - updateTaskButton(button, "Running"); + updateTaskButton(button, 'Running'); reloadList(view); }); }); - $(".divScheduledTasks", view).on("click", ".btnStopTask", function() { + $('.divScheduledTasks', view).on('click', '.btnStopTask', function() { var button = this; - var id = button.getAttribute("data-taskid"); + var id = button.getAttribute('data-taskid'); ApiClient.stopScheduledTask(id).then(function() { - updateTaskButton(button, ""); + updateTaskButton(button, ''); reloadList(view); }); }); - view.addEventListener("viewbeforehide", function() { - events.off(serverNotifications, "ScheduledTasksInfo", onScheduledTasksUpdate); + view.addEventListener('viewbeforehide', function() { + events.off(serverNotifications, 'ScheduledTasksInfo', onScheduledTasksUpdate); stopInterval(); }); - view.addEventListener("viewshow", function() { + view.addEventListener('viewshow', function() { loading.show(); startInterval(); reloadList(view); - events.on(serverNotifications, "ScheduledTasksInfo", onScheduledTasksUpdate); + events.on(serverNotifications, 'ScheduledTasksInfo', onScheduledTasksUpdate); }); }; }); diff --git a/src/controllers/dashboard/serveractivity.js b/src/controllers/dashboard/serveractivity.js index fb3b8112dc..c48a2903ae 100644 --- a/src/controllers/dashboard/serveractivity.js +++ b/src/controllers/dashboard/serveractivity.js @@ -1,26 +1,26 @@ -define(["components/activitylog", "globalize"], function (ActivityLog, globalize) { - "use strict"; +define(['components/activitylog', 'globalize'], function (ActivityLog, globalize) { + 'use strict'; return function (view, params) { var activityLog; - if (params.useractivity !== "false") { - view.querySelector(".activityItems").setAttribute("data-useractivity", "true"); - view.querySelector(".sectionTitle").innerHTML = globalize.translate("HeaderActivity"); + if (params.useractivity !== 'false') { + view.querySelector('.activityItems').setAttribute('data-useractivity', 'true'); + view.querySelector('.sectionTitle').innerHTML = globalize.translate('HeaderActivity'); } else { - view.querySelector(".activityItems").setAttribute("data-useractivity", "false"); - view.querySelector(".sectionTitle").innerHTML = globalize.translate("Alerts"); + view.querySelector('.activityItems').setAttribute('data-useractivity', 'false'); + view.querySelector('.sectionTitle').innerHTML = globalize.translate('Alerts'); } - view.addEventListener("viewshow", function () { + view.addEventListener('viewshow', function () { if (!activityLog) { activityLog = new ActivityLog({ serverId: ApiClient.serverId(), - element: view.querySelector(".activityItems") + element: view.querySelector('.activityItems') }); } }); - view.addEventListener("viewdestroy", function () { + view.addEventListener('viewdestroy', function () { if (activityLog) { activityLog.destroy(); } diff --git a/src/controllers/dashboard/streamingsettings.js b/src/controllers/dashboard/streamingsettings.js index dcd0dcba16..37afe5a054 100644 --- a/src/controllers/dashboard/streamingsettings.js +++ b/src/controllers/dashboard/streamingsettings.js @@ -1,8 +1,8 @@ -define(["jQuery", "libraryMenu", "loading", "globalize"], function ($, libraryMenu, loading, globalize) { - "use strict"; +define(['jQuery', 'libraryMenu', 'loading', 'globalize'], function ($, libraryMenu, loading, globalize) { + 'use strict'; function loadPage(page, config) { - $("#txtRemoteClientBitrateLimit", page).val(config.RemoteClientBitrateLimit / 1e6 || ""); + $('#txtRemoteClientBitrateLimit', page).val(config.RemoteClientBitrateLimit / 1e6 || ''); loading.hide(); } @@ -10,7 +10,7 @@ define(["jQuery", "libraryMenu", "loading", "globalize"], function ($, libraryMe loading.show(); var form = this; ApiClient.getServerConfiguration().then(function (config) { - config.RemoteClientBitrateLimit = parseInt(1e6 * parseFloat($("#txtRemoteClientBitrateLimit", form).val() || "0")); + config.RemoteClientBitrateLimit = parseInt(1e6 * parseFloat($('#txtRemoteClientBitrateLimit', form).val() || '0')); ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult); }); @@ -19,22 +19,22 @@ define(["jQuery", "libraryMenu", "loading", "globalize"], function ($, libraryMe function getTabs() { return [{ - href: "encodingsettings.html", - name: globalize.translate("Transcoding") + href: 'encodingsettings.html', + name: globalize.translate('Transcoding') }, { - href: "playbackconfiguration.html", - name: globalize.translate("TabResumeSettings") + href: 'playbackconfiguration.html', + name: globalize.translate('TabResumeSettings') }, { - href: "streamingsettings.html", - name: globalize.translate("TabStreaming") + href: 'streamingsettings.html', + name: globalize.translate('TabStreaming') }]; } - $(document).on("pageinit", "#streamingSettingsPage", function () { - $(".streamingSettingsForm").off("submit", onSubmit).on("submit", onSubmit); - }).on("pageshow", "#streamingSettingsPage", function () { + $(document).on('pageinit', '#streamingSettingsPage', function () { + $('.streamingSettingsForm').off('submit', onSubmit).on('submit', onSubmit); + }).on('pageshow', '#streamingSettingsPage', function () { loading.show(); - libraryMenu.setTabs("playback", 2, getTabs); + libraryMenu.setTabs('playback', 2, getTabs); var page = this; ApiClient.getServerConfiguration().then(function (config) { loadPage(page, config); diff --git a/src/controllers/edititemmetadata.js b/src/controllers/edititemmetadata.js index aba741d64c..2bfc5e560d 100644 --- a/src/controllers/edititemmetadata.js +++ b/src/controllers/edititemmetadata.js @@ -1,25 +1,25 @@ -define(["loading", "scripts/editorsidebar"], function (loading) { - "use strict"; +define(['loading', 'scripts/editorsidebar'], function (loading) { + 'use strict'; function reload(context, itemId) { loading.show(); if (itemId) { - require(["metadataEditor"], function (metadataEditor) { - metadataEditor.embed(context.querySelector(".editPageInnerContent"), itemId, ApiClient.serverInfo().Id); + require(['metadataEditor'], function (metadataEditor) { + metadataEditor.embed(context.querySelector('.editPageInnerContent'), itemId, ApiClient.serverInfo().Id); }); } else { - context.querySelector(".editPageInnerContent").innerHTML = ""; + context.querySelector('.editPageInnerContent').innerHTML = ''; loading.hide(); } } return function (view, params) { - view.addEventListener("viewshow", function () { + view.addEventListener('viewshow', function () { reload(this, MetadataEditor.getCurrentItemId()); }); MetadataEditor.setCurrentItemId(null); - view.querySelector(".libraryTree").addEventListener("itemclicked", function (event) { + view.querySelector('.libraryTree').addEventListener('itemclicked', function (event) { var data = event.detail; if (data.id != MetadataEditor.getCurrentItemId()) { diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index dcfdc72bae..b4c7936239 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -1,26 +1,26 @@ -define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "apphost", "layoutManager", "focusManager", "emby-itemscontainer", "emby-scroller"], function (appRouter, cardBuilder, dom, globalize, connectionManager, appHost, layoutManager, focusManager) { - "use strict"; +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() { return true; } function getThumbShape() { - return enableScrollX() ? "overflowBackdrop" : "backdrop"; + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; } function getPosterShape() { - return enableScrollX() ? "overflowPortrait" : "portrait"; + return enableScrollX() ? 'overflowPortrait' : 'portrait'; } function getSquareShape() { - return enableScrollX() ? "overflowSquare" : "square"; + return enableScrollX() ? 'overflowSquare' : 'square'; } function getSections() { return [{ - name: "HeaderFavoriteMovies", - types: "Movie", + name: 'HeaderFavoriteMovies', + types: 'Movie', shape: getPosterShape(), showTitle: true, showYear: true, @@ -28,8 +28,8 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap overlayText: false, centerText: true }, { - name: "HeaderFavoriteShows", - types: "Series", + name: 'HeaderFavoriteShows', + types: 'Series', shape: getPosterShape(), showTitle: true, showYear: true, @@ -37,8 +37,8 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap overlayText: false, centerText: true }, { - name: "HeaderFavoriteEpisodes", - types: "Episode", + name: 'HeaderFavoriteEpisodes', + types: 'Episode', shape: getThumbShape(), preferThumb: false, showTitle: true, @@ -47,8 +47,8 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap overlayText: false, centerText: true }, { - name: "HeaderFavoriteVideos", - types: "Video", + name: 'HeaderFavoriteVideos', + types: 'Video', shape: getThumbShape(), preferThumb: true, showTitle: true, @@ -56,16 +56,16 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap overlayText: false, centerText: true }, { - name: "HeaderFavoriteCollections", - types: "BoxSet", + name: 'HeaderFavoriteCollections', + types: 'BoxSet', shape: getPosterShape(), showTitle: true, overlayPlayButton: true, overlayText: false, centerText: true }, { - name: "HeaderFavoritePlaylists", - types: "Playlist", + name: 'HeaderFavoritePlaylists', + types: 'Playlist', shape: getSquareShape(), preferThumb: false, showTitle: true, @@ -75,8 +75,8 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap overlayPlayButton: true, coverImage: true }, { - name: "HeaderFavoritePeople", - types: "Person", + name: 'HeaderFavoritePeople', + types: 'Person', shape: getPosterShape(), preferThumb: false, showTitle: true, @@ -86,8 +86,8 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap overlayPlayButton: true, coverImage: true }, { - name: "HeaderFavoriteArtists", - types: "MusicArtist", + name: 'HeaderFavoriteArtists', + types: 'MusicArtist', shape: getSquareShape(), preferThumb: false, showTitle: true, @@ -97,8 +97,8 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap overlayPlayButton: true, coverImage: true }, { - name: "HeaderFavoriteAlbums", - types: "MusicAlbum", + name: 'HeaderFavoriteAlbums', + types: 'MusicAlbum', shape: getSquareShape(), preferThumb: false, showTitle: true, @@ -108,8 +108,8 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap overlayPlayButton: true, coverImage: true }, { - name: "HeaderFavoriteSongs", - types: "Audio", + name: 'HeaderFavoriteSongs', + types: 'Audio', shape: getSquareShape(), preferThumb: false, showTitle: true, @@ -117,11 +117,11 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap showParentTitle: true, centerText: true, overlayMoreButton: true, - action: "instantmix", + action: 'instantmix', coverImage: true }, { - name: "HeaderFavoriteBooks", - types: "Book", + name: 'HeaderFavoriteBooks', + types: 'Book', shape: getPosterShape(), showTitle: true, showYear: true, @@ -135,23 +135,23 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap return function () { var apiClient = this.apiClient; var options = { - SortBy: (section.types, "SeriesName,SortName"), - SortOrder: "Ascending", - Filters: "IsFavorite", + SortBy: (section.types, 'SeriesName,SortName'), + SortOrder: 'Ascending', + Filters: 'IsFavorite', Recursive: true, - Fields: "PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,BasicSyncInfo', CollapseBoxSetItems: false, - ExcludeLocationTypes: "Virtual", + ExcludeLocationTypes: 'Virtual', EnableTotalRecordCount: false }; options.Limit = 20; var userId = apiClient.getCurrentUserId(); - if ("MusicArtist" === section.types) { + if ('MusicArtist' === section.types) { return apiClient.getArtists(userId, options); } - if ("Person" === section.types) { + if ('Person' === section.types) { return apiClient.getPeople(userId, options); } @@ -161,7 +161,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap } function getRouteUrl(section, serverId) { - return appRouter.getRouteUrl("list", { + return appRouter.getRouteUrl('list', { serverId: serverId, itemTypes: section.types, isFavorite: true @@ -170,14 +170,14 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap function getItemsHtmlFn(section) { return function (items) { - var supportsImageAnalysis = appHost.supports("imageanalysis"); + 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: "favorite", + name: globalize.translate('All'), + id: 'more', + icon: 'favorite', routeUrl: getRouteUrl(section, serverId) }] : null; var lines = 0; @@ -220,7 +220,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap this.view = view; this.params = params; this.apiClient = connectionManager.currentApiClient(); - this.sectionsContainer = view.querySelector(".sections"); + this.sectionsContainer = view.querySelector('.sections'); createSections(this, this.sectionsContainer, this.apiClient); } @@ -228,50 +228,50 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap var i; var length; var sections = getSections(); - var html = ""; + var html = ''; for (i = 0, length = sections.length; i < length; i++) { var section = sections[i]; - var sectionClass = "verticalSection"; + var sectionClass = 'verticalSection'; if (!section.showTitle) { - sectionClass += " verticalSection-extrabottompadding"; + sectionClass += ' verticalSection-extrabottompadding'; } html += '
'; html += '
'; if (layoutManager.tv) { - html += '

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

"; + html += '

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

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

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

"; + html += ''; html += ''; - html += "
"; + html += ''; } - html += "
"; + html += '
'; html += '
'; - html += ""; + html += ''; } elem.innerHTML = html; - var elems = elem.querySelectorAll(".itemsContainer"); + 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.parentContainer = dom.parentWithClass(itemsContainer, 'verticalSection'); } } FavoritesTab.prototype.onResume = function (options) { var promises = (this.apiClient, []); var view = this.view; - var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"); + var elems = this.sectionsContainer.querySelectorAll('.itemsContainer'); for (var i = 0, length = elems.length; i < length; i++) { promises.push(elems[i].resume(options)); @@ -285,7 +285,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap }; FavoritesTab.prototype.onPause = function () { - var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"); + var elems = this.sectionsContainer.querySelectorAll('.itemsContainer'); for (var i = 0, length = elems.length; i < length; i++) { elems[i].pause(); @@ -296,7 +296,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap this.view = null; this.params = null; this.apiClient = null; - var elems = this.sectionsContainer.querySelectorAll(".itemsContainer"); + var elems = this.sectionsContainer.querySelectorAll('.itemsContainer'); for (var i = 0, length = elems.length; i < length; i++) { elems[i].fetchData = null; diff --git a/src/controllers/home.js b/src/controllers/home.js index b1dd70ebd6..9a4cea2227 100644 --- a/src/controllers/home.js +++ b/src/controllers/home.js @@ -1,11 +1,11 @@ -define(["tabbedView", "globalize", "require", "emby-tabs", "emby-button", "emby-scroller"], function (TabbedView, globalize, require) { - "use strict"; +define(['tabbedView', 'globalize', 'require', 'emby-tabs', 'emby-button', 'emby-scroller'], function (TabbedView, globalize, require) { + 'use strict'; function getTabs() { return [{ - name: globalize.translate("Home") + name: globalize.translate('Home') }, { - name: globalize.translate("Favorites") + name: globalize.translate('Favorites') }]; } @@ -21,18 +21,18 @@ define(["tabbedView", "globalize", "require", "emby-tabs", "emby-button", "emby- function getTabController(index) { if (null == index) { - throw new Error("index cannot be null"); + throw new Error('index cannot be null'); } var depends = []; switch (index) { case 0: - depends.push("controllers/hometab"); + depends.push('controllers/hometab'); break; case 1: - depends.push("controllers/favorites"); + depends.push('controllers/favorites'); } var instance = this; @@ -63,12 +63,12 @@ define(["tabbedView", "globalize", "require", "emby-tabs", "emby-button", "emby- HomeView.prototype.onPause = function () { TabbedView.prototype.onPause.call(this); - document.querySelector(".skinHeader").classList.remove("noHomeButtonHeader"); + document.querySelector('.skinHeader').classList.remove('noHomeButtonHeader'); }; HomeView.prototype.onResume = function (options) { TabbedView.prototype.onResume.call(this, options); - document.querySelector(".skinHeader").classList.add("noHomeButtonHeader"); + document.querySelector('.skinHeader').classList.add('noHomeButtonHeader'); }; return HomeView; diff --git a/src/controllers/hometab.js b/src/controllers/hometab.js index d2adcb2da2..8e2a1f92e7 100644 --- a/src/controllers/hometab.js +++ b/src/controllers/hometab.js @@ -1,12 +1,12 @@ -define(["userSettings", "loading", "connectionManager", "apphost", "layoutManager", "focusManager", "homeSections", "emby-itemscontainer"], function (userSettings, loading, connectionManager, appHost, layoutManager, focusManager, homeSections) { - "use strict"; +define(['userSettings', 'loading', 'connectionManager', 'apphost', 'layoutManager', 'focusManager', 'homeSections', 'emby-itemscontainer'], function (userSettings, loading, connectionManager, appHost, layoutManager, focusManager, homeSections) { + 'use strict'; function HomeTab(view, params) { this.view = view; this.params = params; this.apiClient = connectionManager.currentApiClient(); - this.sectionsContainer = view.querySelector(".sections"); - view.querySelector(".sections").addEventListener("settingschange", onHomeScreenSettingsChanged.bind(this)); + this.sectionsContainer = view.querySelector('.sections'); + view.querySelector('.sections').addEventListener('settingschange', onHomeScreenSettingsChanged.bind(this)); } function onHomeScreenSettingsChanged() { @@ -36,7 +36,7 @@ define(["userSettings", "loading", "connectionManager", "apphost", "layoutManage this.destroyHomeSections(); this.sectionsRendered = true; return apiClient.getCurrentUser().then(function (user) { - return homeSections.loadSections(view.querySelector(".sections"), apiClient, user, userSettings).then(function () { + return homeSections.loadSections(view.querySelector('.sections'), apiClient, user, userSettings).then(function () { if (options.autoFocus) { focusManager.autoFocus(view); } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 8f2632c630..ade68234a2 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1,5 +1,5 @@ -define(["loading", "appRouter", "layoutManager", "connectionManager", "userSettings", "cardBuilder", "datetime", "mediaInfo", "backdrop", "listView", "itemContextMenu", "itemHelper", "dom", "indicators", "imageLoader", "libraryMenu", "globalize", "browser", "events", "playbackManager", "scrollStyles", "emby-itemscontainer", "emby-checkbox", "emby-button", "emby-playstatebutton", "emby-ratingbutton", "emby-scroller", "emby-select"], function (loading, appRouter, layoutManager, connectionManager, userSettings, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, imageLoader, libraryMenu, globalize, browser, events, playbackManager) { - "use strict"; +define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSettings', 'cardBuilder', 'datetime', 'mediaInfo', 'backdrop', 'listView', 'itemContextMenu', 'itemHelper', 'dom', 'indicators', 'imageLoader', 'libraryMenu', 'globalize', 'browser', 'events', 'playbackManager', 'scrollStyles', 'emby-itemscontainer', 'emby-checkbox', 'emby-button', 'emby-playstatebutton', 'emby-ratingbutton', 'emby-scroller', 'emby-select'], function (loading, appRouter, layoutManager, connectionManager, userSettings, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, imageLoader, libraryMenu, globalize, browser, events, playbackManager) { + 'use strict'; function getPromise(apiClient, params) { var id = params.id; @@ -24,19 +24,19 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti return apiClient.getArtist(params.musicartist, apiClient.getCurrentUserId()); } - throw new Error("Invalid request"); + throw new Error('Invalid request'); } function hideAll(page, className, show) { var i; var length; - var elems = page.querySelectorAll("." + className); + var elems = page.querySelectorAll('.' + className); for (i = 0, length = elems.length; i < length; i++) { if (show) { - elems[i].classList.remove("hide"); + elems[i].classList.remove('hide'); } else { - elems[i].classList.add("hide"); + elems[i].classList.add('hide'); } } } @@ -61,101 +61,101 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function getProgramScheduleHtml(items) { - var html = ""; + var html = ''; html += '
'; html += listView.getListViewHtml({ items: items, enableUserDataButtons: false, image: true, - imageSource: "channel", + imageSource: 'channel', showProgramDateTime: true, showChannel: false, mediaInfo: false, - action: "none", + action: 'none', moreButton: false, recordButton: false }); - return html += "
"; + return html += ''; } function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) { apiClient.getLiveTvTimers({ UserId: apiClient.getCurrentUserId(), ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Thumb", - SortBy: "StartDate", + EnableImageTypes: 'Primary,Backdrop,Thumb', + SortBy: 'StartDate', EnableTotalRecordCount: false, EnableUserData: false, SeriesTimerId: seriesTimerId, - Fields: "ChannelInfo,ChannelImage" + Fields: 'ChannelInfo,ChannelImage' }).then(function (result) { if (result.Items.length && result.Items[0].SeriesTimerId != seriesTimerId) { result.Items = []; } var html = getProgramScheduleHtml(result.Items); - var scheduleTab = page.querySelector(".seriesTimerSchedule"); + var scheduleTab = page.querySelector('.seriesTimerSchedule'); scheduleTab.innerHTML = html; imageLoader.lazyChildren(scheduleTab); }); } function renderTimerEditor(page, item, apiClient, user) { - if ("Recording" !== item.Type || !user.Policy.EnableLiveTvManagement || !item.TimerId || "InProgress" !== item.Status) { - return void hideAll(page, "btnCancelTimer"); + if ('Recording' !== item.Type || !user.Policy.EnableLiveTvManagement || !item.TimerId || 'InProgress' !== item.Status) { + return void hideAll(page, 'btnCancelTimer'); } - hideAll(page, "btnCancelTimer", true); + hideAll(page, 'btnCancelTimer', true); } function renderSeriesTimerEditor(page, item, apiClient, user) { - if ("SeriesTimer" !== item.Type) { - return void hideAll(page, "btnCancelSeriesTimer"); + if ('SeriesTimer' !== item.Type) { + return void hideAll(page, 'btnCancelSeriesTimer'); } if (user.Policy.EnableLiveTvManagement) { - require(["seriesRecordingEditor"], function (seriesRecordingEditor) { + require(['seriesRecordingEditor'], function (seriesRecordingEditor) { seriesRecordingEditor.embed(item, apiClient.serverId(), { - context: page.querySelector(".seriesRecordingEditor") + context: page.querySelector('.seriesRecordingEditor') }); }); - page.querySelector(".seriesTimerScheduleSection").classList.remove("hide"); - hideAll(page, "btnCancelSeriesTimer", true); + page.querySelector('.seriesTimerScheduleSection').classList.remove('hide'); + hideAll(page, 'btnCancelSeriesTimer', true); return void renderSeriesTimerSchedule(page, apiClient, item.Id); } - page.querySelector(".seriesTimerScheduleSection").classList.add("hide"); - return void hideAll(page, "btnCancelSeriesTimer"); + page.querySelector('.seriesTimerScheduleSection').classList.add('hide'); + return void hideAll(page, 'btnCancelSeriesTimer'); } function renderTrackSelections(page, instance, item, forceReload) { - var select = page.querySelector(".selectSource"); + var select = page.querySelector('.selectSource'); - if (!item.MediaSources || !itemHelper.supportsMediaSourceSelection(item) || -1 === playbackManager.getSupportedCommands().indexOf("PlayMediaSource") || !playbackManager.canPlay(item)) { - page.querySelector(".trackSelections").classList.add("hide"); - select.innerHTML = ""; - page.querySelector(".selectVideo").innerHTML = ""; - page.querySelector(".selectAudio").innerHTML = ""; - page.querySelector(".selectSubtitles").innerHTML = ""; + if (!item.MediaSources || !itemHelper.supportsMediaSourceSelection(item) || -1 === playbackManager.getSupportedCommands().indexOf('PlayMediaSource') || !playbackManager.canPlay(item)) { + page.querySelector('.trackSelections').classList.add('hide'); + select.innerHTML = ''; + page.querySelector('.selectVideo').innerHTML = ''; + page.querySelector('.selectAudio').innerHTML = ''; + page.querySelector('.selectSubtitles').innerHTML = ''; return; } playbackManager.getPlaybackMediaSources(item).then(function (mediaSources) { instance._currentPlaybackMediaSources = mediaSources; - page.querySelector(".trackSelections").classList.remove("hide"); - select.setLabel(globalize.translate("LabelVersion")); + page.querySelector('.trackSelections').classList.remove('hide'); + select.setLabel(globalize.translate('LabelVersion')); var currentValue = select.value; var selectedId = mediaSources[0].Id; select.innerHTML = mediaSources.map(function (v) { - var selected = v.Id === selectedId ? " selected" : ""; - return '"; - }).join(""); + var selected = v.Id === selectedId ? ' selected' : ''; + return ''; + }).join(''); if (mediaSources.length > 1) { - page.querySelector(".selectSourceContainer").classList.remove("hide"); + page.querySelector('.selectSourceContainer').classList.remove('hide'); } else { - page.querySelector(".selectSourceContainer").classList.add("hide"); + page.querySelector('.selectSourceContainer').classList.add('hide'); } if (select.value !== currentValue || forceReload) { @@ -167,18 +167,18 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function renderVideoSelections(page, mediaSources) { - var mediaSourceId = page.querySelector(".selectSource").value; + var mediaSourceId = page.querySelector('.selectSource').value; var mediaSource = mediaSources.filter(function (m) { return m.Id === mediaSourceId; })[0]; var tracks = mediaSource.MediaStreams.filter(function (m) { - return "Video" === m.Type; + return 'Video' === m.Type; }); - var select = page.querySelector(".selectVideo"); - select.setLabel(globalize.translate("LabelVideo")); + var select = page.querySelector('.selectVideo'); + select.setLabel(globalize.translate('LabelVideo')); var selectedId = tracks.length ? tracks[0].Index : -1; select.innerHTML = tracks.map(function (v) { - var selected = v.Index === selectedId ? " selected" : ""; + var selected = v.Index === selectedId ? ' selected' : ''; var titleParts = []; var resolutionText = mediaInfo.getResolutionText(v); @@ -190,100 +190,100 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti titleParts.push(v.Codec.toUpperCase()); } - return '"; - }).join(""); - select.setAttribute("disabled", "disabled"); + return ''; + }).join(''); + select.setAttribute('disabled', 'disabled'); if (tracks.length) { - page.querySelector(".selectVideoContainer").classList.remove("hide"); + page.querySelector('.selectVideoContainer').classList.remove('hide'); } else { - page.querySelector(".selectVideoContainer").classList.add("hide"); + page.querySelector('.selectVideoContainer').classList.add('hide'); } } function renderAudioSelections(page, mediaSources) { - var mediaSourceId = page.querySelector(".selectSource").value; + var mediaSourceId = page.querySelector('.selectSource').value; var mediaSource = mediaSources.filter(function (m) { return m.Id === mediaSourceId; })[0]; var tracks = mediaSource.MediaStreams.filter(function (m) { - return "Audio" === m.Type; + return 'Audio' === m.Type; }); - var select = page.querySelector(".selectAudio"); - select.setLabel(globalize.translate("LabelAudio")); + var select = page.querySelector('.selectAudio'); + select.setLabel(globalize.translate('LabelAudio')); var selectedId = mediaSource.DefaultAudioStreamIndex; select.innerHTML = tracks.map(function (v) { - var selected = v.Index === selectedId ? " selected" : ""; - return '"; - }).join(""); + var selected = v.Index === selectedId ? ' selected' : ''; + return ''; + }).join(''); if (tracks.length > 1) { - select.removeAttribute("disabled"); + select.removeAttribute('disabled'); } else { - select.setAttribute("disabled", "disabled"); + select.setAttribute('disabled', 'disabled'); } if (tracks.length) { - page.querySelector(".selectAudioContainer").classList.remove("hide"); + page.querySelector('.selectAudioContainer').classList.remove('hide'); } else { - page.querySelector(".selectAudioContainer").classList.add("hide"); + page.querySelector('.selectAudioContainer').classList.add('hide'); } } function renderSubtitleSelections(page, mediaSources) { - var mediaSourceId = page.querySelector(".selectSource").value; + var mediaSourceId = page.querySelector('.selectSource').value; var mediaSource = mediaSources.filter(function (m) { return m.Id === mediaSourceId; })[0]; var tracks = mediaSource.MediaStreams.filter(function (m) { - return "Subtitle" === m.Type; + return 'Subtitle' === m.Type; }); - var select = page.querySelector(".selectSubtitles"); - select.setLabel(globalize.translate("LabelSubtitles")); + var select = page.querySelector('.selectSubtitles'); + select.setLabel(globalize.translate('LabelSubtitles')); var selectedId = null == mediaSource.DefaultSubtitleStreamIndex ? -1 : mediaSource.DefaultSubtitleStreamIndex; if (tracks.length) { - var selected = -1 === selectedId ? " selected" : ""; - select.innerHTML = '" + tracks.map(function (v) { - selected = v.Index === selectedId ? " selected" : ""; - return '"; - }).join(""); - page.querySelector(".selectSubtitlesContainer").classList.remove("hide"); + var selected = -1 === selectedId ? ' selected' : ''; + select.innerHTML = '' + tracks.map(function (v) { + selected = v.Index === selectedId ? ' selected' : ''; + return ''; + }).join(''); + page.querySelector('.selectSubtitlesContainer').classList.remove('hide'); } else { - select.innerHTML = ""; - page.querySelector(".selectSubtitlesContainer").classList.add("hide"); + select.innerHTML = ''; + page.querySelector('.selectSubtitlesContainer').classList.add('hide'); } } function reloadPlayButtons(page, item) { var canPlay = false; - if ("Program" == item.Type) { + if ('Program' == item.Type) { var now = new Date(); if (now >= datetime.parseISO8601Date(item.StartDate, true) && now < datetime.parseISO8601Date(item.EndDate, true)) { - hideAll(page, "btnPlay", true); + hideAll(page, 'btnPlay', true); canPlay = true; } else { - hideAll(page, "btnPlay"); + hideAll(page, 'btnPlay'); } - hideAll(page, "btnResume"); - hideAll(page, "btnInstantMix"); - hideAll(page, "btnShuffle"); + hideAll(page, 'btnResume'); + hideAll(page, 'btnInstantMix'); + hideAll(page, 'btnShuffle'); } else if (playbackManager.canPlay(item)) { - hideAll(page, "btnPlay", true); - var enableInstantMix = -1 !== ["Audio", "MusicAlbum", "MusicGenre", "MusicArtist"].indexOf(item.Type); - hideAll(page, "btnInstantMix", enableInstantMix); - var enableShuffle = item.IsFolder || -1 !== ["MusicAlbum", "MusicGenre", "MusicArtist"].indexOf(item.Type); - hideAll(page, "btnShuffle", enableShuffle); + hideAll(page, 'btnPlay', true); + var enableInstantMix = -1 !== ['Audio', 'MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type); + hideAll(page, 'btnInstantMix', enableInstantMix); + var enableShuffle = item.IsFolder || -1 !== ['MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type); + hideAll(page, 'btnShuffle', enableShuffle); canPlay = true; - hideAll(page, "btnResume", item.UserData && item.UserData.PlaybackPositionTicks > 0); + hideAll(page, 'btnResume', item.UserData && item.UserData.PlaybackPositionTicks > 0); } else { - hideAll(page, "btnPlay"); - hideAll(page, "btnResume"); - hideAll(page, "btnInstantMix"); - hideAll(page, "btnShuffle"); + hideAll(page, 'btnPlay'); + hideAll(page, 'btnResume'); + hideAll(page, 'btnInstantMix'); + hideAll(page, 'btnShuffle'); } return canPlay; @@ -292,30 +292,30 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function reloadUserDataButtons(page, item) { var i; var length; - var btnPlaystates = page.querySelectorAll(".btnPlaystate"); + var btnPlaystates = page.querySelectorAll('.btnPlaystate'); for (i = 0, length = btnPlaystates.length; i < length; i++) { var btnPlaystate = btnPlaystates[i]; if (itemHelper.canMarkPlayed(item)) { - btnPlaystate.classList.remove("hide"); + btnPlaystate.classList.remove('hide'); btnPlaystate.setItem(item); } else { - btnPlaystate.classList.add("hide"); + btnPlaystate.classList.add('hide'); btnPlaystate.setItem(null); } } - var btnUserRatings = page.querySelectorAll(".btnUserRating"); + var btnUserRatings = page.querySelectorAll('.btnUserRating'); for (i = 0, length = btnUserRatings.length; i < length; i++) { var btnUserRating = btnUserRatings[i]; if (itemHelper.canRate(item)) { - btnUserRating.classList.remove("hide"); + btnUserRating.classList.remove('hide'); btnUserRating.setItem(item); } else { - btnUserRating.classList.add("hide"); + btnUserRating.classList.add('hide'); btnUserRating.setItem(null); } } @@ -328,13 +328,13 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti var artist = artists[i]; var href = appRouter.getRouteUrl(artist, { context: context, - itemType: "MusicArtist", + itemType: 'MusicArtist', serverId: serverId }); - html.push('' + artist.Name + ""); + html.push('' + artist.Name + ''); } - return html = html.join(" / "); + return html = html.join(' / '); } function renderName(item, container, isStatic, context) { var parentRoute; @@ -344,64 +344,64 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if (item.AlbumArtists) { parentNameHtml.push(getArtistLinksHtml(item.AlbumArtists, item.ServerId, context)); parentNameLast = true; - } else if (item.ArtistItems && item.ArtistItems.length && "MusicVideo" === item.Type) { + } else if (item.ArtistItems && item.ArtistItems.length && 'MusicVideo' === item.Type) { parentNameHtml.push(getArtistLinksHtml(item.ArtistItems, item.ServerId, context)); parentNameLast = true; - } else if (item.SeriesName && "Episode" === item.Type) { + } else if (item.SeriesName && 'Episode' === item.Type) { parentRoute = appRouter.getRouteUrl({ Id: item.SeriesId, Name: item.SeriesName, - Type: "Series", + Type: 'Series', IsFolder: true, ServerId: item.ServerId }, { context: context }); - parentNameHtml.push('' + item.SeriesName + ""); + parentNameHtml.push('' + item.SeriesName + ''); } else if (item.IsSeries || item.EpisodeTitle) { parentNameHtml.push(item.Name); } - if (item.SeriesName && "Season" === item.Type) { + if (item.SeriesName && 'Season' === item.Type) { parentRoute = appRouter.getRouteUrl({ Id: item.SeriesId, Name: item.SeriesName, - Type: "Series", + Type: 'Series', IsFolder: true, ServerId: item.ServerId }, { context: context }); - parentNameHtml.push('' + item.SeriesName + ""); - } else if (null != item.ParentIndexNumber && "Episode" === item.Type) { + parentNameHtml.push('' + item.SeriesName + ''); + } else if (null != item.ParentIndexNumber && 'Episode' === item.Type) { parentRoute = appRouter.getRouteUrl({ Id: item.SeasonId, Name: item.SeasonName, - Type: "Season", + Type: 'Season', IsFolder: true, ServerId: item.ServerId }, { context: context }); - parentNameHtml.push('' + item.SeasonName + ""); + parentNameHtml.push('' + item.SeasonName + ''); } else if (null != item.ParentIndexNumber && item.IsSeries) { - parentNameHtml.push(item.SeasonName || "S" + item.ParentIndexNumber); - } else if (item.Album && item.AlbumId && ("MusicVideo" === item.Type || "Audio" === item.Type)) { + parentNameHtml.push(item.SeasonName || 'S' + item.ParentIndexNumber); + } else if (item.Album && item.AlbumId && ('MusicVideo' === item.Type || 'Audio' === item.Type)) { parentRoute = appRouter.getRouteUrl({ Id: item.AlbumId, Name: item.Album, - Type: "MusicAlbum", + Type: 'MusicAlbum', IsFolder: true, ServerId: item.ServerId }, { context: context }); - parentNameHtml.push('' + item.Album + ""); + parentNameHtml.push('' + item.Album + ''); } else if (item.Album) { parentNameHtml.push(item.Album); } // FIXME: This whole section needs some refactoring, so it becames easier to scale across all form factors. See GH #1022 - var html = ""; + var html = ''; var tvShowHtml = parentNameHtml[0]; var tvSeasonHtml = parentNameHtml[1]; @@ -409,15 +409,15 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if (parentNameLast) { // Music if (layoutManager.mobile) { - html = '

' + parentNameHtml.join("
") + "

"; + html = '

' + parentNameHtml.join('
') + '

'; } else { - html = '

' + parentNameHtml.join(" - ") + "

"; + html = '

' + parentNameHtml.join(' - ') + '

'; } } else { if (layoutManager.mobile) { - html = '

' + parentNameHtml.join("
") + "

"; + html = '

' + parentNameHtml.join('
') + '

'; } else { - html = '

' + tvShowHtml + "

"; + html = '

' + tvShowHtml + '

'; } } } @@ -425,7 +425,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti var name = itemHelper.getDisplayName(item, { includeParentInfo: false }); - var offset = parentNameLast ? ".25em" : ".5em"; + var offset = parentNameLast ? '.25em' : '.5em'; if (html && !parentNameLast) { if (!layoutManager.mobile && tvSeasonHtml) { @@ -434,7 +434,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti html += '

' + name + '

'; } } else { - html = '

' + name + "

" + html; + html = '

' + name + '

' + html; } if (item.OriginalTitle && item.OriginalTitle != item.Name) { @@ -444,17 +444,17 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti container.innerHTML = html; if (html.length) { - container.classList.remove("hide"); + container.classList.remove('hide'); } else { - container.classList.add("hide"); + container.classList.add('hide'); } } function setTrailerButtonVisibility(page, item) { - if ((item.LocalTrailerCount || item.RemoteTrailers && item.RemoteTrailers.length) && -1 !== playbackManager.getSupportedCommands().indexOf("PlayTrailers")) { - hideAll(page, "btnPlayTrailer", true); + if ((item.LocalTrailerCount || item.RemoteTrailers && item.RemoteTrailers.length) && -1 !== playbackManager.getSupportedCommands().indexOf('PlayTrailers')) { + hideAll(page, 'btnPlayTrailer', true); } else { - hideAll(page, "btnPlayTrailer"); + hideAll(page, 'btnPlayTrailer'); } } @@ -469,76 +469,76 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function renderDetailPageBackdrop(page, item, apiClient) { var imgUrl; var hasbackdrop = false; - var itemBackdropElement = page.querySelector("#itemBackdrop"); - var usePrimaryImage = item.MediaType === "Video" && item.Type !== "Movie" && item.Type !== "Trailer" || - item.MediaType && item.MediaType !== "Video" || - item.Type === "MusicAlbum" || - item.Type === "Person"; + var itemBackdropElement = page.querySelector('#itemBackdrop'); + var usePrimaryImage = item.MediaType === 'Video' && item.Type !== 'Movie' && item.Type !== 'Trailer' || + item.MediaType && item.MediaType !== 'Video' || + item.Type === 'MusicAlbum' || + item.Type === 'Person'; if (!layoutManager.mobile && !userSettings.enableBackdrops()) { return false; } - if ("Program" === item.Type && item.ImageTags && item.ImageTags.Thumb) { + if ('Program' === item.Type && item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Thumb", + type: 'Thumb', maxWidth: dom.getScreenWidth(), index: 0, tag: item.ImageTags.Thumb }); - page.classList.remove("noBackdrop"); + page.classList.remove('noBackdrop'); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (usePrimaryImage && item.ImageTags && item.ImageTags.Primary) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Primary", + type: 'Primary', maxWidth: dom.getScreenWidth(), index: 0, tag: item.ImageTags.Primary }); - page.classList.remove("noBackdrop"); + page.classList.remove('noBackdrop'); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (item.BackdropImageTags && item.BackdropImageTags.length) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Backdrop", + type: 'Backdrop', maxWidth: dom.getScreenWidth(), index: 0, tag: item.BackdropImageTags[0] }); - page.classList.remove("noBackdrop"); + page.classList.remove('noBackdrop'); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, { - type: "Backdrop", + type: 'Backdrop', maxWidth: dom.getScreenWidth(), index: 0, tag: item.ParentBackdropImageTags[0] }); - page.classList.remove("noBackdrop"); + page.classList.remove('noBackdrop'); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else if (item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: "Thumb", + type: 'Thumb', maxWidth: dom.getScreenWidth(), index: 0, tag: item.ImageTags.Thumb }); - page.classList.remove("noBackdrop"); + page.classList.remove('noBackdrop'); imageLoader.lazyImage(itemBackdropElement, imgUrl, false); hasbackdrop = true; } else { - itemBackdropElement.style.backgroundImage = ""; + itemBackdropElement.style.backgroundImage = ''; } - if ("Person" === item.Type) { + if ('Person' === item.Type) { // FIXME: This hides the backdrop on all persons to fix a margin issue. Ideally, a proper fix should be made. page.classList.add('noBackdrop'); - itemBackdropElement.classList.add("personBackdrop"); + itemBackdropElement.classList.add('personBackdrop'); } else { - itemBackdropElement.classList.remove("personBackdrop"); + itemBackdropElement.classList.remove('personBackdrop'); } return hasbackdrop; @@ -546,9 +546,9 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function reloadFromItem(instance, page, params, item, user) { var context = params.context; - page.querySelector(".detailPagePrimaryContainer").classList.add("detailSticky"); + page.querySelector('.detailPagePrimaryContainer').classList.add('detailSticky'); - renderName(item, page.querySelector(".nameContainer"), false, context); + renderName(item, page.querySelector('.nameContainer'), false, context); var apiClient = connectionManager.getApiClient(item.ServerId); renderSeriesTimerEditor(page, item, apiClient, user); renderTimerEditor(page, item, apiClient, user); @@ -562,96 +562,96 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti renderDetailPageBackdrop(page, item, apiClient); var canPlay = reloadPlayButtons(page, item); - if ((item.LocalTrailerCount || item.RemoteTrailers && item.RemoteTrailers.length) && -1 !== playbackManager.getSupportedCommands().indexOf("PlayTrailers")) { - hideAll(page, "btnPlayTrailer", true); + if ((item.LocalTrailerCount || item.RemoteTrailers && item.RemoteTrailers.length) && -1 !== playbackManager.getSupportedCommands().indexOf('PlayTrailers')) { + hideAll(page, 'btnPlayTrailer', true); } else { - hideAll(page, "btnPlayTrailer"); + hideAll(page, 'btnPlayTrailer'); } setTrailerButtonVisibility(page, item); if (item.CanDelete && !item.IsFolder) { - hideAll(page, "btnDeleteItem", true); + hideAll(page, 'btnDeleteItem', true); } else { - hideAll(page, "btnDeleteItem"); + hideAll(page, 'btnDeleteItem'); } - if ("Program" !== item.Type || canPlay) { - hideAll(page, "mainDetailButtons", true); + if ('Program' !== item.Type || canPlay) { + hideAll(page, 'mainDetailButtons', true); } else { - hideAll(page, "mainDetailButtons"); + hideAll(page, 'mainDetailButtons'); } showRecordingFields(instance, page, item, user); var groupedVersions = (item.MediaSources || []).filter(function (g) { - return "Grouping" == g.Type; + return 'Grouping' == g.Type; }); if (user.Policy.IsAdministrator && groupedVersions.length) { - page.querySelector(".btnSplitVersions").classList.remove("hide"); + page.querySelector('.btnSplitVersions').classList.remove('hide'); } else { - page.querySelector(".btnSplitVersions").classList.add("hide"); + page.querySelector('.btnSplitVersions').classList.add('hide'); } if (itemContextMenu.getCommands(getContextMenuOptions(item, user)).length) { - hideAll(page, "btnMoreCommands", true); + hideAll(page, 'btnMoreCommands', true); } else { - hideAll(page, "btnMoreCommands"); + hideAll(page, 'btnMoreCommands'); } - var itemBirthday = page.querySelector("#itemBirthday"); + var itemBirthday = page.querySelector('#itemBirthday'); - if ("Person" == item.Type && item.PremiereDate) { + if ('Person' == item.Type && item.PremiereDate) { try { var birthday = datetime.parseISO8601Date(item.PremiereDate, true).toDateString(); - itemBirthday.classList.remove("hide"); - itemBirthday.innerHTML = globalize.translate("BirthDateValue", birthday); + itemBirthday.classList.remove('hide'); + itemBirthday.innerHTML = globalize.translate('BirthDateValue', birthday); } catch (err) { - itemBirthday.classList.add("hide"); + itemBirthday.classList.add('hide'); } } else { - itemBirthday.classList.add("hide"); + itemBirthday.classList.add('hide'); } - var itemDeathDate = page.querySelector("#itemDeathDate"); + var itemDeathDate = page.querySelector('#itemDeathDate'); - if ("Person" == item.Type && item.EndDate) { + if ('Person' == item.Type && item.EndDate) { try { var deathday = datetime.parseISO8601Date(item.EndDate, true).toDateString(); - itemDeathDate.classList.remove("hide"); - itemDeathDate.innerHTML = globalize.translate("DeathDateValue", deathday); + itemDeathDate.classList.remove('hide'); + itemDeathDate.innerHTML = globalize.translate('DeathDateValue', deathday); } catch (err) { - itemDeathDate.classList.add("hide"); + itemDeathDate.classList.add('hide'); } } else { - itemDeathDate.classList.add("hide"); + itemDeathDate.classList.add('hide'); } - var itemBirthLocation = page.querySelector("#itemBirthLocation"); + var itemBirthLocation = page.querySelector('#itemBirthLocation'); - if ("Person" == item.Type && item.ProductionLocations && item.ProductionLocations.length) { - var gmap = '' + item.ProductionLocations[0] + ""; - itemBirthLocation.classList.remove("hide"); - itemBirthLocation.innerHTML = globalize.translate("BirthPlaceValue", gmap); + if ('Person' == item.Type && item.ProductionLocations && item.ProductionLocations.length) { + var gmap = '' + item.ProductionLocations[0] + ''; + itemBirthLocation.classList.remove('hide'); + itemBirthLocation.innerHTML = globalize.translate('BirthPlaceValue', gmap); } else { - itemBirthLocation.classList.add("hide"); + itemBirthLocation.classList.add('hide'); } setPeopleHeader(page, item); loading.hide(); - if (item.Type === "Book") { - hideAll(page, "btnDownload", true); + if (item.Type === 'Book') { + hideAll(page, 'btnDownload', true); } - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(page); }); } function logoImageUrl(item, apiClient, options) { options = options || {}; - options.type = "Logo"; + options.type = 'Logo'; if (item.ImageTags && item.ImageTags.Logo) { options.tag = item.ImageTags.Logo; @@ -670,36 +670,36 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti var url = logoImageUrl(item, apiClient, { maxWidth: 400 }); - var detailLogo = page.querySelector(".detailLogo"); + var detailLogo = page.querySelector('.detailLogo'); if (!layoutManager.mobile && !userSettings.enableBackdrops()) { - detailLogo.classList.add("hide"); + detailLogo.classList.add('hide'); } else if (url) { - detailLogo.classList.remove("hide"); - detailLogo.classList.add("lazy"); - detailLogo.setAttribute("data-src", url); + detailLogo.classList.remove('hide'); + detailLogo.classList.add('lazy'); + detailLogo.setAttribute('data-src', url); imageLoader.lazyImage(detailLogo); } else { - detailLogo.classList.add("hide"); + detailLogo.classList.add('hide'); } } function showRecordingFields(instance, page, item, user) { if (!instance.currentRecordingFields) { - var recordingFieldsElement = page.querySelector(".recordingFields"); + var recordingFieldsElement = page.querySelector('.recordingFields'); - if ("Program" == item.Type && user.Policy.EnableLiveTvManagement) { - require(["recordingFields"], function (recordingFields) { + if ('Program' == item.Type && user.Policy.EnableLiveTvManagement) { + require(['recordingFields'], function (recordingFields) { instance.currentRecordingFields = new recordingFields({ parent: recordingFieldsElement, programId: item.Id, serverId: item.ServerId }); - recordingFieldsElement.classList.remove("hide"); + recordingFieldsElement.classList.remove('hide'); }); } else { - recordingFieldsElement.classList.add("hide"); - recordingFieldsElement.innerHTML = ""; + recordingFieldsElement.classList.add('hide'); + recordingFieldsElement.innerHTML = ''; } } } @@ -710,34 +710,34 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti var links = []; if (!layoutManager.tv && item.HomePageUrl) { - links.push('' + globalize.translate("ButtonWebsite") + ""); + links.push('' + globalize.translate('ButtonWebsite') + ''); } if (item.ExternalUrls) { for (var i = 0, length = item.ExternalUrls.length; i < length; i++) { var url = item.ExternalUrls[i]; - links.push('' + url.Name + ""); + links.push('' + url.Name + ''); } } if (links.length) { - html.push(links.join(", ")); + html.push(links.join(', ')); } - linksElem.innerHTML = html.join(", "); + linksElem.innerHTML = html.join(', '); if (html.length) { - linksElem.classList.remove("hide"); + linksElem.classList.remove('hide'); } else { - linksElem.classList.add("hide"); + linksElem.classList.add('hide'); } } function renderDetailImage(page, elem, item, apiClient, editable, imageLoader, indicators) { - if ("SeriesTimer" === item.Type || "Program" === item.Type) { + if ('SeriesTimer' === item.Type || 'Program' === item.Type) { editable = false; } - elem.classList.add("detailimg-hidemobile"); + elem.classList.add('detailimg-hidemobile'); var imageTags = item.ImageTags || {}; @@ -746,8 +746,8 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } var url; - var html = ""; - var shape = "portrait"; + var html = ''; + var shape = 'portrait'; var detectRatio = false; /* In the following section, getScreenWidth() is multiplied by 0.5 as the posters @@ -755,48 +755,48 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti // TODO: Find a reliable way to get the poster width if (imageTags.Primary) { url = apiClient.getScaledImageUrl(item.Id, { - type: "Primary", + type: 'Primary', maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ImageTags.Primary }); detectRatio = true; } else if (item.BackdropImageTags && item.BackdropImageTags.length) { url = apiClient.getScaledImageUrl(item.Id, { - type: "Backdrop", + type: 'Backdrop', maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.BackdropImageTags[0] }); - shape = "thumb"; + shape = 'thumb'; } else if (imageTags.Thumb) { url = apiClient.getScaledImageUrl(item.Id, { - type: "Thumb", + type: 'Thumb', maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ImageTags.Thumb }); - shape = "thumb"; + shape = 'thumb'; } else if (imageTags.Disc) { url = apiClient.getScaledImageUrl(item.Id, { - type: "Disc", + type: 'Disc', maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ImageTags.Disc }); - shape = "square"; + shape = 'square'; } else if (item.AlbumId && item.AlbumPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.AlbumId, { - type: "Primary", + type: 'Primary', maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.AlbumPrimaryImageTag }); - shape = "square"; + shape = 'square'; } else if (item.SeriesId && item.SeriesPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.SeriesId, { - type: "Primary", + type: 'Primary', maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.SeriesPrimaryImageTag }); } else if (item.ParentPrimaryImageItemId && item.ParentPrimaryImageTag) { url = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, { - type: "Primary", + type: 'Primary', maxWidth: Math.round(dom.getScreenWidth() * 0.5), tag: item.ParentPrimaryImageTag }); @@ -819,81 +819,81 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } if (editable) { - html += ""; + html += ''; } else if (!editable && url === undefined) { - html += ""; + html += ''; } - var progressHtml = item.IsFolder || !item.UserData ? "" : indicators.getProgressBarHtml(item); + var progressHtml = item.IsFolder || !item.UserData ? '' : indicators.getProgressBarHtml(item); html += '
'; if (progressHtml) { html += progressHtml; } - html += "
"; + html += ''; elem.innerHTML = html; if (detectRatio && item.PrimaryImageAspectRatio) { if (item.PrimaryImageAspectRatio >= 1.48) { - shape = "thumb"; + shape = 'thumb'; } else if (item.PrimaryImageAspectRatio >= 0.85 && item.PrimaryImageAspectRatio <= 1.34) { - shape = "square"; + shape = 'square'; } } - if ("thumb" == shape) { - elem.classList.add("thumbDetailImageContainer"); - elem.classList.remove("portraitDetailImageContainer"); - elem.classList.remove("squareDetailImageContainer"); - } else if ("square" == shape) { - elem.classList.remove("thumbDetailImageContainer"); - elem.classList.remove("portraitDetailImageContainer"); - elem.classList.add("squareDetailImageContainer"); + if ('thumb' == shape) { + elem.classList.add('thumbDetailImageContainer'); + elem.classList.remove('portraitDetailImageContainer'); + elem.classList.remove('squareDetailImageContainer'); + } else if ('square' == shape) { + elem.classList.remove('thumbDetailImageContainer'); + elem.classList.remove('portraitDetailImageContainer'); + elem.classList.add('squareDetailImageContainer'); } else { - elem.classList.remove("thumbDetailImageContainer"); - elem.classList.add("portraitDetailImageContainer"); - elem.classList.remove("squareDetailImageContainer"); + elem.classList.remove('thumbDetailImageContainer'); + elem.classList.add('portraitDetailImageContainer'); + elem.classList.remove('squareDetailImageContainer'); } if (url) { - imageLoader.lazyImage(elem.querySelector("img"), url); + imageLoader.lazyImage(elem.querySelector('img'), url); } } function renderImage(page, item, apiClient, user) { renderDetailImage( page, - page.querySelector(".detailImageContainer"), + page.querySelector('.detailImageContainer'), item, apiClient, - user.Policy.IsAdministrator && "Photo" != item.MediaType, + user.Policy.IsAdministrator && 'Photo' != item.MediaType, imageLoader, indicators ); } function refreshDetailImageUserData(elem, item) { - elem.querySelector(".detailImageProgressContainer").innerHTML = indicators.getProgressBarHtml(item); + elem.querySelector('.detailImageProgressContainer').innerHTML = indicators.getProgressBarHtml(item); } function refreshImage(page, item) { - refreshDetailImageUserData(page.querySelector(".detailImageContainer"), item); + refreshDetailImageUserData(page.querySelector('.detailImageContainer'), item); } function setPeopleHeader(page, item) { - if ("Audio" == item.MediaType || "MusicAlbum" == item.Type || "Book" == item.MediaType || "Photo" == item.MediaType) { - page.querySelector("#peopleHeader").innerHTML = globalize.translate("HeaderPeople"); + if ('Audio' == item.MediaType || 'MusicAlbum' == item.Type || 'Book' == item.MediaType || 'Photo' == item.MediaType) { + page.querySelector('#peopleHeader').innerHTML = globalize.translate('HeaderPeople'); } else { - page.querySelector("#peopleHeader").innerHTML = globalize.translate("HeaderCastAndCrew"); + page.querySelector('#peopleHeader').innerHTML = globalize.translate('HeaderCastAndCrew'); } } function renderNextUp(page, item, user) { - var section = page.querySelector(".nextUpSection"); + var section = page.querySelector('.nextUpSection'); - if ("Series" != item.Type) { - return void section.classList.add("hide"); + if ('Series' != item.Type) { + return void section.classList.add('hide'); } connectionManager.getApiClient(item.ServerId).getNextUpEpisodes({ @@ -901,93 +901,93 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti UserId: user.Id }).then(function (result) { if (result.Items.length) { - section.classList.remove("hide"); + section.classList.remove('hide'); } else { - section.classList.add("hide"); + section.classList.add('hide'); } var html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "overflowBackdrop", + shape: 'overflowBackdrop', showTitle: true, - displayAsSpecial: "Season" == item.Type && item.IndexNumber, + displayAsSpecial: 'Season' == item.Type && item.IndexNumber, overlayText: false, centerText: true, overlayPlayButton: true }); - var itemsContainer = section.querySelector(".nextUpItems"); + var itemsContainer = section.querySelector('.nextUpItems'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); }); } function setInitialCollapsibleState(page, item, apiClient, context, user) { - page.querySelector(".collectionItems").innerHTML = ""; + page.querySelector('.collectionItems').innerHTML = ''; - if ("Playlist" == item.Type) { - page.querySelector("#childrenCollapsible").classList.remove("hide"); + if ('Playlist' == item.Type) { + page.querySelector('#childrenCollapsible').classList.remove('hide'); renderPlaylistItems(page, item); - } else if ("Studio" == item.Type || "Person" == item.Type || "Genre" == item.Type || "MusicGenre" == item.Type || "MusicArtist" == item.Type) { - page.querySelector("#childrenCollapsible").classList.remove("hide"); + } else if ('Studio' == item.Type || 'Person' == item.Type || 'Genre' == item.Type || 'MusicGenre' == item.Type || 'MusicArtist' == item.Type) { + page.querySelector('#childrenCollapsible').classList.remove('hide'); renderItemsByName(page, item); } else if (item.IsFolder) { - if ("BoxSet" == item.Type) { - page.querySelector("#childrenCollapsible").classList.add("hide"); + if ('BoxSet' == item.Type) { + page.querySelector('#childrenCollapsible').classList.add('hide'); } renderChildren(page, item); } else { - page.querySelector("#childrenCollapsible").classList.add("hide"); + page.querySelector('#childrenCollapsible').classList.add('hide'); } - if ("Series" == item.Type) { + if ('Series' == item.Type) { renderSeriesSchedule(page, item); renderNextUp(page, item, user); } else { - page.querySelector(".nextUpSection").classList.add("hide"); + page.querySelector('.nextUpSection').classList.add('hide'); } renderScenes(page, item); - if (item.SpecialFeatureCount && 0 != item.SpecialFeatureCount && "Series" != item.Type) { - page.querySelector("#specialsCollapsible").classList.remove("hide"); + if (item.SpecialFeatureCount && 0 != item.SpecialFeatureCount && 'Series' != item.Type) { + page.querySelector('#specialsCollapsible').classList.remove('hide'); renderSpecials(page, item, user, 6); } else { - page.querySelector("#specialsCollapsible").classList.add("hide"); + page.querySelector('#specialsCollapsible').classList.add('hide'); } renderCast(page, item); if (item.PartCount && item.PartCount > 1) { - page.querySelector("#additionalPartsCollapsible").classList.remove("hide"); + page.querySelector('#additionalPartsCollapsible').classList.remove('hide'); renderAdditionalParts(page, item, user); } else { - page.querySelector("#additionalPartsCollapsible").classList.add("hide"); + page.querySelector('#additionalPartsCollapsible').classList.add('hide'); } - if ("MusicAlbum" == item.Type) { + if ('MusicAlbum' == item.Type) { renderMusicVideos(page, item, user); } else { - page.querySelector("#musicVideosCollapsible").classList.add("hide"); + page.querySelector('#musicVideosCollapsible').classList.add('hide'); } } function renderOverview(elems, item) { for (var i = 0, length = elems.length; i < length; i++) { var elem = elems[i]; - var overview = item.Overview || ""; + var overview = item.Overview || ''; if (overview) { elem.innerHTML = overview; - elem.classList.remove("hide"); - var anchors = elem.querySelectorAll("a"); + elem.classList.remove('hide'); + var anchors = elem.querySelectorAll('a'); for (var j = 0, length2 = anchors.length; j < length2; j++) { - anchors[j].setAttribute("target", "_blank"); + anchors[j].setAttribute('target', '_blank'); } } else { - elem.innerHTML = ""; - elem.classList.add("hide"); + elem.innerHTML = ''; + elem.classList.add('hide'); } } } @@ -998,12 +998,12 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti var genres = item.GenreItems || []; switch (context) { - case "music": - type = "MusicGenre"; + case 'music': + type = 'MusicGenre'; break; default: - type = "Genre"; + type = 'Genre'; } var html = genres.map(function (p) { @@ -1014,47 +1014,47 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti Id: p.Id }, { context: context - }) + '">' + p.Name + ""; - }).join(", "); + }) + '">' + p.Name + ''; + }).join(', '); - var genresLabel = page.querySelector(".genresLabel"); - genresLabel.innerHTML = globalize.translate(genres.length > 1 ? "Genres" : "Genre"); - var genresValue = page.querySelector(".genres"); + var genresLabel = page.querySelector('.genresLabel'); + genresLabel.innerHTML = globalize.translate(genres.length > 1 ? 'Genres' : 'Genre'); + var genresValue = page.querySelector('.genres'); genresValue.innerHTML = html; - var genresGroup = page.querySelector(".genresGroup"); + var genresGroup = page.querySelector('.genresGroup'); if (genres.length) { - genresGroup.classList.remove("hide"); + genresGroup.classList.remove('hide'); } else { - genresGroup.classList.add("hide"); + genresGroup.classList.add('hide'); } } function renderDirector(page, item, context) { var directors = (item.People || []).filter(function (p) { - return "Director" === p.Type; + return 'Director' === p.Type; }); var html = directors.map(function (p) { return '' + p.Name + ""; - }).join(", "); + }) + '">' + p.Name + ''; + }).join(', '); - var directorsLabel = page.querySelector(".directorsLabel"); - directorsLabel.innerHTML = globalize.translate(directors.length > 1 ? "Directors" : "Director"); - var directorsValue = page.querySelector(".directors"); + var directorsLabel = page.querySelector('.directorsLabel'); + directorsLabel.innerHTML = globalize.translate(directors.length > 1 ? 'Directors' : 'Director'); + var directorsValue = page.querySelector('.directors'); directorsValue.innerHTML = html; - var directorsGroup = page.querySelector(".directorsGroup"); + var directorsGroup = page.querySelector('.directorsGroup'); if (directors.length) { - directorsGroup.classList.remove("hide"); + directorsGroup.classList.remove('hide'); } else { - directorsGroup.classList.add("hide"); + directorsGroup.classList.add('hide'); } } @@ -1065,22 +1065,22 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti renderDirector(page, item, context); renderGenres(page, item, context); renderChannelGuide(page, apiClient, item); - var taglineElement = page.querySelector(".tagline"); + var taglineElement = page.querySelector('.tagline'); if (item.Taglines && item.Taglines.length) { - taglineElement.classList.remove("hide"); + taglineElement.classList.remove('hide'); taglineElement.innerHTML = item.Taglines[0]; } else { - taglineElement.classList.add("hide"); + taglineElement.classList.add('hide'); } - var overview = page.querySelector(".overview"); - var externalLinksElem = page.querySelector(".itemExternalLinks"); + var overview = page.querySelector('.overview'); + var externalLinksElem = page.querySelector('.itemExternalLinks'); renderOverview([overview], item); var i; var itemMiscInfo; - itemMiscInfo = page.querySelectorAll(".itemMiscInfo-primary"); + itemMiscInfo = page.querySelectorAll('.itemMiscInfo-primary'); for (i = 0; i < itemMiscInfo.length; i++) { mediaInfo.fillPrimaryMediaInfo(itemMiscInfo[i], item, { @@ -1089,24 +1089,24 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti subtitles: false }); - if (itemMiscInfo[i].innerHTML && "SeriesTimer" !== item.Type) { - itemMiscInfo[i].classList.remove("hide"); + if (itemMiscInfo[i].innerHTML && 'SeriesTimer' !== item.Type) { + itemMiscInfo[i].classList.remove('hide'); } else { - itemMiscInfo[i].classList.add("hide"); + itemMiscInfo[i].classList.add('hide'); } } - itemMiscInfo = page.querySelectorAll(".itemMiscInfo-secondary"); + itemMiscInfo = page.querySelectorAll('.itemMiscInfo-secondary'); for (i = 0; i < itemMiscInfo.length; i++) { mediaInfo.fillSecondaryMediaInfo(itemMiscInfo[i], item, { interactive: true }); - if (itemMiscInfo[i].innerHTML && "SeriesTimer" !== item.Type) { - itemMiscInfo[i].classList.remove("hide"); + if (itemMiscInfo[i].innerHTML && 'SeriesTimer' !== item.Type) { + itemMiscInfo[i].classList.remove('hide'); } else { - itemMiscInfo[i].classList.add("hide"); + itemMiscInfo[i].classList.add('hide'); } } @@ -1125,7 +1125,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti scrollX = enableScrollX(); } - return scrollX ? "overflowPortrait" : "portrait"; + return scrollX ? 'overflowPortrait' : 'portrait'; } function getSquareShape(scrollX) { @@ -1133,35 +1133,35 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti scrollX = enableScrollX(); } - return scrollX ? "overflowSquare" : "square"; + return scrollX ? 'overflowSquare' : 'square'; } function renderMoreFromSeason(view, item, apiClient) { - var section = view.querySelector(".moreFromSeasonSection"); + var section = view.querySelector('.moreFromSeasonSection'); if (section) { - if ("Episode" !== item.Type || !item.SeasonId || !item.SeriesId) { - return void section.classList.add("hide"); + if ('Episode' !== item.Type || !item.SeasonId || !item.SeriesId) { + return void section.classList.add('hide'); } var userId = apiClient.getCurrentUserId(); apiClient.getEpisodes(item.SeriesId, { SeasonId: item.SeasonId, UserId: userId, - Fields: "ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete,MediaSourceCount" + Fields: 'ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete,MediaSourceCount' }).then(function (result) { if (result.Items.length < 2) { - return void section.classList.add("hide"); + return void section.classList.add('hide'); } - section.classList.remove("hide"); - section.querySelector("h2").innerHTML = globalize.translate("MoreFromValue", item.SeasonName); - var itemsContainer = section.querySelector(".itemsContainer"); + section.classList.remove('hide'); + section.querySelector('h2').innerHTML = globalize.translate('MoreFromValue', item.SeasonName); + var itemsContainer = section.querySelector('.itemsContainer'); cardBuilder.buildCards(result.Items, { parentContainer: section, itemsContainer: itemsContainer, - shape: "autooverflow", - sectionTitleTagName: "h2", + shape: 'autooverflow', + sectionTitleTagName: 'h2', scalable: true, showTitle: true, overlayText: false, @@ -1173,7 +1173,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if (card) { setTimeout(function () { - section.querySelector(".emby-scroller").toStart(card.previousSibling || card, true); + section.querySelector('.emby-scroller').toStart(card.previousSibling || card, true); }, 100); } }); @@ -1181,28 +1181,28 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function renderMoreFromArtist(view, item, apiClient) { - var section = view.querySelector(".moreFromArtistSection"); + var section = view.querySelector('.moreFromArtistSection'); if (section) { - if ("MusicArtist" === item.Type) { - if (!apiClient.isMinServerVersion("3.4.1.19")) { - return void section.classList.add("hide"); + if ('MusicArtist' === item.Type) { + if (!apiClient.isMinServerVersion('3.4.1.19')) { + return void section.classList.add('hide'); } - } else if ("MusicAlbum" !== item.Type || !item.AlbumArtists || !item.AlbumArtists.length) { - return void section.classList.add("hide"); + } else if ('MusicAlbum' !== item.Type || !item.AlbumArtists || !item.AlbumArtists.length) { + return void section.classList.add('hide'); } var query = { - IncludeItemTypes: "MusicAlbum", + IncludeItemTypes: 'MusicAlbum', Recursive: true, ExcludeItemIds: item.Id, - SortBy: "ProductionYear,SortName", - SortOrder: "Descending" + SortBy: 'ProductionYear,SortName', + SortOrder: 'Descending' }; - if ("MusicArtist" === item.Type) { + if ('MusicArtist' === item.Type) { query.ContributingArtistIds = item.Id; - } else if (apiClient.isMinServerVersion("3.4.1.18")) { + } else if (apiClient.isMinServerVersion('3.4.1.18')) { query.AlbumArtistIds = item.AlbumArtists[0].Id; } else { query.ArtistIds = item.AlbumArtists[0].Id; @@ -1210,24 +1210,24 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti apiClient.getItems(apiClient.getCurrentUserId(), query).then(function (result) { if (!result.Items.length) { - return void section.classList.add("hide"); + return void section.classList.add('hide'); } - section.classList.remove("hide"); + section.classList.remove('hide'); - if ("MusicArtist" === item.Type) { - section.querySelector("h2").innerHTML = globalize.translate("HeaderAppearsOn"); + if ('MusicArtist' === item.Type) { + section.querySelector('h2').innerHTML = globalize.translate('HeaderAppearsOn'); } else { - section.querySelector("h2").innerHTML = globalize.translate("MoreFromValue", item.AlbumArtists[0].Name); + section.querySelector('h2').innerHTML = globalize.translate('MoreFromValue', item.AlbumArtists[0].Name); } cardBuilder.buildCards(result.Items, { parentContainer: section, - itemsContainer: section.querySelector(".itemsContainer"), - shape: "autooverflow", - sectionTitleTagName: "h2", + itemsContainer: section.querySelector('.itemsContainer'), + shape: 'autooverflow', + sectionTitleTagName: 'h2', scalable: true, - coverImage: "MusicArtist" === item.Type || "MusicAlbum" === item.Type, + coverImage: 'MusicArtist' === item.Type || 'MusicAlbum' === item.Type, showTitle: true, showParentTitle: false, centerText: true, @@ -1240,47 +1240,47 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function renderSimilarItems(page, item, context) { - var similarCollapsible = page.querySelector("#similarCollapsible"); + var similarCollapsible = page.querySelector('#similarCollapsible'); if (similarCollapsible) { - if ("Movie" != item.Type && "Trailer" != item.Type && "Series" != item.Type && "Program" != item.Type && "Recording" != item.Type && "MusicAlbum" != item.Type && "MusicArtist" != item.Type && "Playlist" != item.Type) { - return void similarCollapsible.classList.add("hide"); + if ('Movie' != item.Type && 'Trailer' != item.Type && 'Series' != item.Type && 'Program' != item.Type && 'Recording' != item.Type && 'MusicAlbum' != item.Type && 'MusicArtist' != item.Type && 'Playlist' != item.Type) { + return void similarCollapsible.classList.add('hide'); } - similarCollapsible.classList.remove("hide"); + similarCollapsible.classList.remove('hide'); var apiClient = connectionManager.getApiClient(item.ServerId); var options = { userId: apiClient.getCurrentUserId(), limit: 12, - fields: "PrimaryImageAspectRatio,UserData,CanDelete" + fields: 'PrimaryImageAspectRatio,UserData,CanDelete' }; - if ("MusicAlbum" == item.Type && item.AlbumArtists && item.AlbumArtists.length) { + if ('MusicAlbum' == item.Type && item.AlbumArtists && item.AlbumArtists.length) { options.ExcludeArtistIds = item.AlbumArtists[0].Id; } apiClient.getSimilarItems(item.Id, options).then(function (result) { if (!result.Items.length) { - return void similarCollapsible.classList.add("hide"); + return void similarCollapsible.classList.add('hide'); } - similarCollapsible.classList.remove("hide"); - var html = ""; + similarCollapsible.classList.remove('hide'); + var html = ''; html += cardBuilder.getCardsHtml({ items: result.Items, - shape: "autooverflow", - showParentTitle: "MusicAlbum" == item.Type, + shape: 'autooverflow', + showParentTitle: 'MusicAlbum' == item.Type, centerText: true, showTitle: true, context: context, lazy: true, showDetailsMenu: true, - coverImage: "MusicAlbum" == item.Type || "MusicArtist" == item.Type, + coverImage: 'MusicAlbum' == item.Type || 'MusicArtist' == item.Type, overlayPlayButton: true, overlayText: false, - showYear: "Movie" === item.Type || "Trailer" === item.Type || "Series" === item.Type + showYear: 'Movie' === item.Type || 'Trailer' === item.Type || 'Series' === item.Type }); - var similarContent = similarCollapsible.querySelector(".similarContent"); + var similarContent = similarCollapsible.querySelector('.similarContent'); similarContent.innerHTML = html; imageLoader.lazyChildren(similarContent); }); @@ -1288,52 +1288,52 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function renderSeriesAirTime(page, item, isStatic) { - var seriesAirTime = page.querySelector("#seriesAirTime"); - if ("Series" != item.Type) { - seriesAirTime.classList.add("hide"); + var seriesAirTime = page.querySelector('#seriesAirTime'); + if ('Series' != item.Type) { + seriesAirTime.classList.add('hide'); return; } - var html = ""; + var html = ''; if (item.AirDays && item.AirDays.length) { if (7 == item.AirDays.length) { - html += "daily"; + html += 'daily'; } else { html += item.AirDays.map(function (a) { - return a + "s"; - }).join(","); + return a + 's'; + }).join(','); } } if (item.AirTime) { - html += " at " + item.AirTime; + html += ' at ' + item.AirTime; } if (item.Studios.length) { if (isStatic) { - html += " on " + item.Studios[0].Name; + html += ' on ' + item.Studios[0].Name; } else { var context = inferContext(item); var href = appRouter.getRouteUrl(item.Studios[0], { context: context, - itemType: "Studio", + itemType: 'Studio', serverId: item.ServerId }); - html += ' on ' + item.Studios[0].Name + ""; + html += ' on ' + item.Studios[0].Name + ''; } } if (html) { - html = ("Ended" == item.Status ? "Aired " : "Airs ") + html; + html = ('Ended' == item.Status ? 'Aired ' : 'Airs ') + html; seriesAirTime.innerHTML = html; - seriesAirTime.classList.remove("hide"); + seriesAirTime.classList.remove('hide'); } else { - seriesAirTime.classList.add("hide"); + seriesAirTime.classList.add('hide'); } } function renderTags(page, item) { - var itemTags = page.querySelector(".itemTags"); + var itemTags = page.querySelector('.itemTags'); var tagElements = []; var tags = item.Tags || []; - if ("Program" === item.Type) { + if ('Program' === item.Type) { tags = []; } @@ -1342,93 +1342,93 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } if (tagElements.length) { - itemTags.innerHTML = globalize.translate("TagsValue", tagElements.join(", ")); - itemTags.classList.remove("hide"); + itemTags.innerHTML = globalize.translate('TagsValue', tagElements.join(', ')); + itemTags.classList.remove('hide'); } else { - itemTags.innerHTML = ""; - itemTags.classList.add("hide"); + itemTags.innerHTML = ''; + itemTags.classList.add('hide'); } } function renderChildren(page, item) { - var fields = "ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete,MediaSourceCount"; + var fields = 'ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete,MediaSourceCount'; var query = { ParentId: item.Id, Fields: fields }; - if ("BoxSet" !== item.Type) { - query.SortBy = "SortName"; + if ('BoxSet' !== item.Type) { + query.SortBy = 'SortName'; } var promise; var apiClient = connectionManager.getApiClient(item.ServerId); var userId = apiClient.getCurrentUserId(); - if ("Series" == item.Type) { + if ('Series' == item.Type) { promise = apiClient.getSeasons(item.Id, { userId: userId, Fields: fields }); - } else if ("Season" == item.Type) { - fields += ",Overview"; + } else if ('Season' == item.Type) { + fields += ',Overview'; promise = apiClient.getEpisodes(item.SeriesId, { seasonId: item.Id, userId: userId, Fields: fields }); - } else if ("MusicArtist" == item.Type) { - query.SortBy = "ProductionYear,SortName"; + } else if ('MusicArtist' == item.Type) { + query.SortBy = 'ProductionYear,SortName'; } promise = promise || apiClient.getItems(apiClient.getCurrentUserId(), query); promise.then(function (result) { - var html = ""; + var html = ''; var scrollX = false; var isList = false; - var childrenItemsContainer = page.querySelector(".childrenItemsContainer"); + var childrenItemsContainer = page.querySelector('.childrenItemsContainer'); - if ("MusicAlbum" == item.Type) { + if ('MusicAlbum' == item.Type) { html = listView.getListViewHtml({ items: result.Items, smallIcon: true, showIndex: true, - index: "disc", + index: 'disc', showIndexNumberLeft: true, playFromHere: true, - action: "playallfromhere", + action: 'playallfromhere', image: false, - artist: "auto", + artist: 'auto', containerAlbumArtists: item.AlbumArtists, addToListButton: true }); isList = true; - } else if ("Series" == item.Type) { + } else if ('Series' == item.Type) { scrollX = enableScrollX(); html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "overflowPortrait", + shape: 'overflowPortrait', showTitle: true, centerText: true, lazy: true, overlayPlayButton: true, allowBottomPadding: !scrollX }); - } else if ("Season" == item.Type || "Episode" == item.Type) { - if ("Episode" !== item.Type) { + } else if ('Season' == item.Type || 'Episode' == item.Type) { + if ('Episode' !== item.Type) { isList = true; } - scrollX = "Episode" == item.Type; - if (result.Items.length < 2 && "Episode" === item.Type) { + scrollX = 'Episode' == item.Type; + if (result.Items.length < 2 && 'Episode' === item.Type) { return; } - if ("Episode" === item.Type) { + if ('Episode' === item.Type) { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "overflowBackdrop", + shape: 'overflowBackdrop', showTitle: true, - displayAsSpecial: "Season" == item.Type && item.IndexNumber, + displayAsSpecial: 'Season' == item.Type && item.IndexNumber, playFromHere: true, overlayText: true, lazy: true, @@ -1437,15 +1437,15 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti allowBottomPadding: !scrollX, includeParentInfoInTitle: false }); - } else if ("Season" === item.Type) { + } else if ('Season' === item.Type) { html = listView.getListViewHtml({ items: result.Items, showIndexNumber: false, enableOverview: true, - imageSize: "large", + imageSize: 'large', enableSideMediaInfo: false, highlight: false, - action: layoutManager.tv ? "resume" : "none", + action: layoutManager.tv ? 'resume' : 'none', infoButton: true, imagePlayButton: true, includeParentInfoInTitle: false @@ -1453,78 +1453,78 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } } - if ("BoxSet" !== item.Type) { - page.querySelector("#childrenCollapsible").classList.remove("hide"); + if ('BoxSet' !== item.Type) { + page.querySelector('#childrenCollapsible').classList.remove('hide'); } if (scrollX) { - childrenItemsContainer.classList.add("scrollX"); - childrenItemsContainer.classList.add("hiddenScrollX"); - childrenItemsContainer.classList.remove("vertical-wrap"); - childrenItemsContainer.classList.remove("vertical-list"); + childrenItemsContainer.classList.add('scrollX'); + childrenItemsContainer.classList.add('hiddenScrollX'); + childrenItemsContainer.classList.remove('vertical-wrap'); + childrenItemsContainer.classList.remove('vertical-list'); } else { - childrenItemsContainer.classList.remove("scrollX"); - childrenItemsContainer.classList.remove("hiddenScrollX"); - childrenItemsContainer.classList.remove("smoothScrollX"); + childrenItemsContainer.classList.remove('scrollX'); + childrenItemsContainer.classList.remove('hiddenScrollX'); + childrenItemsContainer.classList.remove('smoothScrollX'); if (isList) { - childrenItemsContainer.classList.add("vertical-list"); - childrenItemsContainer.classList.remove("vertical-wrap"); + childrenItemsContainer.classList.add('vertical-list'); + childrenItemsContainer.classList.remove('vertical-wrap'); } else { - childrenItemsContainer.classList.add("vertical-wrap"); - childrenItemsContainer.classList.remove("vertical-list"); + childrenItemsContainer.classList.add('vertical-wrap'); + childrenItemsContainer.classList.remove('vertical-list'); } } childrenItemsContainer.innerHTML = html; imageLoader.lazyChildren(childrenItemsContainer); - if ("BoxSet" == item.Type) { + if ('BoxSet' == item.Type) { var collectionItemTypes = [{ - name: globalize.translate("HeaderVideos"), - mediaType: "Video" + name: globalize.translate('HeaderVideos'), + mediaType: 'Video' }, { - name: globalize.translate("HeaderSeries"), - type: "Series" + name: globalize.translate('HeaderSeries'), + type: 'Series' }, { - name: globalize.translate("HeaderAlbums"), - type: "MusicAlbum" + name: globalize.translate('HeaderAlbums'), + type: 'MusicAlbum' }, { - name: globalize.translate("HeaderBooks"), - type: "Book" + name: globalize.translate('HeaderBooks'), + type: 'Book' }]; renderCollectionItems(page, item, collectionItemTypes, result.Items); } }); - if ("Season" == item.Type) { - page.querySelector("#childrenTitle").innerHTML = globalize.translate("HeaderEpisodes"); - } else if ("Series" == item.Type) { - page.querySelector("#childrenTitle").innerHTML = globalize.translate("HeaderSeasons"); - } else if ("MusicAlbum" == item.Type) { - page.querySelector("#childrenTitle").innerHTML = globalize.translate("HeaderTracks"); + if ('Season' == item.Type) { + page.querySelector('#childrenTitle').innerHTML = globalize.translate('HeaderEpisodes'); + } else if ('Series' == item.Type) { + page.querySelector('#childrenTitle').innerHTML = globalize.translate('HeaderSeasons'); + } else if ('MusicAlbum' == item.Type) { + page.querySelector('#childrenTitle').innerHTML = globalize.translate('HeaderTracks'); } else { - page.querySelector("#childrenTitle").innerHTML = globalize.translate("HeaderItems"); + page.querySelector('#childrenTitle').innerHTML = globalize.translate('HeaderItems'); } - if ("MusicAlbum" == item.Type || "Season" == item.Type) { - page.querySelector(".childrenSectionHeader").classList.add("hide"); - page.querySelector("#childrenCollapsible").classList.add("verticalSection-extrabottompadding"); + if ('MusicAlbum' == item.Type || 'Season' == item.Type) { + page.querySelector('.childrenSectionHeader').classList.add('hide'); + page.querySelector('#childrenCollapsible').classList.add('verticalSection-extrabottompadding'); } else { - page.querySelector(".childrenSectionHeader").classList.remove("hide"); + page.querySelector('.childrenSectionHeader').classList.remove('hide'); } } function renderItemsByName(page, item) { - require("scripts/itembynamedetailpage".split(","), function () { + require('scripts/itembynamedetailpage'.split(','), function () { window.ItemsByName.renderItems(page, item); }); } function renderPlaylistItems(page, item) { - require("scripts/playlistedit".split(","), function () { + require('scripts/playlistedit'.split(','), function () { PlaylistViewer.render(page, item); }); } function renderProgramsForChannel(page, result) { - var html = ""; + var html = ''; var currentItems = []; var currentStartDate = null; @@ -1536,10 +1536,10 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if (currentItems.length) { html += '
'; html += '

' + datetime.toLocaleDateString(currentStartDate, { - weekday: "long", - month: "long", - day: "numeric" - }) + "

"; + weekday: 'long', + month: 'long', + day: 'numeric' + }) + ''; html += '
' + listView.getListViewHtml({ items: currentItems, enableUserDataButtons: false, @@ -1548,7 +1548,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti showProgramTime: true, mediaInfo: false, parentTitleWithTitle: true - }) + "
"; + }) + ''; } currentStartDate = itemStartDate; @@ -1561,10 +1561,10 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if (currentItems.length) { html += '
'; html += '

' + datetime.toLocaleDateString(currentStartDate, { - weekday: "long", - month: "long", - day: "numeric" - }) + "

"; + weekday: 'long', + month: 'long', + day: 'numeric' + }) + ''; html += '
' + listView.getListViewHtml({ items: currentItems, enableUserDataButtons: false, @@ -1573,20 +1573,20 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti showProgramTime: true, mediaInfo: false, parentTitleWithTitle: true - }) + "
"; + }) + ''; } - page.querySelector(".programGuide").innerHTML = html; + page.querySelector('.programGuide').innerHTML = html; } function renderChannelGuide(page, apiClient, item) { - if ("TvChannel" === item.Type) { - page.querySelector(".programGuideSection").classList.remove("hide"); + if ('TvChannel' === item.Type) { + page.querySelector('.programGuideSection').classList.remove('hide'); apiClient.getLiveTvPrograms({ ChannelIds: item.Id, UserId: apiClient.getCurrentUserId(), HasAired: false, - SortBy: "StartDate", + SortBy: 'StartDate', EnableTotalRecordCount: false, EnableImages: false, ImageTypeLimit: 0, @@ -1602,7 +1602,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti apiClient.getLiveTvPrograms({ UserId: apiClient.getCurrentUserId(), HasAired: false, - SortBy: "StartDate", + SortBy: 'StartDate', EnableTotalRecordCount: false, EnableImages: false, ImageTypeLimit: 0, @@ -1611,12 +1611,12 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti LibrarySeriesId: item.Id }).then(function (result) { if (result.Items.length) { - page.querySelector("#seriesScheduleSection").classList.remove("hide"); + page.querySelector('#seriesScheduleSection').classList.remove('hide'); } else { - page.querySelector("#seriesScheduleSection").classList.add("hide"); + page.querySelector('#seriesScheduleSection').classList.add('hide'); } - page.querySelector("#seriesScheduleList").innerHTML = listView.getListViewHtml({ + page.querySelector('#seriesScheduleList').innerHTML = listView.getListViewHtml({ items: result.Items, enableUserDataButtons: false, showParentTitle: false, @@ -1625,27 +1625,27 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti mediaInfo: false, showTitle: true, moreButton: false, - action: "programdialog" + action: 'programdialog' }); loading.hide(); }); } function inferContext(item) { - if ("Movie" === item.Type || "BoxSet" === item.Type) { - return "movies"; + if ('Movie' === item.Type || 'BoxSet' === item.Type) { + return 'movies'; } - if ("Series" === item.Type || "Season" === item.Type || "Episode" === item.Type) { - return "tvshows"; + if ('Series' === item.Type || 'Season' === item.Type || 'Episode' === item.Type) { + return 'tvshows'; } - if ("MusicArtist" === item.Type || "MusicAlbum" === item.Type || "Audio" === item.Type || "AudioBook" === item.Type) { - return "music"; + if ('MusicArtist' === item.Type || 'MusicAlbum' === item.Type || 'Audio' === item.Type || 'AudioBook' === item.Type) { + return 'music'; } - if ("Program" === item.Type) { - return "livetv"; + if ('Program' === item.Type) { + return 'livetv'; } return null; @@ -1674,7 +1674,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function renderCollectionItems(page, parentItem, types, items) { - page.querySelector(".collectionItems").innerHTML = ""; + page.querySelector('.collectionItems').innerHTML = ''; var i; var length; @@ -1688,7 +1688,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } var otherType = { - name: globalize.translate("HeaderOtherItems") + name: globalize.translate('HeaderOtherItems') }; var otherTypeItems = items.filter(function (curr) { return !types.filter(function (t) { @@ -1702,11 +1702,11 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti if (!items.length) { renderCollectionItemType(page, parentItem, { - name: globalize.translate("HeaderItems") + name: globalize.translate('HeaderItems') }, items); } - var containers = page.querySelectorAll(".collectionItemsContainer"); + var containers = page.querySelectorAll('.collectionItemsContainer'); var notifyRefreshNeeded = function () { renderChildren(page, parentItem); @@ -1718,33 +1718,33 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti // if nothing in the collection can be played hide play and shuffle buttons if (!canPlaySomeItemInCollection(items)) { - hideAll(page, "btnPlay", false); - hideAll(page, "btnShuffle", false); + 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) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(page); }); } function renderCollectionItemType(page, parentItem, type, items) { - var html = ""; + var html = ''; html += '
'; html += '
'; html += '

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

"; + html += '' + type.name + ''; + html += ''; html += ''; - html += "
"; + html += '
'; html += '
'; - var shape = "MusicAlbum" == type.type ? getSquareShape(false) : getPortraitShape(false); + var shape = 'MusicAlbum' == type.type ? getSquareShape(false) : getPortraitShape(false); html += cardBuilder.getCardsHtml({ items: items, shape: shape, showTitle: true, - showYear: "Video" === type.mediaType || "Series" === type.type, + showYear: 'Video' === type.mediaType || 'Series' === type.type, centerText: true, lazy: true, showDetailsMenu: true, @@ -1753,16 +1753,16 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti showRemoveFromCollection: true, collectionId: parentItem.Id }); - html += "
"; - html += ""; - var collectionItems = page.querySelector(".collectionItems"); - collectionItems.insertAdjacentHTML("beforeend", html); + html += ''; + html += ''; + var collectionItems = page.querySelector('.collectionItems'); + collectionItems.insertAdjacentHTML('beforeend', html); imageLoader.lazyChildren(collectionItems); - collectionItems.querySelector(".btnAddToCollection").addEventListener("click", function () { - require(["alert"], function (alert) { + collectionItems.querySelector('.btnAddToCollection').addEventListener('click', function () { + require(['alert'], function (alert) { alert({ - text: globalize.translate("AddItemToCollectionHelp"), - html: globalize.translate("AddItemToCollectionHelp") + '

' + globalize.translate("ButtonLearnMore") + "" + text: globalize.translate('AddItemToCollectionHelp'), + html: globalize.translate('AddItemToCollectionHelp') + '

' + globalize.translate('ButtonLearnMore') + '' }); }); }); @@ -1770,20 +1770,20 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function renderMusicVideos(page, item, user) { connectionManager.getApiClient(item.ServerId).getItems(user.Id, { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "MusicVideo", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'MusicVideo', Recursive: true, - Fields: "PrimaryImageAspectRatio,BasicSyncInfo,CanDelete,MediaSourceCount", + Fields: 'PrimaryImageAspectRatio,BasicSyncInfo,CanDelete,MediaSourceCount', AlbumIds: item.Id }).then(function (result) { if (result.Items.length) { - page.querySelector("#musicVideosCollapsible").classList.remove("hide"); - var musicVideosContent = page.querySelector(".musicVideosContent"); + page.querySelector('#musicVideosCollapsible').classList.remove('hide'); + var musicVideosContent = page.querySelector('.musicVideosContent'); musicVideosContent.innerHTML = getVideosHtml(result.Items, user); imageLoader.lazyChildren(musicVideosContent); } else { - page.querySelector("#musicVideosCollapsible").classList.add("hide"); + page.querySelector('#musicVideosCollapsible').classList.add('hide'); } }); } @@ -1791,12 +1791,12 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function renderAdditionalParts(page, item, user) { connectionManager.getApiClient(item.ServerId).getAdditionalVideoParts(user.Id, item.Id).then(function (result) { if (result.Items.length) { - page.querySelector("#additionalPartsCollapsible").classList.remove("hide"); - var additionalPartsContent = page.querySelector("#additionalPartsContent"); + page.querySelector('#additionalPartsCollapsible').classList.remove('hide'); + var additionalPartsContent = page.querySelector('#additionalPartsContent'); additionalPartsContent.innerHTML = getVideosHtml(result.Items, user); imageLoader.lazyChildren(additionalPartsContent); } else { - page.querySelector("#additionalPartsCollapsible").classList.add("hide"); + page.querySelector('#additionalPartsCollapsible').classList.add('hide'); } }); } @@ -1805,34 +1805,34 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti var chapters = item.Chapters || []; if (chapters.length && !chapters[0].ImageTag && (chapters = []), chapters.length) { - page.querySelector("#scenesCollapsible").classList.remove("hide"); - var scenesContent = page.querySelector("#scenesContent"); + page.querySelector('#scenesCollapsible').classList.remove('hide'); + var scenesContent = page.querySelector('#scenesContent'); - require(["chaptercardbuilder"], function (chaptercardbuilder) { + require(['chaptercardbuilder'], function (chaptercardbuilder) { chaptercardbuilder.buildChapterCards(item, chapters, { itemsContainer: scenesContent, - backdropShape: "overflowBackdrop", - squareShape: "overflowSquare" + backdropShape: 'overflowBackdrop', + squareShape: 'overflowSquare' }); }); } else { - page.querySelector("#scenesCollapsible").classList.add("hide"); + page.querySelector('#scenesCollapsible').classList.add('hide'); } } function getVideosHtml(items, user, limit, moreButtonClass) { var html = cardBuilder.getCardsHtml({ items: items, - shape: "auto", + shape: 'auto', showTitle: true, - action: "play", + action: 'play', overlayText: false, centerText: true, showRuntime: true }); if (limit && items.length > limit) { - html += '

"; + html += '

'; } return html; @@ -1840,30 +1840,30 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function renderSpecials(page, item, user, limit) { connectionManager.getApiClient(item.ServerId).getSpecialFeatures(user.Id, item.Id).then(function (specials) { - var specialsContent = page.querySelector("#specialsContent"); - specialsContent.innerHTML = getVideosHtml(specials, user, limit, "moreSpecials"); + var specialsContent = page.querySelector('#specialsContent'); + specialsContent.innerHTML = getVideosHtml(specials, user, limit, 'moreSpecials'); imageLoader.lazyChildren(specialsContent); }); } function renderCast(page, item) { var people = (item.People || []).filter(function (p) { - return "Director" !== p.Type; + return 'Director' !== p.Type; }); if (!people.length) { - return void page.querySelector("#castCollapsible").classList.add("hide"); + return void page.querySelector('#castCollapsible').classList.add('hide'); } - page.querySelector("#castCollapsible").classList.remove("hide"); - var castContent = page.querySelector("#castContent"); + page.querySelector('#castCollapsible').classList.remove('hide'); + var castContent = page.querySelector('#castContent'); - require(["peoplecardbuilder"], function (peoplecardbuilder) { + require(['peoplecardbuilder'], function (peoplecardbuilder) { peoplecardbuilder.buildPeopleCards(people, { itemsContainer: castContent, coverImage: true, serverId: item.ServerId, - shape: "overflowPortrait" + shape: 'overflowPortrait' }); }); } @@ -1905,12 +1905,12 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function splitVersions(instance, page, apiClient, params) { - require(["confirm"], function (confirm) { - confirm("Are you sure you wish to split the media sources into separate items?", "Split Media Apart").then(function () { + require(['confirm'], function (confirm) { + confirm('Are you sure you wish to split the media sources into separate items?', 'Split Media Apart').then(function () { loading.show(); apiClient.ajax({ - type: "DELETE", - url: apiClient.getUrl("Videos/" + params.id + "/AlternateSources") + type: 'DELETE', + url: apiClient.getUrl('Videos/' + params.id + '/AlternateSources') }).then(function () { loading.hide(); reload(instance, page, params); @@ -1920,12 +1920,12 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function getPlayOptions(startPosition) { - var audioStreamIndex = view.querySelector(".selectAudio").value || null; + var audioStreamIndex = view.querySelector('.selectAudio').value || null; return { startPositionTicks: startPosition, - mediaSourceId: view.querySelector(".selectSource").value, + mediaSourceId: view.querySelector('.selectSource').value, audioStreamIndex: audioStreamIndex, - subtitleStreamIndex: view.querySelector(".selectSubtitles").value + subtitleStreamIndex: view.querySelector('.selectSubtitles').value }; } @@ -1942,7 +1942,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function playCurrentItem(button, mode) { var item = currentItem; - if ("Program" === item.Type) { + if ('Program' === item.Type) { var apiClient = connectionManager.getApiClient(item.ServerId); return void apiClient.getLiveTvChannel(item.ChannelId, apiClient.getCurrentUserId()).then(function (channel) { playbackManager.play({ @@ -1951,11 +1951,11 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti }); } - playItem(item, item.UserData && "resume" === mode ? item.UserData.PlaybackPositionTicks : 0); + playItem(item, item.UserData && 'resume' === mode ? item.UserData.PlaybackPositionTicks : 0); } function onPlayClick() { - playCurrentItem(this, this.getAttribute("data-mode")); + playCurrentItem(this, this.getAttribute('data-mode')); } function onInstantMixClick() { @@ -1967,7 +1967,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function onDeleteClick() { - require(["deleteHelper"], function (deleteHelper) { + require(['deleteHelper'], function (deleteHelper) { deleteHelper.deleteItem({ item: currentItem, navigate: true @@ -1976,15 +1976,15 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti } function onCancelSeriesTimerClick() { - require(["recordingHelper"], function (recordingHelper) { + require(['recordingHelper'], function (recordingHelper) { recordingHelper.cancelSeriesTimerWithConfirmation(currentItem.Id, currentItem.ServerId).then(function () { - Dashboard.navigate("livetv.html"); + Dashboard.navigate('livetv.html'); }); }); } function onCancelTimerClick() { - require(["recordingHelper"], function (recordingHelper) { + require(['recordingHelper'], function (recordingHelper) { recordingHelper.cancelTimer(connectionManager.getApiClient(currentItem.ServerId), currentItem.TimerId).then(function () { reload(self, view, params); }); @@ -2026,7 +2026,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function editImages() { return new Promise(function (resolve, reject) { - require(["imageEditor"], function (imageEditor) { + require(['imageEditor'], function (imageEditor) { imageEditor.show({ itemId: currentItem.Id, serverId: currentItem.ServerId @@ -2038,7 +2038,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti function onWebSocketMessage(e, data) { var msg = data; - if ("UserDataChanged" === msg.MessageType && currentItem && msg.Data.UserId == apiClient.getCurrentUserId()) { + if ('UserDataChanged' === msg.MessageType && currentItem && msg.Data.UserId == apiClient.getCurrentUserId()) { var key = currentItem.UserData.Key; var userData = msg.Data.UserDataList.filter(function (u) { return u.Key == key; @@ -2055,45 +2055,45 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti var currentItem; var self = this; var apiClient = params.serverId ? connectionManager.getApiClient(params.serverId) : ApiClient; - view.querySelectorAll(".btnPlay"); - bindAll(view, ".btnPlay", "click", onPlayClick); - bindAll(view, ".btnResume", "click", onPlayClick); - bindAll(view, ".btnInstantMix", "click", onInstantMixClick); - bindAll(view, ".btnShuffle", "click", onShuffleClick); - bindAll(view, ".btnPlayTrailer", "click", onPlayTrailerClick); - bindAll(view, ".btnCancelSeriesTimer", "click", onCancelSeriesTimerClick); - bindAll(view, ".btnCancelTimer", "click", onCancelTimerClick); - bindAll(view, ".btnDeleteItem", "click", onDeleteClick); - bindAll(view, ".btnDownload", "click", onDownloadClick); - view.querySelector(".trackSelections").addEventListener("submit", onTrackSelectionsSubmit); - view.querySelector(".btnSplitVersions").addEventListener("click", function () { + view.querySelectorAll('.btnPlay'); + bindAll(view, '.btnPlay', 'click', onPlayClick); + bindAll(view, '.btnResume', 'click', onPlayClick); + bindAll(view, '.btnInstantMix', 'click', onInstantMixClick); + bindAll(view, '.btnShuffle', 'click', onShuffleClick); + bindAll(view, '.btnPlayTrailer', 'click', onPlayTrailerClick); + bindAll(view, '.btnCancelSeriesTimer', 'click', onCancelSeriesTimerClick); + bindAll(view, '.btnCancelTimer', 'click', onCancelTimerClick); + bindAll(view, '.btnDeleteItem', 'click', onDeleteClick); + bindAll(view, '.btnDownload', 'click', onDownloadClick); + view.querySelector('.trackSelections').addEventListener('submit', onTrackSelectionsSubmit); + view.querySelector('.btnSplitVersions').addEventListener('click', function () { splitVersions(self, view, apiClient, params); }); - bindAll(view, ".btnMoreCommands", "click", onMoreCommandsClick); - view.querySelector(".selectSource").addEventListener("change", function () { + bindAll(view, '.btnMoreCommands', 'click', onMoreCommandsClick); + view.querySelector('.selectSource').addEventListener('change', function () { renderVideoSelections(view, self._currentPlaybackMediaSources); renderAudioSelections(view, self._currentPlaybackMediaSources); renderSubtitleSelections(view, self._currentPlaybackMediaSources); }); - view.addEventListener("click", function (e) { - if (dom.parentWithClass(e.target, "moreScenes")) { + view.addEventListener('click', function (e) { + if (dom.parentWithClass(e.target, 'moreScenes')) { renderScenes(view, currentItem); - } else if (dom.parentWithClass(e.target, "morePeople")) { + } else if (dom.parentWithClass(e.target, 'morePeople')) { renderCast(view, currentItem); - } else if (dom.parentWithClass(e.target, "moreSpecials")) { + } else if (dom.parentWithClass(e.target, 'moreSpecials')) { apiClient.getCurrentUser().then(function (user) { renderSpecials(view, currentItem, user); }); } }); - view.querySelector(".detailImageContainer").addEventListener("click", function (e) { - if (dom.parentWithClass(e.target, "itemDetailGalleryLink")) { + view.querySelector('.detailImageContainer').addEventListener('click', function (e) { + if (dom.parentWithClass(e.target, 'itemDetailGalleryLink')) { editImages().then(function () { reload(self, view, params); }); } }); - view.addEventListener("viewshow", function (e) { + view.addEventListener('viewshow', function (e) { var page = this; if (layoutManager.mobile) { @@ -2109,15 +2109,15 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti reload(self, page, params); } - events.on(apiClient, "message", onWebSocketMessage); - events.on(playbackManager, "playerchange", onPlayerChange); + events.on(apiClient, 'message', onWebSocketMessage); + events.on(playbackManager, 'playerchange', onPlayerChange); }); - view.addEventListener("viewbeforehide", function () { - events.off(apiClient, "message", onWebSocketMessage); - events.off(playbackManager, "playerchange", onPlayerChange); + view.addEventListener('viewbeforehide', function () { + events.off(apiClient, 'message', onWebSocketMessage); + events.off(playbackManager, 'playerchange', onPlayerChange); libraryMenu.setTransparentMenu(false); }); - view.addEventListener("viewdestroy", function () { + view.addEventListener('viewdestroy', function () { currentItem = null; self._currentPlaybackMediaSources = null; self.currentRecordingFields = null; diff --git a/src/controllers/list.js b/src/controllers/list.js index bcc38f27cf..cef6ceda6c 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -1,15 +1,15 @@ -define(["globalize", "listView", "layoutManager", "userSettings", "focusManager", "cardBuilder", "loading", "connectionManager", "alphaNumericShortcuts", "scroller", "playbackManager", "alphaPicker", "emby-itemscontainer", "emby-scroller"], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, scroller, playbackManager, alphaPicker) { - "use strict"; +define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager', 'cardBuilder', 'loading', 'connectionManager', 'alphaNumericShortcuts', 'scroller', 'playbackManager', 'alphaPicker', 'emby-itemscontainer', 'emby-scroller'], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, scroller, playbackManager, alphaPicker) { + 'use strict'; function getInitialLiveTvQuery(instance, params) { var query = { UserId: connectionManager.getApiClient(params.serverId).getCurrentUserId(), StartIndex: 0, - Fields: "ChannelInfo,PrimaryImageAspectRatio", + Fields: 'ChannelInfo,PrimaryImageAspectRatio', Limit: 300 }; - if ("Recordings" === params.type) { + if ('Recordings' === params.type) { query.IsInProgress = false; } else { query.HasAired = false; @@ -19,39 +19,39 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" query.GenreIds = params.genreId; } - if ("true" === params.IsMovie) { + if ('true' === params.IsMovie) { query.IsMovie = true; - } else if ("false" === params.IsMovie) { + } else if ('false' === params.IsMovie) { query.IsMovie = false; } - if ("true" === params.IsSeries) { + if ('true' === params.IsSeries) { query.IsSeries = true; - } else if ("false" === params.IsSeries) { + } else if ('false' === params.IsSeries) { query.IsSeries = false; } - if ("true" === params.IsNews) { + if ('true' === params.IsNews) { query.IsNews = true; - } else if ("false" === params.IsNews) { + } else if ('false' === params.IsNews) { query.IsNews = false; } - if ("true" === params.IsSports) { + if ('true' === params.IsSports) { query.IsSports = true; - } else if ("false" === params.IsSports) { + } else if ('false' === params.IsSports) { query.IsSports = false; } - if ("true" === params.IsKids) { + if ('true' === params.IsKids) { query.IsKids = true; - } else if ("false" === params.IsKids) { + } else if ('false' === params.IsKids) { query.IsKids = false; } - if ("true" === params.IsAiring) { + if ('true' === params.IsAiring) { query.IsAiring = true; - } else if ("false" === params.IsAiring) { + } else if ('false' === params.IsAiring) { query.IsAiring = false; } @@ -66,29 +66,29 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" query.SortOrder = sortValues.sortOrder; } - query.Fields = query.Fields ? query.Fields + ",PrimaryImageAspectRatio" : "PrimaryImageAspectRatio"; + query.Fields = query.Fields ? query.Fields + ',PrimaryImageAspectRatio' : 'PrimaryImageAspectRatio'; query.ImageTypeLimit = 1; var hasFilters; var queryFilters = []; var filters = instance.getFilters(); if (filters.IsPlayed) { - queryFilters.push("IsPlayed"); + queryFilters.push('IsPlayed'); hasFilters = true; } if (filters.IsUnplayed) { - queryFilters.push("IsUnplayed"); + queryFilters.push('IsUnplayed'); hasFilters = true; } if (filters.IsFavorite) { - queryFilters.push("IsFavorite"); + queryFilters.push('IsFavorite'); hasFilters = true; } if (filters.IsResumable) { - queryFilters.push("IsResumable"); + queryFilters.push('IsResumable'); hasFilters = true; } @@ -147,7 +147,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" hasFilters = true; } - query.Filters = queryFilters.length ? queryFilters.join(",") : null; + query.Filters = queryFilters.length ? queryFilters.join(',') : null; instance.setFilterStatus(hasFilters); if (instance.alphaPicker) { @@ -158,8 +158,8 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" } function setSortButtonIcon(btnSortIcon, icon) { - btnSortIcon.classList.remove("arrow_downward"); - btnSortIcon.classList.remove("arrow_upward"); + btnSortIcon.classList.remove('arrow_downward'); + btnSortIcon.classList.remove('arrow_upward'); btnSortIcon.classList.add(icon); } @@ -173,7 +173,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" for (var i = 0, length = options.length; i < length; i++) { if (sortBy === options[i].value) { - btnSortText.innerHTML = globalize.translate("SortByValue", options[i].name); + btnSortText.innerHTML = globalize.translate('SortByValue', options[i].name); break; } } @@ -181,18 +181,18 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" var btnSortIcon = instance.btnSortIcon; if (btnSortIcon) { - setSortButtonIcon(btnSortIcon, "Descending" === values.sortOrder ? "arrow_downward" : "arrow_upward"); + setSortButtonIcon(btnSortIcon, 'Descending' === values.sortOrder ? 'arrow_downward' : 'arrow_upward'); } } } function updateItemsContainerForViewType(instance) { - if ("list" === instance.getViewSettings().imageType) { - instance.itemsContainer.classList.remove("vertical-wrap"); - instance.itemsContainer.classList.add("vertical-list"); + if ('list' === instance.getViewSettings().imageType) { + instance.itemsContainer.classList.remove('vertical-wrap'); + instance.itemsContainer.classList.add('vertical-list'); } else { - instance.itemsContainer.classList.add("vertical-wrap"); - instance.itemsContainer.classList.remove("vertical-list"); + instance.itemsContainer.classList.add('vertical-wrap'); + instance.itemsContainer.classList.remove('vertical-list'); } } @@ -207,12 +207,12 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" numItems = 100; } - if ("SortName" === values.sortBy && "Ascending" === values.sortOrder && numItems > 40) { - alphaPicker.classList.remove("hide"); - instance.itemsContainer.parentNode.classList.add("padded-right-withalphapicker"); + if ('SortName' === values.sortBy && 'Ascending' === values.sortOrder && numItems > 40) { + alphaPicker.classList.remove('hide'); + instance.itemsContainer.parentNode.classList.add('padded-right-withalphapicker'); } else { - alphaPicker.classList.add("hide"); - instance.itemsContainer.parentNode.classList.remove("padded-right-withalphapicker"); + alphaPicker.classList.add('hide'); + instance.itemsContainer.parentNode.classList.remove('padded-right-withalphapicker'); } } } @@ -222,25 +222,25 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" var apiClient = connectionManager.getApiClient(params.serverId); instance.queryRecursive = false; - if ("Recordings" === params.type) { + if ('Recordings' === params.type) { return apiClient.getLiveTvRecordings(getInitialLiveTvQuery(instance, params)); } - if ("Programs" === params.type) { - if ("true" === params.IsAiring) { + if ('Programs' === params.type) { + if ('true' === params.IsAiring) { return apiClient.getLiveTvRecommendedPrograms(getInitialLiveTvQuery(instance, params)); } return apiClient.getLiveTvPrograms(getInitialLiveTvQuery(instance, params)); } - if ("nextup" === params.type) { + if ('nextup' === params.type) { return apiClient.getNextUpEpisodes(modifyQueryWithFilters(instance, { Limit: limit, - Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo', UserId: apiClient.getCurrentUserId(), ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Thumb", + EnableImageTypes: 'Primary,Backdrop,Thumb', EnableTotalRecordCount: false, SortBy: sortBy })); @@ -248,57 +248,57 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" if (!item) { instance.queryRecursive = true; - var method = "getItems"; + var method = 'getItems'; - if ("MusicArtist" === params.type) { - method = "getArtists"; - } else if ("Person" === params.type) { - method = "getPeople"; + if ('MusicArtist' === params.type) { + method = 'getArtists'; + } else if ('Person' === params.type) { + method = 'getPeople'; } return apiClient[method](apiClient.getCurrentUserId(), modifyQueryWithFilters(instance, { StartIndex: startIndex, Limit: limit, - Fields: "PrimaryImageAspectRatio,SortName", + Fields: 'PrimaryImageAspectRatio,SortName', ImageTypeLimit: 1, - IncludeItemTypes: "MusicArtist" === params.type || "Person" === params.type ? null : params.type, + IncludeItemTypes: 'MusicArtist' === params.type || 'Person' === params.type ? null : params.type, Recursive: true, - IsFavorite: "true" === params.IsFavorite || null, + IsFavorite: 'true' === params.IsFavorite || null, ArtistIds: params.artistId || null, SortBy: sortBy })); } - if ("Genre" === item.Type || "MusicGenre" === item.Type || "Studio" === item.Type || "Person" === item.Type) { + if ('Genre' === item.Type || 'MusicGenre' === item.Type || 'Studio' === item.Type || 'Person' === item.Type) { instance.queryRecursive = true; var query = { StartIndex: startIndex, Limit: limit, - Fields: "PrimaryImageAspectRatio,SortName", + Fields: 'PrimaryImageAspectRatio,SortName', Recursive: true, parentId: params.parentId, SortBy: sortBy }; - if ("Studio" === item.Type) { + if ('Studio' === item.Type) { query.StudioIds = item.Id; - } else if ("Genre" === item.Type || "MusicGenre" === item.Type) { + } else if ('Genre' === item.Type || 'MusicGenre' === item.Type) { query.GenreIds = item.Id; - } else if ("Person" === item.Type) { + } else if ('Person' === item.Type) { query.PersonIds = item.Id; } - if ("MusicGenre" === item.Type) { - query.IncludeItemTypes = "MusicAlbum"; - } else if ("GameGenre" === item.Type) { - query.IncludeItemTypes = "Game"; - } else if ("movies" === item.CollectionType) { - query.IncludeItemTypes = "Movie"; - } else if ("tvshows" === item.CollectionType) { - query.IncludeItemTypes = "Series"; - } else if ("Genre" === item.Type) { - query.IncludeItemTypes = "Movie,Series,Video"; - } else if ("Person" === item.Type) { + if ('MusicGenre' === item.Type) { + query.IncludeItemTypes = 'MusicAlbum'; + } else if ('GameGenre' === item.Type) { + query.IncludeItemTypes = 'Game'; + } else if ('movies' === item.CollectionType) { + query.IncludeItemTypes = 'Movie'; + } else if ('tvshows' === item.CollectionType) { + query.IncludeItemTypes = 'Series'; + } else if ('Genre' === item.Type) { + query.IncludeItemTypes = 'Movie,Series,Video'; + } else if ('Person' === item.Type) { query.IncludeItemTypes = params.type; } @@ -308,7 +308,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" return apiClient.getItems(apiClient.getCurrentUserId(), modifyQueryWithFilters(instance, { StartIndex: startIndex, Limit: limit, - Fields: "PrimaryImageAspectRatio,SortName", + Fields: 'PrimaryImageAspectRatio,SortName', ImageTypeLimit: 1, ParentId: item.Id, SortBy: sortBy @@ -316,7 +316,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" } function getItem(params) { - if ("Recordings" === params.type || "Programs" === params.type || "nextup" === params.type) { + if ('Recordings' === params.type || 'Programs' === params.type || 'nextup' === params.type) { return Promise.resolve(null); } @@ -333,7 +333,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" function showViewSettingsMenu() { var instance = this; - require(["viewSettings"], function (ViewSettings) { + require(['viewSettings'], function (ViewSettings) { new ViewSettings().show({ settingsKey: instance.getSettingsKey(), settings: instance.getViewSettings(), @@ -348,7 +348,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" function showFilterMenu() { var instance = this; - require(["filterMenu"], function (FilterMenu) { + require(['filterMenu'], function (FilterMenu) { new FilterMenu().show({ settingsKey: instance.getSettingsKey(), settings: instance.getFilters(), @@ -367,7 +367,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" function showSortMenu() { var instance = this; - require(["sortMenu"], function (SortMenu) { + require(['sortMenu'], function (SortMenu) { new SortMenu().show({ settingsKey: instance.getSettingsKey(), settings: instance.getSortValues(), @@ -385,7 +385,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" function onNewItemClick() { var instance = this; - require(["playlistEditor"], function (playlistEditor) { + require(['playlistEditor'], function (playlistEditor) { new playlistEditor().show({ items: [], serverId: instance.params.serverId @@ -396,9 +396,9 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" function hideOrShowAll(elems, hide) { for (var i = 0, length = elems.length; i < length; i++) { if (hide) { - elems[i].classList.add("hide"); + elems[i].classList.add('hide'); } else { - elems[i].classList.remove("hide"); + elems[i].classList.remove('hide'); } } } @@ -424,7 +424,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" function getItemsHtml(items) { var settings = self.getViewSettings(); - if ("list" === settings.imageType) { + if ('list' === settings.imageType) { return listView.getListViewHtml({ items: items }); @@ -438,26 +438,26 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" var item = self.currentItem; var lines = settings.showTitle ? 2 : 0; - if ("banner" === settings.imageType) { - shape = "banner"; - } else if ("disc" === settings.imageType) { - shape = "square"; + if ('banner' === settings.imageType) { + shape = 'banner'; + } else if ('disc' === settings.imageType) { + shape = 'square'; preferDisc = true; - } else if ("logo" === settings.imageType) { - shape = "backdrop"; + } else if ('logo' === settings.imageType) { + shape = 'backdrop'; preferLogo = true; - } else if ("thumb" === settings.imageType) { - shape = "backdrop"; + } else if ('thumb' === settings.imageType) { + shape = 'backdrop'; preferThumb = true; - } else if ("nextup" === params.type) { - shape = "backdrop"; - preferThumb = "thumb" === settings.imageType; - } else if ("Programs" === params.type || "Recordings" === params.type) { - shape = "true" === params.IsMovie ? "portrait" : "autoVertical"; - preferThumb = "true" !== params.IsMovie ? "auto" : false; - defaultShape = "true" === params.IsMovie ? "portrait" : "backdrop"; + } else if ('nextup' === params.type) { + shape = 'backdrop'; + preferThumb = 'thumb' === settings.imageType; + } else if ('Programs' === params.type || 'Recordings' === params.type) { + shape = 'true' === params.IsMovie ? 'portrait' : 'autoVertical'; + preferThumb = 'true' !== params.IsMovie ? 'auto' : false; + defaultShape = 'true' === params.IsMovie ? 'portrait' : 'backdrop'; } else { - shape = "autoVertical"; + shape = 'autoVertical'; } var posterOptions = { @@ -473,47 +473,47 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" overlayMoreButton: true, overlayText: !settings.showTitle, defaultShape: defaultShape, - action: "Audio" === params.type ? "playallfromhere" : null + action: 'Audio' === params.type ? 'playallfromhere' : null }; - if ("nextup" === params.type) { + if ('nextup' === params.type) { posterOptions.showParentTitle = settings.showTitle; - } else if ("Person" === params.type) { + } else if ('Person' === params.type) { posterOptions.showYear = false; posterOptions.showParentTitle = false; lines = 1; - } else if ("Audio" === params.type) { + } else if ('Audio' === params.type) { posterOptions.showParentTitle = settings.showTitle; - } else if ("MusicAlbum" === params.type) { + } else if ('MusicAlbum' === params.type) { posterOptions.showParentTitle = settings.showTitle; - } else if ("Episode" === params.type) { + } else if ('Episode' === params.type) { posterOptions.showParentTitle = settings.showTitle; - } else if ("MusicArtist" === params.type) { + } else if ('MusicArtist' === params.type) { posterOptions.showYear = false; lines = 1; - } else if ("Programs" === params.type) { + } else if ('Programs' === params.type) { lines = settings.showTitle ? 1 : 0; - var showParentTitle = settings.showTitle && "true" !== params.IsMovie; + var showParentTitle = settings.showTitle && 'true' !== params.IsMovie; if (showParentTitle) { lines++; } - var showAirTime = settings.showTitle && "Recordings" !== params.type; + var showAirTime = settings.showTitle && 'Recordings' !== params.type; if (showAirTime) { lines++; } - var showYear = settings.showTitle && "true" === params.IsMovie && "Recordings" === params.type; + var showYear = settings.showTitle && 'true' === params.IsMovie && 'Recordings' === params.type; if (showYear) { lines++; } posterOptions = Object.assign(posterOptions, { - inheritThumb: "Recordings" === params.type, - context: "livetv", + inheritThumb: 'Recordings' === params.type, + context: 'livetv', showParentTitle: showParentTitle, showAirTime: showAirTime, showAirDateTime: showAirTime, @@ -529,28 +529,28 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" posterOptions.lines = lines; posterOptions.items = items; - if (item && "folders" === item.CollectionType) { - posterOptions.context = "folders"; + if (item && 'folders' === item.CollectionType) { + posterOptions.context = 'folders'; } return cardBuilder.getCardsHtml(posterOptions); } function initAlphaPicker() { - self.scroller = view.querySelector(".scrollFrameY"); + self.scroller = view.querySelector('.scrollFrameY'); var alphaPickerElement = self.alphaPickerElement; - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - alphaPickerElement.classList.add("focuscontainer-right"); - self.itemsContainer.parentNode.classList.add("padded-right-withalphapicker"); + alphaPickerElement.classList.add('alphaPicker-fixed-right'); + alphaPickerElement.classList.add('focuscontainer-right'); + self.itemsContainer.parentNode.classList.add('padded-right-withalphapicker'); self.alphaPicker = new alphaPicker({ element: alphaPickerElement, itemsContainer: layoutManager.tv ? self.itemsContainer : null, - itemClass: "card", - valueChangeEvent: layoutManager.tv ? null : "click" + itemClass: 'card', + valueChangeEvent: layoutManager.tv ? null : 'click' }); - self.alphaPicker.on("alphavaluechanged", onAlphaPickerValueChanged); + self.alphaPicker.on('alphavaluechanged', onAlphaPickerValueChanged); } function onAlphaPickerValueChanged() { @@ -559,90 +559,90 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" } function setTitle(item) { - Emby.Page.setTitle(getTitle(item) || ""); + Emby.Page.setTitle(getTitle(item) || ''); - if (item && "playlists" === item.CollectionType) { - hideOrShowAll(view.querySelectorAll(".btnNewItem"), false); + if (item && 'playlists' === item.CollectionType) { + hideOrShowAll(view.querySelectorAll('.btnNewItem'), false); } else { - hideOrShowAll(view.querySelectorAll(".btnNewItem"), true); + hideOrShowAll(view.querySelectorAll('.btnNewItem'), true); } } function getTitle(item) { - if ("Recordings" === params.type) { - return globalize.translate("Recordings"); + if ('Recordings' === params.type) { + return globalize.translate('Recordings'); } - if ("Programs" === params.type) { - if ("true" === params.IsMovie) { - return globalize.translate("Movies"); + if ('Programs' === params.type) { + if ('true' === params.IsMovie) { + return globalize.translate('Movies'); } - if ("true" === params.IsSports) { - return globalize.translate("Sports"); + if ('true' === params.IsSports) { + return globalize.translate('Sports'); } - if ("true" === params.IsKids) { - return globalize.translate("HeaderForKids"); + if ('true' === params.IsKids) { + return globalize.translate('HeaderForKids'); } - if ("true" === params.IsAiring) { - return globalize.translate("HeaderOnNow"); + if ('true' === params.IsAiring) { + return globalize.translate('HeaderOnNow'); } - if ("true" === params.IsSeries) { - return globalize.translate("Shows"); + if ('true' === params.IsSeries) { + return globalize.translate('Shows'); } - if ("true" === params.IsNews) { - return globalize.translate("News"); + if ('true' === params.IsNews) { + return globalize.translate('News'); } - return globalize.translate("Programs"); + return globalize.translate('Programs'); } - if ("nextup" === params.type) { - return globalize.translate("NextUp"); + if ('nextup' === params.type) { + return globalize.translate('NextUp'); } - if ("favoritemovies" === params.type) { - return globalize.translate("FavoriteMovies"); + if ('favoritemovies' === params.type) { + return globalize.translate('FavoriteMovies'); } if (item) { return item.Name; } - if ("Movie" === params.type) { - return globalize.translate("Movies"); + if ('Movie' === params.type) { + return globalize.translate('Movies'); } - if ("Series" === params.type) { - return globalize.translate("Shows"); + if ('Series' === params.type) { + return globalize.translate('Shows'); } - if ("Season" === params.type) { - return globalize.translate("Seasons"); + if ('Season' === params.type) { + return globalize.translate('Seasons'); } - if ("Episode" === params.type) { - return globalize.translate("Episodes"); + if ('Episode' === params.type) { + return globalize.translate('Episodes'); } - if ("MusicArtist" === params.type) { - return globalize.translate("Artists"); + if ('MusicArtist' === params.type) { + return globalize.translate('Artists'); } - if ("MusicAlbum" === params.type) { - return globalize.translate("Albums"); + if ('MusicAlbum' === params.type) { + return globalize.translate('Albums'); } - if ("Audio" === params.type) { - return globalize.translate("Songs"); + if ('Audio' === params.type) { + return globalize.translate('Songs'); } - if ("Video" === params.type) { - return globalize.translate("Videos"); + if ('Video' === params.type) { + return globalize.translate('Videos'); } return void 0; @@ -686,7 +686,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" if (currentItem && !self.hasFilters) { playbackManager.shuffle(currentItem); } else { - getItems(self, self.params, currentItem, "Random", null, 300).then(function (result) { + getItems(self, self.params, currentItem, 'Random', null, 300).then(function (result) { playbackManager.play({ items: result.Items }); @@ -696,59 +696,59 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" var self = this; self.params = params; - this.itemsContainer = view.querySelector(".itemsContainer"); + this.itemsContainer = view.querySelector('.itemsContainer'); if (params.parentId) { - this.itemsContainer.setAttribute("data-parentid", params.parentId); - } else if ("nextup" === params.type) { - this.itemsContainer.setAttribute("data-monitor", "videoplayback"); - } else if ("favoritemovies" === params.type) { - this.itemsContainer.setAttribute("data-monitor", "markfavorite"); - } else if ("Programs" === params.type) { - this.itemsContainer.setAttribute("data-refreshinterval", "300000"); + this.itemsContainer.setAttribute('data-parentid', params.parentId); + } else if ('nextup' === params.type) { + this.itemsContainer.setAttribute('data-monitor', 'videoplayback'); + } else if ('favoritemovies' === params.type) { + this.itemsContainer.setAttribute('data-monitor', 'markfavorite'); + } else if ('Programs' === params.type) { + this.itemsContainer.setAttribute('data-refreshinterval', '300000'); } var i; var length; - var btnViewSettings = view.querySelectorAll(".btnViewSettings"); + var btnViewSettings = view.querySelectorAll('.btnViewSettings'); for (i = 0, length = btnViewSettings.length; i < length; i++) { - btnViewSettings[i].addEventListener("click", showViewSettingsMenu.bind(this)); + btnViewSettings[i].addEventListener('click', showViewSettingsMenu.bind(this)); } - var filterButtons = view.querySelectorAll(".btnFilter"); + var filterButtons = view.querySelectorAll('.btnFilter'); this.filterButtons = filterButtons; var hasVisibleFilters = this.getVisibleFilters().length; for (i = 0, length = filterButtons.length; i < length; i++) { var btnFilter = filterButtons[i]; - btnFilter.addEventListener("click", showFilterMenu.bind(this)); + btnFilter.addEventListener('click', showFilterMenu.bind(this)); if (hasVisibleFilters) { - btnFilter.classList.remove("hide"); + btnFilter.classList.remove('hide'); } else { - btnFilter.classList.add("hide"); + btnFilter.classList.add('hide'); } } - var sortButtons = view.querySelectorAll(".btnSort"); + var sortButtons = view.querySelectorAll('.btnSort'); for (this.sortButtons = sortButtons, i = 0, length = sortButtons.length; i < length; i++) { var sortButton = sortButtons[i]; - sortButton.addEventListener("click", showSortMenu.bind(this)); + sortButton.addEventListener('click', showSortMenu.bind(this)); - if ("nextup" !== params.type) { - sortButton.classList.remove("hide"); + if ('nextup' !== params.type) { + sortButton.classList.remove('hide'); } } - this.btnSortText = view.querySelector(".btnSortText"); - this.btnSortIcon = view.querySelector(".btnSortIcon"); - bindAll(view.querySelectorAll(".btnNewItem"), "click", onNewItemClick.bind(this)); - this.alphaPickerElement = view.querySelector(".alphaPicker"); + this.btnSortText = view.querySelector('.btnSortText'); + this.btnSortIcon = view.querySelector('.btnSortIcon'); + bindAll(view.querySelectorAll('.btnNewItem'), 'click', onNewItemClick.bind(this)); + this.alphaPickerElement = view.querySelector('.alphaPicker'); self.itemsContainer.fetchData = fetchData; self.itemsContainer.getItemsHtml = getItemsHtml; - view.addEventListener("viewshow", function (e) { + view.addEventListener('viewshow', function (e) { var isRestored = e.detail.isRestored; if (!isRestored) { @@ -772,42 +772,42 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" } }); - if (!isRestored && item && "PhotoAlbum" !== item.Type) { + if (!isRestored && item && 'PhotoAlbum' !== item.Type) { initAlphaPicker(); } var itemType = item ? item.Type : null; - if ("MusicGenre" === itemType || "Programs" !== params.type && "Channel" !== itemType) { - hideOrShowAll(view.querySelectorAll(".btnPlay"), false); + if ('MusicGenre' === itemType || 'Programs' !== params.type && 'Channel' !== itemType) { + hideOrShowAll(view.querySelectorAll('.btnPlay'), false); } else { - hideOrShowAll(view.querySelectorAll(".btnPlay"), true); + hideOrShowAll(view.querySelectorAll('.btnPlay'), true); } - if ("MusicGenre" === itemType || "Programs" !== params.type && "nextup" !== params.type && "Channel" !== itemType) { - hideOrShowAll(view.querySelectorAll(".btnShuffle"), false); + if ('MusicGenre' === itemType || 'Programs' !== params.type && 'nextup' !== params.type && 'Channel' !== itemType) { + hideOrShowAll(view.querySelectorAll('.btnShuffle'), false); } else { - hideOrShowAll(view.querySelectorAll(".btnShuffle"), true); + hideOrShowAll(view.querySelectorAll('.btnShuffle'), true); } if (item && playbackManager.canQueue(item)) { - hideOrShowAll(view.querySelectorAll(".btnQueue"), false); + hideOrShowAll(view.querySelectorAll('.btnQueue'), false); } else { - hideOrShowAll(view.querySelectorAll(".btnQueue"), true); + hideOrShowAll(view.querySelectorAll('.btnQueue'), true); } }); if (!isRestored) { - bindAll(view.querySelectorAll(".btnPlay"), "click", play); - bindAll(view.querySelectorAll(".btnQueue"), "click", queue); - bindAll(view.querySelectorAll(".btnShuffle"), "click", shuffle); + bindAll(view.querySelectorAll('.btnPlay'), 'click', play); + bindAll(view.querySelectorAll('.btnQueue'), 'click', queue); + bindAll(view.querySelectorAll('.btnShuffle'), 'click', shuffle); } this.alphaNumericShortcuts = new AlphaNumericShortcuts({ itemsContainer: self.itemsContainer }); }); - view.addEventListener("viewhide", function (e) { + view.addEventListener('viewhide', function (e) { var itemsContainer = self.itemsContainer; if (itemsContainer) { @@ -821,13 +821,13 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" self.alphaNumericShortcuts = null; } }); - view.addEventListener("viewdestroy", function () { + view.addEventListener('viewdestroy', function () { if (self.listController) { self.listController.destroy(); } if (self.alphaPicker) { - self.alphaPicker.off("alphavaluechanged", onAlphaPickerValueChanged); + self.alphaPicker.off('alphavaluechanged', onAlphaPickerValueChanged); self.alphaPicker.destroy(); } @@ -845,30 +845,30 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" ItemsView.prototype.getFilters = function () { var basekey = this.getSettingsKey(); return { - IsPlayed: "true" === userSettings.getFilter(basekey + "-filter-IsPlayed"), - IsUnplayed: "true" === userSettings.getFilter(basekey + "-filter-IsUnplayed"), - IsFavorite: "true" === userSettings.getFilter(basekey + "-filter-IsFavorite"), - IsResumable: "true" === userSettings.getFilter(basekey + "-filter-IsResumable"), - Is4K: "true" === userSettings.getFilter(basekey + "-filter-Is4K"), - IsHD: "true" === userSettings.getFilter(basekey + "-filter-IsHD"), - IsSD: "true" === userSettings.getFilter(basekey + "-filter-IsSD"), - Is3D: "true" === userSettings.getFilter(basekey + "-filter-Is3D"), - VideoTypes: userSettings.getFilter(basekey + "-filter-VideoTypes"), - SeriesStatus: userSettings.getFilter(basekey + "-filter-SeriesStatus"), - HasSubtitles: userSettings.getFilter(basekey + "-filter-HasSubtitles"), - HasTrailer: userSettings.getFilter(basekey + "-filter-HasTrailer"), - HasSpecialFeature: userSettings.getFilter(basekey + "-filter-HasSpecialFeature"), - HasThemeSong: userSettings.getFilter(basekey + "-filter-HasThemeSong"), - HasThemeVideo: userSettings.getFilter(basekey + "-filter-HasThemeVideo"), - GenreIds: userSettings.getFilter(basekey + "-filter-GenreIds") + IsPlayed: 'true' === userSettings.getFilter(basekey + '-filter-IsPlayed'), + IsUnplayed: 'true' === userSettings.getFilter(basekey + '-filter-IsUnplayed'), + IsFavorite: 'true' === userSettings.getFilter(basekey + '-filter-IsFavorite'), + IsResumable: 'true' === userSettings.getFilter(basekey + '-filter-IsResumable'), + Is4K: 'true' === userSettings.getFilter(basekey + '-filter-Is4K'), + IsHD: 'true' === userSettings.getFilter(basekey + '-filter-IsHD'), + IsSD: 'true' === userSettings.getFilter(basekey + '-filter-IsSD'), + Is3D: 'true' === userSettings.getFilter(basekey + '-filter-Is3D'), + VideoTypes: userSettings.getFilter(basekey + '-filter-VideoTypes'), + SeriesStatus: userSettings.getFilter(basekey + '-filter-SeriesStatus'), + HasSubtitles: userSettings.getFilter(basekey + '-filter-HasSubtitles'), + HasTrailer: userSettings.getFilter(basekey + '-filter-HasTrailer'), + HasSpecialFeature: userSettings.getFilter(basekey + '-filter-HasSpecialFeature'), + HasThemeSong: userSettings.getFilter(basekey + '-filter-HasThemeSong'), + HasThemeVideo: userSettings.getFilter(basekey + '-filter-HasThemeVideo'), + GenreIds: userSettings.getFilter(basekey + '-filter-GenreIds') }; }; ItemsView.prototype.getSortValues = function () { var basekey = this.getSettingsKey(); return { - sortBy: userSettings.getFilter(basekey + "-sortby") || this.getDefaultSortBy(), - sortOrder: "Descending" === userSettings.getFilter(basekey + "-sortorder") ? "Descending" : "Ascending" + sortBy: userSettings.getFilter(basekey + '-sortby') || this.getDefaultSortBy(), + sortOrder: 'Descending' === userSettings.getFilter(basekey + '-sortorder') ? 'Descending' : 'Ascending' }; }; @@ -880,17 +880,17 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" return sortNameOption.value; } - return "IsFolder," + sortNameOption.value; + return 'IsFolder,' + sortNameOption.value; }; ItemsView.prototype.getSortMenuOptions = function () { var sortBy = []; var params = this.params; - if ("Programs" === params.type) { + if ('Programs' === params.type) { sortBy.push({ - name: globalize.translate("AirDate"), - value: "StartDate,SortName" + name: globalize.translate('AirDate'), + value: 'StartDate,SortName' }); } @@ -912,10 +912,10 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" sortBy.push(option); } - if ("Programs" !== params.type) { + if ('Programs' !== params.type) { sortBy.push({ - name: globalize.translate("DateAdded"), - value: "DateCreated,SortName" + name: globalize.translate('DateAdded'), + value: 'DateCreated,SortName' }); } @@ -928,14 +928,14 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" if (!params.type) { option = this.getNameSortOption(params); sortBy.push({ - name: globalize.translate("Folders"), - value: "IsFolder," + option.value + name: globalize.translate('Folders'), + value: 'IsFolder,' + option.value }); } sortBy.push({ - name: globalize.translate("ParentalRating"), - value: "OfficialRating,SortName" + name: globalize.translate('ParentalRating'), + value: 'OfficialRating,SortName' }); option = this.getPlayCountSortOption(); @@ -944,67 +944,67 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" } sortBy.push({ - name: globalize.translate("ReleaseDate"), - value: "ProductionYear,PremiereDate,SortName" + name: globalize.translate('ReleaseDate'), + value: 'ProductionYear,PremiereDate,SortName' }); sortBy.push({ - name: globalize.translate("Runtime"), - value: "Runtime,SortName" + name: globalize.translate('Runtime'), + value: 'Runtime,SortName' }); return sortBy; }; ItemsView.prototype.getNameSortOption = function (params) { - if ("Episode" === params.type) { + if ('Episode' === params.type) { return { - name: globalize.translate("Name"), - value: "SeriesName,SortName" + name: globalize.translate('Name'), + value: 'SeriesName,SortName' }; } return { - name: globalize.translate("Name"), - value: "SortName" + name: globalize.translate('Name'), + value: 'SortName' }; }; ItemsView.prototype.getPlayCountSortOption = function () { - if ("Programs" === this.params.type) { + if ('Programs' === this.params.type) { return null; } return { - name: globalize.translate("PlayCount"), - value: "PlayCount,SortName" + name: globalize.translate('PlayCount'), + value: 'PlayCount,SortName' }; }; ItemsView.prototype.getDatePlayedSortOption = function () { - if ("Programs" === this.params.type) { + if ('Programs' === this.params.type) { return null; } return { - name: globalize.translate("DatePlayed"), - value: "DatePlayed,SortName" + name: globalize.translate('DatePlayed'), + value: 'DatePlayed,SortName' }; }; ItemsView.prototype.getCriticRatingSortOption = function () { - if ("Programs" === this.params.type) { + if ('Programs' === this.params.type) { return null; } return { - name: globalize.translate("CriticRating"), - value: "CriticRating,SortName" + name: globalize.translate('CriticRating'), + value: 'CriticRating,SortName' }; }; ItemsView.prototype.getCommunityRatingSortOption = function () { return { - name: globalize.translate("CommunityRating"), - value: "CommunityRating,SortName" + name: globalize.translate('CommunityRating'), + value: 'CommunityRating,SortName' }; }; @@ -1012,25 +1012,25 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" var filters = []; var params = this.params; - if (!("nextup" === params.type)) { - if ("Programs" === params.type) { - filters.push("Genres"); + if (!('nextup' === params.type)) { + if ('Programs' === params.type) { + filters.push('Genres'); } else { params.type; - filters.push("IsUnplayed"); - filters.push("IsPlayed"); + filters.push('IsUnplayed'); + filters.push('IsPlayed'); if (!params.IsFavorite) { - filters.push("IsFavorite"); + filters.push('IsFavorite'); } - filters.push("IsResumable"); - filters.push("VideoType"); - filters.push("HasSubtitles"); - filters.push("HasTrailer"); - filters.push("HasSpecialFeature"); - filters.push("HasThemeSong"); - filters.push("HasThemeVideo"); + filters.push('IsResumable'); + filters.push('VideoType'); + filters.push('HasSubtitles'); + filters.push('HasTrailer'); + filters.push('HasSpecialFeature'); + filters.push('HasThemeSong'); + filters.push('HasThemeVideo'); } } @@ -1044,22 +1044,22 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" if (filterButtons.length) { for (var i = 0, length = filterButtons.length; i < length; i++) { var btnFilter = filterButtons[i]; - var bubble = btnFilter.querySelector(".filterButtonBubble"); + var bubble = btnFilter.querySelector('.filterButtonBubble'); if (!bubble) { if (!hasFilters) { continue; } - btnFilter.insertAdjacentHTML("afterbegin", '
!
'); - btnFilter.classList.add("btnFilterWithBubble"); - bubble = btnFilter.querySelector(".filterButtonBubble"); + btnFilter.insertAdjacentHTML('afterbegin', '
!
'); + btnFilter.classList.add('btnFilterWithBubble'); + bubble = btnFilter.querySelector('.filterButtonBubble'); } if (hasFilters) { - bubble.classList.remove("hide"); + bubble.classList.remove('hide'); } else { - bubble.classList.add("hide"); + bubble.classList.add('hide'); } } } @@ -1080,13 +1080,13 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" ItemsView.prototype.getVisibleViewSettings = function () { var item = (this.params, this.currentItem); - var fields = ["showTitle"]; + var fields = ['showTitle']; - if (!item || "PhotoAlbum" !== item.Type && "ChannelFolderItem" !== item.Type) { - fields.push("imageType"); + if (!item || 'PhotoAlbum' !== item.Type && 'ChannelFolderItem' !== item.Type) { + fields.push('imageType'); } - fields.push("viewType"); + fields.push('viewType'); return fields; }; @@ -1094,41 +1094,41 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" var basekey = this.getSettingsKey(); var params = this.params; var item = this.currentItem; - var showTitle = userSettings.get(basekey + "-showTitle"); + var showTitle = userSettings.get(basekey + '-showTitle'); - if ("true" === showTitle) { + if ('true' === showTitle) { showTitle = true; - } else if ("false" === showTitle) { + } else if ('false' === showTitle) { showTitle = false; - } else if ("Programs" === params.type || "Recordings" === params.type || "Person" === params.type || "nextup" === params.type || "Audio" === params.type || "MusicAlbum" === params.type || "MusicArtist" === params.type) { + } else if ('Programs' === params.type || 'Recordings' === params.type || 'Person' === params.type || 'nextup' === params.type || 'Audio' === params.type || 'MusicAlbum' === params.type || 'MusicArtist' === params.type) { showTitle = true; - } else if (item && "PhotoAlbum" !== item.Type) { + } else if (item && 'PhotoAlbum' !== item.Type) { showTitle = true; } - var imageType = userSettings.get(basekey + "-imageType"); + var imageType = userSettings.get(basekey + '-imageType'); - if (!imageType && "nextup" === params.type) { - imageType = "thumb"; + if (!imageType && 'nextup' === params.type) { + imageType = 'thumb'; } return { showTitle: showTitle, - showYear: "false" !== userSettings.get(basekey + "-showYear"), - imageType: imageType || "primary", - viewType: userSettings.get(basekey + "-viewType") || "images" + showYear: 'false' !== userSettings.get(basekey + '-showYear'), + imageType: imageType || 'primary', + viewType: userSettings.get(basekey + '-viewType') || 'images' }; }; ItemsView.prototype.getItemTypes = function () { var params = this.params; - if ("nextup" === params.type) { - return ["Episode"]; + if ('nextup' === params.type) { + return ['Episode']; } - if ("Programs" === params.type) { - return ["Program"]; + if ('Programs' === params.type) { + return ['Program']; } return []; @@ -1136,7 +1136,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" ItemsView.prototype.getSettingsKey = function () { var values = []; - values.push("items"); + values.push('items'); var params = this.params; if (params.type) { @@ -1146,54 +1146,54 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" } if (params.IsAiring) { - values.push("IsAiring"); + values.push('IsAiring'); } if (params.IsMovie) { - values.push("IsMovie"); + values.push('IsMovie'); } if (params.IsKids) { - values.push("IsKids"); + values.push('IsKids'); } if (params.IsSports) { - values.push("IsSports"); + values.push('IsSports'); } if (params.IsNews) { - values.push("IsNews"); + values.push('IsNews'); } if (params.IsSeries) { - values.push("IsSeries"); + values.push('IsSeries'); } if (params.IsFavorite) { - values.push("IsFavorite"); + values.push('IsFavorite'); } if (params.genreId) { - values.push("Genre"); + values.push('Genre'); } if (params.musicGenreId) { - values.push("MusicGenre"); + values.push('MusicGenre'); } if (params.studioId) { - values.push("Studio"); + values.push('Studio'); } if (params.personId) { - values.push("Person"); + values.push('Person'); } if (params.parentId) { - values.push("Folder"); + values.push('Folder'); } - return values.join("-"); + return values.join('-'); }; return ItemsView; diff --git a/src/controllers/livetv/livetvchannels.js b/src/controllers/livetv/livetvchannels.js index 63e4b47288..7f22d3dd13 100644 --- a/src/controllers/livetv/livetvchannels.js +++ b/src/controllers/livetv/livetvchannels.js @@ -1,5 +1,5 @@ -define(["cardBuilder", "imageLoader", "libraryBrowser", "loading", "events", "userSettings", "emby-itemscontainer"], function (cardBuilder, imageLoader, libraryBrowser, loading, events, userSettings) { - "use strict"; +define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'userSettings', 'emby-itemscontainer'], function (cardBuilder, imageLoader, libraryBrowser, loading, events, userSettings) { + 'use strict'; return function (view, params, tabContent) { function getPageData() { @@ -7,7 +7,7 @@ define(["cardBuilder", "imageLoader", "libraryBrowser", "loading", "events", "us pageData = { query: { StartIndex: 0, - Fields: "PrimaryImageAspectRatio" + Fields: 'PrimaryImageAspectRatio' } }; } @@ -26,7 +26,7 @@ define(["cardBuilder", "imageLoader", "libraryBrowser", "loading", "events", "us function getChannelsHtml(channels) { return cardBuilder.getCardsHtml({ items: channels, - shape: "square", + shape: 'square', showTitle: true, lazy: true, cardLayout: true, @@ -60,7 +60,7 @@ define(["cardBuilder", "imageLoader", "libraryBrowser", "loading", "events", "us } var query = getQuery(); - context.querySelector(".paging").innerHTML = libraryBrowser.getQueryPagingHtml({ + context.querySelector('.paging').innerHTML = libraryBrowser.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -69,30 +69,30 @@ define(["cardBuilder", "imageLoader", "libraryBrowser", "loading", "events", "us filterButton: false }); var html = getChannelsHtml(result.Items); - var elem = context.querySelector("#items"); + var elem = context.querySelector('#items'); elem.innerHTML = html; imageLoader.lazyChildren(elem); var i; var length; var elems; - for (elems = context.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onNextPageClick); + for (elems = context.querySelectorAll('.btnNextPage'), i = 0, length = elems.length; i < length; i++) { + elems[i].addEventListener('click', onNextPageClick); } - for (elems = context.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onPreviousPageClick); + for (elems = context.querySelectorAll('.btnPreviousPage'), i = 0, length = elems.length; i < length; i++) { + elems[i].addEventListener('click', onPreviousPageClick); } } function showFilterMenu(context) { - require(["components/filterdialog/filterdialog"], function (filterDialogFactory) { + require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { var filterDialog = new filterDialogFactory({ query: getQuery(), - mode: "livetvchannels", + mode: 'livetvchannels', serverId: ApiClient.serverId() }); - events.on(filterDialog, "filterchange", function () { + events.on(filterDialog, 'filterchange', function () { reloadItems(context); }); filterDialog.show(); @@ -110,7 +110,7 @@ define(["cardBuilder", "imageLoader", "libraryBrowser", "loading", "events", "us loading.hide(); isLoading = false; - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(view); }); }); @@ -119,7 +119,7 @@ define(["cardBuilder", "imageLoader", "libraryBrowser", "loading", "events", "us var pageData; var self = this; var isLoading = false; - tabContent.querySelector(".btnFilter").addEventListener("click", function () { + tabContent.querySelector('.btnFilter').addEventListener('click', function () { showFilterMenu(tabContent); }); diff --git a/src/controllers/livetv/livetvguide.js b/src/controllers/livetv/livetvguide.js index f7c2f1baaa..ec7a7a3f81 100644 --- a/src/controllers/livetv/livetvguide.js +++ b/src/controllers/livetv/livetvguide.js @@ -1,5 +1,5 @@ -define(["tvguide"], function (tvguide) { - "use strict"; +define(['tvguide'], function (tvguide) { + 'use strict'; return function (view, params, tabContent) { var guideInstance; diff --git a/src/controllers/livetv/livetvrecordings.js b/src/controllers/livetv/livetvrecordings.js index f8e49f2590..d5cfe66672 100644 --- a/src/controllers/livetv/livetvrecordings.js +++ b/src/controllers/livetv/livetvrecordings.js @@ -1,5 +1,5 @@ -define(["layoutManager", "loading", "cardBuilder", "apphost", "imageLoader", "scripts/livetvcomponents", "listViewStyle", "emby-itemscontainer"], function (layoutManager, loading, cardBuilder, appHost, imageLoader) { - "use strict"; +define(['layoutManager', 'loading', 'cardBuilder', 'apphost', 'imageLoader', 'scripts/livetvcomponents', 'listViewStyle', 'emby-itemscontainer'], function (layoutManager, loading, cardBuilder, appHost, imageLoader) { + 'use strict'; function renderRecordings(elem, recordings, cardOptions, scrollX) { if (!elem) { @@ -7,35 +7,35 @@ define(["layoutManager", "loading", "cardBuilder", "apphost", "imageLoader", "sc } if (recordings.length) { - elem.classList.remove("hide"); + elem.classList.remove('hide'); } else { - elem.classList.add("hide"); + elem.classList.add('hide'); } - var recordingItems = elem.querySelector(".recordingItems"); + var recordingItems = elem.querySelector('.recordingItems'); if (scrollX) { - recordingItems.classList.add("scrollX"); - recordingItems.classList.add("hiddenScrollX"); - recordingItems.classList.remove("vertical-wrap"); + recordingItems.classList.add('scrollX'); + recordingItems.classList.add('hiddenScrollX'); + recordingItems.classList.remove('vertical-wrap'); } else { - recordingItems.classList.remove("scrollX"); - recordingItems.classList.remove("hiddenScrollX"); - recordingItems.classList.add("vertical-wrap"); + recordingItems.classList.remove('scrollX'); + recordingItems.classList.remove('hiddenScrollX'); + recordingItems.classList.add('vertical-wrap'); } - appHost.supports("imageanalysis"); + appHost.supports('imageanalysis'); recordingItems.innerHTML = cardBuilder.getCardsHtml(Object.assign({ items: recordings, - shape: scrollX ? "autooverflow" : "auto", - defaultShape: scrollX ? "overflowBackdrop" : "backdrop", + shape: scrollX ? 'autooverflow' : 'auto', + defaultShape: scrollX ? 'overflowBackdrop' : 'backdrop', showTitle: true, showParentTitle: true, coverImage: true, cardLayout: false, centerText: true, allowBottomPadding: !scrollX, - preferThumb: "auto", + preferThumb: 'auto', overlayText: false }, cardOptions || {})); imageLoader.lazyChildren(recordingItems); @@ -43,7 +43,7 @@ define(["layoutManager", "loading", "cardBuilder", "apphost", "imageLoader", "sc function renderLatestRecordings(context, promise) { promise.then(function (result) { - renderRecordings(context.querySelector("#latestRecordings"), result.Items, { + renderRecordings(context.querySelector('#latestRecordings'), result.Items, { showYear: true, lines: 2 }, false); @@ -53,7 +53,7 @@ define(["layoutManager", "loading", "cardBuilder", "apphost", "imageLoader", "sc function renderRecordingFolders(context, promise) { promise.then(function (result) { - renderRecordings(context.querySelector("#recordingFolders"), result.Items, { + renderRecordings(context.querySelector('#recordingFolders'), result.Items, { showYear: false, showParentTitle: false }, false); @@ -61,12 +61,12 @@ define(["layoutManager", "loading", "cardBuilder", "apphost", "imageLoader", "sc } function onMoreClick(e) { - var type = this.getAttribute("data-type"); + var type = this.getAttribute('data-type'); var serverId = ApiClient.serverId(); switch (type) { - case "latest": - Dashboard.navigate("list.html?type=Recordings&serverId=" + serverId); + case 'latest': + Dashboard.navigate('list.html?type=Recordings&serverId=' + serverId); } } @@ -79,10 +79,10 @@ define(["layoutManager", "loading", "cardBuilder", "apphost", "imageLoader", "sc var latestPromise; var self = this; var lastFullRender = 0; - var moreButtons = tabContent.querySelectorAll(".more"); + var moreButtons = tabContent.querySelectorAll('.more'); for (var i = 0, length = moreButtons.length; i < length; i++) { - moreButtons[i].addEventListener("click", onMoreClick); + moreButtons[i].addEventListener('click', onMoreClick); } self.preRender = function () { @@ -90,9 +90,9 @@ define(["layoutManager", "loading", "cardBuilder", "apphost", "imageLoader", "sc latestPromise = ApiClient.getLiveTvRecordings({ UserId: Dashboard.getCurrentUserId(), Limit: 12, - Fields: "CanDelete,PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'CanDelete,PrimaryImageAspectRatio,BasicSyncInfo', EnableTotalRecordCount: false, - EnableImageTypes: "Primary,Thumb,Backdrop" + EnableImageTypes: 'Primary,Thumb,Backdrop' }); foldersPromise = ApiClient.getRecordingFolders(Dashboard.getCurrentUserId()); } diff --git a/src/controllers/livetv/livetvschedule.js b/src/controllers/livetv/livetvschedule.js index 3bb85598cb..a6f509c6f1 100644 --- a/src/controllers/livetv/livetvschedule.js +++ b/src/controllers/livetv/livetvschedule.js @@ -1,5 +1,5 @@ -define(["layoutManager", "cardBuilder", "apphost", "imageLoader", "loading", "scripts/livetvcomponents", "emby-button", "emby-itemscontainer"], function (layoutManager, cardBuilder, appHost, imageLoader, loading) { - "use strict"; +define(['layoutManager', 'cardBuilder', 'apphost', 'imageLoader', 'loading', 'scripts/livetvcomponents', 'emby-button', 'emby-itemscontainer'], function (layoutManager, cardBuilder, appHost, imageLoader, loading) { + 'use strict'; function enableScrollX() { return !layoutManager.desktop; @@ -7,54 +7,54 @@ define(["layoutManager", "cardBuilder", "apphost", "imageLoader", "loading", "sc function renderRecordings(elem, recordings, cardOptions) { if (recordings.length) { - elem.classList.remove("hide"); + elem.classList.remove('hide'); } else { - elem.classList.add("hide"); + elem.classList.add('hide'); } - var recordingItems = elem.querySelector(".recordingItems"); + var recordingItems = elem.querySelector('.recordingItems'); if (enableScrollX()) { - recordingItems.classList.add("scrollX"); + recordingItems.classList.add('scrollX'); if (layoutManager.tv) { - recordingItems.classList.add("smoothScrollX"); + recordingItems.classList.add('smoothScrollX'); } - recordingItems.classList.add("hiddenScrollX"); - recordingItems.classList.remove("vertical-wrap"); + recordingItems.classList.add('hiddenScrollX'); + recordingItems.classList.remove('vertical-wrap'); } else { - recordingItems.classList.remove("scrollX"); - recordingItems.classList.remove("smoothScrollX"); - recordingItems.classList.remove("hiddenScrollX"); - recordingItems.classList.add("vertical-wrap"); + recordingItems.classList.remove('scrollX'); + recordingItems.classList.remove('smoothScrollX'); + recordingItems.classList.remove('hiddenScrollX'); + recordingItems.classList.add('vertical-wrap'); } - var supportsImageAnalysis = appHost.supports("imageanalysis"); + var supportsImageAnalysis = appHost.supports('imageanalysis'); var cardLayout = appHost.preferVisualCards || supportsImageAnalysis; cardLayout = false; recordingItems.innerHTML = cardBuilder.getCardsHtml(Object.assign({ items: recordings, - shape: enableScrollX() ? "autooverflow" : "auto", + shape: enableScrollX() ? 'autooverflow' : 'auto', showTitle: true, showParentTitle: true, coverImage: true, cardLayout: cardLayout, centerText: !cardLayout, allowBottomPadding: !enableScrollX(), - preferThumb: "auto" + preferThumb: 'auto' }, cardOptions || {})); imageLoader.lazyChildren(recordingItems); } function getBackdropShape() { - return enableScrollX() ? "overflowBackdrop" : "backdrop"; + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; } function renderActiveRecordings(context, promise) { promise.then(function (result) { - renderRecordings(context.querySelector("#activeRecordings"), result.Items, { - shape: enableScrollX() ? "autooverflow" : "auto", + renderRecordings(context.querySelector('#activeRecordings'), result.Items, { + shape: enableScrollX() ? 'autooverflow' : 'auto', defaultShape: getBackdropShape(), showParentTitle: false, showParentTitleOrTitle: true, @@ -74,19 +74,19 @@ define(["layoutManager", "cardBuilder", "apphost", "imageLoader", "loading", "sc var elem = context; if (html) { - elem.classList.remove("hide"); + elem.classList.remove('hide'); } else { - elem.classList.add("hide"); + elem.classList.add('hide'); } - elem.querySelector(".recordingItems").innerHTML = html; + elem.querySelector('.recordingItems').innerHTML = html; imageLoader.lazyChildren(elem); }); } function renderUpcomingRecordings(context, promise) { promise.then(function (result) { - renderTimers(context.querySelector("#upcomingRecordings"), result.Items); + renderTimers(context.querySelector('#upcomingRecordings'), result.Items); loading.hide(); }); } @@ -95,7 +95,7 @@ define(["layoutManager", "cardBuilder", "apphost", "imageLoader", "loading", "sc var activeRecordingsPromise; var upcomingRecordingsPromise; var self = this; - tabContent.querySelector("#upcomingRecordings .recordingItems").addEventListener("timercancelled", function () { + tabContent.querySelector('#upcomingRecordings .recordingItems').addEventListener('timercancelled', function () { self.preRender(); self.renderTab(); }); @@ -104,9 +104,9 @@ define(["layoutManager", "cardBuilder", "apphost", "imageLoader", "loading", "sc activeRecordingsPromise = ApiClient.getLiveTvRecordings({ UserId: Dashboard.getCurrentUserId(), IsInProgress: true, - Fields: "CanDelete,PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'CanDelete,PrimaryImageAspectRatio,BasicSyncInfo', EnableTotalRecordCount: false, - EnableImageTypes: "Primary,Thumb,Backdrop" + EnableImageTypes: 'Primary,Thumb,Backdrop' }); upcomingRecordingsPromise = ApiClient.getLiveTvTimers({ IsActive: false, diff --git a/src/controllers/livetv/livetvseriestimers.js b/src/controllers/livetv/livetvseriestimers.js index 9c95cfa91f..27daca1983 100644 --- a/src/controllers/livetv/livetvseriestimers.js +++ b/src/controllers/livetv/livetvseriestimers.js @@ -1,16 +1,16 @@ -define(["datetime", "cardBuilder", "imageLoader", "apphost", "loading", "paper-icon-button-light", "emby-button"], function (datetime, cardBuilder, imageLoader, appHost, loading) { - "use strict"; +define(['datetime', 'cardBuilder', 'imageLoader', 'apphost', 'loading', 'paper-icon-button-light', 'emby-button'], function (datetime, cardBuilder, imageLoader, appHost, loading) { + 'use strict'; function renderTimers(context, timers) { - var html = ""; - appHost.supports("imageanalysis"); + var html = ''; + appHost.supports('imageanalysis'); html += cardBuilder.getCardsHtml({ items: timers, - shape: "auto", - defaultShape: "portrait", + shape: 'auto', + defaultShape: 'portrait', showTitle: true, cardLayout: false, - preferThumb: "auto", + preferThumb: 'auto', coverImage: true, overlayText: false, showSeriesTimerTime: true, @@ -19,7 +19,7 @@ define(["datetime", "cardBuilder", "imageLoader", "apphost", "loading", "paper-i overlayMoreButton: true, lines: 3 }); - var elem = context.querySelector("#items"); + var elem = context.querySelector('#items'); elem.innerHTML = html; imageLoader.lazyChildren(elem); loading.hide(); @@ -33,8 +33,8 @@ define(["datetime", "cardBuilder", "imageLoader", "apphost", "loading", "paper-i } var query = { - SortBy: "SortName", - SortOrder: "Ascending" + SortBy: 'SortName', + SortOrder: 'Ascending' }; return function (view, params, tabContent) { var timersPromise; diff --git a/src/controllers/livetv/livetvsuggested.js b/src/controllers/livetv/livetvsuggested.js index 8f65df7e6f..036eee9fc6 100644 --- a/src/controllers/livetv/livetvsuggested.js +++ b/src/controllers/livetv/livetvsuggested.js @@ -1,5 +1,5 @@ -define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", "libraryBrowser", "mainTabsManager", "cardBuilder", "apphost", "imageLoader", "scrollStyles", "emby-itemscontainer", "emby-tabs", "emby-button"], function (layoutManager, userSettings, inputManager, loading, globalize, libraryBrowser, mainTabsManager, cardBuilder, appHost, imageLoader) { - "use strict"; +define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize', 'libraryBrowser', 'mainTabsManager', 'cardBuilder', 'apphost', 'imageLoader', 'scrollStyles', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (layoutManager, userSettings, inputManager, loading, globalize, libraryBrowser, mainTabsManager, cardBuilder, appHost, imageLoader) { + 'use strict'; function enableScrollX() { return !layoutManager.desktop; @@ -7,16 +7,16 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", function getBackdropShape() { if (enableScrollX()) { - return "overflowBackdrop"; + return 'overflowBackdrop'; } - return "backdrop"; + return 'backdrop'; } function getPortraitShape() { if (enableScrollX()) { - return "overflowPortrait"; + return 'overflowPortrait'; } - return "portrait"; + return 'portrait'; } function getLimit() { @@ -40,17 +40,17 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", IsAiring: true, limit: limit, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Thumb,Backdrop", + EnableImageTypes: 'Primary,Thumb,Backdrop', EnableTotalRecordCount: false, - Fields: "ChannelInfo,PrimaryImageAspectRatio" + Fields: 'ChannelInfo,PrimaryImageAspectRatio' }).then(function (result) { - renderItems(page, result.Items, "activeProgramItems", "play", { + renderItems(page, result.Items, 'activeProgramItems', 'play', { showAirDateTime: false, showAirEndTime: true }); loading.hide(); - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(page); }); }); @@ -69,10 +69,10 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", IsNews: false, IsSeries: true, EnableTotalRecordCount: false, - Fields: "ChannelInfo,PrimaryImageAspectRatio", - EnableImageTypes: "Primary,Thumb" + Fields: 'ChannelInfo,PrimaryImageAspectRatio', + EnableImageTypes: 'Primary,Thumb' }).then(function (result) { - renderItems(page, result.Items, "upcomingEpisodeItems"); + renderItems(page, result.Items, 'upcomingEpisodeItems'); }); ApiClient.getLiveTvPrograms({ userId: Dashboard.getCurrentUserId(), @@ -80,10 +80,10 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", limit: getLimit(), IsMovie: true, EnableTotalRecordCount: false, - Fields: "ChannelInfo", - EnableImageTypes: "Primary,Thumb" + Fields: 'ChannelInfo', + EnableImageTypes: 'Primary,Thumb' }).then(function (result) { - renderItems(page, result.Items, "upcomingTvMovieItems", null, { + renderItems(page, result.Items, 'upcomingTvMovieItems', null, { shape: getPortraitShape(), preferThumb: null, showParentTitle: false @@ -95,10 +95,10 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", limit: getLimit(), IsSports: true, EnableTotalRecordCount: false, - Fields: "ChannelInfo,PrimaryImageAspectRatio", - EnableImageTypes: "Primary,Thumb" + Fields: 'ChannelInfo,PrimaryImageAspectRatio', + EnableImageTypes: 'Primary,Thumb' }).then(function (result) { - renderItems(page, result.Items, "upcomingSportsItems"); + renderItems(page, result.Items, 'upcomingSportsItems'); }); ApiClient.getLiveTvPrograms({ userId: Dashboard.getCurrentUserId(), @@ -106,10 +106,10 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", limit: getLimit(), IsKids: true, EnableTotalRecordCount: false, - Fields: "ChannelInfo,PrimaryImageAspectRatio", - EnableImageTypes: "Primary,Thumb" + Fields: 'ChannelInfo,PrimaryImageAspectRatio', + EnableImageTypes: 'Primary,Thumb' }).then(function (result) { - renderItems(page, result.Items, "upcomingKidsItems"); + renderItems(page, result.Items, 'upcomingKidsItems'); }); ApiClient.getLiveTvPrograms({ userId: Dashboard.getCurrentUserId(), @@ -117,10 +117,10 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", limit: getLimit(), IsNews: true, EnableTotalRecordCount: false, - Fields: "ChannelInfo,PrimaryImageAspectRatio", - EnableImageTypes: "Primary,Thumb" + Fields: 'ChannelInfo,PrimaryImageAspectRatio', + EnableImageTypes: 'Primary,Thumb' }).then(function (result) { - renderItems(page, result.Items, "upcomingNewsItems", null, { + renderItems(page, result.Items, 'upcomingNewsItems', null, { showParentTitleOrTitle: true, showTitle: false, showParentTitle: false @@ -132,9 +132,9 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", function renderItems(page, items, sectionClass, overlayButton, cardOptions) { var html = cardBuilder.getCardsHtml(Object.assign({ items: items, - preferThumb: "auto", + preferThumb: 'auto', inheritThumb: false, - shape: enableScrollX() ? "autooverflow" : "auto", + shape: enableScrollX() ? 'autooverflow' : 'auto', defaultShape: getBackdropShape(), showParentTitle: true, showTitle: true, @@ -142,57 +142,57 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", coverImage: true, overlayText: false, lazy: true, - overlayPlayButton: "play" === overlayButton, - overlayMoreButton: "more" === overlayButton, - overlayInfoButton: "info" === overlayButton, + overlayPlayButton: 'play' === overlayButton, + overlayMoreButton: 'more' === overlayButton, + overlayInfoButton: 'info' === overlayButton, allowBottomPadding: !enableScrollX(), showAirTime: true, showAirDateTime: true }, cardOptions || {})); - var elem = page.querySelector("." + sectionClass); + var elem = page.querySelector('.' + sectionClass); elem.innerHTML = html; imageLoader.lazyChildren(elem); } function getTabs() { return [{ - name: globalize.translate("Programs") + name: globalize.translate('Programs') }, { - name: globalize.translate("TabGuide") + name: globalize.translate('TabGuide') }, { - name: globalize.translate("TabChannels") + name: globalize.translate('TabChannels') }, { - name: globalize.translate("TabRecordings") + name: globalize.translate('TabRecordings') }, { - name: globalize.translate("HeaderSchedule") + name: globalize.translate('HeaderSchedule') }, { - name: globalize.translate("TabSeries") + name: globalize.translate('TabSeries') }, { - name: globalize.translate("ButtonSearch"), - cssClass: "searchTabButton" + name: globalize.translate('ButtonSearch'), + cssClass: 'searchTabButton' }]; } function setScrollClasses(elem, scrollX) { if (scrollX) { - elem.classList.add("hiddenScrollX"); + elem.classList.add('hiddenScrollX'); if (layoutManager.tv) { - elem.classList.add("smoothScrollX"); + elem.classList.add('smoothScrollX'); } - elem.classList.add("scrollX"); - elem.classList.remove("vertical-wrap"); + elem.classList.add('scrollX'); + elem.classList.remove('vertical-wrap'); } else { - elem.classList.remove("hiddenScrollX"); - elem.classList.remove("smoothScrollX"); - elem.classList.remove("scrollX"); - elem.classList.add("vertical-wrap"); + elem.classList.remove('hiddenScrollX'); + elem.classList.remove('smoothScrollX'); + elem.classList.remove('scrollX'); + elem.classList.add('vertical-wrap'); } } function getDefaultTabIndex(folderId) { - if (userSettings.get("landing-" + folderId) === "guide") { + if (userSettings.get('landing-' + folderId) === 'guide') { return 1; } @@ -219,7 +219,7 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", } function getTabContainers() { - return view.querySelectorAll(".pageTabContent"); + return view.querySelectorAll('.pageTabContent'); } function initTabs() { @@ -235,27 +235,27 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", break; case 1: - depends.push("controllers/livetv/livetvguide"); + depends.push('controllers/livetv/livetvguide'); break; case 2: - depends.push("controllers/livetv/livetvchannels"); + depends.push('controllers/livetv/livetvchannels'); break; case 3: - depends.push("controllers/livetv/livetvrecordings"); + depends.push('controllers/livetv/livetvrecordings'); break; case 4: - depends.push("controllers/livetv/livetvschedule"); + depends.push('controllers/livetv/livetvschedule'); break; case 5: - depends.push("controllers/livetv/livetvseriestimers"); + depends.push('controllers/livetv/livetvseriestimers'); break; case 6: - depends.push("scripts/searchtab"); + depends.push('scripts/searchtab'); } require(depends, function (controllerFactory) { @@ -275,7 +275,7 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", controller = self; } else if (6 === index) { controller = new controllerFactory(view, tabContent, { - collectionType: "livetv" + collectionType: 'livetv' }); } else { controller = new controllerFactory(view, params, tabContent); @@ -320,28 +320,28 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", } function onInputCommand(evt) { - if (evt.detail.command === "search") { + if (evt.detail.command === 'search') { evt.preventDefault(); - Dashboard.navigate("search.html?collectionType=livetv"); + Dashboard.navigate('search.html?collectionType=livetv'); } } var isViewRestored; var self = this; - var currentTabIndex = parseInt(params.tab || getDefaultTabIndex("livetv")); + var currentTabIndex = parseInt(params.tab || getDefaultTabIndex('livetv')); var initialTabIndex = currentTabIndex; var lastFullRender = 0; - [].forEach.call(view.querySelectorAll(".sectionTitleTextButton-programs"), function (link) { + [].forEach.call(view.querySelectorAll('.sectionTitleTextButton-programs'), function (link) { var href = link.href; if (href) { - link.href = href + "&serverId=" + ApiClient.serverId(); + link.href = href + '&serverId=' + ApiClient.serverId(); } }); self.initTab = function () { var tabContent = view.querySelector(".pageTabContent[data-index='0']"); - var containers = tabContent.querySelectorAll(".itemsContainer"); + var containers = tabContent.querySelectorAll('.itemsContainer'); for (var i = 0, length = containers.length; i < length; i++) { setScrollClasses(containers[i], enableScrollX()); @@ -362,11 +362,11 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", var currentTabController; var tabControllers = []; var renderedTabs = []; - view.addEventListener("viewbeforeshow", function (evt) { + view.addEventListener('viewbeforeshow', function (evt) { isViewRestored = evt.detail.isRestored; initTabs(); }); - view.addEventListener("viewshow", function (evt) { + view.addEventListener('viewshow', function (evt) { isViewRestored = evt.detail.isRestored; if (!isViewRestored) { @@ -375,14 +375,14 @@ define(["layoutManager", "userSettings", "inputManager", "loading", "globalize", inputManager.on(window, onInputCommand); }); - view.addEventListener("viewbeforehide", function (e) { + view.addEventListener('viewbeforehide', function (e) { if (currentTabController && currentTabController.onHide) { currentTabController.onHide(); } inputManager.off(window, onInputCommand); }); - view.addEventListener("viewdestroy", function (evt) { + view.addEventListener('viewdestroy', function (evt) { tabControllers.forEach(function (tabController) { if (tabController.destroy) { tabController.destroy(); diff --git a/src/controllers/livetvguideprovider.js b/src/controllers/livetvguideprovider.js index b58000adc5..e83036992b 100644 --- a/src/controllers/livetvguideprovider.js +++ b/src/controllers/livetvguideprovider.js @@ -1,30 +1,30 @@ -define(["events", "loading", "globalize"], function (events, loading, globalize) { - "use strict"; +define(['events', 'loading', 'globalize'], function (events, loading, globalize) { + 'use strict'; function onListingsSubmitted() { - Dashboard.navigate("livetvstatus.html"); + Dashboard.navigate('livetvstatus.html'); } function init(page, type, providerId) { - var url = "components/tvproviders/" + type + ".js"; + var url = 'components/tvproviders/' + type + '.js'; require([url], function (factory) { var instance = new factory(page, providerId, {}); - events.on(instance, "submitted", onListingsSubmitted); + events.on(instance, 'submitted', onListingsSubmitted); instance.init(); }); } function loadTemplate(page, type, providerId) { - require(["text!./components/tvproviders/" + type + ".template.html"], function (html) { - page.querySelector(".providerTemplate").innerHTML = globalize.translateDocument(html); + require(['text!./components/tvproviders/' + type + '.template.html'], function (html) { + page.querySelector('.providerTemplate').innerHTML = globalize.translateDocument(html); init(page, type, providerId); }); } - pageIdOn("pageshow", "liveTvGuideProviderPage", function () { + pageIdOn('pageshow', 'liveTvGuideProviderPage', function () { loading.show(); - var providerId = getParameterByName("id"); - loadTemplate(this, getParameterByName("type"), providerId); + var providerId = getParameterByName('id'); + loadTemplate(this, getParameterByName('type'), providerId); }); }); diff --git a/src/controllers/livetvsettings.js b/src/controllers/livetvsettings.js index e86f08ca6c..7a8552b9ac 100644 --- a/src/controllers/livetvsettings.js +++ b/src/controllers/livetvsettings.js @@ -1,38 +1,38 @@ -define(["jQuery", "loading", "globalize", "fnchecked", "emby-button"], function ($, loading, globalize) { - "use strict"; +define(['jQuery', 'loading', 'globalize', 'fnchecked', 'emby-button'], function ($, loading, globalize) { + 'use strict'; function loadPage(page, config) { - $(".liveTvSettingsForm", page).show(); - $(".noLiveTvServices", page).hide(); - $("#selectGuideDays", page).val(config.GuideDays || ""); - $("#txtPrePaddingMinutes", page).val(config.PrePaddingSeconds / 60); - $("#txtPostPaddingMinutes", page).val(config.PostPaddingSeconds / 60); - page.querySelector("#txtRecordingPath").value = config.RecordingPath || ""; - page.querySelector("#txtMovieRecordingPath").value = config.MovieRecordingPath || ""; - page.querySelector("#txtSeriesRecordingPath").value = config.SeriesRecordingPath || ""; - page.querySelector("#txtPostProcessor").value = config.RecordingPostProcessor || ""; - page.querySelector("#txtPostProcessorArguments").value = config.RecordingPostProcessorArguments || ""; + $('.liveTvSettingsForm', page).show(); + $('.noLiveTvServices', page).hide(); + $('#selectGuideDays', page).val(config.GuideDays || ''); + $('#txtPrePaddingMinutes', page).val(config.PrePaddingSeconds / 60); + $('#txtPostPaddingMinutes', page).val(config.PostPaddingSeconds / 60); + page.querySelector('#txtRecordingPath').value = config.RecordingPath || ''; + page.querySelector('#txtMovieRecordingPath').value = config.MovieRecordingPath || ''; + page.querySelector('#txtSeriesRecordingPath').value = config.SeriesRecordingPath || ''; + page.querySelector('#txtPostProcessor').value = config.RecordingPostProcessor || ''; + page.querySelector('#txtPostProcessorArguments').value = config.RecordingPostProcessorArguments || ''; loading.hide(); } function onSubmit() { loading.show(); var form = this; - ApiClient.getNamedConfiguration("livetv").then(function (config) { - config.GuideDays = $("#selectGuideDays", form).val() || null; - var recordingPath = form.querySelector("#txtRecordingPath").value || null; - var movieRecordingPath = form.querySelector("#txtMovieRecordingPath").value || null; - var seriesRecordingPath = form.querySelector("#txtSeriesRecordingPath").value || null; + ApiClient.getNamedConfiguration('livetv').then(function (config) { + config.GuideDays = $('#selectGuideDays', form).val() || null; + var recordingPath = form.querySelector('#txtRecordingPath').value || null; + var movieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null; + var seriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null; var recordingPathChanged = recordingPath != config.RecordingPath || movieRecordingPath != config.MovieRecordingPath || seriesRecordingPath != config.SeriesRecordingPath; config.RecordingPath = recordingPath; config.MovieRecordingPath = movieRecordingPath; config.SeriesRecordingPath = seriesRecordingPath; - config.RecordingEncodingFormat = "mkv"; - config.PrePaddingSeconds = 60 * $("#txtPrePaddingMinutes", form).val(); - config.PostPaddingSeconds = 60 * $("#txtPostPaddingMinutes", form).val(); - config.RecordingPostProcessor = $("#txtPostProcessor", form).val(); - config.RecordingPostProcessorArguments = $("#txtPostProcessorArguments", form).val(); - ApiClient.updateNamedConfiguration("livetv", config).then(function () { + config.RecordingEncodingFormat = 'mkv'; + config.PrePaddingSeconds = 60 * $('#txtPrePaddingMinutes', form).val(); + config.PostPaddingSeconds = 60 * $('#txtPostPaddingMinutes', form).val(); + config.RecordingPostProcessor = $('#txtPostProcessor', form).val(); + config.RecordingPostProcessorArguments = $('#txtPostProcessorArguments', form).val(); + ApiClient.updateNamedConfiguration('livetv', config).then(function () { Dashboard.processServerConfigurationUpdateResult(); showSaveMessage(recordingPathChanged); }); @@ -41,29 +41,29 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-button"], function } function showSaveMessage(recordingPathChanged) { - var msg = ""; + var msg = ''; if (recordingPathChanged) { - msg += globalize.translate("RecordingPathChangeMessage"); + msg += globalize.translate('RecordingPathChangeMessage'); } if (msg) { - require(["alert"], function (alert) { + require(['alert'], function (alert) { alert(msg); }); } } - $(document).on("pageinit", "#liveTvSettingsPage", function () { + $(document).on('pageinit', '#liveTvSettingsPage', function () { var page = this; - $(".liveTvSettingsForm").off("submit", onSubmit).on("submit", onSubmit); - $("#btnSelectRecordingPath", page).on("click.selectDirectory", function () { - require(["directorybrowser"], function (directoryBrowser) { + $('.liveTvSettingsForm').off('submit', onSubmit).on('submit', onSubmit); + $('#btnSelectRecordingPath', page).on('click.selectDirectory', function () { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ callback: function (path) { if (path) { - $("#txtRecordingPath", page).val(path); + $('#txtRecordingPath', page).val(path); } picker.close(); @@ -72,13 +72,13 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-button"], function }); }); }); - $("#btnSelectMovieRecordingPath", page).on("click.selectDirectory", function () { - require(["directorybrowser"], function (directoryBrowser) { + $('#btnSelectMovieRecordingPath', page).on('click.selectDirectory', function () { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ callback: function (path) { if (path) { - $("#txtMovieRecordingPath", page).val(path); + $('#txtMovieRecordingPath', page).val(path); } picker.close(); @@ -87,13 +87,13 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-button"], function }); }); }); - $("#btnSelectSeriesRecordingPath", page).on("click.selectDirectory", function () { - require(["directorybrowser"], function (directoryBrowser) { + $('#btnSelectSeriesRecordingPath', page).on('click.selectDirectory', function () { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ callback: function (path) { if (path) { - $("#txtSeriesRecordingPath", page).val(path); + $('#txtSeriesRecordingPath', page).val(path); } picker.close(); @@ -102,14 +102,14 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-button"], function }); }); }); - $("#btnSelectPostProcessorPath", page).on("click.selectDirectory", function () { - require(["directorybrowser"], function (directoryBrowser) { + $('#btnSelectPostProcessorPath', page).on('click.selectDirectory', function () { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { if (path) { - $("#txtPostProcessor", page).val(path); + $('#txtPostProcessor', page).val(path); } picker.close(); @@ -117,10 +117,10 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-button"], function }); }); }); - }).on("pageshow", "#liveTvSettingsPage", function () { + }).on('pageshow', '#liveTvSettingsPage', function () { loading.show(); var page = this; - ApiClient.getNamedConfiguration("livetv").then(function (config) { + ApiClient.getNamedConfiguration('livetv').then(function (config) { loadPage(page, config); }); }); diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index 5ffc380bc6..053e5d3d4c 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -1,23 +1,23 @@ -define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layoutManager", "loading", "browser", "listViewStyle", "flexStyles", "emby-itemscontainer", "cardStyle", "material-icons", "emby-button"], function ($, globalize, taskButton, dom, libraryMenu, layoutManager, loading, browser) { - "use strict"; +define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layoutManager', 'loading', 'browser', 'listViewStyle', 'flexStyles', 'emby-itemscontainer', 'cardStyle', 'material-icons', 'emby-button'], function ($, globalize, taskButton, dom, libraryMenu, layoutManager, loading, browser) { + 'use strict'; var enableFocusTransform = !browser.slow && !browser.edge; function getDeviceHtml(device) { var padderClass; - var html = ""; - var cssClass = "card scalableCard"; - var cardBoxCssClass = "cardBox visualCardBox"; - cssClass += " backdropCard backdropCard-scalable"; - padderClass = "cardPadder-backdrop"; + var html = ''; + var cssClass = 'card scalableCard'; + var cardBoxCssClass = 'cardBox visualCardBox'; + cssClass += ' backdropCard backdropCard-scalable'; + padderClass = 'cardPadder-backdrop'; // TODO move card creation code to Card component if (layoutManager.tv) { - cssClass += " show-focus"; + cssClass += ' show-focus'; if (enableFocusTransform) { - cssClass += " show-animation"; + cssClass += ' show-animation'; } } @@ -27,33 +27,33 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo html += '
'; html += '
'; html += '
'; - html += "
"; - html += ""; + html += ''; + html += ''; html += '
'; html += ''; - html += '
' + (device.FriendlyName || getTunerName(device.Type)) + "
"; + html += '
' + (device.FriendlyName || getTunerName(device.Type)) + '
'; html += '
'; - html += device.Url || " "; - html += "
"; - html += "
"; - html += ""; - return html += ""; + html += device.Url || ' '; + html += ''; + html += ''; + html += ''; + return html += ''; } function renderDevices(page, devices) { - var html = devices.map(getDeviceHtml).join(""); - page.querySelector(".devicesList").innerHTML = html; + var html = devices.map(getDeviceHtml).join(''); + page.querySelector('.devicesList').innerHTML = html; } function deleteDevice(page, id) { - var message = globalize.translate("MessageConfirmDeleteTunerDevice"); + var message = globalize.translate('MessageConfirmDeleteTunerDevice'); - require(["confirm"], function (confirm) { - confirm(message, globalize.translate("HeaderDeleteDevice")).then(function () { + require(['confirm'], function (confirm) { + confirm(message, globalize.translate('HeaderDeleteDevice')).then(function () { loading.show(); ApiClient.ajax({ - type: "DELETE", - url: ApiClient.getUrl("LiveTv/TunerHosts", { + type: 'DELETE', + url: ApiClient.getUrl('LiveTv/TunerHosts', { Id: id }) }).then(function () { @@ -65,7 +65,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo function reload(page) { loading.show(); - ApiClient.getNamedConfiguration("livetv").then(function (config) { + ApiClient.getNamedConfiguration('livetv').then(function (config) { renderDevices(page, config.TunerHosts); renderProviders(page, config.ListingProviders); }); @@ -73,27 +73,27 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo } function submitAddDeviceForm(page) { - page.querySelector(".dlgAddDevice").close(); + page.querySelector('.dlgAddDevice').close(); loading.show(); ApiClient.ajax({ - type: "POST", - url: ApiClient.getUrl("LiveTv/TunerHosts"), + type: 'POST', + url: ApiClient.getUrl('LiveTv/TunerHosts'), data: JSON.stringify({ - Type: $("#selectTunerDeviceType", page).val(), - Url: $("#txtDevicePath", page).val() + Type: $('#selectTunerDeviceType', page).val(), + Url: $('#txtDevicePath', page).val() }), - contentType: "application/json" + contentType: 'application/json' }).then(function () { reload(page); }, function () { Dashboard.alert({ - message: globalize.translate("ErrorAddingTunerDevice") + message: globalize.translate('ErrorAddingTunerDevice') }); }); } function renderProviders(page, providers) { - var html = ""; + var html = ''; if (providers.length) { html += '
'; @@ -103,25 +103,25 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo html += ''; + html += ''; + html += '
'; html += ''; - html += ""; + html += ''; } - html += ""; + html += ''; } - var elem = $(".providerList", page).html(html); - $(".btnOptions", elem).on("click", function () { - var id = this.getAttribute("data-id"); + var elem = $('.providerList', page).html(html); + $('.btnOptions', elem).on('click', function () { + var id = this.getAttribute('data-id'); showProviderOptions(page, id, this); }); } @@ -129,25 +129,25 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo function showProviderOptions(page, providerId, button) { var items = []; items.push({ - name: globalize.translate("ButtonDelete"), - id: "delete" + name: globalize.translate('ButtonDelete'), + id: 'delete' }); items.push({ - name: globalize.translate("MapChannels"), - id: "map" + name: globalize.translate('MapChannels'), + id: 'map' }); - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: items, positionTo: button }).then(function (id) { switch (id) { - case "delete": + case 'delete': deleteProvider(page, providerId); break; - case "map": + case 'map': mapChannels(page, providerId); } }); @@ -155,7 +155,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo } function mapChannels(page, providerId) { - require(["components/channelmapper/channelmapper"], function (channelmapper) { + require(['components/channelmapper/channelmapper'], function (channelmapper) { new channelmapper({ serverId: ApiClient.serverInfo().Id, providerId: providerId @@ -164,14 +164,14 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo } function deleteProvider(page, id) { - var message = globalize.translate("MessageConfirmDeleteGuideProvider"); + var message = globalize.translate('MessageConfirmDeleteGuideProvider'); - require(["confirm"], function (confirm) { - confirm(message, globalize.translate("HeaderDeleteProvider")).then(function () { + require(['confirm'], function (confirm) { + confirm(message, globalize.translate('HeaderDeleteProvider')).then(function () { loading.show(); ApiClient.ajax({ - type: "DELETE", - url: ApiClient.getUrl("LiveTv/ListingProviders", { + type: 'DELETE', + url: ApiClient.getUrl('LiveTv/ListingProviders', { Id: id }) }).then(function () { @@ -185,51 +185,51 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo function getTunerName(providerId) { switch (providerId = providerId.toLowerCase()) { - case "m3u": - return "M3U"; - case "hdhomerun": - return "HDHomeRun"; - case "hauppauge": - return "Hauppauge"; - case "satip": - return "DVB"; + case 'm3u': + return 'M3U'; + case 'hdhomerun': + return 'HDHomeRun'; + case 'hauppauge': + return 'Hauppauge'; + case 'satip': + return 'DVB'; default: - return "Unknown"; + return 'Unknown'; } } function getProviderName(providerId) { switch (providerId = providerId.toLowerCase()) { - case "schedulesdirect": - return "Schedules Direct"; - case "xmltv": - return "XMLTV"; + case 'schedulesdirect': + return 'Schedules Direct'; + case 'xmltv': + return 'XMLTV'; default: - return "Unknown"; + return 'Unknown'; } } function getProviderConfigurationUrl(providerId) { switch (providerId = providerId.toLowerCase()) { - case "xmltv": - return "livetvguideprovider.html?type=xmltv"; - case "schedulesdirect": - return "livetvguideprovider.html?type=schedulesdirect"; + case 'xmltv': + return 'livetvguideprovider.html?type=xmltv'; + case 'schedulesdirect': + return 'livetvguideprovider.html?type=schedulesdirect'; } } function addProvider(button) { var menuItems = []; menuItems.push({ - name: "Schedules Direct", - id: "SchedulesDirect" + name: 'Schedules Direct', + id: 'SchedulesDirect' }); menuItems.push({ - name: "XMLTV", - id: "xmltv" + name: 'XMLTV', + id: 'xmltv' }); - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: menuItems, positionTo: button, @@ -241,81 +241,81 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo } function addDevice(button) { - Dashboard.navigate("livetvtuner.html"); + Dashboard.navigate('livetvtuner.html'); } function showDeviceMenu(button, tunerDeviceId) { var items = []; items.push({ - name: globalize.translate("ButtonDelete"), - id: "delete" + name: globalize.translate('ButtonDelete'), + id: 'delete' }); items.push({ - name: globalize.translate("ButtonEdit"), - id: "edit" + name: globalize.translate('ButtonEdit'), + id: 'edit' }); - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: items, positionTo: button }).then(function (id) { switch (id) { - case "delete": - deleteDevice(dom.parentWithClass(button, "page"), tunerDeviceId); + case 'delete': + deleteDevice(dom.parentWithClass(button, 'page'), tunerDeviceId); break; - case "edit": - Dashboard.navigate("livetvtuner.html?id=" + tunerDeviceId); + case 'edit': + Dashboard.navigate('livetvtuner.html?id=' + tunerDeviceId); } }); }); } function onDevicesListClick(e) { - var card = dom.parentWithClass(e.target, "card"); + var card = dom.parentWithClass(e.target, 'card'); if (card) { - var id = card.getAttribute("data-id"); - var btnCardOptions = dom.parentWithClass(e.target, "btnCardOptions"); + var id = card.getAttribute('data-id'); + var btnCardOptions = dom.parentWithClass(e.target, 'btnCardOptions'); if (btnCardOptions) { showDeviceMenu(btnCardOptions, id); } else { - Dashboard.navigate("livetvtuner.html?id=" + id); + Dashboard.navigate('livetvtuner.html?id=' + id); } } } - $(document).on("pageinit", "#liveTvStatusPage", function () { + $(document).on('pageinit', '#liveTvStatusPage', function () { var page = this; - $(".btnAddDevice", page).on("click", function () { + $('.btnAddDevice', page).on('click', function () { addDevice(this); }); - $(".formAddDevice", page).on("submit", function () { + $('.formAddDevice', page).on('submit', function () { submitAddDeviceForm(page); return false; }); - $(".btnAddProvider", page).on("click", function () { + $('.btnAddProvider', page).on('click', function () { addProvider(this); }); - page.querySelector(".devicesList").addEventListener("click", onDevicesListClick); - }).on("pageshow", "#liveTvStatusPage", function () { + page.querySelector('.devicesList').addEventListener('click', onDevicesListClick); + }).on('pageshow', '#liveTvStatusPage', function () { var page = this; reload(page); taskButton({ - mode: "on", - progressElem: page.querySelector(".refreshGuideProgress"), - taskKey: "RefreshGuide", - button: page.querySelector(".btnRefresh") + mode: 'on', + progressElem: page.querySelector('.refreshGuideProgress'), + taskKey: 'RefreshGuide', + button: page.querySelector('.btnRefresh') }); - }).on("pagehide", "#liveTvStatusPage", function () { + }).on('pagehide', '#liveTvStatusPage', function () { var page = this; taskButton({ - mode: "off", - progressElem: page.querySelector(".refreshGuideProgress"), - taskKey: "RefreshGuide", - button: page.querySelector(".btnRefresh") + mode: 'off', + progressElem: page.querySelector('.refreshGuideProgress'), + taskKey: 'RefreshGuide', + button: page.querySelector('.btnRefresh') }); }); }); diff --git a/src/controllers/livetvtuner.js b/src/controllers/livetvtuner.js index 55a86d4be7..e8a03e7f2b 100644 --- a/src/controllers/livetvtuner.js +++ b/src/controllers/livetvtuner.js @@ -1,34 +1,34 @@ -define(["globalize", "loading", "libraryMenu", "dom", "emby-input", "emby-button", "emby-checkbox", "emby-select"], function (globalize, loading, libraryMenu, dom) { - "use strict"; +define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button', 'emby-checkbox', 'emby-select'], function (globalize, loading, libraryMenu, dom) { + 'use strict'; function isM3uVariant(type) { - return ["nextpvr"].indexOf(type || "") !== -1; + return ['nextpvr'].indexOf(type || '') !== -1; } function fillTypes(view, currentId) { - return ApiClient.getJSON(ApiClient.getUrl("LiveTv/TunerHosts/Types")).then(function (types) { - var selectType = view.querySelector(".selectType"); - var html = ""; + return ApiClient.getJSON(ApiClient.getUrl('LiveTv/TunerHosts/Types')).then(function (types) { + var selectType = view.querySelector('.selectType'); + var html = ''; html += types.map(function (tuner) { - return '"; - }).join(""); + return ''; + }).join(''); html += '"; + html += globalize.translate('TabOther'); + html += ''; selectType.innerHTML = html; selectType.disabled = null != currentId; - selectType.value = ""; + selectType.value = ''; onTypeChange.call(selectType); }); } function reload(view, providerId) { - view.querySelector(".txtDevicePath").value = ""; - view.querySelector(".chkFavorite").checked = false; - view.querySelector(".txtDevicePath").value = ""; + view.querySelector('.txtDevicePath').value = ''; + view.querySelector('.chkFavorite').checked = false; + view.querySelector('.txtDevicePath').value = ''; if (providerId) { - ApiClient.getNamedConfiguration("livetv").then(function (config) { + ApiClient.getNamedConfiguration('livetv').then(function (config) { var info = config.TunerHosts.filter(function (i) { return i.Id === providerId; })[0]; @@ -38,8 +38,8 @@ define(["globalize", "loading", "libraryMenu", "dom", "emby-input", "emby-button } function fillTunerHostInfo(view, info) { - var selectType = view.querySelector(".selectType"); - var type = info.Type || ""; + var selectType = view.querySelector('.selectType'); + var type = info.Type || ''; if (info.Source && isM3uVariant(info.Source)) { type = info.Source; @@ -47,36 +47,36 @@ define(["globalize", "loading", "libraryMenu", "dom", "emby-input", "emby-button selectType.value = type; onTypeChange.call(selectType); - view.querySelector(".txtDevicePath").value = info.Url || ""; - view.querySelector(".txtFriendlyName").value = info.FriendlyName || ""; - view.querySelector(".txtUserAgent").value = info.UserAgent || ""; - view.querySelector(".fldDeviceId").value = info.DeviceId || ""; - view.querySelector(".chkFavorite").checked = info.ImportFavoritesOnly; - view.querySelector(".chkTranscode").checked = info.AllowHWTranscoding; - view.querySelector(".chkStreamLoop").checked = info.EnableStreamLooping; - view.querySelector(".txtTunerCount").value = info.TunerCount || "0"; + view.querySelector('.txtDevicePath').value = info.Url || ''; + view.querySelector('.txtFriendlyName').value = info.FriendlyName || ''; + view.querySelector('.txtUserAgent').value = info.UserAgent || ''; + view.querySelector('.fldDeviceId').value = info.DeviceId || ''; + view.querySelector('.chkFavorite').checked = info.ImportFavoritesOnly; + view.querySelector('.chkTranscode').checked = info.AllowHWTranscoding; + view.querySelector('.chkStreamLoop').checked = info.EnableStreamLooping; + view.querySelector('.txtTunerCount').value = info.TunerCount || '0'; } function submitForm(page) { loading.show(); var info = { - Type: page.querySelector(".selectType").value, - Url: page.querySelector(".txtDevicePath").value || null, - UserAgent: page.querySelector(".txtUserAgent").value || null, - FriendlyName: page.querySelector(".txtFriendlyName").value || null, - DeviceId: page.querySelector(".fldDeviceId").value || null, - TunerCount: page.querySelector(".txtTunerCount").value || 0, - ImportFavoritesOnly: page.querySelector(".chkFavorite").checked, - AllowHWTranscoding: page.querySelector(".chkTranscode").checked, - EnableStreamLooping: page.querySelector(".chkStreamLoop").checked + Type: page.querySelector('.selectType').value, + Url: page.querySelector('.txtDevicePath').value || null, + UserAgent: page.querySelector('.txtUserAgent').value || null, + FriendlyName: page.querySelector('.txtFriendlyName').value || null, + DeviceId: page.querySelector('.fldDeviceId').value || null, + TunerCount: page.querySelector('.txtTunerCount').value || 0, + ImportFavoritesOnly: page.querySelector('.chkFavorite').checked, + AllowHWTranscoding: page.querySelector('.chkTranscode').checked, + EnableStreamLooping: page.querySelector('.chkStreamLoop').checked }; if (isM3uVariant(info.Type)) { info.Source = info.Type; - info.Type = "m3u"; + info.Type = 'm3u'; } - var id = getParameterByName("id"); + var id = getParameterByName('id'); if (id) { info.Id = id; @@ -84,17 +84,17 @@ define(["globalize", "loading", "libraryMenu", "dom", "emby-input", "emby-button info.Id; ApiClient.ajax({ - type: "POST", - url: ApiClient.getUrl("LiveTv/TunerHosts"), + type: 'POST', + url: ApiClient.getUrl('LiveTv/TunerHosts'), data: JSON.stringify(info), - contentType: "application/json" + contentType: 'application/json' }).then(function (result) { Dashboard.processServerConfigurationUpdateResult(); - Dashboard.navigate("livetvstatus.html"); + Dashboard.navigate('livetvstatus.html'); }, function () { loading.hide(); Dashboard.alert({ - message: globalize.translate("ErrorSavingTvProvider") + message: globalize.translate('ErrorSavingTvProvider') }); }); } @@ -106,7 +106,7 @@ define(["globalize", "loading", "libraryMenu", "dom", "emby-input", "emby-button } function getDetectedDevice() { - return getRequirePromise(["tunerPicker"]).then(function (tunerPicker) { + return getRequirePromise(['tunerPicker']).then(function (tunerPicker) { return new tunerPicker().show({ serverId: ApiClient.serverId() }); @@ -115,113 +115,113 @@ define(["globalize", "loading", "libraryMenu", "dom", "emby-input", "emby-button function onTypeChange() { var value = this.value; - var view = dom.parentWithClass(this, "page"); - var mayIncludeUnsupportedDrmChannels = "hdhomerun" === value; - var supportsTranscoding = "hdhomerun" === value; - var supportsFavorites = "hdhomerun" === value; - var supportsTunerIpAddress = "hdhomerun" === value; - var supportsTunerFileOrUrl = "m3u" === value; - var supportsStreamLooping = "m3u" === value; - var supportsTunerCount = "m3u" === value; - var supportsUserAgent = "m3u" === value; - var suppportsSubmit = "other" !== value; + var view = dom.parentWithClass(this, 'page'); + var mayIncludeUnsupportedDrmChannels = 'hdhomerun' === value; + var supportsTranscoding = 'hdhomerun' === value; + var supportsFavorites = 'hdhomerun' === value; + var supportsTunerIpAddress = 'hdhomerun' === value; + var supportsTunerFileOrUrl = 'm3u' === value; + var supportsStreamLooping = 'm3u' === value; + var supportsTunerCount = 'm3u' === value; + var supportsUserAgent = 'm3u' === value; + var suppportsSubmit = 'other' !== value; var supportsSelectablePath = supportsTunerFileOrUrl; - var txtDevicePath = view.querySelector(".txtDevicePath"); + var txtDevicePath = view.querySelector('.txtDevicePath'); if (supportsTunerIpAddress) { - txtDevicePath.label(globalize.translate("LabelTunerIpAddress")); - view.querySelector(".fldPath").classList.remove("hide"); + txtDevicePath.label(globalize.translate('LabelTunerIpAddress')); + view.querySelector('.fldPath').classList.remove('hide'); } else if (supportsTunerFileOrUrl) { - txtDevicePath.label(globalize.translate("LabelFileOrUrl")); - view.querySelector(".fldPath").classList.remove("hide"); + txtDevicePath.label(globalize.translate('LabelFileOrUrl')); + view.querySelector('.fldPath').classList.remove('hide'); } else { - view.querySelector(".fldPath").classList.add("hide"); + view.querySelector('.fldPath').classList.add('hide'); } if (supportsSelectablePath) { - view.querySelector(".btnSelectPath").classList.remove("hide"); - view.querySelector(".txtDevicePath").setAttribute("required", "required"); + view.querySelector('.btnSelectPath').classList.remove('hide'); + view.querySelector('.txtDevicePath').setAttribute('required', 'required'); } else { - view.querySelector(".btnSelectPath").classList.add("hide"); - view.querySelector(".txtDevicePath").removeAttribute("required"); + view.querySelector('.btnSelectPath').classList.add('hide'); + view.querySelector('.txtDevicePath').removeAttribute('required'); } if (supportsUserAgent) { - view.querySelector(".fldUserAgent").classList.remove("hide"); + view.querySelector('.fldUserAgent').classList.remove('hide'); } else { - view.querySelector(".fldUserAgent").classList.add("hide"); + view.querySelector('.fldUserAgent').classList.add('hide'); } if (supportsFavorites) { - view.querySelector(".fldFavorites").classList.remove("hide"); + view.querySelector('.fldFavorites').classList.remove('hide'); } else { - view.querySelector(".fldFavorites").classList.add("hide"); + view.querySelector('.fldFavorites').classList.add('hide'); } if (supportsTranscoding) { - view.querySelector(".fldTranscode").classList.remove("hide"); + view.querySelector('.fldTranscode').classList.remove('hide'); } else { - view.querySelector(".fldTranscode").classList.add("hide"); + view.querySelector('.fldTranscode').classList.add('hide'); } if (supportsStreamLooping) { - view.querySelector(".fldStreamLoop").classList.remove("hide"); + view.querySelector('.fldStreamLoop').classList.remove('hide'); } else { - view.querySelector(".fldStreamLoop").classList.add("hide"); + view.querySelector('.fldStreamLoop').classList.add('hide'); } if (supportsTunerCount) { - view.querySelector(".fldTunerCount").classList.remove("hide"); - view.querySelector(".txtTunerCount").setAttribute("required", "required"); + view.querySelector('.fldTunerCount').classList.remove('hide'); + view.querySelector('.txtTunerCount').setAttribute('required', 'required'); } else { - view.querySelector(".fldTunerCount").classList.add("hide"); - view.querySelector(".txtTunerCount").removeAttribute("required"); + view.querySelector('.fldTunerCount').classList.add('hide'); + view.querySelector('.txtTunerCount').removeAttribute('required'); } if (mayIncludeUnsupportedDrmChannels) { - view.querySelector(".drmMessage").classList.remove("hide"); + view.querySelector('.drmMessage').classList.remove('hide'); } else { - view.querySelector(".drmMessage").classList.add("hide"); + view.querySelector('.drmMessage').classList.add('hide'); } if (suppportsSubmit) { - view.querySelector(".button-submit").classList.remove("hide"); + view.querySelector('.button-submit').classList.remove('hide'); } else { - view.querySelector(".button-submit").classList.add("hide"); + view.querySelector('.button-submit').classList.add('hide'); } } return function (view, params) { if (!params.id) { - view.querySelector(".btnDetect").classList.remove("hide"); + view.querySelector('.btnDetect').classList.remove('hide'); } - view.addEventListener("viewshow", function () { + view.addEventListener('viewshow', function () { var currentId = params.id; fillTypes(view, currentId).then(function () { reload(view, currentId); }); }); - view.querySelector("form").addEventListener("submit", function (e) { + view.querySelector('form').addEventListener('submit', function (e) { submitForm(view); e.preventDefault(); e.stopPropagation(); return false; }); - view.querySelector(".selectType").addEventListener("change", onTypeChange); - view.querySelector(".btnDetect").addEventListener("click", function () { + view.querySelector('.selectType').addEventListener('change', onTypeChange); + view.querySelector('.btnDetect').addEventListener('click', function () { getDetectedDevice().then(function (info) { fillTunerHostInfo(view, info); }); }); - view.querySelector(".btnSelectPath").addEventListener("click", function () { - require(["directorybrowser"], function (directoryBrowser) { + view.querySelector('.btnSelectPath').addEventListener('click', function () { + require(['directorybrowser'], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { if (path) { - view.querySelector(".txtDevicePath").value = path; + view.querySelector('.txtDevicePath').value = path; } picker.close(); diff --git a/src/controllers/movies/moviecollections.js b/src/controllers/movies/moviecollections.js index 4dfe23e7a6..e9ae599b92 100644 --- a/src/controllers/movies/moviecollections.js +++ b/src/controllers/movies/moviecollections.js @@ -1,5 +1,5 @@ -define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "userSettings", "globalize", "emby-itemscontainer"], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) { - "use strict"; +define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) { + 'use strict'; return function (view, params, tabContent) { function getPageData(context) { @@ -9,16 +9,16 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB if (!pageData) { pageData = data[key] = { query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "BoxSet", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'BoxSet', Recursive: true, - Fields: "PrimaryImageAspectRatio,SortName", + Fields: 'PrimaryImageAspectRatio,SortName', ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || "Poster" + view: libraryBrowser.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -38,7 +38,7 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey("moviecollections"); + context.savedQueryKey = libraryBrowser.getSavedQueryKey('moviecollections'); } return context.savedQueryKey; @@ -46,17 +46,17 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB function onViewStyleChange() { var viewStyle = self.getCurrentViewStyle(); - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var itemsContainer = tabContent.querySelector('.itemsContainer'); - if ("List" == viewStyle) { - itemsContainer.classList.add("vertical-list"); - itemsContainer.classList.remove("vertical-wrap"); + if ('List' == viewStyle) { + itemsContainer.classList.add('vertical-list'); + itemsContainer.classList.remove('vertical-wrap'); } else { - itemsContainer.classList.remove("vertical-list"); - itemsContainer.classList.add("vertical-wrap"); + itemsContainer.classList.remove('vertical-list'); + itemsContainer.classList.add('vertical-wrap'); } - itemsContainer.innerHTML = ""; + itemsContainer.innerHTML = ''; } function reloadItems(page) { @@ -99,45 +99,45 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB filterButton: false }); var viewStyle = self.getCurrentViewStyle(); - if (viewStyle == "Thumb") { + if (viewStyle == 'Thumb') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, - context: "movies", + context: 'movies', overlayPlayButton: true, centerText: true, showTitle: true }); - } else if (viewStyle == "ThumbCard") { + } else if (viewStyle == 'ThumbCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, - context: "movies", + context: 'movies', lazy: true, cardLayout: true, showTitle: true }); - } else if (viewStyle == "Banner") { + } else if (viewStyle == 'Banner') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "banner", + shape: 'banner', preferBanner: true, - context: "movies", + context: 'movies', lazy: true }); - } else if (viewStyle == "List") { + } else if (viewStyle == 'List') { html = listView.getListViewHtml({ items: result.Items, - context: "movies", + context: 'movies', sortBy: query.SortBy }); - } else if (viewStyle == "PosterCard") { + } else if (viewStyle == 'PosterCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "auto", - context: "movies", + shape: 'auto', + context: 'movies', showTitle: true, centerText: false, cardLayout: true @@ -145,8 +145,8 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB } else { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "auto", - context: "movies", + shape: 'auto', + context: 'movies', centerText: true, overlayPlayButton: true, showTitle: true @@ -154,34 +154,34 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB } var i; var length; - var elems = tabContent.querySelectorAll(".paging"); + var elems = tabContent.querySelectorAll('.paging'); for (i = 0, length = elems.length; i < length; i++) { elems[i].innerHTML = pagingHtml; } - elems = tabContent.querySelectorAll(".btnNextPage"); + elems = tabContent.querySelectorAll('.btnNextPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onNextPageClick); + elems[i].addEventListener('click', onNextPageClick); } - elems = tabContent.querySelectorAll(".btnPreviousPage"); + elems = tabContent.querySelectorAll('.btnPreviousPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onPreviousPageClick); + elems[i].addEventListener('click', onPreviousPageClick); } if (!result.Items.length) { - html = '

' + globalize.translate("MessageNoCollectionsAvailable") + "

"; + html = '

' + globalize.translate('MessageNoCollectionsAvailable') + '

'; } - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(page); }); }); @@ -196,23 +196,23 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB }; function initPage(tabContent) { - tabContent.querySelector(".btnSort").addEventListener("click", function (e) { + tabContent.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ - name: globalize.translate("OptionNameSort"), - id: "SortName" + name: globalize.translate('OptionNameSort'), + id: 'SortName' }, { - name: globalize.translate("OptionImdbRating"), - id: "CommunityRating,SortName" + name: globalize.translate('OptionImdbRating'), + id: 'CommunityRating,SortName' }, { - name: globalize.translate("OptionDateAdded"), - id: "DateCreated,SortName" + name: globalize.translate('OptionDateAdded'), + id: 'DateCreated,SortName' }, { - name: globalize.translate("OptionParentalRating"), - id: "OfficialRating,SortName" + name: globalize.translate('OptionParentalRating'), + id: 'OfficialRating,SortName' }, { - name: globalize.translate("OptionReleaseDate"), - id: "PremiereDate,SortName" + name: globalize.translate('OptionReleaseDate'), + id: 'PremiereDate,SortName' }], callback: function () { getQuery(tabContent).StartIndex = 0; @@ -222,11 +222,11 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB button: e.target }); }); - var btnSelectView = tabContent.querySelector(".btnSelectView"); - btnSelectView.addEventListener("click", function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "List,Poster,PosterCard,Thumb,ThumbCard".split(",")); + var btnSelectView = tabContent.querySelector('.btnSelectView'); + btnSelectView.addEventListener('click', function (e) { + libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); - btnSelectView.addEventListener("layoutchange", function (e) { + btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; getPageData(tabContent).view = viewStyle; libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); @@ -234,8 +234,8 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB onViewStyleChange(); reloadItems(tabContent); }); - tabContent.querySelector(".btnNewCollection").addEventListener("click", function () { - require(["collectionEditor"], function (collectionEditor) { + tabContent.querySelector('.btnNewCollection').addEventListener('click', function () { + require(['collectionEditor'], function (collectionEditor) { var serverId = ApiClient.serverInfo().Id; new collectionEditor().show({ items: [], diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 734cc34c44..073697625c 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -1,5 +1,5 @@ -define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader", "apphost", "globalize", "appRouter", "dom", "emby-button"], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) { - "use strict"; +define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'appRouter', 'dom', 'emby-button'], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) { + 'use strict'; return function (view, params, tabContent) { function getPageData() { @@ -9,13 +9,13 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader if (!pageData) { pageData = data[key] = { query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Movie", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'Movie', Recursive: true, EnableTotalRecordCount: false }, - view: "Poster" + view: 'Poster' }; pageData.query.ParentId = params.topParentId; libraryBrowser.loadSavedQueryValues(key, pageData.query); @@ -29,7 +29,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader } function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey("moviegenres"); + return libraryBrowser.getSavedQueryKey('moviegenres'); } function getPromise() { @@ -43,29 +43,29 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader } function getThumbShape() { - return enableScrollX() ? "overflowBackdrop" : "backdrop"; + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; } function getPortraitShape() { - return enableScrollX() ? "overflowPortrait" : "portrait"; + return enableScrollX() ? 'overflowPortrait' : 'portrait'; } function fillItemsContainer(elem) { - var id = elem.getAttribute("data-id"); + var id = elem.getAttribute('data-id'); var viewStyle = self.getCurrentViewStyle(); - var limit = "Thumb" == viewStyle || "ThumbCard" == viewStyle ? 5 : 9; + var limit = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 5 : 9; if (enableScrollX()) { limit = 10; } - var enableImageTypes = "Thumb" == viewStyle || "ThumbCard" == viewStyle ? "Primary,Backdrop,Thumb" : "Primary"; + var enableImageTypes = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 'Primary,Backdrop,Thumb' : 'Primary'; var query = { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Movie", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'Movie', Recursive: true, - Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo', ImageTypeLimit: 1, EnableImageTypes: enableImageTypes, Limit: limit, @@ -74,9 +74,9 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader ParentId: params.topParentId }; ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) { - var supportsImageAnalysis = appHost.supports("imageanalysis"); + var supportsImageAnalysis = appHost.supports('imageanalysis'); - if (viewStyle == "Thumb") { + if (viewStyle == 'Thumb') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getThumbShape(), @@ -87,7 +87,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader overlayMoreButton: true, allowBottomPadding: false }); - } else if (viewStyle == "ThumbCard") { + } else if (viewStyle == 'ThumbCard') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getThumbShape(), @@ -98,7 +98,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader cardLayout: true, showYear: true }); - } else if (viewStyle == "PosterCard") { + } else if (viewStyle == 'PosterCard') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getPortraitShape(), @@ -108,7 +108,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader cardLayout: true, showYear: true }); - } else if (viewStyle == "Poster") { + } else if (viewStyle == 'Poster') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getPortraitShape(), @@ -121,7 +121,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader }); } if (result.Items.length >= query.Limit) { - tabContent.querySelector(".btnMoreFromGenre" + id + " .material-icons").classList.remove("hide"); + tabContent.querySelector('.btnMoreFromGenre' + id + ' .material-icons').classList.remove('hide'); } }); } @@ -129,8 +129,8 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader function reloadItems(context, promise) { var query = getQuery(); promise.then(function (result) { - var elem = context.querySelector("#items"); - var html = ""; + var elem = context.querySelector('#items'); + var html = ''; var items = result.Items; for (var i = 0, length = items.length; i < length; i++) { @@ -139,20 +139,20 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '
'; html += '"; + html += ''; + html += '
'; if (enableScrollX()) { - var scrollXClass = "scrollX hiddenScrollX"; + var scrollXClass = 'scrollX hiddenScrollX'; if (layoutManager.tv) { - scrollXClass += "smoothScrollX padded-top-focusscale padded-bottom-focusscale"; + scrollXClass += 'smoothScrollX padded-top-focusscale padded-bottom-focusscale'; } html += '
'; @@ -160,8 +160,8 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '
'; } - html += "
"; - html += "
"; + html += ''; + html += ''; } elem.innerHTML = html; @@ -180,7 +180,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader var data = {}; self.getViewStyles = function () { - return "Poster,PosterCard,Thumb,ThumbCard".split(","); + return 'Poster,PosterCard,Thumb,ThumbCard'.split(','); }; self.getCurrentViewStyle = function () { diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 9748da62dd..89bcc215e6 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -1,17 +1,17 @@ -define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicker", "listView", "cardBuilder", "globalize", "emby-itemscontainer"], function (loading, layoutManager, userSettings, events, libraryBrowser, alphaPicker, listView, cardBuilder, globalize) { - "use strict"; +define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser', 'alphaPicker', 'listView', 'cardBuilder', 'globalize', 'emby-itemscontainer'], function (loading, layoutManager, userSettings, events, libraryBrowser, alphaPicker, listView, cardBuilder, globalize) { + 'use strict'; return function (view, params, tabContent, options) { function onViewStyleChange() { - if (self.getCurrentViewStyle() == "List") { - itemsContainer.classList.add("vertical-list"); - itemsContainer.classList.remove("vertical-wrap"); + if (self.getCurrentViewStyle() == 'List') { + itemsContainer.classList.add('vertical-list'); + itemsContainer.classList.remove('vertical-wrap'); } else { - itemsContainer.classList.remove("vertical-list"); - itemsContainer.classList.add("vertical-wrap"); + itemsContainer.classList.remove('vertical-list'); + itemsContainer.classList.add('vertical-wrap'); } - itemsContainer.innerHTML = ""; + itemsContainer.innerHTML = ''; } function updateFilterControls() { @@ -63,26 +63,26 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", }); var i; var length; - var elems = tabContent.querySelectorAll(".paging"); + var elems = tabContent.querySelectorAll('.paging'); for (i = 0, length = elems.length; i < length; i++) { elems[i].innerHTML = pagingHtml; } - elems = tabContent.querySelectorAll(".btnNextPage"); + elems = tabContent.querySelectorAll('.btnNextPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onNextPageClick); + elems[i].addEventListener('click', onNextPageClick); } - elems = tabContent.querySelectorAll(".btnPreviousPage"); + elems = tabContent.querySelectorAll('.btnPreviousPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onPreviousPageClick); + elems[i].addEventListener('click', onPreviousPageClick); } isLoading = false; loading.hide(); - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(tabContent); }); } @@ -91,49 +91,49 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", var html; var viewStyle = self.getCurrentViewStyle(); - if (viewStyle == "Thumb") { + if (viewStyle == 'Thumb') { html = cardBuilder.getCardsHtml({ items: items, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, - context: "movies", + context: 'movies', lazy: true, overlayPlayButton: true, showTitle: true, showYear: true, centerText: true }); - } else if (viewStyle == "ThumbCard") { + } else if (viewStyle == 'ThumbCard') { html = cardBuilder.getCardsHtml({ items: items, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, - context: "movies", + context: 'movies', lazy: true, cardLayout: true, showTitle: true, showYear: true, centerText: true }); - } else if (viewStyle == "Banner") { + } else if (viewStyle == 'Banner') { html = cardBuilder.getCardsHtml({ items: items, - shape: "banner", + shape: 'banner', preferBanner: true, - context: "movies", + context: 'movies', lazy: true }); - } else if (viewStyle == "List") { + } else if (viewStyle == 'List') { html = listView.getListViewHtml({ items: items, - context: "movies", + context: 'movies', sortBy: query.SortBy }); - } else if (viewStyle == "PosterCard") { + } else if (viewStyle == 'PosterCard') { html = cardBuilder.getCardsHtml({ items: items, - shape: "portrait", - context: "movies", + shape: 'portrait', + context: 'movies', showTitle: true, showYear: true, centerText: true, @@ -143,8 +143,8 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", } else { html = cardBuilder.getCardsHtml({ items: items, - shape: "portrait", - context: "movies", + shape: 'portrait', + context: 'movies', overlayPlayButton: true, showTitle: true, showYear: true, @@ -159,10 +159,10 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", itemsContainer.fetchData = fetchData; itemsContainer.getItemsHtml = getItemsHtml; itemsContainer.afterRefresh = afterRefresh; - var alphaPickerElement = tabContent.querySelector(".alphaPicker"); + var alphaPickerElement = tabContent.querySelector('.alphaPicker'); if (alphaPickerElement) { - alphaPickerElement.addEventListener("alphavaluechanged", function (e) { + alphaPickerElement.addEventListener('alphavaluechanged', function (e) { var newValue = e.detail.value; query.NameStartsWithOrGreater = newValue; query.StartIndex = 0; @@ -170,53 +170,53 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", }); self.alphaPicker = new alphaPicker({ element: alphaPickerElement, - valueChangeEvent: "click" + valueChangeEvent: 'click' }); - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - itemsContainer.classList.add("padded-right-withalphapicker"); + tabContent.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); + alphaPickerElement.classList.add('alphaPicker-fixed-right'); + itemsContainer.classList.add('padded-right-withalphapicker'); } - var btnFilter = tabContent.querySelector(".btnFilter"); + var btnFilter = tabContent.querySelector('.btnFilter'); if (btnFilter) { - btnFilter.addEventListener("click", function () { + btnFilter.addEventListener('click', function () { self.showFilterMenu(); }); } - var btnSort = tabContent.querySelector(".btnSort"); + var btnSort = tabContent.querySelector('.btnSort'); if (btnSort) { - btnSort.addEventListener("click", function (e) { + btnSort.addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ - name: globalize.translate("OptionNameSort"), - id: "SortName,ProductionYear" + name: globalize.translate('OptionNameSort'), + id: 'SortName,ProductionYear' }, { - name: globalize.translate("OptionImdbRating"), - id: "CommunityRating,SortName,ProductionYear" + name: globalize.translate('OptionImdbRating'), + id: 'CommunityRating,SortName,ProductionYear' }, { - name: globalize.translate("OptionCriticRating"), - id: "CriticRating,SortName,ProductionYear" + name: globalize.translate('OptionCriticRating'), + id: 'CriticRating,SortName,ProductionYear' }, { - name: globalize.translate("OptionDateAdded"), - id: "DateCreated,SortName,ProductionYear" + name: globalize.translate('OptionDateAdded'), + id: 'DateCreated,SortName,ProductionYear' }, { - name: globalize.translate("OptionDatePlayed"), - id: "DatePlayed,SortName,ProductionYear" + name: globalize.translate('OptionDatePlayed'), + id: 'DatePlayed,SortName,ProductionYear' }, { - name: globalize.translate("OptionParentalRating"), - id: "OfficialRating,SortName,ProductionYear" + name: globalize.translate('OptionParentalRating'), + id: 'OfficialRating,SortName,ProductionYear' }, { - name: globalize.translate("OptionPlayCount"), - id: "PlayCount,SortName,ProductionYear" + name: globalize.translate('OptionPlayCount'), + id: 'PlayCount,SortName,ProductionYear' }, { - name: globalize.translate("OptionReleaseDate"), - id: "PremiereDate,SortName,ProductionYear" + name: globalize.translate('OptionReleaseDate'), + id: 'PremiereDate,SortName,ProductionYear' }, { - name: globalize.translate("OptionRuntime"), - id: "Runtime,SortName,ProductionYear" + name: globalize.translate('OptionRuntime'), + id: 'Runtime,SortName,ProductionYear' }], callback: function () { query.StartIndex = 0; @@ -228,11 +228,11 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", }); }); } - var btnSelectView = tabContent.querySelector(".btnSelectView"); - btnSelectView.addEventListener("click", function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "Banner,List,Poster,PosterCard,Thumb,ThumbCard".split(",")); + var btnSelectView = tabContent.querySelector('.btnSelectView'); + btnSelectView.addEventListener('click', function (e) { + libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); - btnSelectView.addEventListener("layoutchange", function (e) { + btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; userSettings.set(savedViewKey, viewStyle); query.StartIndex = 0; @@ -242,17 +242,17 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", } var self = this; - var itemsContainer = tabContent.querySelector(".itemsContainer"); - var savedQueryKey = params.topParentId + "-" + options.mode; - var savedViewKey = savedQueryKey + "-view"; + var itemsContainer = tabContent.querySelector('.itemsContainer'); + var savedQueryKey = params.topParentId + '-' + options.mode; + var savedViewKey = savedQueryKey + '-view'; var query = { - SortBy: "SortName,ProductionYear", - SortOrder: "Ascending", - IncludeItemTypes: "Movie", + SortBy: 'SortName,ProductionYear', + SortOrder: 'Ascending', + IncludeItemTypes: 'Movie', Recursive: true, - Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo', ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0, ParentId: params.topParentId }; @@ -263,20 +263,20 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", var isLoading = false; - if (options.mode === "favorites") { + if (options.mode === 'favorites') { query.IsFavorite = true; } query = userSettings.loadQuerySettings(savedQueryKey, query); self.showFilterMenu = function () { - require(["components/filterdialog/filterdialog"], function (filterDialogFactory) { + require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { var filterDialog = new filterDialogFactory({ query: query, - mode: "movies", + mode: 'movies', serverId: ApiClient.serverId() }); - events.on(filterDialog, "filterchange", function () { + events.on(filterDialog, 'filterchange', function () { query.StartIndex = 0; itemsContainer.refreshItems(); }); @@ -285,7 +285,7 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", }; self.getCurrentViewStyle = function () { - return userSettings.get(savedViewKey) || "Poster"; + return userSettings.get(savedViewKey) || 'Poster'; }; self.initTab = function () { diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 5f341d3e3a..d948c1cef7 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -1,31 +1,31 @@ -define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "globalize", "emby-scroller", "emby-itemscontainer", "emby-tabs", "emby-button"], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager, globalize) { - "use strict"; +define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu', 'mainTabsManager', 'cardBuilder', 'dom', 'imageLoader', 'playbackManager', 'globalize', 'emby-scroller', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager, globalize) { + 'use strict'; function enableScrollX() { return !layoutManager.desktop; } function getPortraitShape() { - return enableScrollX() ? "overflowPortrait" : "portrait"; + return enableScrollX() ? 'overflowPortrait' : 'portrait'; } function getThumbShape() { - return enableScrollX() ? "overflowBackdrop" : "backdrop"; + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; } function loadLatest(page, userId, parentId) { var options = { - IncludeItemTypes: "Movie", + IncludeItemTypes: 'Movie', Limit: 18, - Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo', ParentId: parentId, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableTotalRecordCount: false }; - ApiClient.getJSON(ApiClient.getUrl("Users/" + userId + "/Items/Latest", options)).then(function (items) { + ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) { var allowBottomPadding = !enableScrollX(); - var container = page.querySelector("#recentlyAddedItems"); + var container = page.querySelector('#recentlyAddedItems'); cardBuilder.buildCards(items, { itemsContainer: container, shape: getPortraitShape(), @@ -45,28 +45,28 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" function loadResume(page, userId, parentId) { var screenWidth = dom.getWindowSize().innerWidth; var options = { - SortBy: "DatePlayed", - SortOrder: "Descending", - IncludeItemTypes: "Movie", - Filters: "IsResumable", + SortBy: 'DatePlayed', + SortOrder: 'Descending', + IncludeItemTypes: 'Movie', + Filters: 'IsResumable', Limit: screenWidth >= 1920 ? 5 : screenWidth >= 1600 ? 5 : 3, Recursive: true, - Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo', CollapseBoxSetItems: false, ParentId: parentId, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableTotalRecordCount: false }; ApiClient.getItems(userId, options).then(function (result) { if (result.Items.length) { - page.querySelector("#resumableSection").classList.remove("hide"); + page.querySelector('#resumableSection').classList.remove('hide'); } else { - page.querySelector("#resumableSection").classList.add("hide"); + page.querySelector('#resumableSection').classList.add('hide'); } var allowBottomPadding = !enableScrollX(); - var container = page.querySelector("#resumableItems"); + var container = page.querySelector('#resumableItems'); cardBuilder.buildCards(result.Items, { itemsContainer: container, preferThumb: true, @@ -86,31 +86,31 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" } function getRecommendationHtml(recommendation) { - var html = ""; - var title = ""; + var html = ''; + var title = ''; switch (recommendation.RecommendationType) { - case "SimilarToRecentlyPlayed": - title = globalize.translate("RecommendationBecauseYouWatched", recommendation.BaselineItemName); + case 'SimilarToRecentlyPlayed': + title = globalize.translate('RecommendationBecauseYouWatched', recommendation.BaselineItemName); break; - case "SimilarToLikedItem": - title = globalize.translate("RecommendationBecauseYouLike", recommendation.BaselineItemName); + case 'SimilarToLikedItem': + title = globalize.translate('RecommendationBecauseYouLike', recommendation.BaselineItemName); break; - case "HasDirectorFromRecentlyPlayed": - case "HasLikedDirector": - title = globalize.translate("RecommendationDirectedBy", recommendation.BaselineItemName); + case 'HasDirectorFromRecentlyPlayed': + case 'HasLikedDirector': + title = globalize.translate('RecommendationDirectedBy', recommendation.BaselineItemName); break; - case "HasActorFromRecentlyPlayed": - case "HasLikedActor": - title = globalize.translate("RecommendationStarring", recommendation.BaselineItemName); + case 'HasActorFromRecentlyPlayed': + case 'HasLikedActor': + title = globalize.translate('RecommendationStarring', recommendation.BaselineItemName); break; } html += '
'; - html += '

' + title + "

"; + html += '

' + title + '

'; var allowBottomPadding = true; if (enableScrollX()) { @@ -133,31 +133,31 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" if (enableScrollX()) { html += '
'; } - html += ""; - html += ""; + html += ''; + html += ''; return html; } function loadSuggestions(page, userId, parentId) { var screenWidth = dom.getWindowSize().innerWidth; - var url = ApiClient.getUrl("Movies/Recommendations", { + var url = ApiClient.getUrl('Movies/Recommendations', { userId: userId, categoryLimit: 6, ItemLimit: screenWidth >= 1920 ? 8 : screenWidth >= 1600 ? 8 : screenWidth >= 1200 ? 6 : 5, - Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo', ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb" + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb' }); ApiClient.getJSON(url).then(function (recommendations) { if (!recommendations.length) { - page.querySelector(".noItemsMessage").classList.remove("hide"); - page.querySelector(".recommendations").innerHTML = ""; + page.querySelector('.noItemsMessage').classList.remove('hide'); + page.querySelector('.recommendations').innerHTML = ''; return; } - var html = recommendations.map(getRecommendationHtml).join(""); - page.querySelector(".noItemsMessage").classList.add("hide"); - var recs = page.querySelector(".recommendations"); + var html = recommendations.map(getRecommendationHtml).join(''); + page.querySelector('.noItemsMessage').classList.add('hide'); + var recs = page.querySelector('.recommendations'); recs.innerHTML = html; imageLoader.lazyChildren(recs); @@ -167,33 +167,33 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" } function autoFocus(page) { - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(page); }); } function setScrollClasses(elem, scrollX) { if (scrollX) { - elem.classList.add("hiddenScrollX"); + elem.classList.add('hiddenScrollX'); if (layoutManager.tv) { - elem.classList.add("smoothScrollX"); - elem.classList.add("padded-top-focusscale"); - elem.classList.add("padded-bottom-focusscale"); + elem.classList.add('smoothScrollX'); + elem.classList.add('padded-top-focusscale'); + elem.classList.add('padded-bottom-focusscale'); } - elem.classList.add("scrollX"); - elem.classList.remove("vertical-wrap"); + elem.classList.add('scrollX'); + elem.classList.remove('vertical-wrap'); } else { - elem.classList.remove("hiddenScrollX"); - elem.classList.remove("smoothScrollX"); - elem.classList.remove("scrollX"); - elem.classList.add("vertical-wrap"); + elem.classList.remove('hiddenScrollX'); + elem.classList.remove('smoothScrollX'); + elem.classList.remove('scrollX'); + elem.classList.add('vertical-wrap'); } } function initSuggestedTab(page, tabContent) { - var containers = tabContent.querySelectorAll(".itemsContainer"); + var containers = tabContent.querySelectorAll('.itemsContainer'); for (var i = 0, length = containers.length; i < length; i++) { setScrollClasses(containers[i], enableScrollX()); @@ -203,7 +203,7 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" function loadSuggestionsTab(view, params, tabContent) { var parentId = params.topParentId; var userId = ApiClient.getCurrentUserId(); - console.debug("loadSuggestionsTab"); + console.debug('loadSuggestionsTab'); loadResume(tabContent, userId, parentId); loadLatest(tabContent, userId, parentId); loadSuggestions(tabContent, userId, parentId); @@ -211,35 +211,35 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" function getTabs() { return [{ - name: globalize.translate("Movies") + name: globalize.translate('Movies') }, { - name: globalize.translate("TabSuggestions") + name: globalize.translate('TabSuggestions') }, { - name: globalize.translate("TabTrailers") + name: globalize.translate('TabTrailers') }, { - name: globalize.translate("TabFavorites") + name: globalize.translate('TabFavorites') }, { - name: globalize.translate("TabCollections") + name: globalize.translate('TabCollections') }, { - name: globalize.translate("TabGenres") + name: globalize.translate('TabGenres') }, { - name: globalize.translate("ButtonSearch"), - cssClass: "searchTabButton" + name: globalize.translate('ButtonSearch'), + cssClass: 'searchTabButton' }]; } function getDefaultTabIndex(folderId) { - switch (userSettings.get("landing-" + folderId)) { - case "suggestions": + switch (userSettings.get('landing-' + folderId)) { + case 'suggestions': return 1; - case "favorites": + case 'favorites': return 3; - case "collections": + case 'collections': return 4; - case "genres": + case 'genres': return 5; default: @@ -258,7 +258,7 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" } function getTabContainers() { - return view.querySelectorAll(".pageTabContent"); + return view.querySelectorAll('.pageTabContent'); } function initTabs() { @@ -270,30 +270,30 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" switch (index) { case 0: - depends.push("controllers/movies/movies"); + depends.push('controllers/movies/movies'); break; case 1: break; case 2: - depends.push("controllers/movies/movietrailers"); + depends.push('controllers/movies/movietrailers'); break; case 3: - depends.push("controllers/movies/movies"); + depends.push('controllers/movies/movies'); break; case 4: - depends.push("controllers/movies/moviecollections"); + depends.push('controllers/movies/moviecollections'); break; case 5: - depends.push("controllers/movies/moviegenres"); + depends.push('controllers/movies/moviegenres'); break; case 6: - depends.push("scripts/searchtab"); + depends.push('scripts/searchtab'); } require(depends, function (controllerFactory) { @@ -313,12 +313,12 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" controller = self; } else if (index === 6) { controller = new controllerFactory(view, tabContent, { - collectionType: "movies", + collectionType: 'movies', parentId: params.topParentId }); } else if (index == 0 || index == 3) { controller = new controllerFactory(view, params, tabContent, { - mode: index ? "favorites" : "movies" + mode: index ? 'favorites' : 'movies' }); } else { controller = new controllerFactory(view, params, tabContent); @@ -356,7 +356,7 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" } function onPlaybackStop(e, state) { - if (state.NowPlayingItem && state.NowPlayingItem.MediaType == "Video") { + if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') { renderedTabs = []; mainTabsManager.getTabsElement().triggerTabChange(); } @@ -364,9 +364,9 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" function onInputCommand(e) { switch (e.detail.command) { - case "search": + case 'search': e.preventDefault(); - Dashboard.navigate("search.html?collectionType=movies&parentId=" + params.topParentId); + Dashboard.navigate('search.html?collectionType=movies&parentId=' + params.topParentId); } } @@ -388,28 +388,28 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" var tabControllers = []; var renderedTabs = []; - view.addEventListener("viewshow", function (e) { - if (isViewRestored = e.detail.isRestored, initTabs(), !view.getAttribute("data-title")) { + view.addEventListener('viewshow', function (e) { + if (isViewRestored = e.detail.isRestored, initTabs(), !view.getAttribute('data-title')) { var parentId = params.topParentId; if (parentId) { ApiClient.getItem(ApiClient.getCurrentUserId(), parentId).then(function (item) { - view.setAttribute("data-title", item.Name); + view.setAttribute('data-title', item.Name); libraryMenu.setTitle(item.Name); }); } else { - view.setAttribute("data-title", globalize.translate("TabMovies")); - libraryMenu.setTitle(globalize.translate("TabMovies")); + view.setAttribute('data-title', globalize.translate('TabMovies')); + libraryMenu.setTitle(globalize.translate('TabMovies')); } } - events.on(playbackManager, "playbackstop", onPlaybackStop); + events.on(playbackManager, 'playbackstop', onPlaybackStop); inputManager.on(window, onInputCommand); }); - view.addEventListener("viewbeforehide", function (e) { + view.addEventListener('viewbeforehide', function (e) { inputManager.off(window, onInputCommand); }); - view.addEventListener("viewdestroy", function (e) { + view.addEventListener('viewdestroy', function (e) { tabControllers.forEach(function (t) { if (t.destroy) { t.destroy(); diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js index 590b204b22..25d41d4fba 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -1,5 +1,5 @@ -define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "alphaPicker", "listView", "cardBuilder", "userSettings", "globalize", "emby-itemscontainer"], function (layoutManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, userSettings, globalize) { - "use strict"; +define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, userSettings, globalize) { + 'use strict'; return function (view, params, tabContent) { function getPageData(context) { @@ -9,16 +9,16 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " if (!pageData) { pageData = data[key] = { query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Trailer", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'Trailer', Recursive: true, - Fields: "PrimaryImageAspectRatio,SortName,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,SortName,BasicSyncInfo', ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || "Poster" + view: libraryBrowser.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -37,7 +37,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey("trailers"); + context.savedQueryKey = libraryBrowser.getSavedQueryKey('trailers'); } return context.savedQueryKey; @@ -85,43 +85,43 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " var html; var viewStyle = self.getCurrentViewStyle(); - if (viewStyle == "Thumb") { + if (viewStyle == 'Thumb') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, - context: "movies", + context: 'movies', overlayPlayButton: true }); - } else if (viewStyle == "ThumbCard") { + } else if (viewStyle == 'ThumbCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, - context: "movies", + context: 'movies', cardLayout: true, showTitle: true, showYear: true, centerText: true }); - } else if (viewStyle == "Banner") { + } else if (viewStyle == 'Banner') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "banner", + shape: 'banner', preferBanner: true, - context: "movies" + context: 'movies' }); - } else if (viewStyle == "List") { + } else if (viewStyle == 'List') { html = listView.getListViewHtml({ items: result.Items, - context: "movies", + context: 'movies', sortBy: query.SortBy }); - } else if (viewStyle == "PosterCard") { + } else if (viewStyle == 'PosterCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "portrait", - context: "movies", + shape: 'portrait', + context: 'movies', showTitle: true, showYear: true, cardLayout: true, @@ -130,8 +130,8 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " } else { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "portrait", - context: "movies", + shape: 'portrait', + context: 'movies', centerText: true, overlayPlayButton: true, showTitle: true, @@ -141,27 +141,27 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " var i; var length; - var elems = tabContent.querySelectorAll(".paging"); + var elems = tabContent.querySelectorAll('.paging'); for (i = 0, length = elems.length; i < length; i++) { elems[i].innerHTML = pagingHtml; } - elems = tabContent.querySelectorAll(".btnNextPage"); + elems = tabContent.querySelectorAll('.btnNextPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onNextPageClick); + elems[i].addEventListener('click', onNextPageClick); } - elems = tabContent.querySelectorAll(".btnPreviousPage"); + elems = tabContent.querySelectorAll('.btnPreviousPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onPreviousPageClick); + elems[i].addEventListener('click', onPreviousPageClick); } if (!result.Items.length) { - html = '

' + globalize.translate("MessageNoTrailersFound") + "

"; + html = '

' + globalize.translate('MessageNoTrailersFound') + '

'; } - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); libraryBrowser.saveQueryValues(getSavedQueryKey(tabContent), query); @@ -180,13 +180,13 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " var isLoading = false; self.showFilterMenu = function () { - require(["components/filterdialog/filterdialog"], function (filterDialogFactory) { + require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { var filterDialog = new filterDialogFactory({ query: getQuery(tabContent), - mode: "movies", + mode: 'movies', serverId: ApiClient.serverId() }); - events.on(filterDialog, "filterchange", function () { + events.on(filterDialog, 'filterchange', function () { getQuery(tabContent).StartIndex = 0; reloadItems(); }); @@ -199,9 +199,9 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " }; function initPage(tabContent) { - var alphaPickerElement = tabContent.querySelector(".alphaPicker"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); - alphaPickerElement.addEventListener("alphavaluechanged", function (e) { + var alphaPickerElement = tabContent.querySelector('.alphaPicker'); + var itemsContainer = tabContent.querySelector('.itemsContainer'); + alphaPickerElement.addEventListener('alphavaluechanged', function (e) { var newValue = e.detail.value; var query = getQuery(tabContent); query.NameStartsWithOrGreater = newValue; @@ -210,39 +210,39 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " }); self.alphaPicker = new alphaPicker({ element: alphaPickerElement, - valueChangeEvent: "click" + valueChangeEvent: 'click' }); - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - itemsContainer.classList.add("padded-right-withalphapicker"); + tabContent.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); + alphaPickerElement.classList.add('alphaPicker-fixed-right'); + itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector(".btnFilter").addEventListener("click", function () { + tabContent.querySelector('.btnFilter').addEventListener('click', function () { self.showFilterMenu(); }); - tabContent.querySelector(".btnSort").addEventListener("click", function (e) { + tabContent.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ - name: globalize.translate("OptionNameSort"), - id: "SortName" + name: globalize.translate('OptionNameSort'), + id: 'SortName' }, { - name: globalize.translate("OptionImdbRating"), - id: "CommunityRating,SortName" + name: globalize.translate('OptionImdbRating'), + id: 'CommunityRating,SortName' }, { - name: globalize.translate("OptionDateAdded"), - id: "DateCreated,SortName" + name: globalize.translate('OptionDateAdded'), + id: 'DateCreated,SortName' }, { - name: globalize.translate("OptionDatePlayed"), - id: "DatePlayed,SortName" + name: globalize.translate('OptionDatePlayed'), + id: 'DatePlayed,SortName' }, { - name: globalize.translate("OptionParentalRating"), - id: "OfficialRating,SortName" + name: globalize.translate('OptionParentalRating'), + id: 'OfficialRating,SortName' }, { - name: globalize.translate("OptionPlayCount"), - id: "PlayCount,SortName" + name: globalize.translate('OptionPlayCount'), + id: 'PlayCount,SortName' }, { - name: globalize.translate("OptionReleaseDate"), - id: "PremiereDate,SortName" + name: globalize.translate('OptionReleaseDate'), + id: 'PremiereDate,SortName' }], callback: function () { getQuery(tabContent).StartIndex = 0; diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index 580f30bce9..ecb51f9dc3 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -1,5 +1,5 @@ -define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser", "imageLoader", "alphaPicker", "listView", "cardBuilder", "userSettings", "globalize", "emby-itemscontainer"], function (layoutManager, playbackManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, userSettings, globalize) { - "use strict"; +define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (layoutManager, playbackManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, userSettings, globalize) { + 'use strict'; return function (view, params, tabContent) { function playAll() { @@ -23,16 +23,16 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser if (!pageData) { pageData = { query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "MusicAlbum", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'MusicAlbum', Recursive: true, - Fields: "PrimaryImageAspectRatio,SortName,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,SortName,BasicSyncInfo', ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || "Poster" + view: libraryBrowser.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -52,7 +52,7 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser function getSavedQueryKey() { if (!savedQueryKey) { - savedQueryKey = libraryBrowser.getSavedQueryKey("musicalbums"); + savedQueryKey = libraryBrowser.getSavedQueryKey('musicalbums'); } return savedQueryKey; @@ -60,17 +60,17 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser function onViewStyleChange() { var viewStyle = self.getCurrentViewStyle(); - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var itemsContainer = tabContent.querySelector('.itemsContainer'); - if ("List" == viewStyle) { - itemsContainer.classList.add("vertical-list"); - itemsContainer.classList.remove("vertical-wrap"); + if ('List' == viewStyle) { + itemsContainer.classList.add('vertical-list'); + itemsContainer.classList.remove('vertical-wrap'); } else { - itemsContainer.classList.remove("vertical-list"); - itemsContainer.classList.add("vertical-wrap"); + itemsContainer.classList.remove('vertical-list'); + itemsContainer.classList.add('vertical-wrap'); } - itemsContainer.innerHTML = ""; + itemsContainer.innerHTML = ''; } function reloadItems(page) { @@ -114,18 +114,18 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser filterButton: false }); var viewStyle = self.getCurrentViewStyle(); - if (viewStyle == "List") { + if (viewStyle == 'List') { html = listView.getListViewHtml({ items: result.Items, - context: "music", + context: 'music', sortBy: query.SortBy, addToListButton: true }); - } else if (viewStyle == "PosterCard") { + } else if (viewStyle == 'PosterCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "square", - context: "music", + shape: 'square', + context: 'music', showTitle: true, coverImage: true, showParentTitle: true, @@ -135,8 +135,8 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser } else { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "square", - context: "music", + shape: 'square', + context: 'music', showTitle: true, showParentTitle: true, lazy: true, @@ -146,30 +146,30 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser } var i; var length; - var elems = tabContent.querySelectorAll(".paging"); + var elems = tabContent.querySelectorAll('.paging'); for (i = 0, length = elems.length; i < length; i++) { elems[i].innerHTML = pagingHtml; } - elems = tabContent.querySelectorAll(".btnNextPage"); + elems = tabContent.querySelectorAll('.btnNextPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onNextPageClick); + elems[i].addEventListener('click', onNextPageClick); } - elems = tabContent.querySelectorAll(".btnPreviousPage"); + elems = tabContent.querySelectorAll('.btnPreviousPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onPreviousPageClick); + elems[i].addEventListener('click', onPreviousPageClick); } - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); libraryBrowser.saveQueryValues(getSavedQueryKey(), query); loading.hide(); isLoading = false; - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(tabContent); }); }); @@ -186,13 +186,13 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser var isLoading = false; self.showFilterMenu = function () { - require(["components/filterdialog/filterdialog"], function (filterDialogFactory) { + require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { var filterDialog = new filterDialogFactory({ query: getQuery(), - mode: "albums", + mode: 'albums', serverId: ApiClient.serverId() }); - events.on(filterDialog, "filterchange", function () { + events.on(filterDialog, 'filterchange', function () { getQuery().StartIndex = 0; reloadItems(tabContent); }); @@ -205,10 +205,10 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser }; function initPage(tabContent) { - var alphaPickerElement = tabContent.querySelector(".alphaPicker"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var alphaPickerElement = tabContent.querySelector('.alphaPicker'); + var itemsContainer = tabContent.querySelector('.itemsContainer'); - alphaPickerElement.addEventListener("alphavaluechanged", function (e) { + alphaPickerElement.addEventListener('alphavaluechanged', function (e) { var newValue = e.detail.value; var query = getQuery(); query.NameStartsWithOrGreater = newValue; @@ -217,39 +217,39 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser }); self.alphaPicker = new alphaPicker({ element: alphaPickerElement, - valueChangeEvent: "click" + valueChangeEvent: 'click' }); - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - itemsContainer.classList.add("padded-right-withalphapicker"); + tabContent.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); + alphaPickerElement.classList.add('alphaPicker-fixed-right'); + itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector(".btnFilter").addEventListener("click", function () { + tabContent.querySelector('.btnFilter').addEventListener('click', function () { self.showFilterMenu(); }); - tabContent.querySelector(".btnSort").addEventListener("click", function (e) { + tabContent.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ - name: globalize.translate("OptionNameSort"), - id: "SortName" + name: globalize.translate('OptionNameSort'), + id: 'SortName' }, { - name: globalize.translate("OptionAlbumArtist"), - id: "AlbumArtist,SortName" + name: globalize.translate('OptionAlbumArtist'), + id: 'AlbumArtist,SortName' }, { - name: globalize.translate("OptionCommunityRating"), - id: "CommunityRating,SortName" + name: globalize.translate('OptionCommunityRating'), + id: 'CommunityRating,SortName' }, { - name: globalize.translate("OptionCriticRating"), - id: "CriticRating,SortName" + name: globalize.translate('OptionCriticRating'), + id: 'CriticRating,SortName' }, { - name: globalize.translate("OptionDateAdded"), - id: "DateCreated,SortName" + name: globalize.translate('OptionDateAdded'), + id: 'DateCreated,SortName' }, { - name: globalize.translate("OptionReleaseDate"), - id: "ProductionYear,PremiereDate,SortName" + name: globalize.translate('OptionReleaseDate'), + id: 'ProductionYear,PremiereDate,SortName' }, { - name: globalize.translate("OptionRandom"), - id: "Random,SortName" + name: globalize.translate('OptionRandom'), + id: 'Random,SortName' }], callback: function () { getQuery().StartIndex = 0; @@ -259,11 +259,11 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser button: e.target }); }); - var btnSelectView = tabContent.querySelector(".btnSelectView"); - btnSelectView.addEventListener("click", function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "List,Poster,PosterCard".split(",")); + var btnSelectView = tabContent.querySelector('.btnSelectView'); + btnSelectView.addEventListener('click', function (e) { + libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); - btnSelectView.addEventListener("layoutchange", function (e) { + btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; getPageData().view = viewStyle; libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); @@ -271,8 +271,8 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser onViewStyleChange(); reloadItems(tabContent); }); - tabContent.querySelector(".btnPlayAll").addEventListener("click", playAll); - tabContent.querySelector(".btnShuffle").addEventListener("click", shuffle); + tabContent.querySelector('.btnPlayAll').addEventListener('click', playAll); + tabContent.querySelector('.btnShuffle').addEventListener('click', shuffle); } initPage(tabContent); diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index 6048b9920e..bd9341be6d 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -1,5 +1,5 @@ -define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "alphaPicker", "listView", "cardBuilder", "apphost", "userSettings", "emby-itemscontainer"], function (layoutManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, appHost, userSettings) { - "use strict"; +define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'apphost', 'userSettings', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, appHost, userSettings) { + 'use strict'; return function (view, params, tabContent) { function getPageData(context) { @@ -8,13 +8,13 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " if (!pageData) { var queryValues = { - SortBy: "SortName", - SortOrder: "Ascending", + SortBy: 'SortName', + SortOrder: 'Ascending', Recursive: true, - Fields: "PrimaryImageAspectRatio,SortName,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,SortName,BasicSyncInfo', StartIndex: 0, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb" + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb' }; if (userSettings.libraryPageSize() > 0) { @@ -23,7 +23,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " pageData = data[key] = { query: queryValues, - view: libraryBrowser.getSavedView(key) || "Poster" + view: libraryBrowser.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; libraryBrowser.loadSavedQueryValues(key, pageData.query); @@ -46,17 +46,17 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " function onViewStyleChange() { var viewStyle = self.getCurrentViewStyle(); - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var itemsContainer = tabContent.querySelector('.itemsContainer'); - if ("List" == viewStyle) { - itemsContainer.classList.add("vertical-list"); - itemsContainer.classList.remove("vertical-wrap"); + if ('List' == viewStyle) { + itemsContainer.classList.add('vertical-list'); + itemsContainer.classList.remove('vertical-wrap'); } else { - itemsContainer.classList.remove("vertical-list"); - itemsContainer.classList.add("vertical-wrap"); + itemsContainer.classList.remove('vertical-list'); + itemsContainer.classList.add('vertical-wrap'); } - itemsContainer.innerHTML = ""; + itemsContainer.innerHTML = ''; } function reloadItems(page) { @@ -103,16 +103,16 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " filterButton: false }); var viewStyle = self.getCurrentViewStyle(); - if (viewStyle == "List") { + if (viewStyle == 'List') { html = listView.getListViewHtml({ items: result.Items, sortBy: query.SortBy }); - } else if (viewStyle == "PosterCard") { + } else if (viewStyle == 'PosterCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "square", - context: "music", + shape: 'square', + context: 'music', showTitle: true, coverImage: true, cardLayout: true @@ -120,8 +120,8 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " } else { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "square", - context: "music", + shape: 'square', + context: 'music', showTitle: true, coverImage: true, lazy: true, @@ -131,30 +131,30 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " } var i; var length; - var elems = tabContent.querySelectorAll(".paging"); + var elems = tabContent.querySelectorAll('.paging'); for (i = 0, length = elems.length; i < length; i++) { elems[i].innerHTML = pagingHtml; } - elems = tabContent.querySelectorAll(".btnNextPage"); + elems = tabContent.querySelectorAll('.btnNextPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onNextPageClick); + elems[i].addEventListener('click', onNextPageClick); } - elems = tabContent.querySelectorAll(".btnPreviousPage"); + elems = tabContent.querySelectorAll('.btnPreviousPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onPreviousPageClick); + elems[i].addEventListener('click', onPreviousPageClick); } - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(tabContent); }); }); @@ -170,13 +170,13 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " var isLoading = false; self.showFilterMenu = function () { - require(["components/filterdialog/filterdialog"], function (filterDialogFactory) { + require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { var filterDialog = new filterDialogFactory({ query: getQuery(tabContent), mode: self.mode, serverId: ApiClient.serverId() }); - events.on(filterDialog, "filterchange", function () { + events.on(filterDialog, 'filterchange', function () { getQuery(tabContent).StartIndex = 0; reloadItems(tabContent); }); @@ -189,10 +189,10 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " }; function initPage(tabContent) { - var alphaPickerElement = tabContent.querySelector(".alphaPicker"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var alphaPickerElement = tabContent.querySelector('.alphaPicker'); + var itemsContainer = tabContent.querySelector('.itemsContainer'); - alphaPickerElement.addEventListener("alphavaluechanged", function (e) { + alphaPickerElement.addEventListener('alphavaluechanged', function (e) { var newValue = e.detail.value; var query = getQuery(tabContent); query.NameStartsWithOrGreater = newValue; @@ -201,21 +201,21 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " }); self.alphaPicker = new alphaPicker({ element: alphaPickerElement, - valueChangeEvent: "click" + valueChangeEvent: 'click' }); - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - itemsContainer.classList.add("padded-right-withalphapicker"); + tabContent.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); + alphaPickerElement.classList.add('alphaPicker-fixed-right'); + itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector(".btnFilter").addEventListener("click", function () { + tabContent.querySelector('.btnFilter').addEventListener('click', function () { self.showFilterMenu(); }); - var btnSelectView = tabContent.querySelector(".btnSelectView"); - btnSelectView.addEventListener("click", function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "List,Poster,PosterCard".split(",")); + var btnSelectView = tabContent.querySelector('.btnSelectView'); + btnSelectView.addEventListener('click', function (e) { + libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); - btnSelectView.addEventListener("layoutchange", function (e) { + btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; getPageData(tabContent).view = viewStyle; libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); diff --git a/src/controllers/music/musicgenres.js b/src/controllers/music/musicgenres.js index c1338bc222..82f2eba574 100644 --- a/src/controllers/music/musicgenres.js +++ b/src/controllers/music/musicgenres.js @@ -1,5 +1,5 @@ -define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], function (libraryBrowser, cardBuilder, appHost, imageLoader, loading) { - "use strict"; +define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], function (libraryBrowser, cardBuilder, appHost, imageLoader, loading) { + 'use strict'; return function (view, params, tabContent) { function getPageData() { @@ -9,13 +9,13 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f if (!pageData) { pageData = data[key] = { query: { - SortBy: "SortName", - SortOrder: "Ascending", + SortBy: 'SortName', + SortOrder: 'Ascending', Recursive: true, - Fields: "PrimaryImageAspectRatio,ItemCounts", + Fields: 'PrimaryImageAspectRatio,ItemCounts', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || "Poster" + view: libraryBrowser.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; libraryBrowser.loadSavedQueryValues(key, pageData.query); @@ -29,7 +29,7 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f } function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey("genres"); + return libraryBrowser.getSavedQueryKey('genres'); } function getPromise() { @@ -41,40 +41,40 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f function reloadItems(context, promise) { var query = getQuery(); promise.then(function (result) { - var html = ""; + var html = ''; var viewStyle = self.getCurrentViewStyle(); - if (viewStyle == "Thumb") { + if (viewStyle == 'Thumb') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, context: 'music', centerText: true, overlayMoreButton: true, showTitle: true }); - } else if (viewStyle == "ThumbCard") { + } else if (viewStyle == 'ThumbCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, context: 'music', cardLayout: true, showTitle: true }); - } else if (viewStyle == "PosterCard") { + } else if (viewStyle == 'PosterCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "auto", + shape: 'auto', context: 'music', cardLayout: true, showTitle: true }); - } else if (viewStyle == "Poster") { + } else if (viewStyle == 'Poster') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "auto", + shape: 'auto', context: 'music', centerText: true, overlayMoreButton: true, @@ -82,13 +82,13 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f }); } - var elem = context.querySelector("#items"); + var elem = context.querySelector('#items'); elem.innerHTML = html; imageLoader.lazyChildren(elem); libraryBrowser.saveQueryValues(getSavedQueryKey(), query); loading.hide(); - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(context); }); }); @@ -103,7 +103,7 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f var data = {}; self.getViewStyles = function () { - return "Poster,PosterCard,Thumb,ThumbCard".split(","); + return 'Poster,PosterCard,Thumb,ThumbCard'.split(','); }; self.getCurrentViewStyle = function () { diff --git a/src/controllers/music/musicplaylists.js b/src/controllers/music/musicplaylists.js index 795eaba795..f508489216 100644 --- a/src/controllers/music/musicplaylists.js +++ b/src/controllers/music/musicplaylists.js @@ -1,5 +1,5 @@ -define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], function (libraryBrowser, cardBuilder, appHost, imageLoader, loading) { - "use strict"; +define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], function (libraryBrowser, cardBuilder, appHost, imageLoader, loading) { + 'use strict'; return function (view, params, tabContent) { function getPageData() { @@ -9,14 +9,14 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f if (!pageData) { pageData = data[key] = { query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Playlist", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'Playlist', Recursive: true, - Fields: "PrimaryImageAspectRatio,SortName,CanDelete", + Fields: 'PrimaryImageAspectRatio,SortName,CanDelete', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || "Poster" + view: libraryBrowser.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; libraryBrowser.loadSavedQueryValues(key, pageData.query); @@ -30,7 +30,7 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f } function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey("genres"); + return libraryBrowser.getSavedQueryKey('genres'); } function getPromise() { @@ -42,10 +42,10 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f function reloadItems(context, promise) { var query = getQuery(); promise.then(function (result) { - var html = ""; + var html = ''; html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "square", + shape: 'square', showTitle: true, coverImage: true, centerText: true, @@ -53,13 +53,13 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f allowBottomPadding: true, cardLayout: false }); - var elem = context.querySelector("#items"); + var elem = context.querySelector('#items'); elem.innerHTML = html; imageLoader.lazyChildren(elem); libraryBrowser.saveQueryValues(getSavedQueryKey(), query); loading.hide(); - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(context); }); }); diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 14a231a344..3f025799f6 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -1,5 +1,5 @@ -define(["browser", "layoutManager", "userSettings", "inputManager", "loading", "cardBuilder", "dom", "apphost", "imageLoader", "libraryMenu", "playbackManager", "mainTabsManager", "globalize", "scrollStyles", "emby-itemscontainer", "emby-tabs", "emby-button", "flexStyles"], function (browser, layoutManager, userSettings, inputManager, loading, cardBuilder, dom, appHost, imageLoader, libraryMenu, playbackManager, mainTabsManager, globalize) { - "use strict"; +define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', 'cardBuilder', 'dom', 'apphost', 'imageLoader', 'libraryMenu', 'playbackManager', 'mainTabsManager', 'globalize', 'scrollStyles', 'emby-itemscontainer', 'emby-tabs', 'emby-button', 'flexStyles'], function (browser, layoutManager, userSettings, inputManager, loading, cardBuilder, dom, appHost, imageLoader, libraryMenu, playbackManager, mainTabsManager, globalize) { + 'use strict'; function itemsPerRow() { var screenWidth = dom.getWindowSize().innerWidth; @@ -24,24 +24,24 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " } function getSquareShape() { - return enableScrollX() ? "overflowSquare" : "square"; + return enableScrollX() ? 'overflowSquare' : 'square'; } function loadLatest(page, parentId) { loading.show(); var userId = ApiClient.getCurrentUserId(); var options = { - IncludeItemTypes: "Audio", + IncludeItemTypes: 'Audio', Limit: enableScrollX() ? 3 * itemsPerRow() : 2 * itemsPerRow(), - Fields: "PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,BasicSyncInfo', ParentId: parentId, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableTotalRecordCount: false }; - ApiClient.getJSON(ApiClient.getUrl("Users/" + userId + "/Items/Latest", options)).then(function (items) { - var elem = page.querySelector("#recentlyAddedSongs"); - var supportsImageAnalysis = appHost.supports("imageanalysis"); + ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) { + var elem = page.querySelector('#recentlyAddedSongs'); + var supportsImageAnalysis = appHost.supports('imageanalysis'); supportsImageAnalysis = false; elem.innerHTML = cardBuilder.getCardsHtml({ items: items, @@ -60,7 +60,7 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " imageLoader.lazyChildren(elem); loading.hide(); - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(page); }); }); @@ -68,29 +68,29 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " function loadRecentlyPlayed(page, parentId) { var options = { - SortBy: "DatePlayed", - SortOrder: "Descending", - IncludeItemTypes: "Audio", + SortBy: 'DatePlayed', + SortOrder: 'Descending', + IncludeItemTypes: 'Audio', Limit: itemsPerRow(), Recursive: true, - Fields: "PrimaryImageAspectRatio,AudioInfo", - Filters: "IsPlayed", + Fields: 'PrimaryImageAspectRatio,AudioInfo', + Filters: 'IsPlayed', ParentId: parentId, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableTotalRecordCount: false }; ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function (result) { - var elem = page.querySelector("#recentlyPlayed"); + var elem = page.querySelector('#recentlyPlayed'); if (result.Items.length) { - elem.classList.remove("hide"); + elem.classList.remove('hide'); } else { - elem.classList.add("hide"); + elem.classList.add('hide'); } - var itemsContainer = elem.querySelector(".itemsContainer"); - var supportsImageAnalysis = appHost.supports("imageanalysis"); + var itemsContainer = elem.querySelector('.itemsContainer'); + var supportsImageAnalysis = appHost.supports('imageanalysis'); supportsImageAnalysis = false; itemsContainer.innerHTML = cardBuilder.getCardsHtml({ items: result.Items, @@ -98,7 +98,7 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " shape: getSquareShape(), showTitle: true, showParentTitle: true, - action: "instantmix", + action: 'instantmix', lazy: true, centerText: !supportsImageAnalysis, overlayMoreButton: !supportsImageAnalysis, @@ -112,29 +112,29 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " function loadFrequentlyPlayed(page, parentId) { var options = { - SortBy: "PlayCount", - SortOrder: "Descending", - IncludeItemTypes: "Audio", + SortBy: 'PlayCount', + SortOrder: 'Descending', + IncludeItemTypes: 'Audio', Limit: itemsPerRow(), Recursive: true, - Fields: "PrimaryImageAspectRatio,AudioInfo", - Filters: "IsPlayed", + Fields: 'PrimaryImageAspectRatio,AudioInfo', + Filters: 'IsPlayed', ParentId: parentId, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableTotalRecordCount: false }; ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function (result) { - var elem = page.querySelector("#topPlayed"); + var elem = page.querySelector('#topPlayed'); if (result.Items.length) { - elem.classList.remove("hide"); + elem.classList.remove('hide'); } else { - elem.classList.add("hide"); + elem.classList.add('hide'); } - var itemsContainer = elem.querySelector(".itemsContainer"); - var supportsImageAnalysis = appHost.supports("imageanalysis"); + var itemsContainer = elem.querySelector('.itemsContainer'); + var supportsImageAnalysis = appHost.supports('imageanalysis'); supportsImageAnalysis = false; itemsContainer.innerHTML = cardBuilder.getCardsHtml({ items: result.Items, @@ -142,7 +142,7 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " shape: getSquareShape(), showTitle: true, showParentTitle: true, - action: "instantmix", + action: 'instantmix', lazy: true, centerText: !supportsImageAnalysis, overlayMoreButton: !supportsImageAnalysis, @@ -155,55 +155,55 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " } function loadSuggestionsTab(page, tabContent, parentId) { - console.debug("loadSuggestionsTab"); + console.debug('loadSuggestionsTab'); loadLatest(tabContent, parentId); loadRecentlyPlayed(tabContent, parentId); loadFrequentlyPlayed(tabContent, parentId); - require(["components/favoriteitems"], function (favoriteItems) { - favoriteItems.render(tabContent, ApiClient.getCurrentUserId(), parentId, ["favoriteArtists", "favoriteAlbums", "favoriteSongs"]); + require(['components/favoriteitems'], function (favoriteItems) { + favoriteItems.render(tabContent, ApiClient.getCurrentUserId(), parentId, ['favoriteArtists', 'favoriteAlbums', 'favoriteSongs']); }); } function getTabs() { return [{ - name: globalize.translate("TabSuggestions") + name: globalize.translate('TabSuggestions') }, { - name: globalize.translate("TabAlbums") + name: globalize.translate('TabAlbums') }, { - name: globalize.translate("TabAlbumArtists") + name: globalize.translate('TabAlbumArtists') }, { - name: globalize.translate("TabArtists") + name: globalize.translate('TabArtists') }, { - name: globalize.translate("TabPlaylists") + name: globalize.translate('TabPlaylists') }, { - name: globalize.translate("TabSongs") + name: globalize.translate('TabSongs') }, { - name: globalize.translate("TabGenres") + name: globalize.translate('TabGenres') }, { - name: globalize.translate("ButtonSearch"), - cssClass: "searchTabButton" + name: globalize.translate('ButtonSearch'), + cssClass: 'searchTabButton' }]; } function getDefaultTabIndex(folderId) { - switch (userSettings.get("landing-" + folderId)) { - case "albums": + switch (userSettings.get('landing-' + folderId)) { + case 'albums': return 1; - case "albumartists": + case 'albumartists': return 2; - case "artists": + case 'artists': return 3; - case "playlists": + case 'playlists': return 4; - case "songs": + case 'songs': return 5; - case "genres": + case 'genres': return 6; default: @@ -224,19 +224,19 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " function setScrollClasses(elem, scrollX) { if (scrollX) { - elem.classList.add("hiddenScrollX"); + elem.classList.add('hiddenScrollX'); if (layoutManager.tv) { - elem.classList.add("smoothScrollX"); + elem.classList.add('smoothScrollX'); } - elem.classList.add("scrollX"); - elem.classList.remove("vertical-wrap"); + elem.classList.add('scrollX'); + elem.classList.remove('vertical-wrap'); } else { - elem.classList.remove("hiddenScrollX"); - elem.classList.remove("smoothScrollX"); - elem.classList.remove("scrollX"); - elem.classList.add("vertical-wrap"); + elem.classList.remove('hiddenScrollX'); + elem.classList.remove('smoothScrollX'); + elem.classList.remove('scrollX'); + elem.classList.add('vertical-wrap'); } } @@ -249,7 +249,7 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " } function getTabContainers() { - return view.querySelectorAll(".pageTabContent"); + return view.querySelectorAll('.pageTabContent'); } function initTabs() { @@ -264,28 +264,28 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " break; case 1: - depends.push("controllers/music/musicalbums"); + depends.push('controllers/music/musicalbums'); break; case 2: case 3: - depends.push("controllers/music/musicartists"); + depends.push('controllers/music/musicartists'); break; case 4: - depends.push("controllers/music/musicplaylists"); + depends.push('controllers/music/musicplaylists'); break; case 5: - depends.push("controllers/music/songs"); + depends.push('controllers/music/songs'); break; case 6: - depends.push("controllers/music/musicgenres"); + depends.push('controllers/music/musicgenres'); break; case 7: - depends.push("scripts/searchtab"); + depends.push('scripts/searchtab'); } require(depends, function (controllerFactory) { @@ -305,7 +305,7 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " controller = self; } else if (index === 7) { controller = new controllerFactory(view, tabContent, { - collectionType: "music", + collectionType: 'music', parentId: params.topParentId }); } else { @@ -313,9 +313,9 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " } if (index == 2) { - controller.mode = "albumartists"; + controller.mode = 'albumartists'; } else if (index == 3) { - controller.mode = "artists"; + controller.mode = 'artists'; } tabControllers[index] = controller; @@ -350,9 +350,9 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " function onInputCommand(e) { switch (e.detail.command) { - case "search": + case 'search': e.preventDefault(); - Dashboard.navigate("search.html?collectionType=music&parentId=" + params.topParentId); + Dashboard.navigate('search.html?collectionType=music&parentId=' + params.topParentId); } } @@ -363,7 +363,7 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " self.initTab = function () { var tabContent = view.querySelector(".pageTabContent[data-index='0']"); - var containers = tabContent.querySelectorAll(".itemsContainer"); + var containers = tabContent.querySelectorAll('.itemsContainer'); for (var i = 0, length = containers.length; i < length; i++) { setScrollClasses(containers[i], enableScrollX()); @@ -376,29 +376,29 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " var tabControllers = []; var renderedTabs = []; - view.addEventListener("viewshow", function (e) { + view.addEventListener('viewshow', function (e) { isViewRestored = e.detail.isRestored; initTabs(); - if (!view.getAttribute("data-title")) { + if (!view.getAttribute('data-title')) { var parentId = params.topParentId; if (parentId) { ApiClient.getItem(ApiClient.getCurrentUserId(), parentId).then(function (item) { - view.setAttribute("data-title", item.Name); + view.setAttribute('data-title', item.Name); libraryMenu.setTitle(item.Name); }); } else { - view.setAttribute("data-title", globalize.translate("TabMusic")); - libraryMenu.setTitle(globalize.translate("TabMusic")); + view.setAttribute('data-title', globalize.translate('TabMusic')); + libraryMenu.setTitle(globalize.translate('TabMusic')); } } inputManager.on(window, onInputCommand); }); - view.addEventListener("viewbeforehide", function (e) { + view.addEventListener('viewbeforehide', function (e) { inputManager.off(window, onInputCommand); }); - view.addEventListener("viewdestroy", function (e) { + view.addEventListener('viewdestroy', function (e) { tabControllers.forEach(function (t) { if (t.destroy) { t.destroy(); diff --git a/src/controllers/music/songs.js b/src/controllers/music/songs.js index 29d21b0774..8e50cd720c 100644 --- a/src/controllers/music/songs.js +++ b/src/controllers/music/songs.js @@ -1,5 +1,5 @@ -define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "userSettings", "globalize", "emby-itemscontainer"], function (events, libraryBrowser, imageLoader, listView, loading, userSettings, globalize) { - "use strict"; +define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userSettings', 'globalize', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, listView, loading, userSettings, globalize) { + 'use strict'; return function (view, params, tabContent) { function getPageData(context) { @@ -9,14 +9,14 @@ define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "userS if (!pageData) { pageData = data[key] = { query: { - SortBy: "Album,SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Audio", + SortBy: 'Album,SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'Audio', Recursive: true, - Fields: "AudioInfo,ParentId", + Fields: 'AudioInfo,ParentId', StartIndex: 0, ImageTypeLimit: 1, - EnableImageTypes: "Primary" + EnableImageTypes: 'Primary' } }; @@ -37,7 +37,7 @@ define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "userS function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey("songs"); + context.savedQueryKey = libraryBrowser.getSavedQueryKey('songs'); } return context.savedQueryKey; @@ -85,35 +85,35 @@ define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "userS }); var html = listView.getListViewHtml({ items: result.Items, - action: "playallfromhere", + action: 'playallfromhere', smallIcon: true, artist: true, addToListButton: true }); - var elems = tabContent.querySelectorAll(".paging"); + var elems = tabContent.querySelectorAll('.paging'); for (i = 0, length = elems.length; i < length; i++) { elems[i].innerHTML = pagingHtml; } - elems = tabContent.querySelectorAll(".btnNextPage"); + elems = tabContent.querySelectorAll('.btnNextPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onNextPageClick); + elems[i].addEventListener('click', onNextPageClick); } - elems = tabContent.querySelectorAll(".btnPreviousPage"); + elems = tabContent.querySelectorAll('.btnPreviousPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onPreviousPageClick); + elems[i].addEventListener('click', onPreviousPageClick); } - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(page); }); }); @@ -124,13 +124,13 @@ define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "userS var isLoading = false; self.showFilterMenu = function () { - require(["components/filterdialog/filterdialog"], function (filterDialogFactory) { + require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { var filterDialog = new filterDialogFactory({ query: getQuery(tabContent), - mode: "songs", + mode: 'songs', serverId: ApiClient.serverId() }); - events.on(filterDialog, "filterchange", function () { + events.on(filterDialog, 'filterchange', function () { getQuery(tabContent).StartIndex = 0; reloadItems(tabContent); }); @@ -143,38 +143,38 @@ define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "userS }; function initPage(tabContent) { - tabContent.querySelector(".btnFilter").addEventListener("click", function () { + tabContent.querySelector('.btnFilter').addEventListener('click', function () { self.showFilterMenu(); }); - tabContent.querySelector(".btnSort").addEventListener("click", function (e) { + tabContent.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ - name: globalize.translate("OptionTrackName"), - id: "Name" + name: globalize.translate('OptionTrackName'), + id: 'Name' }, { - name: globalize.translate("OptionAlbum"), - id: "Album,SortName" + name: globalize.translate('OptionAlbum'), + id: 'Album,SortName' }, { - name: globalize.translate("OptionAlbumArtist"), - id: "AlbumArtist,Album,SortName" + name: globalize.translate('OptionAlbumArtist'), + id: 'AlbumArtist,Album,SortName' }, { - name: globalize.translate("OptionArtist"), - id: "Artist,Album,SortName" + name: globalize.translate('OptionArtist'), + id: 'Artist,Album,SortName' }, { - name: globalize.translate("OptionDateAdded"), - id: "DateCreated,SortName" + name: globalize.translate('OptionDateAdded'), + id: 'DateCreated,SortName' }, { - name: globalize.translate("OptionDatePlayed"), - id: "DatePlayed,SortName" + name: globalize.translate('OptionDatePlayed'), + id: 'DatePlayed,SortName' }, { - name: globalize.translate("OptionPlayCount"), - id: "PlayCount,SortName" + name: globalize.translate('OptionPlayCount'), + id: 'PlayCount,SortName' }, { - name: globalize.translate("OptionReleaseDate"), - id: "PremiereDate,AlbumArtist,Album,SortName" + name: globalize.translate('OptionReleaseDate'), + id: 'PremiereDate,AlbumArtist,Album,SortName' }, { - name: globalize.translate("OptionRuntime"), - id: "Runtime,AlbumArtist,Album,SortName" + name: globalize.translate('OptionRuntime'), + id: 'Runtime,AlbumArtist,Album,SortName' }], callback: function () { getQuery(tabContent).StartIndex = 0; diff --git a/src/controllers/playback/nowplaying.js b/src/controllers/playback/nowplaying.js index 6fcdb2a79c..98c9945e84 100644 --- a/src/controllers/playback/nowplaying.js +++ b/src/controllers/playback/nowplaying.js @@ -1,17 +1,17 @@ -define(["components/remotecontrol/remotecontrol", "libraryMenu", "emby-button"], function (remotecontrolFactory, libraryMenu) { - "use strict"; +define(['components/remotecontrol/remotecontrol', 'libraryMenu', 'emby-button'], function (remotecontrolFactory, libraryMenu) { + 'use strict'; return function (view, params) { var remoteControl = new remotecontrolFactory(); - remoteControl.init(view, view.querySelector(".remoteControlContent")); - view.addEventListener("viewshow", function (e) { + remoteControl.init(view, view.querySelector('.remoteControlContent')); + view.addEventListener('viewshow', function (e) { libraryMenu.setTransparentMenu(true); if (remoteControl) { remoteControl.onShow(); } }); - view.addEventListener("viewbeforehide", function (e) { + view.addEventListener('viewbeforehide', function (e) { libraryMenu.setTransparentMenu(false); if (remoteControl) { diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 380eedb2c5..e9923d779c 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1,19 +1,19 @@ -define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "mediaInfo", "focusManager", "imageLoader", "scrollHelper", "events", "connectionManager", "browser", "globalize", "apphost", "layoutManager", "userSettings", "keyboardnavigation", "scrollStyles", "emby-slider", "paper-icon-button-light", "css!assets/css/videoosd"], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings, keyboardnavigation) { - "use strict"; +define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'mediaInfo', 'focusManager', 'imageLoader', 'scrollHelper', 'events', 'connectionManager', 'browser', 'globalize', 'apphost', 'layoutManager', 'userSettings', 'keyboardnavigation', 'scrollStyles', 'emby-slider', 'paper-icon-button-light', 'css!assets/css/videoosd'], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings, keyboardnavigation) { + 'use strict'; function seriesImageUrl(item, options) { - if ("Episode" !== item.Type) { + if ('Episode' !== item.Type) { return null; } options = options || {}; - options.type = options.type || "Primary"; - if ("Primary" === options.type && item.SeriesPrimaryImageTag) { + options.type = options.type || 'Primary'; + if ('Primary' === options.type && item.SeriesPrimaryImageTag) { options.tag = item.SeriesPrimaryImageTag; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } - if ("Thumb" === options.type) { + if ('Thumb' === options.type) { if (item.SeriesThumbImageTag) { options.tag = item.SeriesThumbImageTag; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); @@ -30,14 +30,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function imageUrl(item, options) { options = options || {}; - options.type = options.type || "Primary"; + options.type = options.type || 'Primary'; if (item.ImageTags && item.ImageTags[options.type]) { options.tag = item.ImageTags[options.type]; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options); } - if ("Primary" === options.type && item.AlbumId && item.AlbumPrimaryImageTag) { + if ('Primary' === options.type && item.AlbumId && item.AlbumPrimaryImageTag) { options.tag = item.AlbumPrimaryImageTag; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); } @@ -93,7 +93,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function getDisplayItem(item) { - if ("TvChannel" === item.Type) { + if ('TvChannel' === item.Type) { var apiClient = connectionManager.getApiClient(item.ServerId); return apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (refreshedItem) { return { @@ -109,27 +109,27 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function updateRecordingButton(item) { - if (!item || "Program" !== item.Type) { + if (!item || 'Program' !== item.Type) { if (recordingButtonManager) { recordingButtonManager.destroy(); recordingButtonManager = null; } - return void view.querySelector(".btnRecord").classList.add("hide"); + return void view.querySelector('.btnRecord').classList.add('hide'); } connectionManager.getApiClient(item.ServerId).getCurrentUser().then(function (user) { if (user.Policy.EnableLiveTvManagement) { - require(["recordingButton"], function (RecordingButton) { + require(['recordingButton'], function (RecordingButton) { if (recordingButtonManager) { return void recordingButtonManager.refreshItem(item); } recordingButtonManager = new RecordingButton({ item: item, - button: view.querySelector(".btnRecord") + button: view.querySelector('.btnRecord') }); - view.querySelector(".btnRecord").classList.remove("hide"); + view.querySelector('.btnRecord').classList.remove('hide'); }); } }); @@ -149,11 +149,11 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med setTitle(displayItem, parentName); var titleElement; - var osdTitle = view.querySelector(".osdTitle"); + var osdTitle = view.querySelector('.osdTitle'); titleElement = osdTitle; var displayName = itemHelper.getDisplayName(displayItem, { - includeParentInfo: "Program" !== displayItem.Type, - includeIndexNumber: "Program" !== displayItem.Type + includeParentInfo: 'Program' !== displayItem.Type, + includeIndexNumber: 'Program' !== displayItem.Type }); if (!displayName) { @@ -163,9 +163,9 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med titleElement.innerHTML = displayName; if (displayName) { - titleElement.classList.remove("hide"); + titleElement.classList.remove('hide'); } else { - titleElement.classList.add("hide"); + titleElement.classList.add('hide'); } var mediaInfoHtml = mediaInfo.getPrimaryMediaInfoHtml(displayItem, { @@ -174,20 +174,20 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med tomatoes: false, endsAt: false, episodeTitle: false, - originalAirDate: "Program" !== displayItem.Type, - episodeTitleIndexNumber: "Program" !== displayItem.Type, + originalAirDate: 'Program' !== displayItem.Type, + episodeTitleIndexNumber: 'Program' !== displayItem.Type, programIndicator: false }); - var osdMediaInfo = view.querySelector(".osdMediaInfo"); + var osdMediaInfo = view.querySelector('.osdMediaInfo'); osdMediaInfo.innerHTML = mediaInfoHtml; if (mediaInfoHtml) { - osdMediaInfo.classList.remove("hide"); + osdMediaInfo.classList.remove('hide'); } else { - osdMediaInfo.classList.add("hide"); + osdMediaInfo.classList.add('hide'); } - var secondaryMediaInfo = view.querySelector(".osdSecondaryMediaInfo"); + var secondaryMediaInfo = view.querySelector('.osdSecondaryMediaInfo'); var secondaryMediaInfoHtml = mediaInfo.getSecondaryMediaInfoHtml(displayItem, { startDate: false, programTime: false @@ -195,29 +195,29 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med secondaryMediaInfo.innerHTML = secondaryMediaInfoHtml; if (secondaryMediaInfoHtml) { - secondaryMediaInfo.classList.remove("hide"); + secondaryMediaInfo.classList.remove('hide'); } else { - secondaryMediaInfo.classList.add("hide"); + secondaryMediaInfo.classList.add('hide'); } if (displayName) { - view.querySelector(".osdMainTextContainer").classList.remove("hide"); + view.querySelector('.osdMainTextContainer').classList.remove('hide'); } else { - view.querySelector(".osdMainTextContainer").classList.add("hide"); + view.querySelector('.osdMainTextContainer').classList.add('hide'); } if (enableProgressByTimeOfDay) { setDisplayTime(startTimeText, displayItem.StartDate); setDisplayTime(endTimeText, displayItem.EndDate); - startTimeText.classList.remove("hide"); - endTimeText.classList.remove("hide"); + startTimeText.classList.remove('hide'); + endTimeText.classList.remove('hide'); programStartDateMs = displayItem.StartDate ? datetime.parseISO8601Date(displayItem.StartDate).getTime() : 0; programEndDateMs = displayItem.EndDate ? datetime.parseISO8601Date(displayItem.EndDate).getTime() : 0; } else { - startTimeText.classList.add("hide"); - endTimeText.classList.add("hide"); - startTimeText.innerHTML = ""; - endTimeText.innerHTML = ""; + startTimeText.classList.add('hide'); + endTimeText.classList.add('hide'); + startTimeText.innerHTML = ''; + endTimeText.innerHTML = ''; programStartDateMs = 0; programEndDateMs = 0; } @@ -226,13 +226,13 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function getDisplayTimeWithoutAmPm(date, showSeconds) { if (showSeconds) { return datetime.toLocaleTimeString(date, { - hour: "numeric", - minute: "2-digit", - second: "2-digit" - }).toLowerCase().replace("am", "").replace("pm", "").trim(); + hour: 'numeric', + minute: '2-digit', + second: '2-digit' + }).toLowerCase().replace('am', '').replace('pm', '').trim(); } - return datetime.getDisplayTime(date).toLowerCase().replace("am", "").replace("pm", "").trim(); + return datetime.getDisplayTime(date).toLowerCase().replace('am', '').replace('pm', '').trim(); } function setDisplayTime(elem, date) { @@ -243,11 +243,11 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med html = getDisplayTimeWithoutAmPm(date); } - elem.innerHTML = html || ""; + elem.innerHTML = html || ''; } function shouldEnableProgressByTimeOfDay(item) { - return !("TvChannel" !== item.Type || !item.CurrentProgram); + return !('TvChannel' !== item.Type || !item.CurrentProgram); } function updateNowPlayingInfo(player, state) { @@ -257,15 +257,15 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med if (!item) { setPoster(null); updateRecordingButton(null); - Emby.Page.setTitle(""); + Emby.Page.setTitle(''); nowPlayingVolumeSlider.disabled = true; nowPlayingPositionSlider.disabled = true; btnFastForward.disabled = true; btnRewind.disabled = true; - view.querySelector(".btnSubtitles").classList.add("hide"); - view.querySelector(".btnAudio").classList.add("hide"); - view.querySelector(".osdTitle").innerHTML = ""; - view.querySelector(".osdMediaInfo").innerHTML = ""; + view.querySelector('.btnSubtitles').classList.add('hide'); + view.querySelector('.btnAudio').classList.add('hide'); + view.querySelector('.osdTitle').innerHTML = ''; + view.querySelector('.osdMediaInfo').innerHTML = ''; return; } @@ -277,17 +277,17 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med btnRewind.disabled = false; if (playbackManager.subtitleTracks(player).length) { - view.querySelector(".btnSubtitles").classList.remove("hide"); + view.querySelector('.btnSubtitles').classList.remove('hide'); toggleSubtitleSync(); } else { - view.querySelector(".btnSubtitles").classList.add("hide"); - toggleSubtitleSync("forceToHide"); + view.querySelector('.btnSubtitles').classList.add('hide'); + toggleSubtitleSync('forceToHide'); } if (playbackManager.audioTracks(player).length > 1) { - view.querySelector(".btnAudio").classList.remove("hide"); + view.querySelector('.btnAudio').classList.remove('hide'); } else { - view.querySelector(".btnAudio").classList.add("hide"); + view.querySelector('.btnAudio').classList.add('hide'); } } @@ -302,35 +302,35 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function setPoster(item, secondaryItem) { - var osdPoster = view.querySelector(".osdPoster"); + var osdPoster = view.querySelector('.osdPoster'); if (item) { var imgUrl = seriesImageUrl(item, { maxWidth: osdPoster.clientWidth * 2, - type: "Primary" + type: 'Primary' }) || seriesImageUrl(item, { maxWidth: osdPoster.clientWidth * 2, - type: "Thumb" + type: 'Thumb' }) || imageUrl(item, { maxWidth: osdPoster.clientWidth * 2, - type: "Primary" + type: 'Primary' }); if (!imgUrl && secondaryItem && (imgUrl = seriesImageUrl(secondaryItem, { maxWidth: osdPoster.clientWidth * 2, - type: "Primary" + type: 'Primary' }) || seriesImageUrl(secondaryItem, { maxWidth: osdPoster.clientWidth * 2, - type: "Thumb" + type: 'Thumb' }) || imageUrl(secondaryItem, { maxWidth: osdPoster.clientWidth * 2, - type: "Primary" + type: 'Primary' })), imgUrl) { return void (osdPoster.innerHTML = ''); } } - osdPoster.innerHTML = ""; + osdPoster.innerHTML = ''; } function showOsd() { @@ -345,7 +345,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function toggleOsd() { - if ("osd" === currentVisibleMenu) { + if ('osd' === currentVisibleMenu) { hideOsd(); } else if (!currentVisibleMenu) { showOsd(); @@ -365,11 +365,11 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function slideDownToShow(elem) { - elem.classList.remove("osdHeader-hidden"); + elem.classList.remove('osdHeader-hidden'); } function slideUpToHide(elem) { - elem.classList.add("osdHeader-hidden"); + elem.classList.add('osdHeader-hidden'); } function clearHideAnimationEventListeners(elem) { @@ -382,7 +382,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var elem = e.target; if (elem != osdBottomElement) return; - elem.classList.add("hide"); + elem.classList.add('hide'); dom.removeEventListener(elem, transitionEndEventName, onHideAnimationComplete, { once: true }); @@ -391,14 +391,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function showMainOsdControls() { if (!currentVisibleMenu) { var elem = osdBottomElement; - currentVisibleMenu = "osd"; + currentVisibleMenu = 'osd'; clearHideAnimationEventListeners(elem); - elem.classList.remove("hide"); - elem.classList.remove("videoOsdBottom-hidden"); + elem.classList.remove('hide'); + elem.classList.remove('videoOsdBottom-hidden'); if (!layoutManager.mobile) { setTimeout(function () { - focusManager.focus(elem.querySelector(".btnPause")); + focusManager.focus(elem.querySelector('.btnPause')); }, 50); } toggleSubtitleSync(); @@ -406,15 +406,15 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function hideMainOsdControls() { - if ("osd" === currentVisibleMenu) { + if ('osd' === currentVisibleMenu) { var elem = osdBottomElement; clearHideAnimationEventListeners(elem); - elem.classList.add("videoOsdBottom-hidden"); + elem.classList.add('videoOsdBottom-hidden'); dom.addEventListener(elem, transitionEndEventName, onHideAnimationComplete, { once: true }); currentVisibleMenu = null; - toggleSubtitleSync("hide"); + toggleSubtitleSync('hide'); // Firefox does not blur by itself if (document.activeElement) { @@ -424,7 +424,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function onPointerMove(e) { - if ("mouse" === (e.pointerType || (layoutManager.mobile ? "touch" : "mouse"))) { + if ('mouse' === (e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse'))) { var eventX = e.screenX || 0; var eventY = e.screenY || 0; var obj = lastPointerMoveData; @@ -451,8 +451,8 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var player = currentPlayer; switch (e.detail.command) { - case "left": - if ("osd" === currentVisibleMenu) { + case 'left': + if ('osd' === currentVisibleMenu) { showOsd(); } else { if (!currentVisibleMenu) { @@ -463,8 +463,8 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med break; - case "right": - if ("osd" === currentVisibleMenu) { + case 'right': + if ('osd' === currentVisibleMenu) { showOsd(); } else if (!currentVisibleMenu) { e.preventDefault(); @@ -473,59 +473,59 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med break; - case "pageup": + case 'pageup': playbackManager.nextChapter(player); break; - case "pagedown": + case 'pagedown': playbackManager.previousChapter(player); break; - case "up": - case "down": - case "select": - case "menu": - case "info": - case "play": - case "playpause": - case "pause": - case "fastforward": - case "rewind": - case "next": - case "previous": + case 'up': + case 'down': + case 'select': + case 'menu': + case 'info': + case 'play': + case 'playpause': + case 'pause': + case 'fastforward': + case 'rewind': + case 'next': + case 'previous': showOsd(); break; - case "record": + case 'record': onRecordingCommand(); showOsd(); break; - case "togglestats": + case 'togglestats': toggleStats(); } } function onRecordingCommand() { - var btnRecord = view.querySelector(".btnRecord"); + var btnRecord = view.querySelector('.btnRecord'); - if (!btnRecord.classList.contains("hide")) { + if (!btnRecord.classList.contains('hide')) { btnRecord.click(); } } function updateFullscreenIcon() { - const button = view.querySelector(".btnFullscreen"); - const icon = button.querySelector(".material-icons"); + const button = view.querySelector('.btnFullscreen'); + const icon = button.querySelector('.material-icons'); - icon.classList.remove("fullscreen_exit", "fullscreen"); + icon.classList.remove('fullscreen_exit', 'fullscreen'); if (playbackManager.isFullscreen(currentPlayer)) { - button.setAttribute("title", globalize.translate("ExitFullscreen") + " (f)"); - icon.classList.add("fullscreen_exit"); + button.setAttribute('title', globalize.translate('ExitFullscreen') + ' (f)'); + icon.classList.add('fullscreen_exit'); } else { - button.setAttribute("title", globalize.translate("Fullscreen") + " (f)"); - icon.classList.add("fullscreen"); + button.setAttribute('title', globalize.translate('Fullscreen') + ' (f)'); + icon.classList.add('fullscreen'); } } @@ -558,7 +558,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function onPlaybackStart(e, state) { - console.debug("nowplaying event: " + e.type); + console.debug('nowplaying event: ' + e.type); var player = this; onStateChanged.call(player, e, state); resetUpNextDialog(); @@ -577,10 +577,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function onPlaybackStopped(e, state) { currentRuntimeTicks = null; resetUpNextDialog(); - console.debug("nowplaying event: " + e.type); + console.debug('nowplaying event: ' + e.type); - if ("Video" !== state.NextMediaType) { - view.removeEventListener("viewbeforehide", onViewHideStopPlayback); + if ('Video' !== state.NextMediaType) { + view.removeEventListener('viewbeforehide', onViewHideStopPlayback); Emby.Page.back(); } } @@ -589,16 +589,16 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var player = this; var state = playbackManager.getPlayerState(player); onStateChanged.call(player, { - type: "init" + type: 'init' }, state); } function onBeginFetch() { - document.querySelector(".osdMediaStatus").classList.remove("hide"); + document.querySelector('.osdMediaStatus').classList.remove('hide'); } function onEndFetch() { - document.querySelector(".osdMediaStatus").classList.add("hide"); + document.querySelector('.osdMediaStatus').classList.add('hide'); } function bindToPlayer(player) { @@ -609,18 +609,18 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } var state = playbackManager.getPlayerState(player); onStateChanged.call(player, { - type: "init" + type: 'init' }, state); - events.on(player, "playbackstart", onPlaybackStart); - events.on(player, "playbackstop", onPlaybackStopped); - events.on(player, "volumechange", onVolumeChanged); - events.on(player, "pause", onPlayPauseStateChanged); - events.on(player, "unpause", onPlayPauseStateChanged); - events.on(player, "timeupdate", onTimeUpdate); - events.on(player, "fullscreenchange", updateFullscreenIcon); - events.on(player, "mediastreamschange", onMediaStreamsChanged); - events.on(player, "beginFetch", onBeginFetch); - events.on(player, "endFetch", onEndFetch); + events.on(player, 'playbackstart', onPlaybackStart); + events.on(player, 'playbackstop', onPlaybackStopped); + events.on(player, 'volumechange', onVolumeChanged); + events.on(player, 'pause', onPlayPauseStateChanged); + events.on(player, 'unpause', onPlayPauseStateChanged); + events.on(player, 'timeupdate', onTimeUpdate); + events.on(player, 'fullscreenchange', updateFullscreenIcon); + events.on(player, 'mediastreamschange', onMediaStreamsChanged); + events.on(player, 'beginFetch', onBeginFetch); + events.on(player, 'endFetch', onEndFetch); resetUpNextDialog(); if (player.isFetching) { @@ -635,14 +635,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var player = currentPlayer; if (player) { - events.off(player, "playbackstart", onPlaybackStart); - events.off(player, "playbackstop", onPlaybackStopped); - events.off(player, "volumechange", onVolumeChanged); - events.off(player, "pause", onPlayPauseStateChanged); - events.off(player, "unpause", onPlayPauseStateChanged); - events.off(player, "timeupdate", onTimeUpdate); - events.off(player, "fullscreenchange", updateFullscreenIcon); - events.off(player, "mediastreamschange", onMediaStreamsChanged); + events.off(player, 'playbackstart', onPlaybackStart); + events.off(player, 'playbackstop', onPlaybackStopped); + events.off(player, 'volumechange', onVolumeChanged); + events.off(player, 'pause', onPlayPauseStateChanged); + events.off(player, 'unpause', onPlayPauseStateChanged); + events.off(player, 'timeupdate', onTimeUpdate); + events.off(player, 'fullscreenchange', updateFullscreenIcon); + events.off(player, 'mediastreamschange', onMediaStreamsChanged); currentPlayer = null; } } @@ -666,7 +666,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function showComingUpNextIfNeeded(player, currentItem, currentTimeTicks, runtimeTicks) { - if (runtimeTicks && currentTimeTicks && !comingUpNextDisplayed && !currentVisibleMenu && "Episode" === currentItem.Type && userSettings.enableNextVideoInfoOverlay()) { + if (runtimeTicks && currentTimeTicks && !comingUpNextDisplayed && !currentVisibleMenu && 'Episode' === currentItem.Type && userSettings.enableNextVideoInfoOverlay()) { var showAtSecondsLeft = runtimeTicks >= 3e10 ? 40 : runtimeTicks >= 24e9 ? 35 : 30; var showAtTicks = runtimeTicks - 1e3 * showAtSecondsLeft * 1e4; var timeRemainingTicks = runtimeTicks - currentTimeTicks; @@ -678,30 +678,30 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function onUpNextHidden() { - if ("upnext" === currentVisibleMenu) { + if ('upnext' === currentVisibleMenu) { currentVisibleMenu = null; } } function showComingUpNext(player) { - require(["upNextDialog"], function (UpNextDialog) { + require(['upNextDialog'], function (UpNextDialog) { if (!(currentVisibleMenu || currentUpNextDialog)) { - currentVisibleMenu = "upnext"; + currentVisibleMenu = 'upnext'; comingUpNextDisplayed = true; playbackManager.nextItem(player).then(function (nextItem) { currentUpNextDialog = new UpNextDialog({ - parent: view.querySelector(".upNextContainer"), + parent: view.querySelector('.upNextContainer'), player: player, nextItem: nextItem }); - events.on(currentUpNextDialog, "hide", onUpNextHidden); + events.on(currentUpNextDialog, 'hide', onUpNextHidden); }, onUpNextHidden); } }); } function refreshProgramInfoIfNeeded(player, item) { - if ("TvChannel" === item.Type) { + if ('TvChannel' === item.Type) { var program = item.CurrentProgram; if (program && program.EndDate) { @@ -709,31 +709,31 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var endDate = datetime.parseISO8601Date(program.EndDate); if (new Date().getTime() >= endDate.getTime()) { - console.debug("program info needs to be refreshed"); + console.debug('program info needs to be refreshed'); var state = playbackManager.getPlayerState(player); onStateChanged.call(player, { - type: "init" + type: 'init' }, state); } } catch (e) { - console.error("error parsing date: " + program.EndDate); + console.error('error parsing date: ' + program.EndDate); } } } } function updatePlayPauseState(isPaused) { - const btnPlayPause = view.querySelector(".btnPause"); - const btnPlayPauseIcon = btnPlayPause.querySelector(".material-icons"); + const btnPlayPause = view.querySelector('.btnPause'); + const btnPlayPauseIcon = btnPlayPause.querySelector('.material-icons'); - btnPlayPauseIcon.classList.remove("play_arrow", "pause"); + btnPlayPauseIcon.classList.remove('play_arrow', 'pause'); if (isPaused) { - btnPlayPauseIcon.classList.add("play_arrow"); - btnPlayPause.setAttribute("title", globalize.translate("ButtonPlay") + " (k)"); + btnPlayPauseIcon.classList.add('play_arrow'); + btnPlayPause.setAttribute('title', globalize.translate('ButtonPlay') + ' (k)'); } else { - btnPlayPauseIcon.classList.add("pause"); - btnPlayPause.setAttribute("title", globalize.translate("ButtonPause") + " (k)"); + btnPlayPauseIcon.classList.add('pause'); + btnPlayPause.setAttribute('title', globalize.translate('ButtonPause') + ' (k)'); } } @@ -742,7 +742,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med updatePlayPauseState(playState.IsPaused); var supportedCommands = playbackManager.getSupportedCommands(player); currentPlayerSupportedCommands = supportedCommands; - supportsBrightnessChange = -1 !== supportedCommands.indexOf("SetBrightness"); + supportsBrightnessChange = -1 !== supportedCommands.indexOf('SetBrightness'); updatePlayerVolumeState(player, playState.IsMuted, playState.VolumeLevel); if (nowPlayingPositionSlider && !nowPlayingPositionSlider.dragging) { @@ -756,10 +756,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playState.PlaybackStartTimeTicks, playState.BufferedRanges || []); updateNowPlayingInfo(player, state); - if (state.MediaSource && state.MediaSource.SupportsTranscoding && -1 !== supportedCommands.indexOf("SetMaxStreamingBitrate")) { - view.querySelector(".btnVideoOsdSettings").classList.remove("hide"); + if (state.MediaSource && state.MediaSource.SupportsTranscoding && -1 !== supportedCommands.indexOf('SetMaxStreamingBitrate')) { + view.querySelector('.btnVideoOsdSettings').classList.remove('hide'); } else { - view.querySelector(".btnVideoOsdSettings").classList.add("hide"); + view.querySelector('.btnVideoOsdSettings').classList.add('hide'); } var isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks; @@ -770,22 +770,22 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med userSettings.skipForwardLength() * 1000000 / nowPlayingItem.RunTimeTicks); } - if (-1 === supportedCommands.indexOf("ToggleFullscreen") || player.isLocalPlayer && layoutManager.tv && playbackManager.isFullscreen(player)) { - view.querySelector(".btnFullscreen").classList.add("hide"); + if (-1 === supportedCommands.indexOf('ToggleFullscreen') || player.isLocalPlayer && layoutManager.tv && playbackManager.isFullscreen(player)) { + view.querySelector('.btnFullscreen').classList.add('hide'); } else { - view.querySelector(".btnFullscreen").classList.remove("hide"); + view.querySelector('.btnFullscreen').classList.remove('hide'); } - if (-1 === supportedCommands.indexOf("PictureInPicture")) { - view.querySelector(".btnPip").classList.add("hide"); + if (-1 === supportedCommands.indexOf('PictureInPicture')) { + view.querySelector('.btnPip').classList.add('hide'); } else { - view.querySelector(".btnPip").classList.remove("hide"); + view.querySelector('.btnPip').classList.remove('hide'); } - if (-1 === supportedCommands.indexOf("AirPlay")) { - view.querySelector(".btnAirPlay").classList.add("hide"); + if (-1 === supportedCommands.indexOf('AirPlay')) { + view.querySelector('.btnAirPlay').classList.add('hide'); } else { - view.querySelector(".btnAirPlay").classList.remove("hide"); + view.querySelector('.btnAirPlay').classList.remove('hide'); } updateFullscreenIcon(); @@ -818,8 +818,8 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } } - nowPlayingPositionText.innerHTML = ""; - nowPlayingDurationText.innerHTML = ""; + nowPlayingPositionText.innerHTML = ''; + nowPlayingDurationText.innerHTML = ''; } else { if (nowPlayingPositionSlider && !nowPlayingPositionSlider.dragging) { if (runtimeTicks) { @@ -830,10 +830,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med nowPlayingPositionSlider.value = 0; } - if (runtimeTicks && null != positionTicks && currentRuntimeTicks && !enableProgressByTimeOfDay && currentItem.RunTimeTicks && "Recording" !== currentItem.Type) { - endsAtText.innerHTML = "  -  " + mediaInfo.getEndsAtFromPosition(runtimeTicks, positionTicks, true); + if (runtimeTicks && null != positionTicks && currentRuntimeTicks && !enableProgressByTimeOfDay && currentItem.RunTimeTicks && 'Recording' !== currentItem.Type) { + endsAtText.innerHTML = '  -  ' + mediaInfo.getEndsAtFromPosition(runtimeTicks, positionTicks, true); } else { - endsAtText.innerHTML = ""; + endsAtText.innerHTML = ''; } } @@ -851,43 +851,43 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var showMuteButton = true; var showVolumeSlider = true; - if (-1 === supportedCommands.indexOf("Mute")) { + if (-1 === supportedCommands.indexOf('Mute')) { showMuteButton = false; } - if (-1 === supportedCommands.indexOf("SetVolume")) { + if (-1 === supportedCommands.indexOf('SetVolume')) { showVolumeSlider = false; } - if (player.isLocalPlayer && appHost.supports("physicalvolumecontrol")) { + if (player.isLocalPlayer && appHost.supports('physicalvolumecontrol')) { showMuteButton = false; showVolumeSlider = false; } - const buttonMute = view.querySelector(".buttonMute"); - const buttonMuteIcon = buttonMute.querySelector(".material-icons"); + const buttonMute = view.querySelector('.buttonMute'); + const buttonMuteIcon = buttonMute.querySelector('.material-icons'); - buttonMuteIcon.classList.remove("volume_off", "volume_up"); + buttonMuteIcon.classList.remove('volume_off', 'volume_up'); if (isMuted) { - buttonMute.setAttribute("title", globalize.translate("Unmute") + " (m)"); - buttonMuteIcon.classList.add("volume_off"); + buttonMute.setAttribute('title', globalize.translate('Unmute') + ' (m)'); + buttonMuteIcon.classList.add('volume_off'); } else { - buttonMute.setAttribute("title", globalize.translate("Mute") + " (m)"); - buttonMuteIcon.classList.add("volume_up"); + buttonMute.setAttribute('title', globalize.translate('Mute') + ' (m)'); + buttonMuteIcon.classList.add('volume_up'); } if (showMuteButton) { - buttonMute.classList.remove("hide"); + buttonMute.classList.remove('hide'); } else { - buttonMute.classList.add("hide"); + buttonMute.classList.add('hide'); } if (nowPlayingVolumeSlider) { if (showVolumeSlider) { - nowPlayingVolumeSliderContainer.classList.remove("hide"); + nowPlayingVolumeSliderContainer.classList.remove('hide'); } else { - nowPlayingVolumeSliderContainer.classList.add("hide"); + nowPlayingVolumeSliderContainer.classList.add('hide'); } if (!nowPlayingVolumeSlider.dragging) { @@ -897,24 +897,24 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function updatePlaylist(player) { - var btnPreviousTrack = view.querySelector(".btnPreviousTrack"); - var btnNextTrack = view.querySelector(".btnNextTrack"); - btnPreviousTrack.classList.remove("hide"); - btnNextTrack.classList.remove("hide"); + var btnPreviousTrack = view.querySelector('.btnPreviousTrack'); + var btnNextTrack = view.querySelector('.btnNextTrack'); + btnPreviousTrack.classList.remove('hide'); + btnNextTrack.classList.remove('hide'); btnNextTrack.disabled = false; btnPreviousTrack.disabled = false; } function updateTimeText(elem, ticks, divider) { if (null == ticks) { - elem.innerHTML = ""; + elem.innerHTML = ''; return; } var html = datetime.getDisplayRunningTime(ticks); if (divider) { - html = " / " + html; + html = ' / ' + html; } elem.innerHTML = html; @@ -923,7 +923,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function onSettingsButtonClick(e) { var btn = this; - require(["playerSettingsMenu"], function (playerSettingsMenu) { + require(['playerSettingsMenu'], function (playerSettingsMenu) { var player = currentPlayer; if (player) { @@ -933,7 +933,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med playbackManager.canHandleOffsetOnCurrentSubtitle(player); playerSettingsMenu.show({ - mediaType: "Video", + mediaType: 'Video', player: player, positionTo: btn, stats: true, @@ -945,9 +945,9 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function onSettingsOption(selectedOption) { - if ("stats" === selectedOption) { + if ('stats' === selectedOption) { toggleStats(); - } else if ("suboffset" === selectedOption) { + } else if ('suboffset' === selectedOption) { var player = currentPlayer; if (player) { playbackManager.enableShowingSubtitleOffset(player); @@ -957,7 +957,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function toggleStats() { - require(["playerStats"], function (PlayerStats) { + require(['playerStats'], function (PlayerStats) { var player = currentPlayer; if (player) { @@ -997,10 +997,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med }); var positionTo = this; - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: menuItems, - title: globalize.translate("Audio"), + title: globalize.translate('Audio'), positionTo: positionTo }).then(function (id) { var index = parseInt(id); @@ -1023,7 +1023,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med streams.unshift({ Index: -1, - DisplayTitle: globalize.translate("Off") + DisplayTitle: globalize.translate('Off') }); var menuItems = streams.map(function (stream) { var opt = { @@ -1039,9 +1039,9 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med }); var positionTo = this; - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ - title: globalize.translate("Subtitles"), + title: globalize.translate('Subtitles'), items: menuItems, positionTo: positionTo }).then(function (id) { @@ -1057,7 +1057,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function toggleSubtitleSync(action) { - require(["subtitleSync"], function (SubtitleSync) { + require(['subtitleSync'], function (SubtitleSync) { var player = currentPlayer; if (subtitleSyncOverlay) { subtitleSyncOverlay.toggle(action); @@ -1097,55 +1097,55 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } switch (key) { - case "Enter": + case 'Enter': showOsd(); break; - case "Escape": - case "Back": + case 'Escape': + case 'Back': // Ignore key when some dialog is opened - if (currentVisibleMenu === "osd" && !document.querySelector(".dialogContainer")) { + if (currentVisibleMenu === 'osd' && !document.querySelector('.dialogContainer')) { hideOsd(); e.stopPropagation(); } break; - case "k": + case 'k': playbackManager.playPause(currentPlayer); showOsd(); break; - case "l": - case "ArrowRight": - case "Right": + case 'l': + case 'ArrowRight': + case 'Right': playbackManager.fastForward(currentPlayer); showOsd(); break; - case "j": - case "ArrowLeft": - case "Left": + case 'j': + case 'ArrowLeft': + case 'Left': playbackManager.rewind(currentPlayer); showOsd(); break; - case "f": + case 'f': if (!e.ctrlKey && !e.metaKey) { playbackManager.toggleFullscreen(currentPlayer); showOsd(); } break; - case "m": + case 'm': playbackManager.toggleMute(currentPlayer); showOsd(); break; - case "NavigationLeft": - case "GamepadDPadLeft": - case "GamepadLeftThumbstickLeft": + case 'NavigationLeft': + case 'GamepadDPadLeft': + case 'GamepadLeftThumbstickLeft': // Ignores gamepad events that are always triggered, even when not focused. if (document.hasFocus()) { /* eslint-disable-line compat/compat */ playbackManager.rewind(currentPlayer); showOsd(); } break; - case "NavigationRight": - case "GamepadDPadRight": - case "GamepadLeftThumbstickRight": + case 'NavigationRight': + case 'GamepadDPadRight': + case 'GamepadLeftThumbstickRight': // Ignores gamepad events that are always triggered, even when not focused. if (document.hasFocus()) { /* eslint-disable-line compat/compat */ playbackManager.fastForward(currentPlayer); @@ -1167,7 +1167,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med return apiClient.getScaledImageUrl(item.Id, { maxWidth: maxWidth, tag: chapter.ImageTag, - type: "Chapter", + type: 'Chapter', index: index }); } @@ -1200,12 +1200,12 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med html += '
'; html += '
'; html += chapter.Name; - html += "
"; + html += '
'; html += '

'; html += datetime.getDisplayRunningTime(positionTicks); - html += "

"; - html += ""; - return html + ""; + html += ''; + html += ''; + return html + ''; } return null; @@ -1220,17 +1220,17 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med clearTimeout(playPauseClickTimeout); var player = currentPlayer; - view.removeEventListener("viewbeforehide", onViewHideStopPlayback); + view.removeEventListener('viewbeforehide', onViewHideStopPlayback); releaseCurrentPlayer(); playbackManager.stop(player); } } function enableStopOnBack(enabled) { - view.removeEventListener("viewbeforehide", onViewHideStopPlayback); + view.removeEventListener('viewbeforehide', onViewHideStopPlayback); if (enabled && playbackManager.isPlayingVideo(currentPlayer)) { - view.addEventListener("viewbeforehide", onViewHideStopPlayback); + view.addEventListener('viewbeforehide', onViewHideStopPlayback); } } @@ -1258,45 +1258,45 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var programEndDateMs = 0; var playbackStartTimeTicks = 0; var subtitleSyncOverlay; - var nowPlayingVolumeSlider = view.querySelector(".osdVolumeSlider"); - var nowPlayingVolumeSliderContainer = view.querySelector(".osdVolumeSliderContainer"); - var nowPlayingPositionSlider = view.querySelector(".osdPositionSlider"); - var nowPlayingPositionText = view.querySelector(".osdPositionText"); - var nowPlayingDurationText = view.querySelector(".osdDurationText"); - var startTimeText = view.querySelector(".startTimeText"); - var endTimeText = view.querySelector(".endTimeText"); - var endsAtText = view.querySelector(".endsAtText"); - var btnRewind = view.querySelector(".btnRewind"); - var btnFastForward = view.querySelector(".btnFastForward"); + var nowPlayingVolumeSlider = view.querySelector('.osdVolumeSlider'); + var nowPlayingVolumeSliderContainer = view.querySelector('.osdVolumeSliderContainer'); + var nowPlayingPositionSlider = view.querySelector('.osdPositionSlider'); + var nowPlayingPositionText = view.querySelector('.osdPositionText'); + var nowPlayingDurationText = view.querySelector('.osdDurationText'); + var startTimeText = view.querySelector('.startTimeText'); + var endTimeText = view.querySelector('.endTimeText'); + var endsAtText = view.querySelector('.endsAtText'); + var btnRewind = view.querySelector('.btnRewind'); + var btnFastForward = view.querySelector('.btnFastForward'); var transitionEndEventName = dom.whichTransitionEvent(); - var headerElement = document.querySelector(".skinHeader"); - var osdBottomElement = document.querySelector(".videoOsdBottom-maincontrols"); + var headerElement = document.querySelector('.skinHeader'); + var osdBottomElement = document.querySelector('.videoOsdBottom-maincontrols'); if (layoutManager.tv) { - nowPlayingPositionSlider.classList.add("focusable"); + nowPlayingPositionSlider.classList.add('focusable'); nowPlayingPositionSlider.enableKeyboardDragging(); } - view.addEventListener("viewbeforeshow", function (e) { - headerElement.classList.add("osdHeader"); - Emby.Page.setTransparency("full"); + view.addEventListener('viewbeforeshow', function (e) { + headerElement.classList.add('osdHeader'); + Emby.Page.setTransparency('full'); }); - view.addEventListener("viewshow", function (e) { + view.addEventListener('viewshow', function (e) { try { - events.on(playbackManager, "playerchange", onPlayerChange); + events.on(playbackManager, 'playerchange', onPlayerChange); bindToPlayer(playbackManager.getCurrentPlayer()); - dom.addEventListener(document, window.PointerEvent ? "pointermove" : "mousemove", onPointerMove, { + dom.addEventListener(document, window.PointerEvent ? 'pointermove' : 'mousemove', onPointerMove, { passive: true }); showOsd(); inputManager.on(window, onInputCommand); - dom.addEventListener(window, "keydown", onWindowKeyDown, { + dom.addEventListener(window, 'keydown', onWindowKeyDown, { capture: true }); - dom.addEventListener(window, window.PointerEvent ? "pointerdown" : "mousedown", onWindowMouseDown, { + dom.addEventListener(window, window.PointerEvent ? 'pointerdown' : 'mousedown', onWindowMouseDown, { passive: true }); - dom.addEventListener(window, "touchstart", onWindowTouchStart, { + dom.addEventListener(window, 'touchstart', onWindowTouchStart, { passive: true }); } catch (e) { @@ -1305,44 +1305,44 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med }); } }); - view.addEventListener("viewbeforehide", function () { + view.addEventListener('viewbeforehide', function () { if (statsOverlay) { statsOverlay.enabled(false); } - dom.removeEventListener(window, "keydown", onWindowKeyDown, { + dom.removeEventListener(window, 'keydown', onWindowKeyDown, { capture: true }); - dom.removeEventListener(window, window.PointerEvent ? "pointerdown" : "mousedown", onWindowMouseDown, { + dom.removeEventListener(window, window.PointerEvent ? 'pointerdown' : 'mousedown', onWindowMouseDown, { passive: true }); - dom.removeEventListener(window, "touchstart", onWindowTouchStart, { + dom.removeEventListener(window, 'touchstart', onWindowTouchStart, { passive: true }); stopOsdHideTimer(); - headerElement.classList.remove("osdHeader"); - headerElement.classList.remove("osdHeader-hidden"); - dom.removeEventListener(document, window.PointerEvent ? "pointermove" : "mousemove", onPointerMove, { + headerElement.classList.remove('osdHeader'); + headerElement.classList.remove('osdHeader-hidden'); + dom.removeEventListener(document, window.PointerEvent ? 'pointermove' : 'mousemove', onPointerMove, { passive: true }); inputManager.off(window, onInputCommand); - events.off(playbackManager, "playerchange", onPlayerChange); + events.off(playbackManager, 'playerchange', onPlayerChange); releaseCurrentPlayer(); }); - view.querySelector(".btnFullscreen").addEventListener("click", function () { + view.querySelector('.btnFullscreen').addEventListener('click', function () { playbackManager.toggleFullscreen(currentPlayer); }); - view.querySelector(".btnPip").addEventListener("click", function () { + view.querySelector('.btnPip').addEventListener('click', function () { playbackManager.togglePictureInPicture(currentPlayer); }); - view.querySelector(".btnAirPlay").addEventListener("click", function () { + view.querySelector('.btnAirPlay').addEventListener('click', function () { playbackManager.toggleAirPlay(currentPlayer); }); - view.querySelector(".btnVideoOsdSettings").addEventListener("click", onSettingsButtonClick); - view.addEventListener("viewhide", function () { - headerElement.classList.remove("hide"); + view.querySelector('.btnVideoOsdSettings').addEventListener('click', onSettingsButtonClick); + view.addEventListener('viewhide', function () { + headerElement.classList.remove('hide'); }); - view.addEventListener("viewdestroy", function () { + view.addEventListener('viewdestroy', function () { if (self.touchHelper) { self.touchHelper.destroy(); self.touchHelper = null; @@ -1357,16 +1357,16 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med destroySubtitleSync(); }); var lastPointerDown = 0; - dom.addEventListener(view, window.PointerEvent ? "pointerdown" : "click", function (e) { - if (dom.parentWithClass(e.target, ["videoOsdBottom", "upNextContainer"])) { + dom.addEventListener(view, window.PointerEvent ? 'pointerdown' : 'click', function (e) { + if (dom.parentWithClass(e.target, ['videoOsdBottom', 'upNextContainer'])) { return void showOsd(); } - var pointerType = e.pointerType || (layoutManager.mobile ? "touch" : "mouse"); + var pointerType = e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse'); var now = new Date().getTime(); switch (pointerType) { - case "touch": + case 'touch': if (now - lastPointerDown > 300) { lastPointerDown = now; toggleOsd(); @@ -1374,7 +1374,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med break; - case "mouse": + case 'mouse': if (!e.button) { if (playPauseClickTimeout) { clearTimeout(playPauseClickTimeout); @@ -1399,10 +1399,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med }); if (browser.touch) { - dom.addEventListener(view, "dblclick", onDoubleClick, {}); + dom.addEventListener(view, 'dblclick', onDoubleClick, {}); } else { var options = { passive: true }; - dom.addEventListener(view, "dblclick", function () { + dom.addEventListener(view, 'dblclick', function () { playbackManager.toggleFullscreen(currentPlayer); }, options); } @@ -1411,14 +1411,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med playbackManager.setVolume(this.value, currentPlayer); } - view.querySelector(".buttonMute").addEventListener("click", function () { + view.querySelector('.buttonMute').addEventListener('click', function () { playbackManager.toggleMute(currentPlayer); }); - nowPlayingVolumeSlider.addEventListener("change", setVolume); - nowPlayingVolumeSlider.addEventListener("mousemove", setVolume); - nowPlayingVolumeSlider.addEventListener("touchmove", setVolume); + nowPlayingVolumeSlider.addEventListener('change', setVolume); + nowPlayingVolumeSlider.addEventListener('mousemove', setVolume); + nowPlayingVolumeSlider.addEventListener('touchmove', setVolume); - nowPlayingPositionSlider.addEventListener("change", function () { + nowPlayingPositionSlider.addEventListener('change', function () { var player = currentPlayer; if (player) { @@ -1443,14 +1443,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med ms /= 100; ms *= value; ms += programStartDateMs; - return '

' + getDisplayTimeWithoutAmPm(new Date(parseInt(ms)), true) + "

"; + return '

' + getDisplayTimeWithoutAmPm(new Date(parseInt(ms)), true) + '

'; } - return "--:--"; + return '--:--'; } if (!currentRuntimeTicks) { - return "--:--"; + return '--:--'; } var ticks = currentRuntimeTicks; @@ -1466,41 +1466,41 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } } - return '

' + datetime.getDisplayRunningTime(ticks) + "

"; + return '

' + datetime.getDisplayRunningTime(ticks) + '

'; }; - view.querySelector(".btnPreviousTrack").addEventListener("click", function () { + view.querySelector('.btnPreviousTrack').addEventListener('click', function () { playbackManager.previousTrack(currentPlayer); }); - view.querySelector(".btnPause").addEventListener("click", function () { + view.querySelector('.btnPause').addEventListener('click', function () { // Ignore 'click' if another element was originally clicked (Firefox/Edge issue) if (this.contains(clickedElement)) { playbackManager.playPause(currentPlayer); } }); - view.querySelector(".btnNextTrack").addEventListener("click", function () { + view.querySelector('.btnNextTrack').addEventListener('click', function () { playbackManager.nextTrack(currentPlayer); }); - btnRewind.addEventListener("click", function () { + btnRewind.addEventListener('click', function () { playbackManager.rewind(currentPlayer); }); - btnFastForward.addEventListener("click", function () { + btnFastForward.addEventListener('click', function () { playbackManager.fastForward(currentPlayer); }); - view.querySelector(".btnAudio").addEventListener("click", showAudioTrackSelection); - view.querySelector(".btnSubtitles").addEventListener("click", showSubtitleTrackSelection); + view.querySelector('.btnAudio').addEventListener('click', showAudioTrackSelection); + view.querySelector('.btnSubtitles').addEventListener('click', showSubtitleTrackSelection); if (browser.touch) { (function () { - require(["touchHelper"], function (TouchHelper) { + require(['touchHelper'], function (TouchHelper) { self.touchHelper = new TouchHelper(view, { swipeYThreshold: 30, triggerOnMove: true, preventDefaultOnMove: true, - ignoreTagNames: ["BUTTON", "INPUT", "TEXTAREA"] + ignoreTagNames: ['BUTTON', 'INPUT', 'TEXTAREA'] }); - events.on(self.touchHelper, "swipeup", onVerticalSwipe); - events.on(self.touchHelper, "swipedown", onVerticalSwipe); + events.on(self.touchHelper, 'swipeup', onVerticalSwipe); + events.on(self.touchHelper, 'swipedown', onVerticalSwipe); }); })(); } diff --git a/src/controllers/searchpage.js b/src/controllers/searchpage.js index b260ef5751..8a138b7516 100644 --- a/src/controllers/searchpage.js +++ b/src/controllers/searchpage.js @@ -1,5 +1,5 @@ -define(["focusManager", "searchFields", "searchResults", "events"], function (focusManager, SearchFields, SearchResults, events) { - "use strict"; +define(['focusManager', 'searchFields', 'searchResults', 'events'], function (focusManager, SearchFields, SearchResults, events) { + 'use strict'; return function (view, params) { function onSearch(e, value) { @@ -7,21 +7,21 @@ define(["focusManager", "searchFields", "searchResults", "events"], function (fo } var self = this; - view.addEventListener("viewshow", function () { + view.addEventListener('viewshow', function () { if (!self.searchFields) { self.searchFields = new SearchFields({ - element: view.querySelector(".searchFields") + element: view.querySelector('.searchFields') }); self.searchResults = new SearchResults({ - element: view.querySelector(".searchResults"), + element: view.querySelector('.searchResults'), serverId: params.serverId || ApiClient.serverId(), parentId: params.parentId, collectionType: params.collectionType }); - events.on(self.searchFields, "search", onSearch); + events.on(self.searchFields, 'search', onSearch); } }); - view.addEventListener("viewdestroy", function () { + view.addEventListener('viewdestroy', function () { if (self.searchFields) { self.searchFields.destroy(); self.searchFields = null; diff --git a/src/controllers/shows/episodes.js b/src/controllers/shows/episodes.js index bd7823d401..ca9a807cbf 100644 --- a/src/controllers/shows/episodes.js +++ b/src/controllers/shows/episodes.js @@ -1,5 +1,5 @@ -define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "userSettings", "globalize", "emby-itemscontainer"], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) { - "use strict"; +define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) { + 'use strict'; return function (view, params, tabContent) { function getPageData(context) { @@ -9,17 +9,17 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB if (!pageData) { pageData = data[key] = { query: { - SortBy: "SeriesSortName,SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Episode", + SortBy: 'SeriesSortName,SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'Episode', Recursive: true, - Fields: "PrimaryImageAspectRatio,MediaSourceCount,UserData", + Fields: 'PrimaryImageAspectRatio,MediaSourceCount,UserData', IsMissing: false, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Thumb", + EnableImageTypes: 'Primary,Backdrop,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || "Poster" + view: libraryBrowser.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -39,7 +39,7 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey("episodes"); + context.savedQueryKey = libraryBrowser.getSavedQueryKey('episodes'); } return context.savedQueryKey; @@ -47,17 +47,17 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB function onViewStyleChange() { var viewStyle = self.getCurrentViewStyle(); - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var itemsContainer = tabContent.querySelector('.itemsContainer'); - if ("List" == viewStyle) { - itemsContainer.classList.add("vertical-list"); - itemsContainer.classList.remove("vertical-wrap"); + if ('List' == viewStyle) { + itemsContainer.classList.add('vertical-list'); + itemsContainer.classList.remove('vertical-wrap'); } else { - itemsContainer.classList.remove("vertical-list"); - itemsContainer.classList.add("vertical-wrap"); + itemsContainer.classList.remove('vertical-list'); + itemsContainer.classList.add('vertical-wrap'); } - itemsContainer.innerHTML = ""; + itemsContainer.innerHTML = ''; } function reloadItems(page) { @@ -100,17 +100,17 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB filterButton: false }); var viewStyle = self.getCurrentViewStyle(); - var itemsContainer = tabContent.querySelector(".itemsContainer"); - if (viewStyle == "List") { + var itemsContainer = tabContent.querySelector('.itemsContainer'); + if (viewStyle == 'List') { html = listView.getListViewHtml({ items: result.Items, sortBy: query.SortBy, showParentTitle: true }); - } else if (viewStyle == "PosterCard") { + } else if (viewStyle == 'PosterCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', showTitle: true, showParentTitle: true, scalable: true, @@ -119,7 +119,7 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB } else { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', showTitle: true, showParentTitle: true, overlayText: false, @@ -132,19 +132,19 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB var length; var elems; - elems = tabContent.querySelectorAll(".paging"); + elems = tabContent.querySelectorAll('.paging'); for (i = 0, length = elems.length; i < length; i++) { elems[i].innerHTML = pagingHtml; } - elems = tabContent.querySelectorAll(".btnNextPage"); + elems = tabContent.querySelectorAll('.btnNextPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onNextPageClick); + elems[i].addEventListener('click', onNextPageClick); } - elems = tabContent.querySelectorAll(".btnPreviousPage"); + elems = tabContent.querySelectorAll('.btnPreviousPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onPreviousPageClick); + elems[i].addEventListener('click', onPreviousPageClick); } itemsContainer.innerHTML = html; @@ -153,7 +153,7 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB loading.hide(); isLoading = false; - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(page); }); }); @@ -164,13 +164,13 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB var isLoading = false; self.showFilterMenu = function () { - require(["components/filterdialog/filterdialog"], function (filterDialogFactory) { + require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { var filterDialog = new filterDialogFactory({ query: getQuery(tabContent), - mode: "episodes", + mode: 'episodes', serverId: ApiClient.serverId() }); - events.on(filterDialog, "filterchange", function () { + events.on(filterDialog, 'filterchange', function () { reloadItems(tabContent); }); filterDialog.show(); @@ -182,35 +182,35 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB }; function initPage(tabContent) { - tabContent.querySelector(".btnFilter").addEventListener("click", function () { + tabContent.querySelector('.btnFilter').addEventListener('click', function () { self.showFilterMenu(); }); - tabContent.querySelector(".btnSort").addEventListener("click", function (e) { + tabContent.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ - name: globalize.translate("OptionNameSort"), - id: "SeriesSortName,SortName" + name: globalize.translate('OptionNameSort'), + id: 'SeriesSortName,SortName' }, { - name: globalize.translate("OptionTvdbRating"), - id: "CommunityRating,SeriesSortName,SortName" + name: globalize.translate('OptionTvdbRating'), + id: 'CommunityRating,SeriesSortName,SortName' }, { - name: globalize.translate("OptionDateAdded"), - id: "DateCreated,SeriesSortName,SortName" + name: globalize.translate('OptionDateAdded'), + id: 'DateCreated,SeriesSortName,SortName' }, { - name: globalize.translate("OptionPremiereDate"), - id: "PremiereDate,SeriesSortName,SortName" + name: globalize.translate('OptionPremiereDate'), + id: 'PremiereDate,SeriesSortName,SortName' }, { - name: globalize.translate("OptionDatePlayed"), - id: "DatePlayed,SeriesSortName,SortName" + name: globalize.translate('OptionDatePlayed'), + id: 'DatePlayed,SeriesSortName,SortName' }, { - name: globalize.translate("OptionParentalRating"), - id: "OfficialRating,SeriesSortName,SortName" + name: globalize.translate('OptionParentalRating'), + id: 'OfficialRating,SeriesSortName,SortName' }, { - name: globalize.translate("OptionPlayCount"), - id: "PlayCount,SeriesSortName,SortName" + name: globalize.translate('OptionPlayCount'), + id: 'PlayCount,SeriesSortName,SortName' }, { - name: globalize.translate("OptionRuntime"), - id: "Runtime,SeriesSortName,SortName" + name: globalize.translate('OptionRuntime'), + id: 'Runtime,SeriesSortName,SortName' }], callback: function () { reloadItems(tabContent); @@ -219,11 +219,11 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB button: e.target }); }); - var btnSelectView = tabContent.querySelector(".btnSelectView"); - btnSelectView.addEventListener("click", function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "List,Poster,PosterCard".split(",")); + var btnSelectView = tabContent.querySelector('.btnSelectView'); + btnSelectView.addEventListener('click', function (e) { + libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); - btnSelectView.addEventListener("layoutchange", function (e) { + btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; getPageData(tabContent).view = viewStyle; libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index d59e7d80c1..f6fa1e62ae 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -1,5 +1,5 @@ -define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader", "apphost", "globalize", "appRouter", "dom", "emby-button"], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) { - "use strict"; +define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'appRouter', 'dom', 'emby-button'], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) { + 'use strict'; return function (view, params, tabContent) { function getPageData() { @@ -9,13 +9,13 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader if (!pageData) { pageData = data[key] = { query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Series", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'Series', Recursive: true, EnableTotalRecordCount: false }, - view: "Poster" + view: 'Poster' }; pageData.query.ParentId = params.topParentId; libraryBrowser.loadSavedQueryValues(key, pageData.query); @@ -29,7 +29,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader } function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey("seriesgenres"); + return libraryBrowser.getSavedQueryKey('seriesgenres'); } function getPromise() { @@ -43,29 +43,29 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader } function getThumbShape() { - return enableScrollX() ? "overflowBackdrop" : "backdrop"; + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; } function getPortraitShape() { - return enableScrollX() ? "overflowPortrait" : "portrait"; + return enableScrollX() ? 'overflowPortrait' : 'portrait'; } function fillItemsContainer(elem) { - var id = elem.getAttribute("data-id"); + var id = elem.getAttribute('data-id'); var viewStyle = self.getCurrentViewStyle(); - var limit = "Thumb" == viewStyle || "ThumbCard" == viewStyle ? 5 : 9; + var limit = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 5 : 9; if (enableScrollX()) { limit = 10; } - var enableImageTypes = "Thumb" == viewStyle || "ThumbCard" == viewStyle ? "Primary,Backdrop,Thumb" : "Primary"; + var enableImageTypes = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 'Primary,Backdrop,Thumb' : 'Primary'; var query = { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Series", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'Series', Recursive: true, - Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo', ImageTypeLimit: 1, EnableImageTypes: enableImageTypes, Limit: limit, @@ -74,9 +74,9 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader ParentId: params.topParentId }; ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) { - var supportsImageAnalysis = appHost.supports("imageanalysis"); + var supportsImageAnalysis = appHost.supports('imageanalysis'); - if (viewStyle == "Thumb") { + if (viewStyle == 'Thumb') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getThumbShape(), @@ -87,7 +87,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader overlayMoreButton: true, allowBottomPadding: false }); - } else if (viewStyle == "ThumbCard") { + } else if (viewStyle == 'ThumbCard') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getThumbShape(), @@ -98,7 +98,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader cardLayout: true, showYear: true }); - } else if (viewStyle == "PosterCard") { + } else if (viewStyle == 'PosterCard') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getPortraitShape(), @@ -108,7 +108,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader cardLayout: true, showYear: true }); - } else if (viewStyle == "Poster") { + } else if (viewStyle == 'Poster') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getPortraitShape(), @@ -121,7 +121,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader }); } if (result.Items.length >= query.Limit) { - tabContent.querySelector(".btnMoreFromGenre" + id + " .material-icons").classList.remove("hide"); + tabContent.querySelector('.btnMoreFromGenre' + id + ' .material-icons').classList.remove('hide'); } }); } @@ -129,8 +129,8 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader function reloadItems(context, promise) { var query = getQuery(); promise.then(function (result) { - var elem = context.querySelector("#items"); - var html = ""; + var elem = context.querySelector('#items'); + var html = ''; var items = result.Items; for (var i = 0, length = items.length; i < length; i++) { @@ -138,26 +138,26 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '
'; html += '"; + html += ''; + html += '
'; if (enableScrollX()) { - var scrollXClass = "scrollX hiddenScrollX"; + var scrollXClass = 'scrollX hiddenScrollX'; if (layoutManager.tv) { - scrollXClass += "smoothScrollX padded-top-focusscale padded-bottom-focusscale"; + scrollXClass += 'smoothScrollX padded-top-focusscale padded-bottom-focusscale'; } html += '
'; } else { html += '
'; } - html += "
"; - html += "
"; + html += ''; + html += ''; } elem.innerHTML = html; @@ -176,7 +176,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader var data = {}; self.getViewStyles = function () { - return "Poster,PosterCard,Thumb,ThumbCard".split(","); + return 'Poster,PosterCard,Thumb,ThumbCard'.split(','); }; self.getCurrentViewStyle = function () { diff --git a/src/controllers/shows/tvlatest.js b/src/controllers/shows/tvlatest.js index 5862fce45d..08e420a595 100644 --- a/src/controllers/shows/tvlatest.js +++ b/src/controllers/shows/tvlatest.js @@ -1,28 +1,28 @@ -define(["loading", "components/groupedcards", "cardBuilder", "apphost", "imageLoader"], function (loading, groupedcards, cardBuilder, appHost, imageLoader) { - "use strict"; +define(['loading', 'components/groupedcards', 'cardBuilder', 'apphost', 'imageLoader'], function (loading, groupedcards, cardBuilder, appHost, imageLoader) { + 'use strict'; function getLatestPromise(context, params) { loading.show(); var userId = ApiClient.getCurrentUserId(); var parentId = params.topParentId; var options = { - IncludeItemTypes: "Episode", + IncludeItemTypes: 'Episode', Limit: 30, - Fields: "PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,BasicSyncInfo', ParentId: parentId, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Thumb" + EnableImageTypes: 'Primary,Backdrop,Thumb' }; - return ApiClient.getJSON(ApiClient.getUrl("Users/" + userId + "/Items/Latest", options)); + return ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)); } function loadLatest(context, params, promise) { promise.then(function (items) { - var html = ""; - appHost.supports("imageanalysis"); + var html = ''; + appHost.supports('imageanalysis'); html += cardBuilder.getCardsHtml({ items: items, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, showTitle: true, showSeriesYear: true, @@ -36,12 +36,12 @@ define(["loading", "components/groupedcards", "cardBuilder", "apphost", "imageLo overlayPlayButton: true, lines: 2 }); - var elem = context.querySelector("#latestEpisodes"); + var elem = context.querySelector('#latestEpisodes'); elem.innerHTML = html; imageLoader.lazyChildren(elem); loading.hide(); - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(context); }); }); @@ -59,6 +59,6 @@ define(["loading", "components/groupedcards", "cardBuilder", "apphost", "imageLo loadLatest(tabContent, params, latestPromise); }; - tabContent.querySelector("#latestEpisodes").addEventListener("click", groupedcards.onItemsContainerClick); + tabContent.querySelector('#latestEpisodes').addEventListener('click', groupedcards.onItemsContainerClick); }; }); diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index 4427d3fa72..8087a03096 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -1,39 +1,39 @@ -define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "dom", "userSettings", "cardBuilder", "playbackManager", "mainTabsManager", "globalize", "scrollStyles", "emby-itemscontainer", "emby-button"], function (events, inputManager, libraryMenu, layoutManager, loading, dom, userSettings, cardBuilder, playbackManager, mainTabsManager, globalize) { - "use strict"; +define(['events', 'inputManager', 'libraryMenu', 'layoutManager', 'loading', 'dom', 'userSettings', 'cardBuilder', 'playbackManager', 'mainTabsManager', 'globalize', 'scrollStyles', 'emby-itemscontainer', 'emby-button'], function (events, inputManager, libraryMenu, layoutManager, loading, dom, userSettings, cardBuilder, playbackManager, mainTabsManager, globalize) { + 'use strict'; function getTabs() { return [{ - name: globalize.translate("TabShows") + name: globalize.translate('TabShows') }, { - name: globalize.translate("TabSuggestions") + name: globalize.translate('TabSuggestions') }, { - name: globalize.translate("TabLatest") + name: globalize.translate('TabLatest') }, { - name: globalize.translate("TabUpcoming") + name: globalize.translate('TabUpcoming') }, { - name: globalize.translate("TabGenres") + name: globalize.translate('TabGenres') }, { - name: globalize.translate("TabNetworks") + name: globalize.translate('TabNetworks') }, { - name: globalize.translate("TabEpisodes") + name: globalize.translate('TabEpisodes') }, { - name: globalize.translate("ButtonSearch"), - cssClass: "searchTabButton" + name: globalize.translate('ButtonSearch'), + cssClass: 'searchTabButton' }]; } function getDefaultTabIndex(folderId) { - switch (userSettings.get("landing-" + folderId)) { - case "suggestions": + switch (userSettings.get('landing-' + folderId)) { + case 'suggestions': return 1; - case "latest": + case 'latest': return 2; - case "favorites": + case 'favorites': return 1; - case "genres": + case 'genres': return 4; default: @@ -43,19 +43,19 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do function setScrollClasses(elem, scrollX) { if (scrollX) { - elem.classList.add("hiddenScrollX"); + elem.classList.add('hiddenScrollX'); if (layoutManager.tv) { - elem.classList.add("smoothScrollX"); + elem.classList.add('smoothScrollX'); } - elem.classList.add("scrollX"); - elem.classList.remove("vertical-wrap"); + elem.classList.add('scrollX'); + elem.classList.remove('vertical-wrap'); } else { - elem.classList.remove("hiddenScrollX"); - elem.classList.remove("smoothScrollX"); - elem.classList.remove("scrollX"); - elem.classList.add("vertical-wrap"); + elem.classList.remove('hiddenScrollX'); + elem.classList.remove('smoothScrollX'); + elem.classList.remove('scrollX'); + elem.classList.add('vertical-wrap'); } } @@ -69,25 +69,25 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do function loadNextUp() { var query = { Limit: 24, - Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo', UserId: ApiClient.getCurrentUserId(), ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Thumb", + EnableImageTypes: 'Primary,Backdrop,Thumb', EnableTotalRecordCount: false }; query.ParentId = libraryMenu.getTopParentId(); ApiClient.getNextUpEpisodes(query).then(function (result) { if (result.Items.length) { - view.querySelector(".noNextUpItems").classList.add("hide"); + view.querySelector('.noNextUpItems').classList.add('hide'); } else { - view.querySelector(".noNextUpItems").classList.remove("hide"); + view.querySelector('.noNextUpItems').classList.remove('hide'); } - var container = view.querySelector("#nextUpItems"); + var container = view.querySelector('#nextUpItems'); cardBuilder.buildCards(result.Items, { itemsContainer: container, preferThumb: true, - shape: "backdrop", + shape: 'backdrop', scalable: true, showTitle: true, showParentTitle: true, @@ -98,7 +98,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do }); loading.hide(); - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(view); }); }); @@ -109,7 +109,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do } function getThumbShape() { - return enableScrollX() ? "overflowBackdrop" : "backdrop"; + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; } function loadResume() { @@ -117,28 +117,28 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do var screenWidth = dom.getWindowSize().innerWidth; var limit = screenWidth >= 1600 ? 5 : 6; var options = { - SortBy: "DatePlayed", - SortOrder: "Descending", - IncludeItemTypes: "Episode", - Filters: "IsResumable", + SortBy: 'DatePlayed', + SortOrder: 'Descending', + IncludeItemTypes: 'Episode', + Filters: 'IsResumable', Limit: limit, Recursive: true, - Fields: "PrimaryImageAspectRatio,SeriesInfo,UserData,BasicSyncInfo", - ExcludeLocationTypes: "Virtual", + Fields: 'PrimaryImageAspectRatio,SeriesInfo,UserData,BasicSyncInfo', + ExcludeLocationTypes: 'Virtual', ParentId: parentId, ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Thumb", + EnableImageTypes: 'Primary,Backdrop,Thumb', EnableTotalRecordCount: false }; ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function (result) { if (result.Items.length) { - view.querySelector("#resumableSection").classList.remove("hide"); + view.querySelector('#resumableSection').classList.remove('hide'); } else { - view.querySelector("#resumableSection").classList.add("hide"); + view.querySelector('#resumableSection').classList.add('hide'); } var allowBottomPadding = !enableScrollX(); - var container = view.querySelector("#resumableItems"); + var container = view.querySelector('#resumableItems'); cardBuilder.buildCards(result.Items, { itemsContainer: container, preferThumb: true, @@ -165,7 +165,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do } function getTabContainers() { - return view.querySelectorAll(".pageTabContent"); + return view.querySelectorAll('.pageTabContent'); } function initTabs() { @@ -177,34 +177,34 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do switch (index) { case 0: - depends.push("controllers/shows/tvshows"); + depends.push('controllers/shows/tvshows'); break; case 1: break; case 2: - depends.push("controllers/shows/tvlatest"); + depends.push('controllers/shows/tvlatest'); break; case 3: - depends.push("controllers/shows/tvupcoming"); + depends.push('controllers/shows/tvupcoming'); break; case 4: - depends.push("controllers/shows/tvgenres"); + depends.push('controllers/shows/tvgenres'); break; case 5: - depends.push("controllers/shows/tvstudios"); + depends.push('controllers/shows/tvstudios'); break; case 6: - depends.push("controllers/shows/episodes"); + depends.push('controllers/shows/episodes'); break; case 7: - depends.push("scripts/searchtab"); + depends.push('scripts/searchtab'); } require(depends, function (controllerFactory) { @@ -224,7 +224,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do controller = self; } else if (index === 7) { controller = new controllerFactory(view, tabContent, { - collectionType: "tvshows", + collectionType: 'tvshows', parentId: params.topParentId }); } else { @@ -263,7 +263,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do } function onPlaybackStop(e, state) { - if (state.NowPlayingItem && state.NowPlayingItem.MediaType == "Video") { + if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') { renderedTabs = []; mainTabsManager.getTabsElement().triggerTabChange(); } @@ -272,16 +272,16 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do function onWebSocketMessage(e, data) { var msg = data; - if (msg.MessageType === "UserDataChanged" && msg.Data.UserId == ApiClient.getCurrentUserId()) { + if (msg.MessageType === 'UserDataChanged' && msg.Data.UserId == ApiClient.getCurrentUserId()) { renderedTabs = []; } } function onInputCommand(e) { switch (e.detail.command) { - case "search": + case 'search': e.preventDefault(); - Dashboard.navigate("search.html?collectionType=tv&parentId=" + params.topParentId); + Dashboard.navigate('search.html?collectionType=tv&parentId=' + params.topParentId); } } @@ -292,7 +292,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do self.initTab = function () { var tabContent = self.tabContent; - setScrollClasses(tabContent.querySelector("#resumableItems"), enableScrollX()); + setScrollClasses(tabContent.querySelector('#resumableItems'), enableScrollX()); }; self.renderTab = function () { @@ -301,34 +301,34 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do var tabControllers = []; var renderedTabs = []; - setScrollClasses(view.querySelector("#resumableItems"), enableScrollX()); - view.addEventListener("viewshow", function (e) { + setScrollClasses(view.querySelector('#resumableItems'), enableScrollX()); + view.addEventListener('viewshow', function (e) { isViewRestored = e.detail.isRestored; initTabs(); - if (!view.getAttribute("data-title")) { + if (!view.getAttribute('data-title')) { var parentId = params.topParentId; if (parentId) { ApiClient.getItem(ApiClient.getCurrentUserId(), parentId).then(function (item) { - view.setAttribute("data-title", item.Name); + view.setAttribute('data-title', item.Name); libraryMenu.setTitle(item.Name); }); } else { - view.setAttribute("data-title", globalize.translate("TabShows")); - libraryMenu.setTitle(globalize.translate("TabShows")); + view.setAttribute('data-title', globalize.translate('TabShows')); + libraryMenu.setTitle(globalize.translate('TabShows')); } } - events.on(playbackManager, "playbackstop", onPlaybackStop); - events.on(ApiClient, "message", onWebSocketMessage); + events.on(playbackManager, 'playbackstop', onPlaybackStop); + events.on(ApiClient, 'message', onWebSocketMessage); inputManager.on(window, onInputCommand); }); - view.addEventListener("viewbeforehide", function (e) { + view.addEventListener('viewbeforehide', function (e) { inputManager.off(window, onInputCommand); - events.off(playbackManager, "playbackstop", onPlaybackStop); - events.off(ApiClient, "message", onWebSocketMessage); + events.off(playbackManager, 'playbackstop', onPlaybackStop); + events.off(ApiClient, 'message', onWebSocketMessage); }); - view.addEventListener("viewdestroy", function (e) { + view.addEventListener('viewdestroy', function (e) { tabControllers.forEach(function (t) { if (t.destroy) { t.destroy(); diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index 0f992fe8d6..753516f902 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -1,5 +1,5 @@ -define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "alphaPicker", "userSettings", "globalize", "emby-itemscontainer"], function (layoutManager, loading, events, libraryBrowser, imageLoader, listView, cardBuilder, alphaPicker, userSettings, globalize) { - "use strict"; +define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'alphaPicker', 'userSettings', 'globalize', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, listView, cardBuilder, alphaPicker, userSettings, globalize) { + 'use strict'; return function (view, params, tabContent) { function getPageData(context) { @@ -9,16 +9,16 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " if (!pageData) { pageData = data[key] = { query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Series", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'Series', Recursive: true, - Fields: "PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'PrimaryImageAspectRatio,BasicSyncInfo', ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || "Poster" + view: libraryBrowser.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -38,7 +38,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey("series"); + context.savedQueryKey = libraryBrowser.getSavedQueryKey('series'); } return context.savedQueryKey; @@ -46,17 +46,17 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " function onViewStyleChange() { var viewStyle = self.getCurrentViewStyle(); - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var itemsContainer = tabContent.querySelector('.itemsContainer'); - if ("List" == viewStyle) { - itemsContainer.classList.add("vertical-list"); - itemsContainer.classList.remove("vertical-wrap"); + if ('List' == viewStyle) { + itemsContainer.classList.add('vertical-list'); + itemsContainer.classList.remove('vertical-wrap'); } else { - itemsContainer.classList.remove("vertical-list"); - itemsContainer.classList.add("vertical-wrap"); + itemsContainer.classList.remove('vertical-list'); + itemsContainer.classList.add('vertical-wrap'); } - itemsContainer.innerHTML = ""; + itemsContainer.innerHTML = ''; } function reloadItems(page) { @@ -100,45 +100,45 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " filterButton: false }); var viewStyle = self.getCurrentViewStyle(); - if (viewStyle == "Thumb") { + if (viewStyle == 'Thumb') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, - context: "tvshows", + context: 'tvshows', overlayMoreButton: true, showTitle: true, centerText: true }); - } else if (viewStyle == "ThumbCard") { + } else if (viewStyle == 'ThumbCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, - context: "tvshows", + context: 'tvshows', cardLayout: true, showTitle: true, showYear: true, centerText: true }); - } else if (viewStyle == "Banner") { + } else if (viewStyle == 'Banner') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "banner", + shape: 'banner', preferBanner: true, - context: "tvshows" + context: 'tvshows' }); - } else if (viewStyle == "List") { + } else if (viewStyle == 'List') { html = listView.getListViewHtml({ items: result.Items, - context: "tvshows", + context: 'tvshows', sortBy: query.SortBy }); - } else if (viewStyle == "PosterCard") { + } else if (viewStyle == 'PosterCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "portrait", - context: "tvshows", + shape: 'portrait', + context: 'tvshows', showTitle: true, showYear: true, centerText: true, @@ -147,8 +147,8 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " } else { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "portrait", - context: "tvshows", + shape: 'portrait', + context: 'tvshows', centerText: true, lazy: true, overlayMoreButton: true, @@ -158,30 +158,30 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " } var i; var length; - var elems = tabContent.querySelectorAll(".paging"); + var elems = tabContent.querySelectorAll('.paging'); for (i = 0, length = elems.length; i < length; i++) { elems[i].innerHTML = pagingHtml; } - elems = tabContent.querySelectorAll(".btnNextPage"); + elems = tabContent.querySelectorAll('.btnNextPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onNextPageClick); + elems[i].addEventListener('click', onNextPageClick); } - elems = tabContent.querySelectorAll(".btnPreviousPage"); + elems = tabContent.querySelectorAll('.btnPreviousPage'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener("click", onPreviousPageClick); + elems[i].addEventListener('click', onPreviousPageClick); } - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(page); }); }); @@ -197,13 +197,13 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " var isLoading = false; self.showFilterMenu = function () { - require(["components/filterdialog/filterdialog"], function (filterDialogFactory) { + require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { var filterDialog = new filterDialogFactory({ query: getQuery(tabContent), - mode: "series", + mode: 'series', serverId: ApiClient.serverId() }); - events.on(filterDialog, "filterchange", function () { + events.on(filterDialog, 'filterchange', function () { getQuery(tabContent).StartIndex = 0; reloadItems(tabContent); }); @@ -216,10 +216,10 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " }; function initPage(tabContent) { - var alphaPickerElement = tabContent.querySelector(".alphaPicker"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); + var alphaPickerElement = tabContent.querySelector('.alphaPicker'); + var itemsContainer = tabContent.querySelector('.itemsContainer'); - alphaPickerElement.addEventListener("alphavaluechanged", function (e) { + alphaPickerElement.addEventListener('alphavaluechanged', function (e) { var newValue = e.detail.value; var query = getQuery(tabContent); query.NameStartsWithOrGreater = newValue; @@ -228,36 +228,36 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " }); self.alphaPicker = new alphaPicker({ element: alphaPickerElement, - valueChangeEvent: "click" + valueChangeEvent: 'click' }); - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - itemsContainer.classList.add("padded-right-withalphapicker"); + tabContent.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); + alphaPickerElement.classList.add('alphaPicker-fixed-right'); + itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector(".btnFilter").addEventListener("click", function () { + tabContent.querySelector('.btnFilter').addEventListener('click', function () { self.showFilterMenu(); }); - tabContent.querySelector(".btnSort").addEventListener("click", function (e) { + tabContent.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ - name: globalize.translate("OptionNameSort"), - id: "SortName" + name: globalize.translate('OptionNameSort'), + id: 'SortName' }, { - name: globalize.translate("OptionImdbRating"), - id: "CommunityRating,SortName" + name: globalize.translate('OptionImdbRating'), + id: 'CommunityRating,SortName' }, { - name: globalize.translate("OptionDateAdded"), - id: "DateCreated,SortName" + name: globalize.translate('OptionDateAdded'), + id: 'DateCreated,SortName' }, { - name: globalize.translate("OptionDatePlayed"), - id: "DatePlayed,SortName" + name: globalize.translate('OptionDatePlayed'), + id: 'DatePlayed,SortName' }, { - name: globalize.translate("OptionParentalRating"), - id: "OfficialRating,SortName" + name: globalize.translate('OptionParentalRating'), + id: 'OfficialRating,SortName' }, { - name: globalize.translate("OptionReleaseDate"), - id: "PremiereDate,SortName" + name: globalize.translate('OptionReleaseDate'), + id: 'PremiereDate,SortName' }], callback: function () { getQuery(tabContent).StartIndex = 0; @@ -267,11 +267,11 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " button: e.target }); }); - var btnSelectView = tabContent.querySelector(".btnSelectView"); - btnSelectView.addEventListener("click", function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "Banner,List,Poster,PosterCard,Thumb,ThumbCard".split(",")); + var btnSelectView = tabContent.querySelector('.btnSelectView'); + btnSelectView.addEventListener('click', function (e) { + libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); - btnSelectView.addEventListener("layoutchange", function (e) { + btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; getPageData(tabContent).view = viewStyle; libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); diff --git a/src/controllers/shows/tvstudios.js b/src/controllers/shows/tvstudios.js index 4e715e1fd7..1051bfa10b 100644 --- a/src/controllers/shows/tvstudios.js +++ b/src/controllers/shows/tvstudios.js @@ -1,5 +1,5 @@ -define(["loading", "libraryBrowser", "cardBuilder", "apphost"], function (loading, libraryBrowser, cardBuilder, appHost) { - "use strict"; +define(['loading', 'libraryBrowser', 'cardBuilder', 'apphost'], function (loading, libraryBrowser, cardBuilder, appHost) { + 'use strict'; function getQuery(params) { var key = getSavedQueryKey(); @@ -8,11 +8,11 @@ define(["loading", "libraryBrowser", "cardBuilder", "apphost"], function (loadin if (!pageData) { pageData = data[key] = { query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Series", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'Series', Recursive: true, - Fields: "DateCreated,PrimaryImageAspectRatio", + Fields: 'DateCreated,PrimaryImageAspectRatio', StartIndex: 0 } }; @@ -23,7 +23,7 @@ define(["loading", "libraryBrowser", "cardBuilder", "apphost"], function (loadin } function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey("studios"); + return libraryBrowser.getSavedQueryKey('studios'); } function getPromise(context, params) { @@ -34,20 +34,20 @@ define(["loading", "libraryBrowser", "cardBuilder", "apphost"], function (loadin function reloadItems(context, params, promise) { promise.then(function (result) { - var elem = context.querySelector("#items"); + var elem = context.querySelector('#items'); cardBuilder.buildCards(result.Items, { itemsContainer: elem, - shape: "backdrop", + shape: 'backdrop', preferThumb: true, showTitle: true, scalable: true, centerText: true, overlayMoreButton: true, - context: "tvshows" + context: 'tvshows' }); loading.hide(); - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(context); }); }); diff --git a/src/controllers/shows/tvupcoming.js b/src/controllers/shows/tvupcoming.js index 816717edf8..d57a5ae3cd 100644 --- a/src/controllers/shows/tvupcoming.js +++ b/src/controllers/shows/tvupcoming.js @@ -1,18 +1,18 @@ -define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", "apphost", "imageLoader", "globalize", "scrollStyles", "emby-itemscontainer"], function (layoutManager, loading, datetime, libraryBrowser, cardBuilder, appHost, imageLoader, globalize) { - "use strict"; +define(['layoutManager', 'loading', 'datetime', 'libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'globalize', 'scrollStyles', 'emby-itemscontainer'], function (layoutManager, loading, datetime, libraryBrowser, cardBuilder, appHost, imageLoader, globalize) { + 'use strict'; function getUpcomingPromise(context, params) { loading.show(); var query = { Limit: 48, - Fields: "AirTime,UserData", + Fields: 'AirTime,UserData', UserId: ApiClient.getCurrentUserId(), ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableTotalRecordCount: false }; query.ParentId = params.topParentId; - return ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query)); + return ApiClient.getJSON(ApiClient.getUrl('Shows/Upcoming', query)); } function loadUpcoming(context, params, promise) { @@ -20,12 +20,12 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", var items = result.Items; if (items.length) { - context.querySelector(".noItemsMessage").style.display = "none"; + context.querySelector('.noItemsMessage').style.display = 'none'; } else { - context.querySelector(".noItemsMessage").style.display = "block"; + context.querySelector('.noItemsMessage').style.display = 'block'; } - renderUpcoming(context.querySelector("#upcomingItems"), items); + renderUpcoming(context.querySelector('#upcomingItems'), items); loading.hide(); }); } @@ -35,27 +35,27 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", } function getThumbShape() { - return enableScrollX() ? "overflowBackdrop" : "backdrop"; + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; } function renderUpcoming(elem, items) { var i; var length; var groups = []; - var currentGroupName = ""; + var currentGroupName = ''; var currentGroup = []; for (i = 0, length = items.length; i < length; i++) { var item = items[i]; - var dateText = ""; + var dateText = ''; if (item.PremiereDate) { try { var premiereDate = datetime.parseISO8601Date(item.PremiereDate, true); - dateText = datetime.isRelativeDay(premiereDate, -1) ? globalize.translate("Yesterday") : datetime.toLocaleDateString(premiereDate, { - weekday: "long", - month: "short", - day: "numeric" + dateText = datetime.isRelativeDay(premiereDate, -1) ? globalize.translate('Yesterday') : datetime.toLocaleDateString(premiereDate, { + weekday: 'long', + month: 'short', + day: 'numeric' }); } catch (err) { console.error('error parsing timestamp for upcoming tv shows'); @@ -77,20 +77,20 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", } } - var html = ""; + var html = ''; for (i = 0, length = groups.length; i < length; i++) { var group = groups[i]; html += '
'; - html += '

' + group.name + "

"; + html += '

' + group.name + '

'; var allowBottomPadding = true; if (enableScrollX()) { allowBottomPadding = false; - var scrollXClass = "scrollX hiddenScrollX"; + var scrollXClass = 'scrollX hiddenScrollX'; if (layoutManager.tv) { - scrollXClass += " smoothScrollX"; + scrollXClass += ' smoothScrollX'; } html += '
'; @@ -98,7 +98,7 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", html += '
'; } - var supportsImageAnalysis = appHost.supports("imageanalysis"); + var supportsImageAnalysis = appHost.supports('imageanalysis'); supportsImageAnalysis = false; html += cardBuilder.getCardsHtml({ items: group.items, @@ -116,8 +116,8 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", overlayMoreButton: true, missingIndicator: false }); - html += "
"; - html += "
"; + html += '
'; + html += ''; } elem.innerHTML = html; diff --git a/src/controllers/user/display.js b/src/controllers/user/display.js index 28d39b7fde..3aeb7db8ce 100644 --- a/src/controllers/user/display.js +++ b/src/controllers/user/display.js @@ -1,10 +1,10 @@ -define(["displaySettings", "userSettings", "autoFocuser"], function (DisplaySettings, userSettings, autoFocuser) { - "use strict"; +define(['displaySettings', 'userSettings', 'autoFocuser'], function (DisplaySettings, userSettings, autoFocuser) { + 'use strict'; return function (view, params) { function onBeforeUnload(e) { if (hasChanges) { - e.returnValue = "You currently have unsaved changes. Are you sure you wish to leave?"; + e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; } } @@ -12,8 +12,8 @@ define(["displaySettings", "userSettings", "autoFocuser"], function (DisplaySett var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new userSettings(); - view.addEventListener("viewshow", function () { - window.addEventListener("beforeunload", onBeforeUnload); + view.addEventListener('viewshow', function () { + window.addEventListener('beforeunload', onBeforeUnload); if (settingsInstance) { settingsInstance.loadData(); @@ -21,7 +21,7 @@ define(["displaySettings", "userSettings", "autoFocuser"], function (DisplaySett settingsInstance = new DisplaySettings({ serverId: ApiClient.serverId(), userId: userId, - element: view.querySelector(".settingsContainer"), + element: view.querySelector('.settingsContainer'), userSettings: currentSettings, enableSaveButton: false, enableSaveConfirmation: false, @@ -29,18 +29,18 @@ define(["displaySettings", "userSettings", "autoFocuser"], function (DisplaySett }); } }); - view.addEventListener("change", function () { + view.addEventListener('change', function () { hasChanges = true; }); - view.addEventListener("viewbeforehide", function () { - window.removeEventListener("beforeunload", onBeforeUnload); + view.addEventListener('viewbeforehide', function () { + window.removeEventListener('beforeunload', onBeforeUnload); hasChanges = false; if (settingsInstance) { settingsInstance.submit(); } }); - view.addEventListener("viewdestroy", function () { + view.addEventListener('viewdestroy', function () { if (settingsInstance) { settingsInstance.destroy(); settingsInstance = null; diff --git a/src/controllers/user/home.js b/src/controllers/user/home.js index dccf6e5060..aa7d147c31 100644 --- a/src/controllers/user/home.js +++ b/src/controllers/user/home.js @@ -1,10 +1,10 @@ -define(["homescreenSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (HomescreenSettings, dom, globalize, loading, userSettings, autoFocuser) { - "use strict"; +define(['homescreenSettings', 'dom', 'globalize', 'loading', 'userSettings', 'autoFocuser', 'listViewStyle'], function (HomescreenSettings, dom, globalize, loading, userSettings, autoFocuser) { + 'use strict'; return function (view, params) { function onBeforeUnload(e) { if (hasChanges) { - e.returnValue = "You currently have unsaved changes. Are you sure you wish to leave?"; + e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; } } @@ -12,8 +12,8 @@ define(["homescreenSettings", "dom", "globalize", "loading", "userSettings", "au var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new userSettings(); - view.addEventListener("viewshow", function () { - window.addEventListener("beforeunload", onBeforeUnload); + view.addEventListener('viewshow', function () { + window.addEventListener('beforeunload', onBeforeUnload); if (homescreenSettingsInstance) { homescreenSettingsInstance.loadData(); @@ -21,7 +21,7 @@ define(["homescreenSettings", "dom", "globalize", "loading", "userSettings", "au homescreenSettingsInstance = new HomescreenSettings({ serverId: ApiClient.serverId(), userId: userId, - element: view.querySelector(".homeScreenSettingsContainer"), + element: view.querySelector('.homeScreenSettingsContainer'), userSettings: currentSettings, enableSaveButton: false, enableSaveConfirmation: false, @@ -29,17 +29,17 @@ define(["homescreenSettings", "dom", "globalize", "loading", "userSettings", "au }); } }); - view.addEventListener("change", function () { + view.addEventListener('change', function () { hasChanges = true; }); - view.addEventListener("viewbeforehide", function () { + view.addEventListener('viewbeforehide', function () { hasChanges = false; if (homescreenSettingsInstance) { homescreenSettingsInstance.submit(); } }); - view.addEventListener("viewdestroy", function () { + view.addEventListener('viewdestroy', function () { if (homescreenSettingsInstance) { homescreenSettingsInstance.destroy(); homescreenSettingsInstance = null; diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js index e7d816fb6f..df5864dbdb 100644 --- a/src/controllers/user/menu.js +++ b/src/controllers/user/menu.js @@ -1,62 +1,62 @@ -define(["apphost", "connectionManager", "layoutManager", "listViewStyle", "emby-button"], function(appHost, connectionManager, layoutManager) { - "use strict"; +define(['apphost', 'connectionManager', 'layoutManager', 'listViewStyle', 'emby-button'], function(appHost, connectionManager, layoutManager) { + 'use strict'; return function(view, params) { - view.querySelector(".btnLogout").addEventListener("click", function() { + view.querySelector('.btnLogout').addEventListener('click', function() { Dashboard.logout(); }); - view.querySelector(".selectServer").addEventListener("click", function () { + view.querySelector('.selectServer').addEventListener('click', function () { Dashboard.selectServer(); }); - view.querySelector(".clientSettings").addEventListener("click", function () { + view.querySelector('.clientSettings').addEventListener('click', function () { window.NativeShell.openClientSettings(); }); - view.addEventListener("viewshow", function() { + view.addEventListener('viewshow', function() { // this page can also be used by admins to change user preferences from the user edit page var userId = params.userId || Dashboard.getCurrentUserId(); var page = this; - page.querySelector(".lnkMyProfile").setAttribute("href", "myprofile.html?userId=" + userId); - page.querySelector(".lnkDisplayPreferences").setAttribute("href", "mypreferencesdisplay.html?userId=" + userId); - page.querySelector(".lnkHomePreferences").setAttribute("href", "mypreferenceshome.html?userId=" + userId); - page.querySelector(".lnkPlaybackPreferences").setAttribute("href", "mypreferencesplayback.html?userId=" + userId); - page.querySelector(".lnkSubtitlePreferences").setAttribute("href", "mypreferencessubtitles.html?userId=" + userId); + page.querySelector('.lnkMyProfile').setAttribute('href', 'myprofile.html?userId=' + userId); + page.querySelector('.lnkDisplayPreferences').setAttribute('href', 'mypreferencesdisplay.html?userId=' + userId); + page.querySelector('.lnkHomePreferences').setAttribute('href', 'mypreferenceshome.html?userId=' + userId); + page.querySelector('.lnkPlaybackPreferences').setAttribute('href', 'mypreferencesplayback.html?userId=' + userId); + page.querySelector('.lnkSubtitlePreferences').setAttribute('href', 'mypreferencessubtitles.html?userId=' + userId); - if (window.NativeShell && window.NativeShell.AppHost.supports("clientsettings")) { - page.querySelector(".clientSettings").classList.remove("hide"); + if (window.NativeShell && window.NativeShell.AppHost.supports('clientsettings')) { + page.querySelector('.clientSettings').classList.remove('hide'); } else { - page.querySelector(".clientSettings").classList.add("hide"); + page.querySelector('.clientSettings').classList.add('hide'); } - if (appHost.supports("multiserver")) { - page.querySelector(".selectServer").classList.remove("hide"); + if (appHost.supports('multiserver')) { + page.querySelector('.selectServer').classList.remove('hide'); } else { - page.querySelector(".selectServer").classList.add("hide"); + page.querySelector('.selectServer').classList.add('hide'); } // hide the actions if user preferences are being edited for a different user if (params.userId && params.userId !== Dashboard.getCurrentUserId) { - page.querySelector(".userSection").classList.add("hide"); - page.querySelector(".adminSection").classList.add("hide"); + page.querySelector('.userSection').classList.add('hide'); + page.querySelector('.adminSection').classList.add('hide'); } if (layoutManager.mobile) { - page.querySelector(".headerUsername").classList.add("hide"); - page.querySelector(".adminSection").classList.add("hide"); - page.querySelector(".userSection").classList.add("hide"); + page.querySelector('.headerUsername').classList.add('hide'); + page.querySelector('.adminSection').classList.add('hide'); + page.querySelector('.userSection').classList.add('hide'); } ApiClient.getUser(userId).then(function(user) { - page.querySelector(".headerUsername").innerHTML = user.Name; + page.querySelector('.headerUsername').innerHTML = user.Name; if (!user.Policy.IsAdministrator) { - page.querySelector(".adminSection").classList.add("hide"); + page.querySelector('.adminSection').classList.add('hide'); } }); - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(view); }); }); diff --git a/src/controllers/user/playback.js b/src/controllers/user/playback.js index 8f48e0264b..e945a46aab 100644 --- a/src/controllers/user/playback.js +++ b/src/controllers/user/playback.js @@ -1,10 +1,10 @@ -define(["playbackSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (PlaybackSettings, dom, globalize, loading, userSettings, autoFocuser) { - "use strict"; +define(['playbackSettings', 'dom', 'globalize', 'loading', 'userSettings', 'autoFocuser', 'listViewStyle'], function (PlaybackSettings, dom, globalize, loading, userSettings, autoFocuser) { + 'use strict'; return function (view, params) { function onBeforeUnload(e) { if (hasChanges) { - e.returnValue = "You currently have unsaved changes. Are you sure you wish to leave?"; + e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; } } @@ -12,8 +12,8 @@ define(["playbackSettings", "dom", "globalize", "loading", "userSettings", "auto var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new userSettings(); - view.addEventListener("viewshow", function () { - window.addEventListener("beforeunload", onBeforeUnload); + view.addEventListener('viewshow', function () { + window.addEventListener('beforeunload', onBeforeUnload); if (settingsInstance) { settingsInstance.loadData(); @@ -21,7 +21,7 @@ define(["playbackSettings", "dom", "globalize", "loading", "userSettings", "auto settingsInstance = new PlaybackSettings({ serverId: ApiClient.serverId(), userId: userId, - element: view.querySelector(".settingsContainer"), + element: view.querySelector('.settingsContainer'), userSettings: currentSettings, enableSaveButton: false, enableSaveConfirmation: false, @@ -29,17 +29,17 @@ define(["playbackSettings", "dom", "globalize", "loading", "userSettings", "auto }); } }); - view.addEventListener("change", function () { + view.addEventListener('change', function () { hasChanges = true; }); - view.addEventListener("viewbeforehide", function () { + view.addEventListener('viewbeforehide', function () { hasChanges = false; if (settingsInstance) { settingsInstance.submit(); } }); - view.addEventListener("viewdestroy", function () { + view.addEventListener('viewdestroy', function () { if (settingsInstance) { settingsInstance.destroy(); settingsInstance = null; diff --git a/src/controllers/user/profile.js b/src/controllers/user/profile.js index d0ff4edd00..0f4f2c7bc2 100644 --- a/src/controllers/user/profile.js +++ b/src/controllers/user/profile.js @@ -1,31 +1,31 @@ -define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "globalize", "emby-button"], function (UserPasswordPage, loading, libraryMenu, appHost, globalize) { - "use strict"; +define(['controllers/userpasswordpage', 'loading', 'libraryMenu', 'apphost', 'globalize', 'emby-button'], function (UserPasswordPage, loading, libraryMenu, appHost, globalize) { + 'use strict'; function reloadUser(page) { - var userId = getParameterByName("userId"); + var userId = getParameterByName('userId'); loading.show(); ApiClient.getUser(userId).then(function (user) { - page.querySelector(".username").innerHTML = user.Name; + page.querySelector('.username').innerHTML = user.Name; libraryMenu.setTitle(user.Name); - var imageUrl = "assets/img/avatar.png"; + var imageUrl = 'assets/img/avatar.png'; if (user.PrimaryImageTag) { imageUrl = ApiClient.getUserImageUrl(user.Id, { tag: user.PrimaryImageTag, - type: "Primary" + type: 'Primary' }); } - var userImage = page.querySelector("#image"); - userImage.style.backgroundImage = "url(" + imageUrl + ")"; + var userImage = page.querySelector('#image'); + userImage.style.backgroundImage = 'url(' + imageUrl + ')'; Dashboard.getCurrentUser().then(function (loggedInUser) { if (user.PrimaryImageTag) { - page.querySelector("#btnAddImage").classList.add("hide"); - page.querySelector("#btnDeleteImage").classList.remove("hide"); - } else if (appHost.supports("fileinput") && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) { - page.querySelector("#btnDeleteImage").classList.add("hide"); - page.querySelector("#btnAddImage").classList.remove("hide"); + page.querySelector('#btnAddImage').classList.add('hide'); + page.querySelector('#btnDeleteImage').classList.remove('hide'); + } else if (appHost.supports('fileinput') && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) { + page.querySelector('#btnDeleteImage').classList.add('hide'); + page.querySelector('#btnAddImage').classList.remove('hide'); } }); loading.hide(); @@ -36,8 +36,8 @@ define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "gl loading.hide(); switch (evt.target.error.code) { case evt.target.error.NOT_FOUND_ERR: - require(["toast"], function (toast) { - toast(globalize.translate("FileNotFound")); + require(['toast'], function (toast) { + toast(globalize.translate('FileNotFound')); }); break; case evt.target.error.ABORT_ERR: @@ -45,24 +45,24 @@ define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "gl break; case evt.target.error.NOT_READABLE_ERR: default: - require(["toast"], function (toast) { - toast(globalize.translate("FileReadError")); + require(['toast'], function (toast) { + toast(globalize.translate('FileReadError')); }); } } function onFileReaderAbort(evt) { loading.hide(); - require(["toast"], function (toast) { - toast(globalize.translate("FileReadCancelled")); + require(['toast'], function (toast) { + toast(globalize.translate('FileReadCancelled')); }); } function setFiles(page, files) { - var userImage = page.querySelector("#image"); + var userImage = page.querySelector('#image'); var file = files[0]; - if (!file || !file.type.match("image.*")) { + if (!file || !file.type.match('image.*')) { return false; } @@ -70,9 +70,9 @@ define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "gl reader.onerror = onFileReaderError; reader.onabort = onFileReaderAbort; reader.onload = function (evt) { - userImage.style.backgroundImage = "url(" + evt.target.result + ")"; - var userId = getParameterByName("userId"); - ApiClient.uploadUserImage(userId, "Primary", file).then(function () { + userImage.style.backgroundImage = 'url(' + evt.target.result + ')'; + var userId = getParameterByName('userId'); + ApiClient.uploadUserImage(userId, 'Primary', file).then(function () { loading.hide(); reloadUser(page); }); @@ -84,22 +84,22 @@ define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "gl return function (view, params) { reloadUser(view); new UserPasswordPage(view, params); - view.querySelector("#btnDeleteImage").addEventListener("click", function () { - require(["confirm"], function (confirm) { - confirm(globalize.translate("DeleteImageConfirmation"), globalize.translate("DeleteImage")).then(function () { + view.querySelector('#btnDeleteImage').addEventListener('click', function () { + require(['confirm'], function (confirm) { + confirm(globalize.translate('DeleteImageConfirmation'), globalize.translate('DeleteImage')).then(function () { loading.show(); - var userId = getParameterByName("userId"); - ApiClient.deleteUserImage(userId, "primary").then(function () { + var userId = getParameterByName('userId'); + ApiClient.deleteUserImage(userId, 'primary').then(function () { loading.hide(); reloadUser(view); }); }); }); }); - view.querySelector("#btnAddImage").addEventListener("click", function (evt) { - view.querySelector("#uploadImage").click(); + view.querySelector('#btnAddImage').addEventListener('click', function (evt) { + view.querySelector('#uploadImage').click(); }); - view.querySelector("#uploadImage").addEventListener("change", function (evt) { + view.querySelector('#uploadImage').addEventListener('change', function (evt) { setFiles(view, evt.target.files); }); }; diff --git a/src/controllers/user/subtitles.js b/src/controllers/user/subtitles.js index e2b98dc2dd..152301f31a 100644 --- a/src/controllers/user/subtitles.js +++ b/src/controllers/user/subtitles.js @@ -1,10 +1,10 @@ -define(["subtitleSettings", "userSettings", "autoFocuser"], function (SubtitleSettings, userSettings, autoFocuser) { - "use strict"; +define(['subtitleSettings', 'userSettings', 'autoFocuser'], function (SubtitleSettings, userSettings, autoFocuser) { + 'use strict'; return function (view, params) { function onBeforeUnload(e) { if (hasChanges) { - e.returnValue = "You currently have unsaved changes. Are you sure you wish to leave?"; + e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; } } @@ -12,8 +12,8 @@ define(["subtitleSettings", "userSettings", "autoFocuser"], function (SubtitleSe var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new userSettings(); - view.addEventListener("viewshow", function () { - window.addEventListener("beforeunload", onBeforeUnload); + view.addEventListener('viewshow', function () { + window.addEventListener('beforeunload', onBeforeUnload); if (subtitleSettingsInstance) { subtitleSettingsInstance.loadData(); @@ -21,7 +21,7 @@ define(["subtitleSettings", "userSettings", "autoFocuser"], function (SubtitleSe subtitleSettingsInstance = new SubtitleSettings({ serverId: ApiClient.serverId(), userId: userId, - element: view.querySelector(".settingsContainer"), + element: view.querySelector('.settingsContainer'), userSettings: currentSettings, enableSaveButton: false, enableSaveConfirmation: false, @@ -29,17 +29,17 @@ define(["subtitleSettings", "userSettings", "autoFocuser"], function (SubtitleSe }); } }); - view.addEventListener("change", function () { + view.addEventListener('change', function () { hasChanges = true; }); - view.addEventListener("viewbeforehide", function () { + view.addEventListener('viewbeforehide', function () { hasChanges = false; if (subtitleSettingsInstance) { subtitleSettingsInstance.submit(); } }); - view.addEventListener("viewdestroy", function () { + view.addEventListener('viewdestroy', function () { if (subtitleSettingsInstance) { subtitleSettingsInstance.destroy(); subtitleSettingsInstance = null; diff --git a/src/controllers/useredit.js b/src/controllers/useredit.js index 45a8798e4f..21ed60cfa9 100644 --- a/src/controllers/useredit.js +++ b/src/controllers/useredit.js @@ -1,8 +1,8 @@ -define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function ($, loading, libraryMenu, globalize) { - "use strict"; +define(['jQuery', 'loading', 'libraryMenu', 'globalize', 'fnchecked'], function ($, loading, libraryMenu, globalize) { + 'use strict'; function loadDeleteFolders(page, user, mediaFolders) { - ApiClient.getJSON(ApiClient.getUrl("Channels", { + ApiClient.getJSON(ApiClient.getUrl('Channels', { SupportsMediaDeletion: true })).then(function (channelsResult) { var i; @@ -10,140 +10,140 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function var folder; var isChecked; var checkedAttribute; - var html = ""; + var html = ''; for (i = 0, length = mediaFolders.length; i < length; i++) { folder = mediaFolders[i]; isChecked = user.Policy.EnableContentDeletion || -1 != user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id); - checkedAttribute = isChecked ? ' checked="checked"' : ""; - html += '"; + checkedAttribute = isChecked ? ' checked="checked"' : ''; + html += ''; } for (i = 0, length = channelsResult.Items.length; i < length; i++) { folder = channelsResult.Items[i]; isChecked = user.Policy.EnableContentDeletion || -1 != user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id); - checkedAttribute = isChecked ? ' checked="checked"' : ""; - html += '"; + checkedAttribute = isChecked ? ' checked="checked"' : ''; + html += ''; } - $(".deleteAccess", page).html(html).trigger("create"); - $("#chkEnableDeleteAllFolders", page).checked(user.Policy.EnableContentDeletion).trigger("change"); + $('.deleteAccess', page).html(html).trigger('create'); + $('#chkEnableDeleteAllFolders', page).checked(user.Policy.EnableContentDeletion).trigger('change'); }); } function loadAuthProviders(page, user, providers) { if (providers.length > 1) { - page.querySelector(".fldSelectLoginProvider").classList.remove("hide"); + page.querySelector('.fldSelectLoginProvider').classList.remove('hide'); } else { - page.querySelector(".fldSelectLoginProvider").classList.add("hide"); + page.querySelector('.fldSelectLoginProvider').classList.add('hide'); } var currentProviderId = user.Policy.AuthenticationProviderId; - page.querySelector(".selectLoginProvider").innerHTML = providers.map(function (provider) { - var selected = provider.Id === currentProviderId || providers.length < 2 ? " selected" : ""; - return '"; + page.querySelector('.selectLoginProvider').innerHTML = providers.map(function (provider) { + var selected = provider.Id === currentProviderId || providers.length < 2 ? ' selected' : ''; + return ''; }); } function loadPasswordResetProviders(page, user, providers) { if (providers.length > 1) { - page.querySelector(".fldSelectPasswordResetProvider").classList.remove("hide"); + page.querySelector('.fldSelectPasswordResetProvider').classList.remove('hide'); } else { - page.querySelector(".fldSelectPasswordResetProvider").classList.add("hide"); + page.querySelector('.fldSelectPasswordResetProvider').classList.add('hide'); } var currentProviderId = user.Policy.PasswordResetProviderId; - page.querySelector(".selectPasswordResetProvider").innerHTML = providers.map(function (provider) { - var selected = provider.Id === currentProviderId || providers.length < 2 ? " selected" : ""; - return '"; + page.querySelector('.selectPasswordResetProvider').innerHTML = providers.map(function (provider) { + var selected = provider.Id === currentProviderId || providers.length < 2 ? ' selected' : ''; + return ''; }); } function loadUser(page, user) { currentUser = user; - ApiClient.getJSON(ApiClient.getUrl("Auth/Providers")).then(function (providers) { + ApiClient.getJSON(ApiClient.getUrl('Auth/Providers')).then(function (providers) { loadAuthProviders(page, user, providers); }); - ApiClient.getJSON(ApiClient.getUrl("Auth/PasswordResetProviders")).then(function (providers) { + ApiClient.getJSON(ApiClient.getUrl('Auth/PasswordResetProviders')).then(function (providers) { loadPasswordResetProviders(page, user, providers); }); - ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders", { + ApiClient.getJSON(ApiClient.getUrl('Library/MediaFolders', { IsHidden: false })).then(function (folders) { loadDeleteFolders(page, user, folders.Items); }); if (user.Policy.IsDisabled) { - $(".disabledUserBanner", page).show(); + $('.disabledUserBanner', page).show(); } else { - $(".disabledUserBanner", page).hide(); + $('.disabledUserBanner', page).hide(); } - $("#txtUserName", page).prop("disabled", "").removeAttr("disabled"); - $("#fldConnectInfo", page).show(); - $(".lnkEditUserPreferences", page).attr("href", "mypreferencesmenu.html?userId=" + user.Id); + $('#txtUserName', page).prop('disabled', '').removeAttr('disabled'); + $('#fldConnectInfo', page).show(); + $('.lnkEditUserPreferences', page).attr('href', 'mypreferencesmenu.html?userId=' + user.Id); libraryMenu.setTitle(user.Name); - page.querySelector(".username").innerHTML = user.Name; - $("#txtUserName", page).val(user.Name); - $("#chkIsAdmin", page).checked(user.Policy.IsAdministrator); - $("#chkDisabled", page).checked(user.Policy.IsDisabled); - $("#chkIsHidden", page).checked(user.Policy.IsHidden); - $("#chkRemoteControlSharedDevices", page).checked(user.Policy.EnableSharedDeviceControl); - $("#chkEnableRemoteControlOtherUsers", page).checked(user.Policy.EnableRemoteControlOfOtherUsers); - $("#chkEnableDownloading", page).checked(user.Policy.EnableContentDownloading); - $("#chkManageLiveTv", page).checked(user.Policy.EnableLiveTvManagement); - $("#chkEnableLiveTvAccess", page).checked(user.Policy.EnableLiveTvAccess); - $("#chkEnableMediaPlayback", page).checked(user.Policy.EnableMediaPlayback); - $("#chkEnableAudioPlaybackTranscoding", page).checked(user.Policy.EnableAudioPlaybackTranscoding); - $("#chkEnableVideoPlaybackTranscoding", page).checked(user.Policy.EnableVideoPlaybackTranscoding); - $("#chkEnableVideoPlaybackRemuxing", page).checked(user.Policy.EnablePlaybackRemuxing); - $("#chkForceRemoteSourceTranscoding", page).checked(user.Policy.ForceRemoteSourceTranscoding); - $("#chkRemoteAccess", page).checked(null == user.Policy.EnableRemoteAccess || user.Policy.EnableRemoteAccess); - $("#chkEnableSyncTranscoding", page).checked(user.Policy.EnableSyncTranscoding); - $("#chkEnableConversion", page).checked(user.Policy.EnableMediaConversion || false); - $("#chkEnableSharing", page).checked(user.Policy.EnablePublicSharing); - $("#txtRemoteClientBitrateLimit", page).val(user.Policy.RemoteClientBitrateLimit / 1e6 || ""); - $("#txtLoginAttemptsBeforeLockout", page).val(user.Policy.LoginAttemptsBeforeLockout || "0"); + page.querySelector('.username').innerHTML = user.Name; + $('#txtUserName', page).val(user.Name); + $('#chkIsAdmin', page).checked(user.Policy.IsAdministrator); + $('#chkDisabled', page).checked(user.Policy.IsDisabled); + $('#chkIsHidden', page).checked(user.Policy.IsHidden); + $('#chkRemoteControlSharedDevices', page).checked(user.Policy.EnableSharedDeviceControl); + $('#chkEnableRemoteControlOtherUsers', page).checked(user.Policy.EnableRemoteControlOfOtherUsers); + $('#chkEnableDownloading', page).checked(user.Policy.EnableContentDownloading); + $('#chkManageLiveTv', page).checked(user.Policy.EnableLiveTvManagement); + $('#chkEnableLiveTvAccess', page).checked(user.Policy.EnableLiveTvAccess); + $('#chkEnableMediaPlayback', page).checked(user.Policy.EnableMediaPlayback); + $('#chkEnableAudioPlaybackTranscoding', page).checked(user.Policy.EnableAudioPlaybackTranscoding); + $('#chkEnableVideoPlaybackTranscoding', page).checked(user.Policy.EnableVideoPlaybackTranscoding); + $('#chkEnableVideoPlaybackRemuxing', page).checked(user.Policy.EnablePlaybackRemuxing); + $('#chkForceRemoteSourceTranscoding', page).checked(user.Policy.ForceRemoteSourceTranscoding); + $('#chkRemoteAccess', page).checked(null == user.Policy.EnableRemoteAccess || user.Policy.EnableRemoteAccess); + $('#chkEnableSyncTranscoding', page).checked(user.Policy.EnableSyncTranscoding); + $('#chkEnableConversion', page).checked(user.Policy.EnableMediaConversion || false); + $('#chkEnableSharing', page).checked(user.Policy.EnablePublicSharing); + $('#txtRemoteClientBitrateLimit', page).val(user.Policy.RemoteClientBitrateLimit / 1e6 || ''); + $('#txtLoginAttemptsBeforeLockout', page).val(user.Policy.LoginAttemptsBeforeLockout || '0'); loading.hide(); } function onSaveComplete(page, user) { - Dashboard.navigate("userprofiles.html"); + Dashboard.navigate('userprofiles.html'); loading.hide(); - require(["toast"], function (toast) { - toast(globalize.translate("SettingsSaved")); + require(['toast'], function (toast) { + toast(globalize.translate('SettingsSaved')); }); } function saveUser(user, page) { - user.Name = $("#txtUserName", page).val(); - user.Policy.IsAdministrator = $("#chkIsAdmin", page).checked(); - user.Policy.IsHidden = $("#chkIsHidden", page).checked(); - user.Policy.IsDisabled = $("#chkDisabled", page).checked(); - user.Policy.EnableRemoteControlOfOtherUsers = $("#chkEnableRemoteControlOtherUsers", page).checked(); - user.Policy.EnableLiveTvManagement = $("#chkManageLiveTv", page).checked(); - user.Policy.EnableLiveTvAccess = $("#chkEnableLiveTvAccess", page).checked(); - user.Policy.EnableSharedDeviceControl = $("#chkRemoteControlSharedDevices", page).checked(); - user.Policy.EnableMediaPlayback = $("#chkEnableMediaPlayback", page).checked(); - user.Policy.EnableAudioPlaybackTranscoding = $("#chkEnableAudioPlaybackTranscoding", page).checked(); - user.Policy.EnableVideoPlaybackTranscoding = $("#chkEnableVideoPlaybackTranscoding", page).checked(); - user.Policy.EnablePlaybackRemuxing = $("#chkEnableVideoPlaybackRemuxing", page).checked(); - user.Policy.ForceRemoteSourceTranscoding = $("#chkForceRemoteSourceTranscoding", page).checked(); - user.Policy.EnableContentDownloading = $("#chkEnableDownloading", page).checked(); - user.Policy.EnableSyncTranscoding = $("#chkEnableSyncTranscoding", page).checked(); - user.Policy.EnableMediaConversion = $("#chkEnableConversion", page).checked(); - user.Policy.EnablePublicSharing = $("#chkEnableSharing", page).checked(); - user.Policy.EnableRemoteAccess = $("#chkRemoteAccess", page).checked(); - user.Policy.RemoteClientBitrateLimit = parseInt(1e6 * parseFloat($("#txtRemoteClientBitrateLimit", page).val() || "0")); - user.Policy.LoginAttemptsBeforeLockout = parseInt($("#txtLoginAttemptsBeforeLockout", page).val() || "0"); - user.Policy.AuthenticationProviderId = page.querySelector(".selectLoginProvider").value; - user.Policy.PasswordResetProviderId = page.querySelector(".selectPasswordResetProvider").value; - user.Policy.EnableContentDeletion = $("#chkEnableDeleteAllFolders", page).checked(); - user.Policy.EnableContentDeletionFromFolders = user.Policy.EnableContentDeletion ? [] : $(".chkFolder", page).get().filter(function (c) { + user.Name = $('#txtUserName', page).val(); + user.Policy.IsAdministrator = $('#chkIsAdmin', page).checked(); + user.Policy.IsHidden = $('#chkIsHidden', page).checked(); + user.Policy.IsDisabled = $('#chkDisabled', page).checked(); + user.Policy.EnableRemoteControlOfOtherUsers = $('#chkEnableRemoteControlOtherUsers', page).checked(); + user.Policy.EnableLiveTvManagement = $('#chkManageLiveTv', page).checked(); + user.Policy.EnableLiveTvAccess = $('#chkEnableLiveTvAccess', page).checked(); + user.Policy.EnableSharedDeviceControl = $('#chkRemoteControlSharedDevices', page).checked(); + user.Policy.EnableMediaPlayback = $('#chkEnableMediaPlayback', page).checked(); + user.Policy.EnableAudioPlaybackTranscoding = $('#chkEnableAudioPlaybackTranscoding', page).checked(); + user.Policy.EnableVideoPlaybackTranscoding = $('#chkEnableVideoPlaybackTranscoding', page).checked(); + user.Policy.EnablePlaybackRemuxing = $('#chkEnableVideoPlaybackRemuxing', page).checked(); + user.Policy.ForceRemoteSourceTranscoding = $('#chkForceRemoteSourceTranscoding', page).checked(); + user.Policy.EnableContentDownloading = $('#chkEnableDownloading', page).checked(); + user.Policy.EnableSyncTranscoding = $('#chkEnableSyncTranscoding', page).checked(); + user.Policy.EnableMediaConversion = $('#chkEnableConversion', page).checked(); + user.Policy.EnablePublicSharing = $('#chkEnableSharing', page).checked(); + user.Policy.EnableRemoteAccess = $('#chkRemoteAccess', page).checked(); + user.Policy.RemoteClientBitrateLimit = parseInt(1e6 * parseFloat($('#txtRemoteClientBitrateLimit', page).val() || '0')); + user.Policy.LoginAttemptsBeforeLockout = parseInt($('#txtLoginAttemptsBeforeLockout', page).val() || '0'); + user.Policy.AuthenticationProviderId = page.querySelector('.selectLoginProvider').value; + user.Policy.PasswordResetProviderId = page.querySelector('.selectPasswordResetProvider').value; + user.Policy.EnableContentDeletion = $('#chkEnableDeleteAllFolders', page).checked(); + user.Policy.EnableContentDeletionFromFolders = user.Policy.EnableContentDeletion ? [] : $('.chkFolder', page).get().filter(function (c) { return c.checked; }).map(function (c) { - return c.getAttribute("data-id"); + return c.getAttribute('data-id'); }); ApiClient.updateUser(user).then(function () { ApiClient.updateUserPolicy(user.Id, user.Policy).then(function () { @@ -153,7 +153,7 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function } function onSubmit() { - var page = $(this).parents(".page")[0]; + var page = $(this).parents('.page')[0]; loading.show(); getUser().then(function (result) { saveUser(result, page); @@ -162,7 +162,7 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function } function getUser() { - var userId = getParameterByName("userId"); + var userId = getParameterByName('userId'); return ApiClient.getUser(userId); } @@ -174,25 +174,25 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function } var currentUser; - $(document).on("pageinit", "#editUserPage", function () { - $(".editUserProfileForm").off("submit", onSubmit).on("submit", onSubmit); - this.querySelector(".sharingHelp").innerHTML = globalize.translate("OptionAllowLinkSharingHelp", 30); + $(document).on('pageinit', '#editUserPage', function () { + $('.editUserProfileForm').off('submit', onSubmit).on('submit', onSubmit); + this.querySelector('.sharingHelp').innerHTML = globalize.translate('OptionAllowLinkSharingHelp', 30); var page = this; - $("#chkEnableDeleteAllFolders", this).on("change", function () { + $('#chkEnableDeleteAllFolders', this).on('change', function () { if (this.checked) { - $(".deleteAccess", page).hide(); + $('.deleteAccess', page).hide(); } else { - $(".deleteAccess", page).show(); + $('.deleteAccess', page).show(); } }); ApiClient.getServerConfiguration().then(function (config) { if (config.EnableRemoteAccess) { - page.querySelector(".fldRemoteAccess").classList.remove("hide"); + page.querySelector('.fldRemoteAccess').classList.remove('hide'); } else { - page.querySelector(".fldRemoteAccess").classList.add("hide"); + page.querySelector('.fldRemoteAccess').classList.add('hide'); } }); - }).on("pagebeforeshow", "#editUserPage", function () { + }).on('pagebeforeshow', '#editUserPage', function () { loadData(this); }); }); diff --git a/src/controllers/userlibraryaccess.js b/src/controllers/userlibraryaccess.js index 0965e9189b..95664c1eb3 100644 --- a/src/controllers/userlibraryaccess.js +++ b/src/controllers/userlibraryaccess.js @@ -1,79 +1,79 @@ -define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function ($, loading, libraryMenu, globalize) { - "use strict"; +define(['jQuery', 'loading', 'libraryMenu', 'globalize', 'fnchecked'], function ($, loading, libraryMenu, globalize) { + 'use strict'; function triggerChange(select) { - var evt = document.createEvent("HTMLEvents"); - evt.initEvent("change", false, true); + var evt = document.createEvent('HTMLEvents'); + evt.initEvent('change', false, true); select.dispatchEvent(evt); } function loadMediaFolders(page, user, mediaFolders) { - var html = ""; - html += '

' + globalize.translate("HeaderLibraries") + "

"; + var html = ''; + html += '

' + globalize.translate('HeaderLibraries') + '

'; html += '
'; for (var i = 0, length = mediaFolders.length; i < length; i++) { var folder = mediaFolders[i]; var isChecked = user.Policy.EnableAllFolders || -1 != user.Policy.EnabledFolders.indexOf(folder.Id); - var checkedAttribute = isChecked ? ' checked="checked"' : ""; - html += '"; + var checkedAttribute = isChecked ? ' checked="checked"' : ''; + html += ''; } - html += "
"; - page.querySelector(".folderAccess").innerHTML = html; - var chkEnableAllFolders = page.querySelector("#chkEnableAllFolders"); + html += ''; + page.querySelector('.folderAccess').innerHTML = html; + var chkEnableAllFolders = page.querySelector('#chkEnableAllFolders'); chkEnableAllFolders.checked = user.Policy.EnableAllFolders; triggerChange(chkEnableAllFolders); } function loadChannels(page, user, channels) { - var html = ""; - html += '

' + globalize.translate("HeaderChannels") + "

"; + var html = ''; + html += '

' + globalize.translate('HeaderChannels') + '

'; html += '
'; for (var i = 0, length = channels.length; i < length; i++) { var folder = channels[i]; var isChecked = user.Policy.EnableAllChannels || -1 != user.Policy.EnabledChannels.indexOf(folder.Id); - var checkedAttribute = isChecked ? ' checked="checked"' : ""; - html += '"; + var checkedAttribute = isChecked ? ' checked="checked"' : ''; + html += ''; } - html += "
"; - $(".channelAccess", page).show().html(html); + html += ''; + $('.channelAccess', page).show().html(html); if (channels.length) { - $(".channelAccessContainer", page).show(); + $('.channelAccessContainer', page).show(); } else { - $(".channelAccessContainer", page).hide(); + $('.channelAccessContainer', page).hide(); } - $("#chkEnableAllChannels", page).checked(user.Policy.EnableAllChannels).trigger("change"); + $('#chkEnableAllChannels', page).checked(user.Policy.EnableAllChannels).trigger('change'); } function loadDevices(page, user, devices) { - var html = ""; - html += '

' + globalize.translate("HeaderDevices") + "

"; + var html = ''; + html += '

' + globalize.translate('HeaderDevices') + '

'; html += '
'; for (var i = 0, length = devices.length; i < length; i++) { var device = devices[i]; - var checkedAttribute = user.Policy.EnableAllDevices || -1 != user.Policy.EnabledDevices.indexOf(device.Id) ? ' checked="checked"' : ""; - html += '"; + var checkedAttribute = user.Policy.EnableAllDevices || -1 != user.Policy.EnabledDevices.indexOf(device.Id) ? ' checked="checked"' : ''; + html += ''; } - html += "
"; - $(".deviceAccess", page).show().html(html); - $("#chkEnableAllDevices", page).checked(user.Policy.EnableAllDevices).trigger("change"); + html += ''; + $('.deviceAccess', page).show().html(html); + $('#chkEnableAllDevices', page).checked(user.Policy.EnableAllDevices).trigger('change'); if (user.Policy.IsAdministrator) { - page.querySelector(".deviceAccessContainer").classList.add("hide"); + page.querySelector('.deviceAccessContainer').classList.add('hide'); } else { - page.querySelector(".deviceAccessContainer").classList.remove("hide"); + page.querySelector('.deviceAccessContainer').classList.remove('hide'); } } function loadUser(page, user, loggedInUser, mediaFolders, channels, devices) { - page.querySelector(".username").innerHTML = user.Name; + page.querySelector('.username').innerHTML = user.Name; libraryMenu.setTitle(user.Name); loadChannels(page, user, channels); loadMediaFolders(page, user, mediaFolders); @@ -84,29 +84,29 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function function onSaveComplete(page) { loading.hide(); - require(["toast"], function (toast) { - toast(globalize.translate("SettingsSaved")); + require(['toast'], function (toast) { + toast(globalize.translate('SettingsSaved')); }); } function saveUser(user, page) { - user.Policy.EnableAllFolders = $("#chkEnableAllFolders", page).checked(); - user.Policy.EnabledFolders = user.Policy.EnableAllFolders ? [] : $(".chkFolder", page).get().filter(function (c) { + user.Policy.EnableAllFolders = $('#chkEnableAllFolders', page).checked(); + user.Policy.EnabledFolders = user.Policy.EnableAllFolders ? [] : $('.chkFolder', page).get().filter(function (c) { return c.checked; }).map(function (c) { - return c.getAttribute("data-id"); + return c.getAttribute('data-id'); }); - user.Policy.EnableAllChannels = $("#chkEnableAllChannels", page).checked(); - user.Policy.EnabledChannels = user.Policy.EnableAllChannels ? [] : $(".chkChannel", page).get().filter(function (c) { + user.Policy.EnableAllChannels = $('#chkEnableAllChannels', page).checked(); + user.Policy.EnabledChannels = user.Policy.EnableAllChannels ? [] : $('.chkChannel', page).get().filter(function (c) { return c.checked; }).map(function (c) { - return c.getAttribute("data-id"); + return c.getAttribute('data-id'); }); - user.Policy.EnableAllDevices = $("#chkEnableAllDevices", page).checked(); - user.Policy.EnabledDevices = user.Policy.EnableAllDevices ? [] : $(".chkDevice", page).get().filter(function (c) { + user.Policy.EnableAllDevices = $('#chkEnableAllDevices', page).checked(); + user.Policy.EnabledDevices = user.Policy.EnableAllDevices ? [] : $('.chkDevice', page).get().filter(function (c) { return c.checked; }).map(function (c) { - return c.getAttribute("data-id"); + return c.getAttribute('data-id'); }); user.Policy.BlockedChannels = null; user.Policy.BlockedMediaFolders = null; @@ -116,44 +116,44 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function } function onSubmit() { - var page = $(this).parents(".page"); + var page = $(this).parents('.page'); loading.show(); - var userId = getParameterByName("userId"); + var userId = getParameterByName('userId'); ApiClient.getUser(userId).then(function (result) { saveUser(result, page); }); return false; } - $(document).on("pageinit", "#userLibraryAccessPage", function () { + $(document).on('pageinit', '#userLibraryAccessPage', function () { var page = this; - $("#chkEnableAllDevices", page).on("change", function () { + $('#chkEnableAllDevices', page).on('change', function () { if (this.checked) { - $(".deviceAccessListContainer", page).hide(); + $('.deviceAccessListContainer', page).hide(); } else { - $(".deviceAccessListContainer", page).show(); + $('.deviceAccessListContainer', page).show(); } }); - $("#chkEnableAllChannels", page).on("change", function () { + $('#chkEnableAllChannels', page).on('change', function () { if (this.checked) { - $(".channelAccessListContainer", page).hide(); + $('.channelAccessListContainer', page).hide(); } else { - $(".channelAccessListContainer", page).show(); + $('.channelAccessListContainer', page).show(); } }); - page.querySelector("#chkEnableAllFolders").addEventListener("change", function () { + page.querySelector('#chkEnableAllFolders').addEventListener('change', function () { if (this.checked) { - page.querySelector(".folderAccessListContainer").classList.add("hide"); + page.querySelector('.folderAccessListContainer').classList.add('hide'); } else { - page.querySelector(".folderAccessListContainer").classList.remove("hide"); + page.querySelector('.folderAccessListContainer').classList.remove('hide'); } }); - $(".userLibraryAccessForm").off("submit", onSubmit).on("submit", onSubmit); - }).on("pageshow", "#userLibraryAccessPage", function () { + $('.userLibraryAccessForm').off('submit', onSubmit).on('submit', onSubmit); + }).on('pageshow', '#userLibraryAccessPage', function () { var page = this; loading.show(); var promise1; - var userId = getParameterByName("userId"); + var userId = getParameterByName('userId'); if (userId) { promise1 = ApiClient.getUser(userId); @@ -166,11 +166,11 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function } var promise2 = Dashboard.getCurrentUser(); - var promise4 = ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders", { + var promise4 = ApiClient.getJSON(ApiClient.getUrl('Library/MediaFolders', { IsHidden: false })); - var promise5 = ApiClient.getJSON(ApiClient.getUrl("Channels")); - var promise6 = ApiClient.getJSON(ApiClient.getUrl("Devices")); + var promise5 = ApiClient.getJSON(ApiClient.getUrl('Channels')); + var promise6 = ApiClient.getJSON(ApiClient.getUrl('Devices')); Promise.all([promise1, promise2, promise4, promise5, promise6]).then(function (responses) { loadUser(page, responses[0], responses[1], responses[2].Items, responses[3].Items, responses[4].Items); }); diff --git a/src/controllers/usernew.js b/src/controllers/usernew.js index b93d1d6626..e59143a9d8 100644 --- a/src/controllers/usernew.js +++ b/src/controllers/usernew.js @@ -1,51 +1,51 @@ -define(["jQuery", "loading", "globalize", "fnchecked", "emby-checkbox"], function ($, loading, globalize) { - "use strict"; +define(['jQuery', 'loading', 'globalize', 'fnchecked', 'emby-checkbox'], function ($, loading, globalize) { + 'use strict'; function loadMediaFolders(page, mediaFolders) { - var html = ""; - html += '

' + globalize.translate("HeaderLibraries") + "

"; + var html = ''; + html += '

' + globalize.translate('HeaderLibraries') + '

'; html += '
'; for (var i = 0; i < mediaFolders.length; i++) { var folder = mediaFolders[i]; - html += '"; + html += ''; } - html += "
"; - $(".folderAccess", page).html(html).trigger("create"); - $("#chkEnableAllFolders", page).checked(true).trigger("change"); + html += ''; + $('.folderAccess', page).html(html).trigger('create'); + $('#chkEnableAllFolders', page).checked(true).trigger('change'); } function loadChannels(page, channels) { - var html = ""; - html += '

' + globalize.translate("HeaderChannels") + "

"; + var html = ''; + html += '

' + globalize.translate('HeaderChannels') + '

'; html += '
'; for (var i = 0; i < channels.length; i++) { var folder = channels[i]; - html += '"; + html += ''; } - html += "
"; - $(".channelAccess", page).show().html(html).trigger("create"); + html += ''; + $('.channelAccess', page).show().html(html).trigger('create'); if (channels.length) { - $(".channelAccessContainer", page).show(); + $('.channelAccessContainer', page).show(); } else { - $(".channelAccessContainer", page).hide(); + $('.channelAccessContainer', page).hide(); } - $("#chkEnableAllChannels", page).checked(true).trigger("change"); + $('#chkEnableAllChannels', page).checked(true).trigger('change'); } function loadUser(page) { - $("#txtUsername", page).val(""); - $("#txtPassword", page).val(""); + $('#txtUsername', page).val(''); + $('#txtPassword', page).val(''); loading.show(); - var promiseFolders = ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders", { + var promiseFolders = ApiClient.getJSON(ApiClient.getUrl('Library/MediaFolders', { IsHidden: false })); - var promiseChannels = ApiClient.getJSON(ApiClient.getUrl("Channels")); + var promiseChannels = ApiClient.getJSON(ApiClient.getUrl('Channels')); Promise.all([promiseFolders, promiseChannels]).then(function (responses) { loadMediaFolders(page, responses[0].Items); loadChannels(page, responses[1].Items); @@ -55,37 +55,37 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-checkbox"], functio function saveUser(page) { var user = {}; - user.Name = $("#txtUsername", page).val(); - user.Password = $("#txtPassword", page).val(); + user.Name = $('#txtUsername', page).val(); + user.Password = $('#txtPassword', page).val(); ApiClient.createUser(user).then(function (user) { - user.Policy.EnableAllFolders = $("#chkEnableAllFolders", page).checked(); + user.Policy.EnableAllFolders = $('#chkEnableAllFolders', page).checked(); user.Policy.EnabledFolders = []; if (!user.Policy.EnableAllFolders) { - user.Policy.EnabledFolders = $(".chkFolder", page).get().filter(function (i) { + user.Policy.EnabledFolders = $('.chkFolder', page).get().filter(function (i) { return i.checked; }).map(function (i) { - return i.getAttribute("data-id"); + return i.getAttribute('data-id'); }); } - user.Policy.EnableAllChannels = $("#chkEnableAllChannels", page).checked(); + user.Policy.EnableAllChannels = $('#chkEnableAllChannels', page).checked(); user.Policy.EnabledChannels = []; if (!user.Policy.EnableAllChannels) { - user.Policy.EnabledChannels = $(".chkChannel", page).get().filter(function (i) { + user.Policy.EnabledChannels = $('.chkChannel', page).get().filter(function (i) { return i.checked; }).map(function (i) { - return i.getAttribute("data-id"); + return i.getAttribute('data-id'); }); } ApiClient.updateUserPolicy(user.Id, user.Policy).then(function () { - Dashboard.navigate("useredit.html?userId=" + user.Id); + Dashboard.navigate('useredit.html?userId=' + user.Id); }); }, function (response) { - require(["toast"], function (toast) { - toast(globalize.translate("DefaultErrorMessage")); + require(['toast'], function (toast) { + toast(globalize.translate('DefaultErrorMessage')); }); loading.hide(); @@ -93,7 +93,7 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-checkbox"], functio } function onSubmit() { - var page = $(this).parents(".page")[0]; + var page = $(this).parents('.page')[0]; loading.show(); saveUser(page); return false; @@ -103,24 +103,24 @@ define(["jQuery", "loading", "globalize", "fnchecked", "emby-checkbox"], functio loadUser(page); } - $(document).on("pageinit", "#newUserPage", function () { + $(document).on('pageinit', '#newUserPage', function () { var page = this; - $("#chkEnableAllChannels", page).on("change", function () { + $('#chkEnableAllChannels', page).on('change', function () { if (this.checked) { - $(".channelAccessListContainer", page).hide(); + $('.channelAccessListContainer', page).hide(); } else { - $(".channelAccessListContainer", page).show(); + $('.channelAccessListContainer', page).show(); } }); - $("#chkEnableAllFolders", page).on("change", function () { + $('#chkEnableAllFolders', page).on('change', function () { if (this.checked) { - $(".folderAccessListContainer", page).hide(); + $('.folderAccessListContainer', page).hide(); } else { - $(".folderAccessListContainer", page).show(); + $('.folderAccessListContainer', page).show(); } }); - $(".newUserProfileForm").off("submit", onSubmit).on("submit", onSubmit); - }).on("pageshow", "#newUserPage", function () { + $('.newUserProfileForm').off('submit', onSubmit).on('submit', onSubmit); + }).on('pageshow', '#newUserPage', function () { loadData(this); }); }); diff --git a/src/controllers/userparentalcontrol.js b/src/controllers/userparentalcontrol.js index 229fddf52b..e144271231 100644 --- a/src/controllers/userparentalcontrol.js +++ b/src/controllers/userparentalcontrol.js @@ -1,8 +1,8 @@ -define(["jQuery", "datetime", "loading", "libraryMenu", "globalize", "listViewStyle", "paper-icon-button-light"], function ($, datetime, loading, libraryMenu, globalize) { - "use strict"; +define(['jQuery', 'datetime', 'loading', 'libraryMenu', 'globalize', 'listViewStyle', 'paper-icon-button-light'], function ($, datetime, loading, libraryMenu, globalize) { + 'use strict'; function populateRatings(allParentalRatings, page) { - var html = ""; + var html = ''; html += ""; var i; var length; @@ -14,7 +14,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "globalize", "listViewSt var lastRating = ratings[ratings.length - 1]; if (lastRating.Value === rating.Value) { - lastRating.Name += "/" + rating.Name; + lastRating.Name += '/' + rating.Name; continue; } } @@ -27,56 +27,56 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "globalize", "listViewSt for (i = 0, length = ratings.length; i < length; i++) { rating = ratings[i]; - html += ""; + html += "'; } - $("#selectMaxParentalRating", page).html(html); + $('#selectMaxParentalRating', page).html(html); } function loadUnratedItems(page, user) { var items = [{ - name: globalize.translate("OptionBlockBooks"), - value: "Book" + name: globalize.translate('OptionBlockBooks'), + value: 'Book' }, { - name: globalize.translate("OptionBlockChannelContent"), - value: "ChannelContent" + name: globalize.translate('OptionBlockChannelContent'), + value: 'ChannelContent' }, { - name: globalize.translate("OptionBlockLiveTvChannels"), - value: "LiveTvChannel" + name: globalize.translate('OptionBlockLiveTvChannels'), + value: 'LiveTvChannel' }, { - name: globalize.translate("OptionBlockMovies"), - value: "Movie" + name: globalize.translate('OptionBlockMovies'), + value: 'Movie' }, { - name: globalize.translate("OptionBlockMusic"), - value: "Music" + name: globalize.translate('OptionBlockMusic'), + value: 'Music' }, { - name: globalize.translate("OptionBlockTrailers"), - value: "Trailer" + name: globalize.translate('OptionBlockTrailers'), + value: 'Trailer' }, { - name: globalize.translate("OptionBlockTvShows"), - value: "Series" + name: globalize.translate('OptionBlockTvShows'), + value: 'Series' }]; - var html = ""; - html += '

' + globalize.translate("HeaderBlockItemsWithNoRating") + "

"; + var html = ''; + html += '

' + globalize.translate('HeaderBlockItemsWithNoRating') + '

'; html += '
'; for (var i = 0, length = items.length; i < length; i++) { var item = items[i]; - var checkedAttribute = -1 != user.Policy.BlockUnratedItems.indexOf(item.value) ? ' checked="checked"' : ""; - html += '"; + var checkedAttribute = -1 != user.Policy.BlockUnratedItems.indexOf(item.value) ? ' checked="checked"' : ''; + html += ''; } - html += "
"; - $(".blockUnratedItems", page).html(html).trigger("create"); + html += ''; + $('.blockUnratedItems', page).html(html).trigger('create'); } function loadUser(page, user, allParentalRatings) { - page.querySelector(".username").innerHTML = user.Name; + page.querySelector('.username').innerHTML = user.Name; libraryMenu.setTitle(user.Name); loadUnratedItems(page, user); loadBlockedTags(page, user.Policy.BlockedTags); populateRatings(allParentalRatings, page); - var ratingValue = ""; + var ratingValue = ''; if (user.Policy.MaxParentalRating) { for (var i = 0, length = allParentalRatings.length; i < length; i++) { @@ -88,12 +88,12 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "globalize", "listViewSt } } - $("#selectMaxParentalRating", page).val(ratingValue); + $('#selectMaxParentalRating', page).val(ratingValue); if (user.Policy.IsAdministrator) { - $(".accessScheduleSection", page).hide(); + $('.accessScheduleSection', page).hide(); } else { - $(".accessScheduleSection", page).show(); + $('.accessScheduleSection', page).show(); } renderAccessSchedule(page, user.Policy.AccessSchedules || []); @@ -106,19 +106,19 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "globalize", "listViewSt li += '
'; li += '

'; li += h; - li += "

"; - li += "
"; + li += ''; + li += ''; li += ''; - return li += ""; - }).join(""); + return li += ''; + }).join(''); if (html) { - html = '
' + html + "
"; + html = '
' + html + '
'; } - var elem = $(".blockedTags", page).html(html).trigger("create"); - $(".btnDeleteTag", elem).on("click", function () { - var tag = this.getAttribute("data-tag"); + var elem = $('.blockedTags', page).html(html).trigger('create'); + $('.btnDeleteTag', elem).on('click', function () { + var tag = this.getAttribute('data-tag'); var newTags = tags.filter(function (t) { return t != tag; }); @@ -132,43 +132,43 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "globalize", "listViewSt } function renderAccessSchedule(page, schedules) { - var html = ""; + var html = ''; var index = 0; html += schedules.map(function (a) { - var itemHtml = ""; + var itemHtml = ''; itemHtml += '
'; itemHtml += '
'; itemHtml += '

'; - itemHtml += globalize.translate("Option" + a.DayOfWeek); - itemHtml += "

"; - itemHtml += '
' + getDisplayTime(a.StartHour) + " - " + getDisplayTime(a.EndHour) + "
"; - itemHtml += "
"; + itemHtml += globalize.translate('Option' + a.DayOfWeek); + itemHtml += ''; + itemHtml += '
' + getDisplayTime(a.StartHour) + ' - ' + getDisplayTime(a.EndHour) + '
'; + itemHtml += '
'; itemHtml += ''; - itemHtml += ""; + itemHtml += ''; index++; return itemHtml; - }).join(""); - var accessScheduleList = page.querySelector(".accessScheduleList"); + }).join(''); + var accessScheduleList = page.querySelector('.accessScheduleList'); accessScheduleList.innerHTML = html; - $(".btnDelete", accessScheduleList).on("click", function () { - deleteAccessSchedule(page, schedules, parseInt(this.getAttribute("data-index"))); + $('.btnDelete', accessScheduleList).on('click', function () { + deleteAccessSchedule(page, schedules, parseInt(this.getAttribute('data-index'))); }); } function onSaveComplete(page) { loading.hide(); - require(["toast"], function (toast) { - toast(globalize.translate("SettingsSaved")); + require(['toast'], function (toast) { + toast(globalize.translate('SettingsSaved')); }); } function saveUser(user, page) { - user.Policy.MaxParentalRating = $("#selectMaxParentalRating", page).val() || null; - user.Policy.BlockUnratedItems = $(".chkUnratedItem", page).get().filter(function (i) { + user.Policy.MaxParentalRating = $('#selectMaxParentalRating', page).val() || null; + user.Policy.BlockUnratedItems = $('.chkUnratedItem', page).get().filter(function (i) { return i.checked; }).map(function (i) { - return i.getAttribute("data-itemtype"); + return i.getAttribute('data-itemtype'); }); user.Policy.AccessSchedules = getSchedulesFromPage(page); user.Policy.BlockedTags = getBlockedTagsFromPage(page); @@ -191,7 +191,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "globalize", "listViewSt function showSchedulePopup(page, schedule, index) { schedule = schedule || {}; - require(["components/accessschedule/accessschedule"], function (accessschedule) { + require(['components/accessschedule/accessschedule'], function (accessschedule) { accessschedule.show({ schedule: schedule }).then(function (updatedSchedule) { @@ -208,25 +208,25 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "globalize", "listViewSt } function getSchedulesFromPage(page) { - return $(".liSchedule", page).map(function () { + return $('.liSchedule', page).map(function () { return { - DayOfWeek: this.getAttribute("data-day"), - StartHour: this.getAttribute("data-start"), - EndHour: this.getAttribute("data-end") + DayOfWeek: this.getAttribute('data-day'), + StartHour: this.getAttribute('data-start'), + EndHour: this.getAttribute('data-end') }; }).get(); } function getBlockedTagsFromPage(page) { - return $(".blockedTag", page).map(function () { - return this.getAttribute("data-tag"); + return $('.blockedTag', page).map(function () { + return this.getAttribute('data-tag'); }).get(); } function showBlockedTagPopup(page) { - require(["prompt"], function (prompt) { + require(['prompt'], function (prompt) { prompt({ - label: globalize.translate("LabelTag") + label: globalize.translate('LabelTag') }).then(function (value) { var tags = getBlockedTagsFromPage(page); @@ -240,28 +240,28 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "globalize", "listViewSt window.UserParentalControlPage = { onSubmit: function () { - var page = $(this).parents(".page"); + var page = $(this).parents('.page'); loading.show(); - var userId = getParameterByName("userId"); + var userId = getParameterByName('userId'); ApiClient.getUser(userId).then(function (result) { saveUser(result, page); }); return false; } }; - $(document).on("pageinit", "#userParentalControlPage", function () { + $(document).on('pageinit', '#userParentalControlPage', function () { var page = this; - $(".btnAddSchedule", page).on("click", function () { + $('.btnAddSchedule', page).on('click', function () { showSchedulePopup(page, {}, -1); }); - $(".btnAddBlockedTag", page).on("click", function () { + $('.btnAddBlockedTag', page).on('click', function () { showBlockedTagPopup(page); }); - $(".userParentalControlForm").off("submit", UserParentalControlPage.onSubmit).on("submit", UserParentalControlPage.onSubmit); - }).on("pageshow", "#userParentalControlPage", function () { + $('.userParentalControlForm').off('submit', UserParentalControlPage.onSubmit).on('submit', UserParentalControlPage.onSubmit); + }).on('pageshow', '#userParentalControlPage', function () { var page = this; loading.show(); - var userId = getParameterByName("userId"); + var userId = getParameterByName('userId'); var promise1 = ApiClient.getUser(userId); var promise2 = ApiClient.getParentalRatings(); Promise.all([promise1, promise2]).then(function (responses) { diff --git a/src/controllers/userpasswordpage.js b/src/controllers/userpasswordpage.js index 8ceb46c5e2..186e39b151 100644 --- a/src/controllers/userpasswordpage.js +++ b/src/controllers/userpasswordpage.js @@ -1,67 +1,67 @@ -define(["loading", "libraryMenu", "globalize", "emby-button"], function (loading, libraryMenu, globalize) { - "use strict"; +define(['loading', 'libraryMenu', 'globalize', 'emby-button'], function (loading, libraryMenu, globalize) { + 'use strict'; function loadUser(page, params) { var userid = params.userId; ApiClient.getUser(userid).then(function (user) { Dashboard.getCurrentUser().then(function (loggedInUser) { libraryMenu.setTitle(user.Name); - page.querySelector(".username").innerHTML = user.Name; + page.querySelector('.username').innerHTML = user.Name; var showPasswordSection = true; var showLocalAccessSection = false; - if ("Guest" == user.ConnectLinkType) { - page.querySelector(".localAccessSection").classList.add("hide"); + if ('Guest' == user.ConnectLinkType) { + page.querySelector('.localAccessSection').classList.add('hide'); showPasswordSection = false; } else if (user.HasConfiguredPassword) { - page.querySelector("#btnResetPassword").classList.remove("hide"); - page.querySelector("#fldCurrentPassword").classList.remove("hide"); + page.querySelector('#btnResetPassword').classList.remove('hide'); + page.querySelector('#fldCurrentPassword').classList.remove('hide'); showLocalAccessSection = true; } else { - page.querySelector("#btnResetPassword").classList.add("hide"); - page.querySelector("#fldCurrentPassword").classList.add("hide"); + page.querySelector('#btnResetPassword').classList.add('hide'); + page.querySelector('#fldCurrentPassword').classList.add('hide'); } if (showPasswordSection && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) { - page.querySelector(".passwordSection").classList.remove("hide"); + page.querySelector('.passwordSection').classList.remove('hide'); } else { - page.querySelector(".passwordSection").classList.add("hide"); + page.querySelector('.passwordSection').classList.add('hide'); } if (showLocalAccessSection && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) { - page.querySelector(".localAccessSection").classList.remove("hide"); + page.querySelector('.localAccessSection').classList.remove('hide'); } else { - page.querySelector(".localAccessSection").classList.add("hide"); + page.querySelector('.localAccessSection').classList.add('hide'); } - var txtEasyPassword = page.querySelector("#txtEasyPassword"); - txtEasyPassword.value = ""; + var txtEasyPassword = page.querySelector('#txtEasyPassword'); + txtEasyPassword.value = ''; if (user.HasConfiguredEasyPassword) { - txtEasyPassword.placeholder = "******"; - page.querySelector("#btnResetEasyPassword").classList.remove("hide"); + txtEasyPassword.placeholder = '******'; + page.querySelector('#btnResetEasyPassword').classList.remove('hide'); } else { - txtEasyPassword.removeAttribute("placeholder"); - txtEasyPassword.placeholder = ""; - page.querySelector("#btnResetEasyPassword").classList.add("hide"); + txtEasyPassword.removeAttribute('placeholder'); + txtEasyPassword.placeholder = ''; + page.querySelector('#btnResetEasyPassword').classList.add('hide'); } - page.querySelector(".chkEnableLocalEasyPassword").checked = user.Configuration.EnableLocalPassword; + page.querySelector('.chkEnableLocalEasyPassword').checked = user.Configuration.EnableLocalPassword; - require(["autoFocuser"], function (autoFocuser) { + require(['autoFocuser'], function (autoFocuser) { autoFocuser.autoFocus(page); }); }); }); - page.querySelector("#txtCurrentPassword").value = ""; - page.querySelector("#txtNewPassword").value = ""; - page.querySelector("#txtNewPasswordConfirm").value = ""; + page.querySelector('#txtCurrentPassword').value = ''; + page.querySelector('#txtNewPassword').value = ''; + page.querySelector('#txtNewPasswordConfirm').value = ''; } return function (view, params) { function saveEasyPassword() { var userId = params.userId; - var easyPassword = view.querySelector("#txtEasyPassword").value; + var easyPassword = view.querySelector('#txtEasyPassword').value; if (easyPassword) { ApiClient.updateEasyPassword(userId, easyPassword).then(function () { @@ -74,12 +74,12 @@ define(["loading", "libraryMenu", "globalize", "emby-button"], function (loading function onEasyPasswordSaved(userId) { ApiClient.getUser(userId).then(function (user) { - user.Configuration.EnableLocalPassword = view.querySelector(".chkEnableLocalEasyPassword").checked; + user.Configuration.EnableLocalPassword = view.querySelector('.chkEnableLocalEasyPassword').checked; ApiClient.updateUserConfiguration(user.Id, user.Configuration).then(function () { loading.hide(); - require(["toast"], function (toast) { - toast(globalize.translate("MessageSettingsSaved")); + require(['toast'], function (toast) { + toast(globalize.translate('MessageSettingsSaved')); }); loadUser(view, params); @@ -89,28 +89,28 @@ define(["loading", "libraryMenu", "globalize", "emby-button"], function (loading function savePassword() { var userId = params.userId; - var currentPassword = view.querySelector("#txtCurrentPassword").value; - var newPassword = view.querySelector("#txtNewPassword").value; + var currentPassword = view.querySelector('#txtCurrentPassword').value; + var newPassword = view.querySelector('#txtNewPassword').value; - if (view.querySelector("#fldCurrentPassword").classList.contains("hide")) { + if (view.querySelector('#fldCurrentPassword').classList.contains('hide')) { // Firefox does not respect autocomplete=off, so clear it if the field is supposed to be hidden (and blank) // This should only happen when user.HasConfiguredPassword is false, but this information is not passed on - currentPassword = ""; + currentPassword = ''; } ApiClient.updateUserPassword(userId, currentPassword, newPassword).then(function () { loading.hide(); - require(["toast"], function (toast) { - toast(globalize.translate("PasswordSaved")); + require(['toast'], function (toast) { + toast(globalize.translate('PasswordSaved')); }); loadUser(view, params); }, function () { loading.hide(); Dashboard.alert({ - title: globalize.translate("HeaderLoginFailure"), - message: globalize.translate("MessageInvalidUser") + title: globalize.translate('HeaderLoginFailure'), + message: globalize.translate('MessageInvalidUser') }); }); } @@ -118,9 +118,9 @@ define(["loading", "libraryMenu", "globalize", "emby-button"], function (loading function onSubmit(e) { var form = this; - if (form.querySelector("#txtNewPassword").value != form.querySelector("#txtNewPasswordConfirm").value) { - require(["toast"], function (toast) { - toast(globalize.translate("PasswordMatchError")); + if (form.querySelector('#txtNewPassword').value != form.querySelector('#txtNewPasswordConfirm').value) { + require(['toast'], function (toast) { + toast(globalize.translate('PasswordMatchError')); }); } else { loading.show(); @@ -139,17 +139,17 @@ define(["loading", "libraryMenu", "globalize", "emby-button"], function (loading } function resetPassword() { - var msg = globalize.translate("PasswordResetConfirmation"); + var msg = globalize.translate('PasswordResetConfirmation'); - require(["confirm"], function (confirm) { - confirm(msg, globalize.translate("PasswordResetHeader")).then(function () { + require(['confirm'], function (confirm) { + confirm(msg, globalize.translate('PasswordResetHeader')).then(function () { var userId = params.userId; loading.show(); ApiClient.resetUserPassword(userId).then(function () { loading.hide(); Dashboard.alert({ - message: globalize.translate("PasswordResetComplete"), - title: globalize.translate("PasswordResetHeader") + message: globalize.translate('PasswordResetComplete'), + title: globalize.translate('PasswordResetHeader') }); loadUser(view, params); }); @@ -158,17 +158,17 @@ define(["loading", "libraryMenu", "globalize", "emby-button"], function (loading } function resetEasyPassword() { - var msg = globalize.translate("PinCodeResetConfirmation"); + var msg = globalize.translate('PinCodeResetConfirmation'); - require(["confirm"], function (confirm) { - confirm(msg, globalize.translate("HeaderPinCodeReset")).then(function () { + require(['confirm'], function (confirm) { + confirm(msg, globalize.translate('HeaderPinCodeReset')).then(function () { var userId = params.userId; loading.show(); ApiClient.resetEasyPassword(userId).then(function () { loading.hide(); Dashboard.alert({ - message: globalize.translate("PinCodeResetComplete"), - title: globalize.translate("HeaderPinCodeReset") + message: globalize.translate('PinCodeResetComplete'), + title: globalize.translate('HeaderPinCodeReset') }); loadUser(view, params); }); @@ -176,11 +176,11 @@ define(["loading", "libraryMenu", "globalize", "emby-button"], function (loading }); } - view.querySelector(".updatePasswordForm").addEventListener("submit", onSubmit); - view.querySelector(".localAccessForm").addEventListener("submit", onLocalAccessSubmit); - view.querySelector("#btnResetEasyPassword").addEventListener("click", resetEasyPassword); - view.querySelector("#btnResetPassword").addEventListener("click", resetPassword); - view.addEventListener("viewshow", function () { + view.querySelector('.updatePasswordForm').addEventListener('submit', onSubmit); + view.querySelector('.localAccessForm').addEventListener('submit', onLocalAccessSubmit); + view.querySelector('#btnResetEasyPassword').addEventListener('click', resetEasyPassword); + view.querySelector('#btnResetPassword').addEventListener('click', resetPassword); + view.addEventListener('viewshow', function () { loadUser(view, params); }); }; diff --git a/src/controllers/userprofilespage.js b/src/controllers/userprofilespage.js index bdd5c6a461..528166e847 100644 --- a/src/controllers/userprofilespage.js +++ b/src/controllers/userprofilespage.js @@ -1,15 +1,15 @@ -define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-button-light", "cardStyle", "emby-button", "indicators", "flexStyles"], function (loading, dom, globalize, datefns, dfnshelper) { - "use strict"; +define(['loading', 'dom', 'globalize', 'date-fns', 'dfnshelper', 'paper-icon-button-light', 'cardStyle', 'emby-button', 'indicators', 'flexStyles'], function (loading, dom, globalize, datefns, dfnshelper) { + 'use strict'; function deleteUser(page, id) { - var msg = globalize.translate("DeleteUserConfirmation"); + var msg = globalize.translate('DeleteUserConfirmation'); - require(["confirm"], function (confirm) { + require(['confirm'], function (confirm) { confirm({ - title: globalize.translate("DeleteUser"), + title: globalize.translate('DeleteUser'), text: msg, - confirmText: globalize.translate("ButtonDelete"), - primary: "delete" + confirmText: globalize.translate('ButtonDelete'), + primary: 'delete' }).then(function () { loading.show(); ApiClient.deleteUser(id).then(function () { @@ -20,50 +20,50 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but } function showUserMenu(elem) { - var card = dom.parentWithClass(elem, "card"); - var page = dom.parentWithClass(card, "page"); - var userId = card.getAttribute("data-userid"); + var card = dom.parentWithClass(elem, 'card'); + var page = dom.parentWithClass(card, 'page'); + var userId = card.getAttribute('data-userid'); var menuItems = []; menuItems.push({ - name: globalize.translate("ButtonOpen"), - id: "open", - icon: "mode_edit" + name: globalize.translate('ButtonOpen'), + id: 'open', + icon: 'mode_edit' }); menuItems.push({ - name: globalize.translate("ButtonLibraryAccess"), - id: "access", - icon: "lock" + name: globalize.translate('ButtonLibraryAccess'), + id: 'access', + icon: 'lock' }); menuItems.push({ - name: globalize.translate("ButtonParentalControl"), - id: "parentalcontrol", - icon: "person" + name: globalize.translate('ButtonParentalControl'), + id: 'parentalcontrol', + icon: 'person' }); menuItems.push({ - name: globalize.translate("ButtonDelete"), - id: "delete", - icon: "delete" + name: globalize.translate('ButtonDelete'), + id: 'delete', + icon: 'delete' }); - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: menuItems, positionTo: card, callback: function (id) { switch (id) { - case "open": - Dashboard.navigate("useredit.html?userId=" + userId); + case 'open': + Dashboard.navigate('useredit.html?userId=' + userId); break; - case "access": - Dashboard.navigate("userlibraryaccess.html?userId=" + userId); + case 'access': + Dashboard.navigate('userlibraryaccess.html?userId=' + userId); break; - case "parentalcontrol": - Dashboard.navigate("userparentalcontrol.html?userId=" + userId); + case 'parentalcontrol': + Dashboard.navigate('userparentalcontrol.html?userId=' + userId); break; - case "delete": + case 'delete': deleteUser(page, userId); } } @@ -72,11 +72,11 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but } function getUserHtml(user, addConnectIndicator) { - var html = ""; - var cssClass = "card squareCard scalableCard squareCard-scalable"; + var html = ''; + var cssClass = 'card squareCard scalableCard squareCard-scalable'; if (user.Policy.IsDisabled) { - cssClass += " grayscale"; + cssClass += ' grayscale'; } html += "
"; @@ -90,14 +90,14 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but imgUrl = ApiClient.getUserImageUrl(user.Id, { width: 300, tag: user.PrimaryImageTag, - type: "Primary" + type: 'Primary' }); } - var imageClass = "cardImage"; + var imageClass = 'cardImage'; if (user.Policy.IsDisabled) { - imageClass += " disabledUser"; + imageClass += ' disabledUser'; } if (imgUrl) { @@ -107,62 +107,62 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but html += ''; } - html += "
"; - html += ""; - html += ""; + html += ''; + html += ''; + html += ''; html += '
'; html += '
'; html += '
'; html += user.Name; - html += "
"; + html += '
'; html += ''; - html += "
"; + html += ''; html += '
'; var lastSeen = getLastSeenText(user.LastActivityDate); - html += "" != lastSeen ? lastSeen : " "; - html += "
"; - html += ""; - html += ""; - return html + ""; + html += '' != lastSeen ? lastSeen : ' '; + html += ''; + html += ''; + html += ''; + return html + ''; } // FIXME: It seems that, sometimes, server sends date in the future, so date-fns displays messages like 'in less than a minute'. We should fix // how dates are returned by the server when the session is active and show something like 'Active now', instead of past/future sentences function getLastSeenText(lastActivityDate) { if (lastActivityDate) { - return globalize.translate("LastSeen", datefns.formatDistanceToNow(Date.parse(lastActivityDate), dfnshelper.localeWithSuffix)); + return globalize.translate('LastSeen', datefns.formatDistanceToNow(Date.parse(lastActivityDate), dfnshelper.localeWithSuffix)); } - return ""; + return ''; } function getUserSectionHtml(users, addConnectIndicator) { return users.map(function (u__q) { return getUserHtml(u__q, addConnectIndicator); - }).join(""); + }).join(''); } function renderUsers(page, users) { - page.querySelector(".localUsers").innerHTML = getUserSectionHtml(users, true); + page.querySelector('.localUsers').innerHTML = getUserSectionHtml(users, true); } function showPendingUserMenu(elem) { var menuItems = []; menuItems.push({ - name: globalize.translate("ButtonCancel"), - id: "delete", - icon: "delete" + name: globalize.translate('ButtonCancel'), + id: 'delete', + icon: 'delete' }); - require(["actionsheet"], function (actionsheet) { - var card = dom.parentWithClass(elem, "card"); - var page = dom.parentWithClass(card, "page"); - var id = card.getAttribute("data-id"); + require(['actionsheet'], function (actionsheet) { + var card = dom.parentWithClass(elem, 'card'); + var page = dom.parentWithClass(card, 'page'); + var id = card.getAttribute('data-id'); actionsheet.show({ items: menuItems, positionTo: card, callback: function (menuItemId) { switch (menuItemId) { - case "delete": + case 'delete': cancelAuthorization(page, id); } } @@ -171,7 +171,7 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but } function getPendingUserHtml(user) { - var html = ""; + var html = ''; html += "
"; html += '
'; html += '
'; @@ -180,41 +180,41 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but if (user.ImageUrl) { html += '
"; - html += "
"; + html += '
'; } else { html += ''; } - html += ""; - html += "
"; + html += ''; + html += '
'; html += '
'; html += '
'; html += ''; - html += "
"; + html += '
'; html += '
'; html += user.UserName; - html += "
"; - html += ""; - html += ""; - return html + ""; + html += ''; + html += ''; + html += ''; + return html + ''; } function renderPendingGuests(page, users) { if (users.length) { - page.querySelector(".sectionPendingGuests").classList.remove("hide"); + page.querySelector('.sectionPendingGuests').classList.remove('hide'); } else { - page.querySelector(".sectionPendingGuests").classList.add("hide"); + page.querySelector('.sectionPendingGuests').classList.add('hide'); } - page.querySelector(".pending").innerHTML = users.map(getPendingUserHtml).join(""); + page.querySelector('.pending').innerHTML = users.map(getPendingUserHtml).join(''); } // TODO cvium: maybe reuse for invitation system function cancelAuthorization(page, id) { loading.show(); ApiClient.ajax({ - type: "DELETE", - url: ApiClient.getUrl("Connect/Pending", { + type: 'DELETE', + url: ApiClient.getUrl('Connect/Pending', { Id: id }) }).then(function () { @@ -236,34 +236,34 @@ define(["loading", "dom", "globalize", "date-fns", "dfnshelper", "paper-icon-but } function showInvitePopup(page) { - require(["components/guestinviter/guestinviter"], function (guestinviter) { + require(['components/guestinviter/guestinviter'], function (guestinviter) { guestinviter.show().then(function () { loadData(page); }); }); } - pageIdOn("pageinit", "userProfilesPage", function () { + pageIdOn('pageinit', 'userProfilesPage', function () { var page = this; - page.querySelector(".btnAddUser").addEventListener("click", function() { - Dashboard.navigate("usernew.html"); + page.querySelector('.btnAddUser').addEventListener('click', function() { + Dashboard.navigate('usernew.html'); }); - page.querySelector(".localUsers").addEventListener("click", function (e__e) { - var btnUserMenu = dom.parentWithClass(e__e.target, "btnUserMenu"); + page.querySelector('.localUsers').addEventListener('click', function (e__e) { + var btnUserMenu = dom.parentWithClass(e__e.target, 'btnUserMenu'); if (btnUserMenu) { showUserMenu(btnUserMenu); } }); - page.querySelector(".pending").addEventListener("click", function (e__r) { - var btnUserMenu = dom.parentWithClass(e__r.target, "btnUserMenu"); + page.querySelector('.pending').addEventListener('click', function (e__r) { + var btnUserMenu = dom.parentWithClass(e__r.target, 'btnUserMenu'); if (btnUserMenu) { showPendingUserMenu(btnUserMenu); } }); }); - pageIdOn("pagebeforeshow", "userProfilesPage", function () { + pageIdOn('pagebeforeshow', 'userProfilesPage', function () { loadData(this); }); }); diff --git a/src/controllers/wizard/finish.js b/src/controllers/wizard/finish.js index 8242a16cb4..c27d9a5f4b 100644 --- a/src/controllers/wizard/finish.js +++ b/src/controllers/wizard/finish.js @@ -1,18 +1,18 @@ -define(["loading"], function (loading) { - "use strict"; +define(['loading'], function (loading) { + 'use strict'; function onFinish() { loading.show(); ApiClient.ajax({ - url: ApiClient.getUrl("Startup/Complete"), - type: "POST" + url: ApiClient.getUrl('Startup/Complete'), + type: 'POST' }).then(function () { loading.hide(); - window.location.href = "index.html"; + window.location.href = 'index.html'; }); } return function (view, params) { - view.querySelector(".btnWizardNext").addEventListener("click", onFinish); + view.querySelector('.btnWizardNext').addEventListener('click', onFinish); }; }); diff --git a/src/controllers/wizard/remoteaccess.js b/src/controllers/wizard/remoteaccess.js index 554a417e57..400cd357f4 100644 --- a/src/controllers/wizard/remoteaccess.js +++ b/src/controllers/wizard/remoteaccess.js @@ -1,16 +1,16 @@ -define(["loading", "emby-checkbox", "emby-button", "emby-select"], function (loading) { - "use strict"; +define(['loading', 'emby-checkbox', 'emby-button', 'emby-select'], function (loading) { + 'use strict'; function save(page) { loading.show(); var apiClient = ApiClient; var config = {}; - config.EnableRemoteAccess = page.querySelector("#chkRemoteAccess").checked; - config.EnableAutomaticPortMapping = page.querySelector("#chkEnableUpnp").checked; + config.EnableRemoteAccess = page.querySelector('#chkRemoteAccess').checked; + config.EnableAutomaticPortMapping = page.querySelector('#chkEnableUpnp').checked; apiClient.ajax({ - type: "POST", + type: 'POST', data: config, - url: apiClient.getUrl("Startup/RemoteAccess") + url: apiClient.getUrl('Startup/RemoteAccess') }).then(function () { loading.hide(); navigateToNextPage(); @@ -18,7 +18,7 @@ define(["loading", "emby-checkbox", "emby-button", "emby-select"], function (loa } function navigateToNextPage() { - Dashboard.navigate("wizardfinish.html"); + Dashboard.navigate('wizardfinish.html'); } function onSubmit(e) { @@ -28,12 +28,12 @@ define(["loading", "emby-checkbox", "emby-button", "emby-select"], function (loa } return function (view, params) { - view.querySelector(".wizardSettingsForm").addEventListener("submit", onSubmit); - view.addEventListener("viewshow", function () { - document.querySelector(".skinHeader").classList.add("noHomeButtonHeader"); + view.querySelector('.wizardSettingsForm').addEventListener('submit', onSubmit); + view.addEventListener('viewshow', function () { + document.querySelector('.skinHeader').classList.add('noHomeButtonHeader'); }); - view.addEventListener("viewhide", function () { - document.querySelector(".skinHeader").classList.remove("noHomeButtonHeader"); + view.addEventListener('viewhide', function () { + document.querySelector('.skinHeader').classList.remove('noHomeButtonHeader'); }); }; }); diff --git a/src/controllers/wizard/settings.js b/src/controllers/wizard/settings.js index 487f068a40..2062e795a3 100644 --- a/src/controllers/wizard/settings.js +++ b/src/controllers/wizard/settings.js @@ -1,16 +1,16 @@ -define(["loading", "emby-checkbox", "emby-button", "emby-select"], function (loading) { - "use strict"; +define(['loading', 'emby-checkbox', 'emby-button', 'emby-select'], function (loading) { + 'use strict'; function save(page) { loading.show(); var apiClient = ApiClient; - apiClient.getJSON(apiClient.getUrl("Startup/Configuration")).then(function (config) { - config.PreferredMetadataLanguage = page.querySelector("#selectLanguage").value; - config.MetadataCountryCode = page.querySelector("#selectCountry").value; + apiClient.getJSON(apiClient.getUrl('Startup/Configuration')).then(function (config) { + config.PreferredMetadataLanguage = page.querySelector('#selectLanguage').value; + config.MetadataCountryCode = page.querySelector('#selectCountry').value; apiClient.ajax({ - type: "POST", + type: 'POST', data: config, - url: apiClient.getUrl("Startup/Configuration") + url: apiClient.getUrl('Startup/Configuration') }).then(function () { loading.hide(); navigateToNextPage(); @@ -19,41 +19,41 @@ define(["loading", "emby-checkbox", "emby-button", "emby-select"], function (loa } function populateLanguages(select, languages) { - var html = ""; + var html = ''; html += ""; for (var i = 0, length = languages.length; i < length; i++) { var culture = languages[i]; - html += ""; + html += "'; } select.innerHTML = html; } function populateCountries(select, allCountries) { - var html = ""; + var html = ''; html += ""; for (var i = 0, length = allCountries.length; i < length; i++) { var culture = allCountries[i]; - html += ""; + html += "'; } select.innerHTML = html; } function reloadData(page, config, cultures, countries) { - populateLanguages(page.querySelector("#selectLanguage"), cultures); - populateCountries(page.querySelector("#selectCountry"), countries); - page.querySelector("#selectLanguage").value = config.PreferredMetadataLanguage; - page.querySelector("#selectCountry").value = config.MetadataCountryCode; + populateLanguages(page.querySelector('#selectLanguage'), cultures); + populateCountries(page.querySelector('#selectCountry'), countries); + page.querySelector('#selectLanguage').value = config.PreferredMetadataLanguage; + page.querySelector('#selectCountry').value = config.MetadataCountryCode; loading.hide(); } function reload(page) { loading.show(); var apiClient = ApiClient; - var promise1 = apiClient.getJSON(apiClient.getUrl("Startup/Configuration")); + var promise1 = apiClient.getJSON(apiClient.getUrl('Startup/Configuration')); var promise2 = apiClient.getCultures(); var promise3 = apiClient.getCountries(); Promise.all([promise1, promise2, promise3]).then(function (responses) { @@ -62,7 +62,7 @@ define(["loading", "emby-checkbox", "emby-button", "emby-select"], function (loa } function navigateToNextPage() { - Dashboard.navigate("wizardremoteaccess.html"); + Dashboard.navigate('wizardremoteaccess.html'); } function onSubmit(e) { @@ -72,13 +72,13 @@ define(["loading", "emby-checkbox", "emby-button", "emby-select"], function (loa } return function (view, params) { - view.querySelector(".wizardSettingsForm").addEventListener("submit", onSubmit); - view.addEventListener("viewshow", function () { - document.querySelector(".skinHeader").classList.add("noHomeButtonHeader"); + view.querySelector('.wizardSettingsForm').addEventListener('submit', onSubmit); + view.addEventListener('viewshow', function () { + document.querySelector('.skinHeader').classList.add('noHomeButtonHeader'); reload(this); }); - view.addEventListener("viewhide", function () { - document.querySelector(".skinHeader").classList.remove("noHomeButtonHeader"); + view.addEventListener('viewhide', function () { + document.querySelector('.skinHeader').classList.remove('noHomeButtonHeader'); }); }; }); diff --git a/src/controllers/wizard/start.js b/src/controllers/wizard/start.js index 1c2917b9ec..b7fb920d45 100644 --- a/src/controllers/wizard/start.js +++ b/src/controllers/wizard/start.js @@ -1,9 +1,9 @@ -define(["jQuery", "loading", "emby-button", "emby-select"], function ($, loading) { - "use strict"; +define(['jQuery', 'loading', 'emby-button', 'emby-select'], function ($, loading) { + 'use strict'; function loadPage(page, config, languageOptions) { - $("#selectLocalizationLanguage", page).html(languageOptions.map(function (l) { - return '"; + $('#selectLocalizationLanguage', page).html(languageOptions.map(function (l) { + return ''; })).val(config.UICulture); loading.hide(); } @@ -11,38 +11,38 @@ define(["jQuery", "loading", "emby-button", "emby-select"], function ($, loading function save(page) { loading.show(); var apiClient = ApiClient; - apiClient.getJSON(apiClient.getUrl("Startup/Configuration")).then(function (config) { - config.UICulture = $("#selectLocalizationLanguage", page).val(); + apiClient.getJSON(apiClient.getUrl('Startup/Configuration')).then(function (config) { + config.UICulture = $('#selectLocalizationLanguage', page).val(); apiClient.ajax({ - type: "POST", + type: 'POST', data: config, - url: apiClient.getUrl("Startup/Configuration") + url: apiClient.getUrl('Startup/Configuration') }).then(function () { - Dashboard.navigate("wizarduser.html"); + Dashboard.navigate('wizarduser.html'); }); }); } function onSubmit() { - save($(this).parents(".page")); + save($(this).parents('.page')); return false; } return function (view, params) { - $(".wizardStartForm", view).on("submit", onSubmit); - view.addEventListener("viewshow", function () { - document.querySelector(".skinHeader").classList.add("noHomeButtonHeader"); + $('.wizardStartForm', view).on('submit', onSubmit); + view.addEventListener('viewshow', function () { + document.querySelector('.skinHeader').classList.add('noHomeButtonHeader'); loading.show(); var page = this; var apiClient = ApiClient; - var promise1 = apiClient.getJSON(apiClient.getUrl("Startup/Configuration")); - var promise2 = apiClient.getJSON(apiClient.getUrl("Localization/Options")); + var promise1 = apiClient.getJSON(apiClient.getUrl('Startup/Configuration')); + var promise2 = apiClient.getJSON(apiClient.getUrl('Localization/Options')); Promise.all([promise1, promise2]).then(function (responses) { loadPage(page, responses[0], responses[1]); }); }); - view.addEventListener("viewhide", function () { - document.querySelector(".skinHeader").classList.remove("noHomeButtonHeader"); + view.addEventListener('viewhide', function () { + document.querySelector('.skinHeader').classList.remove('noHomeButtonHeader'); }); }; }); diff --git a/src/controllers/wizard/user.js b/src/controllers/wizard/user.js index 32f2bf933f..e62edef9fe 100644 --- a/src/controllers/wizard/user.js +++ b/src/controllers/wizard/user.js @@ -1,16 +1,16 @@ -define(["loading", "globalize", "dashboardcss", "emby-input", "emby-button", "emby-button"], function (loading, globalize) { - "use strict"; +define(['loading', 'globalize', 'dashboardcss', 'emby-input', 'emby-button', 'emby-button'], function (loading, globalize) { + 'use strict'; function getApiClient() { return ApiClient; } function nextWizardPage() { - Dashboard.navigate("wizardlibrary.html"); + Dashboard.navigate('wizardlibrary.html'); } function onUpdateUserComplete(result) { - console.debug("user update complete: " + result); + console.debug('user update complete: ' + result); loading.hide(); nextWizardPage(); } @@ -19,21 +19,21 @@ define(["loading", "globalize", "dashboardcss", "emby-input", "emby-button", "em loading.show(); var apiClient = getApiClient(); apiClient.ajax({ - type: "POST", + type: 'POST', data: { - Name: form.querySelector("#txtUsername").value, - Password: form.querySelector("#txtManualPassword").value + Name: form.querySelector('#txtUsername').value, + Password: form.querySelector('#txtManualPassword').value }, - url: apiClient.getUrl("Startup/User") + url: apiClient.getUrl('Startup/User') }).then(onUpdateUserComplete); } function onSubmit(e) { var form = this; - if (form.querySelector("#txtManualPassword").value != form.querySelector("#txtPasswordConfirm").value) { - require(["toast"], function (toast) { - toast(globalize.translate("PasswordMatchError")); + if (form.querySelector('#txtManualPassword').value != form.querySelector('#txtPasswordConfirm').value) { + require(['toast'], function (toast) { + toast(globalize.translate('PasswordMatchError')); }); } else { submit(form); @@ -47,21 +47,21 @@ define(["loading", "globalize", "dashboardcss", "emby-input", "emby-button", "em loading.show(); var page = this; var apiClient = getApiClient(); - apiClient.getJSON(apiClient.getUrl("Startup/User")).then(function (user) { - page.querySelector("#txtUsername").value = user.Name || ""; - page.querySelector("#txtManualPassword").value = user.Password || ""; + apiClient.getJSON(apiClient.getUrl('Startup/User')).then(function (user) { + page.querySelector('#txtUsername').value = user.Name || ''; + page.querySelector('#txtManualPassword').value = user.Password || ''; loading.hide(); }); } return function (view, params) { - view.querySelector(".wizardUserForm").addEventListener("submit", onSubmit); - view.addEventListener("viewshow", function () { - document.querySelector(".skinHeader").classList.add("noHomeButtonHeader"); + view.querySelector('.wizardUserForm').addEventListener('submit', onSubmit); + view.addEventListener('viewshow', function () { + document.querySelector('.skinHeader').classList.add('noHomeButtonHeader'); }); - view.addEventListener("viewhide", function () { - document.querySelector(".skinHeader").classList.remove("noHomeButtonHeader"); + view.addEventListener('viewhide', function () { + document.querySelector('.skinHeader').classList.remove('noHomeButtonHeader'); }); - view.addEventListener("viewshow", onViewShow); + view.addEventListener('viewshow', onViewShow); }; }); diff --git a/src/elements/emby-itemscontainer/emby-itemscontainer.js b/src/elements/emby-itemscontainer/emby-itemscontainer.js index c1aba9b6a0..5d3772ca93 100644 --- a/src/elements/emby-itemscontainer/emby-itemscontainer.js +++ b/src/elements/emby-itemscontainer/emby-itemscontainer.js @@ -124,7 +124,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', var self = this; require(['sortable'], function (Sortable) { self.sortable = new Sortable(self, { - draggable: ".listItem", + draggable: '.listItem', handle: '.listViewDragHandle', // dragging ended diff --git a/src/elements/emby-select/emby-select.js b/src/elements/emby-select/emby-select.js index ea90c4a77d..2716967560 100644 --- a/src/elements/emby-select/emby-select.js +++ b/src/elements/emby-select/emby-select.js @@ -27,8 +27,8 @@ define(['layoutManager', 'browser', 'actionsheet', 'css!./emby-select', 'registe } function triggerChange(select) { - var evt = document.createEvent("HTMLEvents"); - evt.initEvent("change", false, true); + var evt = document.createEvent('HTMLEvents'); + evt.initEvent('change', false, true); select.dispatchEvent(evt); } diff --git a/src/elements/emby-tabs/emby-tabs.js b/src/elements/emby-tabs/emby-tabs.js index fa5979fa4c..5e03c3f096 100644 --- a/src/elements/emby-tabs/emby-tabs.js +++ b/src/elements/emby-tabs/emby-tabs.js @@ -46,7 +46,7 @@ define(['dom', 'scroller', 'browser', 'layoutManager', 'focusManager', 'register function triggerBeforeTabChange(tabs, index, previousIndex) { - tabs.dispatchEvent(new CustomEvent("beforetabchange", { + tabs.dispatchEvent(new CustomEvent('beforetabchange', { detail: { selectedTabIndex: index, previousIndex: previousIndex @@ -94,7 +94,7 @@ define(['dom', 'scroller', 'browser', 'layoutManager', 'focusManager', 'register tabs.selectedTabIndex = index; - tabs.dispatchEvent(new CustomEvent("tabchange", { + tabs.dispatchEvent(new CustomEvent('tabchange', { detail: { selectedTabIndex: index, previousIndex: previousIndex @@ -198,7 +198,7 @@ define(['dom', 'scroller', 'browser', 'layoutManager', 'focusManager', 'register if (!this.readyFired) { this.readyFired = true; - this.dispatchEvent(new CustomEvent("ready", {})); + this.dispatchEvent(new CustomEvent('ready', {})); } }; @@ -238,7 +238,7 @@ define(['dom', 'scroller', 'browser', 'layoutManager', 'focusManager', 'register triggerBeforeTabChange(tabs, selected, current); - tabs.dispatchEvent(new CustomEvent("tabchange", { + tabs.dispatchEvent(new CustomEvent('tabchange', { detail: { selectedTabIndex: selected } @@ -315,7 +315,7 @@ define(['dom', 'scroller', 'browser', 'layoutManager', 'focusManager', 'register var tabs = this; - tabs.dispatchEvent(new CustomEvent("tabchange", { + tabs.dispatchEvent(new CustomEvent('tabchange', { detail: { selectedTabIndex: tabs.selectedIndex() } diff --git a/src/legacy/dashboard.js b/src/legacy/dashboard.js index 63c5eb0faa..08c5e8330b 100644 --- a/src/legacy/dashboard.js +++ b/src/legacy/dashboard.js @@ -1,6 +1,6 @@ Dashboard.confirm = function(message, title, callback) { - "use strict"; - require(["confirm"], function(confirm) { + 'use strict'; + require(['confirm'], function(confirm) { confirm(message, title).then(function() { callback(!0); }).catch(function() { @@ -10,15 +10,15 @@ Dashboard.confirm = function(message, title, callback) { }; Dashboard.showLoadingMsg = function() { - "use strict"; - require(["loading"], function(loading) { + 'use strict'; + require(['loading'], function(loading) { loading.show(); }); }; Dashboard.hideLoadingMsg = function() { - "use strict"; - require(["loading"], function(loading) { + 'use strict'; + require(['loading'], function(loading) { loading.hide(); }); }; diff --git a/src/legacy/fnchecked.js b/src/legacy/fnchecked.js index b815668f93..c3eff813e0 100644 --- a/src/legacy/fnchecked.js +++ b/src/legacy/fnchecked.js @@ -1,5 +1,5 @@ -define(["jQuery"], function($) { - "use strict"; +define(['jQuery'], function($) { + 'use strict'; $.fn.checked = function(value) { return !0 === value || !1 === value ? $(this).each(function() { this.checked = value; diff --git a/src/legacy/focusPreventScroll.js b/src/legacy/focusPreventScroll.js index 6df9e9928c..93f53dca29 100644 --- a/src/legacy/focusPreventScroll.js +++ b/src/legacy/focusPreventScroll.js @@ -4,14 +4,14 @@ if (HTMLElement.prototype.nativeFocus === undefined) { (function () { var supportsPreventScrollOption = false; try { - var focusElem = document.createElement("div"); + var focusElem = document.createElement('div'); - focusElem.addEventListener("focus", function(event) { + focusElem.addEventListener('focus', function(event) { event.preventDefault(); event.stopPropagation(); }, true); - var opts = Object.defineProperty({}, "preventScroll", { + var opts = Object.defineProperty({}, 'preventScroll', { // eslint-disable-next-line getter-return get: function () { supportsPreventScrollOption = true; @@ -20,7 +20,7 @@ if (HTMLElement.prototype.nativeFocus === undefined) { focusElem.focus(opts); } catch (e) { - console.error("error checking preventScroll support"); + console.error('error checking preventScroll support'); } if (!supportsPreventScrollOption) { diff --git a/src/legacy/selectmenu.js b/src/legacy/selectmenu.js index 95f435b587..f4cc5466b1 100644 --- a/src/legacy/selectmenu.js +++ b/src/legacy/selectmenu.js @@ -1,5 +1,5 @@ -define(["jQuery"], function($) { - "use strict"; +define(['jQuery'], function($) { + 'use strict'; $.fn.selectmenu = function() { return this; }; diff --git a/src/scripts/apploader.js b/src/scripts/apploader.js index 1ee74178b1..0353c9535c 100644 --- a/src/scripts/apploader.js +++ b/src/scripts/apploader.js @@ -1,12 +1,12 @@ (function() { - "use strict"; + 'use strict'; function injectScriptElement(src, onload) { if (!src) { return; } - var script = document.createElement("script"); + var script = document.createElement('script'); if (self.dashboardVersion) { src += `?v=${self.dashboardVersion}`; } @@ -21,10 +21,10 @@ function loadSite() { injectScriptElement( - "./libraries/alameda.js", + './libraries/alameda.js', function() { // onload of require library - injectScriptElement("./scripts/site.js"); + injectScriptElement('./scripts/site.js'); } ); } @@ -42,7 +42,7 @@ if (!self.Promise) { // Load Promise polyfill if they are not natively supported injectScriptElement( - "./libraries/npo.js", + './libraries/npo.js', loadSite ); } else { diff --git a/src/scripts/autobackdrops.js b/src/scripts/autobackdrops.js index fcc49d968b..abd86c9dbf 100644 --- a/src/scripts/autobackdrops.js +++ b/src/scripts/autobackdrops.js @@ -1,5 +1,5 @@ -define(["backdrop", "userSettings", "libraryMenu"], function (backdrop, userSettings, libraryMenu) { - "use strict"; +define(['backdrop', 'userSettings', 'libraryMenu'], function (backdrop, userSettings, libraryMenu) { + 'use strict'; var cache = {}; @@ -8,7 +8,7 @@ define(["backdrop", "userSettings", "libraryMenu"], function (backdrop, userSett } function getBackdropItemIds(apiClient, userId, types, parentId) { - var key = `backdrops2_${userId + (types || "") + (parentId || "")}`; + var key = `backdrops2_${userId + (types || '') + (parentId || '')}`; var data = cache[key]; if (data) { @@ -18,11 +18,11 @@ define(["backdrop", "userSettings", "libraryMenu"], function (backdrop, userSett } var options = { - SortBy: "IsFavoriteOrLiked,Random", + SortBy: 'IsFavoriteOrLiked,Random', Limit: 20, Recursive: true, IncludeItemTypes: types, - ImageTypes: "Backdrop", + ImageTypes: 'Backdrop', ParentId: parentId, EnableTotalRecordCount: false }; @@ -56,17 +56,17 @@ define(["backdrop", "userSettings", "libraryMenu"], function (backdrop, userSett } } - pageClassOn("pageshow", "page", function () { + pageClassOn('pageshow', 'page', function () { var page = this; - if (!page.classList.contains("selfBackdropPage")) { - if (page.classList.contains("backdropPage")) { + if (!page.classList.contains('selfBackdropPage')) { + if (page.classList.contains('backdropPage')) { if (enabled()) { - var type = page.getAttribute("data-backdroptype"); - var parentId = page.classList.contains("globalBackdropPage") ? "" : libraryMenu.getTopParentId(); + var type = page.getAttribute('data-backdroptype'); + var parentId = page.classList.contains('globalBackdropPage') ? '' : libraryMenu.getTopParentId(); showBackdrop(type, parentId); } else { - page.classList.remove("backdropPage"); + page.classList.remove('backdropPage'); backdrop.clear(); } } else { diff --git a/src/scripts/browser.js b/src/scripts/browser.js index 840ef6ac23..276f580dfa 100644 --- a/src/scripts/browser.js +++ b/src/scripts/browser.js @@ -185,7 +185,7 @@ define([], function () { /(safari)[ \/]([\w.]+)/.exec(ua) || /(firefox)[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || []; var versionMatch = /(version)[ \/]([\w.]+)/.exec(ua); @@ -196,17 +196,17 @@ define([], function () { /(android)/.exec(ua) || []; - var browser = match[1] || ""; + var browser = match[1] || ''; - if (browser === "edge") { - platform_match = [""]; + if (browser === 'edge') { + platform_match = ['']; } else { - if (ua.indexOf("windows phone") !== -1 || ua.indexOf("iemobile") !== -1) { + if (ua.indexOf('windows phone') !== -1 || ua.indexOf('iemobile') !== -1) { // http://www.neowin.net/news/ie11-fakes-user-agent-to-fool-gmail-in-windows-phone-81-gdr1-update - browser = "msie"; - } else if (ua.indexOf("like gecko") !== -1 && ua.indexOf('webkit') === -1 && ua.indexOf('opera') === -1 && ua.indexOf('chrome') === -1 && ua.indexOf('safari') === -1) { - browser = "msie"; + browser = 'msie'; + } else if (ua.indexOf('like gecko') !== -1 && ua.indexOf('webkit') === -1 && ua.indexOf('opera') === -1 && ua.indexOf('chrome') === -1 && ua.indexOf('safari') === -1) { + browser = 'msie'; } } @@ -219,7 +219,7 @@ define([], function () { version = versionMatch[2]; } - version = version || match[2] || "0"; + version = version || match[2] || '0'; var versionMajor = parseInt(version.split('.')[0]); @@ -230,7 +230,7 @@ define([], function () { return { browser: browser, version: version, - platform: platform_match[0] || "", + platform: platform_match[0] || '', versionMajor: versionMajor }; }; @@ -250,11 +250,11 @@ define([], function () { browser[matched.platform] = true; } - if (!browser.chrome && !browser.msie && !browser.edge && !browser.opera && userAgent.toLowerCase().indexOf("webkit") !== -1) { + if (!browser.chrome && !browser.msie && !browser.edge && !browser.opera && userAgent.toLowerCase().indexOf('webkit') !== -1) { browser.safari = true; } - if (userAgent.toLowerCase().indexOf("playstation 4") !== -1) { + if (userAgent.toLowerCase().indexOf('playstation 4') !== -1) { browser.ps4 = true; browser.tv = true; } diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index a269498dd0..03742d19f5 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -311,9 +311,9 @@ define(['browser'], function (browser) { try { var isTizenUhd = webapis.productinfo.isUdPanelSupported(); isTizenFhd = !isTizenUhd; - console.debug("isTizenFhd = " + isTizenFhd); + console.debug('isTizenFhd = ' + isTizenFhd); } catch (error) { - console.error("isUdPanelSupported() error code = " + error.code); + console.error('isUdPanelSupported() error code = ' + error.code); } } diff --git a/src/scripts/datetime.js b/src/scripts/datetime.js index 8a7666844c..34ff23fe63 100644 --- a/src/scripts/datetime.js +++ b/src/scripts/datetime.js @@ -41,12 +41,12 @@ define(['globalize'], function (globalize) { } // if there's a timezone, calculate it - if (d[8] !== "Z" && d[10]) { + if (d[8] !== 'Z' && d[10]) { var offset = d[10] * 60 * 60 * 1000; if (d[11]) { offset += d[11] * 60 * 1000; } - if (d[9] === "-") { + if (d[9] === '-') { ms -= offset; } else { ms += offset; @@ -159,13 +159,13 @@ define(['globalize'], function (globalize) { var optionList = getOptionList(options); if (optionList.length === 1 && optionList[0].name === 'weekday') { var weekday = []; - weekday[0] = "Sun"; - weekday[1] = "Mon"; - weekday[2] = "Tue"; - weekday[3] = "Wed"; - weekday[4] = "Thu"; - weekday[5] = "Fri"; - weekday[6] = "Sat"; + weekday[0] = 'Sun'; + weekday[1] = 'Mon'; + weekday[2] = 'Tue'; + weekday[3] = 'Wed'; + weekday[4] = 'Thu'; + weekday[5] = 'Fri'; + weekday[6] = 'Sat'; return weekday[date.getDay()]; } diff --git a/src/scripts/dom.js b/src/scripts/dom.js index a9ce5d53a2..a3d157f337 100644 --- a/src/scripts/dom.js +++ b/src/scripts/dom.js @@ -93,7 +93,7 @@ supportsCaptureOption = true; } }); - window.addEventListener("test", null, opts); + window.addEventListener('test', null, opts); } catch (e) { console.debug('error checking capture support'); } @@ -158,7 +158,7 @@ if (!windowSizeEventsBound) { windowSizeEventsBound = true; - addEventListener(window, "orientationchange", clearWindowSize, { passive: true }); + addEventListener(window, 'orientationchange', clearWindowSize, { passive: true }); addEventListener(window, 'resize', clearWindowSize, { passive: true }); } } @@ -204,12 +204,12 @@ return _animationEvent; } - const el = document.createElement("div"); + const el = document.createElement('div'); const animations = { - "animation": "animationend", - "OAnimation": "oAnimationEnd", - "MozAnimation": "animationend", - "WebkitAnimation": "webkitAnimationEnd" + 'animation': 'animationend', + 'OAnimation': 'oAnimationEnd', + 'MozAnimation': 'animationend', + 'WebkitAnimation': 'webkitAnimationEnd' }; for (let t in animations) { if (el.style[t] !== undefined) { @@ -244,12 +244,12 @@ return _transitionEvent; } - const el = document.createElement("div"); + const el = document.createElement('div'); const transitions = { - "transition": "transitionend", - "OTransition": "oTransitionEnd", - "MozTransition": "transitionend", - "WebkitTransition": "webkitTransitionEnd" + 'transition': 'transitionend', + 'OTransition': 'oTransitionEnd', + 'MozTransition': 'transitionend', + 'WebkitTransition': 'webkitTransitionEnd' }; for (let t in transitions) { if (el.style[t] !== undefined) { diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index 76be1eaefa..ee7788407c 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -1,5 +1,5 @@ -define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime, $, globalize) { - "use strict"; +define(['datetime', 'jQuery', 'globalize', 'material-icons'], function (datetime, $, globalize) { + 'use strict'; function getNode(item, folderState, selected) { var htmlName = getNodeInnerHtml(item); @@ -7,7 +7,7 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime id: item.Id, text: htmlName, state: { - opened: item.IsFolder && folderState == "open", + opened: item.IsFolder && folderState == 'open', selected: selected }, li_attr: { @@ -17,7 +17,7 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime }; if (item.IsFolder) { node.children = [{ - text: "Loading...", + text: 'Loading...', icon: false }]; node.icon = false; @@ -36,30 +36,30 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime function getNodeInnerHtml(item) { var name = item.Name; if (item.Number) { - name = item.Number + " - " + name; + name = item.Number + ' - ' + name; } - if (item.IndexNumber != null && item.Type != "Season") { - name = item.IndexNumber + " - " + name; + if (item.IndexNumber != null && item.Type != 'Season') { + name = item.IndexNumber + ' - ' + name; } var htmlName = "
"; if (item.IsFolder) { htmlName += ''; - } else if (item.MediaType === "Video") { + } else if (item.MediaType === 'Video') { htmlName += ''; - } else if (item.MediaType === "Audio") { + } else if (item.MediaType === 'Audio') { htmlName += ''; - } else if (item.Type === "TvChannel") { + } else if (item.Type === 'TvChannel') { htmlName += ''; - } else if (item.MediaType === "Photo") { + } else if (item.MediaType === 'Photo') { htmlName += ''; - } else if (item.MediaType === "Book") { + } else if (item.MediaType === 'Book') { htmlName += ''; } if (item.LockData) { htmlName += ''; } htmlName += name; - htmlName += "
"; + htmlName += ''; return htmlName; } @@ -69,36 +69,36 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime }).then(function (result) { var nodes = []; nodes.push({ - id: "MediaFolders", - text: globalize.translate("HeaderMediaFolders"), + id: 'MediaFolders', + text: globalize.translate('HeaderMediaFolders'), state: { opened: true }, li_attr: { - itemtype: "mediafolders", + itemtype: 'mediafolders', loadedFromServer: true }, icon: false }); if (result.TotalRecordCount) { nodes.push({ - id: "livetv", - text: globalize.translate("HeaderLiveTV"), + id: 'livetv', + text: globalize.translate('HeaderLiveTV'), state: { opened: false }, li_attr: { - itemtype: "livetv" + itemtype: 'livetv' }, children: [{ - text: "Loading...", + text: 'Loading...', icon: false }], icon: false }); } callback.call(scope, nodes); - nodesToLoad.push("MediaFolders"); + nodesToLoad.push('MediaFolders'); }); } @@ -108,7 +108,7 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime AddCurrentProgram: false }).then(function (result) { var nodes = result.Items.map(function (i) { - var state = openItems.indexOf(i.Id) == -1 ? "closed" : "open"; + var state = openItems.indexOf(i.Id) == -1 ? 'closed' : 'open'; return getNode(i, state, false); }); callback(nodes); @@ -116,9 +116,9 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime } function loadMediaFolders(page, scope, openItems, callback) { - ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders")).then(function (result) { + ApiClient.getJSON(ApiClient.getUrl('Library/MediaFolders')).then(function (result) { var nodes = result.Items.map(function (n) { - var state = openItems.indexOf(n.Id) == -1 ? "closed" : "open"; + var state = openItems.indexOf(n.Id) == -1 ? 'closed' : 'open'; return getNode(n, state, false); }); callback.call(scope, nodes); @@ -132,21 +132,21 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime function loadNode(page, scope, node, openItems, selectedId, currentUser, callback) { var id = node.id; - if (id == "#") { + if (id == '#') { loadChildrenOfRootNode(page, scope, callback); return; } - if (id == "livetv") { + if (id == 'livetv') { loadLiveTvChannels(id, openItems, callback); return; } - if (id == "MediaFolders") { + if (id == 'MediaFolders') { loadMediaFolders(page, scope, openItems, callback); return; } var query = { ParentId: id, - Fields: "Settings", + Fields: 'Settings', IsVirtualUnaired: false, IsMissing: false, EnableTotalRecordCount: false, @@ -154,12 +154,12 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime EnableUserData: false }; var itemtype = node.li_attr.itemtype; - if (itemtype != "Season" && itemtype != "Series") { - query.SortBy = "SortName"; + if (itemtype != 'Season' && itemtype != 'Series') { + query.SortBy = 'SortName'; } ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) { var nodes = result.Items.map(function (n) { - var state = openItems.indexOf(n.Id) == -1 ? "closed" : "open"; + var state = openItems.indexOf(n.Id) == -1 ? 'closed' : 'open'; return getNode(n, state, n.Id == selectedId); }); callback.call(scope, nodes); @@ -172,14 +172,14 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime } function scrollToNode(id) { - var elem = $("#" + id)[0]; + var elem = $('#' + id)[0]; if (elem) { elem.scrollIntoView(); } } function initializeTree(page, currentUser, openItems, selectedId) { - require(["jstree"], function () { + require(['jstree'], function () { initializeTreeInternal(page, currentUser, openItems, selectedId); }); } @@ -192,41 +192,41 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime serverItemType: node.li_attr.serveritemtype, collectionType: node.li_attr.collectiontype }; - if (eventData.itemType != "livetv" && eventData.itemType != "mediafolders") { + if (eventData.itemType != 'livetv' && eventData.itemType != 'mediafolders') { { - this.dispatchEvent(new CustomEvent("itemclicked", { + this.dispatchEvent(new CustomEvent('itemclicked', { detail: eventData, bubbles: true, cancelable: false })); } - document.querySelector(".editPageSidebar").classList.add("editPageSidebar-withcontent"); + document.querySelector('.editPageSidebar').classList.add('editPageSidebar-withcontent'); } else { - document.querySelector(".editPageSidebar").classList.remove("editPageSidebar-withcontent"); + document.querySelector('.editPageSidebar').classList.remove('editPageSidebar-withcontent'); } } function onNodeOpen(event, data) { - var page = $(this).parents(".page")[0]; + var page = $(this).parents('.page')[0]; var node = data.node; if (node.children && node.children) { loadNodesToLoad(page, node); } - if (node.li_attr && node.id != "#" && !node.li_attr.loadedFromServer) { + if (node.li_attr && node.id != '#' && !node.li_attr.loadedFromServer) { node.li_attr.loadedFromServer = true; - $.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback); + $.jstree.reference('.libraryTree', page).load_node(node.id, loadNodeCallback); } } function onNodeLoad(event, data) { - var page = $(this).parents(".page")[0]; + var page = $(this).parents('.page')[0]; var node = data.node; if (node.children && node.children) { loadNodesToLoad(page, node); } - if (node.li_attr && node.id != "#" && !node.li_attr.loadedFromServer) { + if (node.li_attr && node.id != '#' && !node.li_attr.loadedFromServer) { node.li_attr.loadedFromServer = true; - $.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback); + $.jstree.reference('.libraryTree', page).load_node(node.id, loadNodeCallback); } } @@ -234,18 +234,18 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime nodesToLoad = []; selectedNodeId = null; $.jstree.destroy(); - $(".libraryTree", page).jstree({ - "plugins": ["wholerow"], + $('.libraryTree', page).jstree({ + 'plugins': ['wholerow'], core: { check_callback: true, data: function (node, callback) { loadNode(page, this, node, openItems, selectedId, currentUser, callback); }, themes: { - variant: "large" + variant: 'large' } } - }).off("select_node.jstree", onNodeSelect).on("select_node.jstree", onNodeSelect).off("open_node.jstree", onNodeOpen).on("open_node.jstree", onNodeOpen).off("load_node.jstree", onNodeLoad).on("load_node.jstree", onNodeLoad); + }).off('select_node.jstree', onNodeSelect).on('select_node.jstree', onNodeSelect).off('open_node.jstree', onNodeOpen).on('open_node.jstree', onNodeOpen).off('load_node.jstree', onNodeLoad).on('load_node.jstree', onNodeLoad); } function loadNodesToLoad(page, node) { @@ -256,7 +256,7 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime nodesToLoad = nodesToLoad.filter(function (n) { return n != child; }); - $.jstree.reference(".libraryTree", page).load_node(child, loadNodeCallback); + $.jstree.reference('.libraryTree', page).load_node(child, loadNodeCallback); } } } @@ -270,14 +270,14 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime } function updateEditorNode(page, item) { - var elem = $("#" + item.Id + ">a", page)[0]; + var elem = $('#' + item.Id + '>a', page)[0]; if (elem == null) { return; } - $(".editorNode", elem).remove(); + $('.editorNode', elem).remove(); $(elem).append(getNodeInnerHtml(item)); if (item.IsFolder) { - var tree = jQuery.jstree._reference(".libraryTree"); + var tree = jQuery.jstree._reference('.libraryTree'); var currentNode = tree._get_node(null, false); tree.refresh(currentNode); } @@ -292,15 +292,15 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime return itemId; } var url = window.location.hash || window.location.href; - return getParameterByName("id", url); + return getParameterByName('id', url); } var nodesToLoad = []; var selectedNodeId; - $(document).on("itemsaved", ".metadataEditorPage", function (e, item) { + $(document).on('itemsaved', '.metadataEditorPage', function (e, item) { updateEditorNode(this, item); - }).on("pagebeforeshow", ".metadataEditorPage", function () { - require(["css!assets/css/metadataeditor.css"]); - }).on("pagebeforeshow", ".metadataEditorPage", function () { + }).on('pagebeforeshow', '.metadataEditorPage', function () { + require(['css!assets/css/metadataeditor.css']); + }).on('pagebeforeshow', '.metadataEditorPage', function () { var page = this; Dashboard.getCurrentUser().then(function (user) { var id = getCurrentItemId(); @@ -315,9 +315,9 @@ define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime initializeTree(page, user, []); } }); - }).on("pagebeforehide", ".metadataEditorPage", function () { + }).on('pagebeforehide', '.metadataEditorPage', function () { var page = this; - $(".libraryTree", page).off("select_node.jstree", onNodeSelect).off("open_node.jstree", onNodeOpen).off("load_node.jstree", onNodeLoad); + $('.libraryTree', page).off('select_node.jstree', onNodeSelect).off('open_node.jstree', onNodeOpen).off('load_node.jstree', onNodeLoad); }); var itemId; window.MetadataEditor = { diff --git a/src/scripts/gamepadtokey.js b/src/scripts/gamepadtokey.js index c2cf5005f1..089e5c81e9 100644 --- a/src/scripts/gamepadtokey.js +++ b/src/scripts/gamepadtokey.js @@ -20,7 +20,7 @@ // # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // # THE SOFTWARE. require(['apphost'], function (appHost) { - "use strict"; + 'use strict'; var _GAMEPAD_A_BUTTON_INDEX = 0; var _GAMEPAD_B_BUTTON_INDEX = 1; @@ -28,16 +28,16 @@ require(['apphost'], function (appHost) { 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_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; @@ -234,7 +234,7 @@ require(['apphost'], function (appHost) { } if (fire && keyCode) { - raiseEvent("keydown", key, keyCode); + raiseEvent('keydown', key, keyCode); } } else if (newPressedState === false && oldPressedState === true) { @@ -243,7 +243,7 @@ require(['apphost'], function (appHost) { // button up if (keyCode) { - raiseEvent("keyup", key, keyCode); + raiseEvent('keyup', key, keyCode); } if (clickonKeyUp) { clickElement(document.activeElement || window); @@ -375,7 +375,7 @@ require(['apphost'], function (appHost) { function onFocusOrGamepadAttach(e) { /* eslint-disable-next-line compat/compat */ if (isGamepadConnected() && document.hasFocus()) { - console.log("Gamepad connected! Starting input loop"); + console.log('Gamepad connected! Starting input loop'); startInputLoop(); } } @@ -383,28 +383,28 @@ require(['apphost'], function (appHost) { function onFocusOrGamepadDetach(e) { /* eslint-disable-next-line compat/compat */ if (!isGamepadConnected() || !document.hasFocus()) { - console.log("Gamepad disconnected! No other gamepads are connected, stopping input loop"); + console.log('Gamepad disconnected! No other gamepads are connected, stopping input loop'); stopInputLoop(); } else { - console.log("Gamepad disconnected! There are gamepads still connected."); + console.log('Gamepad disconnected! There are gamepads still connected.'); } } // Event listeners for any change in gamepads' state. - window.addEventListener("gamepaddisconnected", onFocusOrGamepadDetach); - window.addEventListener("gamepadconnected", onFocusOrGamepadAttach); - window.addEventListener("blur", onFocusOrGamepadDetach); - window.addEventListener("focus", onFocusOrGamepadAttach); + window.addEventListener('gamepaddisconnected', onFocusOrGamepadDetach); + window.addEventListener('gamepadconnected', onFocusOrGamepadAttach); + window.addEventListener('blur', onFocusOrGamepadDetach); + window.addEventListener('focus', onFocusOrGamepadAttach); onFocusOrGamepadAttach(); // The gamepadInputEmulation is a string property that exists in JavaScript UWAs and in WebViews in UWAs. // It won't exist in Win8.1 style apps or browsers. - if (window.navigator && typeof window.navigator.gamepadInputEmulation === "string") { + if (window.navigator && typeof window.navigator.gamepadInputEmulation === 'string') { // We want the gamepad to provide gamepad VK keyboard events rather than moving a // mouse like cursor. Set to "keyboard", the gamepad will provide such keyboard events // and provide input to the DOM navigator.getGamepads API. - window.navigator.gamepadInputEmulation = "gamepad"; + window.navigator.gamepadInputEmulation = 'gamepad'; } }); diff --git a/src/scripts/imagehelper.js b/src/scripts/imagehelper.js index f1da17bf2b..be3fd2834e 100644 --- a/src/scripts/imagehelper.js +++ b/src/scripts/imagehelper.js @@ -3,73 +3,73 @@ import browser from 'browser'; export function getDeviceIcon(device) { - var baseUrl = "assets/img/devices/"; + var baseUrl = 'assets/img/devices/'; switch (device.AppName || device.Client) { - case "Samsung Smart TV": - return baseUrl + "samsung.svg"; - case "Xbox One": - return baseUrl + "xbox.svg"; - case "Sony PS4": - return baseUrl + "playstation.svg"; - case "Kodi": - return baseUrl + "kodi.svg"; - case "Jellyfin Android": - case "Android TV": - return baseUrl + "android.svg"; - case "Jellyfin Web": + case 'Samsung Smart TV': + return baseUrl + 'samsung.svg'; + case 'Xbox One': + return baseUrl + 'xbox.svg'; + case 'Sony PS4': + return baseUrl + 'playstation.svg'; + case 'Kodi': + return baseUrl + 'kodi.svg'; + case 'Jellyfin Android': + case 'Android TV': + return baseUrl + 'android.svg'; + case 'Jellyfin Web': switch (device.Name || device.DeviceName) { - case "Opera": - case "Opera TV": - case "Opera Android": - return baseUrl + "opera.svg"; - case "Chrome": - case "Chrome Android": - return baseUrl + "chrome.svg"; - case "Firefox": - case "Firefox Android": - return baseUrl + "firefox.svg"; - case "Safari": - case "Safari iPad": - case "Safari iPhone": - return baseUrl + "safari.svg"; - case "Edge": - return baseUrl + "edge.svg"; - case "Internet Explorer": - return baseUrl + "msie.svg"; + case 'Opera': + case 'Opera TV': + case 'Opera Android': + return baseUrl + 'opera.svg'; + case 'Chrome': + case 'Chrome Android': + return baseUrl + 'chrome.svg'; + case 'Firefox': + case 'Firefox Android': + return baseUrl + 'firefox.svg'; + case 'Safari': + case 'Safari iPad': + case 'Safari iPhone': + return baseUrl + 'safari.svg'; + case 'Edge': + return baseUrl + 'edge.svg'; + case 'Internet Explorer': + return baseUrl + 'msie.svg'; default: - return baseUrl + "html5.svg"; + return baseUrl + 'html5.svg'; } default: - return baseUrl + "other.svg"; + return baseUrl + 'other.svg'; } } export function getLibraryIcon(library) { switch (library) { - case "movies": - return "video_library"; - case "music": - return "library_music"; - case "photos": - return "photo_library"; - case "livetv": - return "live_tv"; - case "tvshows": - return "tv"; - case "trailers": - return "local_movies"; - case "homevideos": - return "photo_library"; - case "musicvideos": - return "music_video"; - case "books": - return "library_books"; - case "channels": - return "videocam"; - case "playlists": - return "view_list"; + case 'movies': + return 'video_library'; + case 'music': + return 'library_music'; + case 'photos': + return 'photo_library'; + case 'livetv': + return 'live_tv'; + case 'tvshows': + return 'tv'; + case 'trailers': + return 'local_movies'; + case 'homevideos': + return 'photo_library'; + case 'musicvideos': + return 'music_video'; + case 'books': + return 'library_books'; + case 'channels': + return 'videocam'; + case 'playlists': + return 'view_list'; default: - return "folder"; + return 'folder'; } } diff --git a/src/scripts/inputManager.js b/src/scripts/inputManager.js index d9dcf52d84..8af52c77e8 100644 --- a/src/scripts/inputManager.js +++ b/src/scripts/inputManager.js @@ -74,7 +74,7 @@ import appHost from 'apphost'; } if (eventListenerCount) { - const customEvent = new CustomEvent("command", { + const customEvent = new CustomEvent('command', { detail: { command: commandName }, diff --git a/src/scripts/itembynamedetailpage.js b/src/scripts/itembynamedetailpage.js index 5ffacb2209..44eca55589 100644 --- a/src/scripts/itembynamedetailpage.js +++ b/src/scripts/itembynamedetailpage.js @@ -1,105 +1,105 @@ -define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryBrowser", "globalize", "emby-itemscontainer", "emby-button"], function (connectionManager, listView, cardBuilder, imageLoader, libraryBrowser, globalize) { - "use strict"; +define(['connectionManager', 'listView', 'cardBuilder', 'imageLoader', 'libraryBrowser', 'globalize', 'emby-itemscontainer', 'emby-button'], function (connectionManager, listView, cardBuilder, imageLoader, libraryBrowser, globalize) { + 'use strict'; function renderItems(page, item) { var sections = []; if (item.ArtistCount) { sections.push({ - name: globalize.translate("TabArtists"), - type: "MusicArtist" + name: globalize.translate('TabArtists'), + type: 'MusicArtist' }); } - if (item.ProgramCount && "Person" == item.Type) { + if (item.ProgramCount && 'Person' == item.Type) { sections.push({ - name: globalize.translate("HeaderUpcomingOnTV"), - type: "Program" + name: globalize.translate('HeaderUpcomingOnTV'), + type: 'Program' }); } if (item.MovieCount) { sections.push({ - name: globalize.translate("TabMovies"), - type: "Movie" + name: globalize.translate('TabMovies'), + type: 'Movie' }); } if (item.SeriesCount) { sections.push({ - name: globalize.translate("TabShows"), - type: "Series" + name: globalize.translate('TabShows'), + type: 'Series' }); } if (item.EpisodeCount) { sections.push({ - name: globalize.translate("TabEpisodes"), - type: "Episode" + name: globalize.translate('TabEpisodes'), + type: 'Episode' }); } if (item.TrailerCount) { sections.push({ - name: globalize.translate("TabTrailers"), - type: "Trailer" + name: globalize.translate('TabTrailers'), + type: 'Trailer' }); } if (item.AlbumCount) { sections.push({ - name: globalize.translate("TabAlbums"), - type: "MusicAlbum" + name: globalize.translate('TabAlbums'), + type: 'MusicAlbum' }); } if (item.MusicVideoCount) { sections.push({ - name: globalize.translate("TabMusicVideos"), - type: "MusicVideo" + name: globalize.translate('TabMusicVideos'), + type: 'MusicVideo' }); } - var elem = page.querySelector("#childrenContent"); + var elem = page.querySelector('#childrenContent'); elem.innerHTML = sections.map(function (section) { - var html = ""; - var sectionClass = "verticalSection"; + var html = ''; + var sectionClass = 'verticalSection'; - if ("Audio" === section.type) { - sectionClass += " verticalSection-extrabottompadding"; + if ('Audio' === section.type) { + sectionClass += ' verticalSection-extrabottompadding'; } html += '
'; html += '
'; html += '

'; html += section.name; - html += "

"; - html += '"; - html += "
"; + html += ''; + html += ''; + html += '
'; html += '
'; - html += "
"; - return html += ""; - }).join(""); - var sectionElems = elem.querySelectorAll(".verticalSection"); + html += ''; + return html += ''; + }).join(''); + var sectionElems = elem.querySelectorAll('.verticalSection'); for (var i = 0, length = sectionElems.length; i < length; i++) { - renderSection(page, item, sectionElems[i], sectionElems[i].getAttribute("data-type")); + renderSection(page, item, sectionElems[i], sectionElems[i].getAttribute('data-type')); } } function renderSection(page, item, element, type) { switch (type) { - case "Program": + case 'Program': loadItems(element, item, type, { - MediaTypes: "", - IncludeItemTypes: "Program", - PersonTypes: "", - ArtistIds: "", - AlbumArtistIds: "", + MediaTypes: '', + IncludeItemTypes: 'Program', + PersonTypes: '', + ArtistIds: '', + AlbumArtistIds: '', Limit: 10, - SortBy: "StartDate" + SortBy: 'StartDate' }, { - shape: "overflowBackdrop", + shape: 'overflowBackdrop', showTitle: true, centerText: true, overlayMoreButton: true, @@ -111,17 +111,17 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB }); break; - case "Movie": + case 'Movie': loadItems(element, item, type, { - MediaTypes: "", - IncludeItemTypes: "Movie", - PersonTypes: "", - ArtistIds: "", - AlbumArtistIds: "", + MediaTypes: '', + IncludeItemTypes: 'Movie', + PersonTypes: '', + ArtistIds: '', + AlbumArtistIds: '', Limit: 10, - SortBy: "SortName" + SortBy: 'SortName' }, { - shape: "overflowPortrait", + shape: 'overflowPortrait', showTitle: true, centerText: true, overlayMoreButton: true, @@ -130,68 +130,68 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB }); break; - case "MusicVideo": + case 'MusicVideo': loadItems(element, item, type, { - MediaTypes: "", - IncludeItemTypes: "MusicVideo", - PersonTypes: "", - ArtistIds: "", - AlbumArtistIds: "", + MediaTypes: '', + IncludeItemTypes: 'MusicVideo', + PersonTypes: '', + ArtistIds: '', + AlbumArtistIds: '', Limit: 10, - SortBy: "SortName" + SortBy: 'SortName' }, { - shape: "overflowPortrait", + shape: 'overflowPortrait', showTitle: true, centerText: true, overlayPlayButton: true }); break; - case "Trailer": + case 'Trailer': loadItems(element, item, type, { - MediaTypes: "", - IncludeItemTypes: "Trailer", - PersonTypes: "", - ArtistIds: "", - AlbumArtistIds: "", + MediaTypes: '', + IncludeItemTypes: 'Trailer', + PersonTypes: '', + ArtistIds: '', + AlbumArtistIds: '', Limit: 10, - SortBy: "SortName" + SortBy: 'SortName' }, { - shape: "overflowPortrait", + shape: 'overflowPortrait', showTitle: true, centerText: true, overlayPlayButton: true }); break; - case "Series": + case 'Series': loadItems(element, item, type, { - MediaTypes: "", - IncludeItemTypes: "Series", - PersonTypes: "", - ArtistIds: "", - AlbumArtistIds: "", + MediaTypes: '', + IncludeItemTypes: 'Series', + PersonTypes: '', + ArtistIds: '', + AlbumArtistIds: '', Limit: 10, - SortBy: "SortName" + SortBy: 'SortName' }, { - shape: "overflowPortrait", + shape: 'overflowPortrait', showTitle: true, centerText: true, overlayMoreButton: true }); break; - case "MusicAlbum": + case 'MusicAlbum': loadItems(element, item, type, { - MediaTypes: "", - IncludeItemTypes: "MusicAlbum", - PersonTypes: "", - ArtistIds: "", - AlbumArtistIds: "", - SortOrder: "Descending", - SortBy: "ProductionYear,Sortname" + MediaTypes: '', + IncludeItemTypes: 'MusicAlbum', + PersonTypes: '', + ArtistIds: '', + AlbumArtistIds: '', + SortOrder: 'Descending', + SortBy: 'ProductionYear,Sortname' }, { - shape: "overflowSquare", + shape: 'overflowSquare', playFromHere: true, showTitle: true, showYear: true, @@ -201,17 +201,17 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB }); break; - case "MusicArtist": + case 'MusicArtist': loadItems(element, item, type, { - MediaTypes: "", - IncludeItemTypes: "MusicArtist", - PersonTypes: "", - ArtistIds: "", - AlbumArtistIds: "", + MediaTypes: '', + IncludeItemTypes: 'MusicArtist', + PersonTypes: '', + ArtistIds: '', + AlbumArtistIds: '', Limit: 8, - SortBy: "SortName" + SortBy: 'SortName' }, { - shape: "overflowSquare", + shape: 'overflowSquare', playFromHere: true, showTitle: true, showParentTitle: true, @@ -221,17 +221,17 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB }); break; - case "Episode": + case 'Episode': loadItems(element, item, type, { - MediaTypes: "", - IncludeItemTypes: "Episode", - PersonTypes: "", - ArtistIds: "", - AlbumArtistIds: "", + MediaTypes: '', + IncludeItemTypes: 'Episode', + PersonTypes: '', + ArtistIds: '', + AlbumArtistIds: '', Limit: 6, - SortBy: "SortName" + SortBy: 'SortName' }, { - shape: "overflowBackdrop", + shape: 'overflowBackdrop', showTitle: true, showParentTitle: true, centerText: true, @@ -239,17 +239,17 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB }); break; - case "Audio": + case 'Audio': loadItems(element, item, type, { - MediaTypes: "", - IncludeItemTypes: "Audio", - PersonTypes: "", - ArtistIds: "", - AlbumArtistIds: "", - SortBy: "AlbumArtist,Album,SortName" + MediaTypes: '', + IncludeItemTypes: 'Audio', + PersonTypes: '', + ArtistIds: '', + AlbumArtistIds: '', + SortBy: 'AlbumArtist,Album,SortName' }, { playFromHere: true, - action: "playallfromhere", + action: 'playallfromhere', smallIcon: true, artist: true }); @@ -259,27 +259,27 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB function loadItems(element, item, type, query, listOptions) { query = getQuery(query, item); getItemsFunction(query, item)(query.StartIndex, query.Limit, query.Fields).then(function (result) { - var html = ""; + var html = ''; if (query.Limit && result.TotalRecordCount > query.Limit) { - var link = element.querySelector("a"); - link.classList.remove("hide"); - link.setAttribute("href", getMoreItemsHref(item, type)); + var link = element.querySelector('a'); + link.classList.remove('hide'); + link.setAttribute('href', getMoreItemsHref(item, type)); } else { - element.querySelector("a").classList.add("hide"); + element.querySelector('a').classList.add('hide'); } listOptions.items = result.Items; - var itemsContainer = element.querySelector(".itemsContainer"); + var itemsContainer = element.querySelector('.itemsContainer'); - if ("Audio" == type) { + if ('Audio' == type) { html = listView.getListViewHtml(listOptions); - itemsContainer.classList.remove("vertical-wrap"); - itemsContainer.classList.add("vertical-list"); + itemsContainer.classList.remove('vertical-wrap'); + itemsContainer.classList.add('vertical-list'); } else { html = cardBuilder.getCardsHtml(listOptions); - itemsContainer.classList.add("vertical-wrap"); - itemsContainer.classList.remove("vertical-list"); + itemsContainer.classList.add('vertical-wrap'); + itemsContainer.classList.remove('vertical-list'); } itemsContainer.innerHTML = html; @@ -288,51 +288,51 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB } function getMoreItemsHref(item, type) { - if ("Genre" == item.Type) { - return "list.html?type=" + type + "&genreId=" + item.Id + "&serverId=" + item.ServerId; + if ('Genre' == item.Type) { + return 'list.html?type=' + type + '&genreId=' + item.Id + '&serverId=' + item.ServerId; } - if ("MusicGenre" == item.Type) { - return "list.html?type=" + type + "&musicGenreId=" + item.Id + "&serverId=" + item.ServerId; + if ('MusicGenre' == item.Type) { + return 'list.html?type=' + type + '&musicGenreId=' + item.Id + '&serverId=' + item.ServerId; } - if ("Studio" == item.Type) { - return "list.html?type=" + type + "&studioId=" + item.Id + "&serverId=" + item.ServerId; + if ('Studio' == item.Type) { + return 'list.html?type=' + type + '&studioId=' + item.Id + '&serverId=' + item.ServerId; } - if ("MusicArtist" == item.Type) { - return "list.html?type=" + type + "&artistId=" + item.Id + "&serverId=" + item.ServerId; + if ('MusicArtist' == item.Type) { + return 'list.html?type=' + type + '&artistId=' + item.Id + '&serverId=' + item.ServerId; } - if ("Person" == item.Type) { - return "list.html?type=" + type + "&personId=" + item.Id + "&serverId=" + item.ServerId; + if ('Person' == item.Type) { + return 'list.html?type=' + type + '&personId=' + item.Id + '&serverId=' + item.ServerId; } - return "list.html?type=" + type + "&parentId=" + item.Id + "&serverId=" + item.ServerId; + return 'list.html?type=' + type + '&parentId=' + item.Id + '&serverId=' + item.ServerId; } function addCurrentItemToQuery(query, item) { - if (item.Type == "Person") { + if (item.Type == 'Person') { query.PersonIds = item.Id; - } else if (item.Type == "Genre") { + } else if (item.Type == 'Genre') { query.Genres = item.Name; - } else if (item.Type == "MusicGenre") { + } else if (item.Type == 'MusicGenre') { query.Genres = item.Name; - } else if (item.Type == "GameGenre") { + } else if (item.Type == 'GameGenre') { query.Genres = item.Name; - } else if (item.Type == "Studio") { + } else if (item.Type == 'Studio') { query.StudioIds = item.Id; - } else if (item.Type == "MusicArtist") { + } else if (item.Type == 'MusicArtist') { query.AlbumArtistIds = item.Id; } } function getQuery(options, item) { var query = { - SortOrder: "Ascending", - IncludeItemTypes: "", + SortOrder: 'Ascending', + IncludeItemTypes: '', Recursive: true, - Fields: "AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio,BasicSyncInfo", + Fields: 'AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio,BasicSyncInfo', Limit: 100, StartIndex: 0, CollapseBoxSetItems: false @@ -349,12 +349,12 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB query.Limit = limit; if (fields) { - query.Fields += "," + fields; + query.Fields += ',' + fields; } var apiClient = connectionManager.getApiClient(item.ServerId); - if ("MusicArtist" === query.IncludeItemTypes) { + if ('MusicArtist' === query.IncludeItemTypes) { query.IncludeItemTypes = null; return apiClient.getAlbumArtists(apiClient.getCurrentUserId(), query); } diff --git a/src/scripts/keyboardnavigation.js b/src/scripts/keyboardnavigation.js index a95b750b1e..6664afed53 100644 --- a/src/scripts/keyboardnavigation.js +++ b/src/scripts/keyboardnavigation.js @@ -3,49 +3,49 @@ * @module components/input/keyboardnavigation */ -import inputManager from "inputManager"; -import layoutManager from "layoutManager"; +import inputManager from 'inputManager'; +import layoutManager from 'layoutManager'; /** * Key name mapping. */ const KeyNames = { - 13: "Enter", - 19: "Pause", - 27: "Escape", - 32: "Space", - 37: "ArrowLeft", - 38: "ArrowUp", - 39: "ArrowRight", - 40: "ArrowDown", + 13: 'Enter', + 19: 'Pause', + 27: 'Escape', + 32: 'Space', + 37: 'ArrowLeft', + 38: 'ArrowUp', + 39: 'ArrowRight', + 40: 'ArrowDown', // MediaRewind (Tizen/WebOS) - 412: "MediaRewind", + 412: 'MediaRewind', // MediaStop (Tizen/WebOS) - 413: "MediaStop", + 413: 'MediaStop', // MediaPlay (Tizen/WebOS) - 415: "MediaPlay", + 415: 'MediaPlay', // MediaFastForward (Tizen/WebOS) - 417: "MediaFastForward", + 417: 'MediaFastForward', // Back (WebOS) - 461: "Back", + 461: 'Back', // Back (Tizen) - 10009: "Back", + 10009: 'Back', // MediaTrackPrevious (Tizen) - 10232: "MediaTrackPrevious", + 10232: 'MediaTrackPrevious', // MediaTrackNext (Tizen) - 10233: "MediaTrackNext", + 10233: 'MediaTrackNext', // MediaPlayPause (Tizen) - 10252: "MediaPlayPause" + 10252: 'MediaPlayPause' }; /** * Keys used for keyboard navigation. */ -const NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; +const NavigationKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown']; let hasFieldKey = false; try { - hasFieldKey = "key" in new KeyboardEvent("keydown"); + hasFieldKey = 'key' in new KeyboardEvent('keydown'); } catch (e) { console.error("error checking 'key' field"); } @@ -78,7 +78,7 @@ export function isNavigationKey(key) { } export function enable() { - document.addEventListener("keydown", function (e) { + document.addEventListener('keydown', function (e) { const key = getKeyName(e); // Ignore navigation keys for non-TV @@ -89,54 +89,54 @@ export function enable() { let capture = true; switch (key) { - case "ArrowLeft": - inputManager.handle("left"); + case 'ArrowLeft': + inputManager.handle('left'); break; - case "ArrowUp": - inputManager.handle("up"); + case 'ArrowUp': + inputManager.handle('up'); break; - case "ArrowRight": - inputManager.handle("right"); + case 'ArrowRight': + inputManager.handle('right'); break; - case "ArrowDown": - inputManager.handle("down"); + case 'ArrowDown': + inputManager.handle('down'); break; - case "Back": - inputManager.handle("back"); + case 'Back': + inputManager.handle('back'); break; - case "Escape": + case 'Escape': if (layoutManager.tv) { - inputManager.handle("back"); + inputManager.handle('back'); } else { capture = false; } break; - case "MediaPlay": - inputManager.handle("play"); + case 'MediaPlay': + inputManager.handle('play'); break; - case "Pause": - inputManager.handle("pause"); + case 'Pause': + inputManager.handle('pause'); break; - case "MediaPlayPause": - inputManager.handle("playpause"); + case 'MediaPlayPause': + inputManager.handle('playpause'); break; - case "MediaRewind": - inputManager.handle("rewind"); + case 'MediaRewind': + inputManager.handle('rewind'); break; - case "MediaFastForward": - inputManager.handle("fastforward"); + case 'MediaFastForward': + inputManager.handle('fastforward'); break; - case "MediaStop": - inputManager.handle("stop"); + case 'MediaStop': + inputManager.handle('stop'); break; - case "MediaTrackPrevious": - inputManager.handle("previoustrack"); + case 'MediaTrackPrevious': + inputManager.handle('previoustrack'); break; - case "MediaTrackNext": - inputManager.handle("nexttrack"); + case 'MediaTrackNext': + inputManager.handle('nexttrack'); break; default: @@ -144,7 +144,7 @@ export function enable() { } if (capture) { - console.debug("disabling default event handling"); + console.debug('disabling default event handling'); e.preventDefault(); } }); @@ -153,14 +153,14 @@ export function enable() { // Gamepad initialisation. No script is required if no gamepads are present at init time, saving a bit of resources. // Whenever the gamepad is connected, we hand all the control of the gamepad to gamepadtokey.js by removing the event handler function attachGamepadScript(e) { - console.log("Gamepad connected! Attaching gamepadtokey.js script"); - window.removeEventListener("gamepadconnected", attachGamepadScript); - require(["scripts/gamepadtokey"]); + console.log('Gamepad connected! Attaching gamepadtokey.js script'); + window.removeEventListener('gamepadconnected', attachGamepadScript); + require(['scripts/gamepadtokey']); } // No need to check for gamepads manually at load time, the eventhandler will be fired for that if (navigator.getGamepads) { /* eslint-disable-line compat/compat */ - window.addEventListener("gamepadconnected", attachGamepadScript); + window.addEventListener('gamepadconnected', attachGamepadScript); } export default { diff --git a/src/scripts/librarybrowser.js b/src/scripts/librarybrowser.js index 9608810ba5..f9e5e23596 100644 --- a/src/scripts/librarybrowser.js +++ b/src/scripts/librarybrowser.js @@ -1,9 +1,9 @@ -define(["userSettings", "globalize"], function (userSettings, globalize) { - "use strict"; +define(['userSettings', 'globalize'], function (userSettings, globalize) { + 'use strict'; var libraryBrowser = { getSavedQueryKey: function (modifier) { - return window.location.href.split("#")[0] + (modifier || ""); + return window.location.href.split('#')[0] + (modifier || ''); }, loadSavedQueryValues: function (key, query) { var values = userSettings.get(key); @@ -29,34 +29,34 @@ define(["userSettings", "globalize"], function (userSettings, globalize) { userSettings.set(key, JSON.stringify(values)); }, saveViewSetting: function (key, value) { - userSettings.set(key + "-_view", value); + userSettings.set(key + '-_view', value); }, getSavedView: function (key) { - return userSettings.get(key + "-_view"); + return userSettings.get(key + '-_view'); }, showLayoutMenu: function (button, currentLayout, views) { var dispatchEvent = true; if (!views) { dispatchEvent = false; - views = button.getAttribute("data-layouts"); - views = views ? views.split(",") : ["List", "Poster", "PosterCard", "Thumb", "ThumbCard"]; + views = button.getAttribute('data-layouts'); + views = views ? views.split(',') : ['List', 'Poster', 'PosterCard', 'Thumb', 'ThumbCard']; } var menuItems = views.map(function (v) { return { - name: globalize.translate("Option" + v), + name: globalize.translate('Option' + v), id: v, selected: currentLayout == v }; }); - require(["actionsheet"], function (actionsheet) { + require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: menuItems, positionTo: button, callback: function (id) { - button.dispatchEvent(new CustomEvent("layoutchange", { + button.dispatchEvent(new CustomEvent('layoutchange', { detail: { viewStyle: id }, @@ -66,7 +66,7 @@ define(["userSettings", "globalize"], function (userSettings, globalize) { if (!dispatchEvent) { if (window.$) { - $(button).trigger("layoutchange", [id]); + $(button).trigger('layoutchange', [id]); } } } @@ -77,49 +77,49 @@ define(["userSettings", "globalize"], function (userSettings, globalize) { var startIndex = options.startIndex; var limit = options.limit; var totalRecordCount = options.totalRecordCount; - var html = ""; + var html = ''; var recordsEnd = Math.min(startIndex + limit, totalRecordCount); var showControls = limit < totalRecordCount; if (html += '
', showControls) { html += ''; - html += globalize.translate("ListPaging", (totalRecordCount ? startIndex + 1 : 0), recordsEnd, totalRecordCount); - html += ""; + html += globalize.translate('ListPaging', (totalRecordCount ? startIndex + 1 : 0), recordsEnd, totalRecordCount); + html += ''; } if (showControls || options.viewButton || options.filterButton || options.sortButton || options.addLayoutButton) { html += '
'; if (showControls) { - html += ''; - html += ''; + html += ''; + html += ''; } if (options.addLayoutButton) { - html += ''; + html += ''; } if (options.sortButton) { - html += ''; + html += ''; } if (options.filterButton) { - html += ''; + html += ''; } - html += "
"; + html += '
'; } - return html += ""; + return html += ''; }, showSortMenu: function (options) { - require(["dialogHelper", "emby-radio"], function (dialogHelper) { + require(['dialogHelper', 'emby-radio'], function (dialogHelper) { function onSortByChange() { var newValue = this.value; if (this.checked) { var changed = options.query.SortBy != newValue; - options.query.SortBy = newValue.replace("_", ","); + options.query.SortBy = newValue.replace('_', ','); options.query.StartIndex = 0; if (options.callback && changed) { @@ -148,48 +148,48 @@ define(["userSettings", "globalize"], function (userSettings, globalize) { entryAnimationDuration: 160, exitAnimationDuration: 200 }); - dlg.classList.add("ui-body-a"); - dlg.classList.add("background-theme-a"); - dlg.classList.add("formDialog"); - var html = ""; + dlg.classList.add('ui-body-a'); + dlg.classList.add('background-theme-a'); + dlg.classList.add('formDialog'); + var html = ''; html += '
'; html += '

'; - html += globalize.translate("HeaderSortBy"); - html += "

"; + html += globalize.translate('HeaderSortBy'); + html += ''; var i; var length; var isChecked; html += '
'; for (i = 0, length = options.items.length; i < length; i++) { var option = options.items[i]; - var radioValue = option.id.replace(",", "_"); - isChecked = (options.query.SortBy || "").replace(",", "_") == radioValue ? " checked" : ""; - html += '"; + var radioValue = option.id.replace(',', '_'); + isChecked = (options.query.SortBy || '').replace(',', '_') == radioValue ? ' checked' : ''; + html += ''; } - html += "
"; + html += '
'; html += '

'; - html += globalize.translate("HeaderSortOrder"); - html += "

"; - html += "
"; - isChecked = "Ascending" == options.query.SortOrder ? " checked" : ""; - html += '"; - isChecked = "Descending" == options.query.SortOrder ? " checked" : ""; - html += '"; - html += "
"; - html += ""; + html += globalize.translate('HeaderSortOrder'); + html += ''; + html += '
'; + isChecked = 'Ascending' == options.query.SortOrder ? ' checked' : ''; + html += ''; + isChecked = 'Descending' == options.query.SortOrder ? ' checked' : ''; + html += ''; + html += '
'; + html += ''; dlg.innerHTML = html; dialogHelper.open(dlg); - var sortBys = dlg.querySelectorAll(".menuSortBy"); + var sortBys = dlg.querySelectorAll('.menuSortBy'); for (i = 0, length = sortBys.length; i < length; i++) { - sortBys[i].addEventListener("change", onSortByChange); + sortBys[i].addEventListener('change', onSortByChange); } - var sortOrders = dlg.querySelectorAll(".menuSortOrder"); + var sortOrders = dlg.querySelectorAll('.menuSortOrder'); for (i = 0, length = sortOrders.length; i < length; i++) { - sortOrders[i].addEventListener("change", onSortOrderChange); + sortOrders[i].addEventListener('change', onSortOrderChange); } }); } diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index fbc641b741..60964e3016 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -1,35 +1,35 @@ -define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "viewManager", "libraryBrowser", "appRouter", "apphost", "playbackManager", "browser", "globalize", "scripts/imagehelper", "paper-icon-button-light", "material-icons", "scrollStyles", "flexStyles"], function (dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, browser, globalize, imageHelper) { - "use strict"; +define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', 'viewManager', 'libraryBrowser', 'appRouter', 'apphost', 'playbackManager', 'browser', 'globalize', 'scripts/imagehelper', 'paper-icon-button-light', 'material-icons', 'scrollStyles', 'flexStyles'], function (dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, browser, globalize, imageHelper) { + 'use strict'; function renderHeader() { - var html = ""; + var html = ''; html += '
'; html += '
'; html += ''; html += ''; html += ''; html += '

'; - html += "
"; + html += '
'; html += '
'; html += ''; html += ''; html += ''; html += ''; html += ''; - html += "
"; - html += ""; + html += ''; + html += ''; html += '
'; - html += "
"; + html += ''; - skinHeader.classList.add("skinHeader-withBackground"); - skinHeader.classList.add("skinHeader-blurred"); + skinHeader.classList.add('skinHeader-withBackground'); + skinHeader.classList.add('skinHeader-blurred'); skinHeader.innerHTML = html; - headerHomeButton = skinHeader.querySelector(".headerHomeButton"); - headerUserButton = skinHeader.querySelector(".headerUserButton"); - headerCastButton = skinHeader.querySelector(".headerCastButton"); - headerAudioPlayerButton = skinHeader.querySelector(".headerAudioPlayerButton"); - headerSearchButton = skinHeader.querySelector(".headerSearchButton"); + headerHomeButton = skinHeader.querySelector('.headerHomeButton'); + headerUserButton = skinHeader.querySelector('.headerUserButton'); + headerCastButton = skinHeader.querySelector('.headerCastButton'); + headerAudioPlayerButton = skinHeader.querySelector('.headerAudioPlayerButton'); + headerSearchButton = skinHeader.querySelector('.headerSearchButton'); lazyLoadViewMenuBarImages(); bindMenuEvents(); @@ -44,7 +44,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } function lazyLoadViewMenuBarImages() { - require(["imageLoader"], function (imageLoader) { + require(['imageLoader'], function (imageLoader) { imageLoader.lazyChildren(skinHeader); }); } @@ -63,9 +63,9 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " hasImage = true; } - headerUserButton.classList.remove("hide"); + headerUserButton.classList.remove('hide'); } else { - headerUserButton.classList.add("hide"); + headerUserButton.classList.add('hide'); } if (!hasImage) { @@ -74,22 +74,22 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " if (user && user.localUser) { if (headerHomeButton) { - headerHomeButton.classList.remove("hide"); + headerHomeButton.classList.remove('hide'); } if (headerSearchButton) { - headerSearchButton.classList.remove("hide"); + headerSearchButton.classList.remove('hide'); } if (!layoutManager.tv) { - headerCastButton.classList.remove("hide"); + headerCastButton.classList.remove('hide'); } } else { - headerHomeButton.classList.add("hide"); - headerCastButton.classList.add("hide"); + headerHomeButton.classList.add('hide'); + headerCastButton.classList.add('hide'); if (headerSearchButton) { - headerSearchButton.classList.add("hide"); + headerSearchButton.classList.add('hide'); } } @@ -98,24 +98,24 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " function updateHeaderUserButton(src) { if (src) { - headerUserButton.classList.add("headerUserButtonRound"); + headerUserButton.classList.add('headerUserButtonRound'); headerUserButton.innerHTML = '
"; } else { - headerUserButton.classList.remove("headerUserButtonRound"); + headerUserButton.classList.remove('headerUserButtonRound'); headerUserButton.innerHTML = ''; } } function showSearch() { - inputManager.trigger("search"); + inputManager.trigger('search'); } function onHeaderUserButtonClick(e) { - Dashboard.navigate("mypreferencesmenu.html"); + Dashboard.navigate('mypreferencesmenu.html'); } function onHeaderHomeButtonClick() { - Dashboard.navigate("home.html"); + Dashboard.navigate('home.html'); } function showAudioPlayer() { @@ -123,30 +123,30 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } function bindMenuEvents() { - mainDrawerButton = document.querySelector(".mainDrawerButton"); + mainDrawerButton = document.querySelector('.mainDrawerButton'); if (mainDrawerButton) { - mainDrawerButton.addEventListener("click", toggleMainDrawer); + mainDrawerButton.addEventListener('click', toggleMainDrawer); } - var headerBackButton = skinHeader.querySelector(".headerBackButton"); + var headerBackButton = skinHeader.querySelector('.headerBackButton'); if (headerBackButton) { - headerBackButton.addEventListener("click", onBackClick); + headerBackButton.addEventListener('click', onBackClick); } if (headerSearchButton) { - headerSearchButton.addEventListener("click", showSearch); + headerSearchButton.addEventListener('click', showSearch); } - headerUserButton.addEventListener("click", onHeaderUserButtonClick); - headerHomeButton.addEventListener("click", onHeaderHomeButtonClick); + headerUserButton.addEventListener('click', onHeaderUserButtonClick); + headerHomeButton.addEventListener('click', onHeaderHomeButtonClick); if (!layoutManager.tv) { - headerCastButton.addEventListener("click", onCastButtonClicked); + headerCastButton.addEventListener('click', onCastButtonClicked); } - headerAudioPlayerButton.addEventListener("click", showAudioPlayer); + headerAudioPlayerButton.addEventListener('click', showAudioPlayer); if (layoutManager.mobile) { initHeadRoom(skinHeader); @@ -157,22 +157,22 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " function onPlaybackStart(e) { if (playbackManager.isPlayingAudio() && layoutManager.tv) { - headerAudioPlayerButton.classList.remove("hide"); + headerAudioPlayerButton.classList.remove('hide'); } else { - headerAudioPlayerButton.classList.add("hide"); + headerAudioPlayerButton.classList.add('hide'); } } function onPlaybackStop(e, stopInfo) { if (stopInfo.nextMediaType != 'Audio') { - headerAudioPlayerButton.classList.add("hide"); + headerAudioPlayerButton.classList.add('hide'); } } function onCastButtonClicked() { var btn = this; - require(["playerSelectionMenu"], function (playerSelectionMenu) { + require(['playerSelectionMenu'], function (playerSelectionMenu) { playerSelectionMenu.show(btn); }); } @@ -198,7 +198,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " function onMainDrawerOpened() { if (layoutManager.mobile) { - document.body.classList.add("bodyWithPopupOpen"); + document.body.classList.add('bodyWithPopupOpen'); } } @@ -210,63 +210,63 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " if (navDrawerInstance.isVisible) { onMainDrawerOpened(); } else { - document.body.classList.remove("bodyWithPopupOpen"); + document.body.classList.remove('bodyWithPopupOpen'); } } function refreshLibraryInfoInDrawer(user, drawer) { - var html = ""; + var html = ''; html += '
'; - html += '' + globalize.translate("ButtonHome") + ""; + html += '' + globalize.translate('ButtonHome') + ''; // libraries are added here html += '
'; - html += "
"; + html += ''; if (user.localUser && user.localUser.Policy.IsAdministrator) { html += '
'; html += '

'; - html += globalize.translate("HeaderAdmin"); - html += "

"; - html += '' + globalize.translate("TabDashboard") + ""; - html += '' + globalize.translate("Metadata") + ""; - html += "
"; + html += globalize.translate('HeaderAdmin'); + html += ''; + html += '' + globalize.translate('TabDashboard') + ''; + html += '' + globalize.translate('Metadata') + ''; + html += ''; } if (user.localUser) { html += '
'; html += '

'; - html += globalize.translate("HeaderUser"); - html += "

"; + html += globalize.translate('HeaderUser'); + html += ''; - if (appHost.supports("multiserver")) { - html += '' + globalize.translate("ButtonSelectServer") + ""; + if (appHost.supports('multiserver')) { + html += '' + globalize.translate('ButtonSelectServer') + ''; } - html += '' + globalize.translate("ButtonSettings") + ""; - html += '' + globalize.translate("ButtonSignOut") + ""; - html += "
"; + html += '' + globalize.translate('ButtonSettings') + ''; + html += '' + globalize.translate('ButtonSignOut') + ''; + html += ''; } // add buttons to navigation drawer navDrawerScrollContainer.innerHTML = html; - var btnSettings = navDrawerScrollContainer.querySelector(".btnSettings"); + var btnSettings = navDrawerScrollContainer.querySelector('.btnSettings'); if (btnSettings) { - btnSettings.addEventListener("click", onSettingsClick); + btnSettings.addEventListener('click', onSettingsClick); } - var btnLogout = navDrawerScrollContainer.querySelector(".btnLogout"); + var btnLogout = navDrawerScrollContainer.querySelector('.btnLogout'); if (btnLogout) { - btnLogout.addEventListener("click", onLogoutClick); + btnLogout.addEventListener('click', onLogoutClick); } } function refreshDashboardInfoInDrawer(apiClient) { - currentDrawerType = "admin"; + currentDrawerType = 'admin'; loadNavDrawer(); - if (navDrawerScrollContainer.querySelector(".adminDrawerLogo")) { + if (navDrawerScrollContainer.querySelector('.adminDrawerLogo')) { updateDashboardMenuSelectedItem(); } else { createDashboardMenu(apiClient); @@ -278,145 +278,145 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } function updateDashboardMenuSelectedItem() { - var links = navDrawerScrollContainer.querySelectorAll(".navMenuOption"); + var links = navDrawerScrollContainer.querySelectorAll('.navMenuOption'); var currentViewId = viewManager.currentView().id; for (var i = 0, length = links.length; i < length; i++) { var link = links[i]; var selected = false; - var pageIds = link.getAttribute("data-pageids"); + var pageIds = link.getAttribute('data-pageids'); if (pageIds) { - pageIds = pageIds.split("|"); + pageIds = pageIds.split('|'); selected = -1 != pageIds.indexOf(currentViewId); } - var pageUrls = link.getAttribute("data-pageurls"); + var pageUrls = link.getAttribute('data-pageurls'); if (pageUrls) { - pageUrls = pageUrls.split("|"); + pageUrls = pageUrls.split('|'); selected = pageUrls.filter(isUrlInCurrentView).length > 0; } if (selected) { - link.classList.add("navMenuOption-selected"); - var title = ""; - link = link.querySelector(".navMenuOptionText") || link; + link.classList.add('navMenuOption-selected'); + var title = ''; + link = link.querySelector('.navMenuOptionText') || link; title += (link.innerText || link.textContent).trim(); LibraryMenu.setTitle(title); } else { - link.classList.remove("navMenuOption-selected"); + link.classList.remove('navMenuOption-selected'); } } } function createToolsMenuList(pluginItems) { var links = [{ - name: globalize.translate("TabServer") + name: globalize.translate('TabServer') }, { - name: globalize.translate("TabDashboard"), - href: "dashboard.html", - pageIds: ["dashboardPage"], - icon: "dashboard" + name: globalize.translate('TabDashboard'), + href: 'dashboard.html', + pageIds: ['dashboardPage'], + icon: 'dashboard' }, { - name: globalize.translate("General"), - href: "dashboardgeneral.html", - pageIds: ["dashboardGeneralPage"], - icon: "settings" + name: globalize.translate('General'), + href: 'dashboardgeneral.html', + pageIds: ['dashboardGeneralPage'], + icon: 'settings' }, { - name: globalize.translate("TabUsers"), - href: "userprofiles.html", - pageIds: ["userProfilesPage", "newUserPage", "editUserPage", "userLibraryAccessPage", "userParentalControlPage", "userPasswordPage"], - icon: "people" + name: globalize.translate('TabUsers'), + href: 'userprofiles.html', + pageIds: ['userProfilesPage', 'newUserPage', 'editUserPage', 'userLibraryAccessPage', 'userParentalControlPage', 'userPasswordPage'], + icon: 'people' }, { - name: globalize.translate("HeaderLibraries"), - href: "library.html", - pageIds: ["mediaLibraryPage", "librarySettingsPage", "libraryDisplayPage", "metadataImagesConfigurationPage", "metadataNfoPage"], - icon: "folder" + name: globalize.translate('HeaderLibraries'), + href: 'library.html', + pageIds: ['mediaLibraryPage', 'librarySettingsPage', 'libraryDisplayPage', 'metadataImagesConfigurationPage', 'metadataNfoPage'], + icon: 'folder' }, { - name: globalize.translate("TabPlayback"), - icon: "play_arrow", - href: "encodingsettings.html", - pageIds: ["encodingSettingsPage", "playbackConfigurationPage", "streamingSettingsPage"] + name: globalize.translate('TabPlayback'), + icon: 'play_arrow', + href: 'encodingsettings.html', + pageIds: ['encodingSettingsPage', 'playbackConfigurationPage', 'streamingSettingsPage'] }]; - addPluginPagesToMainMenu(links, pluginItems, "server"); + addPluginPagesToMainMenu(links, pluginItems, 'server'); links.push({ divider: true, - name: globalize.translate("TabDevices") + name: globalize.translate('TabDevices') }); links.push({ - name: globalize.translate("TabDevices"), - href: "devices.html", - pageIds: ["devicesPage", "devicePage"], - icon: "devices" + name: globalize.translate('TabDevices'), + href: 'devices.html', + pageIds: ['devicesPage', 'devicePage'], + icon: 'devices' }); links.push({ - name: globalize.translate("HeaderActivity"), - href: "serveractivity.html", - pageIds: ["serverActivityPage"], - icon: "assessment" + name: globalize.translate('HeaderActivity'), + href: 'serveractivity.html', + pageIds: ['serverActivityPage'], + icon: 'assessment' }); links.push({ - name: globalize.translate("DLNA"), - href: "dlnasettings.html", - pageIds: ["dlnaSettingsPage", "dlnaProfilesPage", "dlnaProfilePage"], - icon: "input" + name: globalize.translate('DLNA'), + href: 'dlnasettings.html', + pageIds: ['dlnaSettingsPage', 'dlnaProfilesPage', 'dlnaProfilePage'], + icon: 'input' }); links.push({ divider: true, - name: globalize.translate("TabLiveTV") + name: globalize.translate('TabLiveTV') }); links.push({ - name: globalize.translate("TabLiveTV"), - href: "livetvstatus.html", - pageIds: ["liveTvStatusPage", "liveTvTunerPage"], - icon: "live_tv" + name: globalize.translate('TabLiveTV'), + href: 'livetvstatus.html', + pageIds: ['liveTvStatusPage', 'liveTvTunerPage'], + icon: 'live_tv' }); links.push({ - name: globalize.translate("DVR"), - href: "livetvsettings.html", - pageIds: ["liveTvSettingsPage"], - icon: "dvr" + name: globalize.translate('DVR'), + href: 'livetvsettings.html', + pageIds: ['liveTvSettingsPage'], + icon: 'dvr' }); links.push({ divider: true, - name: globalize.translate("TabAdvanced") + name: globalize.translate('TabAdvanced') }); links.push({ - name: globalize.translate("TabNetworking"), - icon: "cloud", - href: "networking.html", - pageIds: ["networkingPage"] + name: globalize.translate('TabNetworking'), + icon: 'cloud', + href: 'networking.html', + pageIds: ['networkingPage'] }); links.push({ - name: globalize.translate("HeaderApiKeys"), - icon: "vpn_key", - href: "apikeys.html", - pageIds: ["apiKeysPage"] + name: globalize.translate('HeaderApiKeys'), + icon: 'vpn_key', + href: 'apikeys.html', + pageIds: ['apiKeysPage'] }); links.push({ - name: globalize.translate("TabLogs"), - href: "log.html", - pageIds: ["logPage"], - icon: "bug_report" + name: globalize.translate('TabLogs'), + href: 'log.html', + pageIds: ['logPage'], + icon: 'bug_report' }); links.push({ - name: globalize.translate("TabNotifications"), - icon: "notifications", - href: "notificationsettings.html", - pageIds: ["notificationSettingsPage", "notificationSettingPage"] + name: globalize.translate('TabNotifications'), + icon: 'notifications', + href: 'notificationsettings.html', + pageIds: ['notificationSettingsPage', 'notificationSettingPage'] }); links.push({ - name: globalize.translate("TabPlugins"), - icon: "shopping_cart", - href: "installedplugins.html", - pageIds: ["pluginsPage", "pluginCatalogPage"] + name: globalize.translate('TabPlugins'), + icon: 'shopping_cart', + href: 'installedplugins.html', + pageIds: ['pluginsPage', 'pluginCatalogPage'] }); links.push({ - name: globalize.translate("TabScheduledTasks"), - href: "scheduledtasks.html", - pageIds: ["scheduledTasksPage", "scheduledTaskPage"], - icon: "schedule" + name: globalize.translate('TabScheduledTasks'), + href: 'scheduledtasks.html', + pageIds: ['scheduledTasksPage', 'scheduledTaskPage'], + icon: 'schedule' }); addPluginPagesToMainMenu(links, pluginItems); return links; @@ -429,7 +429,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " if (pluginItem.EnableInMainMenu && pluginItem.MenuSection === section) { links.push({ name: pluginItem.DisplayName, - icon: pluginItem.MenuIcon || "folder", + icon: pluginItem.MenuIcon || 'folder', href: Dashboard.getConfigurationPageUrl(pluginItem.Name), pageUrls: [Dashboard.getConfigurationPageUrl(pluginItem.Name)] }); @@ -438,18 +438,18 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } function getToolsMenuLinks(apiClient) { - return apiClient.getJSON(apiClient.getUrl("web/configurationpages") + "?pageType=PluginConfiguration&EnableInMainMenu=true").then(createToolsMenuList, function (err) { + return apiClient.getJSON(apiClient.getUrl('web/configurationpages') + '?pageType=PluginConfiguration&EnableInMainMenu=true').then(createToolsMenuList, function (err) { return createToolsMenuList([]); }); } function getToolsLinkHtml(item) { - var menuHtml = ""; - var pageIds = item.pageIds ? item.pageIds.join("|") : ""; - pageIds = pageIds ? ' data-pageids="' + pageIds + '"' : ""; - var pageUrls = item.pageUrls ? item.pageUrls.join("|") : ""; - pageUrls = pageUrls ? ' data-pageurls="' + pageUrls + '"' : ""; - menuHtml += '"; + var menuHtml = ''; + var pageIds = item.pageIds ? item.pageIds.join('|') : ''; + pageIds = pageIds ? ' data-pageids="' + pageIds + '"' : ''; + var pageUrls = item.pageUrls ? item.pageUrls.join('|') : ''; + pageUrls = pageUrls ? ' data-pageurls="' + pageUrls + '"' : ''; + menuHtml += ''; if (item.icon) { menuHtml += ''; @@ -457,14 +457,14 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " menuHtml += ''; menuHtml += item.name; - menuHtml += ""; - return menuHtml + ""; + menuHtml += ''; + return menuHtml + ''; } function getToolsMenuHtml(apiClient) { return getToolsMenuLinks(apiClient).then(function (items) { var item; - var menuHtml = ""; + var menuHtml = ''; menuHtml += '
'; for (var i = 0; i < items.length; i++) { @@ -475,20 +475,20 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } else if (item.name) { menuHtml += '

'; menuHtml += item.name; - menuHtml += "

"; + menuHtml += ''; } } - return menuHtml + "
"; + return menuHtml + ''; }); } function createDashboardMenu(apiClient) { return getToolsMenuHtml(apiClient).then(function (toolsMenuHtml) { - var html = ""; + var html = ''; html += '"; + html += ''; html += toolsMenuHtml; navDrawerScrollContainer.innerHTML = html; updateDashboardMenuSelectedItem(); @@ -496,7 +496,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } function onSidebarLinkClick() { - var section = this.getElementsByClassName("sectionName")[0]; + var section = this.getElementsByClassName('sectionName')[0]; var text = section ? section.innerHTML : this.innerHTML; LibraryMenu.setTitle(text); } @@ -510,14 +510,14 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var view = items[i]; list.push(view); - if ("livetv" == view.CollectionType) { + if ('livetv' == view.CollectionType) { view.ImageTags = {}; - view.icon = "live_tv"; + view.icon = 'live_tv'; var guideView = Object.assign({}, view); - guideView.Name = globalize.translate("ButtonGuide"); + guideView.Name = globalize.translate('ButtonGuide'); guideView.ImageTags = {}; - guideView.icon = "dvr"; - guideView.url = "livetv.html?tab=1"; + guideView.icon = 'dvr'; + guideView.url = 'livetv.html?tab=1'; list.push(guideView); } } @@ -531,9 +531,9 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " if (elem) { if (show) { - elem.classList.remove("hide"); + elem.classList.remove('hide'); } else { - elem.classList.add("hide"); + elem.classList.add('hide'); } } } @@ -542,35 +542,35 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " // FIXME: Potential equivalent might be // showBySelector(".lnkSyncToOtherDevices", !!user.Policy.EnableContentDownloading); if (!user) { - showBySelector(".libraryMenuDownloads", false); - showBySelector(".lnkSyncToOtherDevices", false); - return void showBySelector(".userMenuOptions", false); + showBySelector('.libraryMenuDownloads', false); + showBySelector('.lnkSyncToOtherDevices', false); + return void showBySelector('.userMenuOptions', false); } // FIXME: Potentially the same as above if (user.Policy.EnableContentDownloading) { - showBySelector(".lnkSyncToOtherDevices", true); + showBySelector('.lnkSyncToOtherDevices', true); } else { - showBySelector(".lnkSyncToOtherDevices", false); + showBySelector('.lnkSyncToOtherDevices', false); } - if (user.Policy.EnableContentDownloading && appHost.supports("sync")) { - showBySelector(".libraryMenuDownloads", true); + if (user.Policy.EnableContentDownloading && appHost.supports('sync')) { + showBySelector('.libraryMenuDownloads', true); } else { - showBySelector(".libraryMenuDownloads", false); + showBySelector('.libraryMenuDownloads', false); } var userId = Dashboard.getCurrentUserId(); var apiClient = getCurrentApiClient(); - var libraryMenuOptions = document.querySelector(".libraryMenuOptions"); + var libraryMenuOptions = document.querySelector('.libraryMenuOptions'); if (libraryMenuOptions) { getUserViews(apiClient, userId).then(function (result) { var items = result; - var html = ""; + var html = ''; html += '

'; - html += globalize.translate("HeaderMedia"); - html += "

"; + html += globalize.translate('HeaderMedia'); + html += ''; html += items.map(function (i) { var icon = i.icon || imageHelper.getLibraryIcon(i.CollectionType); var itemId = i.Id; @@ -579,32 +579,32 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " i.onclick; } - return '' + i.Name + ""; - }).join(""); + return '' + i.Name + ''; + }).join(''); libraryMenuOptions.innerHTML = html; var elem = libraryMenuOptions; - var sidebarLinks = elem.querySelectorAll(".navMenuOption"); + var sidebarLinks = elem.querySelectorAll('.navMenuOption'); for (var i = 0, length = sidebarLinks.length; i < length; i++) { - sidebarLinks[i].removeEventListener("click", onSidebarLinkClick); - sidebarLinks[i].addEventListener("click", onSidebarLinkClick); + sidebarLinks[i].removeEventListener('click', onSidebarLinkClick); + sidebarLinks[i].addEventListener('click', onSidebarLinkClick); } }); } } function getTopParentId() { - return getParameterByName("topParentId") || null; + return getParameterByName('topParentId') || null; } function onMainDrawerClick(e) { - if (dom.parentWithTag(e.target, "A")) { + if (dom.parentWithTag(e.target, 'A')) { setTimeout(closeMainDrawer, 30); } } function onSettingsClick() { - Dashboard.navigate("mypreferencesmenu.html"); + Dashboard.navigate('mypreferencesmenu.html'); } function onLogoutClick() { @@ -614,49 +614,49 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " function updateCastIcon() { var context = document; var info = playbackManager.getPlayerInfo(); - var icon = headerCastButton.querySelector(".material-icons"); + var icon = headerCastButton.querySelector('.material-icons'); - icon.classList.remove("cast_connected", "cast"); + icon.classList.remove('cast_connected', 'cast'); if (info && !info.isLocalPlayer) { - icon.classList.add("cast_connected"); - headerCastButton.classList.add("castButton-active"); - context.querySelector(".headerSelectedPlayer").innerHTML = info.deviceName || info.name; + icon.classList.add('cast_connected'); + headerCastButton.classList.add('castButton-active'); + context.querySelector('.headerSelectedPlayer').innerHTML = info.deviceName || info.name; } else { - icon.classList.add("cast"); - headerCastButton.classList.remove("castButton-active"); - context.querySelector(".headerSelectedPlayer").innerHTML = ""; + icon.classList.add('cast'); + headerCastButton.classList.remove('castButton-active'); + context.querySelector('.headerSelectedPlayer').innerHTML = ''; } } function updateLibraryNavLinks(page) { var i; var length; - var isLiveTvPage = page.classList.contains("liveTvPage"); - var isChannelsPage = page.classList.contains("channelsPage"); - var isEditorPage = page.classList.contains("metadataEditorPage"); - var isMySyncPage = page.classList.contains("mySyncPage"); - var id = isLiveTvPage || isChannelsPage || isEditorPage || isMySyncPage || page.classList.contains("allLibraryPage") ? "" : getTopParentId() || ""; - var elems = document.getElementsByClassName("lnkMediaFolder"); + var isLiveTvPage = page.classList.contains('liveTvPage'); + var isChannelsPage = page.classList.contains('channelsPage'); + var isEditorPage = page.classList.contains('metadataEditorPage'); + var isMySyncPage = page.classList.contains('mySyncPage'); + var id = isLiveTvPage || isChannelsPage || isEditorPage || isMySyncPage || page.classList.contains('allLibraryPage') ? '' : getTopParentId() || ''; + var elems = document.getElementsByClassName('lnkMediaFolder'); for (var i = 0, length = elems.length; i < length; i++) { var lnkMediaFolder = elems[i]; - var itemId = lnkMediaFolder.getAttribute("data-itemid"); + var itemId = lnkMediaFolder.getAttribute('data-itemid'); - if (isChannelsPage && "channels" === itemId) { - lnkMediaFolder.classList.add("navMenuOption-selected"); - } else if (isLiveTvPage && "livetv" === itemId) { - lnkMediaFolder.classList.add("navMenuOption-selected"); - } else if (isEditorPage && "editor" === itemId) { - lnkMediaFolder.classList.add("navMenuOption-selected"); - } else if (isMySyncPage && "manageoffline" === itemId && -1 != window.location.href.toString().indexOf("mode=download")) { - lnkMediaFolder.classList.add("navMenuOption-selected"); - } else if (isMySyncPage && "syncotherdevices" === itemId && -1 == window.location.href.toString().indexOf("mode=download")) { - lnkMediaFolder.classList.add("navMenuOption-selected"); + if (isChannelsPage && 'channels' === itemId) { + lnkMediaFolder.classList.add('navMenuOption-selected'); + } else if (isLiveTvPage && 'livetv' === itemId) { + lnkMediaFolder.classList.add('navMenuOption-selected'); + } else if (isEditorPage && 'editor' === itemId) { + lnkMediaFolder.classList.add('navMenuOption-selected'); + } else if (isMySyncPage && 'manageoffline' === itemId && -1 != window.location.href.toString().indexOf('mode=download')) { + lnkMediaFolder.classList.add('navMenuOption-selected'); + } else if (isMySyncPage && 'syncotherdevices' === itemId && -1 == window.location.href.toString().indexOf('mode=download')) { + lnkMediaFolder.classList.add('navMenuOption-selected'); } else if (id && itemId == id) { - lnkMediaFolder.classList.add("navMenuOption-selected"); + lnkMediaFolder.classList.add('navMenuOption-selected'); } else { - lnkMediaFolder.classList.remove("navMenuOption-selected"); + lnkMediaFolder.classList.remove('navMenuOption-selected'); } } } @@ -668,34 +668,34 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " currentPageType = newPageType; if (isDashboardPage && !layoutManager.mobile) { - skinHeader.classList.add("headroomDisabled"); + skinHeader.classList.add('headroomDisabled'); } else { - skinHeader.classList.remove("headroomDisabled"); + skinHeader.classList.remove('headroomDisabled'); } var bodyClassList = document.body.classList; if (isLibraryPage) { - bodyClassList.add("libraryDocument"); - bodyClassList.remove("dashboardDocument"); - bodyClassList.remove("hideMainDrawer"); + bodyClassList.add('libraryDocument'); + bodyClassList.remove('dashboardDocument'); + bodyClassList.remove('hideMainDrawer'); if (navDrawerInstance) { navDrawerInstance.setEdgeSwipeEnabled(true); } } else { if (isDashboardPage) { - bodyClassList.remove("libraryDocument"); - bodyClassList.add("dashboardDocument"); - bodyClassList.remove("hideMainDrawer"); + bodyClassList.remove('libraryDocument'); + bodyClassList.add('dashboardDocument'); + bodyClassList.remove('hideMainDrawer'); if (navDrawerInstance) { navDrawerInstance.setEdgeSwipeEnabled(true); } } else { - bodyClassList.remove("libraryDocument"); - bodyClassList.remove("dashboardDocument"); - bodyClassList.add("hideMainDrawer"); + bodyClassList.remove('libraryDocument'); + bodyClassList.remove('dashboardDocument'); + bodyClassList.add('hideMainDrawer'); if (navDrawerInstance) { navDrawerInstance.setEdgeSwipeEnabled(false); @@ -710,31 +710,31 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } function updateTitle(page) { - var title = page.getAttribute("data-title"); + var title = page.getAttribute('data-title'); if (title) { LibraryMenu.setTitle(title); - } else if (page.classList.contains("standalonePage")) { + } else if (page.classList.contains('standalonePage')) { LibraryMenu.setDefaultTitle(); } } function updateBackButton(page) { if (!headerBackButton) { - headerBackButton = document.querySelector(".headerBackButton"); + headerBackButton = document.querySelector('.headerBackButton'); } if (headerBackButton) { - if ("false" !== page.getAttribute("data-backbutton") && appRouter.canGoBack()) { - headerBackButton.classList.remove("hide"); + if ('false' !== page.getAttribute('data-backbutton') && appRouter.canGoBack()) { + headerBackButton.classList.remove('hide'); } else { - headerBackButton.classList.add("hide"); + headerBackButton.classList.add('hide'); } } } function initHeadRoom(elem) { - require(["headroom"], function (Headroom) { + require(['headroom'], function (Headroom) { var headroom = new Headroom(elem); headroom.init(); }); @@ -742,7 +742,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " function refreshLibraryDrawer(user) { loadNavDrawer(); - currentDrawerType = "library"; + currentDrawerType = 'library'; if (user) { Promise.resolve(user); @@ -770,15 +770,15 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " return Promise.resolve(navDrawerInstance); } - navDrawerElement = document.querySelector(".mainDrawer"); - navDrawerScrollContainer = navDrawerElement.querySelector(".scrollContainer"); - navDrawerScrollContainer.addEventListener("click", onMainDrawerClick); + navDrawerElement = document.querySelector('.mainDrawer'); + navDrawerScrollContainer = navDrawerElement.querySelector('.scrollContainer'); + navDrawerScrollContainer.addEventListener('click', onMainDrawerClick); return new Promise(function (resolve, reject) { - require(["navdrawer"], function (navdrawer) { + require(['navdrawer'], function (navdrawer) { navDrawerInstance = new navdrawer(getNavDrawerOptions()); if (!layoutManager.tv) { - navDrawerElement.classList.remove("hide"); + navDrawerElement.classList.remove('hide'); } resolve(navDrawerInstance); @@ -800,7 +800,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var headerSearchButton; var headerAudioPlayerButton; var enableLibraryNavDrawer = layoutManager.desktop; - var skinHeader = document.querySelector(".skinHeader"); + var skinHeader = document.querySelector('.skinHeader'); var requiresUserRefresh = true; var lastOpenTime = new Date().getTime(); window.LibraryMenu = { @@ -809,7 +809,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " toggleMainDrawer(); }, setTabs: function (type, selectedIndex, builder) { - require(["mainTabsManager"], function (mainTabsManager) { + require(['mainTabsManager'], function (mainTabsManager) { if (type) { mainTabsManager.setTabs(viewManager.currentView(), selectedIndex, builder, function () { return []; @@ -821,79 +821,79 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " }, setDefaultTitle: function () { if (!pageTitleElement) { - pageTitleElement = document.querySelector(".pageTitle"); + pageTitleElement = document.querySelector('.pageTitle'); } if (pageTitleElement) { - pageTitleElement.classList.add("pageTitleWithLogo"); - pageTitleElement.classList.add("pageTitleWithDefaultLogo"); + pageTitleElement.classList.add('pageTitleWithLogo'); + pageTitleElement.classList.add('pageTitleWithDefaultLogo'); pageTitleElement.style.backgroundImage = null; - pageTitleElement.innerHTML = ""; + pageTitleElement.innerHTML = ''; } - document.title = "Jellyfin"; + document.title = 'Jellyfin'; }, setTitle: function (title) { if (null == title) { return void LibraryMenu.setDefaultTitle(); } - if ("-" === title) { - title = ""; + if ('-' === title) { + title = ''; } var html = title; if (!pageTitleElement) { - pageTitleElement = document.querySelector(".pageTitle"); + pageTitleElement = document.querySelector('.pageTitle'); } if (pageTitleElement) { - pageTitleElement.classList.remove("pageTitleWithLogo"); - pageTitleElement.classList.remove("pageTitleWithDefaultLogo"); + pageTitleElement.classList.remove('pageTitleWithLogo'); + pageTitleElement.classList.remove('pageTitleWithDefaultLogo'); pageTitleElement.style.backgroundImage = null; - pageTitleElement.innerHTML = html || ""; + pageTitleElement.innerHTML = html || ''; } - document.title = title || "Jellyfin"; + document.title = title || 'Jellyfin'; }, setTransparentMenu: function (transparent) { if (transparent) { - skinHeader.classList.add("semiTransparent"); + skinHeader.classList.add('semiTransparent'); } else { - skinHeader.classList.remove("semiTransparent"); + skinHeader.classList.remove('semiTransparent'); } } }; var currentPageType; - pageClassOn("pagebeforeshow", "page", function (e) { - if (!this.classList.contains("withTabs")) { + pageClassOn('pagebeforeshow', 'page', function (e) { + if (!this.classList.contains('withTabs')) { LibraryMenu.setTabs(null); } }); - pageClassOn("pageshow", "page", function (e) { + pageClassOn('pageshow', 'page', function (e) { var page = this; - var isDashboardPage = page.classList.contains("type-interior"); - var isHomePage = page.classList.contains("homePage"); - var isLibraryPage = !isDashboardPage && page.classList.contains("libraryPage"); + var isDashboardPage = page.classList.contains('type-interior'); + var isHomePage = page.classList.contains('homePage'); + var isLibraryPage = !isDashboardPage && page.classList.contains('libraryPage'); var apiClient = getCurrentApiClient(); if (isDashboardPage) { if (mainDrawerButton) { - mainDrawerButton.classList.remove("hide"); + mainDrawerButton.classList.remove('hide'); } refreshDashboardInfoInDrawer(apiClient); } else { if (mainDrawerButton) { if (enableLibraryNavDrawer || isHomePage) { - mainDrawerButton.classList.remove("hide"); + mainDrawerButton.classList.remove('hide'); } else { - mainDrawerButton.classList.add("hide"); + mainDrawerButton.classList.add('hide'); } } - if ("library" !== currentDrawerType) { + if ('library' !== currentDrawerType) { refreshLibraryDrawer(); } } @@ -911,7 +911,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " renderHeader(); - events.on(connectionManager, "localusersignedin", function (e, user) { + events.on(connectionManager, 'localusersignedin', function (e, user) { currentDrawerType = null; currentUser = { localUser: user @@ -922,11 +922,11 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " updateUserInHeader(user); }); }); - events.on(connectionManager, "localusersignedout", function () { + events.on(connectionManager, 'localusersignedout', function () { currentUser = {}; updateUserInHeader(); }); - events.on(playbackManager, "playerchange", updateCastIcon); + events.on(playbackManager, 'playerchange', updateCastIcon); loadNavDrawer(); return LibraryMenu; }); diff --git a/src/scripts/livetvcomponents.js b/src/scripts/livetvcomponents.js index 61ffc66fb4..fd4a46c0f1 100644 --- a/src/scripts/livetvcomponents.js +++ b/src/scripts/livetvcomponents.js @@ -1,12 +1,12 @@ -define(["layoutManager", "datetime", "cardBuilder", "apphost"], function (layoutManager, datetime, cardBuilder, appHost) { - "use strict"; +define(['layoutManager', 'datetime', 'cardBuilder', 'apphost'], function (layoutManager, datetime, cardBuilder, appHost) { + 'use strict'; function enableScrollX() { return !layoutManager.desktop; } function getBackdropShape() { - return enableScrollX() ? "overflowBackdrop" : "backdrop"; + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; } function getTimersHtml(timers, options) { @@ -14,27 +14,27 @@ define(["layoutManager", "datetime", "cardBuilder", "apphost"], function (layout var i; var length; var items = timers.map(function (t) { - t.Type = "Timer"; + t.Type = 'Timer'; return t; }); var groups = []; - var currentGroupName = ""; + var currentGroupName = ''; var currentGroup = []; for (i = 0, length = items.length; i < length; i++) { var item = items[i]; - var dateText = ""; + var dateText = ''; if (options.indexByDate !== false && item.StartDate) { try { var premiereDate = datetime.parseISO8601Date(item.StartDate, true); dateText = datetime.toLocaleDateString(premiereDate, { - weekday: "long", - month: "short", - day: "numeric" + weekday: 'long', + month: 'short', + day: 'numeric' }); } catch (err) { - console.error("error parsing premiereDate:" + item.StartDate + "; error: " + err); + console.error('error parsing premiereDate:' + item.StartDate + '; error: ' + err); } } @@ -60,23 +60,23 @@ define(["layoutManager", "datetime", "cardBuilder", "apphost"], function (layout }); } - var html = ""; + var html = ''; for (i = 0, length = groups.length; i < length; i++) { var group = groups[i]; - var supportsImageAnalysis = appHost.supports("imageanalysis"); + var supportsImageAnalysis = appHost.supports('imageanalysis'); var cardLayout = appHost.preferVisualCards || supportsImageAnalysis; cardLayout = true; if (group.name) { html += '
'; - html += '

' + group.name + "

"; + html += '

' + group.name + '

'; } if (enableScrollX()) { - var scrollXClass = "scrollX hiddenScrollX"; + var scrollXClass = 'scrollX hiddenScrollX'; if (layoutManager.tv) { - scrollXClass += " smoothScrollX"; + scrollXClass += ' smoothScrollX'; } html += '
'; @@ -86,26 +86,26 @@ define(["layoutManager", "datetime", "cardBuilder", "apphost"], function (layout html += cardBuilder.getCardsHtml({ items: group.items, - shape: cardLayout ? getBackdropShape() : enableScrollX() ? "autoOverflow" : "autoVertical", + shape: cardLayout ? getBackdropShape() : enableScrollX() ? 'autoOverflow' : 'autoVertical', showParentTitleOrTitle: true, showAirTime: true, showAirEndTime: true, showChannelName: !cardLayout, cardLayout: cardLayout, centerText: !cardLayout, - action: "edit", - cardFooterAside: "none", - preferThumb: !!cardLayout || "auto", - defaultShape: cardLayout ? null : "portrait", + action: 'edit', + cardFooterAside: 'none', + preferThumb: !!cardLayout || 'auto', + defaultShape: cardLayout ? null : 'portrait', coverImage: true, allowBottomPadding: false, overlayText: false, showChannelLogo: cardLayout }); - html += "
"; + html += '
'; if (group.name) { - html += ""; + html += ''; } } diff --git a/src/scripts/mouseManager.js b/src/scripts/mouseManager.js index 78057c0bfe..e6117fa851 100644 --- a/src/scripts/mouseManager.js +++ b/src/scripts/mouseManager.js @@ -41,7 +41,7 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd var eventY = e.screenY; // if coord don't exist how could it move - if (typeof eventX === "undefined" && typeof eventY === "undefined") { + if (typeof eventX === 'undefined' && typeof eventY === 'undefined') { return; } diff --git a/src/scripts/playlistedit.js b/src/scripts/playlistedit.js index bca9f02734..636a7ef056 100644 --- a/src/scripts/playlistedit.js +++ b/src/scripts/playlistedit.js @@ -1,11 +1,11 @@ -define(["listView"], function (listView) { - "use strict"; +define(['listView'], function (listView) { + 'use strict'; function getFetchPlaylistItemsFn(itemId) { return function () { var query = { - Fields: "PrimaryImageAspectRatio,UserData", - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + Fields: 'PrimaryImageAspectRatio,UserData', + EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', UserId: ApiClient.getCurrentUserId() }; return ApiClient.getJSON(ApiClient.getUrl(`Playlists/${itemId}/Items`, query)); @@ -19,7 +19,7 @@ define(["listView"], function (listView) { showIndex: false, showRemoveFromPlaylist: true, playFromHere: true, - action: "playallfromhere", + action: 'playallfromhere', smallIcon: true, dragHandle: true, playlistId: itemId @@ -28,9 +28,9 @@ define(["listView"], function (listView) { } function init(page, item) { - var elem = page.querySelector("#childrenContent .itemsContainer"); - elem.classList.add("vertical-list"); - elem.classList.remove("vertical-wrap"); + var elem = page.querySelector('#childrenContent .itemsContainer'); + elem.classList.add('vertical-list'); + elem.classList.remove('vertical-wrap'); elem.enableDragReordering(true); elem.fetchData = getFetchPlaylistItemsFn(item.Id); elem.getItemsHtml = getItemsHtmlFn(item.Id); @@ -43,8 +43,8 @@ define(["listView"], function (listView) { init(page, item); } - page.querySelector("#childrenContent").classList.add("verticalSection-extrabottompadding"); - page.querySelector("#childrenContent .itemsContainer").refreshItems(); + page.querySelector('#childrenContent').classList.add('verticalSection-extrabottompadding'); + page.querySelector('#childrenContent .itemsContainer').refreshItems(); } }; }); diff --git a/src/scripts/playlists.js b/src/scripts/playlists.js index 4a76f66562..52e7ccb3bd 100644 --- a/src/scripts/playlists.js +++ b/src/scripts/playlists.js @@ -1,5 +1,5 @@ -define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", "apphost", "imageLoader", "userSettings", "emby-itemscontainer"], function (loading, listView, cardBuilder, libraryMenu, libraryBrowser, appHost, imageLoader, userSettings) { - "use strict"; +define(['loading', 'listView', 'cardBuilder', 'libraryMenu', 'libraryBrowser', 'apphost', 'imageLoader', 'userSettings', 'emby-itemscontainer'], function (loading, listView, cardBuilder, libraryMenu, libraryBrowser, appHost, imageLoader, userSettings) { + 'use strict'; return function (view, params) { function getPageData(context) { @@ -9,14 +9,14 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", " if (!pageData) { pageData = data[key] = { query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Playlist", + SortBy: 'SortName', + SortOrder: 'Ascending', + IncludeItemTypes: 'Playlist', Recursive: true, - Fields: "PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete", + Fields: 'PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || "Poster" + view: libraryBrowser.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -52,17 +52,17 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", " function onViewStyleChange() { var viewStyle = getPageData(view).view; - var itemsContainer = view.querySelector(".itemsContainer"); + var itemsContainer = view.querySelector('.itemsContainer'); - if ("List" == viewStyle) { - itemsContainer.classList.add("vertical-list"); - itemsContainer.classList.remove("vertical-wrap"); + if ('List' == viewStyle) { + itemsContainer.classList.add('vertical-list'); + itemsContainer.classList.remove('vertical-wrap'); } else { - itemsContainer.classList.remove("vertical-list"); - itemsContainer.classList.add("vertical-wrap"); + itemsContainer.classList.remove('vertical-list'); + itemsContainer.classList.add('vertical-wrap'); } - itemsContainer.innerHTML = ""; + itemsContainer.innerHTML = ''; } function reloadItems() { @@ -74,9 +74,9 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", " var result = responses[0]; responses[1]; window.scrollTo(0, 0); - var html = ""; + var html = ''; var viewStyle = getPageData(view).view; - view.querySelector(".listTopPaging").innerHTML = libraryBrowser.getQueryPagingHtml({ + view.querySelector('.listTopPaging').innerHTML = libraryBrowser.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -84,37 +84,37 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", " showLimit: false, updatePageSizeSetting: false, addLayoutButton: true, - layouts: "List,Poster,PosterCard,Thumb,ThumbCard", + layouts: 'List,Poster,PosterCard,Thumb,ThumbCard', currentLayout: viewStyle }); if (result.TotalRecordCount) { - if (viewStyle == "List") { + if (viewStyle == 'List') { html = listView.getListViewHtml({ items: result.Items, sortBy: query.SortBy }); - } else if (viewStyle == "PosterCard") { + } else if (viewStyle == 'PosterCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "square", + shape: 'square', coverImage: true, showTitle: true, cardLayout: true }); - } else if (viewStyle == "Thumb") { + } else if (viewStyle == 'Thumb') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', showTitle: true, centerText: true, preferThumb: true, overlayPlayButton: true }); - } else if (viewStyle == "ThumbCard") { + } else if (viewStyle == 'ThumbCard') { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "backdrop", + shape: 'backdrop', showTitle: true, preferThumb: true, cardLayout: true @@ -122,25 +122,25 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", " } else { html = cardBuilder.getCardsHtml({ items: result.Items, - shape: "square", + shape: 'square', showTitle: true, coverImage: true, centerText: true, overlayPlayButton: true }); } - view.querySelector(".noItemsMessage").classList.add("hide"); + view.querySelector('.noItemsMessage').classList.add('hide'); } else { - view.querySelector(".noItemsMessage").classList.remove("hide"); + view.querySelector('.noItemsMessage').classList.remove('hide'); } - var elem = view.querySelector(".itemsContainer"); + var elem = view.querySelector('.itemsContainer'); elem.innerHTML = html; imageLoader.lazyChildren(elem); - var btnNextPage = view.querySelector(".btnNextPage"); + var btnNextPage = view.querySelector('.btnNextPage'); if (btnNextPage) { - btnNextPage.addEventListener("click", function () { + btnNextPage.addEventListener('click', function () { if (userSettings.libraryPageSize() > 0) { query.StartIndex += query.Limit; } @@ -148,10 +148,10 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", " }); } - var btnPreviousPage = view.querySelector(".btnPreviousPage"); + var btnPreviousPage = view.querySelector('.btnPreviousPage'); if (btnPreviousPage) { - btnPreviousPage.addEventListener("click", function () { + btnPreviousPage.addEventListener('click', function () { if (userSettings.libraryPageSize() > 0) { query.StartIndex = Math.max(0, query.StartIndex - query.Limit); } @@ -159,10 +159,10 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", " }); } - var btnChangeLayout = view.querySelector(".btnChangeLayout"); + var btnChangeLayout = view.querySelector('.btnChangeLayout'); if (btnChangeLayout) { - btnChangeLayout.addEventListener("layoutchange", function (e) { + btnChangeLayout.addEventListener('layoutchange', function (e) { var layout = e.detail.viewStyle; getPageData(view).view = layout; libraryBrowser.saveViewSetting(getSavedQueryKey(view), layout); @@ -177,11 +177,11 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", " } var data = {}; - view.addEventListener("viewbeforeshow", function () { + view.addEventListener('viewbeforeshow', function () { reloadItems(); }); - view.querySelector(".btnNewPlaylist").addEventListener("click", function () { - require(["playlistEditor"], function (playlistEditor) { + view.querySelector('.btnNewPlaylist').addEventListener('click', function () { + require(['playlistEditor'], function (playlistEditor) { var serverId = ApiClient.serverInfo().Id; new playlistEditor().show({ items: [], diff --git a/src/scripts/routes.js b/src/scripts/routes.js index 72c67e5b71..31530705cb 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -1,433 +1,433 @@ define([ - "jQuery", - "emby-button", - "emby-input", - "scripts/livetvcomponents", - "paper-icon-button-light", - "emby-itemscontainer", - "emby-collapse", - "emby-select", - "livetvcss", - "emby-checkbox", - "emby-slider", - "listViewStyle", - "dashboardcss", - "detailtablecss"], function () { + 'jQuery', + 'emby-button', + 'emby-input', + 'scripts/livetvcomponents', + 'paper-icon-button-light', + 'emby-itemscontainer', + 'emby-collapse', + 'emby-select', + 'livetvcss', + 'emby-checkbox', + 'emby-slider', + 'listViewStyle', + 'dashboardcss', + 'detailtablecss'], function () { function defineRoute(newRoute) { var path = newRoute.path; - console.debug("defining route: " + path); - newRoute.dictionary = "core"; + console.debug('defining route: ' + path); + newRoute.dictionary = 'core'; Emby.Page.addRoute(path, newRoute); } - console.debug("defining core routes"); + console.debug('defining core routes'); defineRoute({ - path: "/addserver.html", + path: '/addserver.html', autoFocus: false, anonymous: true, startup: true, - controller: "auth/addserver" + controller: 'auth/addserver' }); defineRoute({ - path: "/selectserver.html", + path: '/selectserver.html', autoFocus: false, anonymous: true, startup: true, - controller: "auth/selectserver", - type: "selectserver" + controller: 'auth/selectserver', + type: 'selectserver' }); defineRoute({ - path: "/forgotpassword.html", + path: '/forgotpassword.html', anonymous: true, startup: true, - controller: "auth/forgotpassword" + controller: 'auth/forgotpassword' }); defineRoute({ - path: "/forgotpasswordpin.html", + path: '/forgotpasswordpin.html', autoFocus: false, anonymous: true, startup: true, - controller: "auth/forgotpasswordpin" + controller: 'auth/forgotpasswordpin' }); defineRoute({ - path: "/addplugin.html", + path: '/addplugin.html', autoFocus: false, - roles: "admin", - controller: "dashboard/plugins/add" + roles: 'admin', + controller: 'dashboard/plugins/add' }); defineRoute({ - path: "/mypreferencesmenu.html", + path: '/mypreferencesmenu.html', autoFocus: false, - transition: "fade", - controller: "user/menu" + transition: 'fade', + controller: 'user/menu' }); defineRoute({ - path: "/myprofile.html", + path: '/myprofile.html', autoFocus: false, - transition: "fade", - controller: "user/profile" + transition: 'fade', + controller: 'user/profile' }); defineRoute({ - path: "/mypreferencesdisplay.html", + path: '/mypreferencesdisplay.html', autoFocus: false, - transition: "fade", - controller: "user/display" + transition: 'fade', + controller: 'user/display' }); defineRoute({ - path: "/mypreferenceshome.html", + path: '/mypreferenceshome.html', autoFocus: false, - transition: "fade", - controller: "user/home" + transition: 'fade', + controller: 'user/home' }); defineRoute({ - path: "/mypreferencesplayback.html", + path: '/mypreferencesplayback.html', autoFocus: false, - transition: "fade", - controller: "user/playback" + transition: 'fade', + controller: 'user/playback' }); defineRoute({ - path: "/mypreferencessubtitles.html", + path: '/mypreferencessubtitles.html', autoFocus: false, - transition: "fade", - controller: "user/subtitles" + transition: 'fade', + controller: 'user/subtitles' }); defineRoute({ - path: "/dashboard.html", + path: '/dashboard.html', autoFocus: false, - roles: "admin", - controller: "dashboard/dashboard" + roles: 'admin', + controller: 'dashboard/dashboard' }); defineRoute({ - path: "/dashboardgeneral.html", - controller: "dashboard/general", + path: '/dashboardgeneral.html', + controller: 'dashboard/general', autoFocus: false, - roles: "admin" + roles: 'admin' }); defineRoute({ - path: "/networking.html", + path: '/networking.html', autoFocus: false, - roles: "admin", - controller: "dashboard/networking" + roles: 'admin', + controller: 'dashboard/networking' }); defineRoute({ - path: "/devices.html", + path: '/devices.html', autoFocus: false, - roles: "admin", - controller: "dashboard/devices/devices" + roles: 'admin', + controller: 'dashboard/devices/devices' }); defineRoute({ - path: "/device.html", + path: '/device.html', autoFocus: false, - roles: "admin", - controller: "dashboard/devices/device" + roles: 'admin', + controller: 'dashboard/devices/device' }); defineRoute({ - path: "/dlnaprofile.html", + path: '/dlnaprofile.html', autoFocus: false, - roles: "admin", - controller: "dashboard/dlna/dlnaprofile" + roles: 'admin', + controller: 'dashboard/dlna/dlnaprofile' }); defineRoute({ - path: "/dlnaprofiles.html", + path: '/dlnaprofiles.html', autoFocus: false, - roles: "admin", - controller: "dashboard/dlna/dlnaprofiles" + roles: 'admin', + controller: 'dashboard/dlna/dlnaprofiles' }); defineRoute({ - path: "/dlnasettings.html", + path: '/dlnasettings.html', autoFocus: false, - roles: "admin", - controller: "dashboard/dlna/dlnasettings" + roles: 'admin', + controller: 'dashboard/dlna/dlnasettings' }); defineRoute({ - path: "/edititemmetadata.html", - controller: "edititemmetadata", + path: '/edititemmetadata.html', + controller: 'edititemmetadata', autoFocus: false }); defineRoute({ - path: "/encodingsettings.html", + path: '/encodingsettings.html', autoFocus: false, - roles: "admin", - controller: "dashboard/encodingsettings" + roles: 'admin', + controller: 'dashboard/encodingsettings' }); defineRoute({ - path: "/home.html", + path: '/home.html', autoFocus: false, - controller: "home", - transition: "fade", - type: "home" + controller: 'home', + transition: 'fade', + type: 'home' }); defineRoute({ - path: "/list.html", + path: '/list.html', autoFocus: false, - controller: "list", - transition: "fade" + controller: 'list', + transition: 'fade' }); defineRoute({ - path: "/itemdetails.html", - controller: "itemdetailpage", + path: '/itemdetails.html', + controller: 'itemdetailpage', autoFocus: false, - transition: "fade" + transition: 'fade' }); defineRoute({ - path: "/library.html", + path: '/library.html', autoFocus: false, - roles: "admin", - controller: "dashboard/medialibrarypage" + roles: 'admin', + controller: 'dashboard/medialibrarypage' }); defineRoute({ - path: "/librarydisplay.html", + path: '/librarydisplay.html', autoFocus: false, - roles: "admin", - controller: "dashboard/librarydisplay" + roles: 'admin', + controller: 'dashboard/librarydisplay' }); defineRoute({ - path: "/livetv.html", - controller: "livetv/livetvsuggested", + path: '/livetv.html', + controller: 'livetv/livetvsuggested', autoFocus: false, - transition: "fade" + transition: 'fade' }); defineRoute({ - path: "/livetvguideprovider.html", + path: '/livetvguideprovider.html', autoFocus: false, - roles: "admin", - controller: "livetvguideprovider" + roles: 'admin', + controller: 'livetvguideprovider' }); defineRoute({ - path: "/livetvsettings.html", + path: '/livetvsettings.html', autoFocus: false, - controller: "livetvsettings" + controller: 'livetvsettings' }); defineRoute({ - path: "/livetvstatus.html", + path: '/livetvstatus.html', autoFocus: false, - roles: "admin", - controller: "livetvstatus" + roles: 'admin', + controller: 'livetvstatus' }); defineRoute({ - path: "/livetvtuner.html", + path: '/livetvtuner.html', autoFocus: false, - roles: "admin", - controller: "livetvtuner" + roles: 'admin', + controller: 'livetvtuner' }); defineRoute({ - path: "/log.html", - roles: "admin", - controller: "dashboard/logs" + path: '/log.html', + roles: 'admin', + controller: 'dashboard/logs' }); defineRoute({ - path: "/login.html", + path: '/login.html', autoFocus: false, anonymous: true, startup: true, - controller: "auth/login", - type: "login" + controller: 'auth/login', + type: 'login' }); defineRoute({ - path: "/metadataimages.html", + path: '/metadataimages.html', autoFocus: false, - roles: "admin", - controller: "dashboard/metadataimagespage" + roles: 'admin', + controller: 'dashboard/metadataimagespage' }); defineRoute({ - path: "/metadatanfo.html", + path: '/metadatanfo.html', autoFocus: false, - roles: "admin", - controller: "dashboard/metadatanfo" + roles: 'admin', + controller: 'dashboard/metadatanfo' }); defineRoute({ - path: "/movies.html", + path: '/movies.html', autoFocus: false, - controller: "movies/moviesrecommended", - transition: "fade" + controller: 'movies/moviesrecommended', + transition: 'fade' }); defineRoute({ - path: "/music.html", - controller: "music/musicrecommended", + path: '/music.html', + controller: 'music/musicrecommended', autoFocus: false, - transition: "fade" + transition: 'fade' }); defineRoute({ - path: "/notificationsetting.html", + path: '/notificationsetting.html', autoFocus: false, - roles: "admin", - controller: "dashboard/notifications/notification" + roles: 'admin', + controller: 'dashboard/notifications/notification' }); defineRoute({ - path: "/notificationsettings.html", - controller: "dashboard/notifications/notifications", + path: '/notificationsettings.html', + controller: 'dashboard/notifications/notifications', autoFocus: false, - roles: "admin" + roles: 'admin' }); defineRoute({ - path: "/playbackconfiguration.html", + path: '/playbackconfiguration.html', autoFocus: false, - roles: "admin", - controller: "dashboard/playbackconfiguration" + roles: 'admin', + controller: 'dashboard/playbackconfiguration' }); defineRoute({ - path: "/availableplugins.html", + path: '/availableplugins.html', autoFocus: false, - roles: "admin", - controller: "dashboard/plugins/available" + roles: 'admin', + controller: 'dashboard/plugins/available' }); defineRoute({ - path: "/installedplugins.html", + path: '/installedplugins.html', autoFocus: false, - roles: "admin", - controller: "dashboard/plugins/installed" + roles: 'admin', + controller: 'dashboard/plugins/installed' }); defineRoute({ - path: "/scheduledtask.html", + path: '/scheduledtask.html', autoFocus: false, - roles: "admin", - controller: "dashboard/scheduledtasks/scheduledtask" + roles: 'admin', + controller: 'dashboard/scheduledtasks/scheduledtask' }); defineRoute({ - path: "/scheduledtasks.html", + path: '/scheduledtasks.html', autoFocus: false, - roles: "admin", - controller: "dashboard/scheduledtasks/scheduledtasks" + roles: 'admin', + controller: 'dashboard/scheduledtasks/scheduledtasks' }); defineRoute({ - path: "/search.html", - controller: "searchpage" + path: '/search.html', + controller: 'searchpage' }); defineRoute({ - path: "/serveractivity.html", + path: '/serveractivity.html', autoFocus: false, - roles: "admin", - controller: "dashboard/serveractivity" + roles: 'admin', + controller: 'dashboard/serveractivity' }); defineRoute({ - path: "/apikeys.html", + path: '/apikeys.html', autoFocus: false, - roles: "admin", - controller: "dashboard/apikeys" + roles: 'admin', + controller: 'dashboard/apikeys' }); defineRoute({ - path: "/streamingsettings.html", + path: '/streamingsettings.html', autoFocus: false, - roles: "admin", - controller: "dashboard/streamingsettings" + roles: 'admin', + controller: 'dashboard/streamingsettings' }); defineRoute({ - path: "/tv.html", + path: '/tv.html', autoFocus: false, - controller: "shows/tvrecommended", - transition: "fade" + controller: 'shows/tvrecommended', + transition: 'fade' }); defineRoute({ - path: "/useredit.html", + path: '/useredit.html', autoFocus: false, - roles: "admin", - controller: "useredit" + roles: 'admin', + controller: 'useredit' }); defineRoute({ - path: "/userlibraryaccess.html", + path: '/userlibraryaccess.html', autoFocus: false, - roles: "admin", - controller: "userlibraryaccess" + roles: 'admin', + controller: 'userlibraryaccess' }); defineRoute({ - path: "/usernew.html", + path: '/usernew.html', autoFocus: false, - roles: "admin", - controller: "usernew" + roles: 'admin', + controller: 'usernew' }); defineRoute({ - path: "/userparentalcontrol.html", + path: '/userparentalcontrol.html', autoFocus: false, - roles: "admin", - controller: "userparentalcontrol" + roles: 'admin', + controller: 'userparentalcontrol' }); defineRoute({ - path: "/userpassword.html", + path: '/userpassword.html', autoFocus: false, - controller: "userpasswordpage" + controller: 'userpasswordpage' }); defineRoute({ - path: "/userprofiles.html", + path: '/userprofiles.html', autoFocus: false, - roles: "admin", - controller: "userprofilespage" + roles: 'admin', + controller: 'userprofilespage' }); defineRoute({ - path: "/wizardremoteaccess.html", + path: '/wizardremoteaccess.html', autoFocus: false, anonymous: true, - controller: "wizard/remoteaccess" + controller: 'wizard/remoteaccess' }); defineRoute({ - path: "/wizardfinish.html", + path: '/wizardfinish.html', autoFocus: false, anonymous: true, - controller: "wizard/finish" + controller: 'wizard/finish' }); defineRoute({ - path: "/wizardlibrary.html", + path: '/wizardlibrary.html', autoFocus: false, anonymous: true, - controller: "medialibrarypage" + controller: 'medialibrarypage' }); defineRoute({ - path: "/wizardsettings.html", + path: '/wizardsettings.html', autoFocus: false, anonymous: true, - controller: "wizard/settings" + controller: 'wizard/settings' }); defineRoute({ - path: "/wizardstart.html", + path: '/wizardstart.html', autoFocus: false, anonymous: true, - controller: "wizard/start" + controller: 'wizard/start' }); defineRoute({ - path: "/wizarduser.html", - controller: "wizard/user", + path: '/wizarduser.html', + controller: 'wizard/user', autoFocus: false, anonymous: true }); defineRoute({ - path: "/videoosd.html", - transition: "fade", - controller: "playback/videoosd", + path: '/videoosd.html', + transition: 'fade', + controller: 'playback/videoosd', autoFocus: false, - type: "video-osd", + type: 'video-osd', supportsThemeMedia: true, fullscreen: true, enableMediaControl: false }); defineRoute({ - path: "/nowplaying.html", - controller: "playback/nowplaying", + path: '/nowplaying.html', + controller: 'playback/nowplaying', autoFocus: false, - transition: "fade", + transition: 'fade', fullscreen: true, supportsThemeMedia: true, enableMediaControl: false }); defineRoute({ - path: "/configurationpage", + path: '/configurationpage', autoFocus: false, enableCache: false, enableContentQueryString: true, - roles: "admin" + roles: 'admin' }); defineRoute({ - path: "/", + path: '/', isDefaultRoute: true, autoFocus: false }); defineRoute({ - path: "/index.html", + path: '/index.html', autoFocus: false, isDefaultRoute: true }); diff --git a/src/scripts/searchtab.js b/src/scripts/searchtab.js index c0852bfc77..95b1e5a7c3 100644 --- a/src/scripts/searchtab.js +++ b/src/scripts/searchtab.js @@ -1,18 +1,18 @@ -define(["searchFields", "searchResults", "events"], function (SearchFields, SearchResults, events) { - "use strict"; +define(['searchFields', 'searchResults', 'events'], function (SearchFields, SearchResults, events) { + 'use strict'; function init(instance, tabContent, options) { tabContent.innerHTML = '
'; instance.searchFields = new SearchFields({ - element: tabContent.querySelector(".searchFields") + element: tabContent.querySelector('.searchFields') }); instance.searchResults = new SearchResults({ - element: tabContent.querySelector(".searchResults"), + element: tabContent.querySelector('.searchResults'), serverId: ApiClient.serverId(), parentId: options.parentId, collectionType: options.collectionType }); - events.on(instance.searchFields, "search", function (e, value) { + events.on(instance.searchFields, 'search', function (e, value) { instance.searchResults.search(value); }); } diff --git a/src/scripts/settings/webSettings.js b/src/scripts/settings/webSettings.js index 8279c162fe..92093dfbe5 100644 --- a/src/scripts/settings/webSettings.js +++ b/src/scripts/settings/webSettings.js @@ -2,7 +2,7 @@ let data; function getConfig() { if (data) return Promise.resolve(data); - return fetch("/config.json?nocache=" + new Date().getUTCMilliseconds()).then(function (response) { + return fetch('/config.json?nocache=' + new Date().getUTCMilliseconds()).then(function (response) { data = response.json(); return data; }); @@ -12,7 +12,7 @@ export function enableMultiServer() { return getConfig().then(config => { return config.multiserver; }).catch(error => { - console.log("cannot get web config:", error); + console.log('cannot get web config:', error); return false; }); } diff --git a/src/scripts/site.js b/src/scripts/site.js index 5ce093e628..b6b904c75c 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -1,36 +1,36 @@ function getWindowLocationSearch(win) { - "use strict"; + 'use strict'; var search = (win || window).location.search; if (!search) { - var index = window.location.href.indexOf("?"); + var index = window.location.href.indexOf('?'); if (-1 != index) { search = window.location.href.substring(index); } } - return search || ""; + return search || ''; } function getParameterByName(name, url) { - "use strict"; + 'use strict'; - name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); - var regexS = "[\\?&]" + name + "=([^&#]*)"; - var regex = new RegExp(regexS, "i"); + name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); + var regexS = '[\\?&]' + name + '=([^&#]*)'; + var regex = new RegExp(regexS, 'i'); var results = regex.exec(url || getWindowLocationSearch()); if (null == results) { - return ""; + return ''; } - return decodeURIComponent(results[1].replace(/\+/g, " ")); + return decodeURIComponent(results[1].replace(/\+/g, ' ')); } function pageClassOn(eventName, className, fn) { - "use strict"; + 'use strict'; document.addEventListener(eventName, function (event) { var target = event.target; @@ -42,7 +42,7 @@ function pageClassOn(eventName, className, fn) { } function pageIdOn(eventName, id, fn) { - "use strict"; + 'use strict'; document.addEventListener(eventName, function (event) { var target = event.target; @@ -71,17 +71,17 @@ var Dashboard = { } var urlLower = window.location.href.toLowerCase(); - var index = urlLower.lastIndexOf("/web"); + var index = urlLower.lastIndexOf('/web'); if (-1 != index) { return urlLower.substring(0, index); } var loc = window.location; - var address = loc.protocol + "//" + loc.hostname; + var address = loc.protocol + '//' + loc.hostname; if (loc.port) { - address += ":" + loc.port; + address += ':' + loc.port; } return address; @@ -104,21 +104,21 @@ var Dashboard = { var loginPage; if (AppInfo.isNativeApp) { - loginPage = "selectserver.html"; + loginPage = 'selectserver.html'; window.ApiClient = null; } else { - loginPage = "login.html"; + loginPage = 'login.html'; } Dashboard.navigate(loginPage); }); }, getConfigurationPageUrl: function (name) { - return "configurationpage?name=" + encodeURIComponent(name); + return 'configurationpage?name=' + encodeURIComponent(name); }, getConfigurationResourceUrl: function (name) { if (AppInfo.isNativeApp) { - return ApiClient.getUrl("web/ConfigurationPage", { + return ApiClient.getUrl('web/ConfigurationPage', { name: name }); } @@ -127,7 +127,7 @@ var Dashboard = { }, navigate: function (url, preserveQueryString) { if (!url) { - throw new Error("url cannot be null or empty"); + throw new Error('url cannot be null or empty'); } var queryString = getWindowLocationSearch(); @@ -137,36 +137,36 @@ var Dashboard = { } return new Promise(function (resolve, reject) { - require(["appRouter"], function (appRouter) { + require(['appRouter'], function (appRouter) { return appRouter.show(url).then(resolve, reject); }); }); }, navigate_direct: function (path) { return new Promise(function (resolve, reject) { - require(["appRouter"], function (appRouter) { + require(['appRouter'], function (appRouter) { return appRouter.showDirect(path).then(resolve, reject); }); }); }, processPluginConfigurationUpdateResult: function () { - require(["loading", "toast"], function (loading, toast) { + require(['loading', 'toast'], function (loading, toast) { loading.hide(); - toast(Globalize.translate("MessageSettingsSaved")); + toast(Globalize.translate('MessageSettingsSaved')); }); }, processServerConfigurationUpdateResult: function (result) { - require(["loading", "toast"], function (loading, toast) { + require(['loading', 'toast'], function (loading, toast) { loading.hide(); - toast(Globalize.translate("MessageSettingsSaved")); + toast(Globalize.translate('MessageSettingsSaved')); }); }, processErrorResponse: function (response) { - require(["loading"], function (loading) { + require(['loading'], function (loading) { loading.hide(); }); - var status = "" + response.status; + var status = '' + response.status; if (response.statusText) { status = response.statusText; @@ -174,21 +174,21 @@ var Dashboard = { Dashboard.alert({ title: status, - message: response.headers ? response.headers.get("X-Application-Error-Code") : null + message: response.headers ? response.headers.get('X-Application-Error-Code') : null }); }, alert: function (options) { - if ("string" == typeof options) { - return void require(["toast"], function (toast) { + if ('string' == typeof options) { + return void require(['toast'], function (toast) { toast({ text: options }); }); } - require(["alert"], function (alert) { + require(['alert'], function (alert) { alert({ - title: options.title || Globalize.translate("HeaderAlert"), + title: options.title || Globalize.translate('HeaderAlert'), text: options.message }).then(options.callback || function () {}); }); @@ -197,11 +197,11 @@ var Dashboard = { var apiClient = window.ApiClient; if (apiClient) { - require(["serverRestartDialog", "events"], function (ServerRestartDialog, events) { + require(['serverRestartDialog', 'events'], function (ServerRestartDialog, events) { var dialog = new ServerRestartDialog({ apiClient: apiClient }); - events.on(dialog, "restarted", function () { + events.on(dialog, 'restarted', function () { if (AppInfo.isNativeApp) { apiClient.ensureWebSocket(); } else { @@ -214,19 +214,19 @@ var Dashboard = { }, capabilities: function (appHost) { var capabilities = { - PlayableMediaTypes: ["Audio", "Video"], - SupportedCommands: ["MoveUp", "MoveDown", "MoveLeft", "MoveRight", "PageUp", "PageDown", "PreviousLetter", "NextLetter", "ToggleOsd", "ToggleContextMenu", "Select", "Back", "SendKey", "SendString", "GoHome", "GoToSettings", "VolumeUp", "VolumeDown", "Mute", "Unmute", "ToggleMute", "SetVolume", "SetAudioStreamIndex", "SetSubtitleStreamIndex", "DisplayContent", "GoToSearch", "DisplayMessage", "SetRepeatMode", "ChannelUp", "ChannelDown", "PlayMediaSource", "PlayTrailers"], - SupportsPersistentIdentifier: "cordova" === self.appMode || "android" === self.appMode, + PlayableMediaTypes: ['Audio', 'Video'], + SupportedCommands: ['MoveUp', 'MoveDown', 'MoveLeft', 'MoveRight', 'PageUp', 'PageDown', 'PreviousLetter', 'NextLetter', 'ToggleOsd', 'ToggleContextMenu', 'Select', 'Back', 'SendKey', 'SendString', 'GoHome', 'GoToSettings', 'VolumeUp', 'VolumeDown', 'Mute', 'Unmute', 'ToggleMute', 'SetVolume', 'SetAudioStreamIndex', 'SetSubtitleStreamIndex', 'DisplayContent', 'GoToSearch', 'DisplayMessage', 'SetRepeatMode', 'ChannelUp', 'ChannelDown', 'PlayMediaSource', 'PlayTrailers'], + SupportsPersistentIdentifier: 'cordova' === self.appMode || 'android' === self.appMode, SupportsMediaControl: true }; appHost.getPushTokenInfo(); return capabilities = Object.assign(capabilities, appHost.getPushTokenInfo()); }, selectServer: function () { - if (window.NativeShell && typeof window.NativeShell.selectServer === "function") { + if (window.NativeShell && typeof window.NativeShell.selectServer === 'function') { window.NativeShell.selectServer(); } else { - Dashboard.navigate("selectserver.html"); + Dashboard.navigate('selectserver.html'); } } }; @@ -234,11 +234,11 @@ var Dashboard = { var AppInfo = {}; !function () { - "use strict"; + 'use strict'; function defineConnectionManager(connectionManager) { window.ConnectionManager = connectionManager; - define("connectionManager", [], function () { + define('connectionManager', [], function () { return connectionManager; }); } @@ -264,13 +264,13 @@ var AppInfo = {}; return userSettings.setUserInfo(user.Id, localApiClient); }; - events.on(connectionManager, "localusersignedout", function () { + events.on(connectionManager, 'localusersignedout', function () { userSettings.setUserInfo(null, null); }); } function createConnectionManager() { - return require(["connectionManagerFactory", "apphost", "credentialprovider", "events", "userSettings"], function (ConnectionManager, apphost, credentialProvider, events, userSettings) { + return require(['connectionManagerFactory', 'apphost', 'credentialprovider', 'events', 'userSettings'], function (ConnectionManager, apphost, credentialProvider, events, userSettings) { var credentialProviderInstance = new credentialProvider(); var promises = [apphost.getSyncProfile(), apphost.init()]; @@ -286,10 +286,10 @@ var AppInfo = {}; bindConnectionManagerEvents(connectionManager, events, userSettings); if (!AppInfo.isNativeApp) { - console.debug("loading ApiClient singleton"); + console.debug('loading ApiClient singleton'); - return require(["apiclient"], function (apiClientFactory) { - console.debug("creating ApiClient singleton"); + return require(['apiclient'], function (apiClientFactory) { + console.debug('creating ApiClient singleton'); var apiClient = new apiClientFactory(Dashboard.serverAddress(), apphost.appName(), apphost.appVersion(), apphost.deviceName(), apphost.deviceId()); @@ -301,7 +301,7 @@ var AppInfo = {}; window.ApiClient = apiClient; localApiClient = apiClient; - console.debug("loaded ApiClient singleton"); + console.debug('loaded ApiClient singleton'); }); } @@ -315,27 +315,27 @@ var AppInfo = {}; } function getBowerPath() { - return "libraries"; + return 'libraries'; } function getComponentsPath() { - return "components"; + return 'components'; } function getElementsPath() { - return "elements"; + return 'elements'; } function getScriptsPath() { - return "scripts"; + return 'scripts'; } function getPlaybackManager(playbackManager) { - window.addEventListener("beforeunload", function () { + window.addEventListener('beforeunload', function () { try { playbackManager.onAppClose(); } catch (err) { - console.error("error in onAppClose: " + err); + console.error('error in onAppClose: ' + err); } }); return playbackManager; @@ -355,16 +355,16 @@ var AppInfo = {}; } function onRequireJsError(requireType, requireModules) { - console.error("RequireJS error: " + (requireType || "unknown") + ". Failed modules: " + (requireModules || []).join(",")); + console.error('RequireJS error: ' + (requireType || 'unknown') + '. Failed modules: ' + (requireModules || []).join(',')); } function defineResizeObserver() { if (self.ResizeObserver) { - define("ResizeObserver", [], function () { + define('ResizeObserver', [], function () { return self.ResizeObserver; }); } else { - define("ResizeObserver", ["resize-observer-polyfill"], returnFirstDependency); + define('ResizeObserver', ['resize-observer-polyfill'], returnFirstDependency); } } @@ -373,76 +373,76 @@ var AppInfo = {}; var componentsPath = getComponentsPath(); var scriptsPath = getScriptsPath(); - define("filesystem", [scriptsPath + "/filesystem"], returnFirstDependency); + define('filesystem', [scriptsPath + '/filesystem'], returnFirstDependency); if (window.IntersectionObserver && !browser.edge) { - define("lazyLoader", [componentsPath + "/lazyloader/lazyloader-intersectionobserver"], returnFirstDependency); + define('lazyLoader', [componentsPath + '/lazyloader/lazyloader-intersectionobserver'], returnFirstDependency); } else { - define("lazyLoader", [componentsPath + "/lazyloader/lazyloader-scroll"], returnFirstDependency); + define('lazyLoader', [componentsPath + '/lazyloader/lazyloader-scroll'], returnFirstDependency); } - define("shell", [componentsPath + "/shell"], returnFirstDependency); + define('shell', [componentsPath + '/shell'], returnFirstDependency); - define("apiclient", [bowerPath + "/apiclient/apiclient"], returnFirstDependency); + define('apiclient', [bowerPath + '/apiclient/apiclient'], returnFirstDependency); - if ("registerElement" in document) { - define("registerElement", []); + if ('registerElement' in document) { + define('registerElement', []); } else if (browser.msie) { - define("registerElement", ["webcomponents"], returnFirstDependency); + define('registerElement', ['webcomponents'], returnFirstDependency); } else { - define("registerElement", ["document-register-element"], returnFirstDependency); + define('registerElement', ['document-register-element'], returnFirstDependency); } - define("imageFetcher", [componentsPath + "/images/imageFetcher"], returnFirstDependency); + define('imageFetcher', [componentsPath + '/images/imageFetcher'], returnFirstDependency); var preferNativeAlerts = browser.tv; - define("alert", [componentsPath + "/alert"], returnFirstDependency); + define('alert', [componentsPath + '/alert'], returnFirstDependency); defineResizeObserver(); - define("dialog", [componentsPath + "/dialog/dialog"], returnFirstDependency); + define('dialog', [componentsPath + '/dialog/dialog'], returnFirstDependency); - define("confirm", [componentsPath + "/confirm/confirm"], returnFirstDependency); + define('confirm', [componentsPath + '/confirm/confirm'], returnFirstDependency); - define("prompt", [componentsPath + "/prompt/prompt"], returnFirstDependency); + define('prompt', [componentsPath + '/prompt/prompt'], returnFirstDependency); - define("loading", [componentsPath + "/loading/loading"], returnFirstDependency); - define("multi-download", [componentsPath + "/multidownload"], returnFirstDependency); - define("fileDownloader", [componentsPath + "/filedownloader"], returnFirstDependency); - define("localassetmanager", [bowerPath + "/apiclient/localassetmanager"], returnFirstDependency); + define('loading', [componentsPath + '/loading/loading'], returnFirstDependency); + define('multi-download', [componentsPath + '/multidownload'], returnFirstDependency); + define('fileDownloader', [componentsPath + '/filedownloader'], returnFirstDependency); + define('localassetmanager', [bowerPath + '/apiclient/localassetmanager'], returnFirstDependency); - define("castSenderApiLoader", [componentsPath + "/castSenderApi"], returnFirstDependency); + define('castSenderApiLoader', [componentsPath + '/castSenderApi'], returnFirstDependency); - define("transfermanager", [bowerPath + "/apiclient/sync/transfermanager"], returnFirstDependency); - define("filerepository", [bowerPath + "/apiclient/sync/filerepository"], returnFirstDependency); - define("localsync", [bowerPath + "/apiclient/sync/localsync"], returnFirstDependency); + define('transfermanager', [bowerPath + '/apiclient/sync/transfermanager'], returnFirstDependency); + define('filerepository', [bowerPath + '/apiclient/sync/filerepository'], returnFirstDependency); + define('localsync', [bowerPath + '/apiclient/sync/localsync'], returnFirstDependency); } function init() { - define("livetvcss", ["css!assets/css/livetv.css"], returnFirstDependency); - define("detailtablecss", ["css!assets/css/detailtable.css"], returnFirstDependency); + define('livetvcss', ['css!assets/css/livetv.css'], returnFirstDependency); + define('detailtablecss', ['css!assets/css/detailtable.css'], returnFirstDependency); var promises = []; if (!window.fetch) { - promises.push(require(["fetch"])); + promises.push(require(['fetch'])); } Promise.all(promises).then(function () { createConnectionManager().then(function () { - console.debug("initAfterDependencies promises resolved"); + console.debug('initAfterDependencies promises resolved'); - require(["globalize", "browser"], function (globalize, browser) { + require(['globalize', 'browser'], function (globalize, browser) { window.Globalize = globalize; loadCoreDictionary(globalize).then(function () { onGlobalizeInit(browser); }); }); - require(["keyboardnavigation"], function(keyboardnavigation) { + require(['keyboardnavigation'], function(keyboardnavigation) { keyboardnavigation.enable(); }); - require(["mouseManager"]); - require(["focusPreventScroll"]); - require(["autoFocuser"], function(autoFocuser) { + require(['mouseManager']); + require(['focusPreventScroll']); + require(['autoFocuser'], function(autoFocuser) { autoFocuser.enable(); }); require(['globalize', 'connectionManager', 'events'], function (globalize, connectionManager, events) { @@ -453,38 +453,38 @@ var AppInfo = {}; } function loadCoreDictionary(globalize) { - var languages = ["ar", "be-by", "bg-bg", "ca", "cs", "da", "de", "el", "en-gb", "en-us", "es", "es-ar", "es-mx", "fa", "fi", "fr", "fr-ca", "gsw", "he", "hi-in", "hr", "hu", "id", "it", "kk", "ko", "lt-lt", "ms", "nb", "nl", "pl", "pt-br", "pt-pt", "ro", "ru", "sk", "sl-si", "sv", "tr", "uk", "vi", "zh-cn", "zh-hk", "zh-tw"]; + var languages = ['ar', 'be-by', 'bg-bg', 'ca', 'cs', 'da', 'de', 'el', 'en-gb', 'en-us', 'es', 'es-ar', 'es-mx', 'fa', 'fi', 'fr', 'fr-ca', 'gsw', 'he', 'hi-in', 'hr', 'hu', 'id', 'it', 'kk', 'ko', 'lt-lt', 'ms', 'nb', 'nl', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'sk', 'sl-si', 'sv', 'tr', 'uk', 'vi', 'zh-cn', 'zh-hk', 'zh-tw']; var translations = languages.map(function (language) { return { lang: language, - path: "strings/" + language + ".json" + path: 'strings/' + language + '.json' }; }); - globalize.defaultModule("core"); + globalize.defaultModule('core'); return globalize.loadStrings({ - name: "core", + name: 'core', translations: translations }); } function onGlobalizeInit(browser) { - if ("android" === self.appMode) { - if (-1 !== self.location.href.toString().toLowerCase().indexOf("start=backgroundsync")) { + if ('android' === self.appMode) { + if (-1 !== self.location.href.toString().toLowerCase().indexOf('start=backgroundsync')) { return onAppReady(browser); } } - document.title = Globalize.translateDocument(document.title, "core"); + document.title = Globalize.translateDocument(document.title, 'core'); if (browser.tv && !browser.android) { - console.debug("using system fonts with explicit sizes"); - require(["systemFontsSizedCss"]); + console.debug('using system fonts with explicit sizes'); + require(['systemFontsSizedCss']); } else { - console.debug("using default fonts"); - require(["systemFontsCss"]); + console.debug('using default fonts'); + require(['systemFontsCss']); } - require(["apphost", "css!assets/css/librarybrowser"], function (appHost) { + require(['apphost', 'css!assets/css/librarybrowser'], function (appHost) { loadPlugins(appHost, browser).then(function () { onAppReady(browser); }); @@ -492,23 +492,23 @@ var AppInfo = {}; } function loadPlugins(appHost, browser, shell) { - console.debug("loading installed plugins"); + console.debug('loading installed plugins'); var list = [ - "components/playback/playaccessvalidation", - "components/playback/experimentalwarnings", - "components/htmlaudioplayer/plugin", - "components/htmlvideoplayer/plugin", - "components/photoplayer/plugin", - "components/youtubeplayer/plugin", - "components/backdropscreensaver/plugin", - "components/logoscreensaver/plugin" + 'components/playback/playaccessvalidation', + 'components/playback/experimentalwarnings', + 'components/htmlaudioplayer/plugin', + 'components/htmlvideoplayer/plugin', + 'components/photoplayer/plugin', + 'components/youtubeplayer/plugin', + 'components/backdropscreensaver/plugin', + 'components/logoscreensaver/plugin' ]; - if (appHost.supports("remotecontrol")) { - list.push("components/sessionplayer"); + if (appHost.supports('remotecontrol')) { + list.push('components/sessionplayer'); if (browser.chrome || browser.opera) { - list.push("components/chromecast/chromecastplayer"); + list.push('components/chromecast/chromecastplayer'); } } @@ -518,7 +518,7 @@ var AppInfo = {}; return new Promise(function (resolve, reject) { Promise.all(list.map(loadPlugin)).then(function () { - require(["packageManager"], function (packageManager) { + require(['packageManager'], function (packageManager) { packageManager.init().then(resolve, reject); }); }, reject); @@ -527,20 +527,20 @@ var AppInfo = {}; function loadPlugin(url) { return new Promise(function (resolve, reject) { - require(["pluginManager"], function (pluginManager) { + require(['pluginManager'], function (pluginManager) { pluginManager.loadPlugin(url).then(resolve, reject); }); }); } function onAppReady(browser) { - console.debug("begin onAppReady"); + console.debug('begin onAppReady'); // ensure that appHost is loaded in this point require(['apphost', 'appRouter'], function (appHost, appRouter) { window.Emby = {}; - console.debug("onAppReady: loading dependencies"); + console.debug('onAppReady: loading dependencies'); if (browser.iOS) { require(['css!assets/css/ios.css']); } @@ -553,39 +553,39 @@ var AppInfo = {}; hashbang: true }); - require(["components/thememediaplayer", "scripts/autobackdrops"]); + require(['components/thememediaplayer', 'scripts/autobackdrops']); if (!browser.tv && !browser.xboxOne && !browser.ps4) { - require(["components/nowplayingbar/nowplayingbar"]); + require(['components/nowplayingbar/nowplayingbar']); } - if (appHost.supports("remotecontrol")) { - require(["playerSelectionMenu", "components/playback/remotecontrolautoplay"]); + if (appHost.supports('remotecontrol')) { + require(['playerSelectionMenu', 'components/playback/remotecontrolautoplay']); } - require(["libraries/screensavermanager"]); + require(['libraries/screensavermanager']); - if (!appHost.supports("physicalvolumecontrol") || browser.touch) { - require(["components/playback/volumeosd"]); + if (!appHost.supports('physicalvolumecontrol') || browser.touch) { + require(['components/playback/volumeosd']); } - require(["mediaSession", "serverNotifications"]); - require(["date-fns", "date-fns/locale"]); + require(['mediaSession', 'serverNotifications']); + require(['date-fns', 'date-fns/locale']); if (!browser.tv && !browser.xboxOne) { - require(["components/playback/playbackorientation"]); + require(['components/playback/playbackorientation']); registerServiceWorker(); if (window.Notification) { - require(["components/notifications/notifications"]); + require(['components/notifications/notifications']); } } - require(["playerSelectionMenu"]); + require(['playerSelectionMenu']); var apiClient = window.ConnectionManager && window.ConnectionManager.currentApiClient(); if (apiClient) { - fetch(apiClient.getUrl("Branding/Css")) + fetch(apiClient.getUrl('Branding/Css')) .then(function(response) { if (!response.ok) { throw new Error(response.status + ' ' + response.statusText); @@ -609,14 +609,14 @@ var AppInfo = {}; function registerServiceWorker() { /* eslint-disable compat/compat */ - if (navigator.serviceWorker && self.appMode !== "cordova" && self.appMode !== "android") { + if (navigator.serviceWorker && self.appMode !== 'cordova' && self.appMode !== 'android') { try { - navigator.serviceWorker.register("serviceworker.js"); + navigator.serviceWorker.register('serviceworker.js'); } catch (err) { - console.error("error registering serviceWorker: " + err); + console.error('error registering serviceWorker: ' + err); } } else { - console.warn("serviceWorker unsupported"); + console.warn('serviceWorker unsupported'); } /* eslint-enable compat/compat */ } @@ -634,7 +634,7 @@ var AppInfo = {}; var localApiClient; (function () { - var urlArgs = "v=" + (window.dashboardVersion || new Date().getDate()); + var urlArgs = 'v=' + (window.dashboardVersion || new Date().getDate()); var bowerPath = getBowerPath(); var componentsPath = getComponentsPath(); @@ -642,66 +642,66 @@ var AppInfo = {}; var scriptsPath = getScriptsPath(); var paths = { - browserdeviceprofile: "scripts/browserdeviceprofile", - browser: "scripts/browser", - libraryBrowser: "scripts/librarybrowser", - inputManager: "scripts/inputManager", - datetime: "scripts/datetime", - globalize: "scripts/globalize", - dfnshelper: "scripts/dfnshelper", - libraryMenu: "scripts/librarymenu", - playlisteditor: componentsPath + "/playlisteditor/playlisteditor", - medialibrarycreator: componentsPath + "/medialibrarycreator/medialibrarycreator", - medialibraryeditor: componentsPath + "/medialibraryeditor/medialibraryeditor", - imageoptionseditor: componentsPath + "/imageoptionseditor/imageoptionseditor", - apphost: componentsPath + "/apphost", - visibleinviewport: bowerPath + "/visibleinviewport", - qualityoptions: componentsPath + "/qualityoptions", - focusManager: componentsPath + "/focusManager", - itemHelper: componentsPath + "/itemhelper", - itemShortcuts: componentsPath + "/shortcuts", - playQueueManager: componentsPath + "/playback/playqueuemanager", - nowPlayingHelper: componentsPath + "/playback/nowplayinghelper", - pluginManager: componentsPath + "/pluginManager", - packageManager: componentsPath + "/packagemanager", - screensaverManager: componentsPath + "/screensavermanager" + browserdeviceprofile: 'scripts/browserdeviceprofile', + browser: 'scripts/browser', + libraryBrowser: 'scripts/librarybrowser', + inputManager: 'scripts/inputManager', + datetime: 'scripts/datetime', + globalize: 'scripts/globalize', + dfnshelper: 'scripts/dfnshelper', + libraryMenu: 'scripts/librarymenu', + playlisteditor: componentsPath + '/playlisteditor/playlisteditor', + medialibrarycreator: componentsPath + '/medialibrarycreator/medialibrarycreator', + medialibraryeditor: componentsPath + '/medialibraryeditor/medialibraryeditor', + imageoptionseditor: componentsPath + '/imageoptionseditor/imageoptionseditor', + apphost: componentsPath + '/apphost', + visibleinviewport: bowerPath + '/visibleinviewport', + qualityoptions: componentsPath + '/qualityoptions', + focusManager: componentsPath + '/focusManager', + itemHelper: componentsPath + '/itemhelper', + itemShortcuts: componentsPath + '/shortcuts', + playQueueManager: componentsPath + '/playback/playqueuemanager', + nowPlayingHelper: componentsPath + '/playback/nowplayinghelper', + pluginManager: componentsPath + '/pluginManager', + packageManager: componentsPath + '/packagemanager', + screensaverManager: componentsPath + '/screensavermanager' }; requirejs.onError = onRequireJsError; requirejs.config({ waitSeconds: 0, map: { - "*": { - css: "components/require/requirecss", - text: "components/require/requiretext" + '*': { + css: 'components/require/requirecss', + text: 'components/require/requiretext' } }, bundles: { bundle: [ - "document-register-element", - "fetch", - "flvjs", - "jstree", - "jQuery", - "hlsjs", - "howler", - "native-promise-only", - "resize-observer-polyfill", - "shaka", - "swiper", - "queryString", - "sortable", - "webcomponents", - "material-icons", - "jellyfin-noto", - "date-fns", - "page", - "polyfill", - "fast-text-encoding", - "intersection-observer", - "classlist-polyfill", - "screenfull", - "headroom" + 'document-register-element', + 'fetch', + 'flvjs', + 'jstree', + 'jQuery', + 'hlsjs', + 'howler', + 'native-promise-only', + 'resize-observer-polyfill', + 'shaka', + 'swiper', + 'queryString', + 'sortable', + 'webcomponents', + 'material-icons', + 'jellyfin-noto', + 'date-fns', + 'page', + 'polyfill', + 'fast-text-encoding', + 'intersection-observer', + 'classlist-polyfill', + 'screenfull', + 'headroom' ] }, urlArgs: urlArgs, @@ -709,185 +709,185 @@ var AppInfo = {}; onError: onRequireJsError }); - require(["fetch"]); - require(["polyfill"]); - require(["fast-text-encoding"]); - require(["intersection-observer"]); - require(["classlist-polyfill"]); + require(['fetch']); + require(['polyfill']); + require(['fast-text-encoding']); + require(['intersection-observer']); + require(['classlist-polyfill']); // Expose jQuery globally - require(["jQuery"], function(jQuery) { + require(['jQuery'], function(jQuery) { window.$ = jQuery; window.jQuery = jQuery; }); - require(["css!assets/css/site"]); - require(["jellyfin-noto"]); + require(['css!assets/css/site']); + require(['jellyfin-noto']); // define styles // TODO determine which of these files can be moved to the components themselves - define("systemFontsCss", ["css!assets/css/fonts"], returnFirstDependency); - define("systemFontsSizedCss", ["css!assets/css/fonts.sized"], returnFirstDependency); - define("scrollStyles", ["css!assets/css/scrollstyles"], returnFirstDependency); - define("dashboardcss", ["css!assets/css/dashboard"], returnFirstDependency); - define("programStyles", ["css!" + componentsPath + "/guide/programs"], returnFirstDependency); - define("listViewStyle", ["css!" + componentsPath + "/listview/listview"], returnFirstDependency); - define("formDialogStyle", ["css!" + componentsPath + "/formdialog"], returnFirstDependency); - define("clearButtonStyle", ["css!assets/css/clearbutton"], returnFirstDependency); - define("cardStyle", ["css!" + componentsPath + "/cardbuilder/card"], returnFirstDependency); - define("flexStyles", ["css!assets/css/flexstyles"], returnFirstDependency); + define('systemFontsCss', ['css!assets/css/fonts'], returnFirstDependency); + define('systemFontsSizedCss', ['css!assets/css/fonts.sized'], returnFirstDependency); + define('scrollStyles', ['css!assets/css/scrollstyles'], returnFirstDependency); + define('dashboardcss', ['css!assets/css/dashboard'], returnFirstDependency); + define('programStyles', ['css!' + componentsPath + '/guide/programs'], returnFirstDependency); + define('listViewStyle', ['css!' + componentsPath + '/listview/listview'], returnFirstDependency); + define('formDialogStyle', ['css!' + componentsPath + '/formdialog'], returnFirstDependency); + define('clearButtonStyle', ['css!assets/css/clearbutton'], returnFirstDependency); + define('cardStyle', ['css!' + componentsPath + '/cardbuilder/card'], returnFirstDependency); + define('flexStyles', ['css!assets/css/flexstyles'], returnFirstDependency); // define legacy features // TODO delete the rest of these - define("fnchecked", ["legacy/fnchecked"], returnFirstDependency); - define("legacyDashboard", ["legacy/dashboard"], returnFirstDependency); - define("legacySelectMenu", ["legacy/selectmenu"], returnFirstDependency); + define('fnchecked', ['legacy/fnchecked'], returnFirstDependency); + define('legacyDashboard', ['legacy/dashboard'], returnFirstDependency); + define('legacySelectMenu', ['legacy/selectmenu'], returnFirstDependency); // there are several objects that need to be instantiated // TODO find a better way to do this - define("appFooter", [componentsPath + "/appfooter/appfooter"], returnFirstDependency); - define("appFooter-shared", ["appFooter"], createSharedAppFooter); + define('appFooter', [componentsPath + '/appfooter/appfooter'], returnFirstDependency); + define('appFooter-shared', ['appFooter'], createSharedAppFooter); // TODO pull apiclient out of this repository - define('events', [bowerPath + "/apiclient/events"], returnFirstDependency); - define('credentialprovider', [bowerPath + "/apiclient/credentialprovider"], returnFirstDependency); - define('connectionManagerFactory', [bowerPath + "/apiclient/connectionmanager"], returnFirstDependency); - define('appStorage', [bowerPath + "/apiclient/appStorage"], returnFirstDependency); - define("serversync", [bowerPath + "/apiclient/sync/serversync"], returnFirstDependency); - define("multiserversync", [bowerPath + "/apiclient/sync/multiserversync"], returnFirstDependency); - define("mediasync", [bowerPath + "/apiclient/sync/mediasync"], returnFirstDependency); - define("itemrepository", [bowerPath + "/apiclient/sync/itemrepository"], returnFirstDependency); - define("useractionrepository", [bowerPath + "/apiclient/sync/useractionrepository"], returnFirstDependency); + define('events', [bowerPath + '/apiclient/events'], returnFirstDependency); + define('credentialprovider', [bowerPath + '/apiclient/credentialprovider'], returnFirstDependency); + define('connectionManagerFactory', [bowerPath + '/apiclient/connectionmanager'], returnFirstDependency); + define('appStorage', [bowerPath + '/apiclient/appStorage'], returnFirstDependency); + define('serversync', [bowerPath + '/apiclient/sync/serversync'], returnFirstDependency); + define('multiserversync', [bowerPath + '/apiclient/sync/multiserversync'], returnFirstDependency); + define('mediasync', [bowerPath + '/apiclient/sync/mediasync'], returnFirstDependency); + define('itemrepository', [bowerPath + '/apiclient/sync/itemrepository'], returnFirstDependency); + define('useractionrepository', [bowerPath + '/apiclient/sync/useractionrepository'], returnFirstDependency); // TODO remove these libraries // all of these have been modified so we need to fix that first - define("scroller", [bowerPath + "/scroller"], returnFirstDependency); - define("navdrawer", [bowerPath + "/navdrawer/navdrawer"], returnFirstDependency); + define('scroller', [bowerPath + '/scroller'], returnFirstDependency); + define('navdrawer', [bowerPath + '/navdrawer/navdrawer'], returnFirstDependency); - define("emby-button", [elementsPath + "/emby-button/emby-button"], returnFirstDependency); - define("paper-icon-button-light", [elementsPath + "/emby-button/paper-icon-button-light"], returnFirstDependency); - define("emby-checkbox", [elementsPath + "/emby-checkbox/emby-checkbox"], returnFirstDependency); - define("emby-collapse", [elementsPath + "/emby-collapse/emby-collapse"], returnFirstDependency); - define("emby-input", [elementsPath + "/emby-input/emby-input"], returnFirstDependency); - define("emby-progressring", [elementsPath + "/emby-progressring/emby-progressring"], returnFirstDependency); - define("emby-radio", [elementsPath + "/emby-radio/emby-radio"], returnFirstDependency); - define("emby-select", [elementsPath + "/emby-select/emby-select"], returnFirstDependency); - define("emby-slider", [elementsPath + "/emby-slider/emby-slider"], returnFirstDependency); - define("emby-textarea", [elementsPath + "/emby-textarea/emby-textarea"], returnFirstDependency); - define("emby-toggle", [elementsPath + "/emby-toggle/emby-toggle"], returnFirstDependency); - define("emby-scroller", [elementsPath + "/emby-scroller/emby-scroller"], returnFirstDependency); - define("emby-tabs", [elementsPath + "/emby-tabs/emby-tabs"], returnFirstDependency); - define("emby-scrollbuttons", [elementsPath + "/emby-scrollbuttons/emby-scrollbuttons"], returnFirstDependency); - define("emby-itemrefreshindicator", [elementsPath + "/emby-itemrefreshindicator/emby-itemrefreshindicator"], returnFirstDependency); - define("emby-itemscontainer", [elementsPath + "/emby-itemscontainer/emby-itemscontainer"], returnFirstDependency); - define("emby-playstatebutton", [elementsPath + "/emby-playstatebutton/emby-playstatebutton"], returnFirstDependency); - define("emby-ratingbutton", [elementsPath + "/emby-ratingbutton/emby-ratingbutton"], returnFirstDependency); - define("emby-progressbar", [elementsPath + "/emby-progressbar/emby-progressbar"], returnFirstDependency); - define("emby-programcell", [elementsPath + "/emby-programcell/emby-programcell"], returnFirstDependency); + define('emby-button', [elementsPath + '/emby-button/emby-button'], returnFirstDependency); + define('paper-icon-button-light', [elementsPath + '/emby-button/paper-icon-button-light'], returnFirstDependency); + define('emby-checkbox', [elementsPath + '/emby-checkbox/emby-checkbox'], returnFirstDependency); + define('emby-collapse', [elementsPath + '/emby-collapse/emby-collapse'], returnFirstDependency); + define('emby-input', [elementsPath + '/emby-input/emby-input'], returnFirstDependency); + define('emby-progressring', [elementsPath + '/emby-progressring/emby-progressring'], returnFirstDependency); + define('emby-radio', [elementsPath + '/emby-radio/emby-radio'], returnFirstDependency); + define('emby-select', [elementsPath + '/emby-select/emby-select'], returnFirstDependency); + define('emby-slider', [elementsPath + '/emby-slider/emby-slider'], returnFirstDependency); + define('emby-textarea', [elementsPath + '/emby-textarea/emby-textarea'], returnFirstDependency); + define('emby-toggle', [elementsPath + '/emby-toggle/emby-toggle'], returnFirstDependency); + define('emby-scroller', [elementsPath + '/emby-scroller/emby-scroller'], returnFirstDependency); + define('emby-tabs', [elementsPath + '/emby-tabs/emby-tabs'], returnFirstDependency); + define('emby-scrollbuttons', [elementsPath + '/emby-scrollbuttons/emby-scrollbuttons'], returnFirstDependency); + define('emby-itemrefreshindicator', [elementsPath + '/emby-itemrefreshindicator/emby-itemrefreshindicator'], returnFirstDependency); + define('emby-itemscontainer', [elementsPath + '/emby-itemscontainer/emby-itemscontainer'], returnFirstDependency); + define('emby-playstatebutton', [elementsPath + '/emby-playstatebutton/emby-playstatebutton'], returnFirstDependency); + define('emby-ratingbutton', [elementsPath + '/emby-ratingbutton/emby-ratingbutton'], returnFirstDependency); + define('emby-progressbar', [elementsPath + '/emby-progressbar/emby-progressbar'], returnFirstDependency); + define('emby-programcell', [elementsPath + '/emby-programcell/emby-programcell'], returnFirstDependency); - define("webSettings", [scriptsPath + "/settings/webSettings"], returnFirstDependency); - define("appSettings", [scriptsPath + "/settings/appSettings"], returnFirstDependency); - define("userSettings", [scriptsPath + "/settings/userSettings"], returnFirstDependency); + define('webSettings', [scriptsPath + '/settings/webSettings'], returnFirstDependency); + define('appSettings', [scriptsPath + '/settings/appSettings'], returnFirstDependency); + define('userSettings', [scriptsPath + '/settings/userSettings'], returnFirstDependency); - define("chromecastHelper", [componentsPath + "/chromecast/chromecasthelpers"], returnFirstDependency); - define("mediaSession", [componentsPath + "/playback/mediasession"], returnFirstDependency); - define("actionsheet", [componentsPath + "/actionsheet/actionsheet"], returnFirstDependency); - define("tunerPicker", [componentsPath + "/tunerpicker"], returnFirstDependency); - define("mainTabsManager", [componentsPath + "/maintabsmanager"], returnFirstDependency); - define("imageLoader", [componentsPath + "/images/imageLoader"], returnFirstDependency); - define("directorybrowser", [componentsPath + "/directorybrowser/directorybrowser"], returnFirstDependency); - define("metadataEditor", [componentsPath + "/metadataeditor/metadataeditor"], returnFirstDependency); - define("personEditor", [componentsPath + "/metadataeditor/personeditor"], returnFirstDependency); - define("playerSelectionMenu", [componentsPath + "/playback/playerSelectionMenu"], returnFirstDependency); - define("playerSettingsMenu", [componentsPath + "/playback/playersettingsmenu"], returnFirstDependency); - define("playMethodHelper", [componentsPath + "/playback/playmethodhelper"], returnFirstDependency); - define("brightnessOsd", [componentsPath + "/playback/brightnessosd"], returnFirstDependency); - define("alphaNumericShortcuts", [scriptsPath + "/alphanumericshortcuts"], returnFirstDependency); - define("multiSelect", [componentsPath + "/multiselect/multiselect"], returnFirstDependency); - define("alphaPicker", [componentsPath + "/alphapicker/alphapicker"], returnFirstDependency); - define("tabbedView", [componentsPath + "/tabbedview/tabbedview"], returnFirstDependency); - define("itemsTab", [componentsPath + "/tabbedview/itemstab"], returnFirstDependency); - define("collectionEditor", [componentsPath + "/collectioneditor/collectioneditor"], returnFirstDependency); - define("serverRestartDialog", [componentsPath + "/serverRestartDialog"], returnFirstDependency); - define("playlistEditor", [componentsPath + "/playlisteditor/playlisteditor"], returnFirstDependency); - define("recordingCreator", [componentsPath + "/recordingcreator/recordingcreator"], returnFirstDependency); - define("recordingEditor", [componentsPath + "/recordingcreator/recordingeditor"], returnFirstDependency); - define("seriesRecordingEditor", [componentsPath + "/recordingcreator/seriesrecordingeditor"], returnFirstDependency); - define("recordingFields", [componentsPath + "/recordingcreator/recordingfields"], returnFirstDependency); - define("recordingButton", [componentsPath + "/recordingcreator/recordingbutton"], returnFirstDependency); - define("recordingHelper", [componentsPath + "/recordingcreator/recordinghelper"], returnFirstDependency); - define("subtitleEditor", [componentsPath + "/subtitleeditor/subtitleeditor"], returnFirstDependency); - define("subtitleSync", [componentsPath + "/subtitlesync/subtitlesync"], returnFirstDependency); - define("itemIdentifier", [componentsPath + "/itemidentifier/itemidentifier"], returnFirstDependency); - define("itemMediaInfo", [componentsPath + "/itemMediaInfo/itemMediaInfo"], returnFirstDependency); - define("mediaInfo", [componentsPath + "/mediainfo/mediainfo"], returnFirstDependency); - define("itemContextMenu", [componentsPath + "/itemcontextmenu"], returnFirstDependency); - define("imageEditor", [componentsPath + "/imageeditor/imageeditor"], returnFirstDependency); - define("imageDownloader", [componentsPath + "/imagedownloader/imagedownloader"], returnFirstDependency); - define("dom", [scriptsPath + "/dom"], returnFirstDependency); - define("playerStats", [componentsPath + "/playerstats/playerstats"], returnFirstDependency); - define("searchFields", [componentsPath + "/search/searchfields"], returnFirstDependency); - define("searchResults", [componentsPath + "/search/searchresults"], returnFirstDependency); - define("upNextDialog", [componentsPath + "/upnextdialog/upnextdialog"], returnFirstDependency); - define("subtitleAppearanceHelper", [componentsPath + "/subtitlesettings/subtitleappearancehelper"], returnFirstDependency); - define("subtitleSettings", [componentsPath + "/subtitlesettings/subtitlesettings"], returnFirstDependency); - define("displaySettings", [componentsPath + "/displaysettings/displaysettings"], returnFirstDependency); - define("playbackSettings", [componentsPath + "/playbacksettings/playbacksettings"], returnFirstDependency); - define("homescreenSettings", [componentsPath + "/homescreensettings/homescreensettings"], returnFirstDependency); - define("playbackManager", [componentsPath + "/playback/playbackmanager"], getPlaybackManager); - define("layoutManager", [componentsPath + "/layoutManager", "apphost"], getLayoutManager); - define("homeSections", [componentsPath + "/homesections/homesections"], returnFirstDependency); - define("playMenu", [componentsPath + "/playmenu"], returnFirstDependency); - define("refreshDialog", [componentsPath + "/refreshdialog/refreshdialog"], returnFirstDependency); - define("backdrop", [componentsPath + "/backdrop/backdrop"], returnFirstDependency); - define("fetchHelper", [componentsPath + "/fetchhelper"], returnFirstDependency); - define("cardBuilder", [componentsPath + "/cardbuilder/cardBuilder"], returnFirstDependency); - define("peoplecardbuilder", [componentsPath + "/cardbuilder/peoplecardbuilder"], returnFirstDependency); - define("chaptercardbuilder", [componentsPath + "/cardbuilder/chaptercardbuilder"], returnFirstDependency); - define("deleteHelper", [componentsPath + "/deletehelper"], returnFirstDependency); - define("tvguide", [componentsPath + "/guide/guide"], returnFirstDependency); - define("guide-settings-dialog", [componentsPath + "/guide/guide-settings"], returnFirstDependency); - define("loadingDialog", [componentsPath + "/loadingdialog/loadingdialog"], returnFirstDependency); - define("viewManager", [componentsPath + "/viewManager/viewManager"], function (viewManager) { + define('chromecastHelper', [componentsPath + '/chromecast/chromecasthelpers'], returnFirstDependency); + define('mediaSession', [componentsPath + '/playback/mediasession'], returnFirstDependency); + define('actionsheet', [componentsPath + '/actionsheet/actionsheet'], returnFirstDependency); + define('tunerPicker', [componentsPath + '/tunerpicker'], returnFirstDependency); + define('mainTabsManager', [componentsPath + '/maintabsmanager'], returnFirstDependency); + define('imageLoader', [componentsPath + '/images/imageLoader'], returnFirstDependency); + define('directorybrowser', [componentsPath + '/directorybrowser/directorybrowser'], returnFirstDependency); + define('metadataEditor', [componentsPath + '/metadataeditor/metadataeditor'], returnFirstDependency); + define('personEditor', [componentsPath + '/metadataeditor/personeditor'], returnFirstDependency); + define('playerSelectionMenu', [componentsPath + '/playback/playerSelectionMenu'], returnFirstDependency); + define('playerSettingsMenu', [componentsPath + '/playback/playersettingsmenu'], returnFirstDependency); + define('playMethodHelper', [componentsPath + '/playback/playmethodhelper'], returnFirstDependency); + define('brightnessOsd', [componentsPath + '/playback/brightnessosd'], returnFirstDependency); + define('alphaNumericShortcuts', [scriptsPath + '/alphanumericshortcuts'], returnFirstDependency); + define('multiSelect', [componentsPath + '/multiselect/multiselect'], returnFirstDependency); + define('alphaPicker', [componentsPath + '/alphapicker/alphapicker'], returnFirstDependency); + define('tabbedView', [componentsPath + '/tabbedview/tabbedview'], returnFirstDependency); + define('itemsTab', [componentsPath + '/tabbedview/itemstab'], returnFirstDependency); + define('collectionEditor', [componentsPath + '/collectioneditor/collectioneditor'], returnFirstDependency); + define('serverRestartDialog', [componentsPath + '/serverRestartDialog'], returnFirstDependency); + define('playlistEditor', [componentsPath + '/playlisteditor/playlisteditor'], returnFirstDependency); + define('recordingCreator', [componentsPath + '/recordingcreator/recordingcreator'], returnFirstDependency); + define('recordingEditor', [componentsPath + '/recordingcreator/recordingeditor'], returnFirstDependency); + define('seriesRecordingEditor', [componentsPath + '/recordingcreator/seriesrecordingeditor'], returnFirstDependency); + define('recordingFields', [componentsPath + '/recordingcreator/recordingfields'], returnFirstDependency); + define('recordingButton', [componentsPath + '/recordingcreator/recordingbutton'], returnFirstDependency); + define('recordingHelper', [componentsPath + '/recordingcreator/recordinghelper'], returnFirstDependency); + define('subtitleEditor', [componentsPath + '/subtitleeditor/subtitleeditor'], returnFirstDependency); + define('subtitleSync', [componentsPath + '/subtitlesync/subtitlesync'], returnFirstDependency); + define('itemIdentifier', [componentsPath + '/itemidentifier/itemidentifier'], returnFirstDependency); + define('itemMediaInfo', [componentsPath + '/itemMediaInfo/itemMediaInfo'], returnFirstDependency); + define('mediaInfo', [componentsPath + '/mediainfo/mediainfo'], returnFirstDependency); + define('itemContextMenu', [componentsPath + '/itemcontextmenu'], returnFirstDependency); + define('imageEditor', [componentsPath + '/imageeditor/imageeditor'], returnFirstDependency); + define('imageDownloader', [componentsPath + '/imagedownloader/imagedownloader'], returnFirstDependency); + define('dom', [scriptsPath + '/dom'], returnFirstDependency); + define('playerStats', [componentsPath + '/playerstats/playerstats'], returnFirstDependency); + define('searchFields', [componentsPath + '/search/searchfields'], returnFirstDependency); + define('searchResults', [componentsPath + '/search/searchresults'], returnFirstDependency); + define('upNextDialog', [componentsPath + '/upnextdialog/upnextdialog'], returnFirstDependency); + define('subtitleAppearanceHelper', [componentsPath + '/subtitlesettings/subtitleappearancehelper'], returnFirstDependency); + define('subtitleSettings', [componentsPath + '/subtitlesettings/subtitlesettings'], returnFirstDependency); + define('displaySettings', [componentsPath + '/displaysettings/displaysettings'], returnFirstDependency); + define('playbackSettings', [componentsPath + '/playbacksettings/playbacksettings'], returnFirstDependency); + define('homescreenSettings', [componentsPath + '/homescreensettings/homescreensettings'], returnFirstDependency); + define('playbackManager', [componentsPath + '/playback/playbackmanager'], getPlaybackManager); + define('layoutManager', [componentsPath + '/layoutManager', 'apphost'], getLayoutManager); + define('homeSections', [componentsPath + '/homesections/homesections'], returnFirstDependency); + define('playMenu', [componentsPath + '/playmenu'], returnFirstDependency); + define('refreshDialog', [componentsPath + '/refreshdialog/refreshdialog'], returnFirstDependency); + define('backdrop', [componentsPath + '/backdrop/backdrop'], returnFirstDependency); + define('fetchHelper', [componentsPath + '/fetchhelper'], returnFirstDependency); + define('cardBuilder', [componentsPath + '/cardbuilder/cardBuilder'], returnFirstDependency); + define('peoplecardbuilder', [componentsPath + '/cardbuilder/peoplecardbuilder'], returnFirstDependency); + define('chaptercardbuilder', [componentsPath + '/cardbuilder/chaptercardbuilder'], returnFirstDependency); + define('deleteHelper', [componentsPath + '/deletehelper'], returnFirstDependency); + define('tvguide', [componentsPath + '/guide/guide'], returnFirstDependency); + define('guide-settings-dialog', [componentsPath + '/guide/guide-settings'], returnFirstDependency); + define('loadingDialog', [componentsPath + '/loadingdialog/loadingdialog'], returnFirstDependency); + define('viewManager', [componentsPath + '/viewManager/viewManager'], function (viewManager) { window.ViewManager = viewManager; viewManager.dispatchPageEvents(true); return viewManager; }); - define("slideshow", [componentsPath + "/slideshow/slideshow"], returnFirstDependency); - define("focusPreventScroll", ["legacy/focusPreventScroll"], returnFirstDependency); - define("userdataButtons", [componentsPath + "/userdatabuttons/userdatabuttons"], returnFirstDependency); - define("listView", [componentsPath + "/listview/listview"], returnFirstDependency); - define("indicators", [componentsPath + "/indicators/indicators"], returnFirstDependency); - define("viewSettings", [componentsPath + "/viewsettings/viewsettings"], returnFirstDependency); - define("filterMenu", [componentsPath + "/filtermenu/filtermenu"], returnFirstDependency); - define("sortMenu", [componentsPath + "/sortmenu/sortmenu"], returnFirstDependency); - define("idb", [componentsPath + "/idb"], returnFirstDependency); - define("sanitizefilename", [componentsPath + "/sanitizefilename"], returnFirstDependency); - define("toast", [componentsPath + "/toast/toast"], returnFirstDependency); - define("scrollHelper", [componentsPath + "/scrollhelper"], returnFirstDependency); - define("touchHelper", [componentsPath + "/touchhelper"], returnFirstDependency); - define("imageUploader", [componentsPath + "/imageuploader/imageuploader"], returnFirstDependency); - define("htmlMediaHelper", [componentsPath + "/htmlMediaHelper"], returnFirstDependency); - define("viewContainer", [componentsPath + "/viewContainer"], returnFirstDependency); - define("dialogHelper", [componentsPath + "/dialogHelper/dialogHelper"], returnFirstDependency); - define("serverNotifications", [componentsPath + "/serverNotifications"], returnFirstDependency); - define("skinManager", [componentsPath + "/skinManager"], returnFirstDependency); - define("keyboardnavigation", [scriptsPath + "/keyboardnavigation"], returnFirstDependency); - define("mouseManager", [scriptsPath + "/mouseManager"], returnFirstDependency); - define("scrollManager", [componentsPath + "/scrollManager"], returnFirstDependency); - define("autoFocuser", [componentsPath + "/autoFocuser"], returnFirstDependency); - define("connectionManager", [], function () { + define('slideshow', [componentsPath + '/slideshow/slideshow'], returnFirstDependency); + define('focusPreventScroll', ['legacy/focusPreventScroll'], returnFirstDependency); + define('userdataButtons', [componentsPath + '/userdatabuttons/userdatabuttons'], returnFirstDependency); + define('listView', [componentsPath + '/listview/listview'], returnFirstDependency); + define('indicators', [componentsPath + '/indicators/indicators'], returnFirstDependency); + define('viewSettings', [componentsPath + '/viewsettings/viewsettings'], returnFirstDependency); + define('filterMenu', [componentsPath + '/filtermenu/filtermenu'], returnFirstDependency); + define('sortMenu', [componentsPath + '/sortmenu/sortmenu'], returnFirstDependency); + define('idb', [componentsPath + '/idb'], returnFirstDependency); + define('sanitizefilename', [componentsPath + '/sanitizefilename'], returnFirstDependency); + define('toast', [componentsPath + '/toast/toast'], returnFirstDependency); + define('scrollHelper', [componentsPath + '/scrollhelper'], returnFirstDependency); + define('touchHelper', [componentsPath + '/touchhelper'], returnFirstDependency); + define('imageUploader', [componentsPath + '/imageuploader/imageuploader'], returnFirstDependency); + define('htmlMediaHelper', [componentsPath + '/htmlMediaHelper'], returnFirstDependency); + define('viewContainer', [componentsPath + '/viewContainer'], returnFirstDependency); + define('dialogHelper', [componentsPath + '/dialogHelper/dialogHelper'], returnFirstDependency); + define('serverNotifications', [componentsPath + '/serverNotifications'], returnFirstDependency); + define('skinManager', [componentsPath + '/skinManager'], returnFirstDependency); + define('keyboardnavigation', [scriptsPath + '/keyboardnavigation'], returnFirstDependency); + define('mouseManager', [scriptsPath + '/mouseManager'], returnFirstDependency); + define('scrollManager', [componentsPath + '/scrollManager'], returnFirstDependency); + define('autoFocuser', [componentsPath + '/autoFocuser'], returnFirstDependency); + define('connectionManager', [], function () { return ConnectionManager; }); - define("apiClientResolver", [], function () { + define('apiClientResolver', [], function () { return function () { return window.ApiClient; }; }); - define("appRouter", [componentsPath + "/appRouter", "itemHelper"], function (appRouter, itemHelper) { + define('appRouter', [componentsPath + '/appRouter', 'itemHelper'], function (appRouter, itemHelper) { function showItem(item, serverId, options) { - if ("string" == typeof item) { - require(["connectionManager"], function (connectionManager) { + if ('string' == typeof item) { + require(['connectionManager'], function (connectionManager) { var apiClient = connectionManager.currentApiClient(); apiClient.getItem(apiClient.getCurrentUserId(), item).then(function (item) { appRouter.showItem(item, options); @@ -898,58 +898,58 @@ var AppInfo = {}; options = arguments[1]; } - appRouter.show("/" + appRouter.getRouteUrl(item, options), { + appRouter.show('/' + appRouter.getRouteUrl(item, options), { item: item }); } } appRouter.showLocalLogin = function (serverId, manualLogin) { - Dashboard.navigate("login.html?serverid=" + serverId); + Dashboard.navigate('login.html?serverid=' + serverId); }; appRouter.showVideoOsd = function () { - return Dashboard.navigate("videoosd.html"); + return Dashboard.navigate('videoosd.html'); }; appRouter.showSelectServer = function () { - Dashboard.navigate(AppInfo.isNativeApp ? "selectserver.html" : "login.html"); + Dashboard.navigate(AppInfo.isNativeApp ? 'selectserver.html' : 'login.html'); }; appRouter.showWelcome = function () { - Dashboard.navigate(AppInfo.isNativeApp ? "selectserver.html" : "login.html"); + Dashboard.navigate(AppInfo.isNativeApp ? 'selectserver.html' : 'login.html'); }; appRouter.showSettings = function () { - Dashboard.navigate("mypreferencesmenu.html"); + Dashboard.navigate('mypreferencesmenu.html'); }; appRouter.showGuide = function () { - Dashboard.navigate("livetv.html?tab=1"); + Dashboard.navigate('livetv.html?tab=1'); }; appRouter.goHome = function () { - Dashboard.navigate("home.html"); + Dashboard.navigate('home.html'); }; appRouter.showSearch = function () { - Dashboard.navigate("search.html"); + Dashboard.navigate('search.html'); }; appRouter.showLiveTV = function () { - Dashboard.navigate("livetv.html"); + Dashboard.navigate('livetv.html'); }; appRouter.showRecordedTV = function () { - Dashboard.navigate("livetv.html?tab=3"); + Dashboard.navigate('livetv.html?tab=3'); }; appRouter.showFavorites = function () { - Dashboard.navigate("home.html?tab=1"); + Dashboard.navigate('home.html?tab=1'); }; appRouter.showSettings = function () { - Dashboard.navigate("mypreferencesmenu.html"); + Dashboard.navigate('mypreferencesmenu.html'); }; appRouter.setTitle = function (title) { @@ -958,7 +958,7 @@ var AppInfo = {}; appRouter.getRouteUrl = function (item, options) { if (!item) { - throw new Error("item cannot be null"); + throw new Error('item cannot be null'); } if (item.url) { @@ -976,168 +976,168 @@ var AppInfo = {}; var itemType = item.Type || (options ? options.itemType : null); var serverId = item.ServerId || options.serverId; - if ("settings" === item) { - return "mypreferencesmenu.html"; + if ('settings' === item) { + return 'mypreferencesmenu.html'; } - if ("wizard" === item) { - return "wizardstart.html"; + if ('wizard' === item) { + return 'wizardstart.html'; } - if ("manageserver" === item) { - return "dashboard.html"; + if ('manageserver' === item) { + return 'dashboard.html'; } - if ("recordedtv" === item) { - return "livetv.html?tab=3&serverId=" + options.serverId; + if ('recordedtv' === item) { + return 'livetv.html?tab=3&serverId=' + options.serverId; } - if ("nextup" === item) { - return "list.html?type=nextup&serverId=" + options.serverId; + if ('nextup' === item) { + return 'list.html?type=nextup&serverId=' + options.serverId; } - if ("list" === item) { - var url = "list.html?serverId=" + options.serverId + "&type=" + options.itemTypes; + if ('list' === item) { + var url = 'list.html?serverId=' + options.serverId + '&type=' + options.itemTypes; if (options.isFavorite) { - url += "&IsFavorite=true"; + url += '&IsFavorite=true'; } return url; } - if ("livetv" === item) { - if ("programs" === options.section) { - return "livetv.html?tab=0&serverId=" + options.serverId; + if ('livetv' === item) { + if ('programs' === options.section) { + return 'livetv.html?tab=0&serverId=' + options.serverId; } - if ("guide" === options.section) { - return "livetv.html?tab=1&serverId=" + options.serverId; + if ('guide' === options.section) { + return 'livetv.html?tab=1&serverId=' + options.serverId; } - if ("movies" === options.section) { - return "list.html?type=Programs&IsMovie=true&serverId=" + options.serverId; + if ('movies' === options.section) { + return 'list.html?type=Programs&IsMovie=true&serverId=' + options.serverId; } - if ("shows" === options.section) { - return "list.html?type=Programs&IsSeries=true&IsMovie=false&IsNews=false&serverId=" + options.serverId; + if ('shows' === options.section) { + return 'list.html?type=Programs&IsSeries=true&IsMovie=false&IsNews=false&serverId=' + options.serverId; } - if ("sports" === options.section) { - return "list.html?type=Programs&IsSports=true&serverId=" + options.serverId; + if ('sports' === options.section) { + return 'list.html?type=Programs&IsSports=true&serverId=' + options.serverId; } - if ("kids" === options.section) { - return "list.html?type=Programs&IsKids=true&serverId=" + options.serverId; + if ('kids' === options.section) { + return 'list.html?type=Programs&IsKids=true&serverId=' + options.serverId; } - if ("news" === options.section) { - return "list.html?type=Programs&IsNews=true&serverId=" + options.serverId; + if ('news' === options.section) { + return 'list.html?type=Programs&IsNews=true&serverId=' + options.serverId; } - if ("onnow" === options.section) { - return "list.html?type=Programs&IsAiring=true&serverId=" + options.serverId; + if ('onnow' === options.section) { + return 'list.html?type=Programs&IsAiring=true&serverId=' + options.serverId; } - if ("dvrschedule" === options.section) { - return "livetv.html?tab=4&serverId=" + options.serverId; + if ('dvrschedule' === options.section) { + return 'livetv.html?tab=4&serverId=' + options.serverId; } - if ("seriesrecording" === options.section) { - return "livetv.html?tab=5&serverId=" + options.serverId; + if ('seriesrecording' === options.section) { + return 'livetv.html?tab=5&serverId=' + options.serverId; } - return "livetv.html?serverId=" + options.serverId; + return 'livetv.html?serverId=' + options.serverId; } - if ("SeriesTimer" == itemType) { - return "itemdetails.html?seriesTimerId=" + id + "&serverId=" + serverId; + if ('SeriesTimer' == itemType) { + return 'itemdetails.html?seriesTimerId=' + id + '&serverId=' + serverId; } - if ("livetv" == item.CollectionType) { - return "livetv.html"; + if ('livetv' == item.CollectionType) { + return 'livetv.html'; } - if ("Genre" === item.Type) { - url = "list.html?genreId=" + item.Id + "&serverId=" + serverId; + if ('Genre' === item.Type) { + url = 'list.html?genreId=' + item.Id + '&serverId=' + serverId; - if ("livetv" === context) { - url += "&type=Programs"; + if ('livetv' === context) { + url += '&type=Programs'; } if (options.parentId) { - url += "&parentId=" + options.parentId; + url += '&parentId=' + options.parentId; } return url; } - if ("MusicGenre" === item.Type) { - url = "list.html?musicGenreId=" + item.Id + "&serverId=" + serverId; + if ('MusicGenre' === item.Type) { + url = 'list.html?musicGenreId=' + item.Id + '&serverId=' + serverId; if (options.parentId) { - url += "&parentId=" + options.parentId; + url += '&parentId=' + options.parentId; } return url; } - if ("Studio" === item.Type) { - url = "list.html?studioId=" + item.Id + "&serverId=" + serverId; + if ('Studio' === item.Type) { + url = 'list.html?studioId=' + item.Id + '&serverId=' + serverId; if (options.parentId) { - url += "&parentId=" + options.parentId; + url += '&parentId=' + options.parentId; } return url; } - if ("folders" !== context && !itemHelper.isLocalItem(item)) { - if ("movies" == item.CollectionType) { - url = "movies.html?topParentId=" + item.Id; + if ('folders' !== context && !itemHelper.isLocalItem(item)) { + if ('movies' == item.CollectionType) { + url = 'movies.html?topParentId=' + item.Id; - if (options && "latest" === options.section) { - url += "&tab=1"; + if (options && 'latest' === options.section) { + url += '&tab=1'; } return url; } - if ("tvshows" == item.CollectionType) { - url = "tv.html?topParentId=" + item.Id; + if ('tvshows' == item.CollectionType) { + url = 'tv.html?topParentId=' + item.Id; - if (options && "latest" === options.section) { - url += "&tab=2"; + if (options && 'latest' === options.section) { + url += '&tab=2'; } return url; } - if ("music" == item.CollectionType) { - return "music.html?topParentId=" + item.Id; + if ('music' == item.CollectionType) { + return 'music.html?topParentId=' + item.Id; } } - var itemTypes = ["Playlist", "TvChannel", "Program", "BoxSet", "MusicAlbum", "MusicGenre", "Person", "Recording", "MusicArtist"]; + var itemTypes = ['Playlist', 'TvChannel', 'Program', 'BoxSet', 'MusicAlbum', 'MusicGenre', 'Person', 'Recording', 'MusicArtist']; if (itemTypes.indexOf(itemType) >= 0) { - return "itemdetails.html?id=" + id + "&serverId=" + serverId; + return 'itemdetails.html?id=' + id + '&serverId=' + serverId; } - var contextSuffix = context ? "&context=" + context : ""; + var contextSuffix = context ? '&context=' + context : ''; - if ("Series" == itemType || "Season" == itemType || "Episode" == itemType) { - return "itemdetails.html?id=" + id + contextSuffix + "&serverId=" + serverId; + if ('Series' == itemType || 'Season' == itemType || 'Episode' == itemType) { + return 'itemdetails.html?id=' + id + contextSuffix + '&serverId=' + serverId; } if (item.IsFolder) { if (id) { - return "list.html?parentId=" + id + "&serverId=" + serverId; + return 'list.html?parentId=' + id + '&serverId=' + serverId; } - return "#"; + return '#'; } - return "itemdetails.html?id=" + id + "&serverId=" + serverId; + return 'itemdetails.html?id=' + id + '&serverId=' + serverId; }; appRouter.showItem = showItem; @@ -1145,13 +1145,13 @@ var AppInfo = {}; }); })(); - return require(["browser"], onWebComponentsReady); + return require(['browser'], onWebComponentsReady); }(); -pageClassOn("viewshow", "standalonePage", function () { - document.querySelector(".skinHeader").classList.add("noHeaderRight"); +pageClassOn('viewshow', 'standalonePage', function () { + document.querySelector('.skinHeader').classList.add('noHeaderRight'); }); -pageClassOn("viewhide", "standalonePage", function () { - document.querySelector(".skinHeader").classList.remove("noHeaderRight"); +pageClassOn('viewhide', 'standalonePage', function () { + document.querySelector('.skinHeader').classList.remove('noHeaderRight'); }); diff --git a/src/scripts/taskbutton.js b/src/scripts/taskbutton.js index 6159ad9fe1..8facaf8900 100644 --- a/src/scripts/taskbutton.js +++ b/src/scripts/taskbutton.js @@ -1,5 +1,5 @@ -define(["events", "userSettings", "serverNotifications", "connectionManager", "globalize", "emby-button"], function (events, userSettings, serverNotifications, connectionManager, globalize) { - "use strict"; +define(['events', 'userSettings', 'serverNotifications', 'connectionManager', 'globalize', 'emby-button'], function (events, userSettings, serverNotifications, connectionManager, globalize) { + 'use strict'; return function (options) { function pollTasks() { @@ -26,12 +26,12 @@ define(["events", "userSettings", "serverNotifications", "connectionManager", "g } if (task.State == 'Idle') { - button.removeAttribute("disabled"); + button.removeAttribute('disabled'); } else { - button.setAttribute("disabled", "disabled"); + button.setAttribute('disabled', 'disabled'); } - button.setAttribute("data-taskid", task.Id); + button.setAttribute('data-taskid', task.Id); var progress = (task.CurrentProgressPercentage || 0).toFixed(1); if (options.progressElem) { @@ -47,11 +47,11 @@ define(["events", "userSettings", "serverNotifications", "connectionManager", "g if (options.lastResultElem) { var lastResult = task.LastExecutionResult ? task.LastExecutionResult.Status : ''; - if (lastResult == "Failed") { + if (lastResult == 'Failed') { options.lastResultElem.html('(' + globalize.translate('LabelFailed') + ')'); - } else if (lastResult == "Cancelled") { + } else if (lastResult == 'Cancelled') { options.lastResultElem.html('(' + globalize.translate('LabelCancelled') + ')'); - } else if (lastResult == "Aborted") { + } else if (lastResult == 'Aborted') { options.lastResultElem.html('' + globalize.translate('LabelAbortedByServerShutdown') + ''); } else { options.lastResultElem.html(lastResult); @@ -64,7 +64,7 @@ define(["events", "userSettings", "serverNotifications", "connectionManager", "g } function onButtonClick() { - onScheduledTaskMessageConfirmed(this.getAttribute("data-taskid")); + onScheduledTaskMessageConfirmed(this.getAttribute('data-taskid')); } function onScheduledTasksUpdate(e, apiClient, info) { @@ -89,12 +89,12 @@ define(["events", "userSettings", "serverNotifications", "connectionManager", "g if (pollInterval) { clearInterval(pollInterval); } - apiClient.sendMessage("ScheduledTasksInfoStart", "1000,1000"); + apiClient.sendMessage('ScheduledTasksInfoStart', '1000,1000'); pollInterval = setInterval(onPollIntervalFired, 5000); } function stopInterval() { - connectionManager.getApiClient(serverId).sendMessage("ScheduledTasksInfoStop"); + connectionManager.getApiClient(serverId).sendMessage('ScheduledTasksInfoStop'); if (pollInterval) { clearInterval(pollInterval); @@ -102,18 +102,18 @@ define(["events", "userSettings", "serverNotifications", "connectionManager", "g } if (options.panel) { - options.panel.classList.add("hide"); + options.panel.classList.add('hide'); } if (options.mode == 'off') { - button.removeEventListener("click", onButtonClick); - events.off(serverNotifications, "ScheduledTasksInfo", onScheduledTasksUpdate); + button.removeEventListener('click', onButtonClick); + events.off(serverNotifications, 'ScheduledTasksInfo', onScheduledTasksUpdate); stopInterval(); } else { - button.addEventListener("click", onButtonClick); + button.addEventListener('click', onButtonClick); pollTasks(); startInterval(); - events.on(serverNotifications, "ScheduledTasksInfo", onScheduledTasksUpdate); + events.on(serverNotifications, 'ScheduledTasksInfo', onScheduledTasksUpdate); } }; }); diff --git a/src/scripts/themeloader.js b/src/scripts/themeloader.js index ea7ff57f9a..f75d6d0e29 100644 --- a/src/scripts/themeloader.js +++ b/src/scripts/themeloader.js @@ -1,19 +1,19 @@ -define(["userSettings", "skinManager", "connectionManager", "events"], function (userSettings, skinManager, connectionManager, events) { - "use strict"; +define(['userSettings', 'skinManager', 'connectionManager', 'events'], function (userSettings, skinManager, connectionManager, events) { + 'use strict'; var currentViewType; - pageClassOn("viewbeforeshow", "page", function () { + pageClassOn('viewbeforeshow', 'page', function () { var classList = this.classList; - var viewType = classList.contains("type-interior") || classList.contains("wizardPage") ? "a" : "b"; + var viewType = classList.contains('type-interior') || classList.contains('wizardPage') ? 'a' : 'b'; if (viewType !== currentViewType) { currentViewType = viewType; var theme; var context; - if ("a" === viewType) { + if ('a' === viewType) { theme = userSettings.dashboardTheme(); - context = "serverdashboard"; + context = 'serverdashboard'; } else { theme = userSettings.theme(); } @@ -21,7 +21,7 @@ define(["userSettings", "skinManager", "connectionManager", "events"], function skinManager.setTheme(theme, context); } }); - events.on(connectionManager, "localusersignedin", function (e, user) { + events.on(connectionManager, 'localusersignedin', function (e, user) { currentViewType = null; }); }); diff --git a/src/serviceworker.js b/src/serviceworker.js index c43d1f4b4e..2210183148 100644 --- a/src/serviceworker.js +++ b/src/serviceworker.js @@ -1,2 +1,2 @@ /* eslint-env serviceworker */ -importScripts("components/serviceworker/notifications.js"); +importScripts('components/serviceworker/notifications.js'); diff --git a/src/standalone.js b/src/standalone.js index 04d40d6b11..237872703a 100644 --- a/src/standalone.js +++ b/src/standalone.js @@ -1,4 +1,4 @@ (function() { - "use strict"; + 'use strict'; window.appMode = 'standalone'; })(); diff --git a/webpack.common.js b/webpack.common.js index 5d63456830..03beb63a73 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -1,37 +1,37 @@ -const path = require("path"); +const path = require('path'); -const CopyPlugin = require("copy-webpack-plugin"); +const CopyPlugin = require('copy-webpack-plugin'); const Assets = [ - "alameda/alameda.js", - "native-promise-only/npo.js", - "libass-wasm/dist/js/subtitles-octopus-worker.js", - "libass-wasm/dist/js/subtitles-octopus-worker.data", - "libass-wasm/dist/js/subtitles-octopus-worker.wasm", - "libass-wasm/dist/js/subtitles-octopus-worker-legacy.js", - "libass-wasm/dist/js/subtitles-octopus-worker-legacy.data", - "libass-wasm/dist/js/subtitles-octopus-worker-legacy.js.mem" + 'alameda/alameda.js', + 'native-promise-only/npo.js', + 'libass-wasm/dist/js/subtitles-octopus-worker.js', + 'libass-wasm/dist/js/subtitles-octopus-worker.data', + 'libass-wasm/dist/js/subtitles-octopus-worker.wasm', + 'libass-wasm/dist/js/subtitles-octopus-worker-legacy.js', + 'libass-wasm/dist/js/subtitles-octopus-worker-legacy.data', + 'libass-wasm/dist/js/subtitles-octopus-worker-legacy.js.mem' ]; module.exports = { - context: path.resolve(__dirname, "src"), - entry: "./bundle.js", + context: path.resolve(__dirname, 'src'), + entry: './bundle.js', resolve: { modules: [ - path.resolve(__dirname, "node_modules") + path.resolve(__dirname, 'node_modules') ] }, output: { - filename: "bundle.js", - path: path.resolve(__dirname, "dist"), - libraryTarget: "amd-require" + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + libraryTarget: 'amd-require' }, plugins: [ new CopyPlugin( Assets.map(asset => { return { from: path.resolve(__dirname, `./node_modules/${asset}`), - to: path.resolve(__dirname, "./dist/libraries") + to: path.resolve(__dirname, './dist/libraries') }; }) ) diff --git a/webpack.dev.js b/webpack.dev.js index d0a8c69b8f..4545cc7c34 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -1,13 +1,13 @@ -const path = require("path"); -const common = require("./webpack.common"); -const merge = require("webpack-merge"); +const path = require('path'); +const common = require('./webpack.common'); +const merge = require('webpack-merge'); module.exports = merge(common, { - mode: "development", + mode: 'development', output: { - filename: "bundle.js", - path: path.resolve(__dirname, "dist"), - libraryTarget: "amd-require" + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + libraryTarget: 'amd-require' }, devtool: '#inline-source-map', module: { @@ -15,15 +15,15 @@ module.exports = merge(common, { { test: /\.js$/, exclude: /node_modules[\\/](?!query-string|split-on-first|strict-uri-encode)/, - loader: "babel-loader" + loader: 'babel-loader' }, { test: /\.css$/i, - use: ["style-loader", "css-loader", "postcss-loader"] + use: ['style-loader', 'css-loader', 'postcss-loader'] }, { test: /\.(png|jpg|gif)$/i, - use: ["file-loader"] + use: ['file-loader'] }, { test: /\.(woff|woff2|eot|ttf|otf)$/, diff --git a/webpack.prod.js b/webpack.prod.js index 4405f8f164..582d24be50 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -1,22 +1,22 @@ -const common = require("./webpack.common"); -const merge = require("webpack-merge"); +const common = require('./webpack.common'); +const merge = require('webpack-merge'); module.exports = merge(common, { - mode: "production", + mode: 'production', module: { rules: [ { test: /\.js$/, exclude: /node_modules[\\/](?!query-string|split-on-first|strict-uri-encode)/, - loader: "babel-loader" + loader: 'babel-loader' }, { test: /\.css$/i, - use: ["style-loader", "css-loader", "postcss-loader"] + use: ['style-loader', 'css-loader', 'postcss-loader'] }, { test: /\.(png|jpg|gif)$/i, - use: ["file-loader"] + use: ['file-loader'] }, { test: /\.(woff|woff2|eot|ttf|otf)$/, From 9e09f1bad1f061b32d91a0e7c3daca4f1b96b612 Mon Sep 17 00:00:00 2001 From: amirmasoud Date: Mon, 4 May 2020 05:18:40 +0000 Subject: [PATCH 29/32] Translated using Weblate (Persian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fa/ --- src/strings/fa.json | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/strings/fa.json b/src/strings/fa.json index f244a25872..ba462509eb 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -670,5 +670,25 @@ "Smaller": "کوچکتر", "Small": "کوچک", "ButtonTogglePlaylist": "لیست پخش", - "ButtonToggleContextMenu": "بیشتر" + "ButtonToggleContextMenu": "بیشتر", + "TheseSettingsAffectSubtitlesOnThisDevice": "این تنظیمات روی زیرنویس‌ها در این دستگاه تأثیر می‌گذارد", + "TabStreaming": "در حال پخش", + "TabSettings": "تنظیمات", + "TabServer": "سرور", + "TabSeries": "سریال‌ها", + "TabScheduledTasks": "وظایف زمان بندی شده", + "TabResumeSettings": "ادامه", + "TabResponses": "پاسخ‌ها", + "TabRecordings": "ضبط‌ها", + "TabPlugins": "افزونه‌ها", + "TabPlaylists": "لیست‌های پخش", + "TabPlayback": "پخش", + "TabParentalControl": "رتبه بندی والدین", + "TabOther": "سایر", + "TabNfoSettings": "تنظیمات NFO", + "TabNetworking": "شبکه سازی", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "این تنظیمات همچنین در مورد هر پخش Chromecast که توسط این دستگاه شروع شده است اعمال می شود.", + "SmartSubtitlesHelp": "زیرنویس‌های متناسب با توجه به اولویت زبان بدون در نظر گرفتن زبان صوتی ویدیو پخش می شوند.", + "SkipEpisodesAlreadyInMyLibrary": "قسمت‌هایی که هم اکنون در کتابخانه من موجود است را ضبط نکن", + "SimultaneousConnectionLimitHelp": "حداکثر تعداد پخش‌های مجاز همزمان. ۰ را برای بدون محدودیت وارد کنید." } From 692a649eccbd2dd5f9d6d360eeb4fd741dbad84e Mon Sep 17 00:00:00 2001 From: Rafael Vieira Santos Date: Mon, 4 May 2020 12:33:34 +0000 Subject: [PATCH 30/32] Translated using Weblate (Portuguese (Brazil)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_BR/ --- src/strings/pt-br.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 6a808d090f..16b6e0313c 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1501,5 +1501,7 @@ "AlbumArtist": "Artista do Album", "Album": "Album", "UnsupportedPlayback": "O Jellyfin não pode descriptografar conteúdo protegido por DRM, porém mesmo assim fará uma tentativa para todo tipo de conteúdo, incluindo títulos protegidos. A imagem de alguns arquivos pode aparecer completamente preta devido a criptografia ou outros recursos não suportados, como títulos interativos.", - "MessageUnauthorizedUser": "Você não está autorizado a acessar o servidor neste momento. Por favor, contate o administrador do servidor para mais informações." + "MessageUnauthorizedUser": "Você não está autorizado a acessar o servidor neste momento. Por favor, contate o administrador do servidor para mais informações.", + "ButtonTogglePlaylist": "Playlist", + "ButtonToggleContextMenu": "Mais" } From 484194fccf005c8e4b3ab42320e4312dacd05443 Mon Sep 17 00:00:00 2001 From: Tien Nguyen Date: Mon, 4 May 2020 18:10:49 +0000 Subject: [PATCH 31/32] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 66dabce654..5d9354ae4e 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -433,7 +433,7 @@ "EnableDisplayMirroring": "Cho phép trình chiếu trên thiết bị khác", "HeaderProfileInformation": "Thông Tin Hồ Sơ", "HeaderProfile": "Hồ Sơ", - "HeaderPreferredMetadataLanguage": "Ngôn Ngữ Dữ Liệu Bổ Trợ Yêu Thích", + "HeaderPreferredMetadataLanguage": "Ngôn Ngữ Thông Tin Bổ Trợ Yêu Thích", "HeaderPluginInstallation": "Cài Đặt Plugin", "HeaderPleaseSignIn": "Hãy đăng nhập", "HeaderPlaybackError": "Lỗi Phát Sóng", @@ -530,5 +530,7 @@ "HeaderDeleteItems": "Xoá Những Mục Này", "HeaderDeleteItem": "Xoá Mục Này", "HeaderDeleteDevice": "Xoá Thiết Bị", - "HeaderDefaultRecordingSettings": "Thiết Lập Ghi Âm/Ghi Hình Mặc Định" + "HeaderDefaultRecordingSettings": "Thiết Lập Ghi Âm/Ghi Hình Mặc Định", + "HeaderRecordingOptions": "Tuỳ Chọn Ghi Âm/Ghi Hình", + "HeaderProfileServerSettingsHelp": "Những thông tin này về máy chủ Jellyfin sẽ hiển thị trên các thiết bị phát được kết nối." } From 9c7fdef46b7ac279d7106a9ce46b4ebb6c040881 Mon Sep 17 00:00:00 2001 From: Tien Nguyen Date: Mon, 4 May 2020 18:51:52 +0000 Subject: [PATCH 32/32] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 5d9354ae4e..6847ba40bd 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -532,5 +532,33 @@ "HeaderDeleteDevice": "Xoá Thiết Bị", "HeaderDefaultRecordingSettings": "Thiết Lập Ghi Âm/Ghi Hình Mặc Định", "HeaderRecordingOptions": "Tuỳ Chọn Ghi Âm/Ghi Hình", - "HeaderProfileServerSettingsHelp": "Những thông tin này về máy chủ Jellyfin sẽ hiển thị trên các thiết bị phát được kết nối." + "HeaderProfileServerSettingsHelp": "Những thông tin này về máy chủ Jellyfin sẽ hiển thị trên các thiết bị phát được kết nối.", + "HeaderSettings": "Cài Đặt", + "HeaderServerSettings": "Cài Đặt Máy Chủ", + "HeaderSeriesStatus": "Trạng Thái Series", + "HeaderSeriesOptions": "Tuỳ Chọn Series", + "HeaderSendMessage": "Gửi Tin Nhắn", + "HeaderSelectTranscodingPathHelp": "Hãy chọn đường dẫn để lưu tạm những tập tin chuyển mã. Máy chủ phải có quyền ghi trên thư mục đó.", + "HeaderSelectTranscodingPath": "Chọn Đường Dẫn Chuyển Mã", + "HeaderSelectServerCachePathHelp": "Hãy chọn đường dẫn để lưu tập tin ghi tạm cho máy chủ. Máy chủ phải có quyền ghi trên thư mục đó.", + "HeaderSelectServerCachePath": "Chọn Đường Dẫn Ghi Tạm Cho Máy Chủ", + "HeaderSelectServer": "Chọn Máy Chủ", + "HeaderSelectPath": "Chọn Đường Dẫn", + "HeaderSelectMetadataPathHelp": "Hãy chọn đường dẫn mà bạn muốn lưu thông tin bổ trợ. Máy chủ phải có quyền ghi trên thư mục đó.", + "HeaderSelectMetadataPath": "Chọn Đường Dẫn Thông Tin Bổ Trợ", + "HeaderSelectCertificatePath": "Chọn Đường Dẫn Đến Chứng Chỉ", + "HeaderSecondsValue": "{0} Giây", + "HeaderSeasons": "Phần", + "HeaderSchedule": "Lịch Phát Sóng", + "HeaderScenes": "Phân Cảnh", + "HeaderRunningTasks": "Những Tác Vụ Hoạt Động", + "HeaderRevisionHistory": "Lịch Sử Chỉnh Sửa", + "HeaderRestartingServer": "Đang Khởi Động Lại Máy Chủ", + "HeaderRestart": "Khởi Động Lại", + "HeaderResponseProfileHelp": "Hồ sơ phản hồi là phương thức tuỳ chỉnh thông tin gửi về thiết bị phát khi phát một số nội dung nhất định.", + "HeaderResponseProfile": "Hồ Sơ Phản Hồi", + "HeaderRemoveMediaLocation": "Xoá Đường Dẫn Nội Dung", + "HeaderRemoveMediaFolder": "Xoá Thư Mục Nội Dung", + "HeaderRemoteControl": "Điều Khiển Từ Xa", + "HeaderRecordingPostProcessing": "Xử Lý Sau Khi Ghi Âm/Ghi Hình" }