AliasNode.js 4.16 KB
/** 
 * Project  : AMDA-NG4
 * Name     : AliasNode.js
 * @class   amdaModel.AliasNode
 * @extends amdaModel.ExecutableNode
 * @brief   Basic Model of Node corresponding to an alias
 * @author  Myriam
 * @version $Id: AliasNode.js 2615 2014-10-23 15:03:48Z myriam $
 */

Ext.define('amdaModel.AliasNode', {

	extend: 'amdaModel.InteractiveNode',

	statics: {
		nodeType: 'alias',
		objectName: 'Alias',
		deletedAliases : null
	},
    
	constructor : function(config) {
		this.callParent(arguments);     
		if (this.get('leaf')) this.set('iconCls', 'icon-scalar');
	},
    
	allMenuItems : function() {
		var menuItems =
		[{
			fnId : 'leaf-deleteNode',
			text : 'Delete Alias'
		},{
			fnId : 'leaf-plotParam',
			text : 'Plot Parameter',
			hidden : true
		}, {
			fnId : 'leaf-downParam',
			text : 'Download Parameter',
			hidden : true   	
		}];

		return menuItems;
	}, 
       
	create: function(alias, param, component_info) {
		//if (!Ext.Object.isEmpty(component_info))) 
		AmdaAction.createObject({ name: alias, param: param, component_info : component_info,
			nodeType:amdaModel.AliasNode.nodeType, leaf:true }, null, 
			function(result, e){	  
				var t = e.getTransaction();
				if (e.status) {	
					// SUCCESS 
					if (result && !result.error) {
						if ( result  == "OK" ) {
							Ext.Msg.alert('Complete', 'New alias '+ alias +' has been created');
							// set text of this node								   
							this.set('text', alias);	
							//TODO id from server
							this.set('id', 'alias_' + param);				            	                
							// create node in tree as child of contextNode      
							this.get('rootNode').appendChild(this);											
							// set the tooltip
							this.set('info', param);
							this.set('component_info',component_info);
						}
					} else {
						// EXCEPTION : 
						alert(t.action + "." + t.method + " : " + e.message);
					}
				}
				else
				{
					// FAILURE
					Ext.Msg.show({title:'Error System', msg: e.message, icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK});
				}   
		},this); 
	},
	
	renameNode: function(old_alias,alias, param) {
		AmdaAction.renameObject({id : param, old_name: old_alias, name: alias,  
			parent : this.parentNode.get('id'), leaf: this.isLeaf(), nodeType: this.get('nodeType')},
			function(result, e){	  
				var t = e.getTransaction();
				if (e.status) {	
					// SUCCESS 
					if (result && !result.error) {
						if ( result.id ) {
							Ext.Msg.alert('Complete', 'Alias '+ alias +' has been renamed');
							// set text of this node								   
							this.set('text', alias);	
							//TODO id from server
							this.set('id', 'alias_' + param);				            	                
							// create node in tree as child of contextNode      
							this.get('rootNode').appendChild(this);											
						
						}
					} else {
						// EXCEPTION : 
						alert(t.action + "." + t.method + " : " + e.message);
					}
				}
				else
				{
					// FAILURE
					Ext.Msg.show({title:'Error System', msg: e.message, icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK});
				}   
		},this); 	    		 
	},
     
	deleteNode: function() {
		this.callParent();
		//temporary array to keep deleted aliases during this session	
		if (!amdaModel.AliasNode.deletedAliases) { 
				amdaModel.AliasNode.deletedAliases = new Array();
		}  
		amdaModel.AliasNode.deletedAliases.push(this.get('id').substr(6));
		
		// Replace alias by parameter name in active window
		Ext.Array.each(myDesktopApp.paramModulesID, function(id){
			var module = myDesktopApp.getLoadedModule(id);
			if (module) {
				module.getUiContent().updateConstruct("#"+this.get('text'),this.get('id').substr(6));
			}
		}, this);		
				
		// Reset alias of parameter in local data tree or in remote data tree
		var tree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID);
		var rootNode = tree.getRootNode().findChild('id','myLocalData-treeRootNode',true);
						
		var paramNode = rootNode.findChild('id', this.get('id').substr(6),true);
				
		if (paramNode == null) {
			var rootNode = tree.getRootNode().findChild('id','myRemoteData-treeRootNode',true);       	
			var paramNode = rootNode.findChild('id', this.get('id').substr(6),true);
		}	
		
		if (paramNode) paramNode.set('alias',null);
	}   
});