Commit 655e355f279e49e713917d772ac1402f8d86abb0
1 parent
a610d447
Exists in
master
and in
110 other branches
disable "predefined" form fields
Showing
2 changed files
with
832 additions
and
795 deletions
Show diff stats
js/app/views/MyDataUI.js
... | ... | @@ -10,476 +10,502 @@ |
10 | 10 | |
11 | 11 | |
12 | 12 | Ext.define('amdaUI.MyDataUI', { |
13 | - extend: 'Ext.container.Container', | |
14 | - alias: 'widget.panelMyData', | |
15 | - | |
16 | - requires: [ | |
17 | - 'amdaUI.TableDefPlugUI' | |
18 | - ], | |
13 | + extend: 'Ext.container.Container', | |
14 | + alias: 'widget.panelMyData', | |
15 | + | |
16 | + requires: [ | |
17 | + 'amdaUI.TableDefPlugUI' | |
18 | + ], | |
19 | 19 | |
20 | - object : null, | |
21 | - fileObject : null, | |
22 | - | |
23 | - module : null, | |
24 | - | |
25 | - fields : [], | |
26 | - columns : [], | |
27 | - | |
28 | - constructor: function(config) { | |
29 | - this.module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.my_data.id); | |
30 | - this.init(config); | |
31 | - this.callParent(arguments); | |
32 | - this.setObject(this.module.linkedNode.get('object')); | |
33 | - }, | |
20 | + object : null, | |
21 | + fileObject : null, | |
22 | + | |
23 | + module : null, | |
24 | + | |
25 | + fields : [], | |
26 | + columns : [], | |
27 | + | |
28 | + constructor: function(config) { | |
29 | + this.module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.my_data.id); | |
30 | + this.init(config); | |
31 | + this.callParent(arguments); | |
32 | + this.setObject(this.module.linkedNode.get('object')); | |
33 | + }, | |
34 | 34 | |
35 | - /* | |
36 | - * linked node should be MyDataParamNode | |
37 | - */ | |
38 | - resetLinkedNode: function() | |
39 | - { | |
40 | - this.linkedNode = null; | |
41 | - this.module.createLinkedNode(); | |
42 | - this.module.createObject(); | |
43 | - this.module.linkedNode.set('fileObject',this.fileObject); | |
44 | - }, | |
35 | + /* | |
36 | + * linked node should be MyDataParamNode | |
37 | + */ | |
38 | + resetLinkedNode: function() | |
39 | + { | |
40 | + this.linkedNode = null; | |
41 | + this.module.createLinkedNode(); | |
42 | + this.module.createObject(); | |
43 | + this.module.linkedNode.set('fileObject',this.fileObject); | |
44 | + }, | |
45 | 45 | |
46 | - getObjectCallback: function(result,remoteEvent) | |
47 | - { | |
48 | - var t = remoteEvent.getTransaction(); | |
49 | - if (result && !result.error) { | |
50 | - //this.tmpNode.set('contextNode',mask!!! if exists | |
51 | - this.fileObject = Ext.create('amdaModel.FileObject', result); | |
52 | - var panelConfig = this.initPanel(); | |
53 | - } | |
54 | - else { | |
55 | - // EXCEPTION : parameter not found ! | |
56 | - myDesktopApp.errorMsg(t.action + "." + t.method + " : No parameter '" | |
57 | - +this.tmpNode.get('text')+"' found!"); | |
58 | - } | |
59 | - }, | |
46 | + getObjectCallback: function(result,remoteEvent) | |
47 | + { | |
48 | + var t = remoteEvent.getTransaction(); | |
49 | + if (result && !result.error) { | |
50 | + //this.tmpNode.set('contextNode',mask!!! if exists | |
51 | + this.fileObject = Ext.create('amdaModel.FileObject', result); | |
52 | + var panelConfig = this.initPanel(); | |
53 | + } | |
54 | + else { | |
55 | + // EXCEPTION : parameter not found ! | |
56 | + myDesktopApp.errorMsg(t.action + "." + t.method + " : No parameter '" | |
57 | + +this.tmpNode.get('text')+"' found!"); | |
58 | + } | |
59 | + }, | |
60 | 60 | |
61 | - /* | |
62 | - * Update info in the form on another parameter selection (cdf, cef formats); | |
63 | - */ | |
64 | - updateInfo : function(res, e) | |
65 | - { | |
66 | - if (res.success){ | |
67 | - // info panel | |
68 | - this.items.getAt(1).update(res.info.name+': '+res.info.type+' '+res.info.size+' '+res.info.n_records); | |
69 | - var form = this.items.getAt(0).getForm(); | |
70 | - | |
71 | - //keep old name and mask if they exist | |
72 | - if (this.object.get('format') == 'vot') | |
73 | - { | |
74 | - res.info.ytitle = res.info.name; | |
75 | - if ((res.info.id === this.object.get('realvar'))) { | |
76 | - if (this.object.get('realvar') != this.object.get('name')) { | |
77 | - res.info.name = this.object.get('name'); | |
78 | - } | |
79 | - if (res.info.mask != this.object.get('mask')) { | |
80 | - res.info.mask = this.object.get('mask'); | |
81 | - } | |
82 | - } | |
83 | - } | |
84 | - else | |
85 | - { | |
86 | - if ((res.info.name === this.object.get('realvar'))) { | |
87 | - if (this.object.get('realvar') != this.object.get('name')) { | |
88 | - res.info.name = this.object.get('name'); | |
89 | - } | |
90 | - if (res.info.mask != this.object.get('mask')) { | |
91 | - res.info.mask = this.object.get('mask'); | |
92 | - } | |
93 | - } | |
94 | - res.info.ytitle = res.info.name; | |
95 | - } | |
96 | - | |
97 | - form.setValues(res.info); | |
98 | - } | |
99 | - else { | |
100 | - myDesktopApp.errorMsg("System Error <br/> Error at AMDA Server"); | |
101 | - } | |
102 | - }, | |
61 | + /* | |
62 | + * Update info in the form on another parameter selection (cdf, cef formats); | |
63 | + */ | |
64 | + updateInfo : function(res, e) | |
65 | + { | |
66 | + if (res.success){ | |
67 | + // info panel | |
68 | + this.items.getAt(1).update(res.info.name+': '+res.info.type+' '+res.info.size+' '+res.info.n_records); | |
69 | + var form = this.items.getAt(0).getForm(); | |
70 | + | |
71 | + //keep old name and mask if they exist | |
72 | + if (this.object.get('format') == 'vot') | |
73 | + { | |
74 | + res.info.ytitle = res.info.name; | |
75 | + if ((res.info.id === this.object.get('realvar'))) { | |
76 | + if (this.object.get('realvar') != this.object.get('name')) { | |
77 | + res.info.name = this.object.get('name'); | |
78 | + } | |
79 | + if (res.info.mask != this.object.get('mask')) { | |
80 | + res.info.mask = this.object.get('mask'); | |
81 | + } | |
82 | + } | |
83 | + } | |
84 | + else | |
85 | + { | |
86 | + if ((res.info.name === this.object.get('realvar'))) { | |
87 | + if (this.object.get('realvar') != this.object.get('name')) { | |
88 | + res.info.name = this.object.get('name'); | |
89 | + } | |
90 | + if (res.info.mask != this.object.get('mask')) { | |
91 | + res.info.mask = this.object.get('mask'); | |
92 | + } | |
93 | + } | |
94 | + res.info.ytitle = res.info.name; | |
95 | + } | |
96 | + | |
97 | + form.setValues(res.info); | |
98 | + } | |
99 | + else { | |
100 | + myDesktopApp.errorMsg("System Error <br/> Error at AMDA Server"); | |
101 | + } | |
102 | + }, | |
103 | 103 | |
104 | - /* | |
105 | - * Check if changes were made before closing window | |
106 | - * @return false | |
107 | - */ | |
108 | - fclose : function() { | |
109 | - return false; | |
110 | - }, | |
104 | + /* | |
105 | + * Check if changes were made before closing window | |
106 | + * @return false | |
107 | + */ | |
108 | + fclose : function() { | |
109 | + return false; | |
110 | + }, | |
111 | 111 | |
112 | - /** | |
113 | - * set object into form | |
114 | - */ | |
115 | - setObject : function (object) | |
116 | - { | |
117 | - // edit in module from FileUpload Module and ExplorerModule (edit param) | |
118 | - if (this.module.linkedNode) { | |
119 | - if (this.module.linkedNode.get('fileObject')) { | |
120 | - this.fileObject = this.module.linkedNode.get('fileObject'); | |
121 | - } | |
122 | - // edit in module from Explorer Module (edit file) | |
123 | - else if (this.module.linkedNode.get('object')) { | |
124 | - this.fileObject = this.module.linkedNode.get('object'); | |
125 | - this.resetLinkedNode(); | |
126 | - } | |
127 | - else { | |
128 | - myDesktopApp.errorMsg("System Error <br/> No FileObject and Object"); | |
129 | - } | |
130 | - } | |
131 | - else { | |
132 | - myDesktopApp.errorMsg("System Error <br/> No Linked Node"); | |
133 | - } | |
134 | - | |
135 | - var form = this.down('form'); | |
136 | - form.getForm().reset(); | |
137 | - // remove and DESTROY right panel if it exists | |
138 | - if (form.items.length == 2) | |
139 | - form.remove(form.items.getAt(1),true); | |
140 | - // create right panel depending on file | |
141 | - var rightPanel = this.initPanel(); | |
142 | - form.add(rightPanel); | |
143 | - this.object = this.module.linkedNode.get('object'); | |
112 | + /** | |
113 | + * set object into form | |
114 | + */ | |
115 | + setObject : function (object) | |
116 | + { | |
117 | + // edit in module from FileUpload Module and ExplorerModule (edit param) | |
118 | + if (this.module.linkedNode) { | |
119 | + if (this.module.linkedNode.get('fileObject')) { | |
120 | + this.fileObject = this.module.linkedNode.get('fileObject'); | |
121 | + } | |
122 | + // edit in module from Explorer Module (edit file) | |
123 | + else if (this.module.linkedNode.get('object')) { | |
124 | + this.fileObject = this.module.linkedNode.get('object'); | |
125 | + this.resetLinkedNode(); | |
126 | + } | |
127 | + else { | |
128 | + myDesktopApp.errorMsg("System Error <br/> No FileObject and Object"); | |
129 | + } | |
130 | + } | |
131 | + else { | |
132 | + myDesktopApp.errorMsg("System Error <br/> No Linked Node"); | |
133 | + } | |
134 | + | |
135 | + var form = this.down('form'); | |
136 | + form.getForm().reset(); | |
137 | + // remove and DESTROY right panel if it exists | |
138 | + if (form.items.length == 2) | |
139 | + form.remove(form.items.getAt(1),true); | |
140 | + // create right panel depending on file | |
141 | + var rightPanel = this.initPanel(); | |
142 | + form.add(rightPanel); | |
143 | + this.object = this.module.linkedNode.get('object'); | |
144 | 144 | |
145 | - // load object into form | |
146 | - if (object.$className == 'amdaModel.FileObject' || !this.object.get('name')) | |
147 | - form.getForm().loadRecord(this.fileObject); | |
148 | - else | |
149 | - form.getForm().loadRecord(this.object); | |
145 | + // load object into form | |
146 | + if (object.$className == 'amdaModel.FileObject' || !this.object.get('name')) { | |
147 | + form.getForm().loadRecord(this.fileObject); | |
148 | + if (this.fileObject.get('format') == 'txt') | |
149 | + this.disablePredefined(false); | |
150 | + else | |
151 | + this.disablePredefined(true); | |
152 | + } | |
153 | + else | |
154 | + form.getForm().loadRecord(this.object); | |
150 | 155 | |
151 | - // if it is not newly created empty myParamData node | |
152 | - if (this.object.get('name')) { | |
153 | - // file panel work around | |
154 | - if (this.fileObject.get('format') == 'txt') { | |
155 | - form.getForm().findField('start').setValue(this.object.get('realvar')); | |
156 | - } | |
157 | - else if (this.object.get('format') == 'vot') | |
158 | - { | |
159 | - var radio = this.down('radiogroup'); | |
160 | - radio.setValue({'votvar' : this.object.get('realvar')}); | |
161 | - } | |
162 | - else { // cdf, cef, nc | |
163 | - // select parameter | |
164 | - var radio = this.down('radiogroup'); | |
165 | - radio.setValue({'cdfvar' : this.object.get('realvar')}); | |
166 | - } | |
167 | - } | |
168 | - | |
169 | - //Set table definition | |
170 | - if (object.get('tableDef')) | |
171 | - this.getPlugin('tabledef').setTableDefinition(object.get('tableDef')); | |
172 | - }, | |
173 | - | |
174 | -/* | |
175 | - * highlight selected columns in case of param (ASCII) edit | |
176 | - */ | |
177 | - updateSelection: function() | |
178 | - { | |
179 | - var start = parseInt(this.object.get('realvar')); | |
180 | - var size = parseInt(this.object.get('size')); | |
181 | - | |
182 | - if (start && size) { | |
183 | - var columns = this.down('gridpanel').columns; | |
184 | - for (var i = start; i < start+size; i++) { | |
185 | - var selected = Ext.select(columns[i].getCellSelector(i)); | |
186 | - selected.addCls('meow'); | |
187 | - columns[i].selected = true; | |
188 | - } | |
189 | - } | |
190 | - }, | |
156 | + // if it is not newly created empty myParamData node | |
157 | + if (this.object.get('name')) { | |
158 | + // file panel work around | |
159 | + if (this.fileObject.get('format') == 'txt') { | |
160 | + form.getForm().findField('start').setValue(this.object.get('realvar')); | |
161 | + this.disablePredefined(false); | |
162 | + } | |
163 | + else if (this.object.get('format') == 'vot') | |
164 | + { | |
165 | + var radio = this.down('radiogroup'); | |
166 | + radio.setValue({'votvar' : this.object.get('realvar')}); | |
167 | + } | |
168 | + else { // cdf, cef, nc | |
169 | + // select parameter | |
170 | + var radio = this.down('radiogroup'); | |
171 | + radio.setValue({'cdfvar' : this.object.get('realvar')}); | |
172 | + // disable form fields defined in file | |
173 | + this.disablePredefined(true); | |
174 | + } | |
175 | + } | |
176 | + | |
177 | + //Set table definition | |
178 | + if (object.get('tableDef')) | |
179 | + this.getPlugin('tabledef').setTableDefinition(object.get('tableDef')); | |
180 | + }, | |
191 | 181 | |
192 | - /* | |
193 | - * update this.object from form | |
194 | - */ | |
195 | - updateObject : function(nameField) | |
196 | - { | |
197 | - // get the basic form | |
198 | - var basicForm = this.down('form').getForm(); | |
199 | - var updateStatus = true; | |
200 | - var fieldsWithoutName = basicForm.getFields().items; | |
201 | - | |
202 | - Ext.Array.each(fieldsWithoutName, function(item, index,allItems){ | |
203 | - if(item !== nameField) { | |
204 | - if (!item.isValid()) { | |
205 | - // set update isn't allowed | |
206 | - updateStatus = false; | |
207 | - } | |
208 | - } | |
209 | - }, this); | |
210 | - | |
211 | - // if the update is allowed | |
212 | - if (updateStatus) { | |
213 | - // real object update | |
214 | - // updateobject with the content of form | |
215 | - var values = basicForm.getValues(); | |
216 | - basicForm.updateRecord(this.object); | |
217 | - this.object.set('file',this.fileObject.get('fileName')); | |
218 | - this.object.set('format', this.fileObject.get('format')); | |
219 | - if (this.object.get('format') == 'cdf' || this.object.get('format') == 'cef' || this.object.get('format') == 'nc') this.object.set('realvar',values.cdfvar); | |
220 | - if (this.object.get('format') == 'vot') this.object.set('realvar',values.votvar); | |
221 | - if (this.object.get('format') == 'txt') this.object.set('realvar',values.start); | |
222 | - this.object.set('tableDef', this.getPlugin('tabledef').getTableDefinitionObject()); | |
223 | - } | |
224 | - // return the update status | |
225 | - return updateStatus; | |
226 | - }, | |
182 | + /* | |
183 | + * // disable form fields defined in file ( cdf, nc, cef ) | |
184 | + */ | |
185 | + disablePredefined: function(disable) | |
186 | + { | |
187 | + var form = this.down('form'); | |
188 | + form.getForm().findField('start').setDisabled(disable); | |
189 | + form.getForm().findField('size').setDisabled(disable); | |
190 | + this.down('combobox').setDisabled(disable); | |
191 | + }, | |
192 | + | |
193 | + /* | |
194 | + * highlight selected columns in case of param (ASCII) edit | |
195 | + */ | |
196 | + updateSelection: function() | |
197 | + { | |
198 | + var start = parseInt(this.object.get('realvar')); | |
199 | + var size = parseInt(this.object.get('size')); | |
200 | + | |
201 | + if (start && size) { | |
202 | + var columns = this.down('gridpanel').columns; | |
203 | + for (var i = start; i < start+size; i++) { | |
204 | + var selected = Ext.select(columns[i].getCellSelector(i)); | |
205 | + selected.addCls('meow'); | |
206 | + columns[i].selected = true; | |
207 | + } | |
208 | + } | |
209 | + }, | |
210 | + | |
211 | + /* | |
212 | + * update this.object from form | |
213 | + */ | |
214 | + updateObject : function(nameField) | |
215 | + { | |
216 | + // get the basic form | |
217 | + var basicForm = this.down('form').getForm(); | |
218 | + var updateStatus = true; | |
219 | + var fieldsWithoutName = basicForm.getFields().items; | |
220 | + | |
221 | + Ext.Array.each(fieldsWithoutName, function(item, index,allItems){ | |
222 | + if(item !== nameField) { | |
223 | + if (!item.isValid()) { | |
224 | + // set update isn't allowed | |
225 | + updateStatus = false; | |
226 | + } | |
227 | + } | |
228 | + }, this); | |
229 | + | |
230 | + // if the update is allowed | |
231 | + if (updateStatus) { | |
232 | + // real object update | |
233 | + // updateobject with the content of form | |
234 | + var values = basicForm.getValues(); | |
235 | + basicForm.updateRecord(this.object); | |
236 | + this.object.set('file',this.fileObject.get('fileName')); | |
237 | + this.object.set('format', this.fileObject.get('format')); | |
238 | + if (this.object.get('format') == 'cdf' || this.object.get('format') == 'cef' || this.object.get('format') == 'nc') this.object.set('realvar',values.cdfvar); | |
239 | + if (this.object.get('format') == 'vot') this.object.set('realvar',values.votvar); | |
240 | + if (this.object.get('format') == 'txt') this.object.set('realvar',values.start); | |
241 | + this.object.set('tableDef', this.getPlugin('tabledef').getTableDefinitionObject()); | |
242 | + } | |
243 | + // return the update status | |
244 | + return updateStatus; | |
245 | + }, | |
227 | 246 | |
228 | - /** | |
229 | - * Check mask - length, existed.... | |
230 | - * @return true/false | |
231 | - */ | |
232 | - validateMask : function(value) | |
233 | - { | |
234 | - // length | |
235 | - if (value.length < 6) return 'mask length is too small (< 6)'; | |
236 | - | |
237 | - // first * | |
238 | - if (value.indexOf('*') === 0) return '"*" could not be the first letter in mask'; | |
239 | - | |
240 | - // several * | |
241 | - if (value.indexOf('*') !== value.lastIndexOf('*')) return 'several "*" are not allowed in mask'; | |
242 | - | |
243 | - // less common | |
244 | - var paramModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.my_data.id); | |
245 | - var oldmask = paramModule.linkedNode.get('object').get('mask'); | |
246 | - // no old mask | |
247 | - if (oldmask.length === 0) return true; | |
248 | - if (value.length > oldmask.length) return 'new mask is less common than old one'; | |
249 | - | |
250 | - return true; | |
251 | - }, | |
247 | + /** | |
248 | + * Check mask - length, existed.... | |
249 | + * @return true/false | |
250 | + */ | |
251 | + validateMask : function(value) | |
252 | + { | |
253 | + // length | |
254 | + if (value.length < 6) return 'mask length is too small (< 6)'; | |
252 | 255 | |
253 | - /* | |
254 | - * | |
255 | - */ | |
256 | - saveProcess : function(toRename) | |
257 | - { | |
258 | - var values = this.down('form').getForm().getValues(); | |
259 | - // Parameter Module | |
260 | - var paramModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.my_data.id); | |
261 | - | |
262 | - // if the name has been modified this is a creation | |
263 | - if (this.object.isModified('name')){ | |
264 | - var contextNode = paramModule.linkedNode.parentNode; | |
265 | - // if object already has an id : it's a 'rename' of an existing | |
266 | - if (this.object.get('id')){ | |
267 | - // get file object of the first node linked this file | |
268 | - var fileObject = paramModule.linkedNode.get('fileObject'); | |
269 | - | |
270 | - paramModule.createLinkedNode(); | |
271 | - // create a new object linked | |
272 | - var paramobj = Ext.create(paramModule.linkedNode.get('objectDataModel'), values); | |
273 | - | |
274 | - paramobj.set('format', this.fileObject.get('format')); | |
275 | - if (paramobj.get('format') == 'cdf' || paramobj.get('format') == 'cef' || | |
276 | - paramobj.get('format') == 'nc') | |
277 | - paramobj.set('realvar',values.cdfvar); | |
278 | - if (paramobj.get('format') == 'vot') | |
279 | - paramobj.set('realvar',values.votvar); | |
280 | - if (paramobj.get('format') == 'txt') | |
281 | - paramobj.set('realvar',values.start); | |
282 | - | |
283 | - paramobj.set('file', this.fileObject.get('fileName')); | |
284 | - | |
285 | - paramobj.set('tableDef', this.getPlugin('tabledef').getTableDefinitionObject()); | |
286 | - | |
287 | - paramModule.linkedNode.set('object',paramobj); | |
288 | - //synchronize objects | |
289 | - this.object = paramobj; | |
290 | - | |
291 | - paramModule.linkedNode.set('fileObject',fileObject); | |
292 | - | |
293 | - if (toRename) | |
294 | - paramModule.linkedNode.toRename = true; | |
295 | - } | |
296 | - paramModule.linkedNode.set('contextNode',contextNode); | |
297 | - paramModule.linkedNode.create(); | |
298 | - | |
299 | - paramModule.linkedNode.set('isParameter', true); | |
300 | - | |
301 | - if (values.size == 1) { | |
302 | - paramModule.linkedNode.set('iconCls', 'icon-scalar'); | |
303 | - paramModule.linkedNode.set('isSpectra', false); | |
304 | - } | |
305 | - else { | |
306 | - if (values.plottype == 'Spectra') { | |
307 | - paramModule.linkedNode.set('isSpectra', true); | |
308 | - paramModule.linkedNode.set('iconCls', 'icon-spectra'); | |
309 | - } | |
310 | - else { | |
311 | - paramModule.linkedNode.set('iconCls', 'icon-unknowntype'); | |
312 | - paramModule.linkedNode.set('isSpectra', false); | |
313 | - } | |
314 | - } | |
315 | - | |
316 | - } else { | |
317 | - paramModule.linkedNode.set('contextNode',paramModule.contextNode); | |
318 | - paramModule.linkedNode.update(); | |
319 | - } | |
320 | - }, | |
256 | + // first * | |
257 | + if (value.indexOf('*') === 0) return '"*" could not be the first letter in mask'; | |
258 | + | |
259 | + // several * | |
260 | + if (value.indexOf('*') !== value.lastIndexOf('*')) return 'several "*" are not allowed in mask'; | |
261 | + | |
262 | + // less common | |
263 | + var paramModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.my_data.id); | |
264 | + var oldmask = paramModule.linkedNode.get('object').get('mask'); | |
265 | + // no old mask | |
266 | + if (oldmask.length === 0) return true; | |
267 | + if (value.length > oldmask.length) return 'new mask is less common than old one'; | |
268 | + | |
269 | + return true; | |
270 | + }, | |
271 | + | |
272 | + /* | |
273 | + * save parameter | |
274 | + */ | |
275 | + saveProcess : function(toRename) | |
276 | + { | |
277 | + var values = this.down('form').getForm().getValues(); | |
278 | + // Parameter Module | |
279 | + var paramModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.my_data.id); | |
280 | + | |
281 | + // if the name has been modified this is a creation | |
282 | + if (this.object.isModified('name')) | |
283 | + { | |
284 | + var contextNode = paramModule.linkedNode.parentNode; | |
285 | + // if object already has an id : it's a 'rename' of an existing | |
286 | + if (this.object.get('id')) | |
287 | + { | |
288 | + // get file object of the first node linked this file | |
289 | + var fileObject = paramModule.linkedNode.get('fileObject'); | |
290 | + | |
291 | + paramModule.createLinkedNode(); | |
292 | + // create a new object linked | |
293 | + var paramobj = Ext.create(paramModule.linkedNode.get('objectDataModel'), values); | |
294 | + | |
295 | + paramobj.set('format', this.fileObject.get('format')); | |
296 | + if (paramobj.get('format') == 'cdf' || paramobj.get('format') == 'cef' || | |
297 | + paramobj.get('format') == 'nc') | |
298 | + paramobj.set('realvar',values.cdfvar); | |
299 | + if (paramobj.get('format') == 'vot') | |
300 | + paramobj.set('realvar',values.votvar); | |
301 | + if (paramobj.get('format') == 'txt') | |
302 | + paramobj.set('realvar',values.start); | |
303 | + | |
304 | + paramobj.set('file', this.fileObject.get('fileName')); | |
305 | + | |
306 | + paramobj.set('tableDef', this.getPlugin('tabledef').getTableDefinitionObject()); | |
307 | + | |
308 | + paramModule.linkedNode.set('object',paramobj); | |
309 | + //synchronize objects | |
310 | + this.object = paramobj; | |
311 | + | |
312 | + paramModule.linkedNode.set('fileObject',fileObject); | |
313 | + | |
314 | + if (toRename) | |
315 | + paramModule.linkedNode.toRename = true; | |
316 | + } | |
317 | + paramModule.linkedNode.set('contextNode',contextNode); | |
318 | + paramModule.linkedNode.create(); | |
319 | + | |
320 | + paramModule.linkedNode.set('isParameter', true); | |
321 | + | |
322 | + if (values.size == 1) { | |
323 | + paramModule.linkedNode.set('iconCls', 'icon-scalar'); | |
324 | + paramModule.linkedNode.set('isSpectra', false); | |
325 | + } | |
326 | + else { | |
327 | + if (values.plottype == 'Spectra') { | |
328 | + paramModule.linkedNode.set('isSpectra', true); | |
329 | + paramModule.linkedNode.set('iconCls', 'icon-spectra'); | |
330 | + } | |
331 | + else { | |
332 | + paramModule.linkedNode.set('iconCls', 'icon-unknowntype'); | |
333 | + paramModule.linkedNode.set('isSpectra', false); | |
334 | + } | |
335 | + } | |
336 | + } else { | |
337 | + paramModule.linkedNode.set('contextNode',paramModule.contextNode); | |
338 | + paramModule.linkedNode.update(); | |
339 | + } | |
340 | + }, | |
321 | 341 | |
322 | - /* | |
323 | - * overwrite method called by Save button | |
324 | - */ | |
325 | - overwriteProcess : function(btn){ | |
326 | - if (btn == 'cancel') return; | |
327 | - var basicForm = this.down('form').getForm(); | |
328 | - basicForm.clearInvalid(); | |
329 | - this.saveProcess(true); | |
330 | - }, | |
331 | - | |
332 | - updateForm : function() { | |
333 | - var basicForm = this.down('form').getForm(); | |
334 | - var columns = this.down('gridpanel').columns; | |
335 | - | |
336 | - var start; | |
337 | - var size = 0; | |
338 | - Ext.Array.each(columns, function(column,index){ | |
339 | - if (!start && column.selected) start = index; | |
340 | - if (column.selected) size += 1; | |
341 | - }); | |
342 | - | |
343 | - basicForm.setValues({start: start, size : size}); | |
344 | - }, | |
342 | + /* | |
343 | + * overwrite method called by Save button | |
344 | + */ | |
345 | + overwriteProcess : function(btn){ | |
346 | + if (btn == 'cancel') return; | |
347 | + var basicForm = this.down('form').getForm(); | |
348 | + basicForm.clearInvalid(); | |
349 | + this.saveProcess(true); | |
350 | + }, | |
351 | + | |
352 | + updateForm : function() { | |
353 | + var basicForm = this.down('form').getForm(); | |
354 | + var columns = this.down('gridpanel').columns; | |
355 | + | |
356 | + var start; | |
357 | + var size = 0; | |
358 | + Ext.Array.each(columns, function(column,index){ | |
359 | + if (!start && column.selected) start = index; | |
360 | + if (column.selected) size += 1; | |
361 | + }); | |
362 | + | |
363 | + basicForm.setValues({start: start, size : size}); | |
364 | + }, | |
345 | 365 | |
346 | - /* | |
347 | - * Configurations | |
348 | - * | |
349 | - */ | |
350 | - initPanel : function() | |
351 | - { | |
352 | - var format = this.fileObject.get('format'); | |
353 | - if (format == 'cdf' || format == 'cef' || format == 'nc') return this.cdfPanel(format); | |
354 | - if (format == 'txt') return this.txtPanel(); | |
355 | - if (format == 'vot') return this.votPanel(); | |
356 | - }, | |
366 | + /* | |
367 | + * Configurations | |
368 | + * | |
369 | + */ | |
370 | + initPanel : function() | |
371 | + { | |
372 | + var format = this.fileObject.get('format'); | |
373 | + if (format == 'cdf' || format == 'cef' || format == 'nc') return this.cdfPanel(format); | |
374 | + if (format == 'txt') return this.txtPanel(); | |
375 | + if (format == 'vot') return this.votPanel(); | |
376 | + }, | |
377 | + | |
378 | + txtPanel: function() | |
379 | + { | |
380 | + var fileName = this.fileObject.get('fileName'); | |
357 | 381 | |
358 | - txtPanel: function() | |
359 | - { | |
360 | - var fileName = this.fileObject.get('fileName'); | |
361 | - | |
362 | - //FOR INFO | |
363 | - // Null out built in convert functions for performance *because the raw data is known to be valid* | |
364 | - // Specifying defaultValue as undefined will also save code. | |
365 | - // As long as there will always be values in the data, or the app tolerates undefined field values* | |
366 | - | |
367 | - // Dynamically created fields and columns | |
368 | - var n_col = this.fileObject.get('vars'); | |
369 | - // reset | |
370 | - this.fields = []; | |
371 | - this.columns = []; | |
382 | + //FOR INFO | |
383 | + // Null out built in convert functions for performance *because the raw data is known to be valid* | |
384 | + // Specifying defaultValue as undefined will also save code. | |
385 | + // As long as there will always be values in the data, or the app tolerates undefined field values* | |
386 | + | |
387 | + // Dynamically created fields and columns | |
388 | + var n_col = this.fileObject.get('vars'); | |
389 | + // reset | |
390 | + this.fields = []; | |
391 | + this.columns = []; | |
372 | 392 | |
373 | - for (var i = 0; i < n_col; i++){ | |
374 | - var name = i === 0 ? 'Time' : 'n'+i; | |
375 | - //TODO width dependent on data? | |
376 | - var width = i === 0 ? 120 : 75; | |
377 | - | |
378 | - this.fields[i] = { name: name }; | |
379 | - this.columns[i] = { text: name, sortable : false, dataIndex: name, width : width, | |
380 | - menuDisabled: true, selected : false, | |
381 | - listeners: { | |
382 | - scope : this, | |
383 | - headerclick: function(ct, column){ | |
384 | - if (column.text != 'Time') { | |
385 | - var selected = Ext.select(column.getCellSelector(1)); | |
386 | - if (column.selected) { | |
387 | - selected.removeCls('meow'); | |
388 | - column.selected = false; | |
389 | - } | |
390 | - else { | |
391 | - selected.addCls('meow'); | |
392 | - column.selected = true; | |
393 | - } | |
394 | - this.updateForm(); | |
395 | - } | |
396 | - } | |
397 | - } | |
398 | - }; | |
399 | - } | |
400 | - | |
401 | - // Dynamically created model | |
402 | - Ext.define('myData', { | |
403 | - extend: 'Ext.data.Model', | |
404 | - fields: this.fields, | |
405 | - idProperty: 'Time' | |
406 | - }); | |
407 | - | |
408 | - var store = Ext.create('Ext.data.ArrayStore', { | |
409 | - model: 'myData', | |
410 | - autoLoad: true, | |
411 | - proxy: { | |
412 | - type: 'direct', | |
413 | - directFn: AmdaAction.getAsciiFile | |
414 | - }, | |
415 | - listeners: { | |
416 | - scope: this, | |
417 | - beforeload: function(store){ | |
418 | - store.proxy.extraParams = { | |
419 | - fileName: this.fileObject.get('fileName') | |
420 | - }; | |
421 | - }, | |
422 | - load: function(store, records, successful, eOpts) { | |
423 | - this.updateSelection(); | |
424 | - } | |
425 | - } | |
426 | - }); | |
393 | + for (var i = 0; i < n_col; i++) | |
394 | + { | |
395 | + var name = i === 0 ? 'Time' : 'n'+i; | |
396 | + //TODO width dependent on data? | |
397 | + var width = i === 0 ? 120 : 75; | |
398 | + | |
399 | + this.fields[i] = { name: name }; | |
400 | + this.columns[i] = { text: name, sortable : false, dataIndex: name, width : width, | |
401 | + menuDisabled: true, selected : false, | |
402 | + listeners: | |
403 | + { | |
404 | + scope : this, | |
405 | + headerclick: function(ct, column) | |
406 | + { | |
407 | + if (column.text != 'Time') { | |
408 | + var selected = Ext.select(column.getCellSelector(1)); | |
409 | + if (column.selected) { | |
410 | + selected.removeCls('meow'); | |
411 | + column.selected = false; | |
412 | + } | |
413 | + else { | |
414 | + selected.addCls('meow'); | |
415 | + column.selected = true; | |
416 | + } | |
417 | + this.updateForm(); | |
418 | + } | |
419 | + } | |
420 | + } | |
421 | + }; | |
422 | + } | |
423 | + | |
424 | + // Dynamically created model | |
425 | + Ext.define('myData', { | |
426 | + extend: 'Ext.data.Model', | |
427 | + fields: this.fields, | |
428 | + idProperty: 'Time' | |
429 | + }); | |
430 | + | |
431 | + var store = Ext.create('Ext.data.ArrayStore', { | |
432 | + model: 'myData', | |
433 | + autoLoad: true, | |
434 | + proxy: { | |
435 | + type: 'direct', | |
436 | + directFn: AmdaAction.getAsciiFile | |
437 | + }, | |
438 | + listeners: { | |
439 | + scope: this, | |
440 | + beforeload: function(store){ | |
441 | + store.proxy.extraParams = { | |
442 | + fileName: this.fileObject.get('fileName') | |
443 | + }; | |
444 | + }, | |
445 | + load: function(store, records, successful, eOpts) { | |
446 | + this.updateSelection(); | |
447 | + } | |
448 | + } | |
449 | + }); | |
427 | 450 | |
428 | - // Dynamically created columns dependent of myData model | |
429 | - var panelConfig = { | |
430 | - xtype : 'gridpanel', | |
431 | - store : store, | |
432 | - title : fileName, | |
433 | - height: '100%', | |
434 | - flex : 2, | |
435 | - columnLines: true, | |
436 | - columns: this.columns, | |
437 | - listeners: { | |
438 | - scope : this, | |
439 | - cellclick: function(view,td,cellIndex,record,tr,rowIndex,e){ | |
440 | - var column = view.getGridColumns()[cellIndex]; | |
441 | - if (cellIndex > 0) { | |
442 | - var selected = Ext.select(column.getCellSelector(cellIndex)); | |
443 | - if (column.selected) { | |
444 | - selected.removeCls('meow'); | |
445 | - column.selected = false; | |
446 | - } | |
447 | - else { | |
448 | - selected.addCls('meow'); | |
449 | - column.selected = true; | |
450 | - } | |
451 | - this.updateForm(); | |
452 | - } | |
453 | - }, | |
454 | - select: function(selmodel, record, index, e) { | |
455 | - selmodel.deselectAll(); | |
456 | - } | |
457 | - } | |
458 | - }; | |
451 | + // Dynamically created columns dependent of myData model | |
452 | + var panelConfig = { | |
453 | + xtype : 'gridpanel', | |
454 | + store : store, | |
455 | + title : fileName, | |
456 | + height: '100%', | |
457 | + flex : 2, | |
458 | + columnLines: true, | |
459 | + columns: this.columns, | |
460 | + listeners: | |
461 | + { | |
462 | + scope : this, | |
463 | + cellclick: function(view,td,cellIndex,record,tr,rowIndex,e) | |
464 | + { | |
465 | + var column = view.getGridColumns()[cellIndex]; | |
466 | + if (cellIndex > 0) { | |
467 | + var selected = Ext.select(column.getCellSelector(cellIndex)); | |
468 | + if (column.selected) { | |
469 | + selected.removeCls('meow'); | |
470 | + column.selected = false; | |
471 | + } | |
472 | + else { | |
473 | + selected.addCls('meow'); | |
474 | + column.selected = true; | |
475 | + } | |
476 | + this.updateForm(); | |
477 | + } | |
478 | + }, | |
479 | + select: function(selmodel, record, index, e) { | |
480 | + selmodel.deselectAll(); | |
481 | + } | |
482 | + } | |
483 | + }; | |
459 | 484 | |
460 | - return panelConfig; | |
461 | - }, | |
485 | + return panelConfig; | |
486 | + }, | |
462 | 487 | |
463 | - cdfPanel : function(format) { | |
464 | - | |
465 | - var vars = this.fileObject.get('vars'); | |
466 | - var fileName = this.fileObject.get('fileName'); | |
467 | - var items = []; | |
468 | - Ext.Array.each(vars, function(name, index) { | |
469 | - if (name) { | |
470 | - items[index] = { boxLabel: name, name: 'cdfvar', inputValue: name, | |
471 | - listeners: { | |
472 | - scope: this, | |
473 | - change: function (cb, nv, ov) { | |
474 | - if (nv) { | |
475 | - AmdaAction.getMyParamInfo({format: format, file : fileName, varName : cb.inputValue}, | |
476 | - this.updateInfo, this); | |
477 | - } | |
478 | - } | |
479 | - } | |
480 | - } | |
481 | - } | |
482 | - }, this); | |
488 | + cdfPanel : function(format) | |
489 | + { | |
490 | + var vars = this.fileObject.get('vars'); | |
491 | + var fileName = this.fileObject.get('fileName'); | |
492 | + var items = []; | |
493 | + Ext.Array.each(vars, function(name, index) { | |
494 | + if (name) { | |
495 | + items[index] = { boxLabel: name, name: 'cdfvar', inputValue: name, | |
496 | + listeners: | |
497 | + { | |
498 | + scope: this, | |
499 | + change: function (cb, nv, ov) { | |
500 | + if (nv) { | |
501 | + AmdaAction.getMyParamInfo({format: format, file : fileName, varName : cb.inputValue}, | |
502 | + this.updateInfo, this); | |
503 | + } | |
504 | + } | |
505 | + } | |
506 | + } | |
507 | + } | |
508 | + }, this); | |
483 | 509 | |
484 | 510 | var panelConfig = { |
485 | 511 | xtype : 'fieldset', |
... | ... | @@ -500,32 +526,33 @@ Ext.define('amdaUI.MyDataUI', { |
500 | 526 | return panelConfig; |
501 | 527 | }, |
502 | 528 | |
503 | - votPanel : function() | |
504 | - { | |
505 | - var vars = this.fileObject.get('vars'); | |
506 | - var fileName = this.fileObject.get('fileName'); | |
507 | - | |
508 | - var items = []; | |
509 | - | |
510 | - if (this.fileObject.get('foundTime')) | |
511 | - { | |
512 | - Ext.Array.each(vars, function(obj, index) { | |
513 | - items[index] = { boxLabel: obj.name, name: 'votvar', inputValue: obj.id, | |
514 | - listeners: { | |
515 | - scope: this, | |
516 | - change: function (cb, nv, ov) { | |
517 | - if (nv) { | |
518 | - AmdaAction.getMyParamInfo({format: 'vot', file : fileName, varName : cb.inputValue}, | |
519 | - this.updateInfo, this); | |
520 | - } | |
521 | - } | |
522 | - } | |
523 | - }; | |
524 | - }, this); | |
525 | - } | |
526 | - else | |
527 | - myDesktopApp.errorMsg("Cannot find a valid time field!"); | |
528 | - | |
529 | + votPanel : function() | |
530 | + { | |
531 | + var vars = this.fileObject.get('vars'); | |
532 | + var fileName = this.fileObject.get('fileName'); | |
533 | + | |
534 | + var items = []; | |
535 | + | |
536 | + if (this.fileObject.get('foundTime')) | |
537 | + { | |
538 | + Ext.Array.each(vars, function(obj, index) { | |
539 | + items[index] = { boxLabel: obj.name, name: 'votvar', inputValue: obj.id, | |
540 | + listeners: | |
541 | + { | |
542 | + scope: this, | |
543 | + change: function (cb, nv, ov) { | |
544 | + if (nv) { | |
545 | + AmdaAction.getMyParamInfo({format: 'vot', file : fileName, varName : cb.inputValue}, | |
546 | + this.updateInfo, this); | |
547 | + } | |
548 | + } | |
549 | + } | |
550 | + }; | |
551 | + }, this); | |
552 | + } | |
553 | + else | |
554 | + myDesktopApp.errorMsg("Cannot find a valid time field!"); | |
555 | + | |
529 | 556 | var panelConfig = { |
530 | 557 | xtype : 'fieldset', |
531 | 558 | bodyStyle: { background : '#dfe8f6'}, |
... | ... | @@ -557,304 +584,314 @@ Ext.define('amdaUI.MyDataUI', { |
557 | 584 | ] |
558 | 585 | }); |
559 | 586 | |
560 | - var combo = { | |
561 | - xtype: 'combo', | |
562 | - fieldLabel: 'Parameter Data Type', | |
563 | - store: store, | |
564 | - queryMode: 'local', | |
565 | - displayField: 'name', | |
566 | - valueField: 'value', | |
567 | - name: 'type', | |
568 | - editable: false, | |
569 | - value: 'FLOAT' | |
570 | - }; | |
587 | + var combo = { | |
588 | + xtype: 'combo', | |
589 | + fieldLabel: 'Parameter Data Type', | |
590 | + store: store, | |
591 | + queryMode: 'local', | |
592 | + displayField: 'name', | |
593 | + valueField: 'value', | |
594 | + name: 'type', | |
595 | + editable: false, | |
596 | + value: 'FLOAT' | |
597 | + }; | |
571 | 598 | |
572 | - var store1 = Ext.create('Ext.data.Store', { | |
573 | - fields: ['value', 'name'], | |
574 | - data : [ | |
575 | - {"value": "TimeSerie", "name":"Time Serie"}, | |
576 | - {"value": "Spectra", "name":"Spectra"} | |
577 | - ] | |
578 | - }); | |
599 | + var store1 = Ext.create('Ext.data.Store', { | |
600 | + fields: ['value', 'name'], | |
601 | + data : [ | |
602 | + {"value": "TimeSerie", "name":"Time Serie"}, | |
603 | + {"value": "Spectra", "name":"Spectra"} | |
604 | + ] | |
605 | + }); | |
579 | 606 | |
580 | - var comboPlotType = { | |
581 | - xtype: 'combo', | |
582 | - fieldLabel: 'Display Type', | |
583 | - store: store1, | |
584 | - queryMode: 'local', | |
585 | - displayField: 'name', | |
586 | - valueField: 'value', | |
587 | - name: 'plottype', | |
588 | - editable: false, | |
589 | - value: 'Time Series' | |
590 | - }; | |
591 | - | |
592 | - var notTxt = false; //this.fileObject.get('format') !== 'txt'; | |
593 | - // var maxSize = notTxt? 100 : this.columns.length - 1; | |
594 | - | |
595 | - // Parameter Form | |
596 | - var panelLeft = { | |
597 | - bodyStyle: { background : '#dfe8f6'}, | |
598 | - flex : 1, | |
599 | - defaults: { | |
600 | - xtype:'textfield', | |
601 | - validateOnChange: false, | |
602 | - validateOnBlur: false, | |
603 | - padding : '0 10 0 5', | |
604 | - inputWidth : 80 | |
605 | - }, | |
606 | - items: [ | |
607 | - { | |
608 | - id: 'mydataName', | |
609 | - fieldLabel: 'Parameter Name', | |
610 | - labelAlign: 'top', | |
611 | - name: 'name', | |
612 | - allowBlank : false, | |
613 | - stripCharsRe: /(^\s+|\s+$)/g, | |
614 | - validFlag: false, | |
615 | - validator : function() { | |
616 | - return this.validFlag; | |
617 | - }, | |
618 | - inputWidth : 180 | |
619 | - }, { | |
620 | - fieldLabel: 'File Name/Mask <img amda_clicktip="fileMask" style="vertical-align:bottom" src="js/resources/images/16x16/info_mini.png"', | |
621 | - labelAlign: 'top', | |
622 | - name: 'mask', | |
623 | - inputWidth : 180, | |
624 | - validator : this.validateMask | |
625 | - }, combo, { | |
626 | - xtype:'numberfield', | |
627 | - fieldLabel: 'Parameter Start Position', | |
628 | - name: 'start', | |
629 | - disabled: notTxt, | |
630 | - minValue : 1, | |
631 | - // maxValue : maxSize, | |
632 | - listeners : { | |
633 | - scope : this, | |
634 | - change : function(field, newValue, oldValue){ | |
635 | - var grid = this.down('gridpanel'); | |
636 | - if (!grid) return; | |
637 | - if (newValue && newValue != oldValue) { | |
638 | - var size = field.prev().value; | |
639 | - var columns = grid.columns; | |
640 | - Ext.Array.each(columns, function(column,index){ | |
641 | - var selected = Ext.select(column.getCellSelector(index)); | |
642 | - if (index < newValue){ | |
643 | - if (column.selected) { | |
644 | - selected.removeCls('meow'); | |
645 | - column.selected = false; | |
646 | - } | |
647 | - } | |
648 | - else if (index == newValue) { | |
649 | - if (!column.selected) { | |
650 | - selected.addCls('meow'); | |
651 | - column.selected = true; | |
652 | - } | |
653 | - } | |
654 | - else { | |
655 | - if (column.selected) { | |
656 | - selected.removeCls('meow'); | |
657 | - column.selected = false; | |
658 | - } | |
659 | - } | |
660 | - }); | |
661 | - } | |
662 | - } | |
663 | - } | |
664 | - }, { | |
665 | - xtype:'numberfield', | |
666 | - fieldLabel: 'Parameter Size', | |
667 | - name: 'size', | |
668 | - minValue: 1, | |
669 | - // maxValue : maxSize, | |
670 | - disabled: notTxt, | |
671 | - listeners : { | |
672 | - scope : this, | |
673 | - change : function(field, newValue, oldValue){ | |
674 | - var grid = this.down('gridpanel'); | |
675 | - if (!grid) return; | |
676 | - var start = field.prev().value; | |
677 | - var columns = grid.columns; | |
678 | - Ext.Array.each(columns, function(column,index){ | |
679 | - var selected = Ext.select(column.getCellSelector(index)); | |
680 | - if (index <= start) {} | |
681 | - else if (index - start < newValue) { | |
682 | - if (!column.selected){ | |
683 | - selected.addCls('meow'); | |
684 | - column.selected = true; | |
685 | - } | |
686 | - } | |
687 | - else { | |
688 | - if (column.selected){ | |
689 | - selected.removeCls('meow'); | |
690 | - column.selected = false; | |
691 | - } | |
692 | - } | |
693 | - }); | |
694 | - } | |
695 | - } | |
696 | - }, { | |
697 | - xtype:'numberfield', | |
698 | - fieldLabel: 'Min Sampling', | |
699 | - name: 'minsampling'//, | |
700 | - // disabled: notTxt | |
701 | - },{ | |
702 | - xtype:'numberfield', | |
703 | - fieldLabel: 'Max Sampling', | |
704 | - name: 'maxsampling'//, | |
705 | - // disabled: notTxt | |
706 | - },{ | |
707 | - fieldLabel: 'Filling Value', | |
708 | - name: 'fillvalue' | |
709 | - },{ | |
710 | - fieldLabel: 'Units', | |
711 | - name: 'units' | |
712 | - }, comboPlotType, { | |
713 | - fieldLabel: 'Y Title', | |
714 | - name: 'ytitle' | |
715 | - },{ | |
716 | - fieldLabel: 'Legend', | |
717 | - name: 'legend' | |
718 | - } | |
719 | - ], | |
720 | - listeners: { | |
721 | - click: { | |
722 | - element: 'el', | |
723 | - fn: function(e,t) { | |
724 | - var me = t, | |
725 | - text = me.getAttribute('amda_clicktip'); | |
726 | - if (text) { | |
727 | - e.preventDefault(); | |
728 | - AmdaAction.getInfo({name : text}, function(res,e) { | |
729 | - if (res.success) myDesktopApp.infoMsg(res.result); | |
730 | - }); | |
731 | - } | |
732 | - } | |
733 | - } | |
734 | - } | |
735 | - }; | |
607 | + var comboPlotType = { | |
608 | + xtype: 'combo', | |
609 | + fieldLabel: 'Display Type', | |
610 | + store: store1, | |
611 | + queryMode: 'local', | |
612 | + displayField: 'name', | |
613 | + valueField: 'value', | |
614 | + name: 'plottype', | |
615 | + editable: false, | |
616 | + value: 'Time Series' | |
617 | + }; | |
618 | + | |
619 | + // Parameter Form | |
620 | + var panelLeft = { | |
621 | + bodyStyle: { background : '#dfe8f6'}, | |
622 | + flex : 1, | |
623 | + defaults: { | |
624 | + xtype:'textfield', | |
625 | + validateOnChange: false, | |
626 | + validateOnBlur: false, | |
627 | + padding : '0 10 0 5', | |
628 | + inputWidth : 80 | |
629 | + }, | |
630 | + items: [ | |
631 | + { | |
632 | + id: 'mydataName', | |
633 | + fieldLabel: 'Parameter Name', | |
634 | + labelAlign: 'top', | |
635 | + name: 'name', | |
636 | + allowBlank : false, | |
637 | + stripCharsRe: /(^\s+|\s+$)/g, | |
638 | + validFlag: false, | |
639 | + validator : function() { | |
640 | + return this.validFlag; | |
641 | + }, | |
642 | + inputWidth : 180 | |
643 | + }, | |
644 | + { | |
645 | + fieldLabel: 'File Name/Mask <img amda_clicktip="fileMask" style="vertical-align:bottom" src="js/resources/images/16x16/info_mini.png"', | |
646 | + labelAlign: 'top', | |
647 | + name: 'mask', | |
648 | + inputWidth : 180, | |
649 | + validator : this.validateMask | |
650 | + }, | |
651 | + combo, | |
652 | + { | |
653 | + xtype:'numberfield', | |
654 | + fieldLabel: 'Parameter Start Position', | |
655 | + name: 'start', | |
656 | + minValue : 1, | |
657 | + // maxValue : maxSize, | |
658 | + listeners : | |
659 | + { | |
660 | + scope : this, | |
661 | + change : function(field, newValue, oldValue){ | |
662 | + var grid = this.down('gridpanel'); | |
663 | + if (!grid) return; | |
664 | + if (newValue && newValue != oldValue) | |
665 | + { | |
666 | + var size = field.prev().value; | |
667 | + var columns = grid.columns; | |
668 | + Ext.Array.each(columns, function(column,index){ | |
669 | + var selected = Ext.select(column.getCellSelector(index)); | |
670 | + if (index < newValue) | |
671 | + { | |
672 | + if (column.selected) { | |
673 | + selected.removeCls('meow'); | |
674 | + column.selected = false; | |
675 | + } | |
676 | + } | |
677 | + else if (index == newValue) { | |
678 | + if (!column.selected) { | |
679 | + selected.addCls('meow'); | |
680 | + column.selected = true; | |
681 | + } | |
682 | + } | |
683 | + else { | |
684 | + if (column.selected) { | |
685 | + selected.removeCls('meow'); | |
686 | + column.selected = false; | |
687 | + } | |
688 | + } | |
689 | + }); | |
690 | + } | |
691 | + } | |
692 | + } | |
693 | + }, | |
694 | + { | |
695 | + xtype:'numberfield', | |
696 | + fieldLabel: 'Parameter Size', | |
697 | + name: 'size', | |
698 | + minValue: 1, | |
699 | + // maxValue : maxSize, | |
700 | + listeners : | |
701 | + { | |
702 | + scope : this, | |
703 | + change : function(field, newValue, oldValue){ | |
704 | + var grid = this.down('gridpanel'); | |
705 | + if (!grid) return; | |
706 | + var start = field.prev().value; | |
707 | + var columns = grid.columns; | |
708 | + Ext.Array.each(columns, function(column,index){ | |
709 | + var selected = Ext.select(column.getCellSelector(index)); | |
710 | + if (index <= start) {} | |
711 | + else if (index - start < newValue) { | |
712 | + if (!column.selected){ | |
713 | + selected.addCls('meow'); | |
714 | + column.selected = true; | |
715 | + } | |
716 | + } | |
717 | + else { | |
718 | + if (column.selected){ | |
719 | + selected.removeCls('meow'); | |
720 | + column.selected = false; | |
721 | + } | |
722 | + } | |
723 | + }); | |
724 | + } | |
725 | + } | |
726 | + }, | |
727 | + { | |
728 | + xtype:'numberfield', | |
729 | + fieldLabel: 'Min Sampling', | |
730 | + name: 'minsampling' | |
731 | + }, | |
732 | + { | |
733 | + xtype:'numberfield', | |
734 | + fieldLabel: 'Max Sampling', | |
735 | + name: 'maxsampling' | |
736 | + }, | |
737 | + { | |
738 | + fieldLabel: 'Filling Value', | |
739 | + name: 'fillvalue' | |
740 | + }, | |
741 | + { | |
742 | + fieldLabel: 'Units', | |
743 | + name: 'units' | |
744 | + }, | |
745 | + comboPlotType, | |
746 | + { | |
747 | + fieldLabel: 'Y Title', | |
748 | + name: 'ytitle' | |
749 | + }, | |
750 | + { | |
751 | + fieldLabel: 'Legend', | |
752 | + name: 'legend' | |
753 | + }], | |
754 | + listeners: | |
755 | + { | |
756 | + click: { | |
757 | + element: 'el', | |
758 | + fn: function(e,t) { | |
759 | + var me = t, | |
760 | + text = me.getAttribute('amda_clicktip'); | |
761 | + if (text) { | |
762 | + e.preventDefault(); | |
763 | + AmdaAction.getInfo({name : text}, function(res,e) { | |
764 | + if (res.success) myDesktopApp.infoMsg(res.result); | |
765 | + }); | |
766 | + } | |
767 | + } | |
768 | + } | |
769 | + } | |
770 | + }; | |
736 | 771 | |
737 | - var myConf = { | |
738 | - layout: 'border', | |
739 | - items: [ { | |
740 | - xtype : 'form', | |
741 | - bodyStyle: { background : '#dfe8f6'}, | |
742 | - layout: 'hbox', | |
743 | - region: 'center', | |
744 | - buttonAlign:'left', | |
745 | - items : [ | |
746 | - panelLeft | |
747 | - ], | |
748 | - buttons: [ | |
749 | - { | |
750 | - scope : this, | |
751 | - text: 'Show/Hide Table definition', | |
752 | - handler: function() | |
753 | - { | |
754 | - this.getPlugin('tabledef').showHide(); | |
755 | - } | |
756 | - }, | |
757 | - '->', | |
758 | - { | |
759 | - scope : this, | |
760 | - text: 'Save', | |
761 | - handler: function() | |
762 | - { | |
763 | - var form = this.down('form').getForm(); | |
764 | - // check if variable was selected | |
765 | - // cdf,... | |
766 | - var radio = this.down('radiogroup'); | |
767 | - if (radio && radio.getChecked().length == 0) { | |
768 | - myDesktopApp.warningMsg('Select variable from the file, please'); | |
769 | - return; | |
770 | - } | |
771 | - // ascii | |
772 | - if (!radio && this.columns.length > 0) { | |
773 | - if (!form.findField('start').getValue() || !form.findField('size').getValue()) { | |
774 | - myDesktopApp.warningMsg('Select column[s] from the file, please'); | |
775 | - return; | |
776 | - } | |
777 | - } | |
778 | - var nameField = form.findField('mydataName'); | |
779 | - if (this.updateObject(nameField)) | |
780 | - { | |
781 | - var myDataModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.my_data.id); | |
782 | - if (!myDataModule) | |
783 | - return; | |
784 | - var me = this; | |
785 | - myDataModule.linkedNode.isValidName(nameField.getValue(), function (res) { | |
786 | - if (!res) | |
787 | - { | |
788 | - nameField.validFlag = 'Error during object validation'; | |
789 | - myDesktopApp.errorMsg(nameField.validFlag); | |
790 | - nameField.validate(); | |
791 | - return; | |
792 | - } | |
793 | - | |
794 | - if (!res.valid) | |
795 | - { | |
796 | - if (res.error) | |
797 | - { | |
798 | - if (res.error.search('subtree') != -1) { | |
799 | - Ext.MessageBox.show({title:'Warning', | |
800 | - msg: res.error+'<br/>Do you want to overwrite it?', | |
801 | - width: 300, | |
802 | - buttons: Ext.MessageBox.OKCANCEL, | |
803 | - fn : me.overwriteProcess, | |
804 | - icon: Ext.MessageBox.WARNING, | |
805 | - scope : me | |
806 | - }); | |
807 | - nameField.validFlag = true; | |
808 | - } | |
809 | - else | |
810 | - nameField.validFlag = res.error; | |
811 | - } | |
812 | - else | |
813 | - { | |
814 | - nameField.validFlag = 'Invalid object name'; | |
815 | - myDesktopApp.errorMsg(nameField.validFlag); | |
816 | - } | |
817 | - nameField.validate(); | |
818 | - return; | |
819 | - } | |
820 | - | |
821 | - nameField.validFlag = true; | |
822 | - nameField.validate(); | |
823 | - me.saveProcess(); | |
824 | - }); | |
825 | - } | |
826 | - } | |
827 | - },{ | |
828 | - scope : this, | |
829 | - text: 'Reset', | |
830 | - handler: function(){ | |
831 | - this.down('form').getForm().reset(); | |
832 | - } | |
833 | - }] | |
834 | - },{ | |
835 | - xtype: 'panel', | |
836 | - region: 'south', | |
837 | - title: 'Information', | |
838 | - collapsible: true, | |
839 | - height: 100, | |
840 | - autoHide: false, | |
841 | - iconCls: 'icon-information', | |
842 | - bodyStyle: 'padding:5px', | |
843 | - loader: { | |
844 | - autoLoad: true, | |
845 | - url: helpDir+'myDataHOWTO' | |
846 | - } | |
847 | - } | |
848 | - ], | |
849 | - plugins: [ {ptype: 'tabledef', pluginId: 'tabledef'} ] | |
850 | - }; | |
851 | - | |
852 | - Ext.apply (this, Ext.apply(arguments, myConf)); | |
853 | - }, | |
772 | + var myConf = { | |
773 | + layout: 'border', | |
774 | + items: [ | |
775 | + { | |
776 | + xtype : 'form', | |
777 | + bodyStyle: { background : '#dfe8f6'}, | |
778 | + layout: 'hbox', | |
779 | + region: 'center', | |
780 | + buttonAlign:'left', | |
781 | + items : [ | |
782 | + panelLeft | |
783 | + ], | |
784 | + buttons: [ | |
785 | + { | |
786 | + scope : this, | |
787 | + text: 'Show/Hide Table definition', | |
788 | + handler: function() | |
789 | + { | |
790 | + this.getPlugin('tabledef').showHide(); | |
791 | + } | |
792 | + }, | |
793 | + '->', | |
794 | + { | |
795 | + scope : this, | |
796 | + text: 'Save', | |
797 | + handler: function() | |
798 | + { | |
799 | + var form = this.down('form').getForm(); | |
800 | + // check if variable was selected | |
801 | + // cdf,... | |
802 | + var radio = this.down('radiogroup'); | |
803 | + if (radio && radio.getChecked().length == 0) { | |
804 | + myDesktopApp.warningMsg('Select variable from the file, please'); | |
805 | + return; | |
806 | + } | |
807 | + // ascii | |
808 | + if (!radio && this.columns.length > 0) { | |
809 | + if (!form.findField('start').getValue() || !form.findField('size').getValue()) { | |
810 | + myDesktopApp.warningMsg('Select column[s] from the file, please'); | |
811 | + return; | |
812 | + } | |
813 | + } | |
814 | + var nameField = form.findField('mydataName'); | |
815 | + if (this.updateObject(nameField)) | |
816 | + { | |
817 | + var myDataModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.my_data.id); | |
818 | + if (!myDataModule) | |
819 | + return; | |
820 | + var me = this; | |
821 | + myDataModule.linkedNode.isValidName(nameField.getValue(), function (res) { | |
822 | + if (!res) { | |
823 | + nameField.validFlag = 'Error during object validation'; | |
824 | + myDesktopApp.errorMsg(nameField.validFlag); | |
825 | + nameField.validate(); | |
826 | + return; | |
827 | + } | |
828 | + | |
829 | + if (!res.valid) | |
830 | + { | |
831 | + if (res.error) | |
832 | + { | |
833 | + if (res.error.search('subtree') != -1) { | |
834 | + Ext.MessageBox.show({title:'Warning', | |
835 | + msg: res.error+'<br/>Do you want to overwrite it?', | |
836 | + width: 300, | |
837 | + buttons: Ext.MessageBox.OKCANCEL, | |
838 | + fn : me.overwriteProcess, | |
839 | + icon: Ext.MessageBox.WARNING, | |
840 | + scope : me | |
841 | + }); | |
842 | + nameField.validFlag = true; | |
843 | + } | |
844 | + else | |
845 | + nameField.validFlag = res.error; | |
846 | + } | |
847 | + else | |
848 | + { | |
849 | + nameField.validFlag = 'Invalid object name'; | |
850 | + myDesktopApp.errorMsg(nameField.validFlag); | |
851 | + } | |
852 | + nameField.validate(); | |
853 | + return; | |
854 | + } | |
855 | + | |
856 | + nameField.validFlag = true; | |
857 | + nameField.validate(); | |
858 | + me.saveProcess(); | |
859 | + }); | |
860 | + } | |
861 | + } | |
862 | + }, | |
863 | + { | |
864 | + scope : this, | |
865 | + text: 'Reset', | |
866 | + handler: function(){ | |
867 | + this.down('form').getForm().reset(); | |
868 | + } | |
869 | + }] | |
870 | + }, | |
871 | + { | |
872 | + xtype: 'panel', | |
873 | + region: 'south', | |
874 | + title: 'Information', | |
875 | + collapsible: true, | |
876 | + height: 100, | |
877 | + autoHide: false, | |
878 | + iconCls: 'icon-information', | |
879 | + bodyStyle: 'padding:5px', | |
880 | + loader: { | |
881 | + autoLoad: true, | |
882 | + url: helpDir+'myDataHOWTO' | |
883 | + } | |
884 | + }], | |
885 | + | |
886 | + plugins: [ {ptype: 'tabledef', pluginId: 'tabledef'} ] | |
887 | + }; | |
888 | + | |
889 | + Ext.apply (this, Ext.apply(arguments, myConf)); | |
890 | + }, | |
854 | 891 | |
855 | - getParameterSize : function() | |
856 | - { | |
857 | - var form = this.down('form').getForm(); | |
858 | - return form.findField('size').getValue(); | |
859 | - } | |
892 | + getParameterSize : function() | |
893 | + { | |
894 | + var form = this.down('form').getForm(); | |
895 | + return form.findField('size').getValue(); | |
896 | + } | |
860 | 897 | }); |
... | ... |
js/app/views/UploadPanelUI.js
... | ... | @@ -451,7 +451,7 @@ Ext.define('amdaUI.UploadPanelUI', { |
451 | 451 | { |
452 | 452 | fieldLabel : 'define max time length', |
453 | 453 | name : 'timelength', |
454 | - value: 'auto' | |
454 | + value: 'auto' | |
455 | 455 | }], |
456 | 456 | listeners : |
457 | 457 | { |
... | ... | @@ -463,42 +463,42 @@ Ext.define('amdaUI.UploadPanelUI', { |
463 | 463 | |
464 | 464 | var timeFormat = Ext.create('Ext.form.FieldSet', { |
465 | 465 | id: timeFormatId, |
466 | - title: 'Time Settings', | |
466 | + title: 'Time Settings', | |
467 | 467 | hidden : !this.isFile, |
468 | 468 | items : [ |
469 | 469 | { |
470 | 470 | xtype: 'radiogroup', |
471 | 471 | fieldLabel: 'Time Format', |
472 | - labelWidth: 90, | |
472 | + labelWidth: 90, | |
473 | 473 | cls: 'x-check-group-alt', |
474 | 474 | defaults : { name : 'timefrmt'}, |
475 | - items: [ | |
475 | + items: [ | |
476 | 476 | { boxLabel: 'standard <img amda_clicktip="standardTimeFormat" style="vertical-align:bottom" src="js/resources/images/16x16/info_mini.png"', inputValue: 'standard', checked: true}, |
477 | 477 | { boxLabel: 'no <img amda_clicktip="userTimeFormat" style="vertical-align:bottom" src="js/resources/images/16x16/info_mini.png"', inputValue: 'user', |
478 | 478 | listeners: |
479 | 479 | { |
480 | 480 | scope : this, |
481 | - change: function (cb, nv, ov) { | |
481 | + change: function (cb, nv, ov) { | |
482 | 482 | if (nv) |
483 | 483 | Ext.getCmp(this.formatId).show(); |
484 | 484 | else |
485 | 485 | Ext.getCmp(this.formatId).hide(); |
486 | 486 | } |
487 | - } | |
488 | - }] | |
487 | + } | |
488 | + }] | |
489 | 489 | }, |
490 | 490 | nonStandardFormat, |
491 | 491 | Sampling ] |
492 | 492 | }); |
493 | 493 | |
494 | - var localFile = Ext.create('Ext.form.Panel', { | |
494 | + var localFile = Ext.create('Ext.form.Panel', { | |
495 | 495 | id: this.localUploadId, |
496 | 496 | fileUpload: true, |
497 | 497 | hideLabels: true, |
498 | 498 | frame: true, |
499 | 499 | items: [ |
500 | 500 | { |
501 | - xtype: 'fileuploadfield', | |
501 | + xtype: 'fileuploadfield', | |
502 | 502 | emptyText: 'Select Your File', |
503 | 503 | width: 300, |
504 | 504 | name: localUploadName, |
... | ... | @@ -506,7 +506,7 @@ Ext.define('amdaUI.UploadPanelUI', { |
506 | 506 | listeners: |
507 | 507 | { |
508 | 508 | scope : this, |
509 | - change: function (field, value, e) { | |
509 | + change: function (field, value, e) { | |
510 | 510 | this.updateFormat(value); |
511 | 511 | } |
512 | 512 | } |
... | ... | @@ -519,10 +519,10 @@ Ext.define('amdaUI.UploadPanelUI', { |
519 | 519 | }] |
520 | 520 | }); |
521 | 521 | |
522 | - var remoteFile = Ext.create('Ext.form.Panel', { | |
523 | - id: this.remoteUploadId, | |
522 | + var remoteFile = Ext.create('Ext.form.Panel', { | |
523 | + id: this.remoteUploadId, | |
524 | 524 | hideLabels: true, |
525 | - autoHeight: true, | |
525 | + autoHeight: true, | |
526 | 526 | frame: true, |
527 | 527 | hidden : true, |
528 | 528 | items: [ |
... | ... | @@ -535,18 +535,18 @@ Ext.define('amdaUI.UploadPanelUI', { |
535 | 535 | listeners: |
536 | 536 | { |
537 | 537 | scope : this, |
538 | - change: function (field, value, e) { | |
539 | - this.updateFormat(value); | |
538 | + change: function (field, value, e) { | |
539 | + this.updateFormat(value); | |
540 | 540 | } |
541 | 541 | } |
542 | 542 | }] |
543 | 543 | }); |
544 | 544 | |
545 | - var uploadForm = Ext.create('Ext.form.FieldSet',{ | |
546 | - title: 'File Source', | |
545 | + var uploadForm = Ext.create('Ext.form.FieldSet',{ | |
546 | + title: 'File Source', | |
547 | 547 | items : [ |
548 | 548 | { |
549 | - xtype: 'radiogroup', | |
549 | + xtype: 'radiogroup', | |
550 | 550 | cls: 'x-check-group-alt', |
551 | 551 | items: [ |
552 | 552 | { boxLabel: 'Local', name: 'filesrc', inputValue: 'LOCAL', checked: true, |
... | ... | @@ -559,16 +559,16 @@ Ext.define('amdaUI.UploadPanelUI', { |
559 | 559 | var remote = Ext.getCmp(this.remoteUploadId); |
560 | 560 | if (nv) { |
561 | 561 | remote.hide(); |
562 | - local.show(); | |
562 | + local.show(); | |
563 | 563 | } |
564 | 564 | else { |
565 | 565 | local.hide(); |
566 | - remote.show(); | |
566 | + remote.show(); | |
567 | 567 | } |
568 | 568 | } |
569 | 569 | } |
570 | 570 | }, |
571 | - { boxLabel: 'URL', name: 'filesrc', inputValue: 'URL'} ] | |
571 | + { boxLabel: 'URL', name: 'filesrc', inputValue: 'URL'} ] | |
572 | 572 | }] |
573 | 573 | }); |
574 | 574 | |
... | ... |