Commit c713e292e70d38649884ced6f115e2d61eff0888

Authored by Nathanaël Jourdane
1 parent 52692f19

fix eslint warnings

js/.eslintrc.yml
@@ -10,6 +10,11 @@ rules: @@ -10,6 +10,11 @@ rules:
10 semi: [error, always] 10 semi: [error, always]
11 max-len: [error, code: 120] 11 max-len: [error, code: 120]
12 max-lines: [warn, 600] 12 max-lines: [warn, 600]
  13 + max-params: [warn, 3]
  14 + complexity: [warn, 20]
  15 + no-ternary: off
  16 + no-plusplus: off
  17 + multiline-ternary: off
13 linebreak-style: [error, unix] 18 linebreak-style: [error, unix]
14 quotes: [error, single] 19 quotes: [error, single]
15 strict: [error, global] 20 strict: [error, global]
@@ -26,6 +31,9 @@ rules: @@ -26,6 +31,9 @@ rules:
26 id-length: off 31 id-length: off
27 no-magic-numbers: off 32 no-magic-numbers: off
28 no-invalid-this: off 33 no-invalid-this: off
  34 + no-extra-parens: [error, all, nestedBinaryExpressions: false]
  35 + camelcase: warn
  36 + max-depth: warn
29 37
30 # ES3/5 compatibility: 38 # ES3/5 compatibility:
31 prefer-template: off 39 prefer-template: off
@@ -33,3 +41,4 @@ rules: @@ -33,3 +41,4 @@ rules:
33 prefer-arrow-callback: off 41 prefer-arrow-callback: off
34 object-shorthand: off 42 object-shorthand: off
35 prefer-rest-params: off 43 prefer-rest-params: off
  44 + prefer-destructuring: off
js/app/models/InteractiveNode.js
@@ -8,36 +8,64 @@ @@ -8,36 +8,64 @@
8 * @version $Id: InteractiveNode.js 2683 2014-12-02 10:58:53Z elena $ 8 * @version $Id: InteractiveNode.js 2683 2014-12-02 10:58:53Z elena $
9 */ 9 */
10 10
  11 +/* global amdaUI, AmdaAction, myDesktopApp, amdaPlotObj, amdaModel*/
  12 +
