Merge pull request #1597 from Camc314/migrate-to-ES6-35
Migration of nowplayingbar to ES6 module
This commit is contained in:
commit
4dad5e0c79
2 changed files with 88 additions and 66 deletions
|
@ -120,6 +120,7 @@
|
||||||
"src/components/maintabsmanager.js",
|
"src/components/maintabsmanager.js",
|
||||||
"src/components/mediaLibraryCreator/mediaLibraryCreator.js",
|
"src/components/mediaLibraryCreator/mediaLibraryCreator.js",
|
||||||
"src/components/mediaLibraryEditor/mediaLibraryEditor.js",
|
"src/components/mediaLibraryEditor/mediaLibraryEditor.js",
|
||||||
|
"src/components/nowPlayingBar/nowPlayingBar.js",
|
||||||
"src/components/listview/listview.js",
|
"src/components/listview/listview.js",
|
||||||
"src/components/playback/brightnessosd.js",
|
"src/components/playback/brightnessosd.js",
|
||||||
"src/components/playback/mediasession.js",
|
"src/components/playback/mediasession.js",
|
||||||
|
|
|
@ -1,31 +1,46 @@
|
||||||
define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', 'layoutManager', 'playbackManager', 'nowPlayingHelper', 'apphost', 'dom', 'connectionManager', 'itemContextMenu', 'paper-icon-button-light', 'emby-ratingbutton'], function (require, datetime, itemHelper, events, browser, imageLoader, layoutManager, playbackManager, nowPlayingHelper, appHost, dom, connectionManager, itemContextMenu) {
|
import require from 'require';
|
||||||
'use strict';
|
import datetime from 'datetime';
|
||||||
|
import itemHelper from 'itemHelper';
|
||||||
|
import events from 'events';
|
||||||
|
import browser from 'browser';
|
||||||
|
import imageLoader from 'imageLoader';
|
||||||
|
import layoutManager from 'layoutManager';
|
||||||
|
import playbackManager from 'playbackManager';
|
||||||
|
import nowPlayingHelper from 'nowPlayingHelper';
|
||||||
|
import appHost from 'apphost';
|
||||||
|
import dom from 'dom';
|
||||||
|
import connectionManager from 'connectionManager';
|
||||||
|
import itemContextMenu from 'itemContextMenu';
|
||||||
|
import 'paper-icon-button-light';
|
||||||
|
import 'emby-ratingbutton';
|
||||||
|
|
||||||
var currentPlayer;
|
/* eslint-disable indent */
|
||||||
var currentPlayerSupportedCommands = [];
|
|
||||||
|
|
||||||
var currentTimeElement;
|
let currentPlayer;
|
||||||
var nowPlayingImageElement;
|
let currentPlayerSupportedCommands = [];
|
||||||
var nowPlayingTextElement;
|
|
||||||
var nowPlayingUserData;
|
|
||||||
var muteButton;
|
|
||||||
var volumeSlider;
|
|
||||||
var volumeSliderContainer;
|
|
||||||
var playPauseButtons;
|
|
||||||
var positionSlider;
|
|
||||||
var toggleRepeatButton;
|
|
||||||
var toggleRepeatButtonIcon;
|
|
||||||
|
|
||||||
var lastUpdateTime = 0;
|
let currentTimeElement;
|
||||||
var lastPlayerState = {};
|
let nowPlayingImageElement;
|
||||||
var isEnabled;
|
let nowPlayingTextElement;
|
||||||
var currentRuntimeTicks = 0;
|
let nowPlayingUserData;
|
||||||
|
let muteButton;
|
||||||
|
let volumeSlider;
|
||||||
|
let volumeSliderContainer;
|
||||||
|
let playPauseButtons;
|
||||||
|
let positionSlider;
|
||||||
|
let toggleRepeatButton;
|
||||||
|
let toggleRepeatButtonIcon;
|
||||||
|
|
||||||
var isVisibilityAllowed = true;
|
let lastUpdateTime = 0;
|
||||||
|
let lastPlayerState = {};
|
||||||
|
let isEnabled;
|
||||||
|
let currentRuntimeTicks = 0;
|
||||||
|
|
||||||
|
let isVisibilityAllowed = true;
|
||||||
|
|
||||||
function getNowPlayingBarHtml() {
|
function getNowPlayingBarHtml() {
|
||||||
|
|
||||||
var html = '';
|
let html = '';
|
||||||
|
|
||||||
html += '<div class="nowPlayingBar hide nowPlayingBar-hidden">';
|
html += '<div class="nowPlayingBar hide nowPlayingBar-hidden">';
|
||||||
|
|
||||||
|
@ -198,7 +213,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
|
|
||||||
if (currentPlayer) {
|
if (currentPlayer) {
|
||||||
|
|
||||||
var newPercent = parseFloat(this.value);
|
const newPercent = parseFloat(this.value);
|
||||||
|
|
||||||
playbackManager.seekPercent(newPercent, currentPlayer);
|
playbackManager.seekPercent(newPercent, currentPlayer);
|
||||||
}
|
}
|
||||||
|
@ -207,13 +222,13 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
|
|
||||||
positionSlider.getBubbleText = function (value) {
|
positionSlider.getBubbleText = function (value) {
|
||||||
|
|
||||||
var state = lastPlayerState;
|
const state = lastPlayerState;
|
||||||
|
|
||||||
if (!state || !state.NowPlayingItem || !currentRuntimeTicks) {
|
if (!state || !state.NowPlayingItem || !currentRuntimeTicks) {
|
||||||
return '--:--';
|
return '--:--';
|
||||||
}
|
}
|
||||||
|
|
||||||
var ticks = currentRuntimeTicks;
|
let ticks = currentRuntimeTicks;
|
||||||
ticks /= 100;
|
ticks /= 100;
|
||||||
ticks *= value;
|
ticks *= value;
|
||||||
|
|
||||||
|
@ -230,12 +245,12 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
|
|
||||||
function showRemoteControl() {
|
function showRemoteControl() {
|
||||||
|
|
||||||
require(['appRouter'], function (appRouter) {
|
import('appRouter').then(({default: appRouter}) => {
|
||||||
appRouter.showNowPlaying();
|
appRouter.showNowPlaying();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var nowPlayingBarElement;
|
let nowPlayingBarElement;
|
||||||
function getNowPlayingBar() {
|
function getNowPlayingBar() {
|
||||||
|
|
||||||
if (nowPlayingBarElement) {
|
if (nowPlayingBarElement) {
|
||||||
|
@ -243,10 +258,15 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
Promise.all([
|
||||||
require(['appFooter-shared', 'itemShortcuts', 'css!./nowPlayingBar.css', 'emby-slider'], function (appfooter, itemShortcuts) {
|
import('appFooter-shared'),
|
||||||
|
import('itemShortcuts'),
|
||||||
var parentContainer = appfooter.element;
|
import('css!./nowPlayingBar.css'),
|
||||||
|
import('emby-slider')
|
||||||
|
])
|
||||||
|
.then(([appfooter, itemShortcuts]) => {
|
||||||
|
console.log(appfooter);
|
||||||
|
const parentContainer = appfooter.element;
|
||||||
nowPlayingBarElement = parentContainer.querySelector('.nowPlayingBar');
|
nowPlayingBarElement = parentContainer.querySelector('.nowPlayingBar');
|
||||||
|
|
||||||
if (nowPlayingBarElement) {
|
if (nowPlayingBarElement) {
|
||||||
|
@ -294,13 +314,13 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
|
|
||||||
lastPlayerState = state;
|
lastPlayerState = state;
|
||||||
|
|
||||||
var playerInfo = playbackManager.getPlayerInfo();
|
const playerInfo = playbackManager.getPlayerInfo();
|
||||||
|
|
||||||
var playState = state.PlayState || {};
|
const playState = state.PlayState || {};
|
||||||
|
|
||||||
updatePlayPauseState(playState.IsPaused);
|
updatePlayPauseState(playState.IsPaused);
|
||||||
|
|
||||||
var supportedCommands = playerInfo.supportedCommands;
|
const supportedCommands = playerInfo.supportedCommands;
|
||||||
currentPlayerSupportedCommands = supportedCommands;
|
currentPlayerSupportedCommands = supportedCommands;
|
||||||
|
|
||||||
if (supportedCommands.indexOf('SetRepeatMode') === -1) {
|
if (supportedCommands.indexOf('SetRepeatMode') === -1) {
|
||||||
|
@ -317,11 +337,11 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
positionSlider.disabled = !playState.CanSeek;
|
positionSlider.disabled = !playState.CanSeek;
|
||||||
|
|
||||||
// determines if both forward and backward buffer progress will be visible
|
// determines if both forward and backward buffer progress will be visible
|
||||||
var isProgressClear = state.MediaSource && state.MediaSource.RunTimeTicks == null;
|
const isProgressClear = state.MediaSource && state.MediaSource.RunTimeTicks == null;
|
||||||
positionSlider.setIsClear(isProgressClear);
|
positionSlider.setIsClear(isProgressClear);
|
||||||
}
|
}
|
||||||
|
|
||||||
var nowPlayingItem = state.NowPlayingItem || {};
|
const nowPlayingItem = state.NowPlayingItem || {};
|
||||||
updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playbackManager.getBufferedRanges(player));
|
updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playbackManager.getBufferedRanges(player));
|
||||||
|
|
||||||
updateNowPlayingInfo(state);
|
updateNowPlayingInfo(state);
|
||||||
|
@ -348,7 +368,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
if (positionSlider && !positionSlider.dragging) {
|
if (positionSlider && !positionSlider.dragging) {
|
||||||
if (runtimeTicks) {
|
if (runtimeTicks) {
|
||||||
|
|
||||||
var pct = positionTicks / runtimeTicks;
|
let pct = positionTicks / runtimeTicks;
|
||||||
pct *= 100;
|
pct *= 100;
|
||||||
|
|
||||||
positionSlider.value = pct;
|
positionSlider.value = pct;
|
||||||
|
@ -365,7 +385,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
|
|
||||||
if (currentTimeElement) {
|
if (currentTimeElement) {
|
||||||
|
|
||||||
var timeText = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks);
|
let timeText = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks);
|
||||||
|
|
||||||
if (runtimeTicks) {
|
if (runtimeTicks) {
|
||||||
timeText += ' / ' + datetime.getDisplayRunningTime(runtimeTicks);
|
timeText += ' / ' + datetime.getDisplayRunningTime(runtimeTicks);
|
||||||
|
@ -377,10 +397,10 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
|
|
||||||
function updatePlayerVolumeState(isMuted, volumeLevel) {
|
function updatePlayerVolumeState(isMuted, volumeLevel) {
|
||||||
|
|
||||||
var supportedCommands = currentPlayerSupportedCommands;
|
const supportedCommands = currentPlayerSupportedCommands;
|
||||||
|
|
||||||
var showMuteButton = true;
|
let showMuteButton = true;
|
||||||
var showVolumeSlider = true;
|
let showVolumeSlider = true;
|
||||||
|
|
||||||
if (supportedCommands.indexOf('ToggleMute') === -1) {
|
if (supportedCommands.indexOf('ToggleMute') === -1) {
|
||||||
showMuteButton = false;
|
showMuteButton = false;
|
||||||
|
@ -495,37 +515,37 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentImgUrl;
|
let currentImgUrl;
|
||||||
function updateNowPlayingInfo(state) {
|
function updateNowPlayingInfo(state) {
|
||||||
|
|
||||||
var nowPlayingItem = state.NowPlayingItem;
|
const nowPlayingItem = state.NowPlayingItem;
|
||||||
|
|
||||||
var textLines = nowPlayingItem ? nowPlayingHelper.getNowPlayingNames(nowPlayingItem) : [];
|
const textLines = nowPlayingItem ? nowPlayingHelper.getNowPlayingNames(nowPlayingItem) : [];
|
||||||
if (textLines.length > 1) {
|
if (textLines.length > 1) {
|
||||||
textLines[1].secondary = true;
|
textLines[1].secondary = true;
|
||||||
}
|
}
|
||||||
nowPlayingTextElement.innerHTML = textLines.map(function (nowPlayingName) {
|
nowPlayingTextElement.innerHTML = textLines.map(function (nowPlayingName) {
|
||||||
|
|
||||||
var cssClass = nowPlayingName.secondary ? ' class="nowPlayingBarSecondaryText"' : '';
|
const cssClass = nowPlayingName.secondary ? ' class="nowPlayingBarSecondaryText"' : '';
|
||||||
|
|
||||||
if (nowPlayingName.item) {
|
if (nowPlayingName.item) {
|
||||||
var nowPlayingText = getTextActionButton(nowPlayingName.item, nowPlayingName.text);
|
const nowPlayingText = getTextActionButton(nowPlayingName.item, nowPlayingName.text);
|
||||||
return `<div ${cssClass}>${nowPlayingText}</div>`;
|
return `<div ${cssClass}>${nowPlayingText}</div>`;
|
||||||
}
|
}
|
||||||
|
let nowPlayingText = '';
|
||||||
return `<div ${cssClass}>${nowPlayingText}</div>`;
|
return `<div ${cssClass}>${nowPlayingText}</div>`;
|
||||||
|
|
||||||
}).join('');
|
}).join('');
|
||||||
|
|
||||||
var imgHeight = 70;
|
const imgHeight = 70;
|
||||||
|
|
||||||
var url = nowPlayingItem ? (seriesImageUrl(nowPlayingItem, {
|
const url = nowPlayingItem ? (seriesImageUrl(nowPlayingItem, {
|
||||||
height: imgHeight
|
height: imgHeight
|
||||||
}) || imageUrl(nowPlayingItem, {
|
}) || imageUrl(nowPlayingItem, {
|
||||||
height: imgHeight
|
height: imgHeight
|
||||||
})) : null;
|
})) : null;
|
||||||
|
|
||||||
var isRefreshing = false;
|
let isRefreshing = false;
|
||||||
|
|
||||||
if (url !== currentImgUrl) {
|
if (url !== currentImgUrl) {
|
||||||
currentImgUrl = url;
|
currentImgUrl = url;
|
||||||
|
@ -541,12 +561,12 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
if (nowPlayingItem.Id) {
|
if (nowPlayingItem.Id) {
|
||||||
if (isRefreshing) {
|
if (isRefreshing) {
|
||||||
|
|
||||||
var apiClient = connectionManager.getApiClient(nowPlayingItem.ServerId);
|
const apiClient = connectionManager.getApiClient(nowPlayingItem.ServerId);
|
||||||
apiClient.getItem(apiClient.getCurrentUserId(), nowPlayingItem.Id).then(function (item) {
|
apiClient.getItem(apiClient.getCurrentUserId(), nowPlayingItem.Id).then(function (item) {
|
||||||
var userData = item.UserData || {};
|
const userData = item.UserData || {};
|
||||||
var likes = userData.Likes == null ? '' : userData.Likes;
|
const likes = userData.Likes == null ? '' : userData.Likes;
|
||||||
var contextButton = document.querySelector('.btnToggleContextMenu');
|
const contextButton = document.querySelector('.btnToggleContextMenu');
|
||||||
var options = {
|
const options = {
|
||||||
play: false,
|
play: false,
|
||||||
queue: false,
|
queue: false,
|
||||||
positionTo: contextButton
|
positionTo: contextButton
|
||||||
|
@ -570,7 +590,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
function onPlaybackStart(e, state) {
|
function onPlaybackStart(e, state) {
|
||||||
console.debug('nowplaying event: ' + e.type);
|
console.debug('nowplaying event: ' + e.type);
|
||||||
|
|
||||||
var player = this;
|
const player = this;
|
||||||
|
|
||||||
onStateChanged.call(player, e, state);
|
onStateChanged.call(player, e, state);
|
||||||
}
|
}
|
||||||
|
@ -581,7 +601,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var player = this;
|
const player = this;
|
||||||
|
|
||||||
updateRepeatModeDisplay(playbackManager.getRepeatMode(player));
|
updateRepeatModeDisplay(playbackManager.getRepeatMode(player));
|
||||||
}
|
}
|
||||||
|
@ -604,7 +624,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
// in the event of a stop->play command
|
// in the event of a stop->play command
|
||||||
|
|
||||||
// Don't call getNowPlayingBar here because we don't want to end up creating it just to hide it
|
// Don't call getNowPlayingBar here because we don't want to end up creating it just to hide it
|
||||||
var elem = document.getElementsByClassName('nowPlayingBar')[0];
|
const elem = document.getElementsByClassName('nowPlayingBar')[0];
|
||||||
if (elem) {
|
if (elem) {
|
||||||
|
|
||||||
slideDown(elem);
|
slideDown(elem);
|
||||||
|
@ -614,7 +634,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
function onPlaybackStopped(e, state) {
|
function onPlaybackStopped(e, state) {
|
||||||
|
|
||||||
console.debug('nowplaying event: ' + e.type);
|
console.debug('nowplaying event: ' + e.type);
|
||||||
var player = this;
|
const player = this;
|
||||||
|
|
||||||
if (player.isLocalPlayer) {
|
if (player.isLocalPlayer) {
|
||||||
if (state.NextMediaType !== 'Audio') {
|
if (state.NextMediaType !== 'Audio') {
|
||||||
|
@ -633,14 +653,14 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var player = this;
|
const player = this;
|
||||||
updatePlayPauseState(player.paused());
|
updatePlayPauseState(player.paused());
|
||||||
}
|
}
|
||||||
|
|
||||||
function onStateChanged(event, state) {
|
function onStateChanged(event, state) {
|
||||||
|
|
||||||
console.debug('nowplaying event: ' + event.type);
|
console.debug('nowplaying event: ' + event.type);
|
||||||
var player = this;
|
const player = this;
|
||||||
|
|
||||||
if (!state.NowPlayingItem || layoutManager.tv) {
|
if (!state.NowPlayingItem || layoutManager.tv) {
|
||||||
hideNowPlayingBar();
|
hideNowPlayingBar();
|
||||||
|
@ -671,21 +691,21 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to avoid hammering the document with changes
|
// Try to avoid hammering the document with changes
|
||||||
var now = new Date().getTime();
|
const now = new Date().getTime();
|
||||||
if ((now - lastUpdateTime) < 700) {
|
if ((now - lastUpdateTime) < 700) {
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
lastUpdateTime = now;
|
lastUpdateTime = now;
|
||||||
|
|
||||||
var player = this;
|
const player = this;
|
||||||
currentRuntimeTicks = playbackManager.duration(player);
|
currentRuntimeTicks = playbackManager.duration(player);
|
||||||
updateTimeDisplay(playbackManager.currentTime(player), currentRuntimeTicks, playbackManager.getBufferedRanges(player));
|
updateTimeDisplay(playbackManager.currentTime(player), currentRuntimeTicks, playbackManager.getBufferedRanges(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
function releaseCurrentPlayer() {
|
function releaseCurrentPlayer() {
|
||||||
|
|
||||||
var player = currentPlayer;
|
const player = currentPlayer;
|
||||||
|
|
||||||
if (player) {
|
if (player) {
|
||||||
events.off(player, 'playbackstart', onPlaybackStart);
|
events.off(player, 'playbackstart', onPlaybackStart);
|
||||||
|
@ -708,14 +728,14 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var player = this;
|
const player = this;
|
||||||
|
|
||||||
updatePlayerVolumeState(player.isMuted(), player.getVolume());
|
updatePlayerVolumeState(player.isMuted(), player.getVolume());
|
||||||
}
|
}
|
||||||
|
|
||||||
function refreshFromPlayer(player) {
|
function refreshFromPlayer(player) {
|
||||||
|
|
||||||
var state = playbackManager.getPlayerState(player);
|
const state = playbackManager.getPlayerState(player);
|
||||||
|
|
||||||
onStateChanged.call(player, { type: 'init' }, state);
|
onStateChanged.call(player, { type: 'init' }, state);
|
||||||
}
|
}
|
||||||
|
@ -771,4 +791,5 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
/* eslint-enable indent */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue