X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/0494b8d9b9bb03ab6c22b34dae81261e3cd7e3e6..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/src/data/Types.js diff --git a/src/data/Types.js b/src/data/Types.js index 884bf2ec..343dcbdf 100644 --- a/src/data/Types.js +++ b/src/data/Types.js @@ -1,9 +1,3 @@ -/*! - * Ext JS Library 3.3.1 - * Copyright(c) 2006-2010 Sencha Inc. - * licensing@sencha.com - * http://www.sencha.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}.

@@ -19,8 +13,8 @@ *

  • v : Mixed
    The data value as read by the Reader, if undefined will use * the configured {@link Ext.data.Field#defaultValue defaultValue}.
  • *
  • rec : Mixed
    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}).
  • + * Depending on the Reader type, this could be an Array ({@link Ext.data.reader.Array ArrayReader}), an object + * ({@link Ext.data.reader.Json JsonReader}), or an XML element. * *
  • sortType : Function
    A function to convert the stored data into comparable form, as defined by {@link Ext.data.SortTypes}.
  • *
  • type : String
    A textual data type name.
  • @@ -39,21 +33,28 @@ Ext.data.Types.VELATLONG = { type: 'VELatLong' }; - *

    Then, when declaring a Record, use

    
    + * 

    Then, when declaring a Model, 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 }
    -]);
    +Ext.define('Unit',
    +    extend: 'Ext.data.Model', 
    +    fields: [
    +        { 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(){ +Ext.define('Ext.data.Types', { + singleton: true, + requires: ['Ext.data.SortTypes'] +}, function() { var st = Ext.data.SortTypes; - Ext.apply(this, { + + Ext.apply(Ext.data.Types, { /** * @type Regexp * @property stripRe @@ -68,7 +69,9 @@ Ext.data.Types = new function(){ * 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; }, + convert: function(v) { + return v; + }, sortType: st.none, type: 'auto' }, @@ -79,7 +82,10 @@ Ext.data.Types = new function(){ * 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); }, + convert: function(v) { + var defaultValue = this.useNull ? null : ''; + return (v === undefined || v === null) ? defaultValue : String(v); + }, sortType: st.asUCString, type: 'string' }, @@ -91,7 +97,7 @@ Ext.data.Types = new function(){ *

    The synonym INTEGER is equivalent.

    */ INT: { - convert: function(v){ + convert: function(v) { return v !== undefined && v !== null && v !== '' ? parseInt(String(v).replace(Ext.data.Types.stripRe, ''), 10) : (this.useNull ? null : 0); }, @@ -106,7 +112,7 @@ Ext.data.Types = new function(){ *

    The synonym NUMBER is equivalent.

    */ FLOAT: { - convert: function(v){ + convert: function(v) { return v !== undefined && v !== null && v !== '' ? parseFloat(String(v).replace(Ext.data.Types.stripRe, ''), 10) : (this.useNull ? null : 0); }, @@ -122,7 +128,12 @@ Ext.data.Types = new function(){ *

    The synonym BOOLEAN is equivalent.

    */ BOOL: { - convert: function(v){ return v === true || v === 'true' || v == 1; }, + convert: function(v) { + if (this.useNull && v === undefined || v === null || v === '') { + return null; + } + return v === true || v === 'true' || v == 1; + }, sortType: st.none, type: 'bool' }, @@ -135,23 +146,24 @@ Ext.data.Types = new function(){ * being applied. */ DATE: { - convert: function(v){ + convert: function(v) { var df = this.dateFormat; - if(!v){ + if (!v) { return null; } - if(Ext.isDate(v)){ + if (Ext.isDate(v)) { return v; } - if(df){ - if(df == 'timestamp'){ + if (df) { + if (df == 'timestamp') { return new Date(v*1000); } - if(df == 'time'){ + if (df == 'time') { return new Date(parseInt(v, 10)); } - return Date.parseDate(v, df); + return Ext.Date.parse(v, df); } + var parsed = Date.parse(v); return parsed ? new Date(parsed) : null; }, @@ -160,7 +172,7 @@ Ext.data.Types = new function(){ } }); - Ext.apply(this, { + Ext.apply(Ext.data.Types, { /** * @type Object. * @property BOOLEAN @@ -169,6 +181,7 @@ Ext.data.Types = new function(){ *

    The synonym BOOL is equivalent.

    */ BOOLEAN: this.BOOL, + /** * @type Object. * @property INTEGER @@ -176,6 +189,7 @@ Ext.data.Types = new function(){ *

    The synonym INT is equivalent.

    */ INTEGER: this.INT, + /** * @type Object. * @property NUMBER @@ -184,4 +198,4 @@ Ext.data.Types = new function(){ */ NUMBER: this.FLOAT }); -}; \ No newline at end of file +});