Commit 29dfb5965172d7c4bbb68e54c75c54095afb84f8

Authored by Benjamin Renard
1 parent 1df8e90c

Rework of ParamArgumentsUI

js/app/models/DownloadNode.js
... ... @@ -83,14 +83,18 @@ Ext.define('amdaModel.DownloadNode', {
83 83 var myParam = new Object();
84 84 myParam.paramid = param.get('paramid');
85 85 myParam.type = param.get('type');
86   - myParam['dim1-type-range'] = param.get('dim1-type-range'),
87   - myParam['dim1-min-range'] = param.get('dim1-min-range'),
88   - myParam['dim1-max-range'] = param.get('dim1-max-range'),
89   - myParam['dim1-index'] = param.get('dim1-index'),
90   - myParam['dim2-type-range'] = param.get('dim2-type-range'),
91   - myParam['dim2-min-range'] = param.get('dim2-min-range'),
92   - myParam['dim2-max-range'] = param.get('dim2-max-range'),
93   - myParam['dim2-index'] = param.get('dim2-index'),
  86 + myParam['dim1-index'] = param.get('dim1-index');
  87 + myParam['dim1-sum-type'] = param.get('dim1-sum-type');
  88 + myParam['dim1-min-value'] = param.get('dim1-min-value');
  89 + myParam['dim1-max-value'] = param.get('dim1-max-value');
  90 + myParam['dim1-min-index'] = param.get('dim1-min-index');
  91 + myParam['dim1-max-index'] = param.get('dim1-max-index');
  92 + myParam['dim2-index'] = param.get('dim2-index');
  93 + myParam['dim2-sum-type'] = param.get('dim2-sum-type');
  94 + myParam['dim2-min-value'] = param.get('dim2-min-value');
  95 + myParam['dim2-max-value'] = param.get('dim2-max-value');
  96 + myParam['dim2-min-index'] = param.get('dim2-min-index');
  97 + myParam['dim2-max-index'] = param.get('dim2-max-index');
94 98 myParam.template_args = param.get('template_args');
95 99 if (!param.get('plotonly')) {
96 100 myValues.list[i] = myParam;
... ...
js/app/models/PlotObjects/PlotPanelObject.js
... ... @@ -284,23 +284,19 @@ Ext.define('amdaPlotObj.PlotPanelObject', {
284 284 this.set('last-param-id', this.get('last-param-id') + 1);
285 285  
286 286 var emptyPanel = (this.params().getCount() == 0);
287   -
288   - var recs = this.params().add({id : this.get('last-param-id')});
  287 +
  288 + var obj = amdaModel.RequestParamObject.getEmptyObj();
  289 + obj['id'] = this.get('last-param-id');
  290 + var recs = this.params().add(obj);
289 291 recs[0].set('paramid', paramId);
290   - recs[0].set('plotonly', plotOnly);
  292 + recs[0].set('plotonly', plotOnly);
291 293  
292 294 if (paramComponents) {
293 295 if (paramComponents['index1']) {
294   - this.isComponent = true;
295   - recs[0].set('dim1-type-range', 0);
296   - recs[0].set('dim1-min-range', 0.);
297   - recs[0].set('dim1-max-range', 0.);
  296 + this.isComponent = true;
298 297 recs[0].set('dim1-index', paramComponents['index1']);
299 298 }
300 299 if (paramComponents['index2']) {
301   - recs[0].set('dim2-type-range', 0);
302   - recs[0].set('dim2-min-range', 0.);
303   - recs[0].set('dim2-max-range', 0.);
304 300 recs[0].set('dim2-index', paramComponents['index2']);
305 301 }
306 302 }
... ...
js/app/models/RequestParamObject.js
... ... @@ -16,49 +16,81 @@
16 16  
17 17 Ext.define('amdaModel.RequestParamObject', {
18 18 extend: 'amdaModel.AmdaObject',
  19 +
  20 + statics: {
  21 + getEmptyObj: function() {
  22 + return {
  23 + 'paramid': '',
  24 + 'is-init': false,
  25 + 'type': 0,
  26 + 'dim1-index': '*',
  27 + 'dim1-sum-type': 0,
  28 + 'dim1-min-value': 0.,
  29 + 'dim1-max-value': 0.,
  30 + 'dim1-min-index': 0,
  31 + 'dim1-max-index': 0,
  32 + 'dim2-index': '*',
  33 + 'dim2-sum-type': 0,
  34 + 'dim2-min-value': 0.,
  35 + 'dim2-max-value': 0.,
  36 + 'dim2-min-index': 0,
  37 + 'dim2-max-index': 0,
  38 + 'template_args': {}
  39 + };
  40 + },
  41 + },
19 42  
20 43 idProperty: 'id',
21 44  
22   - fields : [
23   - {name: 'type', type: 'int'},
  45 + fields : [
  46 + {name: 'type', type: 'int'}, /* Parameter type. 0: Scalar, 1: Tab1D, 2: Tab2D */
  47 + {name: 'is-init', type: 'bool', default:false},
24 48 {name: 'paramid', type: 'string'},
25   - {name: 'dim1-type-range', type: 'int', defaultValue: 0},
26   - {name: 'dim1-min-range', type: 'float', defaultValue: 0.},
27   - {name: 'dim1-max-range', type: 'float', defaultValue: 0.},
28   - {name: 'dim1-index', type: 'string', defaultValue: '*'},
29   - {name: 'dim2-type-range', type: 'int', defaultValue: 0},
30   - {name: 'dim2-min-range', type: 'float', defaultValue: 0.},
31   - {name: 'dim2-max-range', type: 'float', defaultValue: 0.},
32   - {name: 'dim2-index', type: 'string', defaultValue: '*'},
33   - {name: 'template_args', type: 'auto', defaultValue: null},
34   - {name: 'plotonly', type: 'bool', defaultValue: false}
  49 + /* Fields for dim1 */
  50 + {name: 'dim1-index', type: 'string', defaultValue: '*'},
  51 + {name: 'dim1-sum-type', type: 'int', defaultValue: 0}, /* Sum type. 0: None, 1: sum into values range, 2: sum between indexes */
  52 + {name: 'dim1-min-value', type: 'float', defaultValue: 0.},
  53 + {name: 'dim1-max-value', type: 'float', defaultValue: 0.},
  54 + {name: 'dim1-min-index', type: 'int', defaultValue: 0},
  55 + {name: 'dim1-max-index', type: 'int', defaultValue: 0},
  56 + /* Fields for dim2 */
  57 + {name: 'dim2-index', type: 'string', defaultValue: '*'},
  58 + {name: 'dim2-sum-type', type: 'int', defaultValue: 0}, /* Sum type. 0: None, 1: sum into values range, 2: sum between indexes */
  59 + {name: 'dim1-min-value', type: 'float', defaultValue: 0.},
  60 + {name: 'dim1-max-value', type: 'float', defaultValue: 0.},
  61 + {name: 'dim1-min-index', type: 'int', defaultValue: 0},
  62 + {name: 'dim1-max-index', type: 'int', defaultValue: 0},
  63 + /* Field for arguments of a templated parameter */
  64 + {name: 'template_args', type: 'auto', defaultValue: null},
  65 + /* ?? */
  66 + {name: 'plotonly', type: 'bool', defaultValue: false}
35 67 ],
36 68  
37   - getDimRange : function(dim) {
38   - switch (this.get(dim+'-type-range')) {
  69 + getDimSum : function(dim) {
  70 + switch (this.get(dim+'-sum-type')) {
39 71 case 1:
40   - return 'range[' + this.get(dim+'-min-range') + ',' + this.get(dim+'-max-range') + ']';
  72 + return 'range[' + this.get(dim+'-min-value') + ',' + this.get(dim+'-max-value') + ']';
41 73 case 2:
42   - return 'indexes[' + this.get(dim+'-min-range') + ',' + this.get(dim+'-max-range') + ']';
  74 + return 'indexes[' + this.get(dim+'-min-index') + ',' + this.get(dim+'-max-index') + ']';
43 75 }
44 76 return false;
45 77 },
46 78  
47 79 getParamFullName : function() {
48 80 var paramIndexes = '';
49   - var range_1 = this.getDimRange('dim1');
50   - var range_2 = this.getDimRange('dim2');
  81 + var sum_dim1 = this.getDimSum('dim1');
  82 + var sum_dim2 = this.getDimSum('dim2');
51 83 switch (this.get('type')) {
52 84 case 0:
53 85 //scalar - nothing to do
54 86 break;
55 87 case 1:
56 88 //Tab1D
57   - if (range_1 !== false) {
58   - paramIndexes = '(' + range_1 + ')';
  89 + if (sum_dim1 !== false) {
  90 + paramIndexes = '(' + sum_dim1 + ')';
59 91 }
60   - else if (range_2 !== false) {
61   - paramIndexes = '(' + range_2 + ')';
  92 + else if (sum_dim2 !== false) {
  93 + paramIndexes = '(' + sum_dim2 + ')';
62 94 }
63 95 else {
64 96 if ((this.get('dim1-index') != '') && (this.get('dim1-index') != '*'))
... ... @@ -70,13 +102,13 @@ Ext.define('amdaModel.RequestParamObject', {
70 102 case 2:
71 103 //Tab2D
72 104 var dim1 = '';
73   - if (range_1 !== false)
74   - dim1 = range_1;
  105 + if (sum_dim1 !== false)
  106 + dim1 = sum_dim1;
75 107 else
76 108 dim1 = this.get('dim1-index') != '' ? this.get('dim1-index') : "*";
77 109 var dim2 = '';
78   - if (range_2 !== false)
79   - dim2 = range_2;
  110 + if (sum_dim2 !== false)
  111 + dim2 = sum_dim2;
80 112 else
81 113 dim2 = this.get('dim2-index') != '' ? this.get('dim2-index') : "*";
82 114 if ((dim1 != '*') || (dim2 != '*'))
... ... @@ -107,16 +139,36 @@ Ext.define('amdaModel.RequestParamObject', {
107 139 paramValues['paramid'] = this.get('paramid');
108 140 paramValues['name'] = this.get('name');
109 141  
110   - paramValues['dim1-type-range'] = this.get('dim1-type-range');
111   - paramValues['dim1-min-range'] = this.get('dim1-min-range');
112   - paramValues['dim1-max-range'] = this.get('dim1-max-range');
113   - paramValues['dim1-index'] = this.get('dim1-index');
114   -
115   - paramValues['dim2-type-range'] = this.get('dim2-type-range');
116   - paramValues['dim2-min-range'] = this.get('dim2-min-range');
117   - paramValues['dim2-max-range'] = this.get('dim2-max-range');
118   - paramValues['dim2-index'] = this.get('dim2-index');
119   -
  142 + paramValues['dim1-index'] = this.get('dim1-index');
  143 + paramValues['dim1-sum-type'] = this.get('dim1-sum-type');
  144 + switch (this.get('dim1-sum-type')) {
  145 + case 1:
  146 + // Between values
  147 + paramValues['dim1-sum-min'] = this.get('dim1-min-value');
  148 + paramValues['dim1-sum-max'] = this.get('dim1-max-value');
  149 + break;
  150 + case 2:
  151 + // Between components indexes
  152 + paramValues['dim1-sum-min'] = this.get('dim1-min-index');
  153 + paramValues['dim1-sum-max'] = this.get('dim1-max-index');
  154 + break;
  155 + }
  156 +
  157 + paramValues['dim2-index'] = this.get('dim2-index');
  158 + paramValues['dim2-sum-type'] = this.get('dim2-sum-type');
  159 + switch (this.get('dim2-sum-type')) {
  160 + case 1:
  161 + // Between values
  162 + paramValues['dim2-sum-min'] = this.get('dim2-min-value');
  163 + paramValues['dim2-sum-max'] = this.get('dim2-max-value');
  164 + break;
  165 + case 2:
  166 + // Between components indexes
  167 + paramValues['dim2-sum-min'] = this.get('dim2-min-index');
  168 + paramValues['dim2-sum-max'] = this.get('dim2-max-index');
  169 + break;
  170 + }
  171 +
120 172 paramValues['type'] = this.get('type');
121 173  
122 174 if (this.get('template_args') != null) {
... ...
js/app/views/DownloadUI.js
... ... @@ -94,19 +94,8 @@ Ext.define('amdaUI.DownloadUI', {
94 94 addParam: function (paramId, isLeaf, needArgs, components)
95 95 {
96 96 // adding the parameter to the paramGrid
97   - var paramObj = {
98   - paramid: paramId,
99   - type: 0,
100   - 'dim1-type-range': 0,
101   - 'dim1-min-range': 0.,
102   - 'dim1-max-range': 0.,
103   - 'dim1-index': '*',
104   - 'dim2-type-range': 0,
105   - 'dim2-min-range': 0.,
106   - 'dim2-max-range': 0.,
107   - 'dim2-index': '*',
108   - template_args: {}
109   - };
  97 + var paramObj = amdaModel.RequestParamObject.getEmptyObj();
  98 + paramObj.paramid = paramId;
110 99  
111 100 if (components) {
112 101 if (components['index1']) {
... ... @@ -143,19 +132,10 @@ Ext.define('amdaUI.DownloadUI', {
143 132 if (typeof paramId !== 'undefined' && ! patt.test(item.paramid))
144 133 {
145 134 // for Parameter Name in Download Module
146   - var paramObj = {
147   - paramid: paramId,
148   - type: 0,
149   - 'dim1-type-range': 0,
150   - 'dim1-min-range': 0.,
151   - 'dim1-max-range': 0.,
152   - 'dim1-index': item.get('dim1'),
153   - 'dim2-type-range': 0,
154   - 'dim2-min-range': 0.,
155   - 'dim2-max-range': 0.,
156   - 'dim2-index': item.get('dim2'),
157   - template_args: {}
158   - };
  135 + var paramObj = amdaModel.RequestParamObject.getEmptyObj();
  136 + paramObj.paramid = paramId;
  137 + paramObj['dim1-index'] = item.get('dim1');
  138 + paramObj['dim2-index'] = item.get('dim2');
159 139  
160 140 var r = Ext.create('amdaModel.DownloadParam', paramObj);
161 141 } else
... ...
js/app/views/ParamArgumentsUI.js
... ... @@ -20,9 +20,6 @@ Ext.define('amdaUI.ParamArgumentsUI', {
20 20 onModifyHeight: null,
21 21 pluginOwner: null,
22 22 isFirstMsg : true,
23   - isInit : false,
24   - // -1 -> unknown, 0 -> scalar, 1 -> Tab1D, 2 -> Tab2D
25   - paramType: 0,
26 23  
27 24 constructor: function(config) {
28 25 this.init(config);
... ... @@ -41,36 +38,123 @@ Ext.define('amdaUI.ParamArgumentsUI', {
41 38 },
42 39  
43 40 editParameter: function(paramRequestObject, uiScope, onReady) {
44   - if (paramRequestObject.get('type') === 0)
45   - this.isInit = true;
46   -
47 41 this.paramRequestObject = paramRequestObject;
  42 +
48 43 var me = this;
49   - me.mask();
50   - me.resetArguments();
  44 + me.mask();
  45 + me.resetArguments();
51 46  
52   - var explorerModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id);
  47 + var explorerModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id);
53 48  
54   - if (explorerModule) {
55   - explorerModule.getParamInfo(paramRequestObject.get('paramid'), function (paramInfo) {
56   - if (paramInfo)
57   - me.rebuildAll(paramInfo, uiScope);
  49 + if (explorerModule) {
  50 + explorerModule.getParamInfo(paramRequestObject.get('paramid'), function (paramInfo) {
  51 + if (paramInfo) {
  52 + if (!paramRequestObject.get('is-init')) {
  53 + if (paramInfo.data && paramInfo.data.dimensions) {
  54 + //Init each dimensions and set parameter type (0: scalar, 1: vector or 2: Tab2D)
  55 + paramRequestObject.set('type',0);
  56 + if (me.initDimension('dim1', paramInfo.data)) {
  57 + paramRequestObject.set('type',paramRequestObject.get('type')+1);
  58 + }
  59 + if (me.initDimension('dim2', paramInfo.data)) {
  60 + paramRequestObject.set('type',paramRequestObject.get('type')+1);
  61 + }
  62 + if (paramRequestObject.get('type') == 2) {
  63 + //Tab2D
  64 + var dim2RelatedTable = me.getRelatedTableFromDim('dim2',paramInfo.data.tables);
  65 + if (!dim2RelatedTable.variable) {
  66 + paramRequestObject.set('dim2-index', 0);
  67 + }
  68 + }
  69 + paramRequestObject.set('is-init', true);
  70 + }
  71 + }
  72 + me.rebuildAll(paramInfo, uiScope);
  73 + }
58 74 if (onReady)
59 75 onReady(uiScope);
60 76 me.unmask();
61   - });
62   -
63   - }
64   - else
65   - me.unmask();
  77 + });
  78 + }
  79 + else
  80 + me.unmask();
  81 + },
66 82  
67   - },
  83 + initDimension: function(relatedDim, data) {
  84 + if (!data || !data.dimensions || !data.dimensions[relatedDim] || this.paramRequestObject.get('is-init')) {
  85 + return false;
  86 + }
  87 + if (data.dimensions[relatedDim] && (parseInt(data.dimensions[relatedDim]) > 1)) {
  88 + var relatedTable = this.getRelatedTableFromDim(relatedDim, data.tables);
  89 + if (relatedTable) {
  90 + var minmax = this.getDimensionMinMaxValues(relatedDim, data);
  91 + if (!minmax) {
  92 + myDesktopApp.warningMsg('Min/Max '+this.getDimensionTitle(relatedDim, data)+' values are undefined<br/>Arbitrary values are taken');
  93 + minmax = {
  94 + 'min': 10,
  95 + 'max': 10000
  96 + };
  97 + }
  98 + this.paramRequestObject.set(relatedDim+'-min-value', minmax['min']);
  99 + this.paramRequestObject.set(relatedDim+'-max-value', minmax['max']);
  100 + this.paramRequestObject.set(relatedDim+'-min-index', 0);
  101 + this.paramRequestObject.set(relatedDim+'-max-index', parseInt(data.dimensions[relatedDim])-1);
  102 + }
  103 + return true;
  104 + }
  105 + return false;
  106 + },
  107 +
  108 + getDimensionMinMaxValues: function(relatedDim, data) {
  109 + var relatedTable = this.getRelatedTableFromDim(relatedDim, data.tables);
  110 + if (relatedTable.variable) {
  111 + if (Ext.Object.isEmpty(relatedTable.minmax)) {
  112 + //Not defined
  113 + return null;
  114 + }
  115 + return {
  116 + 'min': relatedTable.minmax.min,
  117 + 'max': relatedTable.minmax.max
  118 + };
  119 + }
  120 + var minValue = null;
  121 + var maxValue = null;
  122 + Ext.Object.each(relatedTable.channels, function (argKey, argDef) {
  123 + var crtMin = (parseFloat(argDef.min) < parseFloat(argDef.max)) ? parseFloat(argDef.min) : parseFloat(argDef.max);
  124 + if (!minValue || minValue > crtMin) {
  125 + minValue = crtMin;
  126 + }
  127 + var crtMax = (parseFloat(argDef.max) > parseFloat(argDef.min)) ? parseFloat(argDef.max) : parseFloat(argDef.min);
  128 + if (!maxValue || maxValue < crtMax) {
  129 + maxValue = crtMax;
  130 + }
  131 + });
  132 + return {
  133 + 'min': (minValue < maxValue) ? minValue : maxValue,
  134 + 'max': (maxValue > minValue) ? maxValue : minValue
  135 + };
  136 + },
  137 +
  138 + getDimensionTitle: function(relatedDim, data) {
  139 + var relatedTable = this.getRelatedTableFromDim(relatedDim, data.tables);
  140 + var title = 'Unknown';
  141 + if (relatedTable) {
  142 + title = relatedTable.name;
  143 + if (relatedTable.units != '')
  144 + title += ' (' + relatedTable.units + ')';
  145 + }
  146 + else if (relatedDim == "dim1") {
  147 + title = 'Dim. 1';
  148 + }
  149 + else if (relatedDim == "dim2") {
  150 + title = 'Dim. 2';
  151 + }
  152 + return title;
  153 + },
68 154  
69   - rebuildAll: function(paramInfoResult , uiScope) {
70   - //Rebuild arguments selection
  155 + rebuildAll: function(paramInfoResult , uiScope) {
  156 + //Rebuild arguments selection
71 157 this.rebuildArguments(paramInfoResult, uiScope);
72   - //Set parameter type (scalar, vector or Tab2D)
73   - this.paramRequestObject.set('type', this.paramType);
74 158 //Add default template args values
75 159 var templateArgsValues = this.paramRequestObject.get('template_args');
76 160 if (!templateArgsValues)
... ... @@ -88,35 +172,38 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
88 172  
89 173 //Init values in interface
90 174 this.items.each(function (item) {
91   - if (!item.argId)
92   - return;
93   - if (this.regexp_istemplate.test(item.argId)) {
94   - var arg_key = this.regexp_istemplate.exec(item.argId)[1];
  175 + if (!item.argId)
  176 + return;
  177 + if (this.regexp_istemplate.test(item.argId)) {
  178 + var arg_key = this.regexp_istemplate.exec(item.argId)[1];
95 179  
96   - if (this.paramRequestObject.get('template_args') && this.paramRequestObject.get('template_args')[arg_key])
97   - item.setValue(this.paramRequestObject.get('template_args')[arg_key]);
98   - }
99   - else if (item.argId == 'dim1' || item.argId == 'dim2') {
100   - item.setValue(this.paramRequestObject.get(item.argId+'-index'));
101   - var minRangeField = this.down('textfield[name=range_min_' + item.argId + ']');
102   - var maxRangeField = this.down('textfield[name=range_max_' + item.argId + ']');
103   - if (minRangeField && maxRangeField) {
104   - minRangeField.setValue(this.paramRequestObject.get(item.argId+'-min-range'));
105   - maxRangeField.setValue(this.paramRequestObject.get(item.argId+'-max-range'));
106   - var isRangeField = minRangeField.up();
107   - if (this.paramRequestObject.get(item.argId+'-type-range') > 0)
108   - isRangeField.expand();
109   - else
110   - isRangeField.collapse();
  180 + if (this.paramRequestObject.get('template_args') && this.paramRequestObject.get('template_args')[arg_key])
  181 + item.setValue(this.paramRequestObject.get('template_args')[arg_key]);
  182 + }
  183 + else if (item.argId == 'dim1' || item.argId == 'dim2') {
  184 + item.setValue(this.paramRequestObject.get(item.argId+'-index'));
  185 + var sumInRangeField = item.up().down('[name=sum_fieldset_'+item.argId +']');
  186 + if (sumInRangeField) {
  187 + //Fill fields
  188 + sumInRangeField.down('textfield[name=value_min_' + item.argId + ']').setValue(this.paramRequestObject.get(item.argId+'-min-value'));
  189 + sumInRangeField.down('textfield[name=value_max_' + item.argId + ']').setValue(this.paramRequestObject.get(item.argId+'-max-value'));
  190 + sumInRangeField.down('textfield[name=index_min_' + item.argId + ']').setValue(this.paramRequestObject.get(item.argId+'-min-index'));
  191 + sumInRangeField.down('textfield[name=index_max_' + item.argId + ']').setValue(this.paramRequestObject.get(item.argId+'-max-index'));
  192 + if (this.paramRequestObject.get(item.argId+'-sum-type') > 0) {
  193 + sumInRangeField.expand();
  194 + }
  195 + else {
  196 + sumInRangeField.collapse();
  197 + }
111 198 }
112 199 }
113 200 else
114 201 item.setValue(this.paramRequestObject.get(item.argId));
115 202 }, this);
116 203 },
117   -
  204 +
118 205 getValues: function() {
119   - var values = {type : this.paramType};
  206 + var values = {type : paramRequestObject.get('type')};
120 207 this.items.each(function(item) {
121 208 if (!item.argId)
122 209 return;
... ... @@ -149,16 +236,12 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
149 236 rebuildArguments: function(result, uiScope) {
150 237 this.resetArguments(true);
151 238  
152   - this.paramType = -1;
153 239 if (result.data && result.data.dimensions) {
154   - this.paramType = 0;
155 240 if (result.data.dimensions.dim1 && (parseInt(result.data.dimensions.dim1) > 1) || this.getRelatedTableFromDim('dim1',result.data.tables)) {
156 241 this.buildDimIndexSelection("dim1", result.data, uiScope);
157   - ++this.paramType;
158 242 }
159 243 if (result.data.dimensions.dim2 && (parseInt(result.data.dimensions.dim2) > 1) || this.getRelatedTableFromDim('dim2',result.data.tables)) {
160 244 this.buildDimIndexSelection("dim2", result.data, uiScope);
161   - ++this.paramType;
162 245 }
163 246 }
164 247  
... ... @@ -166,7 +249,7 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
166 249 if (isTemplate)
167 250 this.buildTemplateArguments(result.template.arguments, uiScope);
168 251  
169   - if ((this.paramType <= 0) && !isTemplate)
  252 + if ((this.paramRequestObject.get('type') == 0) && !isTemplate)
170 253 //Add no args message
171 254 this.resetArguments(false);
172 255 },
... ... @@ -181,23 +264,19 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
181 264 }
182 265 return relatedTable;
183 266 },
184   -
  267 +
185 268 buildDimIndexSelection: function(relatedDim, data, uiScope) {
186 269 //Check if this dimension is attached to a table
187 270 var relatedTable = this.getRelatedTableFromDim(relatedDim, data.tables);
188 271 var dimSize = data.dimensions[relatedDim];
189 272  
190   - var title = '';
  273 + var title = this.getDimensionTitle(relatedDim, data);
191 274  
192 275 var indexes = [];
193 276 indexes.push({'key' : '*', 'value' : 'All'});
194 277  
195 278 if (relatedTable) {
196 279 //If it's not a variable table => enable channel selection
197   - title = relatedTable.name;
198   - if (relatedTable.units != '')
199   - title += ' (' + relatedTable.units + ')';
200   -
201 280 if (!relatedTable.variable)
202 281 Ext.Object.each(relatedTable.channels, function (index, channel) {
203 282 indexes.push({'key' : index.toString(), 'value' : index + ' : [' + channel.min + ', ' + channel.max + ']'});
... ... @@ -205,11 +284,6 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
205 284 }
206 285 else {
207 286 //Else, use components
208   - if (relatedDim == "dim1")
209   - title = 'Dim. 1';
210   - else if (relatedDim == "dim2")
211   - title = 'Dim. 2';
212   -
213 287 Ext.Object.each(data.components, function (index, component) {
214 288 if (relatedDim == "dim1" && component.index_1 != "")
215 289 indexes.push({'key' : component.index_1, 'value' : index + ' : ' + component.name});
... ... @@ -235,13 +309,7 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
235 309 argId: relatedDim,
236 310 hidden: (relatedTable ? relatedTable.variable : false),
237 311 listeners: {
238   - afterrender: function(combo) {
239   - if (relatedDim == 'dim2' && !relatedTable.variable && this.isInit) {
240   - combo.setValue('0');
241   - this.isInit = false;
242   - }
243   - },
244   - change: function(field, newValue, oldValue, eOpts) {
  312 + change: function(field, newValue, oldValue, eOpts) {
245 313 if (this.paramRequestObject.get('type') == '2' && this.isFirstMsg)
246 314 {
247 315 if (relatedDim == 'dim2' && newValue == '*') {
... ... @@ -270,18 +338,18 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
270 338 this.add(indexesCombo);
271 339  
272 340 if (relatedTable) {
273   - var rangeTypes = Ext.create('Ext.data.Store', {
  341 + var sumTypes = Ext.create('Ext.data.Store', {
274 342 fields: ['type', 'name'],
275 343 data: [
276   - {'type': 1, 'name': 'Values'},
277   - {'type': 2, 'name': 'Indexes'}
  344 + {'type': 1, 'name': 'Between Values'},
  345 + {'type': 2, 'name': 'Between Indexes'}
278 346 ]
279 347 });
280   - var rangeItems = [
  348 + var sumItems = [
281 349 {
282 350 xtype: 'combobox',
283   - name: 'range_type_'+relatedDim,
284   - store: rangeTypes,
  351 + name: 'sum_type_'+relatedDim,
  352 + store: sumTypes,
285 353 queryMode: 'local',
286 354 editable: false,
287 355 displayField: 'name',
... ... @@ -290,19 +358,11 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
290 358 value: 1,
291 359 listeners: {
292 360 change: function(field, newValue, oldValue, eOpts) {
293   - this.paramRequestObject.set(relatedDim+'-type-range', newValue);
294   - field.up().down('[name=range_min_'+relatedDim+']').setVisible(newValue != 2);
295   - field.up().down('[name=range_max_'+relatedDim+']').setVisible(newValue != 2);
  361 + this.paramRequestObject.set(relatedDim+'-sum-type',newValue);
  362 + field.up().down('[name=value_min_'+relatedDim+']').setVisible(newValue == 1);
  363 + field.up().down('[name=value_max_'+relatedDim+']').setVisible(newValue == 1);
296 364 field.up().down('[name=index_min_'+relatedDim+']').setVisible(newValue == 2);
297 365 field.up().down('[name=index_max_'+relatedDim+']').setVisible(newValue == 2);
298   - if (newValue == 2) {
299   - this.paramRequestObject.set(relatedDim+'-min-range', field.up().down('[name=index_min_'+relatedDim+']').getValue());
300   - this.paramRequestObject.set(relatedDim+'-max-range', field.up().down('[name=index_max_'+relatedDim+']').getValue());
301   - }
302   - else {
303   - this.paramRequestObject.set(relatedDim+'-min-range', field.up().down('[name=range_min_'+relatedDim+']').getValue());
304   - this.paramRequestObject.set(relatedDim+'-max-range', field.up().down('[name=range_max_'+relatedDim+']').getValue());
305   - }
306 366 if (this.onChange != null)
307 367 this.onChange(uiScope, relatedDim, newValue, oldValue, false);
308 368 },
... ... @@ -311,30 +371,30 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
311 371 },
312 372 {
313 373 xtype: 'numberfield',
314   - name: 'range_min_'+relatedDim,
  374 + name: 'value_min_'+relatedDim,
315 375 fieldLabel: 'Min.',
316 376 decimalPrecision : 3,
317 377 value: 0.,
318 378 listeners: {
319 379 change: function(field, newValue, oldValue, eOpts) {
320   - this.paramRequestObject.set(relatedDim+'-min-range', newValue);
321   - if (this.onChange != null)
322   - this.onChange(uiScope, relatedDim, newValue, oldValue, false);
  380 + this.paramRequestObject.set(relatedDim+'-min-value', newValue);
  381 + if (this.onChange != null)
  382 + this.onChange(uiScope, relatedDim, newValue, oldValue, false);
323 383 },
324 384 scope: this
325 385 }
326 386 },
327 387 {
328 388 xtype: 'numberfield',
329   - name: 'range_max_'+relatedDim,
  389 + name: 'value_max_'+relatedDim,
330 390 fieldLabel: 'Max.',
331 391 decimalPrecision : 3,
332 392 value: 0.,
333 393 listeners: {
334 394 change: function(field, newValue, oldValue, eOpts) {
335   - this.paramRequestObject.set(relatedDim+'-max-range', newValue);
336   - if (this.onChange != null)
337   - this.onChange(uiScope, relatedDim, newValue, oldValue, false);
  395 + this.paramRequestObject.set(relatedDim+'-max-value', newValue);
  396 + if (this.onChange != null)
  397 + this.onChange(uiScope, relatedDim, newValue, oldValue, false);
338 398 },
339 399 scope: this
340 400 }
... ... @@ -349,9 +409,9 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
349 409 hidden: true,
350 410 listeners: {
351 411 change: function(field, newValue, oldValue, eOpts) {
352   - this.paramRequestObject.set(relatedDim+'-min-range', newValue);
353   - if (this.onChange != null)
354   - this.onChange(uiScope, relatedDim, newValue, oldValue, false);
  412 + this.paramRequestObject.set(relatedDim+'-min-index', newValue);
  413 + if (this.onChange != null)
  414 + this.onChange(uiScope, relatedDim, newValue, oldValue, false);
355 415 },
356 416 scope: this
357 417 }
... ... @@ -366,9 +426,9 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
366 426 hidden: true,
367 427 listeners: {
368 428 change: function(field, newValue, oldValue, eOpts) {
369   - this.paramRequestObject.set(relatedDim+'-max-range', newValue);
370   - if (this.onChange != null)
371   - this.onChange(uiScope, relatedDim, newValue, oldValue, false);
  429 + this.paramRequestObject.set(relatedDim+'-max-index', newValue);
  430 + if (this.onChange != null)
  431 + this.onChange(uiScope, relatedDim, newValue, oldValue, false);
372 432 },
373 433 scope: this
374 434 }
... ... @@ -378,64 +438,36 @@ Ext.define(&#39;amdaUI.ParamArgumentsUI&#39;, {
378 438 var sumRangeFieldSet = Ext.create('Ext.form.FieldSet', {
379 439 title: relatedTable.variable ? title + " - Sum. in range" : "Sum. in range",
380 440 collapsed: true,
381   - checkboxName: 'range_checkbox_'+relatedDim,
  441 + checkboxName: 'sum_checkbox_'+relatedDim,
382 442 checkboxToggle: true,
383   - name: 'range_fieldset_'+relatedDim,
  443 + name: 'sum_fieldset_'+relatedDim,
384 444 layout: {
385 445 type: 'vbox',
386 446 pack: 'start',
387 447 align: 'stretch'
388 448 },
389   - items: rangeItems,
  449 + items: sumItems,
390 450 listeners: {
391   - afterrender: function(fieldset) {
392   - if (relatedDim == 'dim2' && relatedTable.variable && this.isInit) {
393   - fieldset.checkboxCmp.setValue('true');
394   - this.isInit = false;
395   - }
396   - },
397 451 expand: function(fieldset, eOpts) {
398   - if (relatedTable.variable) {
399   - if (Ext.Object.isEmpty(relatedTable.minmax)) {
400   - myDesktopApp.warningMsg('Min/Max '+title+' values are undefined<br/>Arbitrary values are taken');
401   - var minValue = 10;
402   - var maxValue = 10000;
403   - }
404   - else {
405   - var minValue = relatedTable.minmax.min;
406   - var maxValue = relatedTable.minmax.max;
407   - }
  452 + if (this.paramRequestObject.get(relatedDim+'-sum-type') == 0) {
  453 + this.paramRequestObject.set(relatedDim+'-sum-type',1);
408 454 }
409   - else {
410   - var minValue = parseInt(relatedTable.channels[0].min);
411   - var maxValue = parseInt(relatedTable.channels[relatedTable.channels.length - 1].max);
412   - }
413   - fieldset.down('[name=range_min_'+relatedDim+']').setValue(minValue > maxValue ? maxValue : minValue);
414   - fieldset.down('[name=range_max_'+relatedDim+']').setValue(minValue > maxValue ? minValue : maxValue);
415   - fieldset.down('[name=index_min_'+relatedDim+']').setValue(0);
416   - fieldset.down('[name=index_min_'+relatedDim+']').setMaxValue(dimSize-1);
417   - fieldset.down('[name=index_max_'+relatedDim+']').setValue(dimSize-1);
418   - fieldset.down('[name=index_max_'+relatedDim+']').setMaxValue(dimSize-1);
419   - fieldset.down('[name=range_type_'+relatedDim+']').setValue(1);
  455 + fieldset.down('[name=sum_type_'+relatedDim+']').setValue(this.paramRequestObject.get(relatedDim+'-sum-type'));
420 456 indexesCombo.setDisabled(true);
421   -
422   -
423   - this.paramRequestObject.set(relatedDim+'-type-range', 1);
424 457 if (this.onChange != null)
425   - this.onChange(uiScope, relatedDim, true, false, false);
  458 + this.onChange(uiScope, relatedDim, true, false, false);
426 459 if (this.onModifyHeight)
427   - this.onModifyHeight(this.pluginOwner);
  460 + this.onModifyHeight(this.pluginOwner);
428 461 },
429 462 collapse: function(fieldset, eOpts) {
430   - indexesCombo.setDisabled(false);
431   -
432   - this.paramRequestObject.set(relatedDim+'-type-range', 0);
433   - if (this.onChange != null)
434   - this.onChange(uiScope, relatedDim, false, true, false);
  463 + indexesCombo.setDisabled(false);
  464 + this.paramRequestObject.set(relatedDim+'-sum-type', 0);
  465 + if (this.onChange != null)
  466 + this.onChange(uiScope, relatedDim, false, true, false);
435 467 if (this.onModifyHeight)
436   - this.onModifyHeight(this.pluginOwner);
437   - },
438   - scope: this
  468 + this.onModifyHeight(this.pluginOwner);
  469 + },
  470 + scope: this
439 471 }
440 472 });
441 473 this.add(sumRangeFieldSet);
... ...
js/app/views/ParameterUI.js
... ... @@ -57,19 +57,8 @@ Ext.define(&#39;amdaUI.ParameterUI&#39;,
57 57  
58 58 editParameterArgs: function(name, components)
59 59 {
60   - var paramObj = {
61   - paramid: name,
62   - type: 0,
63   - 'dim1-type-range': 0,
64   - 'dim1-min-range': 0.,
65   - 'dim1-max-range': 0.,
66   - 'dim1-index': '*',
67   - 'dim2-type-range': 0,
68   - 'dim2-min-range': 0.,
69   - 'dim2-max-range': 0.,
70   - 'dim2-index': '*',
71   - template_args: {}
72   - };
  60 + var paramObj = amdaModel.RequestParamObject.getEmptyObj();
  61 + paramObj.paramid = name;
73 62  
74 63 if (components)
75 64 {
... ...
js/app/views/SearchUI.js
... ... @@ -67,19 +67,8 @@ Ext.define(&#39;amdaUI.SearchUI&#39;,
67 67  
68 68 editParameterArgs: function(name, components)
69 69 {
70   - var paramObj = {
71   - paramid: name,
72   - type: 0,
73   - 'dim1-type-range': 0,
74   - 'dim1-min-range': 0.,
75   - 'dim1-max-range': 0.,
76   - 'dim1-index': '*',
77   - 'dim2-type-range': 0,
78   - 'dim2-min-range': 0.,
79   - 'dim2-max-range': 0.,
80   - 'dim2-index': '*',
81   - template_args: {}
82   - };
  70 + var paramObj = amdaModel.RequestParamObject.getEmptyObj();
  71 + paramObj.paramid = name;
83 72  
84 73 if (components) {
85 74 if (components['index1']) {
... ...
js/app/views/StatisticsUI.js
... ... @@ -50,20 +50,9 @@ Ext.define(&#39;amdaUI.StatisticsUI&#39;,
50 50  
51 51 addParam : function(paramId, isLeaf, needArgs, components)
52 52 {
53   - // adding the parameter to the paramGrid
54   - var paramObj = {
55   - paramid: paramId,
56   - type: 0,
57   - 'dim1-type-range': 0,
58   - 'dim1-min-range': 0.,
59   - 'dim1-max-range': 0.,
60   - 'dim1-index': '*',
61   - 'dim2-type-range': 0,
62   - 'dim2-min-range': 0.,
63   - 'dim2-max-range': 0.,
64   - 'dim2-index': '*',
65   - template_args: {}
66   - };
  53 + // adding the parameter to the paramGrid
  54 + var paramObj = amdaModel.RequestParamObject.getEmptyObj();
  55 + paramObj.paramid = paramId;
67 56  
68 57 if (components) {
69 58 if (components['index1']) {
... ...