PlotContextManager.js 2.12 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;
	},
	
	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);
	}
});