X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/0494b8d9b9bb03ab6c22b34dae81261e3cd7e3e6..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/src/data/SortTypes.js diff --git a/src/data/SortTypes.js b/src/data/SortTypes.js index 454024c3..0f52038a 100644 --- a/src/data/SortTypes.js +++ b/src/data/SortTypes.js @@ -1,59 +1,93 @@ -/*! - * Ext JS Library 3.3.1 - * Copyright(c) 2006-2010 Sencha Inc. - * licensing@sencha.com - * http://www.sencha.com/license - */ - /** * @class Ext.data.SortTypes + * This class defines a series of static methods that are used on a + * {@link Ext.data.Field} for performing sorting. The methods cast the + * underlying values into a data type that is appropriate for sorting on + * that particular field. If a {@link Ext.data.Field#type} is specified, + * the sortType will be set to a sane default if the sortType is not + * explicitly defined on the field. The sortType will make any necessary + * modifications to the value and return it. + * + *

+ * It is also possible to create a custom sortType that can be used throughout + * an application. + *


+Ext.apply(Ext.data.SortTypes, {
+    asPerson: function(person){
+        // expects an object with a first and last name property
+        return person.lastName.toUpperCase() + person.firstName.toLowerCase();
+    }    
+});
+
+Ext.define('Employee', {
+    extend: 'Ext.data.Model',
+    fields: [{
+        name: 'person',
+        sortType: 'asPerson'
+    }, {
+        name: 'salary',
+        type: 'float' // sortType set to asFloat
+    }]
+});
+ * 
+ *

* @singleton - * Defines the default sorting (casting?) comparison functions used when sorting data. + * @docauthor Evan Trimboli */ -Ext.data.SortTypes = { +Ext.define('Ext.data.SortTypes', { + + singleton: true, + /** * Default sort that does nothing * @param {Mixed} s The value being converted * @return {Mixed} The comparison value */ - none : function(s){ + none : function(s) { return s; }, - + /** * The regular expression used to strip tags * @type {RegExp} * @property */ stripTagsRE : /<\/?[^>]+>/gi, - + /** * Strips all HTML tags to sort on text only * @param {Mixed} s The value being converted * @return {String} The comparison value */ - asText : function(s){ + asText : function(s) { return String(s).replace(this.stripTagsRE, ""); }, - + /** * Strips all HTML tags to sort on text only - Case insensitive * @param {Mixed} s The value being converted * @return {String} The comparison value */ - asUCText : function(s){ + asUCText : function(s) { return String(s).toUpperCase().replace(this.stripTagsRE, ""); }, - + /** * Case insensitive string * @param {Mixed} s The value being converted * @return {String} The comparison value */ asUCString : function(s) { - return String(s).toUpperCase(); + return String(s).toUpperCase(); }, - + /** * Date sorting * @param {Mixed} s The value being converted @@ -66,19 +100,19 @@ Ext.data.SortTypes = { if(Ext.isDate(s)){ return s.getTime(); } - return Date.parse(String(s)); + return Date.parse(String(s)); }, - + /** * Float sorting * @param {Mixed} s The value being converted * @return {Float} The comparison value */ asFloat : function(s) { - var val = parseFloat(String(s).replace(/,/g, "")); - return isNaN(val) ? 0 : val; + var val = parseFloat(String(s).replace(/,/g, "")); + return isNaN(val) ? 0 : val; }, - + /** * Integer sorting * @param {Mixed} s The value being converted @@ -88,4 +122,4 @@ Ext.data.SortTypes = { var val = parseInt(String(s).replace(/,/g, ""), 10); return isNaN(val) ? 0 : val; } -}; \ No newline at end of file +}); \ No newline at end of file