Christophe Dumez
15 years ago
10 changed files with 255 additions and 61 deletions
@ -1 +1,127 @@
@@ -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