Browse Source

- Allow the user to use CTRL key to select multiple item in Web UI transfer list

adaptive-webui-19844
Christophe Dumez 16 years ago
parent
commit
56885cc914
  1. 1
      Changelog
  2. 50
      src/webui/scripts/dynamicTable.js
  3. 17
      src/webui/scripts/mocha-events.js

1
Changelog

@ -4,6 +4,7 @@
- FEATURE: RSS can now be disabled from program preferences - FEATURE: RSS can now be disabled from program preferences
- FEATURE: Added collapse/expand all buttons in addition dialog - FEATURE: Added collapse/expand all buttons in addition dialog
- FEATURE: Can have different proxies for Bittorrent and search engine - FEATURE: Can have different proxies for Bittorrent and search engine
- FEATURE: Allow multiple item selection in Web UI transfer list
- BUGFIX: Disable ETA calculation when ETA column is hidden - BUGFIX: Disable ETA calculation when ETA column is hidden
- BUGFIX: Removed "disconnected" connection state, detection was far from perfect - BUGFIX: Removed "disconnected" connection state, detection was far from perfect
- COSMETIC: Transfer speed, ratio, connection status and DHT nodes are displayed in status bar - COSMETIC: Transfer speed, ratio, connection status and DHT nodes are displayed in status bar

50
src/webui/scripts/dynamicTable.js

@ -41,7 +41,7 @@ var dynamicTable = new Class ({
}, options); }, options);
this.table = $(table); this.table = $(table);
this.rows = new Object(); this.rows = new Object();
this.cur = false; this.cur = new Array();
}, },
altRow: function() altRow: function()
@ -79,15 +79,41 @@ var dynamicTable = new Class ({
}.bind(this)); }.bind(this));
} }
tr.addEvent('click', function(e){ tr.addEvent('click', function(e){
var temptr = this.rows[this.cur]; if(e.control) {
if(temptr){ found = false;
temptr.removeClass(this.options.selectCls); if(this.cur.contains(id)) {
} // remove it
temptr = this.rows[id]; this.cur.erase(id);
if(temptr){ // Remove selected style
temptr.addClass(this.options.selectCls); temptr = this.rows[id];
if(temptr){
temptr.removeClass(this.options.selectCls);
}
} else {
this.cur[this.cur.length] = id;
// Add selected style
temptr = this.rows[id];
if(temptr){
temptr.addClass(this.options.selectCls);
}
}
} else {
//TODO: handle alt key
// Control key is not pressed
// Remove selected style from previous ones
for(i=0; i<this.cur.length; i++) {
var temptr = this.rows[this.cur[i]];
if(temptr){
temptr.removeClass(this.options.selectCls);
}
}
// Add selected style to new one
temptr = this.rows[id];
if(temptr){
temptr.addClass(this.options.selectCls);
}
this.cur[0] = id;
} }
this.cur = id;
}.bind(this)); }.bind(this));
tr.injectInside(this.table); tr.injectInside(this.table);
@ -108,9 +134,9 @@ var dynamicTable = new Class ({
}, },
removeRow: function(id){ removeRow: function(id){
if(this.cur === id) if(this.cur.contains(id))
{ {
this.cur = false; this.cur.erase(id);
} }
var tr = this.rows[id]; var tr = this.rows[id];
if($defined(tr)) if($defined(tr))
@ -122,7 +148,7 @@ var dynamicTable = new Class ({
return false; return false;
}, },
selectedId: function(){ selectedIds: function(){
return this.cur; return this.cur;
}, },

17
src/webui/scripts/mocha-events.js

@ -55,17 +55,22 @@ function attachMochaLinkEvents(){
addClickEvent('delete', function(e){ addClickEvent('delete', function(e){
new Event(e).stop(); new Event(e).stop();
var h = myTable.selectedId(); var h = myTable.selectedIds();
if(h && confirm('Are you sure you want to delete the selected item in download list?')) if(h.length && confirm('Are you sure you want to delete the selected item in download list?')) {
new Request({url: '/command/delete', method: 'post', data: {hash: h}}).send(); h.each(function(item, index){
new Request({url: '/command/delete', method: 'post', data: {hash: item}}).send();
});
}
}); });
['pause','resume'].each(function(item) { ['pause','resume'].each(function(item) {
addClickEvent(item, function(e){ addClickEvent(item, function(e){
new Event(e).stop(); new Event(e).stop();
var h = myTable.selectedId(); var h = myTable.selectedIds();
if(h){ if(h.length){
new Request({url: '/command/'+item, method: 'post', data: {hash: h}}).send(); h.each(function(item, index){
new Request({url: '/command/'+item, method: 'post', data: {hash: item}}).send();
});
} }
}); });

Loading…
Cancel
Save