mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge branch 'master' into migrate-to-ES6-45
This commit is contained in:
commit
5d4b133dcf
172 changed files with 5872 additions and 5916 deletions
|
@ -64,7 +64,7 @@ jobs:
|
||||||
value: 0.0.0
|
value: 0.0.0
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- script: echo '##vso[task.setvariable variable=JellyfinVersion]$( awk -F "/" "{ print $NF }" <<<"$(Build.SourceBranch)" | sed "s/^v//" )'
|
- script: echo "##vso[task.setvariable variable=JellyfinVersion]$( awk -F '/' '{ print $NF }' <<<'$(Build.SourceBranch)' | sed 's/^v//' )"
|
||||||
displayName: Set release version (stable)
|
displayName: Set release version (stable)
|
||||||
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
|
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
|
||||||
|
|
||||||
|
|
|
@ -8,5 +8,5 @@ trim_trailing_whitespace = true
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
|
|
||||||
[json]
|
[*.json]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
10
.eslintrc.js
10
.eslintrc.js
|
@ -1,6 +1,7 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
root: true,
|
root: true,
|
||||||
plugins: [
|
plugins: [
|
||||||
|
'@babel',
|
||||||
'promise',
|
'promise',
|
||||||
'import',
|
'import',
|
||||||
'eslint-comments'
|
'eslint-comments'
|
||||||
|
@ -28,7 +29,7 @@ module.exports = {
|
||||||
],
|
],
|
||||||
rules: {
|
rules: {
|
||||||
'block-spacing': ['error'],
|
'block-spacing': ['error'],
|
||||||
'brace-style': ['error', "1tbs", { "allowSingleLine": true }],
|
'brace-style': ['error', '1tbs', { 'allowSingleLine': true }],
|
||||||
'comma-dangle': ['error', 'never'],
|
'comma-dangle': ['error', 'never'],
|
||||||
'comma-spacing': ['error'],
|
'comma-spacing': ['error'],
|
||||||
'eol-last': ['error'],
|
'eol-last': ['error'],
|
||||||
|
@ -40,20 +41,21 @@ module.exports = {
|
||||||
'no-multiple-empty-lines': ['error', { 'max': 1 }],
|
'no-multiple-empty-lines': ['error', { 'max': 1 }],
|
||||||
'no-trailing-spaces': ['error'],
|
'no-trailing-spaces': ['error'],
|
||||||
'no-unused-expressions': ['error', { 'allowShortCircuit': true, 'allowTernary': true, 'allowTaggedTemplates': true }],
|
'no-unused-expressions': ['error', { 'allowShortCircuit': true, 'allowTernary': true, 'allowTaggedTemplates': true }],
|
||||||
"no-unused-vars": ["error", { "vars": "all", "args": "none", "ignoreRestSiblings": true }],
|
'no-unused-vars': ['error', { 'vars': 'all', 'args': 'none', 'ignoreRestSiblings': true }],
|
||||||
'one-var': ['error', 'never'],
|
'one-var': ['error', 'never'],
|
||||||
'padded-blocks': ['error', 'never'],
|
'padded-blocks': ['error', 'never'],
|
||||||
'quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }],
|
'quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }],
|
||||||
'semi': ['error'],
|
'semi': ['error'],
|
||||||
'space-before-blocks': ['error'],
|
'space-before-blocks': ['error'],
|
||||||
'space-infix-ops': 'error'
|
'space-infix-ops': 'error',
|
||||||
|
'yoda': 'error'
|
||||||
},
|
},
|
||||||
overrides: [
|
overrides: [
|
||||||
{
|
{
|
||||||
files: [
|
files: [
|
||||||
'./src/**/*.js'
|
'./src/**/*.js'
|
||||||
],
|
],
|
||||||
parser: 'babel-eslint',
|
parser: '@babel/eslint-parser',
|
||||||
env: {
|
env: {
|
||||||
node: false,
|
node: false,
|
||||||
amd: true,
|
amd: true,
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
- [MrTimscampi](https://github.com/MrTimscampi)
|
- [MrTimscampi](https://github.com/MrTimscampi)
|
||||||
- [Sarab Singh](https://github.com/sarab97)
|
- [Sarab Singh](https://github.com/sarab97)
|
||||||
- [Andrei Oanca](https://github.com/OancaAndrei)
|
- [Andrei Oanca](https://github.com/OancaAndrei)
|
||||||
|
- [Cromefire_](https://github.com/cromefire)
|
||||||
|
|
||||||
# Emby Contributors
|
# Emby Contributors
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ Jellyfin Web is the frontend used for most of the clients available for end user
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|
||||||
|
- [Node.js](https://nodejs.org/en/download/)
|
||||||
- [Yarn 1.22.4](https://classic.yarnpkg.com/en/docs/install)
|
- [Yarn 1.22.4](https://classic.yarnpkg.com/en/docs/install)
|
||||||
- Gulp-cli
|
- Gulp-cli
|
||||||
|
|
||||||
|
|
46
package.json
46
package.json
|
@ -5,21 +5,22 @@
|
||||||
"repository": "https://github.com/jellyfin/jellyfin-web",
|
"repository": "https://github.com/jellyfin/jellyfin-web",
|
||||||
"license": "GPL-2.0-or-later",
|
"license": "GPL-2.0-or-later",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.10.5",
|
"@babel/core": "^7.11.0",
|
||||||
|
"@babel/eslint-parser": "^7.11.0",
|
||||||
|
"@babel/eslint-plugin": "^7.11.0",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.10.1",
|
"@babel/plugin-proposal-class-properties": "^7.10.1",
|
||||||
"@babel/plugin-proposal-private-methods": "^7.10.1",
|
"@babel/plugin-proposal-private-methods": "^7.10.1",
|
||||||
"@babel/plugin-transform-modules-amd": "^7.10.5",
|
"@babel/plugin-transform-modules-amd": "^7.10.5",
|
||||||
"@babel/polyfill": "^7.8.7",
|
"@babel/polyfill": "^7.8.7",
|
||||||
"@babel/preset-env": "^7.10.3",
|
"@babel/preset-env": "^7.11.0",
|
||||||
"autoprefixer": "^9.8.5",
|
"autoprefixer": "^9.8.6",
|
||||||
"babel-eslint": "^11.0.0-beta.2",
|
|
||||||
"babel-loader": "^8.0.6",
|
"babel-loader": "^8.0.6",
|
||||||
"browser-sync": "^2.26.12",
|
"browser-sync": "^2.26.12",
|
||||||
"copy-webpack-plugin": "^5.1.1",
|
"copy-webpack-plugin": "^5.1.1",
|
||||||
"css-loader": "^4.0.0",
|
"css-loader": "^4.2.0",
|
||||||
"cssnano": "^4.1.10",
|
"cssnano": "^4.1.10",
|
||||||
"del": "^5.1.0",
|
"del": "^5.1.0",
|
||||||
"eslint": "^6.8.0",
|
"eslint": "^7.6.0",
|
||||||
"eslint-plugin-compat": "^3.5.1",
|
"eslint-plugin-compat": "^3.5.1",
|
||||||
"eslint-plugin-eslint-comments": "^3.2.0",
|
"eslint-plugin-eslint-comments": "^3.2.0",
|
||||||
"eslint-plugin-import": "^2.21.2",
|
"eslint-plugin-import": "^2.21.2",
|
||||||
|
@ -48,7 +49,7 @@
|
||||||
"stylelint-config-rational-order": "^0.1.2",
|
"stylelint-config-rational-order": "^0.1.2",
|
||||||
"stylelint-no-browser-hacks": "^1.2.1",
|
"stylelint-no-browser-hacks": "^1.2.1",
|
||||||
"stylelint-order": "^4.1.0",
|
"stylelint-order": "^4.1.0",
|
||||||
"webpack": "^4.44.0",
|
"webpack": "^4.44.1",
|
||||||
"webpack-merge": "^4.2.2",
|
"webpack-merge": "^4.2.2",
|
||||||
"webpack-stream": "^5.2.1"
|
"webpack-stream": "^5.2.1"
|
||||||
},
|
},
|
||||||
|
@ -62,7 +63,7 @@
|
||||||
"fast-text-encoding": "^1.0.3",
|
"fast-text-encoding": "^1.0.3",
|
||||||
"flv.js": "^1.5.0",
|
"flv.js": "^1.5.0",
|
||||||
"headroom.js": "^0.11.0",
|
"headroom.js": "^0.11.0",
|
||||||
"hls.js": "^0.14.6",
|
"hls.js": "^0.14.7",
|
||||||
"howler": "^2.2.0",
|
"howler": "^2.2.0",
|
||||||
"intersection-observer": "^0.11.0",
|
"intersection-observer": "^0.11.0",
|
||||||
"jellyfin-apiclient": "^1.4.1",
|
"jellyfin-apiclient": "^1.4.1",
|
||||||
|
@ -106,6 +107,7 @@
|
||||||
"src/components/dialogHelper/dialogHelper.js",
|
"src/components/dialogHelper/dialogHelper.js",
|
||||||
"src/components/directorybrowser/directorybrowser.js",
|
"src/components/directorybrowser/directorybrowser.js",
|
||||||
"src/components/displaySettings/displaySettings.js",
|
"src/components/displaySettings/displaySettings.js",
|
||||||
|
"src/components/favoriteitems.js",
|
||||||
"src/components/fetchhelper.js",
|
"src/components/fetchhelper.js",
|
||||||
"src/components/filterdialog/filterdialog.js",
|
"src/components/filterdialog/filterdialog.js",
|
||||||
"src/components/groupedcards.js",
|
"src/components/groupedcards.js",
|
||||||
|
@ -114,14 +116,18 @@
|
||||||
"src/components/htmlMediaHelper.js",
|
"src/components/htmlMediaHelper.js",
|
||||||
"src/components/imageOptionsEditor/imageOptionsEditor.js",
|
"src/components/imageOptionsEditor/imageOptionsEditor.js",
|
||||||
"src/components/images/imageLoader.js",
|
"src/components/images/imageLoader.js",
|
||||||
|
"src/components/imageDownloader/imageDownloader.js",
|
||||||
|
"src/components/imageeditor/imageeditor.js",
|
||||||
"src/components/imageUploader/imageUploader.js",
|
"src/components/imageUploader/imageUploader.js",
|
||||||
"src/components/indicators/indicators.js",
|
"src/components/indicators/indicators.js",
|
||||||
"src/components/itemContextMenu.js",
|
"src/components/itemContextMenu.js",
|
||||||
|
"src/components/itemHelper.js",
|
||||||
"src/components/itemidentifier/itemidentifier.js",
|
"src/components/itemidentifier/itemidentifier.js",
|
||||||
"src/components/itemMediaInfo/itemMediaInfo.js",
|
"src/components/itemMediaInfo/itemMediaInfo.js",
|
||||||
"src/components/lazyLoader/lazyLoaderIntersectionObserver.js",
|
"src/components/lazyLoader/lazyLoaderIntersectionObserver.js",
|
||||||
"src/components/libraryoptionseditor/libraryoptionseditor.js",
|
"src/components/libraryoptionseditor/libraryoptionseditor.js",
|
||||||
"src/components/listview/listview.js",
|
"src/components/listview/listview.js",
|
||||||
|
"src/components/loading/loading.js",
|
||||||
"src/components/maintabsmanager.js",
|
"src/components/maintabsmanager.js",
|
||||||
"src/components/mediainfo/mediainfo.js",
|
"src/components/mediainfo/mediainfo.js",
|
||||||
"src/components/mediaLibraryCreator/mediaLibraryCreator.js",
|
"src/components/mediaLibraryCreator/mediaLibraryCreator.js",
|
||||||
|
@ -134,9 +140,11 @@
|
||||||
"src/components/playback/mediasession.js",
|
"src/components/playback/mediasession.js",
|
||||||
"src/components/playback/nowplayinghelper.js",
|
"src/components/playback/nowplayinghelper.js",
|
||||||
"src/components/playback/playbackorientation.js",
|
"src/components/playback/playbackorientation.js",
|
||||||
|
"src/components/playback/playbackmanager.js",
|
||||||
"src/components/playback/playerSelectionMenu.js",
|
"src/components/playback/playerSelectionMenu.js",
|
||||||
"src/components/playback/playersettingsmenu.js",
|
"src/components/playback/playersettingsmenu.js",
|
||||||
"src/components/playback/playmethodhelper.js",
|
"src/components/playback/playmethodhelper.js",
|
||||||
|
"src/components/playback/playqueuemanager.js",
|
||||||
"src/components/playback/remotecontrolautoplay.js",
|
"src/components/playback/remotecontrolautoplay.js",
|
||||||
"src/components/playback/volumeosd.js",
|
"src/components/playback/volumeosd.js",
|
||||||
"src/components/playbackSettings/playbackSettings.js",
|
"src/components/playbackSettings/playbackSettings.js",
|
||||||
|
@ -144,8 +152,10 @@
|
||||||
"src/components/playlisteditor/playlisteditor.js",
|
"src/components/playlisteditor/playlisteditor.js",
|
||||||
"src/components/playmenu.js",
|
"src/components/playmenu.js",
|
||||||
"src/components/prompt/prompt.js",
|
"src/components/prompt/prompt.js",
|
||||||
|
"src/components/refreshdialog/refreshdialog.js",
|
||||||
"src/components/sanatizefilename.js",
|
"src/components/sanatizefilename.js",
|
||||||
"src/components/scrollManager.js",
|
"src/components/scrollManager.js",
|
||||||
|
"src/plugins/htmlVideoPlayer/plugin.js",
|
||||||
"src/components/search/searchfields.js",
|
"src/components/search/searchfields.js",
|
||||||
"src/components/search/searchresults.js",
|
"src/components/search/searchresults.js",
|
||||||
"src/components/settingshelper.js",
|
"src/components/settingshelper.js",
|
||||||
|
@ -156,6 +166,7 @@
|
||||||
"src/components/syncPlay/playbackPermissionManager.js",
|
"src/components/syncPlay/playbackPermissionManager.js",
|
||||||
"src/components/syncPlay/syncPlayManager.js",
|
"src/components/syncPlay/syncPlayManager.js",
|
||||||
"src/components/syncPlay/timeSyncManager.js",
|
"src/components/syncPlay/timeSyncManager.js",
|
||||||
|
"src/components/viewContainer.js",
|
||||||
"src/controllers/session/addServer/index.js",
|
"src/controllers/session/addServer/index.js",
|
||||||
"src/controllers/session/forgotPassword/index.js",
|
"src/controllers/session/forgotPassword/index.js",
|
||||||
"src/controllers/session/redeemPassword/index.js",
|
"src/controllers/session/redeemPassword/index.js",
|
||||||
|
@ -172,6 +183,12 @@
|
||||||
"src/controllers/dashboard/general.js",
|
"src/controllers/dashboard/general.js",
|
||||||
"src/controllers/dashboard/librarydisplay.js",
|
"src/controllers/dashboard/librarydisplay.js",
|
||||||
"src/controllers/dashboard/logs.js",
|
"src/controllers/dashboard/logs.js",
|
||||||
|
"src/controllers/music/musicalbums.js",
|
||||||
|
"src/controllers/music/musicartists.js",
|
||||||
|
"src/controllers/music/musicgenres.js",
|
||||||
|
"src/controllers/music/musicplaylists.js",
|
||||||
|
"src/controllers/music/musicrecommended.js",
|
||||||
|
"src/controllers/music/songs.js",
|
||||||
"src/controllers/dashboard/mediaLibrary.js",
|
"src/controllers/dashboard/mediaLibrary.js",
|
||||||
"src/controllers/dashboard/metadataImages.js",
|
"src/controllers/dashboard/metadataImages.js",
|
||||||
"src/controllers/dashboard/metadatanfo.js",
|
"src/controllers/dashboard/metadatanfo.js",
|
||||||
|
@ -189,9 +206,13 @@
|
||||||
"src/controllers/dashboard/users/userpasswordpage.js",
|
"src/controllers/dashboard/users/userpasswordpage.js",
|
||||||
"src/controllers/dashboard/users/userprofilespage.js",
|
"src/controllers/dashboard/users/userprofilespage.js",
|
||||||
"src/controllers/list.js",
|
"src/controllers/list.js",
|
||||||
|
"src/controllers/itemDetails/index.js",
|
||||||
"src/controllers/playback/queue/index.js",
|
"src/controllers/playback/queue/index.js",
|
||||||
"src/controllers/playback/video/index.js",
|
"src/controllers/playback/video/index.js",
|
||||||
"src/controllers/searchpage.js",
|
"src/controllers/searchpage.js",
|
||||||
|
"src/controllers/livetvtuner.js",
|
||||||
|
"src/controllers/livetvstatus.js",
|
||||||
|
"src/controllers/livetvsettings.js",
|
||||||
"src/controllers/shows/episodes.js",
|
"src/controllers/shows/episodes.js",
|
||||||
"src/controllers/shows/tvgenres.js",
|
"src/controllers/shows/tvgenres.js",
|
||||||
"src/controllers/shows/tvlatest.js",
|
"src/controllers/shows/tvlatest.js",
|
||||||
|
@ -205,7 +226,6 @@
|
||||||
"src/controllers/user/playback/index.js",
|
"src/controllers/user/playback/index.js",
|
||||||
"src/controllers/user/profile/index.js",
|
"src/controllers/user/profile/index.js",
|
||||||
"src/controllers/user/subtitles/index.js",
|
"src/controllers/user/subtitles/index.js",
|
||||||
"src/controllers/user/subtitles/index.js",
|
|
||||||
"src/controllers/wizard/finish/index.js",
|
"src/controllers/wizard/finish/index.js",
|
||||||
"src/controllers/wizard/remote/index.js",
|
"src/controllers/wizard/remote/index.js",
|
||||||
"src/controllers/wizard/settings/index.js",
|
"src/controllers/wizard/settings/index.js",
|
||||||
|
@ -239,6 +259,7 @@
|
||||||
"src/plugins/youtubePlayer/plugin.js",
|
"src/plugins/youtubePlayer/plugin.js",
|
||||||
"src/scripts/alphanumericshortcuts.js",
|
"src/scripts/alphanumericshortcuts.js",
|
||||||
"src/scripts/autoBackdrops.js",
|
"src/scripts/autoBackdrops.js",
|
||||||
|
"src/scripts/browser.js",
|
||||||
"src/scripts/datetime.js",
|
"src/scripts/datetime.js",
|
||||||
"src/scripts/deleteHelper.js",
|
"src/scripts/deleteHelper.js",
|
||||||
"src/scripts/dfnshelper.js",
|
"src/scripts/dfnshelper.js",
|
||||||
|
@ -250,7 +271,11 @@
|
||||||
"src/scripts/imagehelper.js",
|
"src/scripts/imagehelper.js",
|
||||||
"src/scripts/inputManager.js",
|
"src/scripts/inputManager.js",
|
||||||
"src/scripts/keyboardNavigation.js",
|
"src/scripts/keyboardNavigation.js",
|
||||||
|
"src/scripts/libraryBrowser.js",
|
||||||
|
"src/scripts/mouseManager.js",
|
||||||
|
"src/scripts/multiDownload.js",
|
||||||
"src/scripts/playlists.js",
|
"src/scripts/playlists.js",
|
||||||
|
"src/scripts/routes.js",
|
||||||
"src/scripts/settings/appSettings.js",
|
"src/scripts/settings/appSettings.js",
|
||||||
"src/scripts/settings/userSettings.js",
|
"src/scripts/settings/userSettings.js",
|
||||||
"src/scripts/settings/webSettings.js",
|
"src/scripts/settings/webSettings.js",
|
||||||
|
@ -271,7 +296,7 @@
|
||||||
"last 2 Chrome versions",
|
"last 2 Chrome versions",
|
||||||
"last 2 ChromeAndroid versions",
|
"last 2 ChromeAndroid versions",
|
||||||
"last 2 Safari versions",
|
"last 2 Safari versions",
|
||||||
"last 2 iOS versions",
|
"iOS > 10",
|
||||||
"last 2 Edge versions",
|
"last 2 Edge versions",
|
||||||
"Chrome 27",
|
"Chrome 27",
|
||||||
"Chrome 38",
|
"Chrome 38",
|
||||||
|
@ -279,6 +304,7 @@
|
||||||
"Chrome 53",
|
"Chrome 53",
|
||||||
"Chrome 56",
|
"Chrome 56",
|
||||||
"Chrome 63",
|
"Chrome 63",
|
||||||
|
"Edge 18",
|
||||||
"Firefox ESR"
|
"Firefox ESR"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -646,7 +646,7 @@
|
||||||
.layout-desktop .detailRibbon,
|
.layout-desktop .detailRibbon,
|
||||||
.layout-tv .detailRibbon {
|
.layout-tv .detailRibbon {
|
||||||
margin-top: -7.2em;
|
margin-top: -7.2em;
|
||||||
height: 7.18em;
|
height: 7.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.layout-desktop .noBackdrop .detailRibbon,
|
.layout-desktop .noBackdrop .detailRibbon,
|
||||||
|
|
|
@ -49,7 +49,7 @@ import 'formDialogStyle';
|
||||||
};
|
};
|
||||||
|
|
||||||
if (parseFloat(updatedSchedule.StartHour) >= parseFloat(updatedSchedule.EndHour)) {
|
if (parseFloat(updatedSchedule.StartHour) >= parseFloat(updatedSchedule.EndHour)) {
|
||||||
return void alert(globalize.translate('ErrorMessageStartHourGreaterThanEnd'));
|
return void alert(globalize.translate('ErrorStartHourGreaterThanEnd'));
|
||||||
}
|
}
|
||||||
|
|
||||||
context.submitted = true;
|
context.submitted = true;
|
||||||
|
|
|
@ -16,7 +16,7 @@ import 'listViewStyle';
|
||||||
let color = '#00a4dc';
|
let color = '#00a4dc';
|
||||||
let icon = 'notifications';
|
let icon = 'notifications';
|
||||||
|
|
||||||
if ('Error' == entry.Severity || 'Fatal' == entry.Severity || 'Warn' == entry.Severity) {
|
if (entry.Severity == 'Error' || entry.Severity == 'Fatal' || entry.Severity == 'Warn') {
|
||||||
color = '#cc0000';
|
color = '#cc0000';
|
||||||
icon = 'notification_important';
|
icon = 'notification_important';
|
||||||
}
|
}
|
||||||
|
@ -60,13 +60,13 @@ import 'listViewStyle';
|
||||||
}
|
}
|
||||||
|
|
||||||
function reloadData(instance, elem, apiClient, startIndex, limit) {
|
function reloadData(instance, elem, apiClient, startIndex, limit) {
|
||||||
if (null == startIndex) {
|
if (startIndex == null) {
|
||||||
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');
|
||||||
const minDate = new Date();
|
const minDate = new Date();
|
||||||
const hasUserId = 'false' !== elem.getAttribute('data-useractivity');
|
const hasUserId = elem.getAttribute('data-useractivity') !== 'false';
|
||||||
|
|
||||||
// TODO: Use date-fns
|
// TODO: Use date-fns
|
||||||
if (hasUserId) {
|
if (hasUserId) {
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdrop', 'browser', 'page', 'appSettings', 'apphost', 'connectionManager'], function (loading, globalize, events, viewManager, skinManager, backdrop, browser, page, appSettings, appHost, connectionManager) {
|
define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdrop', 'browser', 'page', 'appSettings', 'apphost', 'connectionManager'], function (loading, globalize, events, viewManager, skinManager, backdrop, browser, page, appSettings, appHost, connectionManager) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
browser = browser.default || browser;
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
var appRouter = {
|
var appRouter = {
|
||||||
showLocalLogin: function (serverId, manualLogin) {
|
showLocalLogin: function (serverId, manualLogin) {
|
||||||
var pageName = manualLogin ? 'manuallogin' : 'login';
|
var pageName = manualLogin ? 'manuallogin' : 'login';
|
||||||
|
@ -231,8 +234,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
|
||||||
max /= 8;
|
max /= 8;
|
||||||
max *= 1000000;
|
max *= 1000000;
|
||||||
max *= 0.7;
|
max *= 0.7;
|
||||||
max = parseInt(max);
|
return parseInt(max, 10);
|
||||||
return max;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* eslint-enable compat/compat */
|
/* eslint-enable compat/compat */
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['appSettings', 'browser', 'events', 'htmlMediaHelper', 'webSettings', 'globalize'], function (appSettings, browser, events, htmlMediaHelper, webSettings, globalize) {
|
define(['appSettings', 'browser', 'events', 'htmlMediaHelper', 'webSettings', 'globalize'], function (appSettings, browser, events, htmlMediaHelper, webSettings, globalize) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
browser = browser.default || browser;
|
||||||
|
|
||||||
function getBaseProfileOptions(item) {
|
function getBaseProfileOptions(item) {
|
||||||
var disableHlsVideoAudioCodecs = [];
|
var disableHlsVideoAudioCodecs = [];
|
||||||
|
|
||||||
|
@ -47,7 +49,7 @@ define(['appSettings', 'browser', 'events', 'htmlMediaHelper', 'webSettings', 'g
|
||||||
profile = window.NativeShell.AppHost.getDeviceProfile(profileBuilder);
|
profile = window.NativeShell.AppHost.getDeviceProfile(profileBuilder);
|
||||||
} else {
|
} else {
|
||||||
var builderOpts = getBaseProfileOptions(item);
|
var builderOpts = getBaseProfileOptions(item);
|
||||||
builderOpts.enableSsaRender = (item && !options.isRetry && 'allcomplexformats' !== appSettings.get('subtitleburnin'));
|
builderOpts.enableSsaRender = (item && !options.isRetry && appSettings.get('subtitleburnin') !== 'allcomplexformats');
|
||||||
profile = profileBuilder(builderOpts);
|
profile = profileBuilder(builderOpts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,7 +372,7 @@ define(['appSettings', 'browser', 'events', 'htmlMediaHelper', 'webSettings', 'g
|
||||||
return window.NativeShell.AppHost.supports(command);
|
return window.NativeShell.AppHost.supports(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1 !== supportedFeatures.indexOf(command.toLowerCase());
|
return supportedFeatures.indexOf(command.toLowerCase()) !== -1;
|
||||||
},
|
},
|
||||||
preferVisualCards: browser.android || browser.chrome,
|
preferVisualCards: browser.android || browser.chrome,
|
||||||
getSyncProfile: getSyncProfile,
|
getSyncProfile: getSyncProfile,
|
||||||
|
|
|
@ -277,7 +277,7 @@ import 'programStyles';
|
||||||
*/
|
*/
|
||||||
function getImageWidth(shape, screenWidth, isOrientationLandscape) {
|
function getImageWidth(shape, screenWidth, isOrientationLandscape) {
|
||||||
const imagesPerRow = getPostersPerRow(shape, screenWidth, isOrientationLandscape);
|
const imagesPerRow = getPostersPerRow(shape, screenWidth, isOrientationLandscape);
|
||||||
return Math.round(screenWidth / imagesPerRow) * 2;
|
return Math.round(screenWidth / imagesPerRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -73,7 +73,7 @@ import browser from 'browser';
|
||||||
if (ImageTag) {
|
if (ImageTag) {
|
||||||
return apiClient.getScaledImageUrl(Id, {
|
return apiClient.getScaledImageUrl(Id, {
|
||||||
|
|
||||||
maxWidth: maxWidth * 2,
|
maxWidth: maxWidth,
|
||||||
tag: ImageTag,
|
tag: ImageTag,
|
||||||
type: 'Chapter',
|
type: 'Chapter',
|
||||||
index
|
index
|
||||||
|
@ -104,9 +104,7 @@ import browser from 'browser';
|
||||||
const cardBoxCssClass = 'cardBox';
|
const cardBoxCssClass = 'cardBox';
|
||||||
const cardScalableClass = 'cardScalable';
|
const cardScalableClass = 'cardScalable';
|
||||||
|
|
||||||
const html = `<button type="button" class="${className}"${dataAttributes}><div class="${cardBoxCssClass}"><div class="${cardScalableClass}"><div class="cardPadder-${shape}"></div>${cardImageContainer}</div><div class="innerCardFooter">${nameHtml}</div></div></div></button>`;
|
return `<button type="button" class="${className}"${dataAttributes}><div class="${cardBoxCssClass}"><div class="${cardScalableClass}"><div class="cardPadder-${shape}"></div>${cardImageContainer}</div><div class="innerCardFooter">${nameHtml}</div></div></div></button>`;
|
||||||
|
|
||||||
return html;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function buildChapterCards(item, chapters, options) {
|
export function buildChapterCards(item, chapters, options) {
|
||||||
|
|
|
@ -159,9 +159,9 @@
|
||||||
<div class="checkboxContainer checkboxContainer-withDescription">
|
<div class="checkboxContainer checkboxContainer-withDescription">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" is="emby-checkbox" id="chkBlurhash" />
|
<input type="checkbox" is="emby-checkbox" id="chkBlurhash" />
|
||||||
<span>${EnableBlurhash}</span>
|
<span>${EnableBlurHash}</span>
|
||||||
</label>
|
</label>
|
||||||
<div class="fieldDescription checkboxFieldDescription">${EnableBlurhashHelp}</div>
|
<div class="fieldDescription checkboxFieldDescription">${EnableBlurHashHelp}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="checkboxContainer checkboxContainer-withDescription">
|
<div class="checkboxContainer checkboxContainer-withDescription">
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoader', 'globalize', 'layoutManager', 'scrollStyles', 'emby-itemscontainer'], function (loading, libraryBrowser, cardBuilder, dom, appHost, imageLoader, globalize, layoutManager) {
|
import loading from 'loading';
|
||||||
'use strict';
|
import cardBuilder from 'cardBuilder';
|
||||||
|
import dom from 'dom';
|
||||||
|
import appHost from 'apphost';
|
||||||
|
import imageLoader from 'imageLoader';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import layoutManager from 'layoutManager';
|
||||||
|
import 'scrollStyles';
|
||||||
|
import 'emby-itemscontainer';
|
||||||
|
|
||||||
|
/* eslint-disable indent */
|
||||||
|
|
||||||
function enableScrollX() {
|
function enableScrollX() {
|
||||||
return !layoutManager.desktop;
|
return !layoutManager.desktop;
|
||||||
|
@ -94,8 +103,8 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadSection(elem, userId, topParentId, section, isSingleSection) {
|
function loadSection(elem, userId, topParentId, section, isSingleSection) {
|
||||||
var screenWidth = dom.getWindowSize().innerWidth;
|
const screenWidth = dom.getWindowSize().innerWidth;
|
||||||
var options = {
|
const options = {
|
||||||
SortBy: 'SortName',
|
SortBy: 'SortName',
|
||||||
SortOrder: 'Ascending',
|
SortOrder: 'Ascending',
|
||||||
Filters: 'IsFavorite',
|
Filters: 'IsFavorite',
|
||||||
|
@ -118,9 +127,9 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var promise;
|
let promise;
|
||||||
|
|
||||||
if ('MusicArtist' === section.types) {
|
if (section.types === 'MusicArtist') {
|
||||||
promise = ApiClient.getArtists(userId, options);
|
promise = ApiClient.getArtists(userId, options);
|
||||||
} else {
|
} else {
|
||||||
options.IncludeItemTypes = section.types;
|
options.IncludeItemTypes = section.types;
|
||||||
|
@ -128,7 +137,7 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad
|
||||||
}
|
}
|
||||||
|
|
||||||
return promise.then(function (result) {
|
return promise.then(function (result) {
|
||||||
var html = '';
|
let html = '';
|
||||||
|
|
||||||
if (result.Items.length) {
|
if (result.Items.length) {
|
||||||
if (html += '<div class="sectionTitleContainer sectionTitleContainer-cards padded-left">', !layoutManager.tv && options.Limit && result.Items.length >= options.Limit) {
|
if (html += '<div class="sectionTitleContainer sectionTitleContainer-cards padded-left">', !layoutManager.tv && options.Limit && result.Items.length >= options.Limit) {
|
||||||
|
@ -144,7 +153,7 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad
|
||||||
|
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
if (enableScrollX()) {
|
if (enableScrollX()) {
|
||||||
var scrollXClass = 'scrollX hiddenScrollX';
|
let scrollXClass = 'scrollX hiddenScrollX';
|
||||||
if (layoutManager.tv) {
|
if (layoutManager.tv) {
|
||||||
scrollXClass += ' smoothScrollX';
|
scrollXClass += ' smoothScrollX';
|
||||||
}
|
}
|
||||||
|
@ -154,13 +163,13 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad
|
||||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap padded-left padded-right">';
|
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap padded-left padded-right">';
|
||||||
}
|
}
|
||||||
|
|
||||||
var cardLayout = appHost.preferVisualCards && section.autoCardLayout && section.showTitle;
|
let cardLayout = appHost.preferVisualCards && section.autoCardLayout && section.showTitle;
|
||||||
cardLayout = false;
|
cardLayout = false;
|
||||||
html += cardBuilder.getCardsHtml(result.Items, {
|
html += cardBuilder.getCardsHtml(result.Items, {
|
||||||
preferThumb: section.preferThumb,
|
preferThumb: section.preferThumb,
|
||||||
shape: section.shape,
|
shape: section.shape,
|
||||||
centerText: section.centerText && !cardLayout,
|
centerText: section.centerText && !cardLayout,
|
||||||
overlayText: false !== section.overlayText,
|
overlayText: section.overlayText !== false,
|
||||||
showTitle: section.showTitle,
|
showTitle: section.showTitle,
|
||||||
showParentTitle: section.showParentTitle,
|
showParentTitle: section.showParentTitle,
|
||||||
scalable: true,
|
scalable: true,
|
||||||
|
@ -179,10 +188,10 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadSections(page, userId, topParentId, types) {
|
export function loadSections(page, userId, topParentId, types) {
|
||||||
loading.show();
|
loading.show();
|
||||||
var sections = getSections();
|
let sections = getSections();
|
||||||
var sectionid = getParameterByName('sectionid');
|
const sectionid = getParameterByName('sectionid');
|
||||||
|
|
||||||
if (sectionid) {
|
if (sectionid) {
|
||||||
sections = sections.filter(function (s) {
|
sections = sections.filter(function (s) {
|
||||||
|
@ -192,30 +201,28 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad
|
||||||
|
|
||||||
if (types) {
|
if (types) {
|
||||||
sections = sections.filter(function (s) {
|
sections = sections.filter(function (s) {
|
||||||
return -1 !== types.indexOf(s.id);
|
return types.indexOf(s.id) !== -1;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var i;
|
let elem = page.querySelector('.favoriteSections');
|
||||||
var length;
|
|
||||||
var elem = page.querySelector('.favoriteSections');
|
|
||||||
|
|
||||||
if (!elem.innerHTML) {
|
if (!elem.innerHTML) {
|
||||||
var html = '';
|
let html = '';
|
||||||
|
|
||||||
for (i = 0, length = sections.length; i < length; i++) {
|
for (let i = 0, length = sections.length; i < length; i++) {
|
||||||
html += '<div class="verticalSection section' + sections[i].id + '"></div>';
|
html += '<div class="verticalSection section' + sections[i].id + '"></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
elem.innerHTML = html;
|
elem.innerHTML = html;
|
||||||
}
|
}
|
||||||
|
|
||||||
var promises = [];
|
const promises = [];
|
||||||
|
|
||||||
for (i = 0, length = sections.length; i < length; i++) {
|
for (let i = 0, length = sections.length; i < length; i++) {
|
||||||
var section = sections[i];
|
const 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));
|
promises.push(loadSection(elem, userId, topParentId, section, sections.length === 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
Promise.all(promises).then(function () {
|
Promise.all(promises).then(function () {
|
||||||
|
@ -223,7 +230,8 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
export default {
|
||||||
render: loadSections
|
render: loadSections
|
||||||
};
|
};
|
||||||
});
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
|
@ -21,7 +21,7 @@ import connectionManager from 'connectionManager';
|
||||||
|
|
||||||
if (!actionableParent || actionableParent.classList.contains('cardContent')) {
|
if (!actionableParent || actionableParent.classList.contains('cardContent')) {
|
||||||
apiClient.getJSON(apiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) {
|
apiClient.getJSON(apiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) {
|
||||||
if (1 === items.length) {
|
if (items.length === 1) {
|
||||||
return void appRouter.showItem(items[0]);
|
return void appRouter.showItem(items[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', 'scrollHelper', 'serverNotifications', 'loading', 'datetime', 'focusManager', 'playbackManager', 'userSettings', 'imageLoader', 'events', 'layoutManager', 'itemShortcuts', 'dom', 'css!./guide.css', 'programStyles', 'material-icons', 'scrollStyles', 'emby-programcell', 'emby-button', 'paper-icon-button-light', 'emby-tabs', 'emby-scroller', 'flexStyles', 'webcomponents'], function (require, inputManager, browser, globalize, connectionManager, scrollHelper, serverNotifications, loading, datetime, focusManager, playbackManager, userSettings, imageLoader, events, layoutManager, itemShortcuts, dom) {
|
define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', 'scrollHelper', 'serverNotifications', 'loading', 'datetime', 'focusManager', 'playbackManager', 'userSettings', 'imageLoader', 'events', 'layoutManager', 'itemShortcuts', 'dom', 'css!./guide.css', 'programStyles', 'material-icons', 'scrollStyles', 'emby-programcell', 'emby-button', 'paper-icon-button-light', 'emby-tabs', 'emby-scroller', 'flexStyles', 'webcomponents'], function (require, inputManager, browser, globalize, connectionManager, scrollHelper, serverNotifications, loading, datetime, focusManager, playbackManager, userSettings, imageLoader, events, layoutManager, itemShortcuts, dom) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
playbackManager = playbackManager.default || playbackManager;
|
||||||
|
browser = browser.default || browser;
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function showViewSettings(instance) {
|
function showViewSettings(instance) {
|
||||||
require(['guide-settings-dialog'], function (guideSettingsDialog) {
|
require(['guide-settings-dialog'], function (guideSettingsDialog) {
|
||||||
guideSettingsDialog.show(instance.categoryOptions).then(function () {
|
guideSettingsDialog.show(instance.categoryOptions).then(function () {
|
||||||
|
|
|
@ -1,23 +1,39 @@
|
||||||
define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader', 'browser', 'layoutManager', 'scrollHelper', 'globalize', 'require', 'emby-checkbox', 'paper-icon-button-light', 'emby-button', 'formDialogStyle', 'cardStyle'], function (dom, loading, appHost, dialogHelper, connectionManager, imageLoader, browser, layoutManager, scrollHelper, globalize, require) {
|
import dom from 'dom';
|
||||||
'use strict';
|
import loading from 'loading';
|
||||||
|
import appHost from 'apphost';
|
||||||
|
import dialogHelper from 'dialogHelper';
|
||||||
|
import connectionManager from 'connectionManager';
|
||||||
|
import imageLoader from 'imageLoader';
|
||||||
|
import browser from 'browser';
|
||||||
|
import layoutManager from 'layoutManager';
|
||||||
|
import scrollHelper from 'scrollHelper';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import require from 'require';
|
||||||
|
import 'emby-checkbox';
|
||||||
|
import 'paper-icon-button-light';
|
||||||
|
import 'emby-button';
|
||||||
|
import 'formDialogStyle';
|
||||||
|
import 'cardStyle';
|
||||||
|
|
||||||
var enableFocusTransform = !browser.slow && !browser.edge;
|
/* eslint-disable indent */
|
||||||
|
|
||||||
var currentItemId;
|
const enableFocusTransform = !browser.slow && !browser.edge;
|
||||||
var currentItemType;
|
|
||||||
var currentResolve;
|
let currentItemId;
|
||||||
var currentReject;
|
let currentItemType;
|
||||||
var hasChanges = false;
|
let currentResolve;
|
||||||
|
let currentReject;
|
||||||
|
let hasChanges = false;
|
||||||
|
|
||||||
// These images can be large and we're seeing memory problems in safari
|
// These images can be large and we're seeing memory problems in safari
|
||||||
var browsableImagePageSize = browser.slow ? 6 : 30;
|
const browsableImagePageSize = browser.slow ? 6 : 30;
|
||||||
|
|
||||||
var browsableImageStartIndex = 0;
|
let browsableImageStartIndex = 0;
|
||||||
var browsableImageType = 'Primary';
|
let browsableImageType = 'Primary';
|
||||||
var selectedProvider;
|
let selectedProvider;
|
||||||
|
|
||||||
function getBaseRemoteOptions() {
|
function getBaseRemoteOptions() {
|
||||||
var options = {};
|
const options = {};
|
||||||
|
|
||||||
options.itemId = currentItemId;
|
options.itemId = currentItemId;
|
||||||
|
|
||||||
|
@ -27,14 +43,14 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
function reloadBrowsableImages(page, apiClient) {
|
function reloadBrowsableImages(page, apiClient) {
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
var options = getBaseRemoteOptions();
|
const options = getBaseRemoteOptions();
|
||||||
|
|
||||||
options.type = browsableImageType;
|
options.type = browsableImageType;
|
||||||
options.startIndex = browsableImageStartIndex;
|
options.startIndex = browsableImageStartIndex;
|
||||||
options.limit = browsableImagePageSize;
|
options.limit = browsableImagePageSize;
|
||||||
options.IncludeAllLanguages = page.querySelector('#chkAllLanguages').checked;
|
options.IncludeAllLanguages = page.querySelector('#chkAllLanguages').checked;
|
||||||
|
|
||||||
var provider = selectedProvider || '';
|
const provider = selectedProvider || '';
|
||||||
|
|
||||||
if (provider) {
|
if (provider) {
|
||||||
options.ProviderName = provider;
|
options.ProviderName = provider;
|
||||||
|
@ -45,11 +61,11 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
|
|
||||||
page.querySelector('#selectBrowsableImageType').value = browsableImageType;
|
page.querySelector('#selectBrowsableImageType').value = browsableImageType;
|
||||||
|
|
||||||
var providersHtml = result.Providers.map(function (p) {
|
const providersHtml = result.Providers.map(function (p) {
|
||||||
return '<option value="' + p + '">' + p + '</option>';
|
return '<option value="' + p + '">' + p + '</option>';
|
||||||
});
|
});
|
||||||
|
|
||||||
var selectImageProvider = page.querySelector('#selectImageProvider');
|
const selectImageProvider = page.querySelector('#selectImageProvider');
|
||||||
selectImageProvider.innerHTML = '<option value="">' + globalize.translate('All') + '</option>' + providersHtml;
|
selectImageProvider.innerHTML = '<option value="">' + globalize.translate('All') + '</option>' + providersHtml;
|
||||||
selectImageProvider.value = provider;
|
selectImageProvider.value = provider;
|
||||||
|
|
||||||
|
@ -60,18 +76,18 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
function renderRemoteImages(page, apiClient, imagesResult, imageType, startIndex, limit) {
|
function renderRemoteImages(page, apiClient, imagesResult, imageType, startIndex, limit) {
|
||||||
page.querySelector('.availableImagesPaging').innerHTML = getPagingHtml(startIndex, limit, imagesResult.TotalRecordCount);
|
page.querySelector('.availableImagesPaging').innerHTML = getPagingHtml(startIndex, limit, imagesResult.TotalRecordCount);
|
||||||
|
|
||||||
var html = '';
|
let html = '';
|
||||||
|
|
||||||
for (var i = 0, length = imagesResult.Images.length; i < length; i++) {
|
for (let i = 0, length = imagesResult.Images.length; i < length; i++) {
|
||||||
html += getRemoteImageHtml(imagesResult.Images[i], imageType, apiClient);
|
html += getRemoteImageHtml(imagesResult.Images[i], imageType, apiClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
var availableImagesList = page.querySelector('.availableImagesList');
|
const availableImagesList = page.querySelector('.availableImagesList');
|
||||||
availableImagesList.innerHTML = html;
|
availableImagesList.innerHTML = html;
|
||||||
imageLoader.lazyChildren(availableImagesList);
|
imageLoader.lazyChildren(availableImagesList);
|
||||||
|
|
||||||
var btnNextPage = page.querySelector('.btnNextPage');
|
const btnNextPage = page.querySelector('.btnNextPage');
|
||||||
var btnPreviousPage = page.querySelector('.btnPreviousPage');
|
const btnPreviousPage = page.querySelector('.btnPreviousPage');
|
||||||
|
|
||||||
if (btnNextPage) {
|
if (btnNextPage) {
|
||||||
btnNextPage.addEventListener('click', function () {
|
btnNextPage.addEventListener('click', function () {
|
||||||
|
@ -89,18 +105,18 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPagingHtml(startIndex, limit, totalRecordCount) {
|
function getPagingHtml(startIndex, limit, totalRecordCount) {
|
||||||
var html = '';
|
let html = '';
|
||||||
|
|
||||||
var recordsEnd = Math.min(startIndex + limit, totalRecordCount);
|
const recordsEnd = Math.min(startIndex + limit, totalRecordCount);
|
||||||
|
|
||||||
// 20 is the minimum page size
|
// 20 is the minimum page size
|
||||||
var showControls = totalRecordCount > limit;
|
const showControls = totalRecordCount > limit;
|
||||||
|
|
||||||
html += '<div class="listPaging">';
|
html += '<div class="listPaging">';
|
||||||
|
|
||||||
html += '<span style="margin-right: 10px;">';
|
html += '<span style="margin-right: 10px;">';
|
||||||
|
|
||||||
var startAtDisplay = totalRecordCount ? startIndex + 1 : 0;
|
const startAtDisplay = totalRecordCount ? startIndex + 1 : 0;
|
||||||
html += globalize.translate('ListPaging', startAtDisplay, recordsEnd, totalRecordCount);
|
html += globalize.translate('ListPaging', startAtDisplay, recordsEnd, totalRecordCount);
|
||||||
|
|
||||||
html += '</span>';
|
html += '</span>';
|
||||||
|
@ -119,7 +135,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
}
|
}
|
||||||
|
|
||||||
function downloadRemoteImage(page, apiClient, url, type, provider) {
|
function downloadRemoteImage(page, apiClient, url, type, provider) {
|
||||||
var options = getBaseRemoteOptions();
|
const options = getBaseRemoteOptions();
|
||||||
|
|
||||||
options.Type = type;
|
options.Type = type;
|
||||||
options.ImageUrl = url;
|
options.ImageUrl = url;
|
||||||
|
@ -129,7 +145,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
|
|
||||||
apiClient.downloadRemoteImage(options).then(function () {
|
apiClient.downloadRemoteImage(options).then(function () {
|
||||||
hasChanges = true;
|
hasChanges = true;
|
||||||
var dlg = dom.parentWithClass(page, 'dialog');
|
const dlg = dom.parentWithClass(page, 'dialog');
|
||||||
dialogHelper.close(dlg);
|
dialogHelper.close(dlg);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -139,17 +155,17 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRemoteImageHtml(image, imageType, apiClient) {
|
function getRemoteImageHtml(image, imageType, apiClient) {
|
||||||
var tagName = layoutManager.tv ? 'button' : 'div';
|
const tagName = layoutManager.tv ? 'button' : 'div';
|
||||||
var enableFooterButtons = !layoutManager.tv;
|
const enableFooterButtons = !layoutManager.tv;
|
||||||
|
|
||||||
// TODO move card creation code to Card component
|
// TODO move card creation code to Card component
|
||||||
|
|
||||||
var html = '';
|
let html = '';
|
||||||
|
|
||||||
var cssClass = 'card scalableCard imageEditorCard';
|
let cssClass = 'card scalableCard imageEditorCard';
|
||||||
var cardBoxCssClass = 'cardBox visualCardBox';
|
const cardBoxCssClass = 'cardBox visualCardBox';
|
||||||
|
|
||||||
var shape = 'backdrop';
|
let shape;
|
||||||
if (imageType === 'Backdrop' || imageType === 'Art' || imageType === 'Thumb' || imageType === 'Logo') {
|
if (imageType === 'Backdrop' || imageType === 'Art' || imageType === 'Thumb' || imageType === 'Logo') {
|
||||||
shape = 'backdrop';
|
shape = 'backdrop';
|
||||||
} else if (imageType === 'Banner') {
|
} else if (imageType === 'Banner') {
|
||||||
|
@ -284,14 +300,14 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
});
|
});
|
||||||
|
|
||||||
page.addEventListener('click', function (e) {
|
page.addEventListener('click', function (e) {
|
||||||
var btnDownloadRemoteImage = dom.parentWithClass(e.target, 'btnDownloadRemoteImage');
|
const btnDownloadRemoteImage = dom.parentWithClass(e.target, 'btnDownloadRemoteImage');
|
||||||
if (btnDownloadRemoteImage) {
|
if (btnDownloadRemoteImage) {
|
||||||
var card = dom.parentWithClass(btnDownloadRemoteImage, 'card');
|
const card = dom.parentWithClass(btnDownloadRemoteImage, 'card');
|
||||||
downloadRemoteImage(page, apiClient, card.getAttribute('data-imageurl'), card.getAttribute('data-imagetype'), card.getAttribute('data-imageprovider'));
|
downloadRemoteImage(page, apiClient, card.getAttribute('data-imageurl'), card.getAttribute('data-imagetype'), card.getAttribute('data-imageprovider'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var btnImageCard = dom.parentWithClass(e.target, 'btnImageCard');
|
const btnImageCard = dom.parentWithClass(e.target, 'btnImageCard');
|
||||||
if (btnImageCard) {
|
if (btnImageCard) {
|
||||||
downloadRemoteImage(page, apiClient, btnImageCard.getAttribute('data-imageurl'), btnImageCard.getAttribute('data-imagetype'), btnImageCard.getAttribute('data-imageprovider'));
|
downloadRemoteImage(page, apiClient, btnImageCard.getAttribute('data-imageurl'), btnImageCard.getAttribute('data-imagetype'), btnImageCard.getAttribute('data-imageprovider'));
|
||||||
}
|
}
|
||||||
|
@ -302,12 +318,12 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
require(['text!./imageDownloader.template.html'], function (template) {
|
require(['text!./imageDownloader.template.html'], function (template) {
|
||||||
var apiClient = connectionManager.getApiClient(serverId);
|
const apiClient = connectionManager.getApiClient(serverId);
|
||||||
|
|
||||||
currentItemId = itemId;
|
currentItemId = itemId;
|
||||||
currentItemType = itemType;
|
currentItemType = itemType;
|
||||||
|
|
||||||
var dialogOptions = {
|
const dialogOptions = {
|
||||||
removeOnClose: true
|
removeOnClose: true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -317,7 +333,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
dialogOptions.size = 'small';
|
dialogOptions.size = 'small';
|
||||||
}
|
}
|
||||||
|
|
||||||
var dlg = dialogHelper.createDialog(dialogOptions);
|
const dlg = dialogHelper.createDialog(dialogOptions);
|
||||||
|
|
||||||
dlg.innerHTML = globalize.translateHtml(template, 'core');
|
dlg.innerHTML = globalize.translateHtml(template, 'core');
|
||||||
|
|
||||||
|
@ -330,7 +346,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
|
|
||||||
dialogHelper.open(dlg);
|
dialogHelper.open(dlg);
|
||||||
|
|
||||||
var editorContent = dlg.querySelector('.formDialogContent');
|
const editorContent = dlg.querySelector('.formDialogContent');
|
||||||
initEditor(editorContent, apiClient);
|
initEditor(editorContent, apiClient);
|
||||||
|
|
||||||
dlg.querySelector('.btnCancel').addEventListener('click', function () {
|
dlg.querySelector('.btnCancel').addEventListener('click', function () {
|
||||||
|
@ -342,7 +358,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
}
|
}
|
||||||
|
|
||||||
function onDialogClosed() {
|
function onDialogClosed() {
|
||||||
var dlg = this;
|
const dlg = this;
|
||||||
|
|
||||||
if (layoutManager.tv) {
|
if (layoutManager.tv) {
|
||||||
scrollHelper.centerFocus.off(dlg, false);
|
scrollHelper.centerFocus.off(dlg, false);
|
||||||
|
@ -356,8 +372,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
export function show(itemId, serverId, itemType, imageType) {
|
||||||
show: function (itemId, serverId, itemType, imageType) {
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
currentResolve = resolve;
|
currentResolve = resolve;
|
||||||
currentReject = reject;
|
currentReject = reject;
|
||||||
|
@ -365,9 +380,12 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
|
||||||
browsableImageStartIndex = 0;
|
browsableImageStartIndex = 0;
|
||||||
browsableImageType = imageType || 'Primary';
|
browsableImageType = imageType || 'Primary';
|
||||||
selectedProvider = null;
|
selectedProvider = null;
|
||||||
|
|
||||||
showEditor(itemId, serverId, itemType);
|
showEditor(itemId, serverId, itemType);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
|
||||||
});
|
export default {
|
||||||
|
show: show
|
||||||
|
};
|
||||||
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
|
@ -16,7 +16,7 @@ import 'emby-input';
|
||||||
return {
|
return {
|
||||||
Type: type,
|
Type: type,
|
||||||
MinWidth: 0,
|
MinWidth: 0,
|
||||||
Limit: 'Primary' === type ? 1 : 0
|
Limit: type === 'Primary' ? 1 : 0
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,29 @@
|
||||||
define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', 'focusManager', 'globalize', 'scrollHelper', 'imageLoader', 'require', 'browser', 'apphost', 'cardStyle', 'formDialogStyle', 'emby-button', 'paper-icon-button-light', 'css!./imageeditor'], function (dialogHelper, connectionManager, loading, dom, layoutManager, focusManager, globalize, scrollHelper, imageLoader, require, browser, appHost) {
|
import dialogHelper from 'dialogHelper';
|
||||||
'use strict';
|
import connectionManager from 'connectionManager';
|
||||||
|
import loading from 'loading';
|
||||||
|
import dom from 'dom';
|
||||||
|
import layoutManager from 'layoutManager';
|
||||||
|
import focusManager from 'focusManager';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import scrollHelper from 'scrollHelper';
|
||||||
|
import imageLoader from 'imageLoader';
|
||||||
|
import browser from 'browser';
|
||||||
|
import appHost from 'apphost';
|
||||||
|
import 'cardStyle';
|
||||||
|
import 'formDialogStyle';
|
||||||
|
import 'emby-button';
|
||||||
|
import 'paper-icon-button-light';
|
||||||
|
import 'css!./imageeditor';
|
||||||
|
|
||||||
var enableFocusTransform = !browser.slow && !browser.edge;
|
/* eslint-disable indent */
|
||||||
|
|
||||||
var currentItem;
|
const enableFocusTransform = !browser.slow && !browser.edge;
|
||||||
var hasChanges = false;
|
|
||||||
|
let currentItem;
|
||||||
|
let hasChanges = false;
|
||||||
|
|
||||||
function getBaseRemoteOptions() {
|
function getBaseRemoteOptions() {
|
||||||
var options = {};
|
const options = {};
|
||||||
|
|
||||||
options.itemId = currentItem.Id;
|
options.itemId = currentItem.Id;
|
||||||
|
|
||||||
|
@ -17,7 +33,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
function reload(page, item, focusContext) {
|
function reload(page, item, focusContext) {
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
var apiClient;
|
let apiClient;
|
||||||
|
|
||||||
if (item) {
|
if (item) {
|
||||||
apiClient = connectionManager.getApiClient(item.ServerId);
|
apiClient = connectionManager.getApiClient(item.ServerId);
|
||||||
|
@ -32,7 +48,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
|
|
||||||
function addListeners(container, className, eventName, fn) {
|
function addListeners(container, className, eventName, fn) {
|
||||||
container.addEventListener(eventName, function (e) {
|
container.addEventListener(eventName, function (e) {
|
||||||
var elem = dom.parentWithClass(e.target, className);
|
const elem = dom.parentWithClass(e.target, className);
|
||||||
if (elem) {
|
if (elem) {
|
||||||
fn.call(elem, e);
|
fn.call(elem, e);
|
||||||
}
|
}
|
||||||
|
@ -43,8 +59,8 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
currentItem = item;
|
currentItem = item;
|
||||||
|
|
||||||
apiClient.getRemoteImageProviders(getBaseRemoteOptions()).then(function (providers) {
|
apiClient.getRemoteImageProviders(getBaseRemoteOptions()).then(function (providers) {
|
||||||
var btnBrowseAllImages = page.querySelectorAll('.btnBrowseAllImages');
|
const btnBrowseAllImages = page.querySelectorAll('.btnBrowseAllImages');
|
||||||
for (var i = 0, length = btnBrowseAllImages.length; i < length; i++) {
|
for (let i = 0, length = btnBrowseAllImages.length; i < length; i++) {
|
||||||
if (providers.length) {
|
if (providers.length) {
|
||||||
btnBrowseAllImages[i].classList.remove('hide');
|
btnBrowseAllImages[i].classList.remove('hide');
|
||||||
} else {
|
} else {
|
||||||
|
@ -87,10 +103,10 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
function getCardHtml(image, index, numImages, apiClient, imageProviders, imageSize, tagName, enableFooterButtons) {
|
function getCardHtml(image, index, numImages, apiClient, imageProviders, imageSize, tagName, enableFooterButtons) {
|
||||||
// TODO move card creation code to Card component
|
// TODO move card creation code to Card component
|
||||||
|
|
||||||
var html = '';
|
let html = '';
|
||||||
|
|
||||||
var cssClass = 'card scalableCard imageEditorCard';
|
let cssClass = 'card scalableCard imageEditorCard';
|
||||||
var cardBoxCssClass = 'cardBox visualCardBox';
|
const cardBoxCssClass = 'cardBox visualCardBox';
|
||||||
|
|
||||||
cssClass += ' backdropCard backdropCard-scalable';
|
cssClass += ' backdropCard backdropCard-scalable';
|
||||||
|
|
||||||
|
@ -120,7 +136,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
|
|
||||||
html += '<div class="cardContent">';
|
html += '<div class="cardContent">';
|
||||||
|
|
||||||
var imageUrl = getImageUrl(currentItem, apiClient, image.ImageType, image.ImageIndex, { maxWidth: imageSize });
|
const imageUrl = getImageUrl(currentItem, apiClient, image.ImageType, image.ImageIndex, { maxWidth: imageSize });
|
||||||
|
|
||||||
html += '<div class="cardImageContainer" style="background-image:url(\'' + imageUrl + '\');background-position:center center;background-size:contain;"></div>';
|
html += '<div class="cardImageContainer" style="background-image:url(\'' + imageUrl + '\');background-position:center center;background-size:contain;"></div>';
|
||||||
|
|
||||||
|
@ -172,7 +188,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteImage(context, itemId, type, index, apiClient, enableConfirmation) {
|
function deleteImage(context, itemId, type, index, apiClient, enableConfirmation) {
|
||||||
var afterConfirm = function () {
|
const afterConfirm = function () {
|
||||||
apiClient.deleteItemImage(itemId, type, index).then(function () {
|
apiClient.deleteItemImage(itemId, type, index).then(function () {
|
||||||
hasChanges = true;
|
hasChanges = true;
|
||||||
reload(context);
|
reload(context);
|
||||||
|
@ -184,8 +200,8 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
require(['confirm'], function (confirm) {
|
import('confirm').then(({default: confirm}) => {
|
||||||
confirm.default({
|
confirm({
|
||||||
|
|
||||||
text: globalize.translate('ConfirmDeleteImage'),
|
text: globalize.translate('ConfirmDeleteImage'),
|
||||||
confirmText: globalize.translate('Delete'),
|
confirmText: globalize.translate('Delete'),
|
||||||
|
@ -200,27 +216,26 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
hasChanges = true;
|
hasChanges = true;
|
||||||
reload(context, null, focusContext);
|
reload(context, null, focusContext);
|
||||||
}, function () {
|
}, function () {
|
||||||
require(['alert'], function (alert) {
|
import('alert').then(({default: alert}) => {
|
||||||
alert(globalize.translate('DefaultErrorMessage'));
|
alert(globalize.translate('ErrorDefault'));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderImages(page, item, apiClient, images, imageProviders, elem) {
|
function renderImages(page, item, apiClient, images, imageProviders, elem) {
|
||||||
var html = '';
|
let html = '';
|
||||||
|
|
||||||
var imageSize = 300;
|
let imageSize = 300;
|
||||||
var windowSize = dom.getWindowSize();
|
const windowSize = dom.getWindowSize();
|
||||||
if (windowSize.innerWidth >= 1280) {
|
if (windowSize.innerWidth >= 1280) {
|
||||||
imageSize = Math.round(windowSize.innerWidth / 4);
|
imageSize = Math.round(windowSize.innerWidth / 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
var tagName = layoutManager.tv ? 'button' : 'div';
|
const tagName = layoutManager.tv ? 'button' : 'div';
|
||||||
var enableFooterButtons = !layoutManager.tv;
|
const enableFooterButtons = !layoutManager.tv;
|
||||||
|
|
||||||
for (var i = 0, length = images.length; i < length; i++) {
|
|
||||||
var image = images[i];
|
|
||||||
|
|
||||||
|
for (let i = 0, length = images.length; i < length; i++) {
|
||||||
|
const image = images[i];
|
||||||
html += getCardHtml(image, i, length, apiClient, imageProviders, imageSize, tagName, enableFooterButtons);
|
html += getCardHtml(image, i, length, apiClient, imageProviders, imageSize, tagName, enableFooterButtons);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,7 +244,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderStandardImages(page, apiClient, item, imageInfos, imageProviders) {
|
function renderStandardImages(page, apiClient, item, imageInfos, imageProviders) {
|
||||||
var images = imageInfos.filter(function (i) {
|
const 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';
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -237,7 +252,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderBackdrops(page, apiClient, item, imageInfos, imageProviders) {
|
function renderBackdrops(page, apiClient, item, imageInfos, imageProviders) {
|
||||||
var images = imageInfos.filter(function (i) {
|
const images = imageInfos.filter(function (i) {
|
||||||
return i.ImageType === 'Backdrop';
|
return i.ImageType === 'Backdrop';
|
||||||
}).sort(function (a, b) {
|
}).sort(function (a, b) {
|
||||||
return a.ImageIndex - b.ImageIndex;
|
return a.ImageIndex - b.ImageIndex;
|
||||||
|
@ -252,7 +267,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderScreenshots(page, apiClient, item, imageInfos, imageProviders) {
|
function renderScreenshots(page, apiClient, item, imageInfos, imageProviders) {
|
||||||
var images = imageInfos.filter(function (i) {
|
const images = imageInfos.filter(function (i) {
|
||||||
return i.ImageType === 'Screenshot';
|
return i.ImageType === 'Screenshot';
|
||||||
}).sort(function (a, b) {
|
}).sort(function (a, b) {
|
||||||
return a.ImageIndex - b.ImageIndex;
|
return a.ImageIndex - b.ImageIndex;
|
||||||
|
@ -267,7 +282,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
}
|
}
|
||||||
|
|
||||||
function showImageDownloader(page, imageType) {
|
function showImageDownloader(page, imageType) {
|
||||||
require(['imageDownloader'], function (ImageDownloader) {
|
import('imageDownloader').then(({default: ImageDownloader}) => {
|
||||||
ImageDownloader.show(currentItem.Id, currentItem.ServerId, currentItem.Type, imageType).then(function () {
|
ImageDownloader.show(currentItem.Id, currentItem.ServerId, currentItem.Type, imageType).then(function () {
|
||||||
hasChanges = true;
|
hasChanges = true;
|
||||||
reload(page);
|
reload(page);
|
||||||
|
@ -276,17 +291,17 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
}
|
}
|
||||||
|
|
||||||
function showActionSheet(context, imageCard) {
|
function showActionSheet(context, imageCard) {
|
||||||
var itemId = imageCard.getAttribute('data-id');
|
const itemId = imageCard.getAttribute('data-id');
|
||||||
var serverId = imageCard.getAttribute('data-serverid');
|
const serverId = imageCard.getAttribute('data-serverid');
|
||||||
var apiClient = connectionManager.getApiClient(serverId);
|
const apiClient = connectionManager.getApiClient(serverId);
|
||||||
|
|
||||||
var type = imageCard.getAttribute('data-imagetype');
|
const type = imageCard.getAttribute('data-imagetype');
|
||||||
var index = parseInt(imageCard.getAttribute('data-index'));
|
const index = parseInt(imageCard.getAttribute('data-index'));
|
||||||
var providerCount = parseInt(imageCard.getAttribute('data-providers'));
|
const providerCount = parseInt(imageCard.getAttribute('data-providers'));
|
||||||
var numImages = parseInt(imageCard.getAttribute('data-numimages'));
|
const numImages = parseInt(imageCard.getAttribute('data-numimages'));
|
||||||
|
|
||||||
require(['actionsheet'], function (actionSheet) {
|
import('actionsheet').then(({default: actionSheet}) => {
|
||||||
var commands = [];
|
const commands = [];
|
||||||
|
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('Delete'),
|
name: globalize.translate('Delete'),
|
||||||
|
@ -343,9 +358,9 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
}
|
}
|
||||||
|
|
||||||
function initEditor(context, options) {
|
function initEditor(context, options) {
|
||||||
var uploadButtons = context.querySelectorAll('.btnOpenUploadMenu');
|
const uploadButtons = context.querySelectorAll('.btnOpenUploadMenu');
|
||||||
var isFileInputSupported = appHost.supports('fileinput');
|
const isFileInputSupported = appHost.supports('fileinput');
|
||||||
for (var i = 0, length = uploadButtons.length; i < length; i++) {
|
for (let i = 0, length = uploadButtons.length; i < length; i++) {
|
||||||
if (isFileInputSupported) {
|
if (isFileInputSupported) {
|
||||||
uploadButtons[i].classList.remove('hide');
|
uploadButtons[i].classList.remove('hide');
|
||||||
} else {
|
} else {
|
||||||
|
@ -354,9 +369,9 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
}
|
}
|
||||||
|
|
||||||
addListeners(context, 'btnOpenUploadMenu', 'click', function () {
|
addListeners(context, 'btnOpenUploadMenu', 'click', function () {
|
||||||
var imageType = this.getAttribute('data-imagetype');
|
const imageType = this.getAttribute('data-imagetype');
|
||||||
|
|
||||||
require(['imageUploader'], function (imageUploader) {
|
import('imageUploader').then(({default: imageUploader}) => {
|
||||||
imageUploader.show({
|
imageUploader.show({
|
||||||
|
|
||||||
theme: options.theme,
|
theme: options.theme,
|
||||||
|
@ -386,32 +401,32 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
});
|
});
|
||||||
|
|
||||||
addListeners(context, 'btnDeleteImage', 'click', function () {
|
addListeners(context, 'btnDeleteImage', 'click', function () {
|
||||||
var type = this.getAttribute('data-imagetype');
|
const type = this.getAttribute('data-imagetype');
|
||||||
var index = this.getAttribute('data-index');
|
let index = this.getAttribute('data-index');
|
||||||
index = index === 'null' ? null : parseInt(index);
|
index = index === 'null' ? null : parseInt(index);
|
||||||
var apiClient = connectionManager.getApiClient(currentItem.ServerId);
|
const apiClient = connectionManager.getApiClient(currentItem.ServerId);
|
||||||
deleteImage(context, currentItem.Id, type, index, apiClient, true);
|
deleteImage(context, currentItem.Id, type, index, apiClient, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
addListeners(context, 'btnMoveImage', 'click', function () {
|
addListeners(context, 'btnMoveImage', 'click', function () {
|
||||||
var type = this.getAttribute('data-imagetype');
|
const type = this.getAttribute('data-imagetype');
|
||||||
var index = this.getAttribute('data-index');
|
const index = this.getAttribute('data-index');
|
||||||
var newIndex = this.getAttribute('data-newindex');
|
const newIndex = this.getAttribute('data-newindex');
|
||||||
var apiClient = connectionManager.getApiClient(currentItem.ServerId);
|
const apiClient = connectionManager.getApiClient(currentItem.ServerId);
|
||||||
moveImage(context, apiClient, currentItem.Id, type, index, newIndex, dom.parentWithClass(this, 'itemsContainer'));
|
moveImage(context, apiClient, currentItem.Id, type, index, newIndex, dom.parentWithClass(this, 'itemsContainer'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function showEditor(options, resolve, reject) {
|
function showEditor(options, resolve, reject) {
|
||||||
var itemId = options.itemId;
|
const itemId = options.itemId;
|
||||||
var serverId = options.serverId;
|
const serverId = options.serverId;
|
||||||
|
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
require(['text!./imageeditor.template.html'], function (template) {
|
import('text!./imageeditor.template.html').then(({default: template}) => {
|
||||||
var apiClient = connectionManager.getApiClient(serverId);
|
const apiClient = connectionManager.getApiClient(serverId);
|
||||||
apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) {
|
apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) {
|
||||||
var dialogOptions = {
|
const dialogOptions = {
|
||||||
removeOnClose: true
|
removeOnClose: true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -421,7 +436,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
dialogOptions.size = 'small';
|
dialogOptions.size = 'small';
|
||||||
}
|
}
|
||||||
|
|
||||||
var dlg = dialogHelper.createDialog(dialogOptions);
|
const dlg = dialogHelper.createDialog(dialogOptions);
|
||||||
|
|
||||||
dlg.classList.add('formDialog');
|
dlg.classList.add('formDialog');
|
||||||
|
|
||||||
|
@ -459,13 +474,15 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
export function show (options) {
|
||||||
show: function (options) {
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
hasChanges = false;
|
hasChanges = false;
|
||||||
|
|
||||||
showEditor(options, resolve, reject);
|
showEditor(options, resolve, reject);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
|
||||||
});
|
export default {
|
||||||
|
show
|
||||||
|
};
|
||||||
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
|
@ -205,7 +205,7 @@ import 'css!./style';
|
||||||
|
|
||||||
/* eslint-enable indent */
|
/* eslint-enable indent */
|
||||||
export default {
|
export default {
|
||||||
serLazyImage: setLazyImage,
|
setLazyImage: setLazyImage,
|
||||||
fillImages: fillImages,
|
fillImages: fillImages,
|
||||||
fillImage: fillImage,
|
fillImage: fillImage,
|
||||||
lazyImage: lazyImage,
|
lazyImage: lazyImage,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
define(['apphost', 'globalize'], function (appHost, globalize) {
|
import appHost from 'apphost';
|
||||||
'use strict';
|
import globalize from 'globalize';
|
||||||
|
|
||||||
function getDisplayName(item, options = {}) {
|
export function getDisplayName(item, options = {}) {
|
||||||
if (!item) {
|
if (!item) {
|
||||||
throw new Error('null item passed into getDisplayName');
|
throw new Error('null item passed into getDisplayName');
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
item = item.ProgramInfo || item;
|
item = item.ProgramInfo || item;
|
||||||
}
|
}
|
||||||
|
|
||||||
var name = ((item.Type === 'Program' || item.Type === 'Recording') && (item.IsSeries || item.EpisodeTitle) ? item.EpisodeTitle : item.Name) || '';
|
let 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) {
|
if (item.ChannelNumber) {
|
||||||
|
@ -21,10 +21,10 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
if (item.Type === 'Episode' && item.ParentIndexNumber === 0) {
|
if (item.Type === 'Episode' && item.ParentIndexNumber === 0) {
|
||||||
name = globalize.translate('ValueSpecialEpisodeName', name);
|
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;
|
let displayIndexNumber = item.IndexNumber;
|
||||||
|
|
||||||
var number = displayIndexNumber;
|
let number = displayIndexNumber;
|
||||||
var nameSeparator = ' - ';
|
let nameSeparator = ' - ';
|
||||||
|
|
||||||
if (options.includeParentInfo !== false) {
|
if (options.includeParentInfo !== false) {
|
||||||
number = 'S' + item.ParentIndexNumber + ':E' + number;
|
number = 'S' + item.ParentIndexNumber + ':E' + number;
|
||||||
|
@ -43,10 +43,10 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
function supportsAddingToCollection(item) {
|
export function supportsAddingToCollection(item) {
|
||||||
var invalidTypes = ['Genre', 'MusicGenre', 'Studio', 'UserView', 'CollectionFolder', 'Audio', 'Program', 'Timer', 'SeriesTimer'];
|
const invalidTypes = ['Genre', 'MusicGenre', 'Studio', 'UserView', 'CollectionFolder', 'Audio', 'Program', 'Timer', 'SeriesTimer'];
|
||||||
|
|
||||||
if (item.Type === 'Recording') {
|
if (item.Type === 'Recording') {
|
||||||
if (item.Status !== 'Completed') {
|
if (item.Status !== 'Completed') {
|
||||||
|
@ -55,9 +55,9 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return !item.CollectionType && invalidTypes.indexOf(item.Type) === -1 && item.MediaType !== 'Photo' && !isLocalItem(item);
|
return !item.CollectionType && invalidTypes.indexOf(item.Type) === -1 && item.MediaType !== 'Photo' && !isLocalItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
function supportsAddingToPlaylist(item) {
|
export function supportsAddingToPlaylist(item) {
|
||||||
if (item.Type === 'Program') {
|
if (item.Type === 'Program') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -88,10 +88,10 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
export function canEdit(user, item) {
|
||||||
var itemType = item.Type;
|
const itemType = item.Type;
|
||||||
|
|
||||||
if (itemType === 'UserRootFolder' || itemType === 'UserView') {
|
if (itemType === 'UserRootFolder' || itemType === 'UserView') {
|
||||||
return false;
|
return false;
|
||||||
|
@ -120,24 +120,18 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return user.Policy.IsAdministrator;
|
return user.Policy.IsAdministrator;
|
||||||
}
|
}
|
||||||
|
|
||||||
function isLocalItem(item) {
|
export function isLocalItem(item) {
|
||||||
if (item && item.Id && item.Id.indexOf('local') === 0) {
|
if (item && item.Id && item.Id.indexOf('local') === 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
export function canIdentify (user, item) {
|
||||||
getDisplayName: getDisplayName,
|
const itemType = item.Type;
|
||||||
supportsAddingToCollection: supportsAddingToCollection,
|
|
||||||
supportsAddingToPlaylist: supportsAddingToPlaylist,
|
|
||||||
isLocalItem: isLocalItem,
|
|
||||||
|
|
||||||
canIdentify: function (user, item) {
|
|
||||||
var itemType = item.Type;
|
|
||||||
|
|
||||||
if (itemType === 'Movie' ||
|
if (itemType === 'Movie' ||
|
||||||
itemType === 'Trailer' ||
|
itemType === 'Trailer' ||
|
||||||
|
@ -156,12 +150,10 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
},
|
}
|
||||||
|
|
||||||
canEdit: canEdit,
|
export function canEditImages (user, item) {
|
||||||
|
const itemType = item.Type;
|
||||||
canEditImages: function (user, item) {
|
|
||||||
var itemType = item.Type;
|
|
||||||
|
|
||||||
if (item.MediaType === 'Photo') {
|
if (item.MediaType === 'Photo') {
|
||||||
return false;
|
return false;
|
||||||
|
@ -182,9 +174,9 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return itemType !== 'Timer' && itemType !== 'SeriesTimer' && canEdit(user, item) && !isLocalItem(item);
|
return itemType !== 'Timer' && itemType !== 'SeriesTimer' && canEdit(user, item) && !isLocalItem(item);
|
||||||
},
|
}
|
||||||
|
|
||||||
canSync: function (user, item) {
|
export function canSync (user, item) {
|
||||||
if (user && !user.Policy.EnableContentDownloading) {
|
if (user && !user.Policy.EnableContentDownloading) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -194,9 +186,9 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return item.SupportsSync;
|
return item.SupportsSync;
|
||||||
},
|
}
|
||||||
|
|
||||||
canShare: function (item, user) {
|
export function canShare (item, user) {
|
||||||
if (item.Type === 'Program') {
|
if (item.Type === 'Program') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -218,13 +210,13 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return user.Policy.EnablePublicSharing && appHost.supports('sharing');
|
return user.Policy.EnablePublicSharing && appHost.supports('sharing');
|
||||||
},
|
}
|
||||||
|
|
||||||
enableDateAddedDisplay: function (item) {
|
export function enableDateAddedDisplay (item) {
|
||||||
return !item.IsFolder && item.MediaType && item.Type !== 'Program' && item.Type !== 'TvChannel' && item.Type !== 'Trailer';
|
return !item.IsFolder && item.MediaType && item.Type !== 'Program' && item.Type !== 'TvChannel' && item.Type !== 'Trailer';
|
||||||
},
|
}
|
||||||
|
|
||||||
canMarkPlayed: function (item) {
|
export function canMarkPlayed (item) {
|
||||||
if (item.Type === 'Program') {
|
if (item.Type === 'Program') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -251,9 +243,9 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
},
|
}
|
||||||
|
|
||||||
canRate: function (item) {
|
export function canRate (item) {
|
||||||
if (item.Type === 'Program'
|
if (item.Type === 'Program'
|
||||||
|| item.Type === 'Timer'
|
|| item.Type === 'Timer'
|
||||||
|| item.Type === 'SeriesTimer'
|
|| item.Type === 'SeriesTimer'
|
||||||
|
@ -265,9 +257,9 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
}
|
||||||
|
|
||||||
canConvert: function (item, user) {
|
export function canConvert (item, user) {
|
||||||
if (!user.Policy.EnableMediaConversion) {
|
if (!user.Policy.EnableMediaConversion) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -276,17 +268,17 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var mediaType = item.MediaType;
|
const mediaType = item.MediaType;
|
||||||
if (mediaType === 'Book' || mediaType === 'Photo' || mediaType === 'Audio') {
|
if (mediaType === 'Book' || mediaType === 'Photo' || mediaType === 'Audio') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var collectionType = item.CollectionType;
|
const collectionType = item.CollectionType;
|
||||||
if (collectionType === 'livetv') {
|
if (collectionType === 'livetv') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var type = item.Type;
|
const type = item.Type;
|
||||||
if (type === 'Channel' || type === 'Person' || type === 'Year' || type === 'Program' || type === 'Timer' || type === 'SeriesTimer') {
|
if (type === 'Channel' || type === 'Person' || type === 'Year' || type === 'Program' || type === 'Timer' || type === 'SeriesTimer') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -300,11 +292,11 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
}
|
||||||
|
|
||||||
canRefreshMetadata: function (item, user) {
|
export function canRefreshMetadata (item, user) {
|
||||||
if (user.Policy.IsAdministrator) {
|
if (user.Policy.IsAdministrator) {
|
||||||
var collectionType = item.CollectionType;
|
const collectionType = item.CollectionType;
|
||||||
if (collectionType === 'livetv') {
|
if (collectionType === 'livetv') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -317,9 +309,9 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
},
|
}
|
||||||
|
|
||||||
supportsMediaSourceSelection: function (item) {
|
export function supportsMediaSourceSelection (item) {
|
||||||
if (item.MediaType !== 'Video') {
|
if (item.MediaType !== 'Video') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -337,6 +329,22 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
|
||||||
});
|
export default {
|
||||||
|
getDisplayName: getDisplayName,
|
||||||
|
supportsAddingToCollection: supportsAddingToCollection,
|
||||||
|
supportsAddingToPlaylist: supportsAddingToPlaylist,
|
||||||
|
isLocalItem: isLocalItem,
|
||||||
|
canIdentify: canIdentify,
|
||||||
|
canEdit: canEdit,
|
||||||
|
canEditImages: canEditImages,
|
||||||
|
canSync: canSync,
|
||||||
|
canShare: canShare,
|
||||||
|
enableDateAddedDisplay: enableDateAddedDisplay,
|
||||||
|
canMarkPlayed: canMarkPlayed,
|
||||||
|
canRate: canRate,
|
||||||
|
canConvert: canConvert,
|
||||||
|
canRefreshMetadata: canRefreshMetadata,
|
||||||
|
supportsMediaSourceSelection: supportsMediaSourceSelection
|
||||||
|
};
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['playbackManager', 'serverNotifications', 'events'], function (playbackManager, serverNotifications, events) {
|
define(['playbackManager', 'serverNotifications', 'events'], function (playbackManager, serverNotifications, events) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
playbackManager = playbackManager.default || playbackManager;
|
||||||
|
|
||||||
function onUserDataChanged(e, apiClient, userData) {
|
function onUserDataChanged(e, apiClient, userData) {
|
||||||
var instance = this;
|
var instance = this;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['browser', 'appSettings', 'events'], function (browser, appSettings, events) {
|
define(['browser', 'appSettings', 'events'], function (browser, appSettings, events) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
browser = browser.default || browser;
|
||||||
|
|
||||||
function setLayout(instance, layout, selectedLayout) {
|
function setLayout(instance, layout, selectedLayout) {
|
||||||
if (layout === selectedLayout) {
|
if (layout === selectedLayout) {
|
||||||
instance[layout] = true;
|
instance[layout] = true;
|
||||||
|
|
|
@ -219,7 +219,7 @@ import 'emby-input';
|
||||||
html += '<div class="flex align-items-center" style="margin:1.5em 0 .5em;">';
|
html += '<div class="flex align-items-center" style="margin:1.5em 0 .5em;">';
|
||||||
html += '<h3 class="checkboxListLabel" style="margin:0;">' + globalize.translate('HeaderTypeImageFetchers', availableTypeOptions.Type) + '</h3>';
|
html += '<h3 class="checkboxListLabel" style="margin:0;">' + globalize.translate('HeaderTypeImageFetchers', availableTypeOptions.Type) + '</h3>';
|
||||||
const supportedImageTypes = availableTypeOptions.SupportedImageTypes || [];
|
const supportedImageTypes = availableTypeOptions.SupportedImageTypes || [];
|
||||||
if (supportedImageTypes.length > 1 || 1 === supportedImageTypes.length && 'Primary' !== supportedImageTypes[0]) {
|
if (supportedImageTypes.length > 1 || supportedImageTypes.length === 1 && supportedImageTypes[0] !== 'Primary') {
|
||||||
html += '<button is="emby-button" class="raised btnImageOptionsForType" type="button" style="margin-left:1.5em;font-size:90%;"><span>' + globalize.translate('HeaderFetcherSettings') + '</span></button>';
|
html += '<button is="emby-button" class="raised btnImageOptionsForType" type="button" style="margin-left:1.5em;font-size:90%;"><span>' + globalize.translate('HeaderFetcherSettings') + '</span></button>';
|
||||||
}
|
}
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
@ -362,7 +362,7 @@ import 'emby-input';
|
||||||
TypeOptions: []
|
TypeOptions: []
|
||||||
};
|
};
|
||||||
currentAvailableOptions = null;
|
currentAvailableOptions = null;
|
||||||
const isNewLibrary = null === libraryOptions;
|
const isNewLibrary = libraryOptions === null;
|
||||||
isNewLibrary && parent.classList.add('newlibrary');
|
isNewLibrary && parent.classList.add('newlibrary');
|
||||||
const response = await fetch('components/libraryoptionseditor/libraryoptionseditor.template.html');
|
const response = await fetch('components/libraryoptionseditor/libraryoptionseditor.template.html');
|
||||||
const template = await response.text();
|
const template = await response.text();
|
||||||
|
@ -578,7 +578,7 @@ import 'emby-input';
|
||||||
parent.querySelector('#chkSkipIfAudioTrackPresent').checked = options.SkipSubtitlesIfAudioTrackMatches;
|
parent.querySelector('#chkSkipIfAudioTrackPresent').checked = options.SkipSubtitlesIfAudioTrackMatches;
|
||||||
parent.querySelector('#chkRequirePerfectMatch').checked = options.RequirePerfectSubtitleMatch;
|
parent.querySelector('#chkRequirePerfectMatch').checked = options.RequirePerfectSubtitleMatch;
|
||||||
Array.prototype.forEach.call(parent.querySelectorAll('.chkMetadataSaver'), elem => {
|
Array.prototype.forEach.call(parent.querySelectorAll('.chkMetadataSaver'), elem => {
|
||||||
elem.checked = options.MetadataSavers ? options.MetadataSavers.includes(elem.getAttribute('data-pluginname')) : 'true' === elem.getAttribute('data-defaultenabled');
|
elem.checked = options.MetadataSavers ? options.MetadataSavers.includes(elem.getAttribute('data-pluginname')) : elem.getAttribute('data-defaultenabled') === 'true';
|
||||||
});
|
});
|
||||||
Array.prototype.forEach.call(parent.querySelectorAll('.chkSubtitleLanguage'), elem => {
|
Array.prototype.forEach.call(parent.querySelectorAll('.chkSubtitleLanguage'), elem => {
|
||||||
elem.checked = !!options.SubtitleDownloadLanguages && options.SubtitleDownloadLanguages.includes(elem.getAttribute('data-lang'));
|
elem.checked = !!options.SubtitleDownloadLanguages && options.SubtitleDownloadLanguages.includes(elem.getAttribute('data-lang'));
|
||||||
|
|
|
@ -81,7 +81,7 @@ import 'emby-playstatebutton';
|
||||||
let itemId;
|
let itemId;
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
maxWidth: width * 2,
|
maxWidth: width,
|
||||||
type: 'Primary'
|
type: 'Primary'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ import 'emby-playstatebutton';
|
||||||
function getChannelImageUrl(item, width) {
|
function getChannelImageUrl(item, width) {
|
||||||
const apiClient = connectionManager.getApiClient(item.ServerId);
|
const apiClient = connectionManager.getApiClient(item.ServerId);
|
||||||
const options = {
|
const options = {
|
||||||
maxWidth: width * 2,
|
maxWidth: width,
|
||||||
type: 'Primary'
|
type: 'Primary'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,15 @@
|
||||||
define(['css!./loading'], function () {
|
import 'css!./loading';
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var loadingElem;
|
let loadingElem;
|
||||||
var layer1;
|
let layer1;
|
||||||
var layer2;
|
let layer2;
|
||||||
var layer3;
|
let layer3;
|
||||||
var layer4;
|
let layer4;
|
||||||
var circleLefts;
|
let circleLefts;
|
||||||
var circleRights;
|
let circleRights;
|
||||||
|
|
||||||
return {
|
export function show() {
|
||||||
show: function () {
|
let elem = loadingElem;
|
||||||
var elem = loadingElem;
|
|
||||||
|
|
||||||
if (!elem) {
|
if (!elem) {
|
||||||
elem = document.createElement('div');
|
elem = document.createElement('div');
|
||||||
|
@ -40,19 +38,17 @@ define(['css!./loading'], function () {
|
||||||
layer3.classList.add('mdl-spinner__layer-3-active');
|
layer3.classList.add('mdl-spinner__layer-3-active');
|
||||||
layer4.classList.add('mdl-spinner__layer-4-active');
|
layer4.classList.add('mdl-spinner__layer-4-active');
|
||||||
|
|
||||||
var i;
|
for (let i = 0, length = circleLefts.length; i < length; i++) {
|
||||||
var length;
|
|
||||||
|
|
||||||
for (i = 0, length = circleLefts.length; i < length; i++) {
|
|
||||||
circleLefts[i].classList.add('mdl-spinner__circleLeft-active');
|
circleLefts[i].classList.add('mdl-spinner__circleLeft-active');
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0, length = circleRights.length; i < length; i++) {
|
for (let i = 0, length = circleRights.length; i < length; i++) {
|
||||||
circleRights[i].classList.add('mdl-spinner__circleRight-active');
|
circleRights[i].classList.add('mdl-spinner__circleRight-active');
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
hide: function () {
|
|
||||||
var elem = loadingElem;
|
export function hide() {
|
||||||
|
const elem = loadingElem;
|
||||||
|
|
||||||
if (elem) {
|
if (elem) {
|
||||||
elem.classList.remove('mdlSpinnerActive');
|
elem.classList.remove('mdlSpinnerActive');
|
||||||
|
@ -62,17 +58,17 @@ define(['css!./loading'], function () {
|
||||||
elem.classList.remove('mdl-spinner__layer-3-active');
|
elem.classList.remove('mdl-spinner__layer-3-active');
|
||||||
elem.classList.remove('mdl-spinner__layer-4-active');
|
elem.classList.remove('mdl-spinner__layer-4-active');
|
||||||
|
|
||||||
var i;
|
for (let i = 0, length = circleLefts.length; i < length; i++) {
|
||||||
var length;
|
|
||||||
|
|
||||||
for (i = 0, length = circleLefts.length; i < length; i++) {
|
|
||||||
circleLefts[i].classList.remove('mdl-spinner__circleLeft-active');
|
circleLefts[i].classList.remove('mdl-spinner__circleLeft-active');
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0, length = circleRights.length; i < length; i++) {
|
for (let i = 0, length = circleRights.length; i < length; i++) {
|
||||||
circleRights[i].classList.remove('mdl-spinner__circleRight-active');
|
circleRights[i].classList.remove('mdl-spinner__circleRight-active');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
|
||||||
});
|
export default {
|
||||||
|
show: show,
|
||||||
|
hide: hide
|
||||||
|
};
|
||||||
|
|
|
@ -85,7 +85,7 @@ import 'flexStyles';
|
||||||
refreshLibraryFromServer(dom.parentWithClass(button, 'dlg-libraryeditor'));
|
refreshLibraryFromServer(dom.parentWithClass(button, 'dlg-libraryeditor'));
|
||||||
}, () => {
|
}, () => {
|
||||||
import('toast').then(({default: toast}) => {
|
import('toast').then(({default: toast}) => {
|
||||||
toast(globalize.translate('DefaultErrorMessage'));
|
toast(globalize.translate('ErrorDefault'));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -98,8 +98,8 @@ import 'flexStyles';
|
||||||
if (listItem) {
|
if (listItem) {
|
||||||
const index = parseInt(listItem.getAttribute('data-index'));
|
const index = parseInt(listItem.getAttribute('data-index'));
|
||||||
const pathInfos = (currentOptions.library.LibraryOptions || {}).PathInfos || [];
|
const pathInfos = (currentOptions.library.LibraryOptions || {}).PathInfos || [];
|
||||||
const pathInfo = null == index ? {} : pathInfos[index] || {};
|
const pathInfo = index == null ? {} : pathInfos[index] || {};
|
||||||
const originalPath = pathInfo.Path || (null == index ? null : currentOptions.library.Locations[index]);
|
const originalPath = pathInfo.Path || (index == null ? null : currentOptions.library.Locations[index]);
|
||||||
const btnRemovePath = dom.parentWithClass(e.target, 'btnRemovePath');
|
const btnRemovePath = dom.parentWithClass(e.target, 'btnRemovePath');
|
||||||
|
|
||||||
if (btnRemovePath) {
|
if (btnRemovePath) {
|
||||||
|
@ -171,7 +171,7 @@ import 'flexStyles';
|
||||||
const picker = new directoryBrowser();
|
const picker = new directoryBrowser();
|
||||||
picker.show({
|
picker.show({
|
||||||
enableNetworkSharePath: true,
|
enableNetworkSharePath: true,
|
||||||
pathReadOnly: null != originalPath,
|
pathReadOnly: originalPath != null,
|
||||||
path: originalPath,
|
path: originalPath,
|
||||||
networkSharePath: networkPath,
|
networkSharePath: networkPath,
|
||||||
callback: function (path, networkSharePath) {
|
callback: function (path, networkSharePath) {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'require'], function (serverNotifications, playbackManager, events, globalize, require) {
|
define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'require'], function (serverNotifications, playbackManager, events, globalize, require) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
playbackManager = playbackManager.default || playbackManager;
|
||||||
|
|
||||||
function onOneDocumentClick() {
|
function onOneDocumentClick() {
|
||||||
document.removeEventListener('click', onOneDocumentClick);
|
document.removeEventListener('click', onOneDocumentClick);
|
||||||
document.removeEventListener('keydown', onOneDocumentClick);
|
document.removeEventListener('keydown', onOneDocumentClick);
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,56 +1,56 @@
|
||||||
define([], function () {
|
/*eslint prefer-const: "error"*/
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var currentId = 0;
|
let currentId = 0;
|
||||||
function addUniquePlaylistItemId(item) {
|
function addUniquePlaylistItemId(item) {
|
||||||
if (!item.PlaylistItemId) {
|
if (!item.PlaylistItemId) {
|
||||||
item.PlaylistItemId = 'playlistItem' + currentId;
|
item.PlaylistItemId = 'playlistItem' + currentId;
|
||||||
currentId++;
|
currentId++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function findPlaylistIndex(playlistItemId, list) {
|
function findPlaylistIndex(playlistItemId, list) {
|
||||||
for (var i = 0, length = list.length; i < length; i++) {
|
for (let i = 0, length = list.length; i < length; i++) {
|
||||||
if (list[i].PlaylistItemId === playlistItemId) {
|
if (list[i].PlaylistItemId === playlistItemId) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
function PlayQueueManager() {
|
class PlayQueueManager {
|
||||||
|
constructor() {
|
||||||
this._sortedPlaylist = [];
|
this._sortedPlaylist = [];
|
||||||
this._playlist = [];
|
this._playlist = [];
|
||||||
this._repeatMode = 'RepeatNone';
|
this._repeatMode = 'RepeatNone';
|
||||||
this._shuffleMode = 'Sorted';
|
this._shuffleMode = 'Sorted';
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.getPlaylist = function () {
|
getPlaylist() {
|
||||||
return this._playlist.slice(0);
|
return this._playlist.slice(0);
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.setPlaylist = function (items) {
|
setPlaylist(items) {
|
||||||
items = items.slice(0);
|
items = items.slice(0);
|
||||||
|
|
||||||
for (var i = 0, length = items.length; i < length; i++) {
|
for (let i = 0, length = items.length; i < length; i++) {
|
||||||
addUniquePlaylistItemId(items[i]);
|
addUniquePlaylistItemId(items[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._currentPlaylistItemId = null;
|
this._currentPlaylistItemId = null;
|
||||||
this._playlist = items;
|
this._playlist = items;
|
||||||
this._repeatMode = 'RepeatNone';
|
this._repeatMode = 'RepeatNone';
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.queue = function (items) {
|
queue(items) {
|
||||||
for (var i = 0, length = items.length; i < length; i++) {
|
for (let i = 0, length = items.length; i < length; i++) {
|
||||||
addUniquePlaylistItemId(items[i]);
|
addUniquePlaylistItemId(items[i]);
|
||||||
|
|
||||||
this._playlist.push(items[i]);
|
this._playlist.push(items[i]);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.shufflePlaylist = function () {
|
shufflePlaylist() {
|
||||||
this._sortedPlaylist = [];
|
this._sortedPlaylist = [];
|
||||||
for (const item of this._playlist) {
|
for (const item of this._playlist) {
|
||||||
this._sortedPlaylist.push(item);
|
this._sortedPlaylist.push(item);
|
||||||
|
@ -65,42 +65,31 @@ define([], function () {
|
||||||
}
|
}
|
||||||
this._playlist.unshift(currentPlaylistItem);
|
this._playlist.unshift(currentPlaylistItem);
|
||||||
this._shuffleMode = 'Shuffle';
|
this._shuffleMode = 'Shuffle';
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.sortShuffledPlaylist = function () {
|
sortShuffledPlaylist() {
|
||||||
this._playlist = [];
|
this._playlist = [];
|
||||||
for (let item of this._sortedPlaylist) {
|
for (const item of this._sortedPlaylist) {
|
||||||
this._playlist.push(item);
|
this._playlist.push(item);
|
||||||
}
|
}
|
||||||
this._sortedPlaylist = [];
|
this._sortedPlaylist = [];
|
||||||
this._shuffleMode = 'Sorted';
|
this._shuffleMode = 'Sorted';
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.clearPlaylist = function (clearCurrentItem = false) {
|
clearPlaylist(clearCurrentItem = false) {
|
||||||
const currentPlaylistItem = this._playlist.splice(this.getCurrentPlaylistIndex(), 1)[0];
|
const currentPlaylistItem = this._playlist.splice(this.getCurrentPlaylistIndex(), 1)[0];
|
||||||
this._playlist = [];
|
this._playlist = [];
|
||||||
if (!clearCurrentItem) {
|
if (!clearCurrentItem) {
|
||||||
this._playlist.push(currentPlaylistItem);
|
this._playlist.push(currentPlaylistItem);
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
function arrayInsertAt(destArray, pos, arrayToInsert) {
|
|
||||||
var args = [];
|
|
||||||
args.push(pos); // where to insert
|
|
||||||
args.push(0); // nothing to remove
|
|
||||||
args = args.concat(arrayToInsert); // add on array to insert
|
|
||||||
destArray.splice.apply(destArray, args); // splice it in
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.queueNext = function (items) {
|
queueNext(items) {
|
||||||
var i;
|
for (let i = 0, length = items.length; i < length; i++) {
|
||||||
var length;
|
|
||||||
|
|
||||||
for (i = 0, length = items.length; i < length; i++) {
|
|
||||||
addUniquePlaylistItemId(items[i]);
|
addUniquePlaylistItemId(items[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentIndex = this.getCurrentPlaylistIndex();
|
let currentIndex = this.getCurrentPlaylistIndex();
|
||||||
|
|
||||||
if (currentIndex === -1) {
|
if (currentIndex === -1) {
|
||||||
currentIndex = this._playlist.length;
|
currentIndex = this._playlist.length;
|
||||||
|
@ -109,43 +98,43 @@ define([], function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
arrayInsertAt(this._playlist, currentIndex, items);
|
arrayInsertAt(this._playlist, currentIndex, items);
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.getCurrentPlaylistIndex = function () {
|
getCurrentPlaylistIndex() {
|
||||||
return findPlaylistIndex(this.getCurrentPlaylistItemId(), this._playlist);
|
return findPlaylistIndex(this.getCurrentPlaylistItemId(), this._playlist);
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.getCurrentItem = function () {
|
getCurrentItem() {
|
||||||
var index = findPlaylistIndex(this.getCurrentPlaylistItemId(), this._playlist);
|
const index = findPlaylistIndex(this.getCurrentPlaylistItemId(), this._playlist);
|
||||||
|
|
||||||
return index === -1 ? null : this._playlist[index];
|
return index === -1 ? null : this._playlist[index];
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.getCurrentPlaylistItemId = function () {
|
getCurrentPlaylistItemId() {
|
||||||
return this._currentPlaylistItemId;
|
return this._currentPlaylistItemId;
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.setPlaylistState = function (playlistItemId, playlistIndex) {
|
setPlaylistState(playlistItemId, playlistIndex) {
|
||||||
this._currentPlaylistItemId = playlistItemId;
|
this._currentPlaylistItemId = playlistItemId;
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.setPlaylistIndex = function (playlistIndex) {
|
setPlaylistIndex(playlistIndex) {
|
||||||
if (playlistIndex < 0) {
|
if (playlistIndex < 0) {
|
||||||
this.setPlaylistState(null);
|
this.setPlaylistState(null);
|
||||||
} else {
|
} else {
|
||||||
this.setPlaylistState(this._playlist[playlistIndex].PlaylistItemId);
|
this.setPlaylistState(this._playlist[playlistIndex].PlaylistItemId);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.removeFromPlaylist = function (playlistItemIds) {
|
removeFromPlaylist(playlistItemIds) {
|
||||||
if (this._playlist.length <= playlistItemIds.length) {
|
if (this._playlist.length <= playlistItemIds.length) {
|
||||||
return {
|
return {
|
||||||
result: 'empty'
|
result: 'empty'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentPlaylistItemId = this.getCurrentPlaylistItemId();
|
const currentPlaylistItemId = this.getCurrentPlaylistItemId();
|
||||||
var isCurrentIndex = playlistItemIds.indexOf(currentPlaylistItemId) !== -1;
|
const isCurrentIndex = playlistItemIds.indexOf(currentPlaylistItemId) !== -1;
|
||||||
|
|
||||||
this._sortedPlaylist = this._sortedPlaylist.filter(function (item) {
|
this._sortedPlaylist = this._sortedPlaylist.filter(function (item) {
|
||||||
return !playlistItemIds.includes(item.PlaylistItemId);
|
return !playlistItemIds.includes(item.PlaylistItemId);
|
||||||
|
@ -159,17 +148,13 @@ define([], function () {
|
||||||
result: 'removed',
|
result: 'removed',
|
||||||
isCurrentIndex: isCurrentIndex
|
isCurrentIndex: isCurrentIndex
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
function moveInArray(array, from, to) {
|
|
||||||
array.splice(to, 0, array.splice(from, 1)[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.movePlaylistItem = function (playlistItemId, newIndex) {
|
movePlaylistItem(playlistItemId, newIndex) {
|
||||||
var playlist = this.getPlaylist();
|
const playlist = this.getPlaylist();
|
||||||
|
|
||||||
var oldIndex;
|
let oldIndex;
|
||||||
for (var i = 0, length = playlist.length; i < length; i++) {
|
for (let i = 0, length = playlist.length; i < length; i++) {
|
||||||
if (playlist[i].PlaylistItemId === playlistItemId) {
|
if (playlist[i].PlaylistItemId === playlistItemId) {
|
||||||
oldIndex = i;
|
oldIndex = i;
|
||||||
break;
|
break;
|
||||||
|
@ -195,30 +180,30 @@ define([], function () {
|
||||||
playlistItemId: playlistItemId,
|
playlistItemId: playlistItemId,
|
||||||
newIndex: newIndex
|
newIndex: newIndex
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.reset = function () {
|
reset() {
|
||||||
this._sortedPlaylist = [];
|
this._sortedPlaylist = [];
|
||||||
this._playlist = [];
|
this._playlist = [];
|
||||||
this._currentPlaylistItemId = null;
|
this._currentPlaylistItemId = null;
|
||||||
this._repeatMode = 'RepeatNone';
|
this._repeatMode = 'RepeatNone';
|
||||||
this._shuffleMode = 'Sorted';
|
this._shuffleMode = 'Sorted';
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.setRepeatMode = function (value) {
|
setRepeatMode(value) {
|
||||||
const repeatModes = ['RepeatOne', 'RepeatAll', 'RepeatNone'];
|
const repeatModes = ['RepeatOne', 'RepeatAll', 'RepeatNone'];
|
||||||
if (repeatModes.includes(value)) {
|
if (repeatModes.includes(value)) {
|
||||||
this._repeatMode = value;
|
this._repeatMode = value;
|
||||||
} else {
|
} else {
|
||||||
throw new TypeError('invalid value provided for setRepeatMode');
|
throw new TypeError('invalid value provided for setRepeatMode');
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.getRepeatMode = function () {
|
getRepeatMode() {
|
||||||
return this._repeatMode;
|
return this._repeatMode;
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.setShuffleMode = function (value) {
|
setShuffleMode(value) {
|
||||||
switch (value) {
|
switch (value) {
|
||||||
case 'Shuffle':
|
case 'Shuffle':
|
||||||
this.shufflePlaylist();
|
this.shufflePlaylist();
|
||||||
|
@ -229,9 +214,9 @@ define([], function () {
|
||||||
default:
|
default:
|
||||||
throw new TypeError('invalid value provided to setShuffleMode');
|
throw new TypeError('invalid value provided to setShuffleMode');
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.toggleShuffleMode = function () {
|
toggleShuffleMode() {
|
||||||
switch (this._shuffleMode) {
|
switch (this._shuffleMode) {
|
||||||
case 'Shuffle':
|
case 'Shuffle':
|
||||||
this.setShuffleMode('Sorted');
|
this.setShuffleMode('Sorted');
|
||||||
|
@ -242,16 +227,16 @@ define([], function () {
|
||||||
default:
|
default:
|
||||||
throw new TypeError('current value for shufflequeue is invalid');
|
throw new TypeError('current value for shufflequeue is invalid');
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.getShuffleMode = function () {
|
getShuffleMode() {
|
||||||
return this._shuffleMode;
|
return this._shuffleMode;
|
||||||
};
|
}
|
||||||
|
|
||||||
PlayQueueManager.prototype.getNextItemInfo = function () {
|
getNextItemInfo() {
|
||||||
var newIndex;
|
let newIndex;
|
||||||
var playlist = this.getPlaylist();
|
const playlist = this.getPlaylist();
|
||||||
var playlistLength = playlist.length;
|
const playlistLength = playlist.length;
|
||||||
|
|
||||||
switch (this.getRepeatMode()) {
|
switch (this.getRepeatMode()) {
|
||||||
case 'RepeatOne':
|
case 'RepeatOne':
|
||||||
|
@ -272,7 +257,7 @@ define([], function () {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var item = playlist[newIndex];
|
const item = playlist[newIndex];
|
||||||
|
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -282,7 +267,19 @@ define([], function () {
|
||||||
item: item,
|
item: item,
|
||||||
index: newIndex
|
index: newIndex
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return PlayQueueManager;
|
function arrayInsertAt(destArray, pos, arrayToInsert) {
|
||||||
});
|
let args = [];
|
||||||
|
args.push(pos); // where to insert
|
||||||
|
args.push(0); // nothing to remove
|
||||||
|
args = args.concat(arrayToInsert); // add on array to insert
|
||||||
|
destArray.splice.apply(destArray, args); // splice it in
|
||||||
|
}
|
||||||
|
|
||||||
|
function moveInArray(array, from, to) {
|
||||||
|
array.splice(to, 0, array.splice(from, 1)[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default PlayQueueManager;
|
||||||
|
|
|
@ -85,7 +85,7 @@
|
||||||
<div class="selectContainer">
|
<div class="selectContainer">
|
||||||
<select is="emby-select" class="selectChromecastVersion" label="${LabelChromecastVersion}">
|
<select is="emby-select" class="selectChromecastVersion" label="${LabelChromecastVersion}">
|
||||||
<option value="stable">${LabelStable}</option>
|
<option value="stable">${LabelStable}</option>
|
||||||
<option value="nightly">${LabelNightly}</option>
|
<option value="unstable">${LabelUnstable}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
|
||||||
var apiClient = connectionManager.getApiClient(serverId);
|
var apiClient = connectionManager.getApiClient(serverId);
|
||||||
|
|
||||||
apiClient.getLiveTvProgram(programId, apiClient.getCurrentUserId()).then(function (item) {
|
apiClient.getLiveTvProgram(programId, apiClient.getCurrentUserId()).then(function (item) {
|
||||||
playbackManager.play({
|
playbackManager.default.play({
|
||||||
ids: [item.ChannelId],
|
ids: [item.ChannelId],
|
||||||
serverId: serverId
|
serverId: serverId
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'scrollStyles', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons', 'flexStyles'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader) {
|
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'scrollStyles', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons', 'flexStyles'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
var currentDialog;
|
var currentDialog;
|
||||||
var recordingDeleted = false;
|
var recordingDeleted = false;
|
||||||
var currentItemId;
|
var currentItemId;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['globalize', 'connectionManager', 'serverNotifications', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'paper-icon-button-light', 'emby-button', 'css!./recordingfields', 'flexStyles'], function (globalize, connectionManager, serverNotifications, require, loading, appHost, dom, recordingHelper, events) {
|
define(['globalize', 'connectionManager', 'serverNotifications', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'paper-icon-button-light', 'emby-button', 'css!./recordingfields', 'flexStyles'], function (globalize, connectionManager, serverNotifications, require, loading, appHost, dom, recordingHelper, events) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function loadData(parent, program, apiClient) {
|
function loadData(parent, program, apiClient) {
|
||||||
if (program.IsSeries) {
|
if (program.IsSeries) {
|
||||||
parent.querySelector('.recordSeriesContainer').classList.remove('hide');
|
parent.querySelector('.recordSeriesContainer').classList.remove('hide');
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['globalize', 'loading', 'connectionManager'], function (globalize, loading, connectionManager) {
|
define(['globalize', 'loading', 'connectionManager'], function (globalize, loading, connectionManager) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function changeRecordingToSeries(apiClient, timerId, programId, confirmTimerCancellation) {
|
function changeRecordingToSeries(apiClient, timerId, programId, confirmTimerCancellation) {
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'datetime', 'scrollStyles', 'emby-button', 'emby-checkbox', 'emby-input', 'emby-select', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons', 'flexStyles'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader, datetime) {
|
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'datetime', 'scrollStyles', 'emby-button', 'emby-checkbox', 'emby-input', 'emby-select', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons', 'flexStyles'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader, datetime) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
var currentDialog;
|
var currentDialog;
|
||||||
var recordingUpdated = false;
|
var recordingUpdated = false;
|
||||||
var recordingDeleted = false;
|
var recordingDeleted = false;
|
||||||
|
|
|
@ -1,8 +1,21 @@
|
||||||
define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'appRouter', 'globalize', 'emby-input', 'emby-checkbox', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (dom, shell, dialogHelper, loading, layoutManager, connectionManager, appRouter, globalize) {
|
import dom from 'dom';
|
||||||
'use strict';
|
import dialogHelper from 'dialogHelper';
|
||||||
|
import loading from 'loading';
|
||||||
|
import layoutManager from 'layoutManager';
|
||||||
|
import connectionManager from 'connectionManager';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import 'emby-input';
|
||||||
|
import 'emby-checkbox';
|
||||||
|
import 'paper-icon-button-light';
|
||||||
|
import 'emby-select';
|
||||||
|
import 'material-icons';
|
||||||
|
import 'css!./../formdialog';
|
||||||
|
import 'emby-button';
|
||||||
|
|
||||||
function getEditorHtml() {
|
/*eslint prefer-const: "error"*/
|
||||||
var html = '';
|
|
||||||
|
function getEditorHtml() {
|
||||||
|
let html = '';
|
||||||
|
|
||||||
html += '<div class="formDialogContent smoothScrollY" style="padding-top:2em;">';
|
html += '<div class="formDialogContent smoothScrollY" style="padding-top:2em;">';
|
||||||
html += '<div class="dialogContentInner dialog-content-centered">';
|
html += '<div class="dialogContentInner dialog-content-centered">';
|
||||||
|
@ -37,28 +50,28 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionM
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
function centerFocus(elem, horiz, on) {
|
function centerFocus(elem, horiz, on) {
|
||||||
require(['scrollHelper'], function (scrollHelper) {
|
import('scrollHelper').then(({default: scrollHelper}) => {
|
||||||
var fn = on ? 'on' : 'off';
|
const fn = on ? 'on' : 'off';
|
||||||
scrollHelper.centerFocus[fn](elem, horiz);
|
scrollHelper.centerFocus[fn](elem, horiz);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function onSubmit(e) {
|
function onSubmit(e) {
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
var instance = this;
|
const instance = this;
|
||||||
var dlg = dom.parentWithClass(e.target, 'dialog');
|
const dlg = dom.parentWithClass(e.target, 'dialog');
|
||||||
var options = instance.options;
|
const options = instance.options;
|
||||||
|
|
||||||
var apiClient = connectionManager.getApiClient(options.serverId);
|
const apiClient = connectionManager.getApiClient(options.serverId);
|
||||||
|
|
||||||
var replaceAllMetadata = dlg.querySelector('#selectMetadataRefreshMode').value === 'all';
|
const replaceAllMetadata = dlg.querySelector('#selectMetadataRefreshMode').value === 'all';
|
||||||
|
|
||||||
var mode = dlg.querySelector('#selectMetadataRefreshMode').value === 'scan' ? 'Default' : 'FullRefresh';
|
const mode = dlg.querySelector('#selectMetadataRefreshMode').value === 'scan' ? 'Default' : 'FullRefresh';
|
||||||
var replaceAllImages = mode === 'FullRefresh' && dlg.querySelector('.chkReplaceImages').checked;
|
const replaceAllImages = mode === 'FullRefresh' && dlg.querySelector('.chkReplaceImages').checked;
|
||||||
|
|
||||||
options.itemIds.forEach(function (itemId) {
|
options.itemIds.forEach(function (itemId) {
|
||||||
apiClient.refreshItem(itemId, {
|
apiClient.refreshItem(itemId, {
|
||||||
|
@ -73,7 +86,7 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionM
|
||||||
|
|
||||||
dialogHelper.close(dlg);
|
dialogHelper.close(dlg);
|
||||||
|
|
||||||
require(['toast'], function (toast) {
|
import('toast').then(({default: toast}) => {
|
||||||
toast(globalize.translate('RefreshQueued'));
|
toast(globalize.translate('RefreshQueued'));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -81,14 +94,15 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionM
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function RefreshDialog(options) {
|
class RefreshDialog {
|
||||||
|
constructor(options) {
|
||||||
this.options = options;
|
this.options = options;
|
||||||
}
|
}
|
||||||
|
|
||||||
RefreshDialog.prototype.show = function () {
|
show() {
|
||||||
var dialogOptions = {
|
const dialogOptions = {
|
||||||
removeOnClose: true,
|
removeOnClose: true,
|
||||||
scrollY: false
|
scrollY: false
|
||||||
};
|
};
|
||||||
|
@ -99,12 +113,12 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionM
|
||||||
dialogOptions.size = 'small';
|
dialogOptions.size = 'small';
|
||||||
}
|
}
|
||||||
|
|
||||||
var dlg = dialogHelper.createDialog(dialogOptions);
|
const dlg = dialogHelper.createDialog(dialogOptions);
|
||||||
|
|
||||||
dlg.classList.add('formDialog');
|
dlg.classList.add('formDialog');
|
||||||
|
|
||||||
var html = '';
|
let html = '';
|
||||||
var title = globalize.translate('RefreshMetadata');
|
const title = globalize.translate('RefreshMetadata');
|
||||||
|
|
||||||
html += '<div class="formDialogHeader">';
|
html += '<div class="formDialogHeader">';
|
||||||
html += '<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1"><span class="material-icons arrow_back"></span></button>';
|
html += '<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1"><span class="material-icons arrow_back"></span></button>';
|
||||||
|
@ -150,7 +164,7 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionM
|
||||||
dlg.addEventListener('close', resolve);
|
dlg.addEventListener('close', resolve);
|
||||||
dialogHelper.open(dlg);
|
dialogHelper.open(dlg);
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return RefreshDialog;
|
export default RefreshDialog;
|
||||||
});
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageLoader', 'playbackManager', 'nowPlayingHelper', 'events', 'connectionManager', 'apphost', 'globalize', 'layoutManager', 'userSettings', 'cardBuilder', 'itemContextMenu', 'cardStyle', 'emby-itemscontainer', 'css!./remotecontrol.css', 'emby-ratingbutton'], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize, layoutManager, userSettings, cardBuilder, itemContextMenu) {
|
define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageLoader', 'playbackManager', 'nowPlayingHelper', 'events', 'connectionManager', 'apphost', 'globalize', 'layoutManager', 'userSettings', 'cardBuilder', 'itemContextMenu', 'cardStyle', 'emby-itemscontainer', 'css!./remotecontrol.css', 'emby-ratingbutton'], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize, layoutManager, userSettings, cardBuilder, itemContextMenu) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
playbackManager = playbackManager.default || playbackManager;
|
||||||
|
|
||||||
var showMuteButton = true;
|
var showMuteButton = true;
|
||||||
var showVolumeSlider = true;
|
var showVolumeSlider = true;
|
||||||
|
|
||||||
|
@ -48,7 +51,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
menuItems.unshift({
|
menuItems.unshift({
|
||||||
id: -1,
|
id: -1,
|
||||||
name: globalize.translate('ButtonOff'),
|
name: globalize.translate('ButtonOff'),
|
||||||
selected: null == currentIndex
|
selected: currentIndex == null
|
||||||
});
|
});
|
||||||
|
|
||||||
require(['actionsheet'], function (actionsheet) {
|
require(['actionsheet'], function (actionsheet) {
|
||||||
|
@ -69,18 +72,18 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
}
|
}
|
||||||
|
|
||||||
function seriesImageUrl(item, options) {
|
function seriesImageUrl(item, options) {
|
||||||
if ('Episode' !== item.Type) {
|
if (item.Type !== 'Episode') {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
options = options || {};
|
options = options || {};
|
||||||
options.type = options.type || 'Primary';
|
options.type = options.type || 'Primary';
|
||||||
if ('Primary' === options.type && item.SeriesPrimaryImageTag) {
|
if (options.type === 'Primary' && item.SeriesPrimaryImageTag) {
|
||||||
options.tag = item.SeriesPrimaryImageTag;
|
options.tag = item.SeriesPrimaryImageTag;
|
||||||
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
|
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Thumb' === options.type) {
|
if (options.type === 'Thumb') {
|
||||||
if (item.SeriesThumbImageTag) {
|
if (item.SeriesThumbImageTag) {
|
||||||
options.tag = item.SeriesThumbImageTag;
|
options.tag = item.SeriesThumbImageTag;
|
||||||
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
|
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
|
||||||
|
@ -119,9 +122,9 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
var nowPlayingServerId = (item.ServerId || serverId);
|
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;
|
var songName = item.Name;
|
||||||
if (item.Album != null && item.Artists != null) {
|
|
||||||
var artistsSeries = '';
|
var artistsSeries = '';
|
||||||
var albumName = item.Album;
|
var albumName = '';
|
||||||
|
if (item.Artists != null) {
|
||||||
if (item.ArtistItems != null) {
|
if (item.ArtistItems != null) {
|
||||||
for (const artist of item.ArtistItems) {
|
for (const artist of item.ArtistItems) {
|
||||||
let artistName = artist.Name;
|
let artistName = artist.Name;
|
||||||
|
@ -142,9 +145,12 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
context.querySelector('.nowPlayingArtist').innerHTML = artistsSeries;
|
|
||||||
context.querySelector('.nowPlayingAlbum').innerHTML = '<a class="button-link emby-button" is="emby-linkbutton" href="details?id=' + item.AlbumId + `&serverId=${nowPlayingServerId}">${albumName}</a>`;
|
|
||||||
}
|
}
|
||||||
|
if (item.Album != null) {
|
||||||
|
albumName = '<a class="button-link emby-button" is="emby-linkbutton" href="details?id=' + item.AlbumId + `&serverId=${nowPlayingServerId}">` + item.Album + '</a>';
|
||||||
|
}
|
||||||
|
context.querySelector('.nowPlayingAlbum').innerHTML = albumName;
|
||||||
|
context.querySelector('.nowPlayingArtist').innerHTML = artistsSeries;
|
||||||
context.querySelector('.nowPlayingSongName').innerHTML = songName;
|
context.querySelector('.nowPlayingSongName').innerHTML = songName;
|
||||||
} else if (item.Type == 'Episode') {
|
} else if (item.Type == 'Episode') {
|
||||||
if (item.SeasonName != null) {
|
if (item.SeasonName != null) {
|
||||||
|
@ -171,9 +177,9 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = item ? seriesImageUrl(item, {
|
var url = item ? seriesImageUrl(item, {
|
||||||
maxHeight: 300 * 2
|
maxHeight: 300
|
||||||
}) || imageUrl(item, {
|
}) || imageUrl(item, {
|
||||||
maxHeight: 300 * 2
|
maxHeight: 300
|
||||||
}) : null;
|
}) : null;
|
||||||
|
|
||||||
let contextButton = context.querySelector('.btnToggleContextMenu');
|
let contextButton = context.querySelector('.btnToggleContextMenu');
|
||||||
|
@ -210,7 +216,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
backdrop.setBackdrops([item]);
|
backdrop.setBackdrops([item]);
|
||||||
apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) {
|
apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) {
|
||||||
var userData = fullItem.UserData || {};
|
var userData = fullItem.UserData || {};
|
||||||
var likes = null == userData.Likes ? '' : userData.Likes;
|
var likes = userData.Likes == null ? '' : userData.Likes;
|
||||||
context.querySelector('.nowPlayingPageUserDataButtonsTitle').innerHTML = '<button is="emby-ratingbutton" type="button" class="listItemButton paper-icon-button-light" data-id="' + fullItem.Id + '" data-serverid="' + fullItem.ServerId + '" data-itemtype="' + fullItem.Type + '" data-likes="' + likes + '" data-isfavorite="' + userData.IsFavorite + '"><span class="material-icons favorite"></span></button>';
|
context.querySelector('.nowPlayingPageUserDataButtonsTitle').innerHTML = '<button is="emby-ratingbutton" type="button" class="listItemButton paper-icon-button-light" data-id="' + fullItem.Id + '" data-serverid="' + fullItem.ServerId + '" data-itemtype="' + fullItem.Type + '" data-likes="' + likes + '" data-isfavorite="' + userData.IsFavorite + '"><span class="material-icons favorite"></span></button>';
|
||||||
context.querySelector('.nowPlayingPageUserDataButtons').innerHTML = '<button is="emby-ratingbutton" type="button" class="listItemButton paper-icon-button-light" data-id="' + fullItem.Id + '" data-serverid="' + fullItem.ServerId + '" data-itemtype="' + fullItem.Type + '" data-likes="' + likes + '" data-isfavorite="' + userData.IsFavorite + '"><span class="material-icons favorite"></span></button>';
|
context.querySelector('.nowPlayingPageUserDataButtons').innerHTML = '<button is="emby-ratingbutton" type="button" class="listItemButton paper-icon-button-light" data-id="' + fullItem.Id + '" data-serverid="' + fullItem.ServerId + '" data-itemtype="' + fullItem.Type + '" data-likes="' + likes + '" data-isfavorite="' + userData.IsFavorite + '"><span class="material-icons favorite"></span></button>';
|
||||||
});
|
});
|
||||||
|
@ -251,7 +257,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
var all = context.querySelectorAll('.btnCommand');
|
var all = context.querySelectorAll('.btnCommand');
|
||||||
|
|
||||||
for (var i = 0, length = all.length; i < length; i++) {
|
for (var i = 0, length = all.length; i < length; i++) {
|
||||||
var enableButton = -1 !== commands.indexOf(all[i].getAttribute('data-command'));
|
var enableButton = commands.indexOf(all[i].getAttribute('data-command')) !== -1;
|
||||||
all[i].disabled = !enableButton;
|
all[i].disabled = !enableButton;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -278,7 +284,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
currentPlayerSupportedCommands = supportedCommands;
|
currentPlayerSupportedCommands = supportedCommands;
|
||||||
var playState = state.PlayState || {};
|
var playState = state.PlayState || {};
|
||||||
var isSupportedCommands = supportedCommands.includes('DisplayMessage') || supportedCommands.includes('SendString') || supportedCommands.includes('Select');
|
var isSupportedCommands = supportedCommands.includes('DisplayMessage') || supportedCommands.includes('SendString') || supportedCommands.includes('Select');
|
||||||
buttonVisible(context.querySelector('.btnToggleFullscreen'), item && 'Video' == item.MediaType && supportedCommands.includes('ToggleFullscreen'));
|
buttonVisible(context.querySelector('.btnToggleFullscreen'), item && item.MediaType == 'Video' && supportedCommands.includes('ToggleFullscreen'));
|
||||||
updateAudioTracksDisplay(player, context);
|
updateAudioTracksDisplay(player, context);
|
||||||
updateSubtitleTracksDisplay(player, context);
|
updateSubtitleTracksDisplay(player, context);
|
||||||
|
|
||||||
|
@ -306,15 +312,15 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
context.querySelector('.remoteControlSection').classList.add('hide');
|
context.querySelector('.remoteControlSection').classList.add('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
buttonVisible(context.querySelector('.btnStop'), null != item);
|
buttonVisible(context.querySelector('.btnStop'), item != null);
|
||||||
buttonVisible(context.querySelector('.btnNextTrack'), null != item);
|
buttonVisible(context.querySelector('.btnNextTrack'), item != null);
|
||||||
buttonVisible(context.querySelector('.btnPreviousTrack'), null != item);
|
buttonVisible(context.querySelector('.btnPreviousTrack'), item != null);
|
||||||
if (layoutManager.mobile) {
|
if (layoutManager.mobile) {
|
||||||
buttonVisible(context.querySelector('.btnRewind'), false);
|
buttonVisible(context.querySelector('.btnRewind'), false);
|
||||||
buttonVisible(context.querySelector('.btnFastForward'), false);
|
buttonVisible(context.querySelector('.btnFastForward'), false);
|
||||||
} else {
|
} else {
|
||||||
buttonVisible(context.querySelector('.btnRewind'), null != item);
|
buttonVisible(context.querySelector('.btnRewind'), item != null);
|
||||||
buttonVisible(context.querySelector('.btnFastForward'), null != item);
|
buttonVisible(context.querySelector('.btnFastForward'), item != null);
|
||||||
}
|
}
|
||||||
var positionSlider = context.querySelector('.nowPlayingPositionSlider');
|
var positionSlider = context.querySelector('.nowPlayingPositionSlider');
|
||||||
|
|
||||||
|
@ -325,15 +331,15 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
|
|
||||||
if (positionSlider && !positionSlider.dragging) {
|
if (positionSlider && !positionSlider.dragging) {
|
||||||
positionSlider.disabled = !playState.CanSeek;
|
positionSlider.disabled = !playState.CanSeek;
|
||||||
var isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks;
|
var isProgressClear = state.MediaSource && state.MediaSource.RunTimeTicks == null;
|
||||||
positionSlider.setIsClear(isProgressClear);
|
positionSlider.setIsClear(isProgressClear);
|
||||||
}
|
}
|
||||||
|
|
||||||
updatePlayPauseState(playState.IsPaused, null != item);
|
updatePlayPauseState(playState.IsPaused, item != null);
|
||||||
updateTimeDisplay(playState.PositionTicks, item ? item.RunTimeTicks : null);
|
updateTimeDisplay(playState.PositionTicks, item ? item.RunTimeTicks : null);
|
||||||
updatePlayerVolumeState(context, playState.IsMuted, playState.VolumeLevel);
|
updatePlayerVolumeState(context, playState.IsMuted, playState.VolumeLevel);
|
||||||
|
|
||||||
if (item && 'Video' == item.MediaType) {
|
if (item && item.MediaType == 'Video') {
|
||||||
context.classList.remove('hideVideoButtons');
|
context.classList.remove('hideVideoButtons');
|
||||||
} else {
|
} else {
|
||||||
context.classList.add('hideVideoButtons');
|
context.classList.add('hideVideoButtons');
|
||||||
|
@ -346,12 +352,12 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
|
|
||||||
function updateAudioTracksDisplay(player, context) {
|
function updateAudioTracksDisplay(player, context) {
|
||||||
var supportedCommands = currentPlayerSupportedCommands;
|
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 && supportedCommands.indexOf('SetAudioStreamIndex') != -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateSubtitleTracksDisplay(player, context) {
|
function updateSubtitleTracksDisplay(player, context) {
|
||||||
var supportedCommands = currentPlayerSupportedCommands;
|
var supportedCommands = currentPlayerSupportedCommands;
|
||||||
buttonVisible(context.querySelector('.btnSubtitles'), playbackManager.subtitleTracks(player).length && -1 != supportedCommands.indexOf('SetSubtitleStreamIndex'));
|
buttonVisible(context.querySelector('.btnSubtitles'), playbackManager.subtitleTracks(player).length && supportedCommands.indexOf('SetSubtitleStreamIndex') != -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateRepeatModeDisplay(repeatMode) {
|
function updateRepeatModeDisplay(repeatMode) {
|
||||||
|
@ -383,11 +389,11 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
var view = context;
|
var view = context;
|
||||||
var supportedCommands = currentPlayerSupportedCommands;
|
var supportedCommands = currentPlayerSupportedCommands;
|
||||||
|
|
||||||
if (-1 === supportedCommands.indexOf('Mute')) {
|
if (supportedCommands.indexOf('Mute') === -1) {
|
||||||
showMuteButton = false;
|
showMuteButton = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-1 === supportedCommands.indexOf('SetVolume')) {
|
if (supportedCommands.indexOf('SetVolume') === -1) {
|
||||||
showVolumeSlider = false;
|
showVolumeSlider = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -452,8 +458,8 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
context.querySelector('.positionTime').innerHTML = null == positionTicks ? '--:--' : datetime.getDisplayRunningTime(positionTicks);
|
context.querySelector('.positionTime').innerHTML = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks);
|
||||||
context.querySelector('.runtime').innerHTML = null != runtimeTicks ? datetime.getDisplayRunningTime(runtimeTicks) : '--:--';
|
context.querySelector('.runtime').innerHTML = runtimeTicks != null ? datetime.getDisplayRunningTime(runtimeTicks) : '--:--';
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPlaylistItems(player) {
|
function getPlaylistItems(player) {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['apphost', 'userSettings', 'browser', 'events', 'backdrop', 'globalize', 'require', 'appSettings'], function (appHost, userSettings, browser, events, backdrop, globalize, require, appSettings) {
|
define(['apphost', 'userSettings', 'browser', 'events', 'backdrop', 'globalize', 'require', 'appSettings'], function (appHost, userSettings, browser, events, backdrop, globalize, require, appSettings) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
browser = browser.default || browser;
|
||||||
|
|
||||||
var themeStyleElement;
|
var themeStyleElement;
|
||||||
var currentThemeId;
|
var currentThemeId;
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'focusManager', 'browser', 'apphost', 'dom', 'css!./style', 'material-icons', 'paper-icon-button-light'], function (dialogHelper, inputManager, connectionManager, layoutManager, focusManager, browser, appHost, dom) {
|
define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'focusManager', 'browser', 'apphost', 'dom', 'css!./style', 'material-icons', 'paper-icon-button-light'], function (dialogHelper, inputManager, connectionManager, layoutManager, focusManager, browser, appHost, dom) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
browser = browser.default || browser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Name of transition event.
|
* Name of transition event.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', 'connectionManager', 'loading', 'focusManager', 'dom', 'apphost', 'emby-select', 'listViewStyle', 'paper-icon-button-light', 'css!./../formdialog', 'material-icons', 'css!./subtitleeditor', 'emby-button', 'flexStyles'], function (dialogHelper, require, layoutManager, globalize, userSettings, connectionManager, loading, focusManager, dom, appHost) {
|
define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', 'connectionManager', 'loading', 'focusManager', 'dom', 'apphost', 'emby-select', 'listViewStyle', 'paper-icon-button-light', 'css!./../formdialog', 'material-icons', 'css!./subtitleeditor', 'emby-button', 'flexStyles'], function (dialogHelper, require, layoutManager, globalize, userSettings, connectionManager, loading, focusManager, dom, appHost) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
var currentItem;
|
var currentItem;
|
||||||
var hasChanges;
|
var hasChanges;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', 'css!./subtitlesync'], function (playbackManager, layoutManager, template, css) {
|
define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', 'css!./subtitlesync'], function (playbackManager, layoutManager, template, css) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
playbackManager = playbackManager.default || playbackManager;
|
||||||
|
|
||||||
var player;
|
var player;
|
||||||
var subtitleSyncSlider;
|
var subtitleSyncSlider;
|
||||||
var subtitleSyncTextField;
|
var subtitleSyncTextField;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['playbackManager', 'userSettings', 'connectionManager'], function (playbackManager, userSettings, connectionManager) {
|
define(['playbackManager', 'userSettings', 'connectionManager'], function (playbackManager, userSettings, connectionManager) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
playbackManager = playbackManager.default || playbackManager;
|
||||||
|
|
||||||
var currentOwnerId;
|
var currentOwnerId;
|
||||||
var currentThemeIds = [];
|
var currentThemeIds = [];
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
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) {
|
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';
|
'use strict';
|
||||||
|
|
||||||
|
browser = browser.default || browser;
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
var enableFocusTransform = !browser.slow && !browser.edge;
|
var enableFocusTransform = !browser.slow && !browser.edge;
|
||||||
|
|
||||||
function getEditorHtml() {
|
function getEditorHtml() {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emby-input', 'emby-select', 'emby-button', 'flexStyles'], function ($, loading, globalize) {
|
define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emby-input', 'emby-select', 'emby-button', 'flexStyles'], function ($, loading, globalize) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
return function (page, providerId, options) {
|
return function (page, providerId, options) {
|
||||||
function reload() {
|
function reload() {
|
||||||
loading.show();
|
loading.show();
|
||||||
|
@ -42,7 +44,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb
|
||||||
for (var region in result) {
|
for (var region in result) {
|
||||||
var countries = result[region];
|
var countries = result[region];
|
||||||
|
|
||||||
if (countries.length && 'ZZZ' !== region) {
|
if (countries.length && region !== 'ZZZ') {
|
||||||
for (i = 0, length = countries.length; i < length; i++) {
|
for (i = 0, length = countries.length; i < length; i++) {
|
||||||
countryList.push({
|
countryList.push({
|
||||||
name: countries[i].fullName,
|
name: countries[i].fullName,
|
||||||
|
@ -237,7 +239,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb
|
||||||
var device = devices[i];
|
var device = devices[i];
|
||||||
html += '<div class="listItem">';
|
html += '<div class="listItem">';
|
||||||
var enabledTuners = providerInfo.EnabledTuners || [];
|
var enabledTuners = providerInfo.EnabledTuners || [];
|
||||||
var isChecked = providerInfo.EnableAllTuners || -1 !== enabledTuners.indexOf(device.Id);
|
var isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1;
|
||||||
var checkedAttribute = isChecked ? ' checked' : '';
|
var checkedAttribute = isChecked ? ' checked' : '';
|
||||||
html += '<label class="checkboxContainer listItemCheckboxContainer"><input type="checkbox" is="emby-checkbox" data-id="' + device.Id + '" class="chkTuner" ' + checkedAttribute + '/><span></span></label>';
|
html += '<label class="checkboxContainer listItemCheckboxContainer"><input type="checkbox" is="emby-checkbox" data-id="' + device.Id + '" class="chkTuner" ' + checkedAttribute + '/><span></span></label>';
|
||||||
html += '<div class="listItemBody two-line">';
|
html += '<div class="listItemBody two-line">';
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listViewStyle', 'paper-icon-button-light'], function ($, loading, globalize) {
|
define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listViewStyle', 'paper-icon-button-light'], function ($, loading, globalize) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
return function (page, providerId, options) {
|
return function (page, providerId, options) {
|
||||||
function getListingProvider(config, id) {
|
function getListingProvider(config, id) {
|
||||||
if (config && id) {
|
if (config && id) {
|
||||||
|
@ -84,7 +86,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listVi
|
||||||
}).then(function (result) {
|
}).then(function (result) {
|
||||||
loading.hide();
|
loading.hide();
|
||||||
|
|
||||||
if (false !== options.showConfirmation) {
|
if (options.showConfirmation !== false) {
|
||||||
Dashboard.processServerConfigurationUpdateResult();
|
Dashboard.processServerConfigurationUpdateResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,7 +120,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listVi
|
||||||
var device = devices[i];
|
var device = devices[i];
|
||||||
html += '<div class="listItem">';
|
html += '<div class="listItem">';
|
||||||
var enabledTuners = providerInfo.EnabledTuners || [];
|
var enabledTuners = providerInfo.EnabledTuners || [];
|
||||||
var isChecked = providerInfo.EnableAllTuners || -1 !== enabledTuners.indexOf(device.Id);
|
var isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1;
|
||||||
var checkedAttribute = isChecked ? ' checked' : '';
|
var checkedAttribute = isChecked ? ' checked' : '';
|
||||||
html += '<label class="listItemCheckboxContainer"><input type="checkbox" is="emby-checkbox" class="chkTuner" data-id="' + device.Id + '" ' + checkedAttribute + '><span></span></label>';
|
html += '<label class="listItemCheckboxContainer"><input type="checkbox" is="emby-checkbox" class="chkTuner" data-id="' + device.Id + '" ' + checkedAttribute + '><span></span></label>';
|
||||||
html += '<div class="listItemBody two-line">';
|
html += '<div class="listItemBody two-line">';
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'layoutManager', 'focusManager', 'globalize', 'itemHelper', 'css!./upnextdialog', 'emby-button', 'flexStyles'], function (dom, playbackManager, connectionManager, events, mediaInfo, layoutManager, focusManager, globalize, itemHelper) {
|
define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'layoutManager', 'focusManager', 'globalize', 'itemHelper', 'css!./upnextdialog', 'emby-button', 'flexStyles'], function (dom, playbackManager, connectionManager, events, mediaInfo, layoutManager, focusManager, globalize, itemHelper) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
playbackManager = playbackManager.default || playbackManager;
|
||||||
|
|
||||||
var transitionEndEventName = dom.whichTransitionEvent();
|
var transitionEndEventName = dom.whichTransitionEvent();
|
||||||
|
|
||||||
function seriesImageUrl(item, options) {
|
function seriesImageUrl(item, options) {
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewContainer'], function (browser, dom, layoutManager) {
|
import 'css!components/viewManager/viewContainer';
|
||||||
'use strict';
|
/* eslint-disable indent */
|
||||||
|
|
||||||
function setControllerClass(view, options) {
|
function setControllerClass(view, options) {
|
||||||
if (options.controllerFactory) {
|
if (options.controllerFactory) {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
var controllerUrl = view.getAttribute('data-controller');
|
let controllerUrl = view.getAttribute('data-controller');
|
||||||
|
|
||||||
if (controllerUrl) {
|
if (controllerUrl) {
|
||||||
if (0 === controllerUrl.indexOf('__plugin/')) {
|
if (controllerUrl.indexOf('__plugin/') === 0) {
|
||||||
controllerUrl = controllerUrl.substring('__plugin/'.length);
|
controllerUrl = controllerUrl.substring('__plugin/'.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
controllerUrl = Dashboard.getConfigurationResourceUrl(controllerUrl);
|
controllerUrl = Dashboard.getConfigurationResourceUrl(controllerUrl);
|
||||||
return getRequirePromise([controllerUrl]).then(function (ControllerFactory) {
|
return import(controllerUrl).then((ControllerFactory) => {
|
||||||
options.controllerFactory = ControllerFactory;
|
options.controllerFactory = ControllerFactory;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -22,38 +22,30 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRequirePromise(deps) {
|
export function loadView(options) {
|
||||||
return new Promise(function (resolve, reject) {
|
|
||||||
require(deps, resolve);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadView(options) {
|
|
||||||
if (!options.cancel) {
|
if (!options.cancel) {
|
||||||
var selected = selectedPageIndex;
|
const selected = selectedPageIndex;
|
||||||
var previousAnimatable = -1 === selected ? null : allPages[selected];
|
const previousAnimatable = selected === -1 ? null : allPages[selected];
|
||||||
var pageIndex = selected + 1;
|
let pageIndex = selected + 1;
|
||||||
|
|
||||||
if (pageIndex >= pageContainerCount) {
|
if (pageIndex >= pageContainerCount) {
|
||||||
pageIndex = 0;
|
pageIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
var isPluginpage = -1 !== options.url.toLowerCase().indexOf('/configurationpage');
|
const isPluginpage = options.url.toLowerCase().indexOf('/configurationpage') !== -1;
|
||||||
var newViewInfo = normalizeNewView(options, isPluginpage);
|
const newViewInfo = normalizeNewView(options, isPluginpage);
|
||||||
var newView = newViewInfo.elem;
|
const newView = newViewInfo.elem;
|
||||||
var modulesToLoad = [];
|
|
||||||
|
|
||||||
return new Promise(function (resolve) {
|
return new Promise((resolve) => {
|
||||||
require(modulesToLoad, function () {
|
const currentPage = allPages[pageIndex];
|
||||||
var currentPage = allPages[pageIndex];
|
|
||||||
|
|
||||||
if (currentPage) {
|
if (currentPage) {
|
||||||
triggerDestroy(currentPage);
|
triggerDestroy(currentPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
var view = newView;
|
let view = newView;
|
||||||
|
|
||||||
if ('string' == typeof view) {
|
if (typeof view == 'string') {
|
||||||
view = document.createElement('div');
|
view = document.createElement('div');
|
||||||
view.innerHTML = newView;
|
view.innerHTML = newView;
|
||||||
}
|
}
|
||||||
|
@ -79,7 +71,7 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta
|
||||||
view.setAttribute('data-type', options.type);
|
view.setAttribute('data-type', options.type);
|
||||||
}
|
}
|
||||||
|
|
||||||
var properties = [];
|
const properties = [];
|
||||||
|
|
||||||
if (options.fullscreen) {
|
if (options.fullscreen) {
|
||||||
properties.push('fullscreen');
|
properties.push('fullscreen');
|
||||||
|
@ -90,7 +82,7 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta
|
||||||
}
|
}
|
||||||
|
|
||||||
allPages[pageIndex] = view;
|
allPages[pageIndex] = view;
|
||||||
setControllerClass(view, options).then(function () {
|
setControllerClass(view, options).then(() => {
|
||||||
if (onBeforeChange) {
|
if (onBeforeChange) {
|
||||||
onBeforeChange(view, false, options);
|
onBeforeChange(view, false, options);
|
||||||
}
|
}
|
||||||
|
@ -111,7 +103,6 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta
|
||||||
resolve(view);
|
resolve(view);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,33 +116,33 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta
|
||||||
html = replaceAll(html, '<\/script>--\x3e', '<\/script>');
|
html = replaceAll(html, '<\/script>--\x3e', '<\/script>');
|
||||||
}
|
}
|
||||||
|
|
||||||
var wrapper = document.createElement('div');
|
const wrapper = document.createElement('div');
|
||||||
wrapper.innerHTML = html;
|
wrapper.innerHTML = html;
|
||||||
return wrapper.querySelector('div[data-role="page"]');
|
return wrapper.querySelector('div[data-role="page"]');
|
||||||
}
|
}
|
||||||
|
|
||||||
function normalizeNewView(options, isPluginpage) {
|
function normalizeNewView(options, isPluginpage) {
|
||||||
var viewHtml = options.view;
|
const viewHtml = options.view;
|
||||||
|
|
||||||
if (-1 === viewHtml.indexOf('data-role="page"')) {
|
if (viewHtml.indexOf('data-role="page"') === -1) {
|
||||||
return viewHtml;
|
return viewHtml;
|
||||||
}
|
}
|
||||||
|
|
||||||
var hasScript = -1 !== viewHtml.indexOf('<script');
|
let hasScript = viewHtml.indexOf('<script') !== -1;
|
||||||
var elem = parseHtml(viewHtml, hasScript);
|
const elem = parseHtml(viewHtml, hasScript);
|
||||||
|
|
||||||
if (hasScript) {
|
if (hasScript) {
|
||||||
hasScript = null != elem.querySelector('script');
|
hasScript = elem.querySelector('script') != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var hasjQuery = false;
|
let hasjQuery = false;
|
||||||
var hasjQuerySelect = false;
|
let hasjQuerySelect = false;
|
||||||
var hasjQueryChecked = false;
|
let hasjQueryChecked = false;
|
||||||
|
|
||||||
if (isPluginpage) {
|
if (isPluginpage) {
|
||||||
hasjQuery = -1 != viewHtml.indexOf('jQuery') || -1 != viewHtml.indexOf('$(') || -1 != viewHtml.indexOf('$.');
|
hasjQuery = viewHtml.indexOf('jQuery') != -1 || viewHtml.indexOf('$(') != -1 || viewHtml.indexOf('$.') != -1;
|
||||||
hasjQueryChecked = -1 != viewHtml.indexOf('.checked(');
|
hasjQueryChecked = viewHtml.indexOf('.checked(') != -1;
|
||||||
hasjQuerySelect = -1 != viewHtml.indexOf('.selectmenu(');
|
hasjQuerySelect = viewHtml.indexOf('.selectmenu(') != -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -164,7 +155,7 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta
|
||||||
}
|
}
|
||||||
|
|
||||||
function beforeAnimate(allPages, newPageIndex, oldPageIndex) {
|
function beforeAnimate(allPages, newPageIndex, oldPageIndex) {
|
||||||
for (var index = 0, length = allPages.length; index < length; index++) {
|
for (let index = 0, length = allPages.length; index < length; index++) {
|
||||||
if (newPageIndex !== index && oldPageIndex !== index) {
|
if (newPageIndex !== index && oldPageIndex !== index) {
|
||||||
allPages[index].classList.add('hide');
|
allPages[index].classList.add('hide');
|
||||||
}
|
}
|
||||||
|
@ -172,33 +163,33 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta
|
||||||
}
|
}
|
||||||
|
|
||||||
function afterAnimate(allPages, newPageIndex) {
|
function afterAnimate(allPages, newPageIndex) {
|
||||||
for (var index = 0, length = allPages.length; index < length; index++) {
|
for (let index = 0, length = allPages.length; index < length; index++) {
|
||||||
if (newPageIndex !== index) {
|
if (newPageIndex !== index) {
|
||||||
allPages[index].classList.add('hide');
|
allPages[index].classList.add('hide');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setOnBeforeChange(fn) {
|
export function setOnBeforeChange(fn) {
|
||||||
onBeforeChange = fn;
|
onBeforeChange = fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
function tryRestoreView(options) {
|
export function tryRestoreView(options) {
|
||||||
var url = options.url;
|
const url = options.url;
|
||||||
var index = currentUrls.indexOf(url);
|
const index = currentUrls.indexOf(url);
|
||||||
|
|
||||||
if (-1 !== index) {
|
if (index !== -1) {
|
||||||
var animatable = allPages[index];
|
const animatable = allPages[index];
|
||||||
var view = animatable;
|
const view = animatable;
|
||||||
|
|
||||||
if (view) {
|
if (view) {
|
||||||
if (options.cancel) {
|
if (options.cancel) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var selected = selectedPageIndex;
|
const selected = selectedPageIndex;
|
||||||
var previousAnimatable = -1 === selected ? null : allPages[selected];
|
const previousAnimatable = selected === -1 ? null : allPages[selected];
|
||||||
return setControllerClass(view, options).then(function () {
|
return setControllerClass(view, options).then(() => {
|
||||||
if (onBeforeChange) {
|
if (onBeforeChange) {
|
||||||
onBeforeChange(view, true, options);
|
onBeforeChange(view, true, options);
|
||||||
}
|
}
|
||||||
|
@ -228,25 +219,28 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta
|
||||||
view.dispatchEvent(new CustomEvent('viewdestroy', {}));
|
view.dispatchEvent(new CustomEvent('viewdestroy', {}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function reset() {
|
export function reset() {
|
||||||
allPages = [];
|
allPages = [];
|
||||||
currentUrls = [];
|
currentUrls = [];
|
||||||
mainAnimatedPages.innerHTML = '';
|
mainAnimatedPages.innerHTML = '';
|
||||||
selectedPageIndex = -1;
|
selectedPageIndex = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
var onBeforeChange;
|
let onBeforeChange;
|
||||||
var mainAnimatedPages = document.querySelector('.mainAnimatedPages');
|
const mainAnimatedPages = document.querySelector('.mainAnimatedPages');
|
||||||
var allPages = [];
|
let allPages = [];
|
||||||
var currentUrls = [];
|
let currentUrls = [];
|
||||||
var pageContainerCount = 3;
|
const pageContainerCount = 3;
|
||||||
var selectedPageIndex = -1;
|
let selectedPageIndex = -1;
|
||||||
reset();
|
reset();
|
||||||
mainAnimatedPages.classList.remove('hide');
|
mainAnimatedPages.classList.remove('hide');
|
||||||
return {
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
||||||
|
export default {
|
||||||
loadView: loadView,
|
loadView: loadView,
|
||||||
tryRestoreView: tryRestoreView,
|
tryRestoreView: tryRestoreView,
|
||||||
reset: reset,
|
reset: reset,
|
||||||
setOnBeforeChange: setOnBeforeChange
|
setOnBeforeChange: setOnBeforeChange
|
||||||
};
|
};
|
||||||
});
|
|
||||||
|
|
|
@ -313,7 +313,7 @@ import 'emby-itemscontainer';
|
||||||
btnCssClass = session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length ? '' : ' hide';
|
btnCssClass = session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length ? '' : ' hide';
|
||||||
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionInfo paper-icon-button-light ' + btnCssClass + '" title="' + globalize.translate('ViewPlaybackInfo') + '"><span class="material-icons info"></span></button>';
|
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionInfo paper-icon-button-light ' + btnCssClass + '" title="' + globalize.translate('ViewPlaybackInfo') + '"><span class="material-icons info"></span></button>';
|
||||||
|
|
||||||
btnCssClass = session.ServerId && -1 !== session.SupportedCommands.indexOf('DisplayMessage') && session.DeviceId !== connectionManager.deviceId() ? '' : ' hide';
|
btnCssClass = session.ServerId && session.SupportedCommands.indexOf('DisplayMessage') !== -1 && session.DeviceId !== connectionManager.deviceId() ? '' : ' hide';
|
||||||
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionSendMessage paper-icon-button-light ' + btnCssClass + '" title="' + globalize.translate('SendMessage') + '"><span class="material-icons message"></span></button>';
|
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionSendMessage paper-icon-button-light ' + btnCssClass + '" title="' + globalize.translate('SendMessage') + '"><span class="material-icons message"></span></button>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
|
@ -346,7 +346,7 @@ import 'emby-itemscontainer';
|
||||||
function renderRunningTasks(view, tasks) {
|
function renderRunningTasks(view, tasks) {
|
||||||
let html = '';
|
let html = '';
|
||||||
tasks = tasks.filter(function (task) {
|
tasks = tasks.filter(function (task) {
|
||||||
if ('Idle' != task.State) {
|
if (task.State != 'Idle') {
|
||||||
return !task.IsHidden;
|
return !task.IsHidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -551,7 +551,7 @@ import 'emby-itemscontainer';
|
||||||
row.classList.remove('playingSession');
|
row.classList.remove('playingSession');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (session.ServerId && -1 !== session.SupportedCommands.indexOf('DisplayMessage') && session.DeviceId !== connectionManager.deviceId()) {
|
if (session.ServerId && session.SupportedCommands.indexOf('DisplayMessage') !== -1 && session.DeviceId !== connectionManager.deviceId()) {
|
||||||
row.querySelector('.btnSessionSendMessage').classList.remove('hide');
|
row.querySelector('.btnSessionSendMessage').classList.remove('hide');
|
||||||
} else {
|
} else {
|
||||||
row.querySelector('.btnSessionSendMessage').classList.add('hide');
|
row.querySelector('.btnSessionSendMessage').classList.add('hide');
|
||||||
|
|
|
@ -29,7 +29,7 @@ import 'listViewStyle';
|
||||||
function renderProfile(page, profile, users) {
|
function renderProfile(page, profile, users) {
|
||||||
$('#txtName', page).val(profile.Name);
|
$('#txtName', page).val(profile.Name);
|
||||||
$('.chkMediaType', page).each(function () {
|
$('.chkMediaType', page).each(function () {
|
||||||
this.checked = -1 != (profile.SupportedMediaTypes || '').split(',').indexOf(this.getAttribute('data-value'));
|
this.checked = (profile.SupportedMediaTypes || '').split(',').indexOf(this.getAttribute('data-value')) != -1;
|
||||||
});
|
});
|
||||||
$('#chkEnableAlbumArtInDidl', page).prop('checked', profile.EnableAlbumArtInDidl);
|
$('#chkEnableAlbumArtInDidl', page).prop('checked', profile.EnableAlbumArtInDidl);
|
||||||
$('#chkEnableSingleImageLimit', page).prop('checked', profile.EnableSingleAlbumArtLimit);
|
$('#chkEnableSingleImageLimit', page).prop('checked', profile.EnableSingleAlbumArtLimit);
|
||||||
|
@ -111,7 +111,7 @@ import 'listViewStyle';
|
||||||
}
|
}
|
||||||
|
|
||||||
function editIdentificationHeader(page, header) {
|
function editIdentificationHeader(page, header) {
|
||||||
isSubProfileNew = null == header;
|
isSubProfileNew = header == null;
|
||||||
header = header || {};
|
header = header || {};
|
||||||
currentSubProfile = header;
|
currentSubProfile = header;
|
||||||
const popup = $('#identificationHeaderPopup', page);
|
const popup = $('#identificationHeaderPopup', page);
|
||||||
|
@ -156,7 +156,7 @@ import 'listViewStyle';
|
||||||
}
|
}
|
||||||
|
|
||||||
function editXmlDocumentAttribute(page, attribute) {
|
function editXmlDocumentAttribute(page, attribute) {
|
||||||
isSubProfileNew = null == attribute;
|
isSubProfileNew = attribute == null;
|
||||||
attribute = attribute || {};
|
attribute = attribute || {};
|
||||||
currentSubProfile = attribute;
|
currentSubProfile = attribute;
|
||||||
const popup = $('#xmlAttributePopup', page);
|
const popup = $('#xmlAttributePopup', page);
|
||||||
|
@ -204,7 +204,7 @@ import 'listViewStyle';
|
||||||
}
|
}
|
||||||
|
|
||||||
function editSubtitleProfile(page, profile) {
|
function editSubtitleProfile(page, profile) {
|
||||||
isSubProfileNew = null == profile;
|
isSubProfileNew = profile == null;
|
||||||
profile = profile || {};
|
profile = profile || {};
|
||||||
currentSubProfile = profile;
|
currentSubProfile = profile;
|
||||||
const popup = $('#subtitleProfilePopup', page);
|
const popup = $('#subtitleProfilePopup', page);
|
||||||
|
@ -266,11 +266,11 @@ import 'listViewStyle';
|
||||||
html += '<a is="emby-linkbutton" href="#" class="lnkEditSubProfile" data-profileindex="' + index + '">';
|
html += '<a is="emby-linkbutton" href="#" class="lnkEditSubProfile" data-profileindex="' + index + '">';
|
||||||
html += '<p>' + globalize.translate('ValueContainer', profile.Container || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueContainer', profile.Container || allText) + '</p>';
|
||||||
|
|
||||||
if ('Video' == profile.Type) {
|
if (profile.Type == 'Video') {
|
||||||
html += '<p>' + globalize.translate('ValueVideoCodec', profile.VideoCodec || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueVideoCodec', profile.VideoCodec || allText) + '</p>';
|
||||||
html += '<p>' + globalize.translate('ValueAudioCodec', profile.AudioCodec || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueAudioCodec', profile.AudioCodec || allText) + '</p>';
|
||||||
} else {
|
} else {
|
||||||
if ('Audio' == profile.Type) {
|
if (profile.Type == 'Audio') {
|
||||||
html += '<p>' + globalize.translate('ValueCodec', profile.AudioCodec || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueCodec', profile.AudioCodec || allText) + '</p>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -298,7 +298,7 @@ import 'listViewStyle';
|
||||||
}
|
}
|
||||||
|
|
||||||
function editDirectPlayProfile(page, directPlayProfile) {
|
function editDirectPlayProfile(page, directPlayProfile) {
|
||||||
isSubProfileNew = null == directPlayProfile;
|
isSubProfileNew = directPlayProfile == null;
|
||||||
directPlayProfile = directPlayProfile || {};
|
directPlayProfile = directPlayProfile || {};
|
||||||
currentSubProfile = directPlayProfile;
|
currentSubProfile = directPlayProfile;
|
||||||
const popup = $('#popupEditDirectPlayProfile', page);
|
const popup = $('#popupEditDirectPlayProfile', page);
|
||||||
|
@ -327,11 +327,11 @@ import 'listViewStyle';
|
||||||
html += '<p>Protocol: ' + (profile.Protocol || 'Http') + '</p>';
|
html += '<p>Protocol: ' + (profile.Protocol || 'Http') + '</p>';
|
||||||
html += '<p>' + globalize.translate('ValueContainer', profile.Container || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueContainer', profile.Container || allText) + '</p>';
|
||||||
|
|
||||||
if ('Video' == profile.Type) {
|
if (profile.Type == 'Video') {
|
||||||
html += '<p>' + globalize.translate('ValueVideoCodec', profile.VideoCodec || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueVideoCodec', profile.VideoCodec || allText) + '</p>';
|
||||||
html += '<p>' + globalize.translate('ValueAudioCodec', profile.AudioCodec || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueAudioCodec', profile.AudioCodec || allText) + '</p>';
|
||||||
} else {
|
} else {
|
||||||
if ('Audio' == profile.Type) {
|
if (profile.Type == 'Audio') {
|
||||||
html += '<p>' + globalize.translate('ValueCodec', profile.AudioCodec || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueCodec', profile.AudioCodec || allText) + '</p>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -354,7 +354,7 @@ import 'listViewStyle';
|
||||||
}
|
}
|
||||||
|
|
||||||
function editTranscodingProfile(page, transcodingProfile) {
|
function editTranscodingProfile(page, transcodingProfile) {
|
||||||
isSubProfileNew = null == transcodingProfile;
|
isSubProfileNew = transcodingProfile == null;
|
||||||
transcodingProfile = transcodingProfile || {};
|
transcodingProfile = transcodingProfile || {};
|
||||||
currentSubProfile = transcodingProfile;
|
currentSubProfile = transcodingProfile;
|
||||||
const popup = $('#transcodingProfilePopup', page);
|
const popup = $('#transcodingProfilePopup', page);
|
||||||
|
@ -365,7 +365,7 @@ import 'listViewStyle';
|
||||||
$('#selectTranscodingProtocol', popup).val(transcodingProfile.Protocol || 'Http');
|
$('#selectTranscodingProtocol', popup).val(transcodingProfile.Protocol || 'Http');
|
||||||
$('#chkEnableMpegtsM2TsMode', popup).prop('checked', transcodingProfile.EnableMpegtsM2TsMode || false);
|
$('#chkEnableMpegtsM2TsMode', popup).prop('checked', transcodingProfile.EnableMpegtsM2TsMode || false);
|
||||||
$('#chkEstimateContentLength', popup).prop('checked', transcodingProfile.EstimateContentLength || false);
|
$('#chkEstimateContentLength', popup).prop('checked', transcodingProfile.EstimateContentLength || false);
|
||||||
$('#chkReportByteRangeRequests', popup).prop('checked', 'Bytes' == transcodingProfile.TranscodeSeekInfo);
|
$('#chkReportByteRangeRequests', popup).prop('checked', transcodingProfile.TranscodeSeekInfo == 'Bytes');
|
||||||
$('.radioTabButton:first', popup).trigger('click');
|
$('.radioTabButton:first', popup).trigger('click');
|
||||||
openPopup(popup[0]);
|
openPopup(popup[0]);
|
||||||
}
|
}
|
||||||
|
@ -443,7 +443,7 @@ import 'listViewStyle';
|
||||||
}
|
}
|
||||||
|
|
||||||
function editContainerProfile(page, containerProfile) {
|
function editContainerProfile(page, containerProfile) {
|
||||||
isSubProfileNew = null == containerProfile;
|
isSubProfileNew = containerProfile == null;
|
||||||
containerProfile = containerProfile || {};
|
containerProfile = containerProfile || {};
|
||||||
currentSubProfile = containerProfile;
|
currentSubProfile = containerProfile;
|
||||||
const popup = $('#containerProfilePopup', page);
|
const popup = $('#containerProfilePopup', page);
|
||||||
|
@ -515,7 +515,7 @@ import 'listViewStyle';
|
||||||
}
|
}
|
||||||
|
|
||||||
function editCodecProfile(page, codecProfile) {
|
function editCodecProfile(page, codecProfile) {
|
||||||
isSubProfileNew = null == codecProfile;
|
isSubProfileNew = codecProfile == null;
|
||||||
codecProfile = codecProfile || {};
|
codecProfile = codecProfile || {};
|
||||||
currentSubProfile = codecProfile;
|
currentSubProfile = codecProfile;
|
||||||
const popup = $('#codecProfilePopup', page);
|
const popup = $('#codecProfilePopup', page);
|
||||||
|
@ -555,11 +555,11 @@ import 'listViewStyle';
|
||||||
html += '<a is="emby-linkbutton" href="#" class="lnkEditSubProfile" data-profileindex="' + i + '">';
|
html += '<a is="emby-linkbutton" href="#" class="lnkEditSubProfile" data-profileindex="' + i + '">';
|
||||||
html += '<p>' + globalize.translate('ValueContainer', profile.Container || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueContainer', profile.Container || allText) + '</p>';
|
||||||
|
|
||||||
if ('Video' == profile.Type) {
|
if (profile.Type == 'Video') {
|
||||||
html += '<p>' + globalize.translate('ValueVideoCodec', profile.VideoCodec || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueVideoCodec', profile.VideoCodec || allText) + '</p>';
|
||||||
html += '<p>' + globalize.translate('ValueAudioCodec', profile.AudioCodec || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueAudioCodec', profile.AudioCodec || allText) + '</p>';
|
||||||
} else {
|
} else {
|
||||||
if ('Audio' == profile.Type) {
|
if (profile.Type == 'Audio') {
|
||||||
html += '<p>' + globalize.translate('ValueCodec', profile.AudioCodec || allText) + '</p>';
|
html += '<p>' + globalize.translate('ValueCodec', profile.AudioCodec || allText) + '</p>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -595,7 +595,7 @@ import 'listViewStyle';
|
||||||
}
|
}
|
||||||
|
|
||||||
function editResponseProfile(page, responseProfile) {
|
function editResponseProfile(page, responseProfile) {
|
||||||
isSubProfileNew = null == responseProfile;
|
isSubProfileNew = responseProfile == null;
|
||||||
responseProfile = responseProfile || {};
|
responseProfile = responseProfile || {};
|
||||||
currentSubProfile = responseProfile;
|
currentSubProfile = responseProfile;
|
||||||
const popup = $('#responseProfilePopup', page);
|
const popup = $('#responseProfilePopup', page);
|
||||||
|
@ -703,26 +703,26 @@ import 'listViewStyle';
|
||||||
$('.radioTabButton', page).on('click', function () {
|
$('.radioTabButton', page).on('click', function () {
|
||||||
$(this).siblings().removeClass('ui-btn-active');
|
$(this).siblings().removeClass('ui-btn-active');
|
||||||
$(this).addClass('ui-btn-active');
|
$(this).addClass('ui-btn-active');
|
||||||
const value = 'A' == this.tagName ? this.getAttribute('data-value') : this.value;
|
const value = this.tagName == 'A' ? this.getAttribute('data-value') : this.value;
|
||||||
const elem = $('.' + value, page);
|
const elem = $('.' + value, page);
|
||||||
elem.siblings('.tabContent').hide();
|
elem.siblings('.tabContent').hide();
|
||||||
elem.show();
|
elem.show();
|
||||||
});
|
});
|
||||||
$('#selectDirectPlayProfileType', page).on('change', function () {
|
$('#selectDirectPlayProfileType', page).on('change', function () {
|
||||||
if ('Video' == this.value) {
|
if (this.value == 'Video') {
|
||||||
$('#fldDirectPlayVideoCodec', page).show();
|
$('#fldDirectPlayVideoCodec', page).show();
|
||||||
} else {
|
} else {
|
||||||
$('#fldDirectPlayVideoCodec', page).hide();
|
$('#fldDirectPlayVideoCodec', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Photo' == this.value) {
|
if (this.value == 'Photo') {
|
||||||
$('#fldDirectPlayAudioCodec', page).hide();
|
$('#fldDirectPlayAudioCodec', page).hide();
|
||||||
} else {
|
} else {
|
||||||
$('#fldDirectPlayAudioCodec', page).show();
|
$('#fldDirectPlayAudioCodec', page).show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$('#selectTranscodingProfileType', page).on('change', function () {
|
$('#selectTranscodingProfileType', page).on('change', function () {
|
||||||
if ('Video' == this.value) {
|
if (this.value == 'Video') {
|
||||||
$('#fldTranscodingVideoCodec', page).show();
|
$('#fldTranscodingVideoCodec', page).show();
|
||||||
$('#fldTranscodingProtocol', page).show();
|
$('#fldTranscodingProtocol', page).show();
|
||||||
$('#fldEnableMpegtsM2TsMode', page).show();
|
$('#fldEnableMpegtsM2TsMode', page).show();
|
||||||
|
@ -732,7 +732,7 @@ import 'listViewStyle';
|
||||||
$('#fldEnableMpegtsM2TsMode', page).hide();
|
$('#fldEnableMpegtsM2TsMode', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Photo' == this.value) {
|
if (this.value == 'Photo') {
|
||||||
$('#fldTranscodingAudioCodec', page).hide();
|
$('#fldTranscodingAudioCodec', page).hide();
|
||||||
$('#fldEstimateContentLength', page).hide();
|
$('#fldEstimateContentLength', page).hide();
|
||||||
$('#fldReportByteRangeRequests', page).hide();
|
$('#fldReportByteRangeRequests', page).hide();
|
||||||
|
@ -743,13 +743,13 @@ import 'listViewStyle';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$('#selectResponseProfileType', page).on('change', function () {
|
$('#selectResponseProfileType', page).on('change', function () {
|
||||||
if ('Video' == this.value) {
|
if (this.value == 'Video') {
|
||||||
$('#fldResponseProfileVideoCodec', page).show();
|
$('#fldResponseProfileVideoCodec', page).show();
|
||||||
} else {
|
} else {
|
||||||
$('#fldResponseProfileVideoCodec', page).hide();
|
$('#fldResponseProfileVideoCodec', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Photo' == this.value) {
|
if (this.value == 'Photo') {
|
||||||
$('#fldResponseProfileAudioCodec', page).hide();
|
$('#fldResponseProfileAudioCodec', page).hide();
|
||||||
} else {
|
} else {
|
||||||
$('#fldResponseProfileAudioCodec', page).show();
|
$('#fldResponseProfileAudioCodec', page).show();
|
||||||
|
|
|
@ -18,13 +18,13 @@ import 'emby-button';
|
||||||
|
|
||||||
function renderUserProfiles(page, profiles) {
|
function renderUserProfiles(page, profiles) {
|
||||||
renderProfiles(page, page.querySelector('.customProfiles'), profiles.filter(function (p) {
|
renderProfiles(page, page.querySelector('.customProfiles'), profiles.filter(function (p) {
|
||||||
return 'User' == p.Type;
|
return p.Type == 'User';
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderSystemProfiles(page, profiles) {
|
function renderSystemProfiles(page, profiles) {
|
||||||
renderProfiles(page, page.querySelector('.systemProfiles'), profiles.filter(function (p) {
|
renderProfiles(page, page.querySelector('.systemProfiles'), profiles.filter(function (p) {
|
||||||
return 'System' == p.Type;
|
return p.Type == 'System';
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ import 'emby-button';
|
||||||
html += '</a>';
|
html += '</a>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
if ('User' == profile.Type) {
|
if (profile.Type == 'User') {
|
||||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile" data-profileid="' + profile.Id + '" title="' + globalize.translate('ButtonDelete') + '"><span class="material-icons delete"></span></button>';
|
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile" data-profileid="' + profile.Id + '" title="' + globalize.translate('ButtonDelete') + '"><span class="material-icons delete"></span></button>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import libraryMenu from 'libraryMenu';
|
||||||
|
|
||||||
function loadPage(page, config, systemInfo) {
|
function loadPage(page, config, systemInfo) {
|
||||||
Array.prototype.forEach.call(page.querySelectorAll('.chkDecodeCodec'), function (c) {
|
Array.prototype.forEach.call(page.querySelectorAll('.chkDecodeCodec'), function (c) {
|
||||||
c.checked = -1 !== (config.HardwareDecodingCodecs || []).indexOf(c.getAttribute('data-codec'));
|
c.checked = (config.HardwareDecodingCodecs || []).indexOf(c.getAttribute('data-codec')) !== -1;
|
||||||
});
|
});
|
||||||
page.querySelector('#chkDecodingColorDepth10Hevc').checked = config.EnableDecodingColorDepth10Hevc;
|
page.querySelector('#chkDecodingColorDepth10Hevc').checked = config.EnableDecodingColorDepth10Hevc;
|
||||||
page.querySelector('#chkDecodingColorDepth10Vp9').checked = config.EnableDecodingColorDepth10Vp9;
|
page.querySelector('#chkDecodingColorDepth10Vp9').checked = config.EnableDecodingColorDepth10Vp9;
|
||||||
|
@ -81,7 +81,7 @@ import libraryMenu from 'libraryMenu';
|
||||||
updateEncoder(form);
|
updateEncoder(form);
|
||||||
}, function () {
|
}, function () {
|
||||||
import('alert').then(({default: alert}) => {
|
import('alert').then(({default: alert}) => {
|
||||||
alert(globalize.translate('DefaultErrorMessage'));
|
alert(globalize.translate('ErrorDefault'));
|
||||||
});
|
});
|
||||||
|
|
||||||
Dashboard.processServerConfigurationUpdateResult();
|
Dashboard.processServerConfigurationUpdateResult();
|
||||||
|
@ -107,7 +107,7 @@ import libraryMenu from 'libraryMenu';
|
||||||
value = value || '';
|
value = value || '';
|
||||||
let any;
|
let any;
|
||||||
Array.prototype.forEach.call(context.querySelectorAll('.chkDecodeCodec'), function (c) {
|
Array.prototype.forEach.call(context.querySelectorAll('.chkDecodeCodec'), function (c) {
|
||||||
if (-1 === c.getAttribute('data-types').split(',').indexOf(value)) {
|
if (c.getAttribute('data-types').split(',').indexOf(value) === -1) {
|
||||||
dom.parentWithTag(c, 'LABEL').classList.add('hide');
|
dom.parentWithTag(c, 'LABEL').classList.add('hide');
|
||||||
} else {
|
} else {
|
||||||
dom.parentWithTag(c, 'LABEL').classList.remove('hide');
|
dom.parentWithTag(c, 'LABEL').classList.remove('hide');
|
||||||
|
@ -138,7 +138,7 @@ import libraryMenu from 'libraryMenu';
|
||||||
$(document).on('pageinit', '#encodingSettingsPage', function () {
|
$(document).on('pageinit', '#encodingSettingsPage', function () {
|
||||||
const page = this;
|
const page = this;
|
||||||
page.querySelector('#selectVideoDecoder').addEventListener('change', function () {
|
page.querySelector('#selectVideoDecoder').addEventListener('change', function () {
|
||||||
if ('vaapi' == this.value) {
|
if (this.value == 'vaapi') {
|
||||||
page.querySelector('.fldVaapiDevice').classList.remove('hide');
|
page.querySelector('.fldVaapiDevice').classList.remove('hide');
|
||||||
page.querySelector('#txtVaapiDevice').setAttribute('required', 'required');
|
page.querySelector('#txtVaapiDevice').setAttribute('required', 'required');
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -52,7 +52,7 @@ import 'emby-button';
|
||||||
});
|
});
|
||||||
}, function () {
|
}, function () {
|
||||||
import('alert').then(({default: alert}) => {
|
import('alert').then(({default: alert}) => {
|
||||||
alert(globalize.translate('DefaultErrorMessage'));
|
alert(globalize.translate('ErrorDefault'));
|
||||||
});
|
});
|
||||||
|
|
||||||
Dashboard.processServerConfigurationUpdateResult();
|
Dashboard.processServerConfigurationUpdateResult();
|
||||||
|
|
|
@ -48,7 +48,7 @@ import 'emby-button';
|
||||||
ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult);
|
ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult);
|
||||||
});
|
});
|
||||||
ApiClient.getNamedConfiguration('metadata').then(function(config) {
|
ApiClient.getNamedConfiguration('metadata').then(function(config) {
|
||||||
config.UseFileCreationTimeForDateAdded = '1' === $('#selectDateAdded', form).val();
|
config.UseFileCreationTimeForDateAdded = $('#selectDateAdded', form).val() === '1';
|
||||||
ApiClient.updateNamedConfiguration('metadata', config);
|
ApiClient.updateNamedConfiguration('metadata', config);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ import 'emby-button';
|
||||||
libraryMenu.setTabs('librarysetup', 1, getTabs);
|
libraryMenu.setTabs('librarysetup', 1, getTabs);
|
||||||
loadData();
|
loadData();
|
||||||
ApiClient.getSystemInfo().then(function(info) {
|
ApiClient.getSystemInfo().then(function(info) {
|
||||||
if ('Windows' === info.OperatingSystem) {
|
if (info.OperatingSystem === 'Windows') {
|
||||||
view.querySelector('.fldSaveMetadataHidden').classList.remove('hide');
|
view.querySelector('.fldSaveMetadataHidden').classList.remove('hide');
|
||||||
} else {
|
} else {
|
||||||
view.querySelector('.fldSaveMetadataHidden').classList.add('hide');
|
view.querySelector('.fldSaveMetadataHidden').classList.add('hide');
|
||||||
|
|
|
@ -156,7 +156,7 @@ import 'emby-itemrefreshindicator';
|
||||||
}
|
}
|
||||||
|
|
||||||
function shouldRefreshLibraryAfterChanges(page) {
|
function shouldRefreshLibraryAfterChanges(page) {
|
||||||
return 'mediaLibraryPage' === page.id;
|
return page.id === 'mediaLibraryPage';
|
||||||
}
|
}
|
||||||
|
|
||||||
function reloadVirtualFolders(page, virtualFolders) {
|
function reloadVirtualFolders(page, virtualFolders) {
|
||||||
|
@ -286,7 +286,7 @@ import 'emby-itemrefreshindicator';
|
||||||
|
|
||||||
if (hasCardImageContainer) {
|
if (hasCardImageContainer) {
|
||||||
html += '<div class="cardIndicators backdropCardIndicators">';
|
html += '<div class="cardIndicators backdropCardIndicators">';
|
||||||
html += '<div is="emby-itemrefreshindicator"' + (virtualFolder.RefreshProgress || virtualFolder.RefreshStatus && 'Idle' !== virtualFolder.RefreshStatus ? '' : ' class="hide"') + ' data-progress="' + (virtualFolder.RefreshProgress || 0) + '" data-status="' + virtualFolder.RefreshStatus + '"></div>';
|
html += '<div is="emby-itemrefreshindicator"' + (virtualFolder.RefreshProgress || virtualFolder.RefreshStatus && virtualFolder.RefreshStatus !== 'Idle' ? '' : ' class="hide"') + ' data-progress="' + (virtualFolder.RefreshProgress || 0) + '" data-status="' + virtualFolder.RefreshStatus + '"></div>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ import 'emby-select';
|
||||||
}).filter(function (s) {
|
}).filter(function (s) {
|
||||||
return s.length > 0;
|
return s.length > 0;
|
||||||
});
|
});
|
||||||
config.IsRemoteIPFilterBlacklist = 'blacklist' === form.querySelector('#selectExternalAddressFilterMode').value;
|
config.IsRemoteIPFilterBlacklist = form.querySelector('#selectExternalAddressFilterMode').value === 'blacklist';
|
||||||
config.PublicPort = form.querySelector('#txtPublicPort').value;
|
config.PublicPort = form.querySelector('#txtPublicPort').value;
|
||||||
config.PublicHttpsPort = form.querySelector('#txtPublicHttpsPort').value;
|
config.PublicHttpsPort = form.querySelector('#txtPublicHttpsPort').value;
|
||||||
config.HttpServerPortNumber = form.querySelector('#txtPortNumber').value;
|
config.HttpServerPortNumber = form.querySelector('#txtPortNumber').value;
|
||||||
|
@ -110,7 +110,7 @@ import 'emby-select';
|
||||||
page.querySelector('#txtLanNetworks').value = (config.LocalNetworkSubnets || []).join(', ');
|
page.querySelector('#txtLanNetworks').value = (config.LocalNetworkSubnets || []).join(', ');
|
||||||
page.querySelector('#txtExternalAddressFilter').value = (config.RemoteIPFilter || []).join(', ');
|
page.querySelector('#txtExternalAddressFilter').value = (config.RemoteIPFilter || []).join(', ');
|
||||||
page.querySelector('#selectExternalAddressFilterMode').value = config.IsRemoteIPFilterBlacklist ? 'blacklist' : 'whitelist';
|
page.querySelector('#selectExternalAddressFilterMode').value = config.IsRemoteIPFilterBlacklist ? 'blacklist' : 'whitelist';
|
||||||
page.querySelector('#chkRemoteAccess').checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess;
|
page.querySelector('#chkRemoteAccess').checked = config.EnableRemoteAccess == null || config.EnableRemoteAccess;
|
||||||
page.querySelector('#txtHttpsPort').value = config.HttpsPortNumber;
|
page.querySelector('#txtHttpsPort').value = config.HttpsPortNumber;
|
||||||
page.querySelector('#chkEnableHttps').checked = config.EnableHttps;
|
page.querySelector('#chkEnableHttps').checked = config.EnableHttps;
|
||||||
page.querySelector('#chkRequireHttps').checked = config.RequireHttps;
|
page.querySelector('#chkRequireHttps').checked = config.RequireHttps;
|
||||||
|
|
|
@ -106,7 +106,7 @@ define(['jQuery', 'emby-checkbox'], function ($) {
|
||||||
$(document).on('pageinit', '#notificationSettingPage', function () {
|
$(document).on('pageinit', '#notificationSettingPage', function () {
|
||||||
var page = this;
|
var page = this;
|
||||||
$('#selectUsers', page).on('change', function () {
|
$('#selectUsers', page).on('change', function () {
|
||||||
if ('Custom' == this.value) {
|
if (this.value == 'Custom') {
|
||||||
$('.selectCustomUsers', page).show();
|
$('.selectCustomUsers', page).show();
|
||||||
} else {
|
} else {
|
||||||
$('.selectCustomUsers', page).hide();
|
$('.selectCustomUsers', page).hide();
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['loading', 'libraryMenu', 'globalize', 'listViewStyle', 'emby-button'], function(loading, libraryMenu, globalize) {
|
define(['loading', 'libraryMenu', 'globalize', 'listViewStyle', 'emby-button'], function(loading, libraryMenu, globalize) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function reload(page) {
|
function reload(page) {
|
||||||
loading.show();
|
loading.show();
|
||||||
ApiClient.getJSON(ApiClient.getUrl('Notifications/Types')).then(function(list) {
|
ApiClient.getJSON(ApiClient.getUrl('Notifications/Types')).then(function(list) {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['jQuery', 'loading', 'libraryMenu', 'globalize', 'connectionManager', 'emby-button'], function ($, loading, libraryMenu, globalize, connectionManager) {
|
define(['jQuery', 'loading', 'libraryMenu', 'globalize', 'connectionManager', 'emby-button'], function ($, loading, libraryMenu, globalize, connectionManager) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function populateHistory(packageInfo, page) {
|
function populateHistory(packageInfo, page) {
|
||||||
var html = '';
|
var html = '';
|
||||||
var length = Math.min(packageInfo.versions.length, 10);
|
var length = Math.min(packageInfo.versions.length, 10);
|
||||||
|
@ -79,7 +81,7 @@ define(['jQuery', 'loading', 'libraryMenu', 'globalize', 'connectionManager', 'e
|
||||||
page.querySelector('#btnInstall').disabled = true;
|
page.querySelector('#btnInstall').disabled = true;
|
||||||
ApiClient.installPlugin(name, guid, version).then(function () {
|
ApiClient.installPlugin(name, guid, version).then(function () {
|
||||||
loading.hide();
|
loading.hide();
|
||||||
alertText(globalize.translate('PluginInstalledMessage'));
|
alertText(globalize.translate('MessagePluginInstalled'));
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['loading', 'libraryMenu', 'globalize', 'cardStyle', 'emby-button', 'emby-checkbox', 'emby-select'], function (loading, libraryMenu, globalize) {
|
define(['loading', 'libraryMenu', 'globalize', 'cardStyle', 'emby-button', 'emby-checkbox', 'emby-select'], function (loading, libraryMenu, globalize) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function reloadList(page) {
|
function reloadList(page) {
|
||||||
loading.show();
|
loading.show();
|
||||||
var promise1 = ApiClient.getAvailablePlugins();
|
var promise1 = ApiClient.getAvailablePlugins();
|
||||||
|
@ -17,13 +19,13 @@ define(['loading', 'libraryMenu', 'globalize', 'cardStyle', 'emby-button', 'emby
|
||||||
|
|
||||||
function getHeaderText(category) {
|
function getHeaderText(category) {
|
||||||
category = category.replace(' ', '');
|
category = category.replace(' ', '');
|
||||||
if ('Channel' === category) {
|
if (category === 'Channel') {
|
||||||
category = 'Channels';
|
category = 'Channels';
|
||||||
} else if ('Theme' === category) {
|
} else if (category === 'Theme') {
|
||||||
category = 'Themes';
|
category = 'Themes';
|
||||||
} else if ('LiveTV' === category) {
|
} else if (category === 'LiveTV') {
|
||||||
category = 'HeaderLiveTV';
|
category = 'HeaderLiveTV';
|
||||||
} else if ('ScreenSaver' === category) {
|
} else if (category === 'ScreenSaver') {
|
||||||
category = 'HeaderScreenSavers';
|
category = 'HeaderScreenSavers';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,17 @@
|
||||||
define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button'], function (loading, libraryMenu, dom, globalize) {
|
define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button'], function (loading, libraryMenu, dom, globalize) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function deletePlugin(page, uniqueid, name) {
|
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.default({
|
confirm.default({
|
||||||
title: globalize.translate('UninstallPluginHeader'),
|
title: globalize.translate('HeaderUninstallPlugin'),
|
||||||
text: msg,
|
text: msg,
|
||||||
primary: 'delete',
|
primary: 'delete',
|
||||||
confirmText: globalize.translate('UninstallPluginHeader')
|
confirmText: globalize.translate('HeaderUninstallPlugin')
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
loading.show();
|
loading.show();
|
||||||
ApiClient.uninstallPlugin(uniqueid).then(function () {
|
ApiClient.uninstallPlugin(uniqueid).then(function () {
|
||||||
|
@ -21,7 +23,7 @@ define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button'
|
||||||
|
|
||||||
function showNoConfigurationMessage() {
|
function showNoConfigurationMessage() {
|
||||||
Dashboard.alert({
|
Dashboard.alert({
|
||||||
message: globalize.translate('NoPluginConfigurationMessage')
|
message: globalize.translate('MessageNoPluginConfiguration')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,7 +97,7 @@ define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button'
|
||||||
html += '<div class="centerMessage">';
|
html += '<div class="centerMessage">';
|
||||||
html += '<h1>' + globalize.translate('MessageNoPluginsInstalled') + '</h1>';
|
html += '<h1>' + globalize.translate('MessageNoPluginsInstalled') + '</h1>';
|
||||||
html += '<p><a is="emby-linkbutton" class="button-link" href="availableplugins.html">';
|
html += '<p><a is="emby-linkbutton" class="button-link" href="availableplugins.html">';
|
||||||
html += globalize.translate('BrowsePluginCatalogMessage');
|
html += globalize.translate('MessageBrowsePluginCatalog');
|
||||||
html += '</a></p>';
|
html += '</a></p>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,16 +84,16 @@ import 'emby-select';
|
||||||
},
|
},
|
||||||
// TODO: Replace this mess with date-fns and remove datetime completely
|
// TODO: Replace this mess with date-fns and remove datetime completely
|
||||||
getTriggerFriendlyName: function (trigger) {
|
getTriggerFriendlyName: function (trigger) {
|
||||||
if ('DailyTrigger' == trigger.Type) {
|
if (trigger.Type == 'DailyTrigger') {
|
||||||
return globalize.translate('DailyAt', ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks));
|
return globalize.translate('DailyAt', ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('WeeklyTrigger' == trigger.Type) {
|
if (trigger.Type == 'WeeklyTrigger') {
|
||||||
// TODO: The day of week isn't localised as well
|
// 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) {
|
if (trigger.Type == 'SystemEventTrigger' && trigger.SystemEvent == 'WakeFromSleep') {
|
||||||
return globalize.translate('OnWakeFromSleep');
|
return globalize.translate('OnWakeFromSleep');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,13 +14,13 @@ import globalize from 'globalize';
|
||||||
let html = '';
|
let html = '';
|
||||||
|
|
||||||
for (const folder of mediaFolders) {
|
for (const folder of mediaFolders) {
|
||||||
isChecked = user.Policy.EnableContentDeletion || -1 != user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id);
|
isChecked = user.Policy.EnableContentDeletion || user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id) != -1;
|
||||||
checkedAttribute = isChecked ? ' checked="checked"' : '';
|
checkedAttribute = isChecked ? ' checked="checked"' : '';
|
||||||
html += '<label><input type="checkbox" is="emby-checkbox" class="chkFolder" data-id="' + folder.Id + '" ' + checkedAttribute + '><span>' + folder.Name + '</span></label>';
|
html += '<label><input type="checkbox" is="emby-checkbox" class="chkFolder" data-id="' + folder.Id + '" ' + checkedAttribute + '><span>' + folder.Name + '</span></label>';
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const folder of channelsResult.Items) {
|
for (const folder of channelsResult.Items) {
|
||||||
isChecked = user.Policy.EnableContentDeletion || -1 != user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id);
|
isChecked = user.Policy.EnableContentDeletion || user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id) != -1;
|
||||||
checkedAttribute = isChecked ? ' checked="checked"' : '';
|
checkedAttribute = isChecked ? ' checked="checked"' : '';
|
||||||
html += '<label><input type="checkbox" is="emby-checkbox" class="chkFolder" data-id="' + folder.Id + '" ' + checkedAttribute + '><span>' + folder.Name + '</span></label>';
|
html += '<label><input type="checkbox" is="emby-checkbox" class="chkFolder" data-id="' + folder.Id + '" ' + checkedAttribute + '><span>' + folder.Name + '</span></label>';
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,7 @@ import globalize from 'globalize';
|
||||||
$('#chkEnableVideoPlaybackTranscoding', page).prop('checked', user.Policy.EnableVideoPlaybackTranscoding);
|
$('#chkEnableVideoPlaybackTranscoding', page).prop('checked', user.Policy.EnableVideoPlaybackTranscoding);
|
||||||
$('#chkEnableVideoPlaybackRemuxing', page).prop('checked', user.Policy.EnablePlaybackRemuxing);
|
$('#chkEnableVideoPlaybackRemuxing', page).prop('checked', user.Policy.EnablePlaybackRemuxing);
|
||||||
$('#chkForceRemoteSourceTranscoding', page).prop('checked', user.Policy.ForceRemoteSourceTranscoding);
|
$('#chkForceRemoteSourceTranscoding', page).prop('checked', user.Policy.ForceRemoteSourceTranscoding);
|
||||||
$('#chkRemoteAccess', page).prop('checked', null == user.Policy.EnableRemoteAccess || user.Policy.EnableRemoteAccess);
|
$('#chkRemoteAccess', page).prop('checked', user.Policy.EnableRemoteAccess == null || user.Policy.EnableRemoteAccess);
|
||||||
$('#chkEnableSyncTranscoding', page).prop('checked', user.Policy.EnableSyncTranscoding);
|
$('#chkEnableSyncTranscoding', page).prop('checked', user.Policy.EnableSyncTranscoding);
|
||||||
$('#chkEnableConversion', page).prop('checked', user.Policy.EnableMediaConversion || false);
|
$('#chkEnableConversion', page).prop('checked', user.Policy.EnableMediaConversion || false);
|
||||||
$('#chkEnableSharing', page).prop('checked', user.Policy.EnablePublicSharing);
|
$('#chkEnableSharing', page).prop('checked', user.Policy.EnablePublicSharing);
|
||||||
|
|
|
@ -18,7 +18,7 @@ import globalize from 'globalize';
|
||||||
|
|
||||||
for (let i = 0, length = mediaFolders.length; i < length; i++) {
|
for (let i = 0, length = mediaFolders.length; i < length; i++) {
|
||||||
const folder = mediaFolders[i];
|
const folder = mediaFolders[i];
|
||||||
const isChecked = user.Policy.EnableAllFolders || -1 != user.Policy.EnabledFolders.indexOf(folder.Id);
|
const isChecked = user.Policy.EnableAllFolders || user.Policy.EnabledFolders.indexOf(folder.Id) != -1;
|
||||||
const checkedAttribute = isChecked ? ' checked="checked"' : '';
|
const checkedAttribute = isChecked ? ' checked="checked"' : '';
|
||||||
html += '<label><input type="checkbox" is="emby-checkbox" class="chkFolder" data-id="' + folder.Id + '" ' + checkedAttribute + '><span>' + folder.Name + '</span></label>';
|
html += '<label><input type="checkbox" is="emby-checkbox" class="chkFolder" data-id="' + folder.Id + '" ' + checkedAttribute + '><span>' + folder.Name + '</span></label>';
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ import globalize from 'globalize';
|
||||||
|
|
||||||
for (let i = 0, length = channels.length; i < length; i++) {
|
for (let i = 0, length = channels.length; i < length; i++) {
|
||||||
const folder = channels[i];
|
const folder = channels[i];
|
||||||
const isChecked = user.Policy.EnableAllChannels || -1 != user.Policy.EnabledChannels.indexOf(folder.Id);
|
const isChecked = user.Policy.EnableAllChannels || user.Policy.EnabledChannels.indexOf(folder.Id) != -1;
|
||||||
const checkedAttribute = isChecked ? ' checked="checked"' : '';
|
const checkedAttribute = isChecked ? ' checked="checked"' : '';
|
||||||
html += '<label><input type="checkbox" is="emby-checkbox" class="chkChannel" data-id="' + folder.Id + '" ' + checkedAttribute + '><span>' + folder.Name + '</span></label>';
|
html += '<label><input type="checkbox" is="emby-checkbox" class="chkChannel" data-id="' + folder.Id + '" ' + checkedAttribute + '><span>' + folder.Name + '</span></label>';
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ import globalize from 'globalize';
|
||||||
|
|
||||||
for (let i = 0, length = devices.length; i < length; i++) {
|
for (let i = 0, length = devices.length; i < length; i++) {
|
||||||
const device = devices[i];
|
const device = devices[i];
|
||||||
const checkedAttribute = user.Policy.EnableAllDevices || -1 != user.Policy.EnabledDevices.indexOf(device.Id) ? ' checked="checked"' : '';
|
const checkedAttribute = user.Policy.EnableAllDevices || user.Policy.EnabledDevices.indexOf(device.Id) != -1 ? ' checked="checked"' : '';
|
||||||
html += '<label><input type="checkbox" is="emby-checkbox" class="chkDevice" data-id="' + device.Id + '" ' + checkedAttribute + '><span>' + device.Name + ' - ' + device.AppName + '</span></label>';
|
html += '<label><input type="checkbox" is="emby-checkbox" class="chkDevice" data-id="' + device.Id + '" ' + checkedAttribute + '><span>' + device.Name + ' - ' + device.AppName + '</span></label>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,7 @@ import 'emby-checkbox';
|
||||||
});
|
});
|
||||||
}, function (response) {
|
}, function (response) {
|
||||||
import('toast').then(({default: toast}) => {
|
import('toast').then(({default: toast}) => {
|
||||||
toast(globalize.translate('DefaultErrorMessage'));
|
toast(globalize.translate('ErrorDefault'));
|
||||||
});
|
});
|
||||||
|
|
||||||
loading.hide();
|
loading.hide();
|
||||||
|
|
|
@ -67,7 +67,7 @@ import 'paper-icon-button-light';
|
||||||
|
|
||||||
for (let i = 0, length = items.length; i < length; i++) {
|
for (let i = 0, length = items.length; i < length; i++) {
|
||||||
const item = items[i];
|
const item = items[i];
|
||||||
const checkedAttribute = -1 != user.Policy.BlockUnratedItems.indexOf(item.value) ? ' checked="checked"' : '';
|
const checkedAttribute = user.Policy.BlockUnratedItems.indexOf(item.value) != -1 ? ' checked="checked"' : '';
|
||||||
html += '<label><input type="checkbox" is="emby-checkbox" class="chkUnratedItem" data-itemtype="' + item.value + '" type="checkbox"' + checkedAttribute + '><span>' + item.name + '</span></label>';
|
html += '<label><input type="checkbox" is="emby-checkbox" class="chkUnratedItem" data-itemtype="' + item.value + '" type="checkbox"' + checkedAttribute + '><span>' + item.name + '</span></label>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,7 +201,7 @@ import 'paper-icon-button-light';
|
||||||
}).then(function (updatedSchedule) {
|
}).then(function (updatedSchedule) {
|
||||||
const schedules = getSchedulesFromPage(page);
|
const schedules = getSchedulesFromPage(page);
|
||||||
|
|
||||||
if (-1 == index) {
|
if (index == -1) {
|
||||||
index = schedules.length;
|
index = schedules.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,7 +234,7 @@ import 'paper-icon-button-light';
|
||||||
}).then(function (value) {
|
}).then(function (value) {
|
||||||
const tags = getBlockedTagsFromPage(page);
|
const tags = getBlockedTagsFromPage(page);
|
||||||
|
|
||||||
if (-1 == tags.indexOf(value)) {
|
if (tags.indexOf(value) == -1) {
|
||||||
tags.push(value);
|
tags.push(value);
|
||||||
loadBlockedTags(page, tags);
|
loadBlockedTags(page, tags);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ import 'emby-button';
|
||||||
let showPasswordSection = true;
|
let showPasswordSection = true;
|
||||||
let showLocalAccessSection = false;
|
let showLocalAccessSection = false;
|
||||||
|
|
||||||
if ('Guest' == user.ConnectLinkType) {
|
if (user.ConnectLinkType == 'Guest') {
|
||||||
page.querySelector('.localAccessSection').classList.add('hide');
|
page.querySelector('.localAccessSection').classList.add('hide');
|
||||||
showPasswordSection = false;
|
showPasswordSection = false;
|
||||||
} else if (user.HasConfiguredPassword) {
|
} else if (user.HasConfiguredPassword) {
|
||||||
|
@ -145,14 +145,14 @@ import 'emby-button';
|
||||||
function resetPassword() {
|
function resetPassword() {
|
||||||
const msg = globalize.translate('PasswordResetConfirmation');
|
const msg = globalize.translate('PasswordResetConfirmation');
|
||||||
import('confirm').then(({default: confirm}) => {
|
import('confirm').then(({default: confirm}) => {
|
||||||
confirm(msg, globalize.translate('PasswordResetHeader')).then(function () {
|
confirm(msg, globalize.translate('HeaderResetPassword')).then(function () {
|
||||||
const userId = params.userId;
|
const userId = params.userId;
|
||||||
loading.show();
|
loading.show();
|
||||||
ApiClient.resetUserPassword(userId).then(function () {
|
ApiClient.resetUserPassword(userId).then(function () {
|
||||||
loading.hide();
|
loading.hide();
|
||||||
Dashboard.alert({
|
Dashboard.alert({
|
||||||
message: globalize.translate('PasswordResetComplete'),
|
message: globalize.translate('PasswordResetComplete'),
|
||||||
title: globalize.translate('PasswordResetHeader')
|
title: globalize.translate('HeaderResetPassword')
|
||||||
});
|
});
|
||||||
loadUser(view, params);
|
loadUser(view, params);
|
||||||
});
|
});
|
||||||
|
|
|
@ -129,7 +129,7 @@ import 'flexStyles';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '<div class="cardText cardText-secondary">';
|
html += '<div class="cardText cardText-secondary">';
|
||||||
const lastSeen = getLastSeenText(user.LastActivityDate);
|
const lastSeen = getLastSeenText(user.LastActivityDate);
|
||||||
html += '' != lastSeen ? lastSeen : ' ';
|
html += lastSeen != '' ? lastSeen : ' ';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['loading', 'scripts/editorsidebar'], function (loading) {
|
define(['loading', 'scripts/editorsidebar'], function (loading) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function reload(context, itemId) {
|
function reload(context, itemId) {
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
|
|
|
@ -147,11 +147,11 @@ define(['appRouter', 'cardBuilder', 'dom', 'globalize', 'connectionManager', 'ap
|
||||||
options.Limit = 20;
|
options.Limit = 20;
|
||||||
var userId = apiClient.getCurrentUserId();
|
var userId = apiClient.getCurrentUserId();
|
||||||
|
|
||||||
if ('MusicArtist' === section.types) {
|
if (section.types === 'MusicArtist') {
|
||||||
return apiClient.getArtists(userId, options);
|
return apiClient.getArtists(userId, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Person' === section.types) {
|
if (section.types === 'Person') {
|
||||||
return apiClient.getPeople(userId, options);
|
return apiClient.getPeople(userId, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ define(['appRouter', 'cardBuilder', 'dom', 'globalize', 'connectionManager', 'ap
|
||||||
preferThumb: section.preferThumb,
|
preferThumb: section.preferThumb,
|
||||||
shape: section.shape,
|
shape: section.shape,
|
||||||
centerText: section.centerText && !cardLayout,
|
centerText: section.centerText && !cardLayout,
|
||||||
overlayText: false !== section.overlayText,
|
overlayText: section.overlayText !== false,
|
||||||
showTitle: section.showTitle,
|
showTitle: section.showTitle,
|
||||||
showYear: section.showYear,
|
showYear: section.showYear,
|
||||||
showParentTitle: section.showParentTitle,
|
showParentTitle: section.showParentTitle,
|
||||||
|
|
|
@ -20,7 +20,7 @@ define(['tabbedView', 'globalize', 'require', 'emby-tabs', 'emby-button', 'emby-
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTabController(index) {
|
function getTabController(index) {
|
||||||
if (null == index) {
|
if (index == null) {
|
||||||
throw new Error('index cannot be null');
|
throw new Error('index cannot be null');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['userSettings', 'loading', 'connectionManager', 'apphost', 'layoutManager', 'focusManager', 'homeSections', 'emby-itemscontainer'], function (userSettings, loading, connectionManager, appHost, layoutManager, focusManager, homeSections) {
|
define(['userSettings', 'loading', 'connectionManager', 'apphost', 'layoutManager', 'focusManager', 'homeSections', 'emby-itemscontainer'], function (userSettings, loading, connectionManager, appHost, layoutManager, focusManager, homeSections) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function HomeTab(view, params) {
|
function HomeTab(view, params) {
|
||||||
this.view = view;
|
this.view = view;
|
||||||
this.params = params;
|
this.params = params;
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -14,6 +14,9 @@ import 'emby-scroller';
|
||||||
|
|
||||||
/* eslint-disable indent */
|
/* eslint-disable indent */
|
||||||
|
|
||||||
|
playbackManager = playbackManager.default || playbackManager;
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function getInitialLiveTvQuery(instance, params) {
|
function getInitialLiveTvQuery(instance, params) {
|
||||||
const query = {
|
const query = {
|
||||||
UserId: connectionManager.getApiClient(params.serverId).getCurrentUserId(),
|
UserId: connectionManager.getApiClient(params.serverId).getCurrentUserId(),
|
||||||
|
@ -22,7 +25,7 @@ import 'emby-scroller';
|
||||||
Limit: 300
|
Limit: 300
|
||||||
};
|
};
|
||||||
|
|
||||||
if ('Recordings' === params.type) {
|
if (params.type === 'Recordings') {
|
||||||
query.IsInProgress = false;
|
query.IsInProgress = false;
|
||||||
} else {
|
} else {
|
||||||
query.HasAired = false;
|
query.HasAired = false;
|
||||||
|
@ -32,39 +35,39 @@ import 'emby-scroller';
|
||||||
query.GenreIds = params.genreId;
|
query.GenreIds = params.genreId;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('true' === params.IsMovie) {
|
if (params.IsMovie === 'true') {
|
||||||
query.IsMovie = true;
|
query.IsMovie = true;
|
||||||
} else if ('false' === params.IsMovie) {
|
} else if (params.IsMovie === 'false') {
|
||||||
query.IsMovie = false;
|
query.IsMovie = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('true' === params.IsSeries) {
|
if (params.IsSeries === 'true') {
|
||||||
query.IsSeries = true;
|
query.IsSeries = true;
|
||||||
} else if ('false' === params.IsSeries) {
|
} else if (params.IsSeries === 'false') {
|
||||||
query.IsSeries = false;
|
query.IsSeries = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('true' === params.IsNews) {
|
if (params.IsNews === 'true') {
|
||||||
query.IsNews = true;
|
query.IsNews = true;
|
||||||
} else if ('false' === params.IsNews) {
|
} else if (params.IsNews === 'false') {
|
||||||
query.IsNews = false;
|
query.IsNews = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('true' === params.IsSports) {
|
if (params.IsSports === 'true') {
|
||||||
query.IsSports = true;
|
query.IsSports = true;
|
||||||
} else if ('false' === params.IsSports) {
|
} else if (params.IsSports === 'false') {
|
||||||
query.IsSports = false;
|
query.IsSports = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('true' === params.IsKids) {
|
if (params.IsKids === 'true') {
|
||||||
query.IsKids = true;
|
query.IsKids = true;
|
||||||
} else if ('false' === params.IsKids) {
|
} else if (params.IsKids === 'false') {
|
||||||
query.IsKids = false;
|
query.IsKids = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('true' === params.IsAiring) {
|
if (params.IsAiring === 'true') {
|
||||||
query.IsAiring = true;
|
query.IsAiring = true;
|
||||||
} else if ('false' === params.IsAiring) {
|
} else if (params.IsAiring === 'false') {
|
||||||
query.IsAiring = false;
|
query.IsAiring = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,13 +197,13 @@ import 'emby-scroller';
|
||||||
const btnSortIcon = instance.btnSortIcon;
|
const btnSortIcon = instance.btnSortIcon;
|
||||||
|
|
||||||
if (btnSortIcon) {
|
if (btnSortIcon) {
|
||||||
setSortButtonIcon(btnSortIcon, 'Descending' === values.sortOrder ? 'arrow_downward' : 'arrow_upward');
|
setSortButtonIcon(btnSortIcon, values.sortOrder === 'Descending' ? 'arrow_downward' : 'arrow_upward');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateItemsContainerForViewType(instance) {
|
function updateItemsContainerForViewType(instance) {
|
||||||
if ('list' === instance.getViewSettings().imageType) {
|
if (instance.getViewSettings().imageType === 'list') {
|
||||||
instance.itemsContainer.classList.remove('vertical-wrap');
|
instance.itemsContainer.classList.remove('vertical-wrap');
|
||||||
instance.itemsContainer.classList.add('vertical-list');
|
instance.itemsContainer.classList.add('vertical-list');
|
||||||
} else {
|
} else {
|
||||||
|
@ -216,11 +219,11 @@ import 'emby-scroller';
|
||||||
if (alphaPicker) {
|
if (alphaPicker) {
|
||||||
const values = instance.getSortValues();
|
const values = instance.getSortValues();
|
||||||
|
|
||||||
if (null == numItems) {
|
if (numItems == null) {
|
||||||
numItems = 100;
|
numItems = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('SortName' === values.sortBy && 'Ascending' === values.sortOrder && numItems > 40) {
|
if (values.sortBy === 'SortName' && values.sortOrder === 'Ascending' && numItems > 40) {
|
||||||
alphaPicker.classList.remove('hide');
|
alphaPicker.classList.remove('hide');
|
||||||
instance.itemsContainer.parentNode.classList.add('padded-right-withalphapicker');
|
instance.itemsContainer.parentNode.classList.add('padded-right-withalphapicker');
|
||||||
} else {
|
} else {
|
||||||
|
@ -235,19 +238,19 @@ import 'emby-scroller';
|
||||||
const apiClient = connectionManager.getApiClient(params.serverId);
|
const apiClient = connectionManager.getApiClient(params.serverId);
|
||||||
|
|
||||||
instance.queryRecursive = false;
|
instance.queryRecursive = false;
|
||||||
if ('Recordings' === params.type) {
|
if (params.type === 'Recordings') {
|
||||||
return apiClient.getLiveTvRecordings(getInitialLiveTvQuery(instance, params));
|
return apiClient.getLiveTvRecordings(getInitialLiveTvQuery(instance, params));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Programs' === params.type) {
|
if (params.type === 'Programs') {
|
||||||
if ('true' === params.IsAiring) {
|
if (params.IsAiring === 'true') {
|
||||||
return apiClient.getLiveTvRecommendedPrograms(getInitialLiveTvQuery(instance, params));
|
return apiClient.getLiveTvRecommendedPrograms(getInitialLiveTvQuery(instance, params));
|
||||||
}
|
}
|
||||||
|
|
||||||
return apiClient.getLiveTvPrograms(getInitialLiveTvQuery(instance, params));
|
return apiClient.getLiveTvPrograms(getInitialLiveTvQuery(instance, params));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('nextup' === params.type) {
|
if (params.type === 'nextup') {
|
||||||
return apiClient.getNextUpEpisodes(modifyQueryWithFilters(instance, {
|
return apiClient.getNextUpEpisodes(modifyQueryWithFilters(instance, {
|
||||||
Limit: limit,
|
Limit: limit,
|
||||||
Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo',
|
Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo',
|
||||||
|
@ -263,9 +266,9 @@ import 'emby-scroller';
|
||||||
instance.queryRecursive = true;
|
instance.queryRecursive = true;
|
||||||
let method = 'getItems';
|
let method = 'getItems';
|
||||||
|
|
||||||
if ('MusicArtist' === params.type) {
|
if (params.type === 'MusicArtist') {
|
||||||
method = 'getArtists';
|
method = 'getArtists';
|
||||||
} else if ('Person' === params.type) {
|
} else if (params.type === 'Person') {
|
||||||
method = 'getPeople';
|
method = 'getPeople';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -274,15 +277,15 @@ import 'emby-scroller';
|
||||||
Limit: limit,
|
Limit: limit,
|
||||||
Fields: 'PrimaryImageAspectRatio,SortName',
|
Fields: 'PrimaryImageAspectRatio,SortName',
|
||||||
ImageTypeLimit: 1,
|
ImageTypeLimit: 1,
|
||||||
IncludeItemTypes: 'MusicArtist' === params.type || 'Person' === params.type ? null : params.type,
|
IncludeItemTypes: params.type === 'MusicArtist' || params.type === 'Person' ? null : params.type,
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
IsFavorite: 'true' === params.IsFavorite || null,
|
IsFavorite: params.IsFavorite === 'true' || null,
|
||||||
ArtistIds: params.artistId || null,
|
ArtistIds: params.artistId || null,
|
||||||
SortBy: sortBy
|
SortBy: sortBy
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Genre' === item.Type || 'MusicGenre' === item.Type || 'Studio' === item.Type || 'Person' === item.Type) {
|
if (item.Type === 'Genre' || item.Type === 'MusicGenre' || item.Type === 'Studio' || item.Type === 'Person') {
|
||||||
instance.queryRecursive = true;
|
instance.queryRecursive = true;
|
||||||
const query = {
|
const query = {
|
||||||
StartIndex: startIndex,
|
StartIndex: startIndex,
|
||||||
|
@ -293,25 +296,25 @@ import 'emby-scroller';
|
||||||
SortBy: sortBy
|
SortBy: sortBy
|
||||||
};
|
};
|
||||||
|
|
||||||
if ('Studio' === item.Type) {
|
if (item.Type === 'Studio') {
|
||||||
query.StudioIds = item.Id;
|
query.StudioIds = item.Id;
|
||||||
} else if ('Genre' === item.Type || 'MusicGenre' === item.Type) {
|
} else if (item.Type === 'Genre' || item.Type === 'MusicGenre') {
|
||||||
query.GenreIds = item.Id;
|
query.GenreIds = item.Id;
|
||||||
} else if ('Person' === item.Type) {
|
} else if (item.Type === 'Person') {
|
||||||
query.PersonIds = item.Id;
|
query.PersonIds = item.Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('MusicGenre' === item.Type) {
|
if (item.Type === 'MusicGenre') {
|
||||||
query.IncludeItemTypes = 'MusicAlbum';
|
query.IncludeItemTypes = 'MusicAlbum';
|
||||||
} else if ('GameGenre' === item.Type) {
|
} else if (item.Type === 'GameGenre') {
|
||||||
query.IncludeItemTypes = 'Game';
|
query.IncludeItemTypes = 'Game';
|
||||||
} else if ('movies' === item.CollectionType) {
|
} else if (item.CollectionType === 'movies') {
|
||||||
query.IncludeItemTypes = 'Movie';
|
query.IncludeItemTypes = 'Movie';
|
||||||
} else if ('tvshows' === item.CollectionType) {
|
} else if (item.CollectionType === 'tvshows') {
|
||||||
query.IncludeItemTypes = 'Series';
|
query.IncludeItemTypes = 'Series';
|
||||||
} else if ('Genre' === item.Type) {
|
} else if (item.Type === 'Genre') {
|
||||||
query.IncludeItemTypes = 'Movie,Series,Video';
|
query.IncludeItemTypes = 'Movie,Series,Video';
|
||||||
} else if ('Person' === item.Type) {
|
} else if (item.Type === 'Person') {
|
||||||
query.IncludeItemTypes = params.type;
|
query.IncludeItemTypes = params.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,7 +332,7 @@ import 'emby-scroller';
|
||||||
}
|
}
|
||||||
|
|
||||||
function getItem(params) {
|
function getItem(params) {
|
||||||
if ('Recordings' === params.type || 'Programs' === params.type || 'nextup' === params.type) {
|
if (params.type === 'Recordings' || params.type === 'Programs' || params.type === 'nextup') {
|
||||||
return Promise.resolve(null);
|
return Promise.resolve(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,7 +429,7 @@ class ItemsView {
|
||||||
constructor(view, params) {
|
constructor(view, params) {
|
||||||
function fetchData() {
|
function fetchData() {
|
||||||
return getItems(self, params, self.currentItem).then(function (result) {
|
return getItems(self, params, self.currentItem).then(function (result) {
|
||||||
if (null == self.totalItemCount) {
|
if (self.totalItemCount == null) {
|
||||||
self.totalItemCount = result.Items ? result.Items.length : result.length;
|
self.totalItemCount = result.Items ? result.Items.length : result.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -438,7 +441,7 @@ class ItemsView {
|
||||||
function getItemsHtml(items) {
|
function getItemsHtml(items) {
|
||||||
const settings = self.getViewSettings();
|
const settings = self.getViewSettings();
|
||||||
|
|
||||||
if ('list' === settings.imageType) {
|
if (settings.imageType === 'list') {
|
||||||
return listView.getListViewHtml({
|
return listView.getListViewHtml({
|
||||||
items: items
|
items: items
|
||||||
});
|
});
|
||||||
|
@ -452,24 +455,24 @@ class ItemsView {
|
||||||
const item = self.currentItem;
|
const item = self.currentItem;
|
||||||
let lines = settings.showTitle ? 2 : 0;
|
let lines = settings.showTitle ? 2 : 0;
|
||||||
|
|
||||||
if ('banner' === settings.imageType) {
|
if (settings.imageType === 'banner') {
|
||||||
shape = 'banner';
|
shape = 'banner';
|
||||||
} else if ('disc' === settings.imageType) {
|
} else if (settings.imageType === 'disc') {
|
||||||
shape = 'square';
|
shape = 'square';
|
||||||
preferDisc = true;
|
preferDisc = true;
|
||||||
} else if ('logo' === settings.imageType) {
|
} else if (settings.imageType === 'logo') {
|
||||||
shape = 'backdrop';
|
shape = 'backdrop';
|
||||||
preferLogo = true;
|
preferLogo = true;
|
||||||
} else if ('thumb' === settings.imageType) {
|
} else if (settings.imageType === 'thumb') {
|
||||||
shape = 'backdrop';
|
shape = 'backdrop';
|
||||||
preferThumb = true;
|
preferThumb = true;
|
||||||
} else if ('nextup' === params.type) {
|
} else if (params.type === 'nextup') {
|
||||||
shape = 'backdrop';
|
shape = 'backdrop';
|
||||||
preferThumb = 'thumb' === settings.imageType;
|
preferThumb = settings.imageType === 'thumb';
|
||||||
} else if ('Programs' === params.type || 'Recordings' === params.type) {
|
} else if (params.type === 'Programs' || params.type === 'Recordings') {
|
||||||
shape = 'true' === params.IsMovie ? 'portrait' : 'autoVertical';
|
shape = params.IsMovie === 'true' ? 'portrait' : 'autoVertical';
|
||||||
preferThumb = 'true' !== params.IsMovie ? 'auto' : false;
|
preferThumb = params.IsMovie !== 'true' ? 'auto' : false;
|
||||||
defaultShape = 'true' === params.IsMovie ? 'portrait' : 'backdrop';
|
defaultShape = params.IsMovie === 'true' ? 'portrait' : 'backdrop';
|
||||||
} else {
|
} else {
|
||||||
shape = 'autoVertical';
|
shape = 'autoVertical';
|
||||||
}
|
}
|
||||||
|
@ -487,46 +490,46 @@ class ItemsView {
|
||||||
overlayMoreButton: true,
|
overlayMoreButton: true,
|
||||||
overlayText: !settings.showTitle,
|
overlayText: !settings.showTitle,
|
||||||
defaultShape: defaultShape,
|
defaultShape: defaultShape,
|
||||||
action: 'Audio' === params.type ? 'playallfromhere' : null
|
action: params.type === 'Audio' ? 'playallfromhere' : null
|
||||||
};
|
};
|
||||||
|
|
||||||
if ('nextup' === params.type) {
|
if (params.type === 'nextup') {
|
||||||
posterOptions.showParentTitle = settings.showTitle;
|
posterOptions.showParentTitle = settings.showTitle;
|
||||||
} else if ('Person' === params.type) {
|
} else if (params.type === 'Person') {
|
||||||
posterOptions.showYear = false;
|
posterOptions.showYear = false;
|
||||||
posterOptions.showParentTitle = false;
|
posterOptions.showParentTitle = false;
|
||||||
lines = 1;
|
lines = 1;
|
||||||
} else if ('Audio' === params.type) {
|
} else if (params.type === 'Audio') {
|
||||||
posterOptions.showParentTitle = settings.showTitle;
|
posterOptions.showParentTitle = settings.showTitle;
|
||||||
} else if ('MusicAlbum' === params.type) {
|
} else if (params.type === 'MusicAlbum') {
|
||||||
posterOptions.showParentTitle = settings.showTitle;
|
posterOptions.showParentTitle = settings.showTitle;
|
||||||
} else if ('Episode' === params.type) {
|
} else if (params.type === 'Episode') {
|
||||||
posterOptions.showParentTitle = settings.showTitle;
|
posterOptions.showParentTitle = settings.showTitle;
|
||||||
} else if ('MusicArtist' === params.type) {
|
} else if (params.type === 'MusicArtist') {
|
||||||
posterOptions.showYear = false;
|
posterOptions.showYear = false;
|
||||||
lines = 1;
|
lines = 1;
|
||||||
} else if ('Programs' === params.type) {
|
} else if (params.type === 'Programs') {
|
||||||
lines = settings.showTitle ? 1 : 0;
|
lines = settings.showTitle ? 1 : 0;
|
||||||
const showParentTitle = settings.showTitle && 'true' !== params.IsMovie;
|
const showParentTitle = settings.showTitle && params.IsMovie !== 'true';
|
||||||
|
|
||||||
if (showParentTitle) {
|
if (showParentTitle) {
|
||||||
lines++;
|
lines++;
|
||||||
}
|
}
|
||||||
|
|
||||||
const showAirTime = settings.showTitle && 'Recordings' !== params.type;
|
const showAirTime = settings.showTitle && params.type !== 'Recordings';
|
||||||
|
|
||||||
if (showAirTime) {
|
if (showAirTime) {
|
||||||
lines++;
|
lines++;
|
||||||
}
|
}
|
||||||
|
|
||||||
const showYear = settings.showTitle && 'true' === params.IsMovie && 'Recordings' === params.type;
|
const showYear = settings.showTitle && params.IsMovie === 'true' && params.type === 'Recordings';
|
||||||
|
|
||||||
if (showYear) {
|
if (showYear) {
|
||||||
lines++;
|
lines++;
|
||||||
}
|
}
|
||||||
|
|
||||||
posterOptions = Object.assign(posterOptions, {
|
posterOptions = Object.assign(posterOptions, {
|
||||||
inheritThumb: 'Recordings' === params.type,
|
inheritThumb: params.type === 'Recordings',
|
||||||
context: 'livetv',
|
context: 'livetv',
|
||||||
showParentTitle: showParentTitle,
|
showParentTitle: showParentTitle,
|
||||||
showAirTime: showAirTime,
|
showAirTime: showAirTime,
|
||||||
|
@ -543,7 +546,7 @@ class ItemsView {
|
||||||
posterOptions.lines = lines;
|
posterOptions.lines = lines;
|
||||||
posterOptions.items = items;
|
posterOptions.items = items;
|
||||||
|
|
||||||
if (item && 'folders' === item.CollectionType) {
|
if (item && item.CollectionType === 'folders') {
|
||||||
posterOptions.context = 'folders';
|
posterOptions.context = 'folders';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -575,7 +578,7 @@ class ItemsView {
|
||||||
function setTitle(item) {
|
function setTitle(item) {
|
||||||
Emby.Page.setTitle(getTitle(item) || '');
|
Emby.Page.setTitle(getTitle(item) || '');
|
||||||
|
|
||||||
if (item && 'playlists' === item.CollectionType) {
|
if (item && item.CollectionType === 'playlists') {
|
||||||
hideOrShowAll(view.querySelectorAll('.btnNewItem'), false);
|
hideOrShowAll(view.querySelectorAll('.btnNewItem'), false);
|
||||||
} else {
|
} else {
|
||||||
hideOrShowAll(view.querySelectorAll('.btnNewItem'), true);
|
hideOrShowAll(view.querySelectorAll('.btnNewItem'), true);
|
||||||
|
@ -583,43 +586,43 @@ class ItemsView {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTitle(item) {
|
function getTitle(item) {
|
||||||
if ('Recordings' === params.type) {
|
if (params.type === 'Recordings') {
|
||||||
return globalize.translate('Recordings');
|
return globalize.translate('Recordings');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Programs' === params.type) {
|
if (params.type === 'Programs') {
|
||||||
if ('true' === params.IsMovie) {
|
if (params.IsMovie === 'true') {
|
||||||
return globalize.translate('Movies');
|
return globalize.translate('Movies');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('true' === params.IsSports) {
|
if (params.IsSports === 'true') {
|
||||||
return globalize.translate('Sports');
|
return globalize.translate('Sports');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('true' === params.IsKids) {
|
if (params.IsKids === 'true') {
|
||||||
return globalize.translate('HeaderForKids');
|
return globalize.translate('HeaderForKids');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('true' === params.IsAiring) {
|
if (params.IsAiring === 'true') {
|
||||||
return globalize.translate('HeaderOnNow');
|
return globalize.translate('HeaderOnNow');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('true' === params.IsSeries) {
|
if (params.IsSeries === 'true') {
|
||||||
return globalize.translate('Shows');
|
return globalize.translate('Shows');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('true' === params.IsNews) {
|
if (params.IsNews === 'true') {
|
||||||
return globalize.translate('News');
|
return globalize.translate('News');
|
||||||
}
|
}
|
||||||
|
|
||||||
return globalize.translate('Programs');
|
return globalize.translate('Programs');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('nextup' === params.type) {
|
if (params.type === 'nextup') {
|
||||||
return globalize.translate('NextUp');
|
return globalize.translate('NextUp');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('favoritemovies' === params.type) {
|
if (params.type === 'favoritemovies') {
|
||||||
return globalize.translate('FavoriteMovies');
|
return globalize.translate('FavoriteMovies');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -627,35 +630,35 @@ class ItemsView {
|
||||||
return item.Name;
|
return item.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Movie' === params.type) {
|
if (params.type === 'Movie') {
|
||||||
return globalize.translate('Movies');
|
return globalize.translate('Movies');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Series' === params.type) {
|
if (params.type === 'Series') {
|
||||||
return globalize.translate('Shows');
|
return globalize.translate('Shows');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Season' === params.type) {
|
if (params.type === 'Season') {
|
||||||
return globalize.translate('Seasons');
|
return globalize.translate('Seasons');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Episode' === params.type) {
|
if (params.type === 'Episode') {
|
||||||
return globalize.translate('Episodes');
|
return globalize.translate('Episodes');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('MusicArtist' === params.type) {
|
if (params.type === 'MusicArtist') {
|
||||||
return globalize.translate('Artists');
|
return globalize.translate('Artists');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('MusicAlbum' === params.type) {
|
if (params.type === 'MusicAlbum') {
|
||||||
return globalize.translate('Albums');
|
return globalize.translate('Albums');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Audio' === params.type) {
|
if (params.type === 'Audio') {
|
||||||
return globalize.translate('Songs');
|
return globalize.translate('Songs');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Video' === params.type) {
|
if (params.type === 'Video') {
|
||||||
return globalize.translate('Videos');
|
return globalize.translate('Videos');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -714,11 +717,11 @@ class ItemsView {
|
||||||
|
|
||||||
if (params.parentId) {
|
if (params.parentId) {
|
||||||
this.itemsContainer.setAttribute('data-parentid', params.parentId);
|
this.itemsContainer.setAttribute('data-parentid', params.parentId);
|
||||||
} else if ('nextup' === params.type) {
|
} else if (params.type === 'nextup') {
|
||||||
this.itemsContainer.setAttribute('data-monitor', 'videoplayback');
|
this.itemsContainer.setAttribute('data-monitor', 'videoplayback');
|
||||||
} else if ('favoritemovies' === params.type) {
|
} else if (params.type === 'favoritemovies') {
|
||||||
this.itemsContainer.setAttribute('data-monitor', 'markfavorite');
|
this.itemsContainer.setAttribute('data-monitor', 'markfavorite');
|
||||||
} else if ('Programs' === params.type) {
|
} else if (params.type === 'Programs') {
|
||||||
this.itemsContainer.setAttribute('data-refreshinterval', '300000');
|
this.itemsContainer.setAttribute('data-refreshinterval', '300000');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -751,7 +754,7 @@ class ItemsView {
|
||||||
const sortButton = sortButtons[i];
|
const sortButton = sortButtons[i];
|
||||||
sortButton.addEventListener('click', showSortMenu.bind(this));
|
sortButton.addEventListener('click', showSortMenu.bind(this));
|
||||||
|
|
||||||
if ('nextup' !== params.type) {
|
if (params.type !== 'nextup') {
|
||||||
sortButton.classList.remove('hide');
|
sortButton.classList.remove('hide');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -786,19 +789,19 @@ class ItemsView {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!isRestored && item && 'PhotoAlbum' !== item.Type) {
|
if (!isRestored && item && item.Type !== 'PhotoAlbum') {
|
||||||
initAlphaPicker();
|
initAlphaPicker();
|
||||||
}
|
}
|
||||||
|
|
||||||
const itemType = item ? item.Type : null;
|
const itemType = item ? item.Type : null;
|
||||||
|
|
||||||
if ('MusicGenre' === itemType || 'Programs' !== params.type && 'Channel' !== itemType) {
|
if (itemType === 'MusicGenre' || params.type !== 'Programs' && itemType !== 'Channel') {
|
||||||
hideOrShowAll(view.querySelectorAll('.btnPlay'), false);
|
hideOrShowAll(view.querySelectorAll('.btnPlay'), false);
|
||||||
} else {
|
} else {
|
||||||
hideOrShowAll(view.querySelectorAll('.btnPlay'), true);
|
hideOrShowAll(view.querySelectorAll('.btnPlay'), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('MusicGenre' === itemType || 'Programs' !== params.type && 'nextup' !== params.type && 'Channel' !== itemType) {
|
if (itemType === 'MusicGenre' || params.type !== 'Programs' && params.type !== 'nextup' && itemType !== 'Channel') {
|
||||||
hideOrShowAll(view.querySelectorAll('.btnShuffle'), false);
|
hideOrShowAll(view.querySelectorAll('.btnShuffle'), false);
|
||||||
} else {
|
} else {
|
||||||
hideOrShowAll(view.querySelectorAll('.btnShuffle'), true);
|
hideOrShowAll(view.querySelectorAll('.btnShuffle'), true);
|
||||||
|
@ -858,14 +861,14 @@ class ItemsView {
|
||||||
getFilters() {
|
getFilters() {
|
||||||
const basekey = this.getSettingsKey();
|
const basekey = this.getSettingsKey();
|
||||||
return {
|
return {
|
||||||
IsPlayed: 'true' === userSettings.getFilter(basekey + '-filter-IsPlayed'),
|
IsPlayed: userSettings.getFilter(basekey + '-filter-IsPlayed') === 'true',
|
||||||
IsUnplayed: 'true' === userSettings.getFilter(basekey + '-filter-IsUnplayed'),
|
IsUnplayed: userSettings.getFilter(basekey + '-filter-IsUnplayed') === 'true',
|
||||||
IsFavorite: 'true' === userSettings.getFilter(basekey + '-filter-IsFavorite'),
|
IsFavorite: userSettings.getFilter(basekey + '-filter-IsFavorite') === 'true',
|
||||||
IsResumable: 'true' === userSettings.getFilter(basekey + '-filter-IsResumable'),
|
IsResumable: userSettings.getFilter(basekey + '-filter-IsResumable') === 'true',
|
||||||
Is4K: 'true' === userSettings.getFilter(basekey + '-filter-Is4K'),
|
Is4K: userSettings.getFilter(basekey + '-filter-Is4K') === 'true',
|
||||||
IsHD: 'true' === userSettings.getFilter(basekey + '-filter-IsHD'),
|
IsHD: userSettings.getFilter(basekey + '-filter-IsHD') === 'true',
|
||||||
IsSD: 'true' === userSettings.getFilter(basekey + '-filter-IsSD'),
|
IsSD: userSettings.getFilter(basekey + '-filter-IsSD') === 'true',
|
||||||
Is3D: 'true' === userSettings.getFilter(basekey + '-filter-Is3D'),
|
Is3D: userSettings.getFilter(basekey + '-filter-Is3D') === 'true',
|
||||||
VideoTypes: userSettings.getFilter(basekey + '-filter-VideoTypes'),
|
VideoTypes: userSettings.getFilter(basekey + '-filter-VideoTypes'),
|
||||||
SeriesStatus: userSettings.getFilter(basekey + '-filter-SeriesStatus'),
|
SeriesStatus: userSettings.getFilter(basekey + '-filter-SeriesStatus'),
|
||||||
HasSubtitles: userSettings.getFilter(basekey + '-filter-HasSubtitles'),
|
HasSubtitles: userSettings.getFilter(basekey + '-filter-HasSubtitles'),
|
||||||
|
@ -880,7 +883,7 @@ class ItemsView {
|
||||||
const basekey = this.getSettingsKey();
|
const basekey = this.getSettingsKey();
|
||||||
return {
|
return {
|
||||||
sortBy: userSettings.getFilter(basekey + '-sortby') || this.getDefaultSortBy(),
|
sortBy: userSettings.getFilter(basekey + '-sortby') || this.getDefaultSortBy(),
|
||||||
sortOrder: 'Descending' === userSettings.getFilter(basekey + '-sortorder') ? 'Descending' : 'Ascending'
|
sortOrder: userSettings.getFilter(basekey + '-sortorder') === 'Descending' ? 'Descending' : 'Ascending'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
getDefaultSortBy() {
|
getDefaultSortBy() {
|
||||||
|
@ -897,7 +900,7 @@ class ItemsView {
|
||||||
const sortBy = [];
|
const sortBy = [];
|
||||||
const params = this.params;
|
const params = this.params;
|
||||||
|
|
||||||
if ('Programs' === params.type) {
|
if (params.type === 'Programs') {
|
||||||
sortBy.push({
|
sortBy.push({
|
||||||
name: globalize.translate('AirDate'),
|
name: globalize.translate('AirDate'),
|
||||||
value: 'StartDate,SortName'
|
value: 'StartDate,SortName'
|
||||||
|
@ -922,7 +925,7 @@ class ItemsView {
|
||||||
sortBy.push(option);
|
sortBy.push(option);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Programs' !== params.type) {
|
if (params.type !== 'Programs') {
|
||||||
sortBy.push({
|
sortBy.push({
|
||||||
name: globalize.translate('DateAdded'),
|
name: globalize.translate('DateAdded'),
|
||||||
value: 'DateCreated,SortName'
|
value: 'DateCreated,SortName'
|
||||||
|
@ -964,7 +967,7 @@ class ItemsView {
|
||||||
return sortBy;
|
return sortBy;
|
||||||
}
|
}
|
||||||
getNameSortOption(params) {
|
getNameSortOption(params) {
|
||||||
if ('Episode' === params.type) {
|
if (params.type === 'Episode') {
|
||||||
return {
|
return {
|
||||||
name: globalize.translate('Name'),
|
name: globalize.translate('Name'),
|
||||||
value: 'SeriesName,SortName'
|
value: 'SeriesName,SortName'
|
||||||
|
@ -977,7 +980,7 @@ class ItemsView {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
getPlayCountSortOption() {
|
getPlayCountSortOption() {
|
||||||
if ('Programs' === this.params.type) {
|
if (this.params.type === 'Programs') {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -985,9 +988,10 @@ class ItemsView {
|
||||||
name: globalize.translate('PlayCount'),
|
name: globalize.translate('PlayCount'),
|
||||||
value: 'PlayCount,SortName'
|
value: 'PlayCount,SortName'
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
getDatePlayedSortOption() {
|
getDatePlayedSortOption() {
|
||||||
if ('Programs' === this.params.type) {
|
if (this.params.type === 'Programs') {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -997,7 +1001,11 @@ class ItemsView {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
getCriticRatingSortOption() {
|
getCriticRatingSortOption() {
|
||||||
if ('Programs' === this.params.type) {
|
if (this.params.type === 'Programs') {
|
||||||
|
};
|
||||||
|
|
||||||
|
ItemsView.prototype.getCriticRatingSortOption = function () {
|
||||||
|
if () {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1016,8 +1024,8 @@ class ItemsView {
|
||||||
const filters = [];
|
const filters = [];
|
||||||
const params = this.params;
|
const params = this.params;
|
||||||
|
|
||||||
if (!('nextup' === params.type)) {
|
if (!(params.type === 'nextup')) {
|
||||||
if ('Programs' === params.type) {
|
if (params.type === 'Programs') {
|
||||||
filters.push('Genres');
|
filters.push('Genres');
|
||||||
} else {
|
} else {
|
||||||
filters.push('IsUnplayed');
|
filters.push('IsUnplayed');
|
||||||
|
@ -1082,7 +1090,7 @@ class ItemsView {
|
||||||
const item = (this.params, this.currentItem);
|
const item = (this.params, this.currentItem);
|
||||||
const fields = ['showTitle'];
|
const fields = ['showTitle'];
|
||||||
|
|
||||||
if (!item || 'PhotoAlbum' !== item.Type && 'ChannelFolderItem' !== item.Type) {
|
if (!item || item.Type !== 'PhotoAlbum' && item.Type !== 'ChannelFolderItem') {
|
||||||
fields.push('imageType');
|
fields.push('imageType');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1095,25 +1103,25 @@ class ItemsView {
|
||||||
const item = this.currentItem;
|
const item = this.currentItem;
|
||||||
let showTitle = userSettings.get(basekey + '-showTitle');
|
let showTitle = userSettings.get(basekey + '-showTitle');
|
||||||
|
|
||||||
if ('true' === showTitle) {
|
if (showTitle === 'true') {
|
||||||
showTitle = true;
|
showTitle = true;
|
||||||
} else if ('false' === showTitle) {
|
} else if (showTitle === 'false') {
|
||||||
showTitle = false;
|
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 (params.type === 'Programs' || params.type === 'Recordings' || params.type === 'Person' || params.type === 'nextup' || params.type === 'Audio' || params.type === 'MusicAlbum' || params.type === 'MusicArtist') {
|
||||||
showTitle = true;
|
showTitle = true;
|
||||||
} else if (item && 'PhotoAlbum' !== item.Type) {
|
} else if (item && item.Type !== 'PhotoAlbum') {
|
||||||
showTitle = true;
|
showTitle = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
let imageType = userSettings.get(basekey + '-imageType');
|
let imageType = userSettings.get(basekey + '-imageType');
|
||||||
|
|
||||||
if (!imageType && 'nextup' === params.type) {
|
if (!imageType && params.type === 'nextup') {
|
||||||
imageType = 'thumb';
|
imageType = 'thumb';
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
showTitle: showTitle,
|
showTitle: showTitle,
|
||||||
showYear: 'false' !== userSettings.get(basekey + '-showYear'),
|
showYear: userSettings.get(basekey + '-showYear') !== 'false',
|
||||||
imageType: imageType || 'primary',
|
imageType: imageType || 'primary',
|
||||||
viewType: userSettings.get(basekey + '-viewType') || 'images'
|
viewType: userSettings.get(basekey + '-viewType') || 'images'
|
||||||
};
|
};
|
||||||
|
@ -1121,11 +1129,11 @@ class ItemsView {
|
||||||
getItemTypes() {
|
getItemTypes() {
|
||||||
const params = this.params;
|
const params = this.params;
|
||||||
|
|
||||||
if ('nextup' === params.type) {
|
if (params.type === 'nextup') {
|
||||||
return ['Episode'];
|
return ['Episode'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Programs' === params.type) {
|
if (params.type === 'Programs') {
|
||||||
return ['Program'];
|
return ['Program'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'userSettings', 'emby-itemscontainer'], function (cardBuilder, imageLoader, libraryBrowser, loading, events, userSettings) {
|
define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'userSettings', 'emby-itemscontainer'], function (cardBuilder, imageLoader, libraryBrowser, loading, events, userSettings) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
libraryBrowser = libraryBrowser.default || libraryBrowser;
|
||||||
|
|
||||||
return function (view, params, tabContent) {
|
return function (view, params, tabContent) {
|
||||||
function getPageData() {
|
function getPageData() {
|
||||||
if (!pageData) {
|
if (!pageData) {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['layoutManager', 'loading', 'cardBuilder', 'apphost', 'imageLoader', 'scripts/livetvcomponents', 'listViewStyle', 'emby-itemscontainer'], function (layoutManager, loading, cardBuilder, appHost, imageLoader) {
|
define(['layoutManager', 'loading', 'cardBuilder', 'apphost', 'imageLoader', 'scripts/livetvcomponents', 'listViewStyle', 'emby-itemscontainer'], function (layoutManager, loading, cardBuilder, appHost, imageLoader) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function renderRecordings(elem, recordings, cardOptions, scrollX) {
|
function renderRecordings(elem, recordings, cardOptions, scrollX) {
|
||||||
if (!elem) {
|
if (!elem) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['layoutManager', 'cardBuilder', 'apphost', 'imageLoader', 'loading', 'scripts/livetvcomponents', 'emby-button', 'emby-itemscontainer'], function (layoutManager, cardBuilder, appHost, imageLoader, loading) {
|
define(['layoutManager', 'cardBuilder', 'apphost', 'imageLoader', 'loading', 'scripts/livetvcomponents', 'emby-button', 'emby-itemscontainer'], function (layoutManager, cardBuilder, appHost, imageLoader, loading) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function enableScrollX() {
|
function enableScrollX() {
|
||||||
return !layoutManager.desktop;
|
return !layoutManager.desktop;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['datetime', 'cardBuilder', 'imageLoader', 'apphost', 'loading', 'paper-icon-button-light', 'emby-button'], function (datetime, cardBuilder, imageLoader, appHost, loading) {
|
define(['datetime', 'cardBuilder', 'imageLoader', 'apphost', 'loading', 'paper-icon-button-light', 'emby-button'], function (datetime, cardBuilder, imageLoader, appHost, loading) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function renderTimers(context, timers) {
|
function renderTimers(context, timers) {
|
||||||
var html = '';
|
var html = '';
|
||||||
html += cardBuilder.getCardsHtml({
|
html += cardBuilder.getCardsHtml({
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
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) {
|
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';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function enableScrollX() {
|
function enableScrollX() {
|
||||||
return !layoutManager.desktop;
|
return !layoutManager.desktop;
|
||||||
}
|
}
|
||||||
|
@ -142,9 +144,9 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize',
|
||||||
coverImage: true,
|
coverImage: true,
|
||||||
overlayText: false,
|
overlayText: false,
|
||||||
lazy: true,
|
lazy: true,
|
||||||
overlayPlayButton: 'play' === overlayButton,
|
overlayPlayButton: overlayButton === 'play',
|
||||||
overlayMoreButton: 'more' === overlayButton,
|
overlayMoreButton: overlayButton === 'more',
|
||||||
overlayInfoButton: 'info' === overlayButton,
|
overlayInfoButton: overlayButton === 'info',
|
||||||
allowBottomPadding: !enableScrollX(),
|
allowBottomPadding: !enableScrollX(),
|
||||||
showAirTime: true,
|
showAirTime: true,
|
||||||
showAirDateTime: true
|
showAirDateTime: true
|
||||||
|
@ -261,7 +263,7 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize',
|
||||||
require(depends, function (controllerFactory) {
|
require(depends, function (controllerFactory) {
|
||||||
var tabContent;
|
var tabContent;
|
||||||
|
|
||||||
if (0 == index) {
|
if (index == 0) {
|
||||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||||
self.tabContent = tabContent;
|
self.tabContent = tabContent;
|
||||||
}
|
}
|
||||||
|
@ -271,9 +273,9 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize',
|
||||||
if (!controller) {
|
if (!controller) {
|
||||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||||
|
|
||||||
if (0 === index) {
|
if (index === 0) {
|
||||||
controller = self;
|
controller = self;
|
||||||
} else if (6 === index) {
|
} else if (index === 6) {
|
||||||
controller = new controllerFactory(view, tabContent, {
|
controller = new controllerFactory(view, tabContent, {
|
||||||
collectionType: 'livetv'
|
collectionType: 'livetv'
|
||||||
});
|
});
|
||||||
|
@ -305,8 +307,8 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize',
|
||||||
getTabController(page, index, function (controller) {
|
getTabController(page, index, function (controller) {
|
||||||
initialTabIndex = null;
|
initialTabIndex = null;
|
||||||
|
|
||||||
if (-1 == renderedTabs.indexOf(index)) {
|
if (renderedTabs.indexOf(index) == -1) {
|
||||||
if (1 === index) {
|
if (index === 1) {
|
||||||
renderedTabs.push(index);
|
renderedTabs.push(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define(['events', 'loading', 'globalize'], function (events, loading, globalize) {
|
define(['events', 'loading', 'globalize'], function (events, loading, globalize) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
|
||||||
function onListingsSubmitted() {
|
function onListingsSubmitted() {
|
||||||
Dashboard.navigate('livetvstatus.html');
|
Dashboard.navigate('livetvstatus.html');
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading, globalize) {
|
import $ from 'jQuery';
|
||||||
'use strict';
|
import loading from 'loading';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import 'emby-button';
|
||||||
|
|
||||||
function loadPage(page, config) {
|
function loadPage(page, config) {
|
||||||
$('.liveTvSettingsForm', page).show();
|
$('.liveTvSettingsForm', page).show();
|
||||||
$('.noLiveTvServices', page).hide();
|
$('.noLiveTvServices', page).hide();
|
||||||
$('#selectGuideDays', page).val(config.GuideDays || '');
|
$('#selectGuideDays', page).val(config.GuideDays || '');
|
||||||
|
@ -13,17 +15,17 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading,
|
||||||
page.querySelector('#txtPostProcessor').value = config.RecordingPostProcessor || '';
|
page.querySelector('#txtPostProcessor').value = config.RecordingPostProcessor || '';
|
||||||
page.querySelector('#txtPostProcessorArguments').value = config.RecordingPostProcessorArguments || '';
|
page.querySelector('#txtPostProcessorArguments').value = config.RecordingPostProcessorArguments || '';
|
||||||
loading.hide();
|
loading.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onSubmit() {
|
function onSubmit() {
|
||||||
loading.show();
|
loading.show();
|
||||||
var form = this;
|
const form = this;
|
||||||
ApiClient.getNamedConfiguration('livetv').then(function (config) {
|
ApiClient.getNamedConfiguration('livetv').then(function (config) {
|
||||||
config.GuideDays = $('#selectGuideDays', form).val() || null;
|
config.GuideDays = $('#selectGuideDays', form).val() || null;
|
||||||
var recordingPath = form.querySelector('#txtRecordingPath').value || null;
|
const recordingPath = form.querySelector('#txtRecordingPath').value || null;
|
||||||
var movieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null;
|
const movieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null;
|
||||||
var seriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null;
|
const seriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null;
|
||||||
var recordingPathChanged = recordingPath != config.RecordingPath || movieRecordingPath != config.MovieRecordingPath || seriesRecordingPath != config.SeriesRecordingPath;
|
const recordingPathChanged = recordingPath != config.RecordingPath || movieRecordingPath != config.MovieRecordingPath || seriesRecordingPath != config.SeriesRecordingPath;
|
||||||
config.RecordingPath = recordingPath;
|
config.RecordingPath = recordingPath;
|
||||||
config.MovieRecordingPath = movieRecordingPath;
|
config.MovieRecordingPath = movieRecordingPath;
|
||||||
config.SeriesRecordingPath = seriesRecordingPath;
|
config.SeriesRecordingPath = seriesRecordingPath;
|
||||||
|
@ -38,28 +40,29 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showSaveMessage(recordingPathChanged) {
|
function showSaveMessage(recordingPathChanged) {
|
||||||
var msg = '';
|
let msg = '';
|
||||||
|
|
||||||
if (recordingPathChanged) {
|
if (recordingPathChanged) {
|
||||||
msg += globalize.translate('RecordingPathChangeMessage');
|
msg += globalize.translate('MessageChangeRecordingPath');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (msg) {
|
if (msg) {
|
||||||
require(['alert'], function (alert) {
|
import('alert').then(({default: alert}) => {
|
||||||
alert(msg);
|
alert(msg);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default function () {
|
||||||
$(document).on('pageinit', '#liveTvSettingsPage', function () {
|
$(document).on('pageinit', '#liveTvSettingsPage', function () {
|
||||||
var page = this;
|
const page = this;
|
||||||
$('.liveTvSettingsForm').off('submit', onSubmit).on('submit', onSubmit);
|
$('.liveTvSettingsForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||||
$('#btnSelectRecordingPath', page).on('click.selectDirectory', function () {
|
$('#btnSelectRecordingPath', page).on('click.selectDirectory', function () {
|
||||||
require(['directorybrowser'], function (directoryBrowser) {
|
import('directorybrowser').then(({default: directoryBrowser}) => {
|
||||||
var picker = new directoryBrowser.default();
|
const picker = new directoryBrowser();
|
||||||
picker.show({
|
picker.show({
|
||||||
callback: function (path) {
|
callback: function (path) {
|
||||||
if (path) {
|
if (path) {
|
||||||
|
@ -73,8 +76,8 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
$('#btnSelectMovieRecordingPath', page).on('click.selectDirectory', function () {
|
$('#btnSelectMovieRecordingPath', page).on('click.selectDirectory', function () {
|
||||||
require(['directorybrowser'], function (directoryBrowser) {
|
import('directorybrowser').then(({default: directoryBrowser}) => {
|
||||||
var picker = new directoryBrowser.default();
|
const picker = new directoryBrowser();
|
||||||
picker.show({
|
picker.show({
|
||||||
callback: function (path) {
|
callback: function (path) {
|
||||||
if (path) {
|
if (path) {
|
||||||
|
@ -88,8 +91,8 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
$('#btnSelectSeriesRecordingPath', page).on('click.selectDirectory', function () {
|
$('#btnSelectSeriesRecordingPath', page).on('click.selectDirectory', function () {
|
||||||
require(['directorybrowser'], function (directoryBrowser) {
|
import('directorybrowser').then(({default: directoryBrowser}) => {
|
||||||
var picker = new directoryBrowser.default();
|
const picker = new directoryBrowser();
|
||||||
picker.show({
|
picker.show({
|
||||||
callback: function (path) {
|
callback: function (path) {
|
||||||
if (path) {
|
if (path) {
|
||||||
|
@ -103,8 +106,8 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
$('#btnSelectPostProcessorPath', page).on('click.selectDirectory', function () {
|
$('#btnSelectPostProcessorPath', page).on('click.selectDirectory', function () {
|
||||||
require(['directorybrowser'], function (directoryBrowser) {
|
import('directorybrowser').then(({default: directoryBrowser}) => {
|
||||||
var picker = new directoryBrowser.default();
|
const picker = new directoryBrowser();
|
||||||
picker.show({
|
picker.show({
|
||||||
includeFiles: true,
|
includeFiles: true,
|
||||||
callback: function (path) {
|
callback: function (path) {
|
||||||
|
@ -119,9 +122,9 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading,
|
||||||
});
|
});
|
||||||
}).on('pageshow', '#liveTvSettingsPage', function () {
|
}).on('pageshow', '#liveTvSettingsPage', function () {
|
||||||
loading.show();
|
loading.show();
|
||||||
var page = this;
|
const page = this;
|
||||||
ApiClient.getNamedConfiguration('livetv').then(function (config) {
|
ApiClient.getNamedConfiguration('livetv').then(function (config) {
|
||||||
loadPage(page, config);
|
loadPage(page, config);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
|
|
|
@ -1,13 +1,24 @@
|
||||||
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) {
|
import $ from 'jQuery';
|
||||||
'use strict';
|
import globalize from 'globalize';
|
||||||
|
import taskButton from 'scripts/taskbutton';
|
||||||
|
import dom from 'dom';
|
||||||
|
import layoutManager from 'layoutManager';
|
||||||
|
import loading from 'loading';
|
||||||
|
import browser from 'browser';
|
||||||
|
import 'listViewStyle';
|
||||||
|
import 'flexStyles';
|
||||||
|
import 'emby-itemscontainer';
|
||||||
|
import 'cardStyle';
|
||||||
|
import 'material-icons';
|
||||||
|
import 'emby-button';
|
||||||
|
|
||||||
var enableFocusTransform = !browser.slow && !browser.edge;
|
const enableFocusTransform = !browser.slow && !browser.edge;
|
||||||
|
|
||||||
function getDeviceHtml(device) {
|
function getDeviceHtml(device) {
|
||||||
var padderClass;
|
let padderClass;
|
||||||
var html = '';
|
let html = '';
|
||||||
var cssClass = 'card scalableCard';
|
let cssClass = 'card scalableCard';
|
||||||
var cardBoxCssClass = 'cardBox visualCardBox';
|
let cardBoxCssClass = 'cardBox visualCardBox';
|
||||||
cssClass += ' backdropCard backdropCard-scalable';
|
cssClass += ' backdropCard backdropCard-scalable';
|
||||||
padderClass = 'cardPadder-backdrop';
|
padderClass = 'cardPadder-backdrop';
|
||||||
|
|
||||||
|
@ -38,18 +49,17 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
return html += '</div>';
|
return html += '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderDevices(page, devices) {
|
function renderDevices(page, devices) {
|
||||||
var html = devices.map(getDeviceHtml).join('');
|
page.querySelector('.devicesList').innerHTML = devices.map(getDeviceHtml).join('');
|
||||||
page.querySelector('.devicesList').innerHTML = html;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
function deleteDevice(page, id) {
|
function deleteDevice(page, id) {
|
||||||
var message = globalize.translate('MessageConfirmDeleteTunerDevice');
|
const message = globalize.translate('MessageConfirmDeleteTunerDevice');
|
||||||
|
|
||||||
require(['confirm'], function (confirm) {
|
import('confirm').then(({default: confirm}) => {
|
||||||
confirm.default(message, globalize.translate('HeaderDeleteDevice')).then(function () {
|
confirm(message, globalize.translate('HeaderDeleteDevice')).then(function () {
|
||||||
loading.show();
|
loading.show();
|
||||||
ApiClient.ajax({
|
ApiClient.ajax({
|
||||||
type: 'DELETE',
|
type: 'DELETE',
|
||||||
|
@ -61,18 +71,18 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function reload(page) {
|
function reload(page) {
|
||||||
loading.show();
|
loading.show();
|
||||||
ApiClient.getNamedConfiguration('livetv').then(function (config) {
|
ApiClient.getNamedConfiguration('livetv').then(function (config) {
|
||||||
renderDevices(page, config.TunerHosts);
|
renderDevices(page, config.TunerHosts);
|
||||||
renderProviders(page, config.ListingProviders);
|
renderProviders(page, config.ListingProviders);
|
||||||
});
|
});
|
||||||
loading.hide();
|
loading.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
function submitAddDeviceForm(page) {
|
function submitAddDeviceForm(page) {
|
||||||
page.querySelector('.dlgAddDevice').close();
|
page.querySelector('.dlgAddDevice').close();
|
||||||
loading.show();
|
loading.show();
|
||||||
ApiClient.ajax({
|
ApiClient.ajax({
|
||||||
|
@ -90,16 +100,16 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
message: globalize.translate('ErrorAddingTunerDevice')
|
message: globalize.translate('ErrorAddingTunerDevice')
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderProviders(page, providers) {
|
function renderProviders(page, providers) {
|
||||||
var html = '';
|
let html = '';
|
||||||
|
|
||||||
if (providers.length) {
|
if (providers.length) {
|
||||||
html += '<div class="paperList">';
|
html += '<div class="paperList">';
|
||||||
|
|
||||||
for (var i = 0, length = providers.length; i < length; i++) {
|
for (let i = 0, length = providers.length; i < length; i++) {
|
||||||
var provider = providers[i];
|
const provider = providers[i];
|
||||||
html += '<div class="listItem">';
|
html += '<div class="listItem">';
|
||||||
html += '<span class="listItemIcon material-icons dvr"></span>';
|
html += '<span class="listItemIcon material-icons dvr"></span>';
|
||||||
html += '<div class="listItemBody two-line">';
|
html += '<div class="listItemBody two-line">';
|
||||||
|
@ -119,15 +129,15 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
var elem = $('.providerList', page).html(html);
|
const elem = $('.providerList', page).html(html);
|
||||||
$('.btnOptions', elem).on('click', function () {
|
$('.btnOptions', elem).on('click', function () {
|
||||||
var id = this.getAttribute('data-id');
|
const id = this.getAttribute('data-id');
|
||||||
showProviderOptions(page, id, this);
|
showProviderOptions(page, id, this);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function showProviderOptions(page, providerId, button) {
|
function showProviderOptions(page, providerId, button) {
|
||||||
var items = [];
|
const items = [];
|
||||||
items.push({
|
items.push({
|
||||||
name: globalize.translate('ButtonDelete'),
|
name: globalize.translate('ButtonDelete'),
|
||||||
id: 'delete'
|
id: 'delete'
|
||||||
|
@ -137,7 +147,7 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
id: 'map'
|
id: 'map'
|
||||||
});
|
});
|
||||||
|
|
||||||
require(['actionsheet'], function (actionsheet) {
|
import('actionsheet').then(({default: actionsheet}) => {
|
||||||
actionsheet.show({
|
actionsheet.show({
|
||||||
items: items,
|
items: items,
|
||||||
positionTo: button
|
positionTo: button
|
||||||
|
@ -152,22 +162,22 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function mapChannels(page, providerId) {
|
function mapChannels(page, providerId) {
|
||||||
require(['components/channelMapper/channelMapper'], function (channelMapper) {
|
import('components/channelMapper/channelMapper').then(({default: channelMapper}) => {
|
||||||
new channelMapper.default({
|
new channelMapper({
|
||||||
serverId: ApiClient.serverInfo().Id,
|
serverId: ApiClient.serverInfo().Id,
|
||||||
providerId: providerId
|
providerId: providerId
|
||||||
}).show();
|
}).show();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteProvider(page, id) {
|
function deleteProvider(page, id) {
|
||||||
var message = globalize.translate('MessageConfirmDeleteGuideProvider');
|
const message = globalize.translate('MessageConfirmDeleteGuideProvider');
|
||||||
|
|
||||||
require(['confirm'], function (confirm) {
|
import('confirm').then(({default: confirm}) => {
|
||||||
confirm.default(message, globalize.translate('HeaderDeleteProvider')).then(function () {
|
confirm(message, globalize.translate('HeaderDeleteProvider')).then(function () {
|
||||||
loading.show();
|
loading.show();
|
||||||
ApiClient.ajax({
|
ApiClient.ajax({
|
||||||
type: 'DELETE',
|
type: 'DELETE',
|
||||||
|
@ -181,9 +191,9 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTunerName(providerId) {
|
function getTunerName(providerId) {
|
||||||
switch (providerId = providerId.toLowerCase()) {
|
switch (providerId = providerId.toLowerCase()) {
|
||||||
case 'm3u':
|
case 'm3u':
|
||||||
return 'M3U';
|
return 'M3U';
|
||||||
|
@ -196,9 +206,9 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
default:
|
default:
|
||||||
return 'Unknown';
|
return 'Unknown';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getProviderName(providerId) {
|
function getProviderName(providerId) {
|
||||||
switch (providerId = providerId.toLowerCase()) {
|
switch (providerId = providerId.toLowerCase()) {
|
||||||
case 'schedulesdirect':
|
case 'schedulesdirect':
|
||||||
return 'Schedules Direct';
|
return 'Schedules Direct';
|
||||||
|
@ -207,19 +217,19 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
default:
|
default:
|
||||||
return 'Unknown';
|
return 'Unknown';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getProviderConfigurationUrl(providerId) {
|
function getProviderConfigurationUrl(providerId) {
|
||||||
switch (providerId = providerId.toLowerCase()) {
|
switch (providerId = providerId.toLowerCase()) {
|
||||||
case 'xmltv':
|
case 'xmltv':
|
||||||
return 'livetvguideprovider.html?type=xmltv';
|
return 'livetvguideprovider.html?type=xmltv';
|
||||||
case 'schedulesdirect':
|
case 'schedulesdirect':
|
||||||
return 'livetvguideprovider.html?type=schedulesdirect';
|
return 'livetvguideprovider.html?type=schedulesdirect';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function addProvider(button) {
|
function addProvider(button) {
|
||||||
var menuItems = [];
|
const menuItems = [];
|
||||||
menuItems.push({
|
menuItems.push({
|
||||||
name: 'Schedules Direct',
|
name: 'Schedules Direct',
|
||||||
id: 'SchedulesDirect'
|
id: 'SchedulesDirect'
|
||||||
|
@ -229,7 +239,7 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
id: 'xmltv'
|
id: 'xmltv'
|
||||||
});
|
});
|
||||||
|
|
||||||
require(['actionsheet'], function (actionsheet) {
|
import('actionsheet').then(({default: actionsheet}) => {
|
||||||
actionsheet.show({
|
actionsheet.show({
|
||||||
items: menuItems,
|
items: menuItems,
|
||||||
positionTo: button,
|
positionTo: button,
|
||||||
|
@ -238,14 +248,14 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function addDevice(button) {
|
function addDevice(button) {
|
||||||
Dashboard.navigate('livetvtuner.html');
|
Dashboard.navigate('livetvtuner.html');
|
||||||
}
|
}
|
||||||
|
|
||||||
function showDeviceMenu(button, tunerDeviceId) {
|
function showDeviceMenu(button, tunerDeviceId) {
|
||||||
var items = [];
|
const items = [];
|
||||||
items.push({
|
items.push({
|
||||||
name: globalize.translate('ButtonDelete'),
|
name: globalize.translate('ButtonDelete'),
|
||||||
id: 'delete'
|
id: 'delete'
|
||||||
|
@ -255,7 +265,7 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
id: 'edit'
|
id: 'edit'
|
||||||
});
|
});
|
||||||
|
|
||||||
require(['actionsheet'], function (actionsheet) {
|
import('actionsheet').then(({default: actionsheet}) => {
|
||||||
actionsheet.show({
|
actionsheet.show({
|
||||||
items: items,
|
items: items,
|
||||||
positionTo: button
|
positionTo: button
|
||||||
|
@ -270,14 +280,14 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function onDevicesListClick(e) {
|
function onDevicesListClick(e) {
|
||||||
var card = dom.parentWithClass(e.target, 'card');
|
const card = dom.parentWithClass(e.target, 'card');
|
||||||
|
|
||||||
if (card) {
|
if (card) {
|
||||||
var id = card.getAttribute('data-id');
|
const id = card.getAttribute('data-id');
|
||||||
var btnCardOptions = dom.parentWithClass(e.target, 'btnCardOptions');
|
const btnCardOptions = dom.parentWithClass(e.target, 'btnCardOptions');
|
||||||
|
|
||||||
if (btnCardOptions) {
|
if (btnCardOptions) {
|
||||||
showDeviceMenu(btnCardOptions, id);
|
showDeviceMenu(btnCardOptions, id);
|
||||||
|
@ -285,10 +295,11 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
Dashboard.navigate('livetvtuner.html?id=' + id);
|
Dashboard.navigate('livetvtuner.html?id=' + id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default function () {
|
||||||
$(document).on('pageinit', '#liveTvStatusPage', function () {
|
$(document).on('pageinit', '#liveTvStatusPage', function () {
|
||||||
var page = this;
|
const page = this;
|
||||||
$('.btnAddDevice', page).on('click', function () {
|
$('.btnAddDevice', page).on('click', function () {
|
||||||
addDevice(this);
|
addDevice(this);
|
||||||
});
|
});
|
||||||
|
@ -301,21 +312,21 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
});
|
});
|
||||||
page.querySelector('.devicesList').addEventListener('click', onDevicesListClick);
|
page.querySelector('.devicesList').addEventListener('click', onDevicesListClick);
|
||||||
}).on('pageshow', '#liveTvStatusPage', function () {
|
}).on('pageshow', '#liveTvStatusPage', function () {
|
||||||
var page = this;
|
const page = this;
|
||||||
reload(page);
|
reload(page);
|
||||||
taskButton.default({
|
taskButton({
|
||||||
mode: 'on',
|
mode: 'on',
|
||||||
progressElem: page.querySelector('.refreshGuideProgress'),
|
progressElem: page.querySelector('.refreshGuideProgress'),
|
||||||
taskKey: 'RefreshGuide',
|
taskKey: 'RefreshGuide',
|
||||||
button: page.querySelector('.btnRefresh')
|
button: page.querySelector('.btnRefresh')
|
||||||
});
|
});
|
||||||
}).on('pagehide', '#liveTvStatusPage', function () {
|
}).on('pagehide', '#liveTvStatusPage', function () {
|
||||||
var page = this;
|
const page = this;
|
||||||
taskButton.default({
|
taskButton({
|
||||||
mode: 'off',
|
mode: 'off',
|
||||||
progressElem: page.querySelector('.refreshGuideProgress'),
|
progressElem: page.querySelector('.refreshGuideProgress'),
|
||||||
taskKey: 'RefreshGuide',
|
taskKey: 'RefreshGuide',
|
||||||
button: page.querySelector('.btnRefresh')
|
button: page.querySelector('.btnRefresh')
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
|
|
|
@ -1,14 +1,19 @@
|
||||||
define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button', 'emby-checkbox', 'emby-select'], function (globalize, loading, libraryMenu, dom) {
|
import globalize from 'globalize';
|
||||||
'use strict';
|
import loading from 'loading';
|
||||||
|
import dom from 'dom';
|
||||||
|
import 'emby-input';
|
||||||
|
import 'emby-button';
|
||||||
|
import 'emby-checkbox';
|
||||||
|
import 'emby-select';
|
||||||
|
|
||||||
function isM3uVariant(type) {
|
function isM3uVariant(type) {
|
||||||
return ['nextpvr'].indexOf(type || '') !== -1;
|
return ['nextpvr'].indexOf(type || '') !== -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fillTypes(view, currentId) {
|
function fillTypes(view, currentId) {
|
||||||
return ApiClient.getJSON(ApiClient.getUrl('LiveTv/TunerHosts/Types')).then(function (types) {
|
return ApiClient.getJSON(ApiClient.getUrl('LiveTv/TunerHosts/Types')).then(function (types) {
|
||||||
var selectType = view.querySelector('.selectType');
|
const selectType = view.querySelector('.selectType');
|
||||||
var html = '';
|
let html = '';
|
||||||
html += types.map(function (tuner) {
|
html += types.map(function (tuner) {
|
||||||
return '<option value="' + tuner.Id + '">' + tuner.Name + '</option>';
|
return '<option value="' + tuner.Id + '">' + tuner.Name + '</option>';
|
||||||
}).join('');
|
}).join('');
|
||||||
|
@ -16,30 +21,30 @@ define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button
|
||||||
html += globalize.translate('TabOther');
|
html += globalize.translate('TabOther');
|
||||||
html += '</option>';
|
html += '</option>';
|
||||||
selectType.innerHTML = html;
|
selectType.innerHTML = html;
|
||||||
selectType.disabled = null != currentId;
|
selectType.disabled = currentId != null;
|
||||||
selectType.value = '';
|
selectType.value = '';
|
||||||
onTypeChange.call(selectType);
|
onTypeChange.call(selectType);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function reload(view, providerId) {
|
function reload(view, providerId) {
|
||||||
view.querySelector('.txtDevicePath').value = '';
|
view.querySelector('.txtDevicePath').value = '';
|
||||||
view.querySelector('.chkFavorite').checked = false;
|
view.querySelector('.chkFavorite').checked = false;
|
||||||
view.querySelector('.txtDevicePath').value = '';
|
view.querySelector('.txtDevicePath').value = '';
|
||||||
|
|
||||||
if (providerId) {
|
if (providerId) {
|
||||||
ApiClient.getNamedConfiguration('livetv').then(function (config) {
|
ApiClient.getNamedConfiguration('livetv').then(function (config) {
|
||||||
var info = config.TunerHosts.filter(function (i) {
|
const info = config.TunerHosts.filter(function (i) {
|
||||||
return i.Id === providerId;
|
return i.Id === providerId;
|
||||||
})[0];
|
})[0];
|
||||||
fillTunerHostInfo(view, info);
|
fillTunerHostInfo(view, info);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function fillTunerHostInfo(view, info) {
|
function fillTunerHostInfo(view, info) {
|
||||||
var selectType = view.querySelector('.selectType');
|
const selectType = view.querySelector('.selectType');
|
||||||
var type = info.Type || '';
|
let type = info.Type || '';
|
||||||
|
|
||||||
if (info.Source && isM3uVariant(info.Source)) {
|
if (info.Source && isM3uVariant(info.Source)) {
|
||||||
type = info.Source;
|
type = info.Source;
|
||||||
|
@ -55,11 +60,11 @@ define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button
|
||||||
view.querySelector('.chkTranscode').checked = info.AllowHWTranscoding;
|
view.querySelector('.chkTranscode').checked = info.AllowHWTranscoding;
|
||||||
view.querySelector('.chkStreamLoop').checked = info.EnableStreamLooping;
|
view.querySelector('.chkStreamLoop').checked = info.EnableStreamLooping;
|
||||||
view.querySelector('.txtTunerCount').value = info.TunerCount || '0';
|
view.querySelector('.txtTunerCount').value = info.TunerCount || '0';
|
||||||
}
|
}
|
||||||
|
|
||||||
function submitForm(page) {
|
function submitForm(page) {
|
||||||
loading.show();
|
loading.show();
|
||||||
var info = {
|
const info = {
|
||||||
Type: page.querySelector('.selectType').value,
|
Type: page.querySelector('.selectType').value,
|
||||||
Url: page.querySelector('.txtDevicePath').value || null,
|
Url: page.querySelector('.txtDevicePath').value || null,
|
||||||
UserAgent: page.querySelector('.txtUserAgent').value || null,
|
UserAgent: page.querySelector('.txtUserAgent').value || null,
|
||||||
|
@ -76,10 +81,8 @@ define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button
|
||||||
info.Type = 'm3u';
|
info.Type = 'm3u';
|
||||||
}
|
}
|
||||||
|
|
||||||
var id = getParameterByName('id');
|
if (getParameterByName('id')) {
|
||||||
|
info.Id = getParameterByName('id');
|
||||||
if (id) {
|
|
||||||
info.Id = id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ApiClient.ajax({
|
ApiClient.ajax({
|
||||||
|
@ -96,36 +99,30 @@ define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button
|
||||||
message: globalize.translate('ErrorSavingTvProvider')
|
message: globalize.translate('ErrorSavingTvProvider')
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRequirePromise(deps) {
|
function getDetectedDevice() {
|
||||||
return new Promise(function (resolve, reject) {
|
return import('tunerPicker').then(({default: tunerPicker}) => {
|
||||||
require(deps, resolve);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function getDetectedDevice() {
|
|
||||||
return getRequirePromise(['tunerPicker']).then(function (tunerPicker) {
|
|
||||||
return new tunerPicker().show({
|
return new tunerPicker().show({
|
||||||
serverId: ApiClient.serverId()
|
serverId: ApiClient.serverId()
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function onTypeChange() {
|
function onTypeChange() {
|
||||||
var value = this.value;
|
const value = this.value;
|
||||||
var view = dom.parentWithClass(this, 'page');
|
const view = dom.parentWithClass(this, 'page');
|
||||||
var mayIncludeUnsupportedDrmChannels = 'hdhomerun' === value;
|
const mayIncludeUnsupportedDrmChannels = value === 'hdhomerun';
|
||||||
var supportsTranscoding = 'hdhomerun' === value;
|
const supportsTranscoding = value === 'hdhomerun';
|
||||||
var supportsFavorites = 'hdhomerun' === value;
|
const supportsFavorites = value === 'hdhomerun';
|
||||||
var supportsTunerIpAddress = 'hdhomerun' === value;
|
const supportsTunerIpAddress = value === 'hdhomerun';
|
||||||
var supportsTunerFileOrUrl = 'm3u' === value;
|
const supportsTunerFileOrUrl = value === 'm3u';
|
||||||
var supportsStreamLooping = 'm3u' === value;
|
const supportsStreamLooping = value === 'm3u';
|
||||||
var supportsTunerCount = 'm3u' === value;
|
const supportsTunerCount = value === 'm3u';
|
||||||
var supportsUserAgent = 'm3u' === value;
|
const supportsUserAgent = value === 'm3u';
|
||||||
var suppportsSubmit = 'other' !== value;
|
const suppportsSubmit = value !== 'other';
|
||||||
var supportsSelectablePath = supportsTunerFileOrUrl;
|
const supportsSelectablePath = supportsTunerFileOrUrl;
|
||||||
var txtDevicePath = view.querySelector('.txtDevicePath');
|
const txtDevicePath = view.querySelector('.txtDevicePath');
|
||||||
|
|
||||||
if (supportsTunerIpAddress) {
|
if (supportsTunerIpAddress) {
|
||||||
txtDevicePath.label(globalize.translate('LabelTunerIpAddress'));
|
txtDevicePath.label(globalize.translate('LabelTunerIpAddress'));
|
||||||
|
@ -188,15 +185,15 @@ define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button
|
||||||
} else {
|
} else {
|
||||||
view.querySelector('.button-submit').classList.add('hide');
|
view.querySelector('.button-submit').classList.add('hide');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return function (view, params) {
|
export default function (view, params) {
|
||||||
if (!params.id) {
|
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;
|
const currentId = params.id;
|
||||||
fillTypes(view, currentId).then(function () {
|
fillTypes(view, currentId).then(function () {
|
||||||
reload(view, currentId);
|
reload(view, currentId);
|
||||||
});
|
});
|
||||||
|
@ -214,8 +211,8 @@ define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
view.querySelector('.btnSelectPath').addEventListener('click', function () {
|
view.querySelector('.btnSelectPath').addEventListener('click', function () {
|
||||||
require(['directorybrowser'], function (directoryBrowser) {
|
import('directorybrowser').then(({default: directorybrowser}) => {
|
||||||
var picker = new directoryBrowser.default();
|
const picker = new directorybrowser();
|
||||||
picker.show({
|
picker.show({
|
||||||
includeFiles: true,
|
includeFiles: true,
|
||||||
callback: function (path) {
|
callback: function (path) {
|
||||||
|
@ -228,5 +225,4 @@ define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
});
|
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) {
|
define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
libraryBrowser = libraryBrowser.default || libraryBrowser;
|
||||||
|
|
||||||
return function (view, params, tabContent) {
|
return function (view, params, tabContent) {
|
||||||
function getPageData(context) {
|
function getPageData(context) {
|
||||||
var key = getSavedQueryKey(context);
|
var key = getSavedQueryKey(context);
|
||||||
|
@ -48,7 +51,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
|
||||||
var viewStyle = self.getCurrentViewStyle();
|
var viewStyle = self.getCurrentViewStyle();
|
||||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||||
|
|
||||||
if ('List' == viewStyle) {
|
if (viewStyle == 'List') {
|
||||||
itemsContainer.classList.add('vertical-list');
|
itemsContainer.classList.add('vertical-list');
|
||||||
itemsContainer.classList.remove('vertical-wrap');
|
itemsContainer.classList.remove('vertical-wrap');
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'appRouter', 'dom', 'emby-button'], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) {
|
define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'appRouter', 'dom', 'emby-button'], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
libraryBrowser = libraryBrowser.default || libraryBrowser;
|
||||||
|
|
||||||
return function (view, params, tabContent) {
|
return function (view, params, tabContent) {
|
||||||
function getPageData() {
|
function getPageData() {
|
||||||
var key = getSavedQueryKey();
|
var key = getSavedQueryKey();
|
||||||
|
@ -54,13 +57,13 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
|
||||||
var elem = entry.target;
|
var elem = entry.target;
|
||||||
var id = elem.getAttribute('data-id');
|
var id = elem.getAttribute('data-id');
|
||||||
var viewStyle = self.getCurrentViewStyle();
|
var viewStyle = self.getCurrentViewStyle();
|
||||||
var limit = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 5 : 9;
|
var limit = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 5 : 9;
|
||||||
|
|
||||||
if (enableScrollX()) {
|
if (enableScrollX()) {
|
||||||
limit = 10;
|
limit = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
var enableImageTypes = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 'Primary,Backdrop,Thumb' : 'Primary';
|
var enableImageTypes = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 'Primary,Backdrop,Thumb' : 'Primary';
|
||||||
var query = {
|
var query = {
|
||||||
SortBy: 'SortName',
|
SortBy: 'SortName',
|
||||||
SortOrder: 'Ascending',
|
SortOrder: 'Ascending',
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser', 'alphaPicker', 'listView', 'cardBuilder', 'globalize', 'emby-itemscontainer'], function (loading, layoutManager, userSettings, events, libraryBrowser, AlphaPicker, listView, cardBuilder, globalize) {
|
define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser', 'alphaPicker', 'listView', 'cardBuilder', 'globalize', 'emby-itemscontainer'], function (loading, layoutManager, userSettings, events, libraryBrowser, AlphaPicker, listView, cardBuilder, globalize) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
libraryBrowser = libraryBrowser.default || libraryBrowser;
|
||||||
|
|
||||||
return function (view, params, tabContent, options) {
|
return function (view, params, tabContent, options) {
|
||||||
function onViewStyleChange() {
|
function onViewStyleChange() {
|
||||||
if (self.getCurrentViewStyle() == 'List') {
|
if (self.getCurrentViewStyle() == 'List') {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
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) {
|
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';
|
'use strict';
|
||||||
|
|
||||||
|
playbackManager = playbackManager.default || playbackManager;
|
||||||
|
|
||||||
function enableScrollX() {
|
function enableScrollX() {
|
||||||
return !layoutManager.desktop;
|
return !layoutManager.desktop;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, AlphaPicker, listView, cardBuilder, userSettings, globalize) {
|
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';
|
'use strict';
|
||||||
|
|
||||||
|
loading = loading.default || loading;
|
||||||
|
libraryBrowser = libraryBrowser.default || libraryBrowser;
|
||||||
|
|
||||||
return function (view, params, tabContent) {
|
return function (view, params, tabContent) {
|
||||||
function getPageData(context) {
|
function getPageData(context) {
|
||||||
var key = getSavedQueryKey(context);
|
var key = getSavedQueryKey(context);
|
||||||
|
|
|
@ -1,7 +1,18 @@
|
||||||
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) {
|
import playbackManager from 'playbackManager';
|
||||||
'use strict';
|
import loading from 'loading';
|
||||||
|
import events from 'events';
|
||||||
|
import libraryBrowser from 'libraryBrowser';
|
||||||
|
import imageLoader from 'imageLoader';
|
||||||
|
import AlphaPicker from 'alphaPicker';
|
||||||
|
import listView from 'listView';
|
||||||
|
import cardBuilder from 'cardBuilder';
|
||||||
|
import * as userSettings from 'userSettings';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import 'emby-itemscontainer';
|
||||||
|
|
||||||
return function (view, params, tabContent) {
|
/* eslint-disable indent */
|
||||||
|
|
||||||
|
export default function (view, params, tabContent) {
|
||||||
function playAll() {
|
function playAll() {
|
||||||
ApiClient.getItem(ApiClient.getCurrentUserId(), params.topParentId).then(function (item) {
|
ApiClient.getItem(ApiClient.getCurrentUserId(), params.topParentId).then(function (item) {
|
||||||
playbackManager.play({
|
playbackManager.play({
|
||||||
|
@ -18,7 +29,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPageData() {
|
function getPageData() {
|
||||||
var key = getSavedQueryKey();
|
const key = getSavedQueryKey();
|
||||||
|
|
||||||
if (!pageData) {
|
if (!pageData) {
|
||||||
pageData = {
|
pageData = {
|
||||||
|
@ -59,10 +70,10 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser
|
||||||
}
|
}
|
||||||
|
|
||||||
function onViewStyleChange() {
|
function onViewStyleChange() {
|
||||||
var viewStyle = self.getCurrentViewStyle();
|
const viewStyle = self.getCurrentViewStyle();
|
||||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||||
|
|
||||||
if ('List' == viewStyle) {
|
if (viewStyle == 'List') {
|
||||||
itemsContainer.classList.add('vertical-list');
|
itemsContainer.classList.add('vertical-list');
|
||||||
itemsContainer.classList.remove('vertical-wrap');
|
itemsContainer.classList.remove('vertical-wrap');
|
||||||
} else {
|
} else {
|
||||||
|
@ -76,7 +87,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser
|
||||||
function reloadItems(page) {
|
function reloadItems(page) {
|
||||||
loading.show();
|
loading.show();
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
var query = getQuery();
|
const query = getQuery();
|
||||||
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) {
|
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) {
|
||||||
function onNextPageClick() {
|
function onNextPageClick() {
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
|
@ -102,8 +113,8 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser
|
||||||
|
|
||||||
window.scrollTo(0, 0);
|
window.scrollTo(0, 0);
|
||||||
updateFilterControls(page);
|
updateFilterControls(page);
|
||||||
var html;
|
let html;
|
||||||
var pagingHtml = libraryBrowser.getQueryPagingHtml({
|
const pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||||
startIndex: query.StartIndex,
|
startIndex: query.StartIndex,
|
||||||
limit: query.Limit,
|
limit: query.Limit,
|
||||||
totalRecordCount: result.TotalRecordCount,
|
totalRecordCount: result.TotalRecordCount,
|
||||||
|
@ -113,7 +124,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser
|
||||||
sortButton: false,
|
sortButton: false,
|
||||||
filterButton: false
|
filterButton: false
|
||||||
});
|
});
|
||||||
var viewStyle = self.getCurrentViewStyle();
|
const viewStyle = self.getCurrentViewStyle();
|
||||||
if (viewStyle == 'List') {
|
if (viewStyle == 'List') {
|
||||||
html = listView.getListViewHtml({
|
html = listView.getListViewHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
|
@ -144,50 +155,48 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser
|
||||||
overlayPlayButton: true
|
overlayPlayButton: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
var i;
|
let elems = tabContent.querySelectorAll('.paging');
|
||||||
var length;
|
|
||||||
var elems = tabContent.querySelectorAll('.paging');
|
|
||||||
|
|
||||||
for (i = 0, length = elems.length; i < length; i++) {
|
for (let i = 0, length = elems.length; i < length; i++) {
|
||||||
elems[i].innerHTML = pagingHtml;
|
elems[i].innerHTML = pagingHtml;
|
||||||
}
|
}
|
||||||
|
|
||||||
elems = tabContent.querySelectorAll('.btnNextPage');
|
elems = tabContent.querySelectorAll('.btnNextPage');
|
||||||
for (i = 0, length = elems.length; i < length; i++) {
|
for (let 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++) {
|
for (let i = 0, length = elems.length; i < length; i++) {
|
||||||
elems[i].addEventListener('click', onPreviousPageClick);
|
elems[i].addEventListener('click', onPreviousPageClick);
|
||||||
}
|
}
|
||||||
|
|
||||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||||
itemsContainer.innerHTML = html;
|
itemsContainer.innerHTML = html;
|
||||||
imageLoader.lazyChildren(itemsContainer);
|
imageLoader.lazyChildren(itemsContainer);
|
||||||
libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||||
loading.hide();
|
loading.hide();
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
|
|
||||||
require(['autoFocuser'], function (autoFocuser) {
|
import('autoFocuser').then(({default: autoFocuser}) => {
|
||||||
autoFocuser.autoFocus(tabContent);
|
autoFocuser.autoFocus(tabContent);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateFilterControls(tabContent) {
|
function updateFilterControls(tabContent) {
|
||||||
var query = getQuery();
|
const query = getQuery();
|
||||||
self.alphaPicker.value(query.NameStartsWithOrGreater);
|
self.alphaPicker.value(query.NameStartsWithOrGreater);
|
||||||
}
|
}
|
||||||
|
|
||||||
var savedQueryKey;
|
let savedQueryKey;
|
||||||
var pageData;
|
let pageData;
|
||||||
var self = this;
|
const self = this;
|
||||||
var isLoading = false;
|
let isLoading = false;
|
||||||
|
|
||||||
self.showFilterMenu = function () {
|
self.showFilterMenu = function () {
|
||||||
require(['components/filterdialog/filterdialog'], function ({default: filterDialogFactory}) {
|
import('components/filterdialog/filterdialog').then(({default: filterDialogFactory}) => {
|
||||||
var filterDialog = new filterDialogFactory({
|
const filterDialog = new filterDialogFactory({
|
||||||
query: getQuery(),
|
query: getQuery(),
|
||||||
mode: 'albums',
|
mode: 'albums',
|
||||||
serverId: ApiClient.serverId()
|
serverId: ApiClient.serverId()
|
||||||
|
@ -205,17 +214,17 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser
|
||||||
};
|
};
|
||||||
|
|
||||||
function initPage(tabContent) {
|
function initPage(tabContent) {
|
||||||
var alphaPickerElement = tabContent.querySelector('.alphaPicker');
|
const alphaPickerElement = tabContent.querySelector('.alphaPicker');
|
||||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||||
|
|
||||||
alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
|
alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
|
||||||
var newValue = e.detail.value;
|
const newValue = e.detail.value;
|
||||||
var query = getQuery();
|
const query = getQuery();
|
||||||
query.NameStartsWithOrGreater = newValue;
|
query.NameStartsWithOrGreater = newValue;
|
||||||
query.StartIndex = 0;
|
query.StartIndex = 0;
|
||||||
reloadItems(tabContent);
|
reloadItems(tabContent);
|
||||||
});
|
});
|
||||||
self.alphaPicker = new AlphaPicker.default({
|
self.alphaPicker = new AlphaPicker({
|
||||||
element: alphaPickerElement,
|
element: alphaPickerElement,
|
||||||
valueChangeEvent: 'click'
|
valueChangeEvent: 'click'
|
||||||
});
|
});
|
||||||
|
@ -259,12 +268,12 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser
|
||||||
button: e.target
|
button: e.target
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var btnSelectView = tabContent.querySelector('.btnSelectView');
|
const btnSelectView = tabContent.querySelector('.btnSelectView');
|
||||||
btnSelectView.addEventListener('click', function (e) {
|
btnSelectView.addEventListener('click', function (e) {
|
||||||
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(','));
|
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;
|
const viewStyle = e.detail.viewStyle;
|
||||||
getPageData().view = viewStyle;
|
getPageData().view = viewStyle;
|
||||||
libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle);
|
libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle);
|
||||||
getQuery().StartIndex = 0;
|
getQuery().StartIndex = 0;
|
||||||
|
@ -284,5 +293,6 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser
|
||||||
};
|
};
|
||||||
|
|
||||||
self.destroy = function () {};
|
self.destroy = function () {};
|
||||||
};
|
}
|
||||||
});
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
|
@ -1,13 +1,22 @@
|
||||||
define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'apphost', 'userSettings', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, AlphaPicker, listView, cardBuilder, appHost, userSettings) {
|
import loading from 'loading';
|
||||||
'use strict';
|
import events from 'events';
|
||||||
|
import libraryBrowser from 'libraryBrowser';
|
||||||
|
import imageLoader from 'imageLoader';
|
||||||
|
import AlphaPicker from 'alphaPicker';
|
||||||
|
import listView from 'listView';
|
||||||
|
import cardBuilder from 'cardBuilder';
|
||||||
|
import * as userSettings from 'userSettings';
|
||||||
|
import 'emby-itemscontainer';
|
||||||
|
|
||||||
return function (view, params, tabContent) {
|
/* eslint-disable indent */
|
||||||
|
|
||||||
|
export default function (view, params, tabContent) {
|
||||||
function getPageData(context) {
|
function getPageData(context) {
|
||||||
var key = getSavedQueryKey(context);
|
const key = getSavedQueryKey(context);
|
||||||
var pageData = data[key];
|
let pageData = data[key];
|
||||||
|
|
||||||
if (!pageData) {
|
if (!pageData) {
|
||||||
var queryValues = {
|
const queryValues = {
|
||||||
SortBy: 'SortName',
|
SortBy: 'SortName',
|
||||||
SortOrder: 'Ascending',
|
SortOrder: 'Ascending',
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
|
@ -45,10 +54,10 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
||||||
}
|
}
|
||||||
|
|
||||||
function onViewStyleChange() {
|
function onViewStyleChange() {
|
||||||
var viewStyle = self.getCurrentViewStyle();
|
const viewStyle = self.getCurrentViewStyle();
|
||||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||||
|
|
||||||
if ('List' == viewStyle) {
|
if (viewStyle == 'List') {
|
||||||
itemsContainer.classList.add('vertical-list');
|
itemsContainer.classList.add('vertical-list');
|
||||||
itemsContainer.classList.remove('vertical-wrap');
|
itemsContainer.classList.remove('vertical-wrap');
|
||||||
} else {
|
} else {
|
||||||
|
@ -62,8 +71,8 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
||||||
function reloadItems(page) {
|
function reloadItems(page) {
|
||||||
loading.show();
|
loading.show();
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
var query = getQuery(page);
|
const query = getQuery(page);
|
||||||
var promise = self.mode == 'albumartists' ?
|
const promise = self.mode == 'albumartists' ?
|
||||||
ApiClient.getAlbumArtists(ApiClient.getCurrentUserId(), query) :
|
ApiClient.getAlbumArtists(ApiClient.getCurrentUserId(), query) :
|
||||||
ApiClient.getArtists(ApiClient.getCurrentUserId(), query);
|
ApiClient.getArtists(ApiClient.getCurrentUserId(), query);
|
||||||
promise.then(function (result) {
|
promise.then(function (result) {
|
||||||
|
@ -91,8 +100,8 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
||||||
|
|
||||||
window.scrollTo(0, 0);
|
window.scrollTo(0, 0);
|
||||||
updateFilterControls(page);
|
updateFilterControls(page);
|
||||||
var html;
|
let html;
|
||||||
var pagingHtml = libraryBrowser.getQueryPagingHtml({
|
const pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||||
startIndex: query.StartIndex,
|
startIndex: query.StartIndex,
|
||||||
limit: query.Limit,
|
limit: query.Limit,
|
||||||
totalRecordCount: result.TotalRecordCount,
|
totalRecordCount: result.TotalRecordCount,
|
||||||
|
@ -102,7 +111,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
||||||
sortButton: false,
|
sortButton: false,
|
||||||
filterButton: false
|
filterButton: false
|
||||||
});
|
});
|
||||||
var viewStyle = self.getCurrentViewStyle();
|
const viewStyle = self.getCurrentViewStyle();
|
||||||
if (viewStyle == 'List') {
|
if (viewStyle == 'List') {
|
||||||
html = listView.getListViewHtml({
|
html = listView.getListViewHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
|
@ -129,49 +138,47 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
||||||
overlayPlayButton: true
|
overlayPlayButton: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
var i;
|
let elems = tabContent.querySelectorAll('.paging');
|
||||||
var length;
|
|
||||||
var elems = tabContent.querySelectorAll('.paging');
|
|
||||||
|
|
||||||
for (i = 0, length = elems.length; i < length; i++) {
|
for (let i = 0, length = elems.length; i < length; i++) {
|
||||||
elems[i].innerHTML = pagingHtml;
|
elems[i].innerHTML = pagingHtml;
|
||||||
}
|
}
|
||||||
|
|
||||||
elems = tabContent.querySelectorAll('.btnNextPage');
|
elems = tabContent.querySelectorAll('.btnNextPage');
|
||||||
for (i = 0, length = elems.length; i < length; i++) {
|
for (let 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++) {
|
for (let i = 0, length = elems.length; i < length; i++) {
|
||||||
elems[i].addEventListener('click', onPreviousPageClick);
|
elems[i].addEventListener('click', onPreviousPageClick);
|
||||||
}
|
}
|
||||||
|
|
||||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||||
itemsContainer.innerHTML = html;
|
itemsContainer.innerHTML = html;
|
||||||
imageLoader.lazyChildren(itemsContainer);
|
imageLoader.lazyChildren(itemsContainer);
|
||||||
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||||
loading.hide();
|
loading.hide();
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
|
|
||||||
require(['autoFocuser'], function (autoFocuser) {
|
import('autoFocuser').then(({default: autoFocuser}) => {
|
||||||
autoFocuser.autoFocus(tabContent);
|
autoFocuser.autoFocus(tabContent);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateFilterControls(tabContent) {
|
function updateFilterControls(tabContent) {
|
||||||
var query = getQuery(tabContent);
|
const query = getQuery(tabContent);
|
||||||
self.alphaPicker.value(query.NameStartsWithOrGreater);
|
self.alphaPicker.value(query.NameStartsWithOrGreater);
|
||||||
}
|
}
|
||||||
|
|
||||||
var self = this;
|
const self = this;
|
||||||
var data = {};
|
const data = {};
|
||||||
var isLoading = false;
|
let isLoading = false;
|
||||||
|
|
||||||
self.showFilterMenu = function () {
|
self.showFilterMenu = function () {
|
||||||
require(['components/filterdialog/filterdialog'], function ({default: filterDialogFactory}) {
|
import('components/filterdialog/filterdialog').then(({default: filterDialogFactory}) => {
|
||||||
var filterDialog = new filterDialogFactory({
|
const filterDialog = new filterDialogFactory({
|
||||||
query: getQuery(tabContent),
|
query: getQuery(tabContent),
|
||||||
mode: self.mode,
|
mode: self.mode,
|
||||||
serverId: ApiClient.serverId()
|
serverId: ApiClient.serverId()
|
||||||
|
@ -189,17 +196,17 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
||||||
};
|
};
|
||||||
|
|
||||||
function initPage(tabContent) {
|
function initPage(tabContent) {
|
||||||
var alphaPickerElement = tabContent.querySelector('.alphaPicker');
|
const alphaPickerElement = tabContent.querySelector('.alphaPicker');
|
||||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||||
|
|
||||||
alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
|
alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
|
||||||
var newValue = e.detail.value;
|
const newValue = e.detail.value;
|
||||||
var query = getQuery(tabContent);
|
const query = getQuery(tabContent);
|
||||||
query.NameStartsWithOrGreater = newValue;
|
query.NameStartsWithOrGreater = newValue;
|
||||||
query.StartIndex = 0;
|
query.StartIndex = 0;
|
||||||
reloadItems(tabContent);
|
reloadItems(tabContent);
|
||||||
});
|
});
|
||||||
self.alphaPicker = new AlphaPicker.default({
|
self.alphaPicker = new AlphaPicker({
|
||||||
element: alphaPickerElement,
|
element: alphaPickerElement,
|
||||||
valueChangeEvent: 'click'
|
valueChangeEvent: 'click'
|
||||||
});
|
});
|
||||||
|
@ -211,12 +218,12 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
||||||
tabContent.querySelector('.btnFilter').addEventListener('click', function () {
|
tabContent.querySelector('.btnFilter').addEventListener('click', function () {
|
||||||
self.showFilterMenu();
|
self.showFilterMenu();
|
||||||
});
|
});
|
||||||
var btnSelectView = tabContent.querySelector('.btnSelectView');
|
const btnSelectView = tabContent.querySelector('.btnSelectView');
|
||||||
btnSelectView.addEventListener('click', function (e) {
|
btnSelectView.addEventListener('click', function (e) {
|
||||||
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(','));
|
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;
|
const viewStyle = e.detail.viewStyle;
|
||||||
getPageData(tabContent).view = viewStyle;
|
getPageData(tabContent).view = viewStyle;
|
||||||
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
|
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
|
||||||
getQuery(tabContent).StartIndex = 0;
|
getQuery(tabContent).StartIndex = 0;
|
||||||
|
@ -234,5 +241,6 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
||||||
};
|
};
|
||||||
|
|
||||||
self.destroy = function () {};
|
self.destroy = function () {};
|
||||||
};
|
}
|
||||||
});
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], function (libraryBrowser, cardBuilder, appHost, imageLoader, loading) {
|
import libraryBrowser from 'libraryBrowser';
|
||||||
'use strict';
|
import cardBuilder from 'cardBuilder';
|
||||||
|
import imageLoader from 'imageLoader';
|
||||||
|
import loading from 'loading';
|
||||||
|
|
||||||
return function (view, params, tabContent) {
|
/* eslint-disable indent */
|
||||||
|
|
||||||
|
export default function (view, params, tabContent) {
|
||||||
function getPageData() {
|
function getPageData() {
|
||||||
var key = getSavedQueryKey();
|
const key = getSavedQueryKey();
|
||||||
var pageData = data[key];
|
let pageData = data[key];
|
||||||
|
|
||||||
if (!pageData) {
|
if (!pageData) {
|
||||||
pageData = data[key] = {
|
pageData = data[key] = {
|
||||||
|
@ -34,15 +38,15 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f
|
||||||
|
|
||||||
function getPromise() {
|
function getPromise() {
|
||||||
loading.show();
|
loading.show();
|
||||||
var query = getQuery();
|
const query = getQuery();
|
||||||
return ApiClient.getGenres(ApiClient.getCurrentUserId(), query);
|
return ApiClient.getGenres(ApiClient.getCurrentUserId(), query);
|
||||||
}
|
}
|
||||||
|
|
||||||
function reloadItems(context, promise) {
|
function reloadItems(context, promise) {
|
||||||
var query = getQuery();
|
const query = getQuery();
|
||||||
promise.then(function (result) {
|
promise.then(function (result) {
|
||||||
var html = '';
|
let html = '';
|
||||||
var viewStyle = self.getCurrentViewStyle();
|
const viewStyle = self.getCurrentViewStyle();
|
||||||
|
|
||||||
if (viewStyle == 'Thumb') {
|
if (viewStyle == 'Thumb') {
|
||||||
html = cardBuilder.getCardsHtml({
|
html = cardBuilder.getCardsHtml({
|
||||||
|
@ -82,13 +86,13 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var elem = context.querySelector('#items');
|
const elem = context.querySelector('#items');
|
||||||
elem.innerHTML = html;
|
elem.innerHTML = html;
|
||||||
imageLoader.lazyChildren(elem);
|
imageLoader.lazyChildren(elem);
|
||||||
libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||||
loading.hide();
|
loading.hide();
|
||||||
|
|
||||||
require(['autoFocuser'], function (autoFocuser) {
|
import('autoFocuser').then(({default: autoFocuser}) => {
|
||||||
autoFocuser.autoFocus(context);
|
autoFocuser.autoFocus(context);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -99,8 +103,8 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f
|
||||||
self.renderTab();
|
self.renderTab();
|
||||||
}
|
}
|
||||||
|
|
||||||
var self = this;
|
const self = this;
|
||||||
var data = {};
|
const data = {};
|
||||||
|
|
||||||
self.getViewStyles = function () {
|
self.getViewStyles = function () {
|
||||||
return 'Poster,PosterCard,Thumb,ThumbCard'.split(',');
|
return 'Poster,PosterCard,Thumb,ThumbCard'.split(',');
|
||||||
|
@ -117,7 +121,7 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f
|
||||||
};
|
};
|
||||||
|
|
||||||
self.enableViewSelection = true;
|
self.enableViewSelection = true;
|
||||||
var promise;
|
let promise;
|
||||||
|
|
||||||
self.preRender = function () {
|
self.preRender = function () {
|
||||||
promise = getPromise();
|
promise = getPromise();
|
||||||
|
@ -126,5 +130,6 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f
|
||||||
self.renderTab = function () {
|
self.renderTab = function () {
|
||||||
reloadItems(tabContent, promise);
|
reloadItems(tabContent, promise);
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
});
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], function (libraryBrowser, cardBuilder, appHost, imageLoader, loading) {
|
import libraryBrowser from 'libraryBrowser';
|
||||||
'use strict';
|
import cardBuilder from 'cardBuilder';
|
||||||
|
import imageLoader from 'imageLoader';
|
||||||
|
import loading from 'loading';
|
||||||
|
|
||||||
return function (view, params, tabContent) {
|
/* eslint-disable indent */
|
||||||
|
|
||||||
|
export default function (view, params, tabContent) {
|
||||||
function getPageData() {
|
function getPageData() {
|
||||||
var key = getSavedQueryKey();
|
const key = getSavedQueryKey();
|
||||||
var pageData = data[key];
|
let pageData = data[key];
|
||||||
|
|
||||||
if (!pageData) {
|
if (!pageData) {
|
||||||
pageData = data[key] = {
|
pageData = data[key] = {
|
||||||
|
@ -35,14 +39,14 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f
|
||||||
|
|
||||||
function getPromise() {
|
function getPromise() {
|
||||||
loading.show();
|
loading.show();
|
||||||
var query = getQuery();
|
const query = getQuery();
|
||||||
return ApiClient.getItems(ApiClient.getCurrentUserId(), query);
|
return ApiClient.getItems(ApiClient.getCurrentUserId(), query);
|
||||||
}
|
}
|
||||||
|
|
||||||
function reloadItems(context, promise) {
|
function reloadItems(context, promise) {
|
||||||
var query = getQuery();
|
const query = getQuery();
|
||||||
promise.then(function (result) {
|
promise.then(function (result) {
|
||||||
var html = '';
|
let html = '';
|
||||||
html = cardBuilder.getCardsHtml({
|
html = cardBuilder.getCardsHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
shape: 'square',
|
shape: 'square',
|
||||||
|
@ -53,26 +57,26 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f
|
||||||
allowBottomPadding: true,
|
allowBottomPadding: true,
|
||||||
cardLayout: false
|
cardLayout: false
|
||||||
});
|
});
|
||||||
var elem = context.querySelector('#items');
|
const elem = context.querySelector('#items');
|
||||||
elem.innerHTML = html;
|
elem.innerHTML = html;
|
||||||
imageLoader.lazyChildren(elem);
|
imageLoader.lazyChildren(elem);
|
||||||
libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||||
loading.hide();
|
loading.hide();
|
||||||
|
|
||||||
require(['autoFocuser'], function (autoFocuser) {
|
import('autoFocuser').then(({default: autoFocuser}) => {
|
||||||
autoFocuser.autoFocus(context);
|
autoFocuser.autoFocus(context);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var self = this;
|
const self = this;
|
||||||
var data = {};
|
const data = {};
|
||||||
|
|
||||||
self.getCurrentViewStyle = function () {
|
self.getCurrentViewStyle = function () {
|
||||||
return getPageData().view;
|
return getPageData().view;
|
||||||
};
|
};
|
||||||
|
|
||||||
var promise;
|
let promise;
|
||||||
|
|
||||||
self.preRender = function () {
|
self.preRender = function () {
|
||||||
promise = getPromise();
|
promise = getPromise();
|
||||||
|
@ -81,5 +85,6 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f
|
||||||
self.renderTab = function () {
|
self.renderTab = function () {
|
||||||
reloadItems(tabContent, promise);
|
reloadItems(tabContent, promise);
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
});
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
|
@ -1,8 +1,24 @@
|
||||||
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) {
|
import browser from 'browser';
|
||||||
'use strict';
|
import layoutManager from 'layoutManager';
|
||||||
|
import * as userSettings from 'userSettings';
|
||||||
|
import inputManager from 'inputManager';
|
||||||
|
import loading from 'loading';
|
||||||
|
import cardBuilder from 'cardBuilder';
|
||||||
|
import dom from 'dom';
|
||||||
|
import imageLoader from 'imageLoader';
|
||||||
|
import libraryMenu from 'libraryMenu';
|
||||||
|
import * as mainTabsManager from 'mainTabsManager';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import 'scrollStyles';
|
||||||
|
import 'emby-itemscontainer';
|
||||||
|
import 'emby-tabs';
|
||||||
|
import 'emby-button';
|
||||||
|
import 'flexStyles';
|
||||||
|
|
||||||
|
/* eslint-disable indent */
|
||||||
|
|
||||||
function itemsPerRow() {
|
function itemsPerRow() {
|
||||||
var screenWidth = dom.getWindowSize().innerWidth;
|
const screenWidth = dom.getWindowSize().innerWidth;
|
||||||
|
|
||||||
if (screenWidth >= 1920) {
|
if (screenWidth >= 1920) {
|
||||||
return 9;
|
return 9;
|
||||||
|
@ -29,8 +45,8 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
|
|
||||||
function loadLatest(page, parentId) {
|
function loadLatest(page, parentId) {
|
||||||
loading.show();
|
loading.show();
|
||||||
var userId = ApiClient.getCurrentUserId();
|
const userId = ApiClient.getCurrentUserId();
|
||||||
var options = {
|
const options = {
|
||||||
IncludeItemTypes: 'Audio',
|
IncludeItemTypes: 'Audio',
|
||||||
Limit: enableScrollX() ? 3 * itemsPerRow() : 2 * itemsPerRow(),
|
Limit: enableScrollX() ? 3 * itemsPerRow() : 2 * itemsPerRow(),
|
||||||
Fields: 'PrimaryImageAspectRatio,BasicSyncInfo',
|
Fields: 'PrimaryImageAspectRatio,BasicSyncInfo',
|
||||||
|
@ -41,7 +57,6 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
};
|
};
|
||||||
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 elem = page.querySelector('#recentlyAddedSongs');
|
var elem = page.querySelector('#recentlyAddedSongs');
|
||||||
|
|
||||||
elem.innerHTML = cardBuilder.getCardsHtml({
|
elem.innerHTML = cardBuilder.getCardsHtml({
|
||||||
items: items,
|
items: items,
|
||||||
showUnplayedIndicator: false,
|
showUnplayedIndicator: false,
|
||||||
|
@ -59,14 +74,14 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
imageLoader.lazyChildren(elem);
|
imageLoader.lazyChildren(elem);
|
||||||
loading.hide();
|
loading.hide();
|
||||||
|
|
||||||
require(['autoFocuser'], function (autoFocuser) {
|
import('autoFocuser').then(({default: autoFocuser}) => {
|
||||||
autoFocuser.autoFocus(page);
|
autoFocuser.autoFocus(page);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadRecentlyPlayed(page, parentId) {
|
function loadRecentlyPlayed(page, parentId) {
|
||||||
var options = {
|
const options = {
|
||||||
SortBy: 'DatePlayed',
|
SortBy: 'DatePlayed',
|
||||||
SortOrder: 'Descending',
|
SortOrder: 'Descending',
|
||||||
IncludeItemTypes: 'Audio',
|
IncludeItemTypes: 'Audio',
|
||||||
|
@ -80,7 +95,7 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
EnableTotalRecordCount: false
|
EnableTotalRecordCount: false
|
||||||
};
|
};
|
||||||
ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function (result) {
|
ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function (result) {
|
||||||
var elem = page.querySelector('#recentlyPlayed');
|
const elem = page.querySelector('#recentlyPlayed');
|
||||||
|
|
||||||
if (result.Items.length) {
|
if (result.Items.length) {
|
||||||
elem.classList.remove('hide');
|
elem.classList.remove('hide');
|
||||||
|
@ -89,6 +104,7 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
}
|
}
|
||||||
|
|
||||||
var itemsContainer = elem.querySelector('.itemsContainer');
|
var itemsContainer = elem.querySelector('.itemsContainer');
|
||||||
|
|
||||||
itemsContainer.innerHTML = cardBuilder.getCardsHtml({
|
itemsContainer.innerHTML = cardBuilder.getCardsHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
showUnplayedIndicator: false,
|
showUnplayedIndicator: false,
|
||||||
|
@ -108,7 +124,7 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadFrequentlyPlayed(page, parentId) {
|
function loadFrequentlyPlayed(page, parentId) {
|
||||||
var options = {
|
const options = {
|
||||||
SortBy: 'PlayCount',
|
SortBy: 'PlayCount',
|
||||||
SortOrder: 'Descending',
|
SortOrder: 'Descending',
|
||||||
IncludeItemTypes: 'Audio',
|
IncludeItemTypes: 'Audio',
|
||||||
|
@ -122,7 +138,7 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
EnableTotalRecordCount: false
|
EnableTotalRecordCount: false
|
||||||
};
|
};
|
||||||
ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function (result) {
|
ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function (result) {
|
||||||
var elem = page.querySelector('#topPlayed');
|
const elem = page.querySelector('#topPlayed');
|
||||||
|
|
||||||
if (result.Items.length) {
|
if (result.Items.length) {
|
||||||
elem.classList.remove('hide');
|
elem.classList.remove('hide');
|
||||||
|
@ -155,7 +171,7 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
loadRecentlyPlayed(tabContent, parentId);
|
loadRecentlyPlayed(tabContent, parentId);
|
||||||
loadFrequentlyPlayed(tabContent, parentId);
|
loadFrequentlyPlayed(tabContent, parentId);
|
||||||
|
|
||||||
require(['components/favoriteitems'], function (favoriteItems) {
|
import('components/favoriteitems').then(({default: favoriteItems}) => {
|
||||||
favoriteItems.render(tabContent, ApiClient.getCurrentUserId(), parentId, ['favoriteArtists', 'favoriteAlbums', 'favoriteSongs']);
|
favoriteItems.render(tabContent, ApiClient.getCurrentUserId(), parentId, ['favoriteArtists', 'favoriteAlbums', 'favoriteSongs']);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -206,10 +222,10 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return function (view, params) {
|
export default function (view, params) {
|
||||||
function reload() {
|
function reload() {
|
||||||
loading.show();
|
loading.show();
|
||||||
var tabContent = view.querySelector(".pageTabContent[data-index='0']");
|
const tabContent = view.querySelector(".pageTabContent[data-index='0']");
|
||||||
loadSuggestionsTab(view, tabContent, params.topParentId);
|
loadSuggestionsTab(view, tabContent, params.topParentId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -252,46 +268,48 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTabController(page, index, callback) {
|
function getTabController(page, index, callback) {
|
||||||
var depends = [];
|
let depends;
|
||||||
|
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0:
|
case 0:
|
||||||
|
depends = 'controllers/music/musicrecommended';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
depends.push('controllers/music/musicalbums');
|
depends = 'controllers/music/musicalbums';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
depends.push('controllers/music/musicartists');
|
depends = 'controllers/music/musicartists';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
depends.push('controllers/music/musicplaylists');
|
depends = 'controllers/music/musicplaylists';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
depends.push('controllers/music/songs');
|
depends = 'controllers/music/songs';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:
|
case 6:
|
||||||
depends.push('controllers/music/musicgenres');
|
depends = 'controllers/music/musicgenres';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
depends.push('scripts/searchtab');
|
depends = 'scripts/searchtab';
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
require(depends, function (controllerFactory) {
|
import(depends).then(({default: controllerFactory}) => {
|
||||||
var tabContent;
|
let tabContent;
|
||||||
|
|
||||||
if (0 == index) {
|
if (index == 0) {
|
||||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||||
self.tabContent = tabContent;
|
self.tabContent = tabContent;
|
||||||
}
|
}
|
||||||
|
|
||||||
var controller = tabControllers[index];
|
let controller = tabControllers[index];
|
||||||
|
|
||||||
if (!controller) {
|
if (!controller) {
|
||||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||||
|
@ -353,10 +371,10 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
var currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId));
|
var currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId));
|
||||||
|
|
||||||
self.initTab = function () {
|
self.initTab = function () {
|
||||||
var tabContent = view.querySelector(".pageTabContent[data-index='0']");
|
const tabContent = view.querySelector(".pageTabContent[data-index='0']");
|
||||||
var containers = tabContent.querySelectorAll('.itemsContainer');
|
const containers = tabContent.querySelectorAll('.itemsContainer');
|
||||||
|
|
||||||
for (var i = 0, length = containers.length; i < length; i++) {
|
for (let i = 0, length = containers.length; i < length; i++) {
|
||||||
setScrollClasses(containers[i], enableScrollX());
|
setScrollClasses(containers[i], enableScrollX());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -365,12 +383,12 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
reload();
|
reload();
|
||||||
};
|
};
|
||||||
|
|
||||||
var tabControllers = [];
|
const tabControllers = [];
|
||||||
var renderedTabs = [];
|
const renderedTabs = [];
|
||||||
view.addEventListener('viewshow', function (e) {
|
view.addEventListener('viewshow', function (e) {
|
||||||
initTabs();
|
initTabs();
|
||||||
if (!view.getAttribute('data-title')) {
|
if (!view.getAttribute('data-title')) {
|
||||||
var parentId = params.topParentId;
|
const parentId = params.topParentId;
|
||||||
|
|
||||||
if (parentId) {
|
if (parentId) {
|
||||||
ApiClient.getItem(ApiClient.getCurrentUserId(), parentId).then(function (item) {
|
ApiClient.getItem(ApiClient.getCurrentUserId(), parentId).then(function (item) {
|
||||||
|
@ -395,5 +413,6 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', '
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
});
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userSettings', 'globalize', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, listView, loading, userSettings, globalize) {
|
import events from 'events';
|
||||||
'use strict';
|
import libraryBrowser from 'libraryBrowser';
|
||||||
|
import imageLoader from 'imageLoader';
|
||||||
|
import listView from 'listView';
|
||||||
|
import loading from 'loading';
|
||||||
|
import * as userSettings from 'userSettings';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import 'emby-itemscontainer';
|
||||||
|
|
||||||
return function (view, params, tabContent) {
|
/* eslint-disable indent */
|
||||||
|
|
||||||
|
export default function (view, params, tabContent) {
|
||||||
function getPageData(context) {
|
function getPageData(context) {
|
||||||
var key = getSavedQueryKey(context);
|
const key = getSavedQueryKey(context);
|
||||||
var pageData = data[key];
|
let pageData = data[key];
|
||||||
|
|
||||||
if (!pageData) {
|
if (!pageData) {
|
||||||
pageData = data[key] = {
|
pageData = data[key] = {
|
||||||
|
@ -46,7 +54,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS
|
||||||
function reloadItems(page) {
|
function reloadItems(page) {
|
||||||
loading.show();
|
loading.show();
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
var query = getQuery(page);
|
const query = getQuery(page);
|
||||||
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
|
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
|
||||||
function onNextPageClick() {
|
function onNextPageClick() {
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
|
@ -71,9 +79,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS
|
||||||
}
|
}
|
||||||
|
|
||||||
window.scrollTo(0, 0);
|
window.scrollTo(0, 0);
|
||||||
var i;
|
const pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||||
var length;
|
|
||||||
var pagingHtml = libraryBrowser.getQueryPagingHtml({
|
|
||||||
startIndex: query.StartIndex,
|
startIndex: query.StartIndex,
|
||||||
limit: query.Limit,
|
limit: query.Limit,
|
||||||
totalRecordCount: result.TotalRecordCount,
|
totalRecordCount: result.TotalRecordCount,
|
||||||
|
@ -83,49 +89,49 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS
|
||||||
sortButton: false,
|
sortButton: false,
|
||||||
filterButton: false
|
filterButton: false
|
||||||
});
|
});
|
||||||
var html = listView.getListViewHtml({
|
const html = listView.getListViewHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
action: 'playallfromhere',
|
action: 'playallfromhere',
|
||||||
smallIcon: true,
|
smallIcon: true,
|
||||||
artist: true,
|
artist: true,
|
||||||
addToListButton: true
|
addToListButton: true
|
||||||
});
|
});
|
||||||
var elems = tabContent.querySelectorAll('.paging');
|
let elems = tabContent.querySelectorAll('.paging');
|
||||||
|
|
||||||
for (i = 0, length = elems.length; i < length; i++) {
|
for (let i = 0, length = elems.length; i < length; i++) {
|
||||||
elems[i].innerHTML = pagingHtml;
|
elems[i].innerHTML = pagingHtml;
|
||||||
}
|
}
|
||||||
|
|
||||||
elems = tabContent.querySelectorAll('.btnNextPage');
|
elems = tabContent.querySelectorAll('.btnNextPage');
|
||||||
for (i = 0, length = elems.length; i < length; i++) {
|
for (let 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++) {
|
for (let i = 0, length = elems.length; i < length; i++) {
|
||||||
elems[i].addEventListener('click', onPreviousPageClick);
|
elems[i].addEventListener('click', onPreviousPageClick);
|
||||||
}
|
}
|
||||||
|
|
||||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||||
itemsContainer.innerHTML = html;
|
itemsContainer.innerHTML = html;
|
||||||
imageLoader.lazyChildren(itemsContainer);
|
imageLoader.lazyChildren(itemsContainer);
|
||||||
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||||
loading.hide();
|
loading.hide();
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
|
|
||||||
require(['autoFocuser'], function (autoFocuser) {
|
import('autoFocuser').then(({default: autoFocuser}) => {
|
||||||
autoFocuser.autoFocus(page);
|
autoFocuser.autoFocus(page);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var self = this;
|
const self = this;
|
||||||
var data = {};
|
const data = {};
|
||||||
var isLoading = false;
|
let isLoading = false;
|
||||||
|
|
||||||
self.showFilterMenu = function () {
|
self.showFilterMenu = function () {
|
||||||
require(['components/filterdialog/filterdialog'], function ({default: filterDialogFactory}) {
|
import('components/filterdialog/filterdialog').then(({default: filterDialogFactory}) => {
|
||||||
var filterDialog = new filterDialogFactory({
|
const filterDialog = new filterDialogFactory({
|
||||||
query: getQuery(tabContent),
|
query: getQuery(tabContent),
|
||||||
mode: 'songs',
|
mode: 'songs',
|
||||||
serverId: ApiClient.serverId()
|
serverId: ApiClient.serverId()
|
||||||
|
@ -193,5 +199,6 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS
|
||||||
};
|
};
|
||||||
|
|
||||||
self.destroy = function () {};
|
self.destroy = function () {};
|
||||||
};
|
}
|
||||||
});
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
<span class="xlargePaperIconButton material-icons fiber_manual_record"></span>
|
<span class="xlargePaperIconButton material-icons fiber_manual_record"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button is="paper-icon-button-light" class="btnPreviousTrack autoSize hide">
|
<button is="paper-icon-button-light" class="btnPreviousTrack autoSize hide" title="${PreviousTrack}">
|
||||||
<span class="xlargePaperIconButton material-icons skip_previous"></span>
|
<span class="xlargePaperIconButton material-icons skip_previous"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
<span class="xlargePaperIconButton material-icons fast_forward"></span>
|
<span class="xlargePaperIconButton material-icons fast_forward"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button is="paper-icon-button-light" class="btnNextTrack autoSize hide">
|
<button is="paper-icon-button-light" class="btnNextTrack autoSize hide" title="${NextTrack}">
|
||||||
<span class="xlargePaperIconButton material-icons skip_next"></span>
|
<span class="xlargePaperIconButton material-icons skip_next"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import playbackManager from 'playbackManager';
|
import playbackManager from 'playbackManager';
|
||||||
import dom from 'dom';
|
import dom from 'dom';
|
||||||
import inputManager from 'inputManager';
|
import inputManager from 'inputManager';
|
||||||
|
import mouseManager from 'mouseManager';
|
||||||
import datetime from 'datetime';
|
import datetime from 'datetime';
|
||||||
import itemHelper from 'itemHelper';
|
import itemHelper from 'itemHelper';
|
||||||
import mediaInfo from 'mediaInfo';
|
import mediaInfo from 'mediaInfo';
|
||||||
|
@ -21,18 +22,18 @@ import 'css!assets/css/videoosd';
|
||||||
/* eslint-disable indent */
|
/* eslint-disable indent */
|
||||||
|
|
||||||
function seriesImageUrl(item, options) {
|
function seriesImageUrl(item, options) {
|
||||||
if ('Episode' !== item.Type) {
|
if (item.Type !== 'Episode') {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
options = options || {};
|
options = options || {};
|
||||||
options.type = options.type || 'Primary';
|
options.type = options.type || 'Primary';
|
||||||
if ('Primary' === options.type && item.SeriesPrimaryImageTag) {
|
if (options.type === 'Primary' && item.SeriesPrimaryImageTag) {
|
||||||
options.tag = item.SeriesPrimaryImageTag;
|
options.tag = item.SeriesPrimaryImageTag;
|
||||||
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
|
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Thumb' === options.type) {
|
if (options.type === 'Thumb') {
|
||||||
if (item.SeriesThumbImageTag) {
|
if (item.SeriesThumbImageTag) {
|
||||||
options.tag = item.SeriesThumbImageTag;
|
options.tag = item.SeriesThumbImageTag;
|
||||||
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
|
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options);
|
||||||
|
@ -56,7 +57,7 @@ import 'css!assets/css/videoosd';
|
||||||
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options);
|
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('Primary' === options.type && item.AlbumId && item.AlbumPrimaryImageTag) {
|
if (options.type === 'Primary' && item.AlbumId && item.AlbumPrimaryImageTag) {
|
||||||
options.tag = item.AlbumPrimaryImageTag;
|
options.tag = item.AlbumPrimaryImageTag;
|
||||||
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options);
|
return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options);
|
||||||
}
|
}
|
||||||
|
@ -103,7 +104,7 @@ import 'css!assets/css/videoosd';
|
||||||
function onDoubleClick(e) {
|
function onDoubleClick(e) {
|
||||||
const clientX = e.clientX;
|
const clientX = e.clientX;
|
||||||
|
|
||||||
if (null != clientX) {
|
if (clientX != null) {
|
||||||
if (clientX < dom.getWindowSize().innerWidth / 2) {
|
if (clientX < dom.getWindowSize().innerWidth / 2) {
|
||||||
playbackManager.rewind(currentPlayer);
|
playbackManager.rewind(currentPlayer);
|
||||||
} else {
|
} else {
|
||||||
|
@ -116,7 +117,7 @@ import 'css!assets/css/videoosd';
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDisplayItem(item) {
|
function getDisplayItem(item) {
|
||||||
if ('TvChannel' === item.Type) {
|
if (item.Type === 'TvChannel') {
|
||||||
const apiClient = connectionManager.getApiClient(item.ServerId);
|
const apiClient = connectionManager.getApiClient(item.ServerId);
|
||||||
return apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (refreshedItem) {
|
return apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (refreshedItem) {
|
||||||
return {
|
return {
|
||||||
|
@ -132,7 +133,7 @@ import 'css!assets/css/videoosd';
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateRecordingButton(item) {
|
function updateRecordingButton(item) {
|
||||||
if (!item || 'Program' !== item.Type) {
|
if (!item || item.Type !== 'Program') {
|
||||||
if (recordingButtonManager) {
|
if (recordingButtonManager) {
|
||||||
recordingButtonManager.destroy();
|
recordingButtonManager.destroy();
|
||||||
recordingButtonManager = null;
|
recordingButtonManager = null;
|
||||||
|
@ -175,8 +176,8 @@ import 'css!assets/css/videoosd';
|
||||||
const osdTitle = view.querySelector('.osdTitle');
|
const osdTitle = view.querySelector('.osdTitle');
|
||||||
titleElement = osdTitle;
|
titleElement = osdTitle;
|
||||||
let displayName = itemHelper.getDisplayName(displayItem, {
|
let displayName = itemHelper.getDisplayName(displayItem, {
|
||||||
includeParentInfo: 'Program' !== displayItem.Type,
|
includeParentInfo: displayItem.Type !== 'Program',
|
||||||
includeIndexNumber: 'Program' !== displayItem.Type
|
includeIndexNumber: displayItem.Type !== 'Program'
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!displayName) {
|
if (!displayName) {
|
||||||
|
@ -197,8 +198,8 @@ import 'css!assets/css/videoosd';
|
||||||
tomatoes: false,
|
tomatoes: false,
|
||||||
endsAt: false,
|
endsAt: false,
|
||||||
episodeTitle: false,
|
episodeTitle: false,
|
||||||
originalAirDate: 'Program' !== displayItem.Type,
|
originalAirDate: displayItem.Type !== 'Program',
|
||||||
episodeTitleIndexNumber: 'Program' !== displayItem.Type,
|
episodeTitleIndexNumber: displayItem.Type !== 'Program',
|
||||||
programIndicator: false
|
programIndicator: false
|
||||||
});
|
});
|
||||||
const osdMediaInfo = view.querySelector('.osdMediaInfo');
|
const osdMediaInfo = view.querySelector('.osdMediaInfo');
|
||||||
|
@ -270,7 +271,7 @@ import 'css!assets/css/videoosd';
|
||||||
}
|
}
|
||||||
|
|
||||||
function shouldEnableProgressByTimeOfDay(item) {
|
function shouldEnableProgressByTimeOfDay(item) {
|
||||||
return !('TvChannel' !== item.Type || !item.CurrentProgram);
|
return !(item.Type !== 'TvChannel' || !item.CurrentProgram);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateNowPlayingInfo(player, state) {
|
function updateNowPlayingInfo(player, state) {
|
||||||
|
@ -329,24 +330,24 @@ import 'css!assets/css/videoosd';
|
||||||
|
|
||||||
if (item) {
|
if (item) {
|
||||||
let imgUrl = seriesImageUrl(item, {
|
let imgUrl = seriesImageUrl(item, {
|
||||||
maxWidth: osdPoster.clientWidth * 2,
|
maxWidth: osdPoster.clientWidth,
|
||||||
type: 'Primary'
|
type: 'Primary'
|
||||||
}) || seriesImageUrl(item, {
|
}) || seriesImageUrl(item, {
|
||||||
maxWidth: osdPoster.clientWidth * 2,
|
maxWidth: osdPoster.clientWidth,
|
||||||
type: 'Thumb'
|
type: 'Thumb'
|
||||||
}) || imageUrl(item, {
|
}) || imageUrl(item, {
|
||||||
maxWidth: osdPoster.clientWidth * 2,
|
maxWidth: osdPoster.clientWidth,
|
||||||
type: 'Primary'
|
type: 'Primary'
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!imgUrl && secondaryItem && (imgUrl = seriesImageUrl(secondaryItem, {
|
if (!imgUrl && secondaryItem && (imgUrl = seriesImageUrl(secondaryItem, {
|
||||||
maxWidth: osdPoster.clientWidth * 2,
|
maxWidth: osdPoster.clientWidth,
|
||||||
type: 'Primary'
|
type: 'Primary'
|
||||||
}) || seriesImageUrl(secondaryItem, {
|
}) || seriesImageUrl(secondaryItem, {
|
||||||
maxWidth: osdPoster.clientWidth * 2,
|
maxWidth: osdPoster.clientWidth,
|
||||||
type: 'Thumb'
|
type: 'Thumb'
|
||||||
}) || imageUrl(secondaryItem, {
|
}) || imageUrl(secondaryItem, {
|
||||||
maxWidth: osdPoster.clientWidth * 2,
|
maxWidth: osdPoster.clientWidth,
|
||||||
type: 'Primary'
|
type: 'Primary'
|
||||||
})), imgUrl) {
|
})), imgUrl) {
|
||||||
return void (osdPoster.innerHTML = '<img src="' + imgUrl + '" />');
|
return void (osdPoster.innerHTML = '<img src="' + imgUrl + '" />');
|
||||||
|
@ -367,10 +368,11 @@ import 'css!assets/css/videoosd';
|
||||||
function hideOsd() {
|
function hideOsd() {
|
||||||
slideUpToHide(headerElement);
|
slideUpToHide(headerElement);
|
||||||
hideMainOsdControls();
|
hideMainOsdControls();
|
||||||
|
mouseManager.hideCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggleOsd() {
|
function toggleOsd() {
|
||||||
if ('osd' === currentVisibleMenu) {
|
if (currentVisibleMenu === 'osd') {
|
||||||
hideOsd();
|
hideOsd();
|
||||||
} else if (!currentVisibleMenu) {
|
} else if (!currentVisibleMenu) {
|
||||||
showOsd();
|
showOsd();
|
||||||
|
@ -431,10 +433,11 @@ import 'css!assets/css/videoosd';
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideMainOsdControls() {
|
function hideMainOsdControls() {
|
||||||
if ('osd' === currentVisibleMenu) {
|
if (currentVisibleMenu === 'osd') {
|
||||||
const elem = osdBottomElement;
|
const elem = osdBottomElement;
|
||||||
clearHideAnimationEventListeners(elem);
|
clearHideAnimationEventListeners(elem);
|
||||||
elem.classList.add('videoOsdBottom-hidden');
|
elem.classList.add('videoOsdBottom-hidden');
|
||||||
|
|
||||||
dom.addEventListener(elem, transitionEndEventName, onHideAnimationComplete, {
|
dom.addEventListener(elem, transitionEndEventName, onHideAnimationComplete, {
|
||||||
once: true
|
once: true
|
||||||
});
|
});
|
||||||
|
@ -460,7 +463,7 @@ import 'css!assets/css/videoosd';
|
||||||
}
|
}
|
||||||
|
|
||||||
function onPointerMove(e) {
|
function onPointerMove(e) {
|
||||||
if ('mouse' === (e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse'))) {
|
if ((e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse')) === 'mouse') {
|
||||||
const eventX = e.screenX || 0;
|
const eventX = e.screenX || 0;
|
||||||
const eventY = e.screenY || 0;
|
const eventY = e.screenY || 0;
|
||||||
const obj = lastPointerMoveData;
|
const obj = lastPointerMoveData;
|
||||||
|
@ -488,7 +491,7 @@ import 'css!assets/css/videoosd';
|
||||||
|
|
||||||
switch (e.detail.command) {
|
switch (e.detail.command) {
|
||||||
case 'left':
|
case 'left':
|
||||||
if ('osd' === currentVisibleMenu) {
|
if (currentVisibleMenu === 'osd') {
|
||||||
showOsd();
|
showOsd();
|
||||||
} else {
|
} else {
|
||||||
if (!currentVisibleMenu) {
|
if (!currentVisibleMenu) {
|
||||||
|
@ -500,7 +503,7 @@ import 'css!assets/css/videoosd';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'right':
|
case 'right':
|
||||||
if ('osd' === currentVisibleMenu) {
|
if (currentVisibleMenu === 'osd') {
|
||||||
showOsd();
|
showOsd();
|
||||||
} else if (!currentVisibleMenu) {
|
} else if (!currentVisibleMenu) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
@ -615,7 +618,7 @@ import 'css!assets/css/videoosd';
|
||||||
resetUpNextDialog();
|
resetUpNextDialog();
|
||||||
console.debug('nowplaying event: ' + e.type);
|
console.debug('nowplaying event: ' + e.type);
|
||||||
|
|
||||||
if ('Video' !== state.NextMediaType) {
|
if (state.NextMediaType !== 'Video') {
|
||||||
view.removeEventListener('viewbeforehide', onViewHideStopPlayback);
|
view.removeEventListener('viewbeforehide', onViewHideStopPlayback);
|
||||||
Emby.Page.back();
|
Emby.Page.back();
|
||||||
}
|
}
|
||||||
|
@ -702,7 +705,7 @@ import 'css!assets/css/videoosd';
|
||||||
}
|
}
|
||||||
|
|
||||||
function showComingUpNextIfNeeded(player, currentItem, currentTimeTicks, runtimeTicks) {
|
function showComingUpNextIfNeeded(player, currentItem, currentTimeTicks, runtimeTicks) {
|
||||||
if (runtimeTicks && currentTimeTicks && !comingUpNextDisplayed && !currentVisibleMenu && 'Episode' === currentItem.Type && userSettings.enableNextVideoInfoOverlay()) {
|
if (runtimeTicks && currentTimeTicks && !comingUpNextDisplayed && !currentVisibleMenu && currentItem.Type === 'Episode' && userSettings.enableNextVideoInfoOverlay()) {
|
||||||
const showAtSecondsLeft = runtimeTicks >= 3e10 ? 40 : runtimeTicks >= 24e9 ? 35 : 30;
|
const showAtSecondsLeft = runtimeTicks >= 3e10 ? 40 : runtimeTicks >= 24e9 ? 35 : 30;
|
||||||
const showAtTicks = runtimeTicks - 1e3 * showAtSecondsLeft * 1e4;
|
const showAtTicks = runtimeTicks - 1e3 * showAtSecondsLeft * 1e4;
|
||||||
const timeRemainingTicks = runtimeTicks - currentTimeTicks;
|
const timeRemainingTicks = runtimeTicks - currentTimeTicks;
|
||||||
|
@ -714,7 +717,7 @@ import 'css!assets/css/videoosd';
|
||||||
}
|
}
|
||||||
|
|
||||||
function onUpNextHidden() {
|
function onUpNextHidden() {
|
||||||
if ('upnext' === currentVisibleMenu) {
|
if (currentVisibleMenu === 'upnext') {
|
||||||
currentVisibleMenu = null;
|
currentVisibleMenu = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -737,7 +740,7 @@ import 'css!assets/css/videoosd';
|
||||||
}
|
}
|
||||||
|
|
||||||
function refreshProgramInfoIfNeeded(player, item) {
|
function refreshProgramInfoIfNeeded(player, item) {
|
||||||
if ('TvChannel' === item.Type) {
|
if (item.Type === 'TvChannel') {
|
||||||
const program = item.CurrentProgram;
|
const program = item.CurrentProgram;
|
||||||
|
|
||||||
if (program && program.EndDate) {
|
if (program && program.EndDate) {
|
||||||
|
@ -778,7 +781,7 @@ import 'css!assets/css/videoosd';
|
||||||
updatePlayPauseState(playState.IsPaused);
|
updatePlayPauseState(playState.IsPaused);
|
||||||
const supportedCommands = playbackManager.getSupportedCommands(player);
|
const supportedCommands = playbackManager.getSupportedCommands(player);
|
||||||
currentPlayerSupportedCommands = supportedCommands;
|
currentPlayerSupportedCommands = supportedCommands;
|
||||||
supportsBrightnessChange = -1 !== supportedCommands.indexOf('SetBrightness');
|
supportsBrightnessChange = supportedCommands.indexOf('SetBrightness') !== -1;
|
||||||
updatePlayerVolumeState(player, playState.IsMuted, playState.VolumeLevel);
|
updatePlayerVolumeState(player, playState.IsMuted, playState.VolumeLevel);
|
||||||
|
|
||||||
if (nowPlayingPositionSlider && !nowPlayingPositionSlider.dragging) {
|
if (nowPlayingPositionSlider && !nowPlayingPositionSlider.dragging) {
|
||||||
|
@ -792,13 +795,13 @@ import 'css!assets/css/videoosd';
|
||||||
updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playState.PlaybackStartTimeTicks, playState.BufferedRanges || []);
|
updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playState.PlaybackStartTimeTicks, playState.BufferedRanges || []);
|
||||||
updateNowPlayingInfo(player, state);
|
updateNowPlayingInfo(player, state);
|
||||||
|
|
||||||
if (state.MediaSource && state.MediaSource.SupportsTranscoding && -1 !== supportedCommands.indexOf('SetMaxStreamingBitrate')) {
|
if (state.MediaSource && state.MediaSource.SupportsTranscoding && supportedCommands.indexOf('SetMaxStreamingBitrate') !== -1) {
|
||||||
view.querySelector('.btnVideoOsdSettings').classList.remove('hide');
|
view.querySelector('.btnVideoOsdSettings').classList.remove('hide');
|
||||||
} else {
|
} else {
|
||||||
view.querySelector('.btnVideoOsdSettings').classList.add('hide');
|
view.querySelector('.btnVideoOsdSettings').classList.add('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
const isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks;
|
const isProgressClear = state.MediaSource && state.MediaSource.RunTimeTicks == null;
|
||||||
nowPlayingPositionSlider.setIsClear(isProgressClear);
|
nowPlayingPositionSlider.setIsClear(isProgressClear);
|
||||||
|
|
||||||
if (nowPlayingItem.RunTimeTicks) {
|
if (nowPlayingItem.RunTimeTicks) {
|
||||||
|
@ -806,19 +809,19 @@ import 'css!assets/css/videoosd';
|
||||||
userSettings.skipForwardLength() * 1000000 / nowPlayingItem.RunTimeTicks);
|
userSettings.skipForwardLength() * 1000000 / nowPlayingItem.RunTimeTicks);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-1 === supportedCommands.indexOf('ToggleFullscreen') || player.isLocalPlayer && layoutManager.tv && playbackManager.isFullscreen(player)) {
|
if (supportedCommands.indexOf('ToggleFullscreen') === -1 || player.isLocalPlayer && layoutManager.tv && playbackManager.isFullscreen(player)) {
|
||||||
view.querySelector('.btnFullscreen').classList.add('hide');
|
view.querySelector('.btnFullscreen').classList.add('hide');
|
||||||
} else {
|
} else {
|
||||||
view.querySelector('.btnFullscreen').classList.remove('hide');
|
view.querySelector('.btnFullscreen').classList.remove('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-1 === supportedCommands.indexOf('PictureInPicture')) {
|
if (supportedCommands.indexOf('PictureInPicture') === -1) {
|
||||||
view.querySelector('.btnPip').classList.add('hide');
|
view.querySelector('.btnPip').classList.add('hide');
|
||||||
} else {
|
} else {
|
||||||
view.querySelector('.btnPip').classList.remove('hide');
|
view.querySelector('.btnPip').classList.remove('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-1 === supportedCommands.indexOf('AirPlay')) {
|
if (supportedCommands.indexOf('AirPlay') === -1) {
|
||||||
view.querySelector('.btnAirPlay').classList.add('hide');
|
view.querySelector('.btnAirPlay').classList.add('hide');
|
||||||
} else {
|
} else {
|
||||||
view.querySelector('.btnAirPlay').classList.remove('hide');
|
view.querySelector('.btnAirPlay').classList.remove('hide');
|
||||||
|
@ -866,7 +869,7 @@ import 'css!assets/css/videoosd';
|
||||||
nowPlayingPositionSlider.value = 0;
|
nowPlayingPositionSlider.value = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (runtimeTicks && null != positionTicks && currentRuntimeTicks && !enableProgressByTimeOfDay && currentItem.RunTimeTicks && 'Recording' !== currentItem.Type) {
|
if (runtimeTicks && positionTicks != null && currentRuntimeTicks && !enableProgressByTimeOfDay && currentItem.RunTimeTicks && currentItem.Type !== 'Recording') {
|
||||||
endsAtText.innerHTML = ' - ' + mediaInfo.getEndsAtFromPosition(runtimeTicks, positionTicks, true);
|
endsAtText.innerHTML = ' - ' + mediaInfo.getEndsAtFromPosition(runtimeTicks, positionTicks, true);
|
||||||
} else {
|
} else {
|
||||||
endsAtText.innerHTML = '';
|
endsAtText.innerHTML = '';
|
||||||
|
@ -887,11 +890,11 @@ import 'css!assets/css/videoosd';
|
||||||
let showMuteButton = true;
|
let showMuteButton = true;
|
||||||
let showVolumeSlider = true;
|
let showVolumeSlider = true;
|
||||||
|
|
||||||
if (-1 === supportedCommands.indexOf('Mute')) {
|
if (supportedCommands.indexOf('Mute') === -1) {
|
||||||
showMuteButton = false;
|
showMuteButton = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-1 === supportedCommands.indexOf('SetVolume')) {
|
if (supportedCommands.indexOf('SetVolume') === -1) {
|
||||||
showVolumeSlider = false;
|
showVolumeSlider = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -942,7 +945,7 @@ import 'css!assets/css/videoosd';
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateTimeText(elem, ticks, divider) {
|
function updateTimeText(elem, ticks, divider) {
|
||||||
if (null == ticks) {
|
if (ticks == null) {
|
||||||
elem.innerHTML = '';
|
elem.innerHTML = '';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -984,9 +987,9 @@ import 'css!assets/css/videoosd';
|
||||||
}
|
}
|
||||||
|
|
||||||
function onSettingsOption(selectedOption) {
|
function onSettingsOption(selectedOption) {
|
||||||
if ('stats' === selectedOption) {
|
if (selectedOption === 'stats') {
|
||||||
toggleStats();
|
toggleStats();
|
||||||
} else if ('suboffset' === selectedOption) {
|
} else if (selectedOption === 'suboffset') {
|
||||||
const player = currentPlayer;
|
const player = currentPlayer;
|
||||||
if (player) {
|
if (player) {
|
||||||
playbackManager.enableShowingSubtitleOffset(player);
|
playbackManager.enableShowingSubtitleOffset(player);
|
||||||
|
@ -1060,7 +1063,7 @@ import 'css!assets/css/videoosd';
|
||||||
const streams = playbackManager.subtitleTracks(player);
|
const streams = playbackManager.subtitleTracks(player);
|
||||||
let currentIndex = playbackManager.getSubtitleStreamIndex(player);
|
let currentIndex = playbackManager.getSubtitleStreamIndex(player);
|
||||||
|
|
||||||
if (null == currentIndex) {
|
if (currentIndex == null) {
|
||||||
currentIndex = -1;
|
currentIndex = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1131,8 +1134,9 @@ import 'css!assets/css/videoosd';
|
||||||
clickedElement = e.target;
|
clickedElement = e.target;
|
||||||
|
|
||||||
const key = keyboardnavigation.getKeyName(e);
|
const key = keyboardnavigation.getKeyName(e);
|
||||||
|
const isKeyModified = e.ctrlKey || e.altKey || e.metaKey;
|
||||||
|
|
||||||
if (!currentVisibleMenu && 32 === e.keyCode) {
|
if (!currentVisibleMenu && e.keyCode === 32) {
|
||||||
playbackManager.playPause(currentPlayer);
|
playbackManager.playPause(currentPlayer);
|
||||||
showOsd();
|
showOsd();
|
||||||
return;
|
return;
|
||||||
|
@ -1235,8 +1239,10 @@ import 'css!assets/css/videoosd';
|
||||||
case '7':
|
case '7':
|
||||||
case '8':
|
case '8':
|
||||||
case '9': {
|
case '9': {
|
||||||
|
if (!isKeyModified) {
|
||||||
const percent = parseInt(key, 10) * 10;
|
const percent = parseInt(key, 10) * 10;
|
||||||
playbackManager.seekPercent(percent, currentPlayer);
|
playbackManager.seekPercent(percent, currentPlayer);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,21 +3,21 @@ import globalize from 'globalize';
|
||||||
/* eslint-disable indent */
|
/* eslint-disable indent */
|
||||||
|
|
||||||
function processForgotPasswordResult(result) {
|
function processForgotPasswordResult(result) {
|
||||||
if ('ContactAdmin' == result.Action) {
|
if (result.Action == 'ContactAdmin') {
|
||||||
return void Dashboard.alert({
|
return void Dashboard.alert({
|
||||||
message: globalize.translate('MessageContactAdminToResetPassword'),
|
message: globalize.translate('MessageContactAdminToResetPassword'),
|
||||||
title: globalize.translate('HeaderForgotPassword')
|
title: globalize.translate('HeaderForgotPassword')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('InNetworkRequired' == result.Action) {
|
if (result.Action == 'InNetworkRequired') {
|
||||||
return void Dashboard.alert({
|
return void Dashboard.alert({
|
||||||
message: globalize.translate('MessageForgotPasswordInNetworkRequired'),
|
message: globalize.translate('MessageForgotPasswordInNetworkRequired'),
|
||||||
title: globalize.translate('HeaderForgotPassword')
|
title: globalize.translate('HeaderForgotPassword')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('PinCode' == result.Action) {
|
if (result.Action == 'PinCode') {
|
||||||
let msg = globalize.translate('MessageForgotPasswordFileCreated');
|
let msg = globalize.translate('MessageForgotPasswordFileCreated');
|
||||||
msg += '<br/>';
|
msg += '<br/>';
|
||||||
msg += '<br/>';
|
msg += '<br/>';
|
||||||
|
|
|
@ -58,7 +58,7 @@ import 'emby-itemscontainer';
|
||||||
const viewStyle = self.getCurrentViewStyle();
|
const viewStyle = self.getCurrentViewStyle();
|
||||||
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||||
|
|
||||||
if ('List' == viewStyle) {
|
if (viewStyle == 'List') {
|
||||||
itemsContainer.classList.add('vertical-list');
|
itemsContainer.classList.add('vertical-list');
|
||||||
itemsContainer.classList.remove('vertical-wrap');
|
itemsContainer.classList.remove('vertical-wrap');
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -62,13 +62,13 @@ import 'emby-button';
|
||||||
const elem = entry.target;
|
const elem = entry.target;
|
||||||
const id = elem.getAttribute('data-id');
|
const id = elem.getAttribute('data-id');
|
||||||
const viewStyle = self.getCurrentViewStyle();
|
const viewStyle = self.getCurrentViewStyle();
|
||||||
let limit = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 5 : 9;
|
let limit = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 5 : 9;
|
||||||
|
|
||||||
if (enableScrollX()) {
|
if (enableScrollX()) {
|
||||||
limit = 10;
|
limit = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
const enableImageTypes = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 'Primary,Backdrop,Thumb' : 'Primary';
|
const enableImageTypes = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 'Primary,Backdrop,Thumb' : 'Primary';
|
||||||
const query = {
|
const query = {
|
||||||
SortBy: 'SortName',
|
SortBy: 'SortName',
|
||||||
SortOrder: 'Ascending',
|
SortOrder: 'Ascending',
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue