X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/530ef4b6c5b943cfa68b779d11cf7de29aa878bf..6746dc89c47ed01b165cc1152533605f97eb8e8d:/src/data/Types.js diff --git a/src/data/Types.js b/src/data/Types.js index e609991a..9fcd2d0c 100644 --- a/src/data/Types.js +++ b/src/data/Types.js @@ -1,9 +1,17 @@ -/*! - * Ext JS Library 3.2.1 - * Copyright(c) 2006-2010 Ext JS, Inc. - * licensing@extjs.com - * http://www.extjs.com/license - */ +/* + +This file is part of Ext JS 4 + +Copyright (c) 2011 Sencha Inc + +Contact: http://www.sencha.com/contact + +GNU General Public License Usage +This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. + +If you are unsure which license is appropriate for your use, please contact the sales department at http://www.sencha.com/contact. + +*/ /** * @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 +27,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 +83,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 +96,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,9 +111,9 @@ 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) : 0;
+ parseInt(String(v).replace(Ext.data.Types.stripRe, ''), 10) : (this.useNull ? null : 0);
},
sortType: st.none,
type: 'int'
@@ -106,9 +126,9 @@ 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) : 0;
+ parseFloat(String(v).replace(Ext.data.Types.stripRe, ''), 10) : (this.useNull ? null : 0);
},
sortType: st.none,
type: 'float'
@@ -122,7 +142,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 +160,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 +186,7 @@ Ext.data.Types = new function(){
}
});
- Ext.apply(this, {
+ Ext.apply(Ext.data.Types, {
/**
* @type Object.
* @property BOOLEAN
@@ -169,6 +195,7 @@ Ext.data.Types = new function(){
* The synonym BOOL
is equivalent.
*/
BOOLEAN: this.BOOL,
+
/**
* @type Object.
* @property INTEGER
@@ -176,6 +203,7 @@ Ext.data.Types = new function(){
* The synonym INT
is equivalent.
*/
INTEGER: this.INT,
+
/**
* @type Object.
* @property NUMBER
@@ -184,4 +212,5 @@ Ext.data.Types = new function(){
*/
NUMBER: this.FLOAT
});
-};
\ No newline at end of file
+});
+