Commit 29dfb5965172d7c4bbb68e54c75c54095afb84f8
1 parent
1df8e90c
Exists in
master
and in
107 other branches
Rework of ParamArgumentsUI
Showing
8 changed files
with
292 additions
and
261 deletions
Show diff stats
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParamArgumentsUI', { |
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('amdaUI.ParameterUI', |
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('amdaUI.SearchUI', |
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('amdaUI.StatisticsUI', |
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']) { |
... | ... |