mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
commit
09856cc8c1
115 changed files with 324 additions and 366 deletions
|
@ -54,7 +54,7 @@ import alert from './alert';
|
|||
return html;
|
||||
}
|
||||
|
||||
function renderList(elem, apiClient, result, startIndex, limit) {
|
||||
function renderList(elem, apiClient, result) {
|
||||
elem.innerHTML = result.Items.map(function (i) {
|
||||
return getEntryHtml(i, apiClient);
|
||||
}).join('');
|
||||
|
@ -97,11 +97,11 @@ import alert from './alert';
|
|||
}
|
||||
|
||||
instance.items = result.Items;
|
||||
renderList(elem, apiClient, result, startIndex, limit);
|
||||
renderList(elem, apiClient, result);
|
||||
});
|
||||
}
|
||||
|
||||
function onActivityLogUpdate(e, apiClient, data) {
|
||||
function onActivityLogUpdate(e, apiClient) {
|
||||
const options = this.options;
|
||||
|
||||
if (options && options.serverId === apiClient.serverId()) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import './appFooter.scss';
|
||||
|
||||
function render(options) {
|
||||
function render() {
|
||||
const elem = document.createElement('div');
|
||||
elem.classList.add('appfooter');
|
||||
|
||||
|
@ -10,10 +10,10 @@ function render(options) {
|
|||
}
|
||||
|
||||
class appFooter {
|
||||
constructor(options) {
|
||||
constructor() {
|
||||
const self = this;
|
||||
|
||||
self.element = render(options);
|
||||
self.element = render();
|
||||
self.add = function (elem) {
|
||||
self.element.appendChild(elem);
|
||||
};
|
||||
|
@ -33,4 +33,4 @@ class appFooter {
|
|||
}
|
||||
}
|
||||
|
||||
export default new appFooter({});
|
||||
export default new appFooter();
|
||||
|
|
|
@ -7,7 +7,7 @@ import ServerConnections from '../ServerConnections';
|
|||
|
||||
/* eslint-disable indent */
|
||||
|
||||
function enableAnimation(elem) {
|
||||
function enableAnimation() {
|
||||
if (browser.slow) {
|
||||
return false;
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ import ServerConnections from '../ServerConnections';
|
|||
backdropImage.classList.add('backdropImageFadeIn');
|
||||
parent.appendChild(backdropImage);
|
||||
|
||||
if (!enableAnimation(backdropImage)) {
|
||||
if (!enableAnimation()) {
|
||||
if (existingBackdropImage && existingBackdropImage.parentNode) {
|
||||
existingBackdropImage.parentNode.removeChild(existingBackdropImage);
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ import '../../assets/css/scrollstyles.scss';
|
|||
const activeElement = document.activeElement;
|
||||
let removeScrollLockOnClose = false;
|
||||
|
||||
function onHashChange(e) {
|
||||
function onHashChange() {
|
||||
const isBack = self.originalUrl === window.location.href;
|
||||
|
||||
if (isBack || !isOpened(dlg)) {
|
||||
|
@ -200,7 +200,7 @@ import '../../assets/css/scrollstyles.scss';
|
|||
dlg.dialogContainer = dialogContainer;
|
||||
document.body.appendChild(dialogContainer);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
return new Promise((resolve) => {
|
||||
new DialogHashHandler(dlg, `dlg${new Date().getTime()}`, resolve);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -210,7 +210,7 @@ function loadDynamicFilters(context, options) {
|
|||
}
|
||||
class FilterMenu {
|
||||
show(options) {
|
||||
return new Promise( (resolve, reject) => {
|
||||
return new Promise( (resolve) => {
|
||||
const dialogOptions = {
|
||||
removeOnClose: true,
|
||||
scrollY: false
|
||||
|
|
|
@ -8,7 +8,7 @@ import scrollManager from './scrollManager';
|
|||
scopes.push(elem);
|
||||
}
|
||||
|
||||
function popScope(elem) {
|
||||
function popScope() {
|
||||
if (scopes.length) {
|
||||
scopes.length -= 1;
|
||||
}
|
||||
|
|
|
@ -1057,7 +1057,7 @@ function Guide(options) {
|
|||
}
|
||||
}
|
||||
|
||||
function onSeriesTimerCreated(e, apiClient, data) {
|
||||
function onSeriesTimerCreated() {
|
||||
}
|
||||
|
||||
function onTimerCancelled(e, apiClient, data) {
|
||||
|
@ -1116,7 +1116,7 @@ function Guide(options) {
|
|||
programGrid.classList.add('noRubberBanding');
|
||||
}
|
||||
|
||||
dom.addEventListener(programGrid, 'scroll', function (e) {
|
||||
dom.addEventListener(programGrid, 'scroll', function () {
|
||||
onProgramGridScroll(guideContext, this, timeslotHeaders);
|
||||
}, {
|
||||
passive: true
|
||||
|
|
|
@ -219,7 +219,7 @@ import template from './homeScreenSettings.template.html';
|
|||
context.querySelector('.selectTVHomeScreen').value = userSettings.get('tvhome') || '';
|
||||
}
|
||||
|
||||
function getPerLibrarySettingsHtml(item, user, userSettings, apiClient) {
|
||||
function getPerLibrarySettingsHtml(item, user, userSettings) {
|
||||
let html = '';
|
||||
|
||||
let isChecked;
|
||||
|
@ -275,12 +275,12 @@ import template from './homeScreenSettings.template.html';
|
|||
return html;
|
||||
}
|
||||
|
||||
function renderPerLibrarySettings(context, user, userViews, userSettings, apiClient) {
|
||||
function renderPerLibrarySettings(context, user, userViews) {
|
||||
const elem = context.querySelector('.perLibrarySettings');
|
||||
let html = '';
|
||||
|
||||
for (let i = 0, length = userViews.length; i < length; i++) {
|
||||
html += getPerLibrarySettingsHtml(userViews[i], user, userSettings, apiClient);
|
||||
html += getPerLibrarySettingsHtml(userViews[i], user);
|
||||
}
|
||||
|
||||
elem.innerHTML = html;
|
||||
|
@ -297,7 +297,7 @@ import template from './homeScreenSettings.template.html';
|
|||
Promise.all([promise1, promise2]).then(responses => {
|
||||
renderViewOrder(context, user, responses[0]);
|
||||
|
||||
renderPerLibrarySettings(context, user, responses[0].Items, userSettings, apiClient);
|
||||
renderPerLibrarySettings(context, user, responses[0].Items);
|
||||
|
||||
renderViews(context, user, responses[1]);
|
||||
|
||||
|
|
|
@ -133,24 +133,22 @@ import ServerConnections from '../ServerConnections';
|
|||
|
||||
function loadSection(page, apiClient, user, userSettings, userViews, allSections, index) {
|
||||
const section = allSections[index];
|
||||
const userId = user.Id;
|
||||
|
||||
const elem = page.querySelector('.section' + index);
|
||||
|
||||
if (section === 'latestmedia') {
|
||||
loadRecentlyAdded(elem, apiClient, user, userViews);
|
||||
} else if (section === 'librarytiles' || section === 'smalllibrarytiles' || section === 'smalllibrarytiles-automobile' || section === 'librarytiles-automobile') {
|
||||
loadLibraryTiles(elem, apiClient, user, userSettings, 'smallBackdrop', userViews, allSections);
|
||||
loadLibraryTiles(elem, apiClient, user, userSettings, 'smallBackdrop', userViews);
|
||||
} else if (section === 'librarybuttons') {
|
||||
loadlibraryButtons(elem, apiClient, user, userSettings, userViews);
|
||||
} else if (section === 'resume') {
|
||||
loadResumeVideo(elem, apiClient, userId);
|
||||
loadResumeVideo(elem, apiClient);
|
||||
} else if (section === 'resumeaudio') {
|
||||
loadResumeAudio(elem, apiClient, userId);
|
||||
loadResumeAudio(elem, apiClient);
|
||||
} else if (section === 'activerecordings') {
|
||||
loadLatestLiveTvRecordings(elem, true, apiClient, userId);
|
||||
loadLatestLiveTvRecordings(elem, true, apiClient);
|
||||
} else if (section === 'nextup') {
|
||||
loadNextUp(elem, apiClient, userId);
|
||||
loadNextUp(elem, apiClient);
|
||||
} else if (section === 'onnow' || section === 'livetv') {
|
||||
return loadOnNow(elem, apiClient, user);
|
||||
} else {
|
||||
|
@ -335,7 +333,7 @@ import ServerConnections from '../ServerConnections';
|
|||
}
|
||||
}
|
||||
|
||||
export function loadLibraryTiles(elem, apiClient, user, userSettings, shape, userViews, allSections) {
|
||||
export function loadLibraryTiles(elem, apiClient, user, userSettings, shape, userViews) {
|
||||
let html = '';
|
||||
if (userViews.length) {
|
||||
html += '<h2 class="sectionTitle sectionTitle-cards padded-left">' + globalize.translate('HeaderMyMedia') + '</h2>';
|
||||
|
@ -415,7 +413,7 @@ import ServerConnections from '../ServerConnections';
|
|||
});
|
||||
}
|
||||
|
||||
function loadResumeVideo(elem, apiClient, userId) {
|
||||
function loadResumeVideo(elem, apiClient) {
|
||||
let html = '';
|
||||
|
||||
html += '<h2 class="sectionTitle sectionTitle-cards padded-left">' + globalize.translate('HeaderContinueWatching') + '</h2>';
|
||||
|
@ -488,7 +486,7 @@ import ServerConnections from '../ServerConnections';
|
|||
});
|
||||
}
|
||||
|
||||
function loadResumeAudio(elem, apiClient, userId) {
|
||||
function loadResumeAudio(elem, apiClient) {
|
||||
let html = '';
|
||||
|
||||
html += '<h2 class="sectionTitle sectionTitle-cards padded-left">' + globalize.translate('HeaderContinueListening') + '</h2>';
|
||||
|
@ -688,7 +686,7 @@ import ServerConnections from '../ServerConnections';
|
|||
});
|
||||
}
|
||||
|
||||
function loadNextUp(elem, apiClient, userId) {
|
||||
function loadNextUp(elem, apiClient) {
|
||||
let html = '';
|
||||
|
||||
html += '<div class="sectionTitleContainer sectionTitleContainer-cards padded-left">';
|
||||
|
@ -766,7 +764,7 @@ import ServerConnections from '../ServerConnections';
|
|||
};
|
||||
}
|
||||
|
||||
function loadLatestLiveTvRecordings(elem, activeRecordingsOnly, apiClient, userId) {
|
||||
function loadLatestLiveTvRecordings(elem, activeRecordingsOnly, apiClient) {
|
||||
const title = activeRecordingsOnly ?
|
||||
globalize.translate('HeaderActiveRecordings') :
|
||||
globalize.translate('HeaderLatestRecordings');
|
||||
|
|
|
@ -359,7 +359,7 @@ import toast from './toast/toast';
|
|||
itemId: itemId,
|
||||
serverId: serverId,
|
||||
title: item.Name,
|
||||
filename: item.Path.replace(/^.*[\\\/]/, '')
|
||||
filename: item.Path.replace(/^.*[\\/]/, '')
|
||||
}]);
|
||||
getResolveFunction(getResolveFunction(resolve, id), id)();
|
||||
});
|
||||
|
|
|
@ -2,7 +2,7 @@ import { playbackManager } from './playback/playbackmanager';
|
|||
import serverNotifications from '../scripts/serverNotifications';
|
||||
import { Events } from 'jellyfin-apiclient';
|
||||
|
||||
function onUserDataChanged(e, apiClient, userData) {
|
||||
function onUserDataChanged() {
|
||||
const instance = this;
|
||||
|
||||
const eventsToMonitor = getEventsToMonitor(instance);
|
||||
|
@ -25,7 +25,7 @@ function getEventsToMonitor(instance) {
|
|||
return [];
|
||||
}
|
||||
|
||||
function onTimerCreated(e, apiClient, data) {
|
||||
function onTimerCreated() {
|
||||
const instance = this;
|
||||
|
||||
if (getEventsToMonitor(instance).indexOf('timers') !== -1) {
|
||||
|
@ -34,7 +34,7 @@ function onTimerCreated(e, apiClient, data) {
|
|||
}
|
||||
}
|
||||
|
||||
function onSeriesTimerCreated(e, apiClient, data) {
|
||||
function onSeriesTimerCreated() {
|
||||
const instance = this;
|
||||
if (getEventsToMonitor(instance).indexOf('seriestimers') !== -1) {
|
||||
instance.notifyRefreshNeeded();
|
||||
|
@ -42,7 +42,7 @@ function onSeriesTimerCreated(e, apiClient, data) {
|
|||
}
|
||||
}
|
||||
|
||||
function onTimerCancelled(e, apiClient, data) {
|
||||
function onTimerCancelled() {
|
||||
const instance = this;
|
||||
|
||||
if (getEventsToMonitor(instance).indexOf('timers') !== -1) {
|
||||
|
@ -51,7 +51,7 @@ function onTimerCancelled(e, apiClient, data) {
|
|||
}
|
||||
}
|
||||
|
||||
function onSeriesTimerCancelled(e, apiClient, data) {
|
||||
function onSeriesTimerCancelled() {
|
||||
const instance = this;
|
||||
if (getEventsToMonitor(instance).indexOf('seriestimers') !== -1) {
|
||||
instance.notifyRefreshNeeded();
|
||||
|
|
|
@ -163,10 +163,6 @@ import ServerConnections from '../ServerConnections';
|
|||
return html;
|
||||
}
|
||||
|
||||
function getId(item) {
|
||||
return item.Id;
|
||||
}
|
||||
|
||||
export function getListViewHtml(options) {
|
||||
const items = options.items;
|
||||
|
||||
|
@ -183,7 +179,6 @@ import ServerConnections from '../ServerConnections';
|
|||
let outerHtml = '';
|
||||
|
||||
const enableContentWrapper = options.enableOverview && !layoutManager.tv;
|
||||
const containerAlbumArtistIds = (options.containerAlbumArtists || []).map(getId);
|
||||
|
||||
for (let i = 0, length = items.length; i < length; i++) {
|
||||
const item = items[i];
|
||||
|
|
|
@ -47,7 +47,7 @@ import '../elements/emby-button/emby-button';
|
|||
return true;
|
||||
}
|
||||
|
||||
function configureSwipeTabs(view, tabsElem, getTabContainersFn) {
|
||||
function configureSwipeTabs(view, tabsElem) {
|
||||
if (!browser.touch) {
|
||||
return;
|
||||
}
|
||||
|
@ -142,7 +142,7 @@ import '../elements/emby-button/emby-button';
|
|||
|
||||
tabsElem = tabsContainerElem.querySelector('[is="emby-tabs"]');
|
||||
|
||||
configureSwipeTabs(view, tabsElem, getTabContainersFn);
|
||||
configureSwipeTabs(view, tabsElem);
|
||||
|
||||
tabsElem.addEventListener('beforetabchange', function (e) {
|
||||
const tabContainers = getTabContainersFn();
|
||||
|
|
|
@ -490,9 +490,7 @@ import '../../elements/emby-button/emby-button';
|
|||
})[0];
|
||||
}
|
||||
|
||||
export function getMediaInfoStats(item, options) {
|
||||
options = options || {};
|
||||
|
||||
export function getMediaInfoStats(item) {
|
||||
const list = [];
|
||||
|
||||
const mediaSource = (item.MediaSources || [])[0] || {};
|
||||
|
|
|
@ -31,7 +31,7 @@ import template from './metadataEditor.template.html';
|
|||
return currentContext.classList.contains('dialog');
|
||||
}
|
||||
|
||||
function closeDialog(isSubmitted) {
|
||||
function closeDialog() {
|
||||
if (isDialog()) {
|
||||
dialogHelper.close(currentContext);
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ import template from './metadataEditor.template.html';
|
|||
toast(globalize.translate('MessageItemSaved'));
|
||||
|
||||
loading.hide();
|
||||
closeDialog(true);
|
||||
closeDialog();
|
||||
}
|
||||
|
||||
const apiClient = getApiClient();
|
||||
|
@ -298,7 +298,7 @@ import template from './metadataEditor.template.html';
|
|||
}
|
||||
}
|
||||
|
||||
function init(context, apiClient) {
|
||||
function init(context) {
|
||||
context.querySelector('.externalIds').addEventListener('click', function (e) {
|
||||
const btnOpenExternalId = dom.parentWithClass(e.target, 'btnOpenExternalId');
|
||||
if (btnOpenExternalId) {
|
||||
|
@ -319,7 +319,7 @@ import template from './metadataEditor.template.html';
|
|||
|
||||
bindAll(context.querySelectorAll('.btnCancel'), 'click', function (event) {
|
||||
event.preventDefault();
|
||||
closeDialog(false);
|
||||
closeDialog();
|
||||
});
|
||||
|
||||
context.querySelector('.btnMore').addEventListener('click', function (e) {
|
||||
|
@ -328,7 +328,7 @@ import template from './metadataEditor.template.html';
|
|||
});
|
||||
});
|
||||
|
||||
context.querySelector('.btnHeaderSave').addEventListener('click', function (e) {
|
||||
context.querySelector('.btnHeaderSave').addEventListener('click', function () {
|
||||
context.querySelector('.btnSave').click();
|
||||
});
|
||||
|
||||
|
@ -347,7 +347,7 @@ import template from './metadataEditor.template.html';
|
|||
form.removeEventListener('submit', onSubmit);
|
||||
form.addEventListener('submit', onSubmit);
|
||||
|
||||
context.querySelector('#btnAddPerson').addEventListener('click', function (event, data) {
|
||||
context.querySelector('#btnAddPerson').addEventListener('click', function () {
|
||||
editPerson(context, {}, -1);
|
||||
});
|
||||
|
||||
|
@ -1026,7 +1026,7 @@ import template from './metadataEditor.template.html';
|
|||
});
|
||||
}
|
||||
|
||||
function show(itemId, serverId, resolve, reject) {
|
||||
function show(itemId, serverId, resolve) {
|
||||
loading.show();
|
||||
|
||||
const dialogOptions = {
|
||||
|
@ -1066,20 +1066,20 @@ import template from './metadataEditor.template.html';
|
|||
|
||||
currentContext = dlg;
|
||||
|
||||
init(dlg, ServerConnections.getApiClient(serverId));
|
||||
init(dlg);
|
||||
|
||||
reload(dlg, itemId, serverId);
|
||||
}
|
||||
|
||||
export default {
|
||||
show: function (itemId, serverId) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
return show(itemId, serverId, resolve, reject);
|
||||
return new Promise(function (resolve) {
|
||||
return show(itemId, serverId, resolve);
|
||||
});
|
||||
},
|
||||
|
||||
embed: function (elem, itemId, serverId) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
return new Promise(function () {
|
||||
loading.show();
|
||||
|
||||
elem.innerHTML = globalize.translateHtml(template, 'core');
|
||||
|
@ -1091,7 +1091,7 @@ import template from './metadataEditor.template.html';
|
|||
|
||||
currentContext = elem;
|
||||
|
||||
init(elem, ServerConnections.getApiClient(serverId));
|
||||
init(elem);
|
||||
reload(elem, itemId, serverId);
|
||||
|
||||
focusManager.autoFocus(elem);
|
||||
|
|
|
@ -63,7 +63,7 @@ import template from './personEditor.template.html';
|
|||
}
|
||||
});
|
||||
|
||||
dlg.querySelector('.selectPersonType').addEventListener('change', function (e) {
|
||||
dlg.querySelector('.selectPersonType').addEventListener('change', function () {
|
||||
if (this.value === 'Actor') {
|
||||
dlg.querySelector('.fldRole').classList.remove('hide');
|
||||
} else {
|
||||
|
@ -71,7 +71,7 @@ import template from './personEditor.template.html';
|
|||
}
|
||||
});
|
||||
|
||||
dlg.querySelector('.btnCancel').addEventListener('click', function (e) {
|
||||
dlg.querySelector('.btnCancel').addEventListener('click', function () {
|
||||
dialogHelper.close(dlg);
|
||||
});
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ import confirm from '../confirm/confirm';
|
|||
}
|
||||
}
|
||||
|
||||
function onSelectionChange(e) {
|
||||
function onSelectionChange() {
|
||||
updateItemSelection(this, this.checked);
|
||||
}
|
||||
|
||||
|
@ -440,13 +440,13 @@ import confirm from '../confirm/confirm';
|
|||
deltaY = 100;
|
||||
}
|
||||
if (deltaX >= 5 || deltaY >= 5) {
|
||||
onMouseOut(e);
|
||||
onMouseOut();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onTouchEnd(e) {
|
||||
onMouseOut(e);
|
||||
function onTouchEnd() {
|
||||
onMouseOut();
|
||||
}
|
||||
|
||||
function onMouseDown(e) {
|
||||
|
@ -459,7 +459,7 @@ import confirm from '../confirm/confirm';
|
|||
touchStartTimeout = setTimeout(onTouchStartTimerFired, 550);
|
||||
}
|
||||
|
||||
function onMouseOut(e) {
|
||||
function onMouseOut() {
|
||||
if (touchStartTimeout) {
|
||||
clearTimeout(touchStartTimeout);
|
||||
touchStartTimeout = null;
|
||||
|
|
|
@ -41,7 +41,7 @@ function resetRegistration() {
|
|||
|
||||
resetRegistration();
|
||||
|
||||
function showPersistentNotification(title, options, timeoutMs) {
|
||||
function showPersistentNotification(title, options) {
|
||||
serviceWorkerRegistration.showNotification(title, options);
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,7 @@ function showNotification(options, timeoutMs, apiClient) {
|
|||
resetRegistration();
|
||||
|
||||
if (serviceWorkerRegistration) {
|
||||
showPersistentNotification(title, options, timeoutMs);
|
||||
showPersistentNotification(title, options);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -219,7 +219,7 @@ Events.on(serverNotifications, 'PackageInstalling', function (e, apiClient, data
|
|||
showPackageInstallNotification(apiClient, data, 'progress');
|
||||
});
|
||||
|
||||
Events.on(serverNotifications, 'ServerShuttingDown', function (e, apiClient, data) {
|
||||
Events.on(serverNotifications, 'ServerShuttingDown', function (e, apiClient) {
|
||||
const serverId = apiClient.serverInfo().Id;
|
||||
const notification = {
|
||||
tag: 'restart' + serverId,
|
||||
|
@ -228,7 +228,7 @@ Events.on(serverNotifications, 'ServerShuttingDown', function (e, apiClient, dat
|
|||
showNotification(notification, 0, apiClient);
|
||||
});
|
||||
|
||||
Events.on(serverNotifications, 'ServerRestarting', function (e, apiClient, data) {
|
||||
Events.on(serverNotifications, 'ServerRestarting', function (e, apiClient) {
|
||||
const serverId = apiClient.serverInfo().Id;
|
||||
const notification = {
|
||||
tag: 'restart' + serverId,
|
||||
|
|
|
@ -648,7 +648,7 @@ import { appRouter } from '../appRouter';
|
|||
}
|
||||
}
|
||||
|
||||
function onPlayPauseStateChanged(e) {
|
||||
function onPlayPauseStateChanged() {
|
||||
if (!isEnabled) {
|
||||
return;
|
||||
}
|
||||
|
@ -682,7 +682,7 @@ import { appRouter } from '../appRouter';
|
|||
updatePlayerStateInternal(event, state, player);
|
||||
}
|
||||
|
||||
function onTimeUpdate(e) {
|
||||
function onTimeUpdate() {
|
||||
if (!isEnabled) {
|
||||
return;
|
||||
}
|
||||
|
@ -718,7 +718,7 @@ import { appRouter } from '../appRouter';
|
|||
}
|
||||
}
|
||||
|
||||
function onVolumeChanged(e) {
|
||||
function onVolumeChanged() {
|
||||
if (!isEnabled) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -127,7 +127,7 @@ function releaseCurrentPlayer() {
|
|||
}
|
||||
}
|
||||
|
||||
function onBrightnessChanged(e) {
|
||||
function onBrightnessChanged() {
|
||||
const player = this;
|
||||
|
||||
ensureOsdElement();
|
||||
|
|
|
@ -208,7 +208,7 @@ function getMimeType(type, container) {
|
|||
}
|
||||
|
||||
function getParam(name, url) {
|
||||
name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]');
|
||||
name = name.replace(/[[]/, '\\[').replace(/[\]]/, '\\]');
|
||||
const regexS = '[\\?&]' + name + '=([^&#]*)';
|
||||
const regex = new RegExp(regexS, 'i');
|
||||
|
||||
|
@ -270,7 +270,7 @@ function getIntros(firstItem, apiClient, options) {
|
|||
|
||||
return apiClient.getIntros(firstItem.Id).then(function (result) {
|
||||
return result;
|
||||
}, function (err) {
|
||||
}, function () {
|
||||
return Promise.resolve({
|
||||
Items: []
|
||||
});
|
||||
|
@ -619,7 +619,7 @@ function supportsDirectPlay(apiClient, item, mediaSource) {
|
|||
return isHostReachable(mediaSource, apiClient);
|
||||
}
|
||||
} else if (mediaSource.Protocol === 'File') {
|
||||
return new Promise(function (resolve, reject) {
|
||||
return new Promise(function (resolve) {
|
||||
// Determine if the file can be accessed directly
|
||||
import('../../scripts/filesystem').then((filesystem) => {
|
||||
const method = isFolderRip ?
|
||||
|
@ -1711,7 +1711,7 @@ class PlaybackManager {
|
|||
});
|
||||
}
|
||||
|
||||
function changeStreamToUrl(apiClient, player, playSessionId, streamInfo, newPositionTicks) {
|
||||
function changeStreamToUrl(apiClient, player, playSessionId, streamInfo) {
|
||||
const playerData = getPlayerData(player);
|
||||
|
||||
playerData.isChangingStream = true;
|
||||
|
@ -2037,7 +2037,7 @@ class PlaybackManager {
|
|||
// Only used internally
|
||||
self.getCurrentTicks = getCurrentTicks;
|
||||
|
||||
function playOther(items, options, user) {
|
||||
function playOther(items, options) {
|
||||
const playStartIndex = options.startIndex || 0;
|
||||
const player = getPlayer(items[playStartIndex], options);
|
||||
|
||||
|
@ -2048,7 +2048,7 @@ class PlaybackManager {
|
|||
return player.play(options);
|
||||
}
|
||||
|
||||
function playWithIntros(items, options, user) {
|
||||
function playWithIntros(items, options) {
|
||||
let playStartIndex = options.startIndex || 0;
|
||||
let firstItem = items[playStartIndex];
|
||||
|
||||
|
@ -2065,7 +2065,7 @@ class PlaybackManager {
|
|||
}
|
||||
|
||||
if (firstItem.MediaType === 'Photo' || firstItem.MediaType === 'Book') {
|
||||
return playOther(items, options, user);
|
||||
return playOther(items, options);
|
||||
}
|
||||
|
||||
const apiClient = ServerConnections.getApiClient(firstItem.ServerId);
|
||||
|
@ -3030,27 +3030,27 @@ class PlaybackManager {
|
|||
}
|
||||
}
|
||||
|
||||
function onPlaybackTimeUpdate(e) {
|
||||
function onPlaybackTimeUpdate() {
|
||||
const player = this;
|
||||
sendProgressUpdate(player, 'timeupdate');
|
||||
}
|
||||
|
||||
function onPlaybackPause(e) {
|
||||
function onPlaybackPause() {
|
||||
const player = this;
|
||||
sendProgressUpdate(player, 'pause');
|
||||
}
|
||||
|
||||
function onPlaybackUnpause(e) {
|
||||
function onPlaybackUnpause() {
|
||||
const player = this;
|
||||
sendProgressUpdate(player, 'unpause');
|
||||
}
|
||||
|
||||
function onPlaybackVolumeChange(e) {
|
||||
function onPlaybackVolumeChange() {
|
||||
const player = this;
|
||||
sendProgressUpdate(player, 'volumechange');
|
||||
}
|
||||
|
||||
function onRepeatModeChange(e) {
|
||||
function onRepeatModeChange() {
|
||||
const player = this;
|
||||
sendProgressUpdate(player, 'repeatmodechange');
|
||||
}
|
||||
|
@ -3060,17 +3060,17 @@ class PlaybackManager {
|
|||
sendProgressUpdate(player, 'shufflequeuemodechange');
|
||||
}
|
||||
|
||||
function onPlaylistItemMove(e) {
|
||||
function onPlaylistItemMove() {
|
||||
const player = this;
|
||||
sendProgressUpdate(player, 'playlistitemmove', true);
|
||||
}
|
||||
|
||||
function onPlaylistItemRemove(e) {
|
||||
function onPlaylistItemRemove() {
|
||||
const player = this;
|
||||
sendProgressUpdate(player, 'playlistitemremove', true);
|
||||
}
|
||||
|
||||
function onPlaylistItemAdd(e) {
|
||||
function onPlaylistItemAdd() {
|
||||
const player = this;
|
||||
sendProgressUpdate(player, 'playlistitemadd', true);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ function onOrientationChangeError(err) {
|
|||
console.error('error locking orientation: ' + err);
|
||||
}
|
||||
|
||||
Events.on(playbackManager, 'playbackstart', function (e, player, state) {
|
||||
Events.on(playbackManager, 'playbackstart', function (e, player) {
|
||||
const isLocalVideo = player.isLocalPlayer && !player.isExternalPlayer && playbackManager.isPlayingVideo(player);
|
||||
|
||||
if (isLocalVideo && layoutManager.mobile) {
|
||||
|
|
|
@ -301,15 +301,15 @@ Events.on(appSettings, 'change', function (e, name) {
|
|||
}
|
||||
});
|
||||
|
||||
Events.on(playbackManager, 'pairing', function (e) {
|
||||
Events.on(playbackManager, 'pairing', function () {
|
||||
loading.show();
|
||||
});
|
||||
|
||||
Events.on(playbackManager, 'paired', function (e) {
|
||||
Events.on(playbackManager, 'paired', function () {
|
||||
loading.hide();
|
||||
});
|
||||
|
||||
Events.on(playbackManager, 'pairerror', function (e) {
|
||||
Events.on(playbackManager, 'pairerror', function () {
|
||||
loading.hide();
|
||||
});
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ class PlayQueueManager {
|
|||
return this._currentPlaylistItemId;
|
||||
}
|
||||
|
||||
setPlaylistState(playlistItemId, playlistIndex) {
|
||||
setPlaylistState(playlistItemId) {
|
||||
this._currentPlaylistItemId = playlistItemId;
|
||||
}
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ function releaseCurrentPlayer() {
|
|||
}
|
||||
}
|
||||
|
||||
function onVolumeChanged(e) {
|
||||
function onVolumeChanged() {
|
||||
const player = this;
|
||||
|
||||
ensureOsdElement();
|
||||
|
|
|
@ -196,7 +196,7 @@ import ServerConnections from '../ServerConnections';
|
|||
}
|
||||
}
|
||||
|
||||
function getMediaSourceStats(session, player, displayPlayMethod) {
|
||||
function getMediaSourceStats(session, player) {
|
||||
const sessionStats = [];
|
||||
|
||||
const mediaSource = playbackManager.currentMediaSource(player) || {};
|
||||
|
|
|
@ -5,7 +5,7 @@ import '../../elements/emby-button/emby-button';
|
|||
import './recordingfields.scss';
|
||||
import ServerConnections from '../ServerConnections';
|
||||
|
||||
function onRecordingButtonClick(e) {
|
||||
function onRecordingButtonClick() {
|
||||
const item = this.item;
|
||||
|
||||
if (item) {
|
||||
|
|
|
@ -28,7 +28,7 @@ function deleteTimer(apiClient, timerId) {
|
|||
});
|
||||
}
|
||||
|
||||
function renderTimer(context, item, apiClient) {
|
||||
function renderTimer(context, item) {
|
||||
context.querySelector('#txtPrePaddingMinutes').value = item.PrePaddingSeconds / 60;
|
||||
context.querySelector('#txtPostPaddingMinutes').value = item.PostPaddingSeconds / 60;
|
||||
|
||||
|
@ -79,13 +79,13 @@ function reload(context, id) {
|
|||
|
||||
const apiClient = ServerConnections.getApiClient(currentServerId);
|
||||
apiClient.getLiveTvTimer(id).then(function (result) {
|
||||
renderTimer(context, result, apiClient);
|
||||
renderTimer(context, result);
|
||||
loading.hide();
|
||||
});
|
||||
}
|
||||
|
||||
function showEditor(itemId, serverId, options) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
return new Promise(function (resolve) {
|
||||
recordingDeleted = false;
|
||||
currentServerId = serverId;
|
||||
loading.show();
|
||||
|
|
|
@ -14,7 +14,7 @@ import template from './recordingfields.template.html';
|
|||
|
||||
/*eslint prefer-const: "error"*/
|
||||
|
||||
function loadData(parent, program, apiClient) {
|
||||
function loadData(parent, program) {
|
||||
if (program.IsSeries) {
|
||||
parent.querySelector('.recordSeriesContainer').classList.remove('hide');
|
||||
} else {
|
||||
|
@ -55,7 +55,7 @@ function fetchData(instance) {
|
|||
instance.TimerId = program.TimerId;
|
||||
instance.Status = program.Status;
|
||||
instance.SeriesTimerId = program.SeriesTimerId;
|
||||
loadData(options.parent, program, apiClient);
|
||||
loadData(options.parent, program);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -119,7 +119,7 @@ class RecordingEditor {
|
|||
|
||||
embed() {
|
||||
const self = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
return new Promise(function (resolve) {
|
||||
const options = self.options;
|
||||
const context = options.parent;
|
||||
context.innerHTML = globalize.translateHtml(template, 'core');
|
||||
|
@ -156,7 +156,7 @@ class RecordingEditor {
|
|||
}
|
||||
}
|
||||
|
||||
function onManageRecordingClick(e) {
|
||||
function onManageRecordingClick() {
|
||||
const options = this.options;
|
||||
if (!this.TimerId || this.Status === 'Cancelled') {
|
||||
return;
|
||||
|
@ -172,7 +172,7 @@ function onManageRecordingClick(e) {
|
|||
});
|
||||
}
|
||||
|
||||
function onManageSeriesRecordingClick(e) {
|
||||
function onManageSeriesRecordingClick() {
|
||||
const options = this.options;
|
||||
|
||||
if (!this.SeriesTimerId) {
|
||||
|
|
|
@ -155,7 +155,7 @@ class RefreshDialog {
|
|||
centerFocus(dlg.querySelector('.formDialogContent'), false, true);
|
||||
}
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
return new Promise(function (resolve) {
|
||||
if (layoutManager.tv) {
|
||||
centerFocus(dlg.querySelector('.formDialogContent'), false, false);
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ import { appRouter } from '../appRouter';
|
|||
let showMuteButton = true;
|
||||
let showVolumeSlider = true;
|
||||
|
||||
function showAudioMenu(context, player, button, item) {
|
||||
function showAudioMenu(context, player, button) {
|
||||
const currentIndex = playbackManager.getAudioStreamIndex(player);
|
||||
const streams = playbackManager.audioTracks(player);
|
||||
const menuItems = streams.map(function (s) {
|
||||
|
@ -51,7 +51,7 @@ function showAudioMenu(context, player, button, item) {
|
|||
});
|
||||
}
|
||||
|
||||
function showSubtitleMenu(context, player, button, item) {
|
||||
function showSubtitleMenu(context, player, button) {
|
||||
const currentIndex = playbackManager.getSubtitleStreamIndex(player);
|
||||
const streams = playbackManager.subtitleTracks(player);
|
||||
const menuItems = streams.map(function (s) {
|
||||
|
@ -572,7 +572,7 @@ export default function () {
|
|||
}
|
||||
}
|
||||
|
||||
function onPlaylistUpdate(e) {
|
||||
function onPlaylistUpdate() {
|
||||
loadPlaylist(dlg, this);
|
||||
}
|
||||
|
||||
|
@ -603,7 +603,7 @@ export default function () {
|
|||
}
|
||||
}
|
||||
|
||||
function onPlayPauseStateChanged(e) {
|
||||
function onPlayPauseStateChanged() {
|
||||
updatePlayPauseState(this.paused(), true);
|
||||
}
|
||||
|
||||
|
@ -613,7 +613,7 @@ export default function () {
|
|||
onPlaylistUpdate();
|
||||
}
|
||||
|
||||
function onTimeUpdate(e) {
|
||||
function onTimeUpdate() {
|
||||
const now = new Date().getTime();
|
||||
|
||||
if (!(now - lastUpdateTime < 700)) {
|
||||
|
@ -624,7 +624,7 @@ export default function () {
|
|||
}
|
||||
}
|
||||
|
||||
function onVolumeChanged(e) {
|
||||
function onVolumeChanged() {
|
||||
const player = this;
|
||||
updatePlayerVolumeState(dlg, player.isMuted(), player.getVolume());
|
||||
}
|
||||
|
@ -727,12 +727,12 @@ export default function () {
|
|||
});
|
||||
context.querySelector('.btnAudioTracks').addEventListener('click', function (e) {
|
||||
if (currentPlayer && lastPlayerState && lastPlayerState.NowPlayingItem) {
|
||||
showAudioMenu(context, currentPlayer, e.target, lastPlayerState.NowPlayingItem);
|
||||
showAudioMenu(context, currentPlayer, e.target);
|
||||
}
|
||||
});
|
||||
context.querySelector('.btnSubtitles').addEventListener('click', function (e) {
|
||||
if (currentPlayer && lastPlayerState && lastPlayerState.NowPlayingItem) {
|
||||
showSubtitleMenu(context, currentPlayer, e.target, lastPlayerState.NowPlayingItem);
|
||||
showSubtitleMenu(context, currentPlayer, e.target);
|
||||
}
|
||||
});
|
||||
context.querySelector('.btnStop').addEventListener('click', function () {
|
||||
|
@ -922,13 +922,13 @@ export default function () {
|
|||
}
|
||||
}
|
||||
|
||||
function onDialogClosed(e) {
|
||||
function onDialogClosed() {
|
||||
releaseCurrentPlayer();
|
||||
Events.off(playbackManager, 'playerchange', onPlayerChange);
|
||||
lastPlayerState = null;
|
||||
}
|
||||
|
||||
function onShow(context, tab) {
|
||||
function onShow(context) {
|
||||
bindToPlayer(context, playbackManager.getCurrentPlayer());
|
||||
}
|
||||
|
||||
|
@ -946,7 +946,7 @@ export default function () {
|
|||
};
|
||||
|
||||
self.onShow = function () {
|
||||
onShow(dlg, window.location.hash);
|
||||
onShow(dlg);
|
||||
};
|
||||
|
||||
self.destroy = function () {
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
// TODO: Check if needed and move to external dependency
|
||||
// From https://github.com/parshap/node-sanitize-filename
|
||||
|
||||
const illegalRe = /[\/\?<>\\:\*\|":]/g;
|
||||
const illegalRe = /[/?<>\\:*|":]/g;
|
||||
// eslint-disable-next-line no-control-regex
|
||||
const controlRe = /[\x00-\x1f\x80-\x9f]/g;
|
||||
const reservedRe = /^\.+$/;
|
||||
const windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i;
|
||||
const windowsTrailingRe = /[\. ]+$/;
|
||||
const windowsTrailingRe = /[. ]+$/;
|
||||
|
||||
function isHighSurrogate(codePoint) {
|
||||
return codePoint >= 0xd800 && codePoint <= 0xdbff;
|
||||
|
|
|
@ -61,7 +61,7 @@ import template from './searchfields.template.html';
|
|||
triggerSearch(searchFieldsInstance, value);
|
||||
}
|
||||
|
||||
function embed(elem, instance, options) {
|
||||
function embed(elem, instance) {
|
||||
let html = globalize.translateHtml(template, 'core');
|
||||
|
||||
if (browser.tizen || browser.orsay) {
|
||||
|
@ -89,7 +89,7 @@ import template from './searchfields.template.html';
|
|||
class SearchFields {
|
||||
constructor(options) {
|
||||
this.options = options;
|
||||
embed(options.element, this, options);
|
||||
embed(options.element, this);
|
||||
}
|
||||
focus() {
|
||||
this.options.element.querySelector('.searchfields-txtSearch').focus();
|
||||
|
|
|
@ -585,7 +585,7 @@ import template from './searchresults.template.html';
|
|||
return originalString.replace(reg, strWith);
|
||||
}
|
||||
|
||||
function embed(elem, instance, options) {
|
||||
function embed(elem, instance) {
|
||||
let workingTemplate = template;
|
||||
if (!enableScrollX()) {
|
||||
workingTemplate = replaceAll(workingTemplate, 'data-horizontal="true"', 'data-horizontal="false"');
|
||||
|
@ -603,7 +603,7 @@ import template from './searchresults.template.html';
|
|||
class SearchResults {
|
||||
constructor(options) {
|
||||
this.options = options;
|
||||
embed(options.element, this, options);
|
||||
embed(options.element, this);
|
||||
}
|
||||
search(value) {
|
||||
const apiClient = ServerConnections.getApiClient(this.options.serverId);
|
||||
|
|
|
@ -210,7 +210,7 @@ export default function (options) {
|
|||
dialog.innerHTML = html;
|
||||
|
||||
if (options.interactive && !layoutManager.tv) {
|
||||
dialog.querySelector('.btnSlideshowExit').addEventListener('click', function (e) {
|
||||
dialog.querySelector('.btnSlideshowExit').addEventListener('click', function () {
|
||||
dialogHelper.close(dialog);
|
||||
});
|
||||
|
||||
|
@ -381,10 +381,9 @@ export default function (options) {
|
|||
/**
|
||||
* Renders the HTML markup of a slide for an item or a slide.
|
||||
* @param {Object} item - The item used to render the slide.
|
||||
* @param {number} index - The index of the item in the Swiper instance.
|
||||
* @returns {string} The HTML markup of the slide.
|
||||
*/
|
||||
function getSwiperSlideHtml(item, index) {
|
||||
function getSwiperSlideHtml(item) {
|
||||
if (currentOptions.slides) {
|
||||
return getSwiperSlideHtmlFromSlide(item);
|
||||
} else {
|
||||
|
|
|
@ -108,7 +108,7 @@ function initEditor(page) {
|
|||
});
|
||||
}
|
||||
|
||||
function showEditor(options, resolve, reject) {
|
||||
function showEditor(options, resolve) {
|
||||
options = options || {};
|
||||
currentItemId = options.itemId;
|
||||
currentServerId = options.serverId;
|
||||
|
@ -161,9 +161,9 @@ function showEditor(options, resolve, reject) {
|
|||
}
|
||||
|
||||
export function show(options) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
return new Promise(function (resolve) {
|
||||
hasChanges = false;
|
||||
showEditor(options, resolve, reject);
|
||||
showEditor(options, resolve);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -130,7 +130,7 @@ class Manager {
|
|||
/**
|
||||
* Called when the player changes.
|
||||
*/
|
||||
onPlayerChange(newPlayer, newTarget, oldPlayer) {
|
||||
onPlayerChange(newPlayer) {
|
||||
this.bindToPlayer(newPlayer);
|
||||
}
|
||||
|
||||
|
@ -228,9 +228,8 @@ class Manager {
|
|||
/**
|
||||
* Handles a playback command from the server.
|
||||
* @param {Object} cmd The playback command.
|
||||
* @param {Object} apiClient The ApiClient.
|
||||
*/
|
||||
processCommand(cmd, apiClient) {
|
||||
processCommand(cmd) {
|
||||
if (cmd === null) return;
|
||||
|
||||
if (typeof cmd.When === 'string') {
|
||||
|
@ -277,9 +276,8 @@ class Manager {
|
|||
/**
|
||||
* Handles a group state change.
|
||||
* @param {Object} update The group state update.
|
||||
* @param {Object} apiClient The ApiClient.
|
||||
*/
|
||||
processStateChange(update, apiClient) {
|
||||
processStateChange(update) {
|
||||
if (update === null || update.State === null || update.Reason === null) return;
|
||||
|
||||
if (!this.isSyncPlayEnabled()) {
|
||||
|
|
|
@ -158,6 +158,7 @@ class GenericPlayer {
|
|||
* Sets the playback rate, if supported.
|
||||
* @param {number} value The playback rate.
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
setPlaybackRate(value) {
|
||||
// Do nothing.
|
||||
}
|
||||
|
@ -196,6 +197,7 @@ class GenericPlayer {
|
|||
* Seeks the player to the specified position.
|
||||
* @param {number} positionTicks The new position.
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
localSeek(positionTicks) {
|
||||
|
||||
}
|
||||
|
@ -211,6 +213,7 @@ class GenericPlayer {
|
|||
* Sends a command to the player.
|
||||
* @param {Object} command The command.
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
localSendCommand(command) {
|
||||
|
||||
}
|
||||
|
@ -219,6 +222,7 @@ class GenericPlayer {
|
|||
* Starts playback.
|
||||
* @param {Object} options Playback data.
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
localPlay(options) {
|
||||
|
||||
}
|
||||
|
@ -227,6 +231,7 @@ class GenericPlayer {
|
|||
* Sets playing item from playlist.
|
||||
* @param {string} playlistItemId The item to play.
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
localSetCurrentPlaylistItem(playlistItemId) {
|
||||
|
||||
}
|
||||
|
@ -235,6 +240,7 @@ class GenericPlayer {
|
|||
* Removes items from playlist.
|
||||
* @param {Array} playlistItemIds The items to remove.
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
localRemoveFromPlaylist(playlistItemIds) {
|
||||
|
||||
}
|
||||
|
@ -244,6 +250,7 @@ class GenericPlayer {
|
|||
* @param {string} playlistItemId The item to move.
|
||||
* @param {number} newIndex The new position.
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
localMovePlaylistItem(playlistItemId, newIndex) {
|
||||
|
||||
}
|
||||
|
@ -252,6 +259,7 @@ class GenericPlayer {
|
|||
* Queues in the playlist.
|
||||
* @param {Object} options Queue data.
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
localQueue(options) {
|
||||
|
||||
}
|
||||
|
@ -260,6 +268,7 @@ class GenericPlayer {
|
|||
* Queues after the playing item in the playlist.
|
||||
* @param {Object} options Queue data.
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
localQueueNext(options) {
|
||||
|
||||
}
|
||||
|
@ -282,6 +291,7 @@ class GenericPlayer {
|
|||
* Sets repeat mode.
|
||||
* @param {string} value The repeat mode.
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
localSetRepeatMode(value) {
|
||||
|
||||
}
|
||||
|
@ -290,6 +300,7 @@ class GenericPlayer {
|
|||
* Sets shuffle mode.
|
||||
* @param {string} value The shuffle mode.
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
localSetQueueShuffleMode(value) {
|
||||
|
||||
}
|
||||
|
|
|
@ -135,7 +135,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's seek method.
|
||||
*/
|
||||
seekRequest(positionTicks, player) {
|
||||
seekRequest(positionTicks) {
|
||||
const controller = syncPlayManager.getController();
|
||||
controller.seek(positionTicks);
|
||||
}
|
||||
|
@ -148,19 +148,19 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
const controller = syncPlayManager.getController();
|
||||
const playerWrapper = syncPlayManager.getPlayerWrapper();
|
||||
|
||||
const defaultAction = (_command, _player) => {
|
||||
const defaultAction = (_command) => {
|
||||
playerWrapper.localSendCommand(_command);
|
||||
};
|
||||
|
||||
const ignoreCallback = (_command, _player) => {
|
||||
const ignoreCallback = () => {
|
||||
// Do nothing.
|
||||
};
|
||||
|
||||
const SetRepeatModeCallback = (_command, _player) => {
|
||||
const SetRepeatModeCallback = (_command) => {
|
||||
controller.setRepeatMode(_command.Arguments.RepeatMode);
|
||||
};
|
||||
|
||||
const SetShuffleQueueCallback = (_command, _player) => {
|
||||
const SetShuffleQueueCallback = (_command) => {
|
||||
controller.setShuffleMode(_command.Arguments.ShuffleMode);
|
||||
};
|
||||
|
||||
|
@ -176,7 +176,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
if (typeof commandHandler === 'function') {
|
||||
commandHandler(command, player);
|
||||
} else {
|
||||
defaultAction(command, player);
|
||||
defaultAction(command);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -242,7 +242,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's setCurrentPlaylistItem method.
|
||||
*/
|
||||
setCurrentPlaylistItemRequest(playlistItemId, player) {
|
||||
setCurrentPlaylistItemRequest(playlistItemId) {
|
||||
const controller = syncPlayManager.getController();
|
||||
controller.setCurrentPlaylistItem(playlistItemId);
|
||||
}
|
||||
|
@ -250,7 +250,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's removeFromPlaylist method.
|
||||
*/
|
||||
removeFromPlaylistRequest(playlistItemIds, player) {
|
||||
removeFromPlaylistRequest(playlistItemIds) {
|
||||
const controller = syncPlayManager.getController();
|
||||
controller.removeFromPlaylist(playlistItemIds);
|
||||
}
|
||||
|
@ -258,7 +258,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's movePlaylistItem method.
|
||||
*/
|
||||
movePlaylistItemRequest(playlistItemId, newIndex, player) {
|
||||
movePlaylistItemRequest(playlistItemId, newIndex) {
|
||||
const controller = syncPlayManager.getController();
|
||||
controller.movePlaylistItem(playlistItemId, newIndex);
|
||||
}
|
||||
|
@ -266,7 +266,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's queue method.
|
||||
*/
|
||||
queueRequest(options, player) {
|
||||
queueRequest(options) {
|
||||
const controller = syncPlayManager.getController();
|
||||
controller.queue(options);
|
||||
}
|
||||
|
@ -274,7 +274,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's queueNext method.
|
||||
*/
|
||||
queueNextRequest(options, player) {
|
||||
queueNextRequest(options) {
|
||||
const controller = syncPlayManager.getController();
|
||||
controller.queueNext(options);
|
||||
}
|
||||
|
@ -282,7 +282,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's nextTrack method.
|
||||
*/
|
||||
nextTrackRequest(player) {
|
||||
nextTrackRequest() {
|
||||
const controller = syncPlayManager.getController();
|
||||
controller.nextItem();
|
||||
}
|
||||
|
@ -290,7 +290,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's previousTrack method.
|
||||
*/
|
||||
previousTrackRequest(player) {
|
||||
previousTrackRequest() {
|
||||
const controller = syncPlayManager.getController();
|
||||
controller.previousItem();
|
||||
}
|
||||
|
@ -298,7 +298,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's setRepeatMode method.
|
||||
*/
|
||||
setRepeatModeRequest(mode, player) {
|
||||
setRepeatModeRequest(mode) {
|
||||
const controller = syncPlayManager.getController();
|
||||
controller.setRepeatMode(mode);
|
||||
}
|
||||
|
@ -306,7 +306,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's setQueueShuffleMode method.
|
||||
*/
|
||||
setQueueShuffleModeRequest(mode, player) {
|
||||
setQueueShuffleModeRequest(mode) {
|
||||
const controller = syncPlayManager.getController();
|
||||
controller.setShuffleMode(mode);
|
||||
}
|
||||
|
@ -314,7 +314,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's toggleQueueShuffleMode method.
|
||||
*/
|
||||
toggleQueueShuffleModeRequest(player) {
|
||||
toggleQueueShuffleModeRequest() {
|
||||
const controller = syncPlayManager.getController();
|
||||
controller.toggleShuffleMode();
|
||||
}
|
||||
|
|
|
@ -21,14 +21,14 @@ class QueueManager {
|
|||
/**
|
||||
* Placeholder for original PlayQueueManager method.
|
||||
*/
|
||||
setPlaylist(items) {
|
||||
setPlaylist() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
/**
|
||||
* Placeholder for original PlayQueueManager method.
|
||||
*/
|
||||
queue(items) {
|
||||
queue() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
|
@ -49,14 +49,14 @@ class QueueManager {
|
|||
/**
|
||||
* Placeholder for original PlayQueueManager method.
|
||||
*/
|
||||
clearPlaylist(clearCurrentItem = false) {
|
||||
clearPlaylist() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
/**
|
||||
* Placeholder for original PlayQueueManager method.
|
||||
*/
|
||||
queueNext(items) {
|
||||
queueNext() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
|
@ -90,28 +90,28 @@ class QueueManager {
|
|||
/**
|
||||
* Placeholder for original PlayQueueManager method.
|
||||
*/
|
||||
setPlaylistState(playlistItemId, playlistIndex) {
|
||||
setPlaylistState() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
/**
|
||||
* Placeholder for original PlayQueueManager method.
|
||||
*/
|
||||
setPlaylistIndex(playlistIndex) {
|
||||
setPlaylistIndex() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
/**
|
||||
* Placeholder for original PlayQueueManager method.
|
||||
*/
|
||||
removeFromPlaylist(playlistItemIds) {
|
||||
removeFromPlaylist() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
/**
|
||||
* Placeholder for original PlayQueueManager method.
|
||||
*/
|
||||
movePlaylistItem(playlistItemId, newIndex) {
|
||||
movePlaylistItem() {
|
||||
// Do nothing.
|
||||
return {
|
||||
result: 'noop'
|
||||
|
@ -128,7 +128,7 @@ class QueueManager {
|
|||
/**
|
||||
* Placeholder for original PlayQueueManager method.
|
||||
*/
|
||||
setRepeatMode(value) {
|
||||
setRepeatMode() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
|
@ -142,7 +142,7 @@ class QueueManager {
|
|||
/**
|
||||
* Placeholder for original PlayQueueManager method.
|
||||
*/
|
||||
setShuffleMode(value) {
|
||||
setShuffleMode() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import layoutManager from '../layoutManager';
|
|||
import '../../elements/emby-tabs/emby-tabs';
|
||||
import { appRouter } from '../appRouter';
|
||||
|
||||
function onViewDestroy(e) {
|
||||
function onViewDestroy() {
|
||||
const tabControllers = this.tabControllers;
|
||||
|
||||
if (tabControllers) {
|
||||
|
@ -78,7 +78,7 @@ class TabbedView {
|
|||
|
||||
view.addEventListener('viewbeforehide', this.onPause.bind(this));
|
||||
|
||||
view.addEventListener('viewbeforeshow', function (e) {
|
||||
view.addEventListener('viewbeforeshow', function () {
|
||||
mainTabsManager.setTabs(view, currentTabIndex, self.getTabs, getTabContainers, onBeforeTabChange, onTabChange, false);
|
||||
});
|
||||
|
||||
|
@ -89,7 +89,7 @@ class TabbedView {
|
|||
view.addEventListener('viewdestroy', onViewDestroy.bind(this));
|
||||
}
|
||||
|
||||
onResume(options) {
|
||||
onResume() {
|
||||
this.setTitle();
|
||||
backdrop.clearBackdrop();
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@ import './formdialog.scss';
|
|||
import '../elements/emby-button/emby-button';
|
||||
import '../elements/emby-itemscontainer/emby-itemscontainer';
|
||||
import './cardbuilder/card.scss';
|
||||
import ServerConnections from './ServerConnections';
|
||||
|
||||
const enableFocusTransform = !browser.slow && !browser.edge;
|
||||
|
||||
|
@ -106,7 +105,7 @@ function renderDevices(view, devices) {
|
|||
}
|
||||
}
|
||||
|
||||
function discoverDevices(view, apiClient) {
|
||||
function discoverDevices(view) {
|
||||
loading.show();
|
||||
view.querySelector('.loadingContent').classList.remove('hide');
|
||||
return ApiClient.getJSON(ApiClient.getUrl('LiveTv/Tuners/Discvover', {
|
||||
|
@ -120,7 +119,7 @@ function discoverDevices(view, apiClient) {
|
|||
}
|
||||
|
||||
function tunerPicker() {
|
||||
this.show = function (options) {
|
||||
this.show = function () {
|
||||
const dialogOptions = {
|
||||
removeOnClose: true,
|
||||
scrollY: false
|
||||
|
@ -163,8 +162,7 @@ function tunerPicker() {
|
|||
scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false);
|
||||
}
|
||||
|
||||
const apiClient = ServerConnections.getApiClient(options.serverId);
|
||||
discoverDevices(dlg, apiClient);
|
||||
discoverDevices(dlg);
|
||||
|
||||
if (layoutManager.tv) {
|
||||
scrollHelper.centerFocus.off(dlg.querySelector('.formDialogContent'), false);
|
||||
|
|
|
@ -149,7 +149,7 @@ export default function (page, providerId, options) {
|
|||
}),
|
||||
data: JSON.stringify(info),
|
||||
contentType: 'application/json'
|
||||
}).then(function (result) {
|
||||
}).then(function () {
|
||||
loading.hide();
|
||||
|
||||
if (options.showConfirmation) {
|
||||
|
@ -190,7 +190,7 @@ export default function (page, providerId, options) {
|
|||
}
|
||||
|
||||
loading.hide();
|
||||
}, function (result) {
|
||||
}, function () {
|
||||
Dashboard.alert({
|
||||
message: globalize.translate('ErrorGettingTvLineups')
|
||||
});
|
||||
|
|
|
@ -88,7 +88,7 @@ export default function (page, providerId, options) {
|
|||
}),
|
||||
data: JSON.stringify(info),
|
||||
contentType: 'application/json'
|
||||
}).then(function (result) {
|
||||
}).then(function () {
|
||||
loading.hide();
|
||||
|
||||
if (options.showConfirmation !== false) {
|
||||
|
|
|
@ -119,7 +119,7 @@ import Dashboard from '../scripts/clientUtils';
|
|||
function parseHtml(html, hasScript) {
|
||||
if (hasScript) {
|
||||
html = replaceAll(html, '\x3c!--<script', '<script');
|
||||
html = replaceAll(html, '<\/script>--\x3e', '<\/script>');
|
||||
html = replaceAll(html, '</script>--\x3e', '</script>');
|
||||
}
|
||||
|
||||
const wrapper = document.createElement('div');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue