mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
3.0.5233.40306
This commit is contained in:
parent
57d8c433c5
commit
ea285c28ef
8 changed files with 106 additions and 155 deletions
|
@ -130,19 +130,4 @@
|
||||||
|
|
||||||
.ui-nosvg .ui-icon-expand:after {
|
.ui-nosvg .ui-icon-expand:after {
|
||||||
background-image: url("images/icons/expand.png");
|
background-image: url("images/icons/expand.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
.ui-icon-play-circle-o:after {
|
|
||||||
background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M330.357%20250q0%2010.324-8.929%2015.346l-151.786%2089.286q-4.185%202.511-8.929%202.511-4.464%200-8.929-2.232-8.929-5.301-8.929-15.625v-178.571q0-10.324%208.929-15.625%209.208-5.022%2017.857%200.279l151.786%2089.286q8.929%205.022%208.929%2015.346zM366.071%20250q0-41.294-20.368-76.172t-55.246-55.246-76.172-20.368-76.172%2020.368-55.246%2055.246-20.368%2076.172%2020.368%2076.172%2055.246%2055.246%2076.172%2020.368%2076.172-20.368%2055.246-55.246%2020.368-76.172zM428.571%20250q0%2058.315-28.739%20107.562t-77.985%2077.985-107.562%2028.739-107.562-28.739-77.985-77.985-28.739-107.562%2028.739-107.562%2077.985-77.985%20107.562-28.739%20107.562%2028.739%2077.985%2077.985%2028.739%20107.562z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E");
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fallback */
|
|
||||||
|
|
||||||
.ui-icon-tablet:after {
|
|
||||||
background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M178.571%20392.857q0-7.254-5.301-12.556t-12.556-5.301-12.556%205.301-5.301%2012.556%205.301%2012.556%2012.556%205.301%2012.556-5.301%205.301-12.556zM285.714%20348.214v-267.857q0-3.627-2.651-6.278t-6.278-2.651h-232.143q-3.627%200-6.278%202.651t-2.651%206.278v267.857q0%203.627%202.651%206.278t6.278%202.651h232.143q3.627%200%206.278-2.651t2.651-6.278zM321.429%2080.357v303.571q0%2018.415-13.114%2031.529t-31.529%2013.114h-232.143q-18.415%200-31.529-13.114t-13.114-31.529v-303.571q0-18.415%2013.114-31.529t31.529-13.114h232.143q18.415%200%2031.529%2013.114t13.114%2031.529z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E");
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: 6px 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fallback */
|
|
|
@ -1222,7 +1222,8 @@ a.itemTag:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
.nowPlayingPageImage img {
|
.nowPlayingPageImage img {
|
||||||
height: 300px;
|
max-height: 300px;
|
||||||
|
max-width: 300px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nowPlayingPage .positionSliderContainer {
|
.nowPlayingPage .positionSliderContainer {
|
||||||
|
@ -1240,7 +1241,8 @@ a.itemTag:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
.nowPlayingPageImage img {
|
.nowPlayingPageImage img {
|
||||||
height: 200px;
|
max-height: 200px;
|
||||||
|
max-width: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nowPlayingPage .positionSliderContainer {
|
.nowPlayingPage .positionSliderContainer {
|
||||||
|
@ -1254,14 +1256,6 @@ a.itemTag:hover {
|
||||||
.nowPlayingPage .btnCommand, .nowPlayingPage .btnPlayStateCommand {
|
.nowPlayingPage .btnCommand, .nowPlayingPage .btnPlayStateCommand {
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nowPlayingPageImage img {
|
|
||||||
height: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nowPlayingPage .positionSliderContainer {
|
|
||||||
width: 300px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media all and (max-width: 400px) {
|
@media all and (max-width: 400px) {
|
||||||
|
@ -1270,10 +1264,6 @@ a.itemTag:hover {
|
||||||
font-size: 19px;
|
font-size: 19px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nowPlayingPageImage img {
|
|
||||||
height: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nowPlayingPage .positionSliderContainer {
|
.nowPlayingPage .positionSliderContainer {
|
||||||
width: 220px;
|
width: 220px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1374,44 +1374,6 @@
|
||||||
castPlayer.setReceiverVolume(false, vol / 100);
|
castPlayer.setReceiverVolume(false, vol / 100);
|
||||||
};
|
};
|
||||||
|
|
||||||
self.sendCommand = function (cmd) {
|
|
||||||
|
|
||||||
// Full list
|
|
||||||
// https://github.com/MediaBrowser/MediaBrowser/blob/master/MediaBrowser.Model/Session/GeneralCommand.cs#L23
|
|
||||||
|
|
||||||
switch (cmd.Name) {
|
|
||||||
|
|
||||||
case 'VolumeUp':
|
|
||||||
self.volumeUp();
|
|
||||||
break;
|
|
||||||
case 'VolumeDown':
|
|
||||||
self.volumeDown();
|
|
||||||
break;
|
|
||||||
case 'Mute':
|
|
||||||
self.mute();
|
|
||||||
break;
|
|
||||||
case 'Unmute':
|
|
||||||
self.unMute();
|
|
||||||
break;
|
|
||||||
case 'ToggleMute':
|
|
||||||
self.toggleMute();
|
|
||||||
break;
|
|
||||||
case 'SetVolume':
|
|
||||||
self.setVolume(cmd.Arguments.Volume);
|
|
||||||
break;
|
|
||||||
case 'SetAudioStreamIndex':
|
|
||||||
break;
|
|
||||||
case 'SetSubtitleStreamIndex':
|
|
||||||
break;
|
|
||||||
case 'ToggleFullscreen':
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Not player-related
|
|
||||||
Dashboard.processGeneralCommand(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
self.getPlayerState = function () {
|
self.getPlayerState = function () {
|
||||||
|
|
||||||
var deferred = $.Deferred();
|
var deferred = $.Deferred();
|
||||||
|
|
|
@ -20,16 +20,16 @@
|
||||||
|
|
||||||
$(player).on('playbackstart.mediacontroller', function (e, state) {
|
$(player).on('playbackstart.mediacontroller', function (e, state) {
|
||||||
|
|
||||||
var info = {
|
var info = {
|
||||||
QueueableMediaTypes: state.NowPlayingItem.MediaType,
|
QueueableMediaTypes: state.NowPlayingItem.MediaType,
|
||||||
ItemId: state.NowPlayingItem.Id,
|
ItemId: state.NowPlayingItem.Id,
|
||||||
NowPlayingItem: state.NowPlayingItem
|
NowPlayingItem: state.NowPlayingItem
|
||||||
};
|
};
|
||||||
|
|
||||||
info = $.extend(info, state.PlayState);
|
info = $.extend(info, state.PlayState);
|
||||||
|
|
||||||
ApiClient.reportPlaybackStart(info);
|
ApiClient.reportPlaybackStart(info);
|
||||||
|
|
||||||
}).on('playbackstop.mediacontroller', function (e, state) {
|
}).on('playbackstop.mediacontroller', function (e, state) {
|
||||||
|
|
||||||
ApiClient.reportPlaybackStopped({
|
ApiClient.reportPlaybackStopped({
|
||||||
|
@ -285,6 +285,53 @@
|
||||||
self.shuffle = function (id) {
|
self.shuffle = function (id) {
|
||||||
currentPlayer.shuffle(id);
|
currentPlayer.shuffle(id);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self.sendCommand = function (cmd, player) {
|
||||||
|
|
||||||
|
player = player || self.getLocalPlayer();
|
||||||
|
|
||||||
|
// Full list
|
||||||
|
// https://github.com/MediaBrowser/MediaBrowser/blob/master/MediaBrowser.Model/Session/GeneralCommand.cs#L23
|
||||||
|
console.log('MediaController received command: ' + cmd.Name);
|
||||||
|
switch (cmd.Name) {
|
||||||
|
|
||||||
|
case 'VolumeUp':
|
||||||
|
player.volumeUp();
|
||||||
|
break;
|
||||||
|
case 'VolumeDown':
|
||||||
|
player.volumeDown();
|
||||||
|
break;
|
||||||
|
case 'Mute':
|
||||||
|
player.mute();
|
||||||
|
break;
|
||||||
|
case 'Unmute':
|
||||||
|
player.unMute();
|
||||||
|
break;
|
||||||
|
case 'ToggleMute':
|
||||||
|
player.toggleMute();
|
||||||
|
break;
|
||||||
|
case 'SetVolume':
|
||||||
|
player.setVolume(cmd.Arguments.Volume);
|
||||||
|
break;
|
||||||
|
case 'SetAudioStreamIndex':
|
||||||
|
break;
|
||||||
|
case 'SetSubtitleStreamIndex':
|
||||||
|
break;
|
||||||
|
case 'ToggleFullscreen':
|
||||||
|
player.toggleFullscreen();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
if (player.isLocalPlayer) {
|
||||||
|
// Not player-related
|
||||||
|
Dashboard.processGeneralCommand(cmd);
|
||||||
|
} else {
|
||||||
|
player.sendCommand(cmd);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
window.MediaController = new mediaController();
|
window.MediaController = new mediaController();
|
||||||
|
@ -343,27 +390,7 @@
|
||||||
|
|
||||||
localPlayer = MediaController.getLocalPlayer();
|
localPlayer = MediaController.getLocalPlayer();
|
||||||
|
|
||||||
if (cmd.Name === 'Mute') {
|
MediaController.sendCommand(cmd, localPlayer);
|
||||||
localPlayer.mute();
|
|
||||||
}
|
|
||||||
else if (cmd.Name === 'Unmute') {
|
|
||||||
localPlayer.unMute();
|
|
||||||
}
|
|
||||||
else if (cmd.Name === 'VolumeUp') {
|
|
||||||
localPlayer.volumeUp();
|
|
||||||
}
|
|
||||||
else if (cmd.Name === 'VolumeDown') {
|
|
||||||
localPlayer.volumeDown();
|
|
||||||
}
|
|
||||||
else if (cmd.Name === 'ToggleMute') {
|
|
||||||
localPlayer.toggleMute();
|
|
||||||
}
|
|
||||||
else if (cmd.Name === 'Fullscreen') {
|
|
||||||
localPlayer.remoteFullscreen();
|
|
||||||
}
|
|
||||||
else if (cmd.Name === 'SetVolume') {
|
|
||||||
localPlayer.setVolume(parseFloat(cmd.Arguments.Volume));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -724,49 +724,6 @@
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
self.sendCommand = function (cmd) {
|
|
||||||
|
|
||||||
// Full list
|
|
||||||
// https://github.com/MediaBrowser/MediaBrowser/blob/master/MediaBrowser.Model/Session/GeneralCommand.cs#L23
|
|
||||||
|
|
||||||
switch (cmd.Name) {
|
|
||||||
|
|
||||||
case 'VolumeUp':
|
|
||||||
self.volumeUp();
|
|
||||||
break;
|
|
||||||
case 'VolumeDown':
|
|
||||||
self.volumeDown();
|
|
||||||
break;
|
|
||||||
case 'Mute':
|
|
||||||
self.mute();
|
|
||||||
break;
|
|
||||||
case 'Unmute':
|
|
||||||
self.unMute();
|
|
||||||
break;
|
|
||||||
case 'ToggleMute':
|
|
||||||
self.toggleMute();
|
|
||||||
break;
|
|
||||||
case 'SetVolume':
|
|
||||||
self.setVolume(cmd.Arguments.Volume);
|
|
||||||
break;
|
|
||||||
case 'SetAudioStreamIndex':
|
|
||||||
break;
|
|
||||||
case 'SetSubtitleStreamIndex':
|
|
||||||
break;
|
|
||||||
case 'ToggleFullscreen':
|
|
||||||
|
|
||||||
if (currentItem && currentItem.MediaType == 'Video') {
|
|
||||||
self.toggleFullscreen();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Not player-related
|
|
||||||
Dashboard.processGeneralCommand(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
self.pause = function () {
|
self.pause = function () {
|
||||||
|
|
||||||
currentMediaElement.pause();
|
currentMediaElement.pause();
|
||||||
|
@ -795,6 +752,8 @@
|
||||||
|
|
||||||
if (currentMediaElement) {
|
if (currentMediaElement) {
|
||||||
|
|
||||||
|
console.log('MediaPlayer toggling mute');
|
||||||
|
|
||||||
if (currentMediaElement.volume) {
|
if (currentMediaElement.volume) {
|
||||||
self.mute();
|
self.mute();
|
||||||
} else {
|
} else {
|
||||||
|
@ -822,6 +781,7 @@
|
||||||
|
|
||||||
if (currentMediaElement) {
|
if (currentMediaElement) {
|
||||||
|
|
||||||
|
console.log('MediaPlayer setting volume to ' + val);
|
||||||
currentMediaElement.volume = val / 100;
|
currentMediaElement.volume = val / 100;
|
||||||
|
|
||||||
self.onVolumeChanged(currentMediaElement);
|
self.onVolumeChanged(currentMediaElement);
|
||||||
|
|
|
@ -16,9 +16,10 @@
|
||||||
|
|
||||||
$('.btnCommand,.btnToggleFullscreen', page).on('click', function () {
|
$('.btnCommand,.btnToggleFullscreen', page).on('click', function () {
|
||||||
|
|
||||||
currentPlayer.sendCommand({
|
MediaController.sendCommand({
|
||||||
Name: this.getAttribute('data-command')
|
Name: this.getAttribute('data-command')
|
||||||
});
|
|
||||||
|
}, currentPlayer);
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.btnStop', page).on('click', function () {
|
$('.btnStop', page).on('click', function () {
|
||||||
|
@ -79,9 +80,7 @@
|
||||||
|
|
||||||
player.endPlayerUpdates();
|
player.endPlayerUpdates();
|
||||||
|
|
||||||
onStateChanged.call(player, e, state);
|
onStateChanged.call(player, e, {});
|
||||||
|
|
||||||
$('.itemName', page).html('');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function onStateChanged(e, state) {
|
function onStateChanged(e, state) {
|
||||||
|
@ -220,6 +219,10 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setImageUrl(page, url);
|
||||||
|
}
|
||||||
|
|
||||||
|
function setImageUrl(page, url) {
|
||||||
currentImgUrl = url;
|
currentImgUrl = url;
|
||||||
|
|
||||||
$('.nowPlayingPageImage', page).html(url ? '<img src="' + url + '" />' : '');
|
$('.nowPlayingPageImage', page).html(url ? '<img src="' + url + '" />' : '');
|
||||||
|
|
|
@ -131,6 +131,18 @@
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self.volumeUp = function () {
|
||||||
|
sendCommandByName('VolumeUp');
|
||||||
|
};
|
||||||
|
|
||||||
|
self.volumeDown = function () {
|
||||||
|
sendCommandByName('VolumeDown');
|
||||||
|
};
|
||||||
|
|
||||||
|
self.toggleFullscreen = function () {
|
||||||
|
sendCommandByName('ToggleFullscreen');
|
||||||
|
};
|
||||||
|
|
||||||
self.displayContent = function (options) {
|
self.displayContent = function (options) {
|
||||||
|
|
||||||
sendCommandByName('DisplayContent', {
|
sendCommandByName('DisplayContent', {
|
||||||
|
|
|
@ -835,20 +835,33 @@ var Dashboard = {
|
||||||
// Full list
|
// Full list
|
||||||
// https://github.com/MediaBrowser/MediaBrowser/blob/master/MediaBrowser.Model/Session/GeneralCommand.cs#L23
|
// https://github.com/MediaBrowser/MediaBrowser/blob/master/MediaBrowser.Model/Session/GeneralCommand.cs#L23
|
||||||
|
|
||||||
if (cmd.Name === 'GoHome') {
|
switch (cmd.Name) {
|
||||||
Dashboard.navigate('index.html');
|
|
||||||
}
|
case 'GoHome':
|
||||||
else if (cmd.Name === 'GoToSettings') {
|
Dashboard.navigate('index.html');
|
||||||
Dashboard.navigate('dashboard.html');
|
break;
|
||||||
}
|
case 'GoToSettings':
|
||||||
else if (cmd.Name === 'DisplayContent') {
|
Dashboard.navigate('dashboard.html');
|
||||||
Dashboard.onBrowseCommand(cmd.Arguments);
|
break;
|
||||||
}
|
case 'DisplayContent':
|
||||||
else if (cmd.Name === 'GoToSearch') {
|
Dashboard.onBrowseCommand(cmd.Arguments);
|
||||||
Search.showSearchPanel($.mobile.activePage);
|
break;
|
||||||
}
|
case 'GoToSearch':
|
||||||
else {
|
Search.showSearchPanel($.mobile.activePage);
|
||||||
console.log('Unrecognized command: ' + cmd.Name);
|
break;
|
||||||
|
case 'VolumeUp':
|
||||||
|
case 'VolumeDown':
|
||||||
|
case 'Mute':
|
||||||
|
case 'Unmute':
|
||||||
|
case 'ToggleMute':
|
||||||
|
case 'SetVolume':
|
||||||
|
case 'SetAudioStreamIndex':
|
||||||
|
case 'SetSubtitleStreamIndex':
|
||||||
|
case 'ToggleFullscreen':
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log('Unrecognized command: ' + cmd.Name);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1294,7 +1307,6 @@ var Dashboard = {
|
||||||
"Unmute",
|
"Unmute",
|
||||||
"ToggleMute",
|
"ToggleMute",
|
||||||
"SetVolume",
|
"SetVolume",
|
||||||
"ToggleFullscreen",
|
|
||||||
"SetAudioStreamIndex",
|
"SetAudioStreamIndex",
|
||||||
"SetSubtitleStreamIndex",
|
"SetSubtitleStreamIndex",
|
||||||
"DisplayContent",
|
"DisplayContent",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue