123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /*
- * Ext JS Library 2.0 Copyright(c) 2006-2007, Ext JS, LLC. licensing@extjs.com
- *
- * http://extjs.com/license
- */
- // private
- // Field objects are not intended to be created directly, but are created
- // behind the scenes when defined for Record objects. See Record.js for details.
- 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;
- }
- }
- // 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 (v instanceof Date) {
- 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;
- }
- this.convert = cv;
- }
- };
- Ext.data.Field.prototype = {
- dateFormat : null,
- defaultValue : "",
- mapping : null,
- sortType : null,
- sortDir : "ASC"
- };
|