PlotParamForm.js 5.25 KB
/**
 * Project   : AMDA-NG
 * Name      : PlotParamForm.js
 * @class   amdaPlotComp.PlotParamForm
 * @extends amdaPlotComp.amdaPlotComp.PlotStandardForm
 * @brief   Form to define specifics param options
 * @author  Benjamin Renard
 * @version $Id: PlotParamForm.js benjamin $
 */

Ext.define('amdaPlotComp.PlotParamForm', {
	extend: 'amdaPlotComp.PlotStandardForm',

	requires: [
		'amdaPlotComp.PlotSerieForm',
		'amdaPlotComp.PlotOrbitSerieForm',
		'amdaPlotComp.PlotSpectroForm',
                                        'amdaPlotComp.PlotSauvaudForm',
		'amdaPlotComp.PlotStatusBarForm',
		'amdaPlotComp.PlotTickBarForm',
		'amdaPlotComp.PlotInstantSerieForm',
		'amdaPlotComp.PlotInstantSpectroForm',
		'amdaPlotComp.PlotIntervalsForm',
		'amdaUI.ParamArgumentsUI'
	],

	drawingOptionsContainer: null,

	drawingOptionsFormsManager: new Ext.AbstractManager(),

	paramArgs: null,

	isFirstMsg: true,

	destroy: function () {
		this.drawingOptionsFormsManager.each(function (key, value, length) {
			this.drawingOptionsFormsManager.unregister(value);
			value.destroy();
		}, this);
		this.callParent();
	},

	setObject: function (object) {
		this.object = object;
		this.loadRecord(this.object);
		this.updateDrawingOptions(this.object.get('param-drawing-type'), this.object.get('paramid'));
	},

	getDrawingOptionsForm: function (type) {
		var formId = '';
		if (!type || (type == ''))
			formId = 'none';
		else
			formId = type;

		formId += '-drawing-options-form';
		if (!this.drawingOptionsFormsManager.get(formId)) {
			switch (type) {
				//Create drawing options form
				case 'serie':
					this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotSerieForm({ id: formId }));
					break;
				case 'orbit-serie':
					this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotOrbitSerieForm({ id: formId }));
					break;
                                                                                case 'sauvaud':
                                                                                                    this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotSauvaudForm({ id: formId }));
					break;
				case 'spectro':
					this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotSpectroForm({ id: formId }));
					break;
				case 'status-bar':
					this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotStatusBarForm({ id: formId }));
					break;
				case 'tick-bar':
					this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotTickBarForm({ id: formId }));
					break;
				case 'iserie':
					this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotInstantSerieForm({ id: formId }));
					break;
				case 'ispectro':
					this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotInstantSpectroForm({ id: formId }));
					break;
				case 'intervals':
					this.drawingOptionsFormsManager.register(new amdaPlotComp.PlotIntervalsForm({ id: formId }));
					break;
				default:
					this.drawingOptionsFormsManager.register(new Ext.form.Label({ id: formId, text: 'No available options for this drawing type' }));
			}
		}

		return this.drawingOptionsFormsManager.get(formId);

	},

	updateDrawingOptions: function (drawingType, paramId) {
		var typeField = this.getForm().findField('param-drawing-type');

		var availableDrawingObjects = this.object.getAvailableDrawingObjectByPlotType(this.crtTree.getSelectedPlotType());
		typeField.getStore().loadData(availableDrawingObjects);
		typeField.suspendEvents();
		typeField.setValue(drawingType);
		typeField.resumeEvents(false);

		this.drawingOptionsContainer.removeAll(false);

		var drawingOptionsForm = this.getDrawingOptionsForm(drawingType);
		this.drawingOptionsContainer.add(drawingOptionsForm);
		drawingOptionsForm.crtTree = this.crtTree;
		if (drawingOptionsForm.setObject)
			drawingOptionsForm.setObject(this.object);
		if (this.paramArgs && paramId)
			this.paramArgs.editParameter(this.object, this, function (uiScope) {
				uiScope.crtTree.refresh();
			});
	},

	onChangeParamArgs: function (uiScope, args_key, newValue, oldValue, isTemplateArg) {
		if ((uiScope.isFirstMsg) && (uiScope.object.get('type') == 2) && (uiScope.object.get('dim1-sum-type') == 0) && (uiScope.object.get('dim2-sum-type') == 0) &&
			(uiScope.object.get('dim1-index') == '*') && (uiScope.object.get('dim2-index') == '*')) {
			uiScope.isFirstMsg = false;
			myDesktopApp.warningMsg('If argument <i>All</i> is set for both dimensions output will be the total sum <b>(not spectra!)</b>');
		}
		uiScope.crtTree.refresh();
	},

	getFormItems: function () {
		var me = this;

		this.drawingOptionsContainer = Ext.create('Ext.container.Container', {
			layout: 'fit'
		});

		this.paramArgs = Ext.create('amdaUI.ParamArgumentsUI', {
			onChange: me.onChangeParamArgs,
			scope: me
		});

		//ToDoparamArgsPlug
		var paramInfoFieldSet = this.addStandardFieldSet('Arguments', '', [this.paramArgs]);
		paramInfoFieldSet.collapsed = false;

		return [
			paramInfoFieldSet,
			this.addStandardCombo('param-drawing-type', 'Drawing type', [{ 'key': '', 'value': 'None' }], function (name, value, oldValue) {
				if (me.object.get('param-drawing-type') != value) {
					me.object.changeDrawingType(value);
					me.object.set('param-drawing-type', value);
					me.crtTree.refresh();
					me.updateDrawingOptions(value);
				}
			}),
			this.drawingOptionsContainer
		];
	}
});