mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
progress on remote control
This commit is contained in:
parent
78c3668859
commit
7e6c0fa340
7 changed files with 111 additions and 8 deletions
32
ApiClient.js
32
ApiClient.js
|
@ -2379,6 +2379,16 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null itemId");
|
throw new Error("null itemId");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (self.isWebSocketOpen()) {
|
||||||
|
|
||||||
|
var deferred = $.Deferred();
|
||||||
|
|
||||||
|
self.sendWebSocketMessage("PlaybackStart", itemId);
|
||||||
|
|
||||||
|
deferred.resolveWith(null, []);
|
||||||
|
return deferred.promise();
|
||||||
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/PlayingItems/" + itemId);
|
var url = self.getUrl("Users/" + userId + "/PlayingItems/" + itemId);
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
|
@ -2392,7 +2402,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
* @param {String} userId
|
* @param {String} userId
|
||||||
* @param {String} itemId
|
* @param {String} itemId
|
||||||
*/
|
*/
|
||||||
self.reportPlaybackProgress = function (userId, itemId, positionTicks) {
|
self.reportPlaybackProgress = function (userId, itemId, positionTicks, isPaused) {
|
||||||
|
|
||||||
if (!userId) {
|
if (!userId) {
|
||||||
throw new Error("null userId");
|
throw new Error("null userId");
|
||||||
|
@ -2402,6 +2412,16 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null itemId");
|
throw new Error("null itemId");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (self.isWebSocketOpen()) {
|
||||||
|
|
||||||
|
var deferred = $.Deferred();
|
||||||
|
|
||||||
|
self.sendWebSocketMessage("PlaybackProgress", itemId + "|" + (positionTicks == null ? "" : positionTicks) + "|" + (isPaused == null ? "" : isPaused));
|
||||||
|
|
||||||
|
deferred.resolveWith(null, []);
|
||||||
|
return deferred.promise();
|
||||||
|
}
|
||||||
|
|
||||||
var params = {
|
var params = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2433,6 +2453,16 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null itemId");
|
throw new Error("null itemId");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (self.isWebSocketOpen()) {
|
||||||
|
|
||||||
|
var deferred = $.Deferred();
|
||||||
|
|
||||||
|
self.sendWebSocketMessage("PlaybackStopped", itemId + "|" + (positionTicks == null ? "" : positionTicks));
|
||||||
|
|
||||||
|
deferred.resolveWith(null, []);
|
||||||
|
return deferred.promise();
|
||||||
|
}
|
||||||
|
|
||||||
var params = {
|
var params = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,10 @@
|
||||||
|
|
||||||
$(".autoNumeric").autoNumeric('init');
|
$(".autoNumeric").autoNumeric('init');
|
||||||
|
|
||||||
|
if (ApiClient.isWebSocketOpen()) {
|
||||||
|
ApiClient.sendWebSocketMessage("Context", [item.Type, item.Id, context].join('|'));
|
||||||
|
}
|
||||||
|
|
||||||
Dashboard.hideLoadingMsg();
|
Dashboard.hideLoadingMsg();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,19 @@
|
||||||
renderDetails(page, item);
|
renderDetails(page, item);
|
||||||
renderTabs(page, item);
|
renderTabs(page, item);
|
||||||
|
|
||||||
|
if (ApiClient.isWebSocketOpen()) {
|
||||||
|
|
||||||
|
var vals = [item.Type, item.Name];
|
||||||
|
|
||||||
|
var context = getParameterByName('context');
|
||||||
|
|
||||||
|
if (context) {
|
||||||
|
vals.push(vals);
|
||||||
|
}
|
||||||
|
|
||||||
|
ApiClient.sendWebSocketMessage("Context", vals.join('|'));
|
||||||
|
}
|
||||||
|
|
||||||
Dashboard.hideLoadingMsg();
|
Dashboard.hideLoadingMsg();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,7 +76,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#itemName', page).html(name);
|
$('#itemName', page).html(name);
|
||||||
|
|
||||||
Dashboard.setPageTitle(name);
|
Dashboard.setPageTitle(name);
|
||||||
|
|
||||||
|
if (ApiClient.isWebSocketOpen()) {
|
||||||
|
ApiClient.sendWebSocketMessage("Context", [item.Type, item.Id].join('|'));
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Dashboard.getCurrentUser().done(function (user) {
|
Dashboard.getCurrentUser().done(function (user) {
|
||||||
|
|
|
@ -264,6 +264,8 @@
|
||||||
|
|
||||||
ApiClient.reportPlaybackStart(Dashboard.getCurrentUserId(), itemId);
|
ApiClient.reportPlaybackStart(Dashboard.getCurrentUserId(), itemId);
|
||||||
|
|
||||||
|
var intervalTime = ApiClient.isWebSocketOpen() ? 10000 : 30000;
|
||||||
|
|
||||||
currentProgressInterval = setInterval(function () {
|
currentProgressInterval = setInterval(function () {
|
||||||
var player = _V_("videoWindow");
|
var player = _V_("videoWindow");
|
||||||
|
|
||||||
|
@ -276,7 +278,8 @@
|
||||||
var positionTicks = parseInt(startTime) + Math.floor(10000000 * player.currentTime());
|
var positionTicks = parseInt(startTime) + Math.floor(10000000 * player.currentTime());
|
||||||
|
|
||||||
ApiClient.reportPlaybackProgress(Dashboard.getCurrentUserId(), itemId, positionTicks);
|
ApiClient.reportPlaybackProgress(Dashboard.getCurrentUserId(), itemId, positionTicks);
|
||||||
}, 30000);
|
|
||||||
|
}, intervalTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.canPlay = function (item) {
|
self.canPlay = function (item) {
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
if ($.browser.msie) {
|
if ($.browser.msie) {
|
||||||
|
|
||||||
// This is unfortuantely required due to IE's over-aggressive caching.
|
// This is unfortuantely required due to IE's over-aggressive caching.
|
||||||
// https://github.com/MediaBrowser/MediaBrowser/issues/179
|
// https://github.com/MediaBrowser/MediaBrowser/issues/179
|
||||||
$.ajaxSetup({
|
$.ajaxSetup({
|
||||||
|
@ -734,7 +734,7 @@ var Dashboard = {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
ensureToolsMenu: function (page) {
|
ensureToolsMenu: function (page) {
|
||||||
|
|
||||||
if (!page.hasClass('type-interior')) {
|
if (!page.hasClass('type-interior')) {
|
||||||
|
@ -886,6 +886,53 @@ var Dashboard = {
|
||||||
|
|
||||||
Dashboard.showTaskCompletionNotification(msg.Data);
|
Dashboard.showTaskCompletionNotification(msg.Data);
|
||||||
}
|
}
|
||||||
|
else if (msg.MessageType === "Browse") {
|
||||||
|
|
||||||
|
Dashboard.onBrowseCommand(msg.Data);
|
||||||
|
}
|
||||||
|
else if (msg.MessageType === "Play") {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (msg.MessageType === "UpdatePlaystate") {
|
||||||
|
|
||||||
|
// TODO for Craig
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
onBrowseCommand: function (cmd) {
|
||||||
|
|
||||||
|
var context = cmd.Context || "";
|
||||||
|
|
||||||
|
var url;
|
||||||
|
|
||||||
|
var type = cmd.ItemType.toLowerCase();
|
||||||
|
|
||||||
|
if (type == "genre") {
|
||||||
|
url = "itembynamedetails.html?genre=" + ApiClient.encodeName(cmd.ItemIdentifier) + "&context=" + context;
|
||||||
|
}
|
||||||
|
else if (type == "studio") {
|
||||||
|
url = "itembynamedetails.html?studio=" + ApiClient.encodeName(cmd.ItemIdentifier) + "&context=" + context;
|
||||||
|
}
|
||||||
|
else if (type == "person") {
|
||||||
|
url = "itembynamedetails.html?person=" + ApiClient.encodeName(cmd.ItemIdentifier) + "&context=" + context;
|
||||||
|
}
|
||||||
|
else if (type == "artist") {
|
||||||
|
url = "itembynamedetails.html?artist=" + ApiClient.encodeName(cmd.ItemIdentifier) + "&context=" + (context || "music");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (url) {
|
||||||
|
Dashboard.navigate(url);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ApiClient.getItem(Dashboard.getCurrentUserId(), cmd.ItemIdentifier).done(function (item) {
|
||||||
|
|
||||||
|
Dashboard.navigate(LibraryBrowser.getHref(item, context));
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
showTaskCompletionNotification: function (result) {
|
showTaskCompletionNotification: function (result) {
|
||||||
|
@ -983,7 +1030,7 @@ var Dashboard = {
|
||||||
clearTimeout(Dashboard.newItemTimeout);
|
clearTimeout(Dashboard.newItemTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
Dashboard.newItemTimeout = setTimeout(function() {
|
Dashboard.newItemTimeout = setTimeout(function () {
|
||||||
|
|
||||||
Dashboard.onNewItemTimerStopped(data);
|
Dashboard.onNewItemTimerStopped(data);
|
||||||
|
|
||||||
|
@ -993,7 +1040,7 @@ var Dashboard = {
|
||||||
onNewItemTimerStopped: function (data) {
|
onNewItemTimerStopped: function (data) {
|
||||||
|
|
||||||
var newItems = data.ItemsAdded;
|
var newItems = data.ItemsAdded;
|
||||||
|
|
||||||
if (!newItems.length) {
|
if (!newItems.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1129,7 +1176,7 @@ $(document).on('pageinit', ".page", function () {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}).on('pagebeforeshow', ".page", function () {
|
}).on('pagebeforeshow', ".page", function () {
|
||||||
|
|
||||||
Dashboard.refreshSystemInfoFromServer();
|
Dashboard.refreshSystemInfoFromServer();
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.101" targetFramework="net45" />
|
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.104" targetFramework="net45" />
|
||||||
<package id="ServiceStack.Common" version="3.9.44" targetFramework="net45" />
|
<package id="ServiceStack.Common" version="3.9.44" targetFramework="net45" />
|
||||||
<package id="ServiceStack.Text" version="3.9.44" targetFramework="net45" />
|
<package id="ServiceStack.Text" version="3.9.44" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
Loading…
Add table
Add a link
Reference in a new issue