<!DOCTYPE html>
|
<html>
|
<head>
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<title>The source code</title>
|
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
|
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>
|
<style type="text/css">
|
.highlight { display: block; background-color: #ddd; }
|
</style>
|
<script type="text/javascript">
|
function highlight() {
|
document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
|
}
|
</script>
|
</head>
|
<body onload="prettyPrint(); highlight();">
|
<pre class="prettyprint lang-js"><span id='Ext-data-SortTypes'>/**
|
</span> * @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.
|
* <ul>
|
* <li><b>asText</b> - Removes any tags and converts the value to a string</li>
|
* <li><b>asUCText</b> - Removes any tags and converts the value to an uppercase string</li>
|
* <li><b>asUCText</b> - Converts the value to an uppercase string</li>
|
* <li><b>asDate</b> - Converts the value into Unix epoch time</li>
|
* <li><b>asFloat</b> - Converts the value to a floating point number</li>
|
* <li><b>asInt</b> - Converts the value to an integer number</li>
|
* </ul>
|
* <p>
|
* It is also possible to create a custom sortType that can be used throughout
|
* an application.
|
* <pre><code>
|
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
|
}]
|
});
|
* </code></pre>
|
* </p>
|
* @singleton
|
* @docauthor Evan Trimboli <evan@sencha.com>
|
*/
|
Ext.define('Ext.data.SortTypes', {
|
|
singleton: true,
|
|
<span id='Ext-data-SortTypes-method-none'> /**
|
</span> * Default sort that does nothing
|
* @param {Object} s The value being converted
|
* @return {Object} The comparison value
|
*/
|
none : Ext.identityFn,
|
|
<span id='Ext-data-SortTypes-property-stripTagsRE'> /**
|
</span> * The regular expression used to strip tags
|
* @type {RegExp}
|
* @property
|
*/
|
stripTagsRE : /<\/?[^>]+>/gi,
|
|
<span id='Ext-data-SortTypes-method-asText'> /**
|
</span> * Strips all HTML tags to sort on text only
|
* @param {Object} s The value being converted
|
* @return {String} The comparison value
|
*/
|
asText : function(s) {
|
return String(s).replace(this.stripTagsRE, "");
|
},
|
|
<span id='Ext-data-SortTypes-method-asUCText'> /**
|
</span> * Strips all HTML tags to sort on text only - Case insensitive
|
* @param {Object} s The value being converted
|
* @return {String} The comparison value
|
*/
|
asUCText : function(s) {
|
return String(s).toUpperCase().replace(this.stripTagsRE, "");
|
},
|
|
<span id='Ext-data-SortTypes-method-asUCString'> /**
|
</span> * Case insensitive string
|
* @param {Object} s The value being converted
|
* @return {String} The comparison value
|
*/
|
asUCString : function(s) {
|
return String(s).toUpperCase();
|
},
|
|
<span id='Ext-data-SortTypes-method-asDate'> /**
|
</span> * Date sorting
|
* @param {Object} s The value being converted
|
* @return {Number} The comparison value
|
*/
|
asDate : function(s) {
|
if(!s){
|
return 0;
|
}
|
if(Ext.isDate(s)){
|
return s.getTime();
|
}
|
return Date.parse(String(s));
|
},
|
|
<span id='Ext-data-SortTypes-method-asFloat'> /**
|
</span> * Float sorting
|
* @param {Object} s The value being converted
|
* @return {Number} The comparison value
|
*/
|
asFloat : function(s) {
|
var val = parseFloat(String(s).replace(/,/g, ""));
|
return isNaN(val) ? 0 : val;
|
},
|
|
<span id='Ext-data-SortTypes-method-asInt'> /**
|
</span> * Integer sorting
|
* @param {Object} s The value being converted
|
* @return {Number} The comparison value
|
*/
|
asInt : function(s) {
|
var val = parseInt(String(s).replace(/,/g, ""), 10);
|
return isNaN(val) ? 0 : val;
|
}
|
});</pre>
|
</body>
|
</html>
|