diff --git a/web/javascript/transmission.js b/web/javascript/transmission.js index 291be727f..8912904ed 100644 --- a/web/javascript/transmission.js +++ b/web/javascript/transmission.js @@ -73,7 +73,7 @@ Transmission.prototype = } else { $(document).bind('keydown', function(e) { tr.keyDown(e); }); $(document).bind('keyup', function(e) { tr.keyUp(e); }); - $('#torrent_container').click(function() { tr.deselectAll(true); }); + $('#torrent_container').click(function() { tr.deselectAll(); }); $('#inspector_link').click(function(e) { tr.toggleInspector(); }); this.setupSearchBox(); @@ -213,14 +213,16 @@ Transmission.prototype = // include transmenu js to save some bandwidth; if we // start using prefs on iPhone we need to weed // transmenu refs out of that too. + if (!iPhone) + { + $('#sort_by_' + this[Prefs._SortMethod]).selectMenuItem(); - if (!iPhone) $('#sort_by_' + this[Prefs._SortMethod]).selectMenuItem(); + if (this[Prefs._SortDirection] === Prefs._SortDescending) + $('#reverse_sort_order').selectMenuItem(); - if (!iPhone && (this[Prefs._SortDirection] == Prefs._SortDescending)) - $('#reverse_sort_order').selectMenuItem(); - - if (!iPhone && this[Prefs._ShowInspector]) - this.setInspectorVisible(true); + if (this[Prefs._ShowInspector]) + this.setInspectorVisible(true); + } this.initCompactMode(); }, @@ -340,15 +342,7 @@ Transmission.prototype = { var torrents = []; for (var key in this._torrents) - torrents.push(this._torrents[key]); - return torrents; - }, - - getVisibleTorrents: function() - { - var torrents = []; - for (var i=0, row; row=this._rows[i]; ++i) - torrents.push(row.getTorrent()); + torrents.push(this._torrents[key]); return torrents; }, @@ -374,8 +368,7 @@ Transmission.prototype = seedRatioLimit: function() { if (this._prefs && this._prefs['seedRatioLimited']) return this._prefs['seedRatioLimit']; - else - return -1; + return -1; }, setPref: function(key, val) @@ -391,32 +384,19 @@ Transmission.prototype = ****/ getSelectedRows: function() { - var s = []; - for (var i=0, row; row=this._rows[i]; ++i) - if (row.isSelected()) - s.push(row); - return s; + return $.grep(this._rows, function(r) {return r.isSelected();}); }, getSelectedTorrents: function() { - var s = this.getSelectedRows(); - for (var i=0, row; row=s[i]; ++i) - s[i] = s[i].getTorrent(); - return s; + return $.map(this.getSelectedRows(),function(r) {return r.getTorrent();}); }, getSelectedTorrentIds: function() { - var s = []; - for (var i=0, row; row=this._rows[i]; ++i) - if (row.isSelected()) - s.push(row.getTorrentId()); - return s; + return $.map(this.getSelectedRows(),function(r) {return r.getTorrentId();}); }, setSelectedRow: function(row) { - var rows = this.getSelectedRows(); - for (var i=0, r; r=rows[i]; ++i) - this.deselectRow(r); + $.each(this.getSelectedRows(),function(i,r) {r.setSelected(false);}); this.selectRow(row); }, @@ -431,13 +411,11 @@ Transmission.prototype = }, selectAll: function() { - for (var i=0, row; row=this._rows[i]; ++i) - this.selectRow(row); + $.each(this._rows, function(i,r) {r.setSelected(true);}); this.callSelectionChangedSoon(); }, deselectAll: function() { - for (var i=0, row; row=this._rows[i]; ++i) - this.deselectRow(row); + $.each(this._rows, function(i,r) {r.setSelected(false);}); this.callSelectionChangedSoon(); delete this._last_torrent_clicked; }, @@ -521,16 +499,17 @@ Transmission.prototype = i = (i || rows.length) - 1; var r = rows[i]; - if (this._shift_index >= 0) + var anchor = this._shift_index; + if (anchor >= 0) { // user is extending the selection with the shift + arrow keys... - if ( ((this._shift_index <= last) && (last < i)) - || ((this._shift_index >= last) && (last > i))) + if ( ((anchor <= last) && (last < i)) + || ((anchor >= last) && (last > i))) { this.selectRow(r); } - else if (((this._shift_index >= last) && (i > last)) - || ((this._shift_index <= last) && (last > i))) + else if (((anchor >= last) && (i > last)) + || ((anchor <= last) && (last > i))) { this.deselectRow(rows[last]); } @@ -720,27 +699,6 @@ Transmission.prototype = } }, - filesSelectAllClicked: function() { - var t = this._file_torrent; - if (t) - this.toggleFilesWantedDisplay(t, true); - }, - filesDeselectAllClicked: function() { - var t = this._file_torrent; - if (t) - this.toggleFilesWantedDisplay(t, false); - }, - toggleFilesWantedDisplay: function(torrent, wanted) { - var rows = [ ]; - for (var i=0, row; row=this._file_rows[i]; ++i) - if (row.isEditable() && (torrent.getFile(i).wanted !== wanted)) - rows.push(row); - if (rows.length > 0) { - var command = wanted ? 'files-wanted' : 'files-unwanted'; - this.changeFileCommand(command, rows); - } - }, - /* * 'Clutch Preferences' was clicked (iPhone only) */ @@ -955,22 +913,20 @@ Transmission.prototype = */ updateStats: function(stats) { - // can't think of a reason to remember this - //this._stats = stats; - var fmt = Transmission.fmt; - var session = stats["current-stats"]; - var total = stats["cumulative-stats"]; - setInnerHTML($('#stats_session_uploaded')[0], fmt.size(session["uploadedBytes"])); - setInnerHTML($('#stats_session_downloaded')[0], fmt.size(session["downloadedBytes"])); - setInnerHTML($('#stats_session_ratio')[0], fmt.ratioString(Math.ratio(session["uploadedBytes"],session["downloadedBytes"]))); - setInnerHTML($('#stats_session_duration')[0], fmt.timeInterval(session["secondsActive"])); - setInnerHTML($('#stats_total_count')[0], total["sessionCount"] + " times"); - setInnerHTML($('#stats_total_uploaded')[0], fmt.size(total["uploadedBytes"])); - setInnerHTML($('#stats_total_downloaded')[0], fmt.size(total["downloadedBytes"])); - setInnerHTML($('#stats_total_ratio')[0], fmt.ratioString(Math.ratio(total["uploadedBytes"],total["downloadedBytes"]))); - setInnerHTML($('#stats_total_duration')[0], fmt.timeInterval(total["secondsActive"])); + var s = stats["current-stats"]; + $('#stats_session_uploaded').html(fmt.size(s.uploadedBytes)); + $('#stats_session_downloaded').html(fmt.size(s.downloadedBytes)); + $('#stats_session_ratio').html(fmt.ratioString(Math.ratio(s.uploadedBytes,s.downloadedBytes))); + $('#stats_session_duration').html(fmt.timeInterval(s.secondsActive)); + + var t = stats["cumulative-stats"]; + $('#stats_total_count').html(t.sessionCount + " times"); + $('#stats_total_uploaded').html(fmt.size(t.uploadedBytes)); + $('#stats_total_downloaded').html(fmt.size(t.downloadedBytes)); + $('#stats_total_ratio').html(fmt.ratioString(Math.ratio(t.uploadedBytes,t.downloadedBytes))); + $('#stats_total_duration').html(fmt.timeInterval(t.secondsActive)); }, setSearch: function(search) { @@ -1477,6 +1433,27 @@ Transmission.prototype = ***** ****/ + filesSelectAllClicked: function() { + var t = this._file_torrent; + if (t) + this.toggleFilesWantedDisplay(t, true); + }, + filesDeselectAllClicked: function() { + var t = this._file_torrent; + if (t) + this.toggleFilesWantedDisplay(t, false); + }, + toggleFilesWantedDisplay: function(torrent, wanted) { + var rows = [ ]; + for (var i=0, row; row=this._file_rows[i]; ++i) + if (row.isEditable() && (torrent.getFile(i).wanted !== wanted)) + rows.push(row); + if (rows.length > 0) { + var command = wanted ? 'files-wanted' : 'files-unwanted'; + this.changeFileCommand(command, rows); + } + }, + inspectorTabClicked: function(ev, tab) { if (iPhone) ev.stopPropagation(); @@ -1531,6 +1508,7 @@ Transmission.prototype = var total_verified = 0; var na = 'N/A'; var tab = this._inspector._info_tab; + var fmt = Transmission.fmt; $("#torrent_inspector_size, .inspector_row div").css('color', '#222'); @@ -1583,8 +1561,8 @@ Transmission.prototype = download_dir = text; hash = t.getHashString(); - pieces = [ t.getPieceCount(), 'pieces @', Transmission.fmt.mem(t.getPieceSize()) ].join(' '); - date_created = Transmission.fmt.timestamp(t.getDateCreated()); + pieces = [ t.getPieceCount(), 'pieces @', fmt.mem(t.getPieceSize()) ].join(' '); + date_created = fmt.timestamp(t.getDateCreated()); } for (var i=0, t; t=torrents[i]; ++i) { @@ -1614,7 +1592,6 @@ Transmission.prototype = } var private_string = ''; - var fmt = Transmission.fmt; if (have_private && have_public) private_string = 'Mixed'; else if (have_private) private_string = 'Private Torrent'; else if (have_public) private_string = 'Public Torrent'; @@ -1943,8 +1920,8 @@ Transmission.prototype = else text = 'Show ' + state_string + ' at ' + tracker_string + ''; - var torrent_count = this.getAllTorrents().length; - var visible_count = this.getVisibleTorrents().length; + var torrent_count = Object.keys(this._torrents).length; + var visible_count = this._rows.length; if (torrent_count === visible_count) text += ' — ' + torrent_count + ' Transfers'; else