PlotContextManager.js 4.37 KB
/**
 * Project   : AMDA-NG
 * Name      : PlotContextManager.js
 * @class   amdaPlotComp.PlotContextManager
 * @extends 
 * @brief   Manager to retrieve information about a panel by position on the result image
 * @author  Benjamin Renard
 * @version $Id: PlotContextManager.js benjamin $
 */

Ext.define('amdaPlotComp.PlotContextManager', {
	singleton: true,
	
	getPanel : function(context, xPos, yPos)
	{
		if (!context.success)
			return null;
		
		if (xPos < 0 || xPos > context.page.width)
			return null;
		
		if (yPos < 0 || yPos > context.page.height)
			return null;
		
		var resPanel = null;
		Ext.each(context.page.panels, function(panel) {
			if ((xPos >= panel.x) && (xPos <= (panel.x+panel.width)) && (yPos >= panel.y) && (yPos <= (panel.y+panel.height)))
			{
				resPanel = panel;
				return;
			}
		});
		
		return resPanel;
	},
	
	getPanelById : function(context, panelId)
	{
		if (!context.success)
			return null;
		
		var resPanel = null;
		Ext.each(context.page.panels, function(panel) {
			if (panel.id == panelId)
			{
				resPanel = panel;
				return;
			}
		});
		
		return resPanel;
	},

	getIntervalsOverMouse: function (context, panel, crtTimestamp) {
		var intervalsOver = {};
		Ext.each(panel.parameters, function (parameter) {
            
            if (!parameter.ttorcat) {
                return;
            }
            
            if (!parameter.ttorcat.intervals) {
                return;
            }

            var columnToShow = parameter.ttorcat.hasOwnProperty('columnToShow') ? parameter.ttorcat.columnToShow : '';
            var columnName = "";

            if ((columnToShow != '') && parameter.ttorcat.columns) {
                Ext.Object.each(parameter.ttorcat.columns, function (column_id, column_value) {
                    if (column_id == columnToShow) {
                        columnName = column_value.name;
                    }
                });
            }

            Ext.Object.each(parameter.ttorcat.intervals, function (id, interval) {
                if (crtTimestamp > interval.start && crtTimestamp < interval.stop) {
                    if (!intervalsOver.hasOwnProperty(parameter.ttorcat.name)) {
                        intervalsOver[parameter.ttorcat.name] = [];
                    }
                    var intToPush = {
                        'id': id,
                        'start': interval.start,
                        'stop': interval.stop
                    };
                    if ((columnToShow != '') && (columnName != '') && interval.hasOwnProperty('params')) {
                        Ext.Object.each(interval.params, function (param_id, param_value) {
                            if (param_id == columnToShow) {
                                intToPush['info'] = columnName + ': ' + param_value;
                                return;
                            }
                        });
                    }

                    intervalsOver[parameter.ttorcat.name].push(intToPush);

                }
            });
		});

        return intervalsOver;
	},

	getInstantTimePrev :function(context)
	{
		if (!context.success)
			return null;
		
		if(context.page.instantTimeNav)
			return context.page.instantTimeNav.prevTime;
	},

	getInstantTimeNext :function(context)
	{
		if (!context.success)
			return null;
		
		if(context.page.instantTimeNav)
			return context.page.instantTimeNav.nextTime;
	},

	getPanelAxisById : function(panelContext, axisId)
	{
		if (!panelContext || !panelContext.plotArea)
			return null;
		
		var resAxis = null;
		Ext.each(panelContext.plotArea.axes, function(axis) {
			if (axis.id == axisId)
			{
				resAxis = axis;
				return;
			}
		});
		
		return resAxis;
	},
	
	isInPlotArea : function(panelContext, xPos, yPos)
	{
		if (!panelContext.plotArea)
			return false;
		
		return ((xPos >= panelContext.plotArea.x) && (xPos <= (panelContext.plotArea.x+panelContext.plotArea.width)) &&
				(yPos >= panelContext.plotArea.y) && (yPos <= (panelContext.plotArea.y+panelContext.plotArea.height)));
	},
	
	toAxisValue : function(axisContext, pixelMin, pixelMax, pixelValue)
	{
		if (pixelMax == pixelMin)
			return NaN;
		
		if (axisContext.logarithmic)
		{
			var value = axisContext.min + (pixelValue - pixelMin)/(pixelMax - pixelMin)*(axisContext.max-axisContext.min);
			return Math.pow(10,value);
		}
		
		return axisContext.min + (pixelValue - pixelMin)/(pixelMax - pixelMin)*(axisContext.max-axisContext.min);
	}
});