ngosang
10 years ago
10 changed files with 175 additions and 2 deletions
@ -0,0 +1,108 @@ |
|||||||
|
var webseedsDynTable = 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 current_hash = ""; |
||||||
|
|
||||||
|
var loadWebSeedsDataTimer; |
||||||
|
var loadWebSeedsData = function() { |
||||||
|
if ($('prop_webseeds').hasClass('invisible')) { |
||||||
|
// Tab changed, don't do anything
|
||||||
|
return; |
||||||
|
} |
||||||
|
var new_hash = myTable.getCurrentTorrentHash(); |
||||||
|
if (new_hash == "") { |
||||||
|
wsTable.removeAllRows(); |
||||||
|
clearTimeout(loadWebSeedsDataTimer); |
||||||
|
loadWebSeedsDataTimer = loadWebSeedsData.delay(10000); |
||||||
|
return; |
||||||
|
} |
||||||
|
if (new_hash != current_hash) { |
||||||
|
wsTable.removeAllRows(); |
||||||
|
current_hash = new_hash; |
||||||
|
} |
||||||
|
var url = 'query/propertiesWebSeeds/' + current_hash; |
||||||
|
var request = new Request.JSON({ |
||||||
|
url: url, |
||||||
|
noCache: true, |
||||||
|
method: 'get', |
||||||
|
onFailure: function() { |
||||||
|
$('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR'); |
||||||
|
clearTimeout(loadWebSeedsDataTimer); |
||||||
|
loadWebSeedsDataTimer = loadWebSeedsData.delay(20000); |
||||||
|
}, |
||||||
|
onSuccess: function(webseeds) { |
||||||
|
$('error_div').set('html', ''); |
||||||
|
if (webseeds) { |
||||||
|
// Update WebSeeds data
|
||||||
|
webseeds.each(function(webseed) { |
||||||
|
var row = new Array(); |
||||||
|
row.length = 1; |
||||||
|
row[0] = webseed.url; |
||||||
|
wsTable.insertRow(row); |
||||||
|
}); |
||||||
|
} |
||||||
|
else { |
||||||
|
wsTable.removeAllRows(); |
||||||
|
} |
||||||
|
clearTimeout(loadWebSeedsDataTimer); |
||||||
|
loadWebSeedsDataTimer = loadWebSeedsData.delay(10000); |
||||||
|
} |
||||||
|
}).send(); |
||||||
|
} |
||||||
|
|
||||||
|
var updateWebSeedsData = function() { |
||||||
|
clearTimeout(loadWebSeedsDataTimer); |
||||||
|
loadWebSeedsData(); |
||||||
|
} |
||||||
|
|
||||||
|
wsTable = new webseedsDynTable(); |
||||||
|
wsTable.setup($('webseedsTable')); |
Loading…
Reference in new issue