diff --git a/js/app/models/MyDataParamNode.js b/js/app/models/MyDataParamNode.js
index aa9fa84..c919a3a 100644
--- a/js/app/models/MyDataParamNode.js
+++ b/js/app/models/MyDataParamNode.js
@@ -8,279 +8,325 @@
  * @version $Id: MyDataParamNode.js 2683 2014-12-02 10:58:53Z elena
  */
 
+Ext.define('amdaModel.MyDataParamComponentNode', {
+        extend: 'amdaModel.InteractiveNode',
+
+        text: '',
+
+        constructor : function(config)
+        {
+            this.callParent(arguments);
+            this.set('text', config && config.text ? config.text : this.text);
+            this.set('iconCls', 'icon-scalar');
+            this.set('leaf',true);
+            this.set('isParameter',true);
+        },
+         localMenuItems : function(){
+    var menuItems=
+    [{
+            fnId : 'leaf-plotParam',
+            text : 'Plot Parameter',
+            hidden : true
+        }, {
+            fnId : 'leaf-downParam',
+            text : 'Download Parameter',
+            hidden : true
+        }]
+    return menuItems;
+ },
+  getAllContextMenuItems: function(){
+    return  this.localMenuItems ();
+},
+});
+
+
 Ext.define('amdaModel.MyDataParamNode', {
-  
-	extend: 'amdaModel.InteractiveNode',
-	
-	fields : [ // { name : 'linkedFile', persist: false}, 
-			{ name : 'linkedMask', persist: false},
-			{ name : 'fileObject', persist: false},
-			{ name : 'size', persist: false},
-			{ name : 'isSpectra', type: 'boolean', defaultValue: false, persist: false }
-		],
-	   
-	statics:{
-		nodeType: 'myDataParam',
-		objectName : 'Parameter'
-	},
-    
-	constructor : function(config)
-	{
-		this.callParent(arguments);
-		this.set('moduleId',myDesktopApp.dynamicModules.my_data.id);
-		this.set('objectDataModel','amdaModel.FileParamObject');         
-		if (this.get('isParameter')) {
-			if (this.get('size') == 1) 
-				this.set('iconCls', 'icon-scalar');     
-			else if(this.get('size') == 3) 
-				this.set('iconCls', 'icon-vector');
-			else
-				this.set('iconCls', 'icon-unknowntype');            
-		}
-
-		if (this.get('isSpectra')) this.set('iconCls', 'icon-spectra');          
-	},
-    
-	localMenuItems : function() 
-	{
-		var menuItems =
-			[{
-					fnId : 'root-upload',
-					text : 'Upload File',
-					hidden : true
-			},  {
-					fnId : 'dire-upload',
-					text : 'Upload File', 
-					hidden : true
-			}, {
-					fnId : 'leaf-upload',
-					text : 'Upload File', 
-					hidden : true
-			},{
-					fnId : 'leaf-plotParam',
-					text : 'Plot Parameter',
-					hidden : true
-			}, {
-					fnId : 'leaf-downParam',
-					text : 'Download Parameter',
-					hidden : true
-			}, {
-					fnId : 'para-plotParam',
-					text : 'Plot Parameter',
-					hidden : true
-			}, {
-					fnId : 'para-downParam',
-					text : 'Download Parameter',
-					hidden : true
-			}];     
-		return menuItems;
-	},
-
-	getAllContextMenuItems: function() 
-	{	    
-		var menuItems = this.allMenuItems('Parameter');
-		var locMenuItems = this.localMenuItems();
-
-		return  Ext.Array.merge(menuItems,locMenuItems);           
-	},
-
-	onMenuItemClick : function(menu,item,event) 
-	{
-		var fnId = Ext.util.Format.substr(item.fnId, 5, item.fnId.length);
-
-		switch (fnId) 
-		{
-			case 'deleteNode':
-				this.deleteNode(); 
-				break;
-
-			case 'createDir':
-				this.createDir(); 
-				break;
-
-			case 'createLeaf':
-				this.createLeaf(this);
-				break;                    
-
-			case 'renameNode':
-				this.renameNode();
-				break;
-
-			case 'editLeaf':   
-				this.editLeaf(); 
-				break;
-
-			case 'upload':   
-				this.uploadFile(); 
-				break;
-				
-			case 'plotParam':                 
-				this.createPlot(this);                
-				break;
-				
-			case 'downParam':                   
-				this.createDownload(this);                
-				break; 
-				
-			default:
-				break;
-		} // switch end 
-	},
-    
-	uploadFile: function() {
-		myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.upload.id, true, function (module) {
-			module.createWindow();
-		});
-	}, 
-
-	editLeaf: function() 
-	{
-		// load the rootNode and recursively all its child nodes
-		// to know all names of DerivedParameters
-		var me = this;
-		amdaModel.InteractiveNode.preloadNodes(this.getRootNode(),
-			function()
-			{
-				if (me.get('object'))
-				{
-					if (me.get('fileObject'))
-						// launch edition of parameter into parameter module
-						me.editInModule();
-					else
-						AmdaAction.getObject(me.get('object').get('file'), amdaModel.MyDataNode.nodeType, me.getFileObjectCallback, me);
-				}
-				else
-				{
-					// call the ext method to get the details of parameter
-					// the edition of real parameter is done into callback method getObjectCallback            
-					AmdaAction.getObject(me.get('id'), me.get('nodeType'), me.getObjectCallback, me);
-				}
-			});
-	},
-    
-	// special case file object should be also loaded
-	getObjectCallback : function(result,remoteEvent){//result, e) {
-		var t = remoteEvent.getTransaction();
-		if (result) { 
-			if (result.id) {
-					var paramObj = Ext.create(this.get('objectDataModel'), result);
-					// set parameter into node
-					this.set('object',paramObj);
-					
-					paramObj.set('tableDef', result['tableDef']);
-					
-					if (paramObj.get('mask')) var file = paramObj.get('mask');
-					else  var file = paramObj.get('file'); 
-			
-					AmdaAction.getObject(file, amdaModel.MyDataNode.nodeType, 
-													this.getFileObjectCallback, this);              
-			}
-			else {                 
-					myDesktopApp.errorMsg(result.error);
-			}
-		}
-		else {
-			// EXCEPTION : parameter not found !?
-			myDesktopApp.errorMsg(t.action + "." + t.method + " : No parameter '"
-					+this.get('name')+"' found!");
-			//TODO: adding an error log
-		}
-	},
-    
-	getFileObjectCallback : function(result,remoteEvent){//result, e) {
-		var t = remoteEvent.getTransaction();
-		if (result) {
-			if (result.success) {
-						var paramObj = Ext.create('amdaModel.FileObject', result);
-						this.set('fileObject', paramObj);
-						// Edition of parameter into parameter Module	    
-						this.editInModule();
-			}
-			else {                 
-					myDesktopApp.errorMsg(result.error);
-			}
-		} 
-		else {
-			// EXCEPTION : parameter not found !?
-			myDesktopApp.errorMsg(t.action + "." + t.method + " : No parameter '"
-					+this.get('name')+"' found!");          
-		}
-	},
-    
-	/*
-	* Mask was possibly changed update this info
-	*/    
-	updateMask : function(mask)
-	{
-		var myParamRootNode = this.getRootNode(); 
-		if (myParamRootNode.isExpanded) {                                       
-			Ext.Array.each(myParamRootNode.childNodes, function(node) {
-					if (node.get('linkedMask')  &&  node.get('linkedMask').indexOf(mask) != -1 ) {
-						node.set('linkedMask',mask);                     
-						if (node.get('info')) {
-							var info = node.get('info').split("<br/>");
-							node.set('info',info[0] + "<br/>" + info[1] + "<br/> Mask: " + mask);
-						}
-					}
-					
-			});                  
-		}
-	},
-    
-	updateMyData : function(){
-			// reload myFiles Tree in explorer
-			var explorerTree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID);
-			if (explorerTree) {					  
-					var explorerTreeStore = explorerTree.getStore();
-					var explorerRoot = explorerTreeStore.getRootNode().findChild('text','My Files');
-					
-					var explorerPath = '/root/myData-treeRootNode/';
-					
-					explorerTreeStore.reload({node : explorerRoot, 
-													params : { nodeType: 'myData'},
-													callback : function(){	
-															explorerTree.selectPath(explorerPath);						 
-													}
-					});	      	 
-			}     
-	},
+
+    extend: 'amdaModel.InteractiveNode',
+
+    fields: [// { name : 'linkedFile', persist: false}, 
+        {name: 'linkedMask', persist: false},
+        {name: 'fileObject', persist: false},
+        {name: 'size', persist: false},
+        {name: 'isSpectra', type: 'boolean', defaultValue: false, persist: false}
+    ],
+
+    statics: {
+        nodeType: 'myDataParam',
+        objectName: 'Parameter'
+    },
+
+    constructor: function (config)
+    {
+        this.callParent(arguments);
+        this.set('moduleId', myDesktopApp.dynamicModules.my_data.id);
+        this.set('objectDataModel', 'amdaModel.FileParamObject');
+        if (this.get('isParameter')) {
+            if (this.get('size') == 1)
+                this.set('iconCls', 'icon-scalar');
+            else if (this.get('size') == 3)
+                this.set('iconCls', 'icon-vector');
+            else
+                this.set('iconCls', 'icon-unknowntype');
+        }
+       if (this.get('size') > 1){
+            this.updateComponents();
+        }
+
+        if (this.get('isSpectra'))
+            this.set('iconCls', 'icon-spectra');
+    },
+    updateComponents: function () {
+        this.removeAll();
+        if (!this.get('isParameter')) {
+            return;
+        }
+        for (var i = 0; i < this.get('size'); ++i) {
+            var ch = new amdaModel.MyDataParamComponentNode({text: this.get('text') + '(' + i + ')'
+            });
+            ch.set('nodeType', 'myDataParam');
+            this.appendChild(ch);
+        }
+
+    },
     
