Changeset 10050


Ignore:
Timestamp:
Jan 31, 2010, 2:42:48 AM (12 years ago)
Author:
kjg
Message:

(trunk web) Add a trackers tab patch from mjpieters, with minor style changes

Location:
trunk/web
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/images/buttons/Makefile.am

    r9787 r10050  
    88  info_files.png \
    99  info_general.png \
     10  info_trackers.png \
    1011  tab_backgrounds.png \
    1112  toolbar_buttons.png \
  • trunk/web/index.html

    r9936 r10050  
    6969                                <div class="inspector_tab selected" id="inspector_tab_info"><a href="#info"><img src="images/buttons/info_general.png" alt="Information"/></a></div>
    7070                                <div class="inspector_tab" id="inspector_tab_activity"><a href="#activity"><img src="images/buttons/info_activity.png" alt="Activity"/></a></div>
     71                                <div class="inspector_tab" id="inspector_tab_trackers"><a href="#trackers"><img src="images/buttons/info_trackers.png" alt="Trackers"/></a></div>
    7172                                <div class="inspector_tab" id="inspector_tab_files"><a href="#files"><img src="images/buttons/info_files.png" alt="Files"/></a></div>
    7273                        </div>
     
    173174                                </div><!-- class="inspector_group"-->
    174175                        </div><!-- id="inspector_tab_activity_container" -->
     176
     177                        <div style="display:none;" class="inspector_container" id="inspector_tab_trackers_container">
     178                                <div id="inspector_trackers_list">
     179                                </div>
     180                        </div><!-- id="inspector_tab_trackers_container" -->
    175181
    176182                        <div style="display:none;" class="inspector_container" id="inspector_tab_files_container">
  • trunk/web/javascript/torrent.js

    r9741 r10050  
    3333    'haveUnchecked', 'haveValid', 'leftUntilDone', 'metadataPercentComplete', 'peersConnected',
    3434    'peersGettingFromUs', 'peersSendingToUs', 'rateDownload', 'rateUpload',
    35     'recheckProgress', 'sizeWhenDone', 'status',
     35    'recheckProgress', 'sizeWhenDone', 'status', 'trackerStats',
    3636    'uploadedEver', 'uploadRatio', 'seedRatioLimit', 'seedRatioMode', 'downloadDir' ]
    3737
     
    5555                this._name          = data.name;
    5656                this._name_lc       = this._name.toLowerCase( );
     57                this._trackerStats  = this.buildTrackerStats(data.trackerStats);
    5758                this._file_model    = [ ];
    5859                this._file_view     = [ ];
     
    153154        },
    154155       
     156        buildTrackerStats: function(trackerStats) {
     157                result = [];
     158                for( var i=0, tracker; tracker=trackerStats[i]; ++i ) {
     159                        tier = result[tracker.tier - 1] || [];
     160                        tier[tier.length] = {
     161                                'host': tracker.host,
     162                                'seederCount': tracker.seederCount,
     163                                'leecherCount': tracker.leecherCount,
     164                                'downloadCount': tracker.downloadCount
     165                        };
     166                        result[tracker.tier - 1] = tier;
     167                }
     168                return result;
     169        },
     170
    155171        /*--------------------------------------------
    156172         *
     
    208224                }
    209225        },
     226        trackerStats: function() { return this._trackerStats; },
    210227        uploadSpeed: function() { return this._upload_speed; },
    211228        uploadTotal: function() { return this._upload_total; },
     
    334351                this._error_string            = data.errorString;
    335352                this._eta                     = data.eta;
     353                this._trackerStats            = this.buildTrackerStats(data.trackerStats);
    336354                this._state                   = data.status;
    337355                this._download_dir            = data.downloadDir;
  • trunk/web/javascript/transmission.js

    r9940 r10050  
    7676                this._torrent_list             = $('#torrent_list')[0];
    7777                this._inspector_file_list      = $('#inspector_file_list')[0];
     78                this._inspector_trackers_list  = $('#inspector_trackers_list')[0];
    7879                this._inspector_tab_files      = $('#inspector_tab_files')[0];
    7980                this._toolbar_buttons          = $('#torrent_global_menu ul li');
     
    683684       
    684685                this.updateVisibleFileLists();
     686                this.updateTrackersLists();
    685687        },
    686688
     
    10861088                        setInnerHTML( tab.error, na );
    10871089                        this.updateVisibleFileLists();
     1090                        this.updateTrackersLists();
    10881091                        $("#torrent_inspector_size, .inspector_row > div:contains('N/A')").css('color', '#666');
    10891092                        return;
     
    11601163                setInnerHTML( tab.error, error );
    11611164               
     1165                this.updateTrackersLists();
    11621166                $(".inspector_row > div:contains('N/A')").css('color', '#666');
    11631167                this.updateVisibleFileLists();
     
    11821186                        }
    11831187                }
     1188        },
     1189
     1190        updateTrackersLists: function() {
     1191                // By building up the HTML as as string, then have the browser
     1192                // turn this into a DOM tree, this is a fast operation.
     1193                var html = '';
     1194                var na = 'N/A';
     1195                var torrents = this.getSelectedTorrents( );
     1196                if( $(this._inspector_trackers_list).is(':visible') && torrents.length == 1 ) {
     1197                        for( var i=0, tier; tier=torrents[0]._trackerStats[i]; ++i ) {
     1198                                html += '<div class="inspector_group"><div class="inspector_group_label">';
     1199                                html += 'Tier ' + (i + 1) + '</div><ul class="tier_list">';
     1200                                for( var j=0, tracker; tracker=tier[j]; ++j ) {
     1201                                        var parity = ((j+1) % 2 == 0 ? 'even' : 'odd');
     1202                                        html += '<li class="inspector_tracker_entry ' + parity + '"><div class="tracker_host">'
     1203                                        html += tracker.host + '</div><table class="tracker_stats">';
     1204                                        html += '<tr><th>Seeders:</th><td>' + (tracker.seederCount > -1 ? tracker.seederCount : na) + '</td></tr>';
     1205                                        html += '<tr><th>Leechers:</th><td>' + (tracker.leecherCount > -1 ? tracker.leecherCount : na) + '</td></tr>';
     1206                                        html += '<tr><th>Downloads:</th><td>' + (tracker.downloadCount > -1 ? tracker.downloadCount : na)+ '</td></tr>';
     1207                                        html += '</table></li>';
     1208                                }
     1209                                html += '</ul></div>';
     1210                        }
     1211                }
     1212                setInnerHTML(this._inspector_trackers_list, html);
    11841213        },
    11851214
  • trunk/web/stylesheets/common.css

    r9808 r10050  
    550550}
    551551div#inspector_tabs {
    552         width: 189px;
     552        width: 243px;
    553553        margin: 0 auto;
    554554        padding-top: 10px;
     
    592592        padding-top: 10px;
    593593        width: 230px; /* inspector_container_width==330 - inspector_label_width==100 */
     594}
     595
     596/* Trackers Inspector Tab */
     597#inspector_trackers_list {
     598        padding: 0 0 0 0;
     599        margin: 0 0 0 0;
     600        text-align: left;
     601        cursor: default;
     602        overflow: hidden;
     603}
     604
     605#inspector_trackers_list > div.inspector_group {
     606        padding-bottom: 0;
     607        margin-bottom: 0;
     608}
     609
     610ul.tier_list {
     611        width: 100%;
     612        margin: 10px 0 0 0;
     613        padding-left: 0px;
     614        text-align: left;
     615        display: block;
     616        cursor: default;
     617        list-style-type: none;
     618        list-style: none;
     619        list-style-image: none;
     620        clear: both;
     621}
     622.tier_list table{
     623  margin-left: 15px;
     624  color: #666;
     625}
     626.tier_list th{
     627  text-align: right;
     628}
     629
     630li.inspector_tracker_entry {
     631        padding: 3px 0 3px 2px;
     632        display: block;
     633}
     634
     635li.inspector_tracker_entry.odd {
     636        background-color: #EEEEEE;
     637}
     638div.tracker_host {
     639        font-size: 1.2em;
     640        font-weight: bold;
     641        color: #222;
    594642}
    595643
  • trunk/web/stylesheets/iphone.css

    r9983 r10050  
    591591}
    592592div#inspector_tabs {
    593         width: 189px;
     593        width: 243px;
    594594        margin: 0 auto;
    595595        padding-top: 10px;
     
    633633        padding-top: 10px;
    634634        width: 230px; /* inspector_container_width==330 - inspector_label_width==100 */
     635}
     636
     637/* Trackers Inspector Tab */
     638#inspector_trackers_list {
     639        padding: 0 0 0 0;
     640        margin: 0 0 0 0;
     641        text-align: left;
     642        cursor: default;
     643        overflow: hidden;
     644}
     645#inspector_trackers_list > div.inspector_group {
     646        padding-bottom: 0;
     647        margin-bottom: 0;
     648}
     649ul.tier_list {
     650        width: 100%;
     651        margin: 10px 0 0 0;
     652        padding-left: 0px;
     653        text-align: left;
     654        display: block;
     655        cursor: default;
     656        list-style-type: none;
     657        list-style: none;
     658        list-style-image: none;
     659        clear: both;
     660}
     661.tier_list table{
     662  margin-left: 15px;
     663  color: #666;
     664}
     665.tier_list th{
     666  text-align: right;
     667}
     668li.inspector_tracker_entry {
     669        padding: 3px 0 3px 2px;
     670        display: block;
     671}
     672li.inspector_tracker_entry.odd {
     673        background-color: #EEEEEE;
     674}
     675div.tracker_host {
     676        font-size: 1.2em;
     677        font-weight: bold;
     678        color: #222;
    635679}
    636680
Note: See TracChangeset for help on using the changeset viewer.