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 @@ *sortType
: Function type
: String 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
+});