-<html>\r
-<head>\r
- <title>The source code</title>\r
- <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
- <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
-</head>\r
-<body onload="prettyPrint();">\r
- <pre class="prettyprint lang-js"><div id="cls-Ext.data.Field"></div>/**
+<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>
+</head>
+<body onload="prettyPrint();">
+ <pre class="prettyprint lang-js">/*!
+ * Ext JS Library 3.3.1
+ * Copyright(c) 2006-2010 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+<div id="cls-Ext.data.Field"></div>/**
* @class Ext.data.Field
* <p>This class encapsulates the field definition information specified in the field definition objects
* passed to {@link Ext.data.Record#create}.</p>
* <p>Developers do not need to instantiate this class. Instances are created by {@link Ext.data.Record.create}
* and cached in the {@link Ext.data.Record#fields fields} property of the created Record constructor's <b>prototype.</b></p>
*/
-Ext.data.Field = function(config){
- if(typeof config == "string"){
- config = {name: config};
- }
- Ext.apply(this, config);
-
- if(!this.type){
- this.type = "auto";
- }
-
- var st = Ext.data.SortTypes;
- // named sortTypes are supported, here we look them up
- if(typeof this.sortType == "string"){
- this.sortType = st[this.sortType];
- }
-
- // set default sortType for strings and dates
- if(!this.sortType){
- switch(this.type){
- case "string":
- this.sortType = st.asUCString;
- break;
- case "date":
- this.sortType = st.asDate;
- break;
- default:
- this.sortType = st.none;
+Ext.data.Field = Ext.extend(Object, {
+
+ constructor : function(config){
+ if(Ext.isString(config)){
+ config = {name: config};
}
- }
+ Ext.apply(this, config);
+
+ var types = Ext.data.Types,
+ st = this.sortType,
+ t;
- // define once
- var stripRe = /[\$,%]/g;
-
- // prebuilt conversion function for this field, instead of
- // switching every time we're reading a value
- if(!this.convert){
- var cv, dateFormat = this.dateFormat;
- switch(this.type){
- case "":
- case "auto":
- case undefined:
- cv = function(v){ return v; };
- break;
- case "string":
- cv = function(v){ return (v === undefined || v === null) ? '' : String(v); };
- break;
- case "int":
- cv = function(v){
- return v !== undefined && v !== null && v !== '' ?
- parseInt(String(v).replace(stripRe, ""), 10) : '';
- };
- break;
- case "float":
- cv = function(v){
- return v !== undefined && v !== null && v !== '' ?
- parseFloat(String(v).replace(stripRe, ""), 10) : '';
- };
- break;
- case "bool":
- case "boolean":
- cv = function(v){ return v === true || v === "true" || v == 1; };
- break;
- case "date":
- cv = function(v){
- if(!v){
- return '';
- }
- if(Ext.isDate(v)){
- return v;
- }
- if(dateFormat){
- if(dateFormat == "timestamp"){
- return new Date(v*1000);
- }
- if(dateFormat == "time"){
- return new Date(parseInt(v, 10));
- }
- return Date.parseDate(v, dateFormat);
- }
- var parsed = Date.parse(v);
- return parsed ? new Date(parsed) : null;
- };
- break;
+ if(this.type){
+ if(Ext.isString(this.type)){
+ this.type = Ext.data.Types[this.type.toUpperCase()] || types.AUTO;
+ }
+ }else{
+ this.type = types.AUTO;
+ }
+ // named sortTypes are supported, here we look them up
+ if(Ext.isString(st)){
+ this.sortType = Ext.data.SortTypes[st];
+ }else if(Ext.isEmpty(st)){
+ this.sortType = this.type.sortType;
}
- this.convert = cv;
- }
-};
-Ext.data.Field.prototype = {
+ if(!this.convert){
+ this.convert = this.type.convert;
+ }
+ },
+
<div id="cfg-Ext.data.Field-name"></div>/**
* @cfg {String} name
* The name by which the field is referenced within the Record. This is referenced by, for example,
- * the <tt>dataIndex</tt> property in column definition objects passed to {@link Ext.grid.ColumnModel}.
- * <p>Note: In the simplest case, if no properties other than <tt>name</tt> are required, a field
+ * the <code>dataIndex</code> property in column definition objects passed to {@link Ext.grid.ColumnModel}.
+ * <p>Note: In the simplest case, if no properties other than <code>name</code> are required, a field
* definition may consist of just a String for the field name.</p>
*/
<div id="cfg-Ext.data.Field-type"></div>/**
- * @cfg {String} type
- * (Optional) The data type for conversion to displayable value if <tt>{@link Ext.data.Field#convert convert}</tt>
- * has not been specified. Possible values are
+ * @cfg {Mixed} type
+ * (Optional) The data type for automatic conversion from received data to the <i>stored</i> value if <code>{@link Ext.data.Field#convert convert}</code>
+ * has not been specified. This may be specified as a string value. Possible values are
* <div class="mdetail-params"><ul>
* <li>auto (Default, implies no conversion)</li>
* <li>string</li>
* <li>float</li>
* <li>boolean</li>
* <li>date</li></ul></div>
+ * <p>This may also be specified by referencing a member of the {@link Ext.data.Types} class.</p>
+ * <p>Developers may create their own application-specific data types by defining new members of the
+ * {@link Ext.data.Types} class.</p>
*/
<div id="cfg-Ext.data.Field-convert"></div>/**
* @cfg {Function} convert
* (Optional) A function which converts the value provided by the Reader into an object that will be stored
* in the Record. It is passed the following parameters:<div class="mdetail-params"><ul>
* <li><b>v</b> : Mixed<div class="sub-desc">The data value as read by the Reader, if undefined will use
- * the configured <tt>{@link Ext.data.Field#defaultValue defaultValue}</tt>.</div></li>
+ * the configured <code>{@link Ext.data.Field#defaultValue defaultValue}</code>.</div></li>
* <li><b>rec</b> : Mixed<div class="sub-desc">The data object containing the row as read by the Reader.
* Depending on the Reader type, this could be an Array ({@link Ext.data.ArrayReader ArrayReader}), an object
* ({@link Ext.data.JsonReader JsonReader}), or an XML element ({@link Ext.data.XMLReader XMLReader}).</div></li>
reader: new Ext.data.JsonReader(
{
idProperty: 'key',
- root: 'daRoot',
+ root: 'daRoot',
totalProperty: 'total'
},
Dude // recordType
*/
<div id="cfg-Ext.data.Field-dateFormat"></div>/**
* @cfg {String} dateFormat
- * (Optional) A format string for the {@link Date#parseDate Date.parseDate} function, or "timestamp" if the
+ * <p>(Optional) Used when converting received data into a Date when the {@link #type} is specified as <code>"date"</code>.</p>
+ * <p>A format string for the {@link Date#parseDate Date.parseDate} function, or "timestamp" if the
* value provided by the Reader is a UNIX timestamp, or "time" if the value provided by the Reader is a
- * javascript millisecond timestamp.
+ * javascript millisecond timestamp. See {@link Date}</p>
*/
dateFormat: null,
+
+ <div id="cfg-Ext.data.Field-useNull"></div>/**
+ * @cfg {Boolean} useNull
+ * <p>(Optional) Use when converting received data into a Number type (either int or float). If the value cannot be parsed,
+ * null will be used if useNull is true, otherwise the value will be 0. Defaults to <tt>false</tt>
+ */
+ useNull: false,
+
<div id="cfg-Ext.data.Field-defaultValue"></div>/**
* @cfg {Mixed} defaultValue
* (Optional) The default value used <b>when a Record is being created by a {@link Ext.data.Reader Reader}</b>
- * when the item referenced by the <tt>{@link Ext.data.Field#mapping mapping}</tt> does not exist in the data
+ * when the item referenced by the <code>{@link Ext.data.Field#mapping mapping}</code> does not exist in the data
* object (i.e. undefined). (defaults to "")
*/
defaultValue: "",
sortType : null,
<div id="cfg-Ext.data.Field-sortDir"></div>/**
* @cfg {String} sortDir
- * (Optional) Initial direction to sort (<tt>"ASC"</tt> or <tt>"DESC"</tt>). Defaults to
- * <tt>"ASC"</tt>.
+ * (Optional) Initial direction to sort (<code>"ASC"</code> or <code>"DESC"</code>). Defaults to
+ * <code>"ASC"</code>.
*/
sortDir : "ASC",
- <div id="cfg-Ext.data.Field-allowBlank"></div>/**
- * @cfg {Boolean} allowBlank
- * (Optional) Used for validating a {@link Ext.data.Record record}, defaults to <tt>true</tt>.
- * An empty value here will cause {@link Ext.data.Record}.{@link Ext.data.Record#isValid isValid}
- * to evaluate to <tt>false</tt>.
- */
- allowBlank : true
-};</pre> \r
-</body>\r
+ <div id="cfg-Ext.data.Field-allowBlank"></div>/**
+ * @cfg {Boolean} allowBlank
+ * (Optional) Used for validating a {@link Ext.data.Record record}, defaults to <code>true</code>.
+ * An empty value here will cause {@link Ext.data.Record}.{@link Ext.data.Record#isValid isValid}
+ * to evaluate to <code>false</code>.
+ */
+ allowBlank : true
+});
+</pre>
+</body>
</html>
\ No newline at end of file