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.
+ *
+ * - asText - Removes any tags and converts the value to a string
+ * - asUCText - Removes any tags and converts the value to an uppercase string
+ * - asUCText - Converts the value to an uppercase string
+ * - asDate - Converts the value into Unix epoch time
+ * - asFloat - Converts the value to a floating point number
+ * - asInt - Converts the value to an integer number
+ *
+ *
+ * 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