Some work about adaptive color scheme for Web UI (PR #19901)
http://[316:c51a:62a3:8b9::4]/d4708/qBittorrent/src/branch/adaptive-webui
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
4.4 KiB
146 lines
4.4 KiB
<span id="trackers"> |
|
<table class="torrentTable" cellpadding="0" cellspacing="0"> |
|
<thead> |
|
<tr> |
|
<th>_(URL) <img src="images/oxygen/list-add.png" id="addTrackersPlus" style="width:16px;cursor:pointer;"/></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, |
|
noCache: true, |
|
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(); |
|
// Add trackers code |
|
$('addTrackersPlus').addEvent('click', function addTrackerDlg() { |
|
if(current_hash.length == 0) return; |
|
new MochaUI.Window({ |
|
id: 'trackersPage', |
|
title: "_(Trackers addition dialog)", |
|
loadMethod: 'iframe', |
|
contentURL:'addtrackers.html?hash='+current_hash, |
|
scrollbars: true, |
|
resizable: false, |
|
maximizable: false, |
|
closable: true, |
|
paddingVertical: 0, |
|
paddingHorizontal: 0, |
|
width: 500, |
|
height: 250 |
|
}); |
|
}); |
|
</script>
|
|
|