Upgrade to ExtJS 3.1.0 - Released 12/16/2009
[extjs.git] / src / data / SortTypes.js
1 /*!
2  * Ext JS Library 3.1.0
3  * Copyright(c) 2006-2009 Ext JS, LLC
4  * licensing@extjs.com
5  * http://www.extjs.com/license
6  */
7 \r
8 /**\r
9  * @class Ext.data.SortTypes\r
10  * @singleton\r
11  * Defines the default sorting (casting?) comparison functions used when sorting data.\r
12  */\r
13 Ext.data.SortTypes = {\r
14     /**\r
15      * Default sort that does nothing\r
16      * @param {Mixed} s The value being converted\r
17      * @return {Mixed} The comparison value\r
18      */\r
19     none : function(s){\r
20         return s;\r
21     },\r
22     \r
23     /**\r
24      * The regular expression used to strip tags\r
25      * @type {RegExp}\r
26      * @property\r
27      */\r
28     stripTagsRE : /<\/?[^>]+>/gi,\r
29     \r
30     /**\r
31      * Strips all HTML tags to sort on text only\r
32      * @param {Mixed} s The value being converted\r
33      * @return {String} The comparison value\r
34      */\r
35     asText : function(s){\r
36         return String(s).replace(this.stripTagsRE, "");\r
37     },\r
38     \r
39     /**\r
40      * Strips all HTML tags to sort on text only - Case insensitive\r
41      * @param {Mixed} s The value being converted\r
42      * @return {String} The comparison value\r
43      */\r
44     asUCText : function(s){\r
45         return String(s).toUpperCase().replace(this.stripTagsRE, "");\r
46     },\r
47     \r
48     /**\r
49      * Case insensitive string\r
50      * @param {Mixed} s The value being converted\r
51      * @return {String} The comparison value\r
52      */\r
53     asUCString : function(s) {\r
54         return String(s).toUpperCase();\r
55     },\r
56     \r
57     /**\r
58      * Date sorting\r
59      * @param {Mixed} s The value being converted\r
60      * @return {Number} The comparison value\r
61      */\r
62     asDate : function(s) {\r
63         if(!s){\r
64             return 0;\r
65         }\r
66         if(Ext.isDate(s)){\r
67             return s.getTime();\r
68         }\r
69         return Date.parse(String(s));\r
70     },\r
71     \r
72     /**\r
73      * Float sorting\r
74      * @param {Mixed} s The value being converted\r
75      * @return {Float} The comparison value\r
76      */\r
77     asFloat : function(s) {\r
78         var val = parseFloat(String(s).replace(/,/g, ""));\r
79         return isNaN(val) ? 0 : val;\r
80     },\r
81     \r
82     /**\r
83      * Integer sorting\r
84      * @param {Mixed} s The value being converted\r
85      * @return {Number} The comparison value\r
86      */\r
87     asInt : function(s) {\r
88         var val = parseInt(String(s).replace(/,/g, ""), 10);\r
89         return isNaN(val) ? 0 : val;\r
90     }\r
91 };