Blame view

js/app/models/ExecutableNode.js 3.52 KB
16035364   Benjamin Renard   First commit
1
2
3
4
5
6
7
8
/** 
 * Project  : AMDA-NG4
 * Name     : ExecutableNode.js
 * @class   amdaModel.ExecutableNode
 * @extends amdaModel.InteractiveNode
 * @brief   Generic Model of Executable Node
 * @author  elena
 * @version $Id: ExecutableNode.js 1662 2013-07-02 15:10:22Z benjamin $
16035364   Benjamin Renard   First commit
9
10
11
 */

Ext.define('amdaModel.ExecutableNode', {
4078a635   Elena.Budnik   small cleanning up
12
	extend: 'amdaModel.InteractiveNode',
16035364   Benjamin Renard   First commit
13
    
4078a635   Elena.Budnik   small cleanning up
14
	fields: [ 'jobNode', 'resultModel'],
16035364   Benjamin Renard   First commit
15

4078a635   Elena.Budnik   small cleanning up
16
	statics: { jobTreeLoaded : false },
16035364   Benjamin Renard   First commit
17
    
4078a635   Elena.Budnik   small cleanning up
18
19
20
21
22
23
	constructor : function(config) 
	{
		this.callParent(arguments);        
		this.set('ownerTreeId',amdaUI.ExplorerUI.OPE_TAB.TREE_ID);
		this.set('jobNode', 'amdaModel.BkgJobNode');		 
	},
16035364   Benjamin Renard   First commit
24
    
4078a635   Elena.Budnik   small cleanning up
25
26
27
28
29
30
31
32
33
	loadJobTree : function() 
	{            
		var rootNode = Ext.getCmp(amdaUI.ExplorerUI.JOB_TAB.TREE_ID).getRootNode();	
		var me = this;
		amdaModel.InteractiveNode.preloadNodes(rootNode, function(){
			amdaModel.ExecutableNode.jobTreeLoaded = true;
			me.realExecute(); 
		});
	},   
16035364   Benjamin Renard   First commit
34
   
4078a635   Elena.Budnik   small cleanning up
35
36
37
38
39
40
41
42
43
44
45
46
47
48
	execute : function(isDirty) 
	{     
		if (!amdaModel.ExecutableNode.jobTreeLoaded) 
			this.loadJobTree();
		else 
			this.realExecute();    
	},
   
	/**
	* Method to execute this node 
	*/
	realExecute : function() 
	{  
		var isInteractivePlot = (this.get('nodeType') == 'request') && (this.get('object').get('file-output') == 'INTERACTIVE'); 
16035364   Benjamin Renard   First commit
49
       
4078a635   Elena.Budnik   small cleanning up
50
51
		if (!loadMask.isMasked())
			loadMask.show(isInteractivePlot);
16035364   Benjamin Renard   First commit
52
        
4078a635   Elena.Budnik   small cleanning up
53
54
55
56
		AmdaAction.execute({nodeType : this.get('nodeType')}, this.get('object').getJsonValues(true), 
			function(res,e)
			{    
				loadMask.hide();
16035364   Benjamin Renard   First commit
57
	  
4078a635   Elena.Budnik   small cleanning up
58
59
60
61
62
				//AKKA - Rework of the result treatment for the integration with the new kernel
				if (!e.status){
					myDesktopApp.errorMsg('Internal error during request');
					return;
				}
16035364   Benjamin Renard   First commit
63
     	   
4078a635   Elena.Budnik   small cleanning up
64
65
66
67
68
69
70
				if (!res.success){
					myDesktopApp.errorMsg(res.message);
					return;
				}
   
				if (res.killed)
						return;
e6e5b259   Benjamin Renard   Add kill plot req...
71
     	    
4078a635   Elena.Budnik   small cleanning up
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
				if (isInteractivePlot){
					myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id, true, function (module) {
						module.updateInteractiveSession(res, true);
					});
				}
				else {
					var newobj = this.createJobObject(res);	    
					var newNode = Ext.create(this.get('jobNode'), {
							info : res.info,
							jobType : this.get('nodeType'),
							processId : res.id,
							id : res.id,
							text : res.name,
							status : res.status,
							start : res.start,
							stop : res.stop,
							tabId : res.tabId,
							leaf : true,
							object : newobj
						});
16035364   Benjamin Renard   First commit
92
     	    
4078a635   Elena.Budnik   small cleanning up
93
94
95
96
					newNode.get('object').on('execute', function() {
							// Then call the node creation method
							this.execute(arguments);
						}, newNode);
16035364   Benjamin Renard   First commit
97
     	    
4078a635   Elena.Budnik   small cleanning up
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
					switch (res.status)
					{
						case amdaModel.BkgJobNode.STATUS_LIST.DONE :
							newNode.createJobNode(true);
							newNode.editNode(true, false);
							break;
						case amdaModel.BkgJobNode.STATUS_LIST.IN_PROGRESS :
							newNode.createJobNode(false);
							break;
						default:
							newNode.createJobNode(true);
					}
				}
			}, this );
	},  
16035364   Benjamin Renard   First commit
113

4078a635   Elena.Budnik   small cleanning up
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
	createJobObject: function(res) 
	{      
		var obj =  this.get('object').getJsonValues();		    
		//TODO text, name, outputName - if all is needed 
		
		//new object to attach to new bkgJobNode	
		//TODO Ext.clone()  		     	  
		var newobj = Ext.copyTo({}, obj, this.get('object').propertiesToCopy);
		newobj.resultId = res.result;	
		newobj.folderId = res.folder;
		newobj.processId= res.id;
		newobj.tabId = res.tabId;
		newobj.name = res.name;
		newobj = Ext.create(this.get('object').$className, newobj);
		
		return   newobj;  
16035364   Benjamin Renard   First commit
130
	},
4078a635   Elena.Budnik   small cleanning up
131
132
133
134
135
136
137
138
	
	/**
	* override isExecutable to return true 
	*/
	isExecutable: function()
	{
		return true;
	}
16035364   Benjamin Renard   First commit
139
});