mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
mark games played when played through nesbox
This commit is contained in:
parent
ef106f264a
commit
30dd80deae
6 changed files with 53 additions and 58 deletions
50
ApiClient.js
50
ApiClient.js
|
@ -2731,16 +2731,42 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
|
|||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Marks an item as played or unplayed
|
||||
* This should not be used to update playstate following playback.
|
||||
* There are separate playstate check-in methods for that. This should be used for a
|
||||
* separate option to reset playstate.
|
||||
* @param {String} userId
|
||||
* @param {String} itemId
|
||||
* @param {Boolean} wasPlayed
|
||||
*/
|
||||
self.updatePlayedStatus = function (userId, itemId, wasPlayed) {
|
||||
self.getDateParamValue = function (date) {
|
||||
function formatDigit(i) {
|
||||
return i < 10 ? "0" + i : i;
|
||||
}
|
||||
|
||||
var d = date;
|
||||
|
||||
return "" + d.getFullYear() + formatDigit(d.getMonth() + 1) + formatDigit(d.getDate()) + formatDigit(d.getHours()) + formatDigit(d.getMinutes()) + formatDigit(d.getSeconds());
|
||||
};
|
||||
|
||||
self.markPlayed = function (userId, itemId, date) {
|
||||
|
||||
if (!userId) {
|
||||
throw new Error("null userId");
|
||||
}
|
||||
|
||||
if (!itemId) {
|
||||
throw new Error("null itemId");
|
||||
}
|
||||
|
||||
var options = {};
|
||||
|
||||
if (date) {
|
||||
options.DatePlayed = self.getDateParamValue(date);
|
||||
}
|
||||
|
||||
var url = self.getUrl("Users/" + userId + "/PlayedItems/" + itemId, options);
|
||||
|
||||
return self.ajax({
|
||||
type: "POST",
|
||||
url: url,
|
||||
dataType: "json"
|
||||
});
|
||||
};
|
||||
|
||||
self.markUnplayed = function (userId, itemId) {
|
||||
|
||||
if (!userId) {
|
||||
throw new Error("null userId");
|
||||
|
@ -2752,10 +2778,8 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
|
|||
|
||||
var url = self.getUrl("Users/" + userId + "/PlayedItems/" + itemId);
|
||||
|
||||
var method = wasPlayed ? "POST" : "DELETE";
|
||||
|
||||
return self.ajax({
|
||||
type: method,
|
||||
type: "DELETE",
|
||||
url: url,
|
||||
dataType: "json"
|
||||
});
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<table class="ehsContent">
|
||||
<tr>
|
||||
<td>
|
||||
<h1 class="listHeader firstListHeader">Latest Unplayed Games</h1>
|
||||
<h1 class="listHeader firstListHeader">Latest Games</h1>
|
||||
|
||||
<div id="recentlyAddedItems">
|
||||
</div>
|
||||
|
@ -27,13 +27,6 @@
|
|||
<div id="recentlyPlayedItems">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="frequentlyPlayedSection" style="display: none;">
|
||||
<h1 class="listHeader">Frequently Played Games</h1>
|
||||
|
||||
<div id="frequentlyPlayedItems">
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -1045,6 +1045,11 @@
|
|||
LibraryBrowser.showPlayMenu(this, currentItem.Id, currentItem.Type, mediaType, userdata.PlaybackPositionTicks);
|
||||
});
|
||||
|
||||
$('#btnPlayExternal', page).on('click', function () {
|
||||
|
||||
ApiClient.markPlayed(Dashboard.getCurrentUserId(), currentItem.Id, new Date());
|
||||
});
|
||||
|
||||
$('#btnEdit', page).on('click', function () {
|
||||
|
||||
Dashboard.navigate("edititemmetadata.html?id=" + currentItem.Id);
|
||||
|
|
|
@ -10,16 +10,14 @@
|
|||
SortOrder: "Descending",
|
||||
MediaTypes: "Game",
|
||||
Limit: 5,
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
Filters: "IsUnplayed"
|
||||
Recursive: true
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||
|
||||
$('#recentlyAddedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true,
|
||||
useAverageAspectRatio: false,
|
||||
showNewIndicator: false,
|
||||
transparent: true,
|
||||
borderless: true
|
||||
|
@ -34,7 +32,6 @@
|
|||
MediaTypes: "Game",
|
||||
Limit: 5,
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
Filters: "IsPlayed"
|
||||
};
|
||||
|
||||
|
@ -48,35 +45,7 @@
|
|||
|
||||
$('#recentlyPlayedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true,
|
||||
transparent: true,
|
||||
borderless: true
|
||||
}));
|
||||
|
||||
});
|
||||
|
||||
options = {
|
||||
|
||||
SortBy: "PlayCount",
|
||||
SortOrder: "Descending",
|
||||
MediaTypes: "Game",
|
||||
Limit: 5,
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
Filters: "IsPlayed"
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||
|
||||
if (result.Items.length) {
|
||||
$('#frequentlyPlayedSection', page).show();
|
||||
} else {
|
||||
$('#frequentlyPlayedSection', page).hide();
|
||||
}
|
||||
|
||||
$('#frequentlyPlayedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true,
|
||||
useAverageAspectRatio: false,
|
||||
transparent: true,
|
||||
borderless: true
|
||||
}));
|
||||
|
|
|
@ -1519,7 +1519,11 @@
|
|||
|
||||
var markAsPlayed = $link.hasClass('imgPlayedOff');
|
||||
|
||||
ApiClient.updatePlayedStatus(Dashboard.getCurrentUserId(), id, markAsPlayed);
|
||||
if (markAsPlayed) {
|
||||
ApiClient.markPlayed(Dashboard.getCurrentUserId(), id);
|
||||
} else {
|
||||
ApiClient.markUnplayed(Dashboard.getCurrentUserId(), id);
|
||||
}
|
||||
|
||||
if (markAsPlayed) {
|
||||
link.src = "css/images/userdata/playedon.png";
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.181" targetFramework="net45" />
|
||||
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.182" targetFramework="net45" />
|
||||
<package id="ServiceStack.Common" version="3.9.62" targetFramework="net45" />
|
||||
<package id="ServiceStack.Text" version="3.9.62" targetFramework="net45" />
|
||||
</packages>
|
Loading…
Add table
Add a link
Reference in a new issue