DataField.js

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;
            case 'date':
                this.sortType = st.asDate;
            default:
                this.sortType = st.none;
        }
    }
    
    // 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 String(v); };
                break;
            case 'int':
                cv = function(v){ return parseInt(String(v).replace(/[\$,%]/g, ''), 10); };
                break;
            case 'float':
                cv = function(v){ return parseFloat(String(v).replace(/[\$,%]/g, '')); };
                break;
            case 'bool':
            case 'boolean':
                cv = function(v){ return v === true || v === 'true' || v == 1; };
                break;
            case 'date':
                cv = function(v){ 
                    if(v instanceof Date){
                        return v;
                    }
                    if(dateFormat){
                        if(dateFormat == 'timestamp'){
                            return new Date(v*1000);
                        }
                        return Date.parseDate(v, dateFormat);
                    }
                    return new Date(Date.parse(v));
                };
             break;
            
        }
        this.convert = cv;
    }
};

Ext.data.Field.prototype = {
    dateFormat: null,
    defaultValue: '',
    mapping: null,
    sortType : null,
    sortDir : 'ASC'
};

yui-ext - Copyright © 2006 Jack Slocum. | Yahoo! UI - Copyright © 2006 Yahoo! Inc.
All rights reserved.