X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/2e847cf21b8ab9d15fa167b315ca5b2fa92638fc..6a7e4474cba9d8be4b2ec445e10f1691f7277c50:/src/data/Types.js diff --git a/src/data/Types.js b/src/data/Types.js new file mode 100644 index 00000000..8a2a8f2b --- /dev/null +++ b/src/data/Types.js @@ -0,0 +1,187 @@ +/*! + * Ext JS Library 3.2.0 + * Copyright(c) 2006-2010 Ext JS, Inc. + * licensing@extjs.com + * http://www.extjs.com/license + */ +/** + * @class Ext.data.Types + *
This is s static class containing the system-supplied data types which may be given to a {@link Ext.data.Field Field}.
+ *The properties in this class are used as type indicators in the {@link Ext.data.Field Field} class, so to + * test whether a Field is of a certain type, compare the {@link Ext.data.Field#type type} property against properties + * of this class.
+ *Developers may add their own application-specific data types to this class. Definition names must be UPPERCASE. + * each type definition must contain three properties:
+ *convert
: FunctionsortType
: Function type
: String For example, to create a VELatLong field (See the Microsoft Bing Mapping API) containing the latitude/longitude value of a datapoint on a map from a JsonReader data block
+ * which contained the properties lat
and long
, you would define a new data type like this:
+// Add a new Field data type which stores a VELatLong object in the Record.
+Ext.data.Types.VELATLONG = {
+ convert: function(v, data) {
+ return new VELatLong(data.lat, data.long);
+ },
+ sortType: function(v) {
+ return v.Latitude; // When sorting, order by latitude
+ },
+ type: 'VELatLong'
+};
+
+ * Then, when declaring a Record, use
+var types = Ext.data.Types; // allow shorthand type access
+UnitRecord = Ext.data.Record.create([
+ { name: 'unitName', mapping: 'UnitName' },
+ { name: 'curSpeed', mapping: 'CurSpeed', type: types.INT },
+ { name: 'latitude', mapping: 'lat', type: types.FLOAT },
+ { name: 'latitude', mapping: 'lat', type: types.FLOAT },
+ { name: 'position', type: types.VELATLONG }
+]);
+
+ * @singleton
+ */
+Ext.data.Types = new function(){
+ var st = Ext.data.SortTypes;
+ Ext.apply(this, {
+ /**
+ * @type Regexp
+ * @property stripRe
+ * A regular expression for stripping non-numeric characters from a numeric value. Defaults to /[\$,%]/g.
+ * This should be overridden for localization.
+ */
+ stripRe: /[\$,%]/g,
+
+ /**
+ * @type Object.
+ * @property AUTO
+ * This data type means that no conversion is applied to the raw data before it is placed into a Record.
+ */
+ AUTO: {
+ convert: function(v){ return v; },
+ sortType: st.none,
+ type: 'auto'
+ },
+
+ /**
+ * @type Object.
+ * @property STRING
+ * This data type means that the raw data is converted into a String before it is placed into a Record.
+ */
+ STRING: {
+ convert: function(v){ return (v === undefined || v === null) ? '' : String(v); },
+ sortType: st.asUCString,
+ type: 'string'
+ },
+
+ /**
+ * @type Object.
+ * @property INT
+ * This data type means that the raw data is converted into an integer before it is placed into a Record.
+ * The synonym INTEGER
is equivalent.
The synonym NUMBER
is equivalent.
This data type means that the raw data is converted into a boolean before it is placed into
+ * a Record. The string "true" and the number 1 are converted to boolean true
.
The synonym BOOLEAN
is equivalent.
This data type means that the raw data is converted into a boolean before it is placed into
+ * a Record. The string "true" and the number 1 are converted to boolean true
.
The synonym BOOL
is equivalent.
The synonym INT
is equivalent.
The synonym FLOAT
is equivalent.