From 4ca3eefff9fef252fe7c62d2e38c04f233f7e3d0 Mon Sep 17 00:00:00 2001
From: Hacene SI HADJ MOHAND <hacene.si-hadj-mohand@akka.eu>
Date: Wed, 23 Sep 2020 16:05:25 +0200
Subject: [PATCH] il reste plot et stats coté integration

---
 js/app/views/PlotComponents/PlotTree.js |  22 +++++++++++++++++++---
 js/app/views/StatisticsUI.js            | 902 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 2 files changed, 478 insertions(+), 446 deletions(-)

diff --git a/js/app/views/PlotComponents/PlotTree.js b/js/app/views/PlotComponents/PlotTree.js
index 81d1dd5..4c3bf70 100644
--- a/js/app/views/PlotComponents/PlotTree.js
+++ b/js/app/views/PlotComponents/PlotTree.js
@@ -564,8 +564,8 @@ Ext.define('amdaPlotComp.PlotTree', {
                                                              return record.get('isParameter') ;
                                         case 'amdaModel.AliasNode'        :
     	 	case 'amdaModel.MyDataParamNode'  :
-    	 		return record.isLeaf(); 
-                        
+                                        case 'amdaModel.MyDataParamComponentNode':
+    	 		return record.get('isParameter') ;
     	 	case 'amdaPlotObj.PlotParamTreeNode' :
     	 		var fromPanelObject = null;
     	 		if (this.tabObject.get('tree-full-view'))
@@ -736,8 +736,24 @@ Ext.define('amdaPlotComp.PlotTree', {
                                                 }
                                         this.dropParamToCreate(targetNode, position,idToSent, {'components': components});
                                         return true;
+                                        case 'amdaModel.MyDataParamComponentNode':
+                                        if (!record.get('isParameter'))
+                                            return false;
+                                        //targetNode, position, paramId, paramComponents, isVector, plotOnly
+                                         paramId=record.get('text');
+                                         var parentId = paramId.substr(0, paramId.length - 3);
+                                        idToSent = "wsd_" + parentId;
+                                        var regExp = /\(([\d]+)\)/;
+                                                var component_index = regExp.exec(paramId);
+                                                if (component_index)
+                                                {
+                                                    components = [];
+                                                    components['index1'] = component_index[1];
+                                                }
+                                        this.dropParamToCreate(targetNode, position,idToSent, {'components': components});
+                                        return true;
                                     case 'amdaModel.MyDataParamNode' :
-                                        if (!record.isLeaf())
+                                       if (!record.get('isParameter'))
                                             return false;
                                         this.dropParamToCreate(targetNode, position, "wsd_" + record.get('text'));
                                         return true;
diff --git a/js/app/views/StatisticsUI.js b/js/app/views/StatisticsUI.js
index 4f57ed4..8d66741 100644
--- a/js/app/views/StatisticsUI.js
+++ b/js/app/views/StatisticsUI.js
@@ -7,446 +7,462 @@
  * @author 	 elena
  */
 
-Ext.define('amdaUI.StatisticsUI', 
-{
-	extend: 'Ext.container.Container',
-	alias: 'widget.panelStatistics',
-	
-	requires : [	
-			//'amdaModel.Function'
-			'amdaUI.TimeSelectorUI',
-			'amdaUI.ParamArgumentsPlug',
-			'amdaModel.DownloadParam'
-	],
-	
-	statics : 
-	{	 
-	//	  functionStore : null
-	},
-		
-	constructor: function(config) 
-	{
-		this.init(config); 
-		this.callParent(arguments);
-		this.loadObject();
-				 
-		var paramArgsPlug = this.getPlugin('statistics-param-arguments-plugin');
-		if (paramArgsPlug)
-			paramArgsPlug.onApply = this.onApplyParameterArgs;
-	},
-	
-	loadObject : function()
-	{
-		// load object into form	
-		var basicForm = this.formPanel.items.items[1].getForm();
-		basicForm.loadRecord(this.object);
-		
-	},
-	
-	onApplyParameterArgs : function(parentUI, paramObject) 
-	{
-		parentUI.paramGrid.getView().refresh();
-	}, 
-	
-	addParam : function(paramId, isLeaf, needArgs, components) 
-	{
-		// adding the parameter to the  paramGrid
-		var paramObj = amdaModel.RequestParamObject.getEmptyObj();	
-		paramObj.paramid = paramId;
-        	
-		if (components) {
-			if (components['index1']) {
-				paramObj['dim1-index'] = components['index1'];
-				++paramObj['type'];
-			}
-			
-			if (components['index2']) {
-				paramObj['dim2-index'] = components['index2'];
-				++paramObj['type'];
-			}
-		}
-        	
-		var r = Ext.create('amdaModel.DownloadParam', paramObj);		
-		this.paramGrid.getStore().add(r);
-		this.paramGrid.getSelectionModel().select(this.paramGrid.getStore().getCount()-1);  
-	//	var pos = this.paramGrid.store.getCount();
-	//	this.paramGrid.store.insert(pos,r); 
-		this.paramGrid.getView().refresh();
-		
-		if (needArgs)
-			this.editParameterArgs(r);
-	},
-
-	editParameterArgs: function(record) 
-	{
-		var paramArgsPlug = this.getPlugin('statistics-param-arguments-plugin');
-		
-		if (paramArgsPlug)
-			paramArgsPlug.show('statistics-param-arguments-plugin', record);
-	},
-	
-	addTT : function(TTname,TTid)
-	{ 
-		this.timeSelector.addTT(TTname, TTid); ; 	 
-	},
-	
-	/**
-	* Set Start-Stop from parameter info (Local & MyData)
-	*/ 
-	setTimeFromData : function(obj) {
-		if (!obj.start || !obj.stop)
-			return;
-		
-		var dateStart = new Date(obj.start.replace(/[T|Z]/g,' ').replace(/\-/g,'\/')); 
-		var dateStop = new Date(obj.stop.replace(/[T|Z]/g,' ').replace(/\-/g,'\/')); 
-		
-		this.formPanel.items.items[1].getForm().setValues({ startDate : dateStart, stopDate : dateStop });
-		this.timeSelector.intervalSel.updateDuration();
-	}, 
-	
-	generateCatalog : function()
-	{	     
-		var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.statistics.id);
-		if (module) 
-			module.linkedNode.execute();	     
-	},
-	
-/*
-* Update this.object from form
-*/	
-	updateObject : function()
-	{    
-		// get the basic form of the left 
-		var basicForm = this.formPanel.items.items[1].getForm();
-		var updateStatus = true;	
-		var formValues = basicForm.getValues();
-		this.object.set('name',this.fieldName.getValue());
-		this.object.set('description',formValues.description);
-     	    	    
-		var recs = this.paramGrid.getStore().getNewRecords();
-		var paramArr = new Array();
-		
-		Ext.Array.each(recs, function(rec, index, allItems)
-		{			 			
-			var obj = Ext.clone(rec.data);
-			 
-			if (obj.function == null) 
-			{				
-				myDesktopApp.warningMsg('Please select function : `click to select`'); 
-				updateStatus = false;
-				return;                     
-			}
-			paramArr.push(obj);            	      
-		});
-	    
-		this.object.set('parameter', paramArr);
-	    
-		var timeSource = this.timeSelector.getActiveTimeSource(); 
- 
-		if (timeSource === amdaModel.AmdaTimeObject.inputTimeSrc[0] // timeSource  'TimeTable'
-							&& this.timeSelector.TTGrid.getStore().count() == 0) 
-		{
-			myDesktopApp.warningMsg('You\'ve chosen Time Selection `by TimeTable` but no timeTable was added!'
-						+'<br>You must add one or choose Time Selection `by Interval`'); 
-			return false;    
-		}
-
-		basicForm.updateRecord(this.object);
-		this.object.set('timesrc', timeSource);
-		// set valid intervals into TimeTable object
-		if (timeSource === amdaModel.AmdaTimeObject.inputTimeSrc[0])
-			this.object.set('timeTables',this.timeSelector.TTGrid.getStore().data.items);          
-	 	      
-		return updateStatus;	    
-	},
-	
-	/**
-	 * Check if changes were made before closing window 
-	 * @return true if changes
-	 */	
-	fclose : function() 
-	{
-		if (this.status == null)
-			return false;
-		
-		var isDirty = this.formPanel.getForm().isDirty() || (this.status.isModified) || (this.status.nbModified > 0) || (this.status.nbNew > 0);
-		return isDirty;
-	},
-	
-	/**
-	 * View configuration
-	 */
-	init : function (config) 
-	{	  
-		this.fieldName = new Ext.form.field.Text({
-				fieldLabel: 'Catalog Name',
-				allowBlank : false,
-				stripCharsRe: /(^\s+|\s+$)/g,
-				emptyText: 'Please no spaces!',
-				name: 'name',
-	//	      anchor: '100%',
-				validateOnChange: false,
-				validateOnBlur: false,
-				validFlag: false,
-				validator : function() {
-					return this.validFlag;
-			}
-		});
-	  
-		var ttStore = Ext.create('Ext.data.Store', 
-		{
-			fields: [ 'name', 'hidden_id']	
-		});
-		
-		this.timeSelector = new amdaUI.TimeSelectorUI({id: 'statisticsTimeSelector', flex:1}); 
-	
-		var store = Ext.create('Ext.data.Store', 
-			{
-					fields: ['name', 'function'] 
-			});
-	
-		this.paramGrid = Ext.create('Ext.grid.Panel', 
-			{ 
-				title: 'Select Parameter & Apply Function',
-				selType : 'rowmodel',
-				flex: 2,
-	//			height :250,
-				store : store, 
-				columns: [
-					{ xtype: 'rownumberer' },
-					{ 
-						header: "Parameter Name", 
-						dataIndex: 'name', 
-						flex:1, 
-						sortable: false, 
-						menuDisabled : true ,
-						renderer: function (val, meta, rec) {
-							return rec.getParamFullName();
-						}
-					},
-					//	{ header: 'parameter',  dataIndex: 'name', menuDisabled : true, sortable : false },
-					{ header: 'function',  dataIndex: 'function', menuDisabled : true, sortable : false,
-						editor: 
-						{
-							xtype: 'combo', queryMode : 'local',		    
-							//emptyText : 'please click to select function',
-							store: [ 'min', 'max', 'mean' ,'RMS','median','variance','skewness','kurtosis','count','countNotNan','countTrue' ],
-							triggerAction: 'all',  		         
-							//lazyInit: false,
-							listeners: {
-								focus: function(obj) {
-									obj.expand();
-								}
-							}
-						},
-						renderer: function(v)
-						{
-							if(v != null && v.length > 0 )
-									return v;
-							else
-									return 'click to select';                    
-						} 	  
-					},
-					{ menuDisabled : true, width: 30, renderer: function(){
-							return '<div class="icon-remover" style="width: 15px; height: 15px;"></div>';
-						}
-					}
-				], 
-				plugins: [ Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 1 })],
-				listeners :
-				{
-					render : function(o,op)
-					{
-						var me = this;
-						var el = me.body.dom;
-						var dropTarget = Ext.create('Ext.dd.DropTarget', el, {
-							ddGroup: 'explorerTree',		    
-							notifyOver  : function(ddSource, e, data)
-							{                                    
-								if (data.records[0].data.nodeType == 'localParam' && data.records[0].get('notyet')) {
-										this.valid = false;
-										return this.dropNotAllowed;   
-								}	
-								if (((data.records[0].data.nodeType == 'localParam')   ||
-											(data.records[0].data.nodeType == 'remoteParam') || 
-											(data.records[0].data.nodeType == 'remoteSimuParam') ||
-											(data.records[0].data.nodeType == 'derivedParam') || 
-											(data.records[0].data.nodeType == 'myDataParam') ||
-											(data.records[0].data.nodeType == 'alias'))&&
-											(data.records[0].isLeaf() || data.records[0].data.isParameter) &&
-											!data.records[0].data.disable)
-								{
-										this.valid = true;
-										return this.dropAllowed;
-								}
-					
-								this.valid = false;
-								return this.dropNotAllowed;
-							},
-							notifyDrop  : function(ddSource, e, data)
-							{
-								if (!this.valid)
-								return false;
-								var nameToSent;
-								var components = null;
-						
-								switch (data.records[0].data.nodeType)
-								{
-									case 'localParam' :
-									case 'remoteParam':
-									case 'remoteSimuParam':                                           
-										nameToSent = data.records[0].get('id');
-										if (data.records[0].get('alias')!= "" )
-											var nameToSent = "#"+data.records[0].get('alias');
-										var component_info = data.records[0].get('component_info');
-										if (component_info && component_info.parentId) 
-										{													
-											if ( component_info.index1 && component_info.index2 )
-											{															 
-												nameToSent = component_info.parentId;
-												components = [];												
-												if (component_info.index1)
-													components['index1'] = component_info.index1;
-												if (component_info.index2)
-													components['index2'] = component_info.index2;
-											}	
-											if ( data.records[0].get('needsArgs') )
-											{															
-												nameToSent = component_info.parentId;	
-												if (component_info.index1)
-												{
-													components = [];	
-													components['index1'] = component_info.index1;
-												}
-											}													
-										}
-										break;
-									case 'alias' :
-										nameToSent = "#"+data.records[0].get('text');
-										break;
-									case 'derivedParam' :
-                                                                                                                                                                        if(data.records[0].modelName=='amdaModel.DerivedParamComponentNode')
-                                                                                                                                                                        {
-                                                                                                                                                                            paramId=data.records[0].get('text');
-                                                                                                                                                                            var parentId=paramId.substr(0,paramId.length-3);
-                                                                                                                                                                            nameToSent = "ws_"+parentId;
-                                                                                                                                                                            var regExp = /\(([\d]+)\)/;
-                                                                                                                                                                             var component_index = regExp.exec(paramId);
-                                                                                                                                                                             if(component_index )
-                                                                                                                                                                             {
-                                                                                                                                                                                 components = [];
-                                                                                                                                                                                 components['index1'] =component_index[1];                                                                                                                                                                             
-                                                                                                                                                                                 }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
-                                                                                                                                                                            break;
-                                                                                                                                                                        }else
-                                                                                                                                                                        {
-									nameToSent = "ws_"+data.records[0].get('text');
-                                                                                                                                                                                    }
-									break;
-									case 'myDataParam' :
-										nameToSent = "wsd_"+data.records[0].get('text');
-										break;
-									default :
-										return false;
-								}
-								var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.statistics.id);
-								if (module)
-								{			     
-									module.addParam(nameToSent, data.records[0].get('leaf'), data.records[0].get('needsArgs'), components);   			    				     
-								}
-								return true;
-							}
-						});
-					},	
-					cellclick : function(grid, cell, cellIndex, record){		     
-							if (cellIndex == 3) 
-							grid.getStore().remove(record);
-					}
-				}    
-			}); 
-      	
- 
-		this.formPanel =  Ext.create('Ext.form.Panel', 
-		{ 
-			region: 'center',	     
-			layout: {
-				type: 'hbox',
-				pack: 'start',
-				align: 'stretch'
-			},
-			defaults: { bodyStyle: {background : '#dfe8f6'}, padding : '3'},
-			fieldDefaults: { labelWidth: 80, labelAlign : 'top' },
-			items: [ {  
-				xtype: 'form',
-				flex : 1,			    
-				layout: {type: 'vbox', pack: 'start', align: 'stretch'},
-				items : [ this.paramGrid ],
-					fbar:[ {   
-						type: 'button',			   
-						text: 'Generate Catalog',
-						scope : this,
-						handler: function()
-						{
-							// update object with user's values
-							// if the return is true (object had been updated)
-							if (this.updateObject()){ 
-								this.generateCatalog();			   			 
-							}
-						}
-					},
-					{   
-						type: 'button',
-						text: 'Reset',
-						scope : this,
-						handler: function() {
-							this.formPanel.getForm().reset();
-							this.paramGrid.store.removeAll();
-							this.timeSelector.TTGrid.store.removeAll();
-						}
-					}]
-				},
-				{            
-					xtype: 'form', 
-					title: 'Additional Information', 
-					flex : 1,
-					trackResetOnLoad: true,  
-					layout: {type: 'vbox', pack: 'start', align: 'stretch', padding : '3'},
-					items : [
-						this.fieldName,
-						{
-							xtype: 'textarea',
-							name: 'description',
-							fieldLabel: 'Description', 			
-							height: 125
-						},
-						this.timeSelector 
-					]
-				}
-			]  
-		}); 
-	 
-		var myConf = {
-					layout: 'border',
-					items: [		   
-					this.formPanel, 		     
-					{
-						xtype: 'panel', 
-						region: 'south',
-						title: 'Information',
-						collapsible: true,
-						collapseMode: 'header',
-						height: 160,
-						autoHide: false,
-						bodyStyle: 'padding:5px',
-						iconCls: 'icon-information',
-						loader: {
-							autoLoad: true,
-							url: helpDir+'statisticsHOWTO'
-						} 
-					}],
-					plugins: [ {ptype: 'paramArgumentsPlugin', pluginId: 'statistics-param-arguments-plugin'}]
-				};
-	    
-		Ext.apply (this, Ext.apply(arguments, myConf));	
-	} 
-});	
+Ext.define('amdaUI.StatisticsUI',
+        {
+            extend: 'Ext.container.Container',
+            alias: 'widget.panelStatistics',
+
+            requires: [
+                //'amdaModel.Function'
+                'amdaUI.TimeSelectorUI',
+                'amdaUI.ParamArgumentsPlug',
+                'amdaModel.DownloadParam'
+            ],
+
+            statics:
+                    {
+                        //	  functionStore : null
+                    },
+
+            constructor: function (config)
+            {
+                this.init(config);
+                this.callParent(arguments);
+                this.loadObject();
+
+                var paramArgsPlug = this.getPlugin('statistics-param-arguments-plugin');
+                if (paramArgsPlug)
+                    paramArgsPlug.onApply = this.onApplyParameterArgs;
+            },
+
+            loadObject: function ()
+            {
+                // load object into form	
+                var basicForm = this.formPanel.items.items[1].getForm();
+                basicForm.loadRecord(this.object);
+
+            },
+
+            onApplyParameterArgs: function (parentUI, paramObject)
+            {
+                parentUI.paramGrid.getView().refresh();
+            },
+
+            addParam: function (paramId, isLeaf, needArgs, components)
+            {
+                // adding the parameter to the  paramGrid
+                var paramObj = amdaModel.RequestParamObject.getEmptyObj();
+                paramObj.paramid = paramId;
+
+                if (components) {
+                    if (components['index1']) {
+                        paramObj['dim1-index'] = components['index1'];
+                        ++paramObj['type'];
+                    }
+
+                    if (components['index2']) {
+                        paramObj['dim2-index'] = components['index2'];
+                        ++paramObj['type'];
+                    }
+                }
+
+                var r = Ext.create('amdaModel.DownloadParam', paramObj);
+                this.paramGrid.getStore().add(r);
+                this.paramGrid.getSelectionModel().select(this.paramGrid.getStore().getCount() - 1);
+                //	var pos = this.paramGrid.store.getCount();
+                //	this.paramGrid.store.insert(pos,r); 
+                this.paramGrid.getView().refresh();
+
+                if (needArgs)
+                    this.editParameterArgs(r);
+            },
+
+            editParameterArgs: function (record)
+            {
+                var paramArgsPlug = this.getPlugin('statistics-param-arguments-plugin');
+
+                if (paramArgsPlug)
+                    paramArgsPlug.show('statistics-param-arguments-plugin', record);
+            },
+
+            addTT: function (TTname, TTid)
+            {
+                this.timeSelector.addTT(TTname, TTid);
+                ;
+            },
+
+            /**
+             * Set Start-Stop from parameter info (Local & MyData)
+             */
+            setTimeFromData: function (obj) {
+                if (!obj.start || !obj.stop)
+                    return;
+
+                var dateStart = new Date(obj.start.replace(/[T|Z]/g, ' ').replace(/\-/g, '\/'));
+                var dateStop = new Date(obj.stop.replace(/[T|Z]/g, ' ').replace(/\-/g, '\/'));
+
+                this.formPanel.items.items[1].getForm().setValues({startDate: dateStart, stopDate: dateStop});
+                this.timeSelector.intervalSel.updateDuration();
+            },
+
+            generateCatalog: function ()
+            {
+                var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.statistics.id);
+                if (module)
+                    module.linkedNode.execute();
+            },
+
+            /*
+             * Update this.object from form
+             */
+            updateObject: function ()
+            {
+                // get the basic form of the left 
+                var basicForm = this.formPanel.items.items[1].getForm();
+                var updateStatus = true;
+                var formValues = basicForm.getValues();
+                this.object.set('name', this.fieldName.getValue());
+                this.object.set('description', formValues.description);
+
+                var recs = this.paramGrid.getStore().getNewRecords();
+                var paramArr = new Array();
+
+                Ext.Array.each(recs, function (rec, index, allItems)
+                {
+                    var obj = Ext.clone(rec.data);
+
+                    if (obj.function == null)
+                    {
+                        myDesktopApp.warningMsg('Please select function : `click to select`');
+                        updateStatus = false;
+                        return;
+                    }
+                    paramArr.push(obj);
+                });
+
+                this.object.set('parameter', paramArr);
+
+                var timeSource = this.timeSelector.getActiveTimeSource();
+
+                if (timeSource === amdaModel.AmdaTimeObject.inputTimeSrc[0] // timeSource  'TimeTable'
+                        && this.timeSelector.TTGrid.getStore().count() == 0)
+                {
+                    myDesktopApp.warningMsg('You\'ve chosen Time Selection `by TimeTable` but no timeTable was added!'
+                            + '<br>You must add one or choose Time Selection `by Interval`');
+                    return false;
+                }
+
+                basicForm.updateRecord(this.object);
+                this.object.set('timesrc', timeSource);
+                // set valid intervals into TimeTable object
+                if (timeSource === amdaModel.AmdaTimeObject.inputTimeSrc[0])
+                    this.object.set('timeTables', this.timeSelector.TTGrid.getStore().data.items);
+
+                return updateStatus;
+            },
+
+            /**
+             * Check if changes were made before closing window 
+             * @return true if changes
+             */
+            fclose: function ()
+            {
+                if (this.status == null)
+                    return false;
+
+                var isDirty = this.formPanel.getForm().isDirty() || (this.status.isModified) || (this.status.nbModified > 0) || (this.status.nbNew > 0);
+                return isDirty;
+            },
+
+            /**
+             * View configuration
+             */
+            init: function (config)
+            {
+                this.fieldName = new Ext.form.field.Text({
+                    fieldLabel: 'Catalog Name',
+                    allowBlank: false,
+                    stripCharsRe: /(^\s+|\s+$)/g,
+                    emptyText: 'Please no spaces!',
+                    name: 'name',
+                    //	      anchor: '100%',
+                    validateOnChange: false,
+                    validateOnBlur: false,
+                    validFlag: false,
+                    validator: function () {
+                        return this.validFlag;
+                    }
+                });
+
+                var ttStore = Ext.create('Ext.data.Store',
+                        {
+                            fields: ['name', 'hidden_id']
+                        });
+
+                this.timeSelector = new amdaUI.TimeSelectorUI({id: 'statisticsTimeSelector', flex: 1});
+
+                var store = Ext.create('Ext.data.Store',
+                        {
+                            fields: ['name', 'function']
+                        });
+
+                this.paramGrid = Ext.create('Ext.grid.Panel',
+                        {
+                            title: 'Select Parameter & Apply Function',
+                            selType: 'rowmodel',
+                            flex: 2,
+                            //			height :250,
+                            store: store,
+                            columns: [
+                                {xtype: 'rownumberer'},
+                                {
+                                    header: "Parameter Name",
+                                    dataIndex: 'name',
+                                    flex: 1,
+                                    sortable: false,
+                                    menuDisabled: true,
+                                    renderer: function (val, meta, rec) {
+                                        return rec.getParamFullName();
+                                    }
+                                },
+                                //	{ header: 'parameter',  dataIndex: 'name', menuDisabled : true, sortable : false },
+                                {header: 'function', dataIndex: 'function', menuDisabled: true, sortable: false,
+                                    editor:
+                                            {
+                                                xtype: 'combo', queryMode: 'local',
+                                                //emptyText : 'please click to select function',
+                                                store: ['min', 'max', 'mean', 'RMS', 'median', 'variance', 'skewness', 'kurtosis', 'count', 'countNotNan', 'countTrue'],
+                                                triggerAction: 'all',
+                                                //lazyInit: false,
+                                                listeners: {
+                                                    focus: function (obj) {
+                                                        obj.expand();
+                                                    }
+                                                }
+                                            },
+                                    renderer: function (v)
+                                    {
+                                        if (v != null && v.length > 0)
+                                            return v;
+                                        else
+                                            return 'click to select';
+                                    }
+                                },
+                                {menuDisabled: true, width: 30, renderer: function () {
+                                        return '<div class="icon-remover" style="width: 15px; height: 15px;"></div>';
+                                    }
+                                }
+                            ],
+                            plugins: [Ext.create('Ext.grid.plugin.CellEditing', {clicksToEdit: 1})],
+                            listeners:
+                                    {
+                                        render: function (o, op)
+                                        {
+                                            var me = this;
+                                            var el = me.body.dom;
+                                            var dropTarget = Ext.create('Ext.dd.DropTarget', el, {
+                                                ddGroup: 'explorerTree',
+                                                notifyOver: function (ddSource, e, data)
+                                                {
+                                                    if (data.records[0].data.nodeType == 'localParam' && data.records[0].get('notyet')) {
+                                                        this.valid = false;
+                                                        return this.dropNotAllowed;
+                                                    }
+                                                    if (((data.records[0].data.nodeType == 'localParam') ||
+                                                            (data.records[0].data.nodeType == 'remoteParam') ||
+                                                            (data.records[0].data.nodeType == 'remoteSimuParam') ||
+                                                            (data.records[0].data.nodeType == 'derivedParam') ||
+                                                            (data.records[0].data.nodeType == 'myDataParam') ||
+                                                            (data.records[0].data.nodeType == 'alias')) &&
+                                                            (data.records[0].isLeaf() || data.records[0].data.isParameter) &&
+                                                            !data.records[0].data.disable)
+                                                    {
+                                                        this.valid = true;
+                                                        return this.dropAllowed;
+                                                    }
+
+                                                    this.valid = false;
+                                                    return this.dropNotAllowed;
+                                                },
+                                                notifyDrop: function (ddSource, e, data)
+                                                {
+                                                    if (!this.valid)
+                                                        return false;
+                                                    var nameToSent;
+                                                    var components = null;
+
+                                                    switch (data.records[0].data.nodeType)
+                                                    {
+                                                        case 'localParam' :
+                                                        case 'remoteParam':
+                                                        case 'remoteSimuParam':
+                                                            nameToSent = data.records[0].get('id');
+                                                            if (data.records[0].get('alias') != "")
+                                                                var nameToSent = "#" + data.records[0].get('alias');
+                                                            var component_info = data.records[0].get('component_info');
+                                                            if (component_info && component_info.parentId)
+                                                            {
+                                                                if (component_info.index1 && component_info.index2)
+                                                                {
+                                                                    nameToSent = component_info.parentId;
+                                                                    components = [];
+                                                                    if (component_info.index1)
+                                                                        components['index1'] = component_info.index1;
+                                                                    if (component_info.index2)
+                                                                        components['index2'] = component_info.index2;
+                                                                }
+                                                                if (data.records[0].get('needsArgs'))
+                                                                {
+                                                                    nameToSent = component_info.parentId;
+                                                                    if (component_info.index1)
+                                                                    {
+                                                                        components = [];
+                                                                        components['index1'] = component_info.index1;
+                                                                    }
+                                                                }
+                                                            }
+                                                            break;
+                                                        case 'alias' :
+                                                            nameToSent = "#" + data.records[0].get('text');
+                                                            break;
+                                                        case 'derivedParam' :
+                                                            if (data.records[0].modelName == 'amdaModel.DerivedParamComponentNode')
+                                                            {
+                                                                paramId = data.records[0].get('text');
+                                                                var parentId = paramId.substr(0, paramId.length - 3);
+                                                                nameToSent = "ws_" + parentId;
+                                                                var regExp = /\(([\d]+)\)/;
+                                                                var component_index = regExp.exec(paramId);
+                                                                if (component_index)
+                                                                {
+                                                                    components = [];
+                                                                    components['index1'] = component_index[1];
+                                                                }
+                                                                break;
+                                                            } else
+                                                            {
+                                                                nameToSent = "ws_" + data.records[0].get('text');
+                                                            }
+                                                            break;
+                                                        case 'myDataParam' :
+                                                              if (data.records[0].modelName == 'amdaModel.MyDataParamComponentNode')
+                                                            {
+                                                                paramId = data.records[0].get('text');
+                                                                var parentId = paramId.substr(0, paramId.length - 3);
+                                                                nameToSent = "wsd_" + parentId;
+                                                                var regExp = /\(([\d]+)\)/;
+                                                                var component_index = regExp.exec(paramId);
+                                                                if (component_index)
+                                                                {
+                                                                    components = [];
+                                                                    components['index1'] = component_index[1];
+                                                                }
+                                                                break;
+                                                            } else{
+                                                            nameToSent = "wsd_" + data.records[0].get('text');
+                                                        }
+                                                            break;
+                                                        default :
+                                                            return false;
+                                                    }
+                                                    var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.statistics.id);
+                                                    if (module)
+                                                    {
+                                                        module.addParam(nameToSent, data.records[0].get('leaf'), data.records[0].get('needsArgs'), components);
+                                                    }
+                                                    return true;
+                                                }
+                                            });
+                                        },
+                                        cellclick: function (grid, cell, cellIndex, record) {
+                                            if (cellIndex == 3)
+                                                grid.getStore().remove(record);
+                                        }
+                                    }
+                        });
+
+
+                this.formPanel = Ext.create('Ext.form.Panel',
+                        {
+                            region: 'center',
+                            layout: {
+                                type: 'hbox',
+                                pack: 'start',
+                                align: 'stretch'
+                            },
+                            defaults: {bodyStyle: {background: '#dfe8f6'}, padding: '3'},
+                            fieldDefaults: {labelWidth: 80, labelAlign: 'top'},
+                            items: [{
+                                    xtype: 'form',
+                                    flex: 1,
+                                    layout: {type: 'vbox', pack: 'start', align: 'stretch'},
+                                    items: [this.paramGrid],
+                                    fbar: [{
+                                            type: 'button',
+                                            text: 'Generate Catalog',
+                                            scope: this,
+                                            handler: function ()
+                                            {
+                                                // update object with user's values
+                                                // if the return is true (object had been updated)
+                                                if (this.updateObject()) {
+                                                    this.generateCatalog();
+                                                }
+                                            }
+                                        },
+                                        {
+                                            type: 'button',
+                                            text: 'Reset',
+                                            scope: this,
+                                            handler: function () {
+                                                this.formPanel.getForm().reset();
+                                                this.paramGrid.store.removeAll();
+                                                this.timeSelector.TTGrid.store.removeAll();
+                                            }
+                                        }]
+                                },
+                                {
+                                    xtype: 'form',
+                                    title: 'Additional Information',
+                                    flex: 1,
+                                    trackResetOnLoad: true,
+                                    layout: {type: 'vbox', pack: 'start', align: 'stretch', padding: '3'},
+                                    items: [
+                                        this.fieldName,
+                                        {
+                                            xtype: 'textarea',
+                                            name: 'description',
+                                            fieldLabel: 'Description',
+                                            height: 125
+                                        },
+                                        this.timeSelector
+                                    ]
+                                }
+                            ]
+                        });
+
+                var myConf = {
+                    layout: 'border',
+                    items: [
+                        this.formPanel,
+                        {
+                            xtype: 'panel',
+                            region: 'south',
+                            title: 'Information',
+                            collapsible: true,
+                            collapseMode: 'header',
+                            height: 160,
+                            autoHide: false,
+                            bodyStyle: 'padding:5px',
+                            iconCls: 'icon-information',
+                            loader: {
+                                autoLoad: true,
+                                url: helpDir + 'statisticsHOWTO'
+                            }
+                        }],
+                    plugins: [{ptype: 'paramArgumentsPlugin', pluginId: 'statistics-param-arguments-plugin'}]
+                };
+
+                Ext.apply(this, Ext.apply(arguments, myConf));
+            }
+        });
--
libgit2 0.21.2