Changeset 12777


Ignore:
Timestamp:
Aug 28, 2011, 4:14:58 AM (10 years ago)
Author:
jordan
Message:

(trunk web) some cleanup for r12770 -- better handling of the rebuildEverything flag in Transmission.refiler().

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/javascript/transmission.js

    r12771 r12777  
    19871987        refilter: function(rebuildEverything)
    19881988        {
    1989                 var i, id, t, row, sel;
     1989                var i, e, id, t, row, tmp, sel, rows, clean_rows, dirty_rows,
     1990                    sort_mode = this[Prefs._SortMethod],
     1991                    sort_direction = this[Prefs._SortDirection],
     1992                    filter_mode = this[Prefs._FilterMode],
     1993                    filter_text = this.filterText,
     1994                    filter_tracker = this.filterTracker,
     1995                    renderer = this.torrentRenderer,
     1996                    list = this._torrent_list;
    19901997
    19911998                clearTimeout(this.refilterTimer);
    19921999                delete this.refilterTimer;
    19932000
    1994                 // get a temporary lookup table of selected torrent ids
     2001                // build a temporary lookup table of selected torrent ids
    19952002                sel = { };
    19962003                for (i=0; row=this._rows[i]; ++i)
     
    19982005                                sel[row.getTorrentId()] = row;
    19992006
    2000                 if (rebuildEverything)
     2007                if (rebuildEverything) {
     2008                        $(list).empty();
     2009                        this._rows = [];
    20012010                        for (id in this._torrents)
    2002                                 this.dirtyTorrents[id] = ~0;
     2011                                this.dirtyTorrents[id] = true;
     2012                }
    20032013
    20042014                // rows that overlap with dirtyTorrents need to be refiltered.
    20052015                // those that don't are 'clean' and don't need refiltering.
    2006                 var dirty_rows = [];
    2007                 var clean_rows = [];
     2016                clean_rows = [];
     2017                dirty_rows = [];
    20082018                for (i=0; row=this._rows[i]; ++i) {
    20092019                        if(row.getTorrentId() in this.dirtyTorrents)
     
    20142024
    20152025                // remove the dirty rows from the dom
    2016                 var elementsToRemove = $.map(dirty_rows.slice(0), function(r) {
     2026                e = $.map(dirty_rows.slice(0), function(r) {
    20172027                        return r.getElement();
    20182028                });
    2019                 $(elementsToRemove).remove();
     2029                $(e).remove();
    20202030
    20212031                // drop any dirty rows that don't pass the filter test
    2022                 var tmp = [];
    2023                 var filter_mode = this[Prefs._FilterMode];
    2024                 var filter_text = this.filterText;
    2025                 var filter_tracker = this.filterTracker;
     2032                tmp = [];
    20262033                for (i=0; row=dirty_rows[i]; ++i) {
    20272034                        t = row.getTorrent();
     
    20342041                // make new rows for dirty torrents that pass the filter test
    20352042                // but don't already have a row
    2036                 var renderer = this.torrentRenderer;
    20372043                for (id in this.dirtyTorrents) {
    20382044                        t = this._torrents[id];
     
    20502056                // now we have two sorted arrays of rows
    20512057                // and can do a simple two-way sorted merge.
    2052                 var rows = []
     2058                rows = [];
    20532059                var ci=0, cmax=clean_rows.length;
    20542060                var di=0, dmax=dirty_rows.length;
    2055                 var sort_method = this[Prefs._SortMethod];
    2056                 var sort_direction = this[Prefs._SortDirection];
    2057                 var list = this._torrent_list;
    20582061                while (ci!=cmax || di!=dmax)
    20592062                {
     
    20652068                                push_clean = true;
    20662069                        else {
    2067                                 var ctor = clean_rows[ci].getTorrent();
    2068                                 var dtor = dirty_rows[di].getTorrent();
    2069                                 var c = Torrent.compareTorrents(ctor, dtor, sort_method, sort_direction);
     2070                                var c = Torrent.compareTorrents(clean_rows[ci].getTorrent(),
     2071                                                                dirty_rows[di].getTorrent(),
     2072                                                                sort_mode, sort_direction);
    20702073                                push_clean = (c < 0);
    20712074                        }
     
    20742077                                rows.push(clean_rows[ci++]);
    20752078                        else {
    2076                                 var row = dirty_rows[di++];
    2077                                 var e = row.getElement();
     2079                                row = dirty_rows[di++];
     2080                                e = row.getElement();
    20782081                                if (ci !== cmax)
    20792082                                        list.insertBefore(e, clean_rows[ci].getElement());
     
    20892092
    20902093                // jquery's even/odd starts with 1 rather than 0, so invert the logic here
    2091                 var elements = $.map(rows.slice(0), function(r){return r.getElement();});
    2092                 $(elements).filter(":odd").addClass('even');
    2093                 $(elements).filter(":even").removeClass('even');
     2094                e = $.map(rows.slice(0), function(r){return r.getElement();});
     2095                $(e).filter(":odd").addClass('even');
     2096                $(e).filter(":even").removeClass('even');
    20942097
    20952098                // sync gui
Note: See TracChangeset for help on using the changeset viewer.