MyDataParamNode.js 7.24 KB
/** 
 * Project  : AMDA-NG4
 * Name     : MyDataNode.js
 * @class   amdaModel.MyDataNode
 * @extends amdaModel.InteractiveNode
 * @brief    
 * @author  
 * @version $Id: MyDataParamNode.js 2683 2014-12-02 10:58:53Z elena
 */

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);						 
													}
					});	      	 
			}     
	},
    
	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);
		}
	}

});