Changeset 8524


Ignore:
Timestamp:
May 25, 2009, 4:07:48 AM (12 years ago)
Author:
kjg
Message:

bind globally instead of to each individual file

this brings us from 35 down to 8 function calls per file initalization

Location:
trunk/web/javascript
Files:
2 edited

Legend:

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

    r8523 r8524  
    664664
    665665                var li = document.createElement('li');
     666                li.id = 't' + this._torrent.id() + 'f' + this._index;
    666667                li.classNameConst = 'inspector_torrent_file_list_entry ' + ((this._index%2)?'odd':'even');
    667668                li.className = li.classNameConst;
     
    689690                this._priority_control = pri_div;
    690691                this._progress = $(prog_div);
    691 
    692                 $(wanted_div).bind('click', { file: this }, this.fileWantedControlClicked);
    693                 $(pri_div).bind('click', { file: this }, this.filePriorityControlClicked);
    694692        },
    695693
     
    804802       
    805803        fileWantedControlClicked: function(event) {
    806                 event.data.file.toggleWanted();
    807         },
    808        
    809         filePriorityControlClicked: function(event) {
     804                this.toggleWanted();
     805        },
     806       
     807        filePriorityControlClicked: function(event, element) {
    810808                var x = event.pageX;
    811                 var target = this;
    812                 while (target !== null) {
    813                         x = x - target.offsetLeft;
    814                         target = target.offsetParent;
    815                 }
    816                 var file = event.data.file
     809                while (element !== null) {
     810                        x = x - element.offsetLeft;
     811                        element = element.offsetParent;
     812                }
     813
    817814                var prio;
    818815                if( x < 12 ) prio = -1;
    819816                else if( x < 23 ) prio = 0;
    820817                else prio = 1;
    821                 file.setPriority( prio );
     818                this.setPriority( prio );
    822819        }
    823820};
  • trunk/web/javascript/transmission.js

    r8519 r8524  
    5959                $('#prefs_cancel_button').bind('click', function(e){ tr.cancelPrefsClicked(e); return false; });
    6060                $('.inspector_tab').bind('click', function(e){ tr.inspectorTabClicked(e, this); });
     61                $('.file_wanted_control').live('click', function(e){ tr.fileWantedClicked(e, this); });
     62                $('.file_priority_control').live('click', function(e){ tr.filePriorityClicked(e, this); });
    6163                if (iPhone) {
    6264                        $('#torrent_inspector').bind('click', function(e){ tr.hideInspector(); });
     
    649651                this.updateVisibleFileLists();
    650652        },
    651        
     653
     654        fileWantedClicked: function(event, element){
     655                this.extractFileFromElement(element).fileWantedControlClicked(event);
     656        },
     657
     658        filePriorityClicked: function(event, element){
     659                this.extractFileFromElement(element).filePriorityControlClicked(event, element);
     660        },
     661
     662        extractFileFromElement: function(element) {
     663                var match = $(element).closest('.inspector_torrent_file_list_entry').attr('id').match(/^t(\d+)f(\d+)$/);
     664                var torrent_id = match[1];
     665                var file_id = match[2];
     666                var torrent = Torrent.lookup( this._torrents, torrent_id );
     667                return torrent._file_view[file_id];
     668        },
     669
    652670        toggleFilterClicked: function(event) {
    653671                if (this.isButtonEnabled(event))
     
    14011419                this.remote.changeFileCommand(command, torrent, file)
    14021420        },
    1403    
     1421
    14041422        hideiPhoneAddressbar: function(timeInSeconds) {
    14051423                if( iPhone ) {
Note: See TracChangeset for help on using the changeset viewer.