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:
parent
e2be0980b7
commit
f9e79c0a4e
4 changed files with 264 additions and 265 deletions
|
@ -2,4 +2,3 @@ node_modules
|
||||||
dist
|
dist
|
||||||
.idea
|
.idea
|
||||||
.vscode
|
.vscode
|
||||||
src/libraries
|
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue