Commit 2fa56f95cf2a13d9ff21abf9b081d41e01dad521

Authored by Benjamin Renard
1 parent b78325f1

Predefined templated params - First step

js/app/controllers/InteractiveModule.js
... ... @@ -253,11 +253,29 @@ Ext.define('amdaDesktop.InteractiveModule', {
253 253 * @param {String} objectName The name of sent object
254 254 * @param {String} isLeaf boolean true if it's a leaf parameter
255 255 */
256   - addParam : function(objectName, isLeaf, needsArgs, components) {
  256 + addParam : function(objectName, isLeaf, needsArgs, components, predefined_args) {
257 257 var uiContent = this.getUiContent();
258   - uiContent.addParam(objectName, isLeaf, needsArgs, components);
  258 + uiContent.addParam(objectName, isLeaf, needsArgs, components, predefined_args);
259 259 },
260   -
  260 +
  261 + parseTemplatedParam: function(templatedParamId, onParamParsed) {
  262 + AmdaAction.parseTemplatedParam(templatedParamId, function(res,e) {
  263 + if (!res || !res.success) {
  264 + if (!res || !res.message) {
  265 + myDesktopApp.errorMsg('Internal Error - Cannot parse the templated parameter');
  266 + }
  267 + else {
  268 + myDesktopApp.errorMsg('Internal Error - ' + res.message);
  269 + }
  270 + }
  271 + else {
  272 + if (onParamParsed) {
  273 + onParamParsed(res.info);
  274 + }
  275 + }
  276 + });
  277 + },
  278 +
261 279 saveState : Ext.emptyFn,
262 280  
263 281 getState : function() {
... ...
js/app/models/InteractiveNode.js
... ... @@ -18,6 +18,7 @@ Ext.define('amdaModel.InteractiveNode', {
18 18 {name: 'moduleId', type: 'string', persist: false},
19 19 {name: 'filtered', type: 'boolean', defaultValue: false, persist: false},
20 20 {name: 'needsArgs', type:'boolean', defaultValue: false},
  21 + {name: 'predefinedArgs', type:'boolean', defaultValue: false},
21 22 {name: 'disable', type: 'boolean', defaultValue: false, persist: false}
22 23 ],
23 24  
... ...
js/app/models/PlotObjects/PlotPanelObject.js
... ... @@ -298,6 +298,7 @@ Ext.define('amdaPlotObj.PlotPanelObject', {
298 298 var isTTCat = (typeof data !== "undefined") && (typeof data.isTTCat !== "undefined") && data.isTTCat;
299 299 var isVector = (typeof data !== "undefined") && (typeof data.isVector !== "undefined") && data.isVector;
300 300 var components = (typeof data !== "undefined") && (typeof data.components !== "undefined") && data.components ? data.components : null;
  301 + var template_args = (typeof data !== "undefined") && (typeof data.template_args !== "undefined") && data.template_args ? data.template_args : null;
301 302  
302 303 this.set('last-param-id', this.get('last-param-id') + 1);
303 304  
... ... @@ -308,6 +309,9 @@ Ext.define('amdaPlotObj.PlotPanelObject', {
308 309 var recs = this.params().add(obj);
309 310 recs[0].set('paramid', paramId);
310 311 recs[0].set('plotonly', isPlotOnly);
  312 + if (template_args) {
  313 + recs[0].set('template_args', template_args);
  314 + }
311 315  
312 316 if (components != null) {
313 317 if (components['index1']) {
... ...
js/app/views/DownloadUI.js
... ... @@ -91,7 +91,7 @@ Ext.define('amdaUI.DownloadUI', {
91 91 this.timeSelector.intervalSel.updateDuration();
92 92 },
93 93  
94   - addParam: function (paramId, isLeaf, needArgs, components)
  94 + addParam: function (paramId, isLeaf, needArgs, components, predefined_args)
95 95 {
96 96 // adding the parameter to the paramGrid
97 97 var paramObj = amdaModel.RequestParamObject.getEmptyObj();
... ... @@ -109,6 +109,10 @@ Ext.define('amdaUI.DownloadUI', {
109 109 }
110 110 }
111 111  
  112 + if (predefined_args) {
  113 + paramObj.template_args = predefined_args;
  114 + }
  115 +
112 116 var r = Ext.create('amdaModel.DownloadParam', paramObj);
113 117 var pos = this.paramGrid.store.getCount();
114 118 this.paramGrid.store.insert(pos, r);
... ... @@ -504,8 +508,17 @@ Ext.define('amdaUI.DownloadUI', {
504 508 return false;
505 509 }
506 510 var downModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.download.id);
507   - if (downModule)
508   - downModule.addParam(idToSent, data.records[0].get('leaf'), data.records[0].get('needsArgs'), components);
  511 + if (downModule) {
  512 + if (data.records[0].get('predefinedArgs')) {
  513 + downModule.parseTemplatedParam(idToSent, function(param_info) {
  514 + downModule.addParam(param_info.paramid, true, true, components, param_info.template_args);
  515 + });
  516 + }
  517 + else {
  518 + downModule.addParam(idToSent, data.records[0].get('leaf'), data.records[0].get('needsArgs'), components);
  519 + return true;
  520 + }
  521 + }
509 522 return true;
510 523 }
511 524 });
... ...
js/app/views/PlotComponents/PlotTree.js
... ... @@ -643,11 +643,24 @@ Ext.define('amdaPlotComp.PlotTree', {
643 643  
644 644 //Create param object
645 645 var me = this;
646   - panelObject.createNewParam(paramId, data, function (newParamObject) {
647   - //Rebuild params node
648   - me.buildPanelsNode(newParamObject.getId());
649   - //BRE newParamObject
650   - });
  646 + if ((typeof data !== "undefined") && (typeof data.predefinedArgs !== "undefined") && data.predefinedArgs) {
  647 + var plotModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id);
  648 + plotModule.parseTemplatedParam(paramId, function(param_info) {
  649 + data.template_args = param_info.template_args;
  650 + panelObject.createNewParam(param_info.paramid, data, function (newParamObject) {
  651 + //Rebuild params node
  652 + me.buildPanelsNode(newParamObject.getId());
  653 + });
  654 + //downModule.addParam(param_info.paramid, true, true, components, param_info.template_args);
  655 + });
  656 + }
  657 + else {
  658 + panelObject.createNewParam(paramId, data, function (newParamObject) {
  659 + //Rebuild params node
  660 + me.buildPanelsNode(newParamObject.getId());
  661 + //BRE newParamObject
  662 + });
  663 + }
651 664 },
652 665  
653 666 dropRecord: function (record, targetNode, position)
... ... @@ -693,7 +706,7 @@ Ext.define('amdaPlotComp.PlotTree', {
693 706 if (component_info.index2)
694 707 components['index2'] = component_info.index2;
695 708 }
696   - this.dropParamToCreate(targetNode, position, param_id, {'components': components, 'isVector': isVector, 'plotOnly': plot_only});
  709 + this.dropParamToCreate(targetNode, position, param_id, {'components': components, 'isVector': isVector, 'plotOnly': plot_only, 'predefinedArgs': record.get('predefinedArgs')});
697 710 }
698 711 return true;
699 712 case 'amdaModel.AliasNode' :
... ...
php/classes/AmdaAction.php
... ... @@ -268,6 +268,9 @@ class AmdaAction
268 268 $isParameter = true;
269 269 if ($child->hasAttribute('TemplatedParameter'))
270 270 $needsArgs = true;
  271 +
  272 + if ($child->hasAttribute('PredefinedTemplatedParameter'))
  273 + $predefinedArgs = true;
271 274  
272 275 if ($child->parentNode->hasAttribute('dataStart')) {
273 276 $globalStart = $child->parentNode->getAttribute('dataStart');
... ... @@ -332,7 +335,7 @@ class AmdaAction
332 335 'id' => $id,'nodeType' => $nodeType, 'info' => $info, "component_info" => $component_info,
333 336 'globalStart' => $globalStart, 'globalStop' => $globalStop, 'timeRestriction' => $timeRestriction,
334 337 'leaf' => $isLeaf, 'isParameter' => $isParameter,'isSpectra' => $isSpectra,
335   - 'is2dSpectra' => $is2dSpectra,'isStack' => $isStack, 'needsArgs' => $needsArgs, 'help' => $help, 'notyet' => $not_yet);
  338 + 'is2dSpectra' => $is2dSpectra,'isStack' => $isStack, 'needsArgs' => $needsArgs, 'predefinedArgs' => $predefinedArgs, 'help' => $help, 'notyet' => $not_yet);
336 339 }
337 340 else {
338 341 if ($child->hasAttribute('rank')) {
... ... @@ -1443,6 +1446,7 @@ class AmdaAction
1443 1446  
1444 1447 $inputobj = (Object)array(
1445 1448 'paramId' => $obj->paramId,
  1449 + 'predefinedArgs' => !empty($obj->predefinedArgs),
1446 1450 'type' => $type
1447 1451 );
1448 1452 return $this->executeRequest($inputobj, FunctionTypeEnumClass::PARAMINFO);
... ... @@ -1603,5 +1607,14 @@ class AmdaAction
1603 1607 {
1604 1608 return $this->executeRequest($obj->processId, FunctionTypeEnumClass::PROCESSGETREQUEST);
1605 1609 }
  1610 +
  1611 + public function parseTemplatedParam($paramTemplateId)
  1612 + {
  1613 + $args = (Object)array(
  1614 + 'paramId' => $paramTemplateId,
  1615 + 'type' => 'param_parse_template'
  1616 + );
  1617 + return $this->executeRequest($args, FunctionTypeEnumClass::PARAMINFO);
  1618 + }
1606 1619 }
1607 1620 ?>
... ...