Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / src / data / SortTypes.js
diff --git a/src/data/SortTypes.js b/src/data/SortTypes.js
new file mode 100644 (file)
index 0000000..a0e1010
--- /dev/null
@@ -0,0 +1,91 @@
+/*!
+ * Ext JS Library 3.0.0
+ * Copyright(c) 2006-2009 Ext JS, LLC
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+\r
+/**\r
+ * @class Ext.data.SortTypes\r
+ * @singleton\r
+ * Defines the default sorting (casting?) comparison functions used when sorting data.\r
+ */\r
+Ext.data.SortTypes = {\r
+    /**\r
+     * Default sort that does nothing\r
+     * @param {Mixed} s The value being converted\r
+     * @return {Mixed} The comparison value\r
+     */\r
+    none : function(s){\r
+        return s;\r
+    },\r
+    \r
+    /**\r
+     * The regular expression used to strip tags\r
+     * @type {RegExp}\r
+     * @property\r
+     */\r
+    stripTagsRE : /<\/?[^>]+>/gi,\r
+    \r
+    /**\r
+     * Strips all HTML tags to sort on text only\r
+     * @param {Mixed} s The value being converted\r
+     * @return {String} The comparison value\r
+     */\r
+    asText : function(s){\r
+        return String(s).replace(this.stripTagsRE, "");\r
+    },\r
+    \r
+    /**\r
+     * Strips all HTML tags to sort on text only - Case insensitive\r
+     * @param {Mixed} s The value being converted\r
+     * @return {String} The comparison value\r
+     */\r
+    asUCText : function(s){\r
+        return String(s).toUpperCase().replace(this.stripTagsRE, "");\r
+    },\r
+    \r
+    /**\r
+     * Case insensitive string\r
+     * @param {Mixed} s The value being converted\r
+     * @return {String} The comparison value\r
+     */\r
+    asUCString : function(s) {\r
+       return String(s).toUpperCase();\r
+    },\r
+    \r
+    /**\r
+     * Date sorting\r
+     * @param {Mixed} s The value being converted\r
+     * @return {Number} The comparison value\r
+     */\r
+    asDate : function(s) {\r
+        if(!s){\r
+            return 0;\r
+        }\r
+        if(Ext.isDate(s)){\r
+            return s.getTime();\r
+        }\r
+       return Date.parse(String(s));\r
+    },\r
+    \r
+    /**\r
+     * Float sorting\r
+     * @param {Mixed} s The value being converted\r
+     * @return {Float} The comparison value\r
+     */\r
+    asFloat : function(s) {\r
+       var val = parseFloat(String(s).replace(/,/g, ""));\r
+       return isNaN(val) ? 0 : val;\r
+    },\r
+    \r
+    /**\r
+     * Integer sorting\r
+     * @param {Mixed} s The value being converted\r
+     * @return {Number} The comparison value\r
+     */\r
+    asInt : function(s) {\r
+        var val = parseInt(String(s).replace(/,/g, ""), 10);\r
+        return isNaN(val) ? 0 : val;\r
+    }\r
+};
\ No newline at end of file