:: Forum >> Version 2 >>

Table model for JSON data

More information on this topic is available in the documentation section: /general.faq.releases/.

I'm to lazy to deal with XML and CSV is not an option. Therefor a created a Table class to deal with JSON data I receive from the server. It is even simpler than the CSV version- no parsing - just call eval(). I havn't tested putting a format on columns though. Here you go:

Use or include in 2.0 final at your own risk ...

/****************************************************************

*****************************************************************/

if (!AW.JSON) {AW.JSON = {}}

AW.JSON.Table AW.HTTP.Request.subclass();

AW.JSON.Table.create = function(){

/****************************************************************

    Table model for loading and parsing data in JSON text format.

*****************************************************************/

    
var obj this.prototype;
    var 
_super this.superclass.prototype;

/****************************************************************

    Allows to process the received text.

    @param text (String) The downloaded text.

*****************************************************************/

    
obj.response = function(text){

                
this._data = eval('(' text ')');
       
        if (
this.$owner) {
            
this.$owner.clearSelectionModel();
            
this.$owner.clearSortModel();
            
this.$owner.clearRowModel();
            
this.$owner.setRowCount(this.getCount());
            
this.$owner.refresh();
        }
//        _super.response.call(this);
    
};

    
obj._data = [];
    
obj._formats = [];

/****************************************************************

    Allows to specify the formatting object for the column.

    @param format (Object) The formatting object.
    @param index (Index) The column index.

*****************************************************************/

    
obj.setFormat = function(formatindex){
        
this._formats this._formats.concat();
        
this._formats[index] = format;
    };

/****************************************************************

    Allows to specify the formatting objects for each column.

    @param formats (Array) The array of formatting objects.

*****************************************************************/

    
obj.setFormats = function(formats){
        
this._formats formats;
    };

/****************************************************************

    Returns the number of data rows.

*****************************************************************/

    
obj.getCount = function(){
        return 
this._data.length;
    };

/****************************************************************

    Returns the index.

*****************************************************************/

    
obj.getIndex = function(i){
        return 
i;
    };

/****************************************************************

    Returns the cell text.

    @param r (Index) Row index.
    @param c (Index) Column index.

*****************************************************************/

    
obj.getData = function(cr){
        return 
this._data[r][c];
    };

/****************************************************************

    Returns the cell text.

    @param i (Index) Row index.
    @param j (Index) Column index.

*****************************************************************/

    
obj.getText = function(ij){
        var 
data this.getData(ij);
        var 
format this._formats[i];
        return 
format ? format.dataToText(data) : data;
    };

/****************************************************************

    Returns the cell image.

    @param i (Index) Row index.
    @param j (Index) Column index.

*****************************************************************/

    
obj.getImage = function(){
        return 
"";
    };

/****************************************************************

    Returns the cell hyperlink.

    @param i (Index) Row index.
    @param j (Index) Column index.

*****************************************************************/

    
obj.getLink = function(){
        return 
"";
    };

/****************************************************************

    Returns the cell value.

    @param i (Index) Row index.
    @param j (Index) Column index.

*****************************************************************/

    
obj.getValue = function(ij){
        var 
data this.getData(ij) || "";
        var 
format this._formats[i];
        return 
format ? format.dataToValue(data) : data;
    };
};
 
Christian M.
Saturday, November 12, 2005



This topic is archived.

Back to /general.faq.releases/

Documentation:

Forum search