/** * Project  : AMDA-NG * Name : PlotCurveForm.js * @class amdaPlotComp.PlotCurveForm * @extends amdaPlotComp.PlotStandardForm * @brief Form to define specifics curve options * @author Benjamin Renard * @version $Id: PlotCurveForm.js benjamin $ */ Ext.define('amdaPlotComp.PlotCurveForm', { extend: 'amdaPlotComp.PlotStandardForm', requires: [ 'amdaPlotObj.PlotCurveDef' ], curveParamsContainer : null, setObject : function(object) { this.object = object; if (this.object != null) { this.updateSerieIdList(); this.loadRecord(this.object); this.updateParamsContainer(); } }, //Function called after element creation by PlotElementPanel //Override the default PlotStandardForm function updateElement: function(onAfterUpdate) { //Update list of available curves this.updateCurveList(function () { if (onAfterUpdate) onAfterUpdate(); }); }, updateParamsContainer: function() { if (this.curveParamsContainer == null) return; var curveNameField = this.getForm().findField('curve-name'); this.curveParamsContainer.removeAll(); if (curveNameField.getValue() == '') return; var me = this; this.object.params().each(function (param) { if (param.get('curve-param-internal')) return; var newParamField = Ext.create('Ext.form.field.Number', { name: param.get('curve-param-name'), fieldLabel: param.get('curve-param-name'), decimalPrecision : 3, value: param.get('curve-param-value'), listeners: { change: function(field, newValue, oldValue, eOpts) { param.set('curve-param-value', newValue); }, scope: me } }); me.curveParamsContainer.add(newParamField); }); }, updateCurveList: function(onReady) { var curvesDefStore = Ext.data.StoreManager.lookup('curvesDefStore'); var curveNameField = this.getForm().findField('curve-name'); if (!curvesDefStore) { curvesDefStore = Ext.create('Ext.data.Store', { model: 'amdaPlotObj.PlotCurveDef', storeId: 'curvesDefStore' }); curveNameField.getStore().removeAll(); curvesDefStore.load({ scope: this, callback: function(records, operation, success) { curvesDefStore.each(function (curveDef) { curveNameField.getStore().add({key : curveDef.get('id'), value : curveDef.get('name')}); }); if (onReady != null) onReady(); } }); } else { curveNameField.getStore().removeAll(); curvesDefStore.each(function (curveDef) { curveNameField.getStore().add({key : curveDef.get('id'), value : curveDef.get('name')}); }); if (onReady != null) onReady(); } }, updateSerieIdList: function() { var attachedSerieField = this.getForm().findField('curve-serie-id'); attachedSerieField.getStore().removeAll(); var panelObject = this.crtTree.getSelectedPanelObject(); if (panelObject == null) return; panelObject.params().each(function(paramObject) { var drawingType = paramObject.get('param-drawing-type'); if ((drawingType == 'serie') || (drawingType == 'orbit-serie')) { attachedSerieField.getStore().add({key : paramObject.get('id'), value : paramObject.getShortInfo(panelObject.get('panel-plot-type'))}); } }); }, getFormItems: function() { var me = this; this.curveParamsContainer = Ext.create('Ext.container.Container', { layout: 'fit' }); return [ this.addStandardCombo('curve-name', 'Curve name', [], function(name, value, oldValue) { if (me.object.get('curve-name') != value) me.object.setCurveName(value, function (){ me.updateParamsContainer(); }); }), this.addStandardCombo('curve-serie-id', 'Attached serie', []), this.addStandardFieldSet('Lines', '', this.addStandardLineItems('curve-line')), this.curveParamsContainer ]; } });