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

Migration of list.js and screensavermanager to ES6 modules

This commit is contained in:
Cameron 2020-07-28 21:28:16 +01:00
parent e2be0980b7
commit f9e79c0a4e
4 changed files with 264 additions and 265 deletions

View file

@ -2,4 +2,3 @@ node_modules
dist dist
.idea .idea
.vscode .vscode
src/libraries

View file

@ -188,6 +188,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/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",
@ -230,6 +231,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/plugins/backdropScreensaver/plugin.js", "src/plugins/backdropScreensaver/plugin.js",
"src/plugins/bookPlayer/plugin.js", "src/plugins/bookPlayer/plugin.js",
"src/plugins/bookPlayer/tableOfContents.js", "src/plugins/bookPlayer/tableOfContents.js",

View file

@ -1,8 +1,21 @@
define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager', 'cardBuilder', 'loading', 'connectionManager', 'alphaNumericShortcuts', 'scroller', 'playbackManager', 'alphaPicker', 'emby-itemscontainer', 'emby-scroller'], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, scroller, playbackManager, AlphaPicker) { 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';
/* eslint-disable indent */
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',
@ -59,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;
@ -68,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');
@ -164,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 (let i = 0, length = options.length; i < length; i++) {
if (sortBy === options[i].value) { if (sortBy === options[i].value) {
btnSortText.innerHTML = globalize.translate('SortByValue', options[i].name); btnSortText.innerHTML = globalize.translate('SortByValue', options[i].name);
break; break;
} }
} }
var btnSortIcon = instance.btnSortIcon; const btnSortIcon = instance.btnSortIcon;
if (btnSortIcon) { if (btnSortIcon) {
setSortButtonIcon(btnSortIcon, 'Descending' === values.sortOrder ? 'arrow_downward' : 'arrow_upward'); setSortButtonIcon(btnSortIcon, 'Descending' === values.sortOrder ? 'arrow_downward' : 'arrow_upward');
@ -198,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 (null == numItems) { if (null == numItems) {
numItems = 100; numItems = 100;
@ -219,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 ('Recordings' === params.type) { if ('Recordings' === params.type) {
@ -248,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 ('MusicArtist' === params.type) { if ('MusicArtist' === params.type) {
method = 'getArtists'; method = 'getArtists';
@ -271,7 +284,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
if ('Genre' === item.Type || 'MusicGenre' === item.Type || 'Studio' === item.Type || 'Person' === item.Type) { if ('Genre' === item.Type || 'MusicGenre' === item.Type || 'Studio' === item.Type || 'Person' === item.Type) {
instance.queryRecursive = true; instance.queryRecursive = true;
var query = { const query = {
StartIndex: startIndex, StartIndex: startIndex,
Limit: limit, Limit: limit,
Fields: 'PrimaryImageAspectRatio,SortName', Fields: 'PrimaryImageAspectRatio,SortName',
@ -320,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);
@ -331,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(),
@ -346,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(),
@ -365,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(),
@ -383,9 +396,9 @@ 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.showEditor({
items: [], items: [],
serverId: instance.params.serverId serverId: instance.params.serverId
@ -394,7 +407,7 @@ 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 (let i = 0, length = elems.length; i < length; i++) {
if (hide) { if (hide) {
elems[i].classList.add('hide'); elems[i].classList.add('hide');
} else { } else {
@ -404,12 +417,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function bindAll(elems, eventName, fn) { function bindAll(elems, eventName, fn) {
for (var i = 0, length = elems.length; i < length; i++) { for (let i = 0, length = elems.length; i < length; i++) {
elems[i].addEventListener(eventName, fn); elems[i].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 (null == self.totalItemCount) { if (null == self.totalItemCount) {
@ -422,7 +436,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
function getItemsHtml(items) { function getItemsHtml(items) {
var settings = self.getViewSettings(); const settings = self.getViewSettings();
if ('list' === settings.imageType) { if ('list' === settings.imageType) {
return listView.getListViewHtml({ return listView.getListViewHtml({
@ -430,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 ('banner' === settings.imageType) { if ('banner' === settings.imageType) {
shape = 'banner'; shape = 'banner';
@ -460,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,
@ -493,19 +507,19 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
lines = 1; lines = 1;
} else if ('Programs' === params.type) { } else if ('Programs' === params.type) {
lines = settings.showTitle ? 1 : 0; lines = settings.showTitle ? 1 : 0;
var showParentTitle = settings.showTitle && 'true' !== params.IsMovie; const showParentTitle = settings.showTitle && 'true' !== params.IsMovie;
if (showParentTitle) { if (showParentTitle) {
lines++; lines++;
} }
var showAirTime = settings.showTitle && 'Recordings' !== params.type; const showAirTime = settings.showTitle && 'Recordings' !== params.type;
if (showAirTime) { if (showAirTime) {
lines++; lines++;
} }
var showYear = settings.showTitle && 'true' === params.IsMovie && 'Recordings' === params.type; const showYear = settings.showTitle && 'true' === params.IsMovie && 'Recordings' === params.type;
if (showYear) { if (showYear) {
lines++; lines++;
@ -538,7 +552,7 @@ 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');
@ -649,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({
@ -665,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({
@ -681,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);
@ -694,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');
@ -708,20 +722,20 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
this.itemsContainer.setAttribute('data-refreshinterval', '300000'); this.itemsContainer.setAttribute('data-refreshinterval', '300000');
} }
var i; let i;
var length; let length;
var btnViewSettings = view.querySelectorAll('.btnViewSettings'); const btnViewSettings = view.querySelectorAll('.btnViewSettings');
for (i = 0, length = btnViewSettings.length; i < length; i++) { for (i = 0, length = btnViewSettings.length; i < length; i++) {
btnViewSettings[i].addEventListener('click', showViewSettingsMenu.bind(this)); btnViewSettings[i].addEventListener('click', showViewSettingsMenu.bind(this));
} }
var filterButtons = view.querySelectorAll('.btnFilter'); 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 (i = 0, length = filterButtons.length; i < length; i++) {
var btnFilter = filterButtons[i]; const btnFilter = filterButtons[i];
btnFilter.addEventListener('click', showFilterMenu.bind(this)); btnFilter.addEventListener('click', showFilterMenu.bind(this));
if (hasVisibleFilters) { if (hasVisibleFilters) {
@ -731,10 +745,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++) { for (this.sortButtons = sortButtons, i = 0, length = sortButtons.length; i < length; i++) {
var sortButton = sortButtons[i]; const sortButton = sortButtons[i];
sortButton.addEventListener('click', showSortMenu.bind(this)); sortButton.addEventListener('click', showSortMenu.bind(this));
if ('nextup' !== params.type) { if ('nextup' !== params.type) {
@ -749,7 +763,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();
@ -761,7 +775,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 () {
@ -776,7 +790,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
initAlphaPicker(); initAlphaPicker();
} }
var itemType = item ? item.Type : null; const itemType = item ? item.Type : null;
if ('MusicGenre' === itemType || 'Programs' !== params.type && 'Channel' !== itemType) { if ('MusicGenre' === itemType || 'Programs' !== params.type && 'Channel' !== itemType) {
hideOrShowAll(view.querySelectorAll('.btnPlay'), false); hideOrShowAll(view.querySelectorAll('.btnPlay'), false);
@ -808,13 +822,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}); });
}); });
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();
@ -841,9 +855,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
self.alphaPickerElement = null; self.alphaPickerElement = null;
}); });
} }
getFilters() {
ItemsView.prototype.getFilters = function () { const basekey = this.getSettingsKey();
var basekey = this.getSettingsKey();
return { return {
IsPlayed: 'true' === userSettings.getFilter(basekey + '-filter-IsPlayed'), IsPlayed: 'true' === userSettings.getFilter(basekey + '-filter-IsPlayed'),
IsUnplayed: 'true' === userSettings.getFilter(basekey + '-filter-IsUnplayed'), IsUnplayed: 'true' === userSettings.getFilter(basekey + '-filter-IsUnplayed'),
@ -862,30 +875,27 @@ 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')
}; };
}; }
getSortValues() {
ItemsView.prototype.getSortValues = function () { const basekey = this.getSettingsKey();
var 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: 'Descending' === userSettings.getFilter(basekey + '-sortorder') ? 'Descending' : 'Ascending'
}; };
}; }
getDefaultSortBy() {
ItemsView.prototype.getDefaultSortBy = function () { const params = this.params;
var params = this.params; const sortNameOption = this.getNameSortOption(params);
var sortNameOption = this.getNameSortOption(params);
if (params.type) { if (params.type) {
return sortNameOption.value; return sortNameOption.value;
} }
return 'IsFolder,' + sortNameOption.value; return 'IsFolder,' + sortNameOption.value;
}; }
getSortMenuOptions() {
ItemsView.prototype.getSortMenuOptions = function () { const sortBy = [];
var sortBy = []; const params = this.params;
var params = this.params;
if ('Programs' === params.type) { if ('Programs' === params.type) {
sortBy.push({ sortBy.push({
@ -894,7 +904,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}); });
} }
var option = this.getNameSortOption(params); let option = this.getNameSortOption(params);
if (option) { if (option) {
sortBy.push(option); sortBy.push(option);
@ -952,9 +962,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
value: 'Runtime,SortName' value: 'Runtime,SortName'
}); });
return sortBy; return sortBy;
}; }
getNameSortOption(params) {
ItemsView.prototype.getNameSortOption = function (params) {
if ('Episode' === params.type) { if ('Episode' === params.type) {
return { return {
name: globalize.translate('Name'), name: globalize.translate('Name'),
@ -966,9 +975,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('Name'), name: globalize.translate('Name'),
value: 'SortName' value: 'SortName'
}; };
}; }
getPlayCountSortOption() {
ItemsView.prototype.getPlayCountSortOption = function () {
if ('Programs' === this.params.type) { if ('Programs' === this.params.type) {
return null; return null;
} }
@ -977,9 +985,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('PlayCount'), name: globalize.translate('PlayCount'),
value: 'PlayCount,SortName' value: 'PlayCount,SortName'
}; };
}; }
getDatePlayedSortOption() {
ItemsView.prototype.getDatePlayedSortOption = function () {
if ('Programs' === this.params.type) { if ('Programs' === this.params.type) {
return null; return null;
} }
@ -988,9 +995,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('DatePlayed'), name: globalize.translate('DatePlayed'),
value: 'DatePlayed,SortName' value: 'DatePlayed,SortName'
}; };
}; }
getCriticRatingSortOption() {
ItemsView.prototype.getCriticRatingSortOption = function () {
if ('Programs' === this.params.type) { if ('Programs' === this.params.type) {
return null; return null;
} }
@ -999,18 +1005,16 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('CriticRating'), name: globalize.translate('CriticRating'),
value: 'CriticRating,SortName' value: 'CriticRating,SortName'
}; };
}; }
getCommunityRatingSortOption() {
ItemsView.prototype.getCommunityRatingSortOption = function () {
return { return {
name: globalize.translate('CommunityRating'), name: globalize.translate('CommunityRating'),
value: 'CommunityRating,SortName' value: 'CommunityRating,SortName'
}; };
}; }
getVisibleFilters() {
ItemsView.prototype.getVisibleFilters = function () { const filters = [];
var filters = []; const params = this.params;
var params = this.params;
if (!('nextup' === params.type)) { if (!('nextup' === params.type)) {
if ('Programs' === params.type) { if ('Programs' === params.type) {
@ -1034,16 +1038,15 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
return filters; return filters;
}; }
setFilterStatus(hasFilters) {
ItemsView.prototype.setFilterStatus = function (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 (let i = 0, length = filterButtons.length; i < length; i++) {
var btnFilter = filterButtons[i]; const btnFilter = filterButtons[i];
var bubble = btnFilter.querySelector('.filterButtonBubble'); let bubble = btnFilter.querySelector('.filterButtonBubble');
if (!bubble) { if (!bubble) {
if (!hasFilters) { if (!hasFilters) {
@ -1062,10 +1065,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
} }
} }
}; }
getFilterMenuOptions() {
ItemsView.prototype.getFilterMenuOptions = function () { const params = this.params;
var params = this.params;
return { return {
IsAiring: params.IsAiring, IsAiring: params.IsAiring,
IsMovie: params.IsMovie, IsMovie: params.IsMovie,
@ -1075,11 +1077,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
IsSeries: params.IsSeries, IsSeries: params.IsSeries,
Recursive: this.queryRecursive Recursive: this.queryRecursive
}; };
}; }
getVisibleViewSettings() {
ItemsView.prototype.getVisibleViewSettings = function () { const item = (this.params, this.currentItem);
var item = (this.params, this.currentItem); const fields = ['showTitle'];
var fields = ['showTitle'];
if (!item || 'PhotoAlbum' !== item.Type && 'ChannelFolderItem' !== item.Type) { if (!item || 'PhotoAlbum' !== item.Type && 'ChannelFolderItem' !== item.Type) {
fields.push('imageType'); fields.push('imageType');
@ -1087,13 +1088,12 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
fields.push('viewType'); fields.push('viewType');
return fields; return fields;
}; }
getViewSettings() {
ItemsView.prototype.getViewSettings = function () { const basekey = this.getSettingsKey();
var basekey = this.getSettingsKey(); const params = this.params;
var params = this.params; const item = this.currentItem;
var item = this.currentItem; let showTitle = userSettings.get(basekey + '-showTitle');
var showTitle = userSettings.get(basekey + '-showTitle');
if ('true' === showTitle) { if ('true' === showTitle) {
showTitle = true; showTitle = true;
@ -1105,7 +1105,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 && 'nextup' === params.type) { if (!imageType && 'nextup' === params.type) {
imageType = 'thumb'; imageType = 'thumb';
@ -1117,10 +1117,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
imageType: imageType || 'primary', imageType: imageType || 'primary',
viewType: userSettings.get(basekey + '-viewType') || 'images' viewType: userSettings.get(basekey + '-viewType') || 'images'
}; };
}; }
getItemTypes() {
ItemsView.prototype.getItemTypes = function () { const params = this.params;
var params = this.params;
if ('nextup' === params.type) { if ('nextup' === params.type) {
return ['Episode']; return ['Episode'];
@ -1131,12 +1130,11 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
return []; return [];
}; }
getSettingsKey() {
ItemsView.prototype.getSettingsKey = function () { const values = [];
var 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);
@ -1193,7 +1191,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
} }
return values.join('-'); return values.join('-');
}; }
}
return ItemsView; export default ItemsView;
});
/* eslint-enable indent */

View file

@ -1,132 +1,130 @@
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';
function getMinIdleTime() { function getMinIdleTime() {
// Returns the minimum amount of idle time required before the screen saver can be displayed // Returns the minimum amount of idle time required before the screen saver can be displayed
//time units used Millisecond //time units used Millisecond
return 180000; return 180000;
}
let lastFunctionalEvent = 0;
function getFunctionalEventIdleTime() {
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 (let i = 0, length = plugins.length; i < length; i++) {
const plugin = plugins[i];
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;