(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:
Kevin Glowacz
2010-02-01 01:08:17 +00:00
parent 830cd92822
commit 934330327a
4 changed files with 128 additions and 8 deletions

View File

@@ -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)
*/