- started to remodel the UI to match the new qBT UI

This commit is contained in:
Christophe Dumez
2009-11-23 09:16:32 +00:00
parent 08710ed822
commit 13e22aef51
7 changed files with 131 additions and 112 deletions

View File

@@ -23,7 +23,7 @@
*/
myTable = new dynamicTable();
myTableUP = new dynamicTable();
ajaxfn = function(){};
window.addEvent('domready', function(){
MochaUI.Desktop = new MochaUI.Desktop();
@@ -32,29 +32,27 @@ window.addEvent('domready', function(){
'visibility': 'visible'
});
initializeWindows();
// Tabs
myTabs1 = new mootabs('myTabs', {
width: '100%',
height: '100%'
});
myTable.setup('myTable', 3);
myTableUP.setup('myTableUP', -1);
var r=0;
var waiting=false;
var stateToImg = function(state){
switch (state)
{
case 'paused':
case 'pausedUP':
case 'pausedDL':
return '<img src="images/skin/paused.png"/>';
case 'seeding':
case 'stalledUP':
return '<img src="images/skin/seeding.png"/>';
case 'checking':
case 'checkingUP':
case 'checkingDL':
return '<img src="images/oxygen/run-build.png"/>';
case 'downloading':
return '<img src="images/skin/downloading.png"/>';
case 'stalled':
case 'stalledDL':
return '<img src="images/skin/stalled.png"/>';
case 'queued':
case 'queuedUP':
case 'queuedDL':
return '<img src="images/oxygen/mail-queue.png"/>';
default:
return '<img src="images/skin/stalled.png"/>';
@@ -90,33 +88,10 @@ window.addEvent('domready', function(){
$('error_div').set('html', '');
if(events){
// Add new torrents or update them
unfinished_hashes = myTable.getRowIds();
finished_hashes = myTableUP.getRowIds();
torrent_hashes = myTable.getRowIds();
events_hashes = new Array();
events.each(function(event){
events_hashes[events_hashes.length] = event.hash;
if(event.seed) {
var row = new Array();
row.length = 4;
row[0] = stateToImg(event.state);
row[1] = event.name;
row[2] = fsize(event.size);
row[3] = fspeed(event.upspeed);
if(!finished_hashes.contains(event.hash)) {
// New finished torrent
finished_hashes[finished_hashes.length] = event.hash;
myTableUP.insertRow(event.hash, row);
if(unfinished_hashes.contains(event.hash)) {
// Torrent used to be in unfinished list
// Remove it
myTable.removeRow(event.hash);
unfinished_hashes.erase(event.hash);
}
} else {
// Update torrent data
myTableUP.updateRow(event.hash, row);
}
} else {
var row = new Array();
row.length = 6;
row[0] = stateToImg(event.state);
@@ -128,33 +103,21 @@ window.addEvent('domready', function(){
row[6] = event.priority
if(row[6] != -1)
queueing_enabled = true;
if(!unfinished_hashes.contains(event.hash)) {
if(!torrent_hashes.contains(event.hash)) {
// New unfinished torrent
unfinished_hashes[unfinished_hashes.length] = event.hash;
torrent_hashes[torrent_hashes.length] = event.hash;
myTable.insertRow(event.hash, row);
if(finished_hashes.contains(event.hash)) {
// Torrent used to be in unfinished list
// Remove it
myTableUP.removeRow(event.hash);
finished_hashes.erase(event.hash);
}
} else {
// Update torrent data
myTable.updateRow(event.hash, row);
myTable.updateRow(event.hash, row, event.state);
}
}
});
// Remove deleted torrents
unfinished_hashes.each(function(hash){
torrent_hashes.each(function(hash){
if(!events_hashes.contains(hash)) {
myTable.removeRow(hash);
}
});
finished_hashes.each(function(hash){
if(!events_hashes.contains(hash)) {
myTableUP.removeRow(hash);
}
});
if(queueing_enabled) {
$('queueingButtons').removeClass('invisible');
myTable.showPriority();
@@ -171,6 +134,11 @@ window.addEvent('domready', function(){
};
ajaxfn();
// ajaxfn.periodical(5000);
setFilter = function(f) {
myTable.setFilter(f);
ajaxfn();
}
});
// This runs when a person leaves your page.

View File

@@ -42,6 +42,7 @@ var dynamicTable = new Class ({
this.cur = new Array();
this.priority_hidden = false;
this.progressIndex = progressIndex;
this.filter = 'all';
},
altRow: function()
@@ -66,6 +67,10 @@ var dynamicTable = new Class ({
}.bind(this));
this.priority_hidden = true;
},
setFilter: function(f) {
this.filter = f;
},
showPriority: function(){
if(!this.priority_hidden) return;
@@ -77,14 +82,52 @@ var dynamicTable = new Class ({
}.bind(this));
this.priority_hidden = false;
},
applyFilterOnRow: function(tr, status) {
switch(this.filter) {
case 'all':
tr.removeClass("invisible");
return;
case 'downloading':
if(status == "downloading" || status == "stalledDL" || status == "checkingDL" || status == "pausedDL" || status == "queuedDL") {
tr.removeClass("invisible");
} else {
tr.addClass("invisible");
}
return;
case 'completed':
if(status == "seeding" || status == "stalledUP" || status == "checkingUP" || status == "pausedUP" || status == "queuedUP") {
tr.removeClass("invisible");
} else {
tr.addClass("invisible");
}
return;
case 'active':
if(status == "downloading" || status == "seeding") {
tr.removeClass("invisible");
} else {
tr.addClass("invisible");
}
return;
case 'inactive':
if(status != "downloading" && status != "seeding") {
tr.removeClass("invisible");
} else {
tr.addClass("invisible");
}
return;
}
},
insertRow: function(id, row){
insertRow: function(id, row, status){
var tr = this.rows[id];
if($defined(tr))
return;
//this.removeRow(id);
var tr = new Element('tr');
this.rows[id] = tr;
// Apply filter
this.applyFilterOnRow(tr, status);
for(var i=0; i<row.length; i++)
{
var td = new Element('td');
@@ -181,10 +224,12 @@ var dynamicTable = new Class ({
}
},
updateRow: function(id, row){
updateRow: function(id, row, status){
var tr = this.rows[id];
if($defined(tr))
{
// Apply filter
this.applyFilterOnRow(tr, status);
var tds = tr.getElements('td');
for(var i=0; i<row.length; i++) {
if(i==this.progressIndex) {

View File

@@ -63,11 +63,7 @@ initializeWindows = function(){
addClickEvent('delete', function(e){
new Event(e).stop();
if($("Tab1").hasClass('active')) {
var h = myTable.selectedIds();
} else {
var h = myTableUP.selectedIds();
}
var h = myTable.selectedIds();
if(h.length && confirm('Are you sure you want to delete the selected item in download list?')) {
h.each(function(item, index){
new Request({url: '/command/delete', method: 'post', data: {hash: item}}).send();
@@ -79,11 +75,7 @@ initializeWindows = function(){
addClickEvent('deletePerm', function(e){
new Event(e).stop();
if($("Tab1").hasClass('active')) {
var h = myTable.selectedIds();
} else {
var h = myTableUP.selectedIds();
}
var h = myTable.selectedIds();
if(h.length && confirm('Are you sure you want to delete from hard drive the selected item in download list?')) {
h.each(function(item, index){
new Request({url: '/command/deletePerm', method: 'post', data: {hash: item}}).send();
@@ -94,13 +86,7 @@ initializeWindows = function(){
['pause','resume','decreasePrio','increasePrio','recheck'].each(function(item) {
addClickEvent(item, function(e){
new Event(e).stop();
if($("Tab1").hasClass('active')) {
var h = myTable.selectedIds();
} else {
if(item=='decreasePrio' || item=='increasePrio')
return;
var h = myTableUP.selectedIds();
}
var h = myTable.selectedIds();
if(h.length){
h.each(function(hash, index){
new Request({url: '/command/'+item, method: 'post', data: {hash: hash}}).send();