Commit 655e355f279e49e713917d772ac1402f8d86abb0

Authored by Elena.Budnik
1 parent a610d447

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(&#39;amdaUI.MyDataUI&#39;, {
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(&#39;amdaUI.MyDataUI&#39;, {
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&nbsp;<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&nbsp;<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(&#39;amdaUI.UploadPanelUI&#39;, {
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(&#39;amdaUI.UploadPanelUI&#39;, {
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&nbsp;<img amda_clicktip="standardTimeFormat" style="vertical-align:bottom" src="js/resources/images/16x16/info_mini.png"', inputValue: 'standard', checked: true},
477 477 { boxLabel: 'no&nbsp;<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(&#39;amdaUI.UploadPanelUI&#39;, {
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(&#39;amdaUI.UploadPanelUI&#39;, {
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(&#39;amdaUI.UploadPanelUI&#39;, {
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(&#39;amdaUI.UploadPanelUI&#39;, {
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  
... ...