jQuery: The Write Less, Do More JavaScript Library

Ticket #981: jquery.tablesorter.js.diff

File jquery.tablesorter.js.diff, 4.4 kB (added by s0undt3ch, 2 years ago)
  • jquery.tablesorter.js

    old new  
    1 /* 
     1/* vim: sts=4:ts=4:sw=4:noet:fenc=utf-8 
    22 * 
    33 * TableSorter - Client-side table sorting with ease! 
    44 * 
     
    3333        bind: true, 
    3434        addHeaderLink: false, 
    3535        lockedSortDir: false, 
     36        minToScroll: false, 
    3637        dateFormat: 'mm/dd/yyyy' /** us default, uk dd/mm/yyyy */ 
    3738    }; 
     39 
     40    var ieDivID = 0; 
     41    var enableScrollHasRun = false; 
    3842  
    3943    return this.each(function(){ 
    4044    /** add a class name for identifiying the table for companion plugins */ 
     
    5862        /** table object holder.*/ 
    5963        var oTable = this; 
    6064 
     65        function enableScroll() { 
     66            if ( defaults.minToScroll ) { 
     67                if ( jQuery.browser.mozilla ) { if (enableScrollHasRun) { return; }; mozScroll(); }; 
     68                if ( jQuery.browser.msie ) { ieScroll() }; 
     69            }; 
     70            enableScrollHasRun = true; 
     71        }; 
     72 
     73        function mozScroll() { 
     74            for (i=0; i < oTable.tBodies.length; i++) { 
     75                finalSetup = false; 
     76                var rows = oTable.tBodies[i].rows; 
     77                if (rows.length > defaults.minToScroll) { 
     78                    finalSetup = true; 
     79                    var lastChilds = jQuery(oTable.tBodies[i]).find('td:last-child'); 
     80                    jQuery(lastChilds).css('padding-right', '16px'); 
     81                    var rows_height = jQuery(rows).height(); 
     82                    if ( rows_height == 0 ) { rows_height = 32; }; 
     83                    var tbody_height = (rows_height * defaults.minToScroll) + 'px'; 
     84                    jQuery(oTable.tBodies[i]).css({ overflow: 'auto', overflowX: 'hidden', height: tbody_height }); 
     85                }; 
     86                if (finalSetup) { jQuery(oTable).css('border-collapse', 'separate'); }; 
     87            }; 
     88        }; 
     89 
     90        function ieScroll () { 
     91            var rows = 0; 
     92            for ( i=0; i < oTable.tBodies.length; i++) { 
     93                rows += oTable.tBodies[i].rows.length; 
     94            }; 
     95            var tDivID = 'scrollWrapper-'; 
     96            var scrollTop_ = 0; 
     97            if (rows > defaults.minToScroll) { 
     98                var createDiv = true; 
     99                var div_id = tDivID + ieDivID; 
     100                if ( jQuery(oTable).parent().is('div') && jQuery(oTable).parent().attr('id') == tDivID + (ieDivID-1) ) { 
     101                    createDiv = false; 
     102                    scrollTop_ = oTable.parentNode.scrollTop 
     103                }; 
     104                if ( createDiv ) { jQuery(oTable).wrap('<div id="' + div_id + '"></div>'); }; 
     105                jQuery(oTable).css({ 
     106                    margin: '0px', marginRight: '22px', top: '0px', left: '0px' 
     107                }); 
     108                jQuery(oTable.tHead).css('position', 'relative'); 
     109                jQuery(oTable.tHead.rows).css({ 
     110                    top: '0px', bottom: '0px', position: 'relative' 
     111                }); 
     112                var rows_height = jQuery(oTable.tBodies[0].rows).height(); 
     113                if ( rows_height == 0 ) { rows_height = 32; }; 
     114                var div_height = (rows_height * defaults.minToScroll) + 'px'; 
     115                jQuery('#'+div_id).css({ 
     116                    width: '100%', overflow: 'auto', overflowX: 'hidden', height: div_height 
     117                }); 
     118                oTable.parentNode.scrollTop = scrollTop_; 
     119                jQuery(oTable.tHead.rows).css('top', scrollTop_ + 'px'); 
     120                if ( createDiv ) { ieDivID++; }; 
     121                var div_width = jQuery('#'+div_id).width(); 
     122                var table_width = (div_width-18)*100/div_width; 
     123                jQuery(oTable).css('width', table_width+'%'); 
     124            }; 
     125            return; 
     126        }; 
     127 
     128 
    61129        if(defaults.stripeRowsOnStartUp && defaults.stripingRowClass) { 
    62130            jQuery.tableSorter.utils.stripeRows(oTable,defaults); 
    63131        } 
     
    132200 
    133201                        jQuery(".sorter",oCell).click(function(e) { 
    134202                            sortOnColumn( jQuery(this).parent(), ((defaults.lockedSortDir) ? defaults.lockedSortDir : jQuery(this).parent()[0].count++) % 2, jQuery(this).parent()[0].index ); 
     203                            enableScroll() 
    135204                            return false; 
    136205                        }); 
    137206                    } else { 
    138207                        jQuery(oCell).click(function(e) { 
    139208                            sortOnColumn( jQuery(this), ((defaults.lockedSortDir) ? defaults.lockedSortDir : jQuery(this)[0].count++) % 2, jQuery(this)[0].index ); 
     209                            enableScroll() 
    140210                            return false; 
    141211                        }); 
    142212                    } 
     
    254324                    jQuery.event.trigger("sortStop",[COLUMN_INDEX]); 
    255325                } 
    256326                COLUMN_LAST_INDEX = COLUMN_INDEX; 
     327                enableScroll(); 
    257328            } 
    258329        } 
    259330    });