mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Address review comments
This commit is contained in:
parent
ae8d06533c
commit
b7714eea14
10 changed files with 138 additions and 87 deletions
|
@ -169,7 +169,7 @@ button::-moz-focus-inner {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cardImageContainer.cardScalable {
|
.cardScalable .cardImageContainer {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
contain: strict;
|
contain: strict;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1534,7 +1534,6 @@ import 'programStyles';
|
||||||
case 'MusicAlbum':
|
case 'MusicAlbum':
|
||||||
return '<span class="cardImageIcon material-icons album"></span>';
|
return '<span class="cardImageIcon material-icons album"></span>';
|
||||||
case 'MusicArtist':
|
case 'MusicArtist':
|
||||||
return '<span class="cardImageIcon material-icons person"></span>';
|
|
||||||
case 'Person':
|
case 'Person':
|
||||||
return '<span class="cardImageIcon material-icons person"></span>';
|
return '<span class="cardImageIcon material-icons person"></span>';
|
||||||
case 'Audio':
|
case 'Audio':
|
||||||
|
|
|
@ -165,7 +165,8 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
playbackManager.seekPercent(0, currentPlayer);
|
playbackManager.seekPercent(0, currentPlayer);
|
||||||
// This is done automatically by playbackManager, however, setting this here gives instant visual feedback
|
// This is done automatically by playbackManager, however, setting this here gives instant visual feedback.
|
||||||
|
// TODO: Check why seekPercentage doesn't reflect the changes inmmediately, so we can remove this workaround.
|
||||||
positionSlider.value = 0;
|
positionSlider.value = 0;
|
||||||
} else {
|
} else {
|
||||||
playbackManager.previousTrack(currentPlayer);
|
playbackManager.previousTrack(currentPlayer);
|
||||||
|
@ -181,11 +182,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
|
|
||||||
elem.querySelector('.btnShuffleQueue').addEventListener('click', function () {
|
elem.querySelector('.btnShuffleQueue').addEventListener('click', function () {
|
||||||
if (currentPlayer) {
|
if (currentPlayer) {
|
||||||
if (playbackManager.getQueueShuffleMode(currentPlayer) === 'Sorted') {
|
playbackManager.toggleQueueShuffleMode(currentPlayer);
|
||||||
playbackManager.setQueueShuffleMode('Shuffle', currentPlayer);
|
|
||||||
} else {
|
|
||||||
playbackManager.setQueueShuffleMode('Sorted', currentPlayer);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -367,16 +364,23 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
|
|
||||||
function updateRepeatModeDisplay(repeatMode) {
|
function updateRepeatModeDisplay(repeatMode) {
|
||||||
toggleRepeatButtonIcon.classList.remove('repeat', 'repeat_one');
|
toggleRepeatButtonIcon.classList.remove('repeat', 'repeat_one');
|
||||||
|
const cssClass = 'repeatButton-active';
|
||||||
|
|
||||||
if (repeatMode === 'RepeatAll') {
|
switch (repeatMode) {
|
||||||
|
case 'RepeatAll':
|
||||||
toggleRepeatButtonIcon.classList.add('repeat');
|
toggleRepeatButtonIcon.classList.add('repeat');
|
||||||
toggleRepeatButton.classList.add('repeatButton-active');
|
toggleRepeatButton.classList.add(cssClass);
|
||||||
} else if (repeatMode === 'RepeatOne') {
|
break;
|
||||||
|
case 'RepeatOne':
|
||||||
toggleRepeatButtonIcon.classList.add('repeat_one');
|
toggleRepeatButtonIcon.classList.add('repeat_one');
|
||||||
toggleRepeatButton.classList.add('repeatButton-active');
|
toggleRepeatButton.classList.add(cssClass);
|
||||||
} else {
|
break;
|
||||||
|
case 'RepeatNone':
|
||||||
toggleRepeatButtonIcon.classList.add('repeat');
|
toggleRepeatButtonIcon.classList.add('repeat');
|
||||||
toggleRepeatButton.classList.remove('repeatButton-active');
|
toggleRepeatButton.classList.remove(cssClass);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new TypeError('invalid value for repeatMode');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -530,24 +534,26 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
var nowPlayingItem = state.NowPlayingItem;
|
var nowPlayingItem = state.NowPlayingItem;
|
||||||
|
|
||||||
var textLines = nowPlayingItem ? nowPlayingHelper.getNowPlayingNames(nowPlayingItem) : [];
|
var textLines = nowPlayingItem ? nowPlayingHelper.getNowPlayingNames(nowPlayingItem) : [];
|
||||||
if (textLines.length > 1) {
|
|
||||||
textLines[1].secondary = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (textLines) {
|
|
||||||
nowPlayingTextElement.innerHTML = '';
|
nowPlayingTextElement.innerHTML = '';
|
||||||
let itemText = document.createElement('div');
|
if (textLines) {
|
||||||
let secondaryText = document.createElement('div');
|
let secondaryText = document.createElement('div');
|
||||||
secondaryText.classList.add('nowPlayingBarSecondaryText');
|
secondaryText.classList.add('nowPlayingBarSecondaryText');
|
||||||
|
let itemText = document.createElement('div');
|
||||||
|
if (textLines.length > 1) {
|
||||||
|
textLines[1].secondary = true;
|
||||||
|
if (textLines[1].text) {
|
||||||
|
let text = document.createElement('a');
|
||||||
|
text.innerHTML = textLines[1].text;
|
||||||
|
secondaryText.appendChild(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (textLines[0].text) {
|
||||||
if (textLines[0].text) {
|
if (textLines[0].text) {
|
||||||
let text = document.createElement('a');
|
let text = document.createElement('a');
|
||||||
text.innerHTML = textLines[0].text;
|
text.innerHTML = textLines[0].text;
|
||||||
itemText.appendChild(text);
|
itemText.appendChild(text);
|
||||||
}
|
}
|
||||||
if (textLines[1].text) {
|
|
||||||
let text = document.createElement('a');
|
|
||||||
text.innerHTML = textLines[1].text;
|
|
||||||
secondaryText.appendChild(text);
|
|
||||||
}
|
}
|
||||||
nowPlayingTextElement.appendChild(itemText);
|
nowPlayingTextElement.appendChild(itemText);
|
||||||
nowPlayingTextElement.appendChild(secondaryText);
|
nowPlayingTextElement.appendChild(secondaryText);
|
||||||
|
@ -586,11 +592,11 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
var userData = item.UserData || {};
|
var userData = item.UserData || {};
|
||||||
var likes = userData.Likes == null ? '' : userData.Likes;
|
var likes = userData.Likes == null ? '' : userData.Likes;
|
||||||
if (!layoutManager.mobile) {
|
if (!layoutManager.mobile) {
|
||||||
let contextButton = document.querySelector('.nowPlayingBar').querySelector('.btnToggleContextMenu');
|
let contextButton = nowPlayingBarElement.querySelector('.btnToggleContextMenu');
|
||||||
// We remove the previous event listener by replacing the item in each update event
|
// We remove the previous event listener by replacing the item in each update event
|
||||||
let contextButtonClone = contextButton.cloneNode(true);
|
let contextButtonClone = contextButton.cloneNode(true);
|
||||||
contextButton.parentNode.replaceChild(contextButtonClone, contextButton);
|
contextButton.parentNode.replaceChild(contextButtonClone, contextButton);
|
||||||
contextButton = document.querySelector('.nowPlayingBar').querySelector('.btnToggleContextMenu');
|
contextButton = nowPlayingBarElement.querySelector('.btnToggleContextMenu');
|
||||||
let options = {
|
let options = {
|
||||||
play: false,
|
play: false,
|
||||||
queue: false,
|
queue: false,
|
||||||
|
@ -637,10 +643,15 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
||||||
let context = nowPlayingBarElement;
|
let context = nowPlayingBarElement;
|
||||||
let toggleShuffleButton = context.querySelector('.btnShuffleQueue');
|
let toggleShuffleButton = context.querySelector('.btnShuffleQueue');
|
||||||
|
|
||||||
if (shuffleMode === 'Sorted') {
|
switch (shuffleMode) {
|
||||||
|
case 'Sorted':
|
||||||
toggleShuffleButton.classList.remove('shuffleQueue-active');
|
toggleShuffleButton.classList.remove('shuffleQueue-active');
|
||||||
} else if (shuffleMode === 'Shuffle') {
|
break;
|
||||||
|
case 'Shuffle':
|
||||||
toggleShuffleButton.classList.add('shuffleQueue-active');
|
toggleShuffleButton.classList.add('shuffleQueue-active');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new TypeError('invalid value for shuffleMode');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3886,7 +3886,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
|
||||||
'GoToSearch',
|
'GoToSearch',
|
||||||
'DisplayMessage',
|
'DisplayMessage',
|
||||||
'SetRepeatMode',
|
'SetRepeatMode',
|
||||||
'SetQueueShuffleMode',
|
'SetShuffleQueue',
|
||||||
'PlayMediaSource',
|
'PlayMediaSource',
|
||||||
'PlayTrailers'
|
'PlayTrailers'
|
||||||
];
|
];
|
||||||
|
@ -3941,9 +3941,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
|
||||||
return this._playQueueManager.getRepeatMode();
|
return this._playQueueManager.getRepeatMode();
|
||||||
};
|
};
|
||||||
|
|
||||||
PlaybackManager.prototype.setQueueShuffleMode = function (value, player) {
|
PlaybackManager.prototype.setQueueShuffleMode = function (value, player = this._currentPlayer) {
|
||||||
|
|
||||||
player = player || this._currentPlayer;
|
|
||||||
if (player && !enableLocalPlaylistManagement(player)) {
|
if (player && !enableLocalPlaylistManagement(player)) {
|
||||||
return player.setQueueShuffleMode(value);
|
return player.setQueueShuffleMode(value);
|
||||||
}
|
}
|
||||||
|
@ -3952,9 +3950,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
|
||||||
events.trigger(player, 'shufflequeuemodechange');
|
events.trigger(player, 'shufflequeuemodechange');
|
||||||
};
|
};
|
||||||
|
|
||||||
PlaybackManager.prototype.getQueueShuffleMode = function (player) {
|
PlaybackManager.prototype.getQueueShuffleMode = function (player = this._currentPlayer) {
|
||||||
|
|
||||||
player = player || this._currentPlayer;
|
|
||||||
if (player && !enableLocalPlaylistManagement(player)) {
|
if (player && !enableLocalPlaylistManagement(player)) {
|
||||||
return player.getQueueShuffleMode();
|
return player.getQueueShuffleMode();
|
||||||
}
|
}
|
||||||
|
@ -3962,6 +3958,26 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
|
||||||
return this._playQueueManager.getShuffleMode();
|
return this._playQueueManager.getShuffleMode();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
PlaybackManager.prototype.toggleQueueShuffleMode = function (player = this._currentPlayer) {
|
||||||
|
let currentvalue;
|
||||||
|
if (player && !enableLocalPlaylistManagement(player)) {
|
||||||
|
currentvalue = player.getQueueShuffleMode();
|
||||||
|
switch (currentvalue) {
|
||||||
|
case 'Shuffle':
|
||||||
|
player.setQueueShuffleMode('Sorted');
|
||||||
|
break;
|
||||||
|
case 'Sorted':
|
||||||
|
player.setQueueShuffleMode('Shuffle');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new TypeError('current value for shufflequeue is invalid');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this._playQueueManager.toggleShuffleMode();
|
||||||
|
}
|
||||||
|
events.trigger(player, 'shufflequeuemodechange');
|
||||||
|
};
|
||||||
|
|
||||||
PlaybackManager.prototype.trySetActiveDeviceName = function (name) {
|
PlaybackManager.prototype.trySetActiveDeviceName = function (name) {
|
||||||
|
|
||||||
name = normalizeName(name);
|
name = normalizeName(name);
|
||||||
|
@ -4030,7 +4046,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
|
||||||
case 'SetRepeatMode':
|
case 'SetRepeatMode':
|
||||||
this.setRepeatMode(cmd.Arguments.RepeatMode, player);
|
this.setRepeatMode(cmd.Arguments.RepeatMode, player);
|
||||||
break;
|
break;
|
||||||
case 'SetQueueShuffleMode':
|
case 'SetShuffleQueue':
|
||||||
this.setQueueShuffleMode(cmd.Arguments.ShuffleMode, player);
|
this.setQueueShuffleMode(cmd.Arguments.ShuffleMode, player);
|
||||||
break;
|
break;
|
||||||
case 'VolumeUp':
|
case 'VolumeUp':
|
||||||
|
|
|
@ -60,16 +60,12 @@ define([], function () {
|
||||||
|
|
||||||
PlayQueueManager.prototype.shufflePlaylist = function () {
|
PlayQueueManager.prototype.shufflePlaylist = function () {
|
||||||
this._sortedPlaylist = [];
|
this._sortedPlaylist = [];
|
||||||
let currentPlaylistItem = this._playlist[this.getCurrentPlaylistIndex()];
|
for (const item of this._playlist) {
|
||||||
for (let item of this._playlist) {
|
|
||||||
this._sortedPlaylist.push(item);
|
this._sortedPlaylist.push(item);
|
||||||
}
|
}
|
||||||
|
const currentPlaylistItem = this._playlist.splice(this.getCurrentPlaylistIndex(), 1)[0];
|
||||||
|
|
||||||
for (let i = this._playlist.length - 1; i > 0; i--) {
|
for (let i = this._playlist.length - 1; i > 0; i--) {
|
||||||
if (this._playlist[i] === currentPlaylistItem) {
|
|
||||||
this._playlist.splice(i, 1);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const j = Math.floor(Math.random() * i);
|
const j = Math.floor(Math.random() * i);
|
||||||
const temp = this._playlist[i];
|
const temp = this._playlist[i];
|
||||||
this._playlist[i] = this._playlist[j];
|
this._playlist[i] = this._playlist[j];
|
||||||
|
@ -216,7 +212,8 @@ define([], function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
PlayQueueManager.prototype.setRepeatMode = function (value) {
|
PlayQueueManager.prototype.setRepeatMode = function (value) {
|
||||||
if (value === 'RepeatOne' || value === 'RepeatAll' || value === 'RepeatNone') {
|
const repeatModes = ['RepeatOne', 'RepeatAll', 'RepeatNone'];
|
||||||
|
if (repeatModes.includes(value)) {
|
||||||
this._repeatMode = value;
|
this._repeatMode = value;
|
||||||
} else {
|
} else {
|
||||||
throw new TypeError('invalid value provided for setRepeatMode');
|
throw new TypeError('invalid value provided for setRepeatMode');
|
||||||
|
@ -228,12 +225,28 @@ define([], function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
PlayQueueManager.prototype.setShuffleMode = function (value) {
|
PlayQueueManager.prototype.setShuffleMode = function (value) {
|
||||||
if (value === 'Sorted') {
|
switch (value) {
|
||||||
this.sortShuffledPlaylist();
|
case 'Shuffle':
|
||||||
} else if (value === 'Shuffle') {
|
|
||||||
this.shufflePlaylist();
|
this.shufflePlaylist();
|
||||||
} else {
|
break;
|
||||||
throw new TypeError('invalid value provided for setShuffleMode');
|
case 'Sorted':
|
||||||
|
this.sortShuffledPlaylist();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new TypeError('invalid value provided to setShuffleMode');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
PlayQueueManager.prototype.toggleShuffleMode = function () {
|
||||||
|
switch (this._shuffleMode) {
|
||||||
|
case 'Shuffle':
|
||||||
|
this.setShuffleMode('Sorted');
|
||||||
|
break;
|
||||||
|
case 'Sorted':
|
||||||
|
this.setShuffleMode('Shuffle');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new TypeError('current value for shufflequeue is invalid');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -208,7 +208,6 @@
|
||||||
|
|
||||||
.layout-mobile .playlistSectionButton .btnSavePlaylist {
|
.layout-mobile .playlistSectionButton .btnSavePlaylist {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding-right: 0;
|
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -123,7 +123,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
var artistsSeries = '';
|
var artistsSeries = '';
|
||||||
var albumName = item.Album;
|
var albumName = item.Album;
|
||||||
if (item.ArtistItems != null) {
|
if (item.ArtistItems != null) {
|
||||||
for (let artist of item.ArtistItems) {
|
for (const artist of item.ArtistItems) {
|
||||||
let artistName = artist.Name;
|
let artistName = artist.Name;
|
||||||
let artistId = artist.Id;
|
let artistId = artist.Id;
|
||||||
artistsSeries += `<a class="button-link emby-button" is="emby-linkbutton" href="itemdetails.html?id=${artistId}&serverId=${nowPlayingServerId}">${artistName}</a>`;
|
artistsSeries += `<a class="button-link emby-button" is="emby-linkbutton" href="itemdetails.html?id=${artistId}&serverId=${nowPlayingServerId}">${artistName}</a>`;
|
||||||
|
@ -135,7 +135,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
// For some reason, Chromecast Player doesn't return a item.ArtistItems object, so we need to fallback
|
// For some reason, Chromecast Player doesn't return a item.ArtistItems object, so we need to fallback
|
||||||
// to normal item.Artists item.
|
// to normal item.Artists item.
|
||||||
// TODO: Normalise fields returned by all the players
|
// TODO: Normalise fields returned by all the players
|
||||||
for (let artist of item.Artists) {
|
for (const artist of item.Artists) {
|
||||||
artistsSeries += `<a>${artist}</a>`;
|
artistsSeries += `<a>${artist}</a>`;
|
||||||
if (artist !== item.Artists.slice(-1)[0]) {
|
if (artist !== item.Artists.slice(-1)[0]) {
|
||||||
artistsSeries += ', ';
|
artistsSeries += ', ';
|
||||||
|
@ -176,7 +176,6 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
maxHeight: 300 * 2
|
maxHeight: 300 * 2
|
||||||
}) : null;
|
}) : null;
|
||||||
|
|
||||||
console.debug('updateNowPlayingInfo');
|
|
||||||
let contextButton = context.querySelector('.btnToggleContextMenu');
|
let contextButton = context.querySelector('.btnToggleContextMenu');
|
||||||
// We remove the previous event listener by replacing the item in each update event
|
// We remove the previous event listener by replacing the item in each update event
|
||||||
let contextButtonClone = contextButton.cloneNode(true);
|
let contextButtonClone = contextButton.cloneNode(true);
|
||||||
|
@ -355,18 +354,30 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
function updateRepeatModeDisplay(repeatMode) {
|
function updateRepeatModeDisplay(repeatMode) {
|
||||||
var context = dlg;
|
var context = dlg;
|
||||||
let toggleRepeatButtons = context.querySelectorAll('.repeatToggleButton');
|
let toggleRepeatButtons = context.querySelectorAll('.repeatToggleButton');
|
||||||
|
const cssClass = 'repeatButton-active';
|
||||||
|
let innHtml = '<span class="material-icons repeat"></span>';
|
||||||
|
let repeatOn = undefined;
|
||||||
|
|
||||||
for (let toggleRepeatButton of toggleRepeatButtons) {
|
switch (repeatMode) {
|
||||||
if ('RepeatAll' == repeatMode) {
|
case 'RepeatAll':
|
||||||
toggleRepeatButton.innerHTML = "<span class='material-icons repeat'></span>";
|
break;
|
||||||
toggleRepeatButton.classList.add('repeatButton-active');
|
case 'RepeatOne':
|
||||||
} else if ('RepeatOne' == repeatMode) {
|
innHtml = '<span class="material-icons repeat_one"></span>';
|
||||||
toggleRepeatButton.innerHTML = "<span class='material-icons repeat_one'></span>";
|
break;
|
||||||
toggleRepeatButton.classList.add('repeatButton-active');
|
case 'RepeatNone':
|
||||||
} else {
|
repeatOn = null;
|
||||||
toggleRepeatButton.innerHTML = "<span class='material-icons repeat'></span>";
|
break;
|
||||||
toggleRepeatButton.classList.remove('repeatButton-active');
|
default:
|
||||||
|
throw new TypeError('invalid value for repeatMode');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const toggleRepeatButton of toggleRepeatButtons) {
|
||||||
|
if (repeatOn === null) {
|
||||||
|
toggleRepeatButton.classList.remove(cssClass);
|
||||||
|
} else {
|
||||||
|
toggleRepeatButton.classList.add(cssClass);
|
||||||
|
}
|
||||||
|
toggleRepeatButton.innerHTML = innHtml;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -516,10 +527,15 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
let shuffleButtons = context.querySelectorAll('.btnShuffleQueue');
|
let shuffleButtons = context.querySelectorAll('.btnShuffleQueue');
|
||||||
|
|
||||||
for (let shuffleButton of shuffleButtons) {
|
for (let shuffleButton of shuffleButtons) {
|
||||||
if ('Sorted' === shuffleMode) {
|
switch (shuffleMode) {
|
||||||
|
case 'Sorted':
|
||||||
shuffleButton.classList.remove('shuffleQueue-active');
|
shuffleButton.classList.remove('shuffleQueue-active');
|
||||||
} else if ('Shuffle' === shuffleMode) {
|
break;
|
||||||
|
case 'Shuffle':
|
||||||
shuffleButton.classList.add('shuffleQueue-active');
|
shuffleButton.classList.add('shuffleQueue-active');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new TypeError('invalid shuffle mode');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onPlaylistUpdate();
|
onPlaylistUpdate();
|
||||||
|
@ -708,14 +724,10 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
playbackManager.fastForward(currentPlayer);
|
playbackManager.fastForward(currentPlayer);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
for (let shuffleButton of context.querySelectorAll('.btnShuffleQueue')) {
|
for (const shuffleButton of context.querySelectorAll('.btnShuffleQueue')) {
|
||||||
shuffleButton.addEventListener('click', function () {
|
shuffleButton.addEventListener('click', function () {
|
||||||
if (currentPlayer) {
|
if (currentPlayer) {
|
||||||
if (playbackManager.getQueueShuffleMode(currentPlayer) === 'Sorted') {
|
playbackManager.toggleQueueShuffleMode(currentPlayer);
|
||||||
playbackManager.setQueueShuffleMode('Shuffle', currentPlayer);
|
|
||||||
} else {
|
|
||||||
playbackManager.setQueueShuffleMode('Sorted', currentPlayer);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -728,7 +740,8 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
playbackManager.seekPercent(0, currentPlayer);
|
playbackManager.seekPercent(0, currentPlayer);
|
||||||
// This is done automatically by playbackManager. However, setting this here gives instant visual feedback
|
// This is done automatically by playbackManager. However, setting this here gives instant visual feedback.
|
||||||
|
// TODO: Check why seekPercentage doesn't reflect the changes inmmediately, so we can remove this workaround.
|
||||||
positionSlider.value = 0;
|
positionSlider.value = 0;
|
||||||
} else {
|
} else {
|
||||||
playbackManager.previousTrack(currentPlayer);
|
playbackManager.previousTrack(currentPlayer);
|
||||||
|
@ -794,7 +807,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
||||||
} else {
|
} else {
|
||||||
context.querySelector('.playlist').classList.add('hide');
|
context.querySelector('.playlist').classList.add('hide');
|
||||||
context.querySelector('.btnSavePlaylist').classList.add('hide');
|
context.querySelector('.btnSavePlaylist').classList.add('hide');
|
||||||
if (showMuteButton && showVolumeSlider) {
|
if (showMuteButton || showVolumeSlider) {
|
||||||
context.querySelector('.volumecontrol').classList.remove('hide');
|
context.querySelector('.volumecontrol').classList.remove('hide');
|
||||||
}
|
}
|
||||||
if (layoutManager.mobile) {
|
if (layoutManager.mobile) {
|
||||||
|
|
|
@ -652,7 +652,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', '
|
||||||
'SetSubtitleStreamIndex',
|
'SetSubtitleStreamIndex',
|
||||||
'DisplayContent',
|
'DisplayContent',
|
||||||
'SetRepeatMode',
|
'SetRepeatMode',
|
||||||
'SetQueueShuffleMode',
|
'SetShuffleQueue',
|
||||||
'EndSession',
|
'EndSession',
|
||||||
'PlayMediaSource',
|
'PlayMediaSource',
|
||||||
'PlayTrailers'
|
'PlayTrailers'
|
||||||
|
@ -897,7 +897,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', '
|
||||||
options: {
|
options: {
|
||||||
ShuffleMode: value
|
ShuffleMode: value
|
||||||
},
|
},
|
||||||
command: 'SetQueueShuffleMode'
|
command: 'SetShuffleQueue'
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -508,7 +508,7 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager']
|
||||||
|
|
||||||
SessionPlayer.prototype.setQueueShuffleMode = function (mode) {
|
SessionPlayer.prototype.setQueueShuffleMode = function (mode) {
|
||||||
|
|
||||||
sendCommandByName(this, 'SetQueueShuffleMode', {
|
sendCommandByName(this, 'SetShuffleQueue', {
|
||||||
ShuffleMode: mode
|
ShuffleMode: mode
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -65,7 +65,7 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
|
||||||
case 'SetRepeatMode':
|
case 'SetRepeatMode':
|
||||||
playbackManager.setRepeatMode(cmd.Arguments.RepeatMode);
|
playbackManager.setRepeatMode(cmd.Arguments.RepeatMode);
|
||||||
break;
|
break;
|
||||||
case 'SetQueueShuffleMode':
|
case 'SetShuffleQueue':
|
||||||
playbackManager.setQueueShuffleMode(cmd.Arguments.ShuffleMode);
|
playbackManager.setQueueShuffleMode(cmd.Arguments.ShuffleMode);
|
||||||
break;
|
break;
|
||||||
case 'VolumeUp':
|
case 'VolumeUp':
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue