1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge pull request #1675 from Camc314/migrate-to-ES6-45

Migration of list and screensavermanager to ES6 modules
This commit is contained in:
Anthony Lavado 2020-08-07 20:55:09 -04:00 committed by GitHub
commit 1ffe388faf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 271 additions and 269 deletions

View file

@ -216,6 +216,7 @@
"src/controllers/dashboard/users/userparentalcontrol.js", "src/controllers/dashboard/users/userparentalcontrol.js",
"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/edititemmetadata.js", "src/controllers/edititemmetadata.js",
"src/controllers/favorites.js", "src/controllers/favorites.js",
"src/controllers/hometab.js", "src/controllers/hometab.js",
@ -276,6 +277,7 @@
"src/elements/emby-tabs/emby-tabs.js", "src/elements/emby-tabs/emby-tabs.js",
"src/elements/emby-textarea/emby-textarea.js", "src/elements/emby-textarea/emby-textarea.js",
"src/elements/emby-toggle/emby-toggle.js", "src/elements/emby-toggle/emby-toggle.js",
"src/libraries/screensavermanager.js",
"src/libraries/navdrawer/navdrawer.js", "src/libraries/navdrawer/navdrawer.js",
"src/libraries/scroller.js", "src/libraries/scroller.js",
"src/plugins/backdropScreensaver/plugin.js", "src/plugins/backdropScreensaver/plugin.js",

View file

@ -1,12 +1,21 @@
define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager', 'cardBuilder', 'loading', 'connectionManager', 'alphaNumericShortcuts', 'playbackManager', 'alphaPicker', 'emby-itemscontainer', 'emby-scroller'], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, playbackManager, AlphaPicker) { import globalize from 'globalize';
'use strict'; import listView from 'listView';
import layoutManager from 'layoutManager';
import * as userSettings from 'userSettings';
import focusManager from 'focusManager';
import cardBuilder from 'cardBuilder';
import loading from 'loading';
import connectionManager from 'connectionManager';
import AlphaNumericShortcuts from 'alphaNumericShortcuts';
import playbackManager from 'playbackManager';
import AlphaPicker from 'alphaPicker';
import 'emby-itemscontainer';
import 'emby-scroller';
playbackManager = playbackManager.default || playbackManager; /* eslint-disable indent */
loading = loading.default || loading;
focusManager = focusManager.default || focusManager;
function getInitialLiveTvQuery(instance, params) { function getInitialLiveTvQuery(instance, params) {
var query = { const query = {
UserId: connectionManager.getApiClient(params.serverId).getCurrentUserId(), UserId: connectionManager.getApiClient(params.serverId).getCurrentUserId(),
StartIndex: 0, StartIndex: 0,
Fields: 'ChannelInfo,PrimaryImageAspectRatio', Fields: 'ChannelInfo,PrimaryImageAspectRatio',
@ -63,7 +72,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function modifyQueryWithFilters(instance, query) { function modifyQueryWithFilters(instance, query) {
var sortValues = instance.getSortValues(); const sortValues = instance.getSortValues();
if (!query.SortBy) { if (!query.SortBy) {
query.SortBy = sortValues.sortBy; query.SortBy = sortValues.sortBy;
@ -72,9 +81,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
query.Fields = query.Fields ? query.Fields + ',PrimaryImageAspectRatio' : 'PrimaryImageAspectRatio'; query.Fields = query.Fields ? query.Fields + ',PrimaryImageAspectRatio' : 'PrimaryImageAspectRatio';
query.ImageTypeLimit = 1; query.ImageTypeLimit = 1;
var hasFilters; let hasFilters;
var queryFilters = []; const queryFilters = [];
var filters = instance.getFilters(); const filters = instance.getFilters();
if (filters.IsPlayed) { if (filters.IsPlayed) {
queryFilters.push('IsPlayed'); queryFilters.push('IsPlayed');
@ -168,21 +177,21 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function updateSortText(instance) { function updateSortText(instance) {
var btnSortText = instance.btnSortText; const btnSortText = instance.btnSortText;
if (btnSortText) { if (btnSortText) {
var options = instance.getSortMenuOptions(); const options = instance.getSortMenuOptions();
var values = instance.getSortValues(); const values = instance.getSortValues();
var sortBy = values.sortBy; const sortBy = values.sortBy;
for (var i = 0, length = options.length; i < length; i++) { for (const option of options) {
if (sortBy === options[i].value) { if (sortBy === option.value) {
btnSortText.innerHTML = globalize.translate('SortByValue', options[i].name); btnSortText.innerHTML = globalize.translate('SortByValue', option.name);
break; break;
} }
} }
var btnSortIcon = instance.btnSortIcon; const btnSortIcon = instance.btnSortIcon;
if (btnSortIcon) { if (btnSortIcon) {
setSortButtonIcon(btnSortIcon, values.sortOrder === 'Descending' ? 'arrow_downward' : 'arrow_upward'); setSortButtonIcon(btnSortIcon, values.sortOrder === 'Descending' ? 'arrow_downward' : 'arrow_upward');
@ -202,10 +211,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
function updateAlphaPickerState(instance, numItems) { function updateAlphaPickerState(instance, numItems) {
if (instance.alphaPicker) { if (instance.alphaPicker) {
var alphaPicker = instance.alphaPickerElement; const alphaPicker = instance.alphaPickerElement;
if (alphaPicker) { if (alphaPicker) {
var values = instance.getSortValues(); const values = instance.getSortValues();
if (numItems == null) { if (numItems == null) {
numItems = 100; numItems = 100;
@ -223,7 +232,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function getItems(instance, params, item, sortBy, startIndex, limit) { function getItems(instance, params, item, sortBy, startIndex, limit) {
var apiClient = connectionManager.getApiClient(params.serverId); const apiClient = connectionManager.getApiClient(params.serverId);
instance.queryRecursive = false; instance.queryRecursive = false;
if (params.type === 'Recordings') { if (params.type === 'Recordings') {
@ -252,7 +261,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
if (!item) { if (!item) {
instance.queryRecursive = true; instance.queryRecursive = true;
var method = 'getItems'; let method = 'getItems';
if (params.type === 'MusicArtist') { if (params.type === 'MusicArtist') {
method = 'getArtists'; method = 'getArtists';
@ -275,7 +284,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
if (item.Type === 'Genre' || item.Type === 'MusicGenre' || item.Type === 'Studio' || item.Type === 'Person') { if (item.Type === 'Genre' || item.Type === 'MusicGenre' || item.Type === 'Studio' || item.Type === 'Person') {
instance.queryRecursive = true; instance.queryRecursive = true;
var query = { const query = {
StartIndex: startIndex, StartIndex: startIndex,
Limit: limit, Limit: limit,
Fields: 'PrimaryImageAspectRatio,SortName', Fields: 'PrimaryImageAspectRatio,SortName',
@ -324,8 +333,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
return Promise.resolve(null); return Promise.resolve(null);
} }
var apiClient = connectionManager.getApiClient(params.serverId); const apiClient = connectionManager.getApiClient(params.serverId);
var itemId = params.genreId || params.musicGenreId || params.studioId || params.personId || params.parentId; const itemId = params.genreId || params.musicGenreId || params.studioId || params.personId || params.parentId;
if (itemId) { if (itemId) {
return apiClient.getItem(apiClient.getCurrentUserId(), itemId); return apiClient.getItem(apiClient.getCurrentUserId(), itemId);
@ -335,9 +344,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function showViewSettingsMenu() { function showViewSettingsMenu() {
var instance = this; const instance = this;
require(['viewSettings'], function (ViewSettings) { import('viewSettings').then(({default: ViewSettings}) => {
new ViewSettings().show({ new ViewSettings().show({
settingsKey: instance.getSettingsKey(), settingsKey: instance.getSettingsKey(),
settings: instance.getViewSettings(), settings: instance.getViewSettings(),
@ -350,9 +359,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function showFilterMenu() { function showFilterMenu() {
var instance = this; const instance = this;
require(['filterMenu'], function (FilterMenu) { import('filterMenu').then(({default: FilterMenu}) => {
new FilterMenu().show({ new FilterMenu().show({
settingsKey: instance.getSettingsKey(), settingsKey: instance.getSettingsKey(),
settings: instance.getFilters(), settings: instance.getFilters(),
@ -369,9 +378,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function showSortMenu() { function showSortMenu() {
var instance = this; const instance = this;
require(['sortMenu'], function (SortMenu) { import('sortMenu').then(({default: SortMenu}) => {
new SortMenu().show({ new SortMenu().show({
settingsKey: instance.getSettingsKey(), settingsKey: instance.getSettingsKey(),
settings: instance.getSortValues(), settings: instance.getSortValues(),
@ -387,10 +396,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function onNewItemClick() { function onNewItemClick() {
var instance = this; const instance = this;
require(['playlistEditor'], function (playlistEditor) { import('playlistEditor').then(({default: playlistEditor}) => {
new playlistEditor.showEditor({ new playlistEditor({
items: [], items: [],
serverId: instance.params.serverId serverId: instance.params.serverId
}); });
@ -398,22 +407,23 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function hideOrShowAll(elems, hide) { function hideOrShowAll(elems, hide) {
for (var i = 0, length = elems.length; i < length; i++) { for (const elem of elems) {
if (hide) { if (hide) {
elems[i].classList.add('hide'); elem.classList.add('hide');
} else { } else {
elems[i].classList.remove('hide'); elem.classList.remove('hide');
} }
} }
} }
function bindAll(elems, eventName, fn) { function bindAll(elems, eventName, fn) {
for (var i = 0, length = elems.length; i < length; i++) { for (const elem of elems) {
elems[i].addEventListener(eventName, fn); elem.addEventListener(eventName, fn);
} }
} }
function ItemsView(view, params) { class ItemsView {
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 (self.totalItemCount == null) { if (self.totalItemCount == null) {
@ -426,7 +436,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function getItemsHtml(items) { function getItemsHtml(items) {
var settings = self.getViewSettings(); const settings = self.getViewSettings();
if (settings.imageType === 'list') { if (settings.imageType === 'list') {
return listView.getListViewHtml({ return listView.getListViewHtml({
@ -434,13 +444,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}); });
} }
var shape; let shape;
var preferThumb; let preferThumb;
var preferDisc; let preferDisc;
var preferLogo; let preferLogo;
var defaultShape; let defaultShape;
var item = self.currentItem; const item = self.currentItem;
var lines = settings.showTitle ? 2 : 0; let lines = settings.showTitle ? 2 : 0;
if (settings.imageType === 'banner') { if (settings.imageType === 'banner') {
shape = 'banner'; shape = 'banner';
@ -464,7 +474,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
shape = 'autoVertical'; shape = 'autoVertical';
} }
var posterOptions = { let posterOptions = {
shape: shape, shape: shape,
showTitle: settings.showTitle, showTitle: settings.showTitle,
showYear: settings.showTitle, showYear: settings.showTitle,
@ -497,19 +507,19 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
lines = 1; lines = 1;
} else if (params.type === 'Programs') { } else if (params.type === 'Programs') {
lines = settings.showTitle ? 1 : 0; lines = settings.showTitle ? 1 : 0;
var showParentTitle = settings.showTitle && params.IsMovie !== 'true'; const showParentTitle = settings.showTitle && params.IsMovie !== 'true';
if (showParentTitle) { if (showParentTitle) {
lines++; lines++;
} }
var showAirTime = settings.showTitle && params.type !== 'Recordings'; const showAirTime = settings.showTitle && params.type !== 'Recordings';
if (showAirTime) { if (showAirTime) {
lines++; lines++;
} }
var showYear = settings.showTitle && params.IsMovie === 'true' && params.type === 'Recordings'; const showYear = settings.showTitle && params.IsMovie === 'true' && params.type === 'Recordings';
if (showYear) { if (showYear) {
lines++; lines++;
@ -542,13 +552,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
function initAlphaPicker() { function initAlphaPicker() {
self.scroller = view.querySelector('.scrollFrameY'); self.scroller = view.querySelector('.scrollFrameY');
var alphaPickerElement = self.alphaPickerElement; const alphaPickerElement = self.alphaPickerElement;
alphaPickerElement.classList.add('alphaPicker-fixed-right'); alphaPickerElement.classList.add('alphaPicker-fixed-right');
alphaPickerElement.classList.add('focuscontainer-right'); alphaPickerElement.classList.add('focuscontainer-right');
self.itemsContainer.parentNode.classList.add('padded-right-withalphapicker'); self.itemsContainer.parentNode.classList.add('padded-right-withalphapicker');
self.alphaPicker = new AlphaPicker.default({ self.alphaPicker = new AlphaPicker({
element: alphaPickerElement, element: alphaPickerElement,
itemsContainer: layoutManager.tv ? self.itemsContainer : null, itemsContainer: layoutManager.tv ? self.itemsContainer : null,
itemClass: 'card', itemClass: 'card',
@ -653,7 +663,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function play() { function play() {
var currentItem = self.currentItem; const currentItem = self.currentItem;
if (currentItem && !self.hasFilters) { if (currentItem && !self.hasFilters) {
playbackManager.play({ playbackManager.play({
@ -669,7 +679,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function queue() { function queue() {
var currentItem = self.currentItem; const currentItem = self.currentItem;
if (currentItem && !self.hasFilters) { if (currentItem && !self.hasFilters) {
playbackManager.queue({ playbackManager.queue({
@ -685,7 +695,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function shuffle() { function shuffle() {
var currentItem = self.currentItem; const currentItem = self.currentItem;
if (currentItem && !self.hasFilters) { if (currentItem && !self.hasFilters) {
playbackManager.shuffle(currentItem); playbackManager.shuffle(currentItem);
@ -698,7 +708,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
} }
var self = this; const self = this;
self.params = params; self.params = params;
this.itemsContainer = view.querySelector('.itemsContainer'); this.itemsContainer = view.querySelector('.itemsContainer');
@ -712,20 +722,17 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
this.itemsContainer.setAttribute('data-refreshinterval', '300000'); this.itemsContainer.setAttribute('data-refreshinterval', '300000');
} }
var i; const btnViewSettings = view.querySelectorAll('.btnViewSettings');
var length;
var btnViewSettings = view.querySelectorAll('.btnViewSettings');
for (i = 0, length = btnViewSettings.length; i < length; i++) { for (const btnViewSetting of btnViewSettings) {
btnViewSettings[i].addEventListener('click', showViewSettingsMenu.bind(this)); btnViewSetting.addEventListener('click', showViewSettingsMenu.bind(this));
} }
var filterButtons = view.querySelectorAll('.btnFilter'); const filterButtons = view.querySelectorAll('.btnFilter');
this.filterButtons = filterButtons; this.filterButtons = filterButtons;
var hasVisibleFilters = this.getVisibleFilters().length; const hasVisibleFilters = this.getVisibleFilters().length;
for (i = 0, length = filterButtons.length; i < length; i++) { for (const btnFilter of filterButtons) {
var btnFilter = filterButtons[i];
btnFilter.addEventListener('click', showFilterMenu.bind(this)); btnFilter.addEventListener('click', showFilterMenu.bind(this));
if (hasVisibleFilters) { if (hasVisibleFilters) {
@ -735,10 +742,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
} }
var sortButtons = view.querySelectorAll('.btnSort'); const sortButtons = view.querySelectorAll('.btnSort');
for (this.sortButtons = sortButtons, i = 0, length = sortButtons.length; i < length; i++) { this.sortButtons = sortButtons;
var sortButton = sortButtons[i]; for (const sortButton of sortButtons) {
sortButton.addEventListener('click', showSortMenu.bind(this)); sortButton.addEventListener('click', showSortMenu.bind(this));
if (params.type !== 'nextup') { if (params.type !== 'nextup') {
@ -753,7 +760,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
self.itemsContainer.fetchData = fetchData; self.itemsContainer.fetchData = fetchData;
self.itemsContainer.getItemsHtml = getItemsHtml; self.itemsContainer.getItemsHtml = getItemsHtml;
view.addEventListener('viewshow', function (e) { view.addEventListener('viewshow', function (e) {
var isRestored = e.detail.isRestored; const isRestored = e.detail.isRestored;
if (!isRestored) { if (!isRestored) {
loading.show(); loading.show();
@ -765,7 +772,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
getItem(params).then(function (item) { getItem(params).then(function (item) {
setTitle(item); setTitle(item);
self.currentItem = item; self.currentItem = item;
var refresh = !isRestored; const refresh = !isRestored;
self.itemsContainer.resume({ self.itemsContainer.resume({
refresh: refresh refresh: refresh
}).then(function () { }).then(function () {
@ -780,7 +787,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
initAlphaPicker(); initAlphaPicker();
} }
var itemType = item ? item.Type : null; const itemType = item ? item.Type : null;
if (itemType === 'MusicGenre' || params.type !== 'Programs' && itemType !== 'Channel') { if (itemType === 'MusicGenre' || params.type !== 'Programs' && itemType !== 'Channel') {
hideOrShowAll(view.querySelectorAll('.btnPlay'), false); hideOrShowAll(view.querySelectorAll('.btnPlay'), false);
@ -807,18 +814,18 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
bindAll(view.querySelectorAll('.btnShuffle'), 'click', shuffle); bindAll(view.querySelectorAll('.btnShuffle'), 'click', shuffle);
} }
self.alphaNumericShortcuts = new AlphaNumericShortcuts.default({ self.alphaNumericShortcuts = new AlphaNumericShortcuts({
itemsContainer: self.itemsContainer itemsContainer: self.itemsContainer
}); });
}); });
view.addEventListener('viewhide', function (e) { view.addEventListener('viewhide', function (e) {
var itemsContainer = self.itemsContainer; const itemsContainer = self.itemsContainer;
if (itemsContainer) { if (itemsContainer) {
itemsContainer.pause(); itemsContainer.pause();
} }
var alphaNumericShortcuts = self.alphaNumericShortcuts; const alphaNumericShortcuts = self.alphaNumericShortcuts;
if (alphaNumericShortcuts) { if (alphaNumericShortcuts) {
alphaNumericShortcuts.destroy(); alphaNumericShortcuts.destroy();
@ -846,8 +853,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}); });
} }
ItemsView.prototype.getFilters = function () { getFilters() {
var basekey = this.getSettingsKey(); const basekey = this.getSettingsKey();
return { return {
IsPlayed: userSettings.getFilter(basekey + '-filter-IsPlayed') === 'true', IsPlayed: userSettings.getFilter(basekey + '-filter-IsPlayed') === 'true',
IsUnplayed: userSettings.getFilter(basekey + '-filter-IsUnplayed') === 'true', IsUnplayed: userSettings.getFilter(basekey + '-filter-IsUnplayed') === 'true',
@ -866,39 +873,37 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
HasThemeVideo: userSettings.getFilter(basekey + '-filter-HasThemeVideo'), HasThemeVideo: userSettings.getFilter(basekey + '-filter-HasThemeVideo'),
GenreIds: userSettings.getFilter(basekey + '-filter-GenreIds') GenreIds: userSettings.getFilter(basekey + '-filter-GenreIds')
}; };
}; }
ItemsView.prototype.getSortValues = function () { getSortValues() {
var basekey = this.getSettingsKey(); const basekey = this.getSettingsKey();
return { return {
sortBy: userSettings.getFilter(basekey + '-sortby') || this.getDefaultSortBy(), sortBy: userSettings.getFilter(basekey + '-sortby') || this.getDefaultSortBy(),
sortOrder: userSettings.getFilter(basekey + '-sortorder') === 'Descending' ? 'Descending' : 'Ascending' sortOrder: userSettings.getFilter(basekey + '-sortorder') === 'Descending' ? 'Descending' : 'Ascending'
}; };
}; }
ItemsView.prototype.getDefaultSortBy = function () { getDefaultSortBy() {
var params = this.params; const sortNameOption = this.getNameSortOption(this.params);
var sortNameOption = this.getNameSortOption(params);
if (params.type) { if (this.params.type) {
return sortNameOption.value; return sortNameOption.value;
} }
return 'IsFolder,' + sortNameOption.value; return 'IsFolder,' + sortNameOption.value;
}; }
ItemsView.prototype.getSortMenuOptions = function () { getSortMenuOptions() {
var sortBy = []; const sortBy = [];
var params = this.params;
if (params.type === 'Programs') { if (this.params.type === 'Programs') {
sortBy.push({ sortBy.push({
name: globalize.translate('AirDate'), name: globalize.translate('AirDate'),
value: 'StartDate,SortName' value: 'StartDate,SortName'
}); });
} }
var option = this.getNameSortOption(params); let option = this.getNameSortOption(this.params);
if (option) { if (option) {
sortBy.push(option); sortBy.push(option);
@ -916,7 +921,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
sortBy.push(option); sortBy.push(option);
} }
if (params.type !== 'Programs') { if (this.params.type !== 'Programs') {
sortBy.push({ sortBy.push({
name: globalize.translate('DateAdded'), name: globalize.translate('DateAdded'),
value: 'DateCreated,SortName' value: 'DateCreated,SortName'
@ -929,8 +934,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
sortBy.push(option); sortBy.push(option);
} }
if (!params.type) { if (!this.params.type) {
option = this.getNameSortOption(params); option = this.getNameSortOption(this.params);
sortBy.push({ sortBy.push({
name: globalize.translate('Folders'), name: globalize.translate('Folders'),
value: 'IsFolder,' + option.value value: 'IsFolder,' + option.value
@ -956,9 +961,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
value: 'Runtime,SortName' value: 'Runtime,SortName'
}); });
return sortBy; return sortBy;
}; }
ItemsView.prototype.getNameSortOption = function (params) { getNameSortOption(params) {
if (params.type === 'Episode') { if (params.type === 'Episode') {
return { return {
name: globalize.translate('Name'), name: globalize.translate('Name'),
@ -970,9 +975,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('Name'), name: globalize.translate('Name'),
value: 'SortName' value: 'SortName'
}; };
}; }
ItemsView.prototype.getPlayCountSortOption = function () { getPlayCountSortOption() {
if (this.params.type === 'Programs') { if (this.params.type === 'Programs') {
return null; return null;
} }
@ -981,9 +986,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('PlayCount'), name: globalize.translate('PlayCount'),
value: 'PlayCount,SortName' value: 'PlayCount,SortName'
}; };
}; }
ItemsView.prototype.getDatePlayedSortOption = function () { getDatePlayedSortOption() {
if (this.params.type === 'Programs') { if (this.params.type === 'Programs') {
return null; return null;
} }
@ -992,9 +997,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('DatePlayed'), name: globalize.translate('DatePlayed'),
value: 'DatePlayed,SortName' value: 'DatePlayed,SortName'
}; };
}; }
ItemsView.prototype.getCriticRatingSortOption = function () { getCriticRatingSortOption() {
if (this.params.type === 'Programs') { if (this.params.type === 'Programs') {
return null; return null;
} }
@ -1003,18 +1008,18 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('CriticRating'), name: globalize.translate('CriticRating'),
value: 'CriticRating,SortName' value: 'CriticRating,SortName'
}; };
}; }
ItemsView.prototype.getCommunityRatingSortOption = function () { getCommunityRatingSortOption() {
return { return {
name: globalize.translate('CommunityRating'), name: globalize.translate('CommunityRating'),
value: 'CommunityRating,SortName' value: 'CommunityRating,SortName'
}; };
}; }
ItemsView.prototype.getVisibleFilters = function () { getVisibleFilters() {
var filters = []; const filters = [];
var params = this.params; const params = this.params;
if (!(params.type === 'nextup')) { if (!(params.type === 'nextup')) {
if (params.type === 'Programs') { if (params.type === 'Programs') {
@ -1038,16 +1043,15 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
return filters; return filters;
}; }
ItemsView.prototype.setFilterStatus = function (hasFilters) { setFilterStatus(hasFilters) {
this.hasFilters = hasFilters; this.hasFilters = hasFilters;
var filterButtons = this.filterButtons; const filterButtons = this.filterButtons;
if (filterButtons.length) { if (filterButtons.length) {
for (var i = 0, length = filterButtons.length; i < length; i++) { for (const btnFilter of filterButtons) {
var btnFilter = filterButtons[i]; let bubble = btnFilter.querySelector('.filterButtonBubble');
var bubble = btnFilter.querySelector('.filterButtonBubble');
if (!bubble) { if (!bubble) {
if (!hasFilters) { if (!hasFilters) {
@ -1066,10 +1070,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
} }
} }
}; }
ItemsView.prototype.getFilterMenuOptions = function () { getFilterMenuOptions() {
var params = this.params; const params = this.params;
return { return {
IsAiring: params.IsAiring, IsAiring: params.IsAiring,
IsMovie: params.IsMovie, IsMovie: params.IsMovie,
@ -1079,11 +1083,11 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
IsSeries: params.IsSeries, IsSeries: params.IsSeries,
Recursive: this.queryRecursive Recursive: this.queryRecursive
}; };
}; }
ItemsView.prototype.getVisibleViewSettings = function () { getVisibleViewSettings() {
var item = (this.params, this.currentItem); const item = (this.params, this.currentItem);
var fields = ['showTitle']; const fields = ['showTitle'];
if (!item || item.Type !== 'PhotoAlbum' && item.Type !== 'ChannelFolderItem') { if (!item || item.Type !== 'PhotoAlbum' && item.Type !== 'ChannelFolderItem') {
fields.push('imageType'); fields.push('imageType');
@ -1091,13 +1095,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
fields.push('viewType'); fields.push('viewType');
return fields; return fields;
}; }
ItemsView.prototype.getViewSettings = function () { getViewSettings() {
var basekey = this.getSettingsKey(); const basekey = this.getSettingsKey();
var params = this.params; const params = this.params;
var item = this.currentItem; const item = this.currentItem;
var showTitle = userSettings.get(basekey + '-showTitle'); let showTitle = userSettings.get(basekey + '-showTitle');
if (showTitle === 'true') { if (showTitle === 'true') {
showTitle = true; showTitle = true;
@ -1109,7 +1113,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
showTitle = true; showTitle = true;
} }
var imageType = userSettings.get(basekey + '-imageType'); let imageType = userSettings.get(basekey + '-imageType');
if (!imageType && params.type === 'nextup') { if (!imageType && params.type === 'nextup') {
imageType = 'thumb'; imageType = 'thumb';
@ -1121,10 +1125,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
imageType: imageType || 'primary', imageType: imageType || 'primary',
viewType: userSettings.get(basekey + '-viewType') || 'images' viewType: userSettings.get(basekey + '-viewType') || 'images'
}; };
}; }
ItemsView.prototype.getItemTypes = function () { getItemTypes() {
var params = this.params; const params = this.params;
if (params.type === 'nextup') { if (params.type === 'nextup') {
return ['Episode']; return ['Episode'];
@ -1135,12 +1139,12 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
return []; return [];
}; }
ItemsView.prototype.getSettingsKey = function () { getSettingsKey() {
var values = []; const values = [];
values.push('items'); values.push('items');
var params = this.params; const params = this.params;
if (params.type) { if (params.type) {
values.push(params.type); values.push(params.type);
@ -1197,7 +1201,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
return values.join('-'); return values.join('-');
}; }
}
return ItemsView; export default ItemsView;
});
/* eslint-enable indent */

View file

@ -1,134 +1,128 @@
define(["events", "playbackManager", "pluginManager", "inputManager", "connectionManager", "userSettings"], function (events, playbackManager, pluginManager, inputManager, connectionManager, userSettings) { import events from 'events';
"use strict"; import playbackManager from 'playbackManager';
import pluginManager from 'pluginManager';
import inputManager from 'inputManager';
import connectionManager from 'connectionManager';
import * as userSettings from 'userSettings';
playbackManager = playbackManager.default || playbackManager; function getMinIdleTime() {
// Returns the minimum amount of idle time required before the screen saver can be displayed
//time units used Millisecond
return 180000;
}
function getMinIdleTime() { let lastFunctionalEvent = 0;
// Returns the minimum amount of idle time required before the screen saver can be displayed
//time units used Millisecond function getFunctionalEventIdleTime() {
return 180000; return new Date().getTime() - lastFunctionalEvent;
}
events.on(playbackManager, 'playbackstop', function (e, stopInfo) {
const state = stopInfo.state;
if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') {
lastFunctionalEvent = new Date().getTime();
} }
var lastFunctionalEvent = 0;
function getFunctionalEventIdleTime() {
return new Date().getTime() - lastFunctionalEvent;
}
events.on(playbackManager, "playbackstop", function (e, stopInfo) {
var state = stopInfo.state;
if (state.NowPlayingItem && state.NowPlayingItem.MediaType == "Video") {
lastFunctionalEvent = new Date().getTime();
}
});
function getScreensaverPlugin(isLoggedIn) {
var option;
try {
option = userSettings.get("screensaver", false);
} catch (err) {
option = isLoggedIn ? "backdropscreensaver" : "logoscreensaver";
}
var plugins = pluginManager.ofType("screensaver");
for (var i = 0, length = plugins.length; i < length; i++) {
var plugin = plugins[i];
if (plugin.id === option) {
return plugin;
}
}
return null;
}
function ScreenSaverManager() {
var self = this;
var activeScreenSaver;
function showScreenSaver(screensaver) {
if (activeScreenSaver) {
throw new Error("An existing screensaver is already active.");
}
console.debug("Showing screensaver " + screensaver.name);
screensaver.show();
activeScreenSaver = screensaver;
if (screensaver.hideOnClick !== false) {
window.addEventListener("click", hide, true);
}
if (screensaver.hideOnMouse !== false) {
window.addEventListener("mousemove", hide, true);
}
if (screensaver.hideOnKey !== false) {
window.addEventListener("keydown", hide, true);
}
}
function hide() {
if (activeScreenSaver) {
console.debug("Hiding screensaver");
activeScreenSaver.hide();
activeScreenSaver = null;
}
window.removeEventListener("click", hide, true);
window.removeEventListener("mousemove", hide, true);
window.removeEventListener("keydown", hide, true);
}
self.isShowing = function () {
return activeScreenSaver != null;
};
self.show = function () {
var isLoggedIn;
var apiClient = connectionManager.currentApiClient();
if (apiClient && apiClient.isLoggedIn()) {
isLoggedIn = true;
}
var screensaver = getScreensaverPlugin(isLoggedIn);
if (screensaver) {
showScreenSaver(screensaver);
}
};
self.hide = function () {
hide();
};
function onInterval() {
if (self.isShowing()) {
return;
}
if (inputManager.idleTime() < getMinIdleTime()) {
return;
}
if (getFunctionalEventIdleTime < getMinIdleTime()) {
return;
}
if (playbackManager.isPlayingVideo()) {
return;
}
self.show();
}
setInterval(onInterval, 10000);
}
return new ScreenSaverManager();
}); });
function getScreensaverPlugin(isLoggedIn) {
let option;
try {
option = userSettings.get('screensaver', false);
} catch (err) {
option = isLoggedIn ? 'backdropscreensaver' : 'logoscreensaver';
}
const plugins = pluginManager.ofType('screensaver');
for (const plugin of plugins) {
if (plugin.id === option) {
return plugin;
}
}
return null;
}
function ScreenSaverManager() {
let activeScreenSaver;
function showScreenSaver(screensaver) {
if (activeScreenSaver) {
throw new Error('An existing screensaver is already active.');
}
console.debug('Showing screensaver ' + screensaver.name);
screensaver.show();
activeScreenSaver = screensaver;
if (screensaver.hideOnClick !== false) {
window.addEventListener('click', hide, true);
}
if (screensaver.hideOnMouse !== false) {
window.addEventListener('mousemove', hide, true);
}
if (screensaver.hideOnKey !== false) {
window.addEventListener('keydown', hide, true);
}
}
function hide() {
if (activeScreenSaver) {
console.debug('Hiding screensaver');
activeScreenSaver.hide();
activeScreenSaver = null;
}
window.removeEventListener('click', hide, true);
window.removeEventListener('mousemove', hide, true);
window.removeEventListener('keydown', hide, true);
}
this.isShowing = () => {
return activeScreenSaver != null;
};
this.show = function () {
let isLoggedIn;
const apiClient = connectionManager.currentApiClient();
if (apiClient && apiClient.isLoggedIn()) {
isLoggedIn = true;
}
const screensaver = getScreensaverPlugin(isLoggedIn);
if (screensaver) {
showScreenSaver(screensaver);
}
};
this.hide = function () {
hide();
};
const onInterval = () => {
if (this.isShowing()) {
return;
}
if (inputManager.idleTime() < getMinIdleTime()) {
return;
}
if (getFunctionalEventIdleTime < getMinIdleTime()) {
return;
}
if (playbackManager.isPlayingVideo()) {
return;
}
this.show();
};
setInterval(onInterval, 10000);
}
export default new ScreenSaverManager;