2 | | {{{ |
3 | | #!diff |
4 | | --- jquery.tablesorter.js.svn 2007-02-20 04:34:25.000000000 +0000 |
5 | | +++ jquery.tablesorter.js 2007-02-20 04:48:39.000000000 +0000 |
6 | | @@ -1,4 +1,4 @@ |
7 | | -/* |
8 | | +/* vim: sts=4:ts=4:sw=4:noet:fenc=utf-8 |
9 | | * |
10 | | * TableSorter - Client-side table sorting with ease! |
11 | | * |
12 | | @@ -33,8 +33,12 @@ |
13 | | bind: true, |
14 | | addHeaderLink: false, |
15 | | lockedSortDir: false, |
16 | | + minToScroll: false, |
17 | | dateFormat: 'mm/dd/yyyy' /** us default, uk dd/mm/yyyy */ |
18 | | }; |
19 | | + |
20 | | + var ieDivID = 0; |
21 | | + var enableScrollHasRun = false; |
22 | | |
23 | | return this.each(function(){ |
24 | | /** add a class name for identifiying the table for companion plugins */ |
25 | | @@ -58,6 +62,70 @@ |
26 | | /** table object holder.*/ |
27 | | var oTable = this; |
28 | | |
29 | | + function enableScroll() { |
30 | | + if ( defaults.minToScroll ) { |
31 | | + if ( jQuery.browser.mozilla ) { if (enableScrollHasRun) { return; }; mozScroll(); }; |
32 | | + if ( jQuery.browser.msie ) { ieScroll() }; |
33 | | + }; |
34 | | + enableScrollHasRun = true; |
35 | | + }; |
36 | | + |
37 | | + function mozScroll() { |
38 | | + for (i=0; i < oTable.tBodies.length; i++) { |
39 | | + finalSetup = false; |
40 | | + var rows = oTable.tBodies[i].rows; |
41 | | + if (rows.length > defaults.minToScroll) { |
42 | | + finalSetup = true; |
43 | | + var lastChilds = jQuery(oTable.tBodies[i]).find('td:last-child'); |
44 | | + jQuery(lastChilds).css('padding-right', '16px'); |
45 | | + var rows_height = jQuery(rows).height(); |
46 | | + if ( rows_height == 0 ) { rows_height = 32; }; |
47 | | + var tbody_height = (rows_height * defaults.minToScroll) + 'px'; |
48 | | + jQuery(oTable.tBodies[i]).css({ overflow: 'auto', overflowX: 'hidden', height: tbody_height }); |
49 | | + }; |
50 | | + if (finalSetup) { jQuery(oTable).css('border-collapse', 'separate'); }; |
51 | | + }; |
52 | | + }; |
53 | | + |
54 | | + function ieScroll () { |
55 | | + var rows = 0; |
56 | | + for ( i=0; i < oTable.tBodies.length; i++) { |
57 | | + rows += oTable.tBodies[i].rows.length; |
58 | | + }; |
59 | | + var tDivID = 'scrollWrapper-'; |
60 | | + var scrollTop_ = 0; |
61 | | + if (rows > defaults.minToScroll) { |
62 | | + var createDiv = true; |
63 | | + var div_id = tDivID + ieDivID; |
64 | | + if ( jQuery(oTable).parent().is('div') && jQuery(oTable).parent().attr('id') == tDivID + (ieDivID-1) ) { |
65 | | + createDiv = false; |
66 | | + scrollTop_ = oTable.parentNode.scrollTop |
67 | | + }; |
68 | | + if ( createDiv ) { jQuery(oTable).wrap('<div id="' + div_id + '"></div>'); }; |
69 | | + jQuery(oTable).css({ |
70 | | + margin: '0px', marginRight: '22px', top: '0px', left: '0px' |
71 | | + }); |
72 | | + jQuery(oTable.tHead).css('position', 'relative'); |
73 | | + jQuery(oTable.tHead.rows).css({ |
74 | | + top: '0px', bottom: '0px', position: 'relative' |
75 | | + }); |
76 | | + var rows_height = jQuery(oTable.tBodies[0].rows).height(); |
77 | | + if ( rows_height == 0 ) { rows_height = 32; }; |
78 | | + var div_height = (rows_height * defaults.minToScroll) + 'px'; |
79 | | + jQuery('#'+div_id).css({ |
80 | | + width: '100%', overflow: 'auto', overflowX: 'hidden', height: div_height |
81 | | + }); |
82 | | + oTable.parentNode.scrollTop = scrollTop_; |
83 | | + jQuery(oTable.tHead.rows).css('top', scrollTop_ + 'px'); |
84 | | + if ( createDiv ) { ieDivID++; }; |
85 | | + var div_width = jQuery('#'+div_id).width(); |
86 | | + var table_width = (div_width-18)*100/div_width; |
87 | | + jQuery(oTable).css('width', table_width+'%'); |
88 | | + }; |
89 | | + return; |
90 | | + }; |
91 | | + |
92 | | + |
93 | | if(defaults.stripeRowsOnStartUp && defaults.stripingRowClass) { |
94 | | jQuery.tableSorter.utils.stripeRows(oTable,defaults); |
95 | | } |
96 | | @@ -132,11 +200,13 @@ |
97 | | |
98 | | jQuery(".sorter",oCell).click(function(e) { |
99 | | sortOnColumn( jQuery(this).parent(), ((defaults.lockedSortDir) ? defaults.lockedSortDir : jQuery(this).parent()+ enableScroll() |
100 | | return false; |
101 | | }); |
102 | | } else { |
103 | | jQuery(oCell).click(function(e) { |
104 | | sortOnColumn( jQuery(this), ((defaults.lockedSortDir) ? defaults.lockedSortDir : jQuery(this)[0].count++) % 2, |
105 | | + enableScroll() |
106 | | return false; |
107 | | }); |
108 | | } |
109 | | @@ -254,6 +324,7 @@ |
110 | | jQuery.event.trigger("sortStop",[COLUMN_INDEX]); |
111 | | } |
112 | | COLUMN_LAST_INDEX = COLUMN_INDEX; |
113 | | + enableScroll(); |
114 | | } |
115 | | } |
116 | | }); |
117 | | }}} |