HomePhabricator

Completely rewritten table sorting script.

Description

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'.

  1. 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

  1. 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

  1. 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:

  1. Jan. 01

23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76

Was tested in ie6-8, chrome, safari 5, ff3 & ff4

Details

Committed
DieBucheApr 14 2011, 9:47 PM
Parents
rSVN86087: Followup r85944, move UtfNormalDefins stuff out of extensions profiling area
Branches
Unknown
Tags
Unknown
ChangeId
None