Christophe Dumez
15 years ago
10 changed files with 255 additions and 61 deletions
@ -1 +1,127 @@ |
|||||||
CONTENT |
<span id="trackers"> |
||||||
|
<table class="torrentTable" cellpadding="0" cellspacing="0"> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<th>_(URL)</th> |
||||||
|
<th>_(Status)</th> |
||||||
|
<th>_(Peers)</th> |
||||||
|
<th>_(Message)</th> |
||||||
|
|
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody id="trackersTable"></tbody> |
||||||
|
</table> |
||||||
|
</span> |
||||||
|
|
||||||
|
<script type="text/javascript"> |
||||||
|
var trackersDynTable = new Class ({ |
||||||
|
|
||||||
|
initialize: function(){ |
||||||
|
}, |
||||||
|
|
||||||
|
setup: function(table){ |
||||||
|
this.table = $(table); |
||||||
|
this.rows = new Hash(); |
||||||
|
}, |
||||||
|
|
||||||
|
removeRow: function(url){ |
||||||
|
if(this.rows.has(url)) { |
||||||
|
var tr = this.rows.get(url); |
||||||
|
tr.dispose(); |
||||||
|
this.rows.erase(url); |
||||||
|
return true; |
||||||
|
} |
||||||
|
return false; |
||||||
|
}, |
||||||
|
|
||||||
|
removeAllRows: function() { |
||||||
|
this.rows.each(function(tr, url) { |
||||||
|
this.removeRow(url); |
||||||
|
}.bind(this)); |
||||||
|
}, |
||||||
|
|
||||||
|
updateRow: function(tr, row){ |
||||||
|
var tds = tr.getElements('td'); |
||||||
|
for(var i=0; i<row.length; i++) { |
||||||
|
tds[i].set('html', row[i]); |
||||||
|
} |
||||||
|
return true; |
||||||
|
}, |
||||||
|
|
||||||
|
insertRow: function(row) { |
||||||
|
var url = row[0]; |
||||||
|
if(this.rows.has(url)) { |
||||||
|
var tr = this.rows.get(url); |
||||||
|
this.updateRow(tr, row); |
||||||
|
return; |
||||||
|
} |
||||||
|
//this.removeRow(id); |
||||||
|
var tr = new Element('tr'); |
||||||
|
this.rows.set(url, tr); |
||||||
|
for(var i=0; i<row.length; i++) |
||||||
|
{ |
||||||
|
var td = new Element('td'); |
||||||
|
td.set('html', row[i]); |
||||||
|
td.injectInside(tr); |
||||||
|
} |
||||||
|
tr.injectInside(this.table); |
||||||
|
}, |
||||||
|
}); |
||||||
|
|
||||||
|
var waitingTrackers=false; |
||||||
|
var current_hash = ""; |
||||||
|
|
||||||
|
var loadTrackersData = function() { |
||||||
|
if(!$defined($('trackersTable'))) { |
||||||
|
// Tab changed |
||||||
|
return; |
||||||
|
} |
||||||
|
var new_hash = myTable.getCurrentTorrentHash(); |
||||||
|
if(new_hash == "") { |
||||||
|
tTable.removeAllRows(); |
||||||
|
loadTrackersData.delay(1500); |
||||||
|
return; |
||||||
|
} |
||||||
|
if(new_hash != current_hash) { |
||||||
|
tTable.removeAllRows(); |
||||||
|
current_hash = new_hash; |
||||||
|
} |
||||||
|
var url = 'json/propertiesTrackers/'+current_hash; |
||||||
|
if (!waitingTrackers) { |
||||||
|
waitingTrackers=true; |
||||||
|
var request = new Request.JSON({ |
||||||
|
url: url, |
||||||
|
method: 'get', |
||||||
|
onFailure: function() { |
||||||
|
$('error_div').set('html', 'qBittorrent client is not reachable'); |
||||||
|
waitingTrackers=false; |
||||||
|
loadTrackersData.delay(2000); |
||||||
|
}, |
||||||
|
onSuccess: function(trackers) { |
||||||
|
$('error_div').set('html', ''); |
||||||
|
if(trackers){ |
||||||
|
// Update Trackers data |
||||||
|
trackers.each(function(tracker){ |
||||||
|
var row = new Array(); |
||||||
|
row.length = 4; |
||||||
|
row[0] = tracker.url; |
||||||
|
row[1] = tracker.status; |
||||||
|
row[2] = tracker.num_peers; |
||||||
|
row[3] = tracker.msg; |
||||||
|
tTable.insertRow(row); |
||||||
|
}); |
||||||
|
} else { |
||||||
|
tTable.removeAllRows(); |
||||||
|
} |
||||||
|
waitingTrackers=false; |
||||||
|
loadTrackersData.delay(1500); |
||||||
|
} |
||||||
|
}).send(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
tTable = new trackersDynTable(); |
||||||
|
tTable.setup($('trackersTable')); |
||||||
|
// Initial loading |
||||||
|
loadTrackersData(); |
||||||
|
</script> |
||||||
|
Loading…
Reference in new issue