Blame view

js/app/models/ExecutableNode.js 3.65 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;
2cfa3a1a   Benjamin Renard   Give the possibil...
71

4078a635   Elena.Budnik   small cleanning up
72
73
74
75
76
77
				if (isInteractivePlot){
					myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id, true, function (module) {
						module.updateInteractiveSession(res, true);
					});
				}
				else {
2cfa3a1a   Benjamin Renard   Give the possibil...
78
79
80
81
					if (logExecTime && res.exectime && (res.exectime != 0)) {
						console.log("CMD EXEC TIME FOR "+res.id+" = "+res.exectime+"ms");
					}

4078a635   Elena.Budnik   small cleanning up
82
83
84
85
86
87
88
89
90
91
92
93
94
95
					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
96
     	    
4078a635   Elena.Budnik   small cleanning up
97
98
99
100
					newNode.get('object').on('execute', function() {
							// Then call the node creation method
							this.execute(arguments);
						}, newNode);
16035364   Benjamin Renard   First commit
101
     	    
4078a635   Elena.Budnik   small cleanning up
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
					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
117

4078a635   Elena.Budnik   small cleanning up
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
	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
134
	},
4078a635   Elena.Budnik   small cleanning up
135
136
137
138
139
140
141
142
	
	/**
	* override isExecutable to return true 
	*/
	isExecutable: function()
	{
		return true;
	}
16035364   Benjamin Renard   First commit
143
});