wiki.techinc.nl/resources/jquery/jquery.tablesorter.js

885 lines
23 KiB
JavaScript
Raw Normal View History

Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
/**
* TableSorter for MediaWiki
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* 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
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* Depends on mw.config (wgDigitTransformTable, wgMonthNames, wgMonthNamesShort,
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
* wgDefaultDateFormat, wgContentLanguage)
* Uses 'tableSorterCollation' in mw.config (if available)
*/
/**
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* @description Create a sortable table with multi-column sorting capabilitys
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* @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"
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* @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"
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* @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"
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* @option String sortInitialOrder ( optional ) A string of the inital sorting
* order can be asc or desc. Default value: "asc"
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* @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
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* @option Boolean debug ( optional ) Boolean flag indicating if tablesorter
* should display debuging information usefull for development.
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* @type jQuery
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* @name tablesorter
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* @cat Plugins/Tablesorter
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
*
* @author Christian Bach/christian.bach@polyester.se
*/
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
( function ( $, mw ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
/* Local scope */
var ts,
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
parsers = [];
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
/* Parser utility functions */
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
function getParserById( name ) {
var len = parsers.length;
for ( var i = 0; i < len; i++ ) {
if ( parsers[i].id.toLowerCase() === name.toLowerCase() ) {
return parsers[i];
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
return false;
}
function getElementText( node ) {
var $node = $( node ),
// Use data-sort-value attribute.
// Use data() instead of attr() so that live value changes
// are processed as well (bug 38152).
data = $node.data( 'sortValue' );
if ( data !== null && data !== undefined ) {
// Cast any numbers or other stuff to a string, methods
// like charAt, toLowerCase and split are expected.
return String( data );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
} else {
return $node.text();
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
function getTextFromRowAndCellIndex( rows, rowIndex, cellIndex ) {
if ( rows[rowIndex] && rows[rowIndex].cells[cellIndex] ) {
return $.trim( getElementText( rows[rowIndex].cells[cellIndex] ) );
} else {
return '';
}
}
function detectParserForColumn( table, rows, cellIndex ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
var l = parsers.length,
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +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 {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Check next parser, reset rows
i++;
rowIndex = 0;
concurrent = 0;
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
} else {
// Empty cell
rowIndex++;
if ( rowIndex > rows.length ) {
rowIndex = 0;
i++;
}
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// 0 is always the generic parser (text)
return parsers[0];
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
function buildParserCache( table, $headers ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
var rows = table.tBodies[0].rows,
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
sortType,
parsers = [];
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
if ( rows[0] ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
var cells = rows[0].cells,
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
len = cells.length,
i, parser;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
for ( i = 0; i < len; i++ ) {
parser = false;
sortType = $headers.eq( i ).data( 'sort-type' );
if ( sortType !== undefined ) {
parser = getParserById( sortType );
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
if ( parser === false ) {
parser = detectParserForColumn( table, rows, i );
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
parsers.push( parser );
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
return parsers;
}
/* Other utility functions */
function buildCache( table ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
var totalRows = ( table.tBodies[0] && table.tBodies[0].rows.length ) || 0,
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
totalCells = ( table.tBodies[0].rows[0] && table.tBodies[0].rows[0].cells.length ) || 0,
parsers = table.config.parsers,
cache = {
row: [],
normalized: []
};
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
for ( var i = 0; i < totalRows; ++i ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Add the table data to main data array
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
var $row = $( table.tBodies[0].rows[i] ),
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
cols = [];
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// if this is a child row, add it to the last row's children and
// continue to the next row
if ( $row.hasClass( table.config.cssChildRow ) ) {
cache.row[cache.row.length - 1] = cache.row[cache.row.length - 1].add( $row );
// go to the next for loop
continue;
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
cache.row.push( $row );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
for ( var j = 0; j < totalCells; ++j ) {
cols.push( parsers[j].format( getElementText( $row[0].cells[j] ), table, $row[0].cells[j] ) );
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
cols.push( cache.normalized.length ); // add position for rowCache
cache.normalized.push( cols );
cols = null;
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
return cache;
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
function appendToTable( table, cache ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
var row = cache.row,
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
normalized = cache.normalized,
totalRows = normalized.length,
checkCell = ( normalized[0].length - 1 ),
fragment = document.createDocumentFragment();
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
for ( var i = 0; i < totalRows; i++ ) {
var pos = normalized[i][checkCell];
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
var l = row[pos].length;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
for ( var j = 0; j < l; j++ ) {
fragment.appendChild( row[pos][j] );
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
table.tBodies[0].appendChild( fragment );
}
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
/**
* Find all header rows in a thead-less table and put them in a <thead> tag.
* This only treats a row as a header row if it contains only <th>s (no <td>s)
* and if it is preceded entirely by header rows. The algorithm stops when
* it encounters the first non-header row.
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
*
* After this, it will look at all rows at the bottom for footer rows
* And place these in a tfoot using similar rules.
* @param $table jQuery object for a <table>
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
*/
function emulateTHeadAndFoot( $table ) {
var $rows = $table.find( '> tbody > tr' );
if( !$table.get(0).tHead ) {
var $thead = $( '<thead>' );
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
$rows.each( function () {
if ( $(this).children( 'td' ).length > 0 ) {
// This row contains a <td>, so it's not a header row
// Stop here
return false;
}
$thead.append( this );
} );
$table.find(' > tbody:first').before( $thead );
}
if( !$table.get(0).tFoot ) {
var $tfoot = $( '<tfoot>' );
var len = $rows.length;
for ( var i = len-1; i >= 0; i-- ) {
if( $( $rows[i] ).children( 'td' ).length > 0 ){
break;
}
$tfoot.prepend( $( $rows[i] ));
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
}
$table.append( $tfoot );
}
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
function buildHeaders( table, msg ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
var maxSeen = 0,
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
longest,
realCellIndex = 0,
$tableHeaders = $( 'thead:eq(0) > tr', table );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
if ( $tableHeaders.length > 1 ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
$tableHeaders.each( function () {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
if ( this.cells.length > maxSeen ) {
maxSeen = this.cells.length;
longest = this;
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
});
$tableHeaders = $( longest );
}
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
$tableHeaders = $tableHeaders.children( 'th' ).each( function ( index ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
this.column = realCellIndex;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
var colspan = this.colspan;
colspan = colspan ? parseInt( colspan, 10 ) : 1;
realCellIndex += colspan;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
this.order = 0;
this.count = 0;
2011-07-04 23:36:54 +00:00
if ( $( this ).is( '.unsortable' ) ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
this.sortDisabled = true;
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
if ( !this.sortDisabled ) {
var $th = $( this ).addClass( table.config.cssHeader ).attr( 'title', msg[1] );
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// add cell to headerList
table.config.headerList[index] = this;
} );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
return $tableHeaders;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
function isValueInArray( v, a ) {
var l = a.length;
for ( var i = 0; i < l; i++ ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
if ( a[i][0] === v ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
return true;
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
return false;
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
function setHeadersCss( table, $headers, list, css, msg ) {
// Remove all header information
$headers.removeClass( css[0] ).removeClass( css[1] );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
var h = [];
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
$headers.each( function ( offset ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
if ( !this.sortDisabled ) {
h[this.column] = $( this );
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
} );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
var l = list.length;
for ( var i = 0; i < l; i++ ) {
h[ list[i][0] ].addClass( css[ list[i][1] ] ).attr( 'title', msg[ list[i][1] ] );
}
}
function sortText( a, b ) {
return ( (a < b) ? false : ((a > b) ? true : 0) );
}
function sortTextDesc( a, b ) {
return ( (b < a) ? false : ((b > a) ? true : 0) );
}
function multisort( table, sortList, cache ) {
var sortFn = [];
var len = sortList.length;
for ( var i = 0; i < len; i++ ) {
sortFn[i] = ( sortList[i][1] ) ? sortTextDesc : sortText;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
cache.normalized.sort( function ( array1, array2 ) {
var col, ret;
for ( var i = 0; i < len; i++ ) {
col = sortList[i][0];
ret = sortFn[i].call( this, array1[col], array2[col] );
if ( ret !== 0 ) {
return ret;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
}
// Fall back to index number column to ensure stable sort
return sortText.call( this, array1[array1.length - 1], array2[array2.length - 1] );
} );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
return cache;
}
function buildTransformTable() {
var digits = '0123456789,.'.split( '' );
var separatorTransformTable = mw.config.get( 'wgSeparatorTransformTable' );
var digitTransformTable = mw.config.get( 'wgDigitTransformTable' );
if ( separatorTransformTable === null || ( separatorTransformTable[0] === '' && digitTransformTable[2] === '' ) ) {
ts.transformTable = false;
} else {
ts.transformTable = {};
// Unpack the transform table
var ascii = separatorTransformTable[0].split( "\t" ).concat( digitTransformTable[0].split( "\t" ) );
var localised = separatorTransformTable[1].split( "\t" ).concat( digitTransformTable[1].split( "\t" ) );
// 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 ) + ']';
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// 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
"|" + "[-+\u2212]?" + digitClass + "+[\\s\\xa0]*%?" + // Generic localised
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
")$", "i");
}
function buildDateTable() {
var regex = [];
ts.monthNames = {};
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
for ( var i = 1; i < 13; i++ ) {
var name = mw.config.get( 'wgMonthNames' )[i].toLowerCase();
ts.monthNames[name] = i;
regex.push( $.escapeRE( name ) );
name = mw.config.get( 'wgMonthNamesShort' )[i].toLowerCase().replace( '.', '' );
ts.monthNames[name] = i;
regex.push( $.escapeRE( name ) );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Build piped string
regex = regex.join( '|' );
// Build RegEx
// Any date formated with . , ' - or /
ts.dateRegex[0] = new RegExp( /^\s*(\d{1,2})[\,\.\-\/'\s]{1,2}(\d{1,2})[\,\.\-\/'\s]{1,2}(\d{2,4})\s*?/i);
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Written Month name, dmy
ts.dateRegex[1] = new RegExp( '^\\s*(\\d{1,2})[\\,\\.\\-\\/\'\\s]*(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]*(\\d{2,4})\\s*$', 'i' );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Written Month name, mdy
ts.dateRegex[2] = new RegExp( '^\\s*(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]*(\\d{1,2})[\\,\\.\\-\\/\'\\s]*(\\d{2,4})\\s*$', 'i' );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
function explodeRowspans( $table ) {
// Split multi row cells into multiple cells with the same content
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
$table.find( '> tbody > tr > [rowspan]' ).each(function () {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
var rowSpan = this.rowSpan;
this.rowSpan = 1;
var cell = $( this );
var next = cell.parent().nextAll();
for ( var i = 0; i < rowSpan - 1; i++ ) {
var td = next.eq( i ).children( 'td' );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
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() );
}
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
});
}
function buildCollationTable() {
ts.collationTable = mw.config.get( 'tableSorterCollation' );
ts.collationRegex = null;
if ( ts.collationTable ) {
var keys = [];
// Build array of key names
for ( var key in ts.collationTable ) {
if ( ts.collationTable.hasOwnProperty(key) ) { //to be safe
keys.push(key);
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
if (keys.length) {
ts.collationRegex = new RegExp( '[' + keys.join( '' ) + ']', 'ig' );
}
}
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
function cacheRegexs() {
if ( ts.rgx ) {
return;
}
ts.rgx = {
IPAddress: [
new RegExp( /^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/)
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
],
currency: [
new RegExp( /^[£$€?.]/),
new RegExp( /[£$€]/g)
],
url: [
new RegExp( /^(https?|ftp|file):\/\/$/),
new RegExp( /(https?|ftp|file):\/\//)
],
isoDate: [
new RegExp( /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/)
],
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 scope */
$.tablesorter = {
defaultOptions: {
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
},
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
dateRegex: [],
monthNames: {},
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
/**
* @param $tables {jQuery}
* @param settings {Object} (optional)
*/
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
construct: function ( $tables, settings ) {
return $tables.each( function ( i, table ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Declare and cache.
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
var $document, $headers, cache, config, sortOrder,
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
$table = $( table ),
shiftDown = 0,
firstTime = true;
// Quit if no tbody
if ( !table.tBodies ) {
return;
}
if ( !table.tHead ) {
// No thead found. Look for rows with <th>s and
// move them into a <thead> tag or a <tfoot> tag
emulateTHeadAndFoot( $table );
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
// Still no thead? Then quit
if ( !table.tHead ) {
return;
}
}
$table.addClass( "jquery-tablesorter" );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// New config object.
table.config = {};
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Merge and extend.
config = $.extend( table.config, $.tablesorter.defaultOptions, settings );
// Save the settings where they read
$.data( table, 'tablesorter', config );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +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' ) ];
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Build headers
$headers = buildHeaders( table, sortMsg );
// Grab and process locale settings
buildTransformTable();
buildDateTable();
buildCollationTable();
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Precaching regexps can bring 10 fold
// performance improvements in some browsers.
cacheRegexs();
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Apply event handling to headers
// this is too big, perhaps break it out?
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
$headers.click( function ( e ) {
if ( e.target.nodeName.toLowerCase() === 'a' ) {
// The user clicked on a link inside a table header
// Do nothing and let the default link click action continue
return true;
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
if ( firstTime ) {
firstTime = false;
// Legacy fix of .sortbottoms
// Wrap them inside inside a tfoot (because that's what they actually want to be) &
// and put the <tfoot> at the end of the <table>
var $sortbottoms = $table.find( '> tbody > tr.sortbottom' );
if ( $sortbottoms.length ) {
var $tfoot = $table.children( 'tfoot' );
if ( $tfoot.length ) {
$tfoot.eq(0).prepend( $sortbottoms );
} else {
$table.append( $( '<tfoot>' ).append( $sortbottoms ) );
}
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
explodeRowspans( $table );
// try to auto detect column type, and store in tables config
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
table.config.parsers = buildParserCache( table, $headers );
}
// Build the cache for the tbody cells
// to share between calculations for this sort action.
// Re-calculated each time a sort action is performed due to possiblity
// that sort values change. Shouldn't be too expensive, but if it becomes
// too slow an event based system should be implemented somehow where
// cells get event .change() and bubbles up to the <table> here
cache = buildCache( table );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
var totalRows = ( $table[0].tBodies[0] && $table[0].tBodies[0].rows.length ) || 0;
if ( !table.sortDisabled && totalRows > 0 ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Cache jQuery object
var $cell = $( this );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Get current column index
var i = this.column;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Get current column sort order
this.order = this.count % 2;
this.count++;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// User only wants to sort on one column
if ( !e[config.sortMultiSortKey] ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Flush the sort list
config.sortList = [];
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Add column to sort list
config.sortList.push( [i, this.order] );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Multi column sorting
} else {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// The user has clicked on an already sorted column.
if ( isValueInArray( i, config.sortList ) ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Reverse 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]];
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
if ( s[0] === i ) {
o.count = s[1];
o.count++;
s[1] = o.count % 2;
}
}
} else {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Add column to sort list array
config.sortList.push( [i, this.order] );
}
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Set CSS for headers
setHeadersCss( $table[0], $headers, config.sortList, sortCSS, sortMsg );
appendToTable(
$table[0], multisort( $table[0], config.sortList, cache )
);
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Stop normal event by returning false
return false;
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Cancel selection
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
} ).mousedown( function () {
if ( config.cancelSelection ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
this.onselectstart = function () {
return false;
};
return false;
}
} );
} );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
addParser: function ( parser ) {
var l = parsers.length,
a = true;
for ( var i = 0; i < l; i++ ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
if ( parsers[i].id.toLowerCase() === parser.id.toLowerCase() ) {
a = false;
}
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
if ( a ) {
parsers.push( parser );
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
formatDigit: function ( s ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
if ( ts.transformTable !== false ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
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;
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
var i = parseFloat( s.replace( /[, ]/g, '' ).replace( "\u2212", '-' ) );
return ( isNaN(i)) ? 0 : i;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
formatFloat: function ( s ) {
var i = parseFloat(s);
return ( isNaN(i)) ? 0 : i;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
formatInt: function ( s ) {
var i = parseInt( s, 10 );
return ( isNaN(i)) ? 0 : i;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
clearTableBody: function ( table ) {
if ( $.browser.msie ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
var empty = function ( el ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
while ( el.firstChild ) {
el.removeChild( el.firstChild );
}
};
empty( table.tBodies[0] );
} else {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
table.tBodies[0].innerHTML = '';
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
}
};
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Shortcut
ts = $.tablesorter;
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Register as jQuery prototype method
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
$.fn.tablesorter = function ( settings ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
return ts.construct( this, settings );
};
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Add default parsers
ts.addParser( {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
id: 'text',
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
is: function ( s ) {
return true;
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
format: function ( s ) {
s = $.trim( s.toLowerCase() );
if ( ts.collationRegex ) {
var tsc = ts.collationTable;
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
s = s.replace( ts.collationRegex, function ( match ) {
var r = tsc[match] ? tsc[match] : tsc[match.toUpperCase()];
return r.toLowerCase();
} );
}
return s;
},
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
type: 'text'
} );
ts.addParser( {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
id: 'IPAddress',
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
is: function ( s ) {
return ts.rgx.IPAddress[0].test(s);
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
format: function ( s ) {
var a = s.split( '.' ),
r = '',
l = a.length;
for ( var i = 0; i < l; i++ ) {
var item = a[i];
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
if ( item.length === 1 ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
r += '00' + item;
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
} else if ( item.length === 2 ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
r += '0' + item;
} else {
r += item;
}
}
return $.tablesorter.formatFloat(r);
},
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
type: 'numeric'
} );
ts.addParser( {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
id: 'currency',
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
is: function ( s ) {
return ts.rgx.currency[0].test(s);
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
format: function ( s ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
return $.tablesorter.formatDigit( s.replace( ts.rgx.currency[1], '' ) );
},
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
type: 'numeric'
} );
ts.addParser( {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
id: 'url',
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
is: function ( s ) {
return ts.rgx.url[0].test(s);
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
format: function ( s ) {
return $.trim( s.replace( ts.rgx.url[1], '' ) );
},
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
type: 'text'
} );
ts.addParser( {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
id: 'isoDate',
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
is: function ( s ) {
return ts.rgx.isoDate[0].test(s);
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
format: function ( s ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
return $.tablesorter.formatFloat((s !== '') ? new Date(s.replace(
new RegExp( /-/g), '/')).getTime() : '0' );
},
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
type: 'numeric'
} );
ts.addParser( {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
id: 'usLongDate',
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
is: function ( s ) {
return ts.rgx.usLongDate[0].test(s);
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
format: function ( s ) {
return $.tablesorter.formatFloat( new Date(s).getTime() );
},
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
type: 'numeric'
} );
ts.addParser( {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
id: 'date',
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
is: function ( s ) {
return ( ts.dateRegex[0].test(s) || ts.dateRegex[1].test(s) || ts.dateRegex[2].test(s ));
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
format: function ( s, table ) {
var match;
s = $.trim( s.toLowerCase() );
if ( ( match = s.match( ts.dateRegex[0] ) ) !== null ) {
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
if ( mw.config.get( 'wgDefaultDateFormat' ) === 'mdy' || mw.config.get( 'wgContentLanguage' ) === 'en' ) {
s = [ match[3], match[1], match[2] ];
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
} else if ( mw.config.get( 'wgDefaultDateFormat' ) === 'dmy' ) {
s = [ match[3], match[2], match[1] ];
}
} else if ( ( match = s.match( ts.dateRegex[1] ) ) !== null ) {
s = [ match[3], '' + ts.monthNames[match[2]], match[1] ];
} else if ( ( match = s.match( ts.dateRegex[2] ) ) !== null ) {
s = [ match[3], '' + ts.monthNames[match[1]], match[2] ];
} else {
// Should never get here
return '99999999';
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Pad Month and Day
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
if ( s[1].length === 1 ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
s[1] = '0' + s[1];
}
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
if ( s[2].length === 1 ) {
s[2] = '0' + s[2];
}
var y;
if ( ( y = parseInt( s[0], 10) ) < 100 ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
// Guestimate years without centuries
if ( y < 30 ) {
s[0] = 2000 + y;
} else {
s[0] = 1900 + y;
}
}
while ( s[0].length < 4 ) {
s[0] = '0' + s[0];
}
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
return parseInt( s.join( '' ), 10 );
},
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
type: 'numeric'
} );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
ts.addParser( {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
id: 'time',
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
is: function ( s ) {
return ts.rgx.time[0].test(s);
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
format: function ( s ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
return $.tablesorter.formatFloat( new Date( '2000/01/01 ' + s ).getTime() );
},
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
type: 'numeric'
} );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
ts.addParser( {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
id: 'number',
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
is: function ( s, table ) {
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
return $.tablesorter.numberRegex.test( $.trim( s ));
},
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
format: function ( s ) {
return $.tablesorter.formatDigit(s);
},
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
type: 'numeric'
} );
Review and clean up of jquery.tablesorter.js + applying code conventions * Dropping redundant "new function(){}" construction, instead using the closure we already have for the local scope. * Adding more function documentation * Whitespace contentions * Passing jQuery object to the $.tablesorter.construct and creating jQuery plugin function in $.fn.tablesorter (per jQuery convention, this allows $.tablesorter.construct to be used directly without having to use .apply() to get the this-context right). * Making use of the arguments that jQuery.fn.each passes by default in $.tablesorter.construct (this/that => table) * Renaming a few single-letter variables to something more descriptive (c => $row, r => regex etc.) * Changed order of local functions in order of calling and dependancy (fixed JSHint potential implied globals). Also makes reading/understanding them easier. * Removed commented out code * Added more line breaks to separate blocks * Merge var-statements together * Declare 'ts' shortcut on top of the local scope, define 'ts' shortcut directly after definition of $.tablesorter * Adding public member placeholders, populated by private functions, to the initial object instead of inside the functions. This way the members can be seen centrally (dateRegex, monthNames) * Syntax/JSHint fixes (Passes 100% now; Globals: mw, jQuery) - 'list' used out of scope. In function buildParserCache: "var list" was defined under an if-condition, but returned outside of it, this fails in the 'else' case. Moved var list outside the if-condition - Strict === comparison to 0, null, undefined, false, true, '' etc. - Require curly braces around all blocks * Performance improvements (see also http://www.mediawiki.org/wiki/JSPERF) - Using dot notation (obj.member = {}), instead of $.extend(obj, { member: .. }) for single additions. No need for $.extend - Object literal {foo}, instead of new function(){ this.foo } - Strict/fast comparison to undefined, without typeof and/or string evaluation - cacheRegexs() is uselses if if re-creates the cache every time. Using static cache instead (which was likely the intention)
2011-06-26 04:36:02 +00:00
jshint: resources/jquery/* * .jshintrc: Updated to include more strict options that match our code conventions. Also separated into 3 groups: - stricter (curly, eqeqeq etc.) - laxer (smarttabs, laxbreak) - envrionment (browser) * .jshintignore: Updated to include more third-party/upstream files that should not be linted. * Most of it is just routine cleanup, a few notable points: - jquery.autoEllipsis: Removed unused variable $protectedText. - jquery.arrowSteps.js: Remove <!-- --> and language="javascript" that hasn't been needed for almost a decade. - jquery.byteLimit: Use dashToCamel key for .data(), this already happens internally in jQuery data(), since data storage should use keys that are usable as identifiers. The dashed versions are to populate these from data-attribute-names, which then becomes data.attributeNames. jQuery data() takes both forms as convenience. - jquery.client.js: To avoid a rewrite of it, allowing unexpected assignments (boss) and eval (evil) in the functions that use that. Left as it is for now, could use a rewrite later. - jquery.color.js: Tolerate unexpected assignment for now (boss). Left as it is for now, should perhaps be refactored later. Also re-ordered per jshint/jslint to put definition before invocation. This option can be disabled, but then it doesn't warn for invoking undefined functions (or typos) at all. - jquery.expandableField.js: Remove empty switch/case. - jquery.localize.js: Alias mw global. - jquery.suggestions.js: Use e.which; jQuery.Event normalizes e.keyCode etc. - jquery.tablesorter.js: Alias mw global. - jquery.textSelection.js: Fix leakage of variable in global scope of var "i" and "j". - mediawiki.util.test.js: Fixed implied global `pCustom`. * Review with -w for your own sanity. Change-Id: Ia972f79539a96a38357ec4e92b0b6e38cc301681
2012-07-03 15:21:32 +00:00
}( jQuery, mediaWiki ) );