Merge pull request #14554 from thalieht/seeding_time_webui

Seeding time in WebUI
This commit is contained in:
Mike Tzou 2021-03-22 12:08:18 +08:00 committed by GitHub
commit 87ad8a1495
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 11 deletions

View file

@ -148,6 +148,7 @@ QVariantMap serialize(const BitTorrent::Torrent &torrent)
{KEY_TORRENT_LAST_SEEN_COMPLETE_TIME, torrent.lastSeenComplete().toSecsSinceEpoch()},
{KEY_TORRENT_AUTO_TORRENT_MANAGEMENT, torrent.isAutoTMMEnabled()},
{KEY_TORRENT_TIME_ACTIVE, torrent.activeTime()},
{KEY_TORRENT_SEEDING_TIME, torrent.seedingTime()},
{KEY_TORRENT_LAST_ACTIVITY_TIME, adjustLastActivity(torrent.timeSinceActivity())},
{KEY_TORRENT_AVAILABILITY, torrent.distributedCopies()},

View file

@ -80,6 +80,7 @@ const char KEY_TORRENT_LAST_ACTIVITY_TIME[] = "last_activity";
const char KEY_TORRENT_TOTAL_SIZE[] = "total_size";
const char KEY_TORRENT_AUTO_TORRENT_MANAGEMENT[] = "auto_tmm";
const char KEY_TORRENT_TIME_ACTIVE[] = "time_active";
const char KEY_TORRENT_SEEDING_TIME[] = "seeding_time";
const char KEY_TORRENT_AVAILABILITY[] = "availability";
QVariantMap serialize(const BitTorrent::Torrent &torrent);

View file

@ -856,6 +856,7 @@ window.qBittorrent.DynamicTable = (function() {
this.columns['num_seeds'].dataProperties.push('num_complete');
this.columns['num_leechs'].dataProperties.push('num_incomplete');
this.columns['time_active'].dataProperties.push('seeding_time');
this.initColumnsFunctions();
},
@ -1102,7 +1103,7 @@ window.qBittorrent.DynamicTable = (function() {
// eta
this.columns['eta'].updateTd = function(td, row) {
const eta = window.qBittorrent.Misc.friendlyDuration(this.getRowValue(row));
const eta = window.qBittorrent.Misc.friendlyDuration(this.getRowValue(row), window.qBittorrent.Misc.MAX_ETA));
td.set('text', eta);
td.set('title', eta);
};
@ -1161,7 +1162,13 @@ window.qBittorrent.DynamicTable = (function() {
// time active
this.columns['time_active'].updateTd = function(td, row) {
const time = window.qBittorrent.Misc.friendlyDuration(this.getRowValue(row));
const activeTime = this.getRowValue(row, 0);
const seedingTime = this.getRowValue(row, 1);
const time = (seedingTime > 0)
? ('QBT_TR(%1 (seeded for %2))QBT_TR[CONTEXT=TransferListDelegate]'
.replace('%1', window.qBittorrent.Misc.friendlyDuration(activeTime))
.replace('%2', window.qBittorrent.Misc.friendlyDuration(seedingTime)))
: window.qBittorrent.Misc.friendlyDuration(activeTime);
td.set('text', time);
td.set('title', time);
};

View file

@ -43,7 +43,8 @@ window.qBittorrent.Misc = (function() {
escapeHtml: escapeHtml,
safeTrim: safeTrim,
toFixedPointString: toFixedPointString,
containsAllTerms: containsAllTerms
containsAllTerms: containsAllTerms,
MAX_ETA: 8640000
};
};
@ -94,9 +95,8 @@ window.qBittorrent.Misc = (function() {
/*
* JS counterpart of the function in src/misc.cpp
*/
const friendlyDuration = function(seconds) {
const MAX_ETA = 8640000;
if (seconds < 0 || seconds >= MAX_ETA)
const friendlyDuration = function(seconds, maxCap = -1) {
if (seconds < 0 || ((seconds >= maxCap) && (maxCap >= 0)))
return "∞";
if (seconds === 0)
return "0";
@ -109,11 +109,13 @@ window.qBittorrent.Misc = (function() {
minutes = minutes % 60;
if (hours < 24)
return "QBT_TR(%1h %2m)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(hours)).replace("%2", parseInt(minutes));
const days = hours / 24;
let days = hours / 24;
hours = hours % 24;
if (days < 100)
if (days < 365)
return "QBT_TR(%1d %2h)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(days)).replace("%2", parseInt(hours));
return "∞";
const years = days / 365;
days = days % 365;
return "QBT_TR(%1y %2d)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(years)).replace("%2", parseInt(days));
}
const friendlyPercentage = function(value) {
@ -213,3 +215,5 @@ window.qBittorrent.Misc = (function() {
return exports();
})();
Object.freeze(window.qBittorrent.Misc);

View file

@ -98,14 +98,14 @@ window.qBittorrent.PropGeneral = (function() {
let temp;
// Update Torrent data
if (data.seeding_time > 0)
temp = "QBT_TR(%1 (%2 this session))QBT_TR[CONTEXT=PropertiesWidget]"
temp = "QBT_TR(%1 (seeded for %2))QBT_TR[CONTEXT=PropertiesWidget]"
.replace("%1", window.qBittorrent.Misc.friendlyDuration(data.time_elapsed))
.replace("%2", window.qBittorrent.Misc.friendlyDuration(data.seeding_time));
else
temp = window.qBittorrent.Misc.friendlyDuration(data.time_elapsed);
$('time_elapsed').set('html', temp);
$('eta').set('html', window.qBittorrent.Misc.friendlyDuration(data.eta));
$('eta').set('html', window.qBittorrent.Misc.friendlyDuration(data.eta, window.qBittorrent.Misc.MAX_ETA));
temp = "QBT_TR(%1 (%2 max))QBT_TR[CONTEXT=PropertiesWidget]"
.replace("%1", data.nb_connections)