Ticket #1494: seed_ratio.patch

File seed_ratio.patch, 4.8 KB (added by imissmyjuno, 8 years ago)

#1494 patch

  • web/index.html

     
    200200
    201201                        <div class="inspector-page" id="inspector-page-info">
    202202                                <div class="prefs-section">
     203                                        <div class="row"><div class="key">Stop seeding at:</div><input class="value numberinput" id="inspector-info-ratio"></div>
    203204                                        <div class="title">Activity</div>
    204205                                        <div class="row"><div class="key">Have:</div><div class="value" id="inspector-info-have">&nbsp;</div></div>
    205206                                        <div class="row"><div class="key">Availability:</div><div class="value" id="inspector-info-availability">&nbsp;</div></div>
  • web/javascript/inspector.js

    function Inspector(controller) { 
    149149        setTextContent(e.state_lb, str);
    150150        stateString = str;
    151151
    152         //
     152        //  seed_ratio
     153        var $seed_ratio = $(e.seed_ratio);
     154
     155        if( torrents.length < 1 ) {
     156            $seed_ratio.val(none);
     157            $seed_ratio.prop('disabled', true);
     158        } else {
     159            var seed_ratio = torrents[0].getSeedRatioLimit(),
     160                str = seed_ratio.toPrecision(3);
     161
     162            // Make sure input is available for entry
     163            $seed_ratio.prop('disabled', false);
     164               
     165            for(i=0; t=torrents[i]; ++i) {
     166                if(seed_ratio != t.getSeedRatioLimit()) {
     167                    str = mixed;
     168                    $seed_ratio.prop('disabled', true);
     169                    break;
     170                }
     171            }
     172
     173            // Don't update input if user is amidst trying to change it
     174            if ( !$seed_ratio.is(':focus') ) {
     175                e.seed_ratio.value = str;
     176            }
     177        }
     178
    153179        //  have_lb
    154180        //
    155181
    function Inspector(controller) { 
    452478        setTextContent(e.foldername_lb, str);
    453479    },
    454480
     481    onChangeSeedRatio = function(e) {
     482        var torrents   = data.torrents,
     483            $this = $(this),
     484            seed_ratio = new Number($this.val());
     485
     486        // Update number format to double
     487        e.preventDefault();
     488        $this.val(seed_ratio.toPrecision(3))
     489
     490        data.controller.changeSeedRatio(
     491            torrents[0],
     492            seed_ratio
     493        );
     494    }
     495
    455496    /****
    456497    *****  FILES PAGE
    457498    ****/
    function Inspector(controller) { 
    775816        data.elements.trackers_list  = $('#inspector_trackers_list')[0];
    776817
    777818        data.elements.have_lb           = $('#inspector-info-have')[0];
     819        data.elements.seed_ratio        = $('#inspector-info-ratio')[0];
    778820        data.elements.availability_lb   = $('#inspector-info-availability')[0];
    779821        data.elements.downloaded_lb     = $('#inspector-info-downloaded')[0];
    780822        data.elements.uploaded_lb       = $('#inspector-info-uploaded')[0];
    function Inspector(controller) { 
    797839        updatePeersPage();
    798840        updateTrackersPage();
    799841        updateFilesPage();
     842
     843        $(data.elements.seed_ratio).bind('change', onChangeSeedRatio);
    800844    };
    801845
    802846    /****
  • web/javascript/remote.js

    TransmissionRemote.prototype = 
    136136                });
    137137        },
    138138
     139    changeSeedRatio: function(torrentId, seedRatio) {
     140        this.sendTorrentSetRequests(
     141           'torrent-set',
     142           [torrentId],
     143           {
     144               'seedRatioLimit': seedRatio
     145           }
     146       );
     147    },
     148
    139149        sendTorrentSetRequests: function(method, torrent_ids, args, callback, context) {
    140150                if (!args) args = { };
    141151                args['ids'] = torrent_ids;
  • web/javascript/transmission.js

    Transmission.prototype = 
    10391039                this.remote.changeFileCommand(torrentId, rowIndices, command);
    10401040        },
    10411041
     1042        changeSeedRatio: function(torrent, seedRatio) {
     1043                this.remote.changeSeedRatio(
     1044           torrent.getId(),
     1045           seedRatio
     1046        );
     1047
     1048        torrent.fields.seedRatioLimit = seedRatio;
     1049        },
     1050
    10421051        hideMobileAddressbar: function(delaySecs) {
    10431052                if (isMobileDevice && !scroll_timeout) {
    10441053                        var callback = $.proxy(this.doToolbarHide,this),
  • web/style/transmission/common.css

    ul.torrent_list { 
    343343  .prefs-section #alternative-speed-limits-title {
    344344    padding-left: 18px;
    345345    background: transparent url("images/blue-turtle.png") no-repeat; }
     346  .prefs-section .row > input {
     347      display: block;
     348  }
    346349
    347350/***
    348351****