Changeset 12707


Ignore:
Timestamp:
Aug 21, 2011, 2:02:28 PM (10 years ago)
Author:
jordan
Message:

(trunk web) make Transmission.js' keyDown() function more efficient & a little more readable

File:
1 edited

Legend:

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

    r12706 r12707  
    476476        },
    477477
    478         scrollToElement: function( e )
    479         {
    480                 if( iPhone )
    481                         return;
    482 
    483                 var container = $('#torrent_container');
    484                 var scrollTop = container.scrollTop( );
    485                 var innerHeight = container.innerHeight( );
    486 
    487                 var offsetTop = e.offsetTop;
    488                 var offsetHeight = $(e).outerHeight( );
     478        scrollToRow: function(row)
     479        {
     480                if( iPhone ) // FIXME: why?
     481                        return
     482
     483                var list = $('#torrent_container')
     484                var scrollTop = list.scrollTop()
     485                var innerHeight = list.innerHeight()
     486
     487                var e = $(row.getElement())
     488                var offsetTop = e[0].offsetTop
     489                var offsetHeight = e.outerHeight()
    489490
    490491                if( offsetTop < scrollTop )
    491                         container.scrollTop( offsetTop );
     492                        list.scrollTop( offsetTop );
    492493                else if( innerHeight + scrollTop < offsetTop + offsetHeight )
    493                         container.scrollTop( offsetTop + offsetHeight - innerHeight );
     494                        list.scrollTop( offsetTop + offsetHeight - innerHeight );
    494495        },
    495496
     
    583584         * Process key event
    584585         */
    585         keyDown: function(event)
    586         {
    587                 var tr = this;
    588                 var sel = tr.getSelectedRows( );
    589                 var rows = tr.getVisibleRows( );
    590                 var i = -1;
    591 
    592                 if( event.keyCode == 40 ) // down arrow
     586        keyDown: function(ev)
     587        {
     588                var up = ev.keyCode === 38 // up key pressed
     589                var dn = ev.keyCode === 40 // down key pressed
     590
     591                if(up || dn)
    593592                {
    594                         var r = sel.length ? sel[sel.length-1] : null;
    595                         i = r==null ? null : tr.getRowIndex(rows,r)+1;
    596                         if( i == rows.length || i == null )
    597                                 i = 0;
    598                 }
    599                 else if( event.keyCode == 38 ) // up arrow
    600                 {
    601                         var r = sel.length ? sel[0] : null
    602                         i = r==null ? null : tr.getRowIndex(rows,r)-1;
    603                         if( i == -1 || i == null )
    604                                 i = rows.length - 1;
    605                 }
    606 
    607                 if( 0<=i && i<rows.length ) {
    608                         tr.deselectAll( );
    609                         tr.selectRow( tr._rows[i], true );
    610                         tr.scrollToElement( tr._rows[i] );
     593                        var rows = this.getVisibleRows()
     594
     595                        // find the first selected row 
     596                        for(var i=0, row; row=rows[i]; ++i)
     597                                if(row.isSelected())
     598                                        break
     599
     600                        if(i == rows.length) // no selection yet
     601                                i = 0
     602                        else if(dn)
     603                                i = (i+1) % rows.length
     604                        else if(up)
     605                                i = (i || rows.length) - 1
     606
     607                        this.setSelectedRow(rows[i])
     608                        this.scrollToRow(rows[i])
    611609                }
    612610        },
Note: See TracChangeset for help on using the changeset viewer.