-	isParameter : function(){
-		return this.get('isParameter');
-	},
-	
-	specialUpdate : function(res, timeUpdate)
-	{
-		if (timeUpdate && res.info)
-		{
-			var startStop = res.info.split("<br/>"); 
-			var globalStart = startStop[1].substr(0,19);
-			var globalStop = startStop[1].substr(20);
-			
-			this.set('globalStart', globalStart);
-			this.set('globalStop', globalStop);
-			
-			if (res.mask)
-				this.set('linkedMask', res.mask);
-			if (res.size) 
-				this.set('size', res.size);
-		}
-		
-		if (res.isSpectra) {
-			this.set('iconCls', 'icon-spectra');
-		} 
-		else if (res.size == 3) {
-			this.set('iconCls', 'icon-vector');
-		}
-		else if (res.size > 1) {
-			this.set('iconCls', 'icon-unknowntype');
-		}
-		
-		// update my data on possible mask change		    
-		if (res.updateMyData) {
-			this.updateMyData();
-			this.updateMask(res.mask);
-		}
-	}
+
+    localMenuItems: function ()
+    {
+        var menuItems =
+                [{
+                        fnId: 'root-upload',
+                        text: 'Upload File',
+                        hidden: true
+                    }, {
+                        fnId: 'dire-upload',
+                        text: 'Upload File',
+                        hidden: true
+                    }, {
+                        fnId: 'leaf-upload',
+                        text: 'Upload File',
+                        hidden: true
+                    }, {
+                        fnId: 'leaf-plotParam',
+                        text: 'Plot Parameter',
+                        hidden: true
+                    }, {
+                        fnId: 'leaf-downParam',
+                        text: 'Download Parameter',
+                        hidden: true
+                    }, {
+                        fnId: 'para-plotParam',
+                        text: 'Plot Parameter',
+                        hidden: true
+                    }, {
+                        fnId: 'para-downParam',
+                        text: 'Download Parameter',
+                        hidden: true
+                    }];
+        return menuItems;
+    },
+
+    getAllContextMenuItems: function ()
+    {
+        var menuItems = this.allMenuItems('Parameter');
+        var locMenuItems = this.localMenuItems();
+
+        return  Ext.Array.merge(menuItems, locMenuItems);
+    },
+
+    onMenuItemClick: function (menu, item, event)
+    {
+        var fnId = Ext.util.Format.substr(item.fnId, 5, item.fnId.length);
+
+        switch (fnId)
+        {
+            case 'deleteNode':
+                this.deleteNode();
+                break;
+
+            case 'createDir':
+                this.createDir();
+                break;
+
+            case 'createLeaf':
+                this.createLeaf(this);
+                break;
+
+            case 'renameNode':
+                this.renameNode();
+                break;
+
+            case 'editLeaf':
+                this.editLeaf();
+                break;
+
+            case 'upload':
+                this.uploadFile();
+                break;
+
+            case 'plotParam':
+                this.createPlot(this);
+                break;
+
+            case 'downParam':
+                this.createDownload(this);
+                break;
+
+            default:
+                break;
+        } // switch end 
+    },
+
+    uploadFile: function () {
+        myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.upload.id, true, function (module) {
+            module.createWindow();
+        });
+    },
+
+    editLeaf: function ()
+    {
+        // load the rootNode and recursively all its child nodes
+        // to know all names of DerivedParameters
+        var me = this;
+        amdaModel.InteractiveNode.preloadNodes(this.getRootNode(),
+                function ()
+                {
+                    if (me.get('object'))
+                    {
+                        if (me.get('fileObject'))
+                            // launch edition of parameter into parameter module
+                            me.editInModule();
+                        else
+                            AmdaAction.getObject(me.get('object').get('file'), amdaModel.MyDataNode.nodeType, me.getFileObjectCallback, me);
+                    } else
+                    {
+                        // call the ext method to get the details of parameter
+                        // the edition of real parameter is done into callback method getObjectCallback            
+                        AmdaAction.getObject(me.get('id'), me.get('nodeType'), me.getObjectCallback, me);
+                    }
+                });
+    },
+
+    // special case file object should be also loaded
+    getObjectCallback: function (result, remoteEvent) {//result, e) {
+        var t = remoteEvent.getTransaction();
+        if (result) {
+            if (result.id) {
+                var paramObj = Ext.create(this.get('objectDataModel'), result);
+                // set parameter into node
+                this.set('object', paramObj);
+
+                paramObj.set('tableDef', result['tableDef']);
+
+                if (paramObj.get('mask'))
+                    var file = paramObj.get('mask');
+                else
+                    var file = paramObj.get('file');
+
+                AmdaAction.getObject(file, amdaModel.MyDataNode.nodeType,
+                        this.getFileObjectCallback, this);
+            } else {
+                myDesktopApp.errorMsg(result.error);
+            }
+        } else {
+            // EXCEPTION : parameter not found !?
+            myDesktopApp.errorMsg(t.action + "." + t.method + " : No parameter '"
+                    + this.get('name') + "' found!");
+            //TODO: adding an error log
+        }
+    },
+
+    getFileObjectCallback: function (result, remoteEvent) {//result, e) {
+        var t = remoteEvent.getTransaction();
+        if (result) {
+            if (result.success) {
+                var paramObj = Ext.create('amdaModel.FileObject', result);
+                this.set('fileObject', paramObj);
+                // Edition of parameter into parameter Module	    
+                this.editInModule();
+            } else {
+                myDesktopApp.errorMsg(result.error);
+            }
+        } else {
+            // EXCEPTION : parameter not found !?
+            myDesktopApp.errorMsg(t.action + "." + t.method + " : No parameter '"
+                    + this.get('name') + "' found!");
+        }
+    },
+
+    /*
+     * Mask was possibly changed update this info
+     */
+    updateMask: function (mask)
+    {
+        var myParamRootNode = this.getRootNode();
+        if (myParamRootNode.isExpanded) {
+            Ext.Array.each(myParamRootNode.childNodes, function (node) {
+                if (node.get('linkedMask') && node.get('linkedMask').indexOf(mask) != -1) {
+                    node.set('linkedMask', mask);
+                    if (node.get('info')) {
+                        var info = node.get('info').split("<br/>");
+                        node.set('info', info[0] + "<br/>" + info[1] + "<br/> Mask: " + mask);
+                    }
+                }
+
+            });
+        }
+    },
+
+    updateMyData: function () {
+        // reload myFiles Tree in explorer
+        var explorerTree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID);
+        if (explorerTree) {
+            var explorerTreeStore = explorerTree.getStore();
+            var explorerRoot = explorerTreeStore.getRootNode().findChild('text', 'My Files');
+
+            var explorerPath = '/root/myData-treeRootNode/';
+
+            explorerTreeStore.reload({node: explorerRoot,
+                params: {nodeType: 'myData'},
+                callback: function () {
+                    explorerTree.selectPath(explorerPath);
+                }
+            });
+        }
+    },
+
+    isParameter: function () {
+        return this.get('isParameter');
+    },
+
+    specialUpdate: function (res, timeUpdate)
+    {
+        if (timeUpdate && res.info)
+        {
+            var startStop = res.info.split("<br/>");
+            var globalStart = startStop[1].substr(0, 19);
+            var globalStop = startStop[1].substr(20);
+
+            this.set('globalStart', globalStart);
+            this.set('globalStop', globalStop);
+
+            if (res.mask)
+                this.set('linkedMask', res.mask);
+            if (res.size)
+                this.set('size', res.size);
+        }
+
+        if (res.isSpectra) {
+            this.set('iconCls', 'icon-spectra');
+        } else if (res.size == 3) {
+            this.set('iconCls', 'icon-vector');
+        } else if (res.size > 1) {
+            this.set('iconCls', 'icon-unknowntype');
+        }
+    //      if (res.size > 1)
+     //         this.updateComponents();
+        // update my data on possible mask change		    
+        if (res.updateMyData) {
+            this.updateMyData();
+            this.updateMask(res.mask);
+        }
+    }
 
 });
--
libgit2 0.21.2