Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
* TableSorter for MediaWiki
|
|
|
|
|
*
|
|
|
|
|
* Written 2011 Leo Koppelkamm
|
|
|
|
|
* Based on tablesorter.com plugin, written (c) 2007 Christian Bach.
|
|
|
|
|
*
|
|
|
|
|
* Dual licensed under the MIT and GPL licenses:
|
|
|
|
|
* http://www.opensource.org/licenses/mit-license.php
|
|
|
|
|
* http://www.gnu.org/licenses/gpl.html
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @description Create a sortable table with multi-column sorting capabilitys
|
|
|
|
|
*
|
|
|
|
|
* @example $( 'table' ).tablesorter();
|
|
|
|
|
* @desc Create a simple tablesorter interface.
|
|
|
|
|
*
|
|
|
|
|
* @option String cssHeader ( optional ) A string of the class name to be appended
|
|
|
|
|
* to sortable tr elements in the thead of the table. Default value:
|
|
|
|
|
* "header"
|
|
|
|
|
*
|
|
|
|
|
* @option String cssAsc ( optional ) A string of the class name to be appended to
|
|
|
|
|
* sortable tr elements in the thead on a ascending sort. Default value:
|
|
|
|
|
* "headerSortUp"
|
|
|
|
|
*
|
|
|
|
|
* @option String cssDesc ( optional ) A string of the class name to be appended
|
|
|
|
|
* to sortable tr elements in the thead on a descending sort. Default
|
|
|
|
|
* value: "headerSortDown"
|
|
|
|
|
*
|
|
|
|
|
* @option String sortInitialOrder ( optional ) A string of the inital sorting
|
|
|
|
|
* order can be asc or desc. Default value: "asc"
|
|
|
|
|
*
|
|
|
|
|
* @option String sortMultisortKey ( optional ) A string of the multi-column sort
|
|
|
|
|
* key. Default value: "shiftKey"
|
|
|
|
|
*
|
|
|
|
|
* @option Boolean sortLocaleCompare ( optional ) Boolean flag indicating whatever
|
|
|
|
|
* to use String.localeCampare method or not. Set to false.
|
|
|
|
|
*
|
|
|
|
|
* @option Boolean cancelSelection ( optional ) Boolean flag indicating if
|
|
|
|
|
* tablesorter should cancel selection of the table headers text.
|
|
|
|
|
* Default value: true
|
|
|
|
|
*
|
|
|
|
|
* @option Boolean debug ( optional ) Boolean flag indicating if tablesorter
|
|
|
|
|
* should display debuging information usefull for development.
|
|
|
|
|
*
|
|
|
|
|
* @type jQuery
|
|
|
|
|
*
|
|
|
|
|
* @name tablesorter
|
|
|
|
|
*
|
|
|
|
|
* @cat Plugins/Tablesorter
|
|
|
|
|
*
|
|
|
|
|
* @author Christian Bach/christian.bach@polyester.se
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
( function ($) {
|
|
|
|
|
$.extend( {
|
|
|
|
|
tablesorter: new
|
|
|
|
|
|
|
|
|
|
function () {
|
|
|
|
|
|
|
|
|
|
var parsers = [];
|
|
|
|
|
|
|
|
|
|
this.defaults = {
|
|
|
|
|
cssHeader: "headerSort",
|
|
|
|
|
cssAsc: "headerSortUp",
|
|
|
|
|
cssDesc: "headerSortDown",
|
|
|
|
|
cssChildRow: "expand-child",
|
|
|
|
|
sortInitialOrder: "asc",
|
|
|
|
|
sortMultiSortKey: "shiftKey",
|
|
|
|
|
sortLocaleCompare: false,
|
|
|
|
|
parsers: {},
|
|
|
|
|
widgets: [],
|
|
|
|
|
headers: {},
|
|
|
|
|
cancelSelection: true,
|
|
|
|
|
sortList: [],
|
|
|
|
|
headerList: [],
|
|
|
|
|
selectorHeaders: 'thead tr:eq(0) th',
|
|
|
|
|
debug: false
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* debuging utils */
|
|
|
|
|
//
|
|
|
|
|
// function benchmark( s, d ) {
|
2011-04-18 19:20:02 +00:00
|
|
|
// console.log( s + " " + ( new Date().getTime() - d.getTime() ) + "ms" );
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// this.benchmark = benchmark;
|
|
|
|
|
//
|
|
|
|
|
/* parsers utils */
|
|
|
|
|
|
|
|
|
|
function buildParserCache( table, $headers ) {
|
2011-04-15 08:23:29 +00:00
|
|
|
var rows = table.tBodies[0].rows,
|
|
|
|
|
sortType;
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
|
|
|
|
|
if ( rows[0] ) {
|
|
|
|
|
|
|
|
|
|
var list = [],
|
|
|
|
|
cells = rows[0].cells,
|
|
|
|
|
l = cells.length;
|
|
|
|
|
|
|
|
|
|
for ( var i = 0; i < l; i++ ) {
|
2011-06-22 20:40:00 +00:00
|
|
|
var p = false;
|
2011-04-15 08:23:29 +00:00
|
|
|
sortType = $headers.eq(i).data('sort-type');
|
2011-04-15 08:31:05 +00:00
|
|
|
if ( typeof sortType != 'undefined' ) {
|
|
|
|
|
p = getParserById( sortType );
|
2011-04-15 08:23:29 +00:00
|
|
|
}
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
|
2011-04-15 08:23:29 +00:00
|
|
|
if (p === false) {
|
2011-05-02 11:31:45 +00:00
|
|
|
p = detectParserForColumn( table, rows, i );
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
// if ( table.config.debug ) {
|
|
|
|
|
// console.log( "column:" + i + " parser:" + p.id + "\n" );
|
|
|
|
|
// }
|
|
|
|
|
list.push(p);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
2011-05-02 11:31:45 +00:00
|
|
|
function detectParserForColumn( table, rows, cellIndex ) {
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
var l = parsers.length,
|
2011-05-02 11:31:45 +00:00
|
|
|
nodeValue,
|
|
|
|
|
// Start with 1 because 0 is the fallback parser
|
|
|
|
|
i = 1,
|
|
|
|
|
rowIndex = 0,
|
|
|
|
|
concurrent = 0,
|
|
|
|
|
needed = (rows.length > 4 ) ? 5 : rows.length;
|
|
|
|
|
while( i<l ) {
|
|
|
|
|
nodeValue = getTextFromRowAndCellIndex( rows, rowIndex, cellIndex );
|
|
|
|
|
if ( nodeValue != '') {
|
|
|
|
|
if ( parsers[i].is( nodeValue, table ) ) {
|
|
|
|
|
concurrent++;
|
|
|
|
|
rowIndex++;
|
|
|
|
|
if (concurrent >= needed ) {
|
|
|
|
|
// Confirmed the parser for multiple cells, let's return it
|
|
|
|
|
return parsers[i];
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// Check next parser, reset rows
|
|
|
|
|
i++;
|
|
|
|
|
rowIndex = 0;
|
2011-05-03 11:44:35 +00:00
|
|
|
concurrent = 0;
|
2011-05-02 11:31:45 +00:00
|
|
|
}
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
} else {
|
2011-05-02 11:31:45 +00:00
|
|
|
// Empty cell
|
|
|
|
|
rowIndex++;
|
|
|
|
|
if ( rowIndex > rows.length ) {
|
|
|
|
|
rowIndex = 0;
|
|
|
|
|
i++;
|
|
|
|
|
}
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
}
|
2011-05-02 11:31:45 +00:00
|
|
|
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
// 0 is always the generic parser ( text )
|
|
|
|
|
return parsers[0];
|
|
|
|
|
}
|
2011-05-02 11:31:45 +00:00
|
|
|
|
|
|
|
|
function getTextFromRowAndCellIndex( rows, rowIndex, cellIndex ) {
|
|
|
|
|
if ( rows[rowIndex] && rows[rowIndex].cells[cellIndex] ) {
|
|
|
|
|
return $.trim( getElementText( rows[rowIndex].cells[cellIndex] ) );
|
|
|
|
|
} else {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
2011-05-02 11:31:45 +00:00
|
|
|
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
function getParserById( name ) {
|
|
|
|
|
var l = parsers.length;
|
|
|
|
|
for ( var i = 0; i < l; i++ ) {
|
|
|
|
|
if ( parsers[i].id.toLowerCase() == name.toLowerCase() ) {
|
|
|
|
|
return parsers[i];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* utils */
|
|
|
|
|
|
|
|
|
|
function buildCache( table ) {
|
|
|
|
|
// if ( table.config.debug ) {
|
|
|
|
|
// var cacheTime = new Date();
|
|
|
|
|
// }
|
|
|
|
|
var totalRows = ( table.tBodies[0] && table.tBodies[0].rows.length ) || 0,
|
|
|
|
|
totalCells = ( table.tBodies[0].rows[0] && table.tBodies[0].rows[0].cells.length ) || 0,
|
|
|
|
|
parsers = table.config.parsers,
|
|
|
|
|
cache = {
|
|
|
|
|
row: [],
|
|
|
|
|
normalized: []
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for ( var i = 0; i < totalRows; ++i ) {
|
|
|
|
|
|
|
|
|
|
// Add the table data to main data array
|
|
|
|
|
var c = $( table.tBodies[0].rows[i] ),
|
|
|
|
|
cols = [];
|
|
|
|
|
|
|
|
|
|
// if this is a child row, add it to the last row's children and
|
|
|
|
|
// continue to the next row
|
|
|
|
|
if ( c.hasClass( table.config.cssChildRow ) ) {
|
|
|
|
|
cache.row[cache.row.length - 1] = cache.row[cache.row.length - 1].add(c);
|
|
|
|
|
// go to the next for loop
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cache.row.push(c);
|
|
|
|
|
|
|
|
|
|
for ( var j = 0; j < totalCells; ++j ) {
|
2011-04-15 08:23:29 +00:00
|
|
|
cols.push( parsers[j].format( getElementText( c[0].cells[j] ), table, c[0].cells[j] ) );
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cols.push( cache.normalized.length ); // add position for rowCache
|
|
|
|
|
cache.normalized.push( cols );
|
|
|
|
|
cols = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// if ( table.config.debug ) {
|
|
|
|
|
// benchmark( "Building cache for " + totalRows + " rows:", cacheTime );
|
|
|
|
|
// }
|
|
|
|
|
return cache;
|
|
|
|
|
}
|
|
|
|
|
|
2011-04-15 08:23:29 +00:00
|
|
|
function getElementText( node ) {
|
2011-04-25 13:15:26 +00:00
|
|
|
if ( node.hasAttribute && node.hasAttribute( "data-sort-value" ) ) {
|
|
|
|
|
return node.getAttribute( "data-sort-value" );
|
2011-04-15 08:23:29 +00:00
|
|
|
} else {
|
2011-04-25 13:18:09 +00:00
|
|
|
return $( node ).text();
|
2011-04-15 08:23:29 +00:00
|
|
|
}
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function appendToTable( table, cache ) {
|
|
|
|
|
// if ( table.config.debug ) {
|
2011-04-18 19:20:02 +00:00
|
|
|
// var appendTime = new Date()
|
|
|
|
|
// }
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
var c = cache,
|
|
|
|
|
r = c.row,
|
|
|
|
|
n = c.normalized,
|
|
|
|
|
totalRows = n.length,
|
|
|
|
|
checkCell = (n[0].length - 1),
|
|
|
|
|
tableBody = $( table.tBodies[0] ),
|
|
|
|
|
fragment = document.createDocumentFragment();
|
|
|
|
|
|
|
|
|
|
for ( var i = 0; i < totalRows; i++ ) {
|
|
|
|
|
var pos = n[i][checkCell];
|
|
|
|
|
|
|
|
|
|
var l = r[pos].length;
|
|
|
|
|
|
|
|
|
|
for ( var j = 0; j < l; j++ ) {
|
|
|
|
|
fragment.appendChild( r[pos][j] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
tableBody[0].appendChild( fragment );
|
|
|
|
|
// if ( table.config.debug ) {
|
2011-04-18 19:20:02 +00:00
|
|
|
// benchmark( "Rebuilt table:", appendTime );
|
|
|
|
|
// }
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
|
2011-05-03 11:44:35 +00:00
|
|
|
function buildHeaders( table, msg ) {
|
2011-04-18 12:54:28 +00:00
|
|
|
var maxSeen = 0;
|
|
|
|
|
var longest;
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
// if ( table.config.debug ) {
|
|
|
|
|
// var time = new Date();
|
|
|
|
|
// }
|
|
|
|
|
//var header_index = computeTableHeaderCellIndexes( table );
|
|
|
|
|
var realCellIndex = 0;
|
2011-06-22 20:40:00 +00:00
|
|
|
var $tableHeaders = $( "thead:eq(0) tr", table );
|
2011-04-18 12:54:28 +00:00
|
|
|
if ( $tableHeaders.length > 1 ) {
|
|
|
|
|
$tableHeaders.each(function() {
|
|
|
|
|
if (this.cells.length > maxSeen) {
|
|
|
|
|
maxSeen = this.cells.length;
|
|
|
|
|
longest = this;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
$tableHeaders = $( longest );
|
|
|
|
|
}
|
|
|
|
|
$tableHeaders = $tableHeaders.find('th').each( function ( index ) {
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
//var normalIndex = allCells.index( this );
|
|
|
|
|
//var realCellIndex = 0;
|
|
|
|
|
this.column = realCellIndex;
|
|
|
|
|
|
|
|
|
|
var colspan = this.colspan;
|
2011-04-15 08:23:29 +00:00
|
|
|
colspan = colspan ? parseInt( colspan, 10 ) : 1;
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
realCellIndex += colspan;
|
|
|
|
|
|
|
|
|
|
//this.column = header_index[this.parentNode.rowIndex + "-" + this.cellIndex];
|
|
|
|
|
this.order = 0;
|
|
|
|
|
this.count = 0;
|
|
|
|
|
|
|
|
|
|
if ( $( this ).is( '.unsortable' ) ) this.sortDisabled = true;
|
|
|
|
|
|
|
|
|
|
if ( !this.sortDisabled ) {
|
2011-05-03 11:44:35 +00:00
|
|
|
var $th = $( this ).addClass( table.config.cssHeader ).attr( 'title', msg[1] );
|
|
|
|
|
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
//if ( table.config.onRenderHeader ) table.config.onRenderHeader.apply($th);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// add cell to headerList
|
|
|
|
|
table.config.headerList[index] = this;
|
|
|
|
|
} );
|
|
|
|
|
|
|
|
|
|
// if ( table.config.debug ) {
|
|
|
|
|
// benchmark( "Built headers:", time );
|
|
|
|
|
// console.log( $tableHeaders );
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
return $tableHeaders;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isValueInArray( v, a ) {
|
|
|
|
|
var l = a.length;
|
|
|
|
|
for ( var i = 0; i < l; i++ ) {
|
|
|
|
|
if ( a[i][0] == v ) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2011-05-03 11:44:35 +00:00
|
|
|
function setHeadersCss( table, $headers, list, css, msg ) {
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
// remove all header information
|
|
|
|
|
$headers.removeClass( css[0] ).removeClass( css[1] );
|
|
|
|
|
|
|
|
|
|
var h = [];
|
|
|
|
|
$headers.each( function ( offset ) {
|
|
|
|
|
if ( !this.sortDisabled ) {
|
|
|
|
|
h[this.column] = $( this );
|
|
|
|
|
}
|
|
|
|
|
} );
|
|
|
|
|
|
|
|
|
|
var l = list.length;
|
|
|
|
|
for ( var i = 0; i < l; i++ ) {
|
2011-05-03 11:44:35 +00:00
|
|
|
h[ list[i][0] ].addClass( css[ list[i][1] ] ).attr( 'title', msg[ list[i][1] ] );
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2011-04-18 19:20:02 +00:00
|
|
|
function checkSorting (array1, array2, sortList) {
|
|
|
|
|
var col, fn, ret;
|
|
|
|
|
for ( var i = 0, len = sortList.length; i < len; i++ ) {
|
|
|
|
|
col = sortList[i][0];
|
|
|
|
|
fn = ( sortList[i][1] ) ? sortTextDesc : sortText;
|
|
|
|
|
ret = fn.call( this, array1[col], array2[col] );
|
|
|
|
|
if ( ret !== 0 ) {
|
|
|
|
|
return ret;
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
}
|
2011-04-18 19:20:02 +00:00
|
|
|
return ret;
|
|
|
|
|
}
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
|
2011-04-18 19:20:02 +00:00
|
|
|
// Merge sort algorithm
|
|
|
|
|
// Based on http://en.literateprograms.org/Merge_sort_(JavaScript)
|
|
|
|
|
function mergeSortHelper(array, begin, beginRight, end, sortList) {
|
|
|
|
|
for (; begin < beginRight; ++begin) {
|
|
|
|
|
if (checkSorting( array[begin], array[beginRight], sortList )) {
|
|
|
|
|
var v = array[begin];
|
|
|
|
|
array[begin] = array[beginRight];
|
|
|
|
|
var begin2 = beginRight;
|
|
|
|
|
while ( begin2 + 1 < end && checkSorting( v, array[begin2 + 1], sortList ) ) {
|
|
|
|
|
var tmp = array[begin2];
|
|
|
|
|
array[begin2] = array[begin2 + 1];
|
|
|
|
|
array[begin2 + 1] = tmp;
|
|
|
|
|
++begin2;
|
|
|
|
|
}
|
|
|
|
|
array[begin2] = v;
|
|
|
|
|
}
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2011-04-18 19:20:02 +00:00
|
|
|
function mergeSort(array, begin, end, sortList) {
|
|
|
|
|
var size = end - begin;
|
|
|
|
|
if (size < 2) return;
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
|
2011-04-18 19:20:02 +00:00
|
|
|
var beginRight = begin + Math.floor(size / 2);
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
|
2011-04-18 19:20:02 +00:00
|
|
|
mergeSort(array, begin, beginRight, sortList);
|
|
|
|
|
mergeSort(array, beginRight, end, sortList);
|
|
|
|
|
mergeSortHelper(array, begin, beginRight, end, sortList);
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
|
2011-04-18 19:20:02 +00:00
|
|
|
function multisort( table, sortList, cache ) {
|
|
|
|
|
//var sortTime = new Date();
|
|
|
|
|
|
|
|
|
|
var i = sortList.length;
|
2011-06-22 21:54:18 +00:00
|
|
|
mergeSort(cache.normalized, 0, cache.normalized.length, sortList);
|
2011-04-18 19:20:02 +00:00
|
|
|
|
|
|
|
|
//benchmark( "Sorting in dir " + order + " time:", sortTime );
|
|
|
|
|
|
|
|
|
|
return cache;
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function sortText( a, b ) {
|
2011-04-18 19:20:02 +00:00
|
|
|
return ((a < b) ? false : ((a > b) ? true : 0));
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function sortTextDesc( a, b ) {
|
2011-04-18 19:20:02 +00:00
|
|
|
return ((b < a) ? false : ((b > a) ? true : 0));
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function buildTransformTable() {
|
|
|
|
|
var digits = '0123456789,.'.split('');
|
2011-05-02 11:55:45 +00:00
|
|
|
var separatorTransformTable = mw.config.get( 'wgSeparatorTransformTable' );
|
|
|
|
|
var digitTransformTable = mw.config.get( 'wgDigitTransformTable' );
|
|
|
|
|
if ( separatorTransformTable == null || ( separatorTransformTable[0] == '' && digitTransformTable[2] == '' ) ) {
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
ts.transformTable = false;
|
|
|
|
|
} else {
|
|
|
|
|
ts.transformTable = {};
|
|
|
|
|
|
|
|
|
|
// Unpack the transform table
|
2011-05-02 11:55:45 +00:00
|
|
|
var ascii = separatorTransformTable[0].split( "\t" ).concat( digitTransformTable[0].split( "\t" ) );
|
|
|
|
|
var localised = separatorTransformTable[1].split( "\t" ).concat( digitTransformTable[1].split( "\t" ) );
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
|
|
|
|
|
// Construct regex for number identification
|
|
|
|
|
for ( var i = 0; i < ascii.length; i++ ) {
|
|
|
|
|
ts.transformTable[localised[i]] = ascii[i];
|
|
|
|
|
digits.push( $.escapeRE( localised[i] ) );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var digitClass = '[' + digits.join( '', digits ) + ']';
|
|
|
|
|
|
|
|
|
|
// We allow a trailing percent sign, which we just strip. This works fine
|
|
|
|
|
// if percents and regular numbers aren't being mixed.
|
|
|
|
|
ts.numberRegex = new RegExp("^(" + "[-+\u2212]?[0-9][0-9,]*(\\.[0-9,]*)?(E[-+\u2212]?[0-9][0-9,]*)?" + // Fortran-style scientific
|
2011-06-22 23:22:12 +00:00
|
|
|
"|" + "[-+\u2212]?" + digitClass + "+[\\s\\xa0]*%?" + // Generic localised
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
")$", "i");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function buildDateTable() {
|
|
|
|
|
var r = '';
|
|
|
|
|
ts.monthNames = [
|
|
|
|
|
[],
|
|
|
|
|
[]
|
|
|
|
|
];
|
|
|
|
|
ts.dateRegex = [];
|
|
|
|
|
|
2011-05-02 11:55:45 +00:00
|
|
|
for ( var i = 1; i < 13; i++ ) {
|
|
|
|
|
ts.monthNames[0][i] = mw.config.get( 'wgMonthNames' )[i].toLowerCase();
|
|
|
|
|
ts.monthNames[1][i] = mw.config.get( 'wgMonthNamesShort' )[i].toLowerCase().replace( '.', '' );
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
r += $.escapeRE( ts.monthNames[0][i] ) + '|';
|
|
|
|
|
r += $.escapeRE( ts.monthNames[1][i] ) + '|';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Remove trailing pipe
|
|
|
|
|
r = r.slice( 0, -1 );
|
|
|
|
|
|
|
|
|
|
//Build RegEx
|
|
|
|
|
//Any date formated with . , ' - or /
|
2011-06-22 21:54:18 +00:00
|
|
|
ts.dateRegex[0] = new RegExp(/^\s*\d{1,2}[\,\.\-\/'\s]{1,2}\d{1,2}[\,\.\-\/'\s]{1,2}\d{2,4}\s*?/i);
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
|
|
|
|
|
//Written Month name, dmy
|
|
|
|
|
ts.dateRegex[1] = new RegExp('^\\s*\\d{1,2}[\\,\\.\\-\\/\'\\s]*(' + r + ')' + '[\\,\\.\\-\\/\'\\s]*\\d{2,4}\\s*$', 'i');
|
|
|
|
|
|
|
|
|
|
//Written Month name, mdy
|
|
|
|
|
ts.dateRegex[2] = new RegExp('^\\s*(' + r + ')' + '[\\,\\.\\-\\/\'\\s]*\\d{1,2}[\\,\\.\\-\\/\'\\s]*\\d{2,4}\\s*$', 'i');
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2011-04-18 12:54:28 +00:00
|
|
|
function explodeRowspans( $table ) {
|
|
|
|
|
// Split multi row cells into multiple cells with the same content
|
|
|
|
|
$table.find( '[rowspan]' ).each(function() {
|
|
|
|
|
var rowSpan = this.rowSpan;
|
|
|
|
|
this.rowSpan = 1;
|
|
|
|
|
var cell = $( this );
|
|
|
|
|
var next = cell.parent().nextAll();
|
|
|
|
|
for ( var i = 0; i < rowSpan - 1; i++ ) {
|
2011-06-23 08:31:00 +00:00
|
|
|
var td = next.eq( i ).find( 'td' );
|
|
|
|
|
if ( !td.length ) {
|
|
|
|
|
next.eq( i ).append( cell.clone() );
|
|
|
|
|
} else if ( this.cellIndex == 0 ) {
|
|
|
|
|
td.eq( this.cellIndex ).before( cell.clone() );
|
|
|
|
|
} else {
|
|
|
|
|
td.eq( this.cellIndex - 1 ).after( cell.clone() );
|
|
|
|
|
}
|
2011-04-18 19:20:02 +00:00
|
|
|
}
|
2011-04-18 12:54:28 +00:00
|
|
|
});
|
2011-04-18 19:20:02 +00:00
|
|
|
}
|
2011-04-18 12:54:28 +00:00
|
|
|
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
function buildCollationTable() {
|
2011-04-18 12:54:28 +00:00
|
|
|
ts.collationTable = mw.config.get('tableSorterCollation');
|
2011-06-22 23:19:00 +00:00
|
|
|
ts.collationRegex = null;
|
|
|
|
|
if ( ts.collationTable ) {
|
|
|
|
|
var keys = [];
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
|
|
|
|
|
//Build array of key names
|
2011-04-18 12:54:28 +00:00
|
|
|
for ( var key in ts.collationTable ) {
|
|
|
|
|
if ( ts.collationTable.hasOwnProperty(key) ) { //to be safe
|
2011-06-22 23:19:00 +00:00
|
|
|
keys.push(key);
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
}
|
2011-06-22 23:19:00 +00:00
|
|
|
if (keys.length) {
|
2011-06-23 07:39:56 +00:00
|
|
|
ts.collationRegex = new RegExp( '[' + keys.join('') + ']', 'ig' );
|
2011-06-22 23:19:00 +00:00
|
|
|
}
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function cacheRegexs() {
|
|
|
|
|
ts.rgx = {
|
|
|
|
|
IPAddress: [new RegExp(/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/)],
|
|
|
|
|
currency: [new RegExp(/^[£$€?.]/), new RegExp(/[£$€]/g)],
|
|
|
|
|
url: [new RegExp(/^(https?|ftp|file):\/\/$/), new RegExp(/(https?|ftp|file):\/\//)],
|
2011-06-22 22:21:57 +00:00
|
|
|
isoDate: [new RegExp(/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/)],
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
usLongDate: [new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/)],
|
|
|
|
|
time: [new RegExp(/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/)]
|
|
|
|
|
};
|
|
|
|
|
} /* public methods */
|
|
|
|
|
this.construct = function ( settings ) {
|
|
|
|
|
return this.each( function () {
|
|
|
|
|
// if no thead or tbody quit.
|
|
|
|
|
if ( !this.tHead || !this.tBodies ) return;
|
|
|
|
|
// declare
|
|
|
|
|
var $this, $document, $headers, cache, config, shiftDown = 0,
|
2011-04-18 19:20:02 +00:00
|
|
|
sortOrder, firstTime = true, that = this;
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
// new blank config object
|
|
|
|
|
this.config = {};
|
|
|
|
|
// merge and extend.
|
|
|
|
|
config = $.extend( this.config, $.tablesorter.defaults, settings );
|
|
|
|
|
|
|
|
|
|
// store common expression for speed
|
|
|
|
|
$this = $( this );
|
|
|
|
|
// save the settings where they read
|
|
|
|
|
$.data( this, "tablesorter", config );
|
2011-05-03 11:44:35 +00:00
|
|
|
|
|
|
|
|
// get the css class names, could be done else where.
|
|
|
|
|
var sortCSS = [ config.cssDesc, config.cssAsc ];
|
|
|
|
|
var sortMsg = [ mw.msg( 'sort-descending' ), mw.msg( 'sort-ascending' ) ];
|
|
|
|
|
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
// build headers
|
2011-05-03 11:44:35 +00:00
|
|
|
$headers = buildHeaders( this, sortMsg );
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
// Grab and process locale settings
|
|
|
|
|
buildTransformTable();
|
|
|
|
|
buildDateTable();
|
|
|
|
|
buildCollationTable();
|
|
|
|
|
|
|
|
|
|
//Precaching regexps can bring 10 fold
|
|
|
|
|
//performance improvements in some browsers
|
|
|
|
|
cacheRegexs();
|
|
|
|
|
|
|
|
|
|
// apply event handling to headers
|
|
|
|
|
// this is to big, perhaps break it out?
|
|
|
|
|
$headers.click(
|
|
|
|
|
|
|
|
|
|
function (e) {
|
|
|
|
|
//var clickTime= new Date();
|
2011-04-18 19:20:02 +00:00
|
|
|
if (firstTime) {
|
|
|
|
|
firstTime = false;
|
|
|
|
|
explodeRowspans( $this );
|
|
|
|
|
// try to auto detect column type, and store in tables config
|
|
|
|
|
that.config.parsers = buildParserCache( that, $headers );
|
|
|
|
|
// build the cache for the tbody cells
|
|
|
|
|
cache = buildCache( that );
|
|
|
|
|
}
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
var totalRows = ( $this[0].tBodies[0] && $this[0].tBodies[0].rows.length ) || 0;
|
|
|
|
|
if ( !this.sortDisabled && totalRows > 0 ) {
|
|
|
|
|
// Only call sortStart if sorting is
|
|
|
|
|
// enabled.
|
|
|
|
|
//$this.trigger( "sortStart" );
|
2011-04-18 19:20:02 +00:00
|
|
|
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
// store exp, for speed
|
|
|
|
|
var $cell = $( this );
|
|
|
|
|
// get current column index
|
|
|
|
|
var i = this.column;
|
|
|
|
|
// get current column sort order
|
|
|
|
|
this.order = this.count % 2;
|
|
|
|
|
this.count++;
|
|
|
|
|
// user only whants to sort on one
|
|
|
|
|
// column
|
|
|
|
|
if ( !e[config.sortMultiSortKey] ) {
|
|
|
|
|
// flush the sort list
|
|
|
|
|
config.sortList = [];
|
|
|
|
|
// add column to sort list
|
|
|
|
|
config.sortList.push( [i, this.order] );
|
|
|
|
|
// multi column sorting
|
|
|
|
|
} else {
|
2011-04-18 19:20:02 +00:00
|
|
|
// the user has clicked on an already sorted column.
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
if ( isValueInArray( i, config.sortList ) ) {
|
|
|
|
|
// revers the sorting direction
|
|
|
|
|
// for all tables.
|
|
|
|
|
for ( var j = 0; j < config.sortList.length; j++ ) {
|
|
|
|
|
var s = config.sortList[j],
|
|
|
|
|
o = config.headerList[s[0]];
|
|
|
|
|
if ( s[0] == i ) {
|
|
|
|
|
o.count = s[1];
|
|
|
|
|
o.count++;
|
|
|
|
|
s[1] = o.count % 2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// add column to sort list array
|
|
|
|
|
config.sortList.push( [i, this.order] );
|
|
|
|
|
}
|
|
|
|
|
}
|
2011-06-22 23:03:12 +00:00
|
|
|
|
|
|
|
|
// set css for headers
|
|
|
|
|
setHeadersCss( $this[0], $headers, config.sortList, sortCSS, sortMsg );
|
|
|
|
|
appendToTable(
|
|
|
|
|
$this[0], multisort(
|
|
|
|
|
$this[0], config.sortList, cache ) );
|
|
|
|
|
//benchmark( "Sorting " + totalRows + " rows:", clickTime );
|
|
|
|
|
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
// stop normal event by returning false
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
// cancel selection
|
|
|
|
|
} ).mousedown( function () {
|
|
|
|
|
if ( config.cancelSelection ) {
|
|
|
|
|
this.onselectstart = function () {
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
} );
|
|
|
|
|
// apply easy methods that trigger binded events
|
|
|
|
|
//Can't think of any use for these in a mw context
|
|
|
|
|
// $this.bind( "update", function () {
|
|
|
|
|
// var me = this;
|
|
|
|
|
// setTimeout( function () {
|
|
|
|
|
// // rebuild parsers.
|
|
|
|
|
// me.config.parsers = buildParserCache(
|
|
|
|
|
// me, $headers );
|
|
|
|
|
// // rebuild the cache map
|
|
|
|
|
// cache = buildCache(me);
|
|
|
|
|
// }, 1 );
|
|
|
|
|
// } ).bind( "updateCell", function ( e, cell ) {
|
|
|
|
|
// var config = this.config;
|
|
|
|
|
// // get position from the dom.
|
|
|
|
|
// var pos = [( cell.parentNode.rowIndex - 1 ), cell.cellIndex];
|
|
|
|
|
// // update cache
|
|
|
|
|
// cache.normalized[pos[0]][pos[1]] = config.parsers[pos[1]].format(
|
2011-04-15 08:23:29 +00:00
|
|
|
// getElementText( cell ), cell );
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
// } ).bind( "sorton", function ( e, list ) {
|
|
|
|
|
// $( this ).trigger( "sortStart" );
|
|
|
|
|
// config.sortList = list;
|
|
|
|
|
// // update and store the sortlist
|
|
|
|
|
// var sortList = config.sortList;
|
|
|
|
|
// // update header count index
|
|
|
|
|
// updateHeaderSortCount( this, sortList );
|
|
|
|
|
// // set css for headers
|
|
|
|
|
// setHeadersCss( this, $headers, sortList, sortCSS );
|
|
|
|
|
// // sort the table and append it to the dom
|
|
|
|
|
// appendToTable( this, multisort( this, sortList, cache ) );
|
|
|
|
|
// } ).bind( "appendCache", function () {
|
|
|
|
|
// appendToTable( this, cache );
|
|
|
|
|
// } );
|
|
|
|
|
} );
|
|
|
|
|
};
|
|
|
|
|
this.addParser = function ( parser ) {
|
|
|
|
|
var l = parsers.length,
|
|
|
|
|
a = true;
|
|
|
|
|
for ( var i = 0; i < l; i++ ) {
|
|
|
|
|
if ( parsers[i].id.toLowerCase() == parser.id.toLowerCase() ) {
|
|
|
|
|
a = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (a) {
|
|
|
|
|
parsers.push( parser );
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.formatDigit = function (s) {
|
|
|
|
|
if ( ts.transformTable != false ) {
|
|
|
|
|
var out = '',
|
|
|
|
|
c;
|
|
|
|
|
for ( var p = 0; p < s.length; p++ ) {
|
|
|
|
|
c = s.charAt(p);
|
|
|
|
|
if ( c in ts.transformTable ) {
|
|
|
|
|
out += ts.transformTable[c];
|
|
|
|
|
} else {
|
|
|
|
|
out += c;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s = out;
|
|
|
|
|
}
|
|
|
|
|
var i = parseFloat( s.replace(/[, ]/g, '').replace( "\u2212", '-' ) );
|
|
|
|
|
return ( isNaN(i)) ? 0 : i;
|
|
|
|
|
};
|
|
|
|
|
this.formatFloat = function (s) {
|
|
|
|
|
var i = parseFloat(s);
|
|
|
|
|
return ( isNaN(i)) ? 0 : i;
|
|
|
|
|
};
|
|
|
|
|
this.formatInt = function (s) {
|
2011-04-15 08:23:29 +00:00
|
|
|
var i = parseInt( s, 10 );
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
return ( isNaN(i)) ? 0 : i;
|
|
|
|
|
};
|
|
|
|
|
this.clearTableBody = function ( table ) {
|
|
|
|
|
if ( $.browser.msie ) {
|
|
|
|
|
function empty() {
|
|
|
|
|
while ( this.firstChild )
|
|
|
|
|
this.removeChild( this.firstChild );
|
|
|
|
|
}
|
|
|
|
|
empty.apply( table.tBodies[0] );
|
|
|
|
|
} else {
|
|
|
|
|
table.tBodies[0].innerHTML = "";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
} );
|
|
|
|
|
|
|
|
|
|
// extend plugin scope
|
|
|
|
|
$.fn.extend( {
|
|
|
|
|
tablesorter: $.tablesorter.construct
|
|
|
|
|
} );
|
|
|
|
|
|
|
|
|
|
// make shortcut
|
|
|
|
|
var ts = $.tablesorter;
|
|
|
|
|
|
|
|
|
|
// add default parsers
|
|
|
|
|
ts.addParser( {
|
|
|
|
|
id: "text",
|
|
|
|
|
is: function (s) {
|
|
|
|
|
return true;
|
|
|
|
|
},
|
|
|
|
|
format: function (s) {
|
|
|
|
|
s = $.trim( s.toLowerCase() );
|
|
|
|
|
if ( ts.collationRegex ) {
|
2011-04-18 12:54:28 +00:00
|
|
|
var tsc = ts.collationTable;
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
s = s.replace( ts.collationRegex, function ( match ) {
|
|
|
|
|
var r = tsc[match] ? tsc[match] : tsc[match.toUpperCase()];
|
|
|
|
|
return r.toLowerCase();
|
|
|
|
|
} );
|
|
|
|
|
}
|
|
|
|
|
return s;
|
|
|
|
|
},
|
|
|
|
|
type: "text"
|
|
|
|
|
} );
|
|
|
|
|
|
|
|
|
|
ts.addParser( {
|
|
|
|
|
id: "IPAddress",
|
|
|
|
|
is: function (s) {
|
|
|
|
|
return ts.rgx.IPAddress[0].test(s);
|
|
|
|
|
},
|
|
|
|
|
format: function (s) {
|
|
|
|
|
var a = s.split("."),
|
|
|
|
|
r = "",
|
|
|
|
|
l = a.length;
|
|
|
|
|
for ( var i = 0; i < l; i++ ) {
|
|
|
|
|
var item = a[i];
|
2011-06-23 00:37:23 +00:00
|
|
|
if ( item.length == 1 ) {
|
|
|
|
|
r += "00" + item;
|
|
|
|
|
} else if ( item.length == 2 ) {
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
r += "0" + item;
|
|
|
|
|
} else {
|
|
|
|
|
r += item;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $.tablesorter.formatFloat(r);
|
|
|
|
|
},
|
|
|
|
|
type: "numeric"
|
|
|
|
|
} );
|
|
|
|
|
|
|
|
|
|
ts.addParser( {
|
|
|
|
|
id: "currency",
|
|
|
|
|
is: function (s) {
|
|
|
|
|
return ts.rgx.currency[0].test(s);
|
|
|
|
|
},
|
|
|
|
|
format: function (s) {
|
|
|
|
|
return $.tablesorter.formatDigit( s.replace( ts.rgx.currency[1], "" ) );
|
|
|
|
|
},
|
|
|
|
|
type: "numeric"
|
|
|
|
|
} );
|
|
|
|
|
|
|
|
|
|
ts.addParser( {
|
|
|
|
|
id: "url",
|
|
|
|
|
is: function (s) {
|
|
|
|
|
return ts.rgx.url[0].test(s);
|
|
|
|
|
},
|
|
|
|
|
format: function (s) {
|
|
|
|
|
return $.trim( s.replace( ts.rgx.url[1], '' ) );
|
|
|
|
|
},
|
|
|
|
|
type: "text"
|
|
|
|
|
} );
|
|
|
|
|
|
|
|
|
|
ts.addParser( {
|
|
|
|
|
id: "isoDate",
|
|
|
|
|
is: function (s) {
|
|
|
|
|
return ts.rgx.isoDate[0].test(s);
|
|
|
|
|
},
|
|
|
|
|
format: function (s) {
|
|
|
|
|
return $.tablesorter.formatFloat((s != "") ? new Date(s.replace(
|
|
|
|
|
new RegExp(/-/g), "/")).getTime() : "0");
|
|
|
|
|
},
|
|
|
|
|
type: "numeric"
|
|
|
|
|
} );
|
|
|
|
|
|
|
|
|
|
ts.addParser( {
|
|
|
|
|
id: "usLongDate",
|
|
|
|
|
is: function (s) {
|
|
|
|
|
return ts.rgx.usLongDate[0].test(s);
|
|
|
|
|
},
|
|
|
|
|
format: function (s) {
|
|
|
|
|
return $.tablesorter.formatFloat( new Date(s).getTime() );
|
|
|
|
|
},
|
|
|
|
|
type: "numeric"
|
|
|
|
|
} );
|
|
|
|
|
|
|
|
|
|
ts.addParser( {
|
|
|
|
|
id: "date",
|
|
|
|
|
is: function (s) {
|
|
|
|
|
return ( ts.dateRegex[0].test(s) || ts.dateRegex[1].test(s) || ts.dateRegex[2].test(s ));
|
|
|
|
|
},
|
|
|
|
|
format: function ( s, table ) {
|
2011-04-18 12:54:28 +00:00
|
|
|
s = $.trim( s.toLowerCase() );
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
|
2011-06-22 20:40:00 +00:00
|
|
|
for ( var i = 1, j = 0; i < 13 && j < 2; i++ ) {
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
s = s.replace( ts.monthNames[j][i], i );
|
|
|
|
|
if ( i == 12 ) {
|
|
|
|
|
j++;
|
|
|
|
|
i = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
s = s.replace(/[\-\.\,' ]/g, "/");
|
|
|
|
|
|
|
|
|
|
//Replace double slashes
|
|
|
|
|
s = s.replace(/\/\//g, "/");
|
|
|
|
|
s = s.replace(/\/\//g, "/");
|
|
|
|
|
s = s.split('/');
|
|
|
|
|
|
|
|
|
|
//Pad Month and Day
|
2011-04-15 08:23:29 +00:00
|
|
|
if ( s[0] && s[0].length == 1 ) s[0] = "0" + s[0];
|
|
|
|
|
if ( s[1] && s[1].length == 1 ) s[1] = "0" + s[1];
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
|
|
|
|
|
if ( !s[2] ) {
|
|
|
|
|
//Fix yearless dates
|
|
|
|
|
s[2] = 2000;
|
2011-04-15 08:23:29 +00:00
|
|
|
} else if ( ( y = parseInt( s[2], 10) ) < 100 ) {
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
//Guestimate years without centuries
|
|
|
|
|
if ( y < 30 ) {
|
|
|
|
|
s[2] = 2000 + y;
|
|
|
|
|
} else {
|
|
|
|
|
s[2] = 1900 + y;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//Resort array depending on preferences
|
2011-05-02 11:55:45 +00:00
|
|
|
if ( mw.config.get( 'wgDefaultDateFormat' ) == "mdy" || mw.config.get('wgContentLanguage') == 'en' ) {
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
s.push( s.shift() );
|
|
|
|
|
s.push( s.shift() );
|
2011-05-02 11:55:45 +00:00
|
|
|
} else if ( mw.config.get( 'wgDefaultDateFormat' ) == "dmy" ) {
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
var d = s.shift();
|
|
|
|
|
s.push( s.shift() );
|
|
|
|
|
s.push(d);
|
|
|
|
|
}
|
2011-04-15 08:23:29 +00:00
|
|
|
return parseInt( s.join(''), 10 );
|
Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732
1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.
2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time
3. Execution time is reduced by half or more.
Sorting a 935 row * 8 columns table:
Browser Before After
-------- ------ -----
Chrome 10 90ms 42ms
Safari 5 115ms 48ms
Firefox 4 412ms 87ms
IE8 720ms 115ms
4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[]
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76
Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
|
|
|
},
|
|
|
|
|
type: "numeric"
|
|
|
|
|
} );
|
|
|
|
|
ts.addParser( {
|
|
|
|
|
id: "time",
|
|
|
|
|
is: function (s) {
|
|
|
|
|
return ts.rgx.time[0].test(s);
|
|
|
|
|
},
|
|
|
|
|
format: function (s) {
|
|
|
|
|
return $.tablesorter.formatFloat( new Date( "2000/01/01 " + s ).getTime() );
|
|
|
|
|
},
|
|
|
|
|
type: "numeric"
|
|
|
|
|
} );
|
2011-05-02 11:31:45 +00:00
|
|
|
ts.addParser( {
|
|
|
|
|
id: "number",
|
|
|
|
|
is: function ( s, table ) {
|
|
|
|
|
return $.tablesorter.numberRegex.test( $.trim(s ));
|
|
|
|
|
},
|
|
|
|
|
format: function (s) {
|
|
|
|
|
return $.tablesorter.formatDigit(s);
|
|
|
|
|
},
|
|
|
|
|
type: "numeric"
|
|
|
|
|
} );
|
|
|
|
|
|
2011-06-22 20:40:00 +00:00
|
|
|
} )( jQuery );
|