mirror of
https://github.com/transmission/transmission.git
synced 2025-12-24 12:28:52 +00:00
(trunk web) mjpieters' patch for adding announce and scrape status to the trackers tab with some code cleanup and style adjustments
This commit is contained in:
@@ -1190,6 +1190,7 @@ Transmission.prototype =
|
||||
updateTrackersLists: function() {
|
||||
// By building up the HTML as as string, then have the browser
|
||||
// turn this into a DOM tree, this is a fast operation.
|
||||
var tr = this;
|
||||
var html = '';
|
||||
var na = 'N/A';
|
||||
var torrents = this.getSelectedTorrents( );
|
||||
@@ -1198,9 +1199,19 @@ Transmission.prototype =
|
||||
html += '<div class="inspector_group"><div class="inspector_group_label">';
|
||||
html += 'Tier ' + (i + 1) + '</div><ul class="tier_list">';
|
||||
for( var j=0, tracker; tracker=tier[j]; ++j ) {
|
||||
var lastAnnounceStatusHash = tr.lastAnnounceStatus(tracker);
|
||||
var announceState = tr.announceState(tracker);
|
||||
var lastScrapeStatusHash = tr.lastScrapeStatus(tracker);
|
||||
|
||||
// Display construction
|
||||
var parity = ((j+1) % 2 == 0 ? 'even' : 'odd');
|
||||
html += '<li class="inspector_tracker_entry ' + parity + '"><div class="tracker_host">'
|
||||
html += tracker.host + '</div><table class="tracker_stats">';
|
||||
html += '<li class="inspector_tracker_entry ' + parity + '"><div class="tracker_host" title="' + tracker.announce + '">';
|
||||
html += tracker.host + '</div>';
|
||||
html += '<div class="tracker_activity">';
|
||||
html += '<div>' + lastAnnounceStatusHash['label'] + ': ' + lastAnnounceStatusHash['value'] + '</div>';
|
||||
html += '<div>' + announceState + '</div>';
|
||||
html += '<div>' + lastScrapeStatusHash['label'] + ': ' + lastScrapeStatusHash['value'] + '</div>';
|
||||
html += '</div><table class="tracker_stats">';
|
||||
html += '<tr><th>Seeders:</th><td>' + (tracker.seederCount > -1 ? tracker.seederCount : na) + '</td></tr>';
|
||||
html += '<tr><th>Leechers:</th><td>' + (tracker.leecherCount > -1 ? tracker.leecherCount : na) + '</td></tr>';
|
||||
html += '<tr><th>Downloads:</th><td>' + (tracker.downloadCount > -1 ? tracker.downloadCount : na)+ '</td></tr>';
|
||||
@@ -1212,6 +1223,66 @@ Transmission.prototype =
|
||||
setInnerHTML(this._inspector_trackers_list, html);
|
||||
},
|
||||
|
||||
lastAnnounceStatus: function(tracker){
|
||||
var lastAnnounceLabel = 'Last Announce';
|
||||
var lastAnnounce = 'N/A';
|
||||
if (tracker.hasAnnounced) {
|
||||
var lastAnnounceTime = Math.formatTimestamp(tracker.lastAnnounceTime);
|
||||
if (tracker.lastAnnounceSucceeded) {
|
||||
lastAnnounce = lastAnnounceTime;
|
||||
lastAnnounce += ' (got ' + tracker.lastAnnouncePeerCount + ' peer';
|
||||
if (tracker.lastAnnouncePeerCount != 1){ lastAnnounce += 's'; }
|
||||
lastAnnounce += ')';
|
||||
} else {
|
||||
lastAnnounceLabel = 'Announce error';
|
||||
lastAnnounce = (tracker.lastAnnounceResult ? tracker.lastAnnounceResult + ' - ' : '') + lastAnnounceTime;
|
||||
}
|
||||
}
|
||||
return {'label':lastAnnounceLabel, 'value':lastAnnounce};
|
||||
},
|
||||
|
||||
announceState: function(tracker){
|
||||
var announceState = '';
|
||||
switch (tracker.announceState) {
|
||||
case Torrent._TrackerActive:
|
||||
announceState = 'Announce in progress';
|
||||
break;
|
||||
case Torrent._TrackerWaiting:
|
||||
var timeUntilAnnounce = tracker.nextAnnounceTime - ((new Date()).getTime() / 1000);
|
||||
if(timeUntilAnnounce < 0){
|
||||
timeUntilAnnounce = 0;
|
||||
}
|
||||
announceState = 'Next announce in ' + Math.formatSeconds(timeUntilAnnounce);
|
||||
break;
|
||||
case Torrent._TrackerQueued:
|
||||
announceState = 'Announce is queued';
|
||||
break;
|
||||
case Torrent._TrackerInactive:
|
||||
announceState = tracker.isBackup ?
|
||||
'Tracker will be used as a backup' :
|
||||
'Announce not scheduled';
|
||||
break;
|
||||
default:
|
||||
announceState = 'unknown announce state: ' + tracker.announceState;
|
||||
}
|
||||
return announceState;
|
||||
},
|
||||
|
||||
lastScrapeStatus: function(tracker){
|
||||
var lastScrapeLabel = 'Last Scrape';
|
||||
var lastScrape = 'N/A';
|
||||
if (tracker.hasScraped) {
|
||||
var lastScrapeTime = Math.formatTimestamp(tracker.lastScrapeTime);
|
||||
if (tracker.lastScrapeSucceeded) {
|
||||
lastScrape = lastScrapeTime;
|
||||
} else {
|
||||
lastScrapeLabel = 'Scrape error';
|
||||
lastScrape = (tracker.lastScrapeResult ? tracker.lastScrapeResult + ' - ' : '') + lastScrapeTime;
|
||||
}
|
||||
}
|
||||
return {'label':lastScrapeLabel, 'value':lastScrape}
|
||||
},
|
||||
|
||||
/*
|
||||
* Toggle the visibility of the inspector (used by the context menu)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user