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
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
self.getDateParamValue = function (date) {
|
||||||
* Marks an item as played or unplayed
|
function formatDigit(i) {
|
||||||
* This should not be used to update playstate following playback.
|
return i < 10 ? "0" + i : i;
|
||||||
* There are separate playstate check-in methods for that. This should be used for a
|
}
|
||||||
* separate option to reset playstate.
|
|
||||||
* @param {String} userId
|
var d = date;
|
||||||
* @param {String} itemId
|
|
||||||
* @param {Boolean} wasPlayed
|
return "" + d.getFullYear() + formatDigit(d.getMonth() + 1) + formatDigit(d.getDate()) + formatDigit(d.getHours()) + formatDigit(d.getMinutes()) + formatDigit(d.getSeconds());
|
||||||
*/
|
};
|
||||||
self.updatePlayedStatus = function (userId, itemId, wasPlayed) {
|
|
||||||
|
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) {
|
if (!userId) {
|
||||||
throw new Error("null 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 url = self.getUrl("Users/" + userId + "/PlayedItems/" + itemId);
|
||||||
|
|
||||||
var method = wasPlayed ? "POST" : "DELETE";
|
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: method,
|
type: "DELETE",
|
||||||
url: url,
|
url: url,
|
||||||
dataType: "json"
|
dataType: "json"
|
||||||
});
|
});
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<table class="ehsContent">
|
<table class="ehsContent">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<h1 class="listHeader firstListHeader">Latest Unplayed Games</h1>
|
<h1 class="listHeader firstListHeader">Latest Games</h1>
|
||||||
|
|
||||||
<div id="recentlyAddedItems">
|
<div id="recentlyAddedItems">
|
||||||
</div>
|
</div>
|
||||||
|
@ -27,13 +27,6 @@
|
||||||
<div id="recentlyPlayedItems">
|
<div id="recentlyPlayedItems">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="frequentlyPlayedSection" style="display: none;">
|
|
||||||
<h1 class="listHeader">Frequently Played Games</h1>
|
|
||||||
|
|
||||||
<div id="frequentlyPlayedItems">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -74,7 +74,7 @@
|
||||||
$('#playButtonContainer', page).show();
|
$('#playButtonContainer', page).show();
|
||||||
$('#playExternalButtonContainer', page).hide();
|
$('#playExternalButtonContainer', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#btnPlayExternal', page).attr('href', url || '#');
|
$('#btnPlayExternal', page).attr('href', url || '#');
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -1045,6 +1045,11 @@
|
||||||
LibraryBrowser.showPlayMenu(this, currentItem.Id, currentItem.Type, mediaType, userdata.PlaybackPositionTicks);
|
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 () {
|
$('#btnEdit', page).on('click', function () {
|
||||||
|
|
||||||
Dashboard.navigate("edititemmetadata.html?id=" + currentItem.Id);
|
Dashboard.navigate("edititemmetadata.html?id=" + currentItem.Id);
|
||||||
|
|
|
@ -10,16 +10,14 @@
|
||||||
SortOrder: "Descending",
|
SortOrder: "Descending",
|
||||||
MediaTypes: "Game",
|
MediaTypes: "Game",
|
||||||
Limit: 5,
|
Limit: 5,
|
||||||
Recursive: true,
|
Recursive: true
|
||||||
Fields: "PrimaryImageAspectRatio",
|
|
||||||
Filters: "IsUnplayed"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||||
|
|
||||||
$('#recentlyAddedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
$('#recentlyAddedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
useAverageAspectRatio: true,
|
useAverageAspectRatio: false,
|
||||||
showNewIndicator: false,
|
showNewIndicator: false,
|
||||||
transparent: true,
|
transparent: true,
|
||||||
borderless: true
|
borderless: true
|
||||||
|
@ -34,7 +32,6 @@
|
||||||
MediaTypes: "Game",
|
MediaTypes: "Game",
|
||||||
Limit: 5,
|
Limit: 5,
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "PrimaryImageAspectRatio",
|
|
||||||
Filters: "IsPlayed"
|
Filters: "IsPlayed"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -48,35 +45,7 @@
|
||||||
|
|
||||||
$('#recentlyPlayedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
$('#recentlyPlayedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
useAverageAspectRatio: true,
|
useAverageAspectRatio: false,
|
||||||
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,
|
|
||||||
transparent: true,
|
transparent: true,
|
||||||
borderless: true
|
borderless: true
|
||||||
}));
|
}));
|
||||||
|
|
|
@ -1519,7 +1519,11 @@
|
||||||
|
|
||||||
var markAsPlayed = $link.hasClass('imgPlayedOff');
|
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) {
|
if (markAsPlayed) {
|
||||||
link.src = "css/images/userdata/playedon.png";
|
link.src = "css/images/userdata/playedon.png";
|
||||||
|
|
|
@ -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.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.Common" version="3.9.62" targetFramework="net45" />
|
||||||
<package id="ServiceStack.Text" version="3.9.62" targetFramework="net45" />
|
<package id="ServiceStack.Text" version="3.9.62" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
Loading…
Add table
Add a link
Reference in a new issue