PlotParamObject.js 7.37 KB
/**
 * Project      : AMDA-NG
 * Name         : PlotParamObject.js
 * @class   amdaPlotObj.PlotParamObject
 * @extends amdaModel.RequestParamObject
 * @brief   Plot Param Business Object Definition 
 * @author  Benjamin Renard
 * @version $Id: PlotParamObject.js benjamin $
 ******************************************************************************
 *    FT Id     :   Date   : Name - Description
 ******************************************************************************
 *	:           :17/08/2015: BRE  - file creation
 */
 
 		
Ext.define('amdaPlotObj.PlotParamObject', {
	extend: 'amdaModel.RequestParamObject',
	
	requires: [
	           'amdaPlotObj.PlotObjectConfig',
	           'amdaPlotObj.PlotSerieObject',
		   'amdaPlotObj.PlotOrbitSerieObject',
	           'amdaPlotObj.PlotSpectroObject',
	           'amdaPlotObj.PlotStatusBarObject',
	           'amdaPlotObj.PlotTickBarObject',
	           'amdaPlotObj.PlotInstantSerieObject',
	           'amdaPlotObj.PlotInstantSpectroObject',
		   'amdaPlotObj.PlotIntervalsObject'
	],
	
	fields : [
                  {name: 'param-type', type: 'string', defaultValue: 'param'}, //Available types: param, ttcat
                  {name: 'param-ttcat-name', type: 'string'},
	          {name: 'param-drawing-type', type: 'string'},
	          {name: 'param-drawing-object', type: 'auto'}
    ],
    
    associations : [
              {
            	  type  : 'belongsTo',
                  model : 'amdaPlotObj.PlotPanelObject',
                  getterName : 'Panel'
              }
    ],
    
    constructor: function(){
        var me = this;
        me.callParent(arguments);
        if ((arguments.length > 0) && arguments[0])
        {
        	if (arguments[0]['param-drawing-object'])
        		me.loadDrawingObject(arguments[0]['param-drawing-object']);
        }
        this.dirty = false;
    },
    
    loadDrawingObject: function(drawing)
    {
    	var drawingObject = this.get('param-drawing-object');
    	if (drawingObject == null)
    		return;
    	this.set('param-drawing-object', this.createDrawingObjectByType(this.get('param-drawing-type'), drawing));
    	drawingObject.dirty = false;
	 
    },
    
    createDrawingObjectByType : function(drawingType, data)
    {
    	//Create drawing object in relation with the drawing type
    	switch (drawingType)
    	{
    	case 'serie' :
    		return new amdaPlotObj.PlotSerieObject(data);
	case 'orbit-serie' :
		return new amdaPlotObj.PlotOrbitSerieObject(data);
    	case 'spectro' :
    		return new amdaPlotObj.PlotSpectroObject(data);
    	case 'status-bar' :
    		return new amdaPlotObj.PlotStatusBarObject(data);
    	case 'tick-bar' :
    		return new amdaPlotObj.PlotTickBarObject(data);
    	case 'iserie' :
    		return new amdaPlotObj.PlotInstantSerieObject(data);
    	case 'ispectro' :
    		return new amdaPlotObj.PlotInstantSpectroObject(data);
	case 'intervals' :
		return new amdaPlotObj.PlotIntervalsObject(data);
    	default :
    		return null;
    	}
    },
    
    changeDrawingType: function(drawingType, drawData)
    {
    	if (drawingType == this.get('param-drawing-type'))
    		return;
    	
    	this.set('param-drawing-type', drawingType);
    	
    	this.set('param-drawing-object', this.createDrawingObjectByType(drawingType));
    	
    	//Set drawing object to default status
    	if (this.get('param-drawing-object') != null)
    	{
    		this.get('param-drawing-object').setDefaultValues();
    		if (this.get('param-drawing-object').loadFromData && drawData && (drawingType == drawData.type))
    			this.get('param-drawing-object').loadFromData(drawData);
    	}
    },
    
    getAvailableDrawingObjectByPlotType: function(plotType) {
        switch (this.get('param-type'))
        {
        case 'param' :
    	    switch (plotType)
    	    {
    	    case 'timePlot'  :
    	    case 'epochPlot' :
    		return [
    		        {'key' : 'serie', 'value' : 'Serie'},
    		        {'key' : 'spectro', 'value' : 'Spectro'},
    		        {'key' : 'tick-bar', 'value' : 'Tick Bar'},
    		        {'key' : 'status-bar', 'value' : 'Status Bar'}
    		];
    	    case 'xyPlot' :
    		return [
    		        {'key' : 'serie', 'value' : 'Serie'},
    		        {'key' : 'orbit-serie', 'value' : 'Orbit Serie'} 
    		];
    	    case 'instantPlot' :
    		return [
    		        {'key' : 'iserie', 'value' : 'Serie'},
    		        {'key' : 'ispectro', 'value' : 'Spectro'}
    		];
    	    case 'statusPlot' :
    		return [
    		        {'key' : 'status-bar', 'value' : 'Status Bar'}
    		];
    	    case 'tickPlot' :
    		return [
    		        {'key' : 'tick-bar', 'value' : 'Tick Bar'}
    		];
    	    }
            break;
        case 'ttcat':
            switch (plotType)
            {
            case 'timePlot':
                return [
			{'key' : 'intervals', 'value' : 'Intervals'},
                        {'key' : 'serie', 'value' : 'Serie'},
                        {'key' : 'status-bar', 'value' : 'Status Bar'}
                ];
            case 'statusPlot':
                return [
                        {'key' : 'status-bar', 'value' : 'Status Bar'}
                ];
            }
            break;
        }
    	return [];
    },
    
    setDefaultValues: function(drawingType)
    {
    	this.changeDrawingType(drawingType);
    },

    getShortInfo : function(plotType)
    {
    	var availableDrawingObjects = this.getAvailableDrawingObjectByPlotType(plotType);
		var typeName = amdaPlotObj.PlotObjectConfig.getValueByKey(availableDrawingObjects, this.get('param-drawing-type'));
		
		var fullName = '';
		if (this.get('param-type') == 'ttcat') {
			fullName = this.get('param-ttcat-name');
		}
		else {
			fullName = this.getParamFullName();
		}
		
		var info = '';
		
		switch (plotType)
		{
		case 'xyPlot' :
			if (this.get('param-drawing-type') == 'orbit-serie')
			{
				var projection = amdaPlotObj.PlotObjectConfig.getValueByKey(amdaPlotObj.PlotObjectConfig.availableOrbitSerieProjections, this.get('param-drawing-object').get('serie-projection'));
				info = fullName+', '+projection;
			}
			else
				info = fullName+' = f('+this.get('param-drawing-object').get('serie-xaxis-param')+', t)';
			break;
		case 'instantPlot' :
			info = fullName;
			break;
		default :
			info = fullName+' = f(t)';
		}
		
		info += ', '+typeName;
		
		switch (this.get('param-drawing-type'))
		{
		case 'serie' :
			var yAxis = amdaPlotObj.PlotObjectConfig.getValueByKey(amdaPlotObj.PlotObjectConfig.availableYAxes, this.get('param-drawing-object').get('serie-yaxis'));
			info += ', Y '+yAxis;
			break;
		case 'spectro' :
			var yAxis = amdaPlotObj.PlotObjectConfig.getValueByKey(amdaPlotObj.PlotObjectConfig.availableYAxes, this.get('param-drawing-object').get('spectro-yaxis'));
			info += ', Y '+yAxis;
			break;
		}
		
		return info;
    },
    
    isDirty : function()
    {
    	if (this.dirty)
    		return true;
    	if (this.get('param-drawing-object') != null)
    		return this.get('param-drawing-object').dirty;
    	
    	return false;
    },
    
    getJsonValues : function() 
    {
    	var paramValues  = this.callParent(arguments);

    	paramValues['param-type'] = this.get('param-type');
	paramValues['param-ttcat-name'] = this.get('param-ttcat-name');
    	paramValues['param-drawing-type'] = this.get('param-drawing-type');
    	if (this.get('param-drawing-object') != null)
    		paramValues['param-drawing-object'] = this.get('param-drawing-object').getJsonValues();
    	
    	return paramValues;
    }
});