11 Ext.define('amdaModel.InteractiveNode', { 13 Ext.define('amdaModel.InteractiveNode', {
12 extend: 'amdaModel.AmdaNode', 14 extend: 'amdaModel.AmdaNode',
13 15
14 - requires: [  
15 - 'amdaPlotObj.PlotRequestObject'  
16 - ], 16 + requires: ['amdaPlotObj.PlotRequestObject'],
17 17
18 fields: [ 18 fields: [
19 - {name: 'contextNode', type: 'amdaModel.AmdaNode', persist: false},  
20 - {name: 'objectDataModel', type: 'string', persist: false},  
21 - {name: 'object', type: 'object', persist: false},  
22 - {name: 'moduleId', type: 'string', persist: false},  
23 - {name: 'filtered', type: 'boolean', defaultValue: false, persist: false},  
24 - {name: 'disable', type: 'boolean', defaultValue: false, persist: false} 19 + {
  20 + name: 'contextNode',
  21 + type: 'amdaModel.AmdaNode',
  22 + persist: false
  23 + },
  24 + {
  25 + name: 'objectDataModel',
  26 + type: 'string',
  27 + persist: false
  28 + },
  29 + {
  30 + name: 'object',
  31 + type: 'object',
  32 + persist: false
  33 + },
  34 + {
  35 + name: 'moduleId',
  36 + type: 'string',
  37 + persist: false
  38 + },
  39 + {
  40 + name: 'filtered',
  41 + type: 'boolean',
  42 + defaultValue: false,
  43 + persist: false
  44 + },
  45 + {
  46 + name: 'disable',
  47 + type: 'boolean',
  48 + defaultValue: false,
  49 + persist: false
  50 + }
25 ], 51 ],
26 52
27 statics: { 53 statics: {
28 preloadNodes: function (node, onready) { 54 preloadNodes: function (node, onready) {
29 - var me = this; 55 + var nodesToLoad;
30 56
31 - var nodesToLoad = []; 57 + nodesToLoad = [];
32 nodesToLoad.push(node); 58 nodesToLoad.push(node);
33 - this.preloadTreeNode(node, nodesToLoad, function (node) { 59 + this.preloadTreeNode(node, nodesToLoad, function () {
34 var isFinish = true; 60 var isFinish = true;
35 - nodesToLoad.forEach(function (element, index, array) {  
36 - if (!element.isLoaded()) 61 + nodesToLoad.forEach(function (element) {
  62 + if (!element.isLoaded()) {
37 isFinish = false; 63 isFinish = false;
  64 + }
38 }); 65 });
39 - if (isFinish && onready) 66 + if (isFinish && onready) {
40 onready.call(); 67 onready.call();
  68 + }
41 }); 69 });
42 }, 70 },
43 71
@@ -52,22 +80,24 @@ Ext.define('amdaModel.InteractiveNode', { @@ -52,22 +80,24 @@ Ext.define('amdaModel.InteractiveNode', {
52 } 80 }
53 }); 81 });
54 82
55 - if (onloaded) 83 + if (onloaded) {
56 onloaded.call(me, node); 84 onloaded.call(me, node);
  85 + }
57 return; 86 return;
58 } 87 }
59 88
60 node.store.load({ 89 node.store.load({
61 node: node, 90 node: node,
62 - callback: function (records, operation, successful) { 91 + callback: function (records) {
63 records.forEach(function (record) { 92 records.forEach(function (record) {
64 if (!record.isLoaded() && !record.isLeaf()) { 93 if (!record.isLoaded() && !record.isLeaf()) {
65 nodesToLoad.push(record); 94 nodesToLoad.push(record);
66 me.preloadTreeNode(record, nodesToLoad, onloaded); 95 me.preloadTreeNode(record, nodesToLoad, onloaded);
67 } 96 }
68 }); 97 });
69 - if (onloaded) 98 + if (onloaded) {
70 onloaded.call(me, node); 99 onloaded.call(me, node);
  100 + }
71 } 101 }
72 }); 102 });
73 } 103 }
@@ -76,49 +106,61 @@ Ext.define('amdaModel.InteractiveNode', { @@ -76,49 +106,61 @@ Ext.define('amdaModel.InteractiveNode', {
76 onReady: null, 106 onReady: null,
77 107
78 constructor: function (config) { 108 constructor: function (config) {
  109 + var suffix;
79 this.callParent(arguments); 110 this.callParent(arguments);
80 this.set('nodeType', this.self.nodeType); 111 this.set('nodeType', this.self.nodeType);
81 this.set('ownerTreeId', amdaUI.ExplorerUI.RESRC_TAB.TREE_ID); 112 this.set('ownerTreeId', amdaUI.ExplorerUI.RESRC_TAB.TREE_ID);
82 - if (this.get('id')) { // TODO why sometimes (delete in remote interoper tree) this.get('id') = undefined ?  
83 - // if id of this node have root category suffix  
84 - if (Ext.util.Format.substr(this.get('id'), -(amdaUI.ExplorerUI.CAT_SUFFIX.length), this.get('id').length) === amdaUI.ExplorerUI.CAT_SUFFIX) {  
85 - // set the expanded property to true 113 + // TODO why sometimes (delete in remote interoper tree) this.get('id') = undefined ?
  114 + if (this.get('id')) {
  115 + // If id of this node have root category suffix
  116 + suffix = amdaUI.ExplorerUI.CAT_SUFFIX;
  117 + if (Ext.util.Format.substr(this.get('id'), -suffix.length, this.get('id').length) === suffix) {
  118 + // Set the expanded property to true
86 this.set('expanded', true); 119 this.set('expanded', true);
87 } 120 }
88 } 121 }
89 }, 122 },
90 123
91 /** 124 /**
92 - * this method is overriden into ExecutableNode to return true 125 + * This method is overriden into ExecutableNode to return true
  126 + * @returns {boolean} true if node is executable
93 */ 127 */
94 isExecutable: function () { 128 isExecutable: function () {
95 return false; 129 return false;
96 }, 130 },
97 131
98 /** 132 /**
99 - * open Module with THIS NODE 133 + * Open Module with THIS NODE
  134 + * @param {object} contextNode Context node
  135 + * @param {function} onReady onRady callback function
  136 + * @returns {void}
100 */ 137 */
101 editInModule: function (contextNode, onReady) { 138 editInModule: function (contextNode, onReady) {
102 - // set the contextNode of this node  
103 - this.set('contextNode', contextNode);  
104 - // parameter module  
105 var me = this; 139 var me = this;
  140 + // Set the contextNode of this node
  141 + this.set('contextNode', contextNode);
  142 + // Parameter module
106 myDesktopApp.getLoadedModule(this.get('moduleId'), true, function (module) { 143 myDesktopApp.getLoadedModule(this.get('moduleId'), true, function (module) {
107 // If the node to edit is not already linked to this module 144 // If the node to edit is not already linked to this module
108 if (module.getLinkedNode() != me) { 145 if (module.getLinkedNode() != me) {
109 - // set relative node into parameter Module 146 + // Set relative node into parameter Module
110 module.setLinkedNode(me); 147 module.setLinkedNode(me);
111 if (contextNode == null) { 148 if (contextNode == null) {
112 - // set the root node as contextNode 149 + // Set the root node as contextNode
113 contextNode = me.getRootNode(); 150 contextNode = me.getRootNode();
114 } 151 }
115 module.setContextNode(contextNode); 152 module.setContextNode(contextNode);
116 153
117 } else if (module.getLinkedNode() != null) { 154 } else if (module.getLinkedNode() != null) {
118 - //TODO the node to edit is already edited  
119 - // myDesktopApp.warningMsg('This object is being edited');  
120 - //Sol1: msg alert: "warning this node is already edited! If you want to get the original, please press the 'reset' button"->'OK'  
121 - //Sol2: msg with user choice: "warning this node is already edited! Would you confirm this action and lost your modification?"->'Confirm','Cancel' 155 +
  156 + /*
  157 + * TODO the node to edit is already edited
  158 + * myDesktopApp.warningMsg('This object is being edited');
  159 + * Sol1: msg alert: "warning this node is already edited! If you want to get the original,
  160 + * please press the 'reset' button"->'OK'
  161 + * Sol2: msg with user choice: "warning this node is already edited! Would you confirm this action and lost your
  162 + * modification?"->'Confirm','Cancel'
  163 + */
122 } 164 }
123 // Opening parameter window 165 // Opening parameter window
124 module.createWindow(onReady); 166 module.createWindow(onReady);
@@ -127,6 +169,9 @@ Ext.define('amdaModel.InteractiveNode', { @@ -127,6 +169,9 @@ Ext.define('amdaModel.InteractiveNode', {
127 169
128 /** 170 /**
129 * Method to rename the workspace node 171 * Method to rename the workspace node
  172 + * @param {string} value The new name
  173 + * @param {function} callBackFn Callback function
  174 + * @returns {void}
130 */ 175 */
131 rename: function (value, callBackFn) { 176 rename: function (value, callBackFn) {
132 var dataToSend = { 177 var dataToSend = {
@@ -142,6 +187,9 @@ Ext.define('amdaModel.InteractiveNode', { @@ -142,6 +187,9 @@ Ext.define('amdaModel.InteractiveNode', {
142 187
143 /** 188 /**
144 * Method to rename the workspace node when D&D 189 * Method to rename the workspace node when D&D
  190 + * @param {string} parentId The parent ID
  191 + * @param {function} callBackFn callback function
  192 + * @returns {void}
145 */ 193 */
146 renameDD: function (parentId, callBackFn) { 194 renameDD: function (parentId, callBackFn) {
147 var dataToSend = { 195 var dataToSend = {
@@ -156,18 +204,24 @@ Ext.define('amdaModel.InteractiveNode', { @@ -156,18 +204,24 @@ Ext.define('amdaModel.InteractiveNode', {
156 }, 204 },
157 205
158 /** 206 /**
159 - * validation method on name (used in module forms)  
160 - * @param name the name to validate  
161 - * @returns 207 + * Validation method on name (used in module forms)
  208 + * @param {string} name the name to validate
  209 + * @param {function} callBackFn Callback function
  210 + * @returns {void}
162 */ 211 */
163 isValidName: function (name, callBackFn) { 212 isValidName: function (name, callBackFn) {
164 - var dataToSend = {name: name, nodeType: this.get('nodeType'), leaf: this.isLeaf()}; 213 + var dataToSend = {
  214 + name: name,
  215 + nodeType: this.get('nodeType'),
  216 + leaf: this.isLeaf()
  217 + };
165 AmdaAction.validNameObject(dataToSend, callBackFn); 218 AmdaAction.validNameObject(dataToSend, callBackFn);
166 }, 219 },
167 220
168 /** 221 /**
169 - * Method to persist modifications of an AmdaObject by Server side and update the workspace  
170 - * node linked to a Module 222 + * Method to persist modifications of an AmdaObject by Server side and update the workspace node linked to a Module
  223 + * @param {object} opt ...
  224 + * @returns {void}
171 */ 225 */
172 update: function (opt) { 226 update: function (opt) {
173 AmdaAction.modifyObject(this.get('object').getJsonValues(true), function (res, e) { 227 AmdaAction.modifyObject(this.get('object').getJsonValues(true), function (res, e) {
@@ -175,20 +229,18 @@ Ext.define('amdaModel.InteractiveNode', { @@ -175,20 +229,18 @@ Ext.define('amdaModel.InteractiveNode', {
175 if (e.status) { 229 if (e.status) {
176 if (res.id) { 230 if (res.id) {
177 if (!this.get('contextNode')) { 231 if (!this.get('contextNode')) {
178 - // set the root node of 'Derived Parameters' tree as contextNode 232 + // Set the root node of 'Derived Parameters' tree as contextNode
179 this.set('contextNode', this.getRootNode()); 233 this.set('contextNode', this.getRootNode());
180 } 234 }
181 this.get('contextNode').expand(false, false); 235 this.get('contextNode').expand(false, false);
182 this.myGetOwnerTree().getSelectionModel().select(this); 236 this.myGetOwnerTree().getSelectionModel().select(this);
183 237
184 - if (opt) {  
185 - var scope = opt.scope ? opt.scope : this;  
186 - if (opt.callback)  
187 - opt.callback.call(scope, 'update'); 238 + if (opt && opt.callback) {
  239 + opt.callback.call(opt.scope ? opt.scope : this, 'update');
188 } 240 }
189 241
190 Ext.Msg.alert('Complete', 'Object ' + this.get('object').get('name') + ' has been modified'); 242 Ext.Msg.alert('Complete', 'Object ' + this.get('object').get('name') + ' has been modified');
191 - // fix the modifications for object 243 + // Fix the modifications for object
192 this.get('object').commit(); 244 this.get('object').commit();
193 245
194 if (res.info) { 246 if (res.info) {
@@ -198,33 +250,33 @@ Ext.define('amdaModel.InteractiveNode', { @@ -198,33 +250,33 @@ Ext.define('amdaModel.InteractiveNode', {
198 if (this.get('nodeType') == 'myDataParam') { 250 if (this.get('nodeType') == 'myDataParam') {
199 if (res.isSpectra) { 251 if (res.isSpectra) {
200 this.set('iconCls', 'icon-spectra'); 252 this.set('iconCls', 'icon-spectra');
201 - }  
202 - else {  
203 - if (res.size > 1) this.set('iconCls', 'icon-unknowntype'); 253 + } else if (res.size > 1) {
  254 + this.set('iconCls', 'icon-unknowntype');
204 } 255 }
205 } 256 }
206 257
207 - // update my data on possibble mask change 258 + // Update my data on possibble mask change
208 if (res.updateMyData) { 259 if (res.updateMyData) {
209 this.updateMyData(); 260 this.updateMyData();
210 this.updateMask(res.mask); 261 this.updateMask(res.mask);
211 } 262 }
212 - // reload object into the view of corresponding Module 263 + // Reload object into the view of corresponding Module
213 var me = this; 264 var me = this;
214 myDesktopApp.getLoadedModule(this.get('moduleId'), true, function (module) { 265 myDesktopApp.getLoadedModule(this.get('moduleId'), true, function (module) {
215 module.getUiContent().setObject(me.get('object')); 266 module.getUiContent().setObject(me.get('object'));
216 }); 267 });
217 - }  
218 - else {  
219 - //TODO proper error message handling  
220 - // error code from server; but e.status==true  
221 - // revert all modifications since last load or commit 268 + } else {
  269 +
  270 + /*
  271 + *TODO proper error message handling
  272 + * error code from server; but e.status==true
  273 + * revert all modifications since last load or commit
  274 + */
222 this.get('object').reject(); 275 this.get('object').reject();
223 myDesktopApp.errorMsg(res.error); 276 myDesktopApp.errorMsg(res.error);
224 } 277 }
225 - }  
226 - else {  
227 - // revert all modifications since last load or commit 278 + } else {
  279 + // Revert all modifications since last load or commit
228 this.get('object').reject(); 280 this.get('object').reject();
229 myDesktopApp.errorMsg(e.message); 281 myDesktopApp.errorMsg(e.message);
230 } 282 }
@@ -232,114 +284,122 @@ Ext.define('amdaModel.InteractiveNode', { @@ -232,114 +284,122 @@ Ext.define('amdaModel.InteractiveNode', {
232 }, 284 },
233 285
234 /** 286 /**
235 - * Method to create a new AmdaObject by server side and create the workspace node linked to a Module  
236 - * under its contextNode or the root node corresponding to this nodeType category 287 + * Method to create a new AmdaObject by server side and create the workspace node linked to a Module under its
  288 + * contextNode or the root node corresponding to this nodeType category.
  289 + * @param {object} opt ...
  290 + * @returns {void}
237 */ 291 */
238 create: function (opt) { 292 create: function (opt) {
239 - if (!this.get('contextNode') || (this.get('contextNode').data.id == 'sharedtimeTable-treeRootNode') || (this.get('contextNode').data.id == 'sharedcatalog-treeRootNode')) {  
240 - // set the root node of 'Derived Parameters' tree as contextNode 293 + var contextId;
  294 + if (!this.get('contextNode') || this.get('contextNode').data.id == 'sharedtimeTable-treeRootNode' ||
  295 + this.get('contextNode').data.id == 'sharedcatalog-treeRootNode') {
  296 + // Set the root node of 'Derived Parameters' tree as contextNode
241 this.set('contextNode', this.getRootNode()); 297 this.set('contextNode', this.getRootNode());
242 } 298 }
243 - // call the Ext.Direct method to create parameter  
244 - AmdaAction.createObject(this.get('object').getJsonValues(false), this.get('contextNode').get('id'), function (res, e) {  
245 - //success 299 + // Call the Ext.Direct method to create parameter
  300 + contextId = this.get('contextNode').get('id');
  301 + AmdaAction.createObject(this.get('object').getJsonValues(false), contextId, function (res, e) {
  302 + var myRoot, updateNode;
  303 + // Success
246 if (e.status) { 304 if (e.status) {
247 - // if correct response received  
248 - if (res.id) { //if (res.id || res.error == 'NAME_EXISTS') {  
249 - // 'save as' case ; delete old node if it exists 305 + // If correct response received
  306 + if (res.id) {
  307 + // If (res.id || res.error == 'NAME_EXISTS') {
250 if (this.toRename) { 308 if (this.toRename) {
  309 + // 'save as' case ; delete old node if it exists
251 this.toRename = false; 310 this.toRename = false;
252 - var myRoot = this.getRootNode();  
253 - // search the same named node to override  
254 - var updateNode = myRoot.findChild('text', this.get('object').get('name'), true);  
255 - // destroy the overrided node  
256 - updateNode.parentNode.removeChild(updateNode);//TODO ??if destroy==true => too many recursions.... 311 + myRoot = this.getRootNode();
  312 + // Search the same named node to override
  313 + updateNode = myRoot.findChild('text', this.get('object').get('name'), true);
  314 + // Destroy the overrided node
  315 + updateNode.parentNode.removeChild(updateNode);
  316 + // TODO ??if destroy==true => too many recursions....
257 updateNode.destroy(); 317 updateNode.destroy();
258 } 318 }
259 - // set text of this node 319 + // Set text of this node
260 this.set('text', this.get('object').get('name')); 320 this.set('text', this.get('object').get('name'));
261 - //set id of this node 321 + // Set id of this node
262 this.set('id', res.id); 322 this.set('id', res.id);
263 this.internalId = res.id; 323 this.internalId = res.id;
264 - // set id of node's object 324 + // Set id of node's object
265 this.get('object').set('id', res.id); 325 this.get('object').set('id', res.id);
266 326
267 if (res.created) { 327 if (res.created) {
268 - // set the created date 328 + // Set the created date
269 this.get('object').set('created', res.created); 329 this.get('object').set('created', res.created);
270 } 330 }
271 331
272 if (res.info) { 332 if (res.info) {
273 - // set the tooltip 333 + // Set the tooltip
274 this.set('info', res.info); 334 this.set('info', res.info);
275 - //set globalStart & global Stop to be used for time selection 335 + // Set globalStart & global Stop to be used for time selection
276 if (this.get('nodeType') == 'myDataParam') { 336 if (this.get('nodeType') == 'myDataParam') {
277 - var startStop = res.info.split("<br/>");  
278 - var globalStart = startStop[1].substr(0, 19);  
279 - var globalStop = startStop[1].substr(20); 337 + var startStop = res.info.split('<br/>');
  338 + this.set('globalStart', startStop[1].substr(0, 19));
  339 + this.set('globalStop', startStop[1].substr(20));
280 340
281 - this.set('globalStart', globalStart);  
282 - this.set('globalStop', globalStop);  
283 -  
284 - if (res.mask) 341 + if (res.mask) {
285 this.set('linkedMask', res.mask); 342 this.set('linkedMask', res.mask);
286 - if (res.size) 343 + }
  344 + if (res.size) {
287 this.set('size', res.size); 345 this.set('size', res.size);
  346 + }
288 347
289 if (res.isSpectra) { 348 if (res.isSpectra) {
290 this.set('iconCls', 'icon-spectra'); 349 this.set('iconCls', 'icon-spectra');
291 - }  
292 - else {  
293 - if (res.size > 1)  
294 - this.set('iconCls', 'icon-unknowntype'); 350 + } else if (res.size > 1) {
  351 + this.set('iconCls', 'icon-unknowntype');
295 } 352 }
296 } 353 }
297 } 354 }
298 - //TODO do we need this commission ???  
299 - // fix the modifications for object 355 +
  356 + /*
  357 + *TODO do we need this commission ???
  358 + * fix the modifications for object
  359 + */
300 this.get('object').commit(); 360 this.get('object').commit();
301 - // if ownerTree panel is not active 361 + // If ownerTree panel is not active
302 if (this.myGetOwnerTree().ownerCt.getActiveTab() !== this.myGetOwnerTree()) { 362 if (this.myGetOwnerTree().ownerCt.getActiveTab() !== this.myGetOwnerTree()) {
303 - // set ownerTree panel as the active tab - to enable selection of this node his ownerTree must have a view 363 + // Set ownerTree panel as the active tab - to enable selection of this node his ownerTree must have a view
304 this.myGetOwnerTree().ownerCt.setActiveTab(this.myGetOwnerTree()); 364 this.myGetOwnerTree().ownerCt.setActiveTab(this.myGetOwnerTree());
305 } 365 }
306 366
307 Ext.Msg.alert('Complete', 'New object ' + this.get('object').get('name') + ' has been created'); 367 Ext.Msg.alert('Complete', 'New object ' + this.get('object').get('name') + ' has been created');
308 - // expand the contextNode 368 + // Expand the contextNode
309 this.get('contextNode').expand(false, function () { 369 this.get('contextNode').expand(false, function () {
310 if (!this.get('contextNode').findChild('text', this.get('text'))) { 370 if (!this.get('contextNode').findChild('text', this.get('text'))) {
311 - // create node in tree as child of contextNode 371 + // Create node in tree as child of contextNode
312 this.get('contextNode').appendChild(this); 372 this.get('contextNode').appendChild(this);
313 } 373 }
314 - // select the new node 374 + // Select the new node
315 this.myGetOwnerTree().getSelectionModel().select(this); 375 this.myGetOwnerTree().getSelectionModel().select(this);
316 - if (opt) {  
317 - var scope = opt.scope ? opt.scope : this;  
318 - if (opt.callback)  
319 - opt.callback.call(scope, 'create'); 376 + if (opt && opt.callback) {
  377 + opt.callback.call(opt.scope ? opt.scope : this, 'create');
320 } 378 }
321 }, this); 379 }, this);
322 380
323 - // myDataParamNode - update MyData subtree  
324 - //TODO put this in mydataparamnode 381 + /*
  382 + * MyDataParamNode - update MyData subtree
  383 + *TODO put this in mydataparamnode
  384 + */
325 if (res.updateMyData) { 385 if (res.updateMyData) {
326 this.updateMyData(); 386 this.updateMyData();
327 this.updateMask(res.mask); 387 this.updateMask(res.mask);
328 } 388 }
329 389
330 } 390 }
331 - // error code from server; but e.status==true 391 + // Error code from server; but e.status==true
332 else { 392 else {
333 myDesktopApp.errorMsg(res.error); 393 myDesktopApp.errorMsg(res.error);
334 - // revert all modifications since last load or commit 394 + // Revert all modifications since last load or commit
335 this.get('object').reject(); 395 this.get('object').reject();
336 } 396 }
337 } 397 }
338 - // failure: e.status == false 398 + // Failure: e.status == false
339 else { 399 else {
340 - // revert all modifications since last load or commit 400 + // Revert all modifications since last load or commit
341 this.get('object').reject(); 401 this.get('object').reject();
342 - //TODO: this.destroy(); 402 + // TODO: this.destroy();
343 myDesktopApp.errorMsg(e.message); 403 myDesktopApp.errorMsg(e.message);
344 } 404 }
345 }, this); 405 }, this);
@@ -347,36 +407,46 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, { @@ -347,36 +407,46 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, {
347 407
348 /** 408 /**
349 * Generic part of Context Menu 409 * Generic part of Context Menu
350 - * 410 + * @returns {*[]|*} Menu items
351 */ 411 */
352 allMenuItems: function () { 412 allMenuItems: function () {
353 - var src = this.self.objectName;  
354 - var menuItems = [ 413 + var menuItems, src;
  414 +
  415 + src = this.self.objectName;
  416 + menuItems = [
355 { 417 {
356 fnId: 'root-createLeaf', 418 fnId: 'root-createLeaf',
357 text: 'Create ' + src 419 text: 'Create ' + src
358 - }, { 420 + },
  421 + {
359 fnId: 'root-createDir', 422 fnId: 'root-createDir',
360 text: 'Create Folder' 423 text: 'Create Folder'
361 - }, { 424 + },
  425 + {
362 fnId: 'dire-createLeaf', 426 fnId: 'dire-createLeaf',
363 text: 'Create ' + src 427 text: 'Create ' + src
364 - }, { 428 + },
  429 + {
365 fnId: 'dire-createDir', 430 fnId: 'dire-createDir',
366 text: 'Create Folder' 431 text: 'Create Folder'
367 - }, { 432 + },
  433 + {
368 fnId: 'dire-renameNode', 434 fnId: 'dire-renameNode',
369 text: 'Rename Folder' 435 text: 'Rename Folder'
370 - }, { 436 + },
  437 + {
371 fnId: 'dire-deleteNode', 438 fnId: 'dire-deleteNode',
372 text: 'Delete Folder' 439 text: 'Delete Folder'
373 - }, { 440 + },
  441 + {
374 fnId: 'leaf-editLeaf', 442 fnId: 'leaf-editLeaf',
375 text: 'Edit ' + src 443 text: 'Edit ' + src
376 - }, { 444 + },
  445 + {
377 fnId: 'leaf-renameNode', 446 fnId: 'leaf-renameNode',
378 text: 'Rename ' + src 447 text: 'Rename ' + src
379 - }, { 448 + },
  449 + {
380 fnId: 'leaf-deleteNode', 450 fnId: 'leaf-deleteNode',
381 text: 'Delete ' + src 451 text: 'Delete ' + src
382 } 452 }
@@ -385,13 +455,12 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, { @@ -385,13 +455,12 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, {
385 }, 455 },
386 456
387 allMenuMultiItems: function () { 457 allMenuMultiItems: function () {
388 - var menuMulti = [ 458 + return [
389 { 459 {
390 fnId: 'mult-deleteMulti', 460 fnId: 'mult-deleteMulti',
391 text: 'Delete selected ' + this.self.objectName + 's' 461 text: 'Delete selected ' + this.self.objectName + 's'
392 } 462 }
393 ]; 463 ];
394 - return menuMulti;  
395 }, 464 },
396 465
397 getAllContextMenuItems: function () { 466 getAllContextMenuItems: function () {
@@ -402,20 +471,24 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, { @@ -402,20 +471,24 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, {
402 return this.allMenuMultiItems(); 471 return this.allMenuMultiItems();
403 }, 472 },
404 473
  474 + // FIXME: duplicate declaration ↓ ↑
  475 +
405 /** 476 /**
406 - * default implementation  
407 - * no menu display if there's no override of this function 477 + * Default implementation: no menu display if there's no override of this function
  478 + * @returns {null} Items
408 */ 479 */
409 getMultiContextMenuItems: function () { 480 getMultiContextMenuItems: function () {
410 return null; 481 return null;
411 }, 482 },
412 483
413 /** 484 /**
414 - * Context Menu Actions  
415 - * 485 + * Context Menu Actions
  486 + * @param {object} menu The menu
  487 + * @param {object} item the item
  488 + * @returns {void}
416 */ 489 */
417 - onMenuItemClick: function (menu, item, event) {  
418 - // fnId parsing : 490 + onMenuItemClick: function (menu, item) {
  491 + // FnId parsing :
419 var fnId = Ext.util.Format.substr(item.fnId, 5, item.fnId.length); 492 var fnId = Ext.util.Format.substr(item.fnId, 5, item.fnId.length);
420 493
421 switch (fnId) { 494 switch (fnId) {
@@ -445,36 +518,41 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, { @@ -445,36 +518,41 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, {
445 break; 518 break;
446 default: 519 default:
447 break; 520 break;
448 - } // switch end 521 + }
449 }, 522 },
450 523
451 getTimeFromNode: function (node) { 524 getTimeFromNode: function (node) {
452 - var startString = String(node.get('globalStart'));  
453 - var stopString = String(node.get('globalStop'));  
454 -  
455 - var startDate = new Date(startString.replace(/\-/g, '\/').replace(/[T|Z]/g, ' '));  
456 - var stopDate = new Date(stopString.replace(/\-/g, '\/').replace(/[T|Z]/g, ' ')); 525 + var startDate, stopDate, timeObj;
  526 + startDate = new Date(String(node.get('globalStart')).replace(/-/g, '/').replace(/[T|Z]/g, ' '));
  527 + stopDate = new Date(String(node.get('globalStop')).replace(/-/g, '/').replace(/[T|Z]/g, ' '));
457 528
458 if (stopDate - startDate > 86400000) { 529 if (stopDate - startDate > 86400000) {
459 - var startTime = Ext.Date.add(stopDate, Ext.Date.DAY, -1);  
460 - // var timeObj = {start: Ext.Date.format(startTime, 'Y/m/d H:i:s'), stop: Ext.Date.format(stopDate, 'Y/m/d H:i:s')};  
461 - var timeObj = {start: Ext.Date.format(startTime, 'Y/m/d'), stop: Ext.Date.format(stopDate, 'Y/m/d')};  
462 - }  
463 - else {  
464 - var timeObj = {start: node.get('globalStart'), stop: node.get('globalStop')}; 530 + // 'timeObj = {start: Ext.Date.format(startTime, 'Y/m/d H:i:s'), stop: Ext.Date.format(stopDate, 'Y/m/d H:i:s')};
  531 + timeObj = {
  532 + start: Ext.Date.format(Ext.Date.add(stopDate, Ext.Date.DAY, -1), 'Y/m/d'),
  533 + stop: Ext.Date.format(stopDate, 'Y/m/d')
  534 + };
  535 + } else {
  536 + timeObj = {
  537 + start: node.get('globalStart'),
  538 + stop: node.get('globalStop')
  539 + };
465 } 540 }
466 return timeObj; 541 return timeObj;
467 }, 542 },
468 543
469 createPlot: function (node) { 544 createPlot: function (node) {
470 - if (node.get('disable')) return; 545 + if (node.get('disable')) {
  546 + return;
  547 + }
471 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id, true, function (module) { 548 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id, true, function (module) {
472 if (!myDesktopApp.desktop.getWindow(myDesktopApp.dynamicModules.plot.id)) { 549 if (!myDesktopApp.desktop.getWindow(myDesktopApp.dynamicModules.plot.id)) {
473 var request = Ext.create(amdaPlotObj.PlotRequestObject.$className); 550 var request = Ext.create(amdaPlotObj.PlotRequestObject.$className);
474 var newNode = Ext.create(amdaModel.PlotNode.$className, {object: request}); 551 var newNode = Ext.create(amdaModel.PlotNode.$className, {object: request});
475 - // edit newNode into Plot Module with node as contextNode 552 + // Edit newNode into Plot Module with node as contextNode
476 newNode.editInModule(); 553 newNode.editInModule();
477 - if ((node.get('globalStart') != null) && (node.get('globalStop') != null) && node.get('globalStart') != 'depending on mission' && node.get('isParameter')) { 554 + if (node.get('globalStart') != null && node.get('globalStop') != null &&
  555 + node.get('globalStart') != 'depending on mission' && node.get('isParameter')) {
478 module.getUiContent().setTimeFromData(node.getTimeFromNode(node)); 556 module.getUiContent().setTimeFromData(node.getTimeFromNode(node));
479 } 557 }
480 } 558 }
@@ -483,7 +561,9 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, { @@ -483,7 +561,9 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, {
483 }, 561 },
484 562
485 createDownload: function (node) { 563 createDownload: function (node) {
486 - if (node.get('disable')) return; 564 + if (node.get('disable')) {
  565 + return;
  566 + }
487 567
488 if (node.get('notyet')) { 568 if (node.get('notyet')) {
489 myDesktopApp.warningMsg('Sorry! access to this parameter is restricted.'); 569 myDesktopApp.warningMsg('Sorry! access to this parameter is restricted.');
@@ -491,143 +571,163 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, { @@ -491,143 +571,163 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, {
491 } 571 }
492 572
493 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.download.id, true, function (module) { 573 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.download.id, true, function (module) {
  574 + var paramName, request;
494 if (!myDesktopApp.desktop.getWindow(myDesktopApp.dynamicModules.download.id)) { 575 if (!myDesktopApp.desktop.getWindow(myDesktopApp.dynamicModules.download.id)) {
495 - var request = Ext.create(amdaModel.Download.$className); 576 + request = Ext.create(amdaModel.Download.$className);
496 amdaModel.DownloadNode.set('object', request); 577 amdaModel.DownloadNode.set('object', request);
497 - // singleton! 578 + // Singleton!
498 amdaModel.DownloadNode.editInModule(); 579 amdaModel.DownloadNode.editInModule();
499 - if ((node.get('globalStart') != null) && (node.get('globalStop') != null) && node.get('globalStart') != 'depending on mission' && node.get('isParameter')) { 580 + if (node.get('globalStart') != null && node.get('globalStop') != null &&
  581 + node.get('globalStart') != 'depending on mission' && node.get('isParameter')) {
500 module.getUiContent().setTimeFromData(node.getTimeFromNode(node)); 582 module.getUiContent().setTimeFromData(node.getTimeFromNode(node));
501 } 583 }
502 } 584 }
503 - var paramName;  
504 - var components = null;  
505 switch (node.$className) { 585 switch (node.$className) {
506 - case 'amdaModel.AliasNode' :  
507 - paramName = "#" + node.get('text'); 586 + case 'amdaModel.AliasNode':
  587 + paramName = '#' + node.get('text');
508 break; 588 break;
509 - case 'amdaModel.DerivedParamNode' :  
510 - paramName = "ws_" + node.get('text'); 589 + case 'amdaModel.DerivedParamNode':
  590 + paramName = 'ws_' + node.get('text');
511 break; 591 break;
512 - case 'amdaModel.MyDataParamNode' : 592 + case 'amdaModel.MyDataParamNode':
513 paramName = 'wsd_' + node.get('text'); 593 paramName = 'wsd_' + node.get('text');
514 break; 594 break;
515 - default :  
516 - if (node.get('alias') != "")  
517 - paramName = "#" + node.get('alias');  
518 - else 595 + default:
  596 + if (node.get('alias') != '') {
  597 + paramName = '#' + node.get('alias');
  598 + } else {
519 paramName = node.get('id'); 599 paramName = node.get('id');
  600 + }
520 } 601 }
521 -// var component_info = node.get('component_info');  
522 -// if (component_info && component_info.parentId) {  
523 -// //It's a component  
524 -// paramName = component_info.parentId;  
525 -// components = [];  
526 -// if (component_info.index1)  
527 -// components['index1'] = component_info.index1;  
528 -// if (component_info.index2)  
529 -// components['index2'] = component_info.index2;  
530 -// }  
531 - module.addParam(paramName, true, node.get('needsArgs'), components); 602 +
  603 + /*
  604 + * Var component_info = node.get('component_info');
  605 + * If (component_info && component_info.parentId) {
  606 + * // It's a component
  607 + * ParamName = component_info.parentId;
  608 + * Components = [];
  609 + * If (component_info.index1)
  610 + * Components['index1'] = component_info.index1;
  611 + * If (component_info.index2)
  612 + * Components['index2'] = component_info.index2;
  613 + * }
  614 + */
  615 + module.addParam(paramName, true, node.get('needsArgs'), null);
532 }); 616 });
533 }, 617 },
534 618
535 deleteNode: function () { 619 deleteNode: function () {
536 - // if the target is a directory  
537 - if (!this.isLeaf()) {  
538 - // determine if this directory is empty before launching the delete confirmation method  
539 - this.isNotEmptyDir(this.confirmDirectoryDeletion);  
540 - // else (the target is a leaf)  
541 - } else {  
542 - // no confirmation prompt for leaves 620 + // If the target is a directory
  621 + if (this.isLeaf()) {
  622 + // No confirmation prompt for leaves
543 this.confirmDirectoryDeletion(false); 623 this.confirmDirectoryDeletion(false);
  624 + } else {
  625 + // Determine if this directory is empty before launching the delete confirmation method
  626 + this.isNotEmptyDir(this.confirmDirectoryDeletion);
  627 + // Else (the target is a leaf)
544 } 628 }
545 }, 629 },
546 630
547 /** 631 /**
548 - * this method return if node has Childs even if it was not already loaded 632 + * This method return if node has Childs even if it was not already loaded
  633 + * @param {function} callbackFn Callback function
  634 + * @returns {void}
549 */ 635 */
550 isNotEmptyDir: function (callbackFn) { 636 isNotEmptyDir: function (callbackFn) {
551 - var hasChilds;  
552 - // if node not already loaded  
553 - if (!this.isLoaded()) {  
554 - // call directFunction to load this node  
555 - AmdaAction.getTree({node: this.get('id'), nodeType: this.get('nodeType')}, function (res, e) {  
556 - callbackFn.call(this, res.length > 0 ? true : false);  
557 - }, this);  
558 - }  
559 - else { 637 + // If node not already loaded
  638 + if (this.isLoaded()) {
560 callbackFn.call(this, this.hasChildNodes()); 639 callbackFn.call(this, this.hasChildNodes());
  640 + } else {
  641 + // Call directFunction to load this node
  642 + AmdaAction.getTree({
  643 + node: this.get('id'),
  644 + nodeType: this.get('nodeType')
  645 + }, function (res) {
  646 + callbackFn.call(this, res.length > 0);
  647 + }, this);
561 } 648 }
562 }, 649 },
563 650
564 /** 651 /**
565 - * this method is used to display a confirmation message 652 + * This method is used to display a confirmation message
  653 + * @param {boolean} isNotEmptyDir true if the directory is not empty.
  654 + * @returns {void}
566 */ 655 */
567 confirmDirectoryDeletion: function (isNotEmptyDir) { 656 confirmDirectoryDeletion: function (isNotEmptyDir) {
568 - // if this is a non-empty directory 657 + var ConfirmMsg = 'The target is a non-empty directory!<br>Do you want to continue and also delete its content?';
  658 + // If this is a non-empty directory
569 if (isNotEmptyDir) { 659 if (isNotEmptyDir) {
570 // Prompt to the user if he also wants to delete its content 660 // Prompt to the user if he also wants to delete its content
571 - Ext.Msg.confirm('non-empty directory', 'The target is a non-empty directory!<br>Do you want to continue and also delete its content?', function (btn, text) { 661 + Ext.Msg.confirm('non-empty directory', ConfirmMsg, function (btn, text) {
572 if (btn == 'yes') { 662 if (btn == 'yes') {
573 - // do delete 663 + // Do delete
574 this.realDelete(); 664 this.realDelete();
575 } 665 }
576 }, this); 666 }, this);
577 - }  
578 - else { 667 + } else {
579 this.realDelete(); 668 this.realDelete();
580 } 669 }
581 }, 670 },
582 671
583 /* 672 /*
584 - * Call the extDirect method to delete parameter  
585 - * Callback method needed to execute node deletion in tree if id in result or to show error msg  
586 - */ 673 + * Call the extDirect method to delete parameter
  674 + * Callback method needed to execute node deletion in tree if id in result or to show error msg
  675 + */
587 realDelete: function () { 676 realDelete: function () {
588 AmdaAction.deleteObject({ 677 AmdaAction.deleteObject({
589 id: this.get('id'), 678 id: this.get('id'),
590 leaf: this.isLeaf(), 679 leaf: this.isLeaf(),
591 nodeType: this.get('nodeType') 680 nodeType: this.get('nodeType')
592 }, function (res, e) { 681 }, function (res, e) {
593 - //TODO proper errors handling  
594 - // node deletion in tree  
595 - if (res) { // if success 682 + var me, moduleId;
  683 + me = this;
  684 +
  685 + // Node deletion in tree - TODO proper errors handling
  686 +
  687 + // If success
  688 + if (res) {
596 if (res.id) { 689 if (res.id) {
597 - //Ext.Msg.show({title:'Warning', msg: 'Requests with parameter '+node.data.text+' are deleted', icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK}); 690 +
  691 + /*
  692 + * Ext.Msg.show({
  693 + * title:'Warning',
  694 + * msg: 'Requests with parameter '+node.data.text+' are deleted',
  695 + * icon: Ext.MessageBox.ERROR,
  696 + * buttons: Ext.Msg.OK
  697 + * });
  698 + */
598 if (this.parentNode) { 699 if (this.parentNode) {
599 if (this.isLeaf()) { 700 if (this.isLeaf()) {
600 - var moduleId = this.get('moduleId');  
601 - // if really interactive node 701 + moduleId = this.get('moduleId');
  702 + // If really interactive node
602 if (moduleId) { 703 if (moduleId) {
603 - var me = this;  
604 myDesktopApp.getLoadedModule(moduleId, true, function (module) { 704 myDesktopApp.getLoadedModule(moduleId, true, function (module) {
605 - var editedNode = module.getLinkedNode();  
606 - // file node is not linked directly to the module  
607 - var isThisFile = false; 705 + var editedNode, isThisFile, linkedNodes, newNode, tabPanel;
  706 + editedNode = module.getLinkedNode();
  707 + // File node is not linked directly to the module
  708 + isThisFile = false;
608 709
609 - if (editedNode && editedNode.$className == 'amdaModel.MyDataParamNode')  
610 - if (editedNode.get('fileObject').get('fileName') == me.get('text')) 710 + if (editedNode && editedNode.$className == 'amdaModel.MyDataParamNode') {
  711 + if (editedNode.get('fileObject').get('fileName') == me.get('text')) {
611 isThisFile = true; 712 isThisFile = true;
  713 + }
  714 + }
612 715
613 if (me.$className == 'amdaModel.DerivedParamNode') { 716 if (me.$className == 'amdaModel.DerivedParamNode') {
614 - var obj = {  
615 - paramId: 'ws_' + me.get('text')  
616 - };  
617 - AmdaAction.compilParamDelete(obj); 717 + AmdaAction.compilParamDelete({paramId: 'ws_' + me.get('text')});
618 } 718 }
619 719
620 if (editedNode === me || isThisFile) { 720 if (editedNode === me || isThisFile) {
621 - var newNode = Ext.ModelManager.create({leaf: true}, me.$className);  
622 - // several tabs could be connected to one node 721 + newNode = Ext.ModelManager.create({leaf: true}, me.$className);
  722 + // Several tabs could be connected to one node
623 if (moduleId === myDesktopApp.dynamicModules.plot.id) { 723 if (moduleId === myDesktopApp.dynamicModules.plot.id) {
624 - var linkedNodes = module.linkedNodes; 724 + linkedNodes = module.linkedNodes;
625 725
626 if (linkedNodes) { 726 if (linkedNodes) {
627 linkedNodes.each(function (key, value) { 727 linkedNodes.each(function (key, value) {
628 if (value === me) { 728 if (value === me) {
629 linkedNodes.replace(key, newNode); 729 linkedNodes.replace(key, newNode);
630 - var tabPanel = module.getUiContent().tabPanel.items.getByKey(key); 730 + tabPanel = module.getUiContent().tabPanel.items.getByKey(key);
631 tabPanel.setObject(Ext.create(amdaModel.Plot.$className, {})); 731 tabPanel.setObject(Ext.create(amdaModel.Plot.$className, {}));
632 } 732 }
633 }, me); 733 }, me);
@@ -638,141 +738,151 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, { @@ -638,141 +738,151 @@ Ext.define(&#39;amdaModel.InteractiveNode&#39;, {
638 }); 738 });
639 } 739 }
640 } 740 }
641 - //update mask info in myData 741 + // Update mask info in myData
642 if (res.maskDesc && !res.maskDeleted) { 742 if (res.maskDesc && !res.maskDeleted) {
643 this.parentNode.set('info', res.maskDesc); 743 this.parentNode.set('info', res.maskDesc);
644 this.updateMyDataParam(res.mask, res.maskDesc); 744 this.updateMyDataParam(res.mask, res.maskDesc);
645 } 745 }
646 this.remove(); 746 this.remove();
647 } 747 }
648 - //TODO Several special node-dependent actions - to move to node functions..  
649 - // nodes of another nodeType to be deleted as they depend on deleted node 748 +
  749 + /*
  750 + *TODO Several special node-dependent actions - to move to node functions..
  751 + * nodes of another nodeType to be deleted as they depend on deleted node
  752 + */
650 if (res.params) { 753 if (res.params) {
651 this.deleteDependence(res.params); 754 this.deleteDependence(res.params);
652 - //TODO reset 755 + // TODO reset
653 } 756 }
654 - // mask was deleted or updated - to update mydata tree 757 + // Mask was deleted or updated - to update mydata tree
655 if (res.maskDeleted) { 758 if (res.maskDeleted) {
656 this.updateMyData(); 759 this.updateMyData();
657 } 760 }
658 - }  
659 - else { 761 + } else {
660 myDesktopApp.warningMsg(res.error); 762 myDesktopApp.warningMsg(res.error);
661 } 763 }
662 - }  
663 - else { 764 + } else {
664 myDesktopApp.errorMsg(e.message); 765 myDesktopApp.errorMsg(e.message);
665 } 766 }
666 }, this); 767 }, this);
667 }, 768 },
668 769
669 - /*  
670 - * Delete musti selection  
671 - */ 770 + /**
  771 + * Delete multi selection
  772 + * @returns {void}
  773 + */
672 deleteMulti: function () { 774 deleteMulti: function () {
673 var selection = this.myGetOwnerTree().getSelectionModel().selected.items; 775 var selection = this.myGetOwnerTree().getSelectionModel().selected.items;
674 - alert(selection.length + ' to delete!'); 776 + Ext.alert(selection.length + ' to delete!');
675 Ext.Array.each(selection, function (item, index, allItems) { 777 Ext.Array.each(selection, function (item, index, allItems) {
676 item.deleteNode(); 778 item.deleteNode();
677 - }) 779 + });
678 }, 780 },
679 781
680 - /*  
681 - * Create Folder  
682 - */ 782 + /**
  783 + * Create Folder
  784 + * @returns {void}
  785 + */
683 createDir: function () { 786 createDir: function () {
684 var me = this; 787 var me = this;
685 amdaModel.InteractiveNode.preloadNodes(this.getRootNode(), function () { 788 amdaModel.InteractiveNode.preloadNodes(this.getRootNode(), function () {
686 var newNode = Ext.create(me.$className, 789 var newNode = Ext.create(me.$className,
687 { 790 {
688 - leaf: false, nodeType: me.get('nodeType'), 791 + leaf: false,
  792 + nodeType: me.get('nodeType'),
689 text: amdaModel.AmdaNode.NEW_DIR_NAME, 793 text: amdaModel.AmdaNode.NEW_DIR_NAME,
690 children: [], 794 children: [],
691 parentId: me.get('id') 795 parentId: me.get('id')
692 }); 796 });
693 797
694 - // insert the new node as a child of node 798 + // Insert the new node as a child of node
695 me.insertChild(0, newNode); 799 me.insertChild(0, newNode);
696 - // start text edition on this new directory node 800 + // Start text edition on this new directory node
697 me.expand(false); 801 me.expand(false);
698 newNode.expand(false); 802 newNode.expand(false);
699 803
700 - // select the new node 804 + // Select the new node
701 me.myGetOwnerTree().getSelectionModel().select(newNode); 805 me.myGetOwnerTree().getSelectionModel().select(newNode);
702 - // call the renameNode method for this new node 806 + // Call the renameNode method for this new node
703 newNode.renameNode(true); 807 newNode.renameNode(true);
704 }); 808 });
705 }, 809 },
706 810
707 /* 811 /*
708 - *  
709 - */ 812 + *
  813 + */
710 createLeaf: function (contextNode) { 814 createLeaf: function (contextNode) {
711 - // create new node with the same type than the contextNode 815 + // Create new node with the same type than the contextNode
712 var newNode = Ext.create(contextNode.$className, {leaf: true}); 816 var newNode = Ext.create(contextNode.$className, {leaf: true});
713 817
714 - // load the rootNode and recursively all its child nodes 818 + // Load the rootNode and recursively all its child nodes
715 amdaModel.InteractiveNode.preloadNodes(contextNode.getRootNode(), function () { 819 amdaModel.InteractiveNode.preloadNodes(contextNode.getRootNode(), function () {
716 - // edit newNode into Parameter Module with node as contextNode 820 + // Edit newNode into Parameter Module with node as contextNode
717 newNode.editInModule(contextNode); 821 newNode.editInModule(contextNode);
718 }); 822 });
719 }, 823 },
720 824
721 renameNode: function (deleteOnFailure) { 825 renameNode: function (deleteOnFailure) {
  826 + var item, me;
  827 + me = this;
722 if (this.myGetOwnerTree()) { 828 if (this.myGetOwnerTree()) {
723 - // load the rootNode and recursively all its child nodes if not already loaded  
724 - var me = this; 829 + // Load the rootNode and recursively all its child nodes if not already loaded
725 amdaModel.InteractiveNode.preloadNodes(this.getRootNode(), function () { 830 amdaModel.InteractiveNode.preloadNodes(this.getRootNode(), function () {
726 - // fire the edition event on tree  
727 - var item = me.myGetOwnerTree().getSelectionModel().selected.items[0]; 831 + // Fire the edition event on tree
  832 + item = me.myGetOwnerTree().getSelectionModel().selected.items[0];
728 item.deleteOnFailure = deleteOnFailure; 833 item.deleteOnFailure = deleteOnFailure;
729 me.myGetOwnerTree().fireEvent('edition', me.myGetOwnerTree().view, item); 834 me.myGetOwnerTree().fireEvent('edition', me.myGetOwnerTree().view, item);
730 }); 835 });
731 - }  
732 - else { 836 + } else {
733 myDesktopApp.errorMsg('tree is undefined'); 837 myDesktopApp.errorMsg('tree is undefined');
734 } 838 }
735 }, 839 },
736 840
737 - /*  
738 - * load the rootNode and recursively all its child nodes  
739 - * to know all names of DerivedParameters  
740 - */ 841 + /**
  842 + * Load the rootNode and recursively all its child nodes to know all names of DerivedParameters
  843 + * @param {function} onReady On ready callback function
  844 + * @returns {void}
  845 + */
741 editLeaf: function (onReady) { 846 editLeaf: function (onReady) {
742 var me = this; 847 var me = this;
743 amdaModel.InteractiveNode.preloadNodes(this.getRootNode(), function () { 848 amdaModel.InteractiveNode.preloadNodes(this.getRootNode(), function () {
744 if (me.get('object')) { 849 if (me.get('object')) {
745 - // launch edition of parameter into parameter module 850 + // Launch edition of parameter into parameter module
746 me.editInModule(null, onReady); 851 me.editInModule(null, onReady);
747 - }  
748 - else {  
749 - // call the ext method to get the details of parameter  
750 - // the edition of real parameter is done into callback method getObjectCallback  
751 - if (onReady) 852 + } else {
  853 +
  854 + /*
  855 + * Call the ext method to get the details of parameter
  856 + * the edition of real parameter is done into callback method getObjectCallback
  857 + */
  858 + if (onReady) {
752 me.onReady = onReady; 859 me.onReady = onReady;
  860 + }
753 861
754 AmdaAction.getObject(me.get('id'), me.get('nodeType'), me.getObjectCallback, me); 862 AmdaAction.getObject(me.get('id'), me.get('nodeType'), me.getObjectCallback, me);
755 } 863 }
756 }); 864 });
757 }, 865 },
758 866
759 - /*  
760 - *  
761 - */ 867 + /**
  868 + * Get object callback
  869 + * @param {object} result The result
  870 + * @param {object} remoteEvent ...
  871 + * @returns {void}
  872 + */
762 getObjectCallback: function (result, remoteEvent) { 873 getObjectCallback: function (result, remoteEvent) {
763 var t = remoteEvent.getTransaction(); 874 var t = remoteEvent.getTransaction();
764 875
765 if (result) { 876 if (result) {
766 var paramObj = Ext.create(this.get('objectDataModel'), result); 877 var paramObj = Ext.create(this.get('objectDataModel'), result);
767 - // set parameter into node 878 + // Set parameter into node
768 this.set('object', paramObj); 879 this.set('object', paramObj);
769 // Edition of parameter into parameter Module 880 // Edition of parameter into parameter Module
770 this.editInModule(null, this.onReady); 881 this.editInModule(null, this.onReady);
771 - }  
772 - else { 882 + } else {
773 // EXCEPTION : parameter not found !? 883 // EXCEPTION : parameter not found !?
774 - myDesktopApp.errorMsg(t.action + "." + t.method + " : No parameter '"  
775 - + this.get('name') + "' found!"); 884 + myDesktopApp.errorMsg(t.action + '.' + t.method + ' : No parameter \'' +
  885 + this.get('name') + '\' found!');
776 } 886 }
777 } 887 }
778 }); 888 });
js/app/views/ExplorerUI.js
@@ -11,6 +11,8 @@ @@ -11,6 +11,8 @@
11 * @author CDA 11 * @author CDA
12 */ 12 */
13 13
  14 +/* global AmdaAction, amdaModel, myDesktopApp, amdaUI, MyTreeEditor */
  15 +
14 Ext.define('amdaUI.TreeToolColumn', { 16 Ext.define('amdaUI.TreeToolColumn', {
15 extend: 'Ext.tree.Column', 17 extend: 'Ext.tree.Column',
16 alias: 'widget.treetoolcolumn', 18 alias: 'widget.treetoolcolumn',
@@ -18,52 +20,57 @@ Ext.define(&#39;amdaUI.TreeToolColumn&#39;, { @@ -18,52 +20,57 @@ Ext.define(&#39;amdaUI.TreeToolColumn&#39;, {
18 /** 20 /**
19 * Add more tools here. These will be on the prototype for all TreeToolColumns 21 * Add more tools here. These will be on the prototype for all TreeToolColumns
20 */ 22 */
21 - tools: {  
22 - 'info': 'js/resources/images/16x16/info_mini.png'  
23 - }, 23 + tools: {info: 'js/resources/images/16x16/info_mini.png'},
24 24
25 initComponent: function () { 25 initComponent: function () {
26 var me = this; 26 var me = this;
  27 +
27 me.addEvents('toolclick'); 28 me.addEvents('toolclick');
28 me.callParent(); 29 me.callParent();
29 me.on('toolclick', me.toolHandler, me); 30 me.on('toolclick', me.toolHandler, me);
30 }, 31 },
31 32
32 renderer: function (value, metaData, record, rowIdx, colIdx, store, view) { 33 renderer: function (value, metaData, record, rowIdx, colIdx, store, view) {
33 - var toolCol = view.getHeaderAtIndex(colIdx);  
34 -  
35 - if (!toolCol.toolIsVisible(record)) return value;  
36 -  
37 - var toolId = 'tool-' + rowIdx + '-' + colIdx,  
38 - toolImg = toolCol.tools[toolCol.tool],  
39 - imgHtml = Ext.DomHelper.markup({  
40 - id: toolId,  
41 - tag: 'img',  
42 - tooltype: toolCol.tool,  
43 - src: toolImg,  
44 - style: 'cursor:hand;'  
45 - }); 34 + var imgHtml,
  35 + toolCol = view.getHeaderAtIndex(colIdx);
  36 +
  37 + if (!toolCol.toolIsVisible(record)) {
  38 + return value;
  39 + }
  40 +
  41 + imgHtml = Ext.DomHelper.markup({
  42 + id: 'tool-' + rowIdx + '-' + colIdx,
  43 + tag: 'img',
  44 + tooltype: toolCol.tool,
  45 + src: toolCol.tools[toolCol.tool],
  46 + style: 'cursor:hand;'
  47 + });
46 48
47 return value + ' ' + imgHtml; 49 return value + ' ' + imgHtml;
48 }, 50 },
49 51
50 processEvent: function (type, view, cell, recordIndex, cellIndex, e) { 52 processEvent: function (type, view, cell, recordIndex, cellIndex, e) {
51 - if (type === "click" && e.target.tagName === "IMG") {  
52 - var tooltype = e.target.getAttribute("tooltype");  
53 - if (tooltype)  
54 - return this.fireEvent("toolclick", view, cell, recordIndex, cellIndex, e); 53 + var toolType;
  54 +
  55 + if (type === 'click' && e.target.tagName === 'IMG') {
  56 + toolType = e.target.getAttribute('tooltype');
  57 + if (toolType) {
  58 + return this.fireEvent('toolclick', view, cell, recordIndex, cellIndex, e);
  59 + }
55 } 60 }
56 return this.fireEvent.apply(this, arguments); 61 return this.fireEvent.apply(this, arguments);
57 }, 62 },
58 63
59 /** 64 /**
60 - * Override this when you add columns to the tree... see example below 65 + * Override this when you add columns to the tree... see example below:
  66 + *
  67 + * ToolHandler: function() {
  68 + * Alert("override this");
  69 + * }
  70 + *
  71 + * @returns {boolean} False
61 */ 72 */
62 -// toolHandler: function() {  
63 -// alert("override this");  
64 -// },  
65 -  
66 - toolIsVisible: function (record) { 73 + toolIsVisible: function () {
67 return false; 74 return false;
68 } 75 }
69 }); 76 });
@@ -101,9 +108,10 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -101,9 +108,10 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
101 }, 108 },
102 109
103 initComponent: function (config) { 110 initComponent: function (config) {
104 - var explorerModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id); 111 + var explorerModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id),
  112 + myConf;
105 113
106 - var myConf = { 114 + myConf = {
107 split: true, 115 split: true,
108 width: '100%', 116 width: '100%',
109 height: '100%', 117 height: '100%',
@@ -111,16 +119,14 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -111,16 +119,14 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
111 border: true, 119 border: true,
112 header: false, 120 header: false,
113 defaults: { 121 defaults: {
114 - // applied to each contained panel 122 + // Applied to each contained panel
115 containerScroll: true 123 containerScroll: true
116 }, 124 },
117 stateful: true, 125 stateful: true,
118 - //stateId: 'tp1', 126 + // StateId: 'tp1',
119 stateEvents: ['tabchange'], 127 stateEvents: ['tabchange'],
120 getState: function () { 128 getState: function () {
121 - return {  
122 - activeTab: this.items.findIndex('id', this.getActiveTab().id)  
123 - }; 129 + return {activeTab: this.items.findIndex('id', this.getActiveTab().id)};
124 }, 130 },
125 applyState: function (s) { 131 applyState: function (s) {
126 this.setActiveTab(s.activeTab); 132 this.setActiveTab(s.activeTab);
@@ -144,14 +150,10 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -144,14 +150,10 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
144 scope: this, 150 scope: this,
145 select: function (combo, records) { 151 select: function (combo, records) {
146 AmdaAction.setCrtFilterId({id: records[0].get('id')}, function (result, e) { 152 AmdaAction.setCrtFilterId({id: records[0].get('id')}, function (result, e) {
147 - var t = e.getTransaction();  
148 if (e.status) { 153 if (e.status) {
149 - if (result) {  
150 - var explorerModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id);  
151 - if (explorerModule)  
152 - explorerModule.setCrtFilter();  
153 - }  
154 - else 154 + if (result && explorerModule) {
  155 + explorerModule.setCrtFilter();
  156 + } else {
155 Ext.Msg.show({ 157 Ext.Msg.show({
156 title: 'Filter', 158 title: 'Filter',
157 msg: 'Cannot apply filter', 159 msg: 'Cannot apply filter',
@@ -159,8 +161,8 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -159,8 +161,8 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
159 icon: Ext.Msg.ERROR, 161 icon: Ext.Msg.ERROR,
160 buttons: Ext.Msg.OK 162 buttons: Ext.Msg.OK
161 }); 163 });
162 - }  
163 - else { 164 + }
  165 + } else {
164 // FAILURE 166 // FAILURE
165 Ext.Msg.show({ 167 Ext.Msg.show({
166 title: 'Error System', 168 title: 'Error System',
@@ -176,8 +178,11 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -176,8 +178,11 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
176 { 178 {
177 text: '', 179 text: '',
178 iconCls: 'icon-parameters', 180 iconCls: 'icon-parameters',
179 - tooltip: {text: 'Edit Filter', align: 'bl-tl'},  
180 - handler: function (t) { 181 + tooltip: {
  182 + text: 'Edit Filter',
  183 + align: 'bl-tl'
  184 + },
  185 + handler: function () {
181 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.filters.id, true, function (module) { 186 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.filters.id, true, function (module) {
182 module.createWindow(); 187 module.createWindow();
183 }); 188 });
@@ -186,12 +191,15 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -186,12 +191,15 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
186 { 191 {
187 text: '', 192 text: '',
188 iconCls: 'icon-remover', 193 iconCls: 'icon-remover',
189 - tooltip: {text: 'Reset Filter', align: 'bl-tl'},  
190 - handler: function (t) {  
191 - var explorerModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id); 194 + tooltip: {
  195 + text: 'Reset Filter',
  196 + align: 'bl-tl'
  197 + },
  198 + handler: function () {
192 explorerModule.resetFilter(); 199 explorerModule.resetFilter();
193 } 200 }
194 - }, '-', 201 + },
  202 + '-',
195 { 203 {
196 xtype: 'displayfield', 204 xtype: 'displayfield',
197 fieldLabel: 'SortBy', 205 fieldLabel: 'SortBy',
@@ -200,7 +208,10 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -200,7 +208,10 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
200 { 208 {
201 text: 'Name', 209 text: 'Name',
202 scope: this, 210 scope: this,
203 - tooltip: {text: 'Sort out AMDA DataBase Data by Mission Name', align: 'bl-tl'}, 211 + tooltip: {
  212 + text: 'Sort out AMDA DataBase Data by Mission Name',
  213 + align: 'bl-tl'
  214 + },
204 pressed: true, 215 pressed: true,
205 enableToggle: true, 216 enableToggle: true,
206 toggleGroup: 'sorting', 217 toggleGroup: 'sorting',
@@ -209,8 +220,9 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -209,8 +220,9 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
209 tree.getStore().sort([ 220 tree.getStore().sort([
210 { 221 {
211 sorterFn: function (o1, o2) { 222 sorterFn: function (o1, o2) {
212 - if (o1.get('nodeType') !== 'localParam') 223 + if (o1.get('nodeType') !== 'localParam') {
213 return; 224 return;
  225 + }
214 226
215 return o1.get('text').toUpperCase() < o2.get('text').toUpperCase() ? -1 : 1; 227 return o1.get('text').toUpperCase() < o2.get('text').toUpperCase() ? -1 : 1;
216 } 228 }
@@ -222,7 +234,10 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -222,7 +234,10 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
222 { 234 {
223 text: 'Target', 235 text: 'Target',
224 scope: this, 236 scope: this,
225 - tooltip: {text: 'Sort out AMDA DataBase Data by Mission Main Target', align: 'bl-tl'}, 237 + tooltip: {
  238 + text: 'Sort out AMDA DataBase Data by Mission Main Target',
  239 + align: 'bl-tl'
  240 + },
226 enableToggle: true, 241 enableToggle: true,
227 toggleGroup: 'sorting', 242 toggleGroup: 'sorting',
228 handler: function () { 243 handler: function () {
@@ -238,6 +253,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -238,6 +253,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
238 }, 253 },
239 254
240 initTree: function (treeType) { 255 initTree: function (treeType) {
  256 + var menu, store, tree, treeId;
241 switch (treeType) { 257 switch (treeType) {
242 case amdaUI.ExplorerUI.RESRC_TAB.TREE_TYPE: 258 case amdaUI.ExplorerUI.RESRC_TAB.TREE_TYPE:
243 treeId = amdaUI.ExplorerUI.RESRC_TAB.TREE_ID; 259 treeId = amdaUI.ExplorerUI.RESRC_TAB.TREE_ID;
@@ -253,7 +269,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -253,7 +269,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
253 break; 269 break;
254 } 270 }
255 271
256 - var store = Ext.create('Ext.data.TreeStore', { 272 + store = Ext.create('Ext.data.TreeStore', {
257 root: { 273 root: {
258 expanded: true, 274 expanded: true,
259 nodeType: treeType 275 nodeType: treeType
@@ -263,25 +279,24 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -263,25 +279,24 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
263 { 279 {
264 direction: 'ASC', 280 direction: 'ASC',
265 sorterFn: function (o1, o2) { 281 sorterFn: function (o1, o2) {
266 - if (o1.get('nodeType') !== 'localParam') 282 + if (o1.get('nodeType') !== 'localParam') {
267 return; 283 return;
  284 + }
268 285
269 return o1.get('text').toUpperCase() < o2.get('text').toUpperCase() ? -1 : 1; 286 return o1.get('text').toUpperCase() < o2.get('text').toUpperCase() ? -1 : 1;
270 } 287 }
271 } 288 }
272 ], 289 ],
273 listeners: { 290 listeners: {
274 - beforeload: function (store, operation) {  
275 - store.proxy.extraParams = {  
276 - nodeType: operation.node.get('nodeType')  
277 - }; 291 + beforeload: function (_store, operation) {
  292 + _store.proxy.extraParams = {nodeType: operation.node.get('nodeType')};
278 } 293 }
279 } 294 }
280 }); 295 });
281 296
282 - var menu = new Ext.menu.Menu(); 297 + menu = new Ext.menu.Menu();
283 298
284 - var tree = Ext.create('Ext.tree.Panel', { 299 + tree = Ext.create('Ext.tree.Panel', {
285 id: treeId, 300 id: treeId,
286 title: treeType, 301 title: treeType,
287 store: store, 302 store: store,
@@ -289,7 +304,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -289,7 +304,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
289 animate: false, 304 animate: false,
290 hideHeaders: true, 305 hideHeaders: true,
291 selModel: Ext.create('Ext.selection.TreeModel', { 306 selModel: Ext.create('Ext.selection.TreeModel', {
292 - // ignoreRightMouseSelection: true, 307 + // IgnoreRightMouseSelection: true,
293 mode: 'MULTI' 308 mode: 'MULTI'
294 }), 309 }),
295 viewConfig: { 310 viewConfig: {
@@ -297,7 +312,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -297,7 +312,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
297 ptype: 'treeviewdragdrop', 312 ptype: 'treeviewdragdrop',
298 enableDrag: true, 313 enableDrag: true,
299 enableDrop: true, 314 enableDrop: true,
300 - //TODO - BRE - Wait a fix for drag&drop issue 315 + // TODO - BRE - Wait a fix for drag&drop issue
301 ddGroup: 'explorerTree', 316 ddGroup: 'explorerTree',
302 pluginId: 'ddplugin', 317 pluginId: 'ddplugin',
303 318
@@ -326,8 +341,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -326,8 +341,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
326 // Respect the allowDrop field on Tree nodes 341 // Respect the allowDrop field on Tree nodes
327 if (position === 'append' && targetNode.get('allowDrop') === false) { 342 if (position === 'append' && targetNode.get('allowDrop') === false) {
328 return false; 343 return false;
329 - }  
330 - else if (position != 'append' && targetNode.parentNode.get('allowDrop') === false) { 344 + } else if (position != 'append' && targetNode.parentNode.get('allowDrop') === false) {
331 return false; 345 return false;
332 } 346 }
333 // If the target record is in the dragged dataset, then invalid drop 347 // If the target record is in the dragged dataset, then invalid drop
@@ -335,54 +349,61 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -335,54 +349,61 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
335 return false; 349 return false;
336 } 350 }
337 // 351 //
338 - if (dataLength > 1) 352 + if (dataLength > 1) {
339 return false; 353 return false;
  354 + }
340 355
341 var draggedRecord = draggedRecords[0]; 356 var draggedRecord = draggedRecords[0];
342 // 357 //
343 switch (targetNode.data.nodeType) { 358 switch (targetNode.data.nodeType) {
344 - case 'localParam' :  
345 - case 'remoteParam' :  
346 - case 'remoteSimuParam' :  
347 - case 'myData' : 359 + case 'localParam':
  360 + case 'remoteParam':
  361 + case 'remoteSimuParam':
  362 + case 'myData':
348 return false; 363 return false;
349 - default :  
350 - if (draggedRecord.data.id == targetNode.data.nodeType + '-treeRootNode') 364 + default:
  365 + if (draggedRecord.data.id == targetNode.data.nodeType + '-treeRootNode') {
351 return false; 366 return false;
352 - if ((position == 'before') && (targetNode.data.id == targetNode.data.nodeType + '-treeRootNode')) 367 + }
  368 + if (position == 'before' && targetNode.data.id == targetNode.data.nodeType + '-treeRootNode') {
353 return false; 369 return false;
354 - return (draggedRecord.data.nodeType == targetNode.data.nodeType); 370 + }
  371 + return draggedRecord.data.nodeType == targetNode.data.nodeType;
355 } 372 }
356 return false; 373 return false;
357 }, 374 },
358 onViewRender: function (view) { 375 onViewRender: function (view) {
359 var me = this; 376 var me = this;
360 377
361 - view.on('itemupdate', function (record, index, node, opts) {  
362 - var forceHide = false;  
363 - var crtRec = record.parentNode; 378 + view.on('itemupdate', function (record) {
  379 + var forceHide = false,
  380 + crtRec = record.parentNode;
  381 +
364 while (crtRec && !forceHide) { 382 while (crtRec && !forceHide) {
365 - if (crtRec.get('filtered')) 383 + if (crtRec.get('filtered')) {
366 forceHide = crtRec.get('filtered'); 384 forceHide = crtRec.get('filtered');
  385 + }
367 crtRec = crtRec.parentNode; 386 crtRec = crtRec.parentNode;
368 } 387 }
369 tree.setNodesVisibility(record, forceHide); 388 tree.setNodesVisibility(record, forceHide);
370 tree.applyDisableToNode(record); 389 tree.applyDisableToNode(record);
371 }); 390 });
372 391
373 - view.on('itemadd', function (records, index, node, opts) { 392 + view.on('itemadd', function (records) {
374 Ext.each(records, function (rec) { 393 Ext.each(records, function (rec) {
375 tree.applyFilterToNode(rec); 394 tree.applyFilterToNode(rec);
376 tree.applyDisableToNode(rec); 395 tree.applyDisableToNode(rec);
377 }); 396 });
378 }); 397 });
379 398
380 - view.on('afteritemexpand', function (record, index, node, opts) {  
381 - var forceHide = false;  
382 - var crtRec = record.parentNode; 399 + view.on('afteritemexpand', function (record) {
  400 + var crtRec, forceHide;
  401 + forceHide = false;
  402 + crtRec = record.parentNode;
383 while (crtRec && !forceHide) { 403 while (crtRec && !forceHide) {
384 - if (crtRec.get('filtered')) 404 + if (crtRec.get('filtered')) {
385 forceHide = crtRec.get('filtered'); 405 forceHide = crtRec.get('filtered');
  406 + }
386 crtRec = crtRec.parentNode; 407 crtRec = crtRec.parentNode;
387 408
388 } 409 }
@@ -419,21 +440,24 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -419,21 +440,24 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
419 beforedrop: function (node, data, overModel, dropPosition) { 440 beforedrop: function (node, data, overModel, dropPosition) {
420 var parentId; 441 var parentId;
421 switch (dropPosition) { 442 switch (dropPosition) {
422 - case 'append' :  
423 - if (overModel.isLeaf()) 443 + case 'append':
  444 + if (overModel.isLeaf()) {
424 parentId = overModel.parentNode.get('id'); 445 parentId = overModel.parentNode.get('id');
425 - else 446 + } else {
426 parentId = overModel.get('id'); 447 parentId = overModel.get('id');
  448 + }
427 449
428 if (!overModel.isExpanded() && overModel.isExpandable()) { 450 if (!overModel.isExpanded() && overModel.isExpandable()) {
429 myDesktopApp.warningMsg('Please open the folder before node adding'); 451 myDesktopApp.warningMsg('Please open the folder before node adding');
430 return false; 452 return false;
431 } 453 }
432 break; 454 break;
433 - case 'before' :  
434 - case 'after' : 455 + case 'before':
  456 + case 'after':
435 parentId = overModel.parentNode.get('id'); 457 parentId = overModel.parentNode.get('id');
436 break; 458 break;
  459 + default:
  460 + break;
437 } 461 }
438 462
439 Ext.each(data.records, function (rec) { 463 Ext.each(data.records, function (rec) {
@@ -449,8 +473,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -449,8 +473,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
449 473
450 return false; 474 return false;
451 } 475 }
452 - }  
453 - else { 476 + } else {
454 Ext.Msg.show({ 477 Ext.Msg.show({
455 title: 'Drop is impossible', 478 title: 'Drop is impossible',
456 msg: 'Cannot connect to the server', 479 msg: 'Cannot connect to the server',
@@ -469,66 +492,60 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -469,66 +492,60 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
469 }, 492 },
470 listeners: { 493 listeners: {
471 itemmouseenter: function (view, record, item) { 494 itemmouseenter: function (view, record, item) {
472 - if (record.get('isParameter')) {  
473 - var el = Ext.get(item),  
474 - td = el.down('td > div');  
475 - td.setStyle('cursor', 'crosshair');  
476 - }  
477 - else {  
478 - var el = Ext.get(item),  
479 - td = el.down('td > div');  
480 - td.setStyle('cursor', 'pointer');  
481 - } 495 + Ext.get(item).down('td > div').setStyle('cursor', record.get('isParameter') ? 'pointer' : 'crosshair');
482 }, 496 },
483 497
484 itemcontextmenu: function (view, rec, item, index, e) { 498 itemcontextmenu: function (view, rec, item, index, e) {
  499 + var menuItems;
  500 +
485 // Add record to selection model 501 // Add record to selection model
486 view.ownerCt.getSelectionModel().select(rec); 502 view.ownerCt.getSelectionModel().select(rec);
487 503
488 - // block other events 504 + // Block other events
489 e.stopEvent(); 505 e.stopEvent();
490 506
491 - // clear menu items 507 + // Clear menu items
492 menu.removeAll(); 508 menu.removeAll();
493 - var menuItems;  
494 509
495 - // if it's a single selection 510 + // If it's a single selection
496 if (view.ownerCt.getSelectionModel().selected.length === 1) { 511 if (view.ownerCt.getSelectionModel().selected.length === 1) {
497 - // get items menu corresponding to right clicked record 512 + // Get items menu corresponding to right clicked record
498 menuItems = rec.getContextMenuItems(this); 513 menuItems = rec.getContextMenuItems(this);
499 514
500 } else if (view.ownerCt.getSelectionModel().selected.length > 1) { 515 } else if (view.ownerCt.getSelectionModel().selected.length > 1) {
501 - // get items menu corresponding to right clicked record 516 + // Get items menu corresponding to right clicked record
502 menuItems = rec.getContextMenuMultiItems(this); 517 menuItems = rec.getContextMenuMultiItems(this);
503 } 518 }
504 - // if there's at least one item menu 519 + // If there's at least one item menu
505 if (menuItems && menuItems.length) { 520 if (menuItems && menuItems.length) {
506 - // add the items 521 + // Add the items
507 menu.add(menuItems); 522 menu.add(menuItems);
508 - // add listener on right clicked record  
509 - var onRecordClick = function (menu, item, e, eOpts) { 523 +
  524 + // Add listener on right clicked record
  525 + var onRecordClick = function (menu, item, e) {
510 if (this.myGetOwnerTree().getSelectionModel().isSelected(this)) { 526 if (this.myGetOwnerTree().getSelectionModel().isSelected(this)) {
511 - //Dispatch click event to the record 527 + // Dispatch click event to the record
512 this.onMenuItemClick(menu, item, e); 528 this.onMenuItemClick(menu, item, e);
513 } 529 }
514 - //Remove old click listener 530 + // Remove old click listener
515 menu.removeListener('click', onRecordClick, this); 531 menu.removeListener('click', onRecordClick, this);
516 }; 532 };
517 533
518 menu.addListener('click', onRecordClick, rec); 534 menu.addListener('click', onRecordClick, rec);
519 - // then show menu 535 + // Then show menu
520 menu.showAt(e.getXY()); 536 menu.showAt(e.getXY());
521 } 537 }
522 }, 538 },
523 539
524 itemdblclick: function (view, record, item, index, event) { 540 itemdblclick: function (view, record, item, index, event) {
  541 + var zmgr, winId;
  542 +
525 event.stopEvent(); 543 event.stopEvent();
526 - // first check if it is for SAVE-START-STOP plugin... 544 + // First check if it is for SAVE-START-STOP plugin...
527 if (Ext.PluginManager.getCount() > 0 && 545 if (Ext.PluginManager.getCount() > 0 &&
528 record.get('nodeType') == amdaModel.TimeTableNode.nodeType && record.isLeaf()) { 546 record.get('nodeType') == amdaModel.TimeTableNode.nodeType && record.isLeaf()) {
529 - var zmgr = myDesktopApp.desktop.getDesktopZIndexManager();  
530 - var winActive = zmgr.getActive();  
531 - var winId = winActive.getId(); 547 + zmgr = myDesktopApp.desktop.getDesktopZIndexManager();
  548 + winId = zmgr.getActive().getId();
532 if (winId == 'explorer-win') { 549 if (winId == 'explorer-win') {
533 zmgr.eachTopDown(function (win) { 550 zmgr.eachTopDown(function (win) {
534 var id = win.getId(); 551 var id = win.getId();
@@ -540,58 +557,56 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -540,58 +557,56 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
540 } 557 }
541 } 558 }
542 559
543 - if (record.get('nodeType') == 'remoteParam' && !record.isLeaf()  
544 - && !record.get('isParameter')) { 560 + if (record.get('nodeType') == 'remoteParam' && !record.isLeaf() &&
  561 + !record.get('isParameter')) {
545 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id, true, function (module) { 562 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id, true, function (module) {
546 module.createWindow(record.getBaseId()); 563 module.createWindow(record.getBaseId());
547 }); 564 });
548 } 565 }
549 566
550 - if (record.isLeaf() || record.data.isParameter) 567 + if (record.isLeaf() || record.data.isParameter) {
551 switch (record.get('nodeType')) { 568 switch (record.get('nodeType')) {
552 - case 'myData' :  
553 - case 'myDataParam' :  
554 - case 'derivedParam' :  
555 - case 'timeTable' :  
556 - case 'sharedtimeTable' :  
557 - case 'sharedcatalog' :  
558 - case 'catalog' :  
559 - case 'request' :  
560 - case 'condition' : 569 + case 'myData':
  570 + case 'myDataParam':
  571 + case 'derivedParam':
  572 + case 'timeTable':
  573 + case 'sharedtimeTable':
  574 + case 'sharedcatalog':
  575 + case 'catalog':
  576 + case 'request':
  577 + case 'condition':
561 record.editLeaf(); 578 record.editLeaf();
562 break; 579 break;
563 - case 'localParam' : 580 + case 'localParam':
564 case 'remoteParam': 581 case 'remoteParam':
565 case 'remoteSimuParam': 582 case 'remoteSimuParam':
566 record.createAlias(record); 583 record.createAlias(record);
567 break; 584 break;
568 - case 'bkgWorks' : 585 + case 'bkgWorks':
569 if (!record.get('object')) { 586 if (!record.get('object')) {
570 AmdaAction.getObject(record.get('id'), record.get('nodeType'), record.getObjectCallback, record); 587 AmdaAction.getObject(record.get('id'), record.get('nodeType'), record.getObjectCallback, record);
  588 + } else if (record.get('status') == 'done') {
  589 + // IsInteractive = true, isNewTab = false
  590 + record.editNode(true, false);
  591 + } else {
  592 + myDesktopApp.infoMsg('Job Status: ' + record.get('status'));
571 } 593 }
572 - else {  
573 - if (record.get('status') == 'done') {  
574 - var isInteractive = false;  
575 - var isNewTab = true;  
576 - record.editNode(isNewTab, isInteractive);  
577 - }  
578 - else {  
579 - myDesktopApp.infoMsg('Job Status: ' + record.get('status'));  
580 - }  
581 - } 594 + break;
  595 + default:
582 break; 596 break;
583 } 597 }
  598 + }
584 }, 599 },
585 600
586 - beforeselect: function (view, node, index, options) {  
587 - // if there's at least one node already selected  
588 - if (view.selected.length  
589 - //AND (the node which is beeing selected has a different nodeType than the first selected node OR the first selected node isn't a leaf  
590 - && (node.get('nodeType') !== view.selected.items[0].get('nodeType') || !view.selected.items[0].isLeaf()) 601 + beforeselect: function (view, node) {
  602 + // If there's at least one node already selected
  603 + if (view.selected.length &&
  604 + // AND (the node which is beeing selected has a different nodeType than the first selected node OR the first selected node isn't a leaf
  605 + (node.get('nodeType') !== view.selected.items[0].get('nodeType') || !view.selected.items[0].isLeaf()) ||
591 // OR the node which is beeing selected has no nodeType OR it isn't a leaf OR 606 // OR the node which is beeing selected has no nodeType OR it isn't a leaf OR
592 - || !node.get('nodeType') || !node.isLeaf() 607 + !node.get('nodeType') || !node.isLeaf()
593 ) { 608 ) {
594 - // clear old selection 609 + // Clear old selection
595 view.deselectAll(); 610 view.deselectAll();
596 } 611 }
597 }, 612 },
@@ -604,20 +619,23 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -604,20 +619,23 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
604 // Each grid row causes its own seperate show and hide. 619 // Each grid row causes its own seperate show and hide.
605 delegate: view.itemSelector, 620 delegate: view.itemSelector,
606 dismissDelay: 0, 621 dismissDelay: 0,
607 - // showDelay: 100,  
608 - // anchor: 'left',  
609 - // Moving within the row should not hide the tip. 622 +
  623 + /*
  624 + * ShowDelay: 100,
  625 + * anchor: 'left',
  626 + * Moving within the row should not hide the tip.
  627 + */
610 trackMouse: true, 628 trackMouse: true,
611 autoRender: true, 629 autoRender: true,
612 listeners: { 630 listeners: {
613 // Change content dynamically depending on which element triggered the show. 631 // Change content dynamically depending on which element triggered the show.
614 - beforeshow: function updateTipBody(tip) { 632 + beforeshow: function updateTipBody (tip) {
  633 + var info;
615 if (view.getRecord(tip.triggerElement)) { 634 if (view.getRecord(tip.triggerElement)) {
616 - var info = view.getRecord(tip.triggerElement).get('info'); 635 + info = view.getRecord(tip.triggerElement).get('info');
617 if (!info || info == '') { 636 if (!info || info == '') {
618 tip.addCls('hide'); 637 tip.addCls('hide');
619 - }  
620 - else { 638 + } else {
621 tip.removeCls('hide'); 639 tip.removeCls('hide');
622 tip.update(info); 640 tip.update(info);
623 } 641 }
@@ -626,61 +644,63 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -626,61 +644,63 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
626 } 644 }
627 }); 645 });
628 }, 646 },
629 - // if remote base is empty - open interoperability module 647 + // If remote base is empty - open interoperability module
630 itemexpand: function (node) { 648 itemexpand: function (node) {
631 - if (node.get('nodeType') == amdaModel.RemoteParamNode.nodeType  
632 - && node.getDepth() == 3 && !node.hasChildNodes()) { 649 + if (node.get('nodeType') == amdaModel.RemoteParamNode.nodeType &&
  650 + node.getDepth() == 3 && !node.hasChildNodes()) {
633 node.addData(); 651 node.addData();
634 } 652 }
635 }, 653 },
636 scope: this 654 scope: this
637 }, 655 },
638 656
639 - hideHeaders: true,  
640 - // must define a column with a field to enable editor 657 + // Must define a column with a field to enable editor
641 columns: [ 658 columns: [
642 { 659 {
643 xtype: 'treetoolcolumn', 660 xtype: 'treetoolcolumn',
644 text: 'Name', 661 text: 'Name',
645 flex: 1, 662 flex: 1,
646 dataIndex: 'text', 663 dataIndex: 'text',
647 - tool: 'info', // this references the "tools" object on the prototype 664 + // This references the "tools" object on the prototype
  665 + tool: 'info',
648 toolHandler: function (view, cell, recordIndex, cellIndex, e) { 666 toolHandler: function (view, cell, recordIndex, cellIndex, e) {
649 - var tooltype = e.target.getAttribute("tooltype");  
650 var record = view.store.getAt(recordIndex); 667 var record = view.store.getAt(recordIndex);
651 - switch (tooltype) {  
652 - case 'info' : 668 + switch (e.target.getAttribute('tooltype')) {
  669 + case 'info':
653 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.info.id, true, function (module) { 670 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.info.id, true, function (module) {
654 module.createWindow(record.get('help'), record.get('text')); 671 module.createWindow(record.get('help'), record.get('text'));
655 }); 672 });
656 break; 673 break;
  674 + default:
  675 + break;
657 } 676 }
658 }, 677 },
659 toolIsVisible: function (record) { 678 toolIsVisible: function (record) {
660 679
661 switch (record.get('nodeType')) { 680 switch (record.get('nodeType')) {
662 - case 'localParam' :  
663 - case 'remoteParam' :  
664 - case 'remoteSimuParam' :  
665 - 681 + case 'localParam':
  682 + case 'remoteParam':
  683 + case 'remoteSimuParam':
666 return record.get('help') != ''; 684 return record.get('help') != '';
  685 + default:
  686 + break;
667 } 687 }
668 return false; 688 return false;
669 }, 689 },
670 field: { 690 field: {
671 validFlag: true, 691 validFlag: true,
672 listeners: { 692 listeners: {
673 - change: function (field, newValue, oldValue, eOpts) {  
674 - var explModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id);  
675 - var explUI = explModule.getUiContent();  
676 - var activeTreePanel = explUI.getActiveTab(); 693 + change: function (field, newValue) {
  694 + var editedNode, explModule;
  695 +
  696 + explModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id);
  697 + editedNode = explModule.getUiContent().getActiveTab().getSelectionModel().selected.items[0];
677 698
678 - var editedNode = activeTreePanel.getSelectionModel().selected.items[0];  
679 if (editedNode) { 699 if (editedNode) {
680 editedNode.isValidName(newValue, function (res) { 700 editedNode.isValidName(newValue, function (res) {
681 var validFlag = true; 701 var validFlag = true;
682 if (newValue === amdaModel.AmdaNode.NEW_DIR_NAME) { 702 if (newValue === amdaModel.AmdaNode.NEW_DIR_NAME) {
683 - validFlag = 'Field is not modified' 703 + validFlag = 'Field is not modified';
684 } else if (!res) { 704 } else if (!res) {
685 validFlag = 'Error during object validation'; 705 validFlag = 'Error during object validation';
686 } else if (!res.valid) { 706 } else if (!res.valid) {
@@ -728,8 +748,9 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -728,8 +748,9 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
728 setNodesVisibility: function (node, forceHide) { 748 setNodesVisibility: function (node, forceHide) {
729 var isFiltered = node.get('filtered'); 749 var isFiltered = node.get('filtered');
730 750
731 - for (var i = 0; i < node.childNodes.length; i++) 751 + for (var i = 0; i < node.childNodes.length; i++) {
732 this.setNodesVisibility(node.childNodes[i], forceHide || isFiltered); 752 this.setNodesVisibility(node.childNodes[i], forceHide || isFiltered);
  753 + }
733 754
734 this.setNodeVisibility(node, !(forceHide || isFiltered)); 755 this.setNodeVisibility(node, !(forceHide || isFiltered));
735 }, 756 },
@@ -742,34 +763,37 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -742,34 +763,37 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
742 if (isVisible) { 763 if (isVisible) {
743 viewNode.show(); 764 viewNode.show();
744 this.applyDisableToNode(record); 765 this.applyDisableToNode(record);
745 - }  
746 - else 766 + } else {
747 viewNode.hide(); 767 viewNode.hide();
  768 + }
748 } 769 }
749 }, 770 },
750 771
751 applyFilterToNode: function (node) { 772 applyFilterToNode: function (node) {
752 - if (!node) 773 + var filter, isFiltered, pos;
  774 +
  775 + if (!node) {
753 return; 776 return;
  777 + }
754 778
755 - var filter = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id).filter; 779 + filter = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id).filter;
756 780
757 switch (node.get('nodeType')) { 781 switch (node.get('nodeType')) {
758 - case 'localParam' :  
759 - if (!filter || !filter['param']) {  
760 - //no filter applied 782 + case 'localParam':
  783 + if (!filter || !filter.param) {
  784 + // No filter applied
761 node.set('filtered', false); 785 node.set('filtered', false);
762 return; 786 return;
763 } 787 }
764 - var pos = node.get('depth') - 3; //depth from local param root node 788 + // Depth from local param root node
  789 + pos = node.get('depth') - 3;
765 if (pos < 0 || pos > 2) { 790 if (pos < 0 || pos > 2) {
766 node.set('filtered', false); 791 node.set('filtered', false);
767 return; 792 return;
768 } 793 }
769 - var isFiltered = true;  
770 - for (var i = 0; i < filter['param'].length; i++) {  
771 - s = filter['param'][i].split(';');  
772 - if (node.get('id') == s[pos]) { 794 + isFiltered = true;
  795 + for (var i = 0; i < filter.param.length; i++) {
  796 + if (node.get('id') == filter.param[i].split(';')[pos]) {
773 isFiltered = false; 797 isFiltered = false;
774 break; 798 break;
775 } 799 }
@@ -777,53 +801,52 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -777,53 +801,52 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
777 node.set('filtered', isFiltered); 801 node.set('filtered', isFiltered);
778 break; 802 break;
779 803
780 - case 'remoteSimuParam' :  
781 - if (!filter || !filter['simu']) {  
782 - //no filter applied 804 + case 'remoteSimuParam':
  805 + if (!filter || !filter.simu) {
  806 + // No filter applied
783 node.set('filtered', false); 807 node.set('filtered', false);
784 return; 808 return;
785 } 809 }
786 - var pos = node.get('depth') - 3; //depth from remote param root node  
787 - 810 + // Depth from remote param root node
  811 + pos = node.get('depth') - 3;
788 if (pos < 0 || pos > 5) { 812 if (pos < 0 || pos > 5) {
789 node.set('filtered', false); 813 node.set('filtered', false);
790 return; 814 return;
791 } 815 }
792 - var isFiltered = true;  
793 -  
794 - for (var i = 0; i < filter['simu'].length; i++) {  
795 - s = filter['simu'][i].split(';');  
796 -  
797 - if (node.get('id') == s[pos]) { 816 + isFiltered = true;
  817 + for (var i = 0; i < filter.simu.length; i++) {
  818 + if (node.get('id') == filter.simu[i].split(';')[pos]) {
798 isFiltered = false; 819 isFiltered = false;
799 break; 820 break;
800 } 821 }
801 } 822 }
802 node.set('filtered', isFiltered); 823 node.set('filtered', isFiltered);
803 break; 824 break;
804 - /*case 'alias' :  
805 - if (!this.localParamFilter.result || this.localParamFilter.id == "" ||  
806 - !node.isLeaf()) {  
807 - //no filter applied  
808 - node.set('filtered',false);  
809 - return;  
810 - }  
811 - var crtParam = node.get('id');  
812 - crtParam = crtParam.replace('alias_','');  
813 - crtParam = crtParam.replace(/_/g,':');  
814 - var isFiltered = true;  
815 - for (var i = 0; i < this.localParamFilter.result.length; i++) {  
816 - s = this.localParamFilter.result[i].split(';');  
817 - console.log(s[2]);  
818 - if (crtParam == s[2]) {  
819 - isFiltered = false;  
820 - break;  
821 - }  
822 - }  
823 - node.set('filtered',isFiltered);  
824 - break;*/  
825 - default :  
826 - return; 825 +
  826 + /*
  827 + * Case 'alias':
  828 + * if (!this.localParamFilter.result || this.localParamFilter.id == "" || !node.isLeaf()) {
  829 + * // No filter applied
  830 + * node.set('filtered',false);
  831 + * return;
  832 + * }
  833 + * var crtParam = node.get('id');
  834 + * crtParam = crtParam.replace('alias_','');
  835 + * crtParam = crtParam.replace(/_/g,':');
  836 + * var isFiltered = true;
  837 + * for (var i = 0; i < this.localParamFilter.result.length; i++) {
  838 + * s = this.localParamFilter.result[i].split(';');
  839 + * console.log(s[2]);
  840 + * if (crtParam == s[2]) {
  841 + * isFiltered = false;
  842 + * break;
  843 + * }
  844 + * }
  845 + * node.set('filtered',isFiltered);
  846 + * break;
  847 + */
  848 + default:
  849 +
827 } 850 }
828 }, 851 },
829 852
@@ -835,8 +858,10 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -835,8 +858,10 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
835 }, 858 },
836 859
837 applyDisableToNode: function (node) { 860 applyDisableToNode: function (node) {
838 - var crtNode = node;  
839 - var disable = false; 861 + var crtNode, disable, viewNode;
  862 +
  863 + crtNode = node;
  864 + disable = false;
840 865
841 do { 866 do {
842 if (crtNode.get('disable')) { 867 if (crtNode.get('disable')) {
@@ -847,7 +872,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -847,7 +872,7 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
847 } while (crtNode); 872 } while (crtNode);
848 873
849 874
850 - var viewNode = Ext.fly(tree.getView().getNode(node)); 875 + viewNode = Ext.fly(tree.getView().getNode(node));
851 if (disable) { 876 if (disable) {
852 node.set('disable', true); 877 node.set('disable', true);
853 viewNode.setStyle('opacity', 0.5); 878 viewNode.setStyle('opacity', 0.5);
@@ -861,47 +886,53 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, { @@ -861,47 +886,53 @@ Ext.define(&#39;amdaUI.ExplorerUI&#39;, {
861 }, 886 },
862 887
863 updateFilter: function () { 888 updateFilter: function () {
864 - var filter = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id).filter; 889 + var aliasNode, filter, keys, localNode, remoteNode, tree;
865 890
866 - var keys = []; 891 + filter = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id).filter;
  892 +
  893 + keys = [];
867 for (var f in filter) { 894 for (var f in filter) {
868 - if (hasOwnProperty.call(filter, f)) 895 + if (hasOwnProperty.call(filter, f)) {
869 keys.push(f); 896 keys.push(f);
  897 + }
870 } 898 }
871 899
872 - var tree = this.query('#' + amdaUI.ExplorerUI.RESRC_TAB.TREE_ID)[0]; 900 + tree = this.query('#' + amdaUI.ExplorerUI.RESRC_TAB.TREE_ID)[0];
873 tree.getView().refresh(); 901 tree.getView().refresh();
874 902
875 for (var i = 0; i < keys.length; i++) { 903 for (var i = 0; i < keys.length; i++) {
876 - if (keys[i] == "_empty_") 904 + if (keys[i] == '_empty_') {
877 continue; 905 continue;
  906 + }
878 907
879 switch (keys[i]) { 908 switch (keys[i]) {
880 - case 'param' :  
881 - //apply filter to local datasets  
882 - var localNode = tree.getRootNode().findChild('id', 'myLocalData-treeRootNode', true); 909 + case 'param':
  910 + // Apply filter to local datasets
  911 + localNode = tree.getRootNode().findChild('id', 'myLocalData-treeRootNode', true);
883 tree.applyFilterToNodes(localNode); 912 tree.applyFilterToNodes(localNode);
884 tree.setNodesVisibility(localNode, false); 913 tree.setNodesVisibility(localNode, false);
885 tree.applyDisableToNode(localNode); 914 tree.applyDisableToNode(localNode);
886 915
887 - //apply filter to aliases  
888 - var aliasNode = tree.getRootNode().findChild('id', 'alias-treeRootNode', true); 916 + // Apply filter to aliases
  917 + aliasNode = tree.getRootNode().findChild('id', 'alias-treeRootNode', true);
889 tree.applyFilterToNodes(aliasNode); 918 tree.applyFilterToNodes(aliasNode);
890 tree.setNodesVisibility(aliasNode, false); 919 tree.setNodesVisibility(aliasNode, false);
891 tree.applyDisableToNode(aliasNode); 920 tree.applyDisableToNode(aliasNode);
892 break; 921 break;
893 922
894 - case 'simu' :  
895 - //apply filter to simulation datasets (in remote data)  
896 - var remoteNode = tree.getRootNode().findChild('id', 'myRemoteSimuData-treeRootNode', true); 923 + case 'simu':
  924 + // Apply filter to simulation datasets (in remote data)
  925 + remoteNode = tree.getRootNode().findChild('id', 'myRemoteSimuData-treeRootNode', true);
897 tree.applyFilterToNodes(remoteNode); 926 tree.applyFilterToNodes(remoteNode);
898 tree.setNodesVisibility(remoteNode, false); 927 tree.setNodesVisibility(remoteNode, false);
899 tree.applyDisableToNode(remoteNode); 928 tree.applyDisableToNode(remoteNode);
900 break; 929 break;
  930 + default:
  931 + break;
901 } 932 }
902 } 933 }
903 934
904 - this.dockedItems.getAt(1).items.items[0].select(filter['name']); 935 + this.dockedItems.getAt(1).items.items[0].select(filter.name);
905 } 936 }
906 }); 937 });
907 938
@@ -910,18 +941,21 @@ Ext.define(&#39;MyTreeEditor&#39;, { @@ -910,18 +941,21 @@ Ext.define(&#39;MyTreeEditor&#39;, {
910 extend: 'Ext.grid.plugin.CellEditing', 941 extend: 'Ext.grid.plugin.CellEditing',
911 alias: 'editing.treeeditor', 942 alias: 'editing.treeeditor',
912 943
913 - // initialization method of plugin 944 + // Initialization method of plugin
914 init: function (cmp) { 945 init: function (cmp) {
915 var me = this; 946 var me = this;
916 me.hostCmp = cmp; 947 me.hostCmp = cmp;
917 - // on parent event 948 + // On parent event
918 me.hostCmp.on({ 949 me.hostCmp.on({
919 - // on edition event 950 + // On edition event
920 edition: { 951 edition: {
921 delay: 50, 952 delay: 50,
922 fn: function (view, record, item, index, e) { 953 fn: function (view, record, item, index, e) {
923 - // view.getHeaderAtIndex(0).field.validFlag = 'Not modified';  
924 - // call the start edition method 954 +
  955 + /*
  956 + * View.getHeaderAtIndex(0).field.validFlag = 'Not modified';
  957 + * call the start edition method
  958 + */
925 me.startEdit(record, view.getHeaderAtIndex(0)); 959 me.startEdit(record, view.getHeaderAtIndex(0));
926 }, 960 },
927 scope: me 961 scope: me
@@ -932,6 +966,7 @@ Ext.define(&#39;MyTreeEditor&#39;, { @@ -932,6 +966,7 @@ Ext.define(&#39;MyTreeEditor&#39;, {
932 966
933 /** 967 /**
934 * Cancel any active editing. 968 * Cancel any active editing.
  969 + * @returns {void}
935 */ 970 */
936 cancelEdit: function () { 971 cancelEdit: function () {
937 var me = this, 972 var me = this,
@@ -949,8 +984,8 @@ Ext.define(&#39;MyTreeEditor&#39;, { @@ -949,8 +984,8 @@ Ext.define(&#39;MyTreeEditor&#39;, {
949 }, 984 },
950 985
951 /** 986 /**
952 - * overwrite the initEditTriggers to disable edition on click/dblclick  
953 - * and to add custom 987 + * Overwrite the initEditTriggers to disable edition on click/dblclick and to add custom
  988 + * @returns {void}
954 */ 989 */
955 initEditTriggers: function () { 990 initEditTriggers: function () {
956 var me = this, 991 var me = this,
@@ -958,22 +993,22 @@ Ext.define(&#39;MyTreeEditor&#39;, { @@ -958,22 +993,22 @@ Ext.define(&#39;MyTreeEditor&#39;, {
958 993
959 me.on({ 994 me.on({
960 edit: function (editor, event) { 995 edit: function (editor, event) {
961 - // if there is a modification 996 + // If there is a modification
962 if (event.originalValue !== event.value) { 997 if (event.originalValue !== event.value) {
963 - // delegate rename action on model 998 + // Delegate rename action on model
964 event.record.rename(event.value, function (result) { 999 event.record.rename(event.value, function (result) {
965 - // if a result has been returned : success 1000 + // If a result has been returned : success
966 if (result) { 1001 if (result) {
967 - // delegate commit action to delete modification flag 1002 + // Delegate commit action to delete modification flag
968 event.record.commit(); 1003 event.record.commit();
969 var rec = event.record.data; 1004 var rec = event.record.data;
970 - // in case of directory 1005 + // In case of directory
971 if (!rec.leaf) { 1006 if (!rec.leaf) {
972 - // set folder's ID returned by server 1007 + // Set folder's ID returned by server
973 rec.id = result.id; 1008 rec.id = result.id;
974 } 1009 }
975 - } else { // in case of transaction error  
976 - // reset originalValue 1010 + } else {
  1011 + // In case of transaction error, reset originalValue
977 event.record.value = event.originalValue; 1012 event.record.value = event.originalValue;
978 event.record.set('text', event.originalValue); 1013 event.record.set('text', event.originalValue);
979 event.record.commit(); 1014 event.record.commit();
@@ -983,7 +1018,7 @@ Ext.define(&#39;MyTreeEditor&#39;, { @@ -983,7 +1018,7 @@ Ext.define(&#39;MyTreeEditor&#39;, {
983 } 1018 }
984 }); 1019 });
985 1020
986 - // enable Enter key and Esc Key 1021 + // Enable Enter key and Esc Key
987 view.on('render', function () { 1022 view.on('render', function () {
988 me.keyNav = Ext.create('Ext.util.KeyNav', view.el, { 1023 me.keyNav = Ext.create('Ext.util.KeyNav', view.el, {
989 enter: me.onEnterKey, 1024 enter: me.onEnterKey,
@@ -992,26 +1027,24 @@ Ext.define(&#39;MyTreeEditor&#39;, { @@ -992,26 +1027,24 @@ Ext.define(&#39;MyTreeEditor&#39;, {
992 }); 1027 });
993 }, me, {single: true}); 1028 }, me, {single: true});
994 }, 1029 },
995 - //overwrite the getEditing context because we do not need the rowId 1030 + // Overwrite the getEditing context because we do not need the rowId
996 getEditingContext: function (record, columnHeader) { 1031 getEditingContext: function (record, columnHeader) {
997 var me = this, 1032 var me = this,
998 grid = me.grid, 1033 grid = me.grid,
999 - store = grid.store,  
1000 colIdx, 1034 colIdx,
1001 - view = grid.getView(),  
1002 value; 1035 value;
1003 1036
1004 - // getting colIdx and real columnHeader 1037 + // Getting colIdx and real columnHeader
1005 if (Ext.isNumber(columnHeader)) { 1038 if (Ext.isNumber(columnHeader)) {
1006 colIdx = columnHeader; 1039 colIdx = columnHeader;
1007 columnHeader = grid.headerCt.getHeaderAtIndex(colIdx); 1040 columnHeader = grid.headerCt.getHeaderAtIndex(colIdx);
1008 } else { 1041 } else {
1009 colIdx = columnHeader.getIndex(); 1042 colIdx = columnHeader.getIndex();
1010 } 1043 }
1011 - // getting current value 1044 + // Getting current value
1012 value = record.get(columnHeader.dataIndex); 1045 value = record.get(columnHeader.dataIndex);
1013 1046
1014 - // return editing context 1047 + // Return editing context
1015 return { 1048 return {
1016 grid: grid, 1049 grid: grid,
1017 record: record, 1050 record: record,