Changeset 12700


Ignore:
Timestamp:
Aug 20, 2011, 3:31:34 PM (10 years ago)
Author:
jordan
Message:

(trunk web) code cleanup in torrent-row: (1) add a progressbar builder helper function to reduce redundant code between the different view types (2) decouple TorrentRow?'s constructor from transmission.js

Location:
trunk/web/javascript
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/javascript/torrent-renderer.js

    r12690 r12700  
    4545}
    4646
    47 TorrentRendererHelper.renderProgressbar = function( controller, t, complete, incomplete )
     47TorrentRendererHelper.createProgressbar = function( classes )
     48{
     49        var complete = document.createElement( 'div' );
     50        complete.className = 'torrent_progress_bar complete';
     51        var incomplete = document.createElement( 'div' );
     52        incomplete.className = 'torrent_progress_bar incomplete';
     53        var progressbar = document.createElement( 'div' );
     54        progressbar.className = 'torrent_progress_bar_container ' + classes;
     55        progressbar.appendChild( complete );
     56        progressbar.appendChild( incomplete );
     57        return { 'element': progressbar, 'complete': complete, 'incomplete': incomplete }
     58}
     59
     60TorrentRendererHelper.renderProgressbar = function( controller, t, progressbar )
    4861{
    4962        var info = TorrentRendererHelper.getProgressInfo( controller, t );
    5063        var e;
    51         e = complete;
     64        e = progressbar.complete;
    5265        e.style.width = '' + info.percent + "%";
    5366        e.className = info.complete;
    5467        e.style.display = info.percent<=0 ? 'none' : 'block';
    55         e = incomplete;
     68        e = progressbar.incomplete;
    5669        e.className = info.incomplete;
    5770        e.style.display = info.percent>=100 ? 'none' : 'block';
     
    89102                peers.className = 'torrent_peer_details';
    90103
    91                 var complete = document.createElement( 'div' );
    92                 complete.className = 'torrent_progress_bar complete';
    93                 var incomplete = document.createElement( 'div' );
    94                 incomplete.className = 'torrent_progress_bar incomplete';
    95                 var progressbar = document.createElement( 'div' );
    96                 progressbar.className = 'torrent_progress_bar_container full';
    97                 progressbar.appendChild( complete );
    98                 progressbar.appendChild( incomplete );
     104                var progressbar = TorrentRendererHelper.createProgressbar( 'full' );
    99105
    100106                var details = document.createElement( 'div' );
     
    108114                root.appendChild( peers );
    109115                root.appendChild( button );
    110                 root.appendChild( progressbar );
     116                root.appendChild( progressbar.element );
    111117                root.appendChild( details );
    112118
     
    114120                root._peer_details_container = peers;
    115121                root._progress_details_container = details;
    116                 root._progress_complete_container = complete;
    117                 root._progress_incomplete_container = incomplete;
     122                root._progressbar = progressbar;
    118123                root._pause_resume_button_image = image;
    119124                root._toggle_running_button = button;
     
    206211
    207212                // progressbar
    208                 TorrentRendererHelper.renderProgressbar(
    209                         controller, t,
    210                         root._progress_complete_container,
    211                         root._progress_incomplete_container );
     213                TorrentRendererHelper.renderProgressbar( controller, t, root._progressbar );
    212214
    213215                // peer details
     
    241243        createRow: function( )
    242244        {
    243                 var complete = document.createElement( 'div' );
    244                 complete.className = 'torrent_progress_bar complete';
    245                 var incomplete = document.createElement( 'div' );
    246                 incomplete.className = 'torrent_progress_bar incomplete';
    247                 var progressbar = document.createElement( 'div' );
    248                 progressbar.className = 'torrent_progress_bar_container compact';
    249                 progressbar.appendChild( complete );
    250                 progressbar.appendChild( incomplete );
     245                var progressbar = TorrentRendererHelper.createProgressbar( 'compact' );
    251246
    252247                var details = document.createElement( 'div' );
     
    257252
    258253                var root = document.createElement( 'li' );
    259                 root.appendChild( progressbar );
     254                root.appendChild( progressbar.element );
    260255                root.appendChild( details );
    261256                root.appendChild( name );
    262257                root.className = 'torrent compact';
    263                 root._progress_complete_container = complete;
    264                 root._progress_incomplete_container = incomplete;
     258                root._progressbar = progressbar;
    265259                root._details_container = details;
    266260                root._name_container = name;
     
    296290
    297291                // progressbar
    298                 TorrentRendererHelper.renderProgressbar(
    299                         controller, t,
    300                         root._progress_complete_container,
    301                         root._progress_incomplete_container );
     292                TorrentRendererHelper.renderProgressbar( controller, t, root._progressbar );
    302293        }
    303294};
     
    308299****/
    309300
    310 function TorrentRow( controller, generator )
    311 {
    312         this.initialize( controller, generator );
     301function TorrentRow( view )
     302{
     303        this.initialize( view );
    313304}
    314305TorrentRow.prototype =
    315306{
    316         initialize: function( controller, generator ) {
    317                 this._generator = generator;
    318                 var root = generator.createRow( );
    319                 this._element = root;
    320                 $(root).bind('dblclick', function(e) { controller.toggleInspector(); });
     307        initialize: function( view ) {
     308                this._view = view;
     309                this._element = view.createRow( );
    321310
    322311        },
     
    327316                var tor = this.getTorrent( );
    328317                if( tor !== null )
    329                         this._generator.render( controller, tor, this.getElement( ) );
     318                        this._view.render( controller, tor, this.getElement( ) );
    330319        },
    331320        isSelected: function( ) {
     
    352341        setTorrent: function( controller, t ) {
    353342                if( this._torrent !== t ) {
     343                        var key = 'dataChanged.renderer';
    354344                        if( this._torrent )
    355                                 $(this).unbind('dataChanged.renderer');
     345                                $(this).unbind(key);
    356346                        if(( this._torrent = t ))
    357                                 $(this).bind('dataChanged.renderer',this.render(controller));
     347                                $(this).bind(key,this.render(controller));
    358348                }
    359349        },
  • trunk/web/javascript/transmission.js

    r12691 r12700  
    22052205                        var fragment = document.createDocumentFragment( );
    22062206                        while( this._rows.length < keep.length ) {
    2207                                 var row = new TorrentRow( this, this.torrentRenderer );
     2207                                var row = new TorrentRow( this.torrentRenderer );
    22082208                                if( !iPhone ) {
    22092209                                        var b = row.getToggleRunningButton( );
     
    22132213                                }
    22142214                                $(row.getElement()).bind('click',{r: row}, function(ev){ tr.onRowClicked(ev,ev.data.r);});
     2215                                $(row.getElement()).bind('dblclick', function(e) { tr.toggleInspector(); });
    22152216                                fragment.appendChild( row.getElement() );
    22162217                                this._rows.push( row );
Note: See TracChangeset for help on using the changeset viewer.