TimeTable.js 5.56 KB
/**
 * Project      : AMDA-NG
 * Name         : timeTable.js 
 * Description  : TimeTable Business Object Definition
 * @class amdaModel.TimeTable
 * @extends amdaModel.AmdaObject 
 * 
 * @author cdarmon
 * @version $Id: TimeTable.js 1907 2013-11-25 15:59:42Z myriam $
 ******************************************************************************
 *    FT Id     :   Date   : Name - Description
 ******************************************************************************
 *	:           :24/03/2011: CDA – creation
 *      :           :22/06/2011: elena - extends generic class AmdaObject
 */


Ext.define('amdaModel.Interval', {
    extend: 'amdaModel.AmdaObject', 
    fields: [
        {
            name: 'id',
            convert: function(value, rec){
                // generate id only if start and stop fields exists
                return rec.get('start')&rec.get('stop')?Ext.id():null;
            },
            persist: false
        },
        { name: 'start', type : 'date', defaultValue : new Date(),
	  convert: function(value,rec) {
		   if (!Ext.isDate(value)){
		    var valueString = new String(value);
		    var date = new Date(valueString.replace(/\-/g,'\/').replace(/[T|Z]/g,' '));
		      return date;
		   }
		   return value;
		   }
	},
        { name: 'stop', type : 'date', defaultValue : new Date(),
	  convert: function(value,rec) {
		   if (!Ext.isDate(value)){
		    var valueString = new String(value);
		    var date = new Date(valueString.replace(/\-/g,'\/').replace(/[T|Z]/g,' '));
		      return date;
		   }
		   return value;
		   }
	},
        {
            name: 'durationHour',
            type: 'float',
            convert: function(value, rec){
                if (rec.get('stop') && rec.get('start') && (rec.get('stop')-rec.get('start'))>=0) {
                    return (rec.get('stop') - rec.get('start'))/3600000.0;
                }
            },
            persist: false
        },
        {
            name: 'durationMin',
            type: 'float',
            convert: function(value, rec){
                if (rec.get('stop') && rec.get('start') && (rec.get('stop')-rec.get('start'))>=0) {
                    return (rec.get('stop') - rec.get('start'))/60000.0;
                }
            },
            persist: false
        },
        {
            name: 'durationSec',
            type: 'float',
            convert: function(value, rec){
                if (rec.get('stop') && rec.get('start') && (rec.get('stop')-rec.get('start'))>=0) {
                    return (rec.get('stop') - rec.get('start'))/1000.0;
                }
            },
            persist: false
        },
        { name: 'cacheId', type : 'int'},
        { name: 'isNew', type : 'boolean', defaultValue: false},
        { name: 'isModified', type : 'boolean', defaultValue: false}
    ],
    
    getJsonValues : function () {
        var values  = new Object();
        values.start = this.get('start');
        values.stop = this.get('stop');
        return values;
    },
    
    proxy: {
        type: 'direct',
        api :
        {
              read   :  AmdaAction.readTTCacheIntervals
        },
        extraParams : {'typeTT' : ''},
        reader:
        {
          type: 'json',
          root: 'intervals',
          totalProperty : 'totalCount'
        }
    }
    
 /* 
    validations: [
        {type: 'presence',  field: 'age'},
        {type: 'length',    field: 'name',     min: 2},
        {type: 'inclusion', field: 'gender',   list: ['Male', 'Female']},
        {type: 'exclusion', field: 'username', list: ['Admin', 'Operator']},
        {type: 'format',    field: 'username', matcher: /([a-z]+)[0-9]{2,3}/}
    ],
*/
    
});


Ext.define('amdaModel.TimeTable', {
	
    extend: 'amdaModel.AmdaObject',
	
    fields : [
	    {name: 'fromPlugin', type: 'boolean', defaultValue: false},
            {name: 'created', type: 'date'},
            {name: 'description', type: 'string'},
            {name: 'history', type: 'string'},            
            {name: 'nbIntervals', type: 'int'},
            {name: 'objName', type: 'string', defaultValue: ""},
            {name: 'objFormat', type: 'string', defaultValue: ""},
	    {name: 'folderId', type: 'string', defaultValue: ""},
            {name: 'cacheToken', type: 'string', defaultValue: ""}
	], 
	
	/*commit: function(){
	    this.callParent(arguments);
	    
	    // fix the modifications for its intervals
	    Ext.Array.each(this.get('intervals'), function(item, index, all) {	
//TODO check if JSON object should be processed	      
	       if (item.$className) {  
	                   item.commit();
	       }	   
        });
	    
	},*/
	
//	hasMany: {model: 'amdaModel.Interval', name: 'intervals'},
    
    /**
     * get TimeTable values to sent to Server
     * @return object
     */
	//TODO utf8_encode() and Ext.urlEncode() ???
    getJsonValues : function (hasId) {
    	var values  = new Object();	    
    	if (hasId) {
    		values.id = this.get('id');
    	}
    	values.name = this.get('name');
    	values.created = this.get('created');
    	if (this.get('description').match(/[a-z,0-9]/gi) != null) {
    		values.description = this.get('description');
    	}
    	if (this.get('history').match(/[a-z,0-9]/gi) != null) {
    		values.history = this.get('history');
    	}
    	values.objName = this.get('objName');
    	values.objFormat = this.get('objFormat');
        values.folderId = this.get('folderId');
    	values.nbIntervals = this.get('nbIntervals');
    	values.cacheToken = this.get('cacheToken');
    	
    	values.leaf = true;
    	values.nodeType = amdaModel.TimeTableNode.nodeType;
    	return values;
    }